import source from 3.0 1.0_post 2.0alpha master 2.0_alpha accepted/trunk/20120905.182715 submit/trunk/20120831.083049
authorGui Chen <gui.chen@intel.com>
Thu, 16 Aug 2012 13:11:17 +0000 (21:11 +0800)
committerGui Chen <gui.chen@intel.com>
Thu, 16 Aug 2012 13:11:17 +0000 (21:11 +0800)
Signed-off-by: Gui Chen <gui.chen@intel.com>
641 files changed:
ABOUT-NLS [new file with mode: 0644]
AUTHORS [new file with mode: 0644]
BUGS [new file with mode: 0644]
COPYING [new file with mode: 0644]
ChangeLog [new file with mode: 0644]
GNUmakefile [new file with mode: 0644]
INSTALL [new file with mode: 0644]
Makefile.am [new file with mode: 0644]
Makefile.in [new file with mode: 0644]
NEWS [new file with mode: 0644]
README [new file with mode: 0644]
THANKS [new file with mode: 0644]
TODO [new file with mode: 0644]
aclocal.m4 [new file with mode: 0644]
build-aux/announce-gen [new file with mode: 0755]
build-aux/arg-nonnull.h [new file with mode: 0644]
build-aux/c++defs.h [new file with mode: 0644]
build-aux/compile [new file with mode: 0755]
build-aux/config.guess [new file with mode: 0755]
build-aux/config.rpath [new file with mode: 0755]
build-aux/config.sub [new file with mode: 0755]
build-aux/depcomp [new file with mode: 0755]
build-aux/do-release-commit-and-tag [new file with mode: 0755]
build-aux/gendocs.sh [new file with mode: 0755]
build-aux/git-version-gen [new file with mode: 0755]
build-aux/gitlog-to-changelog [new file with mode: 0755]
build-aux/gnu-web-doc-update [new file with mode: 0755]
build-aux/gnupload [new file with mode: 0755]
build-aux/install-sh [new file with mode: 0755]
build-aux/ltmain.sh [new file with mode: 0755]
build-aux/mdate-sh [new file with mode: 0755]
build-aux/missing [new file with mode: 0755]
build-aux/mktempd [new file with mode: 0755]
build-aux/texinfo.tex [new file with mode: 0644]
build-aux/update-copyright [new file with mode: 0755]
build-aux/useless-if-before-free [new file with mode: 0755]
build-aux/vc-list-files [new file with mode: 0755]
build-aux/warn-on-use.h [new file with mode: 0644]
cfg.mk [new file with mode: 0644]
configure [new file with mode: 0755]
configure.ac [new file with mode: 0644]
debug/Makefile.am [new file with mode: 0644]
debug/Makefile.in [new file with mode: 0644]
debug/test/HOWTO [new file with mode: 0644]
debug/test/Makefile.am [new file with mode: 0644]
debug/test/Makefile.in [new file with mode: 0644]
debug/test/build_leak_list [new file with mode: 0755]
debug/test/test [new file with mode: 0755]
debug/test/test_disk_bsd [new file with mode: 0755]
debug/test/test_disk_dos [new file with mode: 0755]
debug/test/test_disk_dvh [new file with mode: 0755]
debug/test/test_disk_gpt [new file with mode: 0755]
debug/test/test_disk_mac [new file with mode: 0755]
debug/test/test_disk_pc98 [new file with mode: 0755]
debug/test/test_disk_sun [new file with mode: 0755]
debug/test/test_fs_ext2 [new file with mode: 0755]
debug/test/test_fs_fat [new file with mode: 0755]
debug/test/test_fs_hfs [new file with mode: 0644]
debug/test/test_fs_hfsplus [new file with mode: 0644]
debug/test/test_fs_linux_swap [new file with mode: 0755]
debug/test/test_fs_reiserfs [new file with mode: 0755]
debug/test/testrc [new file with mode: 0644]
dist-check.mk [new file with mode: 0644]
doc/API [new file with mode: 0644]
doc/C/Makefile.am [new file with mode: 0644]
doc/C/Makefile.in [new file with mode: 0644]
doc/C/parted.8 [new file with mode: 0644]
doc/C/partprobe.8 [new file with mode: 0644]
doc/FAT [new file with mode: 0644]
doc/Makefile.am [new file with mode: 0644]
doc/Makefile.in [new file with mode: 0644]
doc/USER.jp [new file with mode: 0644]
doc/fdl.texi [new file with mode: 0644]
doc/parted-pt_BR.texi [new file with mode: 0644]
doc/parted.info [new file with mode: 0644]
doc/parted.texi [new file with mode: 0644]
doc/po4a.mk [new file with mode: 0644]
doc/pt_BR/Makefile.am [new file with mode: 0644]
doc/pt_BR/Makefile.in [new file with mode: 0644]
doc/stamp-vti [new file with mode: 0644]
doc/version.texi [new file with mode: 0644]
include/Makefile.am [new file with mode: 0644]
include/Makefile.in [new file with mode: 0644]
include/parted/Makefile.am [new file with mode: 0644]
include/parted/Makefile.in [new file with mode: 0644]
include/parted/constraint.h [new file with mode: 0644]
include/parted/crc32.h [new file with mode: 0644]
include/parted/debug.h [new file with mode: 0644]
include/parted/device.h [new file with mode: 0644]
include/parted/disk.h [new file with mode: 0644]
include/parted/endian.h [new file with mode: 0644]
include/parted/exception.h [new file with mode: 0644]
include/parted/fdasd.h [new file with mode: 0644]
include/parted/filesys.h [new file with mode: 0644]
include/parted/geom.h [new file with mode: 0644]
include/parted/natmath.h [new file with mode: 0644]
include/parted/parted.h [new file with mode: 0644]
include/parted/timer.h [new file with mode: 0644]
include/parted/unit.h [new file with mode: 0644]
include/parted/vtoc.h [new file with mode: 0644]
lib/Makefile.am [new file with mode: 0644]
lib/Makefile.in [new file with mode: 0644]
lib/alloca.c [new file with mode: 0644]
lib/alloca.in.h [new file with mode: 0644]
lib/argmatch.c [new file with mode: 0644]
lib/argmatch.h [new file with mode: 0644]
lib/basename-lgpl.c [new file with mode: 0644]
lib/basename.c [new file with mode: 0644]
lib/btowc.c [new file with mode: 0644]
lib/calloc.c [new file with mode: 0644]
lib/canonicalize-lgpl.c [new file with mode: 0644]
lib/close-stream.c [new file with mode: 0644]
lib/close-stream.h [new file with mode: 0644]
lib/close.c [new file with mode: 0644]
lib/closeout.c [new file with mode: 0644]
lib/closeout.h [new file with mode: 0644]
lib/config.charset [new file with mode: 0644]
lib/config.h.in [new file with mode: 0644]
lib/dirname-lgpl.c [new file with mode: 0644]
lib/dirname.c [new file with mode: 0644]
lib/dirname.h [new file with mode: 0644]
lib/dosname.h [new file with mode: 0644]
lib/errno.in.h [new file with mode: 0644]
lib/error.c [new file with mode: 0644]
lib/error.h [new file with mode: 0644]
lib/exitfail.c [new file with mode: 0644]
lib/exitfail.h [new file with mode: 0644]
lib/fclose.c [new file with mode: 0644]
lib/fd-hook.c [new file with mode: 0644]
lib/fd-hook.h [new file with mode: 0644]
lib/fflush.c [new file with mode: 0644]
lib/fpending.c [new file with mode: 0644]
lib/fpending.h [new file with mode: 0644]
lib/fpurge.c [new file with mode: 0644]
lib/freading.c [new file with mode: 0644]
lib/freading.h [new file with mode: 0644]
lib/fseeko.c [new file with mode: 0644]
lib/fsync.c [new file with mode: 0644]
lib/ftello.c [new file with mode: 0644]
lib/getopt.c [new file with mode: 0644]
lib/getopt.in.h [new file with mode: 0644]
lib/getopt1.c [new file with mode: 0644]
lib/getopt_int.h [new file with mode: 0644]
lib/gettext.h [new file with mode: 0644]
lib/gettimeofday.c [new file with mode: 0644]
lib/glthread/lock.c [new file with mode: 0644]
lib/glthread/lock.h [new file with mode: 0644]
lib/glthread/threadlib.c [new file with mode: 0644]
lib/gnulib.mk [new file with mode: 0644]
lib/intprops.h [new file with mode: 0644]
lib/inttypes.in.h [new file with mode: 0644]
lib/langinfo.in.h [new file with mode: 0644]
lib/localcharset.c [new file with mode: 0644]
lib/localcharset.h [new file with mode: 0644]
lib/long-options.c [new file with mode: 0644]
lib/long-options.h [new file with mode: 0644]
lib/lseek.c [new file with mode: 0644]
lib/lstat.c [new file with mode: 0644]
lib/malloc.c [new file with mode: 0644]
lib/malloca.c [new file with mode: 0644]
lib/malloca.h [new file with mode: 0644]
lib/malloca.valgrind [new file with mode: 0644]
lib/mbrtowc.c [new file with mode: 0644]
lib/mbsinit.c [new file with mode: 0644]
lib/mbtowc-impl.h [new file with mode: 0644]
lib/mbtowc.c [new file with mode: 0644]
lib/mkstemp.c [new file with mode: 0644]
lib/nl_langinfo.c [new file with mode: 0644]
lib/pathmax.h [new file with mode: 0644]
lib/progname.c [new file with mode: 0644]
lib/progname.h [new file with mode: 0644]
lib/quote.c [new file with mode: 0644]
lib/quote.h [new file with mode: 0644]
lib/quotearg.c [new file with mode: 0644]
lib/quotearg.h [new file with mode: 0644]
lib/read.c [new file with mode: 0644]
lib/readlink.c [new file with mode: 0644]
lib/realloc.c [new file with mode: 0644]
lib/ref-add.sin [new file with mode: 0644]
lib/ref-del.sin [new file with mode: 0644]
lib/regcomp.c [new file with mode: 0644]
lib/regex.c [new file with mode: 0644]
lib/regex.h [new file with mode: 0644]
lib/regex_internal.c [new file with mode: 0644]
lib/regex_internal.h [new file with mode: 0644]
lib/regexec.c [new file with mode: 0644]
lib/rpmatch.c [new file with mode: 0644]
lib/safe-read.c [new file with mode: 0644]
lib/safe-read.h [new file with mode: 0644]
lib/sleep.c [new file with mode: 0644]
lib/stat.c [new file with mode: 0644]
lib/stdarg.in.h [new file with mode: 0644]
lib/stdbool.in.h [new file with mode: 0644]
lib/stddef.in.h [new file with mode: 0644]
lib/stdint.in.h [new file with mode: 0644]
lib/stdio-impl.h [new file with mode: 0644]
lib/stdio.in.h [new file with mode: 0644]
lib/stdlib.in.h [new file with mode: 0644]
lib/strdup.c [new file with mode: 0644]
lib/streq.h [new file with mode: 0644]
lib/strerror-impl.h [new file with mode: 0644]
lib/strerror.c [new file with mode: 0644]
lib/strerror_r.c [new file with mode: 0644]
lib/string.in.h [new file with mode: 0644]
lib/stripslash.c [new file with mode: 0644]
lib/strndup.c [new file with mode: 0644]
lib/strnlen.c [new file with mode: 0644]
lib/strtol.c [new file with mode: 0644]
lib/strtoll.c [new file with mode: 0644]
lib/strtoul.c [new file with mode: 0644]
lib/strtoull.c [new file with mode: 0644]
lib/sys_stat.in.h [new file with mode: 0644]
lib/sys_time.in.h [new file with mode: 0644]
lib/tempname.c [new file with mode: 0644]
lib/tempname.h [new file with mode: 0644]
lib/time.in.h [new file with mode: 0644]
lib/unistd.in.h [new file with mode: 0644]
lib/unlink.c [new file with mode: 0644]
lib/usleep.c [new file with mode: 0644]
lib/verify.h [new file with mode: 0644]
lib/version-etc-fsf.c [new file with mode: 0644]
lib/version-etc.c [new file with mode: 0644]
lib/version-etc.h [new file with mode: 0644]
lib/wchar.in.h [new file with mode: 0644]
lib/wcrtomb.c [new file with mode: 0644]
lib/wctype.in.h [new file with mode: 0644]
lib/xalloc-die.c [new file with mode: 0644]
lib/xalloc-oversized.h [new file with mode: 0644]
lib/xalloc.h [new file with mode: 0644]
lib/xmalloc.c [new file with mode: 0644]
lib/xstrndup.c [new file with mode: 0644]
lib/xstrndup.h [new file with mode: 0644]
lib/xstrtol-error.c [new file with mode: 0644]
lib/xstrtol.c [new file with mode: 0644]
lib/xstrtol.h [new file with mode: 0644]
lib/xstrtoll.c [new file with mode: 0644]
lib/xstrtoul.c [new file with mode: 0644]
lib/xstrtoull.c [new file with mode: 0644]
libparted.pc.in [new file with mode: 0644]
libparted/Makefile.am [new file with mode: 0644]
libparted/Makefile.in [new file with mode: 0644]
libparted/arch/beos.c [new file with mode: 0644]
libparted/arch/gnu.c [new file with mode: 0644]
libparted/arch/linux.c [new file with mode: 0644]
libparted/arch/linux.h [new file with mode: 0644]
libparted/architecture.c [new file with mode: 0644]
libparted/architecture.h [new file with mode: 0644]
libparted/cs/constraint.c [new file with mode: 0644]
libparted/cs/geom.c [new file with mode: 0644]
libparted/cs/natmath.c [new file with mode: 0644]
libparted/debug.c [new file with mode: 0644]
libparted/device.c [new file with mode: 0644]
libparted/disk.c [new file with mode: 0644]
libparted/exception.c [new file with mode: 0644]
libparted/filesys.c [new file with mode: 0644]
libparted/fs/Makefile.am [new file with mode: 0644]
libparted/fs/Makefile.in [new file with mode: 0644]
libparted/fs/amiga/Makefile.am [new file with mode: 0644]
libparted/fs/amiga/Makefile.in [new file with mode: 0644]
libparted/fs/amiga/affs.c [new file with mode: 0644]
libparted/fs/amiga/affs.h [new file with mode: 0644]
libparted/fs/amiga/amiga.c [new file with mode: 0644]
libparted/fs/amiga/amiga.h [new file with mode: 0644]
libparted/fs/amiga/apfs.c [new file with mode: 0644]
libparted/fs/amiga/apfs.h [new file with mode: 0644]
libparted/fs/amiga/asfs.c [new file with mode: 0644]
libparted/fs/amiga/asfs.h [new file with mode: 0644]
libparted/fs/amiga/interface.c [new file with mode: 0644]
libparted/fs/ext2/Makefile.am [new file with mode: 0644]
libparted/fs/ext2/Makefile.in [new file with mode: 0644]
libparted/fs/ext2/ext2.h [new file with mode: 0644]
libparted/fs/ext2/ext2_fs.h [new file with mode: 0644]
libparted/fs/ext2/interface.c [new file with mode: 0644]
libparted/fs/fat/Makefile.am [new file with mode: 0644]
libparted/fs/fat/Makefile.in [new file with mode: 0644]
libparted/fs/fat/bootsector.c [new file with mode: 0644]
libparted/fs/fat/bootsector.h [new file with mode: 0644]
libparted/fs/fat/count.h [new file with mode: 0644]
libparted/fs/fat/fat.c [new file with mode: 0644]
libparted/fs/fat/fat.h [new file with mode: 0644]
libparted/fs/hfs/DOC [new file with mode: 0644]
libparted/fs/hfs/HISTORY [new file with mode: 0644]
libparted/fs/hfs/Makefile.am [new file with mode: 0644]
libparted/fs/hfs/Makefile.in [new file with mode: 0644]
libparted/fs/hfs/TODO [new file with mode: 0644]
libparted/fs/hfs/hfs.c [new file with mode: 0644]
libparted/fs/hfs/hfs.h [new file with mode: 0644]
libparted/fs/hfs/probe.c [new file with mode: 0644]
libparted/fs/hfs/probe.h [new file with mode: 0644]
libparted/fs/jfs/Makefile.am [new file with mode: 0644]
libparted/fs/jfs/Makefile.in [new file with mode: 0644]
libparted/fs/jfs/jfs.c [new file with mode: 0644]
libparted/fs/jfs/jfs_superblock.h [new file with mode: 0644]
libparted/fs/jfs/jfs_types.h [new file with mode: 0644]
libparted/fs/linux_swap/Makefile.am [new file with mode: 0644]
libparted/fs/linux_swap/Makefile.in [new file with mode: 0644]
libparted/fs/linux_swap/linux_swap.c [new file with mode: 0644]
libparted/fs/nilfs2/Makefile.am [new file with mode: 0644]
libparted/fs/nilfs2/Makefile.in [new file with mode: 0644]
libparted/fs/nilfs2/nilfs2.c [new file with mode: 0644]
libparted/fs/ntfs/Makefile.am [new file with mode: 0644]
libparted/fs/ntfs/Makefile.in [new file with mode: 0644]
libparted/fs/ntfs/ntfs.c [new file with mode: 0644]
libparted/fs/reiserfs/Makefile.am [new file with mode: 0644]
libparted/fs/reiserfs/Makefile.in [new file with mode: 0644]
libparted/fs/reiserfs/reiserfs.c [new file with mode: 0644]
libparted/fs/reiserfs/reiserfs.h [new file with mode: 0644]
libparted/fs/ufs/Makefile.am [new file with mode: 0644]
libparted/fs/ufs/Makefile.in [new file with mode: 0644]
libparted/fs/ufs/ufs.c [new file with mode: 0644]
libparted/fs/xfs/Makefile.am [new file with mode: 0644]
libparted/fs/xfs/Makefile.in [new file with mode: 0644]
libparted/fs/xfs/platform_defs.h [new file with mode: 0644]
libparted/fs/xfs/xfs.c [new file with mode: 0644]
libparted/fs/xfs/xfs_sb.h [new file with mode: 0644]
libparted/fs/xfs/xfs_types.h [new file with mode: 0644]
libparted/labels/Makefile.am [new file with mode: 0644]
libparted/labels/Makefile.in [new file with mode: 0644]
libparted/labels/aix.c [new file with mode: 0644]
libparted/labels/bsd.c [new file with mode: 0644]
libparted/labels/dasd.c [new file with mode: 0644]
libparted/labels/dos.c [new file with mode: 0644]
libparted/labels/dvh.c [new file with mode: 0644]
libparted/labels/dvh.h [new file with mode: 0644]
libparted/labels/efi_crc32.c [new file with mode: 0644]
libparted/labels/fdasd.c [new file with mode: 0644]
libparted/labels/gpt.c [new file with mode: 0644]
libparted/labels/loop.c [new file with mode: 0644]
libparted/labels/mac.c [new file with mode: 0644]
libparted/labels/misc.h [new file with mode: 0644]
libparted/labels/pc98.c [new file with mode: 0644]
libparted/labels/pt-common.h [new file with mode: 0644]
libparted/labels/pt-limit.c [new file with mode: 0644]
libparted/labels/pt-limit.gperf [new file with mode: 0644]
libparted/labels/pt-tools.c [new file with mode: 0644]
libparted/labels/pt-tools.h [new file with mode: 0644]
libparted/labels/rdb.c [new file with mode: 0644]
libparted/labels/sun.c [new file with mode: 0644]
libparted/labels/vtoc.c [new file with mode: 0644]
libparted/libparted.c [new file with mode: 0644]
libparted/mbr.s [new file with mode: 0644]
libparted/tests/Makefile.am [new file with mode: 0644]
libparted/tests/Makefile.in [new file with mode: 0644]
libparted/tests/common.c [new file with mode: 0644]
libparted/tests/common.h [new file with mode: 0644]
libparted/tests/disk.c [new file with mode: 0644]
libparted/tests/label.c [new file with mode: 0644]
libparted/tests/symlink.c [new file with mode: 0644]
libparted/tests/t1000-label.sh [new file with mode: 0755]
libparted/tests/t2000-disk.sh [new file with mode: 0755]
libparted/tests/t2100-zerolen.sh [new file with mode: 0755]
libparted/tests/t3000-symlink.sh [new file with mode: 0755]
libparted/tests/zerolen.c [new file with mode: 0644]
libparted/timer.c [new file with mode: 0644]
libparted/unit.c [new file with mode: 0644]
m4/00gnulib.m4 [new file with mode: 0644]
m4/alloca.m4 [new file with mode: 0644]
m4/argmatch.m4 [new file with mode: 0644]
m4/assert.m4 [new file with mode: 0644]
m4/btowc.m4 [new file with mode: 0644]
m4/calloc.m4 [new file with mode: 0644]
m4/canonicalize.m4 [new file with mode: 0644]
m4/close-stream.m4 [new file with mode: 0644]
m4/close.m4 [new file with mode: 0644]
m4/closeout.m4 [new file with mode: 0644]
m4/codeset.m4 [new file with mode: 0644]
m4/config-h.m4 [new file with mode: 0644]
m4/configmake.m4 [new file with mode: 0644]
m4/dirname.m4 [new file with mode: 0644]
m4/double-slash-root.m4 [new file with mode: 0644]
m4/dup2.m4 [new file with mode: 0644]
m4/eealloc.m4 [new file with mode: 0644]
m4/environ.m4 [new file with mode: 0644]
m4/errno_h.m4 [new file with mode: 0644]
m4/error.m4 [new file with mode: 0644]
m4/extensions.m4 [new file with mode: 0644]
m4/fclose.m4 [new file with mode: 0644]
m4/fcntl-o.m4 [new file with mode: 0644]
m4/fcntl_h.m4 [new file with mode: 0644]
m4/fflush.m4 [new file with mode: 0644]
m4/fpending.m4 [new file with mode: 0644]
m4/fpurge.m4 [new file with mode: 0644]
m4/freading.m4 [new file with mode: 0644]
m4/fseeko.m4 [new file with mode: 0644]
m4/fsync.m4 [new file with mode: 0644]
m4/ftell.m4 [new file with mode: 0644]
m4/ftello.m4 [new file with mode: 0644]
m4/getopt.m4 [new file with mode: 0644]
m4/getpagesize.m4 [new file with mode: 0644]
m4/gettext.m4 [new file with mode: 0644]
m4/gettimeofday.m4 [new file with mode: 0644]
m4/glibc21.m4 [new file with mode: 0644]
m4/gnulib-common.m4 [new file with mode: 0644]
m4/gnulib-comp.m4 [new file with mode: 0644]
m4/iconv.m4 [new file with mode: 0644]
m4/include_next.m4 [new file with mode: 0644]
m4/inline.m4 [new file with mode: 0644]
m4/intlmacosx.m4 [new file with mode: 0644]
m4/inttypes-pri.m4 [new file with mode: 0644]
m4/inttypes.m4 [new file with mode: 0644]
m4/langinfo_h.m4 [new file with mode: 0644]
m4/lcmessage.m4 [new file with mode: 0644]
m4/lib-ignore.m4 [new file with mode: 0644]
m4/lib-ld.m4 [new file with mode: 0644]
m4/lib-link.m4 [new file with mode: 0644]
m4/lib-prefix.m4 [new file with mode: 0644]
m4/libtool.m4 [new file with mode: 0644]
m4/localcharset.m4 [new file with mode: 0644]
m4/locale-fr.m4 [new file with mode: 0644]
m4/locale-ja.m4 [new file with mode: 0644]
m4/locale-tr.m4 [new file with mode: 0644]
m4/locale-zh.m4 [new file with mode: 0644]
m4/locale_h.m4 [new file with mode: 0644]
m4/localename.m4 [new file with mode: 0644]
m4/lock.m4 [new file with mode: 0644]
m4/long-options.m4 [new file with mode: 0644]
m4/longlong.m4 [new file with mode: 0644]
m4/lseek.m4 [new file with mode: 0644]
m4/lstat.m4 [new file with mode: 0644]
m4/ltoptions.m4 [new file with mode: 0644]
m4/ltsugar.m4 [new file with mode: 0644]
m4/ltversion.m4 [new file with mode: 0644]
m4/lt~obsolete.m4 [new file with mode: 0644]
m4/malloc.m4 [new file with mode: 0644]
m4/malloca.m4 [new file with mode: 0644]
m4/manywarnings.m4 [new file with mode: 0644]
m4/mbrtowc.m4 [new file with mode: 0644]
m4/mbsinit.m4 [new file with mode: 0644]
m4/mbstate_t.m4 [new file with mode: 0644]
m4/mbtowc.m4 [new file with mode: 0644]
m4/mkstemp.m4 [new file with mode: 0644]
m4/mmap-anon.m4 [new file with mode: 0644]
m4/mode_t.m4 [new file with mode: 0644]
m4/multiarch.m4 [new file with mode: 0644]
m4/nl_langinfo.m4 [new file with mode: 0644]
m4/nls.m4 [new file with mode: 0644]
m4/nocrash.m4 [new file with mode: 0644]
m4/o-direct.m4 [new file with mode: 0644]
m4/open.m4 [new file with mode: 0644]
m4/pathmax.m4 [new file with mode: 0644]
m4/po.m4 [new file with mode: 0644]
m4/priv-set.m4 [new file with mode: 0644]
m4/progtest.m4 [new file with mode: 0644]
m4/putenv.m4 [new file with mode: 0644]
m4/quote.m4 [new file with mode: 0644]
m4/quotearg.m4 [new file with mode: 0644]
m4/read.m4 [new file with mode: 0644]
m4/readlink.m4 [new file with mode: 0644]
m4/realloc.m4 [new file with mode: 0644]
m4/regex.m4 [new file with mode: 0644]
m4/rpmatch.m4 [new file with mode: 0644]
m4/safe-read.m4 [new file with mode: 0644]
m4/setenv.m4 [new file with mode: 0644]
m4/setlocale.m4 [new file with mode: 0644]
m4/sleep.m4 [new file with mode: 0644]
m4/ssize_t.m4 [new file with mode: 0644]
m4/stat.m4 [new file with mode: 0644]
m4/stdarg.m4 [new file with mode: 0644]
m4/stdbool.m4 [new file with mode: 0644]
m4/stddef_h.m4 [new file with mode: 0644]
m4/stdint.m4 [new file with mode: 0644]
m4/stdio_h.m4 [new file with mode: 0644]
m4/stdlib_h.m4 [new file with mode: 0644]
m4/strdup.m4 [new file with mode: 0644]
m4/strerror.m4 [new file with mode: 0644]
m4/strerror_r.m4 [new file with mode: 0644]
m4/string_h.m4 [new file with mode: 0644]
m4/strndup.m4 [new file with mode: 0644]
m4/strnlen.m4 [new file with mode: 0644]
m4/strtoll.m4 [new file with mode: 0644]
m4/strtoull.m4 [new file with mode: 0644]
m4/symlink.m4 [new file with mode: 0644]
m4/sys_stat_h.m4 [new file with mode: 0644]
m4/sys_time_h.m4 [new file with mode: 0644]
m4/tempname.m4 [new file with mode: 0644]
m4/thread.m4 [new file with mode: 0644]
m4/threadlib.m4 [new file with mode: 0644]
m4/time_h.m4 [new file with mode: 0644]
m4/ungetc.m4 [new file with mode: 0644]
m4/unistd_h.m4 [new file with mode: 0644]
m4/unlink.m4 [new file with mode: 0644]
m4/unlinkdir.m4 [new file with mode: 0644]
m4/usleep.m4 [new file with mode: 0644]
m4/version-etc.m4 [new file with mode: 0644]
m4/warn-on-use.m4 [new file with mode: 0644]
m4/warnings.m4 [new file with mode: 0644]
m4/wchar_h.m4 [new file with mode: 0644]
m4/wchar_t.m4 [new file with mode: 0644]
m4/wcrtomb.m4 [new file with mode: 0644]
m4/wctob.m4 [new file with mode: 0644]
m4/wctomb.m4 [new file with mode: 0644]
m4/wctype_h.m4 [new file with mode: 0644]
m4/wint_t.m4 [new file with mode: 0644]
m4/xalloc.m4 [new file with mode: 0644]
m4/xstrndup.m4 [new file with mode: 0644]
m4/xstrtol.m4 [new file with mode: 0644]
m4/yield.m4 [new file with mode: 0644]
maint.mk [new file with mode: 0644]
packaging/parted.changes [new file with mode: 0644]
packaging/parted.spec [new file with mode: 0644]
parted.spec [new file with mode: 0644]
parted.spec.in [new file with mode: 0644]
parted/Makefile.am [new file with mode: 0644]
parted/Makefile.in [new file with mode: 0644]
parted/command.c [new file with mode: 0644]
parted/command.h [new file with mode: 0644]
parted/parted.c [new file with mode: 0644]
parted/strlist.c [new file with mode: 0644]
parted/strlist.h [new file with mode: 0644]
parted/table.c [new file with mode: 0644]
parted/table.h [new file with mode: 0644]
parted/ui.c [new file with mode: 0644]
parted/ui.h [new file with mode: 0644]
partprobe/Makefile.am [new file with mode: 0644]
partprobe/Makefile.in [new file with mode: 0644]
partprobe/partprobe.c [new file with mode: 0644]
po/ChangeLog.0 [new file with mode: 0644]
po/LINGUAS [new file with mode: 0644]
po/Makefile.in.in [new file with mode: 0644]
po/Makevars [new file with mode: 0644]
po/POTFILES.in [new file with mode: 0644]
po/Rules-quot [new file with mode: 0644]
po/boldquot.sed [new file with mode: 0644]
po/ca.gmo [new file with mode: 0644]
po/ca.po [new file with mode: 0644]
po/cs.gmo [new file with mode: 0644]
po/cs.po [new file with mode: 0644]
po/da.gmo [new file with mode: 0644]
po/da.po [new file with mode: 0644]
po/de.gmo [new file with mode: 0644]
po/de.po [new file with mode: 0644]
po/en@boldquot.header [new file with mode: 0644]
po/en@quot.header [new file with mode: 0644]
po/es.gmo [new file with mode: 0644]
po/es.po [new file with mode: 0644]
po/fr.gmo [new file with mode: 0644]
po/fr.po [new file with mode: 0644]
po/gl.gmo [new file with mode: 0644]
po/gl.po [new file with mode: 0644]
po/id.gmo [new file with mode: 0644]
po/id.po [new file with mode: 0644]
po/insert-header.sin [new file with mode: 0644]
po/it.gmo [new file with mode: 0644]
po/it.po [new file with mode: 0644]
po/ja.gmo [new file with mode: 0644]
po/ja.po [new file with mode: 0644]
po/nl.gmo [new file with mode: 0644]
po/nl.po [new file with mode: 0644]
po/nn.gmo [new file with mode: 0644]
po/nn.po [new file with mode: 0644]
po/parted.pot [new file with mode: 0644]
po/pl.gmo [new file with mode: 0644]
po/pl.po [new file with mode: 0644]
po/pt.gmo [new file with mode: 0644]
po/pt.po [new file with mode: 0644]
po/pt_BR.gmo [new file with mode: 0644]
po/pt_BR.po [new file with mode: 0644]
po/quot.sed [new file with mode: 0644]
po/remove-potcdate.sin [new file with mode: 0644]
po/ro.gmo [new file with mode: 0644]
po/ro.po [new file with mode: 0644]
po/ru.gmo [new file with mode: 0644]
po/ru.po [new file with mode: 0644]
po/rw.gmo [new file with mode: 0644]
po/rw.po [new file with mode: 0644]
po/sk.gmo [new file with mode: 0644]
po/sk.po [new file with mode: 0644]
po/sl.gmo [new file with mode: 0644]
po/sl.po [new file with mode: 0644]
po/stamp-po [new file with mode: 0644]
po/sv.gmo [new file with mode: 0644]
po/sv.po [new file with mode: 0644]
po/tr.gmo [new file with mode: 0644]
po/tr.po [new file with mode: 0644]
po/uk.gmo [new file with mode: 0644]
po/uk.po [new file with mode: 0644]
po/vi.gmo [new file with mode: 0644]
po/vi.po [new file with mode: 0644]
po/zh_CN.gmo [new file with mode: 0644]
po/zh_CN.po [new file with mode: 0644]
po/zh_TW.gmo [new file with mode: 0644]
po/zh_TW.po [new file with mode: 0644]
scripts/data/abi/baseline_symbols.txt [new file with mode: 0644]
scripts/extract_symvers [new file with mode: 0755]
tests/Makefile.am [new file with mode: 0644]
tests/Makefile.in [new file with mode: 0644]
tests/dup-clobber.c [new file with mode: 0644]
tests/help-version [new file with mode: 0755]
tests/init.cfg [new file with mode: 0644]
tests/init.sh [new file with mode: 0644]
tests/lvm-utils.sh [new file with mode: 0644]
tests/print-align.c [new file with mode: 0644]
tests/print-max.c [new file with mode: 0644]
tests/t-lib-helpers.sh [new file with mode: 0644]
tests/t-local.sh [new file with mode: 0644]
tests/t-lvm.sh [new file with mode: 0644]
tests/t0000-basic.sh [new file with mode: 0755]
tests/t0001-tiny.sh [new file with mode: 0755]
tests/t0010-script-no-ctrl-chars.sh [new file with mode: 0755]
tests/t0100-print.sh [new file with mode: 0755]
tests/t0101-print-empty.sh [new file with mode: 0755]
tests/t0200-gpt.sh [new file with mode: 0755]
tests/t0201-gpt.sh [new file with mode: 0755]
tests/t0202-gpt-pmbr.sh [new file with mode: 0755]
tests/t0205-gpt-list-clobbers-pmbr.sh [new file with mode: 0644]
tests/t0206-gpt-print-with-corrupt-primary-clobbers-pmbr.sh [new file with mode: 0755]
tests/t0207-IEC-binary-notation.sh [new file with mode: 0644]
tests/t0220-gpt-msftres.sh [new file with mode: 0755]
tests/t0250-gpt.sh [new file with mode: 0755]
tests/t0280-gpt-corrupt.sh [new file with mode: 0755]
tests/t0300-dos-on-gpt.sh [new file with mode: 0755]
tests/t0400-loop-clobber-infloop.sh [new file with mode: 0644]
tests/t0500-dup-clobber.sh [new file with mode: 0644]
tests/t1100-busy-label.sh [new file with mode: 0755]
tests/t1101-busy-partition.sh [new file with mode: 0755]
tests/t1700-probe-fs.sh [new file with mode: 0755]
tests/t2200-dos-label-recog.sh [new file with mode: 0755]
tests/t2300-dos-label-extended-bootcode.sh [new file with mode: 0755]
tests/t2310-dos-extended-2-sector-min-offset.sh [new file with mode: 0644]
tests/t2400-dos-hfs-partition-type.sh [new file with mode: 0644]
tests/t3200-type-change.sh [new file with mode: 0755]
tests/t3300-palo-prep.sh [new file with mode: 0755]
tests/t3310-flags.sh [new file with mode: 0644]
tests/t3400-whole-disk-FAT-partition.sh [new file with mode: 0755]
tests/t4000-sun-raid-type.sh [new file with mode: 0755]
tests/t4001-sun-vtoc.sh [new file with mode: 0755]
tests/t4100-dvh-partition-limits.sh [new file with mode: 0755]
tests/t4100-msdos-partition-limits.sh [new file with mode: 0755]
tests/t4100-msdos-starting-sector.sh [new file with mode: 0755]
tests/t4200-partprobe.sh [new file with mode: 0755]
tests/t5000-tags.sh [new file with mode: 0755]
tests/t6000-dm.sh [new file with mode: 0755]
tests/t7000-scripting.sh [new file with mode: 0755]
tests/t8000-loop.sh [new file with mode: 0755]
tests/t9010-big-sector.sh [new file with mode: 0755]
tests/t9020-alignment.sh [new file with mode: 0755]
tests/t9021-maxima.sh [new file with mode: 0755]
tests/t9030-align-check.sh [new file with mode: 0644]
tests/t9040-many-partitions.sh [new file with mode: 0644]
tests/t9041-undetected-in-use-16th-partition.sh [new file with mode: 0644]
tests/t9050-partition-table-types.sh [new file with mode: 0755]

diff --git a/ABOUT-NLS b/ABOUT-NLS
new file mode 100644 (file)
index 0000000..4f50fb5
--- /dev/null
+++ b/ABOUT-NLS
@@ -0,0 +1,1327 @@
+1 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.
+
+   When reporting bugs in the `intl/' directory or bugs which may be
+related to internationalization, you should tell about the version of
+`gettext' which is used.  The information can be found in the
+`intl/VERSION' file, in internationalized packages.
+
+1.1 Quick configuration advice
+==============================
+
+If you want to exploit the full power of internationalization, you
+should configure it using
+
+     ./configure --with-included-gettext
+
+to force usage of internationalizing routines provided within this
+package, despite the existence of internationalizing capabilities in the
+operating system where this package is being installed.  So far, only
+the `gettext' implementation in the GNU C library version 2 provides as
+many features (such as locale alias, message inheritance, automatic
+charset conversion or plural form handling) as the implementation here.
+It is also not possible to offer this additional functionality on top
+of a `catgets' implementation.  Future versions of GNU `gettext' will
+very likely convey even more functionality.  So it might be a good idea
+to change to GNU `gettext' as soon as possible.
+
+   So you need _not_ provide this option if you are using GNU libc 2 or
+you have installed a recent copy of the GNU gettext package with the
+included `libintl'.
+
+1.2 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.  If not, the included GNU
+`gettext' library will be used.  This library is wholly contained
+within this package, usually in the `intl/' subdirectory, so prior
+installation of the GNU `gettext' package is _not_ required.
+Installers may use special options at configuration time for changing
+the default behaviour.  The commands:
+
+     ./configure --with-included-gettext
+     ./configure --disable-nls
+
+will, respectively, bypass any pre-existing `gettext' to use the
+internationalizing routines provided within this package, or else,
+_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.a' file and
+will decide to use this.  This might not be desirable.  You should use
+the more recent version of the GNU `gettext' library.  I.e. if the file
+`intl/VERSION' shows that the library which comes with this package is
+more recent, you should use
+
+     ./configure --with-included-gettext
+
+to prevent auto-detection.
+
+   The configuration process will not test for the `catgets' function
+and therefore it will not be used.  The reason is that even an
+emulation of `gettext' on top of `catgets' could not provide all the
+extensions of the GNU `gettext' library.
+
+   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.3 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.4 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.5 Available Packages
+======================
+
+Languages are not equally supported in all packages.  The following
+matrix shows the current state of internationalization, as of May 2010.
+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 ar as ast az be be@latin bg bn_IN bs ca crh
+                        +---------------------------------------------------+
+     a2ps               |                    []                      []     |
+     aegis              |                                                   |
+     ant-phone          |                                                   |
+     anubis             |                                                   |
+     aspell             |             []                             []     |
+     bash               |                                                   |
+     bfd                |                                                   |
+     bibshelf           |             []                                    |
+     binutils           |                                                   |
+     bison              |                                                   |
+     bison-runtime      |             []                                    |
+     bluez-pin          | []          []                                    |
+     bombono-dvd        |                                                   |
+     buzztard           |                                                   |
+     cflow              |                                                   |
+     clisp              |                                                   |
+     coreutils          |                                []          []     |
+     cpio               |                                                   |
+     cppi               |                                                   |
+     cpplib             |                                            []     |
+     cryptsetup         |                                                   |
+     dfarc              |                                                   |
+     dialog             |                          []                []     |
+     dico               |                                                   |
+     diffutils          |                                            []     |
+     dink               |                                                   |
+     doodle             |                                                   |
+     e2fsprogs          |                                            []     |
+     enscript           |                                            []     |
+     exif               |                                                   |
+     fetchmail          |                                            []     |
+     findutils          |                                []                 |
+     flex               |                                            []     |
+     freedink           |                                                   |
+     gas                |                                                   |
+     gawk               |             []                             []     |
+     gcal               |                                            []     |
+     gcc                |                                                   |
+     gettext-examples   | []          []                 []          []     |
+     gettext-runtime    |                    []          []          []     |
+     gettext-tools      |                                []          []     |
+     gip                |                                []                 |
+     gjay               |                                                   |
+     gliv               |                                []                 |
+     glunarclock        |             []                 []                 |
+     gnubiff            |                                                   |
+     gnucash            |                                            []     |
+     gnuedu             |                                                   |
+     gnulib             |                                                   |
+     gnunet             |                                                   |
+     gnunet-gtk         |                                                   |
+     gnutls             |                                                   |
+     gold               |                                                   |
+     gpe-aerial         |                                                   |
+     gpe-beam           |                                                   |
+     gpe-bluetooth      |                                                   |
+     gpe-calendar       |                                                   |
+     gpe-clock          |             []                                    |
+     gpe-conf           |                                                   |
+     gpe-contacts       |                                                   |
+     gpe-edit           |                                                   |
+     gpe-filemanager    |                                                   |
+     gpe-go             |                                                   |
+     gpe-login          |                                                   |
+     gpe-ownerinfo      |             []                                    |
+     gpe-package        |                                                   |
+     gpe-sketchbook     |                                                   |
+     gpe-su             |             []                                    |
+     gpe-taskmanager    |             []                                    |
+     gpe-timesheet      |             []                                    |
+     gpe-today          |             []                                    |
+     gpe-todo           |                                                   |
+     gphoto2            |                                                   |
+     gprof              |                                []                 |
+     gpsdrive           |                                                   |
+     gramadoir          |                                                   |
+     grep               |                                                   |
+     grub               |             []                             []     |
+     gsasl              |                                                   |
+     gss                |                                                   |
+     gst-plugins-bad    |                                []                 |
+     gst-plugins-base   |                                []                 |
+     gst-plugins-good   |                                []                 |
+     gst-plugins-ugly   |                                []                 |
+     gstreamer          | []                             []          []     |
+     gtick              |                                                   |
+     gtkam              |                    []                             |
+     gtkorphan          |                                []                 |
+     gtkspell           | []          []     []                             |
+     gutenprint         |                                                   |
+     hello              |                                []                 |
+     help2man           |                                                   |
+     hylafax            |                                                   |
+     idutils            |                                                   |
+     indent             |                                []          []     |
+     iso_15924          |                                                   |
+     iso_3166           | []       []        []          []  []   [] [] []  |
+     iso_3166_2         |                                                   |
+     iso_4217           |                                                   |
+     iso_639            |          [] []     []              []         []  |
+     iso_639_3          |                                               []  |
+     jwhois             |                                                   |
+     kbd                |                                                   |
+     keytouch           |                                            []     |
+     keytouch-editor    |                                                   |
+     keytouch-keyboa... |                                            []     |
+     klavaro            |       []                                          |
+     latrine            |                                                   |
+     ld                 |                                []                 |
+     leafpad            |                                []          []     |
+     libc               |                                []          []     |
+     libexif            |                    ()                             |
+     libextractor       |                                                   |
+     libgnutls          |                                                   |
+     libgpewidget       |                                                   |
+     libgpg-error       |                                                   |
+     libgphoto2         |                                                   |
+     libgphoto2_port    |                                                   |
+     libgsasl           |                                                   |
+     libiconv           |                                []                 |
+     libidn             |                                                   |
+     lifelines          |                                                   |
+     liferea            |                          []                []     |
+     lilypond           |                                                   |
+     linkdr             |       []                                          |
+     lordsawar          |                                                   |
+     lprng              |                                                   |
+     lynx               |                                            []     |
+     m4                 |                                                   |
+     mailfromd          |                                                   |
+     mailutils          |                                                   |
+     make               |                                                   |
+     man-db             |                                                   |
+     man-db-manpages    |                                                   |
+     minicom            |                                                   |
+     mkisofs            |                                                   |
+     myserver           |                                                   |
+     nano               |                                []          []     |
+     opcodes            |                                                   |
+     parted             |                                                   |
+     pies               |                                                   |
+     popt               |                                                   |
+     psmisc             |                                                   |
+     pspp               |                                            []     |
+     pwdutils           |                                                   |
+     radius             |                                            []     |
+     recode             |                    []                      []     |
+     rosegarden         |                                                   |
+     rpm                |                                                   |
+     rush               |                                                   |
+     sarg               |                                                   |
+     screem             |                                                   |
+     scrollkeeper       |                 [] []                      []     |
+     sed                |             []                             []     |
+     sharutils          |                                []          []     |
+     shishi             |                                                   |
+     skencil            |                                                   |
+     solfege            |                                                   |
+     solfege-manual     |                                                   |
+     soundtracker       |                                                   |
+     sp                 |                                                   |
+     sysstat            |                                                   |
+     tar                |                                []                 |
+     texinfo            |                                                   |
+     tin                |                                                   |
+     unicode-han-tra... |                                                   |
+     unicode-transla... |                                                   |
+     util-linux-ng      |                                            []     |
+     vice               |                                                   |
+     vmm                |                                                   |
+     vorbis-tools       |                                                   |
+     wastesedge         |                                                   |
+     wdiff              |                                                   |
+     wget               |                    []                      []     |
+     wyslij-po          |                                                   |
+     xchat              |             []     []          []          []     |
+     xdg-user-dirs      | []       [] []     []    []    []  []      [] []  |
+     xkeyboard-config   |                                []          [] []  |
+                        +---------------------------------------------------+
+                          af am ar as ast az be be@latin bg bn_IN bs ca crh
+                           6  0  2  3 19   1 11     3    28   3    1 38  5
+
+                          cs da  de  el en en_GB en_ZA eo es et eu fa fi
+                        +-------------------------------------------------+
+     a2ps               | [] []  []  []     []            [] []       []  |
+     aegis              |    []  []                       []              |
+     ant-phone          |    []  ()                                       |
+     anubis             |    []  []                                   []  |
+     aspell             | [] []  []         []            []              |
+     bash               | []                           [] []          []  |
+     bfd                |                                 []          []  |
+     bibshelf           |    []  []                       []          []  |
+     binutils           |                                 []          []  |
+     bison              |        []  []                               []  |
+     bison-runtime      |    []  []  []                      []       []  |
+     bluez-pin          | [] []  []  []                [] []          []  |
+     bombono-dvd        |    []                                       []  |
+     buzztard           | [] []  []                                       |
+     cflow              |    []  []                                   []  |
+     clisp              |    []  []     []                []              |
+     coreutils          | [] []  []                          []           |
+     cpio               |                                             []  |
+     cppi               |                                             []  |
+     cpplib             |    []  []                       []              |
+     cryptsetup         |        []                                       |
+     dfarc              |    []  []                       []          []  |
+     dialog             |    []  []                    [] []    []        |
+     dico               |                                                 |
+     diffutils          | [] []  []  []                [] []          []  |
+     dink               |    []  []                       []              |
+     doodle             |        []                                       |
+     e2fsprogs          | []     []                       []              |
+     enscript           |    []  []         []                            |
+     exif               | () []  []                                   []  |
+     fetchmail          | [] []  ()  []     []            []              |
+     findutils          | [] []  []                                   []  |
+     flex               |        []                       []          []  |
+     freedink           |    []  []                       []          []  |
+     gas                |                                 []              |
+     gawk               |    []  []                       []              |
+     gcal               |                                 []              |
+     gcc                |        []                       []              |
+     gettext-examples   |        []  []                [] []          []  |
+     gettext-runtime    |    []  []                    [] []          []  |
+     gettext-tools      |        []                       []    []        |
+     gip                |    []  []                       []    []    []  |
+     gjay               |        []                                   []  |
+     gliv               | [] []  []                                   []  |
+     glunarclock        |    []  []                                   []  |
+     gnubiff            |        ()                                       |
+     gnucash            | []     ()  ()     ()            ()          ()  |
+     gnuedu             |    []                           []              |
+     gnulib             |        []                       []          []  |
+     gnunet             |                                                 |
+     gnunet-gtk         |    []                                           |
+     gnutls             | []     []                                       |
+     gold               |                                 []          []  |
+     gpe-aerial         | [] []  []                       []          []  |
+     gpe-beam           | [] []  []                       []          []  |
+     gpe-bluetooth      |    []  []                                   []  |
+     gpe-calendar       |    []                                       []  |
+     gpe-clock          | [] []  []                       []          []  |
+     gpe-conf           | [] []  []                                   []  |
+     gpe-contacts       |    []  []                       []          []  |
+     gpe-edit           |    []  []                                   []  |
+     gpe-filemanager    |    []  []                       []          []  |
+     gpe-go             | [] []  []                       []          []  |
+     gpe-login          |    []  []                                   []  |
+     gpe-ownerinfo      | [] []  []                       []          []  |
+     gpe-package        |    []  []                       []          []  |
+     gpe-sketchbook     | [] []  []                       []          []  |
+     gpe-su             | [] []  []                       []          []  |
+     gpe-taskmanager    | [] []  []                       []          []  |
+     gpe-timesheet      | [] []  []                       []          []  |
+     gpe-today          | [] []  []                       []          []  |
+     gpe-todo           |    []  []                       []          []  |
+     gphoto2            | [] []  ()         []            []    []    []  |
+     gprof              |    []  []                       []          []  |
+     gpsdrive           |    []                           [] []           |
+     gramadoir          |    []  []                    []                 |
+     grep               | []                                          []  |
+     grub               |    []  []                                   []  |
+     gsasl              |        []                                   []  |
+     gss                |                                             []  |
+     gst-plugins-bad    | [] []  []                       []    []    []  |
+     gst-plugins-base   | [] []  []                       []    []    []  |
+     gst-plugins-good   | [] []  []  []                   []    []    []  |
+     gst-plugins-ugly   | [] []  []  []                   []    []    []  |
+     gstreamer          | [] []  []                       []    []    []  |
+     gtick              |    []  ()                    []             []  |
+     gtkam              | [] []  ()                    [] []              |
+     gtkorphan          | [] []  []                    []                 |
+     gtkspell           | [] []  []  []                [] []    []    []  |
+     gutenprint         |    []  []         []                        []  |
+     hello              |    []  []                    [] []          []  |
+     help2man           |        []                                   []  |
+     hylafax            |        []                       []              |
+     idutils            |    []  []                                   []  |
+     indent             | [] []  []                    [] [] [] []    []  |
+     iso_15924          |    []      ()                [] []          []  |
+     iso_3166           | [] []  []  ()                [] [] [] ()    []  |
+     iso_3166_2         |            ()                                   |
+     iso_4217           | [] []  []  ()                   [] []       []  |
+     iso_639            | [] []  []  ()                [] []          []  |
+     iso_639_3          |                                                 |
+     jwhois             |                                 []          []  |
+     kbd                | [] []  []  []                   []              |
+     keytouch           |    []  []                                   []  |
+     keytouch-editor    |    []  []                                   []  |
+     keytouch-keyboa... |    []                                       []  |
+     klavaro            | [] []  []                    []                 |
+     latrine            |    []  ()                                   []  |
+     ld                 |    []                           []          []  |
+     leafpad            | [] []  []  []                   []    []    []  |
+     libc               | [] []  []                       []          []  |
+     libexif            |    []  []         ()                            |
+     libextractor       |                                                 |
+     libgnutls          | []                                              |
+     libgpewidget       |    []  []                                   []  |
+     libgpg-error       | []     []                                       |
+     libgphoto2         |    []  ()                                       |
+     libgphoto2_port    |    []  ()                             []        |
+     libgsasl           |                                             []  |
+     libiconv           | [] []  []                    []    []       []  |
+     libidn             | []     []                    []             []  |
+     lifelines          |    []  ()                                       |
+     liferea            | []     []  []                   []    []        |
+     lilypond           | []     []                       []          []  |
+     linkdr             |    []  []                       []          []  |
+     lordsawar          |    []                                           |
+     lprng              |                                                 |
+     lynx               | [] []  []                          []           |
+     m4                 | [] []  []  []                               []  |
+     mailfromd          |                                                 |
+     mailutils          |                                 []              |
+     make               |    []  []                       []          []  |
+     man-db             |                                                 |
+     man-db-manpages    |                                                 |
+     minicom            | [] []  []                       []          []  |
+     mkisofs            |                                             []  |
+     myserver           |                                                 |
+     nano               |        []                       []    []    []  |
+     opcodes            |        []                       []          []  |
+     parted             | []     []                                       |
+     pies               |                                                 |
+     popt               | [] []  []                    [] []          []  |
+     psmisc             | []     []                             []    []  |
+     pspp               |                                 []              |
+     pwdutils           |    []                                           |
+     radius             |                                 []              |
+     recode             | [] []  []  []                [] []          []  |
+     rosegarden         | ()     ()                       ()          ()  |
+     rpm                |    []  []                       []              |
+     rush               |                                                 |
+     sarg               |                                                 |
+     screem             |                                                 |
+     scrollkeeper       | [] []  []         []            []          []  |
+     sed                | []     []  []                [] [] []       []  |
+     sharutils          |    []  []                       [] []       []  |
+     shishi             |                                                 |
+     skencil            |    []  ()                       []              |
+     solfege            |        []                    []    []       []  |
+     solfege-manual     |                              []    []           |
+     soundtracker       |    []  []                       []              |
+     sp                 |        []                                       |
+     sysstat            |    []  []                             []    []  |
+     tar                | []     []                          [] []    []  |
+     texinfo            |        []                    [] []              |
+     tin                |        []                          []           |
+     unicode-han-tra... |                                                 |
+     unicode-transla... |                                                 |
+     util-linux-ng      | [] []  []                       []          []  |
+     vice               |    ()  ()                                       |
+     vmm                |        []                                       |
+     vorbis-tools       | []                           []                 |
+     wastesedge         |    []                                           |
+     wdiff              |        []                       []          []  |
+     wget               | []     []                          []       []  |
+     wyslij-po          |                                             []  |
+     xchat              | []     []  []                   [] []       []  |
+     xdg-user-dirs      | [] []  []  []                [] [] [] []    []  |
+     xkeyboard-config   | [] []  []                    [] []          []  |
+                        +-------------------------------------------------+
+                          cs da  de  el en en_GB en_ZA eo es et eu fa fi
+                          64 105 117 18  1   8     0   28 89 18 19  0 104
+
+                          fr  ga gl gu he hi hr hu hy id  is it ja ka kn
+                        +------------------------------------------------+
+     a2ps               | []                          []        []       |
+     aegis              | []                                 []          |
+     ant-phone          | []                                 []          |
+     anubis             | []                          []     []          |
+     aspell             | []  []                      []     []          |
+     bash               | []                          []        []       |
+     bfd                | []                          []                 |
+     bibshelf           | []  []                      []     []          |
+     binutils           | []                          []                 |
+     bison              | []  []                      []                 |
+     bison-runtime      | []  []                      []     [] []       |
+     bluez-pin          | []  []                [] [] []  []    []       |
+     bombono-dvd        |                                                |
+     buzztard           |                             []                 |
+     cflow              |     []                      []                 |
+     clisp              | []                                             |
+     coreutils          | []  []                []    []     []          |
+     cpio               | []  []                      []                 |
+     cppi               | []                                             |
+     cpplib             | []                          []                 |
+     cryptsetup         | []                          []     []          |
+     dfarc              | []                                 []          |
+     dialog             | []  [] []                   []  [] [] []       |
+     dico               |                                                |
+     diffutils          | []  [] []    []       []    []     [] []       |
+     dink               | []                                             |
+     doodle             |     []                             []          |
+     e2fsprogs          | []                          []                 |
+     enscript           | []  []             []       []                 |
+     exif               | []                          []  [] [] []       |
+     fetchmail          | []                          []     [] []       |
+     findutils          | []  []                []    []     []          |
+     flex               | []  []                                         |
+     freedink           | []                          []                 |
+     gas                | []                          []                 |
+     gawk               | []  []       []             []     () []       |
+     gcal               | []                                             |
+     gcc                |                             []                 |
+     gettext-examples   | []  []                []    []     [] []       |
+     gettext-runtime    | []  []                      []     [] []       |
+     gettext-tools      | []                          []     [] []       |
+     gip                | []  [] []                   []        []       |
+     gjay               |                                                |
+     gliv               | ()                                             |
+     glunarclock        |     []                []    []                 |
+     gnubiff            | ()                          []     ()          |
+     gnucash            | ()           ()       ()           () []       |
+     gnuedu             | []                                 []          |
+     gnulib             | []  []                []           [] []       |
+     gnunet             |                                                |
+     gnunet-gtk         | []                                             |
+     gnutls             | []                                 []          |
+     gold               |                             []                 |
+     gpe-aerial         | []                          []                 |
+     gpe-beam           | []                          []        []       |
+     gpe-bluetooth      |                             []     [] []       |
+     gpe-calendar       |                                       []       |
+     gpe-clock          | []                    []    []        []       |
+     gpe-conf           | []                          []        []       |
+     gpe-contacts       | []                          []        []       |
+     gpe-edit           |                             []        []       |
+     gpe-filemanager    |                       []    []        []       |
+     gpe-go             | []                    []    []        []       |
+     gpe-login          |                             []        []       |
+     gpe-ownerinfo      | []                    []    []        []       |
+     gpe-package        |                             []        []       |
+     gpe-sketchbook     | []                          []        []       |
+     gpe-su             | []     []             []    []        []       |
+     gpe-taskmanager    | []                    []    []        []       |
+     gpe-timesheet      | []  []                      []        []       |
+     gpe-today          | []  [] []             []    []        []       |
+     gpe-todo           |                             []        []       |
+     gphoto2            | []                    []    []     [] []       |
+     gprof              | []  []                      []                 |
+     gpsdrive           |        []                   []     []          |
+     gramadoir          | []  []                      []                 |
+     grep               |                                    []          |
+     grub               |                       []    []     []          |
+     gsasl              | []  []                      []     []          |
+     gss                | []  []                      []     []          |
+     gst-plugins-bad    | []                    []    []     []          |
+     gst-plugins-base   | []                    []    []     [] []       |
+     gst-plugins-good   | []                    []    []     [] []       |
+     gst-plugins-ugly   | []                    []    []     [] []       |
+     gstreamer          | []                    []    []     []          |
+     gtick              | []  []                      []     []          |
+     gtkam              | []                    []    []     [] []       |
+     gtkorphan          | []                          []     []          |
+     gtkspell           | []  [] []             [] [] []     [] []       |
+     gutenprint         | []                    []           []          |
+     hello              |     []                      []                 |
+     help2man           | []                                             |
+     hylafax            |                             []                 |
+     idutils            | []  []                []    []     []          |
+     indent             | []  [] []             []    []     [] []       |
+     iso_15924          | ()                          []     []          |
+     iso_3166           | ()  [] [] [] [] [] [] []    []     [] []       |
+     iso_3166_2         | ()                    []    []     []          |
+     iso_4217           | ()                    []    []     [] []       |
+     iso_639            | ()  []    []          []    []     [] []    [] |
+     iso_639_3          | ()                                 []       [] |
+     jwhois             | []                    []    []     []          |
+     kbd                | []                          []                 |
+     keytouch           | []  []                []    []     []          |
+     keytouch-editor    |     []                []    []     []          |
+     keytouch-keyboa... |     []                []    []     []          |
+     klavaro            |        []             []                       |
+     latrine            |                             []     []          |
+     ld                 | []  []                      []                 |
+     leafpad            | []  []       []       []    []     [] ()       |
+     libc               | []     []                   []        []       |
+     libexif            |                                                |
+     libextractor       |                                                |
+     libgnutls          | []                                 []          |
+     libgpewidget       |     []                      []        []       |
+     libgpg-error       | []                                 []          |
+     libgphoto2         | []                                 [] []       |
+     libgphoto2_port    | []                                 [] []       |
+     libgsasl           | []  []                      []     []          |
+     libiconv           | []  []                      []     [] []       |
+     libidn             | []                          []     []          |
+     lifelines          | ()                                             |
+     liferea            | []                    []           [] []       |
+     lilypond           | []                                             |
+     linkdr             |              []    [] []           []          |
+     lordsawar          |                                                |
+     lprng              |                             []                 |
+     lynx               | []                    []    []     [] []       |
+     m4                 | []  [] []                   []        []       |
+     mailfromd          |                                                |
+     mailutils          | []                          []                 |
+     make               | []  [] []    []    []       []     [] []       |
+     man-db             |                             []     []          |
+     man-db-manpages    |                             []                 |
+     minicom            | []                    []    []        []       |
+     mkisofs            | []                          []     []          |
+     myserver           |                                                |
+     nano               | []  [] []             []           []          |
+     opcodes            | []  []                      []                 |
+     parted             | []                          []     [] []       |
+     pies               |                                                |
+     popt               | []  [] []             []    []  [] [] []       |
+     psmisc             | []                          []                 |
+     pspp               |                                                |
+     pwdutils           | []                          []                 |
+     radius             | []                          []                 |
+     recode             | []  [] []    []       []    []     []          |
+     rosegarden         | ()                          ()     () ()       |
+     rpm                |                             []        []       |
+     rush               |                                                |
+     sarg               | []                                             |
+     screem             |                                    [] []       |
+     scrollkeeper       |                       []    []     []          |
+     sed                | []  [] []             []    []     [] []       |
+     sharutils          | []  []                []    []     [] []       |
+     shishi             | []                                             |
+     skencil            | []                                             |
+     solfege            | []     []                          []          |
+     solfege-manual     | []     []                                      |
+     soundtracker       | []                                 []          |
+     sp                 | []                                    ()       |
+     sysstat            | []                          []     [] []       |
+     tar                | []  []                []    []     [] []       |
+     texinfo            | []                          []     [] []       |
+     tin                | []                                             |
+     unicode-han-tra... |                                                |
+     unicode-transla... | []  []                                         |
+     util-linux-ng      | []                    []    []     [] []       |
+     vice               | ()                    ()           ()          |
+     vmm                | []                                             |
+     vorbis-tools       |                             []                 |
+     wastesedge         | ()                                 ()          |
+     wdiff              |                                                |
+     wget               | []  []             [] []    []     [] []       |
+     wyslij-po          | []                          []                 |
+     xchat              | []        []    []    []    []     [] []    [] |
+     xdg-user-dirs      | []  [] [] [] []       []    []  [] [] []    [] |
+     xkeyboard-config   | []                    []    []     []          |
+                        +------------------------------------------------+
+                          fr  ga gl gu he hi hr hu hy id  is it ja ka kn
+                          121 53 20  4  8  2  5 53  2 120  5 83 66  0  4
+
+                          ko ku ky lg lt lv mk ml mn mr ms mt nb nds ne
+                        +-----------------------------------------------+
+     a2ps               |                               []              |
+     aegis              |                                               |
+     ant-phone          |                                               |
+     anubis             |                               []    []        |
+     aspell             |                         []                    |
+     bash               |                                               |
+     bfd                |                                               |
+     bibshelf           |                []             []              |
+     binutils           |                                               |
+     bison              |                               []              |
+     bison-runtime      |       []    [] []             []    []        |
+     bluez-pin          |    [] []    [] []             []              |
+     bombono-dvd        |                                               |
+     buzztard           |                                               |
+     cflow              |                                               |
+     clisp              |                                               |
+     coreutils          |          []                                   |
+     cpio               |                                               |
+     cppi               |                                               |
+     cpplib             |                                               |
+     cryptsetup         |                                               |
+     dfarc              |                   []                          |
+     dialog             |    []       [] []             []    []        |
+     dico               |                                               |
+     diffutils          |                []             []              |
+     dink               |                                               |
+     doodle             |                                               |
+     e2fsprogs          |                                               |
+     enscript           |                                               |
+     exif               |                []                             |
+     fetchmail          |                                               |
+     findutils          |                                               |
+     flex               |                                               |
+     freedink           |                                     []        |
+     gas                |                                               |
+     gawk               |                                               |
+     gcal               |                                               |
+     gcc                |                                               |
+     gettext-examples   |       []       []             [] []           |
+     gettext-runtime    | []                                            |
+     gettext-tools      | []                                            |
+     gip                |                []             []              |
+     gjay               |                                               |
+     gliv               |                                               |
+     glunarclock        |                []                             |
+     gnubiff            |                                               |
+     gnucash            | ()          ()                      ()     () |
+     gnuedu             |                                               |
+     gnulib             |                                               |
+     gnunet             |                                               |
+     gnunet-gtk         |                                               |
+     gnutls             |                               []              |
+     gold               |                                               |
+     gpe-aerial         |                []                             |
+     gpe-beam           |                []                             |
+     gpe-bluetooth      |                []                []           |
+     gpe-calendar       |                []                             |
+     gpe-clock          | []    []       []             [] []           |
+     gpe-conf           | []             []                             |
+     gpe-contacts       | []             []                             |
+     gpe-edit           |                []                             |
+     gpe-filemanager    | []             []                             |
+     gpe-go             | []             []                []           |
+     gpe-login          |                []                             |
+     gpe-ownerinfo      |                []             []              |
+     gpe-package        | []             []                             |
+     gpe-sketchbook     | []             []                             |
+     gpe-su             | []    []       []             [] [] []        |
+     gpe-taskmanager    | [] [] []       []             [] []           |
+     gpe-timesheet      |                []             []              |
+     gpe-today          |       []       []             [] []           |
+     gpe-todo           |                []                   []        |
+     gphoto2            |                                               |
+     gprof              |                               []              |
+     gpsdrive           |                                               |
+     gramadoir          |                                               |
+     grep               |                                               |
+     grub               |                                               |
+     gsasl              |                                               |
+     gss                |                                               |
+     gst-plugins-bad    |                []                []           |
+     gst-plugins-base   |             [] []                             |
+     gst-plugins-good   |                []                []           |
+     gst-plugins-ugly   |             [] []             [] [] []        |
+     gstreamer          |                                               |
+     gtick              |                                               |
+     gtkam              |                                     []        |
+     gtkorphan          |                []                      []     |
+     gtkspell           |       []    [] []       []    []    [] []     |
+     gutenprint         |                                               |
+     hello              | []             []             []              |
+     help2man           |                                               |
+     hylafax            |                                               |
+     idutils            |                                               |
+     indent             |                                               |
+     iso_15924          |             [] []                             |
+     iso_3166           | [] []       () [] [] []    []       []        |
+     iso_3166_2         |                                               |
+     iso_4217           |             []                      []        |
+     iso_639            |                      []    []                 |
+     iso_639_3          |                            []                 |
+     jwhois             |                []                             |
+     kbd                |                                               |
+     keytouch           |                []                             |
+     keytouch-editor    |                []                             |
+     keytouch-keyboa... |                []                             |
+     klavaro            |                                     []        |
+     latrine            |                []                             |
+     ld                 |                                               |
+     leafpad            | []          [] []                             |
+     libc               | []                                            |
+     libexif            |                                               |
+     libextractor       |                                               |
+     libgnutls          |                               []              |
+     libgpewidget       |                []             []              |
+     libgpg-error       |                                               |
+     libgphoto2         |                                               |
+     libgphoto2_port    |                                               |
+     libgsasl           |                                               |
+     libiconv           |                                               |
+     libidn             |                                               |
+     lifelines          |                                               |
+     liferea            |                                               |
+     lilypond           |                                               |
+     linkdr             |                                               |
+     lordsawar          |                                               |
+     lprng              |                                               |
+     lynx               |                                               |
+     m4                 |                                               |
+     mailfromd          |                                               |
+     mailutils          |                                               |
+     make               | []                                            |
+     man-db             |                                               |
+     man-db-manpages    |                                               |
+     minicom            |                                     []        |
+     mkisofs            |                                               |
+     myserver           |                                               |
+     nano               |                               []    []        |
+     opcodes            |                                               |
+     parted             |                                               |
+     pies               |                                               |
+     popt               | []             []                   []        |
+     psmisc             |                                               |
+     pspp               |                                               |
+     pwdutils           |                                               |
+     radius             |                                               |
+     recode             |                                               |
+     rosegarden         |                                               |
+     rpm                |                                               |
+     rush               |                                               |
+     sarg               |                                               |
+     screem             |                                               |
+     scrollkeeper       |                                     []     [] |
+     sed                |                                               |
+     sharutils          |                                               |
+     shishi             |                                               |
+     skencil            |                                               |
+     solfege            |                                     []        |
+     solfege-manual     |                                               |
+     soundtracker       |                                               |
+     sp                 |                                               |
+     sysstat            |                []                             |
+     tar                |       []                                      |
+     texinfo            |                                     []        |
+     tin                |                                               |
+     unicode-han-tra... |                                               |
+     unicode-transla... |                                               |
+     util-linux-ng      |                                               |
+     vice               |                                               |
+     vmm                |                                               |
+     vorbis-tools       |                                               |
+     wastesedge         |                                               |
+     wdiff              |                                               |
+     wget               |             []                                |
+     wyslij-po          |                                               |
+     xchat              | []             [] []                          |
+     xdg-user-dirs      | [] []       [] [] []       []       [] []     |
+     xkeyboard-config   | []    []    []                                |
+                        +-----------------------------------------------+
+                          ko ku ky lg lt lv mk ml mn mr ms mt nb nds ne
+                          20  5 10  1 12 48  4  2  2  4 24 10 19  3   1
+
+                          nl  nn or pa pl  ps pt pt_BR ro ru rw sk sl sq sr
+                        +---------------------------------------------------+
+     a2ps               | []           []     []  []   [] []       []    [] |
+     aegis              | []                      []      []                |
+     ant-phone          |                         []   []                   |
+     anubis             | []           []                 []                |
+     aspell             | []                           [] []    [] []       |
+     bash               | []                                    []          |
+     bfd                |                                 []                |
+     bibshelf           | []  []                                            |
+     binutils           |                                 []    []          |
+     bison              | []           []                 []                |
+     bison-runtime      | []           []     []  []   [] []       []       |
+     bluez-pin          | []           []         []   [] []    [] []    [] |
+     bombono-dvd        |     []                          ()                |
+     buzztard           | []  []                                            |
+     cflow              |              []                                   |
+     clisp              | []                              []                |
+     coreutils          | []           []     []  []      []       []       |
+     cpio               | []           []                 []                |
+     cppi               |              []                                   |
+     cpplib             | []                                                |
+     cryptsetup         | []                                                |
+     dfarc              |              []                                   |
+     dialog             | []           []         []      []                |
+     dico               |              []                                   |
+     diffutils          | []           []         []   [] []             [] |
+     dink               | ()                                                |
+     doodle             | []                                          []    |
+     e2fsprogs          | []           []                                   |
+     enscript           | []                      []   [] []       []       |
+     exif               | []           []              [] ()    []          |
+     fetchmail          | []           []                 []          []    |
+     findutils          | []           []     []          []       []       |
+     flex               | []           []         []   [] []                |
+     freedink           | []           []                                   |
+     gas                |                                                   |
+     gawk               | []           []         []   []                   |
+     gcal               |                                                   |
+     gcc                |                                                [] |
+     gettext-examples   | []           []     []       [] []    [] []    [] |
+     gettext-runtime    | []  []       []     []       [] []    [] []    [] |
+     gettext-tools      |              []              [] []    [] []    [] |
+     gip                | []           []                 []    []       [] |
+     gjay               |                                                   |
+     gliv               | []           []         []   [] []    []          |
+     glunarclock        | []                      []   []       []       [] |
+     gnubiff            | []                           ()                   |
+     gnucash            | []           ()         ()      ()                |
+     gnuedu             | []                                                |
+     gnulib             | []           []                 []       []       |
+     gnunet             |                                                   |
+     gnunet-gtk         |                                                   |
+     gnutls             | []           []                                   |
+     gold               |                                                   |
+     gpe-aerial         | []                  []  []   [] []       []    [] |
+     gpe-beam           | []                  []  []   [] []       []    [] |
+     gpe-bluetooth      | []                      []                        |
+     gpe-calendar       |                         []      []       []    [] |
+     gpe-clock          | []                  []  []   [] []    [] []    [] |
+     gpe-conf           | []                  []  []   [] []    [] []       |
+     gpe-contacts       |                         []   [] []       []    [] |
+     gpe-edit           | []           []                          []       |
+     gpe-filemanager    | []                              []       []       |
+     gpe-go             | []           []         []   [] []    [] []    [] |
+     gpe-login          | []                      []                        |
+     gpe-ownerinfo      | []                  []  []   [] []    [] []    [] |
+     gpe-package        | []                                       []       |
+     gpe-sketchbook     | []                  []  []   [] []       []    [] |
+     gpe-su             | []                  []  []   [] []    [] []    [] |
+     gpe-taskmanager    | []                  []  []   [] []    [] []    [] |
+     gpe-timesheet      | []                  []  []   [] []    [] []    [] |
+     gpe-today          | []                  []  []   [] []    [] []    [] |
+     gpe-todo           | []                      []      []       []    [] |
+     gphoto2            | []        [] []         []   [] []    []       [] |
+     gprof              | []                      []   []                   |
+     gpsdrive           | []                              []                |
+     gramadoir          | []                                    []          |
+     grep               | []           []                 []    []          |
+     grub               | []           []                 []                |
+     gsasl              | []           []                       []       [] |
+     gss                |              []              []       []          |
+     gst-plugins-bad    | []           []         []      []    []          |
+     gst-plugins-base   | []           []         []      []    []          |
+     gst-plugins-good   | []           []         []      []    []          |
+     gst-plugins-ugly   | []           []         []      []    [] []       |
+     gstreamer          | []           []         []      []    []          |
+     gtick              | []                              []    []          |
+     gtkam              | []        [] []         []      []    []          |
+     gtkorphan          | []                                                |
+     gtkspell           | []           []     []  []   [] []    [] [] [] [] |
+     gutenprint         | []                              []                |
+     hello              | []           []                       [] []       |
+     help2man           |              []                 []                |
+     hylafax            | []                                                |
+     idutils            | []           []         []   [] []                |
+     indent             | []           []         []   [] []    []       [] |
+     iso_15924          | []           []                 []       []       |
+     iso_3166           | []  [] [] [] []     ()  []   [] [] [] [] [] [] [] |
+     iso_3166_2         | []           []                          []       |
+     iso_4217           | []  []       []     []          [] []    []    [] |
+     iso_639            | []     [] [] []                 [] [] [] []    [] |
+     iso_639_3          |        [] []                                      |
+     jwhois             | []           []         []   []                   |
+     kbd                | []           []              []                   |
+     keytouch           | []           []                       []          |
+     keytouch-editor    | []           []                       []          |
+     keytouch-keyboa... | []           []                       []          |
+     klavaro            | []                      []                        |
+     latrine            |              []                 []                |
+     ld                 |                                                   |
+     leafpad            | []  []       []     []  []      []    [] []    [] |
+     libc               | []           []                 []    []          |
+     libexif            | []           []         ()            []          |
+     libextractor       |                                                   |
+     libgnutls          | []           []                                   |
+     libgpewidget       | []           []                          []       |
+     libgpg-error       |              []              []                   |
+     libgphoto2         | []           []                                   |
+     libgphoto2_port    | []           []                 []    []          |
+     libgsasl           | []           []              []       []       [] |
+     libiconv           | []           []                       [] []    [] |
+     libidn             | []           []                                   |
+     lifelines          | []           []                                   |
+     liferea            | []           []     []  []   [] ()    ()    []    |
+     lilypond           | []                                                |
+     linkdr             | []                  []          []                |
+     lordsawar          |                                                   |
+     lprng              |              []                                   |
+     lynx               | []                      []      []                |
+     m4                 | []           []         []   [] []                |
+     mailfromd          |              []                                   |
+     mailutils          |              []                                   |
+     make               | []           []         []      []                |
+     man-db             | []           []                 []                |
+     man-db-manpages    | []           []                 []                |
+     minicom            |              []         []   [] []                |
+     mkisofs            | []           []                 []                |
+     myserver           |                                                   |
+     nano               | []           []         []      []                |
+     opcodes            | []                           []                   |
+     parted             | []           []                 []    []          |
+     pies               |              []                                   |
+     popt               | []           []     []          []                |
+     psmisc             | []           []                 []                |
+     pspp               | []                      []                        |
+     pwdutils           |              []                                   |
+     radius             | []           []                 []                |
+     recode             | []           []     []  []   [] []    [] []       |
+     rosegarden         |              ()                 ()                |
+     rpm                | []           []     []                            |
+     rush               | []           []                                   |
+     sarg               |                                                   |
+     screem             |                                                   |
+     scrollkeeper       | []  []       []              [] []    []    [] [] |
+     sed                | []           []     []  []   [] []    [] []    [] |
+     sharutils          | []           []                 []             [] |
+     shishi             |              []                                   |
+     skencil            |                     []  []                        |
+     solfege            | []           []         []      []                |
+     solfege-manual     | []           []         []                        |
+     soundtracker       |                                       []          |
+     sp                 |                                                   |
+     sysstat            | []           []         []      []                |
+     tar                | []           []                 []       []       |
+     texinfo            | []           []              [] []                |
+     tin                |                                 []                |
+     unicode-han-tra... |                                                   |
+     unicode-transla... |                                                   |
+     util-linux-ng      | []           []         []      []       []       |
+     vice               | []                                                |
+     vmm                | []                                                |
+     vorbis-tools       | []           []                                   |
+     wastesedge         | []                                                |
+     wdiff              | []           []                                   |
+     wget               | []           []     []  []      []    [] []       |
+     wyslij-po          | []  []       []                                   |
+     xchat              | []        [] []     []          []    [] [] [] [] |
+     xdg-user-dirs      | []  [] [] [] []  [] []  []   [] []    [] [] [] [] |
+     xkeyboard-config   | []           []                 []    [] []       |
+                        +---------------------------------------------------+
+                          nl  nn or pa pl  ps pt pt_BR ro ru rw sk sl sq sr
+                          135 10  4  7 105  1 29  61   47 91  3 55 47  8 37
+
+                          sv  sw ta te tg th tr uk vi  wa zh_CN zh_HK zh_TW
+                        +---------------------------------------------------+
+     a2ps               | []              [] [] [] []                       | 27
+     aegis              |                          []                       |  9
+     ant-phone          | []                 []    []      []               |  9
+     anubis             | []                 [] [] []                       | 15
+     aspell             |                       [] []  []                   | 20
+     bash               | []                       []                       | 11
+     bfd                |                          []                       |  6
+     bibshelf           | []                       []      []               | 16
+     binutils           |                       [] []                       |  8
+     bison              | []                       []                       | 12
+     bison-runtime      | []              []    [] []      []          []   | 29
+     bluez-pin          | []              [] [] [] []  []  []          []   | 37
+     bombono-dvd        |                          []                       |  4
+     buzztard           |                          []                       |  7
+     cflow              |                       [] []      []               |  9
+     clisp              |                                                   | 10
+     coreutils          | []                    [] []      []               | 22
+     cpio               | []                 [] [] []      []          []   | 13
+     cppi               |                       [] []                       |  5
+     cpplib             | []                 [] [] []      []          []   | 13
+     cryptsetup         | []                       []                       |  7
+     dfarc              |                          []                       |  9
+     dialog             | []  []          []       []  []  []          []   | 30
+     dico               |                       []                          |  2
+     diffutils          | []                 [] [] []      []          []   | 30
+     dink               |                                                   |  4
+     doodle             | []                       []                       |  7
+     e2fsprogs          | []                 []    []                       | 11
+     enscript           | []                 [] [] []                       | 17
+     exif               | []                       []      []               | 16
+     fetchmail          |                    []    []      []               | 17
+     findutils          | []                 [] [] []      []               | 20
+     flex               | []                 []    []                  []   | 15
+     freedink           |                          []                       | 10
+     gas                |                    []                             |  4
+     gawk               | []                 []    []      []               | 18
+     gcal               | []                 []                             |  5
+     gcc                | []                 []            []               |  7
+     gettext-examples   | []                 [] [] []      []    []    []   | 34
+     gettext-runtime    | []                 [] [] []      []    []    []   | 30
+     gettext-tools      | []                 [] [] []      []          []   | 22
+     gip                | []                       []      []          []   | 22
+     gjay               |                          []                       |  3
+     gliv               | []                 []    []                       | 14
+     glunarclock        | []                       []  []  []          []   | 19
+     gnubiff            | []                       []                       |  4
+     gnucash            |                    () [] ()                  ()   |  9
+     gnuedu             |                          []                  []   |  7
+     gnulib             | []                    [] []      []               | 16
+     gnunet             |                          []                       |  1
+     gnunet-gtk         | []                 []    []                       |  5
+     gnutls             | []                       []      []               | 10
+     gold               |                          []                       |  4
+     gpe-aerial         | []                       []      []               | 18
+     gpe-beam           | []                       []      []               | 19
+     gpe-bluetooth      | []                       []      []               | 13
+     gpe-calendar       | []                       []  []  []               | 12
+     gpe-clock          | []                 []    []  []  []               | 28
+     gpe-conf           | []                       []  []  []               | 20
+     gpe-contacts       | []                       []      []               | 17
+     gpe-edit           | []                       []      []               | 12
+     gpe-filemanager    | []                       []  []  []               | 16
+     gpe-go             | []                 []    []  []  []               | 25
+     gpe-login          | []                       []      []               | 11
+     gpe-ownerinfo      | []                 []    []      []          []   | 25
+     gpe-package        | []                       []      []               | 13
+     gpe-sketchbook     | []                       []      []               | 20
+     gpe-su             | []                 []    []  []  []               | 30
+     gpe-taskmanager    | []                 []    []  []  []               | 29
+     gpe-timesheet      | []                 []    []      []          []   | 25
+     gpe-today          | []                 []    []  []  []          []   | 30
+     gpe-todo           | []                       []  []  []               | 17
+     gphoto2            | []                    [] []      []          []   | 24
+     gprof              | []                 []    []                       | 15
+     gpsdrive           | []                       []      []               | 11
+     gramadoir          | []                       []      []               | 11
+     grep               |                 []       []      []               | 10
+     grub               | []                       []      []               | 14
+     gsasl              | []                       []      []          []   | 14
+     gss                | []                       []      []               | 11
+     gst-plugins-bad    | []                 []    []      []               | 22
+     gst-plugins-base   | []                 [] [] []      []               | 24
+     gst-plugins-good   | []                 [] [] []      []               | 25
+     gst-plugins-ugly   | []                 [] [] []      []               | 29
+     gstreamer          | []                    [] []      []               | 22
+     gtick              |                       [] []      []               | 13
+     gtkam              | []                       []      []               | 20
+     gtkorphan          | []                       []      []               | 14
+     gtkspell           | []              [] [] [] []  []  []    []    []   | 45
+     gutenprint         | []                                                | 10
+     hello              | []              [] []    []      []          []   | 21
+     help2man           | []                       []                       |  7
+     hylafax            |                          []                       |  5
+     idutils            | []                 []    []      []               | 17
+     indent             | []                 [] [] []      []          []   | 30
+     iso_15924          |                 ()    [] ()      []          []   | 16
+     iso_3166           | []        []    () [] [] ()  []  []    []    ()   | 53
+     iso_3166_2         |                 ()    [] ()      []               |  9
+     iso_4217           | []              () [] [] ()      []    []         | 26
+     iso_639            | []     [] []    ()    [] ()  []  []    []    []   | 38
+     iso_639_3          |        []                ()                       |  8
+     jwhois             | []                 []    []      []          []   | 16
+     kbd                | []                 [] [] []      []               | 15
+     keytouch           | []                       []      []               | 16
+     keytouch-editor    | []                       []      []               | 14
+     keytouch-keyboa... | []                       []      []               | 14
+     klavaro            |                          []                       | 11
+     latrine            |                    []    []      []               | 10
+     ld                 | []                 []    []                  []   | 11
+     leafpad            | []                 [] [] []      []          []   | 33
+     libc               | []                 []    []      []          []   | 21
+     libexif            |                          []      ()               |  6
+     libextractor       |                          []                       |  1
+     libgnutls          | []                       []      []               |  9
+     libgpewidget       | []                       []      []               | 14
+     libgpg-error       | []                       []      []               |  9
+     libgphoto2         |                       [] []                       |  8
+     libgphoto2_port    | []                    [] []                  []   | 13
+     libgsasl           | []                       []      []               | 13
+     libiconv           | []                       []  []  []               | 21
+     libidn             | ()                       []      []               | 11
+     lifelines          | []                                                |  4
+     liferea            | []                 []            []               | 21
+     lilypond           |                          []                       |  7
+     linkdr             | []                 []    []      []          []   | 17
+     lordsawar          |                                                   |  1
+     lprng              |                          []                       |  3
+     lynx               | []                 [] [] []                       | 17
+     m4                 | []                       []      []          []   | 19
+     mailfromd          |                       [] []                       |  3
+     mailutils          |                          []                       |  5
+     make               | []                 []    []      []               | 21
+     man-db             | []                       []      []               |  8
+     man-db-manpages    |                                                   |  4
+     minicom            | []                       []                       | 16
+     mkisofs            |                          []      []               |  9
+     myserver           |                                                   |  0
+     nano               | []                       []      []          []   | 21
+     opcodes            | []                 []    []                       | 11
+     parted             | []                 [] [] []                  []   | 15
+     pies               |                       [] []                       |  3
+     popt               | []              [] []    []      []          []   | 27
+     psmisc             | []                       []                       | 11
+     pspp               |                                                   |  4
+     pwdutils           | []                       []                       |  6
+     radius             |                       [] []                       |  9
+     recode             | []                 []    []      []               | 28
+     rosegarden         | ()                                                |  0
+     rpm                | []                       []                  []   | 11
+     rush               |                       [] []                       |  4
+     sarg               |                                                   |  1
+     screem             |                          []                       |  3
+     scrollkeeper       | []                 [] [] []                  []   | 27
+     sed                | []                 []    []      []          []   | 30
+     sharutils          | []                 []    []      []          []   | 22
+     shishi             |                          []                       |  3
+     skencil            | []                       []                       |  7
+     solfege            | []                 []    []      []               | 16
+     solfege-manual     |                    []                             |  8
+     soundtracker       | []                 []    []                       |  9
+     sp                 |                    []                             |  3
+     sysstat            |                          []      []               | 15
+     tar                | []                 [] [] []      []          []   | 23
+     texinfo            | []                 []    []      []               | 16
+     tin                |                                                   |  4
+     unicode-han-tra... |                                                   |  0
+     unicode-transla... |                                                   |  2
+     util-linux-ng      | []                 [] [] []                       | 20
+     vice               | ()                 ()                             |  1
+     vmm                |                          []                       |  4
+     vorbis-tools       |                          []                       |  6
+     wastesedge         |                                                   |  2
+     wdiff              | []                       []                       |  7
+     wget               | []                 []    []      []          []   | 26
+     wyslij-po          |                       [] []                       |  8
+     xchat              | []              []    [] []      []          []   | 36
+     xdg-user-dirs      | []     []       [] [] [] []      []    []    []   | 60
+     xkeyboard-config   | []                 [] [] []                       | 25
+                        +---------------------------------------------------+
+       84 teams           sv  sw ta te tg th tr uk vi  wa zh_CN zh_HK zh_TW
+      178 domains         119  1  3  2  0 10 66 50 155 17  97     7    41    2610
+
+   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 May 2010 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.6 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 Library 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.
+
diff --git a/AUTHORS b/AUTHORS
new file mode 100644 (file)
index 0000000..530a28b
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,236 @@
+This file is part of GNU Parted
+Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+              Free Software Foundation Inc.
+
+This file may be modified and/or distributed without restriction.  This is
+not an invitation to misrepresent who contributed to GNU Parted.
+
+-------------------------------------------------------------------------------
+
+We need to keep track of copyright (see the Maintainer HOWTO on www.gnu.org).
+
+
+Leslie Patrick Polzer   <polzer@gnu.org>
+        * parts of 1.6.24 PedUnit API
+        * GPT pth_* functions and block size fixes
+        * PED_SECTOR_SIZE -> PED_SECTOR_SIZE_DEFAULT
+        * debugging framework
+        * ext2 "strange layout" fix (experimental)
+        * support for physical block sizes
+        * SCO BFS support
+
+        http://nic-nac-project.de/~skypher/
+
+        Snail Mail:
+        Am Kirchberg 15
+        89537 Giengen
+        Germany
+
+Andrew Clausen          <clausen@gnu.org>
+        * all FAT code (libparted/fs_fat)
+        * all linux-swap code (libparted/fs_linux_swap)
+        * some reiserfs glue code (libparted/fs_reiserfs) with Umanets
+        * most of the API (with lots of discussion with Lennert Buytenhek)
+          (include/parted/*)
+        * generic filesystem code (filesys.c) and device code (device.c)
+        * exception code (exception.c, debug.c)
+        * partition table code (disk.c)
+        * dos partition support (disk_dos.c)
+        * mac partition support (disk_mac.c)
+        * mips partition support (disk_mips.c)
+        * loopback support (disk_loop.c)
+        * some of the PC98 code (disk_pc98.c), with Masahiro Sakai.
+        * misc. hacking on all disk_*.c code
+        * low-level I/O code (device.c, geom.c, linux.c)
+          - init_scsi() stolen from gnome-gfdisk via Matt Wilson.
+        * constraint solver (natmath.c, constraint.c)
+        * command-line, and fdisk-like frontend (parted/*)
+        * stubs for ntfs, hfs, xfs
+        * hacked on libparted/fs_ext2 a fair bit (bug fixes, error handling,
+        support for > 1024 groups, etc.)
+        * libparted/mbr.s (the MBR boot loader code)
+        * misc hacking on GNU/Hurd port
+        * major surgery on GUID Partition Table (GPT) support (disk_gpt.[ch])
+        * progress meter support (libparted/timer.c include/parted/timer.h)
+
+        Snail mail:
+        18 Shaw St
+        Ashwood, 3147
+        Australia
+
+Lennert Buytenhek       <buytenh@gnu.org>
+        * original ext2 code (libparted/fs_ext2)
+        * discussion/ideas for API
+
+Matthew Wilson          <msw@redhat.com>
+        * basis of partition table and device code (disk.c, disk_dos.c,
+        and device.c)  Has morphed into something that looks completely
+        different now :-)
+        * bug fixes
+        * BSD disklabel support (disk_bsd.c)
+        * Python bindings to libparted
+        * Don't detect AIX physical volumes as msdos partition tables
+        * Code for manipulating AIX PVs
+
+Martin von Löwis        <martin@mira.isdn.cs.tu-berlin.de>
+        * German translations
+
+Baty Jean-Marc          <baty@club-internet.fr>
+        * French translations
+
+Hiroshi Takekawa        <takekawa@sr3.t.u-tokyo.ac.jp>
+        * Japanese translations
+
+Eliphas Levy Theodoro   <eliphas@conectiva.com>
+        * Brazillian Portugese translations
+
+Dmitry S. Sivachenko    <dima@Chg.RU>
+        * Russian translations
+
+Timshel Knoll           <timshel@pobox.com>
+        * man pages (parted.8 partprobe.8)
+        * bug fixes
+
+Ivo Timmermans          <itimmermans@bigfoot.com>
+        * Dutch translations
+
+Ryoji Kawagishi         <kawagisi@yk.rim.or.jp>
+        * Japanese translation of doc/USER (user documentation)
+        (replaced by Okuji's version, now)
+
+Okuji Yoshinori         <okuji@kuicr.kyoto-a.ac.jp>
+        * doc/USER.jp
+        * contributions to Japanese translations
+
+Masahiro Sakai          <ZVM01052@nifty.ne.jp>
+        * most of the PC98 support (disk_pc98.c), with Andrew Clausen
+        * lots of tedious work on parted/strlist.c
+
+Damien Genet            <damien.genet@free.fr>
+        * parted.m4
+
+Ben Collins             <bcollins@debian.org>
+        * Sun disk label support (libparted/disk_sun.c)
+        * stubs for UFS
+
+Vincent Stelhé          <vincent.stelhe@free.fr>
+        * move syntax patch (make END specification optional).  Trivial
+        for copyright purposes (no disclaimer needed)
+
+Neal H Walfield         <neal@cs.uml.edu>
+        * GNU/Hurd port - libparted/gnu.c
+
+Thomas Roelz            <tom@suse.de>
+        * misc bug fixes
+
+Matt Domsch             <Matt_Domsch@dell.com>
+        * GUID Partition Table (GPT) support (disk_gpt.[ch],
+                                              crc32.[ch])
+        * misc bug fixes, including end-of-device workaround
+        in libparted/linux.c
+
+Kjetil Torgrim Homme    <kjetilho@linpro.no>
+        * Norweigen translations
+
+Jörgen Tegnér           <jorgen.tegner@telia.com>
+        * Swedish translations
+
+Keld Simonsen           <keld@dkuug.dk>
+        * Danish translations
+
+Richard M. Kreuter      <kreuter@ausar.rutgers.edu>
+        * converted doc/USER to texinfo (doc/parted.texi)
+
+Miquel Matas            <miquelmatas@wanadoo.es>
+        * Catalan translations
+
+Andreas Dilger          <adilger@clusterfs.com>
+        * lots of mix bug fixes/cleanups
+
+Vicente E. Llorens      <vllorens@mundofree.com>
+        * Spanish translations
+
+Yury Umanets            <torque@ukrpost.net>
+        * basis of libparted/fs_reiserfs
+
+Bernardo João Torres da Silveira
+                        <bernardojts@ig.com.br>
+        * pt_BR translation of FAQ and parted.texi
+
+Wojciech Polak          <polak@gnu.org>
+        * Polish translations
+
+Miloslav Trmac          <mitr@volny.cz>
+        * Czech translations
+
+Maxim V. Dziumanenko    <mvd@mylinux.com.ua>
+        * Ukrainian translations
+
+Giuseppe Sacco          <eppesuig@debian.org>
+        * Italian translations
+
+Guillaume Knispel       <k_guillaume@libertysurf.fr>
+        * nearly all hfs and hfs+ code (libparted/fs_hfs)
+        * hfs+ support for mac partitions (disk_mac.c)
+        * sync_fast code (linux.c gnu.c geom.[ch] device.[ch] )
+        * various fixes (parted.c ui.c filesys.c disk_dos.c disk.c
+        doc/parted.texi doc/API disk_gpt.c disk_mac.c unit.c fs_fat/traverse.c)
+
+Chris Lumens            <clumens@redhat.com>
+        * interactive help fixes for filesystem types
+        * gcc-4 pedanticism cleanups
+
+Wei-Lun Chao            <chaoweilun@pcmail.com.tw>
+        * Taiwanese dialect of Chinese (Cantonese?) translations.
+
+Tran Thi Hoang Quyen    <banhdauxanhhaiduong@gmail.com>
+        * Vietnamese translations
+
+Eduardo Maestri Righes  <eduardo@tteng.com.br>
+        * hidden partitions support
+        * setting MS Reserved partitions through "set" command.
+
+Arif E. Nugroho         <arif_endro@yahoo.com>
+        * Indonesian translations
+
+Ithamar R. Adema        <ithamar@unet.nl>
+        * BeOS support
+
+David Cantrell          <dcantrell@redhat.com>
+        * Added support for Promise SX8 devices (original patch from Jeremy
+          Katz <katzj@redhat.com>)
+        * Brought IBM/Red Hat DASD patches forward to parted-1.7.x
+          Original IBM authors: Volker Sameske <sameske@de.ibm.com>
+                                Horst Hummel <Horst.Hummel@de.ibm.com>
+          Original Red Hat authors: Phil Knirsch <phil@redhat.de>
+                                    Harald Hoyer <harald@redhat.de>
+        * Prevent SIGFPE when FAT sector size is 0
+        * Add virtual DASD (VIODASD) on iSeries support
+        * Use O_DIRECT I/O to prevent first partition corruption on GPT disks
+        * Prevent sector reading exceptions from ped_geometry_check() on Mac
+          disklabels.
+        * Various bug fixes and other things.
+
+Peter Jones             <pjones@redhat.com>
+        * Add ped_exception_get_handler()
+        * /dev/mapper read/write support on Linux (via libdevmapper)
+
+Darren Lavender         <dl1@hppine99.gbr.hp.com>
+        * Fix SIGSEGV in parted 1.6.19 and assertion error in 1.7.0
+        * Add support for LUN/device resize detection and option GPT
+          header corruption
+        * Fixed off-by-one error in GPT header that allowed for overlap
+          between LDAs of LastUsableLBA and PartitionEntryLBA in backup GPT
+
+Olaf Hering             <olh@suse.de>
+        * Fixes for Macintosh disk label code
+
+Debarshi Ray            <rishi@gnu.org>
+        * Display disk model and transport type in parted(8).
+        * '--list/-l' command line switch.
+        * Introduce 'print devices' and alias 'print list' to 'print all'.
+        * Alias 'mktable' to 'mklabel'.
+        * Code and API clean-up, bug fixes, and other miscellaneous stuff.
+
+Harald Welte            <laforge@gnumonks.org>
+        * SD/MMC Storage card support on Linux
diff --git a/BUGS b/BUGS
new file mode 100644 (file)
index 0000000..8223300
--- /dev/null
+++ b/BUGS
@@ -0,0 +1,6 @@
+
+Please see the FAQ (available on the web site at
+http://www.gnu.org/software/parted/) for common bugs from the past
+and http://alioth.debian.org/parted/ for a bug tracker.
+
+=======================================================================
diff --git a/COPYING b/COPYING
new file mode 100644 (file)
index 0000000..24afbe2
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,675 @@
+
+                   GNU GENERAL PUBLIC LICENSE
+                      Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                           Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  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
+them 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 prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  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.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                      TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey 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;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If 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 convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU 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 that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  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.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+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.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                    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
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    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 <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program 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, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU 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 Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/ChangeLog b/ChangeLog
new file mode 100644 (file)
index 0000000..6e0b066
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,7298 @@
+2011-05-30  Jim Meyering  <meyering@redhat.com>
+
+       version 3.0
+       * NEWS: Record release date.
+
+       maint: placate coverity: don't ignore some return values
+       * libparted/cs/constraint.c: Include <assert.h>.
+       (ped_constraint_exact): Don't ignore ped_alignment_init's return
+       value or that from ped_geometry_init.
+
+       loop: avoid NULL dereference upon failure
+       * libparted/labels/loop.c (loop_partition_duplicate): Don't dereference
+       NULL upon failure.
+
+       shared library version: increment major: 1.0.0
+       * libparted/Makefile.am (CURRENT, REVISION): Update from 0.2.0 to 1.0.0,
+       due to removed interfaces.
+
+       build: update gnulib submodule to latest
+
+2011-05-27  Jim Meyering  <meyering@redhat.com>
+
+       doc: update NEWS
+       * NEWS (Changes in behavior): Describe the change.
+       (Bug fixes): Mention the leak fixes.
+
+       doc: reflect removal of FS-related commands
+       * README (WARNING): Say that all FS-manipulation code is now gone.
+       * doc/parted.texi (Command explanations): Remove descriptions of and
+       any examples or references to the following commands: check, cp,
+       mkfs, mkpartfs, move, resize.
+
+       build: remove configure-time options: --disable-fs, --enable-Werror
+       * configure.ac: Remove support for --enable-fs and --disable-fs.
+       Remove support for --enable-Werror and --disable-Werror.
+       * README: Remove paragraph about --disable-fs and
+       --enable-discovery-only.
+       * libparted/libparted.c: Now that --disable-fs is gone (i.e.,
+       ENABLE_FS would be always 1), remove its #ifdefs.
+
+       tests: make t0220 more useful when it fails
+
+       maint: update po/POTFILES.in
+       * po/POTFILES.in: Remove file names, to reflect file deletions.
+
+       doc: remove FS-related documentation and other stale bits
+       * doc/parted.texi: Remove FS-related documentation and other
+       stale bits.
+
+       linux_swap: remove all-but-probe FS-related code
+
+       xfs: remove all-but-probe FS-related code
+
+       jfs: remove all-but-probe FS-related code
+
+       ufs: remove all-but-probe FS-related code
+
+       reiserfs: remove all-but-probe FS-related code
+
+       hfs: remove all-but-probe FS-related code
+
+       ntfs: remove all-but-probe FS-related code
+
+       amiga: build with warning and error options
+       * libparted/fs/amiga/Makefile.am (AM_CFLAGS): Add $(WARN_CFLAGS)
+       and $(WERROR_CFLAGS).
+
+       ext2: remove all-but-probe FS-related code
+
+       fat: remove all-but-probe FS-related code
+
+       remove all top-level FS-op code and the clearfat program
+
+       UI: remove all file-system-aware sub-commands
+       Note that we are removing the resize command, even though parted
+       appears to be the only free tool that provides the ability to
+       resize FAT16 and FAT32 file systems.
+       * parted/parted.c (do_mkfs, do_cp, do_mkpartfs): Remove functions.
+       (do_move, do_check, do_resize): Likewise.
+       (_init_commands): Remove each command-definition clause.
+       * parted/parted.c (_partition_warn_loss): Remove now-unused function.
+       * include/parted/filesys.h: Remove declarations of now-removed
+       FS-munging functions
+
+       tests: t1100: show that adding a partition on a busy device succeeds
+       * tests/t1100-busy-label.sh: Demonstrate that adding a partition
+       succeeds, even when another on the same device is mounted (active).
+
+       amiga: avoid NULL-deref-on-OOM and an error-path leak
+       * libparted/labels/rdb.c (amiga_read): Don't dereference NULL on OOM.
+       Don't leak a constraint when failing to add a partition.
+
+       mac: avoid NULL-deref-on-OOM and an error-path leak
+       * libparted/labels/mac.c (mac_read): Don't dereference NULL on OOM.
+       Don't leak a constraint when failing to add a partition.
+
+       sun: avoid NULL-deref-on-OOM and an error-path leak
+       * libparted/labels/sun.c (sun_read): Don't dereference NULL on OOM.
+       Don't leak a constraint when failing to add a partition.
+
+       UI: avoid leak when interactive sector selection matches default
+       * parted/ui.c (command_line_get_fs_type): Don't leak an input "word".
+
+       UI: plug a leak
+       * parted/ui.c (command_line_get_fs_type): Don't leak an FS type name
+       string.
+
+       bsd: avoid NULL-deref-on-OOM and an error-path leak
+       * libparted/labels/bsd.c (bsd_read): Don't dereference NULL on OOM.
+       Don't leak a constraint when failing to add a partition.
+
+       linux: don't leak a FILE* upon /proc read failure
+       * libparted/arch/linux.c (_probe_proc_partitions): Call fclose
+       upon failure.
+
+       linux: plug a file descriptor leak
+       * libparted/arch/linux.c (read_device_sysfs_file): Don't leak a
+       file descriptor.
+
+       tests: t1100-busy-label: don't use mkpartfs; rework to use scsi_debug
+       * tests/t1100-busy-label.sh: Remove one last use of mkpartfs.
+       Use scsi_debug rather than requiring an explicitly-provided device.
+
+       maint: correct coverity-reported "suspicious sizeof"
+       * parted/table.c (table_add_row): Use sizeof(*VAR), rather than
+       erroneous sizeof(explicit_type) that just happened to be ok.
+
+       maint: remove unreachable code
+       * libparted/labels/sun.c (sun_partition_new): Remove unreachable stmt.
+       * libparted/labels/pc98.c (pc98_partition_new): Likewise.
+
+       build: update gnulib submodule to latest
+
+2011-05-18  Jim Meyering  <meyering@redhat.com>
+
+       post-release administrivia
+       * NEWS: Add header line for next release.
+       * .prev-version: Record previous version.
+       * cfg.mk (old_NEWS_hash): Auto-update.
+
+       version 2.4
+       * NEWS: Record release date.
+
+       shared library version: increment REVISION
+       * libparted/Makefile.am (REVISION): Increment, since there have
+       been changes to the library, but no interface addition or removal.
+       * README-release: Mention the shared-library version update procedure.
+
+       build: update gnulib submodule to latest
+
+       tests: avoid nasty FP-causing race condition
+       * tests/t9040-many-partitions.sh: Remove all partitions before
+       exiting -- otherwise, the rmmod-prompted removal of those many
+       partitions would continue long after rmmod completion and the
+       release of the scsi_debug lock, and thus partition-device removals
+       provoked by this test would cause failure in the subsequent test,
+       e.g., when the devices for partitions 14,15,16 have just been
+       successfully created (verified that they exist), yet the next
+       step -- to create a file system on one of them -- fails or is
+       erroneously skipped because the device has been removed asynchronously.
+
+       tests: add double quotes around another use of $VERBOSE
+       * tests/t-local.sh (scsi_debug_setup_): Quote another $VERBOSE.
+
+       build: list bc as a build-requirement
+       * bootstrap.conf (buildreq): Also require "bc", since it's used
+       in some of 'make check's tests.
+
+2011-05-17  Jim Meyering  <meyering@redhat.com>
+
+       tests: remove tests that are too FS-centric
+       * tests/t2100-mkswap.sh: Likewise.
+       * tests/t3000-resize-fs.sh: Remove file, now that all FS-ops are gone.
+       * tests/Makefile.am (TESTS): Remove them here, too.
+
+       linux: fix diagnostic about operating on very small file or device
+       * libparted/arch/linux.c (init_file): Correct diagnostic.
+       Parted would claim that a small-but-non-empty file has zero length.
+
+       bfs: remove unused files
+
+       tests: add double quotes around a use of $VERBOSE
+       * tests/t-local.sh (scsi_debug_cleanup_): Add missing double quotes.
+
+2011-05-12  Jim Meyering  <meyering@redhat.com>
+
+       tests: avoid new, spurious test failure
+       * tests/t9050-partition-table-types.sh: Use a "device size"
+       that is large enough to accommodate 1KiB and 4KiB sectors.
+       The original size, 3MiB was too small for a dvh partition
+       with PARTED_SECTOR_SIZE=1024.  Increase it to 30MiB.
+
+       tests: adapt t1101-busy-partition not to use mkpartfs
+       * tests/t1101-busy-partition.sh: Use mkfs.vfat instead.
+
+2011-05-11  Jim Meyering  <meyering@redhat.com>
+
+       tests: write all pairs of partition table types
+       * tests/t9050-partition-table-types.sh: New file.
+       * tests/Makefile.am (TESTS): Add it.
+
+2011-05-10  Jim Meyering  <meyering@redhat.com>
+
+       tests: add a NEWS entry and a test to exercise today's bug fix
+       * tests/t9041-undetected-in-use-16th-partition: New file.
+       * tests/Makefile.am (TESTS): Add it.
+       * NEWS (Bug fixes): Describe it.
+
+2011-05-10  Phillip Susi  <psusi@cfl.rr.com>
+
+       linux: also detect "in-use" dmraid and scsi-Nth (N>=16) partitions
+       Prior to this change, Parted would fail to detect any in-use
+       partition on a dmraid disk, as well as any in-use partition
+       numbered 16 or greater on a regular scsi disk.
+       This was because assumptions were being made about the device node
+       major/minor numbers and how they relate to the partition number.
+       These assumptions are invalid for dmraid devices, and for normal
+       disks with >= 16 partitions.
+       * libparted/arch/linux.c (_partition_get_part_dev): Remove function.
+       (_partition_is_mounted): Rewrite to use _partition_is_mounted_by_path
+       instead of _by_dev.
+
+2011-05-10  Jim Meyering  <meyering@redhat.com>
+
+       build: update gnulib submodule to latest
+
+       tests: avoid subtle shell semantics bug
+       This bug was causing some root-only tests to be mistakenly skipped.
+       This bash command will always exit successfully,
+       i.e., the "return 1" will never happen:
+         bash -c 'f(){ local f=$(false)||return 1; return 0; }; f'
+       That's because the assignment always succeeds, and that success
+       is what determines the return value, not the $(...) command.
+       This is very counter-intuitive, sigh.
+       The work-around is to separate the declaration and assignment, as in
+       local f; f=$(...) || ...
+       * tests/t-local.sh (new_sdX_): Do that.
+       (gpt_corrupt_primary_table_): Likewise.
+
+       tests: minor fix; add/adjust comments
+       * tests/t1101-busy-partition.sh: Don't ignore failed comparison.
+       Add a comment.
+
+2011-04-21  Brian C. Lane  <bcl@redhat.com>
+
+       s390/dasd: avoid buffer overrun upon API mismatch diagnostic
+       * libparted/labels/fdasd.c (fdasd_check_api_version): The static
+       buffer for the error string was too small.  Double its length.
+       This resolves http://bugzilla.redhat.com/693852
+
+2011-04-20  Brian C. Lane  <bcl@redhat.com>
+
+       linux: fix typo in comment: /path%d => /part%d
+       * libparted/arch/linux.c (_device_get_part_path): Fix typo in comment.
+
+2011-04-18  Jim Meyering  <meyering@redhat.com>
+
+       linux: don't free invalid pointer upon asprintf failure
+       * libparted/arch/linux.c (_device_get_part_path): When asprintf
+       fails, it leaves its first argument in an undefined state, and
+       hence that pointer must not be freed.  However, here, in two
+       places we could potentially free an invalid pointer.  Use
+       zasprintf; then the pointer is either NULL or allocated,
+       and hence always freeable.
+
+       linux: clean up device naming code (no semantic change)
+       * libparted/arch/linux.c (zasprintf): New function.
+       (_device_get_part_path): Clean up:
+       Use size_t, not "int" for strlen-returned value.
+       Combine mostly duplicate snprintf uses.
+       Use zasprintf instead of malloc+snprintf.
+
+       don't reference before start of buffer for short device name
+       * libparted/arch/linux.c (_device_get_part_path): Avoid invalid
+       reference to memory before dev->path when its length is 4 or less.
+
+2011-04-14  Jim Meyering  <meyering@redhat.com>
+
+       maint: s/can not/cannot/ in a comment and documentation
+       Without this, a new "make syntax-check" rule would fail.
+       * libparted/filesys.c: s/can not/cannot/
+       * doc/parted-pt_BR.texi (BIOSes and Firmware): Likewise.
+
+       tests: remove now-unused Makefile rule
+       * libparted/tests/Makefile.am (old-init.sh): Remove obsolete rule.
+
+       tests: improve t1101-busy-partition.sh
+       * tests/t1101-busy-partition.sh: Fail hard upon timeout while
+       waiting for device to appear.
+
+       tests: make the tests in libparted/tests work properly once again
+       Since switching to init.sh, the root-only tests did not clean up.
+       * libparted/tests/Makefile.am (prereq): Always create a symlink
+       to tests/init.sh.
+       * tests/init.cfg: Source $abs_top_srcdir/tests-relative names,
+       not $srcdir-relative names.  This way, it works also when run
+       from libparted/tests/.
+       * tests/t-local.sh: Likewise.
+
+       tests: avoid a race condition in the scsi_debug-using tests
+       * tests/t-local.sh (new_sdX_): New function.
+       (scsi_debug_setup_): Use new_sdX_ to find the just-created device name,
+       rather relying on the list of file names in /sys/block/sd* changing.
+       Sometimes the list would not change, which would lead to tests failing
+       with I/O errors when run in parallel.  Thanks to Brian Lane for the
+       tip that /sys/block/sd*/device/model contains "scsi_debug" if there
+       is a device created by our "modprobe scsi_debug" command.
+
+2011-03-24  Jim Meyering  <meyering@redhat.com>
+
+       make parted "do what I say" with IEC start and end values like 5GiB
+       In a command like this,
+         parted -s -- $dev mklabel gpt mkpart P-NAME 4MB -34s
+       parted interprets the "4MB" as merely a suggestion for the starting
+       sector number.  It uses half of the MB-units value as a "radius"
+       about the sector containing byte 4,000,000, and it may choose some
+       other more appropriate sector, based on partition table or alignment
+       constraints within the range 3,500,000B..4,500,000B.
+       Before, parted handled IEC units, i.e., KiB, MiB, GiB, etc.,
+       with identically "helpful" sloppiness, of course honoring the
+       power-of-two semantics.
+       Now, however if you use IEC units, i.e., KiB, MiB, GiB, etc.,
+       the "radius" is taken to be zero, so parted uses precisely
+       whatever multiple of a power of two you've specified.
+       Hence, adjusting the example above to use MiB, rather than "MB",
+         parted -s -- $dev mklabel gpt mkpart P-NAME 4MiB -34s
+       With this change, that is equivalent to the following:
+         parted -s -- $dev mklabel gpt mkpart P-NAME 4194304B -34s
+       I.e., it uses the sector containing precisely that byte, and
+       does not perform any "extra" adjustment.
+       * libparted/unit.c (is_power_of_2): New function.
+       (ped_unit_parse_custom): Use it to avoid interpreting a large
+       input string as "sloppy" (i.e. large radius) when it uses IEC
+       binary notation like 34KiB, 3GiB and 65TiB.
+       * tests/t0207-IEC-binary-notation.sh: New test.
+       * tests/Makefile.am (TESTS): Add it.
+       * doc/parted.texi (unit): Describe the new behavior.
+       * NEWS (Changes in behavior): Mention it here, too.
+
+2011-03-20  Jim Meyering  <meyering@redhat.com>
+
+       maint: stop using .x-sc_* files to list syntax-check exemptions
+       Instead, use the new mechanism with which you merely use a
+       variable (derived from the rule name) defined in cfg.mk to an ERE
+       matching the exempted file names.
+       * gnulib: Update to latest, to get maint.mk that implements this.
+       * .x-sc_GPL_version: Remove file.
+       * .x-sc_prohibit_always-defined_macros: Likewise.
+       * Makefile.am (EXTRA_DIST): Remove them from here, too.
+       * cfg.mk: Define variables to exempt the same files.
+
+2011-03-16  Jim Meyering  <meyering@redhat.com>
+
+       maint: rename a variable
+       * libparted/labels/gpt.c (_header_is_valid): Rename a variable,
+       and switch to more readable range-checking logic.
+
+       gpt: avoid division by zero
+       * libparted/labels/gpt.c (_header_is_valid): Reject as invalid if
+       FirstUsableLBA < 3.
+       (gpt_get_max_supported_partition_count): Ensure that we don't divide
+       by zero: verify that the GPT header is valid before dividing by its
+       "size of partition entry".  Under normal circumstances, the on-disk
+       PE size field is reasonable because we have just written it.  However,
+       there are two ways it can end up zero: we lose the race when some other
+       process pokes a 4-byte 0 into just the right location between when
+       we write it and when we re-read the value we're about to divide by.
+       Then there's the case that I encountered: using an old USB (8MB) key,
+       mklabel gpt failed due to division by zero.  The device reported no
+       failure when writing the initial header, yet when reading back that
+       very same sector (also successful), parted got all 0 bytes.
+       * NEWS (Bug fixes): Mention it.
+
+       build: enable compilation warnings also for new nilfs2 subdir
+       * libparted/fs/nilfs2/Makefile.am (AM_CFLAGS): Define.
+
+       nilfs2: remove unused nilfs2_clobber function
+       * libparted/fs/nilfs2/nilfs2.c (nilfs2_clobber): Remove unused
+       function.
+       (nilfs2_ops) [clobber]: Always set to NULL.
+
+       maint: avoid shadowing warning
+       * parted/parted.c (do_mkpart): Rename inner added_ok to add_ok.
+
+       build: don't let parted_CFLAGS override our AM_CFLAGS setting
+       * parted/Makefile.am (parted_CFLAGS): Remove unused (and interfering)
+       definition.
+
+       maint: avoid new compiler warnings
+       * parted/parted.c (do_print): Remove now-unused "error" label.
+       (_print_disk_info): Use one more "const" attribute, to avoid
+       compiler warnings.
+
+2011-03-16  Petr Uzel  <petr.uzel@suse.cz>
+
+       tests: do not fail if some utilities are missing
+       * tests/t1700-probe-fs.sh: Skip the test if mkfs.ext3 or tune2fs
+       is missing or is not in $PATH.
+
+       tests: test 'parted print' with empty disk
+       * tests/t0101-print-empty.sh: New test.
+       * tests/Makefile.am: Add it.
+
+       parted: rework 'parted print' so that it works with empty disk
+       'parted $dev print' on a device without a partition table used to fail
+       with an 'unrecognised disk label' error, without printing the following:
+       disk model, transport, size, sector size, BIOS geometry
+       all of which are available, and do not dependent on the partition table.
+
+       With this patch, parted prints all of this information (BIOS geometry
+       only if 'unit cyl' is specified) and reports success even if the disk
+       does not have a valid partition table.
+
+       As a side efect, 'parted $dev print devices/all/list' now prints
+       information about all the devices, even if $dev does not have a
+       partition table.
+
+       * parted/parted.c (_print_disk_info): New function.
+       (do_print): Do not immediately fail if the partition table is not
+       recognized, but print disk information and report success instead.
+       * NEWS (Changes in behavior): Mention it.
+
+       parted: factor out disk geometry printing into separate function
+       * parted/parted.c (_print_disk_geometry): New function.
+       (do_print): Use _print_disk_geometry.
+
+2011-03-05  Brian C. Lane  <bcl@redhat.com>
+
+       Remove PED_ASSERT action argument
+       The action argument was a leftover from when the PED_ASSERT macro was
+       last changed. This removes that argument from the macro and from all
+       occurrences of it.
+
+       Remove PED_ASSERT from dos geometry checking
+       The CHS geometry values are calculated based on the existing partition
+       information. The values can't always be calculated, and the partition
+       may be corrupt so instead of throwing an assertion just return 0 and
+       carry on.
+
+       I left the logic for the PED_ASSERT checks the same so that it is clear
+       that the logic has not changed, it just returns 0 now.
+
+       * libparted/labels/dos.c (probe_partition_for_geom): remove PED_ASSERT
+
+2011-03-05  Jim Meyering  <meyering@redhat.com>
+
+       tests: add a minimal nilfs2 test
+       * tests/t1700-probe-fs.sh: Adapt to also test nilfs2.
+
+2011-03-04  Jim Meyering  <meyering@redhat.com>
+
+       tests: rename a test script, before extending it to handle nilfs
+       * tests/t1700-probe-fs.sh: Rename from ...
+       * tests/t1700-ext-probe.sh: ...this.
+       * tests/Makefile.am (TESTS): Rename it here, too.
+
+2011-02-26  Jiro SEKIBA  <jir@unicus.jp>
+
+       libparted: add nilfs2 module
+       * libparted/fs/nilfs2/Makefile.am: New file.
+       * libparted/fs/nilfs2/nilfs2.c: New file.
+       (is_valid_nilfs_sb, nilfs2_probe, nilfs2_clobber): New functions.
+       (ped_file_system_nilfs2_init, ped_file_system_nilfs2_done): Likewise.
+       (nilfs2_ops, nilfs2_type): Define.
+       * libparted/fs/Makefile.am (SUBDIRS): Add nilfs2.
+       * configure.ac (AC_OUTPUT): Add the new Makefile.
+       * libparted/libparted.c: Declare and use the _init and _done functions.
+
+       Add a new fs module to provide following:
+       - probe nilfs2 filesystem partition
+       - clobber nilfs2 filesystem partition
+
+       The is_valid_nilfs_sb function came from the grub nilfs2 module,
+       which is written by me and assigned to FSF.
+
+2011-02-26  Jim Meyering  <meyering@redhat.com>
+
+       maint: two files lacked a newline at EOF: add one to each
+       * include/Makefile.am: Add newline at end of file.
+       * libparted/fs/jfs/Makefile.am: Likewise.
+
+       tests: t3310-flags: check all gpt boolean flags, too
+       * tests/t3310-flags.sh: Check gpt as well as msdos flags.
+       Parametrize mkpart usage.
+       Accommodate gpt-induced difference in parted's print output
+       GPT partitions have a name, while msdos ones do not.
+       This also fixes the "on_and_off" perl flag extraction regexp,
+       which before was using $1 with no corresponding () group.
+
+       tests: prepare t3310-flags to check gpt boolean flags, too
+       * tests/t3310-flags.sh: Put a loop around the body of the test,
+       and factor out the partition table name.
+
+       tests: remove useless commands
+       * tests/t3310-flags.sh: Remove useless exp-manipulating commands.
+
+2011-02-26  Brian C. Lane  <bcl@redhat.com>
+
+       gpt: add legacy_boot partition flag
+       Add support for the Legacy BIOS Bootable flag in the GPT
+       Attribute field.  This is used by software like syslinux to
+       determine which partition to boot when in BIOS mode.
+
+       See Page 105, Table 19 Bit 2 of the UEFI Spec 2.3 book.
+
+       * doc/C/parted.8: Document legacy_boot.
+       * doc/parted.texi: Document legacy_boot.
+       * include/parted/disk.h: Add PED_PARTITION_LEGACY_BOOT flag.
+       * libparted/disk.c (ped_partition_flag_get_name): Add legacy_boot flag.
+       * libparted/labels/gpt.c (_parse_part_entry):
+       (_partition_generate_part_entry, gpt_partition_new):
+       (gpt_partition_set_flag, gpt_partition_get_flag):
+       (gpt_partition_is_flag_available): Add legacy_boot flag support.
+
+       gpt: add partition attribute bits: NoBlockIOProtocol, LegacyBIOSBootable
+       Add NoBlockIOProtocol and LegacyBIOSBootable flags to the GPT partition
+       Attributes entry.
+
+2011-02-26  Jim Meyering  <meyering@redhat.com>
+
+       doc: regenerate partprobe .pot and .po files
+       * doc/C/po/partprobe.8.pot: Slight syntax update induced by newer tool.
+       * doc/pt_BR/partprobe.8.pt_BR.po: Likewise.
+
+       tests: move test_description= variable to a comment
+       test-lib.sh-based tests required a test_description= definition.
+       When testing switched to init.sh, which by convention uses a brief
+       comment on line 2 instead, some instances were not converted.
+       * libparted/tests/t1000-label.sh: Put test description on line 2.
+       Remove now-unused test_description= definition.
+       * libparted/tests/t2000-disk.sh: Likewise.
+       * tests/t0220-gpt-msftres.sh: Likewise.
+
+2011-02-23  Jim Meyering  <meyering@redhat.com>
+
+       s390: avoid warnings
+       * libparted/labels/vtoc.c (vtoc_read_volume_label): Remove decl
+       of unused var.
+       * libparted/labels/fdasd.c (fdasd_valid_vtoc_pointer): Return
+       a value also when successful.
+       * libparted/labels/dasd.c (dasd_alloc_metadata): Initialize "part"
+       to NULL solely to avoid a spurious used-uninitialized warning.
+
+2011-02-23  Stephen Powell  <zlinuxman@wowway.com>
+
+       doc: add NEWS entries for s390 fix and improvements
+
+       s390: make DIAG driver work for FBA DASD with block size > 512
+       In order to make the DIAG driver work for FBA DASD with a block
+       size greater than 512, I had to make a rather awkward patch to
+       C function vtoc_read_volume_label in libparted/labels/vtoc.c.
+       The "right" logic would be "If this is an FBA DASD device
+       using the DIAG driver, and the effective block size used by the
+       DIAG driver is greater than 512, then do it this way.  Else,
+       do it the normal way."  (Note that when using the FBA driver,
+       the effective block size is always 512, regardless of the CMS
+       logical block size stored in the volume label.  The DIAG driver,
+       on the other hand, honors the CMS logical block size.)
+
+       The problem is that the information needed to make that decision
+       has not been provided to the routine (via the parameter list).
+       So what I ended up doing is assuming the normal way, then if
+       I don't find a recognized volume label header (VOL1, LNX1,
+       or CMS1, in EBCDIC), then I assumed that it must be the special
+       case.  So in the special case I end up doing an unnecessary
+       read.  It's a kludge, but it works.
+
+2011-02-23  Jim Meyering  <meyering@redhat.com>
+
+       tests: new script to generate 9-pte-GPT-tables
+
+       cleanup: use verify, not PED_ASSERT to check struct sizes
+       * libparted/labels/gpt.c: Use compile-time "verify" rather than
+       run-time PED_ASSERT to ensure struct sizes are as expected.
+
+2011-02-23  Stephen Powell  <zlinuxman@wowway.com>
+
+       s390: improve/correct DASD support
+       The long title would be "corrections to partition size and location
+       calculations for type 1 partitions for s390 dasd".
+
+       This could be treated as two separate fixes, one to make corrections
+       for LDL formatted disks and one to add support for CMS formatted
+       disks.  I see CMS formatted disks as a variant of LDL formatted
+       disks, with the additional twist that CMS formatted disks can
+       be reserved or recomped, which LDL formatted disks cannot be.
+       This affects the size and location of the partition.
+
+       With these patches, parted matches the behavior of the Linux kernel
+       in recognizing partitions on CMS- and LDL-formatted disks, as documented
+       in the Linux kernel source code in routine fs/partitions/ibm.c.
+       Calculation of the metadata has also been changed so that parted will
+       show no free space on such a disk.  In some cases there are now two
+       non-contiguous metadata extents: one at the beginning of the disk and
+       one at the end.
+
+       As before, parted only supports CKD DASD using the ECKD driver.
+       FBA DASD and CKD DASD using the DIAG driver are still not supported.
+
+       In my regression testing I have discovered some problems in the area
+       of recognizing file system options.  However, since I can duplicate
+       these errors on a version of parted which does not contain my changes,
+       I have concluded that my changes did not cause this and therefore
+       this is an unrelated bug.
+
+2011-02-22  Jim Meyering  <meyering@redhat.com>
+
+       maint: update from gnulib
+       * bootstrap: Update from gnulib.
+       * tests/init.sh: Likewise.
+       * gnulib: Update submodule to latest.
+
+       maint: update copyright year ranges to include 2011
+       Run "make update-copyright".
+
+       maint: update copyright date in parted.texi
+       * doc/parted.texi: Update copyright date.
+
+2010-12-30  Jim Meyering  <meyering@redhat.com>
+
+       maint: don't hard-code bug-reporting address
+       * libparted/exception.c (default_handler): Use PACKAGE_BUGREPORT
+       rather than hard-coding bug-parted@...
+       * libparted/labels/gpt.c (_parse_header) [DISCOVER_ONLY]: Don't
+       mention the bug-reporting address explicitly, since ped_exception_throw
+       is about to do just that.
+
+2010-12-16  Jim Meyering  <meyering@redhat.com>
+
+       maint: correct typos in HACKING
+       * HACKING: Don't reference grep everywhere.  I copied grep's
+       HACKING and forgot to s/grep/parted/ (slightly different for
+       the repository, since it's at git.debian.org, not Savannah).
+       2010-11-25  Jim Meyering  <meyering@redhat.com>
+
+2010-12-15  Brian C. Lane  <bcl@redhat.com>
+
+       default to 1MiB alignment when possible
+       Change the linux_get_optimum_alignment() function to prefer
+       aligning partitions to PED_DEFAULT_ALIGNMENT (1MiB), if possible.
+       This helps tools like anaconda better support 4k sector drives.
+
+       * include/parted/parted.h (PED_DEFAULT_ALIGNMENT): Define.
+       * libparted/arch/linux.c (linux_get_optimum_alignment): Adjust.
+       See comments for details.
+       * libparted/device.c (ped_device_get_optimum_alignment): Use
+       PED_DEFAULT_ALIGNMENT rather than hard-coded 1048576.
+       * tests/t9020-alignment.sh: Adjust expectations to match new behavior.
+       See http://bugzilla.redhat.com/618255 for details.
+
+2010-11-22  Jim Meyering  <meyering@redhat.com>
+
+       tests: don't rely on "lockfile" program
+       * tests/t-local.sh (scsi_debug_acquire_lock_): Use mkdir, rather
+       that lockfile.  The latter is not always available.
+       (scsi_debug_lock_dir_): Rename, now that it's a dir.
+       (scsi_debug_cleanup_): Remove it with rm -rf.
+       Fix typo in diag: s/rrmod/rmmod/
+
+       tests: remove vestiges of test-lib.sh
+       * tests/t-lib-helpers.sh (require_mdadm_): Remove vestiges of
+       test-lib.sh (aka uses of the "say" and "test_done" functions).
+       (require_xfs_): Likewise.
+
+       tests: avoid spurious failure
+       * tests/t6000-dm.sh: Sanitize directory name, to avoid spurious
+       failure due to e.g., mount-related differences.
+
+2010-11-22  Brian C. Lane  <bcl@redhat.com>
+
+       linux: remove DASD restriction on _disk_sync_part_table
+       * libparted/arch/linux.c: Include <assert.h>.
+       (linux_disk_commit): Assert that _have_blkpg returns true
+       and don't skip _disk_sync_part_table for DASD devices.
+       Otherwise, when creating a partition on a DASD device,
+       new /dev/*[12...] device files would not be created.
+       Also, remove obsolete comment about DevFS.
+       For details, see http://bugzilla.redhat.com/651478
+       and http://thread.gmane.org/gmane.comp.gnu.parted.bugs/10191
+
+2010-11-21  Jim Meyering  <meyering@redhat.com>
+
+       build: update gnulib submodule to latest
+       avoid new syntax-check failures
+       * .x-sc_cross_check_PATH_usage_in_tests: New file.
+       * .x-sc_bindtextdomain: New file.
+
+2010-11-20  Jim Meyering  <meyering@redhat.com>
+
+       tests: adjust cleanup_ handler to work with init.sh
+       * tests/init.cfg (cleanup_, cleanup_fn_, cleanup_final_): Define.
+       * tests/t-local.sh (cleanup_final_): Use this to ensure that we
+       always release the lock and run rmmod.  Overriding the trap did not
+       do the job.
+       * libparted/tests/t2100-zerolen.sh: Use cleanup_fn_, not cleanup_.
+       * tests/t1100-busy-label.sh: Likewise.
+       * tests/t1101-busy-partition.sh: Likewise.
+       * tests/t4100-dvh-partition-limits.sh: Likewise.
+       * tests/t4100-msdos-partition-limits.sh: Likewise.
+       * tests/t6000-dm.sh: Likewise.
+       * tests/t8000-loop.sh: Likewise.
+
+       tests: t3000-resize-fs.sh: don't expect fs-op warning
+       * tests/t3000-resize-fs.sh: Don't expect fs-op warning.
+       The testing framework now suppresses it.
+
+       tests: t-lvm.sh (lvm_init_root_dir_): Fix it to use $test_dir_
+
+       tests: remove t-lib.sh
+       * tests/t-lib.sh: Remove file.  No longer used.
+       * tests/Makefile.am (EXTRA_DIST): Remove t-lib.sh.
+       * tests/t-lib-helpers.sh: Don't mention this file name.
+       * tests/t-local.sh: Likewise.
+
+       tests: switch from t-lib.sh to init.sh
+       * tests/init.cfg: Source t-local.sh.
+       * tests/t-local.sh: Replace trap so that we always run
+       scsi_debug_cleanup_, regardless of the cleanup_ function.
+       Replace each snippet like this:
+       -if test "$VERBOSE" = yes; then
+       -  set -x
+       -  parted --version
+       -fi
+       -
+       -: ${srcdir=.}
+       -. $srcdir/t-lib.sh
+       +. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+
+       Use this command (LHS elided, because it was too long):
+         git grep -l 'srcdir/t-lib.sh'|xargs perl -p0i -e \
+           's!...!. "\${srcdir=.}/init.sh"; path_prepend_ ../parted\n!'
+
+       * tests/t3310-flags.sh: Adjust manually, since the snippet
+       didn't quite match.
+
+       tests: remove test-lib.sh
+       * tests/test-lib.sh: Remove file.  No longer used.
+       * tests/Makefile.am (EXTRA_DIST): Remove test-lib.sh.
+       (old-init.sh): Remove rule and associated uses.
+       * tests/lvm-utils.sh (init_root_dir_): Switch to test_dir_,
+       since that is now the only variable that remains.
+
+       tests: remove fail=0 initializations
+       Now, this is done in init.sh.
+
+       tests: libparted/tests: use init.sh, not test-lib.sh
+
+       tests: make lvm-utils.sh usable also from init.sh-using tests
+       * tests/lvm-utils.sh: Use fail_, not error for diagnostics.
+       The former also works in init.sh-using scripts.
+       (init_root_dir_): Use test_dir_ if $test_dir_rand_ is not set.
+
+       tests: new function required for t2100-zerolen.sh
+       * tests/t-lib-helpers.sh (device_mapper_required_): New function.
+
+       tests: convert t5000-tags.sh
+
+       tests: t-lib-helpers.sh: don't discard require_dvhtool_ stderr/stdout
+
+       tests: dvhtool: use skip_, not skip
+
+       tests: t4200-partprobe.sh: convert
+
+       tests: t-lib-helpers.sh (require_dvhtool_): New function.
+
+       tests: convert t4000-sun-raid-type.sh
+
+       tests: move more functions to t-lib-helpers.sh
+
+       tests: convert t7000 to init.sh
+
+       tests: t-lib-helpers: copy emit_superuser_warning from test-lib.sh
+
+       tests: t0000: convert to use init.sh
+
+       tests: convert t1101-busy-partition.sh
+       * tests/t1101-busy-partition.sh: Convert from t-lib.sh to init.sh.
+
+       tests: convert t4100-msdos-partition-limits.sh
+       * tests/t4100-msdos-partition-limits.sh: Likewise.
+
+       tests: convert t4100-dvh-partition-limits.sh to use init.sh
+       * tests/t4100-dvh-partition-limits.sh: Convert.
+
+       tests: convert t4100-msdos-starting-sector.sh
+       * tests/t4100-msdos-starting-sector.sh: Use init.sh.
+
+       tests: convert t0220 to use init.sh
+       * tests/t0220-gpt-msftres.sh: Convert to use init.sh.
+
+       tests: extract t-lib.sh functions for use via init.sh
+       Currently there are three test frameworks in use:
+         - test-lib.sh: old, don't use this framework any more;
+             I found it too hard to use and debug.
+         - t-lib.sh: newer, I had converted most tests to use this
+         - init.sh: newest: successor of t-lib.sh, the master copy
+             of which now resides in gnulib. All new tests should use
+             this framework.
+       * tests/t-lib-helpers.sh: New file, extracted from t-lib.sh,
+       so that init.cfg can source these functions, too.
+       * tests/t-lib.sh: Source it.
+       * tests/init.cfg: Source it from here, too.
+       * tests/Makefile.am (EXTRA_DIST): Add t-lib-helpers.sh.
+
+       tests: remove unused function: skip_if_
+
+       tests: global subst: s/skip_test_/skip_/
+       git grep -l skip_test_|xargs perl -pi -e 's/skip_test_/skip_/'
+
+       maint: remove unused test function
+       * tests/t-lib.sh (require_built_): Remove unused function.
+       It also happened to use skip_, which we're about to make a function.
+
+       tests: avoid race condition in t3000-resize
+       Without the 1-second sleep, this root-only test would
+       fail about 50% of the time for me.
+       * tests/t3000-resize-fs.sh (device_sectors_required): Sleep
+       one more second after ${dev}1 appears, so that subsequent
+       commands are more predictable.
+       Split a long line.
+
+       tests: t2100-mkswap.sh: convert to init.sh
+       * tests/t2100-mkswap: Likewise.
+
+       tests: convert t1100 to use init.sh
+       * tests/t1100-busy-label.sh: Convert to use init.sh
+       * tests/init.cfg (require_erasable_): New function, mostly
+       copied from test-lib.sh.
+
+       tests: init.cfg: copy envvar setings from testlib.sh:
+       Unset TERM and CDPATH; sanitize LC_ALL, TZ, LANG, and set
+       PARTED_SUPPRESS_FILE_SYSTEM_MANIPULATION_WARNING=1.
+       * tests/t1101-busy-partition.sh: Expect no output, now that we set
+       PARTED_SUPPRESS_FILE_SYSTEM_MANIPULATION_WARNING=1.
+
+       maint: update init.sh and bootstrap from gnulib
+       * tests/init.sh: Update from gnulib.
+       * bootstrap: Likewise.
+
+       doc: also mention KiB, MiB, GiB and TiB suffixes
+       * doc/parted.texi (unit): Also mention KiB, MiB, GiB and TiB.
+
+2010-11-18  Colin Watson  <cjwatson@ubuntu.com>
+
+       libparted: ignore zero-length devices
+       * bootstrap.conf (gnulib_modules): Add xstrtoll.
+       * configure.ac: Create DYNAMIC_LOADING output variable.
+       * libparted/arch/linux.c (_device_get_length): Return the value of
+       PARTED_TEST_DEVICE_LENGTH if set in the environment, strictly for use by
+       the test suite.
+       (init_generic): If geometry probing fails because the device was
+       zero-length, return quietly rather than throwing an exception.  This has
+       been observed in the wild with cciss devices, and it's difficult for
+       partitioners to tell the difference between that and more serious
+       errors.
+       * libparted/tests/Makefile.am (TESTS): Add t2100-zerolen.sh.
+       (check_PROGRAMS): Add zerolen.
+       (zerolen_SOURCES): Add.
+       (TESTS_ENVIRONMENT): Add DYNAMIC_LOADING and ENABLE_DEVICE_MAPPER.
+       * libparted/tests/t2100-zerolen.sh: New file.
+       * libparted/tests/zerolen.c: New file.
+       * tests/test-lib.sh (wait_for_dev_to_appear_): New function, copied from
+       tests/t-local.sh.
+       * NEWS (Bug fixes): Mention it.
+
+2010-11-09  Jim Meyering  <meyering@redhat.com>
+
+       dos: fix a bug affecting very small devices (smaller than 1 cylinder)
+       This bug was introduced in commit c79d91ec, "dos: accommodate very
+       small devices (useful for testing)".
+       * libparted/labels/dos.c (_primary_constraint): The bug was to
+       skip setting start_geom for small devices.  That led to a used-
+       uninitialized bug in the subsequent ped_constraint_new call.
+       The fix is to relax the constraint to use a starting sector of "1",
+       if necessary.  Report and diagnosis by Jean-Christian de Rivaz in
+       http://thread.gmane.org/gmane.comp.gnu.parted.bugs/10178
+       * NEWS (Bug fixes): Mention it.
+
+2010-10-10  Jim Meyering  <meyering@redhat.com>
+
+       maint: don't use obsolete gnulib modules
+       * bootstrap.conf (gnulib_modules): Use calloc-gnu, malloc-gnu
+       and realloc-gnu modules, rather than calloc, malloc and realloc.
+       The shorter-named modules are now deprecated.
+
+       maint: describe policy on copyright year number ranges
+       * README: Mention coreutils' long-standing policy on use of M-N
+       ranges in copyright year lists.  Requested by Richard Stallman.
+
+       build: update gnulib submodule to latest, and update bootstrap
+       * bootstrap: update from gnulib
+
+2010-08-23  Petr Uzel  <petr.uzel@suse.cz>
+
+       build: suggest libuuid from util-linux-ng package
+       * configure.ac: libuuid was moved from e2fsprogs to
+       util-linux-ng-2.16.  Because distributions now often
+       build e2fsprogs without libuuid support, suggest installing
+       libuuid from util-linux-ng if it is missing, not from e2fsprogs.
+
+2010-08-20  Colin Watson  <cjwatson@ubuntu.com>
+
+       libparted: remove limits on loop labels
+       There's no reason to impose any particular limit on loop labels, since
+       they just represent a single large partition.  Sector counts over 2^32
+       are needed for large RAID arrays.  Change the limit to 2^64 since that's
+       the upper limit imposed by libparted and it saves us implementing the
+       limit functions separately.  This bug appears to have been introduced
+       by commit 2dbc645c.
+
+       * libparted/labels/pt-limit.gperf: Change limits on "loop" to 2^64.
+       * tests/t9021-maxima.sh: Update for the new loop limit.
+       * NEWS (Bug fixes): Mention it.
+
+2010-08-19  Jim Meyering  <meyering@redhat.com>
+
+       avoid non-srcdir "make check" failure
+       * tests/Makefile.am (EXTRA_DIST): Add init.cfg.
+       The failure was introduced by commit 6f7c0f12.
+
+       build and tests: update bootstrap and init.sh from gnulib
+       * tests/init.sh: Update from gnulib.
+       * bootstrap: Likewise.
+
+2010-08-18  Jim Meyering  <meyering@redhat.com>
+
+       build: update gnulib submodule to latest
+
+2010-07-20  Hans de Goede  <hdegoede@redhat.com>
+
+       linux: recognize scsi disks with a high major number (128-135)
+       * libparted/arch/linux.c (SCSI_BLK_MAJOR): Recognize high major number.
+
+2010-07-17  Jim Meyering  <meyering@redhat.com>
+
+       libparted: avoid regression when processing a whole-disk FAT partition
+       Without this change, we would improperly classify a whole-disk partition
+       containing a FAT file system as a DOS partition table with no partitions.
+       Introduced by commit d732a2b7 on 2008-05-28.
+       * libparted/labels/dos.c (maybe_FAT): New function.
+       (msdos_probe): Use it.
+       Reported by ChenMin in
+       http://thread.gmane.org/gmane.comp.gnu.parted.bugs/10115
+       * NEWS (Bug fixes): Mention it.
+       * tests/t3400-whole-disk-FAT-partition.sh: New file.  Test for the bug.
+       * tests/Makefile.am (TESTS): Add it.
+
+       tests: use init.cfg; required for init.sh-using tests
+       * tests/init.cfg: New file.
+       (require_512_byte_sector_size_): Slightly different function
+       than the one in test-lib.sh.
+
+       * tests/init.cfg: New file.
+
+       build: update gnulib submodule to latest
+
+       maint: remove trailing blank
+       * tests/t1101-busy-partition.sh: Remove trailing blank.
+
+2010-06-30  Otavio Salvador  <otavio@ossystems.com.br>
+
+       tests: update resize-fs to use wait_for_dev_to_appear_
+       * t3000-resize-fs.sh: rely on wait_for_dev_to_appear_ to wait for the
+       device to be crated.
+
+       tests: rely on require_scsi_debug_module_ to modprobe scsi_debug module
+       * t2310-dos-extended-2-sector-min-offset.sh: remove explicit modprobe
+       since it is done by require_scsi_debug_module_.
+       * t3200-type-change.sh: likewise.
+       * t9020-alignment.sh: likewise.
+       * t9030-align-check.sh: likewise.
+       * t9040-many-partitions.sh: likewise.
+
+       tests: add one: try to remove a busy partition
+       This test tries to reproduce the issue reported in Debian bug #582818[1].
+
+        1. http://bugs.debian.org/582818
+
+       Basically it does:
+
+        * create two primary partitions
+        * mount the second one
+        * remove the first (must work)
+        * try to remove the second (must fail)
+
+       * tests/t1101-busy-partition.sh: new file.
+       * tests/Makefile.am (TESTS): add the new test in check target.
+
+2010-06-27  Otavio Salvador  <otavio@ossystems.com.br>
+
+       tests: skip loop-clobber-infloop if mkswap cannot be found
+       * tests/t0400-loop-clobber-infloop.sh: Skip the test is case of mkswap
+       cannot be found.
+
+2010-06-26  Jim Meyering  <meyering@redhat.com>
+
+       build: update gnulib submodule to latest
+       * bootstrap: Update from gnulib.
+       * tests/init.sh: Likewise.
+
+2010-06-26  Colin Watson  <cjwatson@ubuntu.com>
+
+       sun: revert "implement disk flag operations"
+       This reverts the libparted/labels/sun.c part of
+       723ea23c5df68cbe67d1f518ef484f4c77f516fa.  Sun disk labels do
+       not appear to be able to handle non-cylinder alignment
+       (http://bugs.debian.org/579948).
+       * libparted/labels/sun.c: Revert.
+
+2010-06-26  Jim Meyering  <meyering@redhat.com>
+
+       tests: adjust sun-partition-creating test to conform
+       * tests/t4000-sun-raid-type.sh: Adjust partition size so the
+       end falls on a cylinder boundary.
+
+2010-05-28  Jim Meyering  <meyering@redhat.com>
+
+       maint: update README-release
+       * README-release: Update to match the template used for diffutils,
+       coreutils, etc.
+
+       maint: add gettext to list of bootstrapped-with tools in announcement
+       * cfg.mk (bootstrap-tools): Add gettext to the list.
+
+       post-release administrivia
+       * NEWS: Add header line for next release.
+       * .prev-version: Record previous version.
+       * cfg.mk (old_NEWS_hash): Auto-update.
+
+       version 2.3
+       * NEWS: Record release date.
+
+       doc: regenerate two files using gettext-0.18
+       * doc/pt_BR/partprobe.8.pt_BR.po: Regenerate with gettext-0.18.
+       * doc/C/po/partprobe.8.pot: Likewise.
+
+       build: require gettext-0.18 after all, because
+       since gnulib is pulling in m4/gettext.m4 from 0.18, and there's
+       a cross-check between that file and po/Makefile.in.in, it's easiest
+       simply to require 0.18 of those who run build tools.  Otherwise,
+       requiring 0.17, build-from-git would fail due to the mismatch:
+       0.17 in Makefile.in.in and 0.18 in m4/gettext.m4.
+       * configure.ac (AM_GNU_GETTEXT_VERSION): Require gettext 0.18.
+
+       build: update gnulib submodule to latest
+
+       maint: use the do-release-commit-and-tag module from gnulib
+       * bootstrap.conf (gnulib_modules): Add do-release-commit-and-tag.
+
+2010-05-28  Petr Uzel  <petr.uzel@suse.cz>
+
+       doc: fix a typo
+       * doc/parted.texi: s/onstraints/constraints/
+
+       parted: do_align_check returns always 1 in interactive mode
+       * parted/parted.c (do_align_check): Always return 1 in interactive mode.
+
+2010-05-28  Jim Meyering  <meyering@redhat.com>
+
+       build: really use gettext-0.17
+       * configure.ac: Correct previous change to use 0.17, not 0.18,
+       since gettext-0.18 is new enough that it makes building from git
+       a little too inconvenient.  Spotted by Petr Uzel.
+
+2010-05-26  Petr Uzel  <petr.uzel@suse.cz>
+
+       parted: make align-check work in interactive mode
+       * parted/parted.c (do_align_check): rework the function so that
+       it reports partition alignment in interactive mode as described in
+       documentation.
+
+       parted: initialize align_type to default value
+       * parted/parted.c (do_align_check): Initialize align_type to
+       default alignment; this prevents reading of uninitialized memory
+       later in command_line_get_align_type()
+
+       parted: plug memory leak
+       * parted/parted.c (_done_messages): Free unit_msg.
+
+2010-05-26  Jim Meyering  <meyering@redhat.com>
+
+       tests: avoid spurious failure of the root-only many-partitions test
+       * tests/t9040-many-partitions.sh: When creating a scsi_debug
+       device, honor the block size suggested by the PARTED_SECTOR_SIZE
+       environment variable, and thus required in expected output.
+
+       build: update gnulib submodule to latest
+
+       maint: remove useless definitions
+       * libparted/fs/xfs/platform_defs.h [__sparc__] (O_DIRECT):
+       Remove now-unneeded definition.
+       * parted/table.c (wchar_t): Remove definition.
+       * parted/strlist.c (wchar_t): Likewise.
+       * .x-sc_prohibit_always-defined_macros: New file.
+       Exempt two files from this syntax-check rule.
+       * Makefile.am (EXTRA_DIST): Add it here.
+
+       maint: update helper scripts
+       * tests/help-version: Update from coreutils.
+       * bootstrap: Update from gnulib.
+       * tests/init.sh: Likewise.
+
+       build: use gettext-0.17
+       * configure.ac: Use gettext-0.17.
+       * bootstrap.conf (gnulib_modules): Use gettext-h, not gettext.
+       since the latter drags in a depedency on gettext 0.18.
+
+2010-05-25  Jim Meyering  <meyering@redhat.com>
+
+       fix typo in comment
+
+2010-05-10  Jim Meyering  <meyering@redhat.com>
+
+       libparted: fail (don't just warn) upon failure to inform kernel of...
+       partition change(s).
+       * libparted/arch/linux.c (_disk_sync_part_table): Throw an error, not
+       merely a warning.  When this fails, it indicates that the kernel has
+       not been informed, and that must translate to an error, since doing
+       otherwise would violate the contract of ped_disk_commit_to_os.
+       Suggested by Hans De Goede.
+
+2010-05-06  Jim Meyering  <meyering@redhat.com>
+
+       tests: make the new many-partitions test fail if it takes "too long"
+       * tests/t9040-many-partitions.sh: Fail if creating 60 partitions
+       takes more than a minute.
+
+       maint: use latest bootstrap script from gnulib
+       * bootstrap: Sync from gnulib.
+
+2010-05-06  Hans de Goede  <hdegoede@redhat.com>
+
+       gpt: recognize microsoft recovery GUID
+       Microsoft advices creating recovery partitions with a GUID of
+       de94bba4-06d1-4d40-a16a-bfd50179d6ac, see:
+       http://technet.microsoft.com/en-us/library/dd744301%28WS.10%29.aspx
+
+       This patch makes parted recognize this guid (using the DIAG flag).
+       * libparted/labels/gpt.c (PARTITION_MSFT_RECOVERY, GPTPartitionData,
+       _parse_part_entry, gpt_partition_new, gpt_partition_set_system,
+       gpt_partition_set_flag, gpt_partition_get_flag,
+       gpt_partition_is_flag_available): Support microsoft recovery GUID.
+       * NEWS (New features): Add it.
+
+       msdos: recognize id 27 as a diagnostics (recovery) partition type
+       msdos partitiontable partition id 27 is recommended by microsoft for
+       use as id for recovery partitions, see:
+       http://technet.microsoft.com/en-us/library/dd744364%28WS.10%29.aspx
+       http://bugzilla.redhat.com/show_bug.cgi?id=534066
+
+       * libparted/labels/dos.c (PARTITION_MSFT_RECOVERY): Define.
+       (raw_part_parse): Recognize id 27
+       (msdos_partition_set_system): Recognize id 27
+
+2010-05-06  Jim Meyering  <meyering@redhat.com>
+
+       tests: add one: create 60 partitions on a scsi device
+       * tests/t9040-many-partitions.sh: New test.
+       * tests/Makefile.am (TESTS): Add it.
+       (TESTS_ENVIRONMENT): Export AWK to test scripts.
+       Inspired by the report of a many-partition test
+       taking far longer on RHEL5 than on RHEL4 in
+       http://bugzilla.redhat.com/589117
+
+2010-05-05  Jim Meyering  <meyering@redhat.com>
+
+       doc: update NEWS
+       * NEWS (Bug fixes): Mention the ext2 2TiB FS-creation bug.
+
+       build: update gnulib submodule to latest
+
+2010-05-05  Martin Poole  <mpoole@redhat.com>
+
+       ext2: don't overflow when creating a partition of size 2TiB or larger
+       Without this patch, mkpartfs would succeed in creating an ext2
+       partition, but the resulting partition would fail a mkfs.ext2 -f check.
+       * libparted/fs/ext2/parted_io.c (do_read): Avoid overflow 32-bit
+       sector count overflow for a partition of size 2TiB or larger.
+       (do_write): Likewise.
+       See http://bugzilla.redhat.com/584057#c16 a reproducer.
+
+2010-04-30  Hans de Goede  <hdegoede@redhat.com>
+
+       _device_unregister: check for unregistering the same device twice
+       _device_unregister() can get called 2 times for the same device if
+       a libparted user explictly removes the device from the cache using
+       ped_device_cache_remove(), it gets called and it then becomes the
+       user's responsibility to free the PedDevice by calling
+       ped_device_destroy(). ped_device_destroy() will then call
+       _device_unregister() a second time with the same device, so if the
+       device is not found in the list, do nothing.
+
+       * libparted/device.c(_device_unregister): Check for unregistering
+       the same device twice.
+       Reported by Jan Stodola in <http://bugzilla.redhat.com/568346>.
+
+2010-04-30  Jim Meyering  <meyering@redhat.com>
+
+       tests: avoid root-only/XFS limit test failure on 32-bit system
+       * tests/t4100-msdos-partition-limits.sh: Due to an inherent XFS
+       limitation on 32-bit systems, this test would fail a set-up
+       file creation step for simulated sector sizes of 4K and up.
+       Skip this test in those cases.
+       Upon dd failure, propagate its diagnostic to output, to make this
+       sort of problem easier to diagnose.
+       * tests/t4100-dvh-partition-limits.sh: Likewise.
+
+       libparted: avoid race in informing the kernel of partition table changes
+       When sync'ing a partition table change using the latest
+       code, sometimes we'd get an unwarranted failure like this:
+
+           Warning: Partition(s) 1 on /dev/sdd have been written, but we
+           have been unable to inform the kernel of the change, probably because
+           it/they are in use.  As a result, the old partition(s) will remain in
+           use.  You should reboot now before making further changes.
+
+       To be precise, when running the partition-resizing root-only test
+       in a loop:
+
+           for i in $(seq 240); do make -C tests check VERBOSE=yes \
+           TESTS=t3000-resize-fs.sh >& log.$i && printf . || echo $i $?; done
+
+       I would typically see about 50% of them fail on a Fedora 13 system.
+       It was obvious that this was due to a race condition when I found that
+       modifying that tests' parted...resize invocation to go via strace changed
+       the timing enough to make the test pass every time.
+
+       The fix is to retry the partition-removal step upon any EBUSY failure,
+       currently for up to 1 second (retrying up to 100 times, sleeping 10ms
+       after each failure).
+
+       * libparted/arch/linux.c (_disk_sync_part_table): Allocate "ok" using
+       calloc, now that its initial values matter.
+       Retry each removal upon EBUSY-failure.
+       * bootstrap.conf (gnulib_modules): Use gnulib's usleep module.
+
+       libparted: variable renaming, minor "goto" reorg
+       * libparted/arch/linux.c (_disk_sync_part_table): Rename local array:
+       s/rets/ok/, for readability.
+       Use only a single label, "cleanup:", rather than two: free_rets
+       and free_errnums.
+
+       libparted: remove now-worse-than-useless _kernel_reread_part_table
+       Now that we're using BLKPG properly, there's no point in using the
+       less-functional BLKRRPART ioctl to make the kernel reread the partition
+       table.
+       More importantly, this function would fail when any partition is in
+       use, in spite of our having carefully vetted them via BLKPG ioctls.
+       * libparted/arch/linux.c (_kernel_reread_part_table): Remove function.
+       (linux_disk_commit): Don't call it.
+
+2010-04-29  Jim Meyering  <meyering@redhat.com>
+
+       tests: correct a root-only test
+       * tests/t2310-dos-extended-2-sector-min-offset.sh: Don't hard-code
+       "/dev/sdd5" in expected output.
+
+       maint: avoid code duplication
+       * libparted/labels/dos.c (clear_flags): New function.
+       Factored (5 times) out of ...
+       (msdos_partition_set_flag): ...here.  Use the new function.
+
+2010-04-29  Hans de Goede  <hdegoede@redhat.com>
+
+       dos: add a partition flag for diagnostics / recovery partitions
+       msdos partition tables can contain diagnostics partitions (often used
+       nowadays as system recovery partitions).  For some users of libparted
+       (i.e., anaconda) it is useful to know if a dos partition is a regular
+       partition or a diagnostic partition.  For example, see
+       <http://bugzilla.redhat.com/534066>.
+
+       * include/parted/disk.h(_PedPartitionFlag): Add PED_PARTITION_DIAG
+       * libparted/disk.c(ped_partition_flag_get_name): Add PED_PARTITION_DIAG
+       * libparted/labels/dos.c: Add support for PED_PARTITION_DIAG flag
+       * doc/parted.texi (set): Document it.
+
+2010-04-28  Jim Meyering  <meyering@redhat.com>
+
+       tests: distribute new file, init.sh
+       * tests/Makefile.am (EXTRA_DIST): Add init.sh.
+
+       tests: add help-version test (from coreutils)
+       * tests/help-version: New file
+       * tests/Makefile.am (TESTS_ENVIRONMENT): Pass built_programs and VERSION
+       to test scripts -- both are required by help-version.
+       (TESTS): Add help-version.
+
+       ui: make --help tell where to report bugs
+       * parted/ui.c (help_msg): Tell where to report bugs.
+
+       tests: use gnulib's init.sh
+       * tests/init.sh: New file, from gnulib.
+
+       tests: rename generated init.sh to old-init.sh
+       * tests/Makefile.am (old-init.sh): Rename from init.sh.
+       * libparted/tests/Makefile.am: Likewise.
+       * tests/test-lib.sh: Rename sole use.
+       * .gitignore: Rename here, too.
+
+       build: update gnulib submodule to latest
+
+       tests: improved portability
+       * tests/test-lib.sh: Don't use test's -a option.
+
+       maint: remove empty lines at end of file
+       This lets one more "syntax-check" test pass.
+       Run this command:
+         git ls-files|grep -v gnulib|xargs perl -pi -0777 -e 's/\n\n+$/\n/'
+
+       maint: pass newer "make syntax-check" tests from gnulib
+       * cfg.mk (local-checks-to-skip): Add these, to pass "make syntax-check"
+       sc_error_message_uppercase, sc_error_message_period.
+       * libparted/fs/ext2/ext2.h: Remove "#if HAVE_INTTYPES_H" guard.
+
+       tests: test all boolean flags
+       * tests/t3310-flags.sh: New test, suggested by Hans De Goede.
+       * tests/Makefile.am (TESTS): Add it.
+
+2010-04-27  Jim Meyering  <meyering@redhat.com>
+
+       doc: use a valid http:.../AUTHORS URL
+       * debug/clearfat/clearfat.c (AUTHORS): Point to the git repo.
+       * parted/parted.c (AUTHORS): Likewise.
+       * partprobe/partprobe.c (AUTHORS): Likewise.
+
+       * parted/parted.c: Include "version.h".
+       (_version): Use Version, not VERSION.
+
+       ui: get version number from a separately-compiled file
+       * parted/Makefile.am (version.c, version.h): Generate.
+       (parted_LDADD): Add libver.a.
+       (noinst_LIBRARIES, nodist_libver_a_SOURCES): Define.
+       (BUILT_SOURCES): Initialize and append.
+       (MAINTAINERCLEANFILES): Update.
+       * parted/parted.c: Include "version.h".
+       (_version): Use the new global variable, Version, not VERSION.
+
+2010-04-23  Jim Meyering  <meyering@redhat.com>
+
+       libparted: _disk_sync_part_table: allow interactive ignore
+       * libparted/arch/linux.c (_disk_sync_part_table): Change diagnostic
+       so that it makes it clear what failed.  Let an interactive "ignore"
+       cause the function to succeed.
+
+       tests: remove partition explicitly before mklabel, to avoid new failure
+       * tests/t3000-resize-fs.sh: Before, mklabel was sufficient to clear
+       the partition table in preparation for the next iteration in this test.
+       However, with recent BLKRRPART/BLKPG changes that "mklabel" would evoke
+       a warning.  Remove the sole partition to avoid that.
+
+       libparted: linux_disk_commit: don't ignore _disk_sync_part_table failure
+       * libparted/arch/linux.c (linux_disk_commit):
+       When calling _disk_sync_part_table, always return its result.
+
+       libparted: _disk_sync_part_table: always return 0 upon failure
+       * libparted/arch/linux.c (_disk_sync_part_table):
+       Return 0 (not 1) upon failure.
+
+2010-04-23  Colin Watson  <cjwatson@ubuntu.com>
+
+       dos: always allow at least two sectors for extended boot record
+       Unless specifically told otherwise, the Linux kernel considers extended
+       boot records to be two sectors long, in order to "leave room for LILO".
+       When using anything other than cylinder alignment, libparted was only
+       allowing one sector in the minimum extended partition geometry, which in
+       some situations (e.g. following Phillip Susi's patch to reintroduce
+       BLKPG) could confuse the kernel into thinking that the EBR and the first
+       logical partition overlapped.
+
+       * libparted/labels/dos.c (_get_min_extended_part_geom): Allow at least
+       two sectors for the extended boot record.
+
+2010-04-23  Jim Meyering  <meyering@redhat.com>
+
+       tests: test for new 2-sector minimum ext-logical-separation
+       * tests/t2310-dos-extended-2-sector-min-offset.sh: New file.
+       * tests/Makefile.am (TESTS): Add it.
+
+       dos: accommodate very small devices (useful for testing)
+       * libparted/labels/dos.c (_primary_constraint): Don't pass a negative
+       "device_length" to ped_geometry_init when the underlying device
+       has fewer sectors than a "cylinder".
+
+       libparted: allocate storage for diagnostic only when needed
+       * libparted/arch/linux.c (_disk_sync_part_table): Rename local:
+       s/parts/bad_part_list/
+       Allocate space for it only if needed.
+       Use malloc rather than ped_malloc.
+       Move decl of FD down to first use.
+
+       libparted: adjust code formatting
+
+       libparted: reword a diagnostic
+
+2010-04-23  Phillip Susi  <psusi@cfl.rr.com>
+
+       libparted: improve BLKPG error checking
+       This patch cleans up the BLKPG code that the previous patch put back
+       to perform proper error checking and in the event that some partitions
+       are in use, they can not be modified in the running kernel using BLKPG.
+       Warn the user that this is the case and advise them to reboot, just like
+       we do when BLKRRPART fails for the same reason, unless the partition in
+       question is unchanged.
+
+       libparted: reenable use of BLKPG ioctls
+       This patch effectively reverses commit 1d8f9bec which removed the code
+       using the new BLKPG ioctls instead of the old BLKRRPART ioctl to update
+       the in-kernel partition table.  The reason for this is because BLKRRPART
+       fails if any partition on the disk is in use, but the BLKPG ioctls allow
+       you to manipulate the other partitions on the disk without requiring a
+       reboot.  Also BLKRRPART requires that the kernel understand the
+       partition table on the disk, which may not always be the case.
+
+2010-04-23  Hans de Goede  <hdegoede@redhat.com>
+
+       linux: detect dm_task_run failure
+       We were checking for a return value of < 0 for dm_task_run errors, but
+       dm_task_run returns 0 on error (and 1 on success). Thanks to Joe Jin
+       for spotting this, see Red Hat bug 582907.
+
+       * libparted/arch/linux.c(_dm_remove_map_name, _dm_is_part,
+       _dm_remove_parts, _dm_add_partition): dm_task_run returns 0 on error.
+
+2010-04-21  Jim Meyering  <meyering@redhat.com>
+
+       tests: test for palo and prep interaction
+       * tests/t3300-palo-prep.sh: New file.
+       * tests/Makefile.am (TESTS): Add it.
+
+2010-04-21  Hans de Goede  <hdegoede@redhat.com>
+
+       dos: fix prep / palo flag handling
+       Setting the prep flag was not clearing the palo flag and vice versa
+       * libparted/labels/dos.c (msdos_partition_set_flag): Fix prep / palo
+       flag handling.
+
+2010-04-21  Jim Meyering  <meyering@redhat.com>
+
+       tests: remove unnecessary (duplicate) local var assignment
+       * tests/t9021-maxima.sh: Remove duplicate ss=$sector_size_.
+
+2010-04-21  Colin Watson  <cjwatson@ubuntu.com>
+
+       maint: make PED_ASSERT and PED_DEBUG if-safe
+       Constructions such as:
+
+         if (foo)
+           PED_DEBUG (0, "foo");
+         else
+           PED_DEBUG (0, "not foo");
+
+       did not compile reliably, depending on the configuration.  Make this
+       work.
+
+       * include/parted/debug.h [DEBUG && __GNUC__ && !__JSFTRACE__]
+       (PED_DEBUG): Remove trailing semicolon.
+       [!DEBUG] (PED_ASSERT): Use do-while rather than while.
+       [!DEBUG] (PED_DEBUG): Likewise.
+
+2010-04-17  Jim Meyering  <meyering@redhat.com>
+
+       doc: add HACKING
+       * HACKING: New file.  Copied from coreutils, with s/coreutils/parted/
+       and a few minor edits.
+
+2010-04-16  Petr Uzel  <petr.uzel@suse.cz>
+
+       .gitignore: ignore index files generated by ctags and cscope
+
+       libparted: add support for Linux software RAID arrays (mdraid)
+       Recognize MD devices, so "parted -s /dev/md0 print" now prints
+       "Model: Linux Software RAID Array (md)" instead of
+       "Model: Unknown (unknown)".
+
+       * include/parted/device.h (PedDeviceType): Add PED_DEVICE_MD.
+       * libparted/arch/linux.c (MD_MAJOR): New define.
+       * libparted/arch/linux.c (_device_probe_type): Recognize MD array.
+       * libparted/arch/linux.c (linux_new): Handle MD array.
+       * parted/parted.c(do_print): Add "md" to the list of available
+       transports.
+       * NEWS (New features): Mention it.
+
+2010-04-13  Jim Meyering  <meyering@redhat.com>
+
+       tests: propagate recent improvements to copied-from code
+       * tests/t1700-ext-probe.sh: Fix typo s/2>1/2>&1/ and use
+       a tighter regexp also in the preceding loop.
+       Noted by Colin Watson.
+
+2010-04-13  Colin Watson  <cjwatson@ubuntu.com>
+
+       maint: constify ped_device_get_constraint interface
+       * include/parted/device.h (ped_device_get_constraint): Constify "dev"
+       parameter.
+       * libparted/device.c (ped_device_get_constraint): Likewise.
+
+       libparted: uninit_bg and flex_bg features should indicate ext4
+       According to tune2fs(8), the uninit_bg and flex_bg features are only
+       supported by ext4, so libparted should treat their presence as
+       indicating ext4.  Reported by C de-Avillez in
+       https://bugs.launchpad.net/ubuntu/+source/parted/+bug/561599.
+
+       * libparted/fs/ext2/ext2_fs.h: Define EXT4_FEATURE_RO_COMPAT_GDT_CSUM
+       and EXT4_FEATURE_INCOMPAT_FLEX_BG.
+       * libparted/fs/ext2/interface.c (_ext2_generic_probe): Test for
+       EXT4_FEATURE_RO_COMPAT_GDT_CSUM and EXT4_FEATURE_INCOMPAT_FLEX_BG when
+       probing for ext4.
+       * tests/t1700-ext-probe.sh: Test for this.
+       * NEWS (Bug fixes): Mention this.
+
+2010-04-09  Colin Watson  <cjwatson@ubuntu.com>
+
+       libparted: fix diagnostics about exceeding partition limits
+       * libparted/labels/pt-tools.c (ptt_partition_max_start_len): Use the
+       correct value in the diagnostics that print the upper bound on
+       partition size and largest starting sector number.  Before, each
+       would use UINT32_MAX.  Now each prints the partition-table-specific
+       limit.
+
+2010-04-06  Hans de Goede  <hdegoede@redhat.com>
+
+       libparted: add test for /dev/mapper symlink issue
+       Sometimes, libparted operates on device mapper files with a path of
+       /dev/mapper/foo.  With newer lvm versions /dev/mapper/foo is a symlink
+       to /dev/dm-#. However some storage administration programs (anaconda,
+       for example) may do the following:
+       1) Create a ped_device for /dev/mapper/foo
+       2) ped_get_device resolves the symlink to /dev/dm-#, and the path
+          in the PedDevice struct points to /dev/dm-#
+       3) The program does some things to lvm, causing the symlink to
+          point to a different /dev/dm-# node
+       4) The program does something with the PedDevice, which results
+          in an operation on the wrong device
+
+       Newer libparted versions do not suffer from this problem, as they
+       do not canonicalize device names under /dev/mapper. This test checks
+       for this bug.
+
+       * libparted/tests/symlink.c: New test which tests for this issue.
+       * libparted/tests/t3000-symlink.sh: New file.
+       * libparted/tests/Makefile.am: Include the new files.  Run the new test.
+
+       libparted: don't canonicalize /dev/mapper paths
+       Besides fixing the issue displayed by libparted/tests/symlink.c,
+       this has the added advantage that the output of parted p on one of these
+       devices now says:
+       "Disk /dev/mapper/BigVol2-lv_iscsi_disk2: 34.4GB"
+
+       Which is a lot more user friendly then the output before this patch:
+       "Disk /dev/dm-6: 34.4GB"
+
+       * libparted/device.c (ped_device_get): Don't canonicalize names
+       that start with "/dev/mapper/".
+       * NEWS (Bug fixes): Mention it.
+       Thanks to Ales Kozumplik for the analysis.
+       Details in <http://bugzilla.redhat.com/577824>.
+
+2010-03-30  Colin Watson  <cjwatson@ubuntu.com>
+
+       doc: add @dircategory to Info documentation
+       The Texinfo documentation says that Info files should use @dircategory,
+       and suggests consulting the Free Software Directory to select a category
+       name.  The directory places Parted under "System administration".
+
+       * doc/parted.texi: Add `@dircategory System administration'.
+
+2010-03-30  Jim Meyering  <meyering@redhat.com>
+
+       build: update gnulib submodule to latest
+
+       tests: disable new texinfo-acronym syntax-check from gnulib
+       * cfg.mk (local-checks-to-skip): Add new sc_texinfo_acronym, to skip it.
+
+       maint: avoid using test's -o and -a operators: they are not portable
+       * tests/lvm-utils.sh: Don't use test ... -o.
+       * configure.ac: Don't use test ... -a.
+
+       maint: remove unneeded #include
+       * libparted/disk.c: Don't include "intprops.h".  It was unused.
+
+       build: prepare for gnulib's updated lib-ignore
+       * parted/Makefile.am (parted_LDFLAGS): Now that we're using
+       gnulib's newer lib-ignore, add $(IGNORE_UNUSED_LIBRARIES_CFLAGS).
+
+2010-03-30  Colin Watson  <cjwatson@ubuntu.com>
+
+       tests: distribute a few more tests and documentation files
+       * debug/test/Makefile.am (noinst_SCRIPTS): Add test_fs_hfs and
+       test_fs_hfsplus.
+       * libparted/fs/hfs/Makefile.am (EXTRA_DIST): Add DOC and HISTORY.
+       * tests/Makefile.am (TESTS): Add t3200-type-change.sh.
+
+2010-03-16  Jim Meyering  <meyering@redhat.com>
+
+       build: avoid warning from bootstrap about obsolete strdup module
+       * bootstrap.conf (gnulib_modules): Use the strdup-posix module,
+       rather than the "strdup" one.
+
+2010-03-11  Jim Meyering  <meyering@redhat.com>
+
+       tests: reenable a "bsd" partition table test
+       * libparted/tests/common.c (_implemented_disk_label): Remove "bsd" from
+       the list of not-implemented-yet partition table types, since it appears
+       to pass the tests.
+
+       libparted: remove "HIGHLY EXPERIMENTAL" warning for >512B-sector devices
+       * libparted/arch/linux.c (_device_set_sector_size): Remove the
+       "HIGHLY EXPERIMENTAL" warning, now that support for >512-byte sectors
+       seems to be usable.  Suggested by Colin Watson.
+       * NEWS (Changes in behavior): Note this
+
+2010-03-02  David Cantrell  <dcantrell@redhat.com>
+
+       libparted: msdos_partition_is_flag_available: fix hidden on extended
+       Since the hidden flag cannot be set on extended partitions,
+       msdos_partition_is_flag_available() should return 0 for hidden on
+       extended partitions. Also change msdos_partition_get_flag()
+       to always return 0 for hidden on extended partitions.
+       * libparted/labels/dos.c (msdos_partition_is_flag_available):
+       Return 0 for hidden on extended partitions.
+       * libparted/labels/dos.c (msdos_partition_get_flag):
+       Always return 0 for hidden on extended partitions.
+       * NEWS (Bug fixes): Mention it.
+       Reported by Flóki Pálsson in http://bugzilla.redhat.com/567118
+       Patch forwarded by Hans De Goede.
+
+2010-03-02  Petr Uzel  <petr.uzel@suse.cz>
+
+       tests: skip tests that require mkfs.hfs, when it is unavailable
+       t3000-resize-fs.sh would fails if mkfs.hfs is not installed.
+       * tests/t-lib.sh (require_hfs_): New function.
+       * tests/t3000-resize-fs.sh: Use require_hfs_.
+
+2010-03-01  Jim Meyering  <meyering@redhat.com>
+
+       tests: convert more tests to the newer infrastructure
+       * tests/t1700-ext-probe.sh: Convert from test-lib.sh to t-lib.sh.
+       * tests/t2200-dos-label-recog.sh: Likewise.
+       * tests/t2300-dos-label-extended-bootcode.sh: Likewise.
+
+2010-02-26  Colin Watson  <cjwatson@ubuntu.com>
+
+       libparted: don't export linux_get_*_alignment functions
+       These functions are only used in libparted/arch/linux.c or via
+       linux_dev_ops, so do not export them.
+
+       * libparted/arch/linux.c (linux_get_minimum_alignment): Declare static.
+       (linux_get_optimum_alignment): Likewise.
+
+2010-02-26  Petr Uzel  <petr.uzel@suse.cz>
+
+       Add support for ATA over Ethernet (AoE) devices
+       Recognize AoE Devices, so "parted -s /dev/etherd/eX.Y" now
+       prints "Model: ATA over Ethernet Device (aoe)" instead of
+       "Model: Unknown (unknown)".
+
+       * include/parted/device.h(PedDeviceType): Add PED_DEVICE_AOE.
+       * libparted/arch/linux.c(AOE_MAJOR): New define.
+       * libparted/arch/linux.c(_device_probe_type): Recognize AoE devices.
+       * libparted/arch/linux.c(linux_new): Handle AoE devices.
+       * parted/parted.c(do_print): Add "aoe" to the list of available
+       transports.
+       * NEWS (New features): Mention it.
+
+2010-02-26  Jim Meyering  <meyering@redhat.com>
+
+       post-release administrivia
+       * NEWS: Add header line for next release.
+       * .prev-version: Record previous version.
+       * cfg.mk (old_NEWS_hash): Auto-update.
+
+       version 2.2
+       * NEWS: Record release date.
+
+2010-02-26  Curtis  Gedak  <gedakc@gmail.com>
+
+       dos: set HFS/HFS+ partition identifier to proper value
+       The correct value for an "hfs" partition identifier is 0xAF.
+       Previously the partition identifier was incorrectly set to 0x83.
+       * libparted/labels/dos.c (PARTITION_HFS): Define.
+       (msdos_partition_set_system): Use it.
+
+2010-02-26  Jim Meyering  <meyering@redhat.com>
+
+       tests: exercise today's HFS partition type fix
+       * tests/t2400-dos-hfs-partition-type.sh: New script.
+       * tests/Makefile.am: Add it.
+       * NEWS (Bug fixes): Mention it.
+
+       tests: gpt-pmbr: don't ignore stdout comparison result
+       * tests/t0202-gpt-pmbr.sh: Fail if we get unexpected output.
+
+2010-02-25  Jim Meyering  <meyering@redhat.com>
+
+       build: update gnulib submodule to latest
+       * bootstrap: Copy from gnulib.
+
+       tests: convert t4001 to use the new framework
+       * tests/t4001-sun-vtoc.sh: Convert.
+       * tests/Makefile.am (TESTS): Add it to the list.
+
+2010-02-25  Karel Zak  <kzak@redhat.com>
+
+       sun: initialize basic partition table fields
+       libparted completely ignores basic fields (version, nparts and sanity)
+       in the sun VTOC, then for example fdisk prints warnings for such
+       partition table:
+
+               # fdisk -lu /dev/sdb
+               Detected sun disklabel with wrong version [0x00000000].
+               Detected sun disklabel with wrong sanity [0x00000000].
+               Detected sun disklabel with wrong num_partitions [0].
+
+       It seems that the current libparted sun support follows old Linux
+       kernel code, but the code was changed 3 years ago (see kernel commit
+       3961bae0ac030a70ae2e0578270203889021f1a1).
+
+       Note that the number of partitions (nparts) is optional for Linux
+       kernel, but fdisk(8) strictly requires SUN_DISK_MAXPARTITIONS (=8)
+       there. This patch sets nparts to SUN_DISK_MAXPARTITIONS rather then
+       use a real number of partitions.
+
+       * NEWS (Bug fixes): Mention it.
+       * libparted/labels/sun.c: Update from kernel.
+       * tests/t4001-sun-vtoc.sh: New file.  Test for this.
+
+2010-02-25  Jim Meyering  <meyering@redhat.com>
+
+       tests: wrap the dup-clobber test in a script, ...
+       so that its artifacts are created in the usual temporary subdir
+       * tests/Makefile.am (TESTS): Remove dup-clobber, and instead...
+       Add t0500-dup-clobber.sh.
+       * tests/t0500-dup-clobber.sh: New script.
+
+2010-02-23  Jim Meyering  <meyering@redhat.com>
+
+       build: update gnulib submodule to latest
+
+       tests: test for the ped_disk_duplicate needs_clobber fix
+       * tests/dup-clobber.c: New file.
+       Exercise the fix in commit jabb411b, "libparted: copy the
+       needs_clobber value in ped_disk_duplicate()".
+       * tests/Makefile.am (TESTS, check_PROGRAMS): Add dup-clobber.
+
+2010-02-22  Hans de Goede  <hdegoede@redhat.com>
+
+       libparted: copy the needs_clobber value in ped_disk_duplicate()
+       Most duplicate disk_ops use ped_disk_new_fresh, which sets needs_clobber
+       to 1. This would lead to clobbering the disk when committing a duplicate
+       disk even when the original disk was not made with ped_disk_new_fresh.
+       * libparted/disk.c (ped_disk_duplicate): Copy the needs_clobber member.
+       * NEWS (Bug fixes): Describe it.
+
+2010-02-22  Curtis Gedak  <gedakc@gmail.com>
+
+       linux: add wait time and retries to kernel partition reread
+       Occasionally when using parted with newer GNU/Linux kernels (2.6.31)
+       and udev (145), the kernel would fail to reread the partition table.
+       This could lead to problems with subsequent actions such as formatting
+       the partition.
+
+       Basically this patch increases the retry_count, and adds one sleep(1)
+       function call prior to the the last few ioctl() calls.
+
+       This patch might not be a perfect solution to this problem of "failure
+       to inform kernel of partition changes", but it does significantly
+       reduce the likelihood of encountering the problem.
+
+       Details on the testing results and procedures used can be found at
+       the following link:
+       https://bugzilla.gnome.org/show_bug.cgi?id=604298#c9
+
+       * libparted/arch/linux.c (_kernel_reread_part_table): Sleep for a
+       full second if retry_count makes it down to "3".  Start it at 9
+       rather than at 5.
+       * NEWS (Bug fixes):
+
+2010-02-20  Jim Meyering  <meyering@redhat.com>
+
+       maint: remove now-unused <partition_table_type>_clobber functions
+       All of these functions were rendered unused by commit 376b143045,
+       "ped_disk_clobber: change semantics" on 2009-11-13.
+       Also, Update each <...>_disk_ops "clobber:" member to be NULL.
+       * libparted/labels/aix.c (aix_clobber): Remove function.
+       * libparted/labels/bsd.c (bsd_clobber): Likewise.
+       * libparted/labels/dasd.c (dasd_clobber): Likewise.
+       * libparted/labels/dos.c (msdos_clobber): Likewise.
+       * libparted/labels/dvh.c (dvh_clobber): Likewise.
+       * libparted/labels/gpt.c (gpt_clobber): Likewise.
+       * libparted/labels/loop.c (loop_clobber): Likewise.
+       * libparted/labels/mac.c (_clobber_part_map, mac_clobber): Likewise.
+       * libparted/labels/pc98.c (pc98_clobber): Likewise.
+       * libparted/labels/rdb.c (amiga_clobber): Likewise.
+       * libparted/labels/sun.c (sun_clobber): Likewise.
+       Suggested by Hans De Goede.
+
+2010-02-13  Jim Meyering  <meyering@redhat.com>
+
+       doc: update release procedure to account for soname version number
+       * README-release: Add a step "0", and update step 3 to match reality.
+
+       libparted: set the shared library version number manually
+       * libparted/Makefile.am (CURRENT, REVISION, AGE): Define here.
+       (libparted_la_LDFLAGS): Use them, rather than using the
+       automatically-defined LT_-prefixed variables.
+       Stop using the "-release" option.
+       Hans De Goede pointed out that the build process was automatically
+       changing the shared library name.
+
+2010-02-12  Jim Meyering  <meyering@redhat.com>
+
+       gpt: clean-up wrt write_back (no semantic change)
+       * libparted/labels/gpt.c (gpt_read): Initialize write_back to 0
+       once again, and set it to 1 on the sole path that requires that.
+
+2010-02-10  Jim Meyering  <meyering@redhat.com>
+
+       gpt: "read-only" operation could clobber the pMBR in another way
+       A read-only operation like "parted $dev print" would overwrite $dev's
+       pMBR when exactly one of the primary and backup tables was corrupt.
+       * libparted/labels/gpt.c (gpt_read): Clear "write_back" in those
+       two cases.  Hans De Goede spotted this bug by inspection.
+       * NEWS (Bug fixes): Mention it.
+       * tests/t0206-gpt-print-with-corrupt-primary-clobbers-pmbr.sh: New test.
+       * tests/Makefile.am (TESTS): Add
+       t0206-gpt-print-with-corrupt-primary-clobbers-pmbr.sh.
+
+       tests: factor utility functions into "library"
+       ...since we're about to use them from a second test.
+       * tests/t-local.sh (peek_, poke_, gpt1_pte_name_offset_): New functions.
+       (gpt_corrupt_primary_table_, gpt_restore_primary_table_): New functions.
+       * tests/t0280-gpt-corrupt.sh: Remove local copies of those functions.
+       Use the new ones.
+
+2010-02-10  Hans de Goede  <hdegoede@redhat.com>
+
+       dasd: don't dereference a NULL pointer in dasd_read
+       * libparted/labels/dasd.c (dasd_read): Avoid NULL pointer dereference.
+
+       parted: change default alignment to "optimal"
+       * NEWS (Changes in behavior): Mention it.
+       * parted/parted.c: Change --align default value to optimal.
+       * tests/t2100-mkswap.sh: Adjust for alignment changes where necessary.
+       * tests/t0220-gpt-msftres.sh: Likewise.
+       * tests/t0280-gpt-corrupt.sh: Likewise.
+       * tests/t2200-dos-label-recog.sh: Likewise.
+       * tests/t2300-dos-label-extended-bootcode.sh: Likewise.
+       * tests/t3000-resize-fs.sh: Likewise.
+       * tests/t4100-msdos-partition-limits.sh: Likewise.
+       * tests/t4100-msdos-starting-sector.sh: Likewise.
+       * tests/t5000-tags.sh: Likewise.
+       * tests/t8000-loop.sh: Likewise.
+       * tests/t9021-maxima.sh: Likewise.
+
+       parted: change warnings when initial constrained mkpart fails
+       In do_mkpart we first try to create a partition using a constraint
+       derived from the user input intersected with the devices alignment
+       needs. And if that fails we try again without any constraint.
+
+       However the warning given when this happens only takes into account
+       the user not getting what he asked for, while the alignment might be
+       a problem too (or even the only problem). So this patch adds a check
+       to see if the user really did not get what he asked before giving that
+       warning, and adds a new check + warning to see if the created partition
+       is properly aligned.
+       *parted/parted.c (do_mkpart,do_mkpartfs): change warnings when initial
+       constrained mkpart fails.
+
+       parted: honor --align option also in mkpartfs, resize and print cmds
+       * parted/parted.c (do_mkpartfs,do_print,do_resize): Honor --align.
+
+       linux: handle incomplete topology information
+       The topology information returned by libblkid is not always complete
+       (as the kernel does not always have complete information).
+       This patch makes the linux_get_*_alignment() alignment functions handle
+       this. The algorithm used for linux_get_optimum_alignment is:
+       1) Always use the reported aligment offset as offset
+       2a)If optimal io size is present in the topology info use that as grain
+       2b)If optimal io size is not present in topology info and aligment
+          offset is 0 and minimum io size is a power of 2, use the device.c
+          default optimal alignment (grain 1MiB).
+       2c) If neither 2a and 2b, use the minimum io size, or if that is not
+          defined, use the physical sector size as grain (iow the minimum
+          alignment).
+       The algorithm used for linux_get_minimum_alignment is:
+       1) Always use the reported aligment offset as offset
+       2) Use the minimum io size, or if that is not defined the physical
+          sector size as grain.
+       * libparted/arch/linux.c (linux_get_*_alignment): Handle incomplete
+       topology information.
+
+       libparted: Give device_get_*_alignment sane defaults
+       When the topology info is incomplete or non existent, return something
+       more sensible than NULL (which ends up being interpreted as
+       PedAlignmentAny in most cases). The default minimum alignment aligns to
+       physical sector size, the default optimal alignment is 1 MiB, which is
+       what vista and windows 7 do.
+       * libparted/device.c (device_get_*_alignment): Add default aligments.
+       * NEWS (New features): Mention it.
+
+       linux: correct phys_sector_size setting
+       1) Use the logical sector size as physical sector size instead of 512
+          when not compiled with libblkid support, this fixes problems
+          with logical sector size > physical sector size.
+       2) blkid_topology_get_physical_sector_size() returns 0 when it fails
+          to determine the physical sector size, handle this.
+       * libparted/arch/linux.c (_device_set_sector_size): Correct
+       phys_sector_size setting.
+       * NEWS (Bug fixes): Mention it.
+
+2010-02-09  Jim Meyering  <meyering@redhat.com>
+
+       build: update gnulib submodule to latest
+
+       doc: NEWS: mention the install-related bug fix
+       * NEWS (Bug fixes): Mention the fix.
+
+       gpt: read-only operation could clobber MBR part of hybrid GPT+MBR table
+       * libparted/labels/gpt.c (gpt_read): Fix a bug introduced by me in
+       commit 7f753b1b, "gpt: rewrite GPT header-reading code".
+       Set write_back=0 in one more code path.
+       * tests/Makefile.am (TESTS): Add t0205-gpt-list-clobbers-pmbr.sh.
+       * tests/t0205-gpt-list-clobbers-pmbr.sh: New test.
+       * NEWS (Bug fixes): Mention this.
+       Reported by aix27249 in
+       http://parted.alioth.debian.org/cgi-bin/trac.cgi/ticket/250
+
+2010-02-08  Peter Breitenlohner  <peb@mppmu.mpg.de>
+
+       do not install the test programs disk and label
+
+2010-02-04  Otavio Salvador  <otavio@ossystems.com.br>
+
+       Fix minor spelling errors
+       This fixes minor spelling errors in the source code. Basically:
+
+        s/informations/information/g
+        s/prefered/preferred/g
+
+2010-02-04  Jim Meyering  <meyering@redhat.com>
+
+       tests: avoid another spurious test failure with newer xfsprogs
+       * tests/t4100-msdos-partition-limits.sh: Likewise.
+
+       tests: avoid spurious test failure with newer xfsprogs
+       * tests/t4100-dvh-partition-limits.sh: Use mkfs.xfs' -f (force)
+       option.  It is required at least for xfsprogs-3.1.0.
+
+2010-01-31  Hans de Goede  <hdegoede@redhat.com>
+
+       build: fix check-other-sector_sizes
+       "make check-other-sector_sizes" was running tests of 512-byte sectors
+       four times, rather than simulating larger sector-sizes for the latter
+       three iterations.
+       * Makefile.am (ss-1024 ss-2048 ss-4096): Fix the typo (missing "subst").
+
+2010-01-31  Jim Meyering  <meyering@redhat.com>
+
+       tests: adjust t9021-maxima not to fail with 2048-byte sectors
+       * tests/t9021-maxima.sh: At 10,000*512 bytes, the backing file
+       was too small to support a test simulating a sector size of 2048 bytes.
+       Use 10,000*$sector_size bytes instead.
+
+       build: avoid -Wshadow warnings
+       * parted/parted.c (do_print): Avoid two shadowing warnings.
+
+2010-01-29  Hans de Goede  <hdegoede@redhat.com>
+
+       linux: remove PED_DEVICE_FILE check from _device_set_sector_size
+       _device_set_sector_size is never called for devices with a type of
+       PED_DEVICE_FILE.
+       * libparted/arch/linux.c (_device_set_sector_size): Remove
+       PED_DEVICE_FILE check.
+
+       linux: remove unused blkpg.h header file
+       * libparted/arch/linux.c: Don't include blkpg.h.
+       * libparted/arch/blkpg.h: Deleted.
+       * libparted/Makefile.am (libparted_la_SOURCES): Remove arch/blkpg.h.
+
+       linux: use blkid_topology_get_physical_sector_size
+       The official 2.17 release of util-linux-ng, has added a function to
+       get the physical sector size.  Use that instead of getting the
+       minimum io size.
+       * libparted/arch/linux.c (_device_set_sector_size): Use
+       blkid_topology_get_physical_sector_size.
+
+2010-01-18  Jim Meyering  <meyering@redhat.com>
+
+       maint: remove unreachable code
+       * parted/parted.c (do_print): Remove unreachable ped_disk_destroy call.
+
+2010-01-15  Jim Meyering  <meyering@redhat.com>
+
+       build: update gnulib submodule to latest
+
+       dos: don't leak a constraint upon partition-add failure
+       * libparted/labels/dos.c (read_table): Free constraint upon failure.
+
+       gpt: don't leak a constraint upon partition-add failure
+       * libparted/labels/gpt.c (gpt_read): Free constraint upon failure.
+
+       gpt: do not leak a GPT header on an error path
+       * libparted/labels/gpt.c (gpt_write): Avoid a leak by freeing the
+       header buffer after pth_get_raw call where it's used, but before
+       checking whether that pth_get_raw call succeeded.
+       Avoid another leak in identical just 10 lines down.
+       Add "FIXME: caution..." comments to warn about the duplication.
+
+       libparted: remove unreachable code
+       * libparted/labels/gpt.c (gpt_write): Remove dead code.
+       * libparted/labels/bsd.c (bsd_partition_new): Likewise.
+       * libparted/disk.c (_ped_disk_alloc): Likewise.
+
+       libparted: avoid double-free on an OOM failure path
+       * libparted/disk.c (ped_disk_check): Don't double-free "fs_size".
+
+2010-01-08  Jim Meyering  <meyering@redhat.com>
+
+       build: update gnulib submodule to latest
+
+       maint: update old_NEWS_hash
+       * cfg.mk (old_NEWS_hash): Update for GFDL license update.
+
+       maint: update all GFDL licenses to version 1.3
+       * NEWS: Use 1.3, not 1.2.
+       * doc/API: Use 1.3, not 1.1.
+       * doc/FAT: Likewise.
+       * doc/USER.jp: Likewise.
+       * doc/fdl.texi: Likewise.
+       * doc/parted-pt_BR.texi: Likewise.
+       * doc/parted.texi: Likewise.
+
+       maint: update all FSF copyright year lists to include 2010
+       Run this command: make update-copyright
+
+       maint: record update-copyright options for this package
+       * cfg.mk: Next time, just run "make update-copyright".
+
+2009-12-31  Jim Meyering  <meyering@redhat.com>
+
+       maint: newer gnulib; don't hard-code my GPG key ID
+       * cfg.mk (gpg_key_ID): Remove definition, now that maint.mk automates it.
+       * gnulib: Update to latest.
+
+2009-12-20  Jim Meyering  <meyering@redhat.com>
+
+       maint: make build-aux/gnu-web-doc-update work
+       * cfg.mk (manual_title): Define.
+       * doc/parted.texi (Concept index): Rename from "Index".
+       Remove @ifnotplaintext..@end around its menu entry.
+
+       post-release administrivia
+       * NEWS: Add header line for next release.
+       * .prev-version: Record previous version.
+       * cfg.mk (old_NEWS_hash): Auto-update.
+
+       version 2.1
+       * NEWS: Record release date.
+
+       doc: NEWS: mention the flag-truncation fix
+       * NEWS (Bug fixes): Mention it.
+
+2009-12-19  Hans de Goede  <hdegoede@redhat.com>
+
+       dos: honor cylinder alignment disk flag when allocating metadata
+       * libparted/labels/dos.c (add_startend_metadata): Honor cylinder
+       alignment flag.
+
+2009-12-18  Hans de Goede  <hdegoede@redhat.com>
+
+       libparted: push/pop update mode around ped_disk_set_flag
+       Disk flags can change how the metadata gets allocated, so push/pop
+       update mode around ops->disk_set_flag, so that the metadata gets
+       re-allocated.
+       * libparted/disk.c (ped_disk_set_flag): push/pop update mode.
+
+       linux: fix use-after-free in devicemapper code
+       * libparted/arch/linux.c (_dm_add_partition): Fix use of dm_task
+       information after freeing it.
+
+       ui: Do not truncate flag names when printing
+       The partition_print_flags() function was truncating the flag names,
+       but these are translated strings, and thus can contain multibyte
+       characters. Truncating multibyte chars in a non multibyte aware way
+       is not good and was causing issues when printing tables in Russian:
+       http://bugzilla.redhat.com/show_bug.cgi?id=543029
+
+       Since the truncating does not seem to make sense at all this patch
+       simply removes it (it was likely an attempt to stay within 80 chars
+       when printing, but as one partition can have multiple flags set this
+       won't work)
+
+       * parted/parted.c (partition_print_flags): Don't truncate flag names.
+
+2009-12-16  Jim Meyering  <meyering@redhat.com>
+
+       libparted: plug a leak in mac_write
+       * libparted/labels/mac.c (mac_write): Free mac_driverdata.
+
+       maint: use "int", not "bool" for value returned by ped_device_write
+       * libparted/labels/gpt.c (gpt_write): Correct type of local.
+       * libparted/labels/mac.c (mac_clobber): Likewise.
+       * libparted/labels/sun.c (sun_write): Likewise.
+
+       libparted: plug a leak in mac's write_block_zero
+       * libparted/labels/mac.c (write_block_zero): Don't leak a
+       1-sector-sized buffer.
+
+       dos: remove unreachable code
+       * libparted/labels/dos.c (msdos_partition_new): Remove dead code.
+
+       libparted: plug a leak in gpt_probe
+       * libparted/labels/gpt.c (gpt_probe): Avoid a leak when dev->length
+       is one sector or smaller.
+
+2009-12-14  Jim Meyering  <meyering@redhat.com>
+
+       maint: improve dist-check.mk rules
+       * dist-check.mk (null_AM_MAKEFLAGS): Remove LIBTOOL.  Adding it was
+       erroneous, since it is required when building from a distribution
+       tarball of a libtool-using project.  Reported by Ralf Wildenhues.
+       (my-distcheck): Reorganize to use a subshell and set -e, so that
+       failures propagate "out".  Without this change, setting LIBTOOL=false
+       would cause a failure that would then be ignored, probably due to a
+       problem in $(install-transform-check).
+
+       maint: dist-check.mk adapt to parted-specific details
+       * dist-check.mk (built_programs): Use parted/, not src/.
+       (install-transform-check): Search sbin/, not /bin.
+       Expect man pages to be in man8/*.8.
+
+2009-12-13  Jim Meyering  <meyering@redhat.com>
+
+       maint: sync dist-check.mk from coreutils
+       * dist-check.mk: Sync from coreutils.
+       * gnulib: Update to latest.
+
+       maint: sync dist-check.mk from coreutils
+       * dist-check.mk: Sync from coreutils.
+       * gnulib: Update to latest.
+
+       build: distribute gperf-generated file, pt-limit.c
+       * libparted/labels/Makefile.am (EXTRA_DIST): Distribute the
+       gperf-generated file, pt-limit.c, so that people don't need to
+       run gperf at build-from-tarball time.
+
+2009-12-12  Jim Meyering  <meyering@redhat.com>
+
+       ui: mkpart: avoid double free
+       * parted/parted.c (do_mkpart): This function frees "part_name"
+       immediately after the final use, but also upon e.g., ped_disk_commit
+       failure.  Set part_name to NULL after the first free, to make
+       the second a no-op after the first.
+
+       build: update spec: gperf is a new build-requirement
+       * parted.spec.in (BuildRequires): Add gperf.
+       Reported by Jeff Darcy.
+
+2009-12-11  Jim Meyering  <meyering@redhat.com>
+
+       build: update gnulib submodule to latest
+
+       tests: ensure that parted can partition a loop device
+       * tests/t8000-loop.sh: Reverse sense of tests, now that
+       partitioning a loop device succeeds again.
+       * NEWS (Bug fixes): Mention it.
+
+2009-12-11  Hans de Goede  <hdegoede@redhat.com>
+
+       linux: treat loopback devices as files
+       We cannot do partition related ioctl's on loopback devices,
+       so treat them as files.
+       * libparted/arch/linux.c (LOOP_MAJOR): Define.
+       * libparted/arch/linux.c (_device_probe_type): Treat loopback
+       devices as files.
+       Reported by Josef Bacik in http://bugzilla.redhat.com/546622
+
+2009-12-10  Hans de Goede  <hdegoede@redhat.com>
+
+       libparted: missing pop update mode in ped_disk_delete_all error path
+       * libparted/disk.c(ped_disk_delete_all): Add missing update mode pop
+       call in error path.
+
+       libparted: make pop/push update mode propagate sanity check errors
+       Sanity check errors indicate something is really really wrong, still
+       sometimes they happen, when they happen it helps a lot in debugging
+       them when the libparted caller immediately errors out at the first
+       moment, rather then slugging along until things crash somewere.
+       * libparted/disk.c(_disk_push_update_mode,_disk_pop_update_mode):
+       Change return value from void to int, and return 0 when the sanity
+       check calls fail.
+       * libparted/disk.c(*): Update all _disk_push_update_mode /
+       _disk_pop_update_mode callers to propagate the return value.
+
+2009-12-10  Joel Granados Moreno  <jgranado@redhat.com>
+
+       libparted: add missing update mode pop in duplicate error path
+       * libparted/disk.c(ped_disk_duplicate): Add missing update mode
+       pop call in error path.
+
+       gpt: Add support for appletv partitions
+       * include/parted/disk.h(PedPartitionFlag): Add
+       PED_PARTITION_APPLE_TV_RECOVERY.
+       * libparted/disk.c(ped_partition_flag_get_name): Handle
+       PED_PARTITION_APPLE_TV_RECOVERY.
+       * libparted/labels/gpt.c(PARTITION_APPLE_TV_RECOVERY_GUID):
+       New define.
+       * libparted/labels/gpt.c(GPTPartitionData): Add atvrecv member.
+       * libparted/labels/gpt.c(_parse_part_entry, gpt_partition_new,
+       gpt_partition_set_system, gpt_partition_set_flag,
+       gpt_partition_get_flag, gpt_partition_is_flag_available):
+       Handle atvrecv / PARTITION_APPLE_TV_RECOVERY_GUID.
+
+       build: don't install s390 dasd internal headers into /usr/include
+       * include/parted/Makefile.am (partedinclude_HEADERS):
+       Remove $(S390_HDRS).
+       (noinst_HEADERS): Put them here instead.
+
+2009-12-10  Hans de Goede  <hdegoede@redhat.com>
+
+       ui: add --align command-line option to specify mkpart alignment
+       The new --align command-line option can have the following values:
+       none:     Use the minimum alignment allowed by the disk type
+       cylinder: Align partitions to cylinders (the default)
+       minimal: Use minimum alignment as given by the disk topology information
+       optimal: Use optimum alignment as given by the disk topology information
+
+       Note the "minimal" and "optimal" values will use layout information
+       provided by the disk to align the logical partition table addresses
+       to actual physical blocks on the disks.  The "minimal" value is the
+       minimum aligment needed to align the partition properly to physical
+       blocks, which avoids performance degradation.  Whereas the "optimum"
+       alignment align's to a multiple of the physical block size in a way
+       that guarantees optimal performance.
+
+       The "minimal" and "optimal" values are useful only when parted is
+       compiled with libblkid >= 2.17 and running on a kernel >= 2.6.31,
+       otherwise they are equivalent to --align=none.
+
+       * parted/parted.c (ALIGNMENT_ enum values): New enum.
+       (options, options_help): Add --align option.
+       (align_args, align_types, alignment): New global variables.
+       (do_mkpart): Honor aligment variable.
+       (_parse_options): handle --align option.
+       * bootstrap.conf (gnulib_modules): Add argmatch.
+       * NEWS: Mention the new --align option.
+       * doc/parted.texi: Document --align option.
+       * doc/C/parted.8: Likewise.
+
+       NEWS: update with libblkid and kernel requirements for alignment funcs
+       * NEWS: Change the note for the align-check command to also reference
+       libblkid, add a note to the libparted alignment functions NEWS entry
+       about libblkid and kernel requirements.
+
+       NEWS: Add new disk flag functions to NEWS
+       * NEWS: Add new disk flag functions.
+
+       msdos, sun: implement disk flag operations
+       * libparted/labels/dos.c (DosDiskData): New struct.
+       * libparted/labels/dos.c (msdos_alloc, msdos_duplicate, msdos_free):
+       Handle per disk DosDiskData.
+       * libparted/labels/dos.c (msdos_disk_set_flag, msdos_disk_get_flag,
+       msdos_disk_is_flag_available): New functions.
+       * libparted/labels/sun.c (sun_disk_set_flag, sun_disk_get_flag,
+       sun_disk_is_flag_available): New functions.
+
+       libparted: add disk flag functions and PED_DISK_CYLINDER_ALIGNMENT flag
+       Sometimes we want to be able to set flags at the disk level rather then
+       at the parition level, to influence how new partitions will be created
+       for example.  This patch adds functions to do this (modelled after the
+       partition flag functions), and adds a PED_DISK_CYLINDER_ALIGNMENT flag.
+
+       This flag (which defaults to true) controls if disk types for which
+       cylinder alignment is optional do cylinder alignment when a new
+       partition gets added. This flag is available for msdos and sun
+       disklabels (for sun labels it only controls the aligning of the end of
+       the partition).
+       * include/parted/disk.h (PedDiskFlag): New type
+       * include/parted/disk.h (ped_disk_set_flag, ped_disk_get_flag,
+       ped_disk_is_flag_available): new functions and PedDiskOps members
+       * include/parted/disk.h (ped_disk_flag_get_name,
+       ped_disk_flag_get_by_name, ped_disk_flag_next): new functions
+       * libparted/disk.c (ped_disk_set_flag, ped_disk_get_flag,
+       ped_disk_is_flag_available, ped_disk_flag_get_name,
+       ped_disk_flag_get_by_name, ped_disk_flag_next): new functions
+
+       dasd: fix leak in dasd_free
+       * libparted/labels/dasd.c (dasd_free): Free disk_specific data.
+
+2009-12-09  Jim Meyering  <meyering@redhat.com>
+
+       build: update gnulib submodule to latest
+
+       build: make it clear which sector size is in use upon test failure
+       * Makefile.am (ss-1024 ss-2048 ss-4096): New targets.
+       Before this, top-level "make check" would lead to four separate
+       runs through all the regression tests, one for each of the following
+       simulated sector sizes: 1024 2048 4096, and one more for the native
+       (usually 512), and it was not easy to tell which sector size was
+       in use for a failing test.  Now, we still perform exactly the same
+       tests, but the sector size is now part of each target name.
+
+2009-12-08  Jim Meyering  <meyering@redhat.com>
+
+       tests: exercise the new interfaces
+       * tests/print-max.c: New file.
+       * tests/t9021-maxima.sh: New file.
+       * tests/Makefile.am (TESTS): Add t9021-maxima.sh.
+       (check_PROGRAMS): Add print-max.
+
+       libparted: new interfaces: max start sector, max partition length
+       * libparted/disk.c (ped_disk_max_partition_start_sector): New function.
+       (ped_disk_max_partition_length): New function.
+       * include/parted/disk.h: Declare them.
+       * NEWS (New features): Mention them.
+
+       libparted: factor out duplication, hook up new APIs
+       * include/parted/disk.h [struct _PedDiskOps]:
+       (max_length, max_start_sector): New members.
+       * libparted/labels/pt-common.h: New file.
+       * libparted/labels/Makefile.am (liblabels_la_SOURCES): Add it.
+       * libparted/labels/dos.c: Include "pt-common.h".
+       (msdos_partition_check): Remove function.
+       (msdos_disk_ops): Remove factored out initializers.
+       * libparted/labels/gpt.c: Likewise.
+       * libparted/labels/dvh.c: Likewise.
+       * libparted/labels/aix.c:
+       (aix_disk_ops, aix_partition_check): Likewise.
+       * libparted/labels/bsd.c:
+       (bsd_disk_ops, bsd_partition_check): Likewise.
+       * libparted/labels/dasd.c:
+       (dasd_disk_ops, dasd_partition_check): Likewise.
+       * libparted/labels/loop.c:
+       (loop_disk_ops, loop_partition_check): Likewise.
+       * libparted/labels/mac.c:
+       (mac_disk_ops, mac_partition_check): Likewise.
+       * libparted/labels/pc98.c:
+       (pc98_disk_ops, pc98_partition_check): Likewise.
+       * libparted/labels/rdb.c:
+       (amiga_disk_ops, amiga_partition_check): Likewise.
+       * libparted/labels/sun.c:
+       (sun_disk_ops, sun_partition_check): Likewise.
+       * libparted/labels/gpt.c (NULL_IF_DISCOVER_ONLY): Remove definition,
+       now that it's in pt-common.h.
+
+       libparted: use gperf-generated lookup function
+       * libparted/labels/pt-tools.c (ptt_partition_max_start_len):
+       Rewrite to use the gperf-generated look-up function.
+       (ptt_partition_max_start_sector): New function.
+       (ptt_partition_max_length): New function.
+       * libparted/labels/pt-tools.h: Declare them.
+       * libparted/labels/Makefile.am (GPERF, GPERF_OPTIONS): Define.
+       (BUILT_SOURCES): Define.
+       (liblabels_la_SOURCES): Append pt-limit.gperf.
+       (pt-limit.c): New rule.
+       (MAINTAINERCLEANFILES): Remove useless definition.
+       (DISTCLEANFILES): Set to $(BUILT_SOURCES).
+       * libparted/labels/pt-limit.gperf: New file.
+       * cfg.mk (bootstrap-tools): Mention gperf.
+       * bootstrap.conf (buildreq): Require gperf-3.0.3.
+
+       pc98: avoid segfault with simulated large sectors
+       The pc98 partition table is by no means ready for >512-byte sectors,
+       but at least it now gets past mklabel.  E.g., this usage no longer
+       provokes double-free and read-uninitialized errors:
+       dd if=/dev/zero of=F bs=512 count=1 seek=10000
+       PARTED_SECTOR_SIZE=4096 valgrind ../parted/parted -s F mklabel pc98
+       * libparted/labels/pc98.c (pc98_write): Rewrite to avoid
+       invalid access with >512-byte sectors.
+
+       libparted: ptt_read_sectors: new function
+       * libparted/labels/pt-tools.c (ptt_read_sectors): New function.
+       (ptt_read_sector): Rewrite to use it.
+       * libparted/labels/pt-tools.h: Declare it.
+
+2009-12-03  Jim Meyering  <meyering@redhat.com>
+
+       mac: hook up the partition_check function for this partition table type
+       * libparted/labels/pt-tools.c (ptt_partition_max_start_len): Define
+       for MAC partition tables.  They too have 32-bit-limited partition
+       starting sector number and partition length (in sectors).
+       * libparted/labels/mac.c (mac_partition_check): Use
+       ptt_partition_max_start_len.
+
+2009-11-30  Jim Meyering  <meyering@redhat.com>
+
+       tests: exercise new align-check command
+       * tests/t9030-align-check.sh: New file.
+       * tests/Makefile.am (TESTS): Add it.
+
+       ui: new command: align-check TYPE N
+       e.g.,
+         parted -s /dev/sda align-check min 1 && echo partition 1 is min-aligned
+         parted -s /dev/sda align-check opt 2 && echo partition 2 is opt-aligned
+
+       * parted/parted.c:
+       * parted/ui.c:
+       * parted/ui.h:
+       * NEWS (New features): Mention it.
+       * doc/parted.texi (align-check): Describe it.
+
+       tests: correct a comment
+       * tests/t9020-alignment.sh: Correct a comment.
+
+2009-11-27  Jim Meyering  <meyering@redhat.com>
+
+       libparted: ped_disk_clobber_exclude: remove now-unused function
+       I see no utility in ped_disk_clobber_exclude (just a thin wrapper
+       around ped_disk_clobber), so am removing the interface.
+       * include/parted/disk.h (ped_disk_clobber_exclude): Remove prototype.
+       * libparted/disk.c (ped_disk_clobber_exclude): Remove function.
+       Now that all callers use NULL as 2nd argument, replace each call
+       with one to ped_disk_clobber.
+       * scripts/data/abi/baseline_symbols.txt: Remove it.
+
+       Reviewed-by: Karel Zak <kzak@redhat.com>
+
+       ped_disk_clobber: change semantics
+       Why?  Because if we're going to clobber a partition table,
+       it is wasteful and error prone to try to interpret as a partition
+       table whatever existing data there may be.  It may be corrupt, or
+       a mix of two or more types.  It is far cleaner just to zero out
+       the key sectors.
+
+       The previous mechanism was like this:
+       for each partition table type, T,
+           # See if the device has a partition of type T.
+           # If so, run the partition-table-specific code to clear it.
+           if t->ops->probe (dev)
+             t->ops->clobber (dev)
+       Instead, simply zero out the first few and last few sectors.
+       Except for GPT, for which we exempt the first sector (the pMBR).
+       In order to zero out even the bits DASD uses for its identifying
+       strings, we have to clobber at least the 8.5KiB at the beginning
+       of the disk, so round up to 9KiB.
+       * libparted/disk.c: Include "labels/pt-tools.h".
+       (find_disk_type): New helper function.
+       (ped_disk_clobber_exclude):
+
+       Reviewed-by: Karel Zak <kzak@redhat.com>
+
+       dasd: allow the use of a *regular* backing file
+       Before this change, dasd partition tables had to be associated with
+       very specialized block devices available only on IBM s390 systems.
+       This made testing especially hard.  Not only did you need access
+       to one of those relatively uncommon systems, but you also needed
+       access to a spare block device.  In addition, many of Parted's
+       tests may be run as a non-privileged user, using regular files,
+       and those tests would fail when run on an s390.
+
+       This change makes it so you may now write a DASD partition table
+       to a regular backing file, just as you may with any other supported
+       partition table type.  However, note that even now, DASD support
+       is conditionally compiled and hence enabled only when compiling
+       for an s390 target.
+
+       * libparted/arch/linux.c (_device_set_sector_size) [__s390__]:
+       Allow operation on a device of type PED_DEVICE_FILE, as well as
+       those of type PED_DEVICE_DASD.
+       * libparted/labels/fdasd.c: Include <parted/device.h>.
+       (fdasd_get_geometry): Add a new "dev" parameter, required for
+       dev-phys-sector_size, which is needed in order to initialize
+       the "anc" structure without using the device-specific ioctls.
+       When file descriptor "f" refers to a regular file, initialize
+       "anc", "dasd_info", etc. from other sources (fstat and dev->).
+       Update all callers to reflect added parameter.
+       (fdasd_check_api_version): Skip ioctl-calling tests when "f" is
+       a regular file.
+       * include/parted/fdasd.h: Update fdasd_get_geometry prototype.
+       * libparted/labels/dasd.c (dasd_probe): Also allow PED_DEVICE_FILE.
+       (dasd_alloc_metadata): Initialize arch_specific->real_sector_size,
+       which is used in calculating vtoc_end.
+
+       Reviewed-by: Karel Zak <kzak@redhat.com>
+
+       loop: simplify/correct loop_clobber
+       Before, it would clear a sector only if it recognized its own
+       signature.  In addition, it would continue clearing subsequent
+       sectors as long as loop_probe succeeded.  Now we simply clear
+       the first sector.
+       * libparted/labels/loop.c (loop_clobber): Simplify.
+
+       Reviewed-by: Karel Zak <kzak@redhat.com>
+
+2009-11-26  Jim Meyering  <meyering@redhat.com>
+
+       tests: indicate that we expect t3200-type-change to fail, for now
+       * tests/Makefile.am (TESTS): Move t3200-type-change.sh to ...
+       (XFAIL_TESTS): ...here.
+
+2009-11-24  Jim Meyering  <meyering@redhat.com>
+
+       tests: correct t3200-type-change.sh
+       * tests/t3200-type-change.sh: The initial version was incomplete.
+
+       tests: provide a new function: fail_
+       * tests/t-lib.sh (fail_): New function.
+
+       tests: t0001-tiny.sh: avoid spurious failure when run as root.
+       * tests/t0001-tiny.sh: Control characters were getting in the way.
+       Filter them out.
+
+2009-11-23  Jim Meyering  <meyering@redhat.com>
+
+       dasd: avoid NULL-dereference via disk->type->ops->partition_check
+       Commit f387fee8 added the new ops->partition_check() function,
+       and a <type>_partition_check function for each partition table
+       format _except_ dasd.  This change adds one for dasd, too.
+       * libparted/labels/dasd.c: Include "pt-tools.h".
+       (dasd_partition_check): New function.
+       * libparted/labels/pt-tools.c (ptt_partition_max_start_len): Add "dasd"
+       to the list of partition table type names for which the 32-bit
+       limits on starting sector and partition length apply.
+       Correct a comment.
+       Considering the 32-bit fields in "struct fdasd_hd_geometry",
+       it is safe to assume that larger offset or size is not possible.
+
+2009-11-18  Jim Meyering  <meyering@redhat.com>
+
+       build: "make stable" emitted an invalid gnupload command
+       * cfg.mk (gnu_ftp_host-stable): Rename from gnu_ftp_host-major.
+
+2009-11-17  Jim Meyering  <meyering@redhat.com>
+
+       test for partition-type-changing bug
+       * tests/t3200-type-change.sh: New file.
+       * tests/Makefile.am (TESTS): Add it.
+
+2009-11-13  Jim Meyering  <meyering@redhat.com>
+
+       gpt: greatly simply gpt_clobber; minor semantic change, too
+       * libparted/labels/gpt.c (gpt_clobber): Don't bother to read and
+       parse existing headers.  Instead, simply clear three sectors:
+       the pMBR, the primary header (LBA1), and the last sector.
+       There is no point in clearing what the primary header says is the
+       AlternateLBA, since once the primary header and the last sector
+       are cleared, there is no risk of any tool using it by mistake.
+
+       tests: t0000-basic.sh: minor correction
+       * tests/t0000-basic.sh: When zeroing out the first sector,
+       use dd's conv=notrunc.  Otherwise, we'd also truncate the
+       backing file size to 4KiB.
+
+       linux_read: give a proper diagnostic for an "end of file" error
+       Before today's gpt_probe bug fix, its test case would provoke
+       an invalid diagnostic.  This makes the diagnostic useful.
+       * libparted/arch/linux.c (linux_read): When hitting EOF while reading,
+       diagnose it properly, rather than via strerror(0) (i.e., "Success").
+
+       gpt_probe: don't attempt to read beyond end of a very small disk
+       * libparted/labels/gpt.c (gpt_probe): Don't try to read the
+       2nd sector if that's beyond the end of the disk.
+       * tests/t0001-tiny.sh: New test, to expose the above boundary-case bug.
+       Part of the msdos-partition-creation process involves probing for
+       other types of partition tables.  Probing for gpt would evoke a
+       nonsensical diagnostic.
+       * tests/Makefile.am (TESTS): Add t0001-tiny.sh.
+
+       dvh: replace open-coded dvh_clobber with equivalent, shorter code
+       * libparted/labels/dvh.c (dvh_clobber): Simply use ptt_clear_sectors.
+
+       tests: weaken t0202-gpt-pmbr to assume a preexisting GPT table
+       * tests/t0202-gpt-pmbr.sh: Lay down an initial GPT table before
+       writing to the MBR, so this test passes with the new semantics.
+
+       tests: rewrite t0202 to use new framework
+       * tests/t0202-gpt-pmbr.sh: Rewrite.
+
+       ped_disk_type_get_next: fix a const-correctness bug
+       * libparted/disk.c (ped_disk_type_get_next): Make param const.
+       * include/parted/disk.h (ped_disk_type_get_next): Update prototype.
+
+2009-11-12  Hans de Goede  <hdegoede@redhat.com>
+
+       NEWS: mention recent changes
+
+2009-11-12  Jim Meyering  <meyering@redhat.com>
+
+       maint: more const-correctness fixes
+
+2009-11-12  Hans de Goede  <hdegoede@redhat.com>
+
+       dasd: fix ped_disk_new_fresh to not read old data from disk
+       dasd_write(), was reading the volume label from the disk (trough
+       fdasd_check_volume()) and later writing it back again, this is fine for
+       existing dasd labels, but when creating a fresh label, this would
+       also cause the old volume label to be re-used, and if the old label
+       was corrupt, it would cause fdasd_check_volume() and thus dasd_write()
+       to fail.  Reported here: http://bugzilla.redhat.com/533808
+
+       * libparted/arch/linux.c: include fdasd.h.
+       (init_dasd): Do BIODASDINFO ioctl, and store the dasd devno in
+       arch_specific.
+       (init_dasd): Remove dead (never reached) code.
+       * libparted/arch/linux.h (struct _LinuxSpecific): Add devno member.
+       * libparted/labels/dasd.c (DasdDiskSpecific): add vlabel member.
+       (dasd_alloc): Init DasdDiskSpecific.vlabel for fresh disks
+       (dasd_read): Store read vlabel in DasdDiskSpecific.vlabel.
+       (dasd_write): Write DasdDiskSpecific.vlabel instead of on disk vlabel.
+
+2009-11-10  Jim Meyering  <meyering@redhat.com>
+
+       build: avoid s390-specific compilation failiure
+       * libparted/labels/vtoc.c (vtoc_volume_label_init): Don't use
+       strncpy to copy 84 bytes into a 4-byte field.  Instead, use
+       memcpy to copy "sizeof *vlabel" bytes into the "vlabel".
+
+       maint: fix s390-specific const correctness problems
+       * libparted/labels/vtoc.c (vtoc_error, vtoc_ebcdic_enc):
+       (vtoc_ebcdic_dec): Declare parameters to be const, as required.
+       * libparted/labels/fdasd.c (fdasd_error): Likewise.
+       * include/parted/vtoc.h (vtoc_ebcdic_enc, vtoc_ebcdic_enc): Update
+       prototypes.
+
+       gpt: fix a bug in the new PE-array CRC checks on big-endian systems
+       * libparted/labels/gpt.c (check_PE_array_CRC, gpt_read): Always
+       convert the PartitionEntryArrayCRC32 to CPU endianness before
+       comparing with a just-computed CRC.
+
+2009-11-08  Jim Meyering  <meyering@redhat.com>
+
+       build: use gnulib's canonicalize-lgpl module
+       Replace Parted's private version of canonicalize_file_name.
+       * libparted/device.c: Include <stdlib.h>.
+       (canonicalize_file_name) [!HAVE_CANONICALIZE_FILE_NAME]:
+       Remove definition.
+       * bootstrap.conf (gnulib_modules): Add canonicalize-lgpl.
+
+2009-11-07  Jim Meyering  <meyering@redhat.com>
+
+       libparted: linux: don't deref NULL upon failed malloc or realloc
+       * libparted/arch/linux.c (_read_fd): Handle allocation failure.
+
+       build: update gnulib submodule to latest
+
+       maint: use EXIT_SUCCESS and EXIT_FAILURE, not 0 and 1 to exit
+       Convert all uses automatically, via these two commands:
+       git grep -l '\<exit *(1)'|xargs --no-run-if-empty \
+         perl -pi -e 's/\b(exit ?)\(1\)/$1(EXIT_FAILURE)/'
+       git grep -l '\<exit *(0)'|xargs --no-run-if-empty \
+         perl -pi -e 's/\b(exit ?)\(0\)/$1(EXIT_SUCCESS)/'
+       * libparted/fs/fat/table.c (fat_table_get): Use symbolic exit codes.
+       * libparted/labels/vtoc.c (vtoc_update_format5_label_add): Likewise.
+       (vtoc_update_format5_label_del): Likewise.
+       (vtoc_update_format7_label_add): Likewise.
+       (vtoc_update_format7_label_del): Likewise.
+       * m4/parted.m4 (PARTED_CHECK_LIBPARTED): Likewise.
+       * parted/parted.c (do_quit): Likewise.
+       * parted/strlist.c (gettext_to_wchar, wchar_to_str): Likewise.
+       * parted/ui.c (reset_env, help_msg, non_interactive_mode): Likewise.
+
+2009-11-06  Hans de Goede  <hdegoede@redhat.com>
+
+       dasd: fix unused variable warning
+       * libparted/labels/dasd.c (dasd_get_partition_alignment): Fix unused
+       variable warning.
+
+       linux: use cached major minor instead of statting the device again
+       * libparted/arch/linux.c (_dm_remove_parts): Use cached major/minor
+       numbers.
+
+       linux: use devicemapper task name instead of device node name
+       Use devicemapper task name instead of device node name as basename for
+       devicemapper disk partitions.
+
+       This is needed for upcoming lvm changes where the /dev/mapper/foobar
+       files are becoming symlinks, so we will end up opening /dev/dm-#,
+       and naming our partitions dm-#p1, dm-#p2, instead of foobarp1,
+       foobarp2, etc.
+
+       linux: use major / minor to specify device mapper device in dm_task
+       Use major / minor to specify device mapper device instead of
+       dm_task_set_name. This is needed for upcoming lvm changes where the
+       /dev/mapper/foobar files are becoming symlinks, so we will end up
+       opening /dev/dm-#, and dm-# is not a valid dm_task name.
+
+       This is only needed in this one place, as in the other places where we
+       use dm_task_set_name, the name we use was returned by libdevicemapper
+       itself in an earlier function call.
+
+2009-11-06  Jim Meyering  <meyering@redhat.com>
+
+       tests: enable the FS-resizing (tests only HFS and FAT)
+       * tests/Makefile.am (TESTS): Add t3000-resize-fs.sh.
+
+       maint: remove stray "types and" in the big FS-op warning
+       * parted/parted.c (issue_fs_op_warning): Correct grammar in diagnostic.
+
+       tests: convert more tests to new framework
+       * tests/t0400-loop-clobber-infloop.sh: Convert.
+       * tests/t0010-script-no-ctrl-chars.sh: Likewise.
+       * tests/t3000-resize-fs.sh: Likewise, and convert it to use scsi_debug.
+       * tests/t-local.sh (require_512_byte_sector_size_): Copy this
+       function from test-lib.sh.
+
+2009-11-04  Hans de Goede  <hdegoede@redhat.com>
+
+       dasd: fix disk duplication
+       Fix dasd_duplicate and add a dasd_partition_duplicate function.
+       * libparted/labels/dasd.c(dasd_partition_duplicate): New function.
+       (dasd_duplicate): Don't set the disk_specific pointer to NULL!
+       (dasd_duplicate): Copy DasdDiskSpecific from old disk to new disk.
+
+       dasd: set disk_specific->format_type in dasd_alloc
+       Set disk_specific->format_type in dasd_alloc, so that the disk
+       returned by ped_disk_new_fresh is a valid dasd disk.
+       * libparted/labels/dasd.c (dasd_alloc): Set disk_specific->format_type.
+
+       dasd: cache real_sector_size in linux_probe
+       dasd_alloc was doing an ioctl to get the real sector size for the dasd
+       device (we are faking 512 bytes sectors), but when called directly
+       from ped_disk_new_fresh(), the device is not open causing this to fail.
+
+       This patch fixes things by caching the real_sector_size in the linux
+       arch_specific data and making the dasd label handling use this.
+       libparted/arch/linux.c(_device_set_sector_size): Cache real sector size.
+       (_device_set_sector_size, init_dasd, linux_new): Only compile dasd code
+       on s390 and s390x.
+
+       dasd: remove bogus part_info pointer from DasdPartitionData
+       The part_info pointer in DasdPartitionData was only used to
+       pass fdasd partition_info_t pointers from dasd_write to
+       the dasd_write dasd_update_type utility function. Since these
+       pointers are not valid outside the lifetime of dasd_write, they
+       should not be stored in the longer lived DasdPartitionData.
+
+       * libparted/labels/dasd.c(DasdPartitionData): Remove part_info member.
+       (dasd_read): Stop setting DasdPartitionData part_info.
+       (dasd_update_type): Add part_info argument to pass fdasd
+       partition_info_t pointers from dasd_write.
+       (dasd_write): Stop setting DasdPartitionData part_info, pass
+       partition_info_t pointers to dasd_update_type as a separate argument.
+
+       dasd: clean up anchor handling
+       The current dasd label code keeps an fdasd anchor struct in the
+       DasdDiskSpecific struct, and fills this during dasd_read. However this
+       anchor does not get updated with any future mods, until dasd_write,
+       at which points it gets completely re-initialized.
+
+       Since the contents of the anchor saved during read does not get used
+       anywhere else, this patch switches to using local anchor structs in
+       dasd_read and dasd_write. This will also allow writing a significantly
+       simpler duplicate implementation, then the one which is currently
+       added to the Fedora package with a patch from Joel Granados (The
+       current master dasd_duplicate implementation is not functional).
+
+       This patch also fixes several missing calls to fdasd_cleanup() fixing
+       several memory leaks.
+
+       * libparted/arch/linux.h (struct _LinuxSpecific): Drop anchor member.
+       * libparted/labels/dasd.c (DasdDiskSpecific): Drop anchor member.
+       (dasd_clobber): Add missing fdasd_cleanup().
+       (dasd_read, dasd_write): Use local anchor struct instead of a
+       dynamically allocated one in DasdDiskSpecific.
+       (dasd_read): Don't leak a PedConstraint in 2 error paths.
+       (dasd_update_type): Pass in the used anchor as argument.
+
+2009-11-03  Jim Meyering  <meyering@redhat.com>
+
+       tests: distribute new files, t-local.sh and t-lvm.sh
+       * tests/Makefile.am (EXTRA_DIST): Add t-local.sh and t-lvm.sh.
+
+       tests: appease "make syntax-check"
+       * tests/print-align.c: Include "progname.h".  Call set_program_name.
+
+       tests: t6000-dm.sh: update and adapt to changed LVM2
+       * tests/t6000-dm.sh: Rewrite to use new test framework and
+       to disable multipath testing, since LVM2 has changed in such
+       a way that it no longer works with loop devices.
+
+       tests: do not invoke scsi_debug_setup_ in a subshell
+       * tests/t9010-big-sector.sh: Do not invoke scsi_debug_setup_ in
+       a subshell, since it sets a variable that cleanup machinery expects
+       to see.
+       * tests/t9020-alignment.sh: Likewise.
+
+       tests: tweak temporary dirname prefix
+       * tests/t-lib.sh (t_): Use "pe-" as prefix, not "gz-".
+
+       tests: update lvm-utils.sh from lvm2
+       * tests/lvm-utils.sh: Merge in changes from lvm2.
+
+       tests: adapt/update lvm-related infrasture, too
+       * tests/t-local.sh: Source t-lvm.sh.
+       * tests/t-lvm.sh: Clone and update of lvm-utils.sh,
+       for when we retire that file in favor of this one.
+
+       tests: adapt t8000-loop.sh
+       * tests/t8000-loop.sh: Rewrite in new style, and adjust to
+       expect new diagnostic.
+
+       tests: print and check partition alignment info, too
+       * tests/print-align.c: Print partition alignment info, too
+       * tests/t9020-alignment.sh: Check partition alignment too.
+
+       tests: serialize tests that use the scsi_debug module
+       * tests/t-local.sh (scsi_debug_lock_file_): New global.
+       (scsi_debug_acquire_lock_): New function.
+       (scsi_debug_setup_): Call it, to acquire the lock.
+       (scsi_debug_cleanup_): Release the lock.
+
+       tests: test the new alignment functions
+       * tests/t9020-alignment.sh: New test.
+       * tests/Makefile.am (TESTS): Add it to the list.
+
+       tests: factor out some more
+       * tests/t-local.sh (require_scsi_debug_module_): New function.
+       * tests/t9010-big-sector.sh: Use it.
+
+       tests: perform scsi_debug cleanup automatically...
+       ...rather than requiring each test to do it.
+       * tests/t-lib.sh ($cleanup_eval): New variable.  Initialize.
+       (remove_tmp_): Use it.
+       * tests/t-local.sh: Record whether modprobe succeeded.
+       (cleanup_eval_): Append an invocation of scsi_debug_cleanup_
+       so that it is always run.
+       (scsi_debug_cleanup_): Run rmmod only if the modprobe succeeded.
+       * tests/t9010-big-sector.sh (cleanup_): Remove.
+
+2009-11-02  Jim Meyering  <meyering@redhat.com>
+
+       tests: move scsi_debug framework into shared script
+       * tests/t-local.sh (-scsi_debug_cleanup_, wait_for_dev_to_appear_):
+       (print_sd_names_, scsi_debug_setup_): New functions, factored out of ...
+       * tests/t9010-big-sector.sh: ...this file.
+
+       tests: document and begin to factor out scsi_debug framework
+       * tests/t9010-big-sector.sh: Add comments, fix a bug in
+       "comm" usage, prepare to factor out scsi_debug framework.
+
+       tests: add a helper program to print alignment info for a device
+       * tests/print-align.c: New file.
+       * tests/Makefile.am (check_PROGRAMS): Define.
+       (AM_CPPFLAGS, LDADD): Define.
+       (AM_CFLAGS): Enable warnings here, too, by adding
+       $(WARN_CFLAGS) and $(WERROR_CFLAGS).
+
+2009-11-01  Hans de Goede  <hdegoede@redhat.com>
+
+       Implement get_partition_alignment DiskOp for all labels which need it
+       Implement get_partition_alignment DiskOp for all labels which require
+       an alignment with a grain_size != 1.
+
+       libparted: add ped_disk_get_partition_alignment() function
+       This functions get the alignment needed for partition boundaries on this disk.
+       The returned alignment describes the alignment for the start sector of the
+       partition, for all disklabel types which require alignment, except Sun
+       disklabels, the end sector must be aligned too. To get the end sector
+       alignment decrease the PedAlignment offset by 1.
+
+       libparted: add ped_device_get_xxx_aligned_constraint() functions
+       Add ped_device_get_minimal_aligned_constraint() and
+       ped_device_get_optimal_aligned_constraint() functions to libparted.
+
+       These functions can be used to get a device constraint taking alignment into
+       account.
+
+       ped_device_get_constraint: return constraint without alignment
+       In libparted-1.9 ped_device_get_constraint() would always return a constraint
+       without any start / end aligning (grain_size == 1). Now that we are starting to
+       support disks with a physical sector size other then 512, the old
+       ped_device_get_constraint() code may actually start returning constrains
+       with alignment info with a grain_size != 1.
+
+       Since this is a behavior change and since the old code does not take a possible
+       alignment info into account, this patch removes the aligning code from
+       ped_device_get_constraint(), so that its behavior is unchanged.
+
+       This patch also updates the functions doxygen documentation to reflect what
+       it has actually done all these years.
+
+       linux: add get_xxx_alignment() functions
+       * libparted/arch/linux.c (get_minimum_alignment): New function.
+       (get_optimum_alignment): New function.
+
+       linux: save blkid topology in arch_specific data for later use
+       This is a preparation patch for adding get_minimum_alignment
+       and get_optimum_alignment functions to linux's _PedDeviceArchOps.
+       * libparted/arch/linux.h (struct_LinuxSpecific) [probe, topology]:
+       Add members.
+       * libparted/arch/linux.c (linux_new): initialize
+       arch_specific->probe and arch_specific->topology to NULL,
+       (linux_destroy): Free arch_specific->probe.
+       (get_minimum_io_size): Remove function.
+       (get_blkid_topology): New function.
+       (_device_set_sector_size): Call get_blkid_topology() instead of
+       get_minimum_io_size() and retrieve minimum io size from the cached
+       topology.
+
+       libparted: add ped_device_get_xxx_alignment() functions
+       Add ped_device_get_minimum_alignment() and ped_device_get_optimum_alignment()
+       functions to libparted.
+
+       Note this is a resent of my previous patchset with a number of typos corrected:
+       aligment -> alignment
+       minimal_alignment -> minimum_aligment
+       optimal_alignment -> optimum_aligment
+
+       Sorry for the noise.
+
+2009-10-29  Jim Meyering  <meyering@redhat.com>
+
+       tests: protect t7000 from the environment
+       * tests/t7000-scripting.sh: Initialize fail=0, so that an
+       environment setting cannot perturb the test.
+
+       tests: convert to new testing framework
+       * tests/t0200-gpt.sh: Convert to new testing framework.
+       * tests/t0201-gpt.sh: Likewise.
+       * tests/t0300-dos-on-gpt.sh: Likewise.
+       * tests/t0100-print.sh: Likewise.
+       * tests/t0250-gpt.sh: Likewise.
+
+       dvh: document an as-yet-unplugged (but not serious) leak
+       * libparted/disk.c (ped_disk_add_partition): List some of the
+       things I've tried to plug a leak exposed by a root-only test
+       on dvh's partition-creation error path.  This leak is enough
+       of a corner case that I may even leave it for now, and add a
+       suppression for it, so that we're not distracted by it.
+
+2009-10-28  Jim Meyering  <meyering@redhat.com>
+
+       dvh: plug three constraint-sized leaks
+       * libparted/labels/dvh.c (dvh_read, dvh_alloc_metadata):
+       Free constraint upon failure, too.
+
+       ui: plug multiple command_line_get_word leaks
+       * parted/parted.c (do_mkpart, do_print):
+
+       check: plug an even smaller (formatted "unit") leak
+       * libparted/disk.c (ped_disk_check): Free fs_size also upon success.
+
+       check: plug a geometry-sized leak
+       * libparted/disk.c (ped_disk_check): Destroy "geom", when done with it.
+
+       loop: don't leak a sector in loop_clobber
+       * libparted/labels/loop.c (loop_clobber): Replace leaky open-coded
+       version with a use of Use ptt_clear_sectors.
+
+       tests: t7000: remove mkpartfs tests
+       This test tested both mkpart and mkpartfs.
+       * tests/t7000-scripting.sh: Remove the mkpartfs tests.
+
+       tests: remove tests that are too FS-centric
+       * tests/t1000-mkpartfs.sh: Remove file.
+       * tests/t1500-small-ext2.sh: Likewise.
+       * tests/t2000-mkfs.sh: Likewise.
+       * tests/t3100-resize-ext2-partion.sh: Likewise.
+       * tests/t3000-constraints.sh: Likewise.
+       * tests/Makefile.am (TESTS): Remove them here, too.
+
+2009-10-27  Jim Meyering  <meyering@redhat.com>
+
+       ui: plug a constraint leak in do_mkpart
+       * parted/parted.c (do_mkpart): Free constraint after using it to
+       add partition.
+
+       gpt: plug two gpt-header leaks in gpt_read_headers
+       * libparted/labels/gpt.c (gpt_read_headers): Free locals pri and/or
+       bak if they are not valid.
+
+       gpt: plug a 1-sector leak in gpt_read_headers
+       * libparted/labels/gpt.c (gpt_read_headers): Free a sector.
+
+       ui: plug a leak (partition_print_flags)
+       * parted/parted.c (do_print): Free flags, after printing.
+
+       libparted: plug an FS-alias-related leak
+       * libparted/filesys.c (ped_file_system_alias_unregister):
+       Free the alias we've just unregistered.
+
+2009-10-26  Jim Meyering  <meyering@redhat.com>
+
+       doc: update NEWS
+       * NEWS (Bug fixes): Describe two.
+
+2009-10-23  Jim Meyering  <meyering@redhat.com>
+
+       gpt: header validity: also consider whether a PE array crc matches
+       * libparted/labels/gpt.c (check_PE_array_CRC): New function.
+       (_header_is_valid): Use it to verify that partition entry array
+       checksums match, too.
+       Karel Zak noticed that this check was not being performed.
+       * tests/t0280-gpt-corrupt.sh: Adapt to changed diagnostic.
+
+       gpt: tweak interfaces to pass disk, not disk->dev
+       * libparted/labels/gpt.c: required for upcoming CRC-checking function.
+
+       gpt: don't ignore an improbable (1-in-2^32) failure
+       pth_crc32 mapped failure to a crc32 value of 0.  If that happened
+       to match the stored value, there would be no indication that there
+       had been a malloc failure.
+       * libparted/labels/gpt.c (pth_crc32): Change interface so we can
+       distinguish failure from a CRC value of 0.
+       Update all callers.
+       (_generate_header): Now that we recognize pth_crc32 can fail,
+       we must admit that its void-returning caller _generate_header
+       may fail, too.  Return "int" and adjust *its* callers.
+
+       gpt: factor out code that is about to be reused
+       * libparted/labels/gpt.c: Include <errno.h>.
+       (gpt_read_PE_array): New function, ...
+       (gpt_read): ...factored out of this one.  Use it.
+
+       gpt: don't dereference NULL upon OOM (pth_get_raw callers)
+       Handle each case in which pth_get_raw may return NULL.
+       * libparted/labels/gpt.c (pth_get_raw): Upon OOM error, return 0
+       rather than dereferencing NULL.
+       (gpt_write): Don't dereference NULL upon OOM error.
+       (gpt_read): Yet another.
+
+       gpt: don't dereference NULL upon OOM (in pth_get_raw)
+       * libparted/labels/gpt.c (pth_get_raw): Don't dereference NULL
+       on out of memory error.
+
+       gpt: remove dead store
+       * libparted/labels/gpt.c (pth_crc32): Remove useless initialization.
+
+       gpt: make an internal function "const"-correct
+       * libparted/labels/gpt.c (_parse_header): Make "gpt" const.
+
+       tests: convert t0280 to new test style.
+       * tests/t0280-gpt-corrupt.sh: Convert to new test style.
+       * tests/t-lib.sh: Source t-local.sh.
+       * tests/t-local.sh: New file.
+
+       gpt: clean up
+       * libparted/labels/gpt.c (gpt_probe): Remove now-useless test before
+       pth_free.
+       (gpt_read): Use ptt_clear_sectors in place of open-coded equivalent.
+       * cfg.mk (useless_free_options): Add --name=pth_free.
+
+       gpt: make its header check a tiny bit more strict
+       * libparted/labels/gpt.c (_header_is_valid): Declare a header
+       to be invalid if its AlternateLBA is the same as MyLBA.
+
+       2009-10-21  Jim Meyering  <meyering@redhat.com>
+
+       complete most of gpt-CRC-related rewrite
+       * libparted/labels/gpt.c (_read_header): Remove now-unused function.
+
+       t0280-gpt-corrupt.sh: adapt for new output, improve test
+
+       gpt: rewrite GPT header-reading code
+       * libparted/labels/gpt.c (read_header): Remove now-unused function.
+       (gpt_read_headers): New function.
+       (gpt_read): Rewrite to use gpt_read_headers.
+
+       gpt: require that the backup table's AlternateLBA is 1
+       * libparted/labels/gpt.c (_header_is_valid): When checking
+       the backup header, ensure that its AlternateLBA is 1.
+
+       tests: gpt: test for detection of corrupt backup partition header
+       * tests/t0280-gpt-corrupt.sh: Corrupt the backup partition header's
+       MyLBA, and require that an attempt to print the table fails.
+
+       tests: hook up new GPT-crc-corrupting script
+       * tests/Makefile.am (TESTS): Add t0280-gpt-corrupt.sh.
+       * libparted/labels/gpt.c (gpt_read): Change diagnostic to say that
+       the PTE CRC mismatch is in the primary table.
+       * tests/t0280-gpt-corrupt.sh: Tweak diagnostic to match
+       what the code now prints.
+
+       gpt: also verify MyLBA when checking table validity
+       * libparted/labels/gpt.c (_header_is_valid): Add parameter, my_lba.
+       (_read_header): Update caller.
+       (_parse_header): Comment out this use of _header_is_valid
+       in an assertion.
+
+       gpt: clean up formatting of static initializers
+       * libparted/labels/gpt.c (NULL_IF_DISCOVER_ONLY): Define.
+       (gpt_disk_ops): Use it to avoid in-decl #if directives.
+
+2009-10-20  Jim Meyering  <meyering@redhat.com>
+
+       gpt.c: filter through indent --no-tabs...
+       and manual fix-up to shorten long lines.
+       Also, manually format the static initializers in e.g., gpt_disk_ops,
+       since GNU indent botches that.
+
+2009-10-19  Jim Meyering  <meyering@redhat.com>
+
+       gpt: add a comment
+       * libparted/labels/gpt.c (_header_is_valid): Add a comment to explain
+       the new partition entry size limitation of UINT32_MAX/16.
+
+       build: update gnulib submodule to latest
+
+       tests: use scsi_debug to test-for 4k-sector-specific bug
+       * tests/t9010-big-sector.sh: New root-only test.
+       Requires 2.6.31, and the scsi_debug module, /sys/block/... support
+       and an upcoming version of libblkid.
+       * tests/Makefile.am (TESTS): Add t9010-big-sector.sh.
+       Thanks to Mike Snitzer for advice and for pointing me to similar
+       code he wrote to test LVM.
+
+       tests: begin the transition to coreutils' testing framework
+       The existing testing framework makes it hard to diagnose test failures,
+       so I'm switching to one that works better for me, from coreutils.
+       * tests/t-lib.sh: New file.  Mostly from coreutils/tests/test-lib.sh.
+       * tests/Makefile.am (TMPDIR): Update to pass more info to test scripts.
+       (EXTRA_DIST): Add t-lib.sh.
+
+       linux: use libblkid to determine ->phys_sector_size
+       Before this change, creating a memory-mapped disk on a fedora-based
+       system running 2.6.31.1-56.fc12.x86_64 using this command:
+       modprobe scsi_debug dev_size_mb=1025 sector_size=4096
+       and then running "parted -s /dev/sdd mklabel gpt print"
+       would mistakenly print "Sector size (logical/physical): 4096B/512B"
+       The "512B" is what's wrong.  It should be "4096B".
+       * configure.ac: Test for a new-enough blkid library.
+       * libparted/Makefile.am (libparted_la_LIBADD): Add $(LIB_BLKID).
+       * libparted/arch/linux.c (get_minimum_io_size): New function.
+       (_device_set_sector_size): Use it.
+
+       libparted: weaken a diagnostic
+       * libparted/arch/linux.c (_kernel_reread_part_table): Give a more
+       accurate diagnostic.  Reported by Curtis Gedak.
+
+       gpt: verify CRC32 of partition table entry array, too
+       The partition table entry array's CRC was not being verified at all.
+       This adds an interim check.  The full-blown change required to make
+       this implementation conform to the EFI spec will be more invasive.
+       * libparted/labels/gpt.c (gpt_read): Check CRC of PTE array, too.
+       * tests/t0280-gpt-corrupt.sh: New test for this.
+       Reported by Karel Zak.
+
+       doc: mention the "bios_grub" flag
+       I don't like the idea of documenting this "flag setting" option,
+       but it's been in the code for long enough now, and in actual use,
+       that I feel obliged.  In the longer term, we'll probably deprecate
+       it and instead add an interface to set a partition's type independent
+       of mkpart's "type" argument.
+       * doc/parted.texi (set): Mention bios_grub.
+
+       tests: gpt: do not munge GPT data manually
+       Otherwise, an upcoming change would cause this test to fail.
+       * tests/t5000-tags.sh: Do not munge GPT data manually, since that
+       does not update embedded CRCs, and thus renders it invalid.
+       Set the attribute via "set 1 bios_grub on" instead.
+       Also, use "name1" as the partition name, rather than the
+       misleading "primary".
+       Adjust diagnostics: the changes we make are no longer "manual."
+
+2009-10-08  Jim Meyering  <meyering@redhat.com>
+
+       libparted: fix big-endian bug in gpt_get_max_supported_partition_count
+       * libparted/labels/gpt.c (gpt_get_max_supported_partition_count):
+       Convert ->SizeOfPartitionEntry from little-endian to CPU endianness
+       here, too.  This is along the same lines as commit d6e9b3bb, but
+       with the difference that this code is not reachable via the
+       command-line interface.
+
+2009-10-06  Jim Meyering  <meyering@redhat.com>
+
+       post-release administrivia
+       * NEWS: Add header line for next release.
+       * .prev-version: Record previous version.
+       * cfg.mk (old_NEWS_hash): Auto-update.
+
+       version 2.0
+       * NEWS: Record release date.
+
+       gpt: don't malfunction on big-endian systems
+       Numerous GPT tests would fail when run on e.g., big-endian PPC.
+       * libparted/labels/gpt.c (gpt_read): Now that we use the
+       SizeOfPartitionEntry member, be sure to convert from GPT's
+       little-endian on-disk format to to CPU endianness.
+       This bug was introduced via commit 14cce9b2, 2009-06-10, "gpt:
+       fix gpt_read to read all of the partition entries correctly".
+       * libparted/labels/gpt.c (_header_is_valid): Also convert it here.
+       Add a test to ensure that the partition entry size is no larger
+       than the slightly arbitrary UINT32_MAX/16.
+       * NEWS (Bug fixes): Mention it.
+
+       build: update gnulib submodule to latest
+
+       maint: add gnulib's gnu-web-doc-update module
+       * bootstrap.conf (gnulib_modules): Add gnu-web-doc-update
+
+       doc: add pointer to NEWS in README
+       * README: Mention NEWS.
+
+       doc: update README
+       * README (WARNING): Mention upcoming removal of FS-manipulation
+       capabilities and that we'll retain FAT/HFS resize capabilities.
+       Remove an obsolete URL.  Do not encourage email to individuals.
+       Update info-viewing instructions, provide the on-line doc URL.
+
+       tests: resize FAT and HFS file systems
+       Since it looks like we're stuck with keeping at least FAT and HFS
+       file-system resizing support in libparted, we have an obligation to
+       exercise at least some of that functionality.  For now, I've limited
+       this test to shrinking well-aligned partitions by a well-behaved
+       amount.  Curtis Gedak helped come up with a usable test.
+
+       * tests/t3000-resize-fs.sh: New file.
+       Use starting partition offset that is on a cylinder boundary,
+       and increase the partition size to be larger than 256 MiB.
+       When resizing, choose the new size to be exactly one cylinder
+       (8MiB) smaller than the original.
+
+2009-10-06  Hans de Goede  <hdegoede@redhat.com>
+
+       ped_partition_busy: do not call the libparted exception handler
+       Modify libparted/arch/linux.c _partition_get_part_dev() to not call
+       _device_stat() but instead use stat directly, as _device_stat() calls
+       the libparted exception handler, and we don't want this here, the only
+       caller of _partition_get_part_dev() is _partition_is_mounted(), which
+       in turn only gets called by linux_partition_is_busy(), and we don't
+       want to "throw" exceptions from ped_partition_busy().
+
+       This issue was noticed in combination with pyparted as used by
+       anaconda, see: http://bugzilla.redhat.com/527035#c10
+
+2009-10-01  Jim Meyering  <meyering@redhat.com>
+
+       doc: mention the GPT/msftres bug fix
+       * NEWS (Bug fixes): Mention it.
+
+       parted: issue a warning upon any use of a file-system op
+       * parted/parted.c (issue_fs_op_warning): New function.
+       (do_cp, do_mkfs, do_mkpartfs, do_move, do_resize, do_check): Call it.
+       * tests/test-lib.sh: Export the envvar setting,
+       PARTED_SUPPRESS_FILE_SYSTEM_MANIPULATION_WARNING=1 to suppress
+       those warnings while running the few remaining FS-related tests.
+
+       maint: avoid false-positive NULL-deref warning from clang
+       * parted/ui.c: Include <assert.h>.
+       (command_line_get_disk): Add an assertion that command_line_get_device
+       currently guarantees will always be true.  This placates clang regarding
+       its sole NULL-deref warning.
+       (command_line_get_device): Move declarations "down" to first use.
+
+       build: use more gnulib modules for better POSIX compliance
+       * bootstrap.conf (gnulib_modules): Add modules exposed via
+       make CFLAGS=-DGNULIB_POSIXCHECK 2>&1 \
+       |perl -lne '/.* use gnulib module (\S+).*/ and print $1' \
+       |sort |uniq -c|sort -nr
+       Add these: close fsync lseek mkstemp strdup unlink
+
+       maint: function returning "int", did not return a value.
+       * parted/ui.c (init_readline): Return a value (always 0 for now).
+       * parted/parted.c (_init): Handle init_readline's return value.
+
+       maint: remove more dead stores and fix a bug in do_mkpartfs
+       * libparted/fs/ext2/ext2_mkfs.c (ext2_mkfs_create_lost_and_found_inode):
+       Punt: suppress clang's (aka scan-build's) warning.
+       * parted/parted.c (snap_to_boundaries): Remove a dead store.
+       (do_mkpartfs): The apparent dead store to part_name exposed a real bug.
+       In fact, it highlighted that while do_mkpart uses its "part_name"
+       variable (and calls ped_partition_set_name), do_mkpartfs did not.
+       (snap_to_boundaries): Remove dead store.
+       * libparted/unit.c (parse_chs): Likewise, and a leak.
+       * libparted/fs/hfs/reloc_plus.c (hfsplus_cache_from_catalog): Likewise.
+       (hfsplus_cache_from_extent): Remove a dead store.
+       (hfsplus_cache_from_attributes): Likewise.
+       * libparted/fs/hfs/advfs_plus.c (hfsplus_btree_search): Likewise.
+       * libparted/fs/ext2/ext2_block_relocator.c (ext2_block_relocate_shrink):
+       Remove dead store and corresponding decl.
+       * parted/ui.h: Mark 2nd parameter as non-null.
+
+       maint: remove dead store code and declarations
+       * libparted/labels/bsd.c (bsd_partition_set_flag): Remove dead store
+       and corresponding decl.
+       * libparted/arch/linux.c (init_ide): Likewise.
+       (_dm_maptype): Likewise.
+       (_mount_table_search): Likewise.
+       * libparted/fs/amiga/asfs.c (_asfs_probe): Likewise.
+       * libparted/labels/mac.c (mac_alloc_metadata): Likewise.
+       * libparted/labels/rdb.c (amiga_write): Likewise.
+       (amiga_write): Again.
+       * libparted/fs/amiga/apfs.c (_generic_apfs_probe): Likewise.
+       * libparted/fs/hfs/reloc_plus.c (hfsplus_effect_move_extent): Likewise.
+       * libparted/fs/hfs/reloc.c (hfs_effect_move_extent): Likewise.
+       * libparted/labels/dos.c (probe_partition_for_geom): Remove dead
+       store in "can't happen" case.
+
+       make PED_ASSERT handling sane: abort on false condition
+       Upon a failed PED_ASSERT, Do not ask the interactive user if they want
+       to continue.  This change will affect any code that expects to be able
+       to continue after a failed PED_ASSERT condition.  However, such code is
+       so fundamentally broken that this change is required.  If you require
+       to be able to continue after a false condition, then the code must
+       not use a macro named like PED_ASSERT.  This change was motivated by
+       my desire to use the clang static analysis tool.  Without this change,
+       there were over 300 mostly-false-positive reports.  With it, just 31,
+       almost all legitimate.
+       * libparted/debug.c (ped_assert): Remove first parameter.
+       It is now tested via the macro.
+       Now, this function always aborts, which helps clang understand.
+       Do not ask the interactive user if s/he wants to continue.
+       * include/parted/debug.h (PED_ASSERT): Test condition here,
+       not in ped_assert.
+       * libparted/disk.c (ped_disk_remove_partition): Remove the label
+       that was used only upon failing PED_ASSERT.  Now that PED_ASSERT
+       always aborts for a false condition, that would have been dead code.
+       (ped_disk_new_fresh): Likewise.
+
+       build: avoid a shadowing warning
+       * libparted/fs/hfs/advfs_plus.c (hfsplus_get_empty_end): Rename local,
+       "link" to avoid shadowing the syscall.
+       * libparted/fs/hfs/advfs.c (hfs_get_empty_end): Likewise.
+
+2009-09-29  Jim Meyering  <meyering@redhat.com>
+
+       fat-FS: do not modify fat file system support
+       Revert "Add fat support for sector_size > 512."
+       This reverts commit 14395c356664a3b88f3929a6a3ad69bca374f70d.
+
+       Revert "Fix compile failures."
+       This reverts commit 7603e404ee60f2f892be380a23c390f4638f451f.
+
+       doc: update NEWS
+       * NEWS: Mention >512-byte sector support.
+
+       build: use newer bootstrap script
+       * bootstrap: Update from coreutils.
+
+       build: update gnulib submodule to latest
+
+       maint: update most copyright year lists to include 2009
+       I used this command:
+       make update-copyright \
+         UPDATE_COPYRIGHT_FORCE=1 UPDATE_COPYRIGHT_USE_INTERVALS=1
+
+       tests: enable more syntax-checks
+       * cfg.mk: Enable a few more tests.
+       * include/parted/debug.h: Remove useless parens to avoid
+       triggering failure of the sc_useless_cpp_parens syntax-check.
+       * libparted/arch/linux.h: Likewise.
+       * libparted/libparted.c: Likewise.
+
+       tests: enable a few syntax-checks
+       * cfg.mk (local-checks-to-skip): Remove a few useless exclusions
+       and enable a few syntax checks.
+       * libparted/arch/linux.c (linux_destroy): Avoid triggering the
+       sc_cast_of_argument_to_free check.
+       * parted/strlist.c (str_list_destroy_node): Likewise.
+
+2009-09-24  Jim Meyering  <meyering@redhat.com>
+
+       tests: gpt: exercise creating all partition types; check for msftres bug
+       Ensure that a newly-created partition in a GPT partition table has no
+       'flag' set, by default.  This test also exercises setting the "name"
+       on a partition and creates one partition of each supported type.
+       * tests/t0220-gpt-msftres.sh: New file.
+       * tests/Makefile.am (TESTS): Add that new file.
+
+2009-09-24  Keshav P R  <skodabenz@rocketmail.com>
+
+       gpt: don't use msftres flag for FAT/NTFS partitions
+       This patch corrects the bug in parted due to which any FAT(12,16,32)
+       or NTFS partition(s) is, by default, incorrectly set as "Microsoft
+       Reserved Partition" type in GPT disks.  With this change, parted
+       defaults to setting the FAT/NTFS Partitions partition type to
+       Linux/Windows Basic Data Partition which will make them accessible
+       in Mac OS X and Windows.
+
+       Reported by hramrach@centrum.cz in <http://bugs.debian.org/441033>,
+       with suggested change by Osamu Aoki <osamu@debian.org>.
+       Keshav P R <skodabenz@rocketmail.com> wrote the above and prepared
+       this patch.
+
+2009-09-24  Jim Meyering  <meyering@redhat.com>
+
+       ui: do not initialize readline (which would output!) in --script mode
+       Running parted with its --script (-s) option would, surprisingly,
+       print a few control characters if TERM were set appropriately,
+       and if readline and curses support were compiled in.
+       This fixes it not to do that.
+       * parted/parted.c (_init): Initialize readline support only after
+       parsing command line options, so we can skip it in --script mode.
+       * parted/ui.c (init_readline): New function.
+       Body extracted from ...
+       (init_ui): ...here.
+       * parted/ui.h (init_readline): Declare.
+       * tests/t0010-script-no-ctrl-chars.sh: New file.  Test for the above.
+       * tests/Makefile.am (TESTS): Add that new file.
+
+2009-09-18  Jim Meyering  <meyering@redhat.com>
+
+       loop: don't infloop
+       Correct a bug introduced in commit 52815877, 2007-06-15,
+       "Make loop_probe and loop_clobber work with sector_size > 512, too."
+       * libparted/labels/loop.c (loop_clobber): Initialize "i" before
+       the loop, not inside it.
+       * tests/t0400-loop-clobber-infloop.sh: Test for this.
+       * tests/Makefile.am (TESTS): Add it.
+
+2009-09-17  Jim Meyering  <meyering@redhat.com>
+
+       tests: correct t1100-busy-label
+       This test had two problems: FS-manipulation (creates a FAT fs) even
+       for non-512-byte sectors, and it had a now-unexpected line in the
+       expected output of its final command.
+       * tests/t1100-busy-label.sh: Use require_512_byte_sector_size_,
+       so that we skip this test when in non-512-sector size mode.
+       Remove the now-bogus line.
+       Note: this test is not normally run.
+       In order to run it, you have to run as root and set two envvars, e.g.,
+       sudo make check DEVICE_TO_ERASE=/dev/sde DEVICE_TO_ERASE_SIZE=16.4MB
+
+       build: update gnulib submodule to latest
+
+       build: sync bootstrap from coreutils
+       * bootstrap: Update from coreutils.
+
+2009-08-28  Hans de Goede  <hdegoede@redhat.com>
+
+       linux-commit: do not unnecessarily open partition device nodes
+       After patching parted with my do-not-use-BLKPG patch, I started
+       to get EBUSY errors on commit_to_os. Note this is not caused
+       by the do-not-use-BLKPG patch, this was already happening, but
+       parted was silently ignoring the errors (and the kernel was
+       not notified of the changes, which is bad).  The error now
+       actually gets reported.
+
+       The problem turns out to be in libparted/arch/linux.c's
+       _flush_cache function, which walks all the partitions of the
+       disk and does BLKFLSBUF calls on them.  This causes the following:
+
+       commit_to_os -> device_open -> fd = open /dev/sda ->
+       _flush_cache -> for each /dev/sda# open, ioctl, close
+       -> ioctl(fd, BLKRRPART) -> EBUSY
+
+       What is happening here is that the:
+       for each /dev/sda# open, ioctl, close
+
+       Is causing udev change events for all the /dev/sda#
+       nodes, which causes udev to call blkid on all these nodes
+       (on systems which use DeviceKit), so blkid has /dev/sda# nodes
+       open while BLKRRPART gets called on /dev/sda -> EBUSY.
+
+       I've checked with two independend storage subsystem kernel
+       developers, and /dev/sda and /dev/sda#, guarantee cache coherency
+       now-a-days.  So there is no need to do this for 2.6, which also
+       eliminates the need to call _flush_cache() on device open at all.
+
+       * libparted/arch/linux.c (_have_kern26): New function.
+       (_flush_cache): For linux kernels 2.6 and newer, don't flush
+       partition devices.
+       (linux_open): Skip _flush_cache on newer kernels here, too.
+
+       linux-commit: remove the use of the BLKPG ioctl
+       While testing partitionable mdraid I noticed that the kernels
+       view of the partition table never changes even though I was successfully
+       making commit_to_os() calls.
+
+       This has let to me diving into libparted's commit_to_os() code for Linux
+       and there are multiple issues hiding in there:
+
+       1) Parted reads /sys/block/foo/range to determine how many partitions
+          the device type supports and then makes BLKPG ioctl's to update the
+          kernels view of the partition table for partitions which fall into
+          this range. However for example /sys/block/sda/range contains 16,
+          there are 2 issue with libparted using this number:
+          1) scsi major's only support 15 partitions, 1 of the range of 16
+             is reserved for the whole device, yet libparted will try
+             to notify the kernel about 16 partitions if present
+          2) If the major's partition minor's run out, the kernel will switch
+             to the mdp major for the other partitions, iow range no longer
+             limits the number of partitions.
+
+       2) libparted assumes the user knows what he is doing, and will ignore
+          -ebusy errors for partitions, assuming that the user is smart enough
+          to only change unused partitions. Parted does this without checking
+          if the partitions which return ebusy actually are unchanged causing
+          REAL errors to get unreported (BAD, really really BAD)
+
+       3) because of 1) libparted will only sync 1 partition on /dev/md#
+          devices (would be 0 if not for the of by 1 bug as all md#p#
+          partitions use the mdp major), and it fails to even do that without
+          reporting an error.
+
+       ###
+
+       1) we can fix by simply not checking /sys/block/foo/range, but instead
+          just syncing max partitions.
+
+       2) is more troublesome, we could just make -EBUSY n error,
+          but that may annoy / bug some users. OTOH in certain cases libparted
+          already falls back to BLKRRPART which will return EBUSY so users
+          should already be prepared to handle EBUSY
+
+       3) Could be fixed by making libparted recognize mdraid as a device type
+          and except mdraid from using BLKPG, like it already is doing with
+          DASD, but it might be better to just get rid of using BLKPG all
+          together.  See below.
+
+       An even bigger problem IMHO is the use of the BLKPG ioctl instead of
+       BLKRRPART at all. What this does is tell the kernel parted's view
+       of the partition table and make it use that, instead of telling
+       the kernel to reread the partition table.  According to the parted
+       sources this is done for the case where the kernel does not know
+       the disklabel type. However as soon as the system is rebooted, the
+       system will be using the kernel's view. So IMHO it would be much
+       better to always use the kernels view and just always call BLKRRPART
+       in commit_to_os(), this would solve all of the above issues, *and*
+       make the way the system views the partition table consistent between
+       just after running parted and after a reboot.
+
+       I've attached a patch which removes the use of the BLKPG ioctl, notice
+       that this also removes a lot of special case code and workarounds,
+       which existence to me clearly indicates that using the BLKPG ioctl is
+       a bad idea.
+
+       * libparted/arch/linux.c (linux_disk_commit): Remove the use of the
+       BLKPG ioctl.
+       (_blkpg_add_partition, _blkpg_part_command, _blkpg_remove_partition):
+       (_device_get_partition_range, _disk_sync_part_table, _have_blkpg):
+       (_have_devfs): Remove functions thus rendered unused.
+
+2009-08-28  Jim Meyering  <meyering@redhat.com>
+
+       tests: make two partition-related tests work for other sector sizes
+       These two root-only tests would fail with the PARTED_SECTOR_SIZE envvar
+       set to anything other than 512.  Now they also work for multiples.
+       * tests/t4100-dvh-partition-limits.sh: Make sector-size agnostic.
+       * tests/t4100-msdos-partition-limits.sh: Likewise.
+
+       tests: make it easier to diagnose loop_setup_ failure
+       * tests/lvm-utils.sh: Don't redirect stderr to /dev/null.
+
+       tests: avoid spurious failure due to extra space in diagnostic
+       * libparted/labels/pt-tools.c (ptt_partition_max_start_len):
+       Remove stray space in diagnostic that was causing the root-only
+       regression test, t4100-dvh-partition-limits.sh, to fail.
+
+       tests: avoid spurious failure on "nodev" mounted partition
+       * tests/t8000-loop.sh: Skip this test if loop_setup_ fails.
+       * tests/t6000-dm.sh: Likewise.
+
+2009-08-28  Hans de Goede  <hdegoede@redhat.com>
+
+       parted: avoid unnecessary open/close on commit, and thus udev activity
+       * libparted/disk.c (ped_disk_commit): Open/close the underlying file
+       descriptor in this function, so that callees, ped_disk_commit_to_dev
+       and ped_disk_commit_to_os do not each perform open/close syscalls.
+       This saves an open/close pair, and thus avoids unneeded udev
+       activity on Linux.
+
+       Before this change, when calling commit() on a ped_disk, the
+       following would happen:
+
+       open /dev/sda
+       write partition table
+       close /dev/sda
+       open /dev/sda
+       ioctl (BLKRRPART)
+       close /dev/sda
+
+       This is rather inefficient, and causes 2 udev change events to be fired
+       for /dev/sda (+ the change events from the BLKRRPART), causing all kind
+       of scanning (blkid & friends) twice.
+
+       This patch fixes things to only open the device once.
+
+2009-08-26  Petr Uzel  <petr.uzel@suse.cz>
+
+       dos: adjust variable declarations
+       * libparted/labels/dos.c (write_ext_table): Move declaration of S down
+       to just before its first use.
+       Fix alignment of lba_offset declaration.
+
+       dos: factor out and define DOS_N_PRI_PARTITIONS
+       * dos.c (DOS_N_PRI_PARTITIONS): Define.
+
+       dos: use sizeof(variable) instead of sizeof(type)
+       * libparted/labels/dos.c (write_ext_table): Use sizeof(variable)
+       instead of sizeof(type)
+       (write_empty_table, msdos_write): Likewise.
+
+       tests: t0202-gpt-pmbr.sh: various fixes
+       * tests/t0202-gpt-pmbr.sh: use $bootcode_size variable instead
+       of plain 446.  Do not use /dev/urandom since it might not exist.
+
+       tests: t2300-dos-label-extended-bootcode.sh: various fixes
+       * tests/t2300-dos-label-extended-bootcode.sh:
+       - fix typo where only first 400B of fake bootcode was installed
+       - use bootcode_size variable and increase its value from 440 to 446
+       - do not use /dev/urandom since it might not exist
+
+2009-08-22  Jim Meyering  <meyering@redhat.com>
+
+       build: ignore more generated files
+       * .gitignore: Ignore a few more build artifacts.
+
+       tests: don't use "echo -n"
+       * tests/t7000-scripting.sh: Use printf, not "echo -n", for portability.
+
+2009-08-21  Petr Uzel  <petr.uzel@suse.cz>
+
+       test for the bootcode-in-extended-partition fix
+       * tests/t2300-dos-label-extended-bootcode.sh: New file.
+       * tests/Makefile.am (TESTS): Add t2300-dos-label-extended-bootcode.sh.
+
+       do not discard bootcode from extended partition
+       * libparted/labels/dos.c (write_ext_table): Do not discard
+         bootcode from extended partition on msdos label when some of
+         the logical partitions are changed
+
+2009-08-21  Joel Granados Moreno  <jgranado@redhat.com>
+
+       Remove unneeded test.
+       This test made sure that "md" was ignored when doing partition specific
+       actions.  We have added code that allows this scan once more, therefore
+       the test is no longer needed.
+
+       * tests/t6001-dm-ignoremd.sh: Remove file.
+       * tests/Makefile.am: Remove the test file from the list of tests.
+
+       Compensate for different behavior in t7000 test.
+       When the t7000 test was first engineered the "n" did not appear in the
+       output when testing mkpart & mkpartfs.  ATM, for an unknown reason,
+       the "n" is being echoed in the resulting string causing test failure
+       when compared with the errI string.  This patch attempts to make both
+       behaviors (with and without the echoed "n") pass the test.
+
+       * tests/t7000-scripting.sh: Make sure we don't have an " n" at the end
+       of the output string.
+
+2009-08-21  Gilles Espinasse  <g.esp@free.fr>
+
+       Fix 2 typos.
+       * libparted/labels/fdasd.c (fdasd_enqueue_new_partition): Fix typo in
+       comment.
+       * parted/parted.c (_init_commands): Fix typo in message.
+
+2009-08-18  Jim Meyering  <meyering@redhat.com>
+
+       build: update dist-check rules
+       * dist-check.mk: Merge from coreutils.
+
+       build: ignore new -Wjump-misses-init warnings
+       * configure.ac: Ignore warnings from gcc's new -Wjump-misses-init.
+
+       build: update from gnulib
+       * gnulib: Update submodule to latest.
+       * bootstrap.conf (gnulib_modules): Add update-copyright
+       * cfg.mk (update-copyright-env): Define.
+
+2009-08-12  Otavio Salvador  <otavio@ossystems.com.br>
+
+       label/dasd: add missing prototype for dasd_get_max_supported_partition_count
+
+2009-08-06  Colin Watson  <cjwatson@ubuntu.com>
+
+       Use fsync rather than O_DIRECT
+       O_DIRECT doesn't work on all filesystems (e.g. tmpfs), and fsync does
+       just as good a job to ensure that buffers are flushed.
+
+       Based on
+       http://lists.alioth.debian.org/pipermail/parted-devel/2008-August/002392.html
+       by Olaf Hering, but with added fsync/close error checking.
+
+2009-07-31  Joel Granados Moreno  <jgranado@redhat.com>
+
+       Update the NEWS has.
+       * cfg.mk (old_NEWS_hash): Update the NEWS hash.
+
+2009-07-30  Joel Granados Moreno  <jgranado@redhat.com>
+
+       Rescue the news file from the stable-1.8.x branch
+       * NEWS:  Add all the contents from the NEWS file from the stable-1.8.x
+       branch.  Did some indentation and addeded some "**" where needed.
+
+2009-07-27  Joel Granados Moreno  <jgranado@redhat.com>
+
+       Explicitly handle the signing key.
+       If we are sure that we have the key, we are able to use it in any
+       subroutine (like make major).
+
+       * build-aux/parted-release (_find_signingkey): New function.
+       (_do_release): Use the key_id to sign the tag and to execute `make
+       major`.
+
+       Minor corrections to the release README.
+       * README-release: Change "$v" to "$VERSION", its more explicit.  Include
+       a reminder to add the definition of parted to the release mail.
+
+2009-07-24  Colin Watson  <cjwatson@ubuntu.com>
+
+       linux: recognize md devices again, but know they can't be partitioned
+       * libparted/arch/linux.c (_skip_entry): Don't skip "md" devices.
+       (_has_partitions): New function; "loop" labels can't be partitioned.
+       (_blkpg_add_partition, _blkpg_remove_partition, _dm_add_partition,
+       _have_blkpg): Don't attempt to apply partition table changes to
+       unpartitionable devices.
+
+2009-07-24  Jim Meyering  <meyering@redhat.com>
+
+       dos: plug just-introduced leaks on error path
+       * libparted/labels/dos.c (write_ext_table): Also free new buffer
+       on error paths.
+
+       dos: don't write sector-size (>512) bytes from a 512-byte buffer
+       * libparted/labels/dos.c (write_ext_table): Fix this error reported
+       by valgrind, by allocating/using a sector-sized buffer, rather than
+       using a 512-byte buffer on the stack.
+       Syscall param write(buf) points to uninitialised byte(s)
+          at 0x33E12D13A0: __write_nocancel (in /lib64/libc-2.10.1.so)
+          by 0x432B48: linux_write (linux.c:1782)
+          by 0x42648C: write_ext_table (dos.c:1063)
+          by 0x426471: write_ext_table (dos.c:1059)
+          by 0x4268C5: msdos_write (dos.c:1094)
+          by 0x40E9C4: ped_disk_commit_to_dev (disk.c:479)
+          by 0x40EA08: ped_disk_commit (disk.c:502)
+          by 0x408AE0: test_duplicate (disk.c:79)
+          by 0x4C249ED: srunner_run_all (in /usr/lib64/libcheck.so.0.0.0)
+          by 0x4089AD: main (disk.c:121)
+        Address 0x4e48e00 is 512 bytes inside a block of size 1,024 alloc'd
+          at 0x4A05260: memalign (vg_replace_malloc.c:460)
+          by 0x4A05317: posix_memalign (vg_replace_malloc.c:569)
+          by 0x432B06: linux_write (linux.c:1777)
+          by 0x42648C: write_ext_table (dos.c:1063)
+          by 0x426471: write_ext_table (dos.c:1059)
+          by 0x4268C5: msdos_write (dos.c:1094)
+          by 0x40E9C4: ped_disk_commit_to_dev (disk.c:479)
+          by 0x40EA08: ped_disk_commit (disk.c:502)
+          by 0x408AE0: test_duplicate (disk.c:79)
+          by 0x4C249ED: srunner_run_all (in /usr/lib64/libcheck.so.0.0.0)
+          by 0x4089AD: main (disk.c:121)
+
+       sun: don't read freed memory
+       * libparted/labels/sun.c (_use_old_info): Rename from
+       _probe_and_use_old_info.  Don't read sector 0 here.
+       (sun_write): Read it here instead.
+       Write not a constant-sized 512-byte buffer, but the sector-sized
+       buffer just read above.
+
+       gpt: adjust _write_pmbr[*] to work with >512-byte sectors
+       * libparted/labels/gpt.c (_write_pmbr): Adjust, to work with
+       larger-than 512-byte sectors.
+       [*] commit 14a15891 "gpt: preserve first 446 bytes of the PMBR"
+
+       tests: skip t2100-mkswap.sh for >512-byte SS, now that it fails
+       * tests/t2100-mkswap.sh: Use require_512_byte_sector_size_
+
+       build: arrange for "make check" to run the tests four times,
+       each using a different simulated partition size.  First with an
+       explicit size of 1024, then 2048, then 4096, and finally with
+       the default of 512.
+       * Makefile.am (check-other-sector_sizes): New rule.
+       (check): Depend on it.
+       * README-big-sector: Update accordingly.
+       Suggestion from Otavio Salvador.
+
+       build: enable many warnings
+       * configure.ac: New configure-time option: --enable-gcc-warnings.
+       * bootstrap.conf: Use gnulib modules: warnings manywarnings.
+       * debug/Makefile.am: Define AM_CFLAGS.
+       * libparted/Makefile.am: Likewise.
+       * libparted/tests/Makefile.am: Likewise.
+       * parted/Makefile.am: Likewise.
+       * partprobe/Makefile.am: Likewise.
+       * debug/clearfat/Makefile.am: Likewise.
+       * libparted/labels/Makefile.am: Likewise.
+
+       build: avoid new warnings
+       * debug/clearfat/clearfat.c (usage): Declare static.
+       * partprobe/partprobe.c (usage): Likewise.
+       * libparted/cs/natmath.c (abs_mod, extended_euclid): Declare static.
+       * libparted/timer.c (PED_TIMER_START_DELAY): Remove unused definition.
+       * libparted/unit.c (ped_unit_format_custom_byte): Remove an unnecessary
+       cast-to-double.
+
+       sun: remove obsolete FIXME comments
+       * libparted/labels/sun.c:
+
+       ui: avoid infloop in testing
+       These commands would provoke an infinite loop:
+       ss=4096 N=100; dd if=/dev/zero of=testfile bs=${ss}c count=$N
+       ./parted ---pretend-input-tty testfile -- mklabel gpt mkpart \
+         primary ext3 1s -1s < /dev/null
+       * parted/ui.c (command_line_prompt_words): Treat EOF like ^C.
+
+       tests: skip FS-related part when sector size is larger than 512
+       * tests/t7000-scripting.sh: Adapt to work with large sector sizes.
+
+       tests: handle SS>512, clean up, add consistency check
+       * tests/t5000-tags.sh: Don't fail for sector size of 4096 and greater.
+
+       tests: t4000-sun-raid-type: accommodate arbitrary sector sizes
+       * tests/t4000-sun-raid-type.sh: Make the expected output depend
+       on the sector size.
+
+       tests: reenable sun label tests
+       * libparted/tests/common.c (_implemented_disk_label): Remove "sun".
+
+       disk.c: add assertions
+
+       sun: don't segfault for sector sizes larger than 512
+       * libparted/labels/sun.c Include "pt-tools.h" and "verify.h".
+       (sun_verify_checksum): Make parameter "const".
+       (sun_probe): Don't always return 0, now that this code works.
+       (sun_probe): Rewrite to work with sector sizes larger than 512.
+       (_probe_and_use_old_info): Likewise.
+       (sun_clobber): Likewise.
+       (sun_read): Likewise.
+       (_check_geometry_sanity) Don't accept all-zeros c,h,s.
+       Add assertions and uses of verify.
+       (sun_alloc): Remove bogus cast.
+       Don't modify through const pointer.
+
+       msdos: clean-up (no semantic change)
+       * libparted/labels/dos.c (msdos_write): Remove useless initialization.
+       (msdos_clobber): Remove unnecessary cast.
+
+       msdos: do not scale counts by sector_size/512
+       * libparted/labels/dos.c (chs_to_sector, linear_start):
+       (linear_end, fill_raw_part, fill_ext_raw_part_geom):
+       (sector_to_chs): Scaling (e.g., a starting sector number) by
+       sector_size/512 loses information when sector_size > 512.  Don't do it.
+
+       parted-ui: when failing, include more information in an unusual case
+       * libparted/cs/geom.c (ped_geometry_set): Include starting sector
+       number and length in diagnostic.  To trigger this, run the following:
+       dev=f; rm -f $dev; dd if=/dev/null of=$dev bs=1 seek=100k
+       PARTED_SECTOR_SIZE=2048 ./parted -s $dev mklabel msdos
+       PARTED_SECTOR_SIZE=2048 ./parted -s $dev mkpart primary 1s 40s
+       PARTED_SECTOR_SIZE=2048 ./parted -s $dev p
+       Error: Can't have the end before the start! (start sector=128 \
+         length=-78)
+
+       tests: t2200-dos-label-recog.sh: adapt to work with larger sector size
+       Using a 100K image is inadequate for larger sector sizes, since it
+       triggers a bug whereby the device length (in sectors) smaller than
+       the cylinder_size: from dos.c:
+         if (!ped_geometry_init (&start_geom, dev, cylinder_size,
+             dev->length - cylinder_size))
+       That would pass a negative value for the 3rd argument.
+       * tests/t2200-dos-label-recog.sh: Use an image of size 10MB, not 100K.
+
+       tests: add infrastructure: when skipping a test, say why
+       * tests/Makefile.am (TESTS_ENVIRONMENT): Arrange for the first line
+       of 'skip_test_'s argument to be printed on stderr.
+       * tests/test-lib.sh (skip_test_): New function.
+
+       tests: skip FS-related tests when sector size != 512
+       * tests/test-lib.sh (require_512_byte_sector_size_): New function.
+       * tests/t1000-mkpartfs.sh: Skip when sector size != 512.
+       * tests/t3100-resize-ext2-partion.sh: Likewise.
+       * tests/t3000-constraints.sh: Likewise.
+       * tests/t2000-mkfs.sh: Likewise.
+       * tests/t1700-ext-probe.sh: Likewise.
+       * tests/t1500-small-ext2.sh: Likewise.
+
+       tests: t0100-print.sh: adjust to work with arbitrary sector size
+       * tests/t0100-print.sh: Parameterize on $sector_size_.
+       Remove sed xform that hard-coded for 2048.
+
+       tests: revamp t4100-starting-sector.sh to work with other sector sizes
+       * tests/t4100-msdos-starting-sector.sh: Adjust to work with arbitrary
+       PARTED_SECTOR_SIZE.
+
+       tests: correct t2200-dos-label-recog.sh
+       * tests/t2200-dos-label-recog.sh: Concatenate output from successive
+       partition-creation commands, rather than letting output from the
+       second one clobber that of the first.
+
+2009-07-24  Joel Granados Moreno  <jgranado@redhat.com>
+
+       put the maximum sector checks in pt-tools.c
+       * libparted/labels/dos.c (msdos_partition_check): Use new
+       ptt_partition_max_start_len function to test for len and start maxs.
+       * libparted/labels/dvh.c (msdos_partition_check): Likewise.
+       * libparted/labels/pt-tools.c (ptt_partition_max_start_len):
+       New function.
+       * libparted/labels/pt-tools.h: Likewise.
+       * po/POTFILES.in: Add pt-tools.c to the translation list.
+
+       put partition-table-specific logic in the corresponding files
+       * include/parted/disk.h (struct _PedDiskOps) [partition_check]:
+       New member function.
+       * libparted/disk.c (_check_partition): Replace open-coded tests with
+       use of the new ->partition_check().
+       (_partition_max_start, _partition_max_len): Remove functions.
+
+       * libparted/labels/dvh.c (dvh_partition_check): New function.
+       * libparted/labels/dos.c (dos_partition_check): Likewise.
+       * libparted/labels/aix.c (aix_partition_check): New stub.
+       * libparted/labels/bsd.c (bsd_partition_check): Likewise.
+       * libparted/labels/gpt.c (gpt_partition_check): Likewise.
+       * libparted/labels/loop.c (loop_partition_check): Likewise.
+       * libparted/labels/mac.c (mac_partition_check): Likewise.
+       * libparted/labels/pc98.c (pc98_partition_check): Likewise.
+       * libparted/labels/rdb.c (rdb_partition_check): Likewise.
+       * libparted/labels/sun.c (sun_partition_check): Likewise.
+
+2009-07-24  Jim Meyering  <meyering@redhat.com>
+
+       * .gitignore: Ignore more.
+
+       tests: clean up partition-table-testing code
+       * libparted/tests/common.c (_implemented_disk_label): Record here
+       that sun and pc98 are not yet implemented...
+       * libparted/tests/label.c: ...rather than in 4 places in this file.
+
+       tests: improve coverage in label tests
+       * libparted/tests/label.c (create_disk): Increase image size from
+       20MB to 80MB, so that tests with PARTED_SECTOR_SIZE=8192 don't
+       fail right away.
+       (START_TEST): Don't skip the "loop" type.  It works now.
+
+       tests: make t8000-loop.sh stop immediately upon failiure
+       * tests/t8000-loop.sh (immediate): ... to avoid cascading.
+
+       tests: fix the final test failure on RHEL 5.3
+       * tests/t1700-ext-probe.sh (dev): Use mkfs.$type, not mkfs -t $type.
+       The latter doesn't work on RHEL5: a file system created with
+       "mkfs -F -t ext3" appears to be created as ext2.
+
+       tests: skip xfs-requiring tests when mkfs.xfs is not installed
+       * tests/test-lib.sh (require_xfs_): New function.
+       * tests/t4100-dvh-partition-limits.sh: Use it.
+       * tests/t4100-msdos-partition-limits.sh: Likewise.
+
+       tests: skip t7000-scripting.sh if configure without readline
+       Otherwise, that test would fail due to slight differences in output.
+       * tests/Makefile.am (TESTS_ENVIRONMENT): Define CONFIG_HEADER.
+       * tests/t7000-scripting.sh: Skip if configured without readline.
+
+       tests: don't infloop for manual test invocation with unrecognized option
+       * tests/test-lib.sh: Diagnose an invalid option.
+
+       tests: add one to exercise the dos/gpt seg-faulting bug
+       * tests/t0300-dos-on-gpt.sh: Test for this bug.
+       * tests/Makefile.am (TESTS): Add it to the list.
+
+       gpt_clobber: avoid segfault when 512 < sector_size
+       * libparted/labels/gpt.c (gpt_clobber): Rewrite not to use a
+       fixed-size buffer assuming a 512-byte sector.
+       Eliminate entirely a buffer that is allocated (not long enough)
+       and zeroed-out solely so to help zero out a few sectors.
+       Instead, use the new ptt_clear_sectors function.
+
+       ptt_clear_sectors: new function
+       * libparted/labels/pt-tools.c (ptt_clear_sectors): New function.
+       * libparted/labels/pt-tools.h: Declare.
+
+       linux_write: use sector_size, not hard-coded 512
+       * libparted/arch/linux.c (linux_write): Use sector_size,
+       not a hard-coded 512, to find start of last sector.
+
+       parted/ui.c: Include <config.h> before everything else
+
+       * README-big-sector: New file.
+
+       reenabling probe-related code exposed problems with amiga and bsd
+       * libparted/tests/common.c (_implemented_disk_label): Pretend they're
+       not implemented, so we skip them, temporarily.
+
+       tests: re-enable "mac" tests
+       * libparted/tests/label.c: Remove "mac" exclusion.
+
+       mac clone: avoid failed assertion for sector size > 512
+       * libparted/labels/mac.c (mac_duplicate): Do not assume that
+       the first sector of the partition-map partition is "1".
+
+       Running this: cd libparted/tests &&
+       PARTED_SECTOR_SIZE=1024 CK_FORK=no valgrind ./label
+       would result in a failed assertion:
+
+         ped_disk_remove_partition (...) at disk.c:1897
+         1897  PED_ASSERT (part->part_list == NULL, goto error);
+
+       At first glance, it looked like the free(part) in
+       mac_partition_destroy was the culprit.  And removing that free
+       does indeed avoid the failed assertion.  However, not only does
+       the name "mac_partition_destroy" imply/require the "free", but
+       all other *_partition_destroy functions free their PART parameter,
+       so removing this free statement cannot be the solution.
+
+       Another possibility is that mac_duplicate's use of
+       ped_disk_remove_partition is in error.  Removing it appears
+       to solve the problem, but I don't know why that code is removing
+       the partition-map partition manually, so can't safely remove
+       such a thing.
+
+       The real problem is that with >512-byte sectors, the "1" in this
+       code from mac_duplicate is wrong:
+
+         partition_map = ped_disk_get_partition_by_sector (new_disk, 1);
+         PED_ASSERT (partition_map != NULL, return 0);
+         ped_disk_remove_partition (new_disk, partition_map);
+
+       E.g., with 1024-byte sectors, the desired partition-map
+       partition starts at sector 2, so the above gets the tiny
+       metadata partition in the gap.  Calling ped_disk_remove_partition
+       to remove a metadata partition provokes some nasty corruption.
+       The desired first-sector number is old_mac_data->ghost_size, not "1".
+
+       * libparted/labels/mac.c (mac_duplicate): Remove dead code.
+
+       mac partitions pass all label+disk tests @1024 & @2048 sector size
+       * libparted/labels/mac.c (mac_read): Allow for variable sector size.
+       (_pad_raw_part): Likewise.
+       (get_pme): New convenience function, adapted to work for
+       variable sector size and factored out of 4 functions:
+       (_generate_raw_part): ...here,
+       (_generate_raw_freespace_part): ...here,
+       (_generate_empty_part): ...here,
+       (_get_first_empty_part_entry): ...and here.
+
+       mac.c (_disk_analyse_ghost_size): allow >512-byte sector size
+       * libparted/labels/mac.c (_disk_analyse_ghost_size):
+
+       mac.c: remove dead code
+       * libparted/labels/mac.c (mac_partition_new): Remove dead code.
+       Return "NULL", not "0".
+
+       make "mac" partition table support pass the 512-byte ./label tests
+       * libparted/labels/mac.c (mac_probe, mac_clobber): FIX!
+
+       factor out the read_sector function
+       * libparted/labels/pt-tools.c (ptt_read_sector): New function.
+       Factored out of...
+       * libparted/labels/aix.c (aix_probe, aix_clobber, read_sector):
+       * libparted/labels/bsd.c (bsd_probe, bsd_clobber, bsd_read)
+       (_probe_and_add_boot_code, read_sector):
+       * libparted/labels/dos.c (_, msdos_probe, msdos_clobber)
+       (read_table, msdos_write, msdos_disk_type, read_sector):
+       * libparted/labels/gpt.c (gpt_probe, gpt_disk_type, read_sector):
+       * libparted/labels/loop.c (loop_probe, loop_read, loop_disk_type)
+       (read_sector):
+       * libparted/labels/mac.c (_, mac_probe, mac_read)
+       (write_block_zero, mac_disk_type, read_sector):
+       * libparted/labels/pt-tools.h: Declare.
+
+       fix >512-byte sector label/disk-test failure
+       * libparted/tests/disk.c: Include xstrtol.h.
+       (get_sector_size): New function: get sector size from the environment.
+       (create_disk): Use the new function to calculate a usable size,
+       rather than hard-coding the 512-byte-sector-specific size of 20MB.
+       * libparted/tests/common.c (_create_disk): Change meaning (and name)
+       of parameter to be size in bytes, not MiB.
+       Adjust callers.
+       * po/POTFILES.in: Add lib/xstrtol-error.c.
+
+       linux.c: also set phys_sector_size. Must be the same.
+
+       tests: Phew! finally make t5000-tags.sh work with >512-byte sectors
+       * tests/t5000-tags.sh: Many adjustments, along lines of t0200-gpt.
+       Also, be explicit: bios_boot_magic goes in 2nd *sector*.
+
+       Don't hard-code 512 for sector-size.
+       We'd get the wrong value for dev->length.
+       * libparted/arch/linux.c (init_file): In computing dev->length,
+       divide by dev->sector_size (not 512) to compute number of sectors.
+       Define dev->sector_size earlier.
+
+       test basic GPT functionality earlier
+       * tests/t0250-gpt.sh: New file.
+       * tests/Makefile.am (TESTS): Add it.
+
+       tests: avoid test output mismatch for >512-byte sectors
+       * tests/test-lib.sh (normalize_part_diag_): New function.
+       (sector_size_): New variable.
+       * tests/t7000-scripting.sh: Use them.
+
+       tests: make t5000-tags.sh less sensitive to >512-byte sector size
+       * tests/t5000-tags.sh: Use -m option and "unit s".
+       FIXME: But still fails when invoked via
+       PARTED_SECTOR_SIZE=2048 ./t5000-tags.sh --verbose --debug
+
+       t7000-scripting.sh: adapt to work with >512-byte sectors
+
+       label.c tests: don't skip dvh, now that it works; clean up
+
+       dvh: probe, read, clobber, write: adapt for >512-byte sectors
+
+       bsd.c: use pt-tools
+       * libparted/labels/bsd.c: Include pt-tools.h.
+       (bsd_write): Use ptt_write_sector.
+
+       the beginnings of library partition-table tools
+       * libparted/labels/pt-tools.h: New file.
+       * libparted/labels/pt-tools.c: New file.
+       * libparted/labels/Makefile.am (liblabels_la_SOURCES): Add them.
+
+       avoid dvh label-clone test failure
+       * libparted/labels/dvh.c (dvh_duplicate): Initialize with
+       ped_disk_new_fresh, not with _ped_disk_alloc.  The former
+       sets disk->update_mode = 1, as required (and enforced via an
+       assertion in ped_disk_destroy).
+
+       * libparted/labels/gpt.c (gpt_clobber): Plug a leak.
+
+       amiga: Avoid writing uninitialized 1.5KB after initial 512B.
+
+       disable some file-system-related probe tests for sector size > 512
+       These changes keep us from recognizing most file systems
+       when the sector size is larger than 512.  However, for now (while
+       concentrating on getting partition table support right) that's not
+       a problem.  Besides, the code we're avoiding would inevitably make
+       parted smash its stack.
+
+       * libparted/fs/linux_swap/linux_swap.c (_generic_swap_probe): Fail
+       the swap-file-system-recognizing test when sector size is not 512.
+       * libparted/filesys.c (ped_file_system_probe_specific): Fail all
+       fs-specific probe-related tests when sector size is not 512.
+       * libparted/fs/jfs/jfs.c (jfs_probe): For now, don't even try to
+       deal with larger sector size.
+       * libparted/label.c: Skip tests of problematic file system types.
+       * tests/t0100-print.sh: Print with units of sectors, and adjust
+       expected output accordingly.
+       * tests/t1000-mkpartfs.sh: Use a smaller test file.
+
+2009-07-24  Jim Meyering  <jim@meyering.net>
+
+       Fix compile failures.
+
+       Add fat support for sector_size > 512.
+
+       avoid compiler warnings
+       * libparted/fs/ext2/interface.c (_ext2_generic_probe): Likewise.
+       (_ext2_clobber): Likewise.
+
+       Make loop_probe and loop_clobber work with sector_size > 512, too.
+
+       Still working on making label support work.
+       * libparted/fs/ext2/interface.c (_ext2_generic_probe): The call to
+       ped_geometry_read_alloc would clobber the stack after SB whenever
+       block_size > 512.  Instead, use new function, ped_geometry_read_alloc,
+       and adjust all uses of SB.
+       (_ext2_clobber): Likewise.
+       * libparted/cs/geom.c (ped_geometry_read_alloc): New function.
+       * include/parted/geom.h: Declare it.
+
+       (msdos_clobber): Plug the leak I just introduced.
+
+       Make "mklabel loop" work with >512 sector_size, even when...
+       there is an existing "msdos" label.
+       (msdos_clobber): Make it work with >512 sector_size.
+
+       Make "mklabel loop" work with >512 sector_size.
+
+       Make "mklabel msdos" work with >512 sector_size.
+
+       Make "mklabel bsd" work with >512 sector_size.
+
+       Make "mklabel mac" work with >512-byte sector_size.
+
+       Add a FIXME comment.
+
+       start to make things work with 2048-byte sector size.
+       Done so far: amiga, bsd, loop, gpt.
+       Fix leaks along the way.
+       remove unused label
+       Add a cast to avoid a warning.
+
+2009-07-24  Jim Meyering  <meyering@redhat.com>
+
+       allow to simulate linux-file sector size via PARTED_SECTOR_SIZE envvar
+
+2009-07-23  Joel Granados Moreno  <jgranado@redhat.com>
+
+       post-release administrivia
+       * NEWS: Add header line for next release.
+       * .prev-version: Record previous version.
+       * cfg.mk (old_NEWS_hash): Auto-update.
+
+       version 1.9.0
+       * NEWS: Record release date.
+
+2009-07-23  Jim Meyering  <meyering@redhat.com>
+
+       Revert "Point gnulib submodule to an existing object ref."
+       This reverts commit 95486a979a8862df9f6f2129c2d9f35221340583.
+       The reverted change mistakenly backdated gnulib to July 14.
+
+2009-07-23  Joel Granados Moreno  <jgranado@redhat.com>
+
+       Little fixes before the release.
+       * README-release: Correct an error in step 5.  In step 6 we mean
+       $VERSION.
+       * build-aux/parted-release (_do_release): Use '-F -' to make the NEWS
+       commit.
+
+       Point gnulib submodule to an existing object ref.
+       * gnulib: Update submodule to latest.
+
+       Automate the release process.
+       * build-aux/parted-release: New file. Automates the part of the release
+       process that takes place in the local repository.
+
+       Document our release proceedure.
+       * README-release: New file.
+
+       Update the NEWS file for the next release.
+       * NEWS : Describe some of the latest bugfixes and behavioral changes.
+
+2009-07-23  Jim Meyering  <meyering@redhat.com>
+
+       build: update from gnulib, for fixed maint.mk
+       * gnulib: Update submodule to latest.
+
+2009-07-22  Jim Meyering  <meyering@redhat.com>
+
+       build: avoid "make dist-hook" failure
+       * Makefile.am (dist-hook): Remove coreutils-specific rm-substitution.
+
+       build: avoid automake warning
+       * libparted/Makefile.am (SUBDIRS_CHECK): Do not redefine.
+       Instead, append to existing value.
+
+2009-07-19  Jim Meyering  <meyering@redhat.com>
+
+       build: adjust Makefiles
+       * libparted/Makefile.am (ARCH_SOURCE): Factor out duplication.
+       * libparted/labels/Makefile.am (partedincludedir): Split long line.
+
+2009-07-19  Otavio Salvador  <otavio@ossystems.com.br>
+
+       Avoid compilation failure on s390
+       To export LinuxSpecific stuff for labels, in this case fdasd, we now
+       provide arch/linux.h. This aids in avoiding code duplication.
+
+       * configure.ac: add BUILD_LINUX conditional.
+       * libparted/Makefile.am: conditionally use linux.h.
+       * libparted/arch/linux.c: move LinuxSpecific stuff to linux.h.
+       * libparted/arch/linux.h: New file.
+       * libparted/labels/Makefile.am: include from libparted as well.
+       * libparted/labels/dasd.c: use arch/linux.h and use dev->path for
+         error message.
+       * libparted/labels/fdasd.c: include linux.h and drop an unused
+         variable.
+
+2009-07-16  Jim Meyering  <meyering@redhat.com>
+
+       build: avoid configure-time syntax error
+       Running ./configure on a system without devmapper devel libraries
+       would provoke this:
+       ./configure: line 264: return: but: numeric argument required
+       ./configure: line 24783: --enable-device-mapper: command not found
+       * configure.ac: Add quotes to most AC_MSG_ERROR uses, both around
+       the argument, and (when needed) around the macro use itself.
+
+2009-07-11  Jim Meyering  <meyering@redhat.com>
+
+       ui: avoid NULL dereference on realloc failure
+       * parted/strlist.c (gettext_to_wchar) [ENABLE_NLS]: Use xrealloc,
+       so we never return NULL, which could then be dereferenced.
+
+2009-07-10  Colin Watson  <cjwatson@ubuntu.com>
+
+       Rationalise linux-swap fs names, and add a "linux-swap" alias
+       * libparted/filesys.c (ped_file_system_alias_register,
+       ped_file_system_alias_unregister, ped_file_system_alias_get_next): New
+       functions.
+       (ped_file_system_type_get): Walk aliases as well.
+       * include/parted/filesys.h (struct _PedFileSystemAlias): New structure.
+       (ped_file_system_alias_register, ped_file_system_alias_unregister,
+       ped_file_system_alias_get_next): Add prototypes.
+       * parted/parted.c (_init_messages): Walk file system aliases as well as
+       types.
+       * parted/ui.c (init_fs_type_str): Likewise.
+       * libparted/fs/linux_swap/linux_swap.c (_swap_v1_type, _swap_v1_open,
+       _swap_v1_probe, _swap_v1_clobber, _swap_v1_ops): Rename to _swap_v0_type
+       etc. to match version number used in mkswap. Update all users.
+       (_swap_v2_type, _swap_v2_open, _swap_v2_probe, _swap_v2_clobber,
+       _swap_v2_ops): Rename to _swap_v1_type etc. to match version number used
+       in mkswap. Update all users.
+       (_swap_v0_type): Rename type from "linux-swap(old)" to "linux-swap(v0)".
+       (_swap_v1_type): Rename type from "linux-swap(new)" to "linux-swap(v1)".
+       (ped_file_system_linux_swap_init, ped_file_system_linux_swap_done):
+       Register/unregister a "linux-swap" alias for "linux-swap(v1)", and
+       deprecated aliases "linux-swap(old)" and "linux-swap(new)".
+       * libparted/labels/misc.h (is_linux_swap): Update comment.
+       * tests/t2100-mkswap.sh: Refer to "linux-swap(v1)" rather than
+       "linux-swap(new)". Test creation via the new alias.
+
+2009-07-09  Jim Meyering  <meyering@redhat.com>
+
+       tests: disable the taint-distcheck rule
+       * dist-check.mk (taint-distcheck): Disable rule, since it
+       would trigger a bug in libtool-generated scripts.
+
+       tests: better quoting to avoid failure with poorly-named src directory
+       * libparted/tests/Makefile.am (init.sh): Quote, in case
+       $(abs_top_srcdir) contains e.g., spaces.
+       * tests/Makefile.am (init.sh): Likewise.
+       * libparted/tests/t2000-disk.sh: Better quoting here, too.
+       * libparted/tests/t1000-label.sh: Likewise.
+       Reported by Joel Granados
+
+       build: update from gnulib
+       * gnulib: Update submodule to latest.
+       * cfg.mk (local-checks-to-skip): Add sc_require_test_exit_idiom.
+       This skips a new-from-gnulib test that doesn't apply here.
+
+2009-06-17  Joel Granados Moreno  <jgranado@redhat.com>
+
+       tests: ensure that we preserve the first 446 byts of a GPT pmbr
+       * tests/t0202-gpt-pmbr.sh: Ensure that the first 446 bytes are
+       unchanged after creating a GPT partition.
+
+       gpt: preserve first 446 bytes of the PMBR (protective MBR)
+       * libparted/label/gpt.c (_write_pmbr): Make sure we read and preserve
+       the first 446 bytes of the device when we are creating the PMBR.
+
+2009-06-17  Jim Meyering  <meyering@redhat.com>
+
+       build: update from gnulib
+       * gnulib: Update submodule to latest.
+
+       build: require autoconf-2.63 and automake-1.11
+       * configure.ac (AC_PREREQ): Require 2.63, not 2.61.
+       (AM_INIT_AUTOMAKE): Require 1.11, not 1.10c.
+
+2009-06-16  Colin Watson  <cjwatson@ubuntu.com>
+
+       linux-swap: generate UUIDs for fresh swap spaces
+       * libparted/fs/linux_swap/linux_swap.c: Generate a UUID when creating a
+       fresh swap space.
+       * tests/t2100-mkswap.sh: Test that two fresh swap spaces get different
+       UUIDs, and that 'check' preserves the swap UUID.
+
+2009-06-11  Joel Granados Moreno  <jgranado@redhat.com>
+
+       tests: simplify t6001-dm-ignoremd.sh
+       * tests/t6001-dm-ignoremd.sh (md_dev_create_): Use functions in
+       test-util.sh for mdadm commands.  Move mddev_ to the top of the
+       file.  Remove unneeded comment.
+
+       tests: add mdadm specific functions
+       * tests/test-lib.sh (require_mdadm_): New function.
+       (mdadm_create_linear_device_): New function.
+
+2009-06-10  Joel Granados Moreno  <jgranado@redhat.com>
+
+       doc: improve mkpart description
+       * doc/parted.texi: Make sure that part-type is portrayed as an
+       optional argument.  Mention the "special behavior" that mkpart has
+       with specific disk label types.
+
+       parted-ui: ensure cmd-line buffer is empty before ped_exception_throw
+       When ped_exception_throw requires input from the user and there are
+       leftover strings in the command line, there is an "invalid token" error
+       from parted.  This happens because the ped_exception expects some input
+       that is, most likely, different from the leftover string(s).  To address
+       this, one must make sure that all the argument strings are parsed before
+       invoking any exception that requires input.
+
+       * parted/parted.c (do_mklabel): Call command_line_get_disk_type call
+       before the disk checks (_disk_warn_loss will call ped_exception_throw).
+       * tests/t0000-basic.sh: Adjust, now that the output need not include
+       the error message.
+
+       tests: verify that "md" devices are not listed
+       * tests/t6001-dm-ignored.sh: New test file.
+       * tests/Makefile.am (TESTS): Add it.
+
+       linux: skip "md" devices when probing
+       * libparted/arch/linux.c (_skip_entry) : Add "md" to the entries
+       array so all devices of type "/dev/md#" get ignored.
+
+       fat: support 64KB clusters for FAT16
+       * libparted/fs/fat/calc.c (fat_max_cluster_size): A 64KB cluster
+       size (128 sectors) for FAT16 is not common but is possible.  Allow
+       the use of 128-sector clusters instead of outputting an error.
+
+       Fixes this:
+           http://parted.alioth.debian.org/cgi-bin/trac.cgi/ticket/207
+       Additional info here:
+           http://lists.alioth.debian.org/\
+             pipermail/parted-devel/2009-June/002882.html
+
+2009-06-10  Matthew S. Harris  <mharris312@gmail.com>
+
+       gpt: fix gpt_read to read all of the partition entries correctly
+       * libparted/labels/gpt.c (gpt_read): Use the SizeOfPartitionEntry
+       field value when reading the partition entries rather than assuming
+       that the entries are the same size as our struct.
+       (gpt_read): When reading the partition
+       entries, round up, not down, the number of sectors to read.
+       (_header_is_valid): Check that the SizeOfPartitionEntry is sane.
+       With minor adjustments by Joel Granados Moreno.
+
+2009-06-10  Joel Granados Moreno  <jgranado@redhat.com>
+
+       Tweak distcheck.
+       * dist-check.mk (install-transform-check): The binaries will be located
+       in /sbin instead of /bin.
+
+2009-06-03  Jim Meyering  <meyering@redhat.com>
+
+       build: require automake-1.11 via bootstrap.conf, too
+       * bootstrap.conf (buildreq): s/1.10c/1.11/
+
+       doc: sync README-hacking from coreutils
+       * README-hacking: update
+
+       build: rename internal library: lib/libparted -> lib/libgnulib
+       * bootstrap.conf (gnulib_name): Define gnulib_name=libgnulib.
+       * libparted/Makefile.am (libparted_la_LIBADD): Update sole use.
+
+       libparted: link with gnulib
+       * libparted/Makefile.am (libparted_la_LIBADD): Add
+       $(top_builddir)/lib/libparted.la to the list.
+       * partprobe/Makefile.am (partprobe_LDADD): Remove now-unneeded
+       $(top_builddir)/lib/libparted.la.
+       * libparted/tests/Makefile.am (LDADD): Remove now-unneeded
+       $(top_builddir)/lib/libparted.la.
+       * debug/clearfat/Makefile.am (clearfat_LDADD): Likewise.
+       * parted/Makefile.am (parted_LDADD): Likewise.
+       Otavio Salvador reported that linking with the resulting shared
+       library produced an unresolved reference to last_component.
+
+2009-05-26  Jim Meyering  <meyering@redhat.com>
+
+       tests: adjust t4100-msdos-starting-sector.sh
+       * tests/t4100-msdos-starting-sector.sh: Use parted's -m option
+       when printing, and adjust expected output to match.
+       Filter out "Disk...:" part to avoid false-positive failures due
+       to mount-point- related differences.
+
+2009-05-26  Joel Granados Moreno  <jgranado@redhat.com>
+
+       Add test for msdos starting sector.
+       * tests/t4100-msdos-starting-sector.sh : Make sure we are consistent
+         when displaying starting sector for msdos lables.
+
+2009-05-26  Joel Andres Granados  <jgranado@redhat.com>
+
+       Make sure we always create msdos metadata parts.
+       Given a disk with no partition, parted did not create metadata
+       partitions for an msdos label.  This led to inconsistencies when
+       reporting free space partition ranges.  This patch addresses this issue.
+
+       * libparted/labels/dos.c (get_last_part): Remove function.
+       * libparted/labels/dos.c (get_start_first_nonfree_part): New function.
+       * libparted/labels/dos.c (get_end_last_nonfree_part): New function.
+       * libparted/lables/dos.c (add_startend_metadata): Add code that
+       handles disks no partitions.  Add check that prevents the metadata
+       partitions from being greater than the device length.  Add check
+       that prevents metadata partitions from overlapping in small devs.
+
+2009-05-26  Joel Granados Moreno  <jgranado@redhat.com>
+
+       Improve readability in linux.c
+       * libparted/arch/linux.c : Gather all the _is_major functions together.
+       change the name of readFD to _read_fd since its not used anywhere
+       else. Also rename the "_is_major_type" function to
+       "_major_type_in_device" as it better expresses what we do in said
+       function.
+
+       Correctly name virtio devices.
+       * include/parted/device.h (PedDeviceType): Add a new PED_DEVICE_VIRTBLK
+       type to the list.
+       * libparted/arch/linux.c (_is_dm_major): Modify this function so it
+       calls the new _is_major_type function with type "device-mapper".
+       * libparted/arch/linux.c (_is_major_type): Searches a major number
+       inside /proc/devices based on a "type" string.
+       * libparted/arch/linux.c (_is_virtblk_major): New function.  Calls
+       _is_major_type with type "virtblk".
+       * libparted/arch/linux.c (_device_probe_type): Add a new
+       PED_DEVICE_VIRTBLK case to the probe possibilities.
+       * libparted/arch/linux.c (linux_new): Add a new PED_DEVICE_VIRTBLK case
+       to the possible device types.
+       * parted/parted.c (do_print): add the "virtblk" string to the transport
+       array.
+
+2009-05-24  Otavio Salvador  <otavio@ossystems.com.br>
+
+       Makefile.am: fail if ABI has changed
+
+       configure.ac: fix PED_MINOR_VERSION sed expression
+
+       add build-aux to .gitignore
+
+2009-05-15  Joel Granados Moreno  <jgranado@redhat.com>
+
+       build: enable device mapper support by default
+       * configure.ac: Device mapper is ubiquitous enough: enable by default.
+       Adjust --help and diagnostics to reflect the new default.
+
+2009-05-15  Jim Meyering  <meyering@redhat.com>
+
+       portability: don't perform pointer arithmetic on a "void *" pointer
+       * libparted/arch/linux.c (_dm_remove_parts) [ENABLE_DEVICE_MAPPER]:
+       Don't perform pointer arithmetic on a "void *" pointer.
+       Interpose a (char *) cast.
+
+       maint: cfg.mk: remove now-unnecessary gnulib_dir definition
+       * cfg.mk (gnulib_dir): Remove definition, now that gnulib's
+       maint.mk provides the default we want.
+
+       build: require 1.10c (get it by building from automake.git)
+       * bootstrap.conf (buildreq): Require 1.10c (1.11 is coming soon)
+       for our use of AM_SILENT_RULES.
+       * configure.ac (AM_INIT_AUTOMAKE): Require 1.10c, for our use of
+       AM_SILENT_RULES.  Reported by Joel Granados.
+
+       build: update from gnulib, for newer maint.mk and more
+       * gnulib: Update submodule to latest.
+
+       build: use gnulib's vc-list-files module
+       * bootstrap.conf (gnulib_modules): Add vc-list-files, so we pull
+       this file from gnulib.
+       * build-aux/vc-list-files: Remove now-outdated file.
+
+2009-04-26  Jim Meyering  <meyering@redhat.com>
+
+       build: accommodate maint.mk, now that it's pulled from gnulib
+       * dist-check.mk: New file, from coreutils.  Was part of maint.mk.
+       * cfg.mk (old_NEWS_hash): Include $(srcdir)/dist-check.mk.
+       Remove trailing "  -", to align with new check in maint.mk.
+       * Makefile.am (EXTRA_DIST): Add dist-check.mk.
+
+       build: use gnulib's dirname module
+       * bootstrap.conf (gnulib_modules): Add dirname.
+
+       build: make automake's silent-rules option the default
+       * configure.ac (AM_INIT_AUTOMAKE): Remove silent-rules.  Instead,...
+       (AM_SILENT_RULES): Use this, with it's undocumented [yes] argument.
+       Those who want verbose build output may configure with
+       --disable-silent-rules or use "make V=1".
+
+       build: stop using obsolete gnulib modules
+       * bootstrap.conf (obsolete_gnulib_modules): Remove.
+       (gnulib_modules): Remove use.
+
+       build: use maint.mk from gnulib
+       * maint.mk: Remove file.  Now it's generated.
+       * .gitignore: Ignore it.
+       * bootstrap.conf (gnulib_modules): Add maintainer-makefile.
+       * gnulib: Update submodule to latest.
+
+2009-04-11  Jim Meyering  <meyering@redhat.com>
+
+       maint: use a git submodule for gnulib
+       * .gitmodules: New file, to track gnulib.
+       * gnulib: New file, created by running this:
+       git submodule add git://git.sv.gnu.org/gnulib.git gnulib
+
+2009-04-10  Jim Meyering  <meyering@redhat.com>
+
+       maint: sync from coreutils
+       * maint.mk: Sync from coreutils.
+       * bootstrap: Likewise.
+
+2009-04-08  Jim Meyering  <meyering@redhat.com>
+
+       build-from-git: depend on automake-1.10b
+       * bootstrap.conf (buildreq): Note the automake-1.10b requirement.
+       * configure.ac (AM_INIT_AUTOMAKE): Enable new automake options:
+       dist-xz, color-tests, parallel-tests, silent-rules.
+
+2009-04-08  Otavio Salvador  <otavio@ossystems.com.br>
+
+       bootstrap.conf: require automake 1.10 since 1.10a is an alpha version
+
+2009-03-21  Jim Meyering  <meyering@redhat.com>
+
+       * maint.mk: merge with latest from coreutils
+
+       maint: indent consistently
+       * doc/po4a.mk (updatepo): Replace TAB+8-spaces with two TABs.
+
+2009-03-05  Jim Meyering  <meyering@redhat.com>
+
+       * bootstrap: sync from coreutils
+
+       build: enable "make syntax-check" rule to prohibit trailing spaces
+       * cfg.mk (local-checks-to-skip): Remove sc_trailing_blank.
+
+       remove all trailing blanks
+       ...by running these commands:
+       t=$'\t'
+       git grep -l "[ $t]\$"|xargs perl -pi -e 's/[ \t]+$//'
+
+       portability: use last_component, not basename
+       * libparted/arch/linux.c (read_device_sysfs_file): Use last_component
+       from gnulib's basename module, not the less-portable "basename" function.
+       (_device_get_partition_range): Likewise.
+       Reported by Karel Zak.
+       * debug/clearfat/Makefile.am (clearfat_LDADD): Link gnulib *after*
+       libparted, not before.
+       * partprobe/Makefile.am (partprobe_LDADD): Likewise.
+       * parted/Makefile.am (parted_LDADD): Likewise.
+
+2009-03-05  Karel Zak  <kzak@redhat.com>
+
+       test correctly for snprintf failure
+       * libparted/arch/linux.c (_device_get_partition_range): Correct
+       test for failed snprintf.
+
+2009-03-05  Petr Uzel  <petr.uzel@suse.cz>
+
+       gpt: plug a memory leak in gpt_read()
+       * libparted/labels/gpt.c (gpt_read): Free local variable, "zeros".
+
+2009-03-05  Jim Meyering  <meyering@redhat.com>
+
+       update some release-related administrivia
+       * .prev-version: Record that the previous release was 1.8.8.1.
+       * NEWS: Fill in the date for the previous release.
+       * cfg.mk (old_NEWS_hash): Update
+
+       * maint.mk: Sync from coreutils.
+
+       adjust "parted -s dev print" not to emit trailing spaces
+       * parted/table.c (table_render_row): Don't append trailing spaces
+       or delimiter after final field, and trim any other trailing spaces.
+       * tests/t5000-tags.sh: Remove trailing spaces from expected output.
+
+       reword a comment; more formatting changes.
+       * libparted/arch/linux.c (_disk_sync_part_table): Reword comment
+       to use the "active" voice, not "we ...".
+       Adjust formatting in new/moved code.
+
+       rename all "support" parameters; avoid new compiler warnings
+       Change each occurrence like this (which evokes a warning from gcc):
+       -       return *supported = MAX_TOTAL_PART;
+       to this:
+       +       *max_n = MAX_TOTAL_PART;
+       +       return true;
+
+       I did it mostly mechanically:
+
+         cd libparted/labels &&
+           grep -l 'return .supported = ' *.c|xargs perl -ni \
+             -e '$m=/^\treturn \*supported( = .*;)/;' \
+             -e 'print $m ? "\t*max_n$1\n\treturn true;\n" : $_'
+         git grep -l 'int\* supported'|xargs perl -pi -e 's/int\* supported/int *max_n/'
+
+       That got all but aix.c, which used different spacing: "int *supported",
+       which I changed manually.  Then I updated all copyright dates.
+
+       gpt: adjust formatting and rename a parameter: s/supported/max_n/.
+       * libparted/labels/gpt.c (gpt_get_max_supported_partition_count): Rename
+       parameter: s/supported/max_n/.  The latter sounds more like a number,
+       while "supported" sounds boolean at first.
+
+2009-03-05  Joel Granados Moreno  <jgranado@redhat.com>
+
+       Properly sync partitions with operating system
+       * include/parted/disk.h: Add prototypes for new function.
+       * libparted/disk.c (ped_disk_get_max_supported_partition_count): New
+       function that calls the partition-table-specific function.
+       * libparted/arch/linux.c (_disk_sync_part_table): To sync the table in
+       disk with the kernel, we remove all partitions from the kernel table
+       and then add the ones that are in disk.  For this to happen we need to
+       calculate the partition-table-type-specific maximum number of
+       supported partitions.
+       * libparted/labels/gpt.c (gpt_get_max_supported_partition_count):
+       Read the gpt header from disk and calculate the maximum number of
+       partitions it can accommodate.
+       * libparted/labels/aix.c (get_max_supported_partition_count):
+       New function.
+       * libparted/labels/bsd.c: Likewise.
+       * libparted/labels/dasd.c: Likewise.
+       * libparted/labels/dos.c: Likewise.
+       * libparted/labels/dvh.c: Likewise.
+       * libparted/labels/gpt.c: Likewise.
+       * libparted/labels/loop.c: Likewise.
+       * libparted/labels/mac.c: Likewise.
+       * libparted/labels/pc98.c: Likewise.
+       * libparted/labels/rdb.c: Likewise.
+       * libparted/labels/sun.c: Likewise.
+
+2009-02-20  Joel Granados Moreno  <jgranado@redhat.com>
+
+       dasd: emit a diagnostic upon probe failure
+       * libparted/labels/dasd.c (dasd_probe): Inform the user when no dasd
+       volumes are present in a device.
+
+2009-02-20  Petr Uzel  <petr.uzel@suse.cz>
+
+       gpt: avoid failed assertion on big-endian systems
+       * libparted/labels/gpt.c (_parse_header): Compute last_usable_if_grown
+       not as an LE64 value but as a CPU-format one, since we're about to
+       compare it to another.
+
+2009-02-18  Petr Uzel  <petr.uzel@suse.cz>
+
+       test for the gpt_read failed-assertion fix
+       * tests/t0201-gpt.sh: New file.
+       * tests/Makefile.am (TESTS): Add it.
+
+2009-02-18  Jim Meyering  <meyering@redhat.com>
+
+       avoid failed assertion when creating a GPT partition table...
+       on top of an old one for a larger device
+
+       * libparted/labels/gpt.c (gpt_read): Don't assert that the location
+       of the alternate LBA is within the current device.  It will be
+       beyond its end when the device it was created for was larger.
+       Instead, just return, treating this like any other non-match.
+
+       Here's the reproducer:
+
+         dev=file
+         dd     of=$dev if=/dev/null seek=4001
+         parted -s $dev mklabel gpt
+         dd     of=$dev if=/dev/null seek=4000
+         parted -s $dev mklabel gpt
+
+2009-02-17  Jim Meyering  <meyering@redhat.com>
+
+       gpt: add a test: printing a partition table must not modify it
+       * tests/t0200-gpt.sh: New file.
+       * tests/Makefile.am (TESTS): Add the new test.
+
+2009-02-17  Petr Uzel  <petr.uzel@suse.cz>
+
+       gpt: do not automatically "correct" a suspicious GPT partition table
+       Previously, when parted was invoked on a disk with a GPT partition table
+       and the backup GPT was not in the last sector of the disk, and even if
+       the requested operation was just to print the partition table, parted
+       would "repair" this automatically. This behavior is undesirable in the
+       following situation:
+
+       dm-raid on top of block device. The dm-raid is partitioned with GPT. If
+       the dm-raid starts on the first block of underlying device (AFAIK this is
+       the case with FastTrack controllers) and the user runs parted on the
+       dm-raid, it will identify the physical device as being partitioned with
+       GPT and see the backup GPT table not to be in the last sector of the
+       physical device and thus move it to this location (which may lead to
+       destruction of dm-raid metadata in case they are located at the end of
+       physical device).
+
+       This patch modifies parted's behavior to ignore fixing of backup GPT
+       position by default.
+
+2009-02-16  Jim Meyering  <meyering@redhat.com>
+
+       tests: use "compare", not "$compare"
+       * test-lib.sh (compare): Define "compare" as a function, not a variable.
+       * tests/t*.sh: use "compare", not "$compare"
+
+2009-02-13  Jim Meyering  <meyering@redhat.com>
+
+       don't segfault on a device-mapper device with no target
+       * libparted/arch/linux.c (_dm_maptype): Don't dereference NULL
+       for a device-mapper device with no target.  Use the string
+       "NO-TARGET" instead.  Reported by Mike Hwang in
+       http://thread.gmane.org/gmane.comp.gnu.parted.devel/2432
+
+2009-02-08  Jim Meyering  <meyering@redhat.com>
+
+       compile warning-free also with upcoming gcc-4.4
+       * libparted/fs/fat/fat.c (_gen_new_serial_number): Use a union
+       rather than a warning-provoking cast.  Avoids this gcc warning:
+       "dereferencing type-punned pointer will break strict-aliasing rules"
+
+2009-02-07  Jim Meyering  <meyering@redhat.com>
+
+       clearfat: diagnose an invalid device number
+       * debug/clearfat/clearfat.c: Include <limits.h> and "xstrtol.h".
+       (main): Diagnose an invalid minor device number argument.
+       * bootstrap.conf (gnulib_modules): Add xstrtol.
+
+       maint.mk: sync from coreutils
+
+       Revert "don't try to translate 'lib/xstrtol-error.c'"
+       This reverts commit 39adc77de255b7df33e1efb93853c7ccfd4c45f5.
+       Otherwise, "make syntax-check" fails the sc_po_check test.
+
+2009-02-06  Otavio Salvador  <otavio@ossystems.com.br>
+
+       don't try to translate 'lib/xstrtol-error.c'
+
+       remove ped_(register|unregister)_disk_type since they were deprecated
+       ped_(register|unregister)_disk_type were remove since they are
+       deprecated since 1.8 releases. The functions
+       ped_disk_type_(register|unregister) are the ones to be used.
+
+       move architecture specific code since they're used in a single place
+       All architecture headers (linux.h, gnu.h and beos.h) are now
+       removed. The required code has beem moved to the C file that required
+       it.
+
+2009-01-27  Jim Meyering  <meyering@redhat.com>
+
+       avoid bootstrap failure
+       * bootstrap.conf: Ensure the gnulib-tests/ exists.
+       Reported by Matt Domsch.
+
+2009-01-26  Jim Meyering  <meyering@redhat.com>
+
+       better m4 quoting
+
+       * parted/ui.c: Include <config.h> before any other file.
+
+       maint.mk: sync from coreutils
+
+       * po/POTFILES.in: Add lib/xstrtol-error.c.
+
+       _disk_sync_part_table: revise yet again
+       This fixes a bug whereby parted could leave the kernel with an
+       erroneous view of a partition table.
+       * libparted/arch/linux.c (_disk_sync_part_table): Per analysis in
+       http://thread.gmane.org/gmane.comp.gnu.parted.devel/2297/focus=2307.
+       Patch suggested by Petr Uzel.
+
+       * bootstrap.conf: sync from coreutils
+
+2009-01-08  Debarshi Ray  <rishi@gnu.org>
+
+       Differentiate between Ext4 and Ext3 file systems.
+       Fixes http://parted.alioth.debian.org/cgi-bin/trac.cgi/ticket/188
+
+       * libparted/fs/ext2/ext2_fs.h (EXT4_FEATURE_RO_COMPAT_HUGE_FILE,
+       EXT4_FEATURE_RO_COMPAT_DIR_NLINK, EXT4_FEATURE_INCOMPAT_EXTENTS,
+       EXT4_FEATURE_INCOMPAT_64BIT): New constants.
+       * libparted/fs/ext2/interface.c (_ext2_generic_probe): Ext4 file systems
+       will have EXT4_FEATURE_* bits set, while Ext3 will not.
+       (_ext2_probe, _ext3_probe): Pass 2 and 3 respectively, instead of 0 and 1,
+       to _ext2_generic_probe.
+       (_ext4_probe): New function.
+       (_ext4_ops, _ext4_type): New structures.
+       (ped_file_system_ext2_init): Register Ext4 file system type.
+       (ped_file_system_ext2_done): Likewise.
+       * tests/Makefile.am (TESTS): Add t1700-ext-probe.sh.
+       * tests/t1700-ext-probe.sh: New file.
+
+2009-01-08  Jim Meyering  <meyering@redhat.com>
+
+       fix a "make syntax-check" failure (update copyright date)
+       * doc/parted.texi: Update copyright dates for 2009.
+
+2008-12-23  Jim Meyering  <meyering@redhat.com>
+
+       avoid "make install" failure with latest GNU make
+       * doc/C/Makefile.am (dist_man8_MANS): Use per-section variable
+       names, as recommended by automake.
+       (man_MANS): Remove redundant definition.
+
+2008-12-23  Tom "spot" Callaway  <tcallawa@redhat.com>
+
+       sun partition tables: add support for RAID partition types
+       This patch enables RAID as a supported partition type on Sun disk
+       layouts, commonly found/used on SPARC hardware. It has been tested
+       on Aurora SPARC Linux (and Fedora SPARC). I have no idea if Solaris
+       supports Software RAID or not...
+
+       Along with the code change, I wrote a test case that checks if the
+       RAID partition type is supported on sun disk labels.
+
+       * libparted/labels/sun.c [_SunPartitionData] (is_raid): New member.
+       (sun_read): Initialize the ->is_raid member.
+       (sun_partition_new): Clear is_raid, like all the other members.
+       (sun_partition_duplicate): Propagate the is_raid member.
+       (sun_partition_set_system): Make sun_data->type reflect is_raid.
+       (sun_partition_set_flag): Also initialize ->is_raid.
+       (sun_partition_get_flag): Handle PED_PARTITION_RAID.
+       (sun_partition_is_flag_available): Likewise.
+       * tests/t4000-sun-raid-type.sh: New file.
+       * tests/Makefile.am (TESTS): Add t4000-sun-raid-type.sh.
+
+2008-10-10  Harald Welte  <laforge@gnumonks.org>
+
+       Add support for SD/MMC storage cards on Linux
+       This patch adds a new SDMMC device type to represent SD/MMC
+       cards.  There is nothing special about handling those devices,
+       they are just standard block devices with different names.
+
+       They use device major ID 179 and are usually called
+       /dev/mmcblkN (where N is the card number) and the individual partitions
+       /dev/mmcblkNpM (where M is the partition number).
+
+       This patch was developed as part of an effort to make debian-installer
+       support installation of Debian GNU/Linux on SD/MMC cards, as boot-from-SD
+       is becoming a feature seen in mobile x86 devices.
+
+2008-08-20  Petr Uzel  <puzel@foxbat.suse.cz>
+
+       Remove obsolete 'i' from parted optstring (--interactive/-i option is not supported anymore)
+
+2008-08-19  Petr Uzel  <petr.uzel@suse.cz>
+
+       doc: remove obsolete --interactive (-i) option descriptions
+
+2008-08-07  Jim Meyering  <meyering@redhat.com>
+
+       update build/test infrastructure from coreutils
+       * bootstrap: Update from coreutils.
+       * maint.mk: Likewise.
+
+2008-08-07  Soren Hansen  <soren@canonical.com>
+
+       add a test for recently introduced loop-dev-based bug
+       This also checks for the current behavior when trying to partition
+       a device that may not be partitioned, like loop devices.
+       * tests/Makefile.am (TESTS): Add tests/t8000-loop.sh.
+       * tests/t8000-loop.sh: New file.  Test for the above fix.
+
+2008-08-07  Jim Meyering  <meyering@redhat.com>
+
+       don't exhaust virtual memory for mklabel on a loopback device
+       Report and analysis by Soren Hansen <soren@canonical.com>:
+       """When ped_disk_get_last_partition_num(disk) fails (which it does if
+       disk is a loopback device), it returns -1. This in turn would cause
+       _disk_sync_part_table and _dm_reread_part_table to attempt to malloc
+       a sizeof(int)*-1, which instantly causes a 'Fatal: Out of memory'."""
+       * libparted/arch/linux.c (_disk_sync_part_table): Handle the case in
+       which ped_disk_get_last_partition_num(disk) fails.
+       (_dm_reread_part_table): Likewise.
+       This bug was introduced by f6bd20573e3ecfb63f62d88c52a0870fb8851b59.
+
+2008-07-30  Jim Meyering  <meyering@redhat.com>
+
+       linux.c: plug a leak
+       * libparted/arch/linux.c (_disk_sync_part_table): Free local, "rets".
+       Reported by Mike Hwang <Mike.Hwang@iqstor.com.cn>.
+
+2008-07-27  Jim Meyering  <meyering@redhat.com>
+
+       don't call ped_partition_new with "0" as 2nd arg
+       Instead, use an explicit and equivalent PED_PARTITION_NORMAL.
+       * libparted/labels/bsd.c (bsd_read):
+       * libparted/labels/dasd.c (dasd_read):
+       * libparted/labels/gpt.c (_parse_part_entry):
+       * libparted/labels/loop.c (loop_read):
+       * libparted/labels/mac.c (_disk_add_part_map_entry)
+       (_rawpart_analyse):
+       * libparted/labels/pc98.c (read_table):
+       * libparted/labels/rdb.c (amiga_read):
+       * libparted/labels/sun.c (sun_read):
+
+2008-07-18  Joel Andres Granados  <jgranado@redhat.com>
+
+       Document the lack of support for ext3 filesystems.
+       - doc/C/parted.8: Add a message in the KNOWN ISSUES section that
+         describes the lack of support for ext3.  Take out some references
+         that were contained in the man page.
+       - doc/parted.texi: Do the same as above to the info page.
+
+2008-07-08  Jim Meyering  <meyering@redhat.com>
+
+       test for the s/PED_MAX/PED_MIN/ partition-number fix
+       * tests/t4200-partprobe.sh: New file.  Test for today's fix.
+       * tests/Makefile.am (TESTS): Add t4200-partprobe.sh.
+       (init.sh): Now that we test partprobe,
+       add $(abs_top_builddir)/partprobe to PATH.
+       * tests/test-lib.sh: Honor new dvhtool_required_ variable.
+       Based on a reproducer from Petr Uzel.
+
+       fix computation of largest partition number
+       * libparted/arch/linux.c (_disk_sync_part_table): s/PED_MAX/PED_MIN/
+       (_dm_reread_part_table): Likewise.
+       Patch by Petr Uzel (tiny change).
+       Details in http://thread.gmane.org/gmane.comp.gnu.parted.devel/2213
+
+2008-07-07  Jim Meyering  <meyering@redhat.com>
+
+       fix to allow compilation with gcc's -fno-common option
+       * libparted/fs/fat/count.h (fat16): Remove bogus (unused)
+       globally-scoped variable declaration.
+
+       * maint.mk: update from coreutils
+
+       * parted/parted.c (options): Remove redundant "const" in declaration.
+
+2008-06-26  Jim Meyering  <meyering@redhat.com>
+
+       * libparted/fs/fat/table.c: Remove a few trailing blanks.
+
+       avoid a warning from gcc -Wshadow
+       * libparted/fs/fat/table.c (fat_table_duplicate): Rename local
+       s/dup/dup_ft/ to avoid shadowing the function.
+
+2008-06-24  Jim Meyering  <meyering@redhat.com>
+
+       adjust for const-correctness
+       * libparted/arch/linux.c (_blkpg_add_partition): Make the "part"
+       parameter "const".
+       (_disk_sync_part_table): Make local "part" const.
+
+       * libparted/arch/linux.c (_disk_sync_part_table): Plug an obvious leak.
+
+       * configure.ac: Remove useless 'exit's after AC_MSG_ERROR.
+
+2008-06-20  Jim Meyering  <meyering@redhat.com>
+
+       tests: avoid test failure due to added newline in diagnostic
+       * tests/t3000-constraints.sh: Adapt to changed output syntax.
+
+       tests: factor out duplication
+       * tests/t7000-scripting.sh: Use a loop rather than
+       two copies of each of 7 tests.
+
+       tests: use consistent output normalization code
+       * tests/t7000-scripting.sh: same as in e.g., t3000-constraints.sh.
+       Use the same name for all output files, "out", not "out1".
+
+       tests: avoid failure when run as non-root
+       * tests/t7000-scripting.sh: and avoid some duplication
+
+2008-06-20  Joel Andres Granados  <jgranado@redhat.com>
+
+       Fix the script mode for mkpart and mkpartfs.
+       To: parted-devel@lists.alioth.debian.org
+       Date: Fri, 20 Jun 2008 11:37:41 +0200
+       X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on rho.meyering.net
+       X-Spam-Level:
+       X-Spam-Status: No, score=-13.8 required=3.2 tests=AWL,BAYES_00,
+               RCVD_IN_DNSWL_LOW autolearn=ham version=3.2.5
+
+       In scripting mode, parted used to ask the user for confirmation
+       when the values to be used where not the ones specified by the user.
+       * parted/parted.c (do_mkpart, do_mkpartfs): if opt_script_mode is.
+         set fail, if it's not, warn and ask for intervention.
+       * tests/Makefile.am : include the new test in the TEST list.
+       * tests/t7000-scripting.sh : Distribute new test case.
+
+2008-06-10  Guido Guenther  <agx@sigxcpu.org>
+
+       move new dmtype member from PedDevice to LinuxSpecific,
+       since this is a Linux-only feature.
+       * include/parted/device.h (struct _PedDevice) [dmtype]: Remove member.
+       * include/parted/linux.h (struct _LinuxSpecific) [dmtype]: Add member.
+       * libparted/arch/linux.c (_dm_maptype, linux_new, linux_destroy): Update uses.
+
+2008-06-08  Jim Meyering  <meyering@redhat.com>
+
+       adjust tests here (libparted/tests/), as done for tests/
+       * libparted/tests/Makefile.am (init.sh): Don't emit code to
+       source test-lib.sh.
+       * libparted/tests/t1000-label.sh: Source test-lib.sh, not init.sh.
+       * libparted/tests/t2000-disk.sh: Likewise.
+
+       fix compile/link problems in libparted/tests
+       Since I didn't have check-devel installed where I'd been testing,
+       nothing was built in libparted/tests/.
+       * libparted/tests/label.c (main): Add argc and argv declarations.
+       * libparted/tests/disk.c (main): Likewise.
+       Reported by Frodo Baggins <frodo.drogo@gmail.com>.
+       * libparted/tests/Makefile.am (LDADD, AM_CPPFLAGS): Define, to compile
+       and link against gnulib-provided functions.
+       (label_CFLAGS, label_LDADD, disk_LDADD, etc.): Adjust.
+       (TESTS_ENVIRONMENT): Define, to propagate top_srcdir to test scripts.
+
+2008-06-06  Jim Meyering  <meyering@redhat.com>
+
+       skip device-mapper test if support is not enabled
+       * configure.ac: Revamp test; also set ENABLE_DEVICE_MAPPER shell var.
+       * tests/Makefile.am (ENABLE_DEVICE_MAPPER): Propagate to tests.
+       * tests/t6000-dm.sh: Skip all tests w/o device-mapper support.
+
+       device mapper clean-up: remove #ifdefs, plug a leak
+       * libparted/arch/linux.c: Remove some #ifdef ENABLE_DEVICE_MAPPER
+       directives.
+       * include/parted/device.h (struct _PedDevice) [dmtype]: Likewise.
+       * libparted/arch/linux.c (linux_new): Plug a leak.
+
+       * tests/Makefile.am (EXTRA_DIST): Add lvm-utils.sh.
+
+       reflect renaming: dm-utils.sh -> lvm-utils.sh
+       * tests/test-lib.sh: s/dm-utils.sh/lvm-utils.sh/
+       * tests/dm-utils.sh: Rename this...
+       * tests/lvm-utils.sh: ...to this.
+
+       protect against bogus absolute srcdir name
+       * test-lib.sh: add quotes to protect against $abs_top_srcdir containing
+       shell meta-characters
+
+       * test-lib.sh: Guard against bogus $device_mapper_required value in env.
+
+       sync from lvm-utils.sh
+
+       source test-lib.sh (not init.sh) from each test
+       * tests/test-lib.sh: Source init.sh early.
+       Use $test_dir_rand_, as done in LVM test framework.
+       Source lvm-utils.sh _after_ defining test_dir_rand_.
+       * tests/Makefile.am (init.sh): Don't emit code to source test-lib.sh,
+       since each test now sources that file directly.
+       * tests/t0000-basic.sh: Source test-lib.sh, not init.sh.
+       Default srcdir=. in each test, so it may be run independently of "make".
+       * tests/t0100-print.sh: Likewise.
+       * tests/t1000-mkpartfs.sh: Likewise.
+       * tests/t1100-busy-label.sh: Likewise.
+       * tests/t1500-small-ext2.sh: Likewise.
+       * tests/t2000-mkfs.sh: Likewise.
+       * tests/t2100-mkswap.sh: Likewise.
+       * tests/t2200-dos-label-recog.sh: Likewise.
+       * tests/t3000-constraints.sh: Likewise.
+       * tests/t3100-resize-ext2-partion.sh: Likewise.
+       * tests/t4100-dvh-partition-limits.sh: Likewise.
+       * tests/t4100-msdos-partition-limits.sh: Likewise.
+       * tests/t5000-tags.sh: Likewise.
+       * tests/t6000-dm.sh: Likewise.
+       * tests/Makefile.am (TESTS_ENVIRONMENT): Pass srcdir to tests.
+
+       * dm-utils: Restore uses of $test_dir_rand_.
+
+       * libparted/arch/linux.c (linux_new): Initialize new member.
+
+       * libparted/arch/linux.c (_dm_maptype): Add space after "if".
+
+2008-06-06  Guido Günther  <agx@sigxcpu.org>
+
+       honor DM_DEV_DIR envvar
+       * libparted/arch/linux.c (_dm_maptype): Make libparted handle $DM_DEV_DIR
+       the same way dmsetup does.
+
+       add basic device mapper tests
+       * tests/dm-utils.sh: New file.  Copied from lvm's tests/lvm-utils.sh.
+       * tests/t6000-dm.sh: New file.
+       * tests/test-lib.sh: FIXME
+       * tests/Makefile.am: FIXME
+
+2008-06-06  Jim Meyering  <meyering@redhat.com>
+
+       avoid useless initialization
+
+2008-06-05  Guido Guenther  <agx@sigxcpu.org>
+
+       linux device-mapper map type detection
+       detect the type of the device map and add it to the displayed type
+       information
+
+2008-06-05  Jim Meyering  <meyering@redhat.com>
+
+       use gnulib's mktempd module/script
+       * bootstrap.conf (gnulib_modules): Add mktempd.
+       * tests/test-lib.sh: Use build-aux/mktempd, not mkdtemp.
+       * tests/mkdtemp: Remove file.
+       * tests/Makefile.am (EXTRA_DIST): Remove mkdtemp.
+
+       use gnulib's progname module
+       * bootstrap.conf (gnulib_modules): Add progname.
+       * debug/clearfat/clearfat.c: Include "progname.h".
+       (main): Call set_program_name rather than setting program_name.
+       * parted/parted.c: Likewise.
+       * partprobe/partprobe.c: Likewise.
+       * libparted/tests/disk.c: Include "progname.h" and call
+       set_program_name even though program_name isn't used, yet.
+       * libparted/tests/label.c: Likewise.
+
+       * maint.mk: Merge from coreutils.
+
+2008-05-31  Jim Meyering  <meyering@redhat.com>
+
+       gpt_write: fix a write-uninitialized error
+       * libparted/labels/gpt.c (gpt_partition_new):
+         ==32570== Syscall param write(buf) points to uninitialised byte(s)
+         ==32570==    at 0x36CF8D6540: __write_nocancel (in /lib64/libc-2.8.so)
+         ==32570==    by 0x443D29: linux_write (linux.c:1642)
+         ==32570==    by 0x414E4E: ped_device_write (device.c:370)
+         ==32570==    by 0x4404CE: gpt_write (gpt.c:1091)
+         ==32570==    by 0x418F16: ped_disk_commit_to_dev (disk.c:486)
+         ==32570==    by 0x418F5C: ped_disk_commit (disk.c:509)
+         ==32570==    by 0x40BAD6: do_mkpartfs (parted.c:981)
+         ==32570==    by 0x40A035: command_run (command.c:139)
+         ==32570==    by 0x412150: non_interactive_mode (ui.c:1540)
+         ==32570==    by 0x40EE83: main (parted.c:2487)
+         ==32570==  Address 0x501b63a is 58 bytes inside a block of size 16,384 alloc'd
+         ==32570==    at 0x4A04FC0: memalign (vg_replace_malloc.c:460)
+         ==32570==    by 0x4A0507A: posix_memalign (vg_replace_malloc.c:569)
+         ==32570==    by 0x443CED: linux_write (linux.c:1637)
+         ==32570==    by 0x414E4E: ped_device_write (device.c:370)
+         ==32570==    by 0x4404CE: gpt_write (gpt.c:1091)
+         ==32570==    by 0x418F16: ped_disk_commit_to_dev (disk.c:486)
+         ==32570==    by 0x418F5C: ped_disk_commit (disk.c:509)
+         ==32570==    by 0x40BAD6: do_mkpartfs (parted.c:981)
+         ==32570==    by 0x40A035: command_run (command.c:139)
+         ==32570==    by 0x412150: non_interactive_mode (ui.c:1540)
+         ==32570==    by 0x40EE83: main (parted.c:2487)
+
+         reproduce with this:
+         dev=f
+         dd if=/dev/null of=$dev bs=1 seek=30M 2>/dev/null
+         ./parted -s $dev mklabel gpt
+         valgrind ./parted -s $dev mkpartfs primary ext2 0 16795000B
+
+       plug leaks in do_print
+       * parted/parted.c (do_print):
+       25 bytes in 8 blocks are definitely lost...
+          at 0x4A0739E: malloc (vg_replace_malloc.c:207)
+          by 0x416E67: ped_malloc (libparted.c:234)
+          by 0x41751F: ped_strdup (unit.c:179)
+          by 0x417778: ped_unit_format_custom_byte (unit.c:220)
+          by 0x417A90: ped_unit_format (unit.c:297)
+          by 0x40CD85: do_print (parted.c:1517)
+          by 0x40A035: command_run (command.c:139)
+          by 0x41210C: non_interactive_mode (ui.c:1540)
+          by 0x40EE41: main (parted.c:2482)
+
+       10 bytes in 4 blocks are definitely lost...
+          at 0x4A0739E: malloc (vg_replace_malloc.c:207)
+          by 0x416E9B: ped_malloc (libparted.c:234)
+          by 0x417553: ped_strdup (unit.c:179)
+          by 0x4177AC: ped_unit_format_custom_byte (unit.c:220)
+          by 0x417AC4: ped_unit_format (unit.c:297)
+          by 0x40CE34: do_print (parted.c:1527)
+          by 0x40A035: command_run (command.c:139)
+          by 0x412140: non_interactive_mode (ui.c:1540)
+          by 0x40EE75: main (parted.c:2485)
+
+       plug two more leaks in gpt_write
+       * libparted/labels/gpt.c (gpt_write):
+       1,024 bytes in 2 blocks are definitely lost...
+          at 0x4A0739E: malloc (vg_replace_malloc.c:207)
+          by 0x416F1B: ped_malloc (libparted.c:270)
+          by 0x43E967: pth_get_raw (gpt.c:334)
+          by 0x44039D: gpt_write (gpt.c:1067)
+          by 0x418F9A: ped_disk_commit_to_dev (disk.c:486)
+          by 0x418FE0: ped_disk_commit (disk.c:509)
+          by 0x40AF7A: do_mklabel (parted.c:622)
+          by 0x40A055: command_run (command.c:139)
+          by 0x4121A4: non_interactive_mode (ui.c:1540)
+
+       plug a blatant leak in gpt_write
+       * libparted/labels/gpt.c (gpt_write):
+       1,536 bytes in 3 blocks are definitely lost in loss record 9 of 11
+          at 0x4A0739E: malloc (vg_replace_malloc.c:207)
+          by 0x416F1B: ped_malloc (libparted.c:270)
+          by 0x44021F: gpt_write (gpt.c:1036)
+          by 0x418F9A: ped_disk_commit_to_dev (disk.c:486)
+          by 0x418FE0: ped_disk_commit (disk.c:509)
+          by 0x40AF7A: do_mklabel (parted.c:622)
+          by 0x40A055: command_run (command.c:139)
+          by 0x4121A4: non_interactive_mode (ui.c:1540)
+          by 0x40EED8: main (parted.c:2499)
+
+       plug leaks in gpt_write
+       * libparted/labels/gpt.c (gpt_write):
+       6,674 bytes in 11 blocks are definitely lost...
+         at 0x4A0739E: malloc (vg_replace_malloc.c:207)
+         by 0x416F1B: ped_malloc (libparted.c:270)
+         by 0x43E76D: pth_new (gpt.c:289)
+         by 0x43E7E2: pth_new_zeroed (gpt.c:298)
+         by 0x43FF61: _generate_header (gpt.c:970)
+         by 0x440434: gpt_write (gpt.c:1074)
+         by 0x418F9A: ped_disk_commit_to_dev (disk.c:486)
+         by 0x418FE0: ped_disk_commit (disk.c:509)
+         by 0x40BB35: do_mkpartfs (parted.c:990)
+
+       plug a leak in gpt_read
+       * libparted/labels/gpt.c (gpt_read):
+       7,195 bytes in 13 blocks are definitely lost...
+          at 0x4A0739E: malloc (vg_replace_malloc.c:207)
+          by 0x416F1B: ped_malloc (libparted.c:270)
+          by 0x43E759: pth_new (gpt.c:287)
+          by 0x43E83C: pth_new_from_raw (gpt.c:310)
+          by 0x43F329: _read_header (gpt.c:627)
+          by 0x43FB31: gpt_read (gpt.c:826)
+          by 0x41882B: ped_disk_new (disk.c:210)
+          by 0x40B773: do_mkpartfs (parted.c:884)
+          by 0x40A055: command_run (command.c:139)
+
+2008-05-30  Jim Meyering  <meyering@redhat.com>
+
+       plug leak in ped_device_get_constraint
+       496 (208 direct, 288 indirect) bytes in 5 blocks are definitely lost...
+          at 0x4A0739E: malloc (vg_replace_malloc.c:207)
+          by 0x416EDF: ped_malloc (libparted.c:270)
+          by 0x41CB40: ped_geometry_new (geom.c:79)
+          by 0x415167: ped_device_get_constraint (device.c:438)
+          by 0x40B928: do_mkpartfs (parted.c:927)
+          by 0x40A055: command_run (command.c:139)
+          by 0x41217C: non_interactive_mode (ui.c:1540)
+          by 0x40EEB1: main (parted.c:2497)
+
+       plug leaks in parted.c
+       432 (144 direct, 288 indirect) bytes in 3 blocks are definitely lost...
+          at 0x4A0739E: malloc (vg_replace_malloc.c:207)
+          by 0x416EF3: ped_malloc (libparted.c:270)
+          by 0x41D9D2: ped_constraint_new (constraint.c:100)
+          by 0x4151A4: ped_device_get_constraint (device.c:439)
+          by 0x40B928: do_mkpartfs (parted.c:927)
+          by 0x40A055: command_run (command.c:139)
+          by 0x41217C: non_interactive_mode (ui.c:1540)
+          by 0x40EEB1: main (parted.c:2497)
+
+       And another:
+
+       * parted/parted.c (do_mkpartfs): Here's one of the signatures:
+       288 (96 direct, 192 indirect) bytes in 2 blocks are definitely lost...
+          at 0x4A0739E: malloc (vg_replace_malloc.c:207)
+          by 0x416EF3: ped_malloc (libparted.c:270)
+          by 0x41D9D2: ped_constraint_new (constraint.c:100)
+          by 0x41DE2C: ped_constraint_intersect (constraint.c:232)
+          by 0x40B971: do_mkpartfs (parted.c:930)
+          by 0x40A055: command_run (command.c:139)
+          by 0x41217C: non_interactive_mode (ui.c:1540)
+          by 0x40EEB1: main (parted.c:2497)
+
+       * parted/parted.c (do_mkpart): Likewise for this function,
+       since do_mkpart is nearly identical to do_mkpartfs.
+
+2008-05-29  Jim Meyering  <meyering@redhat.com>
+
+       plug a leak in ped_device_get_constraint
+       * libparted/device.c (ped_device_get_constraint):
+       512 (224 direct, 288 indirect) bytes in 6 blocks are definitely lost...
+         malloc (vg_replace_malloc.c:207)
+         ped_malloc (libparted.c:270)
+         ped_alignment_new (natmath.c:153)
+         ped_device_get_constraint (device.c:432)
+         do_mkpartfs (parted.c:927)
+         command_run (command.c:139)
+         non_interactive_mode (ui.c:1540)
+         main (parted.c:2497)
+
+2008-05-29  Colin Watson  <cjwatson@ubuntu.com>
+
+       Avoid "comparison between signed and unsigned" warning from gcc.
+       * libparted/fs/fat/traverse.c (fat_dir_entry_get_name): Change
+       type of index from int to size_t.
+
+2008-05-29  Jim Meyering  <meyering@redhat.com>
+
+       remove more useless "if" tests before free
+       * libparted/arch/gnu.c (gnu_sync):
+       * libparted/cs/natmath.c (ped_alignment_destroy):
+       * libparted/exception.c (ped_exception_catch):
+       * libparted/labels/dos.c (msdos_partition_destroy):
+       * parted/parted.c (do_mkpart, do_mkpartfs):
+
+       Use free, not ped_free.
+       * libparted/libparted.c (ped_free): Remove function.
+       [DEBUG] (_check_dodgy_pointer): Remove function.
+       Global substitution:
+       perl -pi -e 's/\bped_free\b/free/g' $(lid -knone ped_free)
+
+       * maint.mk: Update from coreutils.
+
+       test for improved DOS-partition-table recognition
+       * tests/t2200-dos-label-recog.sh: New file.
+       * tests/Makefile.am (TESTS): Add t2200-dos-label-recog.sh.
+
+2008-05-29  Colin Watson  <cjwatson@ubuntu.com>
+
+       bug fix: improve DOS partition table recognition
+       * libparted/labels/dos.c (msdos_probe): Make Parted's partition-table
+       recognition code use the same technique that is used by the Linux
+       kernel and by util-linux's fdisk.  I.e., accept it whenever all four
+       boot indicators are 0 or 0x80, rather than using the FAT file system-
+       recognizing heuristic.
+       More analysis here:
+         http://thread.gmane.org/gmane.comp.gnu.parted.devel/2142/focus=2154
+       Reported by David Balažic here:
+         https://bugs.launchpad.net/ubuntu/+source/parted/+bug/232175
+         http://thread.gmane.org/gmane.comp.gnu.parted.devel/2142
+
+2008-05-29  Jim Meyering  <meyering@redhat.com>
+
+       avoid const-related compiler warnings
+       * libparted/arch/linux.c (init_dasd, init_generic): Likewise.
+       * libparted/exception.c (type_strings, option_strings): Likewise.
+       (ped_exception_get_type_string, ped_exception_get_option_string):
+       * libparted/fs/ext2/ext2_block_relocator.c (ext2_block_relocator_flush):
+       * libparted/fs/ext2/ext2_mkfs.c (_set_dirent): Likewise.
+       * libparted/fs/fat/resize.c (ask_type): Likewise.
+       * libparted/fs/fat/traverse.c (fat_traverse_begin): Likewise.
+       * libparted/fs/fat/traverse.h (buffer_size): Likewise.
+       * libparted/labels/mac.c (_rawpart_cmp_type, _rawpart_cmp_name):
+       (_rawpart_is_partition_map, _rawpart_is_boot, _rawpart_is_driver):
+       (_rawpart_has_driver): Likewise.
+       * parted/parted.c (options, options_help, number_msg): Likewise.
+       (label_type_msg_start, flag_msg_start, unit_msg_start): Likewise.
+       (part_type_msg, fs_type_msg_start, start_end_msg, state_msg): Likewise.
+       (device_msg, name_msg, resize_msg_start, copyright_msg, do_print):
+       * parted/ui.c (prog_name, banner_msg, usage_msg, bug_msg): Likewise.
+       (screen_width): Likewise.
+       * parted/ui.h (prog_name): Likewise.
+
+2008-05-06  Otavio Salvador  <otavio@ossystems.com.br>
+
+       properly test for __s390__ and __s390x__ macros to disable O_DIRECT on that
+
+2008-04-30  Jim Meyering  <meyering@redhat.com>
+
+       Remove useless "if" tests before free.
+       * libparted/arch/linux.c (_dm_add_partition): Remove useless test.
+       * libparted/labels/fdasd.c (fdasd_cleanup): Likewise.
+       * m4/o-direct.m4 (parted_FIND_USABLE_TEST_DIR): Likewise.
+       * parted/table.c (table_destroy): Likewise.
+
+       Pass NEWS-checking part of "make syntax-check".
+       * NEWS: Tweak format so it passes.
+       * cfg.mk (old_NEWS_hash): Update MD5 checksum.
+
+       Exempt a build-related script from the copyright check.
+       * .x-sc_GPL_version: New file.
+       * Makefile.am (EXTRA_DIST): Add .x-sc_GPL_version.
+
+       Turn off strcmp/STREQ check.
+       * cfg.mk (local-checks-to-skip): Add sc_prohibit_strcmp.
+
+       * bootstrap.conf (gnulib_modules): Add useless-if-before-free.
+
+       * doc/parted.texi: Update copyright dates.
+
+       more updates from gnulib and coreutils
+       * bootstrap.conf (gnulib_modules): Add gitlog-to-changelog.
+       * .gitignore: Add .tarball-version
+       * Makefile.am (EXTRA_DIST): Add .version and .prev-version.
+       (dist-hook): Update rule.
+       (gen-ChangeLog): New rule.
+       * maint.mk: Rename from Makefile.maint and update from coreutils.
+       * cfg.mk: Rename from Makefile.cfg and update from coreutils.
+
+       use gnulib's gnumakefile module
+       * GNUmakefile: Remove from version control.
+       * bootstrap.conf (gnulib_modules): Add gnumakefile.
+       * .gitignore: Add GNUmakefile
+
+2008-04-29  Matt Davis  <mattdavis9@gmail.com>
+
+       Corrected a few memory leaks from unallocated ped_unit_format calls.
+       Deallocated memory in do_print() allocated by ped_unit_format calls.
+
+       Corrected memory leak when displaying partition flags.
+       Deallocated memory allocated by partition_print_flags()
+
+2008-04-27  Matt Davis  <mattdavis9@gmail.com>
+
+       Corrected a small memory leak when displaying partition information
+       Deallocated a very small memory allocation that occurs in a for loop.
+       This occurred during output of partition numbers.
+
+2008-04-27  Otavio Salvador  <otavio@ossystems.com.br>
+
+       do not loop in case message exception has no message
+       The exception handler was looping when the exception had no message.
+
+2008-04-24  Otavio Salvador  <otavio@ossystems.com.br>
+
+       fix memory leak in exception handler
+       The exception handler wasn't freeing the memory when the allocated
+       space wasn't enough to store the error message thus leaving unmanaged
+       memory around.
+
+2008-04-12  Robert Millan  <rmh@aybabtu.com>
+
+       Add support for GRUB / BIOS partition in GPT.
+
+2008-04-07  Bastian Blank  <waldi@waldi.track.rz.uni-augsburg.de>
+
+       Fix syntax error.
+
+       Use host_cpu for s390 check.
+
+2008-03-30  Jim Meyering  <meyering@redhat.com>
+
+       Fix a typo: s/to defragmenting/to defragment/, Remove trailing blanks.
+
+2008-02-04  Jim Meyering  <meyering@redhat.com>
+
+       Don't write into line[-1] when line starts with a NUL byte.
+       * parted/ui.c (_readline): Check strlen first.
+
+       dvh.c (dvh_partition_set_name): Include partition name in diagnostic.
+
+       Enforce inherent limitations of dos and dvh partition table formats.
+       * libparted/disk.c (_check_partition): Enforce the 32-bit limitation
+       on a partition's starting sector number and length (in sectors).
+       With the usual 512-byte sector size, this limits the maximum
+       partition size to just under 2TB.
+       (_partition_max_start, _partition_max_len): New functions.
+       (_check_partition): Use them.
+       * tests/t4100-msdos-partition-limits.sh: New file.  Test vs. msdos.
+       * tests/t4100-dvh-partition-limits.sh: New file.  Test vs. dvh.
+       * tests/Makefile.am (TESTS): Add t4100-msdos-partition-limits.sh
+       and t4100-dvh-partition-limits.sh.
+
+2008-02-02  Jim Meyering  <meyering@redhat.com>
+
+       mkpart: Don't require a DVH partition name if it's guaranteed to fail.
+       The mkpart command has an undocumented feature whereby it prompts for
+       (interactive) or requires (-s) a partition name, *regardless* of whether
+       it already knows the partition type (any thing but 'logical') is
+       incompatible with a name.
+
+       At first I was pissed and simply #if-0'd the offending code.
+       But in case someone is actually relying on it, I've relented, and
+       merely remove the prompt/requirement when the partition table type
+       is "dvh" and the type of the partition in question is not "logical".
+
+       * parted/parted.c (do_mkpart):
+
+2008-01-14  Jim Meyering  <meyering@redhat.com>
+
+       Avoid new error detected by very latest gcc.
+       * libparted/fs/fat/traverse.c (fat_dir_entry_get_name): Don't reference
+       ->extension[3] via a pointer into the prior ->name[8] struct member.
+       gcc detected the reference beyond end of name[8].
+       Declare first parameter to be "const".
+       * libparted/fs/fat/traverse.c: Update prototype.
+
+       #ifdef function definitions to match uses, to avoid compiler warnings.
+       * parted/ui.c (mask_signal, s_sigint_handler, s_sigsegv_handler)
+       (s_sigfpe_handler):
+
+       Change two "extern inline" functions to "static inline".
+       * include/parted/natmath.h (ped_div_round_up): This makes
+       it compilable with bleeding-edge gcc.
+       (ped_div_round_to_nearest): Likewise.
+       * libparted/cs/natmath.c (ped_div_round_up, ped_div_round_to_nearest):
+       Remove definitions.
+
+2007-12-18  Jim Meyering  <meyering@redhat.com>
+
+       Make inter-release --version output more useful.
+       Now, each unofficial build has a version "number" like 1.8.8.1.19-58dd,
+       which indicates that it is built using the 19th change set
+       (in _some_ repository) following the "v1.8.8.1" tag, and that 58dd
+       is a prefix of the commit SHA1.
+       * configure.ac: Run it to set the version.
+       (PED_MAJOR_VERSION): Derive from $PACKAGE_VERSION.
+       (PED_MINOR_VERSION): Likewise.
+       (PED_MICRO_VERSION): Likewise.
+       Remove the test that would ensure $PACKAGE_VERSION != $PED_VERSION,
+       now that the latter is derived from the former.
+       * Makefile.am (dist-hook): Arrange so that .version appears only
+       in distribution tarballs, never in a checked-out repository.
+       * .gitignore: Add .version here, too.  Just in case.
+       * lib/.gitignore: Remove now-generated (by bootstrap) file.
+       * build-aux/.gitignore: Likewise.
+
+       Ensure that $(VERSION) is up to date for dist-related targets.
+       * GNUmakefile: Arrange to rerun autoconf, if the version reported by
+       git-version-gen doesn't match $(VERSION), but only for dist targets.
+
+       doc/pt_BR/partprobe.8.pt_BR.po: Remove trailing space in generated file.
+
+       Distribute new file: architecture.h.
+       libparted/Makefile.am (libparted_la_SOURCES): Add architecture.h.
+
+       libparted/architecture.c: Include <config.h>.
+
+2007-12-17  David Cantrell  <dcantrell@redhat.com>
+
+       Fix up the ChangeLog generation a bit.
+       We can just take the output of git-log.
+
+2007-12-17  Jim Meyering  <meyering@redhat.com>
+
+       Perform ChangeLog-creation here, rather than in bootstrap,
+       so that the next merge will be less likely to clobber this parted-specific bit.
+
+       Mention that we should be able to build with -fno-common.
+
+       * bootstrap: Update from Coreutils, adapting to changes in gnulib.
+       Among them: now gnulib uses git for version control.
+
+       * libparted/tests/disk.c (START_TEST): Remove decl of unused local.
+
+2007-11-07  David Cantrell  <dcantrell@redhat.com>
+
+       Add flags for BSD disklabels (needed for Linux on Alpha)
+       Patch from Sergey Tikhonov from the AlphaCore project.
+
+2007-11-06  David Cantrell  <dcantrell@redhat.com>
+
+       Add KNOWN ISSUES section
+       Add a KNOWN ISSUES section explaining that ext3 resizing does not work
+       and that you should use resize2fs.
+
+       Always define PED_DEVICE_DM
+       Regardless of compile time options, always define PED_DEVICE_DM.
+
+       Add 'xvd' to the transports array in do_print
+       For the parted print command, add 'xvd' to the transports array so there is
+       a matching string to display when we print a line for Xen virtual block
+       device.
+
+2007-11-03  Otavio Salvador  <otavio@ossystems.com.br>
+
+       Move PedArchitecture and ped_set_architecture to private
+       Code that works with libparted isn't suppose to need to change the
+       architecture where it's running and then doesn't make sense to export
+       it.
+
+       Two new files has been create (libparted/architecture.[hc]) that has
+       the PedArchitecture structure and the ped_set_architecture
+       implementation.  All changes that were need to get it suported on all
+       currently available architectures has been done too.
+
+2007-11-02  Otavio Salvador  <otavio@ossystems.com.br>
+
+       parted/geom.h: move includes to after type definition to avoids dependency
+
+       parted/device.h: move includes to after type definition to avoids dependency
+
+       parted/filesys.h doesn't use stdio.h, parted/disk.h and parted/exception.h
+
+       parted/constraint.h needs parted/geom.h since it uses PedGeometry
+
+       parted/natmath.h needs parted/device.h since it uses PedSector
+
+       libparted/cs/natmath.c: remove inline since it's not supported by GNU99 standard
+
+       parted/device.h needs to include parted/constraint.h since it uses PedConstraint
+
+2007-11-02  Debarshi Ray  <rishi@gnu.org>
+
+       Removing unnecessary type-casts and eerie comments.
+
+2007-10-29  Mark Neyhart  <mark_n@lfd008.localdomain>
+
+       Added information to message about ext2 incompatible features.
+       Modifed the message about incompatible ext2 features installed to include a
+       list of compatible features and to recommend the usage of tune2fs or
+       debugfs to remove features which are not compatible.
+
+2007-09-01  Otavio Salvador  <otavio@ossystems.com.br>
+
+       Really duplicate the disk instead of readd every partition
+       To avoid possible differences between the original disk layout and the
+       duplicated one, a raw copy is done. Has been identified a case[1]
+       where extended partitions had their positions changed due this.
+
+        1. http://bugs.debian.org/294520
+
+       The recipe[2] to reproduce the problem, on the provided URI, has been
+       used to produced a test and hence be sure it's not forgotten anymore.
+
+        2. http://bugs.debian.org/294520#34
+
+       The fix has been produced by Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+2007-08-16  Benno Schulenberg  <bensberg@justemail.net>
+
+       Set partprobe's text domain.
+       * partprobe/partprobe.c (main): Set textdomain.
+
+2007-08-14  Jim Meyering  <jim@meyering.net>
+
+       Fix mkpart linux-swap bug: would use 0x83 rather than 0x82
+       * libparted/labels/bsd.c (bsd_partition_set_system): Include "misc.h".
+       Use is_linux_swap to test whether the type string matches.
+       * libparted/labels/dasd.c (dasd_read, dasd_partition_set_system): Likewise.
+       * libparted/labels/dos.c (msdos_partition_set_system): Likewise.
+       * libparted/labels/mac.c (mac_partition_set_system): Likewise.
+       * libparted/labels/rdb.c (amiga_partition_set_system): Likewise.
+       * libparted/labels/sun.c (sun_partition_set_system): Likewise.
+       Based on a patch by Kenneth MacDonald, from
+       <http://lists.gnu.org/archive/html/bug-parted/2007-07/msg00012.html>.
+       * libparted/labels/misc.h (is_linux_swap): New function/file.
+       * libparted/labels/Makefile.am (liblabels_la_SOURCES): Add misc.h.
+       * tests/t2100-mkswap.sh: New file, test for the above fix.
+       * tests/Makefile.am (TESTS): Add t2100-mkswap.sh.
+
+       Don't try to avoid "free (x)" when x is NULL.
+       * libparted/arch/linux.c (linux_read):
+       Part of http://git.debian.org/?p=parted/parted.git;a=commitdiff;h=080d3e7078
+       changed this:
+
+         free(diobuf);
+
+       to this:
+
+         if (diobuf)
+             free(diobuf);
+
+       Yet, free doesn't have any problem with NULL.
+       Some very old (non-POSIX) implementations did (like SunOS4),
+       but even for them, gnulib's lib/free.c protects us.
+
+       Avoid test failure with dash's builtin printf. * tests/t0100-print.sh (msdos_magic): Use more-portable octal escapes, not hexadecimal ones.
+
+2007-08-09  David Cantrell  <dcantrel@mortise.boston.redhat.com>
+
+       Sanity check for dev, safety checks on diobuf.
+       Make sure diobuf is NULL before we begin and make sure it isn't NULL when
+       we try to free it.  Throw an exception if dev is NULL and we enter this
+       function.
+       (cherry picked from commit be2ace6e8d381fb836647234ac65d34a4a547e31)
+
+       Revert "History with undo and redo capabilities."
+       This reverts commit 3bb8494e1ed5af0a48ad0211c3219e653167854f.
+
+       History with undo and redo capabilities.
+       Author: Matt Davis <mattdavis@gmail.com>
+
+       Here is a working version of the history with undo/redo capabilities.  The
+       idea here was based on a talk with Otavio Salvador who mentioned the concepts
+       from Vanni Brutto.  The idea being to capture all changes and only apply them
+       all at once.  This protects the user from performing an unwanted change.  What
+       I did was capture all disk modifications that are committed to disk, and put
+       them in a list.  The history manager allows the list to be traversed linearly,
+       so that a change can be undone, viewed in parted (print command), or reapplied
+       again.  Nothing actually happens to the physical disk until the 'save' command
+       is issued.
+
+       Jim Meyering suggested that the functionality might be useful to libparted
+       thus most of the functionality has been moved there.  The stdout displays
+       (printf) are placed in parted.c as the library should not do any output
+       printing on its own.
+
+       Three commands were added:
+       1) Undo : Undoes a disk modification
+       2) Redo : Redoes the most recent 'undone' modification
+       3) Save : Actually commits the list of non-undone modifications to disk
+
+       I feel a bit more testing needs to be done, but I am happy with the results
+       right now.
+
+2007-08-01  Jim Meyering  <jim@meyering.net>
+
+       Revert "If we cannot create a new PedDisk for the device we're looking at, return NULL rather than the device path." The reverted change causes almost all tests to fail.
+       This reverts commit a6f86144c0b5fd07c462e256bc7b54095c7b8e7a.
+
+       Revert "Removed unused label (compiler warning)." The label *is* used.
+       This reverts commit f4bc90ac22de605ad927d2d85ba468a16bf55ae7.
+
+2007-07-31  David Cantrell  <dcantrel@mortise.boston.redhat.com>
+
+       Probe for all device-mapper devices.
+       Add _dm_probe_all() from Debian and patch linux_probe_all() to probe for
+       device-mapper devices after probing for standard devices.
+       (cherry picked from commit 609b7ae6d274e479027bb46c4bd10227cd921803)
+
+       Add the PED_DEVICE_XVD device type for Xen virtual block devices. (cherry picked from commit af4bea2ac854343609f3e6688bedd727ddf76ae6)
+
+       Detect Xen virtual block devices and identify them as such. (cherry picked from commit 64861efcaae95f605614d5e4c6d9c35c5d5712d7)
+
+       If we cannot create a new PedDisk for the device we're looking at, return NULL rather than the device path. (cherry picked from commit 865ea3d3f2eb7918b64a00825dfa44e05651e2ad)
+
+       When reading the DASD disk label, look at the partition flags as well as what is on the actual partition using ped_file_system_probe().  This avoids flags being set for partitions when they shouldn't be. (cherry picked from commit dfafc45a3775cc92d3cd89c9b35926cab23db512)
+
+       Removed unused label (compiler warning). (cherry picked from commit b43bda3134059cdacb13e1a4d0a0bee8a543cfb0)
+
+2007-07-27  Otavio Salvador  <otavio@ossystems.com.br>
+
+       Fix bootstrap script to support the new translationproject html files
+
+2007-07-23  David Cantrell  <dcantrel@mortise.boston.redhat.com>
+
+       Updated GPL license boilerplate.
+
+       Updated COPYING file to the GNU General Public License version 3.  Updated boilerplate GPL text to reference version 3 of the license.
+
+2007-07-10  Jim Meyering  <jim@meyering.net>
+
+       Flip the switch (expected-failure -> expected-success) in tests/t3100- resize-ext2-partion.sh, now that this bug is fixed.
+
+2007-07-10  Flavio Leitner  <flavio.leitner@gmail.com>
+
+       Fix block state checking for realocated blocks
+       A busy block should be realocated and it's correct in
+       ext2_block_relocator_mark(), but not in ext2_metadata_push().
+
+       Fix block number used when checking for state
+       Hi there,
+
+       The ext2_bread() returns a descriptor containing a
+       pointer ->data representing the contents of 1 block.
+
+       In ext2_block_relocate_grow(), it reads the block bitmap from
+       a group descriptor representing a range of blocks:
+          bh = ext2_bread(fs, EXT2_GROUP_BLOCK_BITMAP(fs->gd[i]));
+
+       Then it does:
+          k = EXT2_GROUP_INODE_TABLE(fs->gd[i]) + fs->inodeblocks + j;
+       k is the absolute block number and then checks the state doing:
+       if (bh->data[k>>3] & _bitmap[k&7])
+
+       The k should be the offset inside of group descriptor and not
+       the absolute block number. Example:
+       . Block bitmap represents 512 blocks
+       . Block absolute number is 1023.
+
+       GrpDesc = Block absolute number / block bitmap size = 1
+       bh = ext2_bread(fs, EXT2_GROUP_BLOCK_BITMAP(fs->gd[GrpDesc]))
+       bh->data[] contains a bitmap of 512 blocks from 512-1024
+       relative = absolute block number % block bitmap size
+       relative = 1023/512 = 511
+
+       The block state is in bitmap bh->data[relative>>3] & ...
+
+2007-07-10  Michael Brennan  <brennan.brisad@gmail.com>
+
+       Fix syntax error and LIBS problem in configure.ac
+       Make sure LIBS doesn't contain libraries that will prevent
+       successful compilations after libreadline has been tested.
+       A trailing comma generated a syntax error in the configure script.
+
+2007-07-10  Matthew S. Harris  <mharris312@gmail.com>
+
+       More correct handling of the HeaderSize field in GPT labels
+       - Use the HeaderSize field value when determining how many bytes to
+       compute the CRC over.
+
+       - Don't abort if the HeaderSize field value is bigger than our struct,
+       since more fields may be defined in the future.
+
+2007-07-06  Jim Meyering  <jim@meyering.net>
+
+       Don't let the automatically-generated ChangeLog cause "make dist" failure. * Makefile.cfg (local-checks-to-skip): Add sc_changelog.
+
+       Let "make distcheck" pass once again. * parted/strlist.c (str_list_alloc): Remove unnecessary cast of xmalloc return value.
+
+2007-07-06  Michael Brennan  <brennan.brisad@gmail.com>
+
+       Fix a problem where a partial read would not be handled correctly; also change the status variable to ssize_t.
+
+2007-07-03  Jim Meyering  <jim@meyering.net>
+
+       Don't include config.h from internal headers. This avoids redefinition errors (on the new symbol, __STDC_LIMIT_MACROS_TRIGGER) when config.h is included twice.
+       Bob Proulx reported the buildbot failures: http://buildbot.proulx.com:9001/
+
+2007-06-22  Jim Meyering  <jim@meyering.net>
+
+       Avoid test failure on Linux-2.6.8 due to too small underlying file. Overwrite the label creating a 4KB file; 1KB was too small and would trigger the failure.  Reported by Bob Proulx.
+
+       Work around test failures caused by inadequate libreadline.
+       * configure.ac: Reject an inadequate libreadline5.0.
+       * parted/ui.c (_readline) [!HAVE_LIBREADLINE]: Echo each
+       just-read line, to be consistent with libreadline5.2.
+
+       Avoid mklabel test failure with very small file on Linux-2.6.8.
+
+2007-06-18  Jim Meyering  <jim@meyering.net>
+
+       README-hacking: Don't mention Gzip 1.2.4, now that 1.3.12 is out. Mention uuid-devel and pkg-config, too.
+
+2007-06-12  David Vazquez  <xeos@gmail.com>
+
+       Replace some malloc and strdup by xmalloc and xstrdup respectively
+       I replace some malloc and strdup by xmalloc and xstrdup respectively.
+
+2007-06-12  Jim Meyering  <jim@meyering.net>
+
+       Fix the mkfs final-block-group-too-short bug.
+       mkfs would fail for certain sizes resulting in a final block-group
+       that was too small to accommodate the minimum number of admin blocks.
+       There was already work-around code for when a decremented "numgroups"
+       was 1.  This change applies that work-around code for larger values of
+       numgroups, too.  Also, there was an off-by-one error in the guard test
+       that would allow a few too-small partition sizes to slip through and
+       provoke the error (see tests/t2000-mkfs.sh for two examples).
+       This change fixes that, too.
+
+       Fix two "make check"-as-root failures. t1100-busy-label.sh: Remove extra copy of "o2" temporary file name. test-lib.sh (emit_superuser_warning): Exit successfully when run as root, too.
+
+2007-06-11  Jim Meyering  <jim@meyering.net>
+
+       Fix inconsistent prompt for file system type.
+       * parted/parted.c (do_mkfs): Use a consistent prompt when asking
+       for a file system type.
+
+       Add a test to record the current EXT2 mkpartfs failure for some sizes.
+       Run this:
+
+           dev=F
+           dd if=/dev/null of=$dev bs=1 seek=20M
+           ./parted -s $dev mklabel gpt
+           ./parted -s $dev mkpartfs primary ext2 0 16796160B
+
+       It fails with this diagnostic:
+
+           Error: Attempt to write sectors 32772-32773 outside of partition on /t/F.
+
+       But if you choose a size that's one byte smaller, it works:
+
+           ./parted -s $dev mkpartfs primary ext2 0 16796159B
+
+       The difference is in how ext2_mkfs_write_meta computes
+       the number of block groups.  In the former case, it computes
+       numgroups = 3.  In the latter, numgroups = 2.
+       The trouble with the first case is that there isn't enough
+       space for 3 full block groups in a file system of that size.
+       Hence the eventual attempt to write beyond the initially-
+       established end-of-file-system mark.
+
+       Avoid unnecessary writes in test scripts.
+       This changes the tests to create sparse files for some test inputs
+       rather than zero-filled non-sparse ones.  Doing this cuts more than 50% off
+       the run time of "make check" in the tests/ directory.
+
+2007-06-11  Matt Davis  <mattdavis9@gmail.com>
+
+       Add a test for an ext2-resize failure.
+       This patch is based on the change from Matt Davis:
+
+           http://thread.gmane.org/gmane.comp.gnu.parted.devel/1695/focus=1704
+
+       Demonstrate an ext2-resize failure in parted-1.8.7, based on the report in
+       http://parted.alioth.debian.org/cgi-bin/trac.cgi/ticket/22
+
+2007-06-05  Jim Meyering  <jim@meyering.net>
+
+       Turn off "DEBUG" in libparted/libparted.c, ... thus making it so that ped_malloc no longer initializes all just-allocated memory to all '1' bits.  Given the two bugs I've just fixed, this change is long overdue.
+
+       Make "mklabel amiga" work also when DEBUG is not enabled.
+       I turned off DEBUG and discovered test failures that its
+       bogus always-initialize-malloc'd-memory policy had been hiding:
+
+       (amiga_write): Initialize all of "->disk_specific" buffer.
+       Avoid buffer overrun when initializing "TABLE".
+
+       "mklabel bsd": don't read/write initialized memory, with DEBUG turned off I spent the first part of yesterday debugging the ext2-resize failure. As part of that, I turned off DEBUG and was surprised to see new failures in the label checks.  At least for label types "amiga" and "bsd", the implementation required that freshly-allocated memory be filled with all "1" bits, as was guaranteed by the default setting of
+       #define DEBUG 1
+
+       When I turned that off, bsd.c would read/write uninitialized memory, and
+       rdb.c(amiga) would do more of the same and produce partition tables that
+       it would then fail to recognize.
+
+       Here's the fix for the bsd problems.
+       I'll send the rdb/amiga ones separately, and once all tests pass
+       without malloc-initialization-to-all-1's, I'll remove that, too.
+
+       The bsd read-uninit bug was at bsd.c:341 (bsd_write), with this test:
+
+               if (!bsd_specific->boot_code [0])
+                       _probe_and_add_boot_code (disk);
+
+       that first byte was never initialized.
+       So, I figured, that'll be easy.  Just initialize it.
+       Wrong.  That wasn't enough, since then a part of that same 512-byte
+       buffer (starting at offset 340) would be used uninitialized by
+       a write syscall.
+
+       FYI, the first failure was demonstrated like this:
+
+       dev=f
+       N=1M
+       dd if=/dev/zero of=$dev bs=$N count=1 && valgrind ./parted -s $dev mklabel bsd
+
+       Here's the first one:
+
+       ==20087== Conditional jump or move depends on uninitialised value(s)
+       ==20087==    at 0x4429EE: bsd_write (bsd.c:341)
+       ==20087==    by 0x411AD3: ped_disk_commit_to_dev (disk.c:485)
+       ==20087==    by 0x411B19: ped_disk_commit (disk.c:508)
+       ==20087==    by 0x403A12: do_mklabel (parted.c:622)
+       ==20087==    by 0x402AF7: command_run (command.c:139)
+       ==20087==    by 0x40B00A: non_interactive_mode (ui.c:1530)
+       ==20087==    by 0x407A8B: main (parted.c:2479)
+
+       and even after initializing only that first byte, here's what I got:
+
+       ==25692== Syscall param write(buf) points to uninitialised byte(s)
+       ==25692==    at 0x54874D0: __write_nocancel (in /usr/lib/debug/libc-2.5.so)
+       ==25692==    by 0x41A15C: linux_write (linux.c:1599)
+       ==25692==    by 0x40D9CA: ped_device_write (device.c:369)
+       ==25692==    by 0x442B1E: bsd_write (bsd.c:368)
+       ==25692==    by 0x411AD3: ped_disk_commit_to_dev (disk.c:485)
+       ==25692==    by 0x411B19: ped_disk_commit (disk.c:508)
+       ==25692==    by 0x403A12: do_mklabel (parted.c:622)
+       ==25692==    by 0x402AF7: command_run (command.c:139)
+       ==25692==    by 0x40B00A: non_interactive_mode (ui.c:1530)
+       ==25692==    by 0x407A8B: main (parted.c:2479)
+       ==25692==  Address 0x59E9C01 is 340 bytes inside a block of size 512 alloc'd
+       ==25692==    at 0x4A1EC7C: memalign (vg_replace_malloc.c:332)
+       ==25692==    by 0x4A1ECD5: posix_memalign (vg_replace_malloc.c:425)
+       ==25692==    by 0x41A11A: linux_write (linux.c:1594)
+       ==25692==    by 0x40D9CA: ped_device_write (device.c:369)
+       ==25692==    by 0x442B1E: bsd_write (bsd.c:368)
+       ==25692==    by 0x411AD3: ped_disk_commit_to_dev (disk.c:485)
+       ==25692==    by 0x411B19: ped_disk_commit (disk.c:508)
+       ==25692==    by 0x403A12: do_mklabel (parted.c:622)
+       ==25692==    by 0x402AF7: command_run (command.c:139)
+       ==25692==    by 0x40B00A: non_interactive_mode (ui.c:1530)
+       ==25692==    by 0x407A8B: main (parted.c:2479)
+
+2007-05-31  Jim Meyering  <jim@meyering.net>
+
+       Don't leak a partition table buffer. * libparted/labels/rdb.c (amiga_read): Free the buffer upon success as well as on failure.
+
+       Correct a misleading diagnostic.
+       * libparted/disk.c (ped_disk_new): Remove always-false "Unable to open"
+       part of diagnostic.  Leave the "unrecognized disk label" part.
+
+       Fix build failure (conflicting decl of strnlen) and clean up
+       * parted/strlist.h: Include <config.h> first.
+       [!ENABLE_NLS]: Define wchar_t to char here, too, since we no
+       longer include "strlist.h" after the definition in table.c.
+       * parted/table.c: Include <wchar.h> and <string.h> unconditionally,
+       and before wchar_t redefinition.
+       Hoist inclusions of xalloc.h and strlist.h, too.
+       Remove wcwidth and strnlen declarations, since they're guaranteed
+       to be in the gnulib-supplied-if-needed headers.
+
+       Read an msdos partition table from a device with 2K sectors.
+       * libparted/labels/dos.c: Include <stdbool.h>.
+       (msdos_probe): Don't hard-code 512.
+       Use read_sector, not ped_device_read.
+       Adapt to changed type of "part_table".
+       Now that "label" is malloc'd, be sure to free it before returning.
+       (read_table): Likewise.
+
+       Fix "make distcheck" failure due to not finding usable partition * m4/o-direct.m4: Require that read as well as write succeed. Require that both work with blocks of size 512 as well as 4096. Reiserfs3 doesn't support 512-byte reads. Allow the user running the test to specify the first directory to test via the PARTED_TMPDIR envvar, in case none of the dirs checked by default is usable.
+
+2007-05-30  Jim Meyering  <jim@meyering.net>
+
+       Fix configure-with-nls vs. wchar.h/wcsdup problem differently. * parted/table.c: Include <config.h> *before* all other #include directives.  Remove explicit declaration of wcsdup.  Now, we'll get the one from <wchar.h>.
+
+2007-05-30  Otavio Salvador  <otavio@ossystems.com.br>
+
+       parted/table.c: Fix a warning when compiling with translation support
+       ,----[ Output when compiling with translation support ]
+       |...
+       | table.c: In function 'table_add_row_from_strlist':
+       | table.c:168: warning: implicit declaration of function 'wcsdup'
+       | table.c:168: warning: assignment makes pointer from integer without a cast
+       `----
+
+2007-05-30  Benno Schulenberg  <bensberg@justemail.net>
+
+       fdasd label: Move formatting out of translatable strings.
+       Also gettextize several missed messages, and simplify some of them.
+
+       vtoc label: Move formatting out of translatable strings.
+       Also gettextize a few missed messages, and remove some whitespace.
+
+2007-05-29  Jim Meyering  <jim@meyering.net>
+
+       Avoid a leak.
+       * parted/parted.c (do_print): Use separate variables for the header
+       and for individual rows.  Free each when done.
+       * parted/table.c (table_add_row_from_strlist): Insert a newly
+       allocated copy of each string, so that the caller can free
+       the argument corresponding to the "list" parameter.
+       * tests/t0100-print.sh: New test for this.
+       * tests/Makefile.am (TESTS): Add t0100-print.sh.
+
+       Move a test/utility function into test-lib.sh.
+       * tests/t3000-constraints.sh (emit_superuser_warning): Move this
+       function to...
+       * tests/test-lib.sh (emit_superuser_warning): ...here.
+       * tests/t0000-basic.sh: Use the function instead of open-coding it.
+
+       On IRC, xeos reported test failures in t0000 and t2000 with diffs like this:
+         -/home/xeos/projects/parted/parted/.libs/lt-parted: invalid token: msdos
+         +parted: invalid token: msdos
+
+       Here's the patch I expect to apply.
+       It also removes an inter-part dependency by moving the creation
+       of the "o2" temporary file into the test where it's used.
+
+       Some of this duplication should be factored out, eventually...
+
+2007-05-26  Jim Meyering  <jim@meyering.net>
+
+       Diagnose invalid command arguments.
+       This started because I objected to parted failing with no diagnostic
+       when given an invalid file system type:
+
+           $ /sbin/parted -s $dev mklabel loop mkpartfs hfsplus 0 1.4
+           WARNING: You are not superuser.  Watch out for permissions.
+           [Exit 1]
+
+       With the changes below, it does this:
+
+           $ ./parted -s $dev mklabel loop mkpartfs hfsplus 0 1.4
+           ./parted: invalid token: hfsplus
+           [Exit 1]
+
+       The following may look like a simple change, but looks are deceptive...
+       For example, if you try to diagnose via ped_exception_throw instead
+       of "error", you'll find that the mere fact of diagnosing the problem
+       introduces new ones because of how the exception handler manipulates the
+       global command line buffer containing the token we're complaining about.
+
+       But this isn't library code, so using error() is fine.
+
+               Diagnose invalid command arguments.
+               When a command argument doesn't match the expected candidate values,
+               parted would silently exit (in script mode) or simply act as if that
+               value and any following ones had not been specified (in interactive
+               mode).  With this change, it complains about the "invalid token",
+               and in script mode (where there hasn't been a prompt to give context)
+               sometimes tells what type of token it was expecting.
+               * parted/ui.c: Include "error.h".
+               (command_line_get_word): If the user's "token" wasn't a good enough
+               match, give a diagnostic.  In script mode, return NULL so that the
+               callers can give additional information.
+               * tests/t2000-mkfs.sh: New test for the above.
+               * tests/t0000-basic.sh: Expect the new diagnostic when "msdos" is
+               treated as an unrecognized first token after "mklabel".  This happens
+               when trying to label a disk that already has a label.
+               * tests/t1100-busy-label.sh: Likewise.
+
+2007-05-25  Jim Meyering  <jim@meyering.net>
+
+       Use xmalloc and xrealloc, rather than unchecked malloc and realloc. * parted/table.c: Use gnulib's xmalloc and realloc. Remove anachronistic casts of malloc/realloc return value. Change "sizeof(type)" to safer "sizeof(*var)" (one of the former was wrong, but in a harmless way).
+
+       Fix off-by-one error in previous change. * parted/strlist.c (str_list_print_wrap): Don't output a space unconditionally.
+
+       Remove a silly (and dangerous) function.
+       This change has no effect, except in a low-memory condition,
+       where the old code would dereference NULL, the new code no
+       longer performs that malloc.
+
+       * parted/strlist.c (get_spaces): Remove this function.
+       Not only is it useless, but it also has an unchecked malloc.
+       (str_list_print_wrap): Don't allocate and initialize a string
+       just to print a sequence of N spaces.
+
+       doc/parted.texi (Static binaries): Correct an invalid example. One cannot specify "primary" for a partition on a loop device.
+
+2007-05-24  Jim Meyering  <jim@meyering.net>
+
+       Diagnose "ext2 FS too small" rather than triggering an assertion. * libparted/fs/ext2/ext2_mkfs.c (ext2_mkfs): An overlapping ext2 partition request could still lead to a bug: constraint-resolution code would produce a single-sector candidate "range", and that would cause the ext2 fs-creation code to misbehave.  Now, it properly detects and reports the FS as being too small. * tests/t3000-constraints.sh: New test for the above. * tests/Makefile.am (TESTS): Add t3000-constraints.sh.
+
+       Fix typo in privs-required test setup. * tests/test-lib.sh: Fix typo: s/\$parted/$parted_/.
+
+2007-05-23  Jim Meyering  <jim@meyering.net>
+
+       Don't fail all tests when "." lacks O_DIRECT support.
+       I often build tools on a tmpfs file system (it's faster), and
+       found that parted tests always failed there.  That's because it tries
+       to open the "device" (a file) with O_DIRECT, and at least the linux tmpfs
+       driver always fails with EINVAL in that case.
+
+       So here's a patch that makes it work.
+       Since the test may require writing in a directory like /tmp,
+       to which others typically have write access, it is particularly
+       careful about security (see the mkdtemp script below), in case
+       "make check" is run by e.g., root.
+
+       Don't fail all tests when "." lacks O_DIRECT support.
+       Before, running "make check" on a file system that doesn't support
+       O_DIRECT (e.g. tmpfs), would always fail.  Now, it works, as long as
+       the test machinery can find a writable directory in which open with
+       O_DIRECT *does* work.
+       * m4/o-direct.m4: New file.  Find a directory/FS with O_DIRECT support.
+       * configure.ac: Use the new macro.
+       * libparted/tests/t1000-label.sh: New file.  Wrap the binary, so
+       it can take advantage of the code that finds O_DIRECT supporting FS.
+       * tests/mkdtemp: New file.  Required, since when running tests as
+       root, we may have to create a temporary directory in a directory
+       like /tmp that's writable by others.
+       * tests/Makefile.am (EXTRA_DIST): Add mkdtemp.
+       * tests/test-lib.sh: When creating test subdir, and setting up "trap",
+       use the directory specified in $PARTED_USABLE_TEST_DIR.
+       Don't set PATH here.  Now, that's done via the generated, and always-
+       sourced, init.sh.  As a result, invoke parted via its full file name.
+
+2007-05-19  Jim Meyering  <jim@meyering.net>
+
+       Make all tests get their initialization from the same place. * tests/t2000-mkfs.sh: Get initialization via ". ./init.sh", not via ". ./test-lib.sh". * Makefile.maint (sc_test_init): New test, to ensure we stay consistent.
+
+       * tests/Makefile.am (init.sh): Make this generated file read-only.
+
+2007-05-18  Jim Meyering  <jim@meyering.net>
+
+       mkpartfs ext2 2 10 would erroneously report "file system too small" for some small (single-group) partitions.  It would also fail to report "file system too small" in some cases, and instead continue on to into inode-allocation code where it'd report "File system full!" * libparted/fs/ext2/ext2_mkfs.c (compute_block_counts): New function, factored out of... (ext2_mkfs): ...here.  Call compute_block_counts rather than open-coded it.  When decrementing numblocks, call compute_block_counts again, to recompute all of the derived values. Require at least 14 free blocks in a 16-inode-per-group partition. * tests/t1500-small-ext2.sh: New file.  Test for the above. * tests/Makefile.am (TESTS): Add t1500-small-ext2.sh.
+
+2007-05-17  Jim Meyering  <jim@meyering.net>
+
+       Avoid spurious test failures due to buggy ncurses-5.6. * tests/test-lib.sh: Also unset TERM.
+
+2007-05-16  Benno Schulenberg  <bensberg@justemail.net>
+
+       partprobe: new option: --dry-run, synonym for now-deprecated --no-update; improve its description
+
+2007-05-16  Anant Narayanan  <anant@theghost.local>
+
+       Test commit
+
+2007-05-14  David Cantrell  <dcantrel@mortise.boston.redhat.com>
+
+       Removed clean.sh script. Using git now, we don't need it anymore (git clean -d -x).
+
+       Use gnulib xmalloc() and xrealloc().
+
+2007-05-14  Flavio Leitner  <flavio.leitner@gmail.com>
+
+       Fix exception handling in mkpart and mkpartfs
+       Parted mkpart and mkpartfs commands does:
+       ...
+          ped_exception_fetch_all();
+          if (!ped_disk_add_partition (disk, part, final_constraint)) {
+                ped_exception_leave_all();
+       ...
+          }
+       ...
+       In mkpart if the ped_disk_add_partition() returns true it skips
+       ped_exception_leave_all() leaving ex_fetch_count = 1.
+
+       In mkpartfs if the ped_disk_add_partition() returns false it will
+       call ped_exception_leave_all() leaving ex_fetch_count negative.
+
+       The wrong count in ex_fetch_count will prevent next commands to
+       correctly handle exceptions, failing to prompt users for example.
+
+       Note: test script t2000-mkfs.sh improved to verify against this issue.
+
+2007-05-11  Jim Meyering  <jim@meyering.net>
+
+       * tests/t1100-busy-label.sh: Quote uses of $dev, in case the user's device name contains a shell meta-character.
+       SCALAR(0x7f6040)
+
+       When labeling a disk in --script mode, fail if it is in use. * parted/parted.c (_disk_warn_busy): In script mode, throw a "PED_EXCEPTION_ERROR", not a warning. (do_mklabel): Guard only the _disk_warn_loss call with "if (!opt_script_mode...", not the _disk_warn_loss call. * tests/t1100-busy-label.sh: New file.  Test the above, in interactive mode as well as in script mode.  Requires root privilege (to mount a fs), and an actual block device. * tests/Makefile.am (TESTS): Add t1100-busy-label.sh. * tests/test-lib.sh: Add infrastructure to support new privileges_required_=1 and erasable_device_required_=1 settings used by t1100.
+
+       No longer require "srcdir=." when running a test manually. * tests/Makefile.am (init.sh): New rule, so one doesn't have to set "srcdir=." when running a test manually. * .gitignore: Ignore new generated file: tests/init.sh. * tests/t0000-basic.sh: Source new init.sh, rather than test-lib.sh. * tests/t1000-mkpartfs.sh: Likewise. * tests/t2000-mkfs.sh: Likewise. * tests/test-lib.sh: Remove useless srcdir-setting code.
+
+2007-05-09  Otavio Salvador  <otavio@ossystems.com.br>
+
+       [parted] Fix script mode support on mkfs commandline command
+       Parted was lacking support to script mode on do_mkfs method hence
+       always failing.
+
+       Note: tests/t2000-mkfs.sh was created to avoid it to happen again
+
+2007-05-08  Debarshi Ray  <rishi@gnu.org>
+
+       Preventing compilation of DASD code on GNU Hurd systems through the use of AC_COMPILE_IFELSE and AM_CONDITIONAL, instead of #ifdef.
+
+2007-05-07  Jim Meyering  <jim@meyering.net>
+
+       Rewrite integration tests to use a new framework (git's). * tests/t1000-mkpartfs.sh: New file. * tests/t0000-basic.sh: New file. * tests/test-lib.sh: New file.  Derived from git's t/test-lib.sh. * tests/lang-default, tests/priv-check: Remove files. * tests/Makefile.am (EXTRA_DIST): Add test-lib.sh. Remove lang-default and priv-check; no longer used. * tests/part-01, tests/label-01: Remove files. * tests/part-02, tests/label-02: Likewise.
+
+       Merge branch 'inhibit-word-wrap'
+
+       Merge branch 'include-limits-h-for-CHAR_MAX'
+
+       Make ---pretend-input-tty inhibit output word-wrap. * parted/ui.c (screen_width): Use effectively-unlimited screen width with ---pretend-input-tty, just as for '--script' mode.
+
+       Suppress "you are not superuser..." warning in script mode. * parted/parted.c (_init): Do not emit this warning in script mode: "You are not superuser.  Watch out for permissions."
+
+       Avoid "make distcheck" failure, with newer system headers. * parted/parted.c: Include <limits.h>, for use of CHAR_MAX.
+
+2007-05-04  Anant Narayanan  <anant@kix.in>
+
+       Updated Doxyfile
+
+2007-05-02  David Cantrell  <dcantrel@mortise.boston.redhat.com>
+
+       On the edge branch, labeled the version as 1.9.0 so we can mark it more correctly as the development tree.
+
+       Whitespace cleanups.
+
+       Whitespace cleanups.
+
+       Whitespace cleanups.
+
+       Whitespace cleanups.
+
+       Revert "Remove unused label."
+       This reverts commit bfd9a6d8b6322d870650b0e92bd936035ab28e76.
+
+       Patch from Jim Meyering <jim@meyering.net> to linux_write() to support logical
+       sector sizes other than 512 (PED_SECTOR_SIZE_DEFAULT).
+
+       Fix primary partition cylinder alignment error for DOS disk labels.
+
+       Fix off-by-one bug in parted when displaying information about the disk label (the disk size, specifically).
+
+       Do not translate partition names in 'parted print' command. This causes problems for non-Latin-based character sets. Also, we don't want to translate the partition name here as we are just showing what is in the disklabel, translating it distorts what the value is.
+       Also added some malloc checks in table.c.
+
+       Remove unused label.
+
+2007-05-02  David Cantrell  <dcantrell@redhat.com>
+
+       Reverted my patch to configure.ac to remove -Wl,--as-needed from LDFLAGS when checking for libreadline.
+
+       libreadline is a problematic library. Autoconf adds a block to the generated configure script that checks to see if we should be passing the --as-needed flag to ld(1). There are portability reasons this code exists (best I can figure), but it presents a problem when we scan for libreadline.
+       libreadline specifically has unresolved symbols on at least Fedora and RHEL.  Why?  Well, the developer can choose to provide libtermcap, libncurses, or libncursesw (wide-char support) at compile time which all satisfy the curses API dependency that libreadline has.  When the parted configure script runs, it fails on readline because the --as-needed flag causes the linker to not include libncurses even though we already have that on the link line.
+
+       My solution is to remove the --as-needed flag when we scan for libreadline and then later check for rl_completion_matches() in libreadline.
+
+       More changes to set the version number to 1.8.3.
+
+       Set version to 1.8.3 for upcoming release.
+
+2007-05-01  Debarshi Ray  <rishi@gnu.org>
+
+       [tests] Separate and improved test for reading of disk labels.
+
+2007-04-30  Matthew Harris  <mharris@coruscant.(none)>
+
+       Fix endianness bugs
+
+2007-04-26  Jim Meyering  <jim@meyering.net>
+
+       Add integration tests, then adjust code so that they pass. These changes affect how --script (-s) works, and when diagnostics are displayed. * Makefile.am (SUBDIRS): Add tests. * configure.ac (AC_OUTPUT): Add tests/Makefile. * tests/Makefile.am: New file. * tests/part-01, tests/label-01: New files. * tests/part-02, tests/label-02: New files. * parted/parted.c (enum) [PRETEND_INPUT_TTY]: Define. Support a new, undocumented option: ---pretend-input-tty. It is intended solely for testing.  The leading '---' ensures that it will never conflict with a "regular" long option. (do_mkpartfs): Prompt only when not in script mode. Call ped_exception_leave_all() to decrement global counter. Without this, the use of parted in tests/part-01 would still fail, but would not issue the diagnostic explaining why. * parted/ui.h (pretend_input_tty): Declare new global. * parted/ui.c (exception_handler): Let the new "pretend_input_tty" option override "!isatty (0)". (init_ui): Don't set opt_script_mode. * tests/lang-default, tests/priv-check: New files.
+
+       Temporarily disable the clone-dvh-label test. * libparted/tests/label.c (test_clone_label):
+
+2007-04-21  Jim Meyering  <jim@meyering.net>
+
+       [PATCH] Avoid warning from -Wformat-security; tweak error diagnostic.
+       * parted/parted.c (_parse_options): Upon failure, output diagnostic
+       to stderr, not stdout.  Use "program_name" value, not literal "parted".
+
+2007-04-20  Debarshi Ray  <rishi@gnu.org>
+
+       [tests] New test for probing of disk labels.
+
+2007-04-20  Otavio Salvador  <otavio@ossystems.com.br>
+
+       Revert "[libparted] dvh label fixes"
+       This reverts commit dcf8e966abf997b9df69b1664c470ed2aa5c166b.
+
+       [libparted] dvh label fixes
+
+       [tests] Simplify test_clone_label removing the label reading test
+       Since the test_create_label already tests the label reading we
+       shouldn't redo it. It's always better to have simple tests so is much
+       easier to find the bugs.
+
+       [tests] Trivial coding style fixes around the tests code
+
+       [tests] Add _test_exception_handler to fail every time an exception is raised
+       Sometimes parts of code raises exceptions and this shouldn't happen on
+       tests. To ensure we catch them a specific exception handler has been
+       implemented.
+
+       The handler usage is very easy. You just need to put the following
+       code at testsuite main method:
+
+       ...
+               /* Fail when an exception is raised */
+               ped_exception_set_handler (_test_exception_handler);
+       ...
+
+2007-04-20  Debarshi Ray  <rishi@gnu.org>
+
+       [tests] New test for cloning of disk labels.
+
+2007-04-19  Debarshi Ray  <rishi@gnu.org>
+
+       [tests] Fix spacing around brackets and asterisks.
+
+2007-04-19  Benno Schulenberg  <bensberg@justemail.net>
+
+       Handle options independent of their order.
+       Abort on any invalid option, and handle -v and -h first.
+
+2007-04-19  Otavio Salvador  <otavio@ossystems.com.br>
+
+       [tests] Small refactoring on test_create_label
+        - Destroy the temporary device once the test has been finished,
+        - Use the _implemented_disk_label and _create_disk_label methods
+          to avoid code duplication.
+
+       [tests] Implements _implemented_disk_label and _create_disk_label on common.[hc]
+        - _implemented_disk_label: returns 0 when we haven't yet implemented
+          this specific label and 1 otherwise;
+
+        - _create_disk_label: creates a disk label of a specific type on a
+          specific device;
+
+2007-04-18  Otavio Salvador  <otavio@ossystems.com.br>
+
+       [tests] Ensure that we're able to read the just created disk label
+       To ensure we're able to read the just created disk label we introduced a call
+       ped_disk_new using the same loopback. This could detect bad label creating or
+       probing detectiong mistakes.
+
+2007-04-17  Debarshi Ray  <rishi@gnu.org>
+
+       Indentation fixes in libparted/tests/.
+
+2007-04-16  Debarshi Ray  <rishi@gnu.org>
+
+       Show the update /etc/fstab message only when there has been a change to the disk. The message is now shorter and more direct.
+
+2007-04-06  solsTiCe d'Hiver  <solsticed.hiver@laposte.net>
+
+       change the variable named start to offset to be consistent with the doc
+
+2007-04-05  solsTiCe d'Hiver  <solstice.dhiver@laposte.net>
+
+       remove any trace of PED_PARTITION_PRIMARY which was deprecated a long time ago to use PED_PARTITION_NORMAL
+
+2007-04-05  Benno Schulenberg  <bensberg@justemail.net>
+
+       Added 'rescue', 'unit', and 'version' to the man page, plus some small edits.
+
+2007-04-04  Otavio Salvador  <otavio@ossystems.com.br>
+
+       Avoid segfault due a double free on reiserfs support (patch sent by Jakub Bogusz <qboosh@pld-linux.org>)
+
+2007-04-04  Benno Schulenberg  <bensberg@justemail.net>
+
+       Make the wording of warning somewhat clearer.
+
+2007-03-27  Benno Schulenberg  <bensberg@justemail.net>
+
+       Tweak some help messages: change third person to imperative for consistency, add single quotes and remove letters for clarity
+
+2007-03-20  David Cantrell  <dcantrell@redhat.com>
+
+       Conditionalize the System Z stuff correctly.  We get headers installed on non-System Z platforms, but the code only compiles on that platform.
+
+       Remove the COMPILE_FOR_S390 flag-setting stuff.  It wasn't correct anyway.  Take a kernel-style approach and check uname -m to see if we are on s390.  If so, we build for zSeries.  Otherwise we do not.
+
+       Sleep for one second after uploading a file to ftp-upload.gnu.org.  Seems transactions need to be spaced out a bit otherwise the server will reject files.
+
+       Fix for compile problems with gcc-4.1.2 as indicated here: http://lists.gnu.org/archive/html/bug-parted/2007-03/msg00008.html
+
+       Check for tgetent() in libtinfo as well as ncurses, curses, termcap, and termlib.
+
+       Remove some unused variables, check the return values from fgets() and asprintf(), and remove the unused _dm_remove_map() function.
+
+       Include vtoc.h for the format1_label_t typedef.
+
+       Remove GNU make-specific things from po4a.mk.
+
+2007-03-16  David Cantrell  <dcantrell@redhat.com>
+
+       Install the libparted.pc file, not the libparted.pc.in file.
+
+       More spec file template cleanups.
+
+       Updated the release script to work with the new source layout.
+
+2007-03-16  Debarshi Ray  <rishi@gnu.org>
+
+       Fixed faulty information in README-hacking (Bison is not a maintainer tool for Parted), and Makefile.maint (every project has certain variations of it).
+
+2007-03-16  Jim Meyering  <jim@meyering.net>
+
+       po/POTFILES.in: Add lib/getopt.c
+
+2007-03-16  Debarshi Ray  <rishi@gnu.org>
+
+       Prevented DASD specific headers and sources from being compiled/installed on non-s390 systems; and conditionally included fdasd.h in linux.h for s390 systems.
+
+2007-03-15  David Cantrell  <dcantrell@redhat.com>
+
+       Move static variable flagging little endian or not to journal.c.  We don't want static variables in general, but if they must exist, put them in a C file, not a header.
+       Parameterize the little_endian flag for the macros in journal.h.
+
+2007-03-13  David Cantrell  <dcantrell@redhat.com>
+
+       Modernize the spec file template.
+
+       Ignore more files.
+
+       Patch from Matthew Garrett <mjg59@srcf.ucam.org> to add HFS+ resize support.
+
+2007-03-12  Jim Meyering  <jim@meyering.net>
+
+       hfs.c: Detect write failure. * libparted/fs/hfs/hfs.c (hfs_extract_file, hfs_extract_bitmap): (hfs_extract_mdb, hfsplus_extract_file, hfsplus_extract_vh): Fail when fclose fails for a written-to file handle.
+
+2007-03-08  Jim Meyering  <jim@meyering.net>
+
+               aix.c: Avoid memory overrun.  Don't assume logical sector size <= 512B  * libparted/labels/aix.c (struct AixLabel): Remove definition.  (aix_label_magic_get, aix_label_magic_set): New functions.      (read_sector): New function.    (aix_probe): Rewrite not to use the above, and not a static buffer.     (aix_clobber): Likewise.        Also, rather than PED_ASSERT'ing that aix_probe returns 1,      simply return 0 if aix_probe returns fails.     (ped_disk_aix_init): Remove assertion, now that AixLabel is gone.
+
+               Use PED_SECTOR_SIZE_DEFAULT not 512     * libparted/arch/beos.c (beos_read, beos_write):        * libparted/arch/linux.c (_device_get_length, _device_seek)     (linux_read, linux_write, _blkpg_add_partition):        * libparted/fs/fat/bootsector.c (fat_boot_sector_read):         * libparted/labels/bsd.c (bsd_alloc):   * libparted/labels/dos.c (probe_filesystem_for_geom):   * libparted/labels/rdb.c (amiga_read):
+
+       * parted/ui.c (non_interactive_mode): Plug a tiny leak. Exercise by running the following with a CD-ROM in the drive: valgrind --leak-check=full parted/parted /dev/cdrom print Before, we'd leak the 6-byte command: "print\0".
+
+       linux.c: Avoid memory overrun.  Handle 2048-byte logical sectors. * libparted/arch/linux.c (linux_read): Allocate the right amount of space for the (potentially 2048-byte-long) sectors we're about to read.
+
+       Don't use deprecated mktemp, to avoid linker warning * libparted/tests/common.c (_create_disk): Rewrite to use mkstemp instead.
+
+       * libparted/tests/label.c: Plug a trivial leak.
+
+2007-03-07  Debarshi Ray  <rishi@sunflower.(none)>
+
+       Merge branch 'master' of git+ssh://rishi-guest@git.debian.org/git/parted/parted
+
+2007-03-07  Debarshi Ray  <rishi@gnu.org>
+
+       Replaced [f]printf with fput[c|s] globally.
+
+2007-03-07  Jim Meyering  <jim@meyering.net>
+
+       libparted/unit.c: constify interfaces * include/parted/unit.h (PED_UNIT_LAST): * libparted/unit.c (ped_unit_get_size): (ped_unit_format_custom_byte, ped_unit_format_byte): (ped_unit_format_custom, ped_unit_format, ped_unit_parse): (find_suffix, parse_chs, clip, geometry_from_centre_radius): (ped_unit_parse_custom):
+
+       Declare some static arrays to be "const". * libparted/labels/dos.c (MBR_BOOT_CODE): * libparted/labels/efi_crc32.c (crc32_tab): * libparted/labels/pc98.c (MBR_BOOT_CODE): * libparted/labels/vtoc.c (EBCtoASC, ASCtoEBC):
+
+       * configure.ac: Fix a typo: s/have_scintilla/have_check/
+
+       tests/label: Don't dereference NULL if open fails. * libparted/tests/label.c (START_TEST): Return right away if ped_device_get returns NULL.
+
+       Add "const" to parameters in these public interfaces. * libparted/disk.c (ped_disk_check): (ped_disk_get_primary_partition_count): (ped_disk_get_last_partition_num, ped_partition_print): (ped_disk_print): (ped_partition_print): Also declare to be "static". This is ok, since the function is referenced only from this file. * include/parted/disk.h: Update their prototypes.
+
+       Use <config.h> consistently, not "config.h". * Makefile.cfg (local-checks-to-skip): Remove sc_require_config_h, to enable the "make distcheck" test for this.
+
+2007-03-06  David Cantrell  <dcantrell@redhat.com>
+
+       start_pos is a PedSector, not a PedGeometry.
+
+2007-03-06  David Cantrell  <dcantrel@mortise.boston.redhat.com>
+
+       Preserve starting sector for primary NTFS 3.1 partitions (Windows Vista) when modifying the DOS disk label.  NTFS 3.1 partitions do not start on the 2nd head of the 1st cylinder at the beginning of the drive.
+
+       Patched parted.8 man page to show partition names apply to GPT disk labels
+       as well as Mac and PC98 disk labels.
+
+2007-03-06  Debarshi Ray  <rishi@gnu.org>
+
+       Replaced [f]printf with fput[c|s] in libparted/fs/ext2/ext2_block_relocator.c.
+
+       Re-arranging .gitignore in alphabetical order.
+
+       Defined a dummy '_dump_history' function in parted/ui.c when Readline is absent. Thanks to Jim Meyering for the suggestion.
+
+       Added libparted/tests/label to .gitignore.
+
+       Fixed parted/ui.c to incorporate signal handlers for systems lacking 'sigaction', 'SA_SIGINFO', and other constants in signal.h.
+
+2007-03-05  Jim Meyering  <jim@meyering.net>
+
+       Undo part of the dos.c constification. * libparted/disk.c: The sole parameter of ped_disk_type_register and ped_disk_type_unregister must *not* be const. * libparted/labels/dos.c (msdos_disk_type): Likewise for the corresponding static struct in dos.c, since those functions modify the struct.  This didn't show up at compile time due to casts. * include/parted/disk.h: Update prototypes, too.
+
+       Hide two unnecessarily-"extern" functions. * libparted/labels/mac.c (mac_alloc): Declare static. * libparted/labels/dos.c (raw_part_parse): Declare static.
+
+       * libparted/labels/dos.c: Complete constification of this file. * libparted/disk.c (ped_disk_type_register): Make the sole parameter "const", so that caller's argument may be "const". (ped_disk_type_unregister): Likewise.
+
+       * po/POTFILES.in: Add partprobe/partprobe.c, now that it contains translatable strings.
+
+       Make partprobe accept --help and --version options. Add long options: --no-update (same as existing -d), and --summary (same as existing -s). * partprobe/partprobe.c Include configmake.h, getopt.h, and NLS-related things. (main): Rewrite option handling. Along the way, fix a bug whereby "partprobe DEV1 DEV2 ... DEVN" would exit successfully whenever process_dev (DEVN) returns nonzero, even when that function fails for each of the preceding devices.
+
+       Make clearfat accept --help and --version options. * debug/clearfat/clearfat.c (AUTHORS, PROGRAM_NAME): Define. Include gettext-related things. Include closeout.h. (usage): New function. (main): Set up for translations, use close_stdout. * bootstrap.conf: Add long-options, for clearfat. * debug/clearfat/Makefile.am: Use gnulib.
+
+       * include/parted/disk.h (struct _PedDiskOps) [write]: Change parameter type to be "const".
+
+       Begin making libparted/labels/*.c const-correct. For an introduction, see http://mail-archive.com/parted-devel@lists.alioth.debian.org/msg00930.html In particular, I've used a const-adding case in mac.c to work around the current, inconsistent semantics of mac_write.
+
+       Avoid a libtool warning: libtool: link: warning: `-release' is ignored for convenience libraries * libparted/labels/Makefile.am (liblabels_la_LDFLAGS): Don't define.
+
+       Make "make distcheck" work better. * Makefile.cfg (local-checks-to-skip): Skip sc_system_h_headers, too. * Makefile.maint (my-distcheck): Don't depend on $(release_archive_dir).
+
+2007-03-02  Jim Meyering  <jim@meyering.net>
+
+       Avoid recursive "LIBS = ... $(LIBS)" assignments. * libparted/labels/Makefile.am (liblabels_la_LIBADD): Add $(INTLLIBS) here rather than via a recursive LIBS = ... $(LIBS) assignment. * libparted/fs/Makefile.am (libfs_la_LIBADD): Likewise.
+
+       Use $(VAR), rather than obsolescent @VAR@ automake notation.
+       Enable the makefile-check rule.
+       * Makefile.cfg: Remove makefile-check from the list of rules to skip.
+       * Makefile.am: change e.g., @VERSION@ to $(VERSION).
+       * debug/clearfat/Makefile.am: Likewise.
+       * libparted/Makefile.am: Likewise.
+       * libparted/fs/Makefile.am: Likewise.
+       * libparted/fs/amiga/Makefile.am: Likewise.
+       * libparted/fs/bfs/Makefile.am: Likewise.
+       * libparted/fs/ext2/Makefile.am: Likewise.
+       * libparted/fs/fat/Makefile.am: Likewise.
+       * libparted/fs/hfs/Makefile.am: Likewise.
+       * libparted/fs/jfs/Makefile.am: Likewise.
+       * libparted/fs/linux_swap/Makefile.am: Likewise.
+       * libparted/fs/ntfs/Makefile.am: Likewise.
+       * libparted/fs/reiserfs/Makefile.am: Likewise.
+       * libparted/fs/ufs/Makefile.am: Likewise.
+       * libparted/fs/xfs/Makefile.am: Likewise.
+       * libparted/labels/Makefile.am: Likewise.
+       * libparted/tests/Makefile.am: Likewise.
+       * parted/Makefile.am: Likewise.
+       * partprobe/Makefile.am: Likewise.
+
+       The above conversion caused a problem:
+       * libparted/Makefile.am: Remove this recursive definition:
+       LIBS = @INTLLIBS@ @LIBS@.  Once converted to LIBS = ...$(LIBS),
+       GNU make would (rightly) fail, objecting to the recursive definition.
+       (libparted_la_LIBADD): Instead, add $(INTLLIBS) here.
+
+       Enable the po-check rule.
+       * Makefile.cfg (local-checks-to-skip): Remove po-check.
+       * po/POTFILES.in: Add a bunch of names of files that contain
+       translatable strings.  Remove some which contain none.
+
+       Add infrastructure for more rigorous "make distcheck" rules.
+       * GNUmakefile: New file.
+       * .prev-version: New file.
+       * Makefile.am (MAINTAINERCLEANFILES): Remove names of files now in build-aux/.
+       (distcheck-hook): New rule, to run the checks in Makefile.maint.
+       (EXTRA_DIST): Add .prev-version.
+       * Makefile.maint: New file.  Improved "make distcheck" rules.
+       * Makefile.cfg: Select which Makefile.maint checks to run.
+       (local-checks-to-skip): List all currently-failing and irrelevant
+       tests here.
+       * build-aux/vc-list-files: New file.  List version-controlled files.
+       * .gitignore: Remove build-aux, since now it contains a
+       version-controlled file.
+
+2007-03-01  Debarshi Ray  <rishi@gnu.org>
+
+       Fixing indentation in parted/ui.c. Replaced TABs with spaces to ensure uniformity in all editors.
+
+2007-02-28  Debarshi Ray  <rishi@gnu.org>
+
+       Fixing indentation in parted/ui.c.
+
+2007-02-27  Jim Meyering  <jim@meyering.net>
+
+       Normalize the way we handle a generated-and-distributed file, parted.spec. * Makefile.am (EXTRA_DIST): Add parted.spec. (parted.spec): New rule. (MAINTAINERCLEANFILES): Add parted.spec. * configure.ac (AC_OUTPUT): Remove parted.spec from the list.
+
+       Add -I$(top_srcdir)/lib, required for new use of close_stdout. * partprobe/Makefile.am (partedincludedir):
+
+       Arrange for "make distcheck" to be stricter.
+
+       * bootstrap: new file.
+
+2007-02-26  Debarshi Ray  <rishi@gnu.org>
+
+       Fixing libparted/arch/gnu.c to remove build-time errors.
+
+2007-02-25  Jim Meyering  <jim@meyering.net>
+
+       partprobe: Detect/report any error when writing to stdout.      * partprobe/Makefile.am (partprobe_LDADD): Add lib/libparted.la.        * partprobe/partprobe.c:        Include "closeout.h" for close_stdout.  Include "version-etc.h" for version_etc prototype.      Declare global, program_name.   (PROGRAM_NAME, AUTHORS): Define.        (help): Use PROGRAM_NAME, rather than hard-coding it.   (version): Use gnulib's version_etc.    (main): Set program_name.       Use atexit to close stdout carefully upon exit.
+
+       Add a bunch of .gitignore files.
+
+               Avoid a gcc format warning:     * debug/clearfat/clearfat.c (_do_help): Use fputs, not printf.
+
+               Remove now-generated files.     * po/ca.po, po/cs.po, po/da.po, po/de.po, po/es.po, po/fr.po:   * po/gl.po, po/id.po, po/it.po, po/ja.po, po/nl.po, po/nn.po:   * po/pl.po, po/pt.po, po/pt_BR.po, po/ru.po:    * po/sv.po, po/tr.po, po/uk.po, po/vi.po, po/zh_CN.po, po/zh_TW.po:     * po/Makevars: Remove now-generated file.       * po/parted.pot: Remove -generated file.
+
+               mv parted.m4 into new dir, m4/
+               * Makefile.am (EXTRA_DIST): Remove parted.m4.
+               Now that it's in m4, it's included automatically.
+               (aclocal_DATA): Remove unnecessary definition.
+
+               * libparted/tests/label.c: Fail if _create_disk returns NULL.   Make global and functions static.       * libparted/tests/common.c (_create_disk): Handle fopen failure.        Handle fclose failure.
+
+               Include <config.h> from every .c file:  * libparted/unit.c, libparted/timer.c:  * libparted/cs/natmath.c, libparted/cs/constraint.c:    * libparted/tests/label.c, libparted/tests/common.c:    * libparted/fs/fat/count.c, libparted/fs/fat/bootsector.c:      * libparted/fs/fat/context.c, libparted/fs/fat/fatio.c:         * libparted/fs/fat/fat.c, libparted/fs/fat/clstdup.c:   * libparted/fs/fat/resize.c, libparted/fs/fat/traverse.c:       * libparted/fs/fat/table.c, libparted/fs/fat/calc.c:    * libparted/fs/amiga/amiga.c, libparted/labels/fdasd.c:         * libparted/labels/dvh.c, libparted/labels/efi_crc32.c:         * libparted/labels/vtoc.c, parted/command.c:    * libparted/tests/label.c, libparted/tests/common.c:
+
+               * libparted/libparted.c: Include "configmake.h" for LOCALEDIR defn.
+
+       parted: Detect/report stdout write errors.      * parted/parted.c: Include "closeout.h" for close_stdout.       Include "configmake.h" for LOCALEDIR definition.        Include "version-etc.h" for version_etc prototype.      Declare global, program_name.   (PROGRAM_NAME, AUTHORS): Define.        (_version): Use gnulib's version_etc.   (main): Set program_name.       Use atexit to close stdout carefully upon exit.
+
+       Include <config.h>, not "../config.h".
+
+       Begin adjusting Makefile.am files to use gnulib. * libparted/Makefile.am (partedincludedir): Add -I$(top_srcdir)/lib. * parted/Makefile.am (parted_LDADD): Add lib/libparted.la. (partedincludedir): Add -I$(top_srcdir)/lib.
+
+       Update to use gnulib, and newer autoconf, automake conventions.
+               Add build-from-checkout instructions.
+               * README-hacking: New file.  Mostly copied from coreutils'
+               README-cvs.
+               * bootstrap: Generate ChangeLog here, if needed/possible,
+               before invoking tools that require its presence.
+               * autogen.sh: Remove this file.  It's superseded by bootstrap.
+
+               Use gnulib, modernize some uses of autoconf, automake, etc.
+               * bootstrap, bootstrap.conf: New files.
+
+               * configure.ac: Modernize.
+               Require the latest stable releases: autoconf-2.61, automake-1.10.
+               Require gettext-0.15.
+               Use more modern form of AC_INIT, etc.
+               Now that the version string must be hard-coded in the AC_INIT line,
+               add code to ensure it agrees with the PED_* and LT_* variables.
+               Use AM_CPPFLAGS, not CFLAGS
+               Remove obsolete setting of ALL_LINGUAS.
+               Don't set CFLAGS=-D_GNU_SOURCE=1 explicitly , since that's already
+               done via AC_GNU_SOURCE, which gnulib pulls in by default,
+               through gl_EARLY.
+               Use gl_INIT and gl_EARLY.
+
+               * Makefile.am (SUBDIRS): Add lib.
+               (EXTRA_DIST): Remove names that are automatically included.
+               * lib/Makefile.am: New file.
+
+2007-02-23  Anant Narayanan  <anant@theghost.local>
+
+       Fix memleaks. Patch thanks to Mike Hommey
+
+2007-02-19  Debarshi Ray  <rishi@gnu.org>
+
+       Introduced MAINTAINERCLEANFILES in Makefile.am for carrying out 'make maintainer-clean'.
+
+       Cleaning up nested structs & unions.
+
+2007-02-16  Jim Meyering  <jim@meyering.net>
+
+       Avoid compiler warnings with gcc -Wall -Wshadow.
+       * libparted/arch/linux.c (init_ide): Add missing "break" at end of
+       final case: stmt.
+       Add "default:" in the same switch to avoid a compiler warning.
+       * libparted/fs/fat/bootsector.c (fat_boot_sector_analyse): Likewise.
+       * libparted/fs/fat/resize.c (ask_type): Likewise.
+       * libparted/fs/fat/traverse.c (fat_dir_entry_set_first_cluster):
+       Likewise.
+       * debug/clearfat/clearfat.c (_calc_fat_entry_offset): Likewise.
+
+       * parted/parted.c (_timer_handler): Cast time_t values to "int"
+       to agree with %d printf format.
+       (g_timer): Rename file-scoped global from shadowed "timer".
+       Update all uses of the global.
+       (version_msg): Remove decl of unused global.
+
+       * parted/ui.c (current_exception_opt): Remove decl of unused global.
+
+       * libparted/filesys.c (ped_file_system_close): Remove unused label.
+       * libparted/unit.c (parse_chs): Likewise.
+
+       * libparted/debug.c (ped_assert): Use "int" as type of backtrace
+       return value, not size_t.
+
+       * libparted/fs/reiserfs/reiserfs.c (reiserfs_check):
+       Guard declaration of local with #ifdef HAVE_REISERFS_FS_CHECK,
+       since it's used only in a similarly-guarded block.
+       (reiserfs_fs_check): Likewise for this file-scoped global.
+
+       Avoid warnings about unused file-scoped global variables.
+       * libparted/fs/hfs/hfs.h (hfs_type, hfsplus_type): Remove these
+       declarations of file-scoped static variables.
+       * libparted/fs/hfs/hfs.c: Put them here, instead.
+
+       * libparted/fs/fat/table.c (_test_code_active): Remove unused function.
+
+       * libparted/arch/linux.c: Add casts to avoid performing
+       pointer arithmetic on "void *" pointers.
+
+       * libparted/fs/hfs/file_plus.c (hfsplus_file_read):
+       Don't do pointer arithmetic on a "void *" pointer.
+       (hfsplus_file_write): Likewise.
+
+       * libparted/fs/fat/count.c (flag_traverse_dir): Move decl of
+       unused local into #if-0'd block where it is referenced.
+       (print_chain): Guard definition with #ifdef PED_VERBOSE,
+       since the sole use of this function is guarded the same way.
+
+       * libparted/fs/amiga/amiga.c: (_amiga_valid_block_id):
+       Remove unused function.
+       (_amiga_get_bstr): Likewise.
+       (_amiga_set_bstr): Likewise.
+
+       Remove unused labels and/or declarations of unused variables.
+       * parted/ui.c (_readline): Likewise.
+       * libparted/cs/constraint.c (_constraint_get_canonical_start_range):
+       Likewise.
+       * libparted/cs/geom.c (ped_geometry_read): Likewise.
+       * libparted/fs/amiga/apfs.c (_generic_apfs_probe): Likewise.
+       * libparted/fs/ext2/ext2_mkfs.c (ext2_mkfs_write_meta): Likewise.
+       * libparted/disk.c: Likewise.
+       * libparted/fs/hfs/hfs.c: Likewise.
+       * libparted/fs/fat/fat.c: Likewise.
+       * libparted/fs/fat/clstdup.c: Likewise.
+       * libparted/fs/fat/calc.c: Likewise.
+       * libparted/fs/ext2/ext2.c: Likewise.
+       * libparted/fs/amiga/affs.c: Likewise.
+       * libparted/fs/amiga/asfs.c: Likewise.
+       * libparted/labels/aix.c: Likewise.
+       * libparted/labels/sun.c: Likewise.
+       * libparted/labels/pc98.c: Likewise.
+       * libparted/labels/mac.c: Likewise.
+       * libparted/labels/dos.c: Likewise.
+       * libparted/labels/loop.c (loop_alloc): Likewise.
+       * libparted/labels/gpt.c: Likewise.
+       * libparted/labels/dvh.c (dvh_alloc): Likewise.
+       (dvh_read) [!DISCOVER_ONLY]: Add "default:" in a switch.
+
+       * libparted/labels/fdasd.c (fdasd_reread_partition_table):
+       Remove decl of unused local(s).
+       (fdasd_get_partition_data): Likewise.
+       (fdasd_partition_type): Remove unused function.
+       (fdasd_write_vtoc_labels): Likewise.
+       (fdasd_change_volser): Likewise.
+       (fdasd_check_volser): Likewise.
+       (fdasd_reread_partition_table): Likewise.
+
+       * libparted/labels/rdb.c (amiga_read): Remove decl of unused local(s).
+
+       * libparted/labels/bsd.c (bsd_partition_new): Remove unused label.
+
+       * libparted/labels/dasd.c: Remove unused labels and declarations
+       of unused variables.
+
+2007-02-16  Debarshi Ray  <rishi@gnu.org>
+
+       Fix the style of typedef, enum, struct and __attribute__ ((packed)).
+
+2007-02-15  Debarshi Ray  <rishi@gnu.org>
+
+       Deprecating ped_[register|unregister]_disk_type in favour of ped_disk_type_[register|unregister].
+
+2007-02-14  Jim Meyering  <jim@meyering.net>
+
+       Use lighter-weight fputs and putchar in place of printf, when possible.
+       * parted/ui.c (wipe_line, _dump_history, reset_env):
+       (sigsegv_handler, sigfpe_handler, sigill_handler, _readline):
+       (help_msg, interactive_mode, non_interactive_mode): Use puts,
+       fputs, and putchar in place of printf, when possible.
+       (reset_env): Correct misleading indentation.
+       (wipe_line): Split a long string.
+
+       Make it so "make distcheck" passes.
+       * doc/po4a.mk (updatepo): Don't choke when *.$(lang).po matches no file.
+       * doc/C/Makefile.am (updatepo): Don't do anything when $(srcdir) is not writable.
+
+2007-02-14  Debarshi Ray  <rishi@gnu.org>
+
+       Fixed the copyright notices.
+
+       Cleaned up the formatting of AUTHORS.
+
+       Tidying up the formatting and comments in linux_swap.c.
+
+2007-02-13  Jim Meyering  <jim@meyering.net>
+
+       Don't define _GNU_SOURCE manually.
+       It's better not to define _GNU_SOURCE manually.
+       By using AC_GNU_SOURCE, you get the definition in exactly one place:
+       in config.h.  I verified that each affected file also includes config.h.
+
+       Don't define _GNU_SOURCE manually.
+       * configure.ac: Use AC_GNU_SOURCE instead.
+       * libparted/arch/gnu.c: Remove definition of _GNU_SOURCE.
+       * libparted/arch/linux.c: Likewise.
+       * libparted/device.c: Likewise.
+       * parted/table.c: Likewise.
+       * parted/table.h: Likewise.
+
+       Remove some #ifdefs
+       Remove some #ifdefs.
+       * parted/table.c (L_): define.
+       Remove in-function #ifdefs; use L_(str) instead.
+
+       * libparted/labels/fdasd.c (GETARG): Remove unused definition.
+       A tiny change...
+
+2007-02-13  Otavio Salvador  <otavio@ossystems.com.br>
+
+       Create 'm4' directory when generating the building system
+
+2007-02-13  Jim Meyering  <jim@meyering.net>
+
+       Work with automake-1.10.
+       I've just tried building parted from scratch (running ./autogen.sh
+       after git-clone) and hit a couple of snags:
+
+       Without aclocal's -I m4, ./autogen.sh produced this:
+
+         configure.ac:192: warning: macro `AM_GNU_GETTEXT_VERSION' not found in library
+         configure.ac:193: warning: macro `AM_GNU_GETTEXT' not found in library
+         configure.ac:192: error: possibly undefined macro: AM_GNU_GETTEXT_VERSION
+               If this token and others are legitimate, please use m4_pattern_allow.
+               See the Autoconf documentation.
+
+       With automake-1.10, I got this:
+
+           parted/Makefile.am:5: compiling `command.c' with per-target flags requires `AM_PROG_CC_C_O' in `configure.ac'
+
+       Here's a patch that fixes those and also removes some trailing blanks.
+
+       Compile warning-free with "gcc -Wall -Wshadow".
+       Hello,
+
+       I find that keeping code warning-free (wrt gcc -Wall -Wshadow)
+       makes it easier to avoid certain classes of bugs.
+
+       Compiling with gcc -Wall -Wshadow evoked a few warnings
+       on a Debian/unstable system.  Here are patches to fix those:
+
+       * libparted/exception.c (default_handler): Rename parameter "ex"
+       to "e", to avoid shadowing file-scoped global.
+       * libparted/fs/linux_swap/linux_swap.c (_generic_swap_probe): Add a
+       "can't happen" (with current callers) "default: goto error" clause
+       in a switch to avoid a may-be-used-uninitialized warning.
+       (_generic_swap_clobber): Likewise.
+       * libparted/fs/hfs/reloc_plus.c (hfsplus_pack_free_space_from_block):
+       Rename local variable "div" to "divisor", to avoid shadowing
+       the function in <stdlib.h>.
+       * libparted/fs/hfs/reloc.c (hfs_pack_free_space_from_block): Likewise.
+       * libparted/fs/hfs/cache.c (hfsc_cache_add_extent): Rename parameter
+       "index" to "ref_index" to avoid shadowing the <string.h> function.
+       * libparted/labels/sun.c (sun_partition_enumerate): Rename local
+       variable "i" to "j", to avoid shadowing another local.
+
+       configure.ac: Add LOCALEDIR definition to CFLAGS only once.
+       I noticed that there were two identical lines in configure.ac,
+       adding the same LOCALEDIR definition to CFLAGS.
+       This change removes the latter.
+
+       * configure.ac: Add LOCALEDIR definition to CFLAGS only once.
+
+2007-02-12  Riccardo Setti  <giskard@piton.asimov.bot>
+
+       Added a pkgconfig file for libparted, adjusted Makefile.am and configure.ac for reflect the canges
+               modified:   Makefile.am
+               modified:   configure.ac
+               new file:   libparted.pc.in
+
+2007-01-30  Debarshi Ray  <rishi@gnu.org>
+
+       Renaming PARTITION_EXT to PARTITION_DOS_EXT in MSDOS disk-label code, to maintain similarity with Linux v2.6.18.2
+
+2007-01-17  Debarshi Ray  <rishi@gnu.org>
+
+       Enable support for swsusp partitions, and the ability to differentiate between old and new versions of linux-swap partitions. Changed the swap_init signature and removed extra ped_geometry_read from _swap*_open.
+
+2007-01-16  Debarshi Ray  <rishi@gnu.org>
+
+       Synchronize the linux-swap (new version) header according to the Linux kernel sources.
+
+       cb6ca73be06f360308e6a2fccb7142ed8175af29 continued.
+
+       Add stdint.h stdlib.h & string.h to include/parted/parted.h and remove them from other files.
+
+2007-01-14  Debarshi Ray  <rishi@gnu.org>
+
+       Synchronise manual page and --help documentation.
+
+2007-01-12  David Cantrell  <dcantrel@mortise.boston.redhat.com>
+
+       Updated i18n information.
+
+       Add ped_device_cache_remove() prototype. (cherry picked from commit cb53b87ab2f779633f152f478c7f8c99c2fd1817)
+
+       Only call _disk_warn_loss(disk) in do_mklabel() if disk is not NULL.  Fixes a segfault when initializing new volumes. (cherry picked from commit 70e3bf5e7818df49a11e203ac8519e037818d592)
+
+       Fix a segfault in ped_assert() where the wrong pointer is freed in the backtrace. (cherry picked from commit 63f7b33b352d0d699efeb1095340ed6139c49e3b)
+
+       Add the ped_device_cache_remove() function to remove a device from the cache. (cherry picked from commit 5fb6658d124050a9dc27a87f2e1c3ffd3d1ad7c0)
+
+       Updated the AUTHORS file. (cherry picked from commit 7ab32d423cc43a5e9372a7dc000feb183db9a89a)
+
+2007-01-12  Debarshi Ray  <rishi@gnu.org>
+
+       Rectify segmentation fault caused by 9e05418de3477666b0709f5d1996149febd33100
+
+       Update doc/C/parted.8 to document --list.
+
+2007-01-06  Otavio Salvador  <otavio@debian.org>
+
+       parted/parted.c: Destroy all objects before return when called with --list or --all option.
+
+2007-01-05  Anant Narayanan  <anant@kix.in>
+
+       Dump readline history on crash
+
+2006-12-14  Anant Narayanan  <anant@kix.in>
+
+       Loosen requirement for the 'check' library.
+
+2006-12-14  Debarshi Ray  <rishi@gnu.org>
+
+       Update AUTHORS.
+
+2006-12-13  Leslie P. Polzer  <polzer@gnu.org>
+
+       added scripts/update-po
+
+2006-12-13  David Cantrell  <dcantrel@mortise.boston.redhat.com>
+
+       Merge branches 'master' and 'master' of git+ssh://dcantrell-guest@git.debian.org/git/parted/parted
+
+2006-12-11  Leslie P. Polzer  <polzer@gnu.org>
+
+       Updated translations.
+
+2006-12-11  Debarshi Ray  <rishi@gnu.org>
+
+       Alias 'print list' with 'print all'.
+
+2006-12-11  Otavio Salvador  <otavio@ossystems.com.br>
+
+       Include a disk probing test
+
+       If CHECK is installed on configure time, build our unittest framework
+
+       Add CHECK unittext library detection to Autoconf script
+
+2006-12-09  Leslie P. Polzer  <polzer@gnu.org>
+
+       Release script: cannot call "return" from top level;  replaced with "exit".
+
+2006-12-08  Debarshi Ray  <rishi@gnu.org>
+
+       Zero sized device is shown as 0.00B and not -0.00kB.
+
+2006-12-07  Otavio Salvador  <otavio@debian.org>
+
+       libparted/exception.c: Dynamically allow space of exception message.
+
+       Output a backtrace when catching SEGV_MAPERR or a general SIGSEGV signals.
+
+2006-12-06  Debarshi Ray  <rishi@gnu.org>
+
+       Implement 'print devices'.
+
+2006-12-06  Benno Schulenberg  <bensberg@justemail.net>
+
+       Translate the copyright message, and hard wrap it
+
+2006-12-05  Otavio Salvador  <otavio@debian.org>
+
+       libparted/disk.c: Standarize the way we walk throught the disk types overall the code
+
+       Revert "Add check unittest support and a initial test for a resizing bug."
+       This code wasn't ready for commit yet.
+
+       This reverts commit ba43cb6ff7bb1d945062e25b94efecb1b84c0c33.
+
+       parted/parted.c: Remove useless line break
+
+2006-12-05  Otavio Salvador  <otavio@ossystems.com.br>
+
+       Add check unittest support and a initial test for a resizing bug.
+
+2006-12-04  David Cantrell  <dcantrel@mortise.boston.redhat.com>
+
+       Fix the upload script to correctly reference the sig files.
+
+       Remove ChangeLog, doc/mdate-sh, and doc/texinfo.tex since they are unmanaged files and get generated automatically at release time.
+
+       Generate ChangeLog before running the autogen tools because we need a file called 'ChangeLog' to exist when running those tools.
+
+       Pass git changelog through 'fold -s' to wrap long lines.
+
+       Added the --enable-selinux switch to the configure script.  If set, it adds -lselinux and -lsepol to the list of libraries to link libparted with.  Bumped the version number to 1.9.9 since this is the edge branch.
+
+       Rename all old ChangeLog files to ChangeLog.0.  Added code to the tarball_upload.sh script to generate a toplevel ChangeLog from the git changelog.
+
+2006-12-02  Leslie P. Polzer  <polzer@gnu.org>
+
+       Updated URL of static parted in docs.
+
+2006-12-02  Anant Narayanan  <anant@kix.in>
+
+       Make parted ignore '-i' option instead of failing
+
+       Support machine parseable output.
+
+2006-11-30  Debarshi Ray  <rishi@gnu.org>
+
+       Cleanup _partition_warn_busy, _disk_warn_busy, _partition_warn_loss and _disk_warn_loss.
+
+2006-11-29  Otavio Salvador  <otavio@debian.org>
+
+       Proper print when there're no extended partitions, but partition names (patch from Sven Luther)
+
+2006-11-28  Otavio Salvador  <otavio@debian.org>
+
+       libparted/arch/linux.c: initialize task point to please GCC
+
+       Don't enforce libselinux and libsepol linking when using device-mapper support
+
+2006-11-28  Debarshi Ray  <rishi@gnu.org>
+
+       Warn before mklabel and mkfs.
+
+       Make mktable aliased to mklabel.
+
+2006-11-28  Otavio Salvador  <otavio@debian.org>
+
+       Fix 'print' command help
+       'print' command help was missing a new line at end and then breaking
+       the help printing.
+
+2006-11-27  Leslie P. Polzer  <polzer@gnu.org>
+
+       Updated translations.
+
+2006-11-27  Otavio Salvador  <otavio@debian.org>
+
+       Remove doc/mdate-sh and doc/texinfo.tex since they are included when we run autogen.sh
+
+2006-11-23  Anant Narayanan  <anant@kix.in>
+
+       Introduce the -list command-line switch, patch by Debarshi Ray
+
+2006-11-22  Otavio Salvador  <otavio@debian.org>
+
+       Avoid warning about user permissions when using --version
+
+       parted/parted.c: Remove redeclaration of current_dev fixing a compilation error
+
+       Readd the 'return 0;' to please GCC
+       The commit d000de8f062ce070d5310f164ebf4f5ed26fcad0 included a
+       compilation warning that makes sense when Parted is built without
+       debugging. To solve the warning and ensure that when running without
+       debugging we return a sinsible value I've reverted
+       d000de8f062ce070d5310f164ebf4f5ed26fcad0 change and added a nice
+       comment to avoid misunderstandings again.
+
+2006-11-22  Anant  <anant@theghost.(none)>
+
+       Fix loop in print_all, thanks to Debarshi Ray for the patch.
+
+2006-11-21  Otavio Salvador  <otavio@debian.org>
+
+       Remove useless 'return 0;' call
+       Since PED_ASSERT will always be run, the return 0 is useless, hence
+       removed.
+
+       Remove useless semicolon from PED_ASSERT calls
+
+2006-11-20  David Cantrell  <dcantrel@mortise.boston.redhat.com>
+
+       Generate SHA-1 digests of the archive files and upload those along with the actual archive files.
+
+2006-11-20  Otavio Salvador  <otavio@debian.org>
+
+       Rework backtrace support
+       While doing a deeply check about the backtrace support I found that
+       -rdynamic is useless on CFLAGS and my previous change was wrong since
+       it wasn't avoiding -rdynamic on LFLAGS if the running system missed
+       the execinfo.h support. That would probably cause a build error on
+       some systems.
+
+2006-11-17  David Cantrell  <dcantrell@redhat.com>
+
+       Final changes for parted-1.8.0
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@896 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+2006-11-11  Otavio Salvador  <otavio@debian.org>
+
+       Apply changes done on Darcs and suitable for release on 1.8 final:
+       Sat Nov 11 18:09:17 BRST 2006  Otavio Salvador <otavio@debian.org>
+         * Enable backtrace just if it's has support on libc.
+
+       Sat Nov 11 17:41:12 BRST 2006  Otavio Salvador <otavio@debian.org>
+         * Add -rdynamic to LDFLAGS.
+
+       Sat Nov 11 17:40:19 BRST 2006  Otavio Salvador <otavio@debian.org>
+         * Add -rdynamic to CFLAGS
+
+       Sat Nov 11 17:38:11 BRST 2006  Otavio Salvador <otavio@debian.org>
+         * Print backtrace stack when throwing an exception
+
+
+
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@895 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+       Remove files that can be generated.
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@894 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+       Changes done on darcs repository suitable for 1.8 release:
+       Sat Nov 11 10:41:54 BRST 2006  Otavio Salvador <otavio@debian.org>
+         * Break lines bigger then 80 columns.
+
+       Sat Nov 11 02:02:26 BRST 2006  Otavio Salvador <otavio@debian.org>
+         * Fix autogen.sh script to call autopoint with -f
+
+
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@892 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+       Changes done on darcs repository suitable for 1.8 release:
+       Fri Nov 10 23:19:15 BRST 2006  Otavio Salvador <otavio@debian.org>
+         * Code clean-up on registering and unregistering of disks
+         
+               * libparted/disk.c (ped_register_disk_type, ped_unregister_disk_type):
+               Clean-up. Patch sent by Debarshi 'Rishi' Ray <debarshi.ray@gmail.com>.
+
+       Fri Nov 10 23:14:58 BRST 2006  Otavio Salvador <otavio@debian.org>
+         * Fix filesystem unregistering
+               
+               * libparted/filesys.c (ped_file_system_type_unregister): Handle
+               instances where fs_types == NULL and the given fs_type is not in
+               the list of registered file-system types. Some code clean-up.
+               Patch sent by Debarshi 'Rishi' Ray <debarshi.ray@gmail.com>.
+
+
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@891 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+2006-11-10  Otavio Salvador  <otavio@debian.org>
+
+       Changes done on darcs repository suitable for 1.8 release:
+       Wed Nov  8 20:40:43 BRST 2006  Otavio Salvador <otavio@debian.org>
+         * Merge libparted/ChangeLog conflict caused by Subversion syncing
+
+       Wed Nov  8 21:15:58 BRST 2006  Otavio Salvador <otavio@debian.org>
+         * doc/C/parted.8: small documentation simplification
+
+       Wed Nov  8 20:09:03 BRST 2006  Otavio Salvador <otavio@debian.org>
+         * libparted/fs/hfs/probe.c: Fix a segmentation fault when running without debug
+
+
+
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@890 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+2006-11-06  David Cantrell  <dcantrell@redhat.com>
+
+       Updates for parted-1.8.0rc3
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@882 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+          * arch/linux.c: Define PROC_DEVICES_BUFSIZ for reading /proc/devices,    set to 16384.
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@881 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+2006-11-03  David Cantrell  <dcantrell@redhat.com>
+
+          * labels/mac.c (_rawpart_is_boot): Check for Apple_Boot type.    * labels/mac.c (_rawpart_analyse): Don't check the data_region_length    against the part->geom.length for boot partitions.
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@880 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+2006-10-31  David Cantrell  <dcantrell@redhat.com>
+
+       2048 -> 1024
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@871 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+               * device.c (canonicalize_file_name): calloc should use sizeof(char)         instead of 1 (from Debarshi Ray).         * arch/linux.c (readFD): Use a 1KB buffer to read /proc/devices         rather than a 16KB buffer.  Init filesize to zero at declaration.         Combine error and EOF check for read() loop.  Memory cleanups at         function exit.  Use malloc() instead of calloc() (from Debarshi         Ray).         * arch/linux.c (_is_dm_major): Test expression and loop cleanups         (from Debarshi Ray).
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@870 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+               * parted.c (do_print): Add device-mapper type to the transport type         list (from Debarshi Ray).
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@869 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+2006-10-26  David Cantrell  <dcantrell@redhat.com>
+
+               * arch/linux.c: Go to error_free_arch_specific rather than         error_free_dev for init_generic() failure on PED_DEVICE_UBD.
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@866 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+       Line length fixes.
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@865 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+2006-10-11  David Cantrell  <dcantrell@redhat.com>
+
+       Need the filename: directive as well.
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@858 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+       Set directive file version to 1.1.
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@855 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+       Conditionalize the device-mapper stuff.
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@852 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+       i18n updates.
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@850 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+       Bump version.
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@849 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+       Updates for 1.8.0rc2 release.
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@848 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+       Added /dev/mapper device support (patch from Peter Jones).
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@847 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+2006-10-09  David Cantrell  <dcantrell@redhat.com>
+
+          * cs/geom.c (ped_geometry_read): Do not throw PED_EXCEPTION_ERROR here    if accessing sectors outside of partition boundary. Returning false    causes ped_geometry_check() to shift correctly anyway.  This occurs    on current Mac disklabels, among other systems.
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@845 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+          * disk.c (ped_unregister_disk_type): Handle instances where disk_types    == NULL and the given type is not in the list of registered disk types    (from Debarshi Ray).
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@844 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+              * parted.c (do_print): Define transport type list and display disk        model type and transport type (from Debarshi Ray).
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@843 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+       Forgot changelog notice.
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@842 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+       Updated i18n files.
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@841 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+2006-10-06  David Cantrell  <dcantrell@redhat.com>
+
+          * arch/linux.c: Change __GNU_SOURCE define to _GNU_SOURCE (only one    underscore at the beginning). Fixes problem with certain systems    not getting posix_memalign() defined during compilation.
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@840 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+          * scripts/release/tarball_upload.sh: Since v1.0 directive files will    no longer be supported by ftp-upload.gnu.org after 2006, modified the    upload script to use the v1.1 format.
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@839 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+          * scripts/release/tarball_upload.sh: Support the -a (or --alpha) switch    on the tarball upload script. This switch will upload the release to    alpha.gnu.org rather than ftp.gnu.org.
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@838 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+2006-09-15  David Cantrell  <dcantrell@redhat.com>
+
+       Fix execution of autogen.sh and configure.
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@836 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+       These (upx and statifier) are not called from anywhere.
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@835 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+       Updated for parted-1.8.0rc1.
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@834 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+              * doc/po4a.mk: Removed fake* stuff. Fixed all-local target so you don't        end up in an infinite make loop trying to make '*'. Fixed the remove        target as well.
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@833 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+       Tabs for the updatepo target.
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@832 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+       Add vtoc.h and fdasd.h to the list.
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@831 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+       Removed the extra double quote at the end of line 6 in partprobe.8.pt_BR.po.  Other updates for i18n.
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@830 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+       Added a script to clean the tree after running 'make distclean'.  Gets it back to the checked-out state from svn.
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@829 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+       i18n updates for parted-1.8.0.
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@828 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+       Removed *.h files from the Makefile.
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@827 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+       i18n updates for parted-1.8.0.
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@826 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+       Removed from version control.
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@825 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+       i18n updates for parted-1.8.0.
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@824 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+       Removed from version control.
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@823 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+       Updated for version 1.8.0rc1.
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@822 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+2006-09-14  David Cantrell  <dcantrell@redhat.com>
+
+              * labels/mac.c (mac_partition_new): memset() inits everything to        zero, no need to do it manually.
+              * labels/mac.c (mac_partition_set_flag): Prevent LVM and RAID partition
+              types from corrupting the partition table.
+
+              * arch/linux.c (_blkpg_add_partition): Set linux_part.length based on
+              whether or not this partition is PED_PARTITION_EXTENDED or not.
+
+              * arch/linux.c (_disk_sync_part_table): Remove the check and continue
+              for PED_PARTITION_EXTENDED types.
+
+
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@821 2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+2006-09-14  Anant Narayanan  <anant@kix.in>
+
+       Fix ChangeLog
+       git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@820 2d424fd7-7fe2-0310-af74-8bc65edeb173
diff --git a/GNUmakefile b/GNUmakefile
new file mode 100644 (file)
index 0000000..6e00ec8
--- /dev/null
@@ -0,0 +1,131 @@
+# Having a separate GNUmakefile lets me `include' the dynamically
+# generated rules created via cfg.mk (package-local configuration)
+# as well as maint.mk (generic maintainer rules).
+# This makefile is used only if you run GNU Make.
+# It is necessary if you want to build targets usually of interest
+# only to the maintainer.
+
+# Copyright (C) 2001, 2003, 2006-2011 Free Software Foundation, 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, 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 <http://www.gnu.org/licenses/>.
+
+# Systems where /bin/sh is not the default shell need this.  The $(shell)
+# command below won't work with e.g. stock DOS/Windows shells.
+ifeq ($(wildcard /bin/s[h]),/bin/sh)
+SHELL = /bin/sh
+else
+# will be used only with the next shell-test line, then overwritten
+# by a configured-in value
+SHELL = sh
+endif
+
+# If the user runs GNU make but has not yet run ./configure,
+# give them a diagnostic.
+_have-Makefile := $(shell test -f Makefile && echo yes)
+ifeq ($(_have-Makefile),yes)
+
+# Make tar archive easier to reproduce.
+export TAR_OPTIONS = --owner=0 --group=0 --numeric-owner
+
+# Allow the user to add to this in the Makefile.
+ALL_RECURSIVE_TARGETS =
+
+include Makefile
+
+# Some projects override e.g., _autoreconf here.
+-include $(srcdir)/cfg.mk
+include $(srcdir)/maint.mk
+
+# Allow cfg.mk to override these.
+_build-aux ?= build-aux
+_autoreconf ?= autoreconf -v
+
+# Ensure that $(VERSION) is up to date for dist-related targets, but not
+# for others: rerunning autoreconf and recompiling everything isn't cheap.
+_have-git-version-gen := \
+  $(shell test -f $(srcdir)/$(_build-aux)/git-version-gen && echo yes)
+ifeq ($(_have-git-version-gen)0,yes$(MAKELEVEL))
+  _is-dist-target ?= $(filter-out %clean, \
+    $(filter maintainer-% dist% alpha beta stable,$(MAKECMDGOALS)))
+  _is-install-target ?= $(filter-out %check, $(filter install%,$(MAKECMDGOALS)))
+  ifneq (,$(_is-dist-target)$(_is-install-target))
+    _curr-ver := $(shell cd $(srcdir)                          \
+                   && $(_build-aux)/git-version-gen            \
+                         .tarball-version                      \
+                         $(git-version-gen-tag-sed-script))
+    ifneq ($(_curr-ver),$(VERSION))
+      ifeq ($(_curr-ver),UNKNOWN)
+        $(info WARNING: unable to verify if $(VERSION) is the correct version)
+      else
+        ifneq (,$(_is-install-target))
+          # GNU Coding Standards state that 'make install' should not cause
+          # recompilation after 'make all'.  But as long as changing the version
+          # string alters config.h, the cost of having 'make all' always have an
+          # up-to-date version is prohibitive.  So, as a compromise, we merely
+          # warn when installing a version string that is out of date; the user
+          # should run 'autoreconf' (or something like 'make distcheck') to
+          # fix the version, 'make all' to propagate it, then 'make install'.
+          $(info WARNING: version string $(VERSION) is out of date;)
+          $(info run '$(MAKE) _version' to fix it)
+        else
+          $(info INFO: running autoreconf for new version string: $(_curr-ver))
+GNUmakefile: _version
+       touch GNUmakefile
+        endif
+      endif
+    endif
+  endif
+endif
+
+.PHONY: _version
+_version:
+       cd $(srcdir) && rm -rf autom4te.cache .version && $(_autoreconf)
+       $(MAKE) $(AM_MAKEFLAGS) Makefile
+
+else
+
+.DEFAULT_GOAL := abort-due-to-no-makefile
+srcdir = .
+
+# The package can override .DEFAULT_GOAL to run actions like autoreconf.
+-include ./cfg.mk
+include ./maint.mk
+
+ifeq ($(.DEFAULT_GOAL),abort-due-to-no-makefile)
+$(MAKECMDGOALS): abort-due-to-no-makefile
+endif
+
+abort-due-to-no-makefile:
+       @echo There seems to be no Makefile in this directory.   1>&2
+       @echo "You must run ./configure before running \`make'." 1>&2
+       @exit 1
+
+endif
+
+# Tell version 3.79 and up of GNU make to not build goals in this
+# directory in parallel, in case someone tries to build multiple
+# targets, and one of them can cause a recursive target to be invoked.
+
+# Only set this if Automake doesn't provide it.
+AM_RECURSIVE_TARGETS ?= $(RECURSIVE_TARGETS:-recursive=) \
+  $(RECURSIVE_CLEAN_TARGETS:-recursive=) \
+  dist distcheck tags ctags
+
+ALL_RECURSIVE_TARGETS += $(AM_RECURSIVE_TARGETS)
+
+ifneq ($(word 2, $(MAKECMDGOALS)), )
+ifneq ($(filter $(ALL_RECURSIVE_TARGETS), $(MAKECMDGOALS)), )
+.NOTPARALLEL:
+endif
+endif
diff --git a/INSTALL b/INSTALL
new file mode 100644 (file)
index 0000000..a1e89e1
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,370 @@
+Installation Instructions
+*************************
+
+Copyright (C) 1994-1996, 1999-2002, 2004-2011 Free Software Foundation,
+Inc.
+
+   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.  This file is offered as-is,
+without warranty of any kind.
+
+Basic Installation
+==================
+
+   Briefly, the shell commands `./configure; make; make install' should
+configure, build, and install this package.  The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package.  Some packages provide this
+`INSTALL' file but do not implement all of the features documented
+below.  The lack of an optional feature in a given package is not
+necessarily a bug.  More recommendations for GNU packages can be found
+in *note Makefile Conventions: (standards)Makefile Conventions.
+
+   The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation.  It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions.  Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+   It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring.  Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.
+
+   If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release.  If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+   The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'.  You need `configure.ac' if
+you want to change it or regenerate `configure' using a newer version
+of `autoconf'.
+
+   The simplest way to compile this package is:
+
+  1. `cd' to the directory containing the package's source code and type
+     `./configure' to configure the package for your system.
+
+     Running `configure' might take a while.  While running, it prints
+     some messages telling which features it is checking for.
+
+  2. Type `make' to compile the package.
+
+  3. Optionally, type `make check' to run any self-tests that come with
+     the package, generally using the just-built uninstalled binaries.
+
+  4. Type `make install' to install the programs and any data files and
+     documentation.  When installing into a prefix owned by root, it is
+     recommended that the package be configured and built as a regular
+     user, and only the `make install' phase executed with root
+     privileges.
+
+  5. Optionally, type `make installcheck' to repeat any self-tests, but
+     this time using the binaries in their final installed location.
+     This target does not install anything.  Running this target as a
+     regular user, particularly if the prior `make install' required
+     root privileges, verifies that the installation completed
+     correctly.
+
+  6. You can remove the program binaries and object files from the
+     source code directory by typing `make clean'.  To also remove the
+     files that `configure' created (so you can compile the package for
+     a different kind of computer), type `make distclean'.  There is
+     also a `make maintainer-clean' target, but that is intended mainly
+     for the package's developers.  If you use it, you may have to get
+     all sorts of other programs in order to regenerate files that came
+     with the distribution.
+
+  7. Often, you can also type `make uninstall' to remove the installed
+     files again.  In practice, not all packages have tested that
+     uninstallation works correctly, even though it is required by the
+     GNU Coding Standards.
+
+  8. Some packages, particularly those that use Automake, provide `make
+     distcheck', which can by used by developers to test that all other
+     targets like `make install' and `make uninstall' work correctly.
+     This target is generally not run by end users.
+
+Compilers and Options
+=====================
+
+   Some systems require unusual options for compilation or linking that
+the `configure' script does not know about.  Run `./configure --help'
+for details on some of the pertinent environment variables.
+
+   You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment.  Here
+is an example:
+
+     ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+
+   *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+   You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory.  To do this, you can use GNU `make'.  `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script.  `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.  This
+is known as a "VPATH" build.
+
+   With a non-GNU `make', it is safer to compile the package for one
+architecture at a time in the source code directory.  After you have
+installed the package for one architecture, use `make distclean' before
+reconfiguring for another architecture.
+
+   On MacOS X 10.5 and later systems, you can create libraries and
+executables that work on multiple system types--known as "fat" or
+"universal" binaries--by specifying multiple `-arch' options to the
+compiler but only a single `-arch' option to the preprocessor.  Like
+this:
+
+     ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CPP="gcc -E" CXXCPP="g++ -E"
+
+   This is not guaranteed to produce working output in all cases, you
+may have to build one architecture at a time and combine the results
+using the `lipo' tool if you have problems.
+
+Installation Names
+==================
+
+   By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc.  You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX', where PREFIX must be an
+absolute file name.
+
+   You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files.  If you
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+   In addition, if you use an unusual directory layout you can give
+options like `--bindir=DIR' to specify different values for particular
+kinds of files.  Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.  In general, the
+default for these options is expressed in terms of `${prefix}', so that
+specifying just `--prefix' will affect all of the other directory
+specifications that were not explicitly provided.
+
+   The most portable way to affect installation locations is to pass the
+correct locations to `configure'; however, many packages provide one or
+both of the following shortcuts of passing variable assignments to the
+`make install' command line to change installation locations without
+having to reconfigure or recompile.
+
+   The first method involves providing an override variable for each
+affected directory.  For example, `make install
+prefix=/alternate/directory' will choose an alternate location for all
+directory configuration variables that were expressed in terms of
+`${prefix}'.  Any directories that were specified during `configure',
+but not in terms of `${prefix}', must each be overridden at install
+time for the entire installation to be relocated.  The approach of
+makefile variable overrides for each directory variable is required by
+the GNU Coding Standards, and ideally causes no recompilation.
+However, some platforms have known limitations with the semantics of
+shared libraries that end up requiring recompilation when using this
+method, particularly noticeable in packages that use GNU Libtool.
+
+   The second method involves providing the `DESTDIR' variable.  For
+example, `make install DESTDIR=/alternate/directory' will prepend
+`/alternate/directory' before all installation names.  The approach of
+`DESTDIR' overrides is not required by the GNU Coding Standards, and
+does not work on platforms that have drive letters.  On the other hand,
+it does better at avoiding recompilation issues, and works well even
+when some directory options were not specified in terms of `${prefix}'
+at `configure' time.
+
+Optional Features
+=================
+
+   If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+   Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System).  The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+   For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+   Some packages offer the ability to configure how verbose the
+execution of `make' will be.  For these packages, running `./configure
+--enable-silent-rules' sets the default to minimal output, which can be
+overridden with `make V=1'; while running `./configure
+--disable-silent-rules' sets the default to verbose, which can be
+overridden with `make V=0'.
+
+Particular systems
+==================
+
+   On HP-UX, the default C compiler is not ANSI C compatible.  If GNU
+CC is not installed, it is recommended to use the following options in
+order to use an ANSI C compiler:
+
+     ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
+
+and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+
+   HP-UX `make' updates targets which have the same time stamps as
+their prerequisites, which makes it generally unusable when shipped
+generated files such as `configure' are involved.  Use GNU `make'
+instead.
+
+   On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+parse its `<wchar.h>' header file.  The option `-nodtk' can be used as
+a workaround.  If GNU CC is not installed, it is therefore recommended
+to try
+
+     ./configure CC="cc"
+
+and if that doesn't work, try
+
+     ./configure CC="cc -nodtk"
+
+   On Solaris, don't put `/usr/ucb' early in your `PATH'.  This
+directory contains several dysfunctional programs; working variants of
+these programs are available in `/usr/bin'.  So, if you need `/usr/ucb'
+in your `PATH', put it _after_ `/usr/bin'.
+
+   On Haiku, software installed for all users goes in `/boot/common',
+not `/usr/local'.  It is recommended to use the following options:
+
+     ./configure --prefix=/boot/common
+
+Specifying the System Type
+==========================
+
+   There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on.  Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+`--build=TYPE' option.  TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+     CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+     OS
+     KERNEL-OS
+
+   See the file `config.sub' for the possible values of each field.  If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+   If you are _building_ compiler tools for cross-compiling, you should
+use the option `--target=TYPE' to select the type of system they will
+produce code for.
+
+   If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+   If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists.  Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+   Variables not defined in a site shell script can be set in the
+environment passed to `configure'.  However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost.  In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'.  For example:
+
+     ./configure CC=/usr/local2/bin/gcc
+
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf bug.  Until the bug is fixed you can use this workaround:
+
+     CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+`configure' Invocation
+======================
+
+   `configure' recognizes the following options to control how it
+operates.
+
+`--help'
+`-h'
+     Print a summary of all of the options to `configure', and exit.
+
+`--help=short'
+`--help=recursive'
+     Print a summary of the options unique to this package's
+     `configure', and exit.  The `short' variant lists options used
+     only in the top level, while the `recursive' variant lists options
+     also present in any nested packages.
+
+`--version'
+`-V'
+     Print the version of Autoconf used to generate the `configure'
+     script, and exit.
+
+`--cache-file=FILE'
+     Enable the cache: use and save the results of the tests in FILE,
+     traditionally `config.cache'.  FILE defaults to `/dev/null' to
+     disable caching.
+
+`--config-cache'
+`-C'
+     Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+     Do not print messages saying which checks are being made.  To
+     suppress all normal output, redirect it to `/dev/null' (any error
+     messages will still be shown).
+
+`--srcdir=DIR'
+     Look for the package's source code in directory DIR.  Usually
+     `configure' can determine that directory automatically.
+
+`--prefix=DIR'
+     Use DIR as the installation prefix.  *note Installation Names::
+     for more details, including other options available for fine-tuning
+     the installation locations.
+
+`--no-create'
+`-n'
+     Run the configure checks, but stop before creating any output
+     files.
+
+`configure' also accepts some other, not widely useful, options.  Run
+`configure --help' for more details.
+
diff --git a/Makefile.am b/Makefile.am
new file mode 100644 (file)
index 0000000..3a69832
--- /dev/null
@@ -0,0 +1,109 @@
+ACLOCAL_AMFLAGS = -I m4
+SUBDIRS = po lib libparted parted partprobe include doc debug tests
+
+EXTRA_DIST =                           \
+  .version                             \
+  .prev-version                                \
+  BUGS                                 \
+  libparted.pc.in                      \
+  parted.spec.in                       \
+  parted.spec                          \
+  scripts/data/abi/baseline_symbols.txt \
+  scripts/extract_symvers              \
+  cfg.mk                               \
+  dist-check.mk                                \
+  maint.mk                             \
+  GNUmakefile
+
+aclocaldir=$(datadir)/aclocal
+
+pcdir = $(libdir)/pkgconfig
+pc_DATA = libparted.pc
+
+# This is best not done via configure.ac, because automake's
+# make distcheck target does not like auto-generated files
+# being included in the distributed archive.
+parted.spec: parted.spec.in
+       sed 's/@''PACKAGE@/$(PACKAGE)/;s/@''VERSION@/$(VERSION)/' $< > $@-tmp
+       mv $@-tmp $@
+MAINTAINERCLEANFILES = parted.spec
+
+distcheck-hook:
+       $(MAKE) my-distcheck
+
+### ABI Checking scripts ###
+
+baseline_file = ${top_srcdir}/scripts/data/abi/baseline_symbols.txt
+extract_symvers = $(top_srcdir)/scripts/extract_symvers
+
+current_symbols.txt: ${extract_symvers}
+         -@(sh ${extract_symvers} libparted/.libs/libparted.so current_symbols.txt)
+
+baseline_symbols:
+       -@(output=${baseline_file}; \
+         if test ! -f $${output}; then \
+           echo "Baseline file doesn't exist."; \
+           echo "Try 'make new-abi-baseline' to create it."; \
+           exit 1; \
+         fi; true)
+
+new-abi-baseline:
+       -@$(mkinstalldirs) ${baseline_dir}
+       -@(output=${baseline_file}; \
+         if test -f $${output}; then \
+           output=$${output}.new; \
+           t=`echo $${output} | sed 's=.*config/abi/=='`; \
+           echo "Baseline file already exists, writing to $${t} instead."; \
+         fi; \
+         sh ${extract_symvers} libparted/.libs/libparted.so $${output})
+
+# Use 'new-abi-baseline' to create an initial symbol file.  Then run
+# 'check-abi' to test for changes against that file.
+check-abi: baseline_symbols current_symbols.txt
+       @diff -u ${baseline_file} ./current_symbols.txt 2>&1 \
+        | tee libparted.abi-diff
+       @test `wc -l < libparted.abi-diff` -eq 0 && exit 0 \
+        || echo "ABI has changed. Please, update you ABI package version." \
+        && exit 1
+
+MOSTLYCLEANDIRS = m4
+
+MAINTAINERCLEANFILES += \
+  ABOUT-NLS     \
+  ChangeLog     \
+  INSTALL       \
+  aclocal.m4    \
+  configure
+
+.PHONY: ss-1024 ss-2048 ss-4096
+ss-1024 ss-2048 ss-4096:
+       PARTED_SECTOR_SIZE=$(subst ss-,,$@) $(MAKE) check-recursive
+
+# Run the regression test suite with different settings,
+# to ensure it works with simulated partition sizes > 512.
+.PHONY: check-other-sector_sizes
+check-other-sector_sizes:
+       $(MAKE) ss-1024
+       $(MAKE) ss-2048
+       $(MAKE) ss-4096
+
+check: check-other-sector_sizes
+
+# Arrange so that .tarball-version appears only in the distribution
+# tarball, and never in a checked-out repository.
+dist-hook: gen-ChangeLog
+       echo $(VERSION) > $(distdir)/.tarball-version
+
+gen_start_date = 2000-01-01
+.PHONY: gen-ChangeLog
+gen-ChangeLog:
+       if test -d .git; then                                           \
+         $(top_srcdir)/build-aux/gitlog-to-changelog                   \
+           --since=$(gen_start_date) > $(distdir)/cl-t;                \
+         rm -f $(distdir)/ChangeLog;                                   \
+         mv $(distdir)/cl-t $(distdir)/ChangeLog;                      \
+       fi
+
+BUILT_SOURCES = .version
+.version:
+       echo $(VERSION) > $@-t && mv $@-t $@
diff --git a/Makefile.in b/Makefile.in
new file mode 100644 (file)
index 0000000..73724c8
--- /dev/null
@@ -0,0 +1,1664 @@
+# Makefile.in generated by automake 1.11a from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in 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.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = .
+DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
+       $(srcdir)/Makefile.in $(srcdir)/libparted.pc.in \
+       $(top_srcdir)/configure ABOUT-NLS AUTHORS COPYING ChangeLog \
+       INSTALL NEWS THANKS TODO build-aux/compile \
+       build-aux/config.guess build-aux/config.rpath \
+       build-aux/config.sub build-aux/depcomp build-aux/install-sh \
+       build-aux/ltmain.sh build-aux/mdate-sh build-aux/missing \
+       build-aux/texinfo.tex
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+       $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argmatch.m4 \
+       $(top_srcdir)/m4/assert.m4 $(top_srcdir)/m4/btowc.m4 \
+       $(top_srcdir)/m4/calloc.m4 $(top_srcdir)/m4/canonicalize.m4 \
+       $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
+       $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/configmake.m4 \
+       $(top_srcdir)/m4/dirname.m4 \
+       $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+       $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/environ.m4 \
+       $(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
+       $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fclose.m4 \
+       $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/fcntl_h.m4 \
+       $(top_srcdir)/m4/fflush.m4 $(top_srcdir)/m4/fpending.m4 \
+       $(top_srcdir)/m4/fpurge.m4 $(top_srcdir)/m4/freading.m4 \
+       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/fsync.m4 \
+       $(top_srcdir)/m4/ftell.m4 $(top_srcdir)/m4/ftello.m4 \
+       $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
+       $(top_srcdir)/m4/langinfo_h.m4 $(top_srcdir)/m4/lcmessage.m4 \
+       $(top_srcdir)/m4/lib-ignore.m4 $(top_srcdir)/m4/lib-ld.m4 \
+       $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/localcharset.m4 \
+       $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \
+       $(top_srcdir)/m4/locale-tr.m4 $(top_srcdir)/m4/locale-zh.m4 \
+       $(top_srcdir)/m4/locale_h.m4 $(top_srcdir)/m4/localename.m4 \
+       $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/long-options.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
+       $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+       $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
+       $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+       $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbtowc.m4 \
+       $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+       $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/multiarch.m4 \
+       $(top_srcdir)/m4/nl_langinfo.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/nocrash.m4 $(top_srcdir)/m4/o-direct.m4 \
+       $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/priv-set.m4 \
+       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+       $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+       $(top_srcdir)/m4/read.m4 $(top_srcdir)/m4/readlink.m4 \
+       $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/regex.m4 \
+       $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+       $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/setlocale.m4 \
+       $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/ssize_t.m4 \
+       $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdarg.m4 \
+       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strdup.m4 \
+       $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/strerror_r.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+       $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtoll.m4 \
+       $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/symlink.m4 \
+       $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+       $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/thread.m4 \
+       $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/time_h.m4 \
+       $(top_srcdir)/m4/ungetc.m4 $(top_srcdir)/m4/unistd_h.m4 \
+       $(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkdir.m4 \
+       $(top_srcdir)/m4/usleep.m4 $(top_srcdir)/m4/version-etc.m4 \
+       $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \
+       $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
+       $(top_srcdir)/m4/wcrtomb.m4 $(top_srcdir)/m4/wctob.m4 \
+       $(top_srcdir)/m4/wctomb.m4 $(top_srcdir)/m4/wctype_h.m4 \
+       $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+       $(top_srcdir)/m4/xstrndup.m4 $(top_srcdir)/m4/xstrtol.m4 \
+       $(top_srcdir)/m4/yield.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES = libparted.pc
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+       html-recursive info-recursive install-data-recursive \
+       install-dvi-recursive install-exec-recursive \
+       install-html-recursive install-info-recursive \
+       install-pdf-recursive install-ps-recursive install-recursive \
+       installcheck-recursive installdirs-recursive pdf-recursive \
+       ps-recursive uninstall-recursive
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pcdir)"
+DATA = $(pc_DATA)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
+  distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+       $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+       cscope distdir dist dist-all distcheck
+ETAGS = etags
+CTAGS = ctags
+CSCOPE = cscope
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+  { test ! -d "$(distdir)" \
+    || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+         && rm -fr "$(distdir)"; }; }
+am__post_remove_distdir = $(am__remove_distdir)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.xz
+GZIP_ENV = --best
+DIST_TARGETS = dist-xz dist-gzip
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
+pkglibexecdir = @pkglibexecdir@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+BUILDINFO = @BUILDINFO@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHECK_CFLAGS = @CHECK_CFLAGS@
+CHECK_LIBS = @CHECK_LIBS@
+CONFIG_INCLUDE = @CONFIG_INCLUDE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DYNAMIC_LOADING = @DYNAMIC_LOADING@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENABLE_DEVICE_MAPPER = @ENABLE_DEVICE_MAPPER@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FACCESSAT = @GNULIB_FACCESSAT@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCHMODAT = @GNULIB_FCHMODAT@
+GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FCNTL = @GNULIB_FCNTL@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FGETC = @GNULIB_FGETC@
+GNULIB_FGETS = @GNULIB_FGETS@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREAD = @GNULIB_FREAD@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSCANF = @GNULIB_FSCANF@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSTATAT = @GNULIB_FSTATAT@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FUTIMENS = @GNULIB_FUTIMENS@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETC = @GNULIB_GETC@
+GNULIB_GETCHAR = @GNULIB_GETCHAR@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETGROUPS = @GNULIB_GETGROUPS@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETS = @GNULIB_GETS@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
+GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_ISWBLANK = @GNULIB_ISWBLANK@
+GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@
+GNULIB_LCHMOD = @GNULIB_LCHMOD@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LINKAT = @GNULIB_LINKAT@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_LSTAT = @GNULIB_LSTAT@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MBTOWC = @GNULIB_MBTOWC@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDIRAT = @GNULIB_MKDIRAT@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKFIFO = @GNULIB_MKFIFO@
+GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@
+GNULIB_MKNOD = @GNULIB_MKNOD@
+GNULIB_MKNODAT = @GNULIB_MKNODAT@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@
+GNULIB_MKTIME = @GNULIB_MKTIME@
+GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@
+GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@
+GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_OPEN = @GNULIB_OPEN@
+GNULIB_OPENAT = @GNULIB_OPENAT@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE = @GNULIB_PIPE@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_PREAD = @GNULIB_PREAD@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READ = @GNULIB_READ@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_READLINKAT = @GNULIB_READLINKAT@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_REALPATH = @GNULIB_REALPATH@
+GNULIB_REMOVE = @GNULIB_REMOVE@
+GNULIB_RENAME = @GNULIB_RENAME@
+GNULIB_RENAMEAT = @GNULIB_RENAMEAT@
+GNULIB_RMDIR = @GNULIB_RMDIR@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SETLOCALE = @GNULIB_SETLOCALE@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STAT = @GNULIB_STAT@
+GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRERROR_R = @GNULIB_STRERROR_R@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRPTIME = @GNULIB_STRPTIME@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_SYMLINK = @GNULIB_SYMLINK@
+GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
+GNULIB_TIMEGM = @GNULIB_TIMEGM@
+GNULIB_TIME_R = @GNULIB_TIME_R@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
+GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
+GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNLINK = @GNULIB_UNLINK@
+GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_USLEEP = @GNULIB_USLEEP@
+GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VFSCANF = @GNULIB_VFSCANF@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSCANF = @GNULIB_VSCANF@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCPCPY = @GNULIB_WCPCPY@
+GNULIB_WCPNCPY = @GNULIB_WCPNCPY@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@
+GNULIB_WCSCAT = @GNULIB_WCSCAT@
+GNULIB_WCSCHR = @GNULIB_WCSCHR@
+GNULIB_WCSCMP = @GNULIB_WCSCMP@
+GNULIB_WCSCOLL = @GNULIB_WCSCOLL@
+GNULIB_WCSCPY = @GNULIB_WCSCPY@
+GNULIB_WCSCSPN = @GNULIB_WCSCSPN@
+GNULIB_WCSDUP = @GNULIB_WCSDUP@
+GNULIB_WCSLEN = @GNULIB_WCSLEN@
+GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@
+GNULIB_WCSNCAT = @GNULIB_WCSNCAT@
+GNULIB_WCSNCMP = @GNULIB_WCSNCMP@
+GNULIB_WCSNCPY = @GNULIB_WCSNCPY@
+GNULIB_WCSNLEN = @GNULIB_WCSNLEN@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSPBRK = @GNULIB_WCSPBRK@
+GNULIB_WCSRCHR = @GNULIB_WCSRCHR@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCSSPN = @GNULIB_WCSSPN@
+GNULIB_WCSSTR = @GNULIB_WCSSTR@
+GNULIB_WCSTOK = @GNULIB_WCSTOK@
+GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@
+GNULIB_WCSXFRM = @GNULIB_WCSXFRM@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCTOMB = @GNULIB_WCTOMB@
+GNULIB_WCTRANS = @GNULIB_WCTRANS@
+GNULIB_WCTYPE = @GNULIB_WCTYPE@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WMEMCHR = @GNULIB_WMEMCHR@
+GNULIB_WMEMCMP = @GNULIB_WMEMCMP@
+GNULIB_WMEMCPY = @GNULIB_WMEMCPY@
+GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@
+GNULIB_WMEMSET = @GNULIB_WMEMSET@
+GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
+HAVE_CHOWN = @HAVE_CHOWN@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@
+HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SETENV = @HAVE_DECL_SETENV@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@
+HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_DUPLOCALE = @HAVE_DUPLOCALE@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
+HAVE_FCHMODAT = @HAVE_FCHMODAT@
+HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
+HAVE_FCNTL = @HAVE_FCNTL@
+HAVE_FEATURES_H = @HAVE_FEATURES_H@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSTATAT = @HAVE_FSTATAT@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_FUTIMENS = @HAVE_FUTIMENS@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETGROUPS = @HAVE_GETGROUPS@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETLOGIN = @HAVE_GETLOGIN@
+HAVE_GETOPT_H = @HAVE_GETOPT_H@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
+HAVE_GRANTPT = @HAVE_GRANTPT@
+HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWBLANK = @HAVE_ISWBLANK@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
+HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
+HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
+HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
+HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
+HAVE_LCHMOD = @HAVE_LCHMOD@
+HAVE_LCHOWN = @HAVE_LCHOWN@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_LSTAT = @HAVE_LSTAT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSLEN = @HAVE_MBSLEN@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMCHR = @HAVE_MEMCHR@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDIRAT = @HAVE_MKDIRAT@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKFIFO = @HAVE_MKFIFO@
+HAVE_MKFIFOAT = @HAVE_MKFIFOAT@
+HAVE_MKNOD = @HAVE_MKNOD@
+HAVE_MKNODAT = @HAVE_MKNODAT@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
+HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
+HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
+HAVE_OPENAT = @HAVE_OPENAT@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PIPE = @HAVE_PIPE@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PWRITE = @HAVE_PWRITE@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_READLINKAT = @HAVE_READLINKAT@
+HAVE_REALPATH = @HAVE_REALPATH@
+HAVE_RENAMEAT = @HAVE_RENAMEAT@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRPTIME = @HAVE_STRPTIME@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYMLINK = @HAVE_SYMLINK@
+HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_TIMEGM = @HAVE_TIMEGM@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_USLEEP = @HAVE_USLEEP@
+HAVE_UTIMENSAT = @HAVE_UTIMENSAT@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCPCPY = @HAVE_WCPCPY@
+HAVE_WCPNCPY = @HAVE_WCPNCPY@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSCASECMP = @HAVE_WCSCASECMP@
+HAVE_WCSCAT = @HAVE_WCSCAT@
+HAVE_WCSCHR = @HAVE_WCSCHR@
+HAVE_WCSCMP = @HAVE_WCSCMP@
+HAVE_WCSCOLL = @HAVE_WCSCOLL@
+HAVE_WCSCPY = @HAVE_WCSCPY@
+HAVE_WCSCSPN = @HAVE_WCSCSPN@
+HAVE_WCSDUP = @HAVE_WCSDUP@
+HAVE_WCSLEN = @HAVE_WCSLEN@
+HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@
+HAVE_WCSNCAT = @HAVE_WCSNCAT@
+HAVE_WCSNCMP = @HAVE_WCSNCMP@
+HAVE_WCSNCPY = @HAVE_WCSNCPY@
+HAVE_WCSNLEN = @HAVE_WCSNLEN@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSPBRK = @HAVE_WCSPBRK@
+HAVE_WCSRCHR = @HAVE_WCSRCHR@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCSSPN = @HAVE_WCSSPN@
+HAVE_WCSSTR = @HAVE_WCSSTR@
+HAVE_WCSTOK = @HAVE_WCSTOK@
+HAVE_WCSWIDTH = @HAVE_WCSWIDTH@
+HAVE_WCSXFRM = @HAVE_WCSXFRM@
+HAVE_WCTRANS_T = @HAVE_WCTRANS_T@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WCTYPE_T = @HAVE_WCTYPE_T@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WMEMCHR = @HAVE_WMEMCHR@
+HAVE_WMEMCMP = @HAVE_WMEMCMP@
+HAVE_WMEMCPY = @HAVE_WMEMCPY@
+HAVE_WMEMMOVE = @HAVE_WMEMMOVE@
+HAVE_WMEMSET = @HAVE_WMEMSET@
+HAVE_XLOCALE_H = @HAVE_XLOCALE_H@
+HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
+IGNORE_UNUSED_LIBRARIES_CFLAGS = @IGNORE_UNUSED_LIBRARIES_CFLAGS@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@
+INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMULTITHREAD = @LIBMULTITHREAD@
+LIBOBJS = @LIBOBJS@
+LIBPTH = @LIBPTH@
+LIBPTH_PREFIX = @LIBPTH_PREFIX@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTHREAD = @LIBTHREAD@
+LIBTOOL = @LIBTOOL@
+LIB_BLKID = @LIB_BLKID@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBMULTITHREAD = @LTLIBMULTITHREAD@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBPTH = @LTLIBPTH@
+LTLIBTHREAD = @LTLIBTHREAD@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
+NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@
+NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
+NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@
+NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FCNTL_H = @NEXT_FCNTL_H@
+NEXT_GETOPT_H = @NEXT_GETOPT_H@
+NEXT_INTTYPES_H = @NEXT_INTTYPES_H@
+NEXT_LANGINFO_H = @NEXT_LANGINFO_H@
+NEXT_LOCALE_H = @NEXT_LOCALE_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@
+NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@
+NEXT_TIME_H = @NEXT_TIME_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PARTED_USABLE_TEST_DIR = @PARTED_USABLE_TEST_DIR@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CALLOC = @REPLACE_CALLOC@
+REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP = @REPLACE_DUP@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@
+REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FCNTL = @REPLACE_FCNTL@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FSTAT = @REPLACE_FSTAT@
+REPLACE_FSTATAT = @REPLACE_FSTATAT@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_FUTIMENS = @REPLACE_FUTIMENS@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETDELIM = @REPLACE_GETDELIM@
+REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@
+REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LINK = @REPLACE_LINK@
+REPLACE_LINKAT = @REPLACE_LINKAT@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_LSTAT = @REPLACE_LSTAT@
+REPLACE_MALLOC = @REPLACE_MALLOC@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MBTOWC = @REPLACE_MBTOWC@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKDIR = @REPLACE_MKDIR@
+REPLACE_MKFIFO = @REPLACE_MKFIFO@
+REPLACE_MKNOD = @REPLACE_MKNOD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_MKTIME = @REPLACE_MKTIME@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_OPEN = @REPLACE_OPEN@
+REPLACE_OPENAT = @REPLACE_OPENAT@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PREAD = @REPLACE_PREAD@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
+REPLACE_READ = @REPLACE_READ@
+REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_REALLOC = @REPLACE_REALLOC@
+REPLACE_REALPATH = @REPLACE_REALPATH@
+REPLACE_REMOVE = @REPLACE_REMOVE@
+REPLACE_RENAME = @REPLACE_RENAME@
+REPLACE_RENAMEAT = @REPLACE_RENAMEAT@
+REPLACE_RMDIR = @REPLACE_RMDIR@
+REPLACE_SETENV = @REPLACE_SETENV@
+REPLACE_SETLOCALE = @REPLACE_SETLOCALE@
+REPLACE_SLEEP = @REPLACE_SLEEP@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STAT = @REPLACE_STAT@
+REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRERROR_R = @REPLACE_STRERROR_R@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
+REPLACE_STRNDUP = @REPLACE_STRNDUP@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
+REPLACE_SYMLINK = @REPLACE_SYMLINK@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
+REPLACE_UNLINK = @REPLACE_UNLINK@
+REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
+REPLACE_UNSETENV = @REPLACE_UNSETENV@
+REPLACE_USLEEP = @REPLACE_USLEEP@
+REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCTOMB = @REPLACE_WCTOMB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SELINUX_LIBS = @SELINUX_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
+UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
+UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+YIELD_LIB = @YIELD_LIB@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+ACLOCAL_AMFLAGS = -I m4
+SUBDIRS = po lib libparted parted partprobe include doc debug tests
+EXTRA_DIST = \
+  .version                             \
+  .prev-version                                \
+  BUGS                                 \
+  libparted.pc.in                      \
+  parted.spec.in                       \
+  parted.spec                          \
+  scripts/data/abi/baseline_symbols.txt \
+  scripts/extract_symvers              \
+  cfg.mk                               \
+  dist-check.mk                                \
+  maint.mk                             \
+  GNUmakefile
+
+aclocaldir = $(datadir)/aclocal
+pcdir = $(libdir)/pkgconfig
+pc_DATA = libparted.pc
+MAINTAINERCLEANFILES = parted.spec ABOUT-NLS ChangeLog INSTALL \
+       aclocal.m4 configure
+
+### ABI Checking scripts ###
+baseline_file = ${top_srcdir}/scripts/data/abi/baseline_symbols.txt
+extract_symvers = $(top_srcdir)/scripts/extract_symvers
+MOSTLYCLEANDIRS = m4
+gen_start_date = 2000-01-01
+BUILT_SOURCES = .version
+all: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+am--refresh:
+       @:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
+             $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
+               && exit 0; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           echo ' $(SHELL) ./config.status'; \
+           $(SHELL) ./config.status;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       $(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+libparted.pc: $(top_builddir)/config.status $(srcdir)/libparted.pc.in
+       cd $(top_builddir) && $(SHELL) ./config.status $@
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+distclean-libtool:
+       -rm -f libtool config.lt
+install-pcDATA: $(pc_DATA)
+       @$(NORMAL_INSTALL)
+       test -z "$(pcdir)" || $(MKDIR_P) "$(DESTDIR)$(pcdir)"
+       @list='$(pc_DATA)'; test -n "$(pcdir)" || list=; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pcdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(pcdir)" || exit $$?; \
+       done
+
+uninstall-pcDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(pc_DATA)'; test -n "$(pcdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       test -n "$$files" || exit 0; \
+       echo " ( cd '$(DESTDIR)$(pcdir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(pcdir)" && rm -f $$files
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+       @fail= failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+       @fail= failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       rev=''; for subdir in $$list; do \
+         if test "$$subdir" = "."; then :; else \
+           rev="$$subdir $$rev"; \
+         fi; \
+       done; \
+       rev="$$rev ."; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+ctags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+       done
+cscopelist-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \
+       done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+         empty_fix=.; \
+       else \
+         include_option=--include; \
+         empty_fix=; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test ! -f $$subdir/TAGS || \
+             set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+cscope: cscope.files
+       test ! -s cscope.files \
+         || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
+
+clean-cscope:
+       -rm -f cscope.files
+
+cscope.files: clean-cscope cscopelist-recursive cscopelist
+
+cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+       -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
+
+distdir: $(DISTFILES)
+       $(am__remove_distdir)
+       test -d "$(distdir)" || mkdir "$(distdir)"
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -d "$(distdir)/$$subdir" \
+           || $(MKDIR_P) "$(distdir)/$$subdir" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+           $(am__relativize); \
+           new_distdir=$$reldir; \
+           dir1=$$subdir; dir2="$(top_distdir)"; \
+           $(am__relativize); \
+           new_top_distdir=$$reldir; \
+           echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+           echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+           ($(am__cd) $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$$new_top_distdir" \
+               distdir="$$new_distdir" \
+               am__remove_distdir=: \
+               am__skip_length_check=: \
+               am__skip_mode_fix=: \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+       $(MAKE) $(AM_MAKEFLAGS) \
+         top_distdir="$(top_distdir)" distdir="$(distdir)" \
+         dist-hook
+       -test -n "$(am__skip_mode_fix)" \
+       || find "$(distdir)" -type d ! -perm -755 \
+               -exec chmod u+rwx,go+rx {} \; -o \
+         ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+         ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+         ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+       || chmod -R a+r "$(distdir)"
+dist-gzip: distdir
+       tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+       $(am__post_remove_distdir)
+
+dist-bzip2: distdir
+       tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+       $(am__post_remove_distdir)
+
+dist-lzip: distdir
+       tardir=$(distdir) && $(am__tar) | lzip -9 -c >$(distdir).tar.lz
+       $(am__post_remove_distdir)
+
+dist-lzma: distdir
+       tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
+       $(am__post_remove_distdir)
+dist-xz: distdir
+       tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--9} xz -c >$(distdir).tar.xz
+       $(am__post_remove_distdir)
+
+dist-tarZ: distdir
+       tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+       $(am__post_remove_distdir)
+
+dist-shar: distdir
+       shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+       $(am__post_remove_distdir)
+
+dist-zip: distdir
+       -rm -f $(distdir).zip
+       zip -rq $(distdir).zip $(distdir)
+       $(am__post_remove_distdir)
+
+dist dist-all:
+       $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+       $(am__post_remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration.  Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+       case '$(DIST_ARCHIVES)' in \
+       *.tar.gz*) \
+         GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
+       *.tar.bz2*) \
+         bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+       *.tar.lzma*) \
+         lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
+       *.tar.lz*) \
+         lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
+       *.tar.xz*) \
+         xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+       *.tar.Z*) \
+         uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+       *.shar.gz*) \
+         GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
+       *.zip*) \
+         unzip $(distdir).zip ;;\
+       esac
+       chmod -R a-w $(distdir); chmod a+w $(distdir)
+       mkdir $(distdir)/_build
+       mkdir $(distdir)/_inst
+       chmod a-w $(distdir)
+       test -d $(distdir)/_build || exit 0; \
+       dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+         && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+         && $(MAKE) $(AM_MAKEFLAGS) distcheck-hook \
+         && am__cwd=`pwd` \
+         && $(am__cd) $(distdir)/_build \
+         && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+           $(DISTCHECK_CONFIGURE_FLAGS) \
+         && $(MAKE) $(AM_MAKEFLAGS) \
+         && $(MAKE) $(AM_MAKEFLAGS) dvi \
+         && $(MAKE) $(AM_MAKEFLAGS) check \
+         && $(MAKE) $(AM_MAKEFLAGS) install \
+         && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+         && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+         && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+               distuninstallcheck \
+         && chmod -R a-w "$$dc_install_base" \
+         && ({ \
+              (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+                   distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+             } || { rm -rf "$$dc_destdir"; exit 1; }) \
+         && rm -rf "$$dc_destdir" \
+         && $(MAKE) $(AM_MAKEFLAGS) dist \
+         && rm -rf $(DIST_ARCHIVES) \
+         && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+         && cd "$$am__cwd" \
+         || exit 1
+       $(am__post_remove_distdir)
+       @(echo "$(distdir) archives ready for distribution: "; \
+         list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+         sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+       @$(am__cd) '$(distuninstallcheck_dir)' \
+       && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+          || { echo "ERROR: files left after uninstall:" ; \
+               if test -n "$(DESTDIR)"; then \
+                 echo "  (check DESTDIR support)"; \
+               fi ; \
+               $(distuninstallcheck_listfiles) ; \
+               exit 1; } >&2
+distcleancheck: distclean
+       @if test '$(srcdir)' = . ; then \
+         echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+         exit 1 ; \
+       fi
+       @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+         || { echo "ERROR: files left in build directory after distclean:" ; \
+              $(distcleancheck_listfiles) ; \
+              exit 1; } >&2
+check-am: all-am
+check: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) check-recursive
+all-am: Makefile $(DATA)
+installdirs: installdirs-recursive
+installdirs-am:
+       for dir in "$(DESTDIR)$(pcdir)"; do \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+       done
+install: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+       -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool \
+       distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-pcDATA
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+       -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+       -rm -rf $(top_srcdir)/autom4te.cache
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-pcDATA
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \
+       cscopelist-recursive ctags-recursive install install-am \
+       install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+       all all-am am--refresh check check-am clean clean-cscope \
+       clean-generic clean-libtool cscope cscopelist \
+       cscopelist-recursive ctags ctags-recursive dist dist-all \
+       dist-bzip2 dist-gzip dist-hook dist-lzip dist-lzma dist-shar \
+       dist-tarZ dist-xz dist-zip distcheck distclean \
+       distclean-generic distclean-libtool distclean-tags \
+       distcleancheck distdir distuninstallcheck dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pcDATA install-pdf \
+       install-pdf-am install-ps install-ps-am install-strip \
+       installcheck installcheck-am installdirs installdirs-am \
+       maintainer-clean maintainer-clean-generic mostlyclean \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       tags tags-recursive uninstall uninstall-am uninstall-pcDATA
+
+
+# This is best not done via configure.ac, because automake's
+# make distcheck target does not like auto-generated files
+# being included in the distributed archive.
+parted.spec: parted.spec.in
+       sed 's/@''PACKAGE@/$(PACKAGE)/;s/@''VERSION@/$(VERSION)/' $< > $@-tmp
+       mv $@-tmp $@
+
+distcheck-hook:
+       $(MAKE) my-distcheck
+
+current_symbols.txt: ${extract_symvers}
+         -@(sh ${extract_symvers} libparted/.libs/libparted.so current_symbols.txt)
+
+baseline_symbols:
+       -@(output=${baseline_file}; \
+         if test ! -f $${output}; then \
+           echo "Baseline file doesn't exist."; \
+           echo "Try 'make new-abi-baseline' to create it."; \
+           exit 1; \
+         fi; true)
+
+new-abi-baseline:
+       -@$(mkinstalldirs) ${baseline_dir}
+       -@(output=${baseline_file}; \
+         if test -f $${output}; then \
+           output=$${output}.new; \
+           t=`echo $${output} | sed 's=.*config/abi/=='`; \
+           echo "Baseline file already exists, writing to $${t} instead."; \
+         fi; \
+         sh ${extract_symvers} libparted/.libs/libparted.so $${output})
+
+# Use 'new-abi-baseline' to create an initial symbol file.  Then run
+# 'check-abi' to test for changes against that file.
+check-abi: baseline_symbols current_symbols.txt
+       @diff -u ${baseline_file} ./current_symbols.txt 2>&1 \
+        | tee libparted.abi-diff
+       @test `wc -l < libparted.abi-diff` -eq 0 && exit 0 \
+        || echo "ABI has changed. Please, update you ABI package version." \
+        && exit 1
+
+.PHONY: ss-1024 ss-2048 ss-4096
+ss-1024 ss-2048 ss-4096:
+       PARTED_SECTOR_SIZE=$(subst ss-,,$@) $(MAKE) check-recursive
+
+# Run the regression test suite with different settings,
+# to ensure it works with simulated partition sizes > 512.
+.PHONY: check-other-sector_sizes
+check-other-sector_sizes:
+       $(MAKE) ss-1024
+       $(MAKE) ss-2048
+       $(MAKE) ss-4096
+
+check: check-other-sector_sizes
+
+# Arrange so that .tarball-version appears only in the distribution
+# tarball, and never in a checked-out repository.
+dist-hook: gen-ChangeLog
+       echo $(VERSION) > $(distdir)/.tarball-version
+.PHONY: gen-ChangeLog
+gen-ChangeLog:
+       if test -d .git; then                                           \
+         $(top_srcdir)/build-aux/gitlog-to-changelog                   \
+           --since=$(gen_start_date) > $(distdir)/cl-t;                \
+         rm -f $(distdir)/ChangeLog;                                   \
+         mv $(distdir)/cl-t $(distdir)/ChangeLog;                      \
+       fi
+.version:
+       echo $(VERSION) > $@-t && mv $@-t $@
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/NEWS b/NEWS
new file mode 100644 (file)
index 0000000..6b7c02a
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,589 @@
+GNU parted NEWS                                    -*- outline -*-
+
+* Noteworthy changes in release 3.0 (2011-05-30) [stable]
+
+** Bug fixes
+
+  Fix numerous small leaks in both the library and the UI.
+
+** Changes in behavior
+
+  Remove all FS-related (file system-related) sub-commands; these commands
+  are no longer recognized because they were all dependent on parted "knowing"
+  too much about file system: mkpartfs, mkfs, cp, move, check, resize.
+  This change removes not just the user interface bits, but also the
+  library functions and nearly all of the underlying FS-munging code.
+  The code embedded in Parted by which it knew about those file systems
+  was so old, unmaintainable and buggy that while seemingly drastic,
+  this change is like removing a gangrenous toe.
+
+  Here is the list of removed functions:
+
+    ped_file_system_clobber
+    ped_file_system_open
+    ped_file_system_create
+    ped_file_system_close
+    ped_file_system_check
+    ped_file_system_copy
+    ped_file_system_resize
+    ped_file_system_get_create_constraint
+    ped_file_system_get_resize_constraint
+    ped_file_system_get_copy_constraint
+
+  This change also removes the corresponding function members
+  from "struct _PedFileSystemOps":
+
+    clobber open create close check copy resize get_create_constraint
+    get_resize_constraint get_copy_constraint
+
+
+* Noteworthy changes in release 2.4 (2011-05-18) [stable]
+
+** Bug fixes
+
+  parted no longer allows the modification of certain in-use partitions.
+  In particular, before this fix, parted would permit removal or modification
+  of any in-use partition on a dmraid and any in-use partition beyond the 15th
+  on a regular scsi disk.
+
+  Improve support of DASD devices on the s390 architecture.
+  Parted now supports all DASD types (CKD and FBA), DASD formats (CDL,
+  LDL, CMS non-reserved, and CMS reserved), and DASD drivers (ECKD, FBA,
+  and DIAG) in all combinations supported by the Linux kernel.  As before,
+  only CDL format on CKD DASD using the ECKD driver is supported for
+  read-write operations (create, delete, move, re-size, etc.).  However,
+  the implicit partition present on LDL- and CMS-formatted disks is now
+  correctly recognized for read-only operations.  In detail:
+
+  - parted now correctly handles LDL-format disks with a block
+    size other than 4096 (bug fix)
+
+  - parted now recognizes the CMS disk format, both reserved
+    and non-reserved (enhancement)
+
+  - parted now supports FBA DASD devices (enhancement)
+
+  - parted now supports the DIAG driver when running in a
+    virtual machine under z/VM (enhancement)
+
+  libparted: raise the limit on the maximum start sector and the
+  maximum number of sectors in a "loop" partition table from 2^32 to 2^64.
+  [bug introduced in parted-2.1]
+
+  libparted once again recognizes a whole-disk FAT partition
+  [bug introduced in parted-1.9.0]
+
+  libparted now recognizes scsi disks with a high major (128-135) as scsi
+  disks
+
+  an msdos partition table on a very small device (smaller than one cylinder)
+  is now recognized.  [bug introduced in parted-2.2]
+
+  libparted: zero-length devices (other than files) are ignored rather than
+  throwing an exception.
+
+  libparted: gpt label creation can no longer divide by zero with a
+  defective device or when a concurrent writer modifies the PE-size
+  bytes in the small interval between the write and subsequent read
+  of the primary GPT header.
+
+** Changes in behavior
+
+  "parted $dev print" now prints information about the device (model, size,
+  transport, sector size) even when it fails to recognize the disk label.
+
+  specifying partition start or end values using MiB, GiB, etc. suffixes
+  now makes parted do what I want, i.e., use that precise value, and not
+  some other that is up to 500KiB or 500MiB away from what I specified.
+  Before, to get that behavior, you would have had to use carefully chosen
+  values with units of bytes ("B") or sectors ("s") to obtain the same
+  result, and with sectors, your usage would not be portable between devices
+  with varying sector sizes.  This change does not affect how parted handles
+  suffixes like KB, MB, GB, etc.
+
+
+* Noteworthy changes in release 2.3 (2010-05-28) [stable]
+
+** New features
+
+  parted now recognizes ATA over Ethernet (AoE) devices
+
+  parted now recognizes Linux Software RAID Arrays
+
+  libparted has a new partition flag to check for diagnostic (aka recovery
+  or reserved) partitions: PED_PARTITION_DIAG
+
+** Bug fixes
+
+  When libparted deferenced a /dev/mapper/foo symlink, it would keep the
+  resulting /dev/dm-N name and sometimes use it later, even though it
+  had since become stale and invalid.  It no longer stores the result
+  of dereferencing a /dev/mapper symlink.
+
+  libparted's msdos_partition_is_flag_available function now always reports
+  that the "hidden" flag is not available for an extended partition.
+  Similarly, msdos_partition_get_flag(p,PED_PARTITION_HIDDEN) always returns 0
+  for an extended partition.
+
+  libparted uses a more accurate heuristic to distinguish between
+  ext4 and ext3 partitions.
+
+  libparted now properly checks the return value of dm_task_run when
+  operating on devicemapper devices.
+
+  allow using ped_device_cache_remove(dev) followed by a (later)
+  ped_device_destroy() without corrupting the device cache.
+
+  when creating an ext2 file system[*], Parted no longer creates an
+  invalid one when its size is 2TiB or larger.
+  [*] Remember, now all FS-creation operations are deprecated in Parted.
+  This is not an indicator that we'll be supporting this code.
+  On the contrary, it is slated to be removed.
+
+** Changes in behavior
+
+  libparted no longer issues an exception/warning about >512-byte
+  sector support being "HIGHLY EXPERIMENTAL".  It seems to have matured
+  enough to be usable at least with GPT and MSDOS partition tables.
+
+
+* Noteworthy changes in release 2.2 (2010-02-26) [stable]
+
+** Changes in behavior
+
+  The default alignment (--align option) for newly created partitions has
+  been changed to optimal.
+
+** New features
+
+  The ped_device_get_*_alignment() functions now return a sane default
+  value instead of NULL when the so called topology information is incomplete.
+  The default minimum alignment aligns to physical sector size, the default
+  optimal alignment is 1MiB, which is what vista and windows 7 do.
+
+** Bug fixes
+
+  Parted no longer uses a physical sector size of 0 or of any other
+  value smaller than the logical sector size.
+
+  dos: creating an HFS or HFS+ partition in an msdos partition table
+  used to set the partition type to 0x83.  That is wrong.  The required
+  number is 0xaf, and that is what is used now.
+
+  gpt: read-only operation could clobber MBR part of hybrid GPT+MBR table
+  [bug introduced in parted-2.1]
+
+  gpt: a read-only operation like "parted $dev print" would overwrite $dev's
+  protective MBR when exactly one of the primary and backup GPT tables was
+  found to be corrupt.
+  [bug introduced prior to parted-1.8.0]
+
+  sun: the version, sanity and nparts VTOC fields were ignored by libparted.
+  Those fields are properly initialized now. The nparts (number of partitions)
+  field is initialized to 8 (max. number of sun partitions) rather that to a
+  real number of partitions. This solution is compatible with Linux kernel
+  and Linux fdisk.
+
+  "make install" no longer installs tests programs named disk and label
+
+  libparted: try harder to inform kernel of partition changes.
+  Previously when editing partitions, occasionally the kernel would
+  fail to be informed of partition changes.  When this happened future
+  problems would occur because the kernel had incorrect information.
+  For example, if this problem arose when resizing or creating a
+  new partition, then an incorrect partition size might be displayed
+  or a user might encounter a failure to format or delete a newly
+  created partition, respectively.
+
+  libparted: committing a disk that was returned by ped_disk_duplicate
+  would always result in ped_disk_clobber being called (and thus the first
+  and last 9KiB of the disk being zeroed), even if the duplicated disk,
+  was not returned by ped_disk_fresh().
+
+
+* Noteworthy changes in release 2.1 (2009-12-20) [stable]
+
+** New features
+
+  new --align=<align> commandline option which can have the following values:
+  none:     Use the minimum alignment allowed by the disk type
+  cylinder: Align partitions to cylinders (the default)
+  minimal:  Use minimum alignment as given by the disk topology information
+  optimal:  Use optimum alignment as given by the disk topology information
+  The minimal and optimal  values will use layout information provided by the
+  disk to align the logical partition table addresses to actual physical
+  blocks on the disks. The mininal value uses the minimum aligment needed to
+  align the partition properly to physical blocks, which avoids performance
+  degradation. Where as the optimal value uses a multiple of the physical
+  block size in a way that guarantees optimal performance.
+  The min and opt values will only work when compiled with
+  libblkid >= 2.17 and running on a kernel >= 2.6.31, otherwise they will
+  behave as the none --align value.
+
+  libparted: new functions to set per disk (instead of per partition) flags:
+  ped_disk_set_flag()
+  ped_disk_get_flag()
+  ped_disk_is_flag_available()
+  ped_disk_flag_get_name()
+  ped_disk_flag_get_by_name()
+  ped_disk_flag_next()
+
+  libparted: new per disk flag: PED_DISK_CYLINDER_ALIGNMENT. This flag
+  (which defaults to true) controls if disk types for which cylinder alignment
+  is optional do cylinder alignment when a new partition gets added.
+
+  libparted: new functions to return per-partition-table-type limits:
+    - ped_disk_max_partition_start_sector: Return the largest representable
+    start sector number for a given "disk".
+    - ped_disk_max_partition_length: Return the maximum partition length
+    for a given "disk".
+
+  new command "align-check TYPE N" to determine whether the starting sector
+  of partition N is TYPE(minimal|optimal)-aligned for the disk.  E.g.,
+      parted -s /dev/sda align-check min 1 && echo partition 1 is min-aligned
+      parted -s /dev/sda align-check opt 2 && echo partition 2 is opt-aligned
+  The same libblkid and kernel version requirements apply as for --align
+
+  Add functions to libparted to get minimal and optimal alignment
+  information from devices:
+  ped_device_get_minimal_aligned_constraint()
+  ped_device_get_optimal_aligned_constraint()
+  ped_device_get_minimum_alignment()
+  ped_device_get_optimum_alignment()
+  The same libblkid and kernel version requirements apply as for --align
+
+  Add ped_disk_get_partition_alignment() function to libparted to get
+  information about alignment enforced by the disk type.
+
+** Bug fixes
+
+  parted can once again create partition tables on loop devices.
+  Before, "parted -s /dev/loop0 mklabel gpt" would fail.
+  [bug introduced in parted-1.9.0]
+
+  improved >512-byte sector support: for example, printing a table on a
+  4k-sector disk would show "Sector size (logical/physical): 4096B/512B",
+  when the sizes should have been "4096B/4096B".
+
+  gpt tables are more rigorously checked; before, partition entry array CRCs
+  were not checked, and we would mistakenly use the AlternateLBA member of a
+  known-corrupt primary table.
+
+  improved dasd disk support, in previous versions calling
+  ped_disk_new_fresh() or ped_disk_duplicate() on a dasd type PedDisk
+  would fail.  This is fixed now.
+
+  handle device nodes created by lvm build with udev synchronisation enabled
+  properly.
+
+  when printing tables, parted no longer truncates flag names
+
+
+* Noteworthy changes in release 2.0 (2009-10-06) [beta]
+
+** Improvements
+
+  Parted now supports disks with sector size larger than 512 bytes.
+  Before this release, Parted could operate only on disks with a sector
+  size of 512 bytes.  However, disk manufacturers are already making disks
+  with an exposed hardware sector size of 4096 bytes.  Prior versions of
+  Parted cannot even read a partition table on such a device, not to
+  mention create or manipulate existing partition tables.
+  Due to internal design and time constraints, the following
+  less-common partition table types are currently disabled:
+    amiga, bsd, aix, pc98
+  "bsd" and "amiga" are mostly done, but had a few minor problems,
+  so may remain disabled until someone requests that they be revived.
+
+** Bug fixes
+
+  big-endian systems can once again read GPT partition tables
+  [bug introduced in parted-1.9.0]
+
+  ped_partition_is_busy no longer calls libparted's exception handler,
+  since doing so caused trouble with anaconda/pyparted when operating on
+  dmraid devices.
+
+  Partitions in a GPT table are no longer assigned the "microsoft
+  reserved partition" type.  Before this change, each partition would
+  be listed with a type of "msftres" by default.
+
+
+* Noteworthy changes in release 1.9.0 (2009-07-23) [stable]
+
+** Bug fixes
+
+  parted now preserves the protective MBR (PMBR) in GPT type labels.
+  http://lists.alioth.debian.org/pipermail/parted-devel/2008-December/\
+    002473.html
+  http://lists.gnu.org/archive/html/bug-parted/2008-12/msg00015.html
+
+  gpt_read now uses SizeOfPartitionEntry instead of the size of
+  GuidPartitionEntry_t.  This ensures that *all* of the partition
+  entries are correctly read.
+  http://lists.alioth.debian.org/pipermail/parted-devel/2008-December/\
+    002465.html
+  http://lists.alioth.debian.org/pipermail/parted-devel/attachments/\
+    20081202/b7c0528d/attachment.txt
+
+  mklabel (interactive mode) now correctly asks for confirmation, when
+  replacing an existent label, without outputting an error message.
+  http://lists.alioth.debian.org/pipermail/parted-devel/2009-January/\
+    002739.html
+
+  resize now handles FAT16 file systems with a 64k cluster.  This
+  configuration is not common, but it is possible.
+  http://parted.alioth.debian.org/cgi-bin/trac.cgi/ticket/207
+
+  parted now ignores devices of the type /dev/md* when probing.  These
+  types of devices should be handled by the device-mapper capabilities
+  of parted.
+  http://lists.alioth.debian.org/pipermail/parted-devel/2009-April/\
+    002781.html
+
+  The parted documentation now describes the differences in the options
+  passed to mkpart for the label types.
+  http://lists.alioth.debian.org/pipermail/parted-devel/2009-April/\
+    002782.html
+
+** Changes in behavior
+
+  include/parted/beos.h, include/parted/gnu.h and include/parted/linux.h
+  have been removed.  The symbols contained in these files (GNUSpecific,
+  ped_device_new_from_store, BEOSSpecific, LinuxSpecific,  LINUX_SPECIFIC)
+  were moved to the individual files that need them.
+
+  In libparted, the linux-swap "filesystem" types are now called
+  "linux-swap(v0)" and "linux-swap(v1)" rather than "linux-swap(old)"
+  and "linux-swap(new)" as in parted 1.8, or "linux-swap" as in older
+  versions; "old" and "new" generally make poor names, and v1 is the
+  only format supported by current Linux kernels. Aliases for all
+  previous names are available.
+
+* Noteworthy changes in release 1.8.8.1 (2007-12-17) [stable]
+
+** FIXME: fill in details
+
+* Noteworthy changes in release 1.8.8 (2007-08-09) [stable]
+
+** GNU parted is now licensed under the GNU General Public License version 3
+   or higher.  See the COPYING file for more details.
+
+** libparted:
+  - Add compute_block_counts() to improve ext2fs support.
+  - Properly detect 'ext2 fs too small' cases.
+  - Move formatting commands out of translatable strings.
+  - Read an msdos partition table from a device with 2K sectors.
+  - Remove always-false "Unable to open" diagnostic in ped_disk_new(),
+    leave the "unrecognized disk label" diagnostic.
+  - Don't leak partition table buffer in amiga_read().
+  - Don't read/write initialized memory with DEBUG turned on off for
+    'mklabel bsd' and 'mklabel amiga' command calls.
+  - Turn off DEBUG in libparted.c to avoid initializing all allocated
+    memory to '1' bits.
+  - Correct handling of HeaderSize field in GPT labels.
+  - Fix block number used when checking for ext2 fs state.
+  - Add detection support for Xen virtual block devices (/dev/xvd*).
+  - When reading DASD labels, check the filesystem type as well as
+    partition flags to determine what's on the partition.
+  - Add _dm_probe_all() from Debian to probe for all device-mapper
+    devices.
+
+** parted:
+  - Fixed exception handling in mkpart and mkpartfs commands.
+  - Add the --dry-run option to the partprobe command.
+  - Update docs: cannot specify 'primary' for a partition on a loop
+    device.
+  - Remove unused functions (get_spaces).
+  - Fix off-by-one error in str_list_print_wrap().
+  - Use xmalloc() and xrealloc() to check return values.
+  - Fix invalid command line argument handling.
+  - Close memory leaks in parted.c and table.c.
+  - Fix warnings when compiling with translation support enabled.
+  - Use a consistent prompt when asking for a file system type.
+  - Update docs: don't reference old versions of gzip.
+
+** misc:
+  - Improve the testing framework in the tests/ subdirectory.  Build out
+    more of the testing scripts so we can start using that to ensure we
+    don't introduce regressions in releases.
+  - Support testing with tmpfs filesystems on Linux.
+  - Work around inadequate libreadline in the configure script.
+  - Don't include config.h from internal headers.
+
+* Noteworthy changes in release 1.8.7 (2007-05-09) [stable]
+
+** libparted:
+  - Prevent compilation of DASD code on GNU Hurd systems.
+  - Integrate new unit testing framework for parted and libparted.
+  - Fix primary partition cylinder alignment error for DOS disk labels.
+  - Use PED_PARTITION_NORMAL in place of PED_PARTITION_PRIMARY.
+  - Avoid segfault due to a double free on reiserfs support.
+
+** parted:
+  - Fix script mode (-s) for mkfs command in parted.
+  - Suppress "you are not superuser..." warning in script mode.
+  - Fix off-by-one bug in parted when displaying information about the
+    disk.
+  - Do not translate partition names in the 'parted print' command.
+    This causes problems for non-Latin-based character sets.
+  - Send errors to stderr rather than stdout.
+  - Handle command line options independent of the order.
+  - Abort on any invalid option and handle -v and -h first.
+  - Only display the update /etc/fstab message when there has been a
+    change to the disk (a shorter and more direct message too).
+
+* Noteworthy changes in release 1.8.6 (2007-03-20) [stable]
+
+** Revert the implementation of the linux-swap(new) and linux-swap(old) types.
+   The type is 'linux-swap' for v1, v2, and s1suspend swap partitions on Linux.
+
+* Noteworthy changes in release 1.8.5 (2007-03-20) [stable]
+
+** Another minor update.  Both versions 1.8.3 and 1.8.4 lacked po translation
+   files.  These are included with version 1.8.5.
+
+* Noteworthy changes in release 1.8.4 (2007-03-19) [stable]
+
+** Minor bug fix release for 1.8.3 to fix build issues on various
+   platforms:
+  - Use 'uname -m' to determine if we build on System Z or not.
+  - Include <parted/vtoc.h> in <parted/fdasd.h> for format1_label_t
+    definition.
+  - Remove unused variables in libparted/arch/linux.c (-Werror).
+  - Check return values on fgets() and asprint() in libparted/arch/linux.c
+    (-Werror).
+  - Check for tgetent() in libtinfo in the configure script.
+  - Move some macro definitions in <parted/disk.h> to fix a compile
+    problem with gcc-4.1.2 as indicated here:
+    http://lists.gnu.org/archive/html/bug-parted/2007-03/msg00008.html
+
+* Noteworthy changes in release 1.8.3 (2007-03-16) [stable]
+
+** libparted:
+  - Header file clean ups.
+  - Sync the linux-swap header according to the Linux kernel sources.
+  - Enable support for swsusp partitions and the ability to differentiate
+    between old and new versions of linux-swap partitions.
+  - Renaming PARTITION_EXT to PARTITION_DOS_EXT in the DOS disklabel
+    code (consitency with Linux kernel source).
+  - Added libparted.pc pkg-config file.
+  - Remove unused functions, ifdefs, and other code.
+  - Deprecate ped_[register|unregister]_disk_type in favor of
+    ped_disk_type_[register|unregister].
+  - Small test program fixes (in label.c and common.c).
+  - Make functions const-correct.
+  - Handle systems where libreadline is not available.
+  - Preserve starting sector for primary NTFS 3.1 partitions on DOS
+    disklabel.
+  - Handle 2048-byte logical sectors in linux_read().
+  - Use PED_SECTOR_SIZE_DEFAULT macro in place of 512.
+  - Don't assume logical sector size is <= 512B on AIX.
+  - Detect HFS write failure.
+  - Use mkstemp() in place of mktemp().
+  - Added HFS+ resize support.
+  - Don't build DASD support on non-zSeries hardware.
+
+** parted/partprobe:
+  - Use fputs() and putchar() in place for printf(), when possible.
+  - Detect/report stdout write errors.
+  - Accept the --version and --help options.
+  - Fix memory leaks in parted(8).
+
+** general:
+  - Synchronize the manual page and --help documentation.
+  - GNU autoconf and automake updates.
+  - 'gcc -Wall -Wshadow' warning cleanups.
+  - Don't define _GNU_SOURCE manually.
+  - Documentation updates and cleanups (AUTHORS, copyright notices,
+    etc).
+  - Use gnulib (http://www.gnu.org/software/gnulib/).
+
+* Noteworthy changes in release 1.8.2 (2007-01-12) [stable]
+
+** libparted:
+  - Add the ped_device_cache_remove() function to remove a device from
+    the cache.  This is necessary for some things that use libparted,
+    including pyparted.
+  - Fix a segfault in ped_assert() where the wrong pointer is freed in
+    the backtrace handler.
+  - Only call _disk_warn_loss(disk) in do_mklabel() if disk is not NULL.
+    Fixes a segfault when initializing new volumes.
+  - Dynamically allocate space for exception messages.
+  - Output a backtrace when catching SEGV_MAPPER or a general SIGSEGV.
+
+** parted:
+  - Destroy all objects before return when called with --list or --all
+    option.
+  - Zero sized device is shown as 0.00B and not -0.00kB.
+  - Implement 'print devices' command.
+  - Alias 'print list' to 'print all'.
+  - Alias 'mktable' to 'mklabel'.
+
+** misc:
+  - Other bug fixes, documentation updates, and translation improvements.
+  - Code and API clean-ups.
+
+* Noteworthy changes in release 1.8.1 (2006-12-04) [stable]
+
+** libparted:
+  - Rework backtrace support.
+  - Code cleanups.
+  - Added --enable-selinux configure option to enable linking libparted with
+    libselinux and libsepol.
+  - Disable ext2fs resize for now, tell user to use resize2fs.
+
+** parted:
+  - Fix loop in print_all().
+  - Introduce the -list command-line switch.
+  - Make mktable aliased to mklabel.
+  - Warn before mklabel and mkfs.
+  - Code cleanups in _partition_warn_busy(), _disk_warn_busy(),
+    _partition_warn_loss(), and _disk_warn_loss().
+  - Avoid warning about user permissions when using --version.
+  - Fix 'print' command help.
+  - Proper print when there are no extended partitions, but partition names.
+
+** misc:
+  - Generate SHA-1 digest of the archive files and upload those along with the
+    actual archive files.
+  - Update translation files.
+  - Remove automatically generated files from version control.
+
+* Noteworthy changes in release 1.8.0 (2006-11-17) [stable]
+
+** libparted:
+  - GPT fixes:
+       - Correctly handle disks with non-512 byte sector sizes
+       - Support LUN resizing (see new space, allow parted to use it)
+       - Prevent overlap of LastUsableLBA and PartitionEntryLBA in backup GPT
+  - Prevent SIGFPE when FAT sector size is 0
+  - Add ped_exception_get_handler()
+  - DASD support for IBM zSeries systems
+  - AIX disk label support
+  - Detect Promise SX8 storage devices
+  - Macintosh (ppc and x86) disk label improvements:
+       - Prevent LVM and RAID partition types from corrupting the table
+       - Fix removal of driver partition
+  - Add support binary units (MiB, KiB, GiB)
+  - In ped_register_disk_type(), handle disk_types==NULL case
+  - In ped_unregister_disk_type(), handle case where type is not registered
+  - Fix geometry read problems on 64-bit Macs (and probably other 64-bit systems)
+  - Add support for /dev/mapper devices via libdevmapper library
+  - Detect Apple_Boot partition types correctly on MacOS X 10.4 systems
+
+** parted:
+  - Various bug fixes, signal handling fixes, and spelling error fixes
+  - UI improvements to display more information about the disk and transport
+    layer
+
+========================================================================
+
+Copyright (C) 2001-2011 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts.  A copy of the license is included in the ``GNU Free
+Documentation License'' file as part of this distribution.
diff --git a/README b/README
new file mode 100644 (file)
index 0000000..3d1fee9
--- /dev/null
+++ b/README
@@ -0,0 +1,65 @@
+GNU Parted
+----------
+
+GNU Parted is a program for manipulating partition tables.
+
+WARNING: USING PARTED TO PERFORM FILE SYSTEM OPERATIONS IS NO LONGER SUPPORTED
+------------------------------------------------------------------------------
+
+Parted (post-2.4) no longer has the ability to create and modify file systems.
+Use file-system-specific tools to create and operate on file systems.
+For example, use the e2fsprogs programs to operate on ext2, ext3 and ext4
+file systems.  Use programs from the reiserfsprogs package if you want to
+manipulate reiserfs file systems.  Although Parted lets you do some of the
+same things, the file-system-related code in parted is not as robust as the
+code in more specialized, FS-specific packages.
+
+Most FS-related functionality was removed after Parted 2.4.
+Thus, the following commands are no longer supported:
+mkpartfs, mkfs, cp, move, check, resize.
+
+
+See the file NEWS for a list of major changes in the current release.
+
+
+ * documentation is in the doc/ directory.  The User's documentation is in
+texinfo format, and is built into a format viewable by info/pinfo when
+you run make.  To view the distributed texinfo documentation, run this:
+
+       $ info -f parted.info
+
+Or view it on-line at:
+
+  http://www.gnu.org/software/parted/manual/parted.html
+
+ * the GNU Parted home page is http://www.gnu.org/software/parted
+ * the GNU Parted FAQ can be found at
+   http://www.gnu.org/software/parted/faq.html
+ * send bug reports, requests for help, feature requests, comments, etc. to
+   bug-parted@gnu.org.
+
+For any copyright year range specified as YYYY-ZZZZ in this package
+note that the range specifies every single year in that closed interval.
+
+
+NOTE TO DISTRIBUTIONS
+---------------------
+
+(1) When compiling Parted for distribution for general use, we recommend using
+the default configuration:
+
+       CFLAGS=-Os ./configure
+
+This includes --enable-debug (by default), which contains many assertions.
+Obviously, these "waste" space, but in the past, they have caught potentially
+dangerous bugs before they would have done damage, so we think it's worth
+it.  Also, it means we get more bug reports ;)
+
+
+(2) When doing dependencies, remember that libreiserfs is a *soft* dependency,
+so I guess that means Debian-look-alikes should do a "suggests", but
+not a "requires".
+
+
+(3) When space is important, we suggest --without-readline, --disable-shared,
+and possibly --disable-nls and --disable-dynamic-loading.
diff --git a/THANKS b/THANKS
new file mode 100644 (file)
index 0000000..684c8e4
--- /dev/null
+++ b/THANKS
@@ -0,0 +1,27 @@
+In no particular order:
+
+ * Jonathan duSaint <jon@rockgeeks.net> for binary unit support and more.
+ * Kamil Ignacak <acerion@wp.pl> for help with the migration of the API documentation.
+ * Conectiva, www.conectiva.com, for sponsoring Parted's development (in the
+past).  Eliphas, beber (aka Pato), baretta, fuganti, claudio, olive (anyone
+else?)
+ * Stefan Kanthak <101.33761@germanynet.de> for lots of info on boot-loaders,
+and some corrections to the documentation
+ * Fabian Emmes <fab@orlen.de> for RPM spec file, help with hidden
+partitions and autoconfusion :-) - and lots of other misc. help.
+ * Falk Hueffner <falk.hueffner@student.uni-tuebingen.de> for bug fixes.
+ * Kevin Lindsay <klindsay@stormix.com> for lots of bug reports, etc.
+ * John Weismiller <john@stormix.com> for lots of bug reports, etc.
+ * Andries Brouwer <Andries.Brouwer@cwi.nl> for advice on BIOS geometry
+ * Simon Kirby <sim@stormix.com> for advice on BIOS geometry
+ * Glenn McGrath <Glenn.McGrath@jcu.edu.au>
+ * Timshel Knoll <timshel@pobox.com> for Debian stuff
+ * Tim Waugh <twaugh@redhat.com> for bug reports and fixes
+ * My friends for helping with testing: Tristan Zwalf, Menaka Lashitha Bandara,
+Thomas Hambleton
+ * Ryan Weaver <ryanw@infohwy.com> for parted.spec.in patches
+ * Benjamin Herrenschmidt <bh40@calva.net> for answering all of our questions
+on Mac's
+ * Ethan Benson <erbenson@alaska.net> for lots of advice / testing on ppc
+ * Charles Stevenson <csteven@terraplex.com> - ppc stuff
+ * heaps of people we left out!
diff --git a/TODO b/TODO
new file mode 100644 (file)
index 0000000..de902e1
--- /dev/null
+++ b/TODO
@@ -0,0 +1,120 @@
+
+See http://wiki.debian.org/Parted
+
+=== everything below is old and for reference purposes only ===
+
+* regression tests:
+       - add specific tests for FAT16 -> FAT32, FAT32 -> FAT16, cluster
+resizing 8k -> 4k, etc.  Also, compare output, to catch other "unexpected"
+errors (like partitions going missing, <cough> not that that's ever
+happened <cough>)
+
+* ui:
+       - support a cylinder interface for the masochistic.
+       - warn when partition numbers change (?)  in UI?
+
+* make *_read() do ped_file_system_probe(), and warn if it isn't sane for
+the partition ID on-disk.
+
+* disk label implementations:
+       - OS/2 DLAT support
+       - read-only flag for Mac partitions, and the macufs partition type
+       - lba flag - default flag?
+       - PC98: relax cylinder boundary restrictions (create conforming
+       partitions, but allow non-conforming partitions ;-)
+
+* docs for RAWRITE, etc.
+
+* write a summary of operation list things, and get discussion going...
+* ped_file_system_is_flag_available()
+* ped_file_system_commit() ?   polymorphic operations, with apply() and
+revert() in memory, and commit all fs's and disk's to commit on-disk.
+* ped_operation_queue (ped_operation_new (PED_OP_PARTITION_SET_FLAG, ...)),
+       or ped_partition_set_flag() (with a "transparent" queue?)
+
+* separate domains libparted and parted (for nls)
+* merge with partimage.sourceforge.net
+* merge with gpart
+* "renumber"
+* "reconstruct"
+* "resizepart"
+* make an errata web page
+* bootdisk: try getting readline & nls support in, use a newer version of
+busybox.  Also, write some scripts for disk imaging.
+* Rawrite3 IS free, it seems.  Find the source (version 1.3 == version 3), and
+stick source+bin up on the ftp site.
+* improve website (check out texinfo.  Does it create much autoconfusion?)
+
+* /proc/meminfo, mlock()
+
+* create an FAQ, and stick lots of examples in it.
+
+* ped_file_system_resize_online()
+
+* reiser fs (almost there), ntfs support!
+
+* when Windows doesn't shut down properly, it knows about it.  How?
+* FAT boot sector reconstruction, in fat_check()  - actually, fat_open(),
+since it won't open properly if it's broken...  Tell panov@iacp.vl.ru when
+done.  Perhaps connect this to the front-end via a "force MINOR FS-TYPE"
+command, since it's sometimes hard to detect broken file systems.
+
+* FreeBSD support (get a copy - I want to try it anyway!)
+
+* LBA support in boot loader
+
+* OS/2 Boot manager
+
+* documentation of the internal API, tutorial on external API, and perhaps a bit
+on how the resizers, etc. work  [MOSTLY DONE]
+
+* logical sectors (?)  byte addressing?
+
+* libbootload ?
+       - update LILO/GRUB/Quik
+
+* command-line interface: i18n issues, "Yes, No or Cancel?".  This issue is
+hard, for free software in general.  We need a community (i.e. mailing list)
+that specializes in this, IMHO.
+
+* ped_geometry_{map|unmap}(), and kill the libparted/fs_ext2 buffer cache
+
+* injecting/ejecting partitions into/out of extended partitions.  But to
+keep alignment rules, would have to move the start of the partition.  No
+problem for FAT.  Absolute pain for ext2.
+
+* ext2 resizer:
+       - add ability to move the start of the file system.
+       - fix "strange layout" problem
+       - add an incompat feature to ext2 that is a special resize-the-start
+journal, and add support in e2fsck / mount / linux (?) for it.
+
+* RAID? LVM? EVMS? grand-unified system TM?
+
+* support finding bad-blocks.  Use ped_device_check() in ped_geometry_check()
+
+* generic resizing/converting with the inplace copy via sparse loopback idea
+  from Serguei Tzukanov
+
+* We should be able to compile with -fno-common.
+  However, that leads to this link failure:
+
+    fs/.libs/libfs.a(fat.o):(.bss+0x0): multiple definition of `fat16'
+    fs/.libs/libfs.a(count.o):(.bss+0x0): first defined here
+    fs/.libs/libfs.a(clstdup.o):(.bss+0x0): multiple definition of `fat16'
+    fs/.libs/libfs.a(count.o):(.bss+0x0): first defined here
+    fs/.libs/libfs.a(table.o):(.bss+0x0): multiple definition of `fat16'
+    fs/.libs/libfs.a(count.o):(.bss+0x0): first defined here
+    fs/.libs/libfs.a(resize.o):(.bss+0x0): multiple definition of `fat16'
+    fs/.libs/libfs.a(count.o):(.bss+0x0): first defined here
+    fs/.libs/libfs.a(calc.o):(.bss+0x0): multiple definition of `fat16'
+    fs/.libs/libfs.a(count.o):(.bss+0x0): first defined here
+    fs/.libs/libfs.a(bootsector.o):(.bss+0x0): multiple definition of `fat16'
+    fs/.libs/libfs.a(count.o):(.bss+0x0): first defined here
+    fs/.libs/libfs.a(traverse.o):(.bss+0x0): multiple definition of `fat16'
+    fs/.libs/libfs.a(count.o):(.bss+0x0): first defined here
+    fs/.libs/libfs.a(fatio.o):(.bss+0x0): multiple definition of `fat16'
+    fs/.libs/libfs.a(count.o):(.bss+0x0): first defined here
+    fs/.libs/libfs.a(context.o):(.bss+0x0): multiple definition of `fat16'
+    fs/.libs/libfs.a(count.o):(.bss+0x0): first defined here
+    collect2: ld returned 1 exit status
diff --git a/aclocal.m4 b/aclocal.m4
new file mode 100644 (file)
index 0000000..8e4d2c2
--- /dev/null
@@ -0,0 +1,1364 @@
+# generated automatically by aclocal 1.11a -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2007, 2008, 2009, 2010, 2011 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_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68.68-2105],,
+[m4_warning([this file was generated for autoconf 2.68.68-2105.
+You have another version of autoconf.  It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically `autoreconf'.])])
+
+# pkg.m4 - Macros to locate and utilise pkg-config.            -*- Autoconf -*-
+# serial 1 (pkg-config-0.24)
+# 
+# Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
+#
+# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# PKG_PROG_PKG_CONFIG([MIN-VERSION])
+# ----------------------------------
+AC_DEFUN([PKG_PROG_PKG_CONFIG],
+[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
+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
+])# PKG_PROG_PKG_CONFIG
+
+# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+#
+# Check to see whether a particular set of modules exists.  Similar
+# to PKG_CHECK_MODULES(), but does not set variables or print errors.
+#
+# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+# only at the first occurence in configure.ac, so if the first place
+# it's called might be skipped (such as if it is within an "if", you
+# 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])
+
+# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+# ---------------------------------------------
+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`],
+                    [pkg_failed=yes])
+ else
+    pkg_failed=untried
+fi[]dnl
+])# _PKG_CONFIG
+
+# _PKG_SHORT_ERRORS_SUPPORTED
+# -----------------------------
+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
+])# _PKG_SHORT_ERRORS_SUPPORTED
+
+
+# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+# [ACTION-IF-NOT-FOUND])
+#
+#
+# Note that if there is a possibility the first call to
+# PKG_CHECK_MODULES might not happen, you should be sure to include an
+# 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 $1])
+
+_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 "$2" 2>&1`
+        else 
+               $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$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])
+        ])
+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 <http://pkg-config.freedesktop.org/>.])
+        ])
+else
+       $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+       $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+        AC_MSG_RESULT([yes])
+       $3
+fi[]dnl
+])# PKG_CHECK_MODULES
+
+# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 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.
+
+# serial 8
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.11a'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version.  Point them to the right macro.
+m4_if([$1], [1.11a], [],
+      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too.  Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.11a])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
+
+# Copyright (C) 2001, 2003, 2005, 2011 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.
+
+# serial 1
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory.  The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run.  This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+#    fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+#    fails if $ac_aux_dir is absolute,
+#    fails when called from a subdirectory in a VPATH build with
+#          a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir.  In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
+#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+#   MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH.  The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_CONDITIONAL                                            -*- Autoconf -*-
+
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008, 2011
+# 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.
+
+# serial 10
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ([2.52])dnl
+ m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+  $1_TRUE=
+  $1_FALSE='#'
+else
+  $1_TRUE='#'
+  $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+  AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009,
+# 2010, 2011 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.
+
+# serial 14
+
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery.  Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
+      [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
+      [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+      [$1], [UPC],  [depcc="$UPC"  am_compiler_list=],
+      [$1], [GCJ],  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                    [depcc="$$1"   am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+               [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_$1_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+  fi
+  am__universal=false
+  m4_case([$1], [CC],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac],
+    [CXX],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac])
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+       continue
+      else
+       break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok `-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_$1_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE([dependency-tracking], [dnl
+AS_HELP_STRING(
+  [--enable-dependency-tracking],
+  [do not reject slow dependency extractors])
+AS_HELP_STRING(
+  [--disable-dependency-tracking],
+  [speeds up one-time build])])
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+  am__nodep='_no'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
+])
+
+# Generate code to set up dependency tracking.              -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
+# 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.
+
+#serial 5
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[{
+  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named `Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`AS_DIRNAME("$mf")`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running `make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # When using ansi2knr, U may be empty or an underscore; expand it
+    U=`sed -n 's/^U = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`AS_DIRNAME(["$file"])`
+      AS_MKDIR_P([$dirpart/$fdir])
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
+  done
+}
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled.  FIXME.  This creates each `.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Do all the work for Automake.                             -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2008, 2009, 2011 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.
+
+# serial 17
+
+# This macro actually does too much.  Some checks are only needed if
+# your package does certain things.  But this isn't really a big deal.
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out.  PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition.  After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.62])dnl
+dnl Autoconf wants to disallow AM_ names.  We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(
+  m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
+  [ok:ok],,
+  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+AM_MISSING_PROG([AUTOCONF], [autoconf])
+AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+AM_MISSING_PROG([AUTOHEADER], [autoheader])
+AM_MISSING_PROG([MAKEINFO], [makeinfo])
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+             [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+                            [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+                 [_AM_DEPENDENCIES([CC])],
+                 [define([AC_PROG_CC],
+                         defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+                 [_AM_DEPENDENCIES([CXX])],
+                 [define([AC_PROG_CXX],
+                         defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+                 [_AM_DEPENDENCIES([OBJC])],
+                 [define([AC_PROG_OBJC],
+                         defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+])
+_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
+dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
+dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This macro
+dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+])
+
+dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated.  The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 2003, 2005, 2008, 2011 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.
+
+# serial 8
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+AC_SUBST([install_sh])])
+
+# Copyright (C) 2003, 2005  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.
+
+# serial 2
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot.  For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Check to see how 'make' treats includes.                 -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2009  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.
+
+# serial 4
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+       @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008
+# 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.
+
+# serial 6
+
+# AM_PROG_CC_C_O
+# --------------
+# Like AC_PROG_CC_C_O, but changed for automake.
+AC_DEFUN([AM_PROG_CC_C_O],
+[AC_REQUIRE([AC_PROG_CC_C_O])dnl
+AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+# FIXME: we rely on the cache variable name because
+# there is no other way.
+set dummy $CC
+am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
+eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
+if test "$am_t" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+dnl Make sure AC_PROG_CC is never called again, or it will override our
+dnl setting of CC.
+m4_define([AC_PROG_CC],
+          [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
+])
+
+# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
+# 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.
+
+# serial 6
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# Copyright (C) 2003, 2004, 2005, 2006, 2011 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.
+
+# serial 1
+
+# AM_PROG_MKDIR_P
+# ---------------
+# Check for `mkdir -p'.
+AC_DEFUN([AM_PROG_MKDIR_P],
+[AC_PREREQ([2.60])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+dnl Automake 1.8 to 1.9.6 used to define mkdir_p.  We now use MKDIR_P,
+dnl while keeping a definition of mkdir_p for backward compatibility.
+dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
+dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
+dnl Makefile.ins that do not define MKDIR_P, so we do our own
+dnl adjustment using top_builddir (which is defined more often than
+dnl MKDIR_P).
+AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
+case $mkdir_p in
+  [[\\/$]]* | ?:[[\\/]]*) ;;
+  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+])
+
+# Helper functions for option handling.                     -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010, 2011 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.
+
+# serial 6
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# --------------------
+# Set option NAME.  Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Check to make sure that the build environment is sane.    -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008, 2009, 2010,
+# 2011 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.
+
+# serial 9
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[[\\\"\#\$\&\'\`$am_lf]]*)
+    AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+  *[[\\\"\#\$\&\'\`$am_lf\ \   ]]*)
+    AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$[*]" = "X"; then
+       # -L didn't work.
+       set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$[*]" != "X $srcdir/configure conftest.file" \
+       && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+       # If neither matched, then we have a broken ls.  This can happen
+       # if, for instance, CONFIG_SHELL is bash and it inherits a
+       # broken ls alias from the environment.  This has actually
+       # happened.  Such a system could not be considered "sane".
+       AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment])
+     fi
+     if test "$[2]" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
+   test "$[2]" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT([yes])
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+AC_CONFIG_COMMANDS_PRE(
+  [AC_MSG_CHECKING([that generated files are newer than configure])
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   AC_MSG_RESULT([done])])
+rm -f conftest.file
+])
+
+# Copyright (C) 2009, 2010 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.
+
+# serial 2
+
+# AM_SILENT_RULES([DEFAULT])
+# --------------------------
+# Enable less verbose build rules; with the default set to DEFAULT
+# (`yes' being less verbose, `no' or empty being verbose).
+AC_DEFUN([AM_SILENT_RULES],
+[AC_ARG_ENABLE([silent-rules], [dnl
+AS_HELP_STRING(
+  [--enable-silent-rules],
+  [less verbose build output (undo: `make V=1')])
+AS_HELP_STRING(
+  [--disable-silent-rules],
+  [verbose build output (undo: `make V=0')])dnl
+])
+case $enable_silent_rules in @%:@ (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+esac
+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+AM_BACKSLASH='\'
+AC_SUBST([AM_BACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+])
+
+# Copyright (C) 2001, 2003, 2005, 2011 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.
+
+# serial 1
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries.  This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+  AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006, 2008, 2010 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.
+
+# serial 3
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# --------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
+# Check how to create a tarball.                            -*- Autoconf -*-
+
+# Copyright (C) 2004, 2005  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.
+
+# serial 2
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+#     tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+#     $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+     [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+     [m4_case([$1], [ustar],, [pax],,
+              [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+  case $_am_tool in
+  gnutar)
+    for _am_tar in tar gnutar gtar;
+    do
+      AM_RUN_LOG([$_am_tar --version]) && break
+    done
+    am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+    am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+    am__untar="$_am_tar -xf -"
+    ;;
+  plaintar)
+    # Must skip GNU tar: if it does not support --format= it doesn't create
+    # ustar tarball either.
+    (tar --version) >/dev/null 2>&1 && continue
+    am__tar='tar chf - "$$tardir"'
+    am__tar_='tar chf - "$tardir"'
+    am__untar='tar xf -'
+    ;;
+  pax)
+    am__tar='pax -L -x $1 -w "$$tardir"'
+    am__tar_='pax -L -x $1 -w "$tardir"'
+    am__untar='pax -r'
+    ;;
+  cpio)
+    am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+    am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+    am__untar='cpio -i -H $1 -d'
+    ;;
+  none)
+    am__tar=false
+    am__tar_=false
+    am__untar=false
+    ;;
+  esac
+
+  # If the value was cached, stop now.  We just wanted to have am__tar
+  # and am__untar set.
+  test -n "${am_cv_prog_tar_$1}" && break
+
+  # tar/untar a dummy directory, and stop if the command works
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  echo GrepMe > conftest.dir/file
+  AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+  rm -rf conftest.dir
+  if test -s conftest.tar; then
+    AM_RUN_LOG([$am__untar <conftest.tar])
+    grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+  fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+m4_include([m4/00gnulib.m4])
+m4_include([m4/alloca.m4])
+m4_include([m4/argmatch.m4])
+m4_include([m4/assert.m4])
+m4_include([m4/btowc.m4])
+m4_include([m4/calloc.m4])
+m4_include([m4/canonicalize.m4])
+m4_include([m4/close-stream.m4])
+m4_include([m4/close.m4])
+m4_include([m4/closeout.m4])
+m4_include([m4/codeset.m4])
+m4_include([m4/config-h.m4])
+m4_include([m4/configmake.m4])
+m4_include([m4/dirname.m4])
+m4_include([m4/double-slash-root.m4])
+m4_include([m4/dup2.m4])
+m4_include([m4/eealloc.m4])
+m4_include([m4/environ.m4])
+m4_include([m4/errno_h.m4])
+m4_include([m4/error.m4])
+m4_include([m4/extensions.m4])
+m4_include([m4/fclose.m4])
+m4_include([m4/fcntl-o.m4])
+m4_include([m4/fcntl_h.m4])
+m4_include([m4/fflush.m4])
+m4_include([m4/fpending.m4])
+m4_include([m4/fpurge.m4])
+m4_include([m4/freading.m4])
+m4_include([m4/fseeko.m4])
+m4_include([m4/fsync.m4])
+m4_include([m4/ftell.m4])
+m4_include([m4/ftello.m4])
+m4_include([m4/getopt.m4])
+m4_include([m4/getpagesize.m4])
+m4_include([m4/gettext.m4])
+m4_include([m4/gettimeofday.m4])
+m4_include([m4/glibc21.m4])
+m4_include([m4/gnulib-common.m4])
+m4_include([m4/gnulib-comp.m4])
+m4_include([m4/iconv.m4])
+m4_include([m4/include_next.m4])
+m4_include([m4/inline.m4])
+m4_include([m4/intlmacosx.m4])
+m4_include([m4/inttypes-pri.m4])
+m4_include([m4/inttypes.m4])
+m4_include([m4/langinfo_h.m4])
+m4_include([m4/lcmessage.m4])
+m4_include([m4/lib-ignore.m4])
+m4_include([m4/lib-ld.m4])
+m4_include([m4/lib-link.m4])
+m4_include([m4/lib-prefix.m4])
+m4_include([m4/libtool.m4])
+m4_include([m4/localcharset.m4])
+m4_include([m4/locale-fr.m4])
+m4_include([m4/locale-ja.m4])
+m4_include([m4/locale-tr.m4])
+m4_include([m4/locale-zh.m4])
+m4_include([m4/locale_h.m4])
+m4_include([m4/localename.m4])
+m4_include([m4/lock.m4])
+m4_include([m4/long-options.m4])
+m4_include([m4/longlong.m4])
+m4_include([m4/lseek.m4])
+m4_include([m4/lstat.m4])
+m4_include([m4/ltoptions.m4])
+m4_include([m4/ltsugar.m4])
+m4_include([m4/ltversion.m4])
+m4_include([m4/lt~obsolete.m4])
+m4_include([m4/malloc.m4])
+m4_include([m4/malloca.m4])
+m4_include([m4/manywarnings.m4])
+m4_include([m4/mbrtowc.m4])
+m4_include([m4/mbsinit.m4])
+m4_include([m4/mbstate_t.m4])
+m4_include([m4/mbtowc.m4])
+m4_include([m4/mkstemp.m4])
+m4_include([m4/mmap-anon.m4])
+m4_include([m4/mode_t.m4])
+m4_include([m4/multiarch.m4])
+m4_include([m4/nl_langinfo.m4])
+m4_include([m4/nls.m4])
+m4_include([m4/nocrash.m4])
+m4_include([m4/o-direct.m4])
+m4_include([m4/open.m4])
+m4_include([m4/pathmax.m4])
+m4_include([m4/po.m4])
+m4_include([m4/priv-set.m4])
+m4_include([m4/progtest.m4])
+m4_include([m4/putenv.m4])
+m4_include([m4/quote.m4])
+m4_include([m4/quotearg.m4])
+m4_include([m4/read.m4])
+m4_include([m4/readlink.m4])
+m4_include([m4/realloc.m4])
+m4_include([m4/regex.m4])
+m4_include([m4/rpmatch.m4])
+m4_include([m4/safe-read.m4])
+m4_include([m4/setenv.m4])
+m4_include([m4/setlocale.m4])
+m4_include([m4/sleep.m4])
+m4_include([m4/ssize_t.m4])
+m4_include([m4/stat.m4])
+m4_include([m4/stdarg.m4])
+m4_include([m4/stdbool.m4])
+m4_include([m4/stddef_h.m4])
+m4_include([m4/stdint.m4])
+m4_include([m4/stdio_h.m4])
+m4_include([m4/stdlib_h.m4])
+m4_include([m4/strdup.m4])
+m4_include([m4/strerror.m4])
+m4_include([m4/strerror_r.m4])
+m4_include([m4/string_h.m4])
+m4_include([m4/strndup.m4])
+m4_include([m4/strnlen.m4])
+m4_include([m4/strtoll.m4])
+m4_include([m4/strtoull.m4])
+m4_include([m4/symlink.m4])
+m4_include([m4/sys_stat_h.m4])
+m4_include([m4/sys_time_h.m4])
+m4_include([m4/tempname.m4])
+m4_include([m4/thread.m4])
+m4_include([m4/threadlib.m4])
+m4_include([m4/time_h.m4])
+m4_include([m4/ungetc.m4])
+m4_include([m4/unistd_h.m4])
+m4_include([m4/unlink.m4])
+m4_include([m4/unlinkdir.m4])
+m4_include([m4/usleep.m4])
+m4_include([m4/version-etc.m4])
+m4_include([m4/warn-on-use.m4])
+m4_include([m4/warnings.m4])
+m4_include([m4/wchar_h.m4])
+m4_include([m4/wchar_t.m4])
+m4_include([m4/wcrtomb.m4])
+m4_include([m4/wctob.m4])
+m4_include([m4/wctomb.m4])
+m4_include([m4/wctype_h.m4])
+m4_include([m4/wint_t.m4])
+m4_include([m4/xalloc.m4])
+m4_include([m4/xstrndup.m4])
+m4_include([m4/xstrtol.m4])
+m4_include([m4/yield.m4])
diff --git a/build-aux/announce-gen b/build-aux/announce-gen
new file mode 100755 (executable)
index 0000000..0eb6b5b
--- /dev/null
@@ -0,0 +1,519 @@
+eval '(exit $?0)' && eval 'exec perl -wS "$0" ${1+"$@"}'
+  & eval 'exec perl -wS "$0" $argv:q'
+    if 0;
+# Generate a release announcement message.
+
+my $VERSION = '2011-05-17 20:25'; # UTC
+# The definition above must lie within the first 8 lines in order
+# for the Emacs time-stamp write hook (at end) to update it.
+# If you change this file with Emacs, please let the write hook
+# do its job.  Otherwise, update this string manually.
+
+# Copyright (C) 2002-2011 Free Software Foundation, 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, 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 <http://www.gnu.org/licenses/>.
+
+# Written by Jim Meyering
+
+use strict;
+
+use Getopt::Long;
+use Digest::MD5;
+use Digest::SHA1;
+use POSIX qw(strftime);
+
+(my $ME = $0) =~ s|.*/||;
+
+my %valid_release_types = map {$_ => 1} qw (alpha beta stable);
+my @archive_suffixes = ('tar.gz', 'tar.bz2', 'tar.lzma', 'tar.xz');
+
+sub usage ($)
+{
+  my ($exit_code) = @_;
+  my $STREAM = ($exit_code == 0 ? *STDOUT : *STDERR);
+  if ($exit_code != 0)
+    {
+      print $STREAM "Try `$ME --help' for more information.\n";
+    }
+  else
+    {
+      my @types = sort keys %valid_release_types;
+      print $STREAM <<EOF;
+Usage: $ME [OPTIONS]
+Generate an announcement message.
+
+OPTIONS:
+
+These options must be specified:
+
+   --release-type=TYPE          TYPE must be one of @types
+   --package-name=PACKAGE_NAME
+   --previous-version=VER
+   --current-version=VER
+   --gpg-key-id=ID         The GnuPG ID of the key used to sign the tarballs
+   --url-directory=URL_DIR
+
+The following are optional:
+
+   --news=NEWS_FILE
+   --bootstrap-tools=TOOL_LIST  a comma-separated list of tools, e.g.,
+                                autoconf,automake,bison,gnulib
+   --gnulib-version=VERSION     report VERSION as the gnulib version, where
+                                VERSION is the result of running git describe
+                                in the gnulib source directory.
+                                required if gnulib is in TOOL_LIST.
+   --no-print-checksums         do not emit MD5 or SHA1 checksums
+   --archive-suffix=SUF         add SUF to the list of archive suffixes
+   --mail-headers=HEADERS       a space-separated list of mail headers, e.g.,
+                                To: x\@example.com Cc: y-announce\@example.com,...
+
+   --help             display this help and exit
+   --version          output version information and exit
+
+EOF
+    }
+  exit $exit_code;
+}
+
+
+=item C<%size> = C<sizes (@file)>
+
+Compute the sizes of the C<@file> and return them as a hash.  Return
+C<undef> if one of the computation failed.
+
+=cut
+
+sub sizes (@)
+{
+  my (@file) = @_;
+
+  my $fail = 0;
+  my %res;
+  foreach my $f (@file)
+    {
+      my $cmd = "du --human $f";
+      my $t = `$cmd`;
+      # FIXME-someday: give a better diagnostic, a la $PROCESS_STATUS
+      $@
+        and (warn "$ME: command failed: `$cmd'\n"), $fail = 1;
+      chomp $t;
+      $t =~ s/^([\d.]+[MkK]).*/${1}B/;
+      $res{$f} = $t;
+    }
+  return $fail ? undef : %res;
+}
+
+=item C<print_locations ($title, \@url, \%size, @file)
+
+Print a section C<$title> dedicated to the list of <@file>, which
+sizes are stored in C<%size>, and which are available from the C<@url>.
+
+=cut
+
+sub print_locations ($\@\%@)
+{
+  my ($title, $url, $size, @file) = @_;
+  print "Here are the $title:\n";
+  foreach my $url (@{$url})
+    {
+      for my $file (@file)
+        {
+          print "  $url/$file";
+          print "   (", $$size{$file}, ")"
+            if exists $$size{$file};
+          print "\n";
+        }
+    }
+  print "\n";
+}
+
+=item C<print_checksums (@file)
+
+Print the MD5 and SHA1 signature section for each C<@file>.
+
+=cut
+
+sub print_checksums (@)
+{
+  my (@file) = @_;
+
+  print "Here are the MD5 and SHA1 checksums:\n";
+  print "\n";
+
+  foreach my $meth (qw (md5 sha1))
+    {
+      foreach my $f (@file)
+        {
+          open IN, '<', $f
+            or die "$ME: $f: cannot open for reading: $!\n";
+          binmode IN;
+          my $dig =
+            ($meth eq 'md5'
+             ? Digest::MD5->new->addfile(*IN)->hexdigest
+             : Digest::SHA1->new->addfile(*IN)->hexdigest);
+          close IN;
+          print "$dig  $f\n";
+        }
+    }
+  print "\n";
+}
+
+=item C<print_news_deltas ($news_file, $prev_version, $curr_version)
+
+Print the section of the NEWS file C<$news_file> addressing changes
+between versions C<$prev_version> and C<$curr_version>.
+
+=cut
+
+sub print_news_deltas ($$$)
+{
+  my ($news_file, $prev_version, $curr_version) = @_;
+
+  my $news_name = $news_file;
+  $news_name =~ s|^\./||;
+
+  print "\n$news_name\n\n";
+
+  # Print all lines from $news_file, starting with the first one
+  # that mentions $curr_version up to but not including
+  # the first occurrence of $prev_version.
+  my $in_items;
+
+  my $re_prefix = qr/(?:\* )?(?:Noteworthy c|Major c|C)(?i:hanges)/;
+
+  my $found_news;
+  open NEWS, '<', $news_file
+    or die "$ME: $news_file: cannot open for reading: $!\n";
+  while (defined (my $line = <NEWS>))
+    {
+      if ( ! $in_items)
+        {
+          # Match lines like these:
+          # * Major changes in release 5.0.1:
+          # * Noteworthy changes in release 6.6 (2006-11-22) [stable]
+          $line =~ /^$re_prefix.*(?:[^\d.]|$)\Q$curr_version\E(?:[^\d.]|$)/o
+            or next;
+          $in_items = 1;
+          print $line;
+        }
+      else
+        {
+          # This regexp must not match version numbers in NEWS items.
+          # For example, they might well say `introduced in 4.5.5',
+          # and we don't want that to match.
+          $line =~ /^$re_prefix.*(?:[^\d.]|$)\Q$prev_version\E(?:[^\d.]|$)/o
+            and last;
+          print $line;
+          $line =~ /\S/
+            and $found_news = 1;
+        }
+    }
+  close NEWS;
+
+  $in_items
+    or die "$ME: $news_file: no matching lines for `$curr_version'\n";
+  $found_news
+    or die "$ME: $news_file: no news item found for `$curr_version'\n";
+}
+
+sub print_changelog_deltas ($$)
+{
+  my ($package_name, $prev_version) = @_;
+
+  # Print new ChangeLog entries.
+
+  # First find all CVS-controlled ChangeLog files.
+  use File::Find;
+  my @changelog;
+  find ({wanted => sub {$_ eq 'ChangeLog' && -d 'CVS'
+                          and push @changelog, $File::Find::name}},
+        '.');
+
+  # If there are no ChangeLog files, we're done.
+  @changelog
+    or return;
+  my %changelog = map {$_ => 1} @changelog;
+
+  # Reorder the list of files so that if there are ChangeLog
+  # files in the specified directories, they're listed first,
+  # in this order:
+  my @dir = qw ( . src lib m4 config doc );
+
+  # A typical @changelog array might look like this:
+  # ./ChangeLog
+  # ./po/ChangeLog
+  # ./m4/ChangeLog
+  # ./lib/ChangeLog
+  # ./doc/ChangeLog
+  # ./config/ChangeLog
+  my @reordered;
+  foreach my $d (@dir)
+    {
+      my $dot_slash = $d eq '.' ? $d : "./$d";
+      my $target = "$dot_slash/ChangeLog";
+      delete $changelog{$target}
+        and push @reordered, $target;
+    }
+
+  # Append any remaining ChangeLog files.
+  push @reordered, sort keys %changelog;
+
+  # Remove leading `./'.
+  @reordered = map { s!^\./!!; $_ } @reordered;
+
+  print "\nChangeLog entries:\n\n";
+  # print join ("\n", @reordered), "\n";
+
+  $prev_version =~ s/\./_/g;
+  my $prev_cvs_tag = "\U$package_name\E-$prev_version";
+
+  my $cmd = "cvs -n diff -u -r$prev_cvs_tag -rHEAD @reordered";
+  open DIFF, '-|', $cmd
+    or die "$ME: cannot run `$cmd': $!\n";
+  # Print two types of lines, making minor changes:
+  # Lines starting with `+++ ', e.g.,
+  # +++ ChangeLog   22 Feb 2003 16:52:51 -0000      1.247
+  # and those starting with `+'.
+  # Don't print the others.
+  my $prev_printed_line_empty = 1;
+  while (defined (my $line = <DIFF>))
+    {
+      if ($line =~ /^\+\+\+ /)
+        {
+          my $separator = "*"x70 ."\n";
+          $line =~ s///;
+          $line =~ s/\s.*//;
+          $prev_printed_line_empty
+            or print "\n";
+          print $separator, $line, $separator;
+        }
+      elsif ($line =~ /^\+/)
+        {
+          $line =~ s///;
+          print $line;
+          $prev_printed_line_empty = ($line =~ /^$/);
+        }
+    }
+  close DIFF;
+
+  # The exit code should be 1.
+  # Allow in case there are no modified ChangeLog entries.
+  $? == 256 || $? == 128
+    or warn "$ME: warning: `cmd' had unexpected exit code or signal ($?)\n";
+}
+
+sub get_tool_versions ($$)
+{
+  my ($tool_list, $gnulib_version) = @_;
+  @$tool_list
+    or return ();
+
+  my $fail;
+  my @tool_version_pair;
+  foreach my $t (@$tool_list)
+    {
+      if ($t eq 'gnulib')
+        {
+          push @tool_version_pair, ucfirst $t . ' ' . $gnulib_version;
+          next;
+        }
+      # Assume that the last "word" on the first line of
+      # `tool --version` output is the version string.
+      my ($first_line, undef) = split ("\n", `$t --version`);
+      if ($first_line =~ /.* (\d[\w.-]+)$/)
+        {
+          $t = ucfirst $t;
+          push @tool_version_pair, "$t $1";
+        }
+      else
+        {
+          defined $first_line
+            and $first_line = '';
+          warn "$ME: $t: unexpected --version output\n:$first_line";
+          $fail = 1;
+        }
+    }
+
+  $fail
+    and exit 1;
+
+  return @tool_version_pair;
+}
+
+{
+  # Neutralize the locale, so that, for instance, "du" does not
+  # issue "1,2" instead of "1.2", what confuses our regexps.
+  $ENV{LC_ALL} = "C";
+
+  my $mail_headers;
+  my $release_type;
+  my $package_name;
+  my $prev_version;
+  my $curr_version;
+  my $gpg_key_id;
+  my @url_dir_list;
+  my @news_file;
+  my $bootstrap_tools;
+  my $gnulib_version;
+  my $print_checksums_p = 1;
+
+  GetOptions
+    (
+     'mail-headers=s'     => \$mail_headers,
+     'release-type=s'     => \$release_type,
+     'package-name=s'     => \$package_name,
+     'previous-version=s' => \$prev_version,
+     'current-version=s'  => \$curr_version,
+     'gpg-key-id=s'       => \$gpg_key_id,
+     'url-directory=s'    => \@url_dir_list,
+     'news=s'             => \@news_file,
+     'bootstrap-tools=s'  => \$bootstrap_tools,
+     'gnulib-version=s'   => \$gnulib_version,
+     'print-checksums!'   => \$print_checksums_p,
+     'archive-suffix=s'   => \@archive_suffixes,
+
+     help => sub { usage 0 },
+     version => sub { print "$ME version $VERSION\n"; exit },
+    ) or usage 1;
+
+  my $fail = 0;
+  # Ensure that sure each required option is specified.
+  $release_type
+    or (warn "$ME: release type not specified\n"), $fail = 1;
+  $package_name
+    or (warn "$ME: package name not specified\n"), $fail = 1;
+  $prev_version
+    or (warn "$ME: previous version string not specified\n"), $fail = 1;
+  $curr_version
+    or (warn "$ME: current version string not specified\n"), $fail = 1;
+  $gpg_key_id
+    or (warn "$ME: GnuPG key ID not specified\n"), $fail = 1;
+  @url_dir_list
+    or (warn "$ME: URL directory name(s) not specified\n"), $fail = 1;
+
+  my @tool_list = split ',', $bootstrap_tools;
+
+  grep (/^gnulib$/, @tool_list) ^ defined $gnulib_version
+    and (warn "$ME: when specifying gnulib as a tool, you must also specify\n"
+        . "--gnulib-version=V, where V is the result of running git describe\n"
+        . "in the gnulib source directory.\n"), $fail = 1;
+
+  exists $valid_release_types{$release_type}
+    or (warn "$ME: `$release_type': invalid release type\n"), $fail = 1;
+
+  @ARGV
+    and (warn "$ME: too many arguments:\n", join ("\n", @ARGV), "\n"),
+      $fail = 1;
+  $fail
+    and usage 1;
+
+  my $my_distdir = "$package_name-$curr_version";
+
+  my $xd = "$package_name-$prev_version-$curr_version.xdelta";
+
+  my @candidates = map { "$my_distdir.$_" } @archive_suffixes;
+  my @tarballs = grep {-f $_} @candidates;
+
+  @tarballs
+    or die "$ME: none of " . join(', ', @candidates) . " were found\n";
+  my @sizable = @tarballs;
+  -f $xd
+    and push @sizable, $xd;
+  my %size = sizes (@sizable);
+  %size
+    or exit 1;
+
+  my $headers = '';
+  if (defined $mail_headers)
+    {
+      ($headers = $mail_headers) =~ s/\s+(\S+:)/\n$1/g;
+      $headers .= "\n";
+    }
+
+  # The markup is escaped as <\# so that when this script is sent by
+  # mail (or part of a diff), Gnus is not triggered.
+  print <<EOF;
+
+${headers}Subject: $my_distdir released [$release_type]
+
+<\#secure method=pgpmime mode=sign>
+
+FIXME: put comments here
+
+EOF
+
+  print_locations ("compressed sources", @url_dir_list, %size, @tarballs);
+  -f $xd
+    and print_locations ("xdelta diffs (useful? if so, "
+                         . "please tell bug-gnulib\@gnu.org)",
+                         @url_dir_list, %size, $xd);
+  my @sig_files = map { "$_.sig" } @tarballs;
+  print_locations ("GPG detached signatures[*]", @url_dir_list, %size,
+                   @sig_files);
+  if ($url_dir_list[0] =~ "gnu\.org")
+    {
+      print "To reduce load on the main server, use a mirror listed at:\n";
+      print "  http://www.gnu.org/order/ftp.html\n\n";
+    }
+
+  $print_checksums_p
+    and print_checksums (@sizable);
+
+  print <<EOF;
+[*] You can use either of the above signature files to verify that
+the corresponding file (without the .sig suffix) is intact.  First,
+be sure to download both the .sig file and the corresponding tarball.
+Then, run a command like this:
+
+  gpg --verify $tarballs[0].sig
+
+If that command fails because you don't have the required public key,
+then run this command to import it:
+
+  gpg --keyserver keys.gnupg.net --recv-keys $gpg_key_id
+
+and rerun the \`gpg --verify' command.
+EOF
+
+  my @tool_versions = get_tool_versions (\@tool_list, $gnulib_version);
+  @tool_versions
+    and print "\nThis release was bootstrapped with the following tools:",
+      join ('', map {"\n  $_"} @tool_versions), "\n";
+
+  print_news_deltas ($_, $prev_version, $curr_version)
+    foreach @news_file;
+
+  $release_type eq 'stable'
+    or print_changelog_deltas ($package_name, $prev_version);
+
+  exit 0;
+}
+
+### Setup "GNU" style for perl-mode and cperl-mode.
+## Local Variables:
+## mode: perl
+## perl-indent-level: 2
+## perl-continued-statement-offset: 2
+## perl-continued-brace-offset: 0
+## perl-brace-offset: 0
+## perl-brace-imaginary-offset: 0
+## perl-label-offset: -2
+## perl-extra-newline-before-brace: t
+## perl-merge-trailing-else: nil
+## eval: (add-hook 'write-file-hooks 'time-stamp)
+## time-stamp-start: "my $VERSION = '"
+## time-stamp-format: "%:y-%02m-%02d %02H:%02M"
+## time-stamp-time-zone: "UTC"
+## time-stamp-end: "'; # UTC"
+## End:
diff --git a/build-aux/arg-nonnull.h b/build-aux/arg-nonnull.h
new file mode 100644 (file)
index 0000000..1b24a0d
--- /dev/null
@@ -0,0 +1,28 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* A C macro for declaring that specific arguments must not be NULL.
+   Copyright (C) 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools
+   that the values passed as arguments n, ..., m must be non-NULL pointers.
+   n = 1 stands for the first argument, n = 2 for the second argument etc.  */
+#ifndef _GL_ARG_NONNULL
+# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3
+#  define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params))
+# else
+#  define _GL_ARG_NONNULL(params)
+# endif
+#endif
diff --git a/build-aux/c++defs.h b/build-aux/c++defs.h
new file mode 100644 (file)
index 0000000..eb53f1d
--- /dev/null
@@ -0,0 +1,273 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* C++ compatible function declaration macros.
+   Copyright (C) 2010-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+#ifndef _GL_CXXDEFS_H
+#define _GL_CXXDEFS_H
+
+/* The three most frequent use cases of these macros are:
+
+   * For providing a substitute for a function that is missing on some
+     platforms, but is declared and works fine on the platforms on which
+     it exists:
+
+       #if @GNULIB_FOO@
+       # if !@HAVE_FOO@
+       _GL_FUNCDECL_SYS (foo, ...);
+       # endif
+       _GL_CXXALIAS_SYS (foo, ...);
+       _GL_CXXALIASWARN (foo);
+       #elif defined GNULIB_POSIXCHECK
+       ...
+       #endif
+
+   * For providing a replacement for a function that exists on all platforms,
+     but is broken/insufficient and needs to be replaced on some platforms:
+
+       #if @GNULIB_FOO@
+       # if @REPLACE_FOO@
+       #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+       #   undef foo
+       #   define foo rpl_foo
+       #  endif
+       _GL_FUNCDECL_RPL (foo, ...);
+       _GL_CXXALIAS_RPL (foo, ...);
+       # else
+       _GL_CXXALIAS_SYS (foo, ...);
+       # endif
+       _GL_CXXALIASWARN (foo);
+       #elif defined GNULIB_POSIXCHECK
+       ...
+       #endif
+
+   * For providing a replacement for a function that exists on some platforms
+     but is broken/insufficient and needs to be replaced on some of them and
+     is additionally either missing or undeclared on some other platforms:
+
+       #if @GNULIB_FOO@
+       # if @REPLACE_FOO@
+       #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+       #   undef foo
+       #   define foo rpl_foo
+       #  endif
+       _GL_FUNCDECL_RPL (foo, ...);
+       _GL_CXXALIAS_RPL (foo, ...);
+       # else
+       #  if !@HAVE_FOO@   or   if !@HAVE_DECL_FOO@
+       _GL_FUNCDECL_SYS (foo, ...);
+       #  endif
+       _GL_CXXALIAS_SYS (foo, ...);
+       # endif
+       _GL_CXXALIASWARN (foo);
+       #elif defined GNULIB_POSIXCHECK
+       ...
+       #endif
+*/
+
+/* _GL_EXTERN_C declaration;
+   performs the declaration with C linkage.  */
+#if defined __cplusplus
+# define _GL_EXTERN_C extern "C"
+#else
+# define _GL_EXTERN_C extern
+#endif
+
+/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes);
+   declares a replacement function, named rpl_func, with the given prototype,
+   consisting of return type, parameters, and attributes.
+   Example:
+     _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...)
+                                  _GL_ARG_NONNULL ((1)));
+ */
+#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \
+  _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes)
+#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \
+  _GL_EXTERN_C rettype rpl_func parameters_and_attributes
+
+/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes);
+   declares the system function, named func, with the given prototype,
+   consisting of return type, parameters, and attributes.
+   Example:
+     _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...)
+                                  _GL_ARG_NONNULL ((1)));
+ */
+#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \
+  _GL_EXTERN_C rettype func parameters_and_attributes
+
+/* _GL_CXXALIAS_RPL (func, rettype, parameters);
+   declares a C++ alias called GNULIB_NAMESPACE::func
+   that redirects to rpl_func, if GNULIB_NAMESPACE is defined.
+   Example:
+     _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...));
+ */
+#define _GL_CXXALIAS_RPL(func,rettype,parameters) \
+  _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters)
+#if defined __cplusplus && defined GNULIB_NAMESPACE
+# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
+    namespace GNULIB_NAMESPACE                                \
+    {                                                         \
+      rettype (*const func) parameters = ::rpl_func;          \
+    }                                                         \
+    _GL_EXTERN_C int _gl_cxxalias_dummy
+#else
+# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
+    _GL_EXTERN_C int _gl_cxxalias_dummy
+#endif
+
+/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters);
+   is like  _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters);
+   except that the C function rpl_func may have a slightly different
+   declaration.  A cast is used to silence the "invalid conversion" error
+   that would otherwise occur.  */
+#if defined __cplusplus && defined GNULIB_NAMESPACE
+# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
+    namespace GNULIB_NAMESPACE                                     \
+    {                                                              \
+      rettype (*const func) parameters =                           \
+        reinterpret_cast<rettype(*)parameters>(::rpl_func);        \
+    }                                                              \
+    _GL_EXTERN_C int _gl_cxxalias_dummy
+#else
+# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
+    _GL_EXTERN_C int _gl_cxxalias_dummy
+#endif
+
+/* _GL_CXXALIAS_SYS (func, rettype, parameters);
+   declares a C++ alias called GNULIB_NAMESPACE::func
+   that redirects to the system provided function func, if GNULIB_NAMESPACE
+   is defined.
+   Example:
+     _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...));
+ */
+#if defined __cplusplus && defined GNULIB_NAMESPACE
+  /* If we were to write
+       rettype (*const func) parameters = ::func;
+     like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls
+     better (remove an indirection through a 'static' pointer variable),
+     but then the _GL_CXXALIASWARN macro below would cause a warning not only
+     for uses of ::func but also for uses of GNULIB_NAMESPACE::func.  */
+# define _GL_CXXALIAS_SYS(func,rettype,parameters) \
+    namespace GNULIB_NAMESPACE                     \
+    {                                              \
+      static rettype (*func) parameters = ::func;  \
+    }                                              \
+    _GL_EXTERN_C int _gl_cxxalias_dummy
+#else
+# define _GL_CXXALIAS_SYS(func,rettype,parameters) \
+    _GL_EXTERN_C int _gl_cxxalias_dummy
+#endif
+
+/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters);
+   is like  _GL_CXXALIAS_SYS (func, rettype, parameters);
+   except that the C function func may have a slightly different declaration.
+   A cast is used to silence the "invalid conversion" error that would
+   otherwise occur.  */
+#if defined __cplusplus && defined GNULIB_NAMESPACE
+# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
+    namespace GNULIB_NAMESPACE                          \
+    {                                                   \
+      static rettype (*func) parameters =               \
+        reinterpret_cast<rettype(*)parameters>(::func); \
+    }                                                   \
+    _GL_EXTERN_C int _gl_cxxalias_dummy
+#else
+# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
+    _GL_EXTERN_C int _gl_cxxalias_dummy
+#endif
+
+/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2);
+   is like  _GL_CXXALIAS_SYS (func, rettype, parameters);
+   except that the C function is picked among a set of overloaded functions,
+   namely the one with rettype2 and parameters2.  Two consecutive casts
+   are used to silence the "cannot find a match" and "invalid conversion"
+   errors that would otherwise occur.  */
+#if defined __cplusplus && defined GNULIB_NAMESPACE
+  /* The outer cast must be a reinterpret_cast.
+     The inner cast: When the function is defined as a set of overloaded
+     functions, it works as a static_cast<>, choosing the designated variant.
+     When the function is defined as a single variant, it works as a
+     reinterpret_cast<>. The parenthesized cast syntax works both ways.  */
+# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
+    namespace GNULIB_NAMESPACE                                                \
+    {                                                                         \
+      static rettype (*func) parameters =                                     \
+        reinterpret_cast<rettype(*)parameters>(                               \
+          (rettype2(*)parameters2)(::func));                                  \
+    }                                                                         \
+    _GL_EXTERN_C int _gl_cxxalias_dummy
+#else
+# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
+    _GL_EXTERN_C int _gl_cxxalias_dummy
+#endif
+
+/* _GL_CXXALIASWARN (func);
+   causes a warning to be emitted when ::func is used but not when
+   GNULIB_NAMESPACE::func is used.  func must be defined without overloaded
+   variants.  */
+#if defined __cplusplus && defined GNULIB_NAMESPACE
+# define _GL_CXXALIASWARN(func) \
+   _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE)
+# define _GL_CXXALIASWARN_1(func,namespace) \
+   _GL_CXXALIASWARN_2 (func, namespace)
+/* To work around GCC bug <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
+   we enable the warning only when not optimizing.  */
+# if !__OPTIMIZE__
+#  define _GL_CXXALIASWARN_2(func,namespace) \
+    _GL_WARN_ON_USE (func, \
+                     "The symbol ::" #func " refers to the system function. " \
+                     "Use " #namespace "::" #func " instead.")
+# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
+#  define _GL_CXXALIASWARN_2(func,namespace) \
+     extern __typeof__ (func) func
+# else
+#  define _GL_CXXALIASWARN_2(func,namespace) \
+     _GL_EXTERN_C int _gl_cxxalias_dummy
+# endif
+#else
+# define _GL_CXXALIASWARN(func) \
+    _GL_EXTERN_C int _gl_cxxalias_dummy
+#endif
+
+/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes);
+   causes a warning to be emitted when the given overloaded variant of ::func
+   is used but not when GNULIB_NAMESPACE::func is used.  */
+#if defined __cplusplus && defined GNULIB_NAMESPACE
+# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
+   _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \
+                        GNULIB_NAMESPACE)
+# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \
+   _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace)
+/* To work around GCC bug <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
+   we enable the warning only when not optimizing.  */
+# if !__OPTIMIZE__
+#  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
+    _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \
+                         "The symbol ::" #func " refers to the system function. " \
+                         "Use " #namespace "::" #func " instead.")
+# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
+#  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
+     extern __typeof__ (func) func
+# else
+#  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
+     _GL_EXTERN_C int _gl_cxxalias_dummy
+# endif
+#else
+# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
+    _GL_EXTERN_C int _gl_cxxalias_dummy
+#endif
+
+#endif /* _GL_CXXDEFS_H */
diff --git a/build-aux/compile b/build-aux/compile
new file mode 100755 (executable)
index 0000000..bac481c
--- /dev/null
@@ -0,0 +1,310 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand `-c -o'.
+
+scriptversion=2010-11-15.09; # UTC
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009, 2010 Free Software
+# Foundation, Inc.
+# Written by Tom Tromey <tromey@cygnus.com>.
+#
+# 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, 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 <http://www.gnu.org/licenses/>.
+
+# 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 file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+nl='
+'
+
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent tools from complaining about whitespace usage.
+IFS=" ""       $nl"
+
+file_conv=
+
+# func_file_conv build_file lazy
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Win32 hosts. If the determined conversion
+# type is listed in (the comma separated) LAZY, no conversion will
+# take place.
+func_file_conv ()
+{
+  file=$1
+  case $file in
+    / | /[!/]*) # absolute file, and not a UNC file
+      if test -z "$file_conv"; then
+       # lazily determine how to convert abs files
+       case `uname -s` in
+         MINGW*)
+           file_conv=mingw
+           ;;
+         CYGWIN*)
+           file_conv=cygwin
+           ;;
+         *)
+           file_conv=wine
+           ;;
+       esac
+      fi
+      case $file_conv/,$2, in
+       *,$file_conv,*)
+         ;;
+       mingw/*)
+         file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+         ;;
+       cygwin/*)
+         file=`cygpath -m "$file" || echo "$file"`
+         ;;
+       wine/*)
+         file=`winepath -w "$file" || echo "$file"`
+         ;;
+      esac
+      ;;
+  esac
+}
+
+# func_cl_wrapper cl arg...
+# Adjust compile command to suit cl
+func_cl_wrapper ()
+{
+  # Assume a capable shell
+  lib_path=
+  shared=:
+  linker_opts=
+  for arg
+  do
+    if test -n "$eat"; then
+      eat=
+    else
+      case $1 in
+       -o)
+         # configure might choose to run compile as `compile cc -o foo foo.c'.
+         eat=1
+         case $2 in
+           *.o | *.[oO][bB][jJ])
+             func_file_conv "$2"
+             set x "$@" -Fo"$file"
+             shift
+             ;;
+           *)
+             func_file_conv "$2"
+             set x "$@" -Fe"$file"
+             shift
+             ;;
+         esac
+         ;;
+       -I*)
+         func_file_conv "${1#-I}" mingw
+         set x "$@" -I"$file"
+         shift
+         ;;
+       -l*)
+         lib=${1#-l}
+         found=no
+         save_IFS=$IFS
+         IFS=';'
+         for dir in $lib_path $LIB
+         do
+           IFS=$save_IFS
+           if $shared && test -f "$dir/$lib.dll.lib"; then
+             found=yes
+             set x "$@" "$dir/$lib.dll.lib"
+             break
+           fi
+           if test -f "$dir/$lib.lib"; then
+             found=yes
+             set x "$@" "$dir/$lib.lib"
+             break
+           fi
+         done
+         IFS=$save_IFS
+
+         test "$found" != yes && set x "$@" "$lib.lib"
+         shift
+         ;;
+       -L*)
+         func_file_conv "${1#-L}"
+         if test -z "$lib_path"; then
+           lib_path=$file
+         else
+           lib_path="$lib_path;$file"
+         fi
+         linker_opts="$linker_opts -LIBPATH:$file"
+         ;;
+       -static)
+         shared=false
+         ;;
+       -Wl,*)
+         arg=${1#-Wl,}
+         save_ifs="$IFS"; IFS=','
+         for flag in $arg; do
+           IFS="$save_ifs"
+           linker_opts="$linker_opts $flag"
+         done
+         IFS="$save_ifs"
+         ;;
+       -Xlinker)
+         eat=1
+         linker_opts="$linker_opts $2"
+         ;;
+       -*)
+         set x "$@" "$1"
+         shift
+         ;;
+       *.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
+         func_file_conv "$1"
+         set x "$@" -Tp"$file"
+         shift
+         ;;
+       *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
+         func_file_conv "$1" mingw
+         set x "$@" "$file"
+         shift
+         ;;
+       *)
+         set x "$@" "$1"
+         shift
+         ;;
+      esac
+    fi
+    shift
+  done
+  if test -n "$linker_opts"; then
+    linker_opts="-link$linker_opts"
+  fi
+  exec "$@" $linker_opts
+  exit 1
+}
+
+eat=
+
+case $1 in
+  '')
+     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: compile [--help] [--version] PROGRAM [ARGS]
+
+Wrapper for compilers which do not understand `-c -o'.
+Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
+arguments, and rename the output as expected.
+
+If you are trying to build a whole package this is not the
+right script to run: please start by reading the file `INSTALL'.
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "compile $scriptversion"
+    exit $?
+    ;;
+  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
+    func_cl_wrapper "$@"      # Doesn't return...
+    ;;
+esac
+
+ofile=
+cfile=
+
+for arg
+do
+  if test -n "$eat"; then
+    eat=
+  else
+    case $1 in
+      -o)
+       # configure might choose to run compile as `compile cc -o foo foo.c'.
+       # So we strip `-o arg' only if arg is an object.
+       eat=1
+       case $2 in
+         *.o | *.obj)
+           ofile=$2
+           ;;
+         *)
+           set x "$@" -o "$2"
+           shift
+           ;;
+       esac
+       ;;
+      *.c)
+       cfile=$1
+       set x "$@" "$1"
+       shift
+       ;;
+      *)
+       set x "$@" "$1"
+       shift
+       ;;
+    esac
+  fi
+  shift
+done
+
+if test -z "$ofile" || test -z "$cfile"; then
+  # If no `-o' option was seen then we might have been invoked from a
+  # pattern rule where we don't need one.  That is ok -- this is a
+  # normal compilation that the losing compiler can handle.  If no
+  # `.c' file was seen then we are probably linking.  That is also
+  # ok.
+  exec "$@"
+fi
+
+# Name of file we expect compiler to create.
+cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
+
+# Create the lock directory.
+# Note: use `[/\\:.-]' here to ensure that we don't use the same name
+# that we are using for the .o file.  Also, base the name on the expected
+# object file name, since that is what matters with a parallel build.
+lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
+while true; do
+  if mkdir "$lockdir" >/dev/null 2>&1; then
+    break
+  fi
+  sleep 1
+done
+# FIXME: race condition here if user kills between mkdir and trap.
+trap "rmdir '$lockdir'; exit 1" 1 2 15
+
+# Run the compile.
+"$@"
+ret=$?
+
+if test -f "$cofile"; then
+  test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+  test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
+fi
+
+rmdir "$lockdir"
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/build-aux/config.guess b/build-aux/config.guess
new file mode 100755 (executable)
index 0000000..40eaed4
--- /dev/null
@@ -0,0 +1,1517 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+#   2011 Free Software Foundation, Inc.
+
+timestamp='2011-05-11'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Originally written by Per Bothner.  Please send patches (context
+# diff format) to <config-patches@gnu.org> and include a ChangeLog
+# entry.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub.  If it succeeds, it prints the system name on stdout, and
+# exits with 0.  Otherwise, it exits with 1.
+#
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free
+Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )        # Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help" >&2
+       exit 1 ;;
+    * )
+       break ;;
+  esac
+done
+
+if test $# != 0; then
+  echo "$me: too many arguments$help" >&2
+  exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,)    echo "int x;" > $dummy.c ;
+       for c in cc gcc c89 c99 ; do
+         if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+            CC_FOR_BUILD="$c"; break ;
+         fi ;
+       done ;
+       if test x"$CC_FOR_BUILD" = x ; then
+         CC_FOR_BUILD=no_compiler_found ;
+       fi
+       ;;
+ ,,*)   CC_FOR_BUILD=$CC ;;
+ ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
+esac ; set_cc_for_build= ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+       PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+    *:NetBSD:*:*)
+       # NetBSD (nbsd) targets should (where applicable) match one or
+       # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+       # *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
+       # switched to ELF, *-*-netbsd* would select the old
+       # object file format.  This provides both forward
+       # compatibility and a consistent mechanism for selecting the
+       # object file format.
+       #
+       # Note: NetBSD doesn't particularly care about the vendor
+       # portion of the name.  We always set it to "unknown".
+       sysctl="sysctl -n hw.machine_arch"
+       UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+           /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+       case "${UNAME_MACHINE_ARCH}" in
+           armeb) machine=armeb-unknown ;;
+           arm*) machine=arm-unknown ;;
+           sh3el) machine=shl-unknown ;;
+           sh3eb) machine=sh-unknown ;;
+           sh5el) machine=sh5le-unknown ;;
+           *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+       esac
+       # The Operating System including object format, if it has switched
+       # to ELF recently, or will in the future.
+       case "${UNAME_MACHINE_ARCH}" in
+           arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+               eval $set_cc_for_build
+               if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+                       | grep -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
+       # The OS release
+       # Debian GNU/NetBSD machines have a different userland, and
+       # thus, need a distinct triplet. However, they do not need
+       # kernel version information, so it can be replaced with a
+       # suitable tag, in the style of linux-gnu.
+       case "${UNAME_VERSION}" in
+           Debian*)
+               release='-gnu'
+               ;;
+           *)
+               release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+               ;;
+       esac
+       # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+       # contains redundant information, the shorter form:
+       # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+       echo "${machine}-${os}${release}"
+       exit ;;
+    *:OpenBSD:*:*)
+       UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+       echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+       exit ;;
+    *:ekkoBSD:*:*)
+       echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+       exit ;;
+    *:SolidBSD:*:*)
+       echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+       exit ;;
+    macppc:MirBSD:*:*)
+       echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+       exit ;;
+    *:MirBSD:*:*)
+       echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+       exit ;;
+    alpha:OSF1:*:*)
+       case $UNAME_RELEASE in
+       *4.0)
+               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+               ;;
+       *5.*)
+               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+               ;;
+       esac
+       # According to Compaq, /usr/sbin/psrinfo has been available on
+       # OSF/1 and Tru64 systems produced since 1995.  I hope that
+       # covers most systems running today.  This code pipes the CPU
+       # types through head -n 1, so we only detect the type of CPU 0.
+       ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+       case "$ALPHA_CPU_TYPE" in
+           "EV4 (21064)")
+               UNAME_MACHINE="alpha" ;;
+           "EV4.5 (21064)")
+               UNAME_MACHINE="alpha" ;;
+           "LCA4 (21066/21068)")
+               UNAME_MACHINE="alpha" ;;
+           "EV5 (21164)")
+               UNAME_MACHINE="alphaev5" ;;
+           "EV5.6 (21164A)")
+               UNAME_MACHINE="alphaev56" ;;
+           "EV5.6 (21164PC)")
+               UNAME_MACHINE="alphapca56" ;;
+           "EV5.7 (21164PC)")
+               UNAME_MACHINE="alphapca57" ;;
+           "EV6 (21264)")
+               UNAME_MACHINE="alphaev6" ;;
+           "EV6.7 (21264A)")
+               UNAME_MACHINE="alphaev67" ;;
+           "EV6.8CB (21264C)")
+               UNAME_MACHINE="alphaev68" ;;
+           "EV6.8AL (21264B)")
+               UNAME_MACHINE="alphaev68" ;;
+           "EV6.8CX (21264D)")
+               UNAME_MACHINE="alphaev68" ;;
+           "EV6.9A (21264/EV69A)")
+               UNAME_MACHINE="alphaev69" ;;
+           "EV7 (21364)")
+               UNAME_MACHINE="alphaev7" ;;
+           "EV7.9 (21364A)")
+               UNAME_MACHINE="alphaev79" ;;
+       esac
+       # A Pn.n version is a patched version.
+       # A Vn.n version is a released version.
+       # A Tn.n version is a released field test version.
+       # A Xn.n version is an unreleased experimental baselevel.
+       # 1.2 uses "1.2" for uname -r.
+       echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+       # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+       exitcode=$?
+       trap '' 0
+       exit $exitcode ;;
+    Alpha\ *:Windows_NT*:*)
+       # How do we know it's Interix rather than the generic POSIX subsystem?
+       # Should we change UNAME_MACHINE based on the output of uname instead
+       # of the specific Alpha model?
+       echo alpha-pc-interix
+       exit ;;
+    21064:Windows_NT:50:3)
+       echo alpha-dec-winnt3.5
+       exit ;;
+    Amiga*:UNIX_System_V:4.0:*)
+       echo m68k-unknown-sysv4
+       exit ;;
+    *:[Aa]miga[Oo][Ss]:*:*)
+       echo ${UNAME_MACHINE}-unknown-amigaos
+       exit ;;
+    *:[Mm]orph[Oo][Ss]:*:*)
+       echo ${UNAME_MACHINE}-unknown-morphos
+       exit ;;
+    *:OS/390:*:*)
+       echo i370-ibm-openedition
+       exit ;;
+    *:z/VM:*:*)
+       echo s390-ibm-zvmoe
+       exit ;;
+    *:OS400:*:*)
+       echo powerpc-ibm-os400
+       exit ;;
+    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+       echo arm-acorn-riscix${UNAME_RELEASE}
+       exit ;;
+    arm:riscos:*:*|arm:RISCOS:*:*)
+       echo arm-unknown-riscos
+       exit ;;
+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+       echo hppa1.1-hitachi-hiuxmpp
+       exit ;;
+    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+       # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+       if test "`(/bin/universe) 2>/dev/null`" = att ; then
+               echo pyramid-pyramid-sysv3
+       else
+               echo pyramid-pyramid-bsd
+       fi
+       exit ;;
+    NILE*:*:*:dcosx)
+       echo pyramid-pyramid-svr4
+       exit ;;
+    DRS?6000:unix:4.0:6*)
+       echo sparc-icl-nx6
+       exit ;;
+    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+       case `/usr/bin/uname -p` in
+           sparc) echo sparc-icl-nx7; exit ;;
+       esac ;;
+    s390x:SunOS:*:*)
+       echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit ;;
+    sun4H:SunOS:5.*:*)
+       echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit ;;
+    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+       echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit ;;
+    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+       echo i386-pc-auroraux${UNAME_RELEASE}
+       exit ;;
+    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+       eval $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 [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+           if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+               (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+               grep IS_64BIT_ARCH >/dev/null
+           then
+               SUN_ARCH="x86_64"
+           fi
+       fi
+       echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit ;;
+    sun4*:SunOS:6*:*)
+       # According to config.sub, this is the proper way to canonicalize
+       # SunOS6.  Hard to guess exactly what SunOS6 will be like, but
+       # it's likely to be more like Solaris than SunOS4.
+       echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit ;;
+    sun4*:SunOS:*:*)
+       case "`/usr/bin/arch -k`" in
+           Series*|S4*)
+               UNAME_RELEASE=`uname -v`
+               ;;
+       esac
+       # Japanese Language versions have a version number like `4.1.3-JL'.
+       echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+       exit ;;
+    sun3*:SunOS:*:*)
+       echo m68k-sun-sunos${UNAME_RELEASE}
+       exit ;;
+    sun*:*:4.2BSD:*)
+       UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+       test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+       case "`/bin/arch`" in
+           sun3)
+               echo m68k-sun-sunos${UNAME_RELEASE}
+               ;;
+           sun4)
+               echo sparc-sun-sunos${UNAME_RELEASE}
+               ;;
+       esac
+       exit ;;
+    aushp:SunOS:*:*)
+       echo sparc-auspex-sunos${UNAME_RELEASE}
+       exit ;;
+    # The situation for MiNT is a little confusing.  The machine name
+    # can be virtually everything (everything which is not
+    # "atarist" or "atariste" at least should have a processor
+    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
+    # to the lowercase version "mint" (or "freemint").  Finally
+    # the system name "TOS" denotes a system which is actually not
+    # MiNT.  But MiNT is downward compatible to TOS, so this should
+    # be no problem.
+    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+       echo m68k-atari-mint${UNAME_RELEASE}
+       exit ;;
+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+       echo m68k-atari-mint${UNAME_RELEASE}
+       exit ;;
+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+       echo m68k-atari-mint${UNAME_RELEASE}
+       exit ;;
+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+       echo m68k-milan-mint${UNAME_RELEASE}
+       exit ;;
+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+       echo m68k-hades-mint${UNAME_RELEASE}
+       exit ;;
+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+       echo m68k-unknown-mint${UNAME_RELEASE}
+       exit ;;
+    m68k:machten:*:*)
+       echo m68k-apple-machten${UNAME_RELEASE}
+       exit ;;
+    powerpc:machten:*:*)
+       echo powerpc-apple-machten${UNAME_RELEASE}
+       exit ;;
+    RISC*:Mach:*:*)
+       echo mips-dec-mach_bsd4.3
+       exit ;;
+    RISC*:ULTRIX:*:*)
+       echo mips-dec-ultrix${UNAME_RELEASE}
+       exit ;;
+    VAX*:ULTRIX*:*:*)
+       echo vax-dec-ultrix${UNAME_RELEASE}
+       exit ;;
+    2020:CLIX:*:* | 2430:CLIX:*:*)
+       echo clipper-intergraph-clix${UNAME_RELEASE}
+       exit ;;
+    mips:*:*:UMIPS | mips:*:*:RISCos)
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+       int main (int argc, char *argv[]) {
+#else
+       int main (argc, argv) int argc; char *argv[]; {
+#endif
+       #if defined (host_mips) && defined (MIPSEB)
+       #if defined (SYSTYPE_SYSV)
+         printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+       #endif
+       #if defined (SYSTYPE_SVR4)
+         printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+       #endif
+       #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+         printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+       #endif
+       #endif
+         exit (-1);
+       }
+EOF
+       $CC_FOR_BUILD -o $dummy $dummy.c &&
+         dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+         SYSTEM_NAME=`$dummy $dummyarg` &&
+           { echo "$SYSTEM_NAME"; exit; }
+       echo mips-mips-riscos${UNAME_RELEASE}
+       exit ;;
+    Motorola:PowerMAX_OS:*:*)
+       echo powerpc-motorola-powermax
+       exit ;;
+    Motorola:*:4.3:PL8-*)
+       echo powerpc-harris-powermax
+       exit ;;
+    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+       echo powerpc-harris-powermax
+       exit ;;
+    Night_Hawk:Power_UNIX:*:*)
+       echo powerpc-harris-powerunix
+       exit ;;
+    m88k:CX/UX:7*:*)
+       echo m88k-harris-cxux7
+       exit ;;
+    m88k:*:4*:R4*)
+       echo m88k-motorola-sysv4
+       exit ;;
+    m88k:*:3*:R3*)
+       echo m88k-motorola-sysv3
+       exit ;;
+    AViiON:dgux:*:*)
+       # DG/UX returns AViiON for all architectures
+       UNAME_PROCESSOR=`/usr/bin/uname -p`
+       if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+       then
+           if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+              [ ${TARGET_BINARY_INTERFACE}x = x ]
+           then
+               echo m88k-dg-dgux${UNAME_RELEASE}
+           else
+               echo m88k-dg-dguxbcs${UNAME_RELEASE}
+           fi
+       else
+           echo i586-dg-dgux${UNAME_RELEASE}
+       fi
+       exit ;;
+    M88*:DolphinOS:*:*)        # DolphinOS (SVR3)
+       echo m88k-dolphin-sysv3
+       exit ;;
+    M88*:*:R3*:*)
+       # Delta 88k system running SVR3
+       echo m88k-motorola-sysv3
+       exit ;;
+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+       echo m88k-tektronix-sysv3
+       exit ;;
+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+       echo m68k-tektronix-bsd
+       exit ;;
+    *:IRIX*:*:*)
+       echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+       exit ;;
+    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+       echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
+       exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
+    i*86:AIX:*:*)
+       echo i386-ibm-aix
+       exit ;;
+    ia64:AIX:*:*)
+       if [ -x /usr/bin/oslevel ] ; then
+               IBM_REV=`/usr/bin/oslevel`
+       else
+               IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+       fi
+       echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+       exit ;;
+    *:AIX:2:3)
+       if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+               eval $set_cc_for_build
+               sed 's/^                //' << EOF >$dummy.c
+               #include <sys/systemcfg.h>
+
+               main()
+                       {
+                       if (!__power_pc())
+                               exit(1);
+                       puts("powerpc-ibm-aix3.2.5");
+                       exit(0);
+                       }
+EOF
+               if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+               then
+                       echo "$SYSTEM_NAME"
+               else
+                       echo rs6000-ibm-aix3.2.5
+               fi
+       elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+               echo rs6000-ibm-aix3.2.4
+       else
+               echo rs6000-ibm-aix3.2
+       fi
+       exit ;;
+    *:AIX:*:[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 [ -x /usr/bin/oslevel ] ; then
+               IBM_REV=`/usr/bin/oslevel`
+       else
+               IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+       fi
+       echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+       exit ;;
+    *:AIX:*:*)
+       echo rs6000-ibm-aix
+       exit ;;
+    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+       echo romp-ibm-bsd4.4
+       exit ;;
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
+       echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+       exit ;;                             # report: romp-ibm BSD 4.3
+    *:BOSX:*:*)
+       echo rs6000-bull-bosx
+       exit ;;
+    DPX/2?00:B.O.S.:*:*)
+       echo m68k-bull-sysv3
+       exit ;;
+    9000/[34]??:4.3bsd:1.*:*)
+       echo m68k-hp-bsd
+       exit ;;
+    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+       echo m68k-hp-bsd4.4
+       exit ;;
+    9000/[34678]??:HP-UX:*:*)
+       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+       case "${UNAME_MACHINE}" in
+           9000/31? )            HP_ARCH=m68000 ;;
+           9000/[34]?? )         HP_ARCH=m68k ;;
+           9000/[678][0-9][0-9])
+               if [ -x /usr/bin/getconf ]; then
+                   sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+                   sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+                   case "${sc_cpu_version}" in
+                     523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+                     528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+                     532)                      # CPU_PA_RISC2_0
+                       case "${sc_kernel_bits}" in
+                         32) HP_ARCH="hppa2.0n" ;;
+                         64) HP_ARCH="hppa2.0w" ;;
+                         '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
+                       esac ;;
+                   esac
+               fi
+               if [ "${HP_ARCH}" = "" ]; then
+                   eval $set_cc_for_build
+                   sed 's/^            //' << EOF >$dummy.c
+
+               #define _HPUX_SOURCE
+               #include <stdlib.h>
+               #include <unistd.h>
+
+               int main ()
+               {
+               #if defined(_SC_KERNEL_BITS)
+                   long bits = sysconf(_SC_KERNEL_BITS);
+               #endif
+                   long cpu  = sysconf (_SC_CPU_VERSION);
+
+                   switch (cpu)
+                       {
+                       case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+                       case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+                       case CPU_PA_RISC2_0:
+               #if defined(_SC_KERNEL_BITS)
+                           switch (bits)
+                               {
+                               case 64: puts ("hppa2.0w"); break;
+                               case 32: puts ("hppa2.0n"); break;
+                               default: puts ("hppa2.0"); break;
+                               } break;
+               #else  /* !defined(_SC_KERNEL_BITS) */
+                           puts ("hppa2.0"); break;
+               #endif
+                       default: puts ("hppa1.0"); break;
+                       }
+                   exit (0);
+               }
+EOF
+                   (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+                   test -z "$HP_ARCH" && HP_ARCH=hppa
+               fi ;;
+       esac
+       if [ ${HP_ARCH} = "hppa2.0w" ]
+       then
+           eval $set_cc_for_build
+
+           # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+           # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
+           # generating 64-bit code.  GNU and HP use different nomenclature:
+           #
+           # $ CC_FOR_BUILD=cc ./config.guess
+           # => hppa2.0w-hp-hpux11.23
+           # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+           # => hppa64-hp-hpux11.23
+
+           if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+               grep -q __LP64__
+           then
+               HP_ARCH="hppa2.0w"
+           else
+               HP_ARCH="hppa64"
+           fi
+       fi
+       echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+       exit ;;
+    ia64:HP-UX:*:*)
+       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+       echo ia64-hp-hpux${HPUX_REV}
+       exit ;;
+    3050*:HI-UX:*:*)
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #include <unistd.h>
+       int
+       main ()
+       {
+         long cpu = sysconf (_SC_CPU_VERSION);
+         /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+            true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
+            results, however.  */
+         if (CPU_IS_PA_RISC (cpu))
+           {
+             switch (cpu)
+               {
+                 case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+                 case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+                 case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+                 default: puts ("hppa-hitachi-hiuxwe2"); break;
+               }
+           }
+         else if (CPU_IS_HP_MC68K (cpu))
+           puts ("m68k-hitachi-hiuxwe2");
+         else puts ("unknown-hitachi-hiuxwe2");
+         exit (0);
+       }
+EOF
+       $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+               { echo "$SYSTEM_NAME"; exit; }
+       echo unknown-hitachi-hiuxwe2
+       exit ;;
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+       echo hppa1.1-hp-bsd
+       exit ;;
+    9000/8??:4.3bsd:*:*)
+       echo hppa1.0-hp-bsd
+       exit ;;
+    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+       echo hppa1.0-hp-mpeix
+       exit ;;
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+       echo hppa1.1-hp-osf
+       exit ;;
+    hp8??:OSF1:*:*)
+       echo hppa1.0-hp-osf
+       exit ;;
+    i*86:OSF1:*:*)
+       if [ -x /usr/sbin/sysversion ] ; then
+           echo ${UNAME_MACHINE}-unknown-osf1mk
+       else
+           echo ${UNAME_MACHINE}-unknown-osf1
+       fi
+       exit ;;
+    parisc*:Lites*:*:*)
+       echo hppa1.1-hp-lites
+       exit ;;
+    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+       echo c1-convex-bsd
+       exit ;;
+    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+       if getsysinfo -f scalar_acc
+       then echo c32-convex-bsd
+       else echo c2-convex-bsd
+       fi
+       exit ;;
+    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+       echo c34-convex-bsd
+       exit ;;
+    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+       echo c38-convex-bsd
+       exit ;;
+    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+       echo c4-convex-bsd
+       exit ;;
+    CRAY*Y-MP:*:*:*)
+       echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit ;;
+    CRAY*[A-Z]90:*:*:*)
+       echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+       | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+             -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+             -e 's/\.[^.]*$/.X/'
+       exit ;;
+    CRAY*TS:*:*:*)
+       echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit ;;
+    CRAY*T3E:*:*:*)
+       echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit ;;
+    CRAY*SV1:*:*:*)
+       echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit ;;
+    *:UNICOS/mp:*:*)
+       echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit ;;
+    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+       FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+       FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+       FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+       echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+       exit ;;
+    5000:UNIX_System_V:4.*:*)
+       FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+       FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+       echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+       exit ;;
+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+       echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+       exit ;;
+    sparc*:BSD/OS:*:*)
+       echo sparc-unknown-bsdi${UNAME_RELEASE}
+       exit ;;
+    *:BSD/OS:*:*)
+       echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+       exit ;;
+    *:FreeBSD:*:*)
+       case ${UNAME_MACHINE} in
+           pc98)
+               echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+           amd64)
+               echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+           *)
+               echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+       esac
+       exit ;;
+    i*:CYGWIN*:*)
+       echo ${UNAME_MACHINE}-pc-cygwin
+       exit ;;
+    *:MINGW*:*)
+       echo ${UNAME_MACHINE}-pc-mingw32
+       exit ;;
+    i*:windows32*:*)
+       # uname -m includes "-pc" on this system.
+       echo ${UNAME_MACHINE}-mingw32
+       exit ;;
+    i*:PW*:*)
+       echo ${UNAME_MACHINE}-pc-pw32
+       exit ;;
+    *:Interix*:*)
+       case ${UNAME_MACHINE} in
+           x86)
+               echo i586-pc-interix${UNAME_RELEASE}
+               exit ;;
+           authenticamd | genuineintel | EM64T)
+               echo x86_64-unknown-interix${UNAME_RELEASE}
+               exit ;;
+           IA64)
+               echo ia64-unknown-interix${UNAME_RELEASE}
+               exit ;;
+       esac ;;
+    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+       echo i${UNAME_MACHINE}-pc-mks
+       exit ;;
+    8664:Windows_NT:*)
+       echo x86_64-pc-mks
+       exit ;;
+    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+       # How do we know it's Interix rather than the generic POSIX subsystem?
+       # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+       # UNAME_MACHINE based on the output of uname instead of i386?
+       echo i586-pc-interix
+       exit ;;
+    i*:UWIN*:*)
+       echo ${UNAME_MACHINE}-pc-uwin
+       exit ;;
+    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+       echo x86_64-unknown-cygwin
+       exit ;;
+    p*:CYGWIN*:*)
+       echo powerpcle-unknown-cygwin
+       exit ;;
+    prep*:SunOS:5.*:*)
+       echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit ;;
+    *:GNU:*:*)
+       # the GNU system
+       echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+       exit ;;
+    *:GNU/*:*:*)
+       # other systems with GNU libc and userland
+       echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+       exit ;;
+    i*86:Minix:*:*)
+       echo ${UNAME_MACHINE}-pc-minix
+       exit ;;
+    alpha:Linux:*:*)
+       case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+         EV5)   UNAME_MACHINE=alphaev5 ;;
+         EV56)  UNAME_MACHINE=alphaev56 ;;
+         PCA56) UNAME_MACHINE=alphapca56 ;;
+         PCA57) UNAME_MACHINE=alphapca56 ;;
+         EV6)   UNAME_MACHINE=alphaev6 ;;
+         EV67)  UNAME_MACHINE=alphaev67 ;;
+         EV68*) UNAME_MACHINE=alphaev68 ;;
+       esac
+       objdump --private-headers /bin/sh | grep -q ld.so.1
+       if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+       echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+       exit ;;
+    arm*:Linux:*:*)
+       eval $set_cc_for_build
+       if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+           | grep -q __ARM_EABI__
+       then
+           echo ${UNAME_MACHINE}-unknown-linux-gnu
+       else
+           if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+               | grep -q __ARM_PCS_VFP
+           then
+               echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+           else
+               echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
+           fi
+       fi
+       exit ;;
+    avr32*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    cris:Linux:*:*)
+       echo cris-axis-linux-gnu
+       exit ;;
+    crisv32:Linux:*:*)
+       echo crisv32-axis-linux-gnu
+       exit ;;
+    frv:Linux:*:*)
+       echo frv-unknown-linux-gnu
+       exit ;;
+    i*86:Linux:*:*)
+       LIBC=gnu
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #ifdef __dietlibc__
+       LIBC=dietlibc
+       #endif
+EOF
+       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+       echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+       exit ;;
+    ia64:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    m32r*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    m68*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    mips:Linux:*:* | mips64:Linux:*:*)
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #undef CPU
+       #undef ${UNAME_MACHINE}
+       #undef ${UNAME_MACHINE}el
+       #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+       CPU=${UNAME_MACHINE}el
+       #else
+       #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+       CPU=${UNAME_MACHINE}
+       #else
+       CPU=
+       #endif
+       #endif
+EOF
+       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
+       test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+       ;;
+    or32:Linux:*:*)
+       echo or32-unknown-linux-gnu
+       exit ;;
+    padre:Linux:*:*)
+       echo sparc-unknown-linux-gnu
+       exit ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+       echo hppa64-unknown-linux-gnu
+       exit ;;
+    parisc:Linux:*:* | hppa:Linux:*:*)
+       # Look for CPU level
+       case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+         PA7*) echo hppa1.1-unknown-linux-gnu ;;
+         PA8*) echo hppa2.0-unknown-linux-gnu ;;
+         *)    echo hppa-unknown-linux-gnu ;;
+       esac
+       exit ;;
+    ppc64:Linux:*:*)
+       echo powerpc64-unknown-linux-gnu
+       exit ;;
+    ppc:Linux:*:*)
+       echo powerpc-unknown-linux-gnu
+       exit ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+       echo ${UNAME_MACHINE}-ibm-linux
+       exit ;;
+    sh64*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    sh*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    tile*:Linux:*:*)
+       echo ${UNAME_MACHINE}-tilera-linux-gnu
+       exit ;;
+    vax:Linux:*:*)
+       echo ${UNAME_MACHINE}-dec-linux-gnu
+       exit ;;
+    x86_64:Linux:*:*)
+       echo x86_64-unknown-linux-gnu
+       exit ;;
+    xtensa*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    i*86:DYNIX/ptx:4*:*)
+       # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+       # earlier versions are messed up and put the nodename in both
+       # sysname and nodename.
+       echo i386-sequent-sysv4
+       exit ;;
+    i*86:UNIX_SV:4.2MP:2.*)
+       # Unixware is an offshoot of SVR4, but it has its own version
+       # number series starting with 2...
+       # I am not positive that other SVR4 systems won't match this,
+       # I just have to hope.  -- rms.
+       # Use sysv4.2uw... so that sysv4* matches it.
+       echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+       exit ;;
+    i*86:OS/2:*:*)
+       # If we were able to find `uname', then EMX Unix compatibility
+       # is probably installed.
+       echo ${UNAME_MACHINE}-pc-os2-emx
+       exit ;;
+    i*86:XTS-300:*:STOP)
+       echo ${UNAME_MACHINE}-unknown-stop
+       exit ;;
+    i*86:atheos:*:*)
+       echo ${UNAME_MACHINE}-unknown-atheos
+       exit ;;
+    i*86:syllable:*:*)
+       echo ${UNAME_MACHINE}-pc-syllable
+       exit ;;
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
+       echo i386-unknown-lynxos${UNAME_RELEASE}
+       exit ;;
+    i*86:*DOS:*:*)
+       echo ${UNAME_MACHINE}-pc-msdosdjgpp
+       exit ;;
+    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+       UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+       if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+               echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+       else
+               echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+       fi
+       exit ;;
+    i*86:*:5:[678]*)
+       # UnixWare 7.x, OpenUNIX and OpenServer 6.
+       case `/bin/uname -X | grep "^Machine"` in
+           *486*)           UNAME_MACHINE=i486 ;;
+           *Pentium)        UNAME_MACHINE=i586 ;;
+           *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+       esac
+       echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+       exit ;;
+    i*86:*:3.2:*)
+       if test -f /usr/options/cb.name; then
+               UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+               echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+       elif /bin/uname -X 2>/dev/null >/dev/null ; then
+               UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+               (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+               (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+                       && UNAME_MACHINE=i586
+               (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+                       && UNAME_MACHINE=i686
+               (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+                       && UNAME_MACHINE=i686
+               echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+       else
+               echo ${UNAME_MACHINE}-pc-sysv32
+       fi
+       exit ;;
+    pc:*:*:*)
+       # Left here for compatibility:
+       # uname -m prints for DJGPP always 'pc', but it prints nothing about
+       # the processor, so we play safe by assuming i586.
+       # Note: whatever this is, it MUST be the same as what config.sub
+       # prints for the "djgpp" host, or else GDB configury will decide that
+       # this is a cross-build.
+       echo i586-pc-msdosdjgpp
+       exit ;;
+    Intel:Mach:3*:*)
+       echo i386-pc-mach3
+       exit ;;
+    paragon:*:*:*)
+       echo i860-intel-osf1
+       exit ;;
+    i860:*:4.*:*) # i860-SVR4
+       if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+         echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+       else # Add other i860-SVR4 vendors below as they are discovered.
+         echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
+       fi
+       exit ;;
+    mini*:CTIX:SYS*5:*)
+       # "miniframe"
+       echo m68010-convergent-sysv
+       exit ;;
+    mc68k:UNIX:SYSTEM5:3.51m)
+       echo m68k-convergent-sysv
+       exit ;;
+    M680?0:D-NIX:5.3:*)
+       echo m68k-diab-dnix
+       exit ;;
+    M68*:*:R3V[5678]*:*)
+       test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+       OS_REL=''
+       test -r /etc/.relid \
+       && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+         && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+         && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+         && { echo i486-ncr-sysv4; exit; } ;;
+    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*:*)
+       echo m68k-unknown-lynxos${UNAME_RELEASE}
+       exit ;;
+    mc68030:UNIX_System_V:4.*:*)
+       echo m68k-atari-sysv4
+       exit ;;
+    TSUNAMI:LynxOS:2.*:*)
+       echo sparc-unknown-lynxos${UNAME_RELEASE}
+       exit ;;
+    rs6000:LynxOS:2.*:*)
+       echo rs6000-unknown-lynxos${UNAME_RELEASE}
+       exit ;;
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
+       echo powerpc-unknown-lynxos${UNAME_RELEASE}
+       exit ;;
+    SM[BE]S:UNIX_SV:*:*)
+       echo mips-dde-sysv${UNAME_RELEASE}
+       exit ;;
+    RM*:ReliantUNIX-*:*:*)
+       echo mips-sni-sysv4
+       exit ;;
+    RM*:SINIX-*:*:*)
+       echo mips-sni-sysv4
+       exit ;;
+    *:SINIX-*:*:*)
+       if uname -p 2>/dev/null >/dev/null ; then
+               UNAME_MACHINE=`(uname -p) 2>/dev/null`
+               echo ${UNAME_MACHINE}-sni-sysv4
+       else
+               echo ns32k-sni-sysv
+       fi
+       exit ;;
+    PENTIUM:*:4.0*:*)  # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+                       # says <Richard.M.Bartel@ccMail.Census.GOV>
+       echo i586-unisys-sysv4
+       exit ;;
+    *:UNIX_System_V:4*:FTX*)
+       # From Gerald Hewes <hewes@openmarket.com>.
+       # How about differentiating between stratus architectures? -djm
+       echo hppa1.1-stratus-sysv4
+       exit ;;
+    *:*:*:FTX*)
+       # From seanf@swdc.stratus.com.
+       echo i860-stratus-sysv4
+       exit ;;
+    i*86:VOS:*:*)
+       # From Paul.Green@stratus.com.
+       echo ${UNAME_MACHINE}-stratus-vos
+       exit ;;
+    *:VOS:*:*)
+       # From Paul.Green@stratus.com.
+       echo hppa1.1-stratus-vos
+       exit ;;
+    mc68*:A/UX:*:*)
+       echo m68k-apple-aux${UNAME_RELEASE}
+       exit ;;
+    news*:NEWS-OS:6*:*)
+       echo mips-sony-newsos6
+       exit ;;
+    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+       if [ -d /usr/nec ]; then
+               echo mips-nec-sysv${UNAME_RELEASE}
+       else
+               echo mips-unknown-sysv${UNAME_RELEASE}
+       fi
+       exit ;;
+    BeBox:BeOS:*:*)    # BeOS running on hardware made by Be, PPC only.
+       echo powerpc-be-beos
+       exit ;;
+    BeMac:BeOS:*:*)    # BeOS running on Mac or Mac clone, PPC only.
+       echo powerpc-apple-beos
+       exit ;;
+    BePC:BeOS:*:*)     # BeOS running on Intel PC compatible.
+       echo i586-pc-beos
+       exit ;;
+    BePC:Haiku:*:*)    # Haiku running on Intel PC compatible.
+       echo i586-pc-haiku
+       exit ;;
+    SX-4:SUPER-UX:*:*)
+       echo sx4-nec-superux${UNAME_RELEASE}
+       exit ;;
+    SX-5:SUPER-UX:*:*)
+       echo sx5-nec-superux${UNAME_RELEASE}
+       exit ;;
+    SX-6:SUPER-UX:*:*)
+       echo sx6-nec-superux${UNAME_RELEASE}
+       exit ;;
+    SX-7:SUPER-UX:*:*)
+       echo sx7-nec-superux${UNAME_RELEASE}
+       exit ;;
+    SX-8:SUPER-UX:*:*)
+       echo sx8-nec-superux${UNAME_RELEASE}
+       exit ;;
+    SX-8R:SUPER-UX:*:*)
+       echo sx8r-nec-superux${UNAME_RELEASE}
+       exit ;;
+    Power*:Rhapsody:*:*)
+       echo powerpc-apple-rhapsody${UNAME_RELEASE}
+       exit ;;
+    *:Rhapsody:*:*)
+       echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+       exit ;;
+    *:Darwin:*:*)
+       UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+       case $UNAME_PROCESSOR in
+           i386)
+               eval $set_cc_for_build
+               if [ "$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
+                     UNAME_PROCESSOR="x86_64"
+                 fi
+               fi ;;
+           unknown) UNAME_PROCESSOR=powerpc ;;
+       esac
+       echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+       exit ;;
+    *:procnto*:*:* | *:QNX:[0123456789]*:*)
+       UNAME_PROCESSOR=`uname -p`
+       if test "$UNAME_PROCESSOR" = "x86"; then
+               UNAME_PROCESSOR=i386
+               UNAME_MACHINE=pc
+       fi
+       echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+       exit ;;
+    *:QNX:*:4*)
+       echo i386-pc-qnx
+       exit ;;
+    NEO-?:NONSTOP_KERNEL:*:*)
+       echo neo-tandem-nsk${UNAME_RELEASE}
+       exit ;;
+    NSE-?:NONSTOP_KERNEL:*:*)
+       echo nse-tandem-nsk${UNAME_RELEASE}
+       exit ;;
+    NSR-?:NONSTOP_KERNEL:*:*)
+       echo nsr-tandem-nsk${UNAME_RELEASE}
+       exit ;;
+    *:NonStop-UX:*:*)
+       echo mips-compaq-nonstopux
+       exit ;;
+    BS2000:POSIX*:*:*)
+       echo bs2000-siemens-sysv
+       exit ;;
+    DS/*:UNIX_System_V:*:*)
+       echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+       exit ;;
+    *:Plan9:*:*)
+       # "uname -m" is not consistent, so use $cputype instead. 386
+       # is converted to i386 for consistency with other x86
+       # operating systems.
+       if test "$cputype" = "386"; then
+           UNAME_MACHINE=i386
+       else
+           UNAME_MACHINE="$cputype"
+       fi
+       echo ${UNAME_MACHINE}-unknown-plan9
+       exit ;;
+    *:TOPS-10:*:*)
+       echo pdp10-unknown-tops10
+       exit ;;
+    *:TENEX:*:*)
+       echo pdp10-unknown-tenex
+       exit ;;
+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+       echo pdp10-dec-tops20
+       exit ;;
+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+       echo pdp10-xkl-tops20
+       exit ;;
+    *:TOPS-20:*:*)
+       echo pdp10-unknown-tops20
+       exit ;;
+    *:ITS:*:*)
+       echo pdp10-unknown-its
+       exit ;;
+    SEI:*:*:SEIUX)
+       echo mips-sei-seiux${UNAME_RELEASE}
+       exit ;;
+    *:DragonFly:*:*)
+       echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+       exit ;;
+    *:*VMS:*:*)
+       UNAME_MACHINE=`(uname -p) 2>/dev/null`
+       case "${UNAME_MACHINE}" in
+           A*) echo alpha-dec-vms ; exit ;;
+           I*) echo ia64-dec-vms ; exit ;;
+           V*) echo vax-dec-vms ; exit ;;
+       esac ;;
+    *:XENIX:*:SysV)
+       echo i386-pc-xenix
+       exit ;;
+    i*86:skyos:*:*)
+       echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+       exit ;;
+    i*86:rdos:*:*)
+       echo ${UNAME_MACHINE}-pc-rdos
+       exit ;;
+    i*86:AROS:*:*)
+       echo ${UNAME_MACHINE}-pc-aros
+       exit ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
+     I don't know....  */
+  printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+  printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+       "4"
+#else
+       ""
+#endif
+       ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+  printf ("arm-acorn-riscix\n"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+  printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+  int version;
+  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+  if (version < 4)
+    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+  else
+    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+  exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+  printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+  printf ("ns32k-encore-mach\n"); exit (0);
+#else
+  printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+  printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+  printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+  printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+    struct utsname un;
+
+    uname(&un);
+
+    if (strncmp(un.version, "V2", 2) == 0) {
+       printf ("i386-sequent-ptx2\n"); exit (0);
+    }
+    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+       printf ("i386-sequent-ptx1\n"); exit (0);
+    }
+    printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+#  include <sys/param.h>
+#  if defined (BSD)
+#   if BSD == 43
+      printf ("vax-dec-bsd4.3\n"); exit (0);
+#   else
+#    if BSD == 199006
+      printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#    else
+      printf ("vax-dec-bsd\n"); exit (0);
+#    endif
+#   endif
+#  else
+    printf ("vax-dec-bsd\n"); exit (0);
+#  endif
+# else
+    printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+  printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+  exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+       { echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+    case `getsysinfo -f cpu_type` in
+    c1*)
+       echo c1-convex-bsd
+       exit ;;
+    c2*)
+       if getsysinfo -f scalar_acc
+       then echo c32-convex-bsd
+       else echo c2-convex-bsd
+       fi
+       exit ;;
+    c34*)
+       echo c34-convex-bsd
+       exit ;;
+    c38*)
+       echo c38-convex-bsd
+       exit ;;
+    c4*)
+       echo c4-convex-bsd
+       exit ;;
+    esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+and
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo               = `(hostinfo) 2>/dev/null`
+/bin/universe          = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch              = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM  = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/build-aux/config.rpath b/build-aux/config.rpath
new file mode 100755 (executable)
index 0000000..8bd7f5d
--- /dev/null
@@ -0,0 +1,690 @@
+#! /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-2011 Free Software Foundation, Inc.
+#   Taken from GNU libtool, 2001
+#   Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 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.2*)
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      ;;
+    freebsd2*)
+      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* | dragonfly*)
+    case "$host_os" in
+      freebsd[123]*)
+        library_names_spec='$libname$shrext$versuffix' ;;
+      *)
+        library_names_spec='$libname$shrext' ;;
+    esac
+    ;;
+  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=/' <<EOF
+
+# How to pass a linker flag through the compiler.
+wl="$escaped_wl"
+
+# Static library suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally "so").
+shlibext="$shlibext"
+
+# Format of library name prefix.
+libname_spec="$escaped_libname_spec"
+
+# Library names that the linker finds when passed -lNAME.
+library_names_spec="$escaped_library_names_spec"
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator="$hardcode_libdir_separator"
+
+# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct="$hardcode_direct"
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L="$hardcode_minus_L"
+
+EOF
diff --git a/build-aux/config.sub b/build-aux/config.sub
new file mode 100755 (executable)
index 0000000..30fdca8
--- /dev/null
@@ -0,0 +1,1760 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+#   2011 Free Software Foundation, Inc.
+
+timestamp='2011-03-23'
+
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine.  It does not imply ALL GNU software can.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Please send patches to <config-patches@gnu.org>.  Submit a context
+# diff and a properly formatted GNU ChangeLog entry.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support.  The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+#      CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+#      CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+       $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free
+Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )        # Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help"
+       exit 1 ;;
+
+    *local*)
+       # First pass through any local machine types.
+       echo $1
+       exit ;;
+
+    * )
+       break ;;
+  esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+    exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+    exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
+  linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+  knetbsd*-gnu* | netbsd*-gnu* | \
+  kopensolaris*-gnu* | \
+  storm-chaos* | os2-emx* | rtmk-nova*)
+    os=-$maybe_os
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+    ;;
+  *)
+    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+    if [ $basic_machine != $1 ]
+    then os=`echo $1 | sed 's/.*-/-/'`
+    else os=; fi
+    ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work.  We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+       -sun*os*)
+               # Prevent following clause from handling this invalid input.
+               ;;
+       -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+       -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+       -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+       -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+       -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+       -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+       -apple | -axis | -knuth | -cray | -microblaze)
+               os=
+               basic_machine=$1
+               ;;
+       -bluegene*)
+               os=-cnk
+               ;;
+       -sim | -cisco | -oki | -wec | -winbond)
+               os=
+               basic_machine=$1
+               ;;
+       -scout)
+               ;;
+       -wrs)
+               os=-vxworks
+               basic_machine=$1
+               ;;
+       -chorusos*)
+               os=-chorusos
+               basic_machine=$1
+               ;;
+       -chorusrdb)
+               os=-chorusrdb
+               basic_machine=$1
+               ;;
+       -hiux*)
+               os=-hiuxwe2
+               ;;
+       -sco6)
+               os=-sco5v6
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco5)
+               os=-sco3.2v5
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco4)
+               os=-sco3.2v4
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco3.2.[4-9]*)
+               os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco3.2v[4-9]*)
+               # Don't forget version if it is 3.2v4 or newer.
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco5v6*)
+               # Don't forget version if it is 3.2v4 or newer.
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco*)
+               os=-sco3.2v2
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -udk*)
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -isc)
+               os=-isc2.2
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -clix*)
+               basic_machine=clipper-intergraph
+               ;;
+       -isc*)
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -lynx*)
+               os=-lynxos
+               ;;
+       -ptx*)
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+               ;;
+       -windowsnt*)
+               os=`echo $os | sed -e 's/windowsnt/winnt/'`
+               ;;
+       -psos*)
+               os=-psos
+               ;;
+       -mint | -mint[0-9]*)
+               basic_machine=m68k-atari
+               os=-mint
+               ;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+       # Recognize the basic CPU types without company name.
+       # Some are omitted here because they have special meanings below.
+       1750a | 580 \
+       | a29k \
+       | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+       | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+       | am33_2.0 \
+       | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+       | bfin \
+       | c4x | clipper \
+       | d10v | d30v | dlx | dsp16xx \
+       | fido | fr30 | frv \
+       | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+       | i370 | i860 | i960 | ia64 \
+       | ip2k | iq2000 \
+       | lm32 \
+       | m32c | m32r | m32rle | m68000 | m68k | m88k \
+       | maxq | mb | microblaze | mcore | mep | metag \
+       | mips | mipsbe | mipseb | mipsel | mipsle \
+       | mips16 \
+       | mips64 | mips64el \
+       | mips64octeon | mips64octeonel \
+       | mips64orion | mips64orionel \
+       | mips64r5900 | mips64r5900el \
+       | mips64vr | mips64vrel \
+       | mips64vr4100 | mips64vr4100el \
+       | mips64vr4300 | mips64vr4300el \
+       | mips64vr5000 | mips64vr5000el \
+       | mips64vr5900 | mips64vr5900el \
+       | mipsisa32 | mipsisa32el \
+       | mipsisa32r2 | mipsisa32r2el \
+       | mipsisa64 | mipsisa64el \
+       | mipsisa64r2 | mipsisa64r2el \
+       | mipsisa64sb1 | mipsisa64sb1el \
+       | mipsisa64sr71k | mipsisa64sr71kel \
+       | mipstx39 | mipstx39el \
+       | mn10200 | mn10300 \
+       | moxie \
+       | mt \
+       | msp430 \
+       | nds32 | nds32le | nds32be \
+       | nios | nios2 \
+       | ns16k | ns32k \
+       | open8 \
+       | or32 \
+       | pdp10 | pdp11 | pj | pjl \
+       | powerpc | powerpc64 | powerpc64le | powerpcle \
+       | pyramid \
+       | rx \
+       | score \
+       | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+       | sh64 | sh64le \
+       | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+       | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+       | spu \
+       | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
+       | ubicom32 \
+       | v850 | v850e \
+       | we32k \
+       | x86 | xc16x | xstormy16 | xtensa \
+       | z8k | z80)
+               basic_machine=$basic_machine-unknown
+               ;;
+       c54x)
+               basic_machine=tic54x-unknown
+               ;;
+       c55x)
+               basic_machine=tic55x-unknown
+               ;;
+       c6x)
+               basic_machine=tic6x-unknown
+               ;;
+       m6811 | m68hc11 | m6812 | m68hc12 | picochip)
+               # Motorola 68HC11/12.
+               basic_machine=$basic_machine-unknown
+               os=-none
+               ;;
+       m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+               ;;
+       ms1)
+               basic_machine=mt-unknown
+               ;;
+
+       strongarm | thumb | xscale)
+               basic_machine=arm-unknown
+               ;;
+
+       xscaleeb)
+               basic_machine=armeb-unknown
+               ;;
+
+       xscaleel)
+               basic_machine=armel-unknown
+               ;;
+
+       # We use `pc' rather than `unknown'
+       # because (1) that's what they normally are, and
+       # (2) the word "unknown" tends to confuse beginning users.
+       i*86 | x86_64)
+         basic_machine=$basic_machine-pc
+         ;;
+       # Object if more than one company name word.
+       *-*-*)
+               echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+               exit 1
+               ;;
+       # Recognize the basic CPU types with company name.
+       580-* \
+       | a29k-* \
+       | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+       | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+       | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+       | arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
+       | avr-* | avr32-* \
+       | bfin-* | bs2000-* \
+       | c[123]* | c30-* | [cjt]90-* | c4x-* \
+       | clipper-* | craynv-* | cydra-* \
+       | d10v-* | d30v-* | dlx-* \
+       | elxsi-* \
+       | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
+       | h8300-* | h8500-* \
+       | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+       | i*86-* | i860-* | i960-* | ia64-* \
+       | ip2k-* | iq2000-* \
+       | lm32-* \
+       | m32c-* | m32r-* | m32rle-* \
+       | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+       | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
+       | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+       | mips16-* \
+       | mips64-* | mips64el-* \
+       | mips64octeon-* | mips64octeonel-* \
+       | mips64orion-* | mips64orionel-* \
+       | mips64r5900-* | mips64r5900el-* \
+       | mips64vr-* | mips64vrel-* \
+       | mips64vr4100-* | mips64vr4100el-* \
+       | mips64vr4300-* | mips64vr4300el-* \
+       | mips64vr5000-* | mips64vr5000el-* \
+       | mips64vr5900-* | mips64vr5900el-* \
+       | mipsisa32-* | mipsisa32el-* \
+       | mipsisa32r2-* | mipsisa32r2el-* \
+       | mipsisa64-* | mipsisa64el-* \
+       | mipsisa64r2-* | mipsisa64r2el-* \
+       | mipsisa64sb1-* | mipsisa64sb1el-* \
+       | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+       | mipstx39-* | mipstx39el-* \
+       | mmix-* \
+       | mt-* \
+       | msp430-* \
+       | nds32-* | nds32le-* | nds32be-* \
+       | nios-* | nios2-* \
+       | none-* | np1-* | ns16k-* | ns32k-* \
+       | open8-* \
+       | orion-* \
+       | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+       | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
+       | pyramid-* \
+       | romp-* | rs6000-* | rx-* \
+       | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+       | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+       | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+       | sparclite-* \
+       | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
+       | tahoe-* \
+       | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+       | tile-* | tilegx-* \
+       | tron-* \
+       | ubicom32-* \
+       | v850-* | v850e-* | vax-* \
+       | we32k-* \
+       | x86-* | x86_64-* | xc16x-* | xps100-* \
+       | xstormy16-* | xtensa*-* \
+       | ymp-* \
+       | z8k-* | z80-*)
+               ;;
+       # Recognize the basic CPU types without company name, with glob match.
+       xtensa*)
+               basic_machine=$basic_machine-unknown
+               ;;
+       # Recognize the various machine names and aliases which stand
+       # for a CPU type and a company and sometimes even an OS.
+       386bsd)
+               basic_machine=i386-unknown
+               os=-bsd
+               ;;
+       3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+               basic_machine=m68000-att
+               ;;
+       3b*)
+               basic_machine=we32k-att
+               ;;
+       a29khif)
+               basic_machine=a29k-amd
+               os=-udi
+               ;;
+       abacus)
+               basic_machine=abacus-unknown
+               ;;
+       adobe68k)
+               basic_machine=m68010-adobe
+               os=-scout
+               ;;
+       alliant | fx80)
+               basic_machine=fx80-alliant
+               ;;
+       altos | altos3068)
+               basic_machine=m68k-altos
+               ;;
+       am29k)
+               basic_machine=a29k-none
+               os=-bsd
+               ;;
+       amd64)
+               basic_machine=x86_64-pc
+               ;;
+       amd64-*)
+               basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       amdahl)
+               basic_machine=580-amdahl
+               os=-sysv
+               ;;
+       amiga | amiga-*)
+               basic_machine=m68k-unknown
+               ;;
+       amigaos | amigados)
+               basic_machine=m68k-unknown
+               os=-amigaos
+               ;;
+       amigaunix | amix)
+               basic_machine=m68k-unknown
+               os=-sysv4
+               ;;
+       apollo68)
+               basic_machine=m68k-apollo
+               os=-sysv
+               ;;
+       apollo68bsd)
+               basic_machine=m68k-apollo
+               os=-bsd
+               ;;
+       aros)
+               basic_machine=i386-pc
+               os=-aros
+               ;;
+       aux)
+               basic_machine=m68k-apple
+               os=-aux
+               ;;
+       balance)
+               basic_machine=ns32k-sequent
+               os=-dynix
+               ;;
+       blackfin)
+               basic_machine=bfin-unknown
+               os=-linux
+               ;;
+       blackfin-*)
+               basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+               os=-linux
+               ;;
+       bluegene*)
+               basic_machine=powerpc-ibm
+               os=-cnk
+               ;;
+       c54x-*)
+               basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       c55x-*)
+               basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       c6x-*)
+               basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       c90)
+               basic_machine=c90-cray
+               os=-unicos
+               ;;
+       cegcc)
+               basic_machine=arm-unknown
+               os=-cegcc
+               ;;
+       convex-c1)
+               basic_machine=c1-convex
+               os=-bsd
+               ;;
+       convex-c2)
+               basic_machine=c2-convex
+               os=-bsd
+               ;;
+       convex-c32)
+               basic_machine=c32-convex
+               os=-bsd
+               ;;
+       convex-c34)
+               basic_machine=c34-convex
+               os=-bsd
+               ;;
+       convex-c38)
+               basic_machine=c38-convex
+               os=-bsd
+               ;;
+       cray | j90)
+               basic_machine=j90-cray
+               os=-unicos
+               ;;
+       craynv)
+               basic_machine=craynv-cray
+               os=-unicosmp
+               ;;
+       cr16 | cr16-*)
+               basic_machine=cr16-unknown
+               os=-elf
+               ;;
+       crds | unos)
+               basic_machine=m68k-crds
+               ;;
+       crisv32 | crisv32-* | etraxfs*)
+               basic_machine=crisv32-axis
+               ;;
+       cris | cris-* | etrax*)
+               basic_machine=cris-axis
+               ;;
+       crx)
+               basic_machine=crx-unknown
+               os=-elf
+               ;;
+       da30 | da30-*)
+               basic_machine=m68k-da30
+               ;;
+       decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+               basic_machine=mips-dec
+               ;;
+       decsystem10* | dec10*)
+               basic_machine=pdp10-dec
+               os=-tops10
+               ;;
+       decsystem20* | dec20*)
+               basic_machine=pdp10-dec
+               os=-tops20
+               ;;
+       delta | 3300 | motorola-3300 | motorola-delta \
+             | 3300-motorola | delta-motorola)
+               basic_machine=m68k-motorola
+               ;;
+       delta88)
+               basic_machine=m88k-motorola
+               os=-sysv3
+               ;;
+       dicos)
+               basic_machine=i686-pc
+               os=-dicos
+               ;;
+       djgpp)
+               basic_machine=i586-pc
+               os=-msdosdjgpp
+               ;;
+       dpx20 | dpx20-*)
+               basic_machine=rs6000-bull
+               os=-bosx
+               ;;
+       dpx2* | dpx2*-bull)
+               basic_machine=m68k-bull
+               os=-sysv3
+               ;;
+       ebmon29k)
+               basic_machine=a29k-amd
+               os=-ebmon
+               ;;
+       elxsi)
+               basic_machine=elxsi-elxsi
+               os=-bsd
+               ;;
+       encore | umax | mmax)
+               basic_machine=ns32k-encore
+               ;;
+       es1800 | OSE68k | ose68k | ose | OSE)
+               basic_machine=m68k-ericsson
+               os=-ose
+               ;;
+       fx2800)
+               basic_machine=i860-alliant
+               ;;
+       genix)
+               basic_machine=ns32k-ns
+               ;;
+       gmicro)
+               basic_machine=tron-gmicro
+               os=-sysv
+               ;;
+       go32)
+               basic_machine=i386-pc
+               os=-go32
+               ;;
+       h3050r* | hiux*)
+               basic_machine=hppa1.1-hitachi
+               os=-hiuxwe2
+               ;;
+       h8300hms)
+               basic_machine=h8300-hitachi
+               os=-hms
+               ;;
+       h8300xray)
+               basic_machine=h8300-hitachi
+               os=-xray
+               ;;
+       h8500hms)
+               basic_machine=h8500-hitachi
+               os=-hms
+               ;;
+       harris)
+               basic_machine=m88k-harris
+               os=-sysv3
+               ;;
+       hp300-*)
+               basic_machine=m68k-hp
+               ;;
+       hp300bsd)
+               basic_machine=m68k-hp
+               os=-bsd
+               ;;
+       hp300hpux)
+               basic_machine=m68k-hp
+               os=-hpux
+               ;;
+       hp3k9[0-9][0-9] | hp9[0-9][0-9])
+               basic_machine=hppa1.0-hp
+               ;;
+       hp9k2[0-9][0-9] | hp9k31[0-9])
+               basic_machine=m68000-hp
+               ;;
+       hp9k3[2-9][0-9])
+               basic_machine=m68k-hp
+               ;;
+       hp9k6[0-9][0-9] | hp6[0-9][0-9])
+               basic_machine=hppa1.0-hp
+               ;;
+       hp9k7[0-79][0-9] | hp7[0-79][0-9])
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k78[0-9] | hp78[0-9])
+               # FIXME: really hppa2.0-hp
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+               # FIXME: really hppa2.0-hp
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k8[0-9][13679] | hp8[0-9][13679])
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k8[0-9][0-9] | hp8[0-9][0-9])
+               basic_machine=hppa1.0-hp
+               ;;
+       hppa-next)
+               os=-nextstep3
+               ;;
+       hppaosf)
+               basic_machine=hppa1.1-hp
+               os=-osf
+               ;;
+       hppro)
+               basic_machine=hppa1.1-hp
+               os=-proelf
+               ;;
+       i370-ibm* | ibm*)
+               basic_machine=i370-ibm
+               ;;
+# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
+       i*86v32)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-sysv32
+               ;;
+       i*86v4*)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-sysv4
+               ;;
+       i*86v)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-sysv
+               ;;
+       i*86sol2)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-solaris2
+               ;;
+       i386mach)
+               basic_machine=i386-mach
+               os=-mach
+               ;;
+       i386-vsta | vsta)
+               basic_machine=i386-unknown
+               os=-vsta
+               ;;
+       iris | iris4d)
+               basic_machine=mips-sgi
+               case $os in
+                   -irix*)
+                       ;;
+                   *)
+                       os=-irix4
+                       ;;
+               esac
+               ;;
+       isi68 | isi)
+               basic_machine=m68k-isi
+               os=-sysv
+               ;;
+       m68knommu)
+               basic_machine=m68k-unknown
+               os=-linux
+               ;;
+       m68knommu-*)
+               basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+               os=-linux
+               ;;
+       m88k-omron*)
+               basic_machine=m88k-omron
+               ;;
+       magnum | m3230)
+               basic_machine=mips-mips
+               os=-sysv
+               ;;
+       merlin)
+               basic_machine=ns32k-utek
+               os=-sysv
+               ;;
+       microblaze)
+               basic_machine=microblaze-xilinx
+               ;;
+       mingw32)
+               basic_machine=i386-pc
+               os=-mingw32
+               ;;
+       mingw32ce)
+               basic_machine=arm-unknown
+               os=-mingw32ce
+               ;;
+       miniframe)
+               basic_machine=m68000-convergent
+               ;;
+       *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+               basic_machine=m68k-atari
+               os=-mint
+               ;;
+       mips3*-*)
+               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+               ;;
+       mips3*)
+               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+               ;;
+       monitor)
+               basic_machine=m68k-rom68k
+               os=-coff
+               ;;
+       morphos)
+               basic_machine=powerpc-unknown
+               os=-morphos
+               ;;
+       msdos)
+               basic_machine=i386-pc
+               os=-msdos
+               ;;
+       ms1-*)
+               basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+               ;;
+       mvs)
+               basic_machine=i370-ibm
+               os=-mvs
+               ;;
+       ncr3000)
+               basic_machine=i486-ncr
+               os=-sysv4
+               ;;
+       netbsd386)
+               basic_machine=i386-unknown
+               os=-netbsd
+               ;;
+       netwinder)
+               basic_machine=armv4l-rebel
+               os=-linux
+               ;;
+       news | news700 | news800 | news900)
+               basic_machine=m68k-sony
+               os=-newsos
+               ;;
+       news1000)
+               basic_machine=m68030-sony
+               os=-newsos
+               ;;
+       news-3600 | risc-news)
+               basic_machine=mips-sony
+               os=-newsos
+               ;;
+       necv70)
+               basic_machine=v70-nec
+               os=-sysv
+               ;;
+       next | m*-next )
+               basic_machine=m68k-next
+               case $os in
+                   -nextstep* )
+                       ;;
+                   -ns2*)
+                     os=-nextstep2
+                       ;;
+                   *)
+                     os=-nextstep3
+                       ;;
+               esac
+               ;;
+       nh3000)
+               basic_machine=m68k-harris
+               os=-cxux
+               ;;
+       nh[45]000)
+               basic_machine=m88k-harris
+               os=-cxux
+               ;;
+       nindy960)
+               basic_machine=i960-intel
+               os=-nindy
+               ;;
+       mon960)
+               basic_machine=i960-intel
+               os=-mon960
+               ;;
+       nonstopux)
+               basic_machine=mips-compaq
+               os=-nonstopux
+               ;;
+       np1)
+               basic_machine=np1-gould
+               ;;
+       neo-tandem)
+               basic_machine=neo-tandem
+               ;;
+       nse-tandem)
+               basic_machine=nse-tandem
+               ;;
+       nsr-tandem)
+               basic_machine=nsr-tandem
+               ;;
+       op50n-* | op60c-*)
+               basic_machine=hppa1.1-oki
+               os=-proelf
+               ;;
+       openrisc | openrisc-*)
+               basic_machine=or32-unknown
+               ;;
+       os400)
+               basic_machine=powerpc-ibm
+               os=-os400
+               ;;
+       OSE68000 | ose68000)
+               basic_machine=m68000-ericsson
+               os=-ose
+               ;;
+       os68k)
+               basic_machine=m68k-none
+               os=-os68k
+               ;;
+       pa-hitachi)
+               basic_machine=hppa1.1-hitachi
+               os=-hiuxwe2
+               ;;
+       paragon)
+               basic_machine=i860-intel
+               os=-osf
+               ;;
+       parisc)
+               basic_machine=hppa-unknown
+               os=-linux
+               ;;
+       parisc-*)
+               basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+               os=-linux
+               ;;
+       pbd)
+               basic_machine=sparc-tti
+               ;;
+       pbb)
+               basic_machine=m68k-tti
+               ;;
+       pc532 | pc532-*)
+               basic_machine=ns32k-pc532
+               ;;
+       pc98)
+               basic_machine=i386-pc
+               ;;
+       pc98-*)
+               basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pentium | p5 | k5 | k6 | nexgen | viac3)
+               basic_machine=i586-pc
+               ;;
+       pentiumpro | p6 | 6x86 | athlon | athlon_*)
+               basic_machine=i686-pc
+               ;;
+       pentiumii | pentium2 | pentiumiii | pentium3)
+               basic_machine=i686-pc
+               ;;
+       pentium4)
+               basic_machine=i786-pc
+               ;;
+       pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+               basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pentiumpro-* | p6-* | 6x86-* | athlon-*)
+               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pentium4-*)
+               basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pn)
+               basic_machine=pn-gould
+               ;;
+       power)  basic_machine=power-ibm
+               ;;
+       ppc | ppcbe)    basic_machine=powerpc-unknown
+               ;;
+       ppc-* | ppcbe-*)
+               basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ppcle | powerpclittle | ppc-le | powerpc-little)
+               basic_machine=powerpcle-unknown
+               ;;
+       ppcle-* | powerpclittle-*)
+               basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ppc64)  basic_machine=powerpc64-unknown
+               ;;
+       ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+               basic_machine=powerpc64le-unknown
+               ;;
+       ppc64le-* | powerpc64little-*)
+               basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ps2)
+               basic_machine=i386-ibm
+               ;;
+       pw32)
+               basic_machine=i586-unknown
+               os=-pw32
+               ;;
+       rdos)
+               basic_machine=i386-pc
+               os=-rdos
+               ;;
+       rom68k)
+               basic_machine=m68k-rom68k
+               os=-coff
+               ;;
+       rm[46]00)
+               basic_machine=mips-siemens
+               ;;
+       rtpc | rtpc-*)
+               basic_machine=romp-ibm
+               ;;
+       s390 | s390-*)
+               basic_machine=s390-ibm
+               ;;
+       s390x | s390x-*)
+               basic_machine=s390x-ibm
+               ;;
+       sa29200)
+               basic_machine=a29k-amd
+               os=-udi
+               ;;
+       sb1)
+               basic_machine=mipsisa64sb1-unknown
+               ;;
+       sb1el)
+               basic_machine=mipsisa64sb1el-unknown
+               ;;
+       sde)
+               basic_machine=mipsisa32-sde
+               os=-elf
+               ;;
+       sei)
+               basic_machine=mips-sei
+               os=-seiux
+               ;;
+       sequent)
+               basic_machine=i386-sequent
+               ;;
+       sh)
+               basic_machine=sh-hitachi
+               os=-hms
+               ;;
+       sh5el)
+               basic_machine=sh5le-unknown
+               ;;
+       sh64)
+               basic_machine=sh64-unknown
+               ;;
+       sparclite-wrs | simso-wrs)
+               basic_machine=sparclite-wrs
+               os=-vxworks
+               ;;
+       sps7)
+               basic_machine=m68k-bull
+               os=-sysv2
+               ;;
+       spur)
+               basic_machine=spur-unknown
+               ;;
+       st2000)
+               basic_machine=m68k-tandem
+               ;;
+       stratus)
+               basic_machine=i860-stratus
+               os=-sysv4
+               ;;
+       strongarm-* | thumb-*)
+               basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       sun2)
+               basic_machine=m68000-sun
+               ;;
+       sun2os3)
+               basic_machine=m68000-sun
+               os=-sunos3
+               ;;
+       sun2os4)
+               basic_machine=m68000-sun
+               os=-sunos4
+               ;;
+       sun3os3)
+               basic_machine=m68k-sun
+               os=-sunos3
+               ;;
+       sun3os4)
+               basic_machine=m68k-sun
+               os=-sunos4
+               ;;
+       sun4os3)
+               basic_machine=sparc-sun
+               os=-sunos3
+               ;;
+       sun4os4)
+               basic_machine=sparc-sun
+               os=-sunos4
+               ;;
+       sun4sol2)
+               basic_machine=sparc-sun
+               os=-solaris2
+               ;;
+       sun3 | sun3-*)
+               basic_machine=m68k-sun
+               ;;
+       sun4)
+               basic_machine=sparc-sun
+               ;;
+       sun386 | sun386i | roadrunner)
+               basic_machine=i386-sun
+               ;;
+       sv1)
+               basic_machine=sv1-cray
+               os=-unicos
+               ;;
+       symmetry)
+               basic_machine=i386-sequent
+               os=-dynix
+               ;;
+       t3e)
+               basic_machine=alphaev5-cray
+               os=-unicos
+               ;;
+       t90)
+               basic_machine=t90-cray
+               os=-unicos
+               ;;
+       # This must be matched before tile*.
+       tilegx*)
+               basic_machine=tilegx-unknown
+               os=-linux-gnu
+               ;;
+       tile*)
+               basic_machine=tile-unknown
+               os=-linux-gnu
+               ;;
+       tx39)
+               basic_machine=mipstx39-unknown
+               ;;
+       tx39el)
+               basic_machine=mipstx39el-unknown
+               ;;
+       toad1)
+               basic_machine=pdp10-xkl
+               os=-tops20
+               ;;
+       tower | tower-32)
+               basic_machine=m68k-ncr
+               ;;
+       tpf)
+               basic_machine=s390x-ibm
+               os=-tpf
+               ;;
+       udi29k)
+               basic_machine=a29k-amd
+               os=-udi
+               ;;
+       ultra3)
+               basic_machine=a29k-nyu
+               os=-sym1
+               ;;
+       v810 | necv810)
+               basic_machine=v810-nec
+               os=-none
+               ;;
+       vaxv)
+               basic_machine=vax-dec
+               os=-sysv
+               ;;
+       vms)
+               basic_machine=vax-dec
+               os=-vms
+               ;;
+       vpp*|vx|vx-*)
+               basic_machine=f301-fujitsu
+               ;;
+       vxworks960)
+               basic_machine=i960-wrs
+               os=-vxworks
+               ;;
+       vxworks68)
+               basic_machine=m68k-wrs
+               os=-vxworks
+               ;;
+       vxworks29k)
+               basic_machine=a29k-wrs
+               os=-vxworks
+               ;;
+       w65*)
+               basic_machine=w65-wdc
+               os=-none
+               ;;
+       w89k-*)
+               basic_machine=hppa1.1-winbond
+               os=-proelf
+               ;;
+       xbox)
+               basic_machine=i686-pc
+               os=-mingw32
+               ;;
+       xps | xps100)
+               basic_machine=xps100-honeywell
+               ;;
+       xscale-* | xscalee[bl]-*)
+               basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
+               ;;
+       ymp)
+               basic_machine=ymp-cray
+               os=-unicos
+               ;;
+       z8k-*-coff)
+               basic_machine=z8k-unknown
+               os=-sim
+               ;;
+       z80-*-coff)
+               basic_machine=z80-unknown
+               os=-sim
+               ;;
+       none)
+               basic_machine=none-none
+               os=-none
+               ;;
+
+# Here we handle the default manufacturer of certain CPU types.  It is in
+# some cases the only manufacturer, in others, it is the most popular.
+       w89k)
+               basic_machine=hppa1.1-winbond
+               ;;
+       op50n)
+               basic_machine=hppa1.1-oki
+               ;;
+       op60c)
+               basic_machine=hppa1.1-oki
+               ;;
+       romp)
+               basic_machine=romp-ibm
+               ;;
+       mmix)
+               basic_machine=mmix-knuth
+               ;;
+       rs6000)
+               basic_machine=rs6000-ibm
+               ;;
+       vax)
+               basic_machine=vax-dec
+               ;;
+       pdp10)
+               # there are many clones, so DEC is not a safe bet
+               basic_machine=pdp10-unknown
+               ;;
+       pdp11)
+               basic_machine=pdp11-dec
+               ;;
+       we32k)
+               basic_machine=we32k-att
+               ;;
+       sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
+               basic_machine=sh-unknown
+               ;;
+       sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+               basic_machine=sparc-sun
+               ;;
+       cydra)
+               basic_machine=cydra-cydrome
+               ;;
+       orion)
+               basic_machine=orion-highlevel
+               ;;
+       orion105)
+               basic_machine=clipper-highlevel
+               ;;
+       mac | mpw | mac-mpw)
+               basic_machine=m68k-apple
+               ;;
+       pmac | pmac-mpw)
+               basic_machine=powerpc-apple
+               ;;
+       *-unknown)
+               # Make sure to match an already-canonicalized machine name.
+               ;;
+       *)
+               echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+               exit 1
+               ;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+       *-digital*)
+               basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+               ;;
+       *-commodore*)
+               basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+               ;;
+       *)
+               ;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+       # First match some system type aliases
+       # that might get confused with valid system types.
+       # -solaris* is a basic system type, with this one exception.
+       -auroraux)
+               os=-auroraux
+               ;;
+       -solaris1 | -solaris1.*)
+               os=`echo $os | sed -e 's|solaris1|sunos4|'`
+               ;;
+       -solaris)
+               os=-solaris2
+               ;;
+       -svr4*)
+               os=-sysv4
+               ;;
+       -unixware*)
+               os=-sysv4.2uw
+               ;;
+       -gnu/linux*)
+               os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+               ;;
+       # First accept the basic system types.
+       # The portable systems comes first.
+       # Each alternative MUST END IN A *, to match a version number.
+       # -sysv* is not here because it comes later, after sysvr4.
+       -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+             | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
+             | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
+             | -sym* | -kopensolaris* \
+             | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+             | -aos* | -aros* \
+             | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+             | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+             | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+             | -openbsd* | -solidbsd* \
+             | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+             | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+             | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+             | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+             | -chorusos* | -chorusrdb* | -cegcc* \
+             | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+             | -mingw32* | -linux-gnu* | -linux-android* \
+             | -linux-newlib* | -linux-uclibc* \
+             | -uxpv* | -beos* | -mpeix* | -udk* \
+             | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+             | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+             | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+             | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+             | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+             | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+             | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
+       # Remember, each alternative MUST END IN *, to match a version number.
+               ;;
+       -qnx*)
+               case $basic_machine in
+                   x86-* | i*86-*)
+                       ;;
+                   *)
+                       os=-nto$os
+                       ;;
+               esac
+               ;;
+       -nto-qnx*)
+               ;;
+       -nto*)
+               os=`echo $os | sed -e 's|nto|nto-qnx|'`
+               ;;
+       -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+             | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+             | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+               ;;
+       -mac*)
+               os=`echo $os | sed -e 's|mac|macos|'`
+               ;;
+       -linux-dietlibc)
+               os=-linux-dietlibc
+               ;;
+       -linux*)
+               os=`echo $os | sed -e 's|linux|linux-gnu|'`
+               ;;
+       -sunos5*)
+               os=`echo $os | sed -e 's|sunos5|solaris2|'`
+               ;;
+       -sunos6*)
+               os=`echo $os | sed -e 's|sunos6|solaris3|'`
+               ;;
+       -opened*)
+               os=-openedition
+               ;;
+       -os400*)
+               os=-os400
+               ;;
+       -wince*)
+               os=-wince
+               ;;
+       -osfrose*)
+               os=-osfrose
+               ;;
+       -osf*)
+               os=-osf
+               ;;
+       -utek*)
+               os=-bsd
+               ;;
+       -dynix*)
+               os=-bsd
+               ;;
+       -acis*)
+               os=-aos
+               ;;
+       -atheos*)
+               os=-atheos
+               ;;
+       -syllable*)
+               os=-syllable
+               ;;
+       -386bsd)
+               os=-bsd
+               ;;
+       -ctix* | -uts*)
+               os=-sysv
+               ;;
+       -nova*)
+               os=-rtmk-nova
+               ;;
+       -ns2 )
+               os=-nextstep2
+               ;;
+       -nsk*)
+               os=-nsk
+               ;;
+       # Preserve the version number of sinix5.
+       -sinix5.*)
+               os=`echo $os | sed -e 's|sinix|sysv|'`
+               ;;
+       -sinix*)
+               os=-sysv4
+               ;;
+       -tpf*)
+               os=-tpf
+               ;;
+       -triton*)
+               os=-sysv3
+               ;;
+       -oss*)
+               os=-sysv3
+               ;;
+       -svr4)
+               os=-sysv4
+               ;;
+       -svr3)
+               os=-sysv3
+               ;;
+       -sysvr4)
+               os=-sysv4
+               ;;
+       # This must come after -sysvr4.
+       -sysv*)
+               ;;
+       -ose*)
+               os=-ose
+               ;;
+       -es1800*)
+               os=-ose
+               ;;
+       -xenix)
+               os=-xenix
+               ;;
+       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+               os=-mint
+               ;;
+       -aros*)
+               os=-aros
+               ;;
+       -kaos*)
+               os=-kaos
+               ;;
+       -zvmoe)
+               os=-zvmoe
+               ;;
+       -dicos*)
+               os=-dicos
+               ;;
+       -nacl*)
+               ;;
+       -none)
+               ;;
+       *)
+               # Get rid of the `-' at the beginning of $os.
+               os=`echo $os | sed 's/[^-]*-//'`
+               echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+               exit 1
+               ;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system.  Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+       score-*)
+               os=-elf
+               ;;
+       spu-*)
+               os=-elf
+               ;;
+       *-acorn)
+               os=-riscix1.2
+               ;;
+       arm*-rebel)
+               os=-linux
+               ;;
+       arm*-semi)
+               os=-aout
+               ;;
+       c4x-* | tic4x-*)
+               os=-coff
+               ;;
+       tic54x-*)
+               os=-coff
+               ;;
+       tic55x-*)
+               os=-coff
+               ;;
+       tic6x-*)
+               os=-coff
+               ;;
+       # This must come before the *-dec entry.
+       pdp10-*)
+               os=-tops20
+               ;;
+       pdp11-*)
+               os=-none
+               ;;
+       *-dec | vax-*)
+               os=-ultrix4.2
+               ;;
+       m68*-apollo)
+               os=-domain
+               ;;
+       i386-sun)
+               os=-sunos4.0.2
+               ;;
+       m68000-sun)
+               os=-sunos3
+               # This also exists in the configure program, but was not the
+               # default.
+               # os=-sunos4
+               ;;
+       m68*-cisco)
+               os=-aout
+               ;;
+       mep-*)
+               os=-elf
+               ;;
+       mips*-cisco)
+               os=-elf
+               ;;
+       mips*-*)
+               os=-elf
+               ;;
+       or32-*)
+               os=-coff
+               ;;
+       *-tti)  # must be before sparc entry or we get the wrong os.
+               os=-sysv3
+               ;;
+       sparc-* | *-sun)
+               os=-sunos4.1.1
+               ;;
+       *-be)
+               os=-beos
+               ;;
+       *-haiku)
+               os=-haiku
+               ;;
+       *-ibm)
+               os=-aix
+               ;;
+       *-knuth)
+               os=-mmixware
+               ;;
+       *-wec)
+               os=-proelf
+               ;;
+       *-winbond)
+               os=-proelf
+               ;;
+       *-oki)
+               os=-proelf
+               ;;
+       *-hp)
+               os=-hpux
+               ;;
+       *-hitachi)
+               os=-hiux
+               ;;
+       i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+               os=-sysv
+               ;;
+       *-cbm)
+               os=-amigaos
+               ;;
+       *-dg)
+               os=-dgux
+               ;;
+       *-dolphin)
+               os=-sysv3
+               ;;
+       m68k-ccur)
+               os=-rtu
+               ;;
+       m88k-omron*)
+               os=-luna
+               ;;
+       *-next )
+               os=-nextstep
+               ;;
+       *-sequent)
+               os=-ptx
+               ;;
+       *-crds)
+               os=-unos
+               ;;
+       *-ns)
+               os=-genix
+               ;;
+       i370-*)
+               os=-mvs
+               ;;
+       *-next)
+               os=-nextstep3
+               ;;
+       *-gould)
+               os=-sysv
+               ;;
+       *-highlevel)
+               os=-bsd
+               ;;
+       *-encore)
+               os=-bsd
+               ;;
+       *-sgi)
+               os=-irix
+               ;;
+       *-siemens)
+               os=-sysv4
+               ;;
+       *-masscomp)
+               os=-rtu
+               ;;
+       f30[01]-fujitsu | f700-fujitsu)
+               os=-uxpv
+               ;;
+       *-rom68k)
+               os=-coff
+               ;;
+       *-*bug)
+               os=-coff
+               ;;
+       *-apple)
+               os=-macos
+               ;;
+       *-atari*)
+               os=-mint
+               ;;
+       *)
+               os=-none
+               ;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer.  We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+       *-unknown)
+               case $os in
+                       -riscix*)
+                               vendor=acorn
+                               ;;
+                       -sunos*)
+                               vendor=sun
+                               ;;
+                       -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
+                               ;;
+                       -mvs* | -opened*)
+                               vendor=ibm
+                               ;;
+                       -os400*)
+                               vendor=ibm
+                               ;;
+                       -ptx*)
+                               vendor=sequent
+                               ;;
+                       -tpf*)
+                               vendor=ibm
+                               ;;
+                       -vxsim* | -vxworks* | -windiss*)
+                               vendor=wrs
+                               ;;
+                       -aux*)
+                               vendor=apple
+                               ;;
+                       -hms*)
+                               vendor=hitachi
+                               ;;
+                       -mpw* | -macos*)
+                               vendor=apple
+                               ;;
+                       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+                               vendor=atari
+                               ;;
+                       -vos*)
+                               vendor=stratus
+                               ;;
+               esac
+               basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+               ;;
+esac
+
+echo $basic_machine$os
+exit
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/build-aux/depcomp b/build-aux/depcomp
new file mode 100755 (executable)
index 0000000..9825d56
--- /dev/null
@@ -0,0 +1,688 @@
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2011-04-16.09; # UTC
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
+# 2011 Free Software Foundation, 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; either version 2, 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 <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
+
+case $1 in
+  '')
+     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: depcomp [--help] [--version] PROGRAM [ARGS]
+
+Run PROGRAMS ARGS to compile a file, generating dependencies
+as side-effects.
+
+Environment variables:
+  depmode     Dependency tracking mode.
+  source      Source file read by `PROGRAMS ARGS'.
+  object      Object file output by `PROGRAMS ARGS'.
+  DEPDIR      directory where to store dependencies.
+  depfile     Dependency file to output.
+  tmpdepfile  Temporary file to use when outputing dependencies.
+  libtool     Whether libtool is used (yes/no).
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "depcomp $scriptversion"
+    exit $?
+    ;;
+esac
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+  echo "depcomp: Variables source, object and depmode must be set" 1>&2
+  exit 1
+fi
+
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+depfile=${depfile-`echo "$object" |
+  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Some modes work just like other modes, but use different flags.  We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write.  Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+  # HP compiler uses -M and no extra arg.
+  gccflag=-M
+  depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+   # This is just like dashmstdout with a different argument.
+   dashmflag=-xM
+   depmode=dashmstdout
+fi
+
+cygpath_u="cygpath -u -f -"
+if test "$depmode" = msvcmsys; then
+   # This is just like msvisualcpp but w/o cygpath translation.
+   # Just convert the backslash-escaped backslashes to single forward
+   # slashes to satisfy depend.m4
+   cygpath_u='sed s,\\\\,/,g'
+   depmode=msvisualcpp
+fi
+
+if test "$depmode" = msvc7msys; then
+   # This is just like msvc7 but w/o cygpath translation.
+   # Just convert the backslash-escaped backslashes to single forward
+   # slashes to satisfy depend.m4
+   cygpath_u='sed s,\\\\,/,g'
+   depmode=msvc7
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff.  Hmm.
+## Unfortunately, FreeBSD c89 acceptance of flags depends upon
+## the command line argument order; so add the flags where they
+## appear in depend2.am.  Note that the slowdown incurred here
+## affects only configure: in makefiles, %FASTDEP% shortcuts this.
+  for arg
+  do
+    case $arg in
+    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
+    *)  set fnord "$@" "$arg" ;;
+    esac
+    shift # fnord
+    shift # $arg
+  done
+  "$@"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  mv "$tmpdepfile" "$depfile"
+  ;;
+
+gcc)
+## There are various ways to get dependency output from gcc.  Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+##   up in a subdir.  Having to rename by hand is ugly.
+##   (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+##   -MM, not -M (despite what the docs say).
+## - Using -M directly means running the compiler twice (even worse
+##   than renaming).
+  if test -z "$gccflag"; then
+    gccflag=-MD,
+  fi
+  "$@" -Wp,"$gccflag$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+## The second -e expression handles DOS-style file names with drive letters.
+  sed -e 's/^[^:]*: / /' \
+      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the `deleted header file' problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header).  We avoid this by adding
+## dummy dependencies for each header file.  Too bad gcc doesn't do
+## this for us directly.
+  tr ' ' '
+' < "$tmpdepfile" |
+## Some versions of gcc put a space before the `:'.  On the theory
+## that the space means something, we add a space to the output as
+## well.  hp depmode also adds that space, but also prefixes the VPATH
+## to the object.  Take care to not repeat it in the output.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
+      | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+sgi)
+  if test "$libtool" = yes; then
+    "$@" "-Wp,-MDupdate,$tmpdepfile"
+  else
+    "$@" -MDupdate "$tmpdepfile"
+  fi
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+
+  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
+    echo "$object : \\" > "$depfile"
+
+    # Clip off the initial element (the dependent).  Don't try to be
+    # clever and replace this with sed code, as IRIX sed won't handle
+    # lines with more than a fixed number of characters (4096 in
+    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
+    # the IRIX cc adds comments like `#:fec' to the end of the
+    # dependency line.
+    tr ' ' '
+' < "$tmpdepfile" \
+    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
+    tr '
+' ' ' >> "$depfile"
+    echo >> "$depfile"
+
+    # The second pass generates a dummy entry for each header file.
+    tr ' ' '
+' < "$tmpdepfile" \
+   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+   >> "$depfile"
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+aix)
+  # The C for AIX Compiler uses -M and outputs the dependencies
+  # in a .u file.  In older versions, this file always lives in the
+  # current directory.  Also, the AIX compiler puts `$object:' at the
+  # start of each line; $object doesn't have directory information.
+  # Version 6 uses the directory in both cases.
+  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+  test "x$dir" = "x$object" && dir=
+  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$base.u
+    tmpdepfile3=$dir.libs/$base.u
+    "$@" -Wc,-M
+  else
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$dir$base.u
+    tmpdepfile3=$dir$base.u
+    "$@" -M
+  fi
+  stat=$?
+
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+    exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  if test -f "$tmpdepfile"; then
+    # Each line is of the form `foo.o: dependent.h'.
+    # Do two passes, one to just change these to
+    # `$object: dependent.h' and one to simply `dependent.h:'.
+    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+    # That's a tab and a space in the [].
+    sed -e 's,^.*\.[a-z]*:[     ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+icc)
+  # Intel's C compiler understands `-MD -MF file'.  However on
+  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+  # ICC 7.0 will fill foo.d with something like
+  #    foo.o: sub/foo.c
+  #    foo.o: sub/foo.h
+  # which is wrong.  We want:
+  #    sub/foo.o: sub/foo.c
+  #    sub/foo.o: sub/foo.h
+  #    sub/foo.c:
+  #    sub/foo.h:
+  # ICC 7.1 will output
+  #    foo.o: sub/foo.c sub/foo.h
+  # and will wrap long lines using \ :
+  #    foo.o: sub/foo.c ... \
+  #     sub/foo.h ... \
+  #     ...
+
+  "$@" -MD -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  # Each line is of the form `foo.o: dependent.h',
+  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+  # Do two passes, one to just change these to
+  # `$object: dependent.h' and one to simply `dependent.h:'.
+  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
+    sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp2)
+  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
+  # compilers, which have integrated preprocessors.  The correct option
+  # to use with these is +Maked; it writes dependencies to a file named
+  # 'foo.d', which lands next to the object file, wherever that
+  # happens to be.
+  # Much of this is similar to the tru64 case; see comments there.
+  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+  test "x$dir" = "x$object" && dir=
+  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir.libs/$base.d
+    "$@" -Wc,+Maked
+  else
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir$base.d
+    "$@" +Maked
+  fi
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+     rm -f "$tmpdepfile1" "$tmpdepfile2"
+     exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  if test -f "$tmpdepfile"; then
+    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
+    # Add `dependent.h:' lines.
+    sed -ne '2,${
+              s/^ *//
+              s/ \\*$//
+              s/$/:/
+              p
+            }' "$tmpdepfile" >> "$depfile"
+  else
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile" "$tmpdepfile2"
+  ;;
+
+tru64)
+   # The Tru64 compiler uses -MD to generate dependencies as a side
+   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+   # dependencies in `foo.d' instead, so we check for that too.
+   # Subdirectories are respected.
+   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+   test "x$dir" = "x$object" && dir=
+   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+
+   if test "$libtool" = yes; then
+      # With Tru64 cc, shared objects can also be used to make a
+      # static library.  This mechanism is used in libtool 1.4 series to
+      # handle both shared and static libraries in a single compilation.
+      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
+      #
+      # With libtool 1.5 this exception was removed, and libtool now
+      # generates 2 separate objects for the 2 libraries.  These two
+      # compilations output dependencies in $dir.libs/$base.o.d and
+      # in $dir$base.o.d.  We have to check for both files, because
+      # one of the two compilations can be disabled.  We should prefer
+      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+      # automatically cleaned when .libs/ is deleted, while ignoring
+      # the former would cause a distcleancheck panic.
+      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
+      tmpdepfile2=$dir$base.o.d          # libtool 1.5
+      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
+      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
+      "$@" -Wc,-MD
+   else
+      tmpdepfile1=$dir$base.o.d
+      tmpdepfile2=$dir$base.d
+      tmpdepfile3=$dir$base.d
+      tmpdepfile4=$dir$base.d
+      "$@" -MD
+   fi
+
+   stat=$?
+   if test $stat -eq 0; then :
+   else
+      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+      exit $stat
+   fi
+
+   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+   do
+     test -f "$tmpdepfile" && break
+   done
+   if test -f "$tmpdepfile"; then
+      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+      # That's a tab and a space in the [].
+      sed -e 's,^.*\.[a-z]*:[   ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+   else
+      echo "#dummy" > "$depfile"
+   fi
+   rm -f "$tmpdepfile"
+   ;;
+
+msvc7)
+  if test "$libtool" = yes; then
+    showIncludes=-Wc,-showIncludes
+  else
+    showIncludes=-showIncludes
+  fi
+  "$@" $showIncludes > "$tmpdepfile"
+  stat=$?
+  grep -v '^Note: including file: ' "$tmpdepfile"
+  if test "$stat" = 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  # The first sed program below extracts the file names and escapes
+  # backslashes for cygpath.  The second sed program outputs the file
+  # name when reading, but also accumulates all include files in the
+  # hold buffer in order to output them again at the end.  This only
+  # works with sed implementations that can handle large buffers.
+  sed < "$tmpdepfile" -n '
+/^Note: including file:  *\(.*\)/ {
+  s//\1/
+  s/\\/\\\\/g
+  p
+}' | $cygpath_u | sort -u | sed -n '
+s/ /\\ /g
+s/\(.*\)/      \1 \\/p
+s/.\(.*\) \\/\1:/
+H
+$ {
+  s/.*/        /
+  G
+  p
+}' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvc7msys)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+#nosideeffect)
+  # This comment above is used by automake to tell side-effect
+  # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout, regardless of -o.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  test -z "$dashmflag" && dashmflag=-M
+  # Require at least two characters before searching for `:'
+  # in the target name.  This is to cope with DOS-style filenames:
+  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+  "$@" $dashmflag |
+    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  tr ' ' '
+' < "$tmpdepfile" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+dashXmstdout)
+  # This case only exists to satisfy depend.m4.  It is never actually
+  # run, as this mode is specially recognized in the preamble.
+  exit 1
+  ;;
+
+makedepend)
+  "$@" || exit $?
+  # Remove any Libtool call
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+  # X makedepend
+  shift
+  cleared=no eat=no
+  for arg
+  do
+    case $cleared in
+    no)
+      set ""; shift
+      cleared=yes ;;
+    esac
+    if test $eat = yes; then
+      eat=no
+      continue
+    fi
+    case "$arg" in
+    -D*|-I*)
+      set fnord "$@" "$arg"; shift ;;
+    # Strip any option that makedepend may not understand.  Remove
+    # the object too, otherwise makedepend will parse it as a source file.
+    -arch)
+      eat=yes ;;
+    -*|$object)
+      ;;
+    *)
+      set fnord "$@" "$arg"; shift ;;
+    esac
+  done
+  obj_suffix=`echo "$object" | sed 's/^.*\././'`
+  touch "$tmpdepfile"
+  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+  rm -f "$depfile"
+  # makedepend may prepend the VPATH from the source file name to the object.
+  # No need to regex-escape $object, excess matching of '.' is harmless.
+  sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
+  sed '1,2d' "$tmpdepfile" | tr ' ' '
+' | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile" "$tmpdepfile".bak
+  ;;
+
+cpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  "$@" -E |
+    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+    sed '$ s: \\$::' > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  cat < "$tmpdepfile" >> "$depfile"
+  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvisualcpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  IFS=" "
+  for arg
+  do
+    case "$arg" in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+       set fnord "$@"
+       shift
+       shift
+       ;;
+    *)
+       set fnord "$@" "$arg"
+       shift
+       shift
+       ;;
+    esac
+  done
+  "$@" -E 2>/dev/null |
+  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::     \1 \\:p' >> "$depfile"
+  echo "       " >> "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvcmsys)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+none)
+  exec "$@"
+  ;;
+
+*)
+  echo "Unknown depmode $depmode" 1>&2
+  exit 1
+  ;;
+esac
+
+exit 0
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/build-aux/do-release-commit-and-tag b/build-aux/do-release-commit-and-tag
new file mode 100755 (executable)
index 0000000..b1eaf88
--- /dev/null
@@ -0,0 +1,145 @@
+#!/bin/sh
+# In a git/autoconf/automake-enabled project with a NEWS file and a version-
+# controlled .prev-version file, automate the procedure by which we record
+# the date, release-type and version string in the NEWS file.  That commit
+# will serve to identify the release, so apply a signed tag to it as well.
+VERSION=2011-05-04.11 # UTC
+
+# Note: this is a bash script (could be zsh or dash)
+
+# Copyright (C) 2009-2011 Free Software Foundation, 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, 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 <http://www.gnu.org/licenses/>.
+
+# Written by Jim Meyering
+
+ME=`basename "$0"`
+warn() { printf '%s: %s\n' "$ME" "$*" >&2; }
+die() { warn "$*"; exit 1; }
+
+help_version()
+{
+  case $1 in
+    --help) cat <<EOF
+Usage: $ME [OPTION...] VERSION RELEASE_TYPE
+
+Run this script to perform the final pre-release NEWS update
+in which the date, release-type and version string are recorded.
+Commit that result with a log entry marking the release, and apply
+a signed tag.  Run it from your project's top-level directory.
+
+Requirements:
+- you use git for version-control
+- a NEWS file, with line 3 identical to this:
+* Noteworthy changes in release ?.? (????-??-??) [?]
+- a version-controlled .prev-version file
+
+Options:
+  --branch BRANCH            set release branch (default: master)
+  --help                     print this help, then exit
+  --version                  print version number, then exit
+
+EXAMPLE:
+To update NEWS and tag the beta 8.1 release of coreutils, I would run this:
+
+  $ME 8.1 beta
+
+Report bugs and patches to <bug-gnulib@gnu.org>.
+EOF
+      exit ;;
+
+    --version)
+      year=`echo "$VERSION" | sed 's/[^0-9].*//'`
+      cat <<EOF
+$ME $VERSION
+Copyright (C) $year Free Software Foundation, Inc,
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+EOF
+      exit ;;
+
+  *) die "unrecognized option: $1";;
+  esac
+}
+
+branch=master
+case $1 in
+  --branch) shift; branch=$1; shift ;;
+esac
+
+case $# in
+  1) help_version $1; exit 0;;
+  2) ;;
+  *) warn "Usage: $ME [OPTION...] VERSION TYPE"; exit 1;;
+esac
+
+ver=$1
+type=$2
+
+# Verify that $ver looks like a version number, and...
+echo "$ver"|grep -E '^[0-9][0-9.]*[0-9]$' > /dev/null \
+  || die "invalid version: $ver"
+prev_ver=$(cat .prev-version) \
+  || die 'failed to determine previous version number from .prev-version'
+
+# Verify that $ver is sensible (> .prev-version).
+case $(printf "$prev_ver\n$ver\n"|sort -V -u|tr '\n' ':') in
+  "$prev_ver:$ver:") ;;
+  *) die "invalid version: $ver";;
+esac
+
+case $type in
+  alpha|beta|stable) ;;
+  *) die "invalid release type: $type";;
+esac
+
+# Extract package name from Makefile.
+pkg=$(sed -n 's/^PACKAGE = \(.*\)/\1/p' Makefile) \
+  || die 'failed to determine package name from Makefile'
+
+# simple check: no question marks on line 3 of NEWS
+noteworthy='* Noteworthy changes in release'
+test "$(sed -n 3p NEWS)" = "$noteworthy ?.? (????-??-??) [?]" \
+  || die 'line 3 of NEWS looks fishy!'
+
+# No dirt allowed.
+case $(git diff-index --name-only HEAD) in
+  '') ;;
+  *) die 'this tree is dirty; commit your changes first';;
+esac
+
+# update NEWS to have today's date, plus desired version number and $type
+perl -MPOSIX -ni -e 'my $today = strftime "%F", localtime time;' \
+ -e 'my ($type, $ver) = qw('"$type $ver"');' \
+ -e 'my $pfx = "'"$noteworthy"'";' \
+ -e 'print $.==3 ? "$pfx $ver ($today) [$type]\n" : $_' \
+     NEWS || die 'failed to update NEWS'
+
+# Ensure the current branch name is correct:
+curr_br=$(git rev-parse --symbolic-full-name HEAD)
+test "$curr_br" = refs/heads/$branch || die not on branch $branch
+
+printf "version $ver\n\n* NEWS: Record release date.\n" \
+    | git commit -F -  -a || die 'git commit failed'
+git tag -s -m "$pkg $ver" v$ver HEAD || die 'git tag failed'
+
+# Local variables:
+# indent-tabs-mode: nil
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "VERSION="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: " # UTC"
+# End:
diff --git a/build-aux/gendocs.sh b/build-aux/gendocs.sh
new file mode 100755 (executable)
index 0000000..c8abd55
--- /dev/null
@@ -0,0 +1,385 @@
+#!/bin/sh -e
+# gendocs.sh -- generate a GNU manual in many formats.  This script is
+#   mentioned in maintain.texi.  See the help message below for usage details.
+
+scriptversion=2011-04-08.14
+
+# Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
+# Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+#
+# Original author: Mohit Agarwal.
+# Send bug reports and any other correspondence to bug-texinfo@gnu.org.
+#
+# The latest version of this script, and the companion template, is
+# available from Texinfo CVS:
+# http://savannah.gnu.org/cgi-bin/viewcvs/texinfo/texinfo/util/gendocs.sh
+# http://savannah.gnu.org/cgi-bin/viewcvs/texinfo/texinfo/util/gendocs_template
+#
+# An up-to-date copy is also maintained in Gnulib (gnu.org/software/gnulib).
+
+prog=`basename "$0"`
+srcdir=`pwd`
+
+scripturl="http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/texinfo/texinfo/util/gendocs.sh"
+templateurl="http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/texinfo/texinfo/util/gendocs_template"
+
+: ${SETLANG="env LANG= LC_MESSAGES= LC_ALL= LANGUAGE="}
+: ${MAKEINFO="makeinfo"}
+: ${TEXI2DVI="texi2dvi -t @finalout"}
+: ${DVIPS="dvips"}
+: ${DOCBOOK2HTML="docbook2html"}
+: ${DOCBOOK2PDF="docbook2pdf"}
+: ${DOCBOOK2PS="docbook2ps"}
+: ${DOCBOOK2TXT="docbook2txt"}
+: ${GENDOCS_TEMPLATE_DIR="."}
+: ${TEXI2HTML="texi2html"}
+unset CDPATH
+unset use_texi2html
+
+version="gendocs.sh $scriptversion
+
+Copyright 2010 Free Software Foundation, Inc.
+There is NO warranty.  You may redistribute this software
+under the terms of the GNU General Public License.
+For more information about these matters, see the files named COPYING."
+
+usage="Usage: $prog [OPTION]... PACKAGE MANUAL-TITLE
+
+Generate various output formats from PACKAGE.texinfo (or .texi or .txi) source.
+See the GNU Maintainers document for a more extensive discussion:
+  http://www.gnu.org/prep/maintain_toc.html
+
+Options:
+  -s SRCFILE  read Texinfo from SRCFILE, instead of PACKAGE.{texinfo|texi|txi}
+  -o OUTDIR   write files into OUTDIR, instead of manual/.
+  --email ADR use ADR as contact in generated web pages.
+  --docbook   convert to DocBook too (xml, txt, html, pdf and ps).
+  --html ARG  pass indicated ARG to makeinfo or texi2html for HTML targets.
+  --texi2html use texi2html to generate HTML targets.
+  --help      display this help and exit successfully.
+  --version   display version information and exit successfully.
+
+Simple example: $prog --email bug-gnu-emacs@gnu.org emacs \"GNU Emacs Manual\"
+
+Typical sequence:
+  cd PACKAGESOURCE/doc
+  wget \"$scripturl\"
+  wget \"$templateurl\"
+  $prog --email BUGLIST MANUAL \"GNU MANUAL - One-line description\"
+
+Output will be in a new subdirectory \"manual\" (by default, use -o OUTDIR
+to override).  Move all the new files into your web CVS tree, as
+explained in the Web Pages node of maintain.texi.
+
+Please use the --email ADDRESS option to specify your bug-reporting
+address in the generated HTML pages.
+
+MANUAL-TITLE is included as part of the HTML <title> of the overall
+manual/index.html file.  It should include the name of the package being
+documented.  manual/index.html is created by substitution from the file
+$GENDOCS_TEMPLATE_DIR/gendocs_template.  (Feel free to modify the
+generic template for your own purposes.)
+
+If you have several manuals, you'll need to run this script several
+times with different MANUAL values, specifying a different output
+directory with -o each time.  Then write (by hand) an overall index.html
+with links to them all.
+
+If a manual's Texinfo sources are spread across several directories,
+first copy or symlink all Texinfo sources into a single directory.
+(Part of the script's work is to make a tar.gz of the sources.)
+
+You can set the environment variables MAKEINFO, TEXI2DVI, TEXI2HTML, and
+DVIPS to control the programs that get executed, and
+GENDOCS_TEMPLATE_DIR to control where the gendocs_template file is
+looked for.  With --docbook, the environment variables DOCBOOK2HTML,
+DOCBOOK2PDF, DOCBOOK2PS, and DOCBOOK2TXT are also respected.
+
+By default, makeinfo and texi2dvi are run in the default (English)
+locale, since that's the language of most Texinfo manuals.  If you
+happen to have a non-English manual and non-English web site, see the
+SETLANG setting in the source.
+
+Email bug reports or enhancement requests to bug-texinfo@gnu.org.
+"
+
+calcsize()
+{
+  size=`ls -ksl $1 | awk '{print $1}'`
+  echo $size
+}
+
+MANUAL_TITLE=
+PACKAGE=
+EMAIL=webmasters@gnu.org  # please override with --email
+htmlarg=
+outdir=manual
+srcfile=
+
+while test $# -gt 0; do
+  case $1 in
+    --email) shift; EMAIL=$1;;
+    --help) echo "$usage"; exit 0;;
+    --version) echo "$version"; exit 0;;
+    -s) shift; srcfile=$1;;
+    -o) shift; outdir=$1;;
+    --docbook) docbook=yes;;
+    --html) shift; htmlarg=$1;;
+    --texi2html) use_texi2html=1;;
+    -*)
+      echo "$0: Unknown option \`$1'." >&2
+      echo "$0: Try \`--help' for more information." >&2
+      exit 1;;
+    *)
+      if test -z "$PACKAGE"; then
+        PACKAGE=$1
+      elif test -z "$MANUAL_TITLE"; then
+        MANUAL_TITLE=$1
+      else
+        echo "$0: extra non-option argument \`$1'." >&2
+        exit 1
+      fi;;
+  esac
+  shift
+done
+
+# For most of the following, the base name is just $PACKAGE
+base=$PACKAGE
+
+if test -n "$srcfile"; then
+  # but here, we use the basename of $srcfile
+  base=`basename "$srcfile"`
+  case $base in
+    *.txi|*.texi|*.texinfo) base=`echo "$base"|sed 's/\.[texinfo]*$//'`;;
+  esac
+  PACKAGE=$base
+elif test -s "$srcdir/$PACKAGE.texinfo"; then
+  srcfile=$srcdir/$PACKAGE.texinfo
+elif test -s "$srcdir/$PACKAGE.texi"; then
+  srcfile=$srcdir/$PACKAGE.texi
+elif test -s "$srcdir/$PACKAGE.txi"; then
+  srcfile=$srcdir/$PACKAGE.txi
+else
+  echo "$0: cannot find .texinfo or .texi or .txi for $PACKAGE in $srcdir." >&2
+  exit 1
+fi
+
+if test ! -r $GENDOCS_TEMPLATE_DIR/gendocs_template; then
+  echo "$0: cannot read $GENDOCS_TEMPLATE_DIR/gendocs_template." >&2
+  echo "$0: it is available from $templateurl." >&2
+  exit 1
+fi
+
+case $outdir in
+  /*) abs_outdir=$outdir;;
+  *)  abs_outdir=$srcdir/$outdir;;
+esac
+
+echo Generating output formats for $srcfile
+
+cmd="$SETLANG $MAKEINFO -o $PACKAGE.info \"$srcfile\""
+echo "Generating info files... ($cmd)"
+eval "$cmd"
+mkdir -p "$outdir/"
+tar czf "$outdir/$PACKAGE.info.tar.gz" $PACKAGE.info*
+info_tgz_size=`calcsize "$outdir/$PACKAGE.info.tar.gz"`
+# do not mv the info files, there's no point in having them available
+# separately on the web.
+
+cmd="$SETLANG ${TEXI2DVI} \"$srcfile\""
+echo "Generating dvi ... ($cmd)"
+eval "$cmd"
+
+# now, before we compress dvi:
+echo Generating postscript...
+${DVIPS} $PACKAGE -o
+gzip -f -9 $PACKAGE.ps
+ps_gz_size=`calcsize $PACKAGE.ps.gz`
+mv $PACKAGE.ps.gz "$outdir/"
+
+# compress/finish dvi:
+gzip -f -9 $PACKAGE.dvi
+dvi_gz_size=`calcsize $PACKAGE.dvi.gz`
+mv $PACKAGE.dvi.gz "$outdir/"
+
+cmd="$SETLANG ${TEXI2DVI} --pdf \"$srcfile\""
+echo "Generating pdf ... ($cmd)"
+eval "$cmd"
+pdf_size=`calcsize $PACKAGE.pdf`
+mv $PACKAGE.pdf "$outdir/"
+
+cmd="$SETLANG $MAKEINFO -o $PACKAGE.txt --no-split --no-headers \"$srcfile\""
+echo "Generating ASCII... ($cmd)"
+eval "$cmd"
+ascii_size=`calcsize $PACKAGE.txt`
+gzip -f -9 -c $PACKAGE.txt >"$outdir/$PACKAGE.txt.gz"
+ascii_gz_size=`calcsize "$outdir/$PACKAGE.txt.gz"`
+mv $PACKAGE.txt "$outdir/"
+
+html_split()
+{
+  opt="--split=$1 $htmlarg --node-files"
+  cmd="$SETLANG $TEXI2HTML --output $PACKAGE.html $opt \"$srcfile\""
+  echo "Generating html by $1... ($cmd)"
+  eval "$cmd"
+  split_html_dir=$PACKAGE.html
+  (
+    cd ${split_html_dir} || exit 1
+    ln -sf ${PACKAGE}.html index.html
+    tar -czf "$abs_outdir/${PACKAGE}.html_$1.tar.gz" -- *.html
+  )
+  eval html_$1_tgz_size=`calcsize "$outdir/${PACKAGE}.html_$1.tar.gz"`
+  rm -f "$outdir"/html_$1/*.html
+  mkdir -p "$outdir/html_$1/"
+  mv ${split_html_dir}/*.html "$outdir/html_$1/"
+  rmdir ${split_html_dir}
+}
+
+if test -z "$use_texi2html"; then
+  opt="--no-split --html -o $PACKAGE.html $htmlarg"
+  cmd="$SETLANG $MAKEINFO $opt \"$srcfile\""
+  echo "Generating monolithic html... ($cmd)"
+  rm -rf $PACKAGE.html  # in case a directory is left over
+  eval "$cmd"
+  html_mono_size=`calcsize $PACKAGE.html`
+  gzip -f -9 -c $PACKAGE.html >"$outdir/$PACKAGE.html.gz"
+  html_mono_gz_size=`calcsize "$outdir/$PACKAGE.html.gz"`
+  mv $PACKAGE.html "$outdir/"
+
+  cmd="$SETLANG $MAKEINFO --html -o $PACKAGE.html $htmlarg \"$srcfile\""
+  echo "Generating html by node... ($cmd)"
+  eval "$cmd"
+  split_html_dir=$PACKAGE.html
+  (
+   cd ${split_html_dir} || exit 1
+   tar -czf "$abs_outdir/${PACKAGE}.html_node.tar.gz" -- *.html
+  )
+  html_node_tgz_size=`calcsize "$outdir/${PACKAGE}.html_node.tar.gz"`
+  rm -f "$outdir"/html_node/*.html
+  mkdir -p "$outdir/html_node/"
+  mv ${split_html_dir}/*.html "$outdir/html_node/"
+  rmdir ${split_html_dir}
+else
+  cmd="$SETLANG $TEXI2HTML --output $PACKAGE.html $htmlarg \"$srcfile\""
+  echo "Generating monolithic html... ($cmd)"
+  rm -rf $PACKAGE.html  # in case a directory is left over
+  eval "$cmd"
+  html_mono_size=`calcsize $PACKAGE.html`
+  gzip -f -9 -c $PACKAGE.html >"$outdir/$PACKAGE.html.gz"
+  html_mono_gz_size=`calcsize "$outdir/$PACKAGE.html.gz"`
+  mv $PACKAGE.html "$outdir/"
+
+  html_split node
+  html_split chapter
+  html_split section
+fi
+
+echo Making .tar.gz for sources...
+d=`dirname $srcfile`
+(
+  cd "$d"
+  srcfiles=`ls *.texinfo *.texi *.txi *.eps 2>/dev/null` || true
+  tar cvzfh "$abs_outdir/$PACKAGE.texi.tar.gz" $srcfiles
+)
+texi_tgz_size=`calcsize "$outdir/$PACKAGE.texi.tar.gz"`
+
+if test -n "$docbook"; then
+  cmd="$SETLANG $MAKEINFO -o - --docbook \"$srcfile\" > ${srcdir}/$PACKAGE-db.xml"
+  echo "Generating docbook XML... ($cmd)"
+  eval "$cmd"
+  docbook_xml_size=`calcsize $PACKAGE-db.xml`
+  gzip -f -9 -c $PACKAGE-db.xml >"$outdir/$PACKAGE-db.xml.gz"
+  docbook_xml_gz_size=`calcsize "$outdir/$PACKAGE-db.xml.gz"`
+  mv $PACKAGE-db.xml "$outdir/"
+
+  split_html_db_dir=html_node_db
+  cmd="${DOCBOOK2HTML} -o $split_html_db_dir \"${outdir}/$PACKAGE-db.xml\""
+  echo "Generating docbook HTML... ($cmd)"
+  eval "$cmd"
+  (
+    cd ${split_html_db_dir} || exit 1
+    tar -czf "$abs_outdir/${PACKAGE}.html_node_db.tar.gz" -- *.html
+  )
+  html_node_db_tgz_size=`calcsize "$outdir/${PACKAGE}.html_node_db.tar.gz"`
+  rm -f "$outdir"/html_node_db/*.html
+  mkdir -p "$outdir/html_node_db"
+  mv ${split_html_db_dir}/*.html "$outdir/html_node_db/"
+  rmdir ${split_html_db_dir}
+
+  cmd="${DOCBOOK2TXT} \"${outdir}/$PACKAGE-db.xml\""
+  echo "Generating docbook ASCII... ($cmd)"
+  eval "$cmd"
+  docbook_ascii_size=`calcsize $PACKAGE-db.txt`
+  mv $PACKAGE-db.txt "$outdir/"
+
+  cmd="${DOCBOOK2PS} \"${outdir}/$PACKAGE-db.xml\""
+  echo "Generating docbook PS... ($cmd)"
+  eval "$cmd"
+  gzip -f -9 -c $PACKAGE-db.ps >"$outdir/$PACKAGE-db.ps.gz"
+  docbook_ps_gz_size=`calcsize "$outdir/$PACKAGE-db.ps.gz"`
+  mv $PACKAGE-db.ps "$outdir/"
+
+  cmd="${DOCBOOK2PDF} \"${outdir}/$PACKAGE-db.xml\""
+  echo "Generating docbook PDF... ($cmd)"
+  eval "$cmd"
+  docbook_pdf_size=`calcsize $PACKAGE-db.pdf`
+  mv $PACKAGE-db.pdf "$outdir/"
+fi
+
+echo "Writing index file..."
+if test -z "$use_texi2html"; then
+   CONDS="/%%IF  *HTML_SECTION%%/,/%%ENDIF  *HTML_SECTION%%/d;\
+          /%%IF  *HTML_CHAPTER%%/,/%%ENDIF  *HTML_CHAPTER%%/d"
+else
+   CONDS="/%%ENDIF.*%%/d;/%%IF  *HTML_SECTION%%/d;/%%IF  *HTML_CHAPTER%%/d"
+fi
+curdate=`$SETLANG date '+%B %d, %Y'`
+sed \
+   -e "s!%%TITLE%%!$MANUAL_TITLE!g" \
+   -e "s!%%EMAIL%%!$EMAIL!g" \
+   -e "s!%%PACKAGE%%!$PACKAGE!g" \
+   -e "s!%%DATE%%!$curdate!g" \
+   -e "s!%%HTML_MONO_SIZE%%!$html_mono_size!g" \
+   -e "s!%%HTML_MONO_GZ_SIZE%%!$html_mono_gz_size!g" \
+   -e "s!%%HTML_NODE_TGZ_SIZE%%!$html_node_tgz_size!g" \
+   -e "s!%%HTML_SECTION_TGZ_SIZE%%!$html_section_tgz_size!g" \
+   -e "s!%%HTML_CHAPTER_TGZ_SIZE%%!$html_chapter_tgz_size!g" \
+   -e "s!%%INFO_TGZ_SIZE%%!$info_tgz_size!g" \
+   -e "s!%%DVI_GZ_SIZE%%!$dvi_gz_size!g" \
+   -e "s!%%PDF_SIZE%%!$pdf_size!g" \
+   -e "s!%%PS_GZ_SIZE%%!$ps_gz_size!g" \
+   -e "s!%%ASCII_SIZE%%!$ascii_size!g" \
+   -e "s!%%ASCII_GZ_SIZE%%!$ascii_gz_size!g" \
+   -e "s!%%TEXI_TGZ_SIZE%%!$texi_tgz_size!g" \
+   -e "s!%%DOCBOOK_HTML_NODE_TGZ_SIZE%%!$html_node_db_tgz_size!g" \
+   -e "s!%%DOCBOOK_ASCII_SIZE%%!$docbook_ascii_size!g" \
+   -e "s!%%DOCBOOK_PS_GZ_SIZE%%!$docbook_ps_gz_size!g" \
+   -e "s!%%DOCBOOK_PDF_SIZE%%!$docbook_pdf_size!g" \
+   -e "s!%%DOCBOOK_XML_SIZE%%!$docbook_xml_size!g" \
+   -e "s!%%DOCBOOK_XML_GZ_SIZE%%!$docbook_xml_gz_size!g" \
+   -e "s,%%SCRIPTURL%%,$scripturl,g" \
+   -e "s!%%SCRIPTNAME%%!$prog!g" \
+   -e "$CONDS" \
+$GENDOCS_TEMPLATE_DIR/gendocs_template >"$outdir/index.html"
+
+echo "Done, see $outdir/ subdirectory for new files."
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/build-aux/git-version-gen b/build-aux/git-version-gen
new file mode 100755 (executable)
index 0000000..686f703
--- /dev/null
@@ -0,0 +1,172 @@
+#!/bin/sh
+# Print a version string.
+scriptversion=2011-02-19.19; # UTC
+
+# Copyright (C) 2007-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+# This script is derived from GIT-VERSION-GEN from GIT: http://git.or.cz/.
+# It may be run two ways:
+# - from a git repository in which the "git describe" command below
+#   produces useful output (thus requiring at least one signed tag)
+# - from a non-git-repo directory containing a .tarball-version file, which
+#   presumes this script is invoked like "./git-version-gen .tarball-version".
+
+# In order to use intra-version strings in your project, you will need two
+# separate generated version string files:
+#
+# .tarball-version - present only in a distribution tarball, and not in
+#   a checked-out repository.  Created with contents that were learned at
+#   the last time autoconf was run, and used by git-version-gen.  Must not
+#   be present in either $(srcdir) or $(builddir) for git-version-gen to
+#   give accurate answers during normal development with a checked out tree,
+#   but must be present in a tarball when there is no version control system.
+#   Therefore, it cannot be used in any dependencies.  GNUmakefile has
+#   hooks to force a reconfigure at distribution time to get the value
+#   correct, without penalizing normal development with extra reconfigures.
+#
+# .version - present in a checked-out repository and in a distribution
+#   tarball.  Usable in dependencies, particularly for files that don't
+#   want to depend on config.h but do want to track version changes.
+#   Delete this file prior to any autoconf run where you want to rebuild
+#   files to pick up a version string change; and leave it stale to
+#   minimize rebuild time after unrelated changes to configure sources.
+#
+# It is probably wise to add these two files to .gitignore, so that you
+# don't accidentally commit either generated file.
+#
+# Use the following line in your configure.ac, so that $(VERSION) will
+# automatically be up-to-date each time configure is run (and note that
+# since configure.ac no longer includes a version string, Makefile rules
+# should not depend on configure.ac for version updates).
+#
+# AC_INIT([GNU project],
+#         m4_esyscmd([build-aux/git-version-gen .tarball-version]),
+#         [bug-project@example])
+#
+# Then use the following lines in your Makefile.am, so that .version
+# will be present for dependencies, and so that .tarball-version will
+# exist in distribution tarballs.
+#
+# BUILT_SOURCES = $(top_srcdir)/.version
+# $(top_srcdir)/.version:
+#      echo $(VERSION) > $@-t && mv $@-t $@
+# dist-hook:
+#      echo $(VERSION) > $(distdir)/.tarball-version
+
+case $# in
+    1|2) ;;
+    *) echo 1>&2 "Usage: $0 \$srcdir/.tarball-version" \
+         '[TAG-NORMALIZATION-SED-SCRIPT]'
+       exit 1;;
+esac
+
+tarball_version_file=$1
+tag_sed_script="${2:-s/x/x/}"
+nl='
+'
+
+# Avoid meddling by environment variable of the same name.
+v=
+v_from_git=
+
+# First see if there is a tarball-only version file.
+# then try "git describe", then default.
+if test -f $tarball_version_file
+then
+    v=`cat $tarball_version_file` || v=
+    case $v in
+        *$nl*) v= ;; # reject multi-line output
+        [0-9]*) ;;
+        *) v= ;;
+    esac
+    test -z "$v" \
+        && echo "$0: WARNING: $tarball_version_file is missing or damaged" 1>&2
+fi
+
+if test -n "$v"
+then
+    : # use $v
+# Otherwise, if there is at least one git commit involving the working
+# directory, and "git describe" output looks sensible, use that to
+# derive a version string.
+elif test "`git log -1 --pretty=format:x . 2>&1`" = x \
+    && v=`git describe --abbrev=4 --match='v*' HEAD 2>/dev/null \
+          || git describe --abbrev=4 HEAD 2>/dev/null` \
+    && v=`printf '%s\n' "$v" | sed "$tag_sed_script"` \
+    && case $v in
+         v[0-9]*) ;;
+         *) (exit 1) ;;
+       esac
+then
+    # Is this a new git that lists number of commits since the last
+    # tag or the previous older version that did not?
+    #   Newer: v6.10-77-g0f8faeb
+    #   Older: v6.10-g0f8faeb
+    case $v in
+        *-*-*) : git describe is okay three part flavor ;;
+        *-*)
+            : git describe is older two part flavor
+            # Recreate the number of commits and rewrite such that the
+            # result is the same as if we were using the newer version
+            # of git describe.
+            vtag=`echo "$v" | sed 's/-.*//'`
+            commit_list=`git rev-list "$vtag"..HEAD 2>/dev/null` \
+                || { commit_list=failed;
+                     echo "$0: WARNING: git rev-list failed" 1>&2; }
+            numcommits=`echo "$commit_list" | wc -l`
+            v=`echo "$v" | sed "s/\(.*\)-\(.*\)/\1-$numcommits-\2/"`;
+            test "$commit_list" = failed && v=UNKNOWN
+            ;;
+    esac
+
+    # Change the first '-' to a '.', so version-comparing tools work properly.
+    # Remove the "g" in git describe's output string, to save a byte.
+    v=`echo "$v" | sed 's/-/./;s/\(.*\)-g/\1-/'`;
+    v_from_git=1
+else
+    v=UNKNOWN
+fi
+
+v=`echo "$v" |sed 's/^v//'`
+
+# Test whether to append the "-dirty" suffix only if the version
+# string we're using came from git.  I.e., skip the test if it's "UNKNOWN"
+# or if it came from .tarball-version.
+if test -n "$v_from_git"; then
+  # Don't declare a version "dirty" merely because a time stamp has changed.
+  git update-index --refresh > /dev/null 2>&1
+
+  dirty=`exec 2>/dev/null;git diff-index --name-only HEAD` || dirty=
+  case "$dirty" in
+      '') ;;
+      *) # Append the suffix only if there isn't one already.
+          case $v in
+            *-dirty) ;;
+            *) v="$v-dirty" ;;
+          esac ;;
+  esac
+fi
+
+# Omit the trailing newline, so that m4_esyscmd can use the result directly.
+echo "$v" | tr -d "$nl"
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/build-aux/gitlog-to-changelog b/build-aux/gitlog-to-changelog
new file mode 100755 (executable)
index 0000000..4559704
--- /dev/null
@@ -0,0 +1,191 @@
+eval '(exit $?0)' && eval 'exec perl -wS "$0" ${1+"$@"}'
+  & eval 'exec perl -wS "$0" $argv:q'
+    if 0;
+# Convert git log output to ChangeLog format.
+
+my $VERSION = '2009-10-30 13:46'; # UTC
+# The definition above must lie within the first 8 lines in order
+# for the Emacs time-stamp write hook (at end) to update it.
+# If you change this file with Emacs, please let the write hook
+# do its job.  Otherwise, update this string manually.
+
+# Copyright (C) 2008-2011 Free Software Foundation, 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, 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 <http://www.gnu.org/licenses/>.
+
+# Written by Jim Meyering
+
+use strict;
+use warnings;
+use Getopt::Long;
+use POSIX qw(strftime);
+
+(my $ME = $0) =~ s|.*/||;
+
+# use File::Coda; # http://meyering.net/code/Coda/
+END {
+  defined fileno STDOUT or return;
+  close STDOUT and return;
+  warn "$ME: failed to close standard output: $!\n";
+  $? ||= 1;
+}
+
+sub usage ($)
+{
+  my ($exit_code) = @_;
+  my $STREAM = ($exit_code == 0 ? *STDOUT : *STDERR);
+  if ($exit_code != 0)
+    {
+      print $STREAM "Try `$ME --help' for more information.\n";
+    }
+  else
+    {
+      print $STREAM <<EOF;
+Usage: $ME [OPTIONS] [ARGS]
+
+Convert git log output to ChangeLog format.  If present, any ARGS
+are passed to "git log".  To avoid ARGS being parsed as options to
+$ME, they may be preceded by '--'.
+
+OPTIONS:
+
+   --since=DATE convert only the logs since DATE;
+                  the default is to convert all log entries.
+   --format=FMT set format string for commit subject and body;
+                  see 'man git-log' for the list of format metacharacters;
+                  the default is '%s%n%b%n'
+
+   --help       display this help and exit
+   --version    output version information and exit
+
+EXAMPLE:
+
+  $ME --since=2008-01-01 > ChangeLog
+  $ME -- -n 5 foo > last-5-commits-to-branch-foo
+
+EOF
+    }
+  exit $exit_code;
+}
+
+# If the string $S is a well-behaved file name, simply return it.
+# If it contains white space, quotes, etc., quote it, and return the new string.
+sub shell_quote($)
+{
+  my ($s) = @_;
+  if ($s =~ m![^\w+/.,-]!)
+    {
+      # Convert each single quote to '\''
+      $s =~ s/\'/\'\\\'\'/g;
+      # Then single quote the string.
+      $s = "'$s'";
+    }
+  return $s;
+}
+
+sub quoted_cmd(@)
+{
+  return join (' ', map {shell_quote $_} @_);
+}
+
+{
+  my $since_date = '1970-01-01 UTC';
+  my $format_string = '%s%n%b%n';
+  GetOptions
+    (
+     help => sub { usage 0 },
+     version => sub { print "$ME version $VERSION\n"; exit },
+     'since=s' => \$since_date,
+     'format=s' => \$format_string,
+    ) or usage 1;
+
+  my @cmd = (qw (git log --log-size), "--since=$since_date",
+             '--pretty=format:%ct  %an  <%ae>%n%n'.$format_string, @ARGV);
+  open PIPE, '-|', @cmd
+    or die ("$ME: failed to run `". quoted_cmd (@cmd) ."': $!\n"
+            . "(Is your Git too old?  Version 1.5.1 or later is required.)\n");
+
+  my $prev_date_line = '';
+  while (1)
+    {
+      defined (my $in = <PIPE>)
+        or last;
+      $in =~ /^log size (\d+)$/
+        or die "$ME:$.: Invalid line (expected log size):\n$in";
+      my $log_nbytes = $1;
+
+      my $log;
+      my $n_read = read PIPE, $log, $log_nbytes;
+      $n_read == $log_nbytes
+        or die "$ME:$.: unexpected EOF\n";
+
+      my @line = split "\n", $log;
+      my $author_line = shift @line;
+      defined $author_line
+        or die "$ME:$.: unexpected EOF\n";
+      $author_line =~ /^(\d+)  (.*>)$/
+        or die "$ME:$.: Invalid line "
+          . "(expected date/author/email):\n$author_line\n";
+
+      my $date_line = sprintf "%s  $2\n", strftime ("%F", localtime ($1));
+      # If this line would be the same as the previous date/name/email
+      # line, then arrange not to print it.
+      if ($date_line ne $prev_date_line)
+        {
+          $prev_date_line eq ''
+            or print "\n";
+          print $date_line;
+        }
+      $prev_date_line = $date_line;
+
+      # Omit "Signed-off-by..." lines.
+      @line = grep !/^Signed-off-by: .*>$/, @line;
+
+      # If there were any lines
+      if (@line == 0)
+        {
+          warn "$ME: warning: empty commit message:\n  $date_line\n";
+        }
+      else
+        {
+          # Remove leading and trailing blank lines.
+          while ($line[0] =~ /^\s*$/) { shift @line; }
+          while ($line[$#line] =~ /^\s*$/) { pop @line; }
+
+          # Prefix each non-empty line with a TAB.
+          @line = map { length $_ ? "\t$_" : '' } @line;
+
+          print "\n", join ("\n", @line), "\n";
+        }
+
+      defined ($in = <PIPE>)
+        or last;
+      $in ne "\n"
+        and die "$ME:$.: unexpected line:\n$in";
+    }
+
+  close PIPE
+    or die "$ME: error closing pipe from " . quoted_cmd (@cmd) . "\n";
+  # FIXME-someday: include $PROCESS_STATUS in the diagnostic
+}
+
+# Local Variables:
+# mode: perl
+# indent-tabs-mode: nil
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "my $VERSION = '"
+# time-stamp-format: "%:y-%02m-%02d %02H:%02M"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "'; # UTC"
+# End:
diff --git a/build-aux/gnu-web-doc-update b/build-aux/gnu-web-doc-update
new file mode 100755 (executable)
index 0000000..f6d0ee1
--- /dev/null
@@ -0,0 +1,117 @@
+#!/bin/sh
+# Run this after each non-alpha release, to update the web documentation at
+# http://www.gnu.org/software/$pkg/manual/
+# This script must be run from the top-level directory,
+# assumes you're using git for revision control,
+# and requires a .prev-version file as well as a Makefile,
+# from which it extracts the version number and package name, respectively.
+# Also, it assumes all documentation is in the doc/ sub-directory.
+
+VERSION=2009-07-21.16; # UTC
+
+# Copyright (C) 2009-2011 Free Software Foundation, 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, 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 <http://www.gnu.org/licenses/>.
+
+# Requirements: everything required to bootstrap your package,
+# plus these: git, cvs, cvsu, rsync, mktemp
+
+ME=`basename "$0"`
+warn() { printf '%s: %s\n' "$ME" "$*" >&2; }
+die() { warn "$*"; exit 1; }
+
+help_version()
+{
+  case $1 in
+    --help) cat <<EOF
+Usage: $ME
+
+Run this script (no options or arguments) after each non-alpha release,
+to update the web documentation at http://www.gnu.org/software/\$pkg/manual/
+Run it from your project's the top-level directory.
+
+Options:
+  --help     print this help, then exit
+  --version  print version number, then exit
+
+Report bugs and patches to <bug-gnulib@gnu.org>.
+EOF
+      exit ;;
+
+    --version)
+      year=`echo "$VERSION" | sed 's/[^0-9].*//'`
+      cat <<EOF
+$ME $VERSION
+Copyright (C) $year Free Software Foundation, Inc,
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+EOF
+      exit ;;
+
+  *) die "unrecognized option: $1";;
+  esac
+}
+
+case $# in
+  0) ;;
+  1) help_version $1 ;;
+  *) die "$ME: too many options" ;;
+esac
+
+prev=.prev-version
+version=$(cat $prev) || die "$ME: no $prev file?"
+pkg=$(sed -n 's/^PACKAGE = \(.*\)/\1/p' Makefile) || die "$ME: no Makefile?"
+tmp_branch=web-doc-$version-$$
+
+cleanup()
+{
+  __st=$?;
+  rm -rf "$tmp"
+  git checkout master
+  git branch -d $tmp_branch
+  exit $__st
+}
+trap cleanup 0
+trap 'exit $?' 1 2 13 15
+
+# We must build using sources for which --version reports the
+# just-released version number, not some string like 7.6.18-20761.
+# That version string propagates into all documentation.
+git checkout -b $tmp_branch v$version
+ok=0
+./bootstrap && ./configure && make && make web-manual && ok=1
+test $ok = 1 || exit 1
+
+tmp=$(mktemp -d --tmpdir=. web-doc-update.XXXXXX) || exit 1
+( cd $tmp \
+    && cvs -d $USER@cvs.sv.gnu.org:/webcvs/$pkg co $pkg )
+rsync -avP doc/manual/ $tmp/$pkg/manual
+
+(
+  cd $tmp/$pkg/manual
+
+  # Add any new files:
+  cvsu --types='?'|sed s/..// | xargs --no-run-if-empty -- cvs add -ko
+
+  cvs ci -m $version
+)
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "VERSION="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/build-aux/gnupload b/build-aux/gnupload
new file mode 100755 (executable)
index 0000000..68215ca
--- /dev/null
@@ -0,0 +1,416 @@
+#!/bin/sh
+# Sign files and upload them.
+
+scriptversion=2010-05-23.15; # UTC
+
+# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
+# Foundation, 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; either version 3, 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 <http://www.gnu.org/licenses/>.
+
+# Originally written by Alexandre Duret-Lutz <adl@gnu.org>.
+
+set -e
+
+GPG='gpg --batch --no-tty'
+conffile=.gnuploadrc
+to=
+dry_run=false
+symlink_files=
+delete_files=
+delete_symlinks=
+collect_var=
+dbg=
+nl='
+'
+
+usage="Usage: $0 [OPTION]... [CMD] FILE... [[CMD] FILE...]
+
+Sign all FILES, and process them at selected destinations according to CMD.
+<http://www.gnu.org/prep/maintain/html_node/Automated-FTP-Uploads.html>
+explains further.
+
+Commands:
+  --delete                 delete FILES from destination
+  --symlink                create symbolic links
+  --rmsymlink              remove symbolic links
+  --                       treat the remaining arguments as files to upload
+
+Options:
+  --help                   print this help text and exit
+  --to DEST                specify one destination for FILES
+                           (multiple --to options are allowed)
+  --user NAME              sign with key NAME
+  --symlink-regex[=EXPR]   use sed script EXPR to compute symbolic link names
+  --dry-run                do nothing, show what would have been done
+  --version                output version information and exit
+
+If --symlink-regex is given without EXPR, then the link target name
+is created by replacing the version information with \`-latest', e.g.:
+
+  foo-1.3.4.tar.gz -> foo-latest.tar.gz
+
+Recognized destinations are:
+  alpha.gnu.org:DIRECTORY
+  savannah.gnu.org:DIRECTORY
+  savannah.nongnu.org:DIRECTORY
+  ftp.gnu.org:DIRECTORY
+                           build directive files and upload files by FTP
+  download.gnu.org.ua:{alpha|ftp}/DIRECTORY
+                           build directive files and upload files by SFTP
+  [user@]host:DIRECTORY    upload files with scp
+
+Options and commands are applied in order.  If the file $conffile exists
+in the current working directory, its contents are prepended to the
+actual command line options.  Use this to keep your defaults.  Comments
+(#) and empty lines in $conffile are allowed.
+
+Examples:
+1. Upload foobar-1.0.tar.gz to ftp.gnu.org:
+  gnupload --to ftp.gnu.org:foobar foobar-1.0.tar.gz
+
+2. Upload foobar-1.0.tar.gz and foobar-1.0.tar.xz to ftp.gnu.org:
+  gnupload --to ftp.gnu.org:foobar foobar-1.0.tar.gz foobar-1.0.tar.xz
+
+3. Same as above, and also create symbolic links to foobar-latest.tar.*:
+  gnupload --to ftp.gnu.org:foobar \\
+           --symlink-regex \\
+           foobar-1.0.tar.gz foobar-1.0.tar.xz
+
+4. Upload foobar-0.9.90.tar.gz to two sites:
+  gnupload --to alpha.gnu.org:foobar \\
+           --to sources.redhat.com:~ftp/pub/foobar \\
+           foobar-0.9.90.tar.gz
+
+5. Delete oopsbar-0.9.91.tar.gz and upload foobar-0.9.91.tar.gz
+   (the -- terminates the list of files to delete):
+  gnupload --to alpha.gnu.org:foobar \\
+           --to sources.redhat.com:~ftp/pub/foobar \\
+           --delete oopsbar-0.9.91.tar.gz \\
+           -- foobar-0.9.91.tar.gz
+
+gnupload uses the ncftpput program to do the transfers; if you don't
+happen to have an ncftp package installed, the ncftpput-ftp script in
+the build-aux/ directory of the gnulib package
+(http://savannah.gnu.org/projects/gnulib) may serve as a replacement.
+
+Report bugs to <bug-automake@gnu.org>.
+Send patches to <automake-patches@gnu.org>."
+
+# Read local configuration file
+if test -r "$conffile"; then
+  echo "$0: Reading configuration file $conffile"
+  conf=`sed 's/#.*$//;/^$/d' "$conffile" | tr "\015$nl" '  '`
+  eval set x "$conf \"\$@\""
+  shift
+fi
+
+while test -n "$1"; do
+  case $1 in
+  -*)
+    collect_var=
+    case $1 in
+    --help)
+      echo "$usage"
+      exit $?
+      ;;
+    --to)
+      if test -z "$2"; then
+        echo "$0: Missing argument for --to" 1>&2
+        exit 1
+      else
+        to="$to $2"
+        shift
+      fi
+      ;;
+    --user)
+      if test -z "$2"; then
+        echo "$0: Missing argument for --user" 1>&2
+        exit 1
+      else
+        GPG="$GPG --local-user $2"
+        shift
+      fi
+      ;;
+    --delete)
+      collect_var=delete_files
+      ;;
+    --rmsymlink)
+      collect_var=delete_symlinks
+      ;;
+    --symlink-regex=*)
+      symlink_expr=`expr "$1" : '[^=]*=\(.*\)'`
+      ;;
+    --symlink-regex)
+      symlink_expr='s|-[0-9][0-9\.]*\(-[0-9][0-9]*\)\{0,1\}\.|-latest.|'
+      ;;
+    --symlink)
+      collect_var=symlink_files
+      ;;
+    --dry-run|-n)
+      dry_run=:
+      ;;
+    --version)
+      echo "gnupload $scriptversion"
+      exit $?
+      ;;
+    --)
+      shift
+      break
+      ;;
+    -*)
+      echo "$0: Unknown option \`$1', try \`$0 --help'" 1>&2
+      exit 1
+      ;;
+    esac
+    ;;
+  *)
+    if test -z "$collect_var"; then
+      break
+    else
+      eval "$collect_var=\"\$$collect_var $1\""
+    fi
+    ;;
+  esac
+  shift
+done
+
+dprint()
+{
+  echo "Running $* ..."
+}
+
+if $dry_run; then
+  dbg=dprint
+fi
+
+if test -z "$to"; then
+  echo "$0: Missing destination sites" >&2
+  exit 1
+fi
+
+if test -n "$symlink_files"; then
+  x=`echo "$symlink_files" | sed 's/[^ ]//g;s/  //g'`
+  if test -n "$x"; then
+    echo "$0: Odd number of symlink arguments" >&2
+    exit 1
+  fi
+fi
+
+if test $# = 0; then
+  if test -z "${symlink_files}${delete_files}${delete_symlinks}"; then
+    echo "$0: No file to upload" 1>&2
+    exit 1
+  fi
+else
+  # Make sure all files exist.  We don't want to ask
+  # for the passphrase if the script will fail.
+  for file
+  do
+    if test ! -f $file; then
+      echo "$0: Cannot find \`$file'" 1>&2
+      exit 1
+    elif test -n "$symlink_expr"; then
+      linkname=`echo $file | sed "$symlink_expr"`
+      if test -z "$linkname"; then
+        echo "$0: symlink expression produces empty results" >&2
+        exit 1
+      elif test "$linkname" = $file; then
+        echo "$0: symlink expression does not alter file name" >&2
+        exit 1
+      fi
+    fi
+  done
+fi
+
+# Make sure passphrase is not exported in the environment.
+unset passphrase
+
+# Reset PATH to be sure that echo is a built-in.  We will later use
+# `echo $passphrase' to output the passphrase, so it is important that
+# it is a built-in (third-party programs tend to appear in `ps'
+# listings with their arguments...).
+# Remember this script runs with `set -e', so if echo is not built-in
+# it will exit now.
+PATH=/empty echo -n "Enter GPG passphrase: "
+stty -echo
+read -r passphrase
+stty echo
+echo
+
+if test $# -ne 0; then
+  for file
+  do
+    echo "Signing $file ..."
+    rm -f $file.sig
+    echo "$passphrase" | $dbg $GPG --passphrase-fd 0 -ba -o $file.sig $file
+  done
+fi
+
+
+# mkdirective DESTDIR BASE FILE STMT
+# Arguments: See upload, below
+mkdirective ()
+{
+  stmt="$4"
+  if test -n "$3"; then
+    stmt="
+filename: $3$stmt"
+  fi
+
+  cat >${2}.directive<<EOF
+version: 1.1
+directory: $1
+comment: gnupload v. $scriptversion$stmt
+EOF
+  if $dry_run; then
+    echo "File ${2}.directive:"
+    cat ${2}.directive
+    echo "File ${2}.directive:" | sed 's/./-/g'
+  fi
+}
+
+mksymlink ()
+{
+  while test $# -ne 0
+  do
+    echo "symlink: $1 $2"
+    shift
+    shift
+  done
+}
+
+# upload DEST DESTDIR BASE FILE STMT FILES
+# Arguments:
+#  DEST     Destination site;
+#  DESTDIR  Destination directory;
+#  BASE     Base name for the directive file;
+#  FILE     Name of the file to distribute (may be empty);
+#  STMT     Additional statements for the directive file;
+#  FILES    List of files to upload.
+upload ()
+{
+  dest=$1
+  destdir=$2
+  base=$3
+  file=$4
+  stmt=$5
+  files=$6
+
+  rm -f $base.directive $base.directive.asc
+  case $dest in
+    alpha.gnu.org:*)
+      mkdirective "$destdir" "$base" "$file" "$stmt"
+      echo "$passphrase" | $dbg $GPG --passphrase-fd 0 --clearsign $base.directive
+      $dbg ncftpput ftp-upload.gnu.org /incoming/alpha $files $base.directive.asc
+      ;;
+    ftp.gnu.org:*)
+      mkdirective "$destdir" "$base" "$file" "$stmt"
+      echo "$passphrase" | $dbg $GPG --passphrase-fd 0 --clearsign $base.directive
+      $dbg ncftpput ftp-upload.gnu.org /incoming/ftp $files $base.directive.asc
+      ;;
+    savannah.gnu.org:*)
+      if test -z "$files"; then
+        echo "$0: warning: standalone directives not applicable for $dest" >&2
+      fi
+      $dbg ncftpput savannah.gnu.org /incoming/savannah/$destdir $files
+      ;;
+    savannah.nongnu.org:*)
+      if test -z "$files"; then
+        echo "$0: warning: standalone directives not applicable for $dest" >&2
+      fi
+      $dbg ncftpput savannah.nongnu.org /incoming/savannah/$destdir $files
+      ;;
+    download.gnu.org.ua:alpha/*|download.gnu.org.ua:ftp/*)
+      destdir_p1=`echo "$destdir" | sed 's,^[^/]*/,,'`
+      destdir_topdir=`echo "$destdir" | sed 's,/.*,,'`
+      mkdirective "$destdir_p1" "$base" "$file" "$stmt"
+      echo "$passphrase" | $dbg $GPG --passphrase-fd 0 --clearsign $base.directive
+      for f in $files $base.directive.asc
+      do
+        echo put $f
+      done | $dbg sftp -b - puszcza.gnu.org.ua:/incoming/$destdir_topdir
+      ;;
+    /*)
+      dest_host=`echo "$dest" | sed 's,:.*,,'`
+      mkdirective "$destdir" "$base" "$file" "$stmt"
+      echo "$passphrase" | $dbg $GPG --passphrase-fd 0 --clearsign $base.directive
+      $dbg cp $files $base.directive.asc $dest_host
+      ;;
+    *)
+      if test -z "$files"; then
+        echo "$0: warning: standalone directives not applicable for $dest" >&2
+      fi
+      $dbg scp $files $dest
+      ;;
+  esac
+  rm -f $base.directive $base.directive.asc
+}
+
+#####
+# Process any standalone directives
+stmt=
+if test -n "$symlink_files"; then
+  stmt="$stmt
+`mksymlink $symlink_files`"
+fi
+
+for file in $delete_files
+do
+  stmt="$stmt
+archive: $file"
+done
+
+for file in $delete_symlinks
+do
+  stmt="$stmt
+rmsymlink: $file"
+done
+
+if test -n "$stmt"; then
+  for dest in $to
+  do
+    destdir=`echo $dest | sed 's/[^:]*://'`
+    upload "$dest" "$destdir" "`hostname`-$$" "" "$stmt"
+  done
+fi
+
+# Process actual uploads
+for dest in $to
+do
+  for file
+  do
+    echo "Uploading $file to $dest ..."
+    stmt=
+    files="$file $file.sig"
+    destdir=`echo $dest | sed 's/[^:]*://'`
+    if test -n "$symlink_expr"; then
+      linkname=`echo $file | sed "$symlink_expr"`
+      stmt="$stmt
+symlink: $file $linkname
+symlink: $file.sig $linkname.sig"
+    fi
+    upload "$dest" "$destdir" "$file" "$file" "$stmt" "$files"
+  done
+done
+
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/build-aux/install-sh b/build-aux/install-sh
new file mode 100755 (executable)
index 0000000..a9244eb
--- /dev/null
@@ -0,0 +1,527 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2011-01-19.21; # 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.
+
+nl='
+'
+IFS=" ""       $nl"
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit=${DOITPROG-}
+if test -z "$doit"; then
+  doit_exec=exec
+else
+  doit_exec=$doit
+fi
+
+# 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_glob='?'
+initialize_posix_glob='
+  test "$posix_glob" != "?" || {
+    if (set -f) 2>/dev/null; then
+      posix_glob=
+    else
+      posix_glob=:
+    fi
+  }
+'
+
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+chgrpcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
+rmcmd="$rmprog -f"
+stripcmd=
+
+src=
+dst=
+dir_arg=
+dst_arg=
+
+copy_on_change=false
+no_target_directory=
+
+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 the last 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.
+  -s            $stripprog installed files.
+  -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
+"
+
+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
+         *' '* | *'    '* | *'
+'*       | *'*'* | *'?'* | *'['*)
+           echo "$0: invalid mode: $mode" >&2
+           exit 1;;
+       esac
+       shift;;
+
+    -o) chowncmd="$chownprog $2"
+       shift;;
+
+    -s) stripcmd=$stripprog;;
+
+    -t) dst_arg=$2
+       # Protect names problematic for `test' and other utilities.
+       case $dst_arg in
+         -* | [=\(\)!]) dst_arg=./$dst_arg;;
+       esac
+       shift;;
+
+    -T) no_target_directory=true;;
+
+    --version) echo "$0 $scriptversion"; exit $?;;
+
+    --)        shift
+       break;;
+
+    -*)        echo "$0: invalid option: $1" >&2
+       exit 1;;
+
+    *)  break;;
+  esac
+  shift
+done
+
+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
+  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=$?
+  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; won't work
+    # if double slashes aren't ignored.
+    if test -d "$dst"; then
+      if test -n "$no_target_directory"; then
+       echo "$0: $dst_arg: Is a directory" >&2
+       exit 1
+      fi
+      dstdir=$dst
+      dst=$dstdir/`basename "$src"`
+      dstdir_status=0
+    else
+      # Prefer dirname, but fall back on a substitute if dirname fails.
+      dstdir=`
+       (dirname "$dst") 2>/dev/null ||
+       expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+            X"$dst" : 'X\(//\)[^/]' \| \
+            X"$dst" : 'X\(//\)$' \| \
+            X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
+       echo X"$dst" |
+           sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+                  s//\1/
+                  q
+                }
+                /^X\(\/\/\)[^/].*/{
+                  s//\1/
+                  q
+                }
+                /^X\(\/\/\)$/{
+                  s//\1/
+                  q
+                }
+                /^X\(\/\).*/{
+                  s//\1/
+                  q
+                }
+                s/.*/./; q'
+      `
+
+      test -d "$dstdir"
+      dstdir_status=$?
+    fi
+  fi
+
+  obsolete_mkdir_used=false
+
+  if test $dstdir_status != 0; then
+    case $posix_mkdir in
+      '')
+       # Create intermediate dirs using mode 755 as modified by the umask.
+       # This is like FreeBSD 'install' as of 1997-10-28.
+       umask=`umask`
+       case $stripcmd.$umask in
+         # Optimize common cases.
+         *[2367][2367]) mkdir_umask=$umask;;
+         .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+         *[0-7])
+           mkdir_umask=`expr $umask + 22 \
+             - $umask % 100 % 40 + $umask % 20 \
+             - $umask % 10 % 4 + $umask % 2
+           `;;
+         *) mkdir_umask=$umask,go-w;;
+       esac
+
+       # 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
+       case $umask in
+         *[123567][0-7][0-7])
+           # POSIX mkdir -p sets u+wx bits regardless of umask, which
+           # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+           ;;
+         *)
+           tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+           trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+           if (umask $mkdir_umask &&
+               exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/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-writeable bit of parent directory when it shouldn't.
+                  # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+                  ls_ld_tmpdir=`ls -ld "$tmpdir"`
+                  case $ls_ld_tmpdir in
+                    d????-?r-*) different_mode=700;;
+                    d????-?--*) different_mode=755;;
+                    *) false;;
+                  esac &&
+                  $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+                    ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+                    test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+                  }
+                }
+             then posix_mkdir=:
+             fi
+             rmdir "$tmpdir/d" "$tmpdir"
+           else
+             # Remove any dirs left behind by ancient mkdir implementations.
+             rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+           fi
+           trap '' 0;;
+       esac;;
+    esac
+
+    if
+      $posix_mkdir && (
+       umask $mkdir_umask &&
+       $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+      )
+    then :
+    else
+
+      # The umask is ridiculous, or 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
+
+      eval "$initialize_posix_glob"
+
+      oIFS=$IFS
+      IFS=/
+      $posix_glob set -f
+      set fnord $dstdir
+      shift
+      $posix_glob 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=$dstdir/_inst.$$_
+    rmtmp=$dstdir/_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 && $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` &&
+
+       eval "$initialize_posix_glob" &&
+       $posix_glob set -f &&
+       set X $old && old=:$2:$4:$5:$6 &&
+       set X $new && new=:$2:$4:$5:$6 &&
+       $posix_glob set +f &&
+
+       test "$old" = "$new" &&
+       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+    then
+      rm -f "$dsttmp"
+    else
+      # 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 -f "$dst" 2>/dev/null ||
+         { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+           { $doit $rmcmd -f "$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 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/build-aux/ltmain.sh b/build-aux/ltmain.sh
new file mode 100755 (executable)
index 0000000..aa5624c
--- /dev/null
@@ -0,0 +1,9636 @@
+
+# libtool (GNU libtool) 2.4
+# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
+# 2007, 2008, 2009, 2010 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 GNU Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html,
+# or obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+# Usage: $progname [OPTION]... [MODE-ARG]...
+#
+# Provide generalized library-building support services.
+#
+#       --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
+#       --preserve-dup-deps  don't remove duplicate dependency libraries
+#       --quiet, --silent    don't print informational messages
+#       --no-quiet, --no-silent
+#                            print informational messages (default)
+#       --tag=TAG            use configuration variables from tag TAG
+#   -v, --verbose            print more informational messages than default
+#       --no-verbose         don't print the extra informational messages
+#       --version            print version information
+#   -h, --help, --help-all   print short, long, or detailed 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)
+#         $progname:   (GNU libtool) 2.4
+#         automake:    $automake_version
+#         autoconf:    $autoconf_version
+#
+# Report bugs to <bug-libtool@gnu.org>.
+# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
+# General help using GNU software: <http://www.gnu.org/gethelp/>.
+
+PROGRAM=libtool
+PACKAGE=libtool
+VERSION=2.4
+TIMESTAMP=""
+package_revision=1.3293
+
+# 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
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+
+# NLS nuisances: We save the old values to restore during execute mode.
+lt_user_locale=
+lt_safe_locale=
+for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+do
+  eval "if test \"\${$lt_var+set}\" = set; then
+          save_$lt_var=\$$lt_var
+          $lt_var=C
+         export $lt_var
+         lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
+         lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
+       fi"
+done
+LC_ALL=C
+LANGUAGE=C
+export LANGUAGE LC_ALL
+
+$lt_unset CDPATH
+
+
+# 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"
+
+
+
+: ${CP="cp -f"}
+test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
+: ${EGREP="/bin/grep -E"}
+: ${FGREP="/bin/grep -F"}
+: ${GREP="/bin/grep"}
+: ${LN_S="ln -s"}
+: ${MAKE="make"}
+: ${MKDIR="mkdir"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+: ${SED="/bin/sed"}
+: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
+: ${Xsed="$SED -e 1s/^X//"}
+
+# Global variables:
+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.
+
+exit_status=$EXIT_SUCCESS
+
+# Make sure IFS has a sensible default
+lt_nl='
+'
+IFS="  $lt_nl"
+
+dirname="s,/[^/]*$,,"
+basename="s,^.*/,,"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+    func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
+    if test "X$func_dirname_result" = "X${1}"; then
+      func_dirname_result="${3}"
+    else
+      func_dirname_result="$func_dirname_result${2}"
+    fi
+} # func_dirname may be replaced by extended shell implementation
+
+
+# func_basename file
+func_basename ()
+{
+    func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+} # func_basename may be replaced by extended shell implementation
+
+
+# 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"
+# Implementation must be kept synchronized with func_dirname
+# and func_basename. For efficiency, we do not delegate to
+# those functions but instead duplicate the functionality here.
+func_dirname_and_basename ()
+{
+    # Extract subdirectory from the argument.
+    func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
+    if test "X$func_dirname_result" = "X${1}"; then
+      func_dirname_result="${3}"
+    else
+      func_dirname_result="$func_dirname_result${2}"
+    fi
+    func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
+} # func_dirname_and_basename may be replaced by extended shell implementation
+
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# 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).
+# func_strip_suffix prefix name
+func_stripname ()
+{
+    case ${2} in
+      .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+      *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+    esac
+} # func_stripname may be replaced by extended shell implementation
+
+
+# These SED scripts presuppose an absolute path with a trailing slash.
+pathcar='s,^/\([^/]*\).*$,\1,'
+pathcdr='s,^/[^/]*,,'
+removedotparts=':dotsl
+               s@/\./@/@g
+               t dotsl
+               s,/\.$,/,'
+collapseslashes='s@/\{1,\}@/@g'
+finalslash='s,/*$,/,'
+
+# 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.
+#             value returned in "$func_normal_abspath_result"
+func_normal_abspath ()
+{
+  # 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 "$removedotparts" -e "$collapseslashes" -e "$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 "$pathcar"`
+    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+        -e "$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_normal_abspath_result=$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_relative_path SRCDIR DSTDIR
+# generates a relative path from SRCDIR to DSTDIR, with a trailing
+# slash if non-empty, suitable for immediately appending a filename
+# without needing to append a separator.
+#             value returned in "$func_relative_path_result"
+func_relative_path ()
+{
+  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 "x$func_relative_path_tlibdir" = x ; 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 "x$func_stripname_result" != x ; then
+    func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
+  fi
+
+  # Normalisation. If bindir is libdir, return empty string,
+  # else relative path ending with a slash; either way, target
+  # file name can be directly appended.
+  if test ! -z "$func_relative_path_result"; then
+    func_stripname './' '' "$func_relative_path_result/"
+    func_relative_path_result=$func_stripname_result
+  fi
+}
+
+# The name of this program:
+func_dirname_and_basename "$progpath"
+progname=$func_basename_result
+
+# Make sure we have an absolute path for reexecution:
+case $progpath in
+  [\\/]*|[A-Za-z]:\\*) ;;
+  *[\\/]*)
+     progdir=$func_dirname_result
+     progdir=`cd "$progdir" && pwd`
+     progpath="$progdir/$progname"
+     ;;
+  *)
+     save_IFS="$IFS"
+     IFS=:
+     for progdir in $PATH; do
+       IFS="$save_IFS"
+       test -x "$progdir/$progname" && break
+     done
+     IFS="$save_IFS"
+     test -n "$progdir" || progdir=`pwd`
+     progpath="$progdir/$progname"
+     ;;
+esac
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed="${SED}"' -e 1s/^X//'
+sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+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
+# which contains forward slashes, into one that contains
+# (escaped) backslashes.  A very naive implementation.
+lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
+
+# Re-`\' parameter expansions in output of double_quote_subst that were
+# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
+# in input to 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 '$'.
+bs='\\'
+bs2='\\\\'
+bs4='\\\\\\\\'
+dollar='\$'
+sed_double_backslash="\
+  s/$bs4/&\\
+/g
+  s/^$bs2$dollar/$bs&/
+  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
+  s/\n//g"
+
+# Standard options:
+opt_dry_run=false
+opt_help=false
+opt_quiet=false
+opt_verbose=false
+opt_warning=:
+
+# func_echo arg...
+# Echo program name prefixed message, along with the current mode
+# name if it has been set yet.
+func_echo ()
+{
+    $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
+}
+
+# func_verbose arg...
+# Echo program name prefixed message in verbose mode only.
+func_verbose ()
+{
+    $opt_verbose && 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_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+    $ECHO "$*"
+}
+
+# func_error arg...
+# Echo program name prefixed message to standard error.
+func_error ()
+{
+    $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
+}
+
+# func_warning arg...
+# Echo program name prefixed warning message to standard error.
+func_warning ()
+{
+    $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
+
+    # bash bug again:
+    :
+}
+
+# func_fatal_error arg...
+# Echo program name prefixed message to standard error, and exit.
+func_fatal_error ()
+{
+    func_error ${1+"$@"}
+    exit $EXIT_FAILURE
+}
+
+# func_fatal_help arg...
+# Echo program name prefixed message to standard error, followed by
+# a help hint, and exit.
+func_fatal_help ()
+{
+    func_error ${1+"$@"}
+    func_fatal_error "$help"
+}
+help="Try \`$progname --help' for more information."  ## default
+
+
+# func_grep expression filename
+# Check whether EXPRESSION matches any line of FILENAME, without output.
+func_grep ()
+{
+    $GREP "$1" "$2" >/dev/null 2>&1
+}
+
+
+# func_mkdir_p directory-path
+# Make sure the entire path to DIRECTORY-PATH is available.
+func_mkdir_p ()
+{
+    my_directory_path="$1"
+    my_dir_list=
+
+    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
+
+      # Protect directory names starting with `-'
+      case $my_directory_path in
+        -*) my_directory_path="./$my_directory_path" ;;
+      esac
+
+      # While some portion of DIR does not yet exist...
+      while test ! -d "$my_directory_path"; do
+        # ...make a list in topmost first order.  Use a colon delimited
+       # list incase some portion of path contains whitespace.
+        my_dir_list="$my_directory_path:$my_dir_list"
+
+        # If the last portion added has no slash in it, the list is done
+        case $my_directory_path in */*) ;; *) break ;; esac
+
+        # ...otherwise throw away the child directory and loop
+        my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
+      done
+      my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
+
+      save_mkdir_p_IFS="$IFS"; IFS=':'
+      for my_dir in $my_dir_list; do
+       IFS="$save_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 "$my_dir" 2>/dev/null || :
+      done
+      IFS="$save_mkdir_p_IFS"
+
+      # Bail out if we (or some other process) failed to create a directory.
+      test -d "$my_directory_path" || \
+        func_fatal_error "Failed to create \`$1'"
+    fi
+}
+
+
+# func_mktempdir [string]
+# Make a temporary directory that won't clash with other running
+# libtool processes, and avoids race conditions if possible.  If
+# given, STRING is the basename for that directory.
+func_mktempdir ()
+{
+    my_template="${TMPDIR-/tmp}/${1-$progname}"
+
+    if test "$opt_dry_run" = ":"; then
+      # Return a directory name, but don't create it in dry-run mode
+      my_tmpdir="${my_template}-$$"
+    else
+
+      # If mktemp works, use that first and foremost
+      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
+
+      if test ! -d "$my_tmpdir"; then
+        # Failing that, at least try and use $RANDOM to avoid a race
+        my_tmpdir="${my_template}-${RANDOM-0}$$"
+
+        save_mktempdir_umask=`umask`
+        umask 0077
+        $MKDIR "$my_tmpdir"
+        umask $save_mktempdir_umask
+      fi
+
+      # If we're not in dry-run mode, bomb out on failure
+      test -d "$my_tmpdir" || \
+        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
+    fi
+
+    $ECHO "$my_tmpdir"
+}
+
+
+# func_quote_for_eval arg
+# Aesthetically quote ARG to be evaled later.
+# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
+# is double-quoted, suitable for a subsequent eval, whereas
+# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
+# which are still active within double quotes backslashified.
+func_quote_for_eval ()
+{
+    case $1 in
+      *[\\\`\"\$]*)
+       func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
+      *)
+        func_quote_for_eval_unquoted_result="$1" ;;
+    esac
+
+    case $func_quote_for_eval_unquoted_result in
+      # Double-quote args containing shell metacharacters to delay
+      # word splitting, command substitution and and variable
+      # expansion for a subsequent eval.
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, so we specify it separately.
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \    ]*|*]*|"")
+        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
+        ;;
+      *)
+        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
+    esac
+}
+
+
+# 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 ()
+{
+    case $1 in
+      *[\\\`\"]*)
+       my_arg=`$ECHO "$1" | $SED \
+           -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
+      *)
+        my_arg="$1" ;;
+    esac
+
+    case $my_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.
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \    ]*|*]*|"")
+        my_arg="\"$my_arg\""
+        ;;
+    esac
+
+    func_quote_for_expand_result="$my_arg"
+}
+
+
+# func_show_eval cmd [fail_exp]
+# Unless opt_silent 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 ()
+{
+    my_cmd="$1"
+    my_fail_exp="${2-:}"
+
+    ${opt_silent-false} || {
+      func_quote_for_expand "$my_cmd"
+      eval "func_echo $func_quote_for_expand_result"
+    }
+
+    if ${opt_dry_run-false}; then :; else
+      eval "$my_cmd"
+      my_status=$?
+      if test "$my_status" -eq 0; then :; else
+       eval "(exit $my_status); $my_fail_exp"
+      fi
+    fi
+}
+
+
+# func_show_eval_locale cmd [fail_exp]
+# Unless opt_silent 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 ()
+{
+    my_cmd="$1"
+    my_fail_exp="${2-:}"
+
+    ${opt_silent-false} || {
+      func_quote_for_expand "$my_cmd"
+      eval "func_echo $func_quote_for_expand_result"
+    }
+
+    if ${opt_dry_run-false}; then :; else
+      eval "$lt_user_locale
+           $my_cmd"
+      my_status=$?
+      eval "$lt_safe_locale"
+      if test "$my_status" -eq 0; then :; else
+       eval "(exit $my_status); $my_fail_exp"
+      fi
+    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 ()
+{
+  case $1 in
+  [0-9]* | *[!a-zA-Z0-9_]*)
+    func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
+    ;;
+  * )
+    func_tr_sh_result=$1
+    ;;
+  esac
+}
+
+
+# func_version
+# Echo version message to standard output and exit.
+func_version ()
+{
+    $opt_debug
+
+    $SED -n '/(C)/!b go
+       :more
+       /\./!{
+         N
+         s/\n# / /
+         b more
+       }
+       :go
+       /^# '$PROGRAM' (GNU /,/# warranty; / {
+        s/^# //
+       s/^# *$//
+        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
+        p
+     }' < "$progpath"
+     exit $?
+}
+
+# func_usage
+# Echo short help message to standard output and exit.
+func_usage ()
+{
+    $opt_debug
+
+    $SED -n '/^# Usage:/,/^#  *.*--help/ {
+        s/^# //
+       s/^# *$//
+       s/\$progname/'$progname'/
+       p
+    }' < "$progpath"
+    echo
+    $ECHO "run \`$progname --help | more' for full usage"
+    exit $?
+}
+
+# func_help [NOEXIT]
+# Echo long help message to standard output and exit,
+# unless 'noexit' is passed as argument.
+func_help ()
+{
+    $opt_debug
+
+    $SED -n '/^# Usage:/,/# Report bugs to/ {
+       :print
+        s/^# //
+       s/^# *$//
+       s*\$progname*'$progname'*
+       s*\$host*'"$host"'*
+       s*\$SHELL*'"$SHELL"'*
+       s*\$LTCC*'"$LTCC"'*
+       s*\$LTCFLAGS*'"$LTCFLAGS"'*
+       s*\$LD*'"$LD"'*
+       s/\$with_gnu_ld/'"$with_gnu_ld"'/
+       s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
+       s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
+       p
+       d
+     }
+     /^# .* home page:/b print
+     /^# General help using/b print
+     ' < "$progpath"
+    ret=$?
+    if test -z "$1"; then
+      exit $ret
+    fi
+}
+
+# func_missing_arg argname
+# Echo program name prefixed message to standard error and set global
+# exit_cmd.
+func_missing_arg ()
+{
+    $opt_debug
+
+    func_error "missing argument for $1."
+    exit_cmd=exit
+}
+
+
+# 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.
+func_split_short_opt ()
+{
+    my_sed_short_opt='1s/^\(..\).*$/\1/;q'
+    my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
+
+    func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
+    func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
+} # func_split_short_opt may be replaced by extended shell implementation
+
+
+# func_split_long_opt longopt
+# Set func_split_long_opt_name and func_split_long_opt_arg shell
+# variables after splitting LONGOPT at the `=' sign.
+func_split_long_opt ()
+{
+    my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
+    my_sed_long_arg='1s/^--[^=]*=//'
+
+    func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
+    func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
+} # func_split_long_opt may be replaced by extended shell implementation
+
+exit_cmd=:
+
+
+
+
+
+magic="%%%MAGIC variable%%%"
+magic_exe="%%%MAGIC EXE variable%%%"
+
+# Global variables.
+nonopt=
+preserve_args=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+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=
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+    eval "${1}=\$${1}\${2}"
+} # func_append may be replaced by extended shell implementation
+
+# func_append_quoted var value
+# Quote VALUE and append to the end of shell variable VAR, separated
+# by a space.
+func_append_quoted ()
+{
+    func_quote_for_eval "${2}"
+    eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
+} # func_append_quoted may be replaced by extended shell implementation
+
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+    func_arith_result=`expr "${@}"`
+} # func_arith may be replaced by extended shell implementation
+
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+    func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
+} # func_len may be replaced by extended shell implementation
+
+
+# func_lo2o object
+func_lo2o ()
+{
+    func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
+} # func_lo2o may be replaced by extended shell implementation
+
+
+# func_xform libobj-or-source
+func_xform ()
+{
+    func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
+} # func_xform may be replaced by extended shell implementation
+
+
+# func_fatal_configuration arg...
+# Echo program name prefixed message to standard error, followed by
+# a configuration failure hint, and exit.
+func_fatal_configuration ()
+{
+    func_error ${1+"$@"}
+    func_error "See the $PACKAGE documentation for more information."
+    func_fatal_error "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 "$build_libtool_libs" = yes; then
+      echo "enable shared libraries"
+    else
+      echo "disable shared libraries"
+    fi
+    if test "$build_old_libs" = yes; 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
+}
+
+
+# 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
+  ;;
+esac
+
+
+
+# Option defaults:
+opt_debug=:
+opt_dry_run=false
+opt_config=false
+opt_preserve_dup_deps=false
+opt_features=false
+opt_finish=false
+opt_help=false
+opt_help_all=false
+opt_silent=:
+opt_verbose=:
+opt_silent=false
+opt_verbose=false
+
+
+# Parse options once, thoroughly.  This comes as soon as possible in the
+# script to make things like `--version' happen as quickly as we can.
+{
+  # this just eases exit handling
+  while test $# -gt 0; do
+    opt="$1"
+    shift
+    case $opt in
+      --debug|-x)      opt_debug='set -x'
+                       func_echo "enabling shell trace mode"
+                       $opt_debug
+                       ;;
+      --dry-run|--dryrun|-n)
+                       opt_dry_run=:
+                       ;;
+      --config)
+                       opt_config=:
+func_config
+                       ;;
+      --dlopen|-dlopen)
+                       optarg="$1"
+                       opt_dlopen="${opt_dlopen+$opt_dlopen
+}$optarg"
+                       shift
+                       ;;
+      --preserve-dup-deps)
+                       opt_preserve_dup_deps=:
+                       ;;
+      --features)
+                       opt_features=:
+func_features
+                       ;;
+      --finish)
+                       opt_finish=:
+set dummy --mode finish ${1+"$@"}; shift
+                       ;;
+      --help)
+                       opt_help=:
+                       ;;
+      --help-all)
+                       opt_help_all=:
+opt_help=': help-all'
+                       ;;
+      --mode)
+                       test $# = 0 && func_missing_arg $opt && break
+                       optarg="$1"
+                       opt_mode="$optarg"
+case $optarg in
+  # Valid mode arguments:
+  clean|compile|execute|finish|install|link|relink|uninstall) ;;
+
+  # Catch anything else as an error
+  *) func_error "invalid argument for $opt"
+     exit_cmd=exit
+     break
+     ;;
+esac
+                       shift
+                       ;;
+      --no-silent|--no-quiet)
+                       opt_silent=false
+func_append preserve_args " $opt"
+                       ;;
+      --no-verbose)
+                       opt_verbose=false
+func_append preserve_args " $opt"
+                       ;;
+      --silent|--quiet)
+                       opt_silent=:
+func_append preserve_args " $opt"
+        opt_verbose=false
+                       ;;
+      --verbose|-v)
+                       opt_verbose=:
+func_append preserve_args " $opt"
+opt_silent=false
+                       ;;
+      --tag)
+                       test $# = 0 && func_missing_arg $opt && break
+                       optarg="$1"
+                       opt_tag="$optarg"
+func_append preserve_args " $opt $optarg"
+func_enable_tag "$optarg"
+                       shift
+                       ;;
+
+      -\?|-h)          func_usage                              ;;
+      --help)          func_help                               ;;
+      --version)       func_version                            ;;
+
+      # Separate optargs to long options:
+      --*=*)
+                       func_split_long_opt "$opt"
+                       set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
+                       shift
+                       ;;
+
+      # Separate non-argument short options:
+      -\?*|-h*|-n*|-v*)
+                       func_split_short_opt "$opt"
+                       set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
+                       shift
+                       ;;
+
+      --)              break                                   ;;
+      -*)              func_fatal_help "unrecognized option \`$opt'" ;;
+      *)               set dummy "$opt" ${1+"$@"};     shift; break  ;;
+    esac
+  done
+
+  # Validate options:
+
+  # save first non-option argument
+  if test "$#" -gt 0; then
+    nonopt="$opt"
+    shift
+  fi
+
+  # preserve --debug
+  test "$opt_debug" = : || func_append preserve_args " --debug"
+
+  case $host in
+    *cygwin* | *mingw* | *pw32* | *cegcc*)
+      # 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
+
+    if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+      func_fatal_configuration "not configured to build any kind of library"
+    fi
+
+    # Darwin sucks
+    eval std_shrext=\"$shrext_cmds\"
+
+    # Only execute mode is allowed to have -dlopen flags.
+    if test -n "$opt_dlopen" && test "$opt_mode" != execute; 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."
+  }
+
+
+  # Bail if the options were screwed
+  $exit_cmd $EXIT_FAILURE
+}
+
+
+
+
+## ----------- ##
+##    Main.    ##
+## ----------- ##
+
+# 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 \
+        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
+}
+
+# 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 "$lalib_p" = yes
+}
+
+# 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 ()
+{
+    func_lalib_p "$1"
+}
+
+# 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 ()
+{
+    $opt_debug
+    save_ifs=$IFS; IFS='~'
+    for cmd in $1; do
+      IFS=$save_ifs
+      eval cmd=\"$cmd\"
+      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 ()
+{
+    $opt_debug
+    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 ()
+{
+    $opt_debug
+    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 "$build_libtool_libs" = yes; then
+      write_lobj=\'${2}\'
+    else
+      write_lobj=none
+    fi
+
+    if test "$build_old_libs" = yes; then
+      write_oldobj=\'${3}\'
+    else
+      write_oldobj=none
+    fi
+
+    $opt_dry_run || {
+      cat >${write_libobj}T <<EOF
+# $write_libobj - a libtool object file
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object=$write_lobj
+
+# Name of the non-PIC object
+non_pic_object=$write_oldobj
+
+EOF
+      $MV "${write_libobj}T" "${write_libobj}"
+    }
+}
+
+
+##################################################
+# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
+##################################################
+
+# func_convert_core_file_wine_to_w32 ARG
+# Helper function used by file name 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.
+#
+# ARG is the $build file name to be converted to w32 format.
+# Result is available in $func_convert_core_file_wine_to_w32_result, and will
+# be empty on error (or when ARG is empty)
+func_convert_core_file_wine_to_w32 ()
+{
+  $opt_debug
+  func_convert_core_file_wine_to_w32_result="$1"
+  if test -n "$1"; then
+    # Unfortunately, winepath does not exit with a non-zero error code, so we
+    # are forced to check the contents of stdout. On the other hand, if the
+    # command is not found, the shell will set an exit code of 127 and print
+    # *an error message* to stdout. So we must check for both error code of
+    # zero AND non-empty stdout, which explains the odd construction:
+    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/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 "$lt_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 ()
+{
+  $opt_debug
+  # 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 ()
+{
+  $opt_debug
+  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 ()
+{
+  $opt_debug
+  # awkward: cmd appends spaces to result
+  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
+    $SED -e 's/[ ]*$//' -e "$lt_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 ()
+{
+  $opt_debug
+  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 ()
+{
+  $opt_debug
+  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 ()
+{
+  $opt_debug
+  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 ()
+{
+  $opt_debug
+  $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 ()
+{
+  $opt_debug
+  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 ()
+{
+  $opt_debug
+  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 ()
+{
+  $opt_debug
+  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 ()
+{
+  $opt_debug
+  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 ()
+{
+  $opt_debug
+  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 ()
+{
+  $opt_debug
+  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 ()
+{
+  $opt_debug
+  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 ()
+{
+  $opt_debug
+  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 ()
+{
+  $opt_debug
+  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 ()
+{
+  $opt_debug
+  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 ()
+{
+  $opt_debug
+  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 ()
+{
+  $opt_debug
+  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 ()
+{
+  $opt_debug
+  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_mode_compile arg...
+func_mode_compile ()
+{
+    $opt_debug
+    # 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 | *.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 "$build_libtool_libs" != yes && \
+         func_fatal_configuration "can not 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 "$build_old_libs" = yes; 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 "$pic_mode" = no && test "$deplibs_check_method" != pass_all; 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 "$compiler_c_o" = no; 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 "$need_locks" = yes; 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 "$need_locks" = warn; 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 "$build_libtool_libs" = yes; then
+      # Without this assignment, base_compile gets emptied.
+      fbsd_hideous_sh_bug=$base_compile
+
+      if test "$pic_mode" != no; 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 "$need_locks" = warn &&
+        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 "$suppress_opt" = yes; then
+       suppress_output=' >/dev/null 2>&1'
+      fi
+    fi
+
+    # Only build a position-dependent object if we build old libraries.
+    if test "$build_old_libs" = yes; then
+      if test "$pic_mode" != yes; then
+       # Don't build PIC code
+       command="$base_compile $qsrcfile$pie_flag"
+      else
+       command="$base_compile $qsrcfile $pic_flag"
+      fi
+      if test "$compiler_c_o" = yes; 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 "$need_locks" = warn &&
+        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 "$need_locks" != no; then
+       removelist=$lockfile
+        $RM "$lockfile"
+      fi
+    }
+
+    exit $EXIT_SUCCESS
+}
+
+$opt_help || {
+  test "$opt_mode" = compile && 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
+  -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 ()
+{
+    $opt_debug
+    # 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 test "X$opt_dry_run" = Xfalse; then
+      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"
+    else
+      # 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
+    fi
+}
+
+test "$opt_mode" = execute && func_mode_execute ${1+"$@"}
+
+
+# func_mode_finish arg...
+func_mode_finish ()
+{
+    $opt_debug
+    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_silent && 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 "$opt_mode" = finish && func_mode_finish ${1+"$@"}
+
+
+# func_mode_install arg...
+func_mode_install ()
+{
+    $opt_debug
+    # There may be an optional sh(1) argument at the beginning of
+    # install_prog (especially on Windows NT).
+    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+       # 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=no
+    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=yes ;;
+      -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$prev" = x-m && 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=yes
+    if test "$isdir" = yes; 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
+           ;;
+         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 "$build_old_libs" = yes; 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=yes
+         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'` ### testsuite: skip nested quoting test
+           if test -n "$libdir" && test ! -f "$libfile"; then
+             func_warning "\`$lib' has not been installed in \`$libdir'"
+             finalize=no
+           fi
+         done
+
+         relink_command=
+         func_source "$wrapper"
+
+         outputname=
+         if test "$fast_install" = no && test -n "$relink_command"; then
+           $opt_dry_run || {
+             if test "$finalize" = yes; 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_silent || {
+                 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_show_eval "$install_prog \$file \$oldlib" 'exit $?'
+
+      if test -n "$stripme" && test -n "$old_striplib"; then
+       func_show_eval "$old_striplib $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 "$opt_mode" = install && 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 ()
+{
+    $opt_debug
+    my_outputname="$1"
+    my_originator="$2"
+    my_pic_p="${3-no}"
+    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
+    my_dlsyms=
+
+    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; 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$TIMESTAMP) $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 con'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
+
+/* External symbol declarations for the compiler. */\
+"
+
+       if test "$dlself" = yes; 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 <import library>.
+                   $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 >/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
+
+         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[];
+LT_DLSYM_CONST lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[] =
+{\
+  { \"$my_originator\", (void *) 0 },"
+
+         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"  ;;
+         *)
+           if test "X$my_pic_p" != Xno; then
+             pic_flag_for_symtable=" $pic_flag"
+           fi
+           ;;
+         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"'
+
+       # 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_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 ()
+{
+  $opt_debug
+  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
+      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
+               }
+           }'`
+      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 ()
+{
+  $opt_debug
+  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 ()
+{
+  $opt_debug
+  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 which possess that section. Heuristic: eliminate
+    # all those which 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_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 ()
+{
+  $opt_debug
+  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 ()
+{
+  $opt_debug
+  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_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 ()
+{
+  $opt_debug
+  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 ()
+{
+    $opt_debug
+    f_ex_an_ar_dir="$1"; shift
+    f_ex_an_ar_oldlib="$1"
+    if test "$lock_old_archive_extraction" = yes; 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 "$lock_old_archive_extraction" = yes; 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 ()
+{
+    $opt_debug
+    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`
+         darwin_base_archive=`basename "$darwin_archive"`
+         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 "$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 in which 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$TIMESTAMP) $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/ which is used only on
+# windows platforms, and (c) all begin with the string "--lt-"
+# (application programs are unlikely to have options which 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$TIMESTAMP) $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 ()
+{
+  for lt_wr_arg
+  do
+    case \$lt_wr_arg in
+    --lt-*) ;;
+    *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
+    esac
+    shift
+  done
+  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 "$fast_install" = yes; 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 "$shlibpath_overrides_runpath" = yes && 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 <<EOF
+
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+
+   The $output program cannot be directly executed until all the libtool
+   libraries that it depends on are installed.
+
+   This wrapper executable should never be moved out of the build directory.
+   If it is, it will not operate correctly.
+*/
+EOF
+           cat <<"EOF"
+#ifdef _MSC_VER
+# define _CRT_SECURE_NO_DEPRECATE 1
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef _MSC_VER
+# include <direct.h>
+# include <process.h>
+# include <io.h>
+#else
+# include <unistd.h>
+# include <stdint.h>
+# ifdef __CYGWIN__
+#  include <io.h>
+# endif
+#endif
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+#include <string.h>
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+
+/* 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 platforms) ... */
+#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
+# ifndef _INTPTR_T_DEFINED
+#  define _INTPTR_T_DEFINED
+#  define intptr_t int
+# endif
+#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 ((void *) 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 <<EOF
+volatile const char * MAGIC_EXE = "$magic_exe";
+const char * LIB_PATH_VARNAME = "$shlibpath_var";
+EOF
+
+           if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+              func_to_host_path "$temp_rpath"
+             cat <<EOF
+const char * LIB_PATH_VALUE   = "$func_to_host_path_result";
+EOF
+           else
+             cat <<"EOF"
+const char * LIB_PATH_VALUE   = "";
+EOF
+           fi
+
+           if test -n "$dllsearchpath"; then
+              func_to_host_path "$dllsearchpath:"
+             cat <<EOF
+const char * EXE_PATH_VARNAME = "PATH";
+const char * EXE_PATH_VALUE   = "$func_to_host_path_result";
+EOF
+           else
+             cat <<"EOF"
+const char * EXE_PATH_VARNAME = "";
+const char * EXE_PATH_VALUE   = "";
+EOF
+           fi
+
+           if test "$fast_install" = yes; then
+             cat <<EOF
+const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
+EOF
+           else
+             cat <<EOF
+const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
+EOF
+           fi
+
+
+           cat <<"EOF"
+
+#define LTWRAPPER_OPTION_PREFIX         "--lt-"
+
+static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
+static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
+static const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
+
+int
+main (int argc, char *argv[])
+{
+  char **newargz;
+  int  newargc;
+  char *tmp_pathspec;
+  char *actual_cwrapper_path;
+  char *actual_cwrapper_name;
+  char *target_name;
+  char *lt_argv_zero;
+  intptr_t rval = 127;
+
+  int i;
+
+  program_name = (char *) xstrdup (base_name (argv[0]));
+  newargz = XMALLOC (char *, argc + 1);
+
+  /* very simple arg parsing; don't want to rely on getopt
+   * also, copy all non cwrapper options to newargz, except
+   * argz[0], which is handled differently
+   */
+  newargc=0;
+  for (i = 1; i < argc; i++)
+    {
+      if (strcmp (argv[i], dumpscript_opt) == 0)
+       {
+EOF
+           case "$host" in
+             *mingw* | *cygwin* )
+               # make stdout use "unix" line endings
+               echo "          setmode(1,_O_BINARY);"
+               ;;
+             esac
+
+           cat <<"EOF"
+         lt_dump_script (stdout);
+         return 0;
+       }
+      if (strcmp (argv[i], debug_opt) == 0)
+       {
+          lt_debug = 1;
+          continue;
+       }
+      if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
+        {
+          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
+             namespace, but it is not one of the ones we know about and
+             have already dealt with, above (inluding dump-script), then
+             report an error. Otherwise, targets might begin to believe
+             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
+             namespace. The first time any user complains about this, we'll
+             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
+             or a configure.ac-settable value.
+           */
+          lt_fatal (__FILE__, __LINE__,
+                   "unrecognized %s option: '%s'",
+                    ltwrapper_option_prefix, argv[i]);
+        }
+      /* otherwise ... */
+      newargz[++newargc] = xstrdup (argv[i]);
+    }
+  newargz[++newargc] = NULL;
+
+EOF
+           cat <<EOF
+  /* The GNU banner must be the first non-error debug message */
+  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
+EOF
+           cat <<"EOF"
+  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
+  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
+
+  tmp_pathspec = find_executable (argv[0]);
+  if (tmp_pathspec == NULL)
+    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
+  lt_debugprintf (__FILE__, __LINE__,
+                  "(main) found exe (before symlink chase) at: %s\n",
+                 tmp_pathspec);
+
+  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
+  lt_debugprintf (__FILE__, __LINE__,
+                  "(main) found exe (after symlink chase) at: %s\n",
+                 actual_cwrapper_path);
+  XFREE (tmp_pathspec);
+
+  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
+  strendzap (actual_cwrapper_path, actual_cwrapper_name);
+
+  /* wrapper name transforms */
+  strendzap (actual_cwrapper_name, ".exe");
+  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
+  XFREE (actual_cwrapper_name);
+  actual_cwrapper_name = tmp_pathspec;
+  tmp_pathspec = 0;
+
+  /* target_name transforms -- use actual target program name; might have lt- prefix */
+  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
+  strendzap (target_name, ".exe");
+  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
+  XFREE (target_name);
+  target_name = tmp_pathspec;
+  tmp_pathspec = 0;
+
+  lt_debugprintf (__FILE__, __LINE__,
+                 "(main) libtool target name: %s\n",
+                 target_name);
+EOF
+
+           cat <<EOF
+  newargz[0] =
+    XMALLOC (char, (strlen (actual_cwrapper_path) +
+                   strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
+  strcpy (newargz[0], actual_cwrapper_path);
+  strcat (newargz[0], "$objdir");
+  strcat (newargz[0], "/");
+EOF
+
+           cat <<"EOF"
+  /* stop here, and copy so we don't have to do this twice */
+  tmp_pathspec = xstrdup (newargz[0]);
+
+  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
+  strcat (newargz[0], actual_cwrapper_name);
+
+  /* DO want the lt- prefix here if it exists, so use target_name */
+  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
+  XFREE (tmp_pathspec);
+  tmp_pathspec = NULL;
+EOF
+
+           case $host_os in
+             mingw*)
+           cat <<"EOF"
+  {
+    char* p;
+    while ((p = strchr (newargz[0], '\\')) != NULL)
+      {
+       *p = '/';
+      }
+    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
+      {
+       *p = '/';
+      }
+  }
+EOF
+           ;;
+           esac
+
+           cat <<"EOF"
+  XFREE (target_name);
+  XFREE (actual_cwrapper_path);
+  XFREE (actual_cwrapper_name);
+
+  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
+  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
+  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
+     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
+     because on Windows, both *_VARNAMEs are PATH but uninstalled
+     libraries must come first. */
+  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
+  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
+
+  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
+                 nonnull (lt_argv_zero));
+  for (i = 0; i < newargc; i++)
+    {
+      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
+                     i, nonnull (newargz[i]));
+    }
+
+EOF
+
+           case $host_os in
+             mingw*)
+               cat <<"EOF"
+  /* execv doesn't actually work on mingw as expected on unix */
+  newargz = prepare_spawn (newargz);
+  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
+  if (rval == -1)
+    {
+      /* failed to start process */
+      lt_debugprintf (__FILE__, __LINE__,
+                     "(main) failed to launch target \"%s\": %s\n",
+                     lt_argv_zero, nonnull (strerror (errno)));
+      return 127;
+    }
+  return rval;
+EOF
+               ;;
+             *)
+               cat <<"EOF"
+  execv (lt_argv_zero, newargz);
+  return rval; /* =127, but avoids unused variable warning */
+EOF
+               ;;
+           esac
+
+           cat <<"EOF"
+}
+
+void *
+xmalloc (size_t num)
+{
+  void *p = (void *) malloc (num);
+  if (!p)
+    lt_fatal (__FILE__, __LINE__, "memory exhausted");
+
+  return p;
+}
+
+char *
+xstrdup (const char *string)
+{
+  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
+                         string) : NULL;
+}
+
+const char *
+base_name (const char *name)
+{
+  const char *base;
+
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  /* Skip over the disk name in MSDOS pathnames. */
+  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
+    name += 2;
+#endif
+
+  for (base = name; *name; name++)
+    if (IS_DIR_SEPARATOR (*name))
+      base = name + 1;
+  return base;
+}
+
+int
+check_executable (const char *path)
+{
+  struct stat st;
+
+  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
+                  nonempty (path));
+  if ((!path) || (!*path))
+    return 0;
+
+  if ((stat (path, &st) >= 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];
+  int 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 = 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 (strcmp (str, pat) == 0)
+       *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
+    int 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)
+    {
+      int orig_value_len = strlen (orig_value);
+      int 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 #' */
+      int len = strlen (new_value);
+      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
+        {
+          new_value[len-1] = '\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 -e 's/\([\\"]\)/\\\1/g' \
+                  -e 's/^/  fputs ("/' -e 's/$/\\n", f);/'
+
+            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 ()
+{
+    $opt_debug
+    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
+    *import*) : ;;
+    *) false ;;
+    esac
+}
+
+# func_mode_link arg...
+func_mode_link ()
+{
+    $opt_debug
+    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
+      # which 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 which 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=
+    non_pic_objects=
+    precious_files_regex=
+    prefer_static_libs=no
+    preload=no
+    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 "$build_libtool_libs" != yes && \
+         func_fatal_configuration "can not build a shared library"
+       build_old_libs=no
+       break
+       ;;
+      -all-static | -static | -static-libtool-libs)
+       case $arg in
+       -all-static)
+         if test "$build_libtool_libs" = yes && 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)
+         if test "$preload" = no; then
+           # Add the symbol object into the linking commands.
+           func_append compile_command " @SYMFILE@"
+           func_append finalize_command " @SYMFILE@"
+           preload=yes
+         fi
+         case $arg in
+         *.la | *.lo) ;;  # We handle these cases below.
+         force)
+           if test "$dlself" = no; then
+             dlself=needless
+             export_dynamic=yes
+           fi
+           prev=
+           continue
+           ;;
+         self)
+           if test "$prev" = dlprefiles; then
+             dlself=yes
+           elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+             dlself=yes
+           else
+             dlself=needless
+             export_dynamic=yes
+           fi
+           prev=
+           continue
+           ;;
+         *)
+           if test "$prev" = dlfiles; 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
+         ;;
+       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 "$pic_object" = none &&
+                  test "$non_pic_object" = none; 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 "$pic_object" != none; then
+                 # Prepend the subdirectory the object is found in.
+                 pic_object="$xdir$pic_object"
+
+                 if test "$prev" = dlfiles; then
+                   if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; 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 "$prev" = dlprefiles; 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 "$non_pic_object" != none; 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 "$pic_object" = none ; 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
+         ;;
+       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 "$prev" = rpath; 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$arg" = "X-export-symbols"; 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$arg" = "X-lc" || test "X$arg" = "X-lm"; 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$arg" = "X-lc" && continue
+           ;;
+         *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+           # Do not include libc due to us having libc/libc_r.
+           test "X$arg" = "X-lc" && 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$arg" = "X-lc" && continue
+           ;;
+         *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+           # Compiler inserts libc in the correct place for threads to work
+           test "X$arg" = "X-lc" && continue
+           ;;
+         esac
+       elif test "X$arg" = "X-lc_r"; then
+        case $host in
+        *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+          # Do not include libc_r directly, use -pthread flag.
+          continue
+          ;;
+        esac
+       fi
+       func_append deplibs " $arg"
+       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)
+       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
+       ;;
+
+      -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
+      # @file                GCC response files
+      # -tp=*                Portland pgcc target processor selection
+      # --sysroot=*          for sysroot support
+      # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
+      -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*|-flto*|-fwhopr*|-fuse-linker-plugin)
+        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
+        ;;
+
+      # 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 "$pic_object" = none &&
+            test "$non_pic_object" = none; 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 "$pic_object" != none; then
+           # Prepend the subdirectory the object is found in.
+           pic_object="$xdir$pic_object"
+
+           if test "$prev" = dlfiles; then
+             if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; 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 "$prev" = dlprefiles; 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 "$non_pic_object" != none; 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 "$pic_object" = none ; 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 "$prev" = dlfiles; then
+         # This library was specified with -dlopen.
+         func_append dlfiles " $func_resolve_sysroot_result"
+         prev=
+       elif test "$prev" = dlprefiles; 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 "$export_dynamic" = yes && 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\"
+
+    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 "$linkmode" = lib; 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=no
+       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 "$linkmode,$pass" = "lib,link"; 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 "$linkmode,$pass" = "lib,link" ||
+        test "$linkmode,$pass" = "prog,scan"; then
+       libs="$deplibs"
+       deplibs=
+      fi
+      if test "$linkmode" = prog; then
+       case $pass in
+       dlopen) libs="$dlfiles" ;;
+       dlpreopen) libs="$dlprefiles" ;;
+       link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+       esac
+      fi
+      if test "$linkmode,$pass" = "lib,dlpreopen"; 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 "$pass" = dlopen; then
+       # Collect dlpreopened libraries
+       save_deplibs="$deplibs"
+       deplibs=
+      fi
+
+      for deplib in $libs; do
+       lib=
+       found=no
+       case $deplib in
+       -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
+         if test "$linkmode,$pass" = "prog,link"; then
+           compile_deplibs="$deplib $compile_deplibs"
+           finalize_deplibs="$deplib $finalize_deplibs"
+         else
+           func_append compiler_flags " $deplib"
+           if test "$linkmode" = lib ; then
+               case "$new_inherited_linker_flags " in
+                   *" $deplib "*) ;;
+                   * ) func_append new_inherited_linker_flags " $deplib" ;;
+               esac
+           fi
+         fi
+         continue
+         ;;
+       -l*)
+         if test "$linkmode" != lib && test "$linkmode" != prog; then
+           func_warning "\`-l' is ignored for archives/objects"
+           continue
+         fi
+         func_stripname '-l' '' "$deplib"
+         name=$func_stripname_result
+         if test "$linkmode" = lib; 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 "$search_ext" = ".la"; then
+                 found=yes
+               else
+                 found=no
+               fi
+               break 2
+             fi
+           done
+         done
+         if test "$found" != yes; then
+           # deplib doesn't seem to be a libtool library
+           if test "$linkmode,$pass" = "prog,link"; then
+             compile_deplibs="$deplib $compile_deplibs"
+             finalize_deplibs="$deplib $finalize_deplibs"
+           else
+             deplibs="$deplib $deplibs"
+             test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+           fi
+           continue
+         else # 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 "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; 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=no
+                   func_dirname "$lib" "" "."
+                   ladir="$func_dirname_result"
+                   lib=$ladir/$old_library
+                   if test "$linkmode,$pass" = "prog,link"; then
+                     compile_deplibs="$deplib $compile_deplibs"
+                     finalize_deplibs="$deplib $finalize_deplibs"
+                   else
+                     deplibs="$deplib $deplibs"
+                     test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+                   fi
+                   continue
+                 fi
+               fi
+               ;;
+             *) ;;
+             esac
+           fi
+         fi
+         ;; # -l
+       *.ltframework)
+         if test "$linkmode,$pass" = "prog,link"; then
+           compile_deplibs="$deplib $compile_deplibs"
+           finalize_deplibs="$deplib $finalize_deplibs"
+         else
+           deplibs="$deplib $deplibs"
+           if test "$linkmode" = lib ; 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 "$pass" = conv && 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 "$pass" = conv; then
+             deplibs="$deplib $deplibs"
+             continue
+           fi
+           if test "$pass" = scan; 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 "$pass" = link; 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 "$pass" = conv; 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=no
+             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=yes
+                 fi
+               ;;
+               pass_all)
+                 valid_a_lib=yes
+               ;;
+             esac
+             if test "$valid_a_lib" != yes; then
+               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."
+             else
+               echo
+               $ECHO "*** Warning: Linking the shared library $output against the"
+               $ECHO "*** static library $deplib is not portable!"
+               deplibs="$deplib $deplibs"
+             fi
+             ;;
+           esac
+           continue
+           ;;
+         prog)
+           if test "$pass" != link; then
+             deplibs="$deplib $deplibs"
+           else
+             compile_deplibs="$deplib $compile_deplibs"
+             finalize_deplibs="$deplib $finalize_deplibs"
+           fi
+           continue
+           ;;
+         esac # linkmode
+         ;; # *.$libext
+       *.lo | *.$objext)
+         if test "$pass" = conv; then
+           deplibs="$deplib $deplibs"
+         elif test "$linkmode" = prog; then
+           if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; 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=yes
+         continue
+         ;;
+       esac # case $deplib
+
+       if test "$found" = yes || test -f "$lib"; then :
+       else
+         func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
+       fi
+
+       # 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 "$linkmode,$pass" = "lib,link" ||
+          test "$linkmode,$pass" = "prog,scan" ||
+          { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+         test -n "$dlopen" && func_append dlfiles " $dlopen"
+         test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
+       fi
+
+       if test "$pass" = conv; 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"
+         elif test "$linkmode" != prog && test "$linkmode" != lib; then
+           func_fatal_error "\`$lib' is not a convenience library"
+         fi
+         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
+         continue
+       fi # $pass = conv
+
+
+       # Get the name of the library we link against.
+       linklib=
+       if test -n "$old_library" &&
+          { test "$prefer_static_libs" = yes ||
+            test "$prefer_static_libs,$installed" = "built,no"; }; 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 "$pass" = dlopen; then
+         if test -z "$libdir"; then
+           func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
+         fi
+         if test -z "$dlname" ||
+            test "$dlopen_support" != yes ||
+            test "$build_libtool_libs" = no; 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 "X$installed" = Xyes; 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 "X$hardcode_automatic" = Xyes && 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 "$pass" = dlpreopen; then
+         if test -z "$libdir" && test "$linkmode" = prog; 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 "$linkmode" = lib; then
+           deplibs="$dir/$old_library $deplibs"
+         elif test "$linkmode,$pass" = "prog,link"; 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 "$linkmode" = prog && test "$pass" != link; then
+         func_append newlib_search_path " $ladir"
+         deplibs="$lib $deplibs"
+
+         linkalldeplibs=no
+         if test "$link_all_deplibs" != no || test -z "$library_names" ||
+            test "$build_libtool_libs" = no; then
+           linkalldeplibs=yes
+         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 test "$linkalldeplibs" = yes; 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 "$linkmode,$pass" = "prog,link"; then
+         if test -n "$library_names" &&
+            { { test "$prefer_static_libs" = no ||
+                test "$prefer_static_libs,$installed" = "built,yes"; } ||
+              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 test "$alldeplibs" = yes &&
+            { test "$deplibs_check_method" = pass_all ||
+              { test "$build_libtool_libs" = yes &&
+                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 "$use_static_libs" = built && test "$installed" = yes; then
+         use_static_libs=no
+       fi
+       if test -n "$library_names" &&
+          { test "$use_static_libs" = no || test -z "$old_library"; }; then
+         case $host in
+         *cygwin* | *mingw* | *cegcc*)
+             # No point in relinking DLLs because paths are not encoded
+             func_append notinst_deplibs " $lib"
+             need_relink=no
+           ;;
+         *)
+           if test "$installed" = no; 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 "$shouldnotlink" = yes && test "$pass" = link; then
+           echo
+           if test "$linkmode" = prog; 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 "$linkmode" = lib &&
+            test "$hardcode_into_libs" = yes; 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*)
+               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 "$linkmode" = prog || test "$opt_mode" != relink; then
+           add_shlibpath=
+           add_dir=
+           add=
+           lib_linked=yes
+           case $hardcode_action in
+           immediate | unsupported)
+             if test "$hardcode_direct" = no; 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 can not
+                   # 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 "$hardcode_minus_L" = no; then
+               case $host in
+               *-*-sunos*) add_shlibpath="$dir" ;;
+               esac
+               add_dir="-L$dir"
+               add="-l$name"
+             elif test "$hardcode_shlibpath_var" = no; then
+               add_shlibpath="$dir"
+               add="-l$name"
+             else
+               lib_linked=no
+             fi
+             ;;
+           relink)
+             if test "$hardcode_direct" = yes &&
+                test "$hardcode_direct_absolute" = no; then
+               add="$dir/$linklib"
+             elif test "$hardcode_minus_L" = yes; then
+               add_dir="-L$dir"
+               # 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 "$hardcode_shlibpath_var" = yes; then
+               add_shlibpath="$dir"
+               add="-l$name"
+             else
+               lib_linked=no
+             fi
+             ;;
+           *) lib_linked=no ;;
+           esac
+
+           if test "$lib_linked" != yes; 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 "$linkmode" = prog; 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 "$hardcode_direct" != yes &&
+                test "$hardcode_minus_L" != yes &&
+                test "$hardcode_shlibpath_var" = yes; then
+               case :$finalize_shlibpath: in
+               *":$libdir:"*) ;;
+               *) func_append finalize_shlibpath "$libdir:" ;;
+               esac
+             fi
+           fi
+         fi
+
+         if test "$linkmode" = prog || test "$opt_mode" = relink; then
+           add_shlibpath=
+           add_dir=
+           add=
+           # Finalize command for both is simple: just hardcode it.
+           if test "$hardcode_direct" = yes &&
+              test "$hardcode_direct_absolute" = no; then
+             add="$libdir/$linklib"
+           elif test "$hardcode_minus_L" = yes; then
+             add_dir="-L$libdir"
+             add="-l$name"
+           elif test "$hardcode_shlibpath_var" = yes; then
+             case :$finalize_shlibpath: in
+             *":$libdir:"*) ;;
+             *) func_append finalize_shlibpath "$libdir:" ;;
+             esac
+             add="-l$name"
+           elif test "$hardcode_automatic" = yes; 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 "$linkmode" = prog; 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 "$linkmode" = prog; 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 "$hardcode_direct" != unsupported; 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 "$build_libtool_libs" = yes; then
+         # Not a shared library
+         if test "$deplibs_check_method" != pass_all; 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 can not 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 "$module" = yes; 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 "$build_old_libs" = no; 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 "$linkmode" = lib; then
+         if test -n "$dependency_libs" &&
+            { test "$hardcode_into_libs" != yes ||
+              test "$build_old_libs" = yes ||
+              test "$link_static" = yes; }; 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 "$link_static" = no && 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 "$link_all_deplibs" != no; 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 "$pass" = link; then
+       if test "$linkmode" = "prog"; 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 "$pass" = dlpreopen; then
+       # Link the dlpreopened libraries before other libraries
+       for deplib in $save_deplibs; do
+         deplibs="$deplib $deplibs"
+       done
+      fi
+      if test "$pass" != dlopen; then
+       if test "$pass" != conv; then
+         # 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=
+       fi
+
+       if test "$linkmode,$pass" != "prog,link"; then
+         vars="deplibs"
+       else
+         vars="compile_deplibs finalize_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
+      # 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 "$linkmode" = prog; then
+      dlfiles="$newdlfiles"
+    fi
+    if test "$linkmode" = prog || test "$linkmode" = lib; then
+      dlprefiles="$newdlprefiles"
+    fi
+
+    case $linkmode in
+    oldlib)
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; 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 "$module" = no && \
+         func_fatal_help "libtool library \`$output' must begin with \`lib'"
+
+       if test "$need_lib_prefix" != no; 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 "$deplibs_check_method" != pass_all; 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 "$dlself" != no && \
+       func_warning "\`-dlopen self' is ignored for libtool libraries"
+
+      set dummy $rpath
+      shift
+      test "$#" -gt 1 && \
+       func_warning "ignoring multiple \`-rpath's for a libtool library"
+
+      install_libdir="$1"
+
+      oldlibs=
+      if test -z "$rpath"; then
+       if test "$build_libtool_libs" = yes; 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
+         # which has an extra 1 added just for fun
+         #
+         case $version_type in
+         darwin|linux|osf|windows|none)
+           func_arith $number_major + $number_minor
+           current=$func_arith_result
+           age="$number_minor"
+           revision="$number_revision"
+           ;;
+         freebsd-aout|freebsd-elf|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
+           ;;
+         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"
+         ;;
+
+       freebsd-aout)
+         major=".$current"
+         versuffix=".$current.$revision";
+         ;;
+
+       freebsd-elf)
+         major=".$current"
+         versuffix=".$current"
+         ;;
+
+       irix | nonstopux)
+         if test "X$lt_irix_increment" = "Xno"; 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 "$loop" -ne 0; 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)
+         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 "$loop" -ne 0; 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"
+         ;;
+
+       sunos)
+         major=".$current"
+         versuffix=".$current.$revision"
+         ;;
+
+       windows)
+         # Use '-' rather than '.', since we only want one
+         # extension on DOS 8.3 filesystems.
+         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 "$need_version" = no; then
+           versuffix=
+         else
+           versuffix=".0.0"
+         fi
+       fi
+
+       # Remove version info from name if versioning should be avoided
+       if test "$avoid_version" = yes && test "$need_version" = no; then
+         major=
+         versuffix=
+         verstring=""
+       fi
+
+       # Check to see if the archive will have undefined symbols.
+       if test "$allow_undefined" = yes; then
+         if test "$allow_undefined_flag" = unsupported; then
+           func_warning "undefined symbols not allowed in $host shared libraries"
+           build_libtool_libs=no
+           build_old_libs=yes
+         fi
+       else
+         # Don't allow undefined symbols.
+         allow_undefined_flag="$no_undefined_flag"
+       fi
+
+      fi
+
+      func_generate_dlsyms "$libname" "$libname" "yes"
+      func_append libobjs " $symfileobj"
+      test "X$libobjs" = "X " && libobjs=
+
+      if test "$opt_mode" != relink; 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 "X$precious_files_regex" != "X"; 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 "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; 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 "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; 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 "$build_libtool_libs" = yes; 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 "$build_libtool_need_lc" = "yes"; 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 <<EOF
+         int main() { return 0; }
+EOF
+         $opt_dry_run || $RM conftest
+         if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
+           ldd_output=`ldd conftest`
+           for i in $deplibs; do
+             case $i in
+             -l*)
+               func_stripname -l '' "$i"
+               name=$func_stripname_result
+               if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+                 case " $predeps $postdeps " in
+                 *" $i "*)
+                   func_append newdeplibs " $i"
+                   i=""
+                   ;;
+                 esac
+               fi
+               if test -n "$i" ; then
+                 libname=`eval "\\$ECHO \"$libname_spec\""`
+                 deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+                 set dummy $deplib_matches; shift
+                 deplib_match=$1
+                 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+                   func_append newdeplibs " $i"
+                 else
+                   droppeddeps=yes
+                   echo
+                   $ECHO "*** Warning: dynamic linker does not accept needed library $i."
+                   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 I believe you do not have"
+                   echo "*** because a test_compile did reveal that the linker did not use it for"
+                   echo "*** its dynamic dependency list that programs get resolved with at runtime."
+                 fi
+               fi
+               ;;
+             *)
+               func_append newdeplibs " $i"
+               ;;
+             esac
+           done
+         else
+           # Error occurred in the first compile.  Let's try to salvage
+           # the situation: Compile a separate program for each library.
+           for i in $deplibs; do
+             case $i in
+             -l*)
+               func_stripname -l '' "$i"
+               name=$func_stripname_result
+               $opt_dry_run || $RM conftest
+               if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
+                 ldd_output=`ldd conftest`
+                 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+                   case " $predeps $postdeps " in
+                   *" $i "*)
+                     func_append newdeplibs " $i"
+                     i=""
+                     ;;
+                   esac
+                 fi
+                 if test -n "$i" ; then
+                   libname=`eval "\\$ECHO \"$libname_spec\""`
+                   deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+                   set dummy $deplib_matches; shift
+                   deplib_match=$1
+                   if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+                     func_append newdeplibs " $i"
+                   else
+                     droppeddeps=yes
+                     echo
+                     $ECHO "*** Warning: dynamic linker does not accept needed library $i."
+                     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 a test_compile did reveal that the linker did not use this one"
+                     echo "*** as a dynamic dependency that programs can get resolved with at runtime."
+                   fi
+                 fi
+               else
+                 droppeddeps=yes
+                 echo
+                 $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
+                 echo "*** make it link in!  You will probably need to install it or some"
+                 echo "*** library that it depends on before this library will be fully"
+                 echo "*** functional.  Installing it before continuing would be even better."
+               fi
+               ;;
+             *)
+               func_append newdeplibs " $i"
+               ;;
+             esac
+           done
+         fi
+         ;;
+       file_magic*)
+         set dummy $deplibs_check_method; shift
+         file_magic_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 "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; 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\""`
+               if test -n "$file_magic_glob"; then
+                 libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
+               else
+                 libnameglob=$libname
+               fi
+               test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
+               for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+                 if test "$want_nocaseglob" = yes; then
+                   shopt -s nocaseglob
+                   potential_libs=`ls $i/$libnameglob[.-]* 2>/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 "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; 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 "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; 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 "X$deplibs_check_method" = "Xnone"; 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 "$droppeddeps" = yes; then
+         if test "$module" = yes; 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 "$build_old_libs" = no; 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 "$allow_undefined" = no; 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 "$build_old_libs" = no; 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 "$build_libtool_libs" = yes; then
+       if test "$hardcode_into_libs" = yes; then
+         # Hardcode the library paths
+         hardcode_libdirs=
+         dep_rpath=
+         rpath="$finalize_rpath"
+         test "$opt_mode" != relink && 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_apped 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"
+           if test -n "$hardcode_libdir_flag_spec_ld"; then
+             eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
+           else
+             eval dep_rpath=\"$hardcode_libdir_flag_spec\"
+           fi
+         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 "$opt_mode" != relink && 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
+           if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
+             # 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
+         fi
+         ;;
+       esac
+
+       # Prepare the list of exported symbols
+       if test -z "$export_symbols"; then
+         if test "$always_export_symbols" = yes || 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 "$try_normal_branch" = yes \
+                && { 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 "X$skipped_export" != "X:"; 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 "X$skipped_export" != "X:" && 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 "$compiler_needs_object" = yes &&
+           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 "$thread_safe" = yes && 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 "$opt_mode" = relink; 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 "$module" = yes && 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 "X$skipped_export" != "X:" &&
+          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 "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; 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 "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
+           output=${output_objdir}/${output_la}.lnk
+           func_verbose "creating linker input file list: $output"
+           : > $output
+           set x $save_libobjs
+           shift
+           firstobj=
+           if test "$compiler_needs_object" = yes; 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 "X$objlist" = X ||
+                  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 "$k" -eq 1 ; 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
+
+           if ${skipped_export-false}; then
+             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
+           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_silent || {
+                 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 "$opt_mode" = relink; 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
+
+          if ${skipped_export-false}; then
+           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
+         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 "$module" = yes && 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="$save_ifs"
+         eval cmd=\"$cmd\"
+         $opt_silent || {
+           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 "$opt_mode" = relink; 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 "$opt_mode" = relink; 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 "$module" = yes || test "$export_dynamic" = yes; then
+         # On all known operating systems, these are identical.
+         dlname="$soname"
+       fi
+      fi
+      ;;
+
+    obj)
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; 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=
+      # reload_cmds runs $LD directly, so let us get rid of
+      # -Wl from whole_archive_flag_spec and hope we can get by with
+      # turning comma into space..
+      wl=
+
+      if test -n "$convenience"; then
+       if test -n "$whole_archive_flag_spec"; then
+         eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
+         reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
+       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 "$build_libtool_libs" != yes && 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" ### testsuite: skip nested quoting test
+
+      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
+
+      if test "$build_libtool_libs" != yes; then
+       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
+      fi
+
+      if test -n "$pic_flag" || test "$pic_mode" != default; 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"
+
+      test "$preload" = yes \
+        && test "$dlopen_support" = unknown \
+       && test "$dlopen_self" = unknown \
+       && test "$dlopen_self_static" = unknown && \
+         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 "$tagname" = CXX ; 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 "$build_old_libs" = yes; 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@" "no"
+
+      # template prelinking step
+      if test -n "$prelink_cmds"; then
+       func_execute_cmds "$prelink_cmds" 'exit $?'
+      fi
+
+      wrappers_required=yes
+      case $host in
+      *cegcc* | *mingw32ce*)
+        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
+        wrappers_required=no
+        ;;
+      *cygwin* | *mingw* )
+        if test "$build_libtool_libs" != yes; then
+          wrappers_required=no
+        fi
+        ;;
+      *)
+        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+          wrappers_required=no
+        fi
+        ;;
+      esac
+      if test "$wrappers_required" = no; then
+       # 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
+      fi
+
+      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 "$no_install" = yes; 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
+
+      if test "$hardcode_action" = relink; then
+       # 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"
+      else
+       if test "$fast_install" != no; then
+         link_command="$finalize_var$compile_command$finalize_rpath"
+         if test "$fast_install" = yes; then
+           relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
+         else
+           # fast_install is set to needless
+           relink_command=
+         fi
+       else
+         link_command="$compile_var$compile_command$compile_rpath"
+         relink_command="$finalize_var$finalize_command$finalize_rpath"
+       fi
+      fi
+
+      # 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
+
+      if test "$build_libtool_libs" = convenience; then
+       oldobjs="$libobjs_save $symfileobj"
+       addlibs="$convenience"
+       build_libtool_libs=no
+      else
+       if test "$build_libtool_libs" = module; then
+         oldobjs="$libobjs_save"
+         build_libtool_libs=no
+       else
+         oldobjs="$old_deplibs $non_pic_objects"
+         if test "$preload" = yes && test -f "$symfileobj"; then
+           func_append oldobjs " $symfileobj"
+         fi
+       fi
+       addlibs="$old_convenience"
+      fi
+
+      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 "$build_libtool_libs" = yes; 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
+       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 "X$oldobjs" = "X" ; 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 "$build_old_libs" = yes && 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 "$hardcode_automatic" = yes ; then
+       relink_command=
+      fi
+
+      # Only create the output if not a dry run.
+      $opt_dry_run || {
+       for installed in no yes; do
+         if test "$installed" = yes; 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"
+               eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+               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 "x$bindir" != x ;
+             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$TIMESTAMP) $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 can not 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 "$installed" = no && test "$need_relink" = yes; 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
+}
+
+{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
+    func_mode_link ${1+"$@"}
+
+
+# func_mode_uninstall arg...
+func_mode_uninstall ()
+{
+    $opt_debug
+    RM="$nonopt"
+    files=
+    rmforce=
+    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=yes ;;
+      -*) 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 "X$dir" = X.; then
+       odir="$objdir"
+      else
+       odir="$dir/$objdir"
+      fi
+      func_basename "$file"
+      name="$func_basename_result"
+      test "$opt_mode" = uninstall && odir="$dir"
+
+      # Remember odir for removal later, being careful to avoid duplicates
+      if test "$opt_mode" = clean; 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 test "$rmforce" = yes; 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" 'test "$rmforce" = yes || exit_status=1'
+           fi
+
+           if test -n "$old_library"; then
+             # Do each command in the old_postuninstall commands.
+             func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || 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 "$pic_object" != none; 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 "$non_pic_object" != none; then
+           func_append rmfiles " $dir/$non_pic_object"
+         fi
+       fi
+       ;;
+
+      *)
+       if test "$opt_mode" = clean ; 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 "$fast_install" = yes && 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
+}
+
+{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
+    func_mode_uninstall ${1+"$@"}
+
+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
+# in which 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:
+# vi:sw=2
+
diff --git a/build-aux/mdate-sh b/build-aux/mdate-sh
new file mode 100755 (executable)
index 0000000..60dc485
--- /dev/null
@@ -0,0 +1,225 @@
+#!/bin/sh
+# Get modification time of a file or directory and pretty-print it.
+
+scriptversion=2010-08-21.06; # UTC
+
+# Copyright (C) 1995, 1996, 1997, 2003, 2004, 2005, 2007, 2009, 2010
+# Free Software Foundation, Inc.
+# written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, June 1995
+#
+# 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, 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 <http://www.gnu.org/licenses/>.
+
+# 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 file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+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
+fi
+
+case $1 in
+  '')
+     echo "$0: No file.  Try \`$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: mdate-sh [--help] [--version] FILE
+
+Pretty-print the modification day of FILE, in the format:
+1 January 1970
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "mdate-sh $scriptversion"
+    exit $?
+    ;;
+esac
+
+error ()
+{
+  echo "$0: $1" >&2
+  exit 1
+}
+
+
+# Prevent date giving response in another language.
+LANG=C
+export LANG
+LC_ALL=C
+export LC_ALL
+LC_TIME=C
+export LC_TIME
+
+# GNU ls changes its time format in response to the TIME_STYLE
+# variable.  Since we cannot assume `unset' works, revert this
+# variable to its documented default.
+if test "${TIME_STYLE+set}" = set; then
+  TIME_STYLE=posix-long-iso
+  export TIME_STYLE
+fi
+
+save_arg1=$1
+
+# Find out how to get the extended ls output of a file or directory.
+if ls -L /dev/null 1>/dev/null 2>&1; then
+  ls_command='ls -L -l -d'
+else
+  ls_command='ls -l -d'
+fi
+# Avoid user/group names that might have spaces, when possible.
+if ls -n /dev/null 1>/dev/null 2>&1; then
+  ls_command="$ls_command -n"
+fi
+
+# A `ls -l' line looks as follows on OS/2.
+#  drwxrwx---        0 Aug 11  2001 foo
+# This differs from Unix, which adds ownership information.
+#  drwxrwx---   2 root  root      4096 Aug 11  2001 foo
+#
+# To find the date, we split the line on spaces and iterate on words
+# until we find a month.  This cannot work with files whose owner is a
+# user named `Jan', or `Feb', etc.  However, it's unlikely that `/'
+# will be owned by a user whose name is a month.  So we first look at
+# the extended ls output of the root directory to decide how many
+# words should be skipped to get the date.
+
+# On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below.
+set x`$ls_command /`
+
+# Find which argument is the month.
+month=
+command=
+until test $month
+do
+  test $# -gt 0 || error "failed parsing \`$ls_command /' output"
+  shift
+  # Add another shift to the command.
+  command="$command shift;"
+  case $1 in
+    Jan) month=January; nummonth=1;;
+    Feb) month=February; nummonth=2;;
+    Mar) month=March; nummonth=3;;
+    Apr) month=April; nummonth=4;;
+    May) month=May; nummonth=5;;
+    Jun) month=June; nummonth=6;;
+    Jul) month=July; nummonth=7;;
+    Aug) month=August; nummonth=8;;
+    Sep) month=September; nummonth=9;;
+    Oct) month=October; nummonth=10;;
+    Nov) month=November; nummonth=11;;
+    Dec) month=December; nummonth=12;;
+  esac
+done
+
+test -n "$month" || error "failed parsing \`$ls_command /' output"
+
+# Get the extended ls output of the file or directory.
+set dummy x`eval "$ls_command \"\\\$save_arg1\""`
+
+# Remove all preceding arguments
+eval $command
+
+# Because of the dummy argument above, month is in $2.
+#
+# On a POSIX system, we should have
+#
+# $# = 5
+# $1 = file size
+# $2 = month
+# $3 = day
+# $4 = year or time
+# $5 = filename
+#
+# On Darwin 7.7.0 and 7.6.0, we have
+#
+# $# = 4
+# $1 = day
+# $2 = month
+# $3 = year or time
+# $4 = filename
+
+# Get the month.
+case $2 in
+  Jan) month=January; nummonth=1;;
+  Feb) month=February; nummonth=2;;
+  Mar) month=March; nummonth=3;;
+  Apr) month=April; nummonth=4;;
+  May) month=May; nummonth=5;;
+  Jun) month=June; nummonth=6;;
+  Jul) month=July; nummonth=7;;
+  Aug) month=August; nummonth=8;;
+  Sep) month=September; nummonth=9;;
+  Oct) month=October; nummonth=10;;
+  Nov) month=November; nummonth=11;;
+  Dec) month=December; nummonth=12;;
+esac
+
+case $3 in
+  ???*) day=$1;;
+  *) day=$3; shift;;
+esac
+
+# Here we have to deal with the problem that the ls output gives either
+# the time of day or the year.
+case $3 in
+  *:*) set `date`; eval year=\$$#
+       case $2 in
+        Jan) nummonthtod=1;;
+        Feb) nummonthtod=2;;
+        Mar) nummonthtod=3;;
+        Apr) nummonthtod=4;;
+        May) nummonthtod=5;;
+        Jun) nummonthtod=6;;
+        Jul) nummonthtod=7;;
+        Aug) nummonthtod=8;;
+        Sep) nummonthtod=9;;
+        Oct) nummonthtod=10;;
+        Nov) nummonthtod=11;;
+        Dec) nummonthtod=12;;
+       esac
+       # For the first six month of the year the time notation can also
+       # be used for files modified in the last year.
+       if (expr $nummonth \> $nummonthtod) > /dev/null;
+       then
+        year=`expr $year - 1`
+       fi;;
+  *) year=$3;;
+esac
+
+# The result.
+echo $day $month $year
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/build-aux/missing b/build-aux/missing
new file mode 100755 (executable)
index 0000000..28055d2
--- /dev/null
@@ -0,0 +1,376 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+
+scriptversion=2009-04-28.21; # UTC
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
+# 2008, 2009 Free Software Foundation, Inc.
+# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
+
+# 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, 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 <http://www.gnu.org/licenses/>.
+
+# 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.
+
+if test $# -eq 0; then
+  echo 1>&2 "Try \`$0 --help' for more information"
+  exit 1
+fi
+
+run=:
+sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
+sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
+
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+  configure_ac=configure.ac
+else
+  configure_ac=configure.in
+fi
+
+msg="missing on your system"
+
+case $1 in
+--run)
+  # Try to run requested program, and just exit if it succeeds.
+  run=
+  shift
+  "$@" && exit 0
+  # Exit code 63 means version mismatch.  This often happens
+  # when the user try to use an ancient version of a tool on
+  # a file that requires a minimum version.  In this case we
+  # we should proceed has if the program had been absent, or
+  # if --run hadn't been passed.
+  if test $? = 63; then
+    run=:
+    msg="probably too old"
+  fi
+  ;;
+
+  -h|--h|--he|--hel|--help)
+    echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+  -h, --help      display this help and exit
+  -v, --version   output version information and exit
+  --run           try to run the given command, and emulate it if it fails
+
+Supported PROGRAM values:
+  aclocal      touch file \`aclocal.m4'
+  autoconf     touch file \`configure'
+  autoheader   touch file \`config.h.in'
+  autom4te     touch the output file, or create a stub one
+  automake     touch all \`Makefile.in' files
+  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
+  flex         create \`lex.yy.c', if possible, from existing .c
+  help2man     touch the output file
+  lex          create \`lex.yy.c', if possible, from existing .c
+  makeinfo     touch the output file
+  tar          try tar, gnutar, gtar, then tar without non-portable flags
+  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
+
+Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
+\`g' are ignored when checking the name.
+
+Send bug reports to <bug-automake@gnu.org>."
+    exit $?
+    ;;
+
+  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+    echo "missing $scriptversion (GNU Automake)"
+    exit $?
+    ;;
+
+  -*)
+    echo 1>&2 "$0: Unknown \`$1' option"
+    echo 1>&2 "Try \`$0 --help' for more information"
+    exit 1
+    ;;
+
+esac
+
+# normalize program name to check for.
+program=`echo "$1" | sed '
+  s/^gnu-//; t
+  s/^gnu//; t
+  s/^g//; t'`
+
+# Now exit if we have it, but it failed.  Also exit now if we
+# don't have it and --version was passed (most likely to detect
+# the program).  This is about non-GNU programs, so use $1 not
+# $program.
+case $1 in
+  lex*|yacc*)
+    # Not GNU programs, they don't have --version.
+    ;;
+
+  tar*)
+    if test -n "$run"; then
+       echo 1>&2 "ERROR: \`tar' requires --run"
+       exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       exit 1
+    fi
+    ;;
+
+  *)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       # Could not run --version or --help.  This is probably someone
+       # running `$TOOL --version' or `$TOOL --help' to check whether
+       # $TOOL exists and not knowing $TOOL uses missing.
+       exit 1
+    fi
+    ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case $program in
+  aclocal*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
+         to install the \`Automake' and \`Perl' packages.  Grab them from
+         any GNU archive site."
+    touch aclocal.m4
+    ;;
+
+  autoconf*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`${configure_ac}'.  You might want to install the
+         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
+         archive site."
+    touch configure
+    ;;
+
+  autoheader*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
+         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
+         from any GNU archive site."
+    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+    test -z "$files" && files="config.h"
+    touch_files=
+    for f in $files; do
+      case $f in
+      *:*) touch_files="$touch_files "`echo "$f" |
+                                      sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+      *) touch_files="$touch_files $f.in";;
+      esac
+    done
+    touch $touch_files
+    ;;
+
+  automake*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+         You might want to install the \`Automake' and \`Perl' packages.
+         Grab them from any GNU archive site."
+    find . -type f -name Makefile.am -print |
+          sed 's/\.am$/.in/' |
+          while read f; do touch "$f"; done
+    ;;
+
+  autom4te*)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, but is $msg.
+         You might have modified some files without having the
+         proper tools for further handling them.
+         You can get \`$1' as part of \`Autoconf' from any GNU
+         archive site."
+
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -f "$file"; then
+       touch $file
+    else
+       test -z "$file" || exec >$file
+       echo "#! /bin/sh"
+       echo "# Created by GNU Automake missing as a replacement of"
+       echo "#  $ $@"
+       echo "exit 0"
+       chmod +x $file
+       exit 1
+    fi
+    ;;
+
+  bison*|yacc*)
+    echo 1>&2 "\
+WARNING: \`$1' $msg.  You should only need it if
+         you modified a \`.y' file.  You may need the \`Bison' package
+         in order for those modifications to take effect.  You can get
+         \`Bison' from any GNU archive site."
+    rm -f y.tab.c y.tab.h
+    if test $# -ne 1; then
+        eval LASTARG="\${$#}"
+       case $LASTARG in
+       *.y)
+           SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+           if test -f "$SRCFILE"; then
+                cp "$SRCFILE" y.tab.c
+           fi
+           SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+           if test -f "$SRCFILE"; then
+                cp "$SRCFILE" y.tab.h
+           fi
+         ;;
+       esac
+    fi
+    if test ! -f y.tab.h; then
+       echo >y.tab.h
+    fi
+    if test ! -f y.tab.c; then
+       echo 'main() { return 0; }' >y.tab.c
+    fi
+    ;;
+
+  lex*|flex*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified a \`.l' file.  You may need the \`Flex' package
+         in order for those modifications to take effect.  You can get
+         \`Flex' from any GNU archive site."
+    rm -f lex.yy.c
+    if test $# -ne 1; then
+        eval LASTARG="\${$#}"
+       case $LASTARG in
+       *.l)
+           SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+           if test -f "$SRCFILE"; then
+                cp "$SRCFILE" lex.yy.c
+           fi
+         ;;
+       esac
+    fi
+    if test ! -f lex.yy.c; then
+       echo 'main() { return 0; }' >lex.yy.c
+    fi
+    ;;
+
+  help2man*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+        you modified a dependency of a manual page.  You may need the
+        \`Help2man' package in order for those modifications to take
+        effect.  You can get \`Help2man' from any GNU archive site."
+
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -f "$file"; then
+       touch $file
+    else
+       test -z "$file" || exec >$file
+       echo ".ab help2man is required to generate this page"
+       exit $?
+    fi
+    ;;
+
+  makeinfo*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified a \`.texi' or \`.texinfo' file, or any other file
+         indirectly affecting the aspect of the manual.  The spurious
+         call might also be the consequence of using a buggy \`make' (AIX,
+         DU, IRIX).  You might want to install the \`Texinfo' package or
+         the \`GNU make' package.  Grab either from any GNU archive site."
+    # The file to touch is that specified with -o ...
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -z "$file"; then
+      # ... or it is the one specified with @setfilename ...
+      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+      file=`sed -n '
+       /^@setfilename/{
+         s/.* \([^ ]*\) *$/\1/
+         p
+         q
+       }' $infile`
+      # ... or it is derived from the source name (dir/f.texi becomes f.info)
+      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
+    fi
+    # If the file does not exist, the user really needs makeinfo;
+    # let's fail without touching anything.
+    test -f $file || exit 1
+    touch $file
+    ;;
+
+  tar*)
+    shift
+
+    # We have already tried tar in the generic part.
+    # Look for gnutar/gtar before invocation to avoid ugly error
+    # messages.
+    if (gnutar --version > /dev/null 2>&1); then
+       gnutar "$@" && exit 0
+    fi
+    if (gtar --version > /dev/null 2>&1); then
+       gtar "$@" && exit 0
+    fi
+    firstarg="$1"
+    if shift; then
+       case $firstarg in
+       *o*)
+           firstarg=`echo "$firstarg" | sed s/o//`
+           tar "$firstarg" "$@" && exit 0
+           ;;
+       esac
+       case $firstarg in
+       *h*)
+           firstarg=`echo "$firstarg" | sed s/h//`
+           tar "$firstarg" "$@" && exit 0
+           ;;
+       esac
+    fi
+
+    echo 1>&2 "\
+WARNING: I can't seem to be able to run \`tar' with the given arguments.
+         You may want to install GNU tar or Free paxutils, or check the
+         command line arguments."
+    exit 1
+    ;;
+
+  *)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, and is $msg.
+         You might have modified some files without having the
+         proper tools for further handling them.  Check the \`README' file,
+         it often tells you about the needed prerequisites for installing
+         this package.  You may also peek at any GNU archive site, in case
+         some other package would contain this missing \`$1' program."
+    exit 1
+    ;;
+esac
+
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/build-aux/mktempd b/build-aux/mktempd
new file mode 100755 (executable)
index 0000000..7a09a4b
--- /dev/null
@@ -0,0 +1,134 @@
+#!/bin/sh
+# Create a temporary directory, much like mktemp -d does.
+
+# Copyright (C) 2007-2011 Free Software Foundation, 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, 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 <http://www.gnu.org/licenses/>.
+
+# Written by Jim Meyering.
+
+# Usage: mktempd /tmp phoey.XXXXXXXXXX
+
+# First, try to use the mktemp program.
+# Failing that, we'll roll our own mktemp-like function:
+#  - try to get random bytes from /dev/urandom
+#  - failing that, generate output from a combination of quickly-varying
+#      sources and gzip.  Ignore non-varying gzip header, and extract
+#      "random" bits from there.
+#  - given those bits, map to file-name bytes using tr, and try to create
+#      the desired directory.
+#  - make only $MAX_TRIES attempts
+
+ME=`basename "$0"`
+die() { echo >&2 "$ME: $@"; exit 1; }
+
+MAX_TRIES=4
+
+rand_bytes()
+{
+  n=$1
+
+  chars=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
+
+  dev_rand=/dev/urandom
+  if test -r "$dev_rand"; then
+    # Note: 256-length($chars) == 194; 3 copies of $chars is 186 + 8 = 194.
+    dd ibs=$n count=1 if="$dev_rand" | tr -c $chars 01234567$chars$chars$chars
+    return
+  fi
+
+  cmds='date; date +%N; free; who -a; w; ps auxww; ps ef; netstat -n'
+  data=` (eval "$cmds") 2>&1 | gzip `
+
+  n_plus_50=`expr $n + 50`
+
+  # Ensure that $data has length at least 50+$n
+  while :; do
+    len=`echo "$data"|wc -c`
+    test $n_plus_50 -le $len && break;
+    data=` (echo "$data"; eval "$cmds") 2>&1 | gzip `
+  done
+
+  echo "$data" \
+    | dd bs=1 skip=50 count=$n 2>/dev/null \
+    | tr -c $chars 01234567$chars$chars$chars
+}
+
+mktempd()
+{
+  case $# in
+  2);;
+  *) die "Usage: $ME DIR TEMPLATE";;
+  esac
+
+  destdir=$1
+  template=$2
+
+  # Disallow any trailing slash on specified destdir:
+  # it would subvert the post-mktemp "case"-based destdir test.
+  case $destdir in
+  /) ;;
+  */) die "invalid destination dir: remove trailing slash(es)";;
+  esac
+
+  case $template in
+  *XXXX) ;;
+  *) die "invalid template: $template (must have a suffix of at least 4 X's)";;
+  esac
+
+  fail=0
+
+  # First, try to use mktemp.
+  d=`env -u TMPDIR mktemp -d -t -p "$destdir" "$template" 2>/dev/null` \
+    || fail=1
+
+  # The resulting name must be in the specified directory.
+  case $d in "$destdir"*);; *) fail=1;; esac
+
+  # It must have created the directory.
+  test -d "$d" || fail=1
+
+  # It must have 0700 permissions.  Handle sticky "S" bits.
+  perms=`ls -dgo "$d" 2>/dev/null|tr S -` || fail=1
+  case $perms in drwx------*) ;; *) fail=1;; esac
+
+  test $fail = 0 && {
+    echo "$d"
+    return
+  }
+
+  # If we reach this point, we'll have to create a directory manually.
+
+  # Get a copy of the template without its suffix of X's.
+  base_template=`echo "$template"|sed 's/XX*$//'`
+
+  # Calculate how many X's we've just removed.
+  template_length=`echo "$template" | wc -c`
+  nx=`echo "$base_template" | wc -c`
+  nx=`expr $template_length - $nx`
+
+  err=
+  i=1
+  while :; do
+    X=`rand_bytes $nx`
+    candidate_dir="$destdir/$base_template$X"
+    err=`mkdir -m 0700 "$candidate_dir" 2>&1` \
+      && { echo "$candidate_dir"; return; }
+    test $MAX_TRIES -le $i && break;
+    i=`expr $i + 1`
+  done
+  die "$err"
+}
+
+mktempd "$@"
diff --git a/build-aux/texinfo.tex b/build-aux/texinfo.tex
new file mode 100644 (file)
index 0000000..fd22fd6
--- /dev/null
@@ -0,0 +1,9625 @@
+% texinfo.tex -- TeX macros to handle Texinfo files.
+% 
+% Load plain if necessary, i.e., if running under initex.
+\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
+%
+\def\texinfoversion{2011-05-23.16}
+%
+% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
+% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+% 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+%
+% 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 3 of the
+% License, 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 program.  If not, see <http://www.gnu.org/licenses/>.
+%
+% 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.)
+%
+% Please try the latest version of texinfo.tex before submitting bug
+% reports; you can get the latest version from:
+%   http://www.gnu.org/software/texinfo/ (the Texinfo home page), or
+%   ftp://tug.org/tex/texinfo.tex
+%     (and all CTAN mirrors, see http://www.ctan.org).
+% The texinfo.tex in any given distribution could well be out
+% of date, so if that's what you're using, please check.
+%
+% Send bug reports to bug-texinfo@gnu.org.  Please include including a
+% complete document in each bug report with which we can reproduce the
+% problem.  Patches are, of course, greatly appreciated.
+%
+% To process a Texinfo manual with TeX, it's most reliable to use the
+% texi2dvi shell script that comes with the distribution.  For a simple
+% manual foo.texi, however, you can get away with this:
+%   tex foo.texi
+%   texindex foo.??
+%   tex foo.texi
+%   tex foo.texi
+%   dvips foo.dvi -o  # or whatever; this makes foo.ps.
+% The extra TeX runs get the cross-reference information correct.
+% Sometimes one run after texindex suffices, and sometimes you need more
+% than two; texi2dvi does it as many times as necessary.
+%
+% It is possible to adapt texinfo.tex for other languages, to some
+% extent.  You can get the existing language-specific files from the
+% full Texinfo distribution.
+%
+% The GNU Texinfo home page is http://www.gnu.org/software/texinfo.
+
+
+\message{Loading texinfo [version \texinfoversion]:}
+
+% If in a .fmt file, print the version number
+% and turn on active characters that we couldn't do earlier because
+% they might have appeared in the input file name.
+\everyjob{\message{[Texinfo version \texinfoversion]}%
+  \catcode`+=\active \catcode`\_=\active}
+
+\chardef\other=12
+
+% We never want plain's \outer definition of \+ in Texinfo.
+% For @tex, we can use \tabalign.
+\let\+ = \relax
+
+% Save some plain tex macros whose names we will redefine.
+\let\ptexb=\b
+\let\ptexbullet=\bullet
+\let\ptexc=\c
+\let\ptexcomma=\,
+\let\ptexdot=\.
+\let\ptexdots=\dots
+\let\ptexend=\end
+\let\ptexequiv=\equiv
+\let\ptexexclam=\!
+\let\ptexfootnote=\footnote
+\let\ptexgtr=>
+\let\ptexhat=^
+\let\ptexi=\i
+\let\ptexindent=\indent
+\let\ptexinsert=\insert
+\let\ptexlbrace=\{
+\let\ptexless=<
+\let\ptexnewwrite\newwrite
+\let\ptexnoindent=\noindent
+\let\ptexplus=+
+\let\ptexraggedright=\raggedright
+\let\ptexrbrace=\}
+\let\ptexslash=\/
+\let\ptexstar=\*
+\let\ptext=\t
+\let\ptextop=\top
+{\catcode`\'=\active \global\let\ptexquoteright'}% active in plain's math mode
+
+% If this character appears in an error message or help string, it
+% starts a new line in the output.
+\newlinechar = `^^J
+
+% Use TeX 3.0's \inputlineno to get the line number, for better error
+% messages, but if we're using an old version of TeX, don't do anything.
+%
+\ifx\inputlineno\thisisundefined
+  \let\linenumber = \empty % Pre-3.0.
+\else
+  \def\linenumber{l.\the\inputlineno:\space}
+\fi
+
+% Set up fixed words for English if not already set.
+\ifx\putwordAppendix\undefined  \gdef\putwordAppendix{Appendix}\fi
+\ifx\putwordChapter\undefined   \gdef\putwordChapter{Chapter}\fi
+\ifx\putwordfile\undefined      \gdef\putwordfile{file}\fi
+\ifx\putwordin\undefined        \gdef\putwordin{in}\fi
+\ifx\putwordIndexIsEmpty\undefined       \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
+\ifx\putwordIndexNonexistent\undefined   \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
+\ifx\putwordInfo\undefined      \gdef\putwordInfo{Info}\fi
+\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi
+\ifx\putwordMethodon\undefined  \gdef\putwordMethodon{Method on}\fi
+\ifx\putwordNoTitle\undefined   \gdef\putwordNoTitle{No Title}\fi
+\ifx\putwordof\undefined        \gdef\putwordof{of}\fi
+\ifx\putwordon\undefined        \gdef\putwordon{on}\fi
+\ifx\putwordpage\undefined      \gdef\putwordpage{page}\fi
+\ifx\putwordsection\undefined   \gdef\putwordsection{section}\fi
+\ifx\putwordSection\undefined   \gdef\putwordSection{Section}\fi
+\ifx\putwordsee\undefined       \gdef\putwordsee{see}\fi
+\ifx\putwordSee\undefined       \gdef\putwordSee{See}\fi
+\ifx\putwordShortTOC\undefined  \gdef\putwordShortTOC{Short Contents}\fi
+\ifx\putwordTOC\undefined       \gdef\putwordTOC{Table of Contents}\fi
+%
+\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi
+\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi
+\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi
+\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi
+\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi
+\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi
+\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi
+\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi
+\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi
+\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi
+\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi
+\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi
+%
+\ifx\putwordDefmac\undefined    \gdef\putwordDefmac{Macro}\fi
+\ifx\putwordDefspec\undefined   \gdef\putwordDefspec{Special Form}\fi
+\ifx\putwordDefvar\undefined    \gdef\putwordDefvar{Variable}\fi
+\ifx\putwordDefopt\undefined    \gdef\putwordDefopt{User Option}\fi
+\ifx\putwordDeffunc\undefined   \gdef\putwordDeffunc{Function}\fi
+
+% Since the category of space is not known, we have to be careful.
+\chardef\spacecat = 10
+\def\spaceisspace{\catcode`\ =\spacecat}
+
+% sometimes characters are active, so we need control sequences.
+\chardef\ampChar   = `\&
+\chardef\colonChar = `\:
+\chardef\commaChar = `\,
+\chardef\dashChar  = `\-
+\chardef\dotChar   = `\.
+\chardef\exclamChar= `\!
+\chardef\hashChar  = `\#
+\chardef\lquoteChar= `\`
+\chardef\questChar = `\?
+\chardef\rquoteChar= `\'
+\chardef\semiChar  = `\;
+\chardef\slashChar = `\/
+\chardef\underChar = `\_
+
+% Ignore a token.
+%
+\def\gobble#1{}
+
+% The following is used inside several \edef's.
+\def\makecsname#1{\expandafter\noexpand\csname#1\endcsname}
+
+% Hyphenation fixes.
+\hyphenation{
+  Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script
+  ap-pen-dix bit-map bit-maps
+  data-base data-bases eshell fall-ing half-way long-est man-u-script
+  man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm
+  par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces
+  spell-ing spell-ings
+  stand-alone strong-est time-stamp time-stamps which-ever white-space
+  wide-spread wrap-around
+}
+
+% Margin to add to right of even pages, to left of odd pages.
+\newdimen\bindingoffset
+\newdimen\normaloffset
+\newdimen\pagewidth \newdimen\pageheight
+
+% For a final copy, take out the rectangles
+% that mark overfull boxes (in case you have decided
+% that the text looks ok even though it passes the margin).
+%
+\def\finalout{\overfullrule=0pt }
+
+% Sometimes it is convenient to have everything in the transcript file
+% and nothing on the terminal.  We don't just call \tracingall here,
+% since that produces some useless output on the terminal.  We also make
+% some effort to order the tracing commands to reduce output in the log
+% file; cf. trace.sty in LaTeX.
+%
+\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}%
+\def\loggingall{%
+  \tracingstats2
+  \tracingpages1
+  \tracinglostchars2  % 2 gives us more in etex
+  \tracingparagraphs1
+  \tracingoutput1
+  \tracingmacros2
+  \tracingrestores1
+  \showboxbreadth\maxdimen \showboxdepth\maxdimen
+  \ifx\eTeXversion\thisisundefined\else % etex gives us more logging
+    \tracingscantokens1
+    \tracingifs1
+    \tracinggroups1
+    \tracingnesting2
+    \tracingassigns1
+  \fi
+  \tracingcommands3  % 3 gives us more in etex
+  \errorcontextlines16
+}%
+
+% add check for \lastpenalty to plain's definitions.  If the last thing
+% we did was a \nobreak, we don't want to insert more space.
+%
+\def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount
+  \removelastskip\penalty-50\smallskip\fi\fi}
+\def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount
+  \removelastskip\penalty-100\medskip\fi\fi}
+\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount
+  \removelastskip\penalty-200\bigskip\fi\fi}
+
+% Do @cropmarks to get crop marks.
+%
+\newif\ifcropmarks
+\let\cropmarks = \cropmarkstrue
+%
+% Dimensions to add cropmarks at corners.
+% Added by P. A. MacKay, 12 Nov. 1986
+%
+\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines
+\newdimen\cornerlong  \cornerlong=1pc
+\newdimen\cornerthick \cornerthick=.3pt
+\newdimen\topandbottommargin \topandbottommargin=.75in
+
+% Output a mark which sets \thischapter, \thissection and \thiscolor.
+% We dump everything together because we only have one kind of mark.
+% This works because we only use \botmark / \topmark, not \firstmark.
+%
+% A mark contains a subexpression of the \ifcase ... \fi construct.
+% \get*marks macros below extract the needed part using \ifcase.
+%
+% Another complication is to let the user choose whether \thischapter
+% (\thissection) refers to the chapter (section) in effect at the top
+% of a page, or that at the bottom of a page.  The solution is
+% described on page 260 of The TeXbook.  It involves outputting two
+% marks for the sectioning macros, one before the section break, and
+% one after.  I won't pretend I can describe this better than DEK...
+\def\domark{%
+  \toks0=\expandafter{\lastchapterdefs}%
+  \toks2=\expandafter{\lastsectiondefs}%
+  \toks4=\expandafter{\prevchapterdefs}%
+  \toks6=\expandafter{\prevsectiondefs}%
+  \toks8=\expandafter{\lastcolordefs}%
+  \mark{%
+                   \the\toks0 \the\toks2
+      \noexpand\or \the\toks4 \the\toks6
+    \noexpand\else \the\toks8
+  }%
+}
+% \topmark doesn't work for the very first chapter (after the title
+% page or the contents), so we use \firstmark there -- this gets us
+% the mark with the chapter defs, unless the user sneaks in, e.g.,
+% @setcolor (or @url, or @link, etc.) between @contents and the very
+% first @chapter.
+\def\gettopheadingmarks{%
+  \ifcase0\topmark\fi
+  \ifx\thischapter\empty \ifcase0\firstmark\fi \fi
+}
+\def\getbottomheadingmarks{\ifcase1\botmark\fi}
+\def\getcolormarks{\ifcase2\topmark\fi}
+
+% Avoid "undefined control sequence" errors.
+\def\lastchapterdefs{}
+\def\lastsectiondefs{}
+\def\prevchapterdefs{}
+\def\prevsectiondefs{}
+\def\lastcolordefs{}
+
+% Main output routine.
+\chardef\PAGE = 255
+\output = {\onepageout{\pagecontents\PAGE}}
+
+\newbox\headlinebox
+\newbox\footlinebox
+
+% \onepageout takes a vbox as an argument.  Note that \pagecontents
+% does insertions, but you have to call it yourself.
+\def\onepageout#1{%
+  \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi
+  %
+  \ifodd\pageno  \advance\hoffset by \bindingoffset
+  \else \advance\hoffset by -\bindingoffset\fi
+  %
+  % Do this outside of the \shipout so @code etc. will be expanded in
+  % the headline as they should be, not taken literally (outputting ''code).
+  \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi
+  \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}%
+  \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi
+  \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}%
+  %
+  {%
+    % Have to do this stuff outside the \shipout because we want it to
+    % take effect in \write's, yet the group defined by the \vbox ends
+    % before the \shipout runs.
+    %
+    \indexdummies         % don't expand commands in the output.
+    \normalturnoffactive  % \ in index entries must not stay \, e.g., if
+               % the page break happens to be in the middle of an example.
+               % We don't want .vr (or whatever) entries like this:
+               % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}}
+               % "\acronym" won't work when it's read back in;
+               % it needs to be
+               % {\code {{\tt \backslashcurfont }acronym}
+    \shipout\vbox{%
+      % Do this early so pdf references go to the beginning of the page.
+      \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi
+      %
+      \ifcropmarks \vbox to \outervsize\bgroup
+        \hsize = \outerhsize
+        \vskip-\topandbottommargin
+        \vtop to0pt{%
+          \line{\ewtop\hfil\ewtop}%
+          \nointerlineskip
+          \line{%
+            \vbox{\moveleft\cornerthick\nstop}%
+            \hfill
+            \vbox{\moveright\cornerthick\nstop}%
+          }%
+          \vss}%
+        \vskip\topandbottommargin
+        \line\bgroup
+          \hfil % center the page within the outer (page) hsize.
+          \ifodd\pageno\hskip\bindingoffset\fi
+          \vbox\bgroup
+      \fi
+      %
+      \unvbox\headlinebox
+      \pagebody{#1}%
+      \ifdim\ht\footlinebox > 0pt
+        % Only leave this space if the footline is nonempty.
+        % (We lessened \vsize for it in \oddfootingyyy.)
+        % The \baselineskip=24pt in plain's \makefootline has no effect.
+        \vskip 24pt
+        \unvbox\footlinebox
+      \fi
+      %
+      \ifcropmarks
+          \egroup % end of \vbox\bgroup
+        \hfil\egroup % end of (centering) \line\bgroup
+        \vskip\topandbottommargin plus1fill minus1fill
+        \boxmaxdepth = \cornerthick
+        \vbox to0pt{\vss
+          \line{%
+            \vbox{\moveleft\cornerthick\nsbot}%
+            \hfill
+            \vbox{\moveright\cornerthick\nsbot}%
+          }%
+          \nointerlineskip
+          \line{\ewbot\hfil\ewbot}%
+        }%
+      \egroup % \vbox from first cropmarks clause
+      \fi
+    }% end of \shipout\vbox
+  }% end of group with \indexdummies
+  \advancepageno
+  \ifnum\outputpenalty>-20000 \else\dosupereject\fi
+}
+
+\newinsert\margin \dimen\margin=\maxdimen
+
+\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}}
+{\catcode`\@ =11
+\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi
+% marginal hacks, juha@viisa.uucp (Juha Takala)
+\ifvoid\margin\else % marginal info is present
+  \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi
+\dimen@=\dp#1\relax \unvbox#1\relax
+\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi
+\ifr@ggedbottom \kern-\dimen@ \vfil \fi}
+}
+
+% Here are the rules for the cropmarks.  Note that they are
+% offset so that the space between them is truly \outerhsize or \outervsize
+% (P. A. MacKay, 12 November, 1986)
+%
+\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong}
+\def\nstop{\vbox
+  {\hrule height\cornerthick depth\cornerlong width\cornerthick}}
+\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong}
+\def\nsbot{\vbox
+  {\hrule height\cornerlong depth\cornerthick width\cornerthick}}
+
+% Parse an argument, then pass it to #1.  The argument is the rest of
+% the input line (except we remove a trailing comment).  #1 should be a
+% macro which expects an ordinary undelimited TeX argument.
+%
+\def\parsearg{\parseargusing{}}
+\def\parseargusing#1#2{%
+  \def\argtorun{#2}%
+  \begingroup
+    \obeylines
+    \spaceisspace
+    #1%
+    \parseargline\empty% Insert the \empty token, see \finishparsearg below.
+}
+
+{\obeylines %
+  \gdef\parseargline#1^^M{%
+    \endgroup % End of the group started in \parsearg.
+    \argremovecomment #1\comment\ArgTerm%
+  }%
+}
+
+% First remove any @comment, then any @c comment.
+\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm}
+\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
+
+% Each occurrence of `\^^M' or `<space>\^^M' is replaced by a single space.
+%
+% \argremovec might leave us with trailing space, e.g.,
+%    @end itemize  @c foo
+% This space token undergoes the same procedure and is eventually removed
+% by \finishparsearg.
+%
+\def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M}
+\def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M}
+\def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{%
+  \def\temp{#3}%
+  \ifx\temp\empty
+    % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp:
+    \let\temp\finishparsearg
+  \else
+    \let\temp\argcheckspaces
+  \fi
+  % Put the space token in:
+  \temp#1 #3\ArgTerm
+}
+
+% If a _delimited_ argument is enclosed in braces, they get stripped; so
+% to get _exactly_ the rest of the line, we had to prevent such situation.
+% We prepended an \empty token at the very beginning and we expand it now,
+% just before passing the control to \argtorun.
+% (Similarly, we have to think about #3 of \argcheckspacesY above: it is
+% either the null string, or it ends with \^^M---thus there is no danger
+% that a pair of braces would be stripped.
+%
+% But first, we have to remove the trailing space token.
+%
+\def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}}
+
+% \parseargdef\foo{...}
+%      is roughly equivalent to
+% \def\foo{\parsearg\Xfoo}
+% \def\Xfoo#1{...}
+%
+% Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my
+% favourite TeX trick.  --kasal, 16nov03
+
+\def\parseargdef#1{%
+  \expandafter \doparseargdef \csname\string#1\endcsname #1%
+}
+\def\doparseargdef#1#2{%
+  \def#2{\parsearg#1}%
+  \def#1##1%
+}
+
+% Several utility definitions with active space:
+{
+  \obeyspaces
+  \gdef\obeyedspace{ }
+
+  % Make each space character in the input produce a normal interword
+  % space in the output.  Don't allow a line break at this space, as this
+  % is used only in environments like @example, where each line of input
+  % should produce a line of output anyway.
+  %
+  \gdef\sepspaces{\obeyspaces\let =\tie}
+
+  % If an index command is used in an @example environment, any spaces
+  % therein should become regular spaces in the raw index file, not the
+  % expansion of \tie (\leavevmode \penalty \@M \ ).
+  \gdef\unsepspaces{\let =\space}
+}
+
+
+\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next}
+
+% Define the framework for environments in texinfo.tex.  It's used like this:
+%
+%   \envdef\foo{...}
+%   \def\Efoo{...}
+%
+% It's the responsibility of \envdef to insert \begingroup before the
+% actual body; @end closes the group after calling \Efoo.  \envdef also
+% defines \thisenv, so the current environment is known; @end checks
+% whether the environment name matches.  The \checkenv macro can also be
+% used to check whether the current environment is the one expected.
+%
+% Non-false conditionals (@iftex, @ifset) don't fit into this, so they
+% are not treated as environments; they don't open a group.  (The
+% implementation of @end takes care not to call \endgroup in this
+% special case.)
+
+
+% At run-time, environments start with this:
+\def\startenvironment#1{\begingroup\def\thisenv{#1}}
+% initialize
+\let\thisenv\empty
+
+% ... but they get defined via ``\envdef\foo{...}'':
+\long\def\envdef#1#2{\def#1{\startenvironment#1#2}}
+\def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}}
+
+% Check whether we're in the right environment:
+\def\checkenv#1{%
+  \def\temp{#1}%
+  \ifx\thisenv\temp
+  \else
+    \badenverr
+  \fi
+}
+
+% Environment mismatch, #1 expected:
+\def\badenverr{%
+  \errhelp = \EMsimple
+  \errmessage{This command can appear only \inenvironment\temp,
+    not \inenvironment\thisenv}%
+}
+\def\inenvironment#1{%
+  \ifx#1\empty
+    outside of any environment%
+  \else
+    in environment \expandafter\string#1%
+  \fi
+}
+
+% @end foo executes the definition of \Efoo.
+% But first, it executes a specialized version of \checkenv
+%
+\parseargdef\end{%
+  \if 1\csname iscond.#1\endcsname
+  \else
+    % The general wording of \badenverr may not be ideal.
+    \expandafter\checkenv\csname#1\endcsname
+    \csname E#1\endcsname
+    \endgroup
+  \fi
+}
+
+\newhelp\EMsimple{Press RETURN to continue.}
+
+
+% Be sure we're in horizontal mode when doing a tie, since we make space
+% equivalent to this in @example-like environments. Otherwise, a space
+% at the beginning of a line will start with \penalty -- and
+% since \penalty is valid in vertical mode, we'd end up putting the
+% penalty on the vertical list instead of in the new paragraph.
+{\catcode`@ = 11
+ % Avoid using \@M directly, because that causes trouble
+ % if the definition is written into an index file.
+ \global\let\tiepenalty = \@M
+ \gdef\tie{\leavevmode\penalty\tiepenalty\ }
+}
+
+% @: forces normal size whitespace following.
+\def\:{\spacefactor=1000 }
+
+% @* forces a line break.
+\def\*{\hfil\break\hbox{}\ignorespaces}
+
+% @/ allows a line break.
+\let\/=\allowbreak
+
+% @. is an end-of-sentence period.
+\def\.{.\spacefactor=\endofsentencespacefactor\space}
+
+% @! is an end-of-sentence bang.
+\def\!{!\spacefactor=\endofsentencespacefactor\space}
+
+% @? is an end-of-sentence query.
+\def\?{?\spacefactor=\endofsentencespacefactor\space}
+
+% @frenchspacing on|off  says whether to put extra space after punctuation.
+%
+\def\onword{on}
+\def\offword{off}
+%
+\parseargdef\frenchspacing{%
+  \def\temp{#1}%
+  \ifx\temp\onword \plainfrenchspacing
+  \else\ifx\temp\offword \plainnonfrenchspacing
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @frenchspacing option `\temp', must be on|off}%
+  \fi\fi
+}
+
+% @w prevents a word break.  Without the \leavevmode, @w at the
+% beginning of a paragraph, when TeX is still in vertical mode, would
+% produce a whole line of output instead of starting the paragraph.
+\def\w#1{\leavevmode\hbox{#1}}
+
+% @group ... @end group forces ... to be all on one page, by enclosing
+% it in a TeX vbox.  We use \vtop instead of \vbox to construct the box
+% to keep its height that of a normal line.  According to the rules for
+% \topskip (p.114 of the TeXbook), the glue inserted is
+% max (\topskip - \ht (first item), 0).  If that height is large,
+% therefore, no glue is inserted, and the space between the headline and
+% the text is small, which looks bad.
+%
+% Another complication is that the group might be very large.  This can
+% cause the glue on the previous page to be unduly stretched, because it
+% does not have much material.  In this case, it's better to add an
+% explicit \vfill so that the extra space is at the bottom.  The
+% threshold for doing this is if the group is more than \vfilllimit
+% percent of a page (\vfilllimit can be changed inside of @tex).
+%
+\newbox\groupbox
+\def\vfilllimit{0.7}
+%
+\envdef\group{%
+  \ifnum\catcode`\^^M=\active \else
+    \errhelp = \groupinvalidhelp
+    \errmessage{@group invalid in context where filling is enabled}%
+  \fi
+  \startsavinginserts
+  %
+  \setbox\groupbox = \vtop\bgroup
+    % Do @comment since we are called inside an environment such as
+    % @example, where each end-of-line in the input causes an
+    % end-of-line in the output.  We don't want the end-of-line after
+    % the `@group' to put extra space in the output.  Since @group
+    % should appear on a line by itself (according to the Texinfo
+    % manual), we don't worry about eating any user text.
+    \comment
+}
+%
+% The \vtop produces a box with normal height and large depth; thus, TeX puts
+% \baselineskip glue before it, and (when the next line of text is done)
+% \lineskip glue after it.  Thus, space below is not quite equal to space
+% above.  But it's pretty close.
+\def\Egroup{%
+    % To get correct interline space between the last line of the group
+    % and the first line afterwards, we have to propagate \prevdepth.
+    \endgraf % Not \par, as it may have been set to \lisppar.
+    \global\dimen1 = \prevdepth
+  \egroup           % End the \vtop.
+  % \dimen0 is the vertical size of the group's box.
+  \dimen0 = \ht\groupbox  \advance\dimen0 by \dp\groupbox
+  % \dimen2 is how much space is left on the page (more or less).
+  \dimen2 = \pageheight   \advance\dimen2 by -\pagetotal
+  % if the group doesn't fit on the current page, and it's a big big
+  % group, force a page break.
+  \ifdim \dimen0 > \dimen2
+    \ifdim \pagetotal < \vfilllimit\pageheight
+      \page
+    \fi
+  \fi
+  \box\groupbox
+  \prevdepth = \dimen1
+  \checkinserts
+}
+%
+% TeX puts in an \escapechar (i.e., `@') at the beginning of the help
+% message, so this ends up printing `@group can only ...'.
+%
+\newhelp\groupinvalidhelp{%
+group can only be used in environments such as @example,^^J%
+where each line of input produces a line of output.}
+
+% @need space-in-mils
+% forces a page break if there is not space-in-mils remaining.
+
+\newdimen\mil  \mil=0.001in
+
+\parseargdef\need{%
+  % Ensure vertical mode, so we don't make a big box in the middle of a
+  % paragraph.
+  \par
+  %
+  % If the @need value is less than one line space, it's useless.
+  \dimen0 = #1\mil
+  \dimen2 = \ht\strutbox
+  \advance\dimen2 by \dp\strutbox
+  \ifdim\dimen0 > \dimen2
+    %
+    % Do a \strut just to make the height of this box be normal, so the
+    % normal leading is inserted relative to the preceding line.
+    % And a page break here is fine.
+    \vtop to #1\mil{\strut\vfil}%
+    %
+    % TeX does not even consider page breaks if a penalty added to the
+    % main vertical list is 10000 or more.  But in order to see if the
+    % empty box we just added fits on the page, we must make it consider
+    % page breaks.  On the other hand, we don't want to actually break the
+    % page after the empty box.  So we use a penalty of 9999.
+    %
+    % There is an extremely small chance that TeX will actually break the
+    % page at this \penalty, if there are no other feasible breakpoints in
+    % sight.  (If the user is using lots of big @group commands, which
+    % almost-but-not-quite fill up a page, TeX will have a hard time doing
+    % good page breaking, for example.)  However, I could not construct an
+    % example where a page broke at this \penalty; if it happens in a real
+    % document, then we can reconsider our strategy.
+    \penalty9999
+    %
+    % Back up by the size of the box, whether we did a page break or not.
+    \kern -#1\mil
+    %
+    % Do not allow a page break right after this kern.
+    \nobreak
+  \fi
+}
+
+% @br   forces paragraph break (and is undocumented).
+
+\let\br = \par
+
+% @page forces the start of a new page.
+%
+\def\page{\par\vfill\supereject}
+
+% @exdent text....
+% outputs text on separate line in roman font, starting at standard page margin
+
+% This records the amount of indent in the innermost environment.
+% That's how much \exdent should take out.
+\newskip\exdentamount
+
+% This defn is used inside fill environments such as @defun.
+\parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}
+
+% This defn is used inside nofill environments such as @example.
+\parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount
+  \leftline{\hskip\leftskip{\rm#1}}}}
+
+% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current
+% paragraph.  For more general purposes, use the \margin insertion
+% class.  WHICH is `l' or `r'.  Not documented, written for gawk manual.
+%
+\newskip\inmarginspacing \inmarginspacing=1cm
+\def\strutdepth{\dp\strutbox}
+%
+\def\doinmargin#1#2{\strut\vadjust{%
+  \nobreak
+  \kern-\strutdepth
+  \vtop to \strutdepth{%
+    \baselineskip=\strutdepth
+    \vss
+    % if you have multiple lines of stuff to put here, you'll need to
+    % make the vbox yourself of the appropriate size.
+    \ifx#1l%
+      \llap{\ignorespaces #2\hskip\inmarginspacing}%
+    \else
+      \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}%
+    \fi
+    \null
+  }%
+}}
+\def\inleftmargin{\doinmargin l}
+\def\inrightmargin{\doinmargin r}
+%
+% @inmargin{TEXT [, RIGHT-TEXT]}
+% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right;
+% else use TEXT for both).
+%
+\def\inmargin#1{\parseinmargin #1,,\finish}
+\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing.
+  \setbox0 = \hbox{\ignorespaces #2}%
+  \ifdim\wd0 > 0pt
+    \def\lefttext{#1}%  have both texts
+    \def\righttext{#2}%
+  \else
+    \def\lefttext{#1}%  have only one text
+    \def\righttext{#1}%
+  \fi
+  %
+  \ifodd\pageno
+    \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin
+  \else
+    \def\temp{\inleftmargin\lefttext}%
+  \fi
+  \temp
+}
+
+% @| inserts a changebar to the left of the current line.  It should
+% surround any changed text.  This approach does *not* work if the
+% change spans more than two lines of output.  To handle that, we would
+% have adopt a much more difficult approach (putting marks into the main
+% vertical list for the beginning and end of each change).  This command
+% is not documented, not supported, and doesn't work.
+%
+\def\|{%
+  % \vadjust can only be used in horizontal mode.
+  \leavevmode
+  %
+  % Append this vertical mode material after the current line in the output.
+  \vadjust{%
+    % We want to insert a rule with the height and depth of the current
+    % leading; that is exactly what \strutbox is supposed to record.
+    \vskip-\baselineskip
+    %
+    % \vadjust-items are inserted at the left edge of the type.  So
+    % the \llap here moves out into the left-hand margin.
+    \llap{%
+      %
+      % For a thicker or thinner bar, change the `1pt'.
+      \vrule height\baselineskip width1pt
+      %
+      % This is the space between the bar and the text.
+      \hskip 12pt
+    }%
+  }%
+}
+
+% @include FILE -- \input text of FILE.
+%
+\def\include{\parseargusing\filenamecatcodes\includezzz}
+\def\includezzz#1{%
+  \pushthisfilestack
+  \def\thisfile{#1}%
+  {%
+    \makevalueexpandable  % we want to expand any @value in FILE.
+    \turnoffactive        % and allow special characters in the expansion
+    \indexnofonts         % Allow `@@' and other weird things in file names.
+    \wlog{texinfo.tex: doing @include of #1^^J}%
+    \edef\temp{\noexpand\input #1 }%
+    %
+    % This trickery is to read FILE outside of a group, in case it makes
+    % definitions, etc.
+    \expandafter
+  }\temp
+  \popthisfilestack
+}
+\def\filenamecatcodes{%
+  \catcode`\\=\other
+  \catcode`~=\other
+  \catcode`^=\other
+  \catcode`_=\other
+  \catcode`|=\other
+  \catcode`<=\other
+  \catcode`>=\other
+  \catcode`+=\other
+  \catcode`-=\other
+  \catcode`\`=\other
+  \catcode`\'=\other
+}
+
+\def\pushthisfilestack{%
+  \expandafter\pushthisfilestackX\popthisfilestack\StackTerm
+}
+\def\pushthisfilestackX{%
+  \expandafter\pushthisfilestackY\thisfile\StackTerm
+}
+\def\pushthisfilestackY #1\StackTerm #2\StackTerm {%
+  \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}%
+}
+
+\def\popthisfilestack{\errthisfilestackempty}
+\def\errthisfilestackempty{\errmessage{Internal error:
+  the stack of filenames is empty.}}
+
+\def\thisfile{}
+
+% @center line
+% outputs that line, centered.
+%
+\parseargdef\center{%
+  \ifhmode
+    \let\next\centerH
+  \else
+    \let\next\centerV
+  \fi
+  \next{\hfil \ignorespaces#1\unskip \hfil}%
+}
+\def\centerH#1{%
+  {%
+    \hfil\break
+    \advance\hsize by -\leftskip
+    \advance\hsize by -\rightskip
+    \line{#1}%
+    \break
+  }%
+}
+\def\centerV#1{\line{\kern\leftskip #1\kern\rightskip}}
+
+% @sp n   outputs n lines of vertical space
+
+\parseargdef\sp{\vskip #1\baselineskip}
+
+% @comment ...line which is ignored...
+% @c is the same as @comment
+% @ignore ... @end ignore  is another way to write a comment
+
+\def\comment{\begingroup \catcode`\^^M=\other%
+\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other%
+\commentxxx}
+{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}}
+
+\let\c=\comment
+
+% @paragraphindent NCHARS
+% We'll use ems for NCHARS, close enough.
+% NCHARS can also be the word `asis' or `none'.
+% We cannot feasibly implement @paragraphindent asis, though.
+%
+\def\asisword{asis} % no translation, these are keywords
+\def\noneword{none}
+%
+\parseargdef\paragraphindent{%
+  \def\temp{#1}%
+  \ifx\temp\asisword
+  \else
+    \ifx\temp\noneword
+      \defaultparindent = 0pt
+    \else
+      \defaultparindent = #1em
+    \fi
+  \fi
+  \parindent = \defaultparindent
+}
+
+% @exampleindent NCHARS
+% We'll use ems for NCHARS like @paragraphindent.
+% It seems @exampleindent asis isn't necessary, but
+% I preserve it to make it similar to @paragraphindent.
+\parseargdef\exampleindent{%
+  \def\temp{#1}%
+  \ifx\temp\asisword
+  \else
+    \ifx\temp\noneword
+      \lispnarrowing = 0pt
+    \else
+      \lispnarrowing = #1em
+    \fi
+  \fi
+}
+
+% @firstparagraphindent WORD
+% If WORD is `none', then suppress indentation of the first paragraph
+% after a section heading.  If WORD is `insert', then do indent at such
+% paragraphs.
+%
+% The paragraph indentation is suppressed or not by calling
+% \suppressfirstparagraphindent, which the sectioning commands do.
+% We switch the definition of this back and forth according to WORD.
+% By default, we suppress indentation.
+%
+\def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent}
+\def\insertword{insert}
+%
+\parseargdef\firstparagraphindent{%
+  \def\temp{#1}%
+  \ifx\temp\noneword
+    \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent
+  \else\ifx\temp\insertword
+    \let\suppressfirstparagraphindent = \relax
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @firstparagraphindent option `\temp'}%
+  \fi\fi
+}
+
+% Here is how we actually suppress indentation.  Redefine \everypar to
+% \kern backwards by \parindent, and then reset itself to empty.
+%
+% We also make \indent itself not actually do anything until the next
+% paragraph.
+%
+\gdef\dosuppressfirstparagraphindent{%
+  \gdef\indent{%
+    \restorefirstparagraphindent
+    \indent
+  }%
+  \gdef\noindent{%
+    \restorefirstparagraphindent
+    \noindent
+  }%
+  \global\everypar = {%
+    \kern -\parindent
+    \restorefirstparagraphindent
+  }%
+}
+
+\gdef\restorefirstparagraphindent{%
+  \global \let \indent = \ptexindent
+  \global \let \noindent = \ptexnoindent
+  \global \everypar = {}%
+}
+
+
+% @refill is a no-op.
+\let\refill=\relax
+
+% If working on a large document in chapters, it is convenient to
+% be able to disable indexing, cross-referencing, and contents, for test runs.
+% This is done with @novalidate (before @setfilename).
+%
+\newif\iflinks \linkstrue % by default we want the aux files.
+\let\novalidate = \linksfalse
+
+% @setfilename is done at the beginning of every texinfo file.
+% So open here the files we need to have open while reading the input.
+% This makes it possible to make a .fmt file for texinfo.
+\def\setfilename{%
+   \fixbackslash  % Turn off hack to swallow `\input texinfo'.
+   \iflinks
+     \tryauxfile
+     % Open the new aux file.  TeX will close it automatically at exit.
+     \immediate\openout\auxfile=\jobname.aux
+   \fi % \openindices needs to do some work in any case.
+   \openindices
+   \let\setfilename=\comment % Ignore extra @setfilename cmds.
+   %
+   % If texinfo.cnf is present on the system, read it.
+   % Useful for site-wide @afourpaper, etc.
+   \openin 1 texinfo.cnf
+   \ifeof 1 \else \input texinfo.cnf \fi
+   \closein 1
+   %
+   \comment % Ignore the actual filename.
+}
+
+% Called from \setfilename.
+%
+\def\openindices{%
+  \newindex{cp}%
+  \newcodeindex{fn}%
+  \newcodeindex{vr}%
+  \newcodeindex{tp}%
+  \newcodeindex{ky}%
+  \newcodeindex{pg}%
+}
+
+% @bye.
+\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend}
+
+
+\message{pdf,}
+% adobe `portable' document format
+\newcount\tempnum
+\newcount\lnkcount
+\newtoks\filename
+\newcount\filenamelength
+\newcount\pgn
+\newtoks\toksA
+\newtoks\toksB
+\newtoks\toksC
+\newtoks\toksD
+\newbox\boxA
+\newcount\countA
+\newif\ifpdf
+\newif\ifpdfmakepagedest
+
+% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1
+% can be set).  So we test for \relax and 0 as well as being undefined.
+\ifx\pdfoutput\thisisundefined
+\else
+  \ifx\pdfoutput\relax
+  \else
+    \ifcase\pdfoutput
+    \else
+      \pdftrue
+    \fi
+  \fi
+\fi
+
+% PDF uses PostScript string constants for the names of xref targets,
+% for display in the outlines, and in other places.  Thus, we have to
+% double any backslashes.  Otherwise, a name like "\node" will be
+% interpreted as a newline (\n), followed by o, d, e.  Not good.
+% http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html
+% (and related messages, the final outcome is that it is up to the TeX
+% user to double the backslashes and otherwise make the string valid, so
+% that's what we do).
+
+% double active backslashes.
+%
+{\catcode`\@=0 \catcode`\\=\active
+ @gdef@activebackslashdouble{%
+   @catcode`@\=@active
+   @let\=@doublebackslash}
+}
+
+% To handle parens, we must adopt a different approach, since parens are
+% not active characters.  hyperref.dtx (which has the same problem as
+% us) handles it with this amazing macro to replace tokens, with minor
+% changes for Texinfo.  It is included here under the GPL by permission
+% from the author, Heiko Oberdiek.
+%
+% #1 is the tokens to replace.
+% #2 is the replacement.
+% #3 is the control sequence with the string.
+%
+\def\HyPsdSubst#1#2#3{%
+  \def\HyPsdReplace##1#1##2\END{%
+    ##1%
+    \ifx\\##2\\%
+    \else
+      #2%
+      \HyReturnAfterFi{%
+        \HyPsdReplace##2\END
+      }%
+    \fi
+  }%
+  \xdef#3{\expandafter\HyPsdReplace#3#1\END}%
+}
+\long\def\HyReturnAfterFi#1\fi{\fi#1}
+
+% #1 is a control sequence in which to do the replacements.
+\def\backslashparens#1{%
+  \xdef#1{#1}% redefine it as its expansion; the definition is simply
+             % \lastnode when called from \setref -> \pdfmkdest.
+  \HyPsdSubst{(}{\realbackslash(}{#1}%
+  \HyPsdSubst{)}{\realbackslash)}{#1}%
+}
+
+\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images
+with PDF output, and none of those formats could be found.  (.eps cannot
+be supported due to the design of the PDF format; use regular TeX (DVI
+output) for that.)}
+
+\ifpdf
+  %
+  % Color manipulation macros based on pdfcolor.tex,
+  % except using rgb instead of cmyk; the latter is said to render as a
+  % very dark gray on-screen and a very dark halftone in print, instead
+  % of actual black.
+  \def\rgbDarkRed{0.50 0.09 0.12}
+  \def\rgbBlack{0 0 0}
+  %
+  % k sets the color for filling (usual text, etc.);
+  % K sets the color for stroking (thin rules, e.g., normal _'s).
+  \def\pdfsetcolor#1{\pdfliteral{#1 rg  #1 RG}}
+  %
+  % Set color, and create a mark which defines \thiscolor accordingly,
+  % so that \makeheadline knows which color to restore.
+  \def\setcolor#1{%
+    \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}%
+    \domark
+    \pdfsetcolor{#1}%
+  }
+  %
+  \def\maincolor{\rgbBlack}
+  \pdfsetcolor{\maincolor}
+  \edef\thiscolor{\maincolor}
+  \def\lastcolordefs{}
+  %
+  \def\makefootline{%
+    \baselineskip24pt
+    \line{\pdfsetcolor{\maincolor}\the\footline}%
+  }
+  %
+  \def\makeheadline{%
+    \vbox to 0pt{%
+      \vskip-22.5pt
+      \line{%
+        \vbox to8.5pt{}%
+        % Extract \thiscolor definition from the marks.
+        \getcolormarks
+        % Typeset the headline with \maincolor, then restore the color.
+        \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}%
+      }%
+      \vss
+    }%
+    \nointerlineskip
+  }
+  %
+  %
+  \pdfcatalog{/PageMode /UseOutlines}
+  %
+  % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
+  \def\dopdfimage#1#2#3{%
+    \def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
+    \def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
+    %
+    % pdftex (and the PDF format) support .png, .jpg, .pdf (among
+    % others).  Let's try in that order.
+    \let\pdfimgext=\empty
+    \begingroup
+      \openin 1 #1.png \ifeof 1
+        \openin 1 #1.jpg \ifeof 1
+          \openin 1 #1.jpeg \ifeof 1
+            \openin 1 #1.JPG \ifeof 1
+              \openin 1 #1.pdf \ifeof 1
+                \openin 1 #1.PDF \ifeof 1
+                  \errhelp = \nopdfimagehelp
+                  \errmessage{Could not find image file #1 for pdf}%
+                \else \gdef\pdfimgext{PDF}%
+                \fi
+              \else \gdef\pdfimgext{pdf}%
+              \fi
+            \else \gdef\pdfimgext{JPG}%
+            \fi
+          \else \gdef\pdfimgext{jpeg}%
+          \fi
+        \else \gdef\pdfimgext{jpg}%
+        \fi
+      \else \gdef\pdfimgext{png}%
+      \fi
+      \closein 1
+    \endgroup
+    %
+    % without \immediate, ancient pdftex seg faults when the same image is
+    % included twice.  (Version 3.14159-pre-1.0-unofficial-20010704.)
+    \ifnum\pdftexversion < 14
+      \immediate\pdfimage
+    \else
+      \immediate\pdfximage
+    \fi
+      \ifdim \wd0 >0pt width \imagewidth \fi
+      \ifdim \wd2 >0pt height \imageheight \fi
+      \ifnum\pdftexversion<13
+         #1.\pdfimgext
+       \else
+         {#1.\pdfimgext}%
+       \fi
+    \ifnum\pdftexversion < 14 \else
+      \pdfrefximage \pdflastximage
+    \fi}
+  %
+  \def\pdfmkdest#1{{%
+    % We have to set dummies so commands such as @code, and characters
+    % such as \, aren't expanded when present in a section title.
+    \indexnofonts
+    \turnoffactive
+    \activebackslashdouble
+    \makevalueexpandable
+    \def\pdfdestname{#1}%
+    \backslashparens\pdfdestname
+    \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
+  }}
+  %
+  % used to mark target names; must be expandable.
+  \def\pdfmkpgn#1{#1}
+  %
+  % by default, use a color that is dark enough to print on paper as
+  % nearly black, but still distinguishable for online viewing.
+  \def\urlcolor{\rgbDarkRed}
+  \def\linkcolor{\rgbDarkRed}
+  \def\endlink{\setcolor{\maincolor}\pdfendlink}
+  %
+  % Adding outlines to PDF; macros for calculating structure of outlines
+  % come from Petr Olsak
+  \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
+    \else \csname#1\endcsname \fi}
+  \def\advancenumber#1{\tempnum=\expnumber{#1}\relax
+    \advance\tempnum by 1
+    \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
+  %
+  % #1 is the section text, which is what will be displayed in the
+  % outline by the pdf viewer.  #2 is the pdf expression for the number
+  % of subentries (or empty, for subsubsections).  #3 is the node text,
+  % which might be empty if this toc entry had no corresponding node.
+  % #4 is the page number
+  %
+  \def\dopdfoutline#1#2#3#4{%
+    % Generate a link to the node text if that exists; else, use the
+    % page number.  We could generate a destination for the section
+    % text in the case where a section has no node, but it doesn't
+    % seem worth the trouble, since most documents are normally structured.
+    \def\pdfoutlinedest{#3}%
+    \ifx\pdfoutlinedest\empty
+      \def\pdfoutlinedest{#4}%
+    \else
+      % Doubled backslashes in the name.
+      {\activebackslashdouble \xdef\pdfoutlinedest{#3}%
+       \backslashparens\pdfoutlinedest}%
+    \fi
+    %
+    % Also double the backslashes in the display string.
+    {\activebackslashdouble \xdef\pdfoutlinetext{#1}%
+     \backslashparens\pdfoutlinetext}%
+    %
+    \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
+  }
+  %
+  \def\pdfmakeoutlines{%
+    \begingroup
+      % Thanh's hack / proper braces in bookmarks
+      \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
+      \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
+      %
+      % Read toc silently, to get counts of subentries for \pdfoutline.
+      \def\partentry##1##2##3##4{}% ignore parts in the outlines
+      \def\numchapentry##1##2##3##4{%
+       \def\thischapnum{##2}%
+       \def\thissecnum{0}%
+       \def\thissubsecnum{0}%
+      }%
+      \def\numsecentry##1##2##3##4{%
+       \advancenumber{chap\thischapnum}%
+       \def\thissecnum{##2}%
+       \def\thissubsecnum{0}%
+      }%
+      \def\numsubsecentry##1##2##3##4{%
+       \advancenumber{sec\thissecnum}%
+       \def\thissubsecnum{##2}%
+      }%
+      \def\numsubsubsecentry##1##2##3##4{%
+       \advancenumber{subsec\thissubsecnum}%
+      }%
+      \def\thischapnum{0}%
+      \def\thissecnum{0}%
+      \def\thissubsecnum{0}%
+      %
+      % use \def rather than \let here because we redefine \chapentry et
+      % al. a second time, below.
+      \def\appentry{\numchapentry}%
+      \def\appsecentry{\numsecentry}%
+      \def\appsubsecentry{\numsubsecentry}%
+      \def\appsubsubsecentry{\numsubsubsecentry}%
+      \def\unnchapentry{\numchapentry}%
+      \def\unnsecentry{\numsecentry}%
+      \def\unnsubsecentry{\numsubsecentry}%
+      \def\unnsubsubsecentry{\numsubsubsecentry}%
+      \readdatafile{toc}%
+      %
+      % Read toc second time, this time actually producing the outlines.
+      % The `-' means take the \expnumber as the absolute number of
+      % subentries, which we calculated on our first read of the .toc above.
+      %
+      % We use the node names as the destinations.
+      \def\numchapentry##1##2##3##4{%
+        \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}%
+      \def\numsecentry##1##2##3##4{%
+        \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}%
+      \def\numsubsecentry##1##2##3##4{%
+        \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}%
+      \def\numsubsubsecentry##1##2##3##4{% count is always zero
+        \dopdfoutline{##1}{}{##3}{##4}}%
+      %
+      % PDF outlines are displayed using system fonts, instead of
+      % document fonts.  Therefore we cannot use special characters,
+      % since the encoding is unknown.  For example, the eogonek from
+      % Latin 2 (0xea) gets translated to a | character.  Info from
+      % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100.
+      %
+      % xx to do this right, we have to translate 8-bit characters to
+      % their "best" equivalent, based on the @documentencoding.  Right
+      % now, I guess we'll just let the pdf reader have its way.
+      \indexnofonts
+      \setupdatafile
+      \catcode`\\=\active \otherbackslash
+      \input \tocreadfilename
+    \endgroup
+  }
+  %
+  \def\skipspaces#1{\def\PP{#1}\def\D{|}%
+    \ifx\PP\D\let\nextsp\relax
+    \else\let\nextsp\skipspaces
+      \ifx\p\space\else\addtokens{\filename}{\PP}%
+        \advance\filenamelength by 1
+      \fi
+    \fi
+    \nextsp}
+  \def\getfilename#1{\filenamelength=0\expandafter\skipspaces#1|\relax}
+  \ifnum\pdftexversion < 14
+    \let \startlink \pdfannotlink
+  \else
+    \let \startlink \pdfstartlink
+  \fi
+  % make a live url in pdf output.
+  \def\pdfurl#1{%
+    \begingroup
+      % it seems we really need yet another set of dummies; have not
+      % tried to figure out what each command should do in the context
+      % of @url.  for now, just make @/ a no-op, that's the only one
+      % people have actually reported a problem with.
+      %
+      \normalturnoffactive
+      \def\@{@}%
+      \let\/=\empty
+      \makevalueexpandable
+      % do we want to go so far as to use \indexnofonts instead of just
+      % special-casing \var here?
+      \def\var##1{##1}%
+      %
+      \leavevmode\setcolor{\urlcolor}%
+      \startlink attr{/Border [0 0 0]}%
+        user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
+    \endgroup}
+  \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}}
+  \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
+  \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks}
+  \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}}
+  \def\maketoks{%
+    \expandafter\poptoks\the\toksA|ENDTOKS|\relax
+    \ifx\first0\adn0
+    \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3
+    \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6
+    \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9
+    \else
+      \ifnum0=\countA\else\makelink\fi
+      \ifx\first.\let\next=\done\else
+        \let\next=\maketoks
+        \addtokens{\toksB}{\the\toksD}
+        \ifx\first,\addtokens{\toksB}{\space}\fi
+      \fi
+    \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+    \next}
+  \def\makelink{\addtokens{\toksB}%
+    {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
+  \def\pdflink#1{%
+    \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}}
+    \setcolor{\linkcolor}#1\endlink}
+  \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
+\else
+  % non-pdf mode
+  \let\pdfmkdest = \gobble
+  \let\pdfurl = \gobble
+  \let\endlink = \relax
+  \let\setcolor = \gobble
+  \let\pdfsetcolor = \gobble
+  \let\pdfmakeoutlines = \relax
+\fi  % \ifx\pdfoutput
+
+
+\message{fonts,}
+
+% Change the current font style to #1, remembering it in \curfontstyle.
+% For now, we do not accumulate font styles: @b{@i{foo}} prints foo in
+% italics, not bold italics.
+%
+\def\setfontstyle#1{%
+  \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd.
+  \csname ten#1\endcsname  % change the current font
+}
+
+% Select #1 fonts with the current style.
+%
+\def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname}
+
+\def\rm{\fam=0 \setfontstyle{rm}}
+\def\it{\fam=\itfam \setfontstyle{it}}
+\def\sl{\fam=\slfam \setfontstyle{sl}}
+\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf}
+\def\tt{\fam=\ttfam \setfontstyle{tt}}
+
+% Unfortunately, we have to override this for titles and the like, since
+% in those cases "rm" is bold.  Sigh.
+\def\rmisbold{\rm\def\curfontstyle{bf}}
+
+% Texinfo sort of supports the sans serif font style, which plain TeX does not.
+% So we set up a \sf.
+\newfam\sffam
+\def\sf{\fam=\sffam \setfontstyle{sf}}
+\let\li = \sf % Sometimes we call it \li, not \sf.
+
+% We don't need math for this font style.
+\def\ttsl{\setfontstyle{ttsl}}
+
+
+% Default leading.
+\newdimen\textleading  \textleading = 13.2pt
+
+% Set the baselineskip to #1, and the lineskip and strut size
+% correspondingly.  There is no deep meaning behind these magic numbers
+% used as factors; they just match (closely enough) what Knuth defined.
+%
+\def\lineskipfactor{.08333}
+\def\strutheightpercent{.70833}
+\def\strutdepthpercent {.29167}
+%
+% can get a sort of poor man's double spacing by redefining this.
+\def\baselinefactor{1}
+%
+\def\setleading#1{%
+  \dimen0 = #1\relax
+  \normalbaselineskip = \baselinefactor\dimen0
+  \normallineskip = \lineskipfactor\normalbaselineskip
+  \normalbaselines
+  \setbox\strutbox =\hbox{%
+    \vrule width0pt height\strutheightpercent\baselineskip
+                    depth \strutdepthpercent \baselineskip
+  }%
+}
+
+% PDF CMaps.  See also LaTeX's t1.cmap.
+%
+% do nothing with this by default.
+\expandafter\let\csname cmapOT1\endcsname\gobble
+\expandafter\let\csname cmapOT1IT\endcsname\gobble
+\expandafter\let\csname cmapOT1TT\endcsname\gobble
+
+% if we are producing pdf, and we have \pdffontattr, then define cmaps.
+% (\pdffontattr was introduced many years ago, but people still run
+% older pdftex's; it's easy to conditionalize, so we do.)
+\ifpdf \ifx\pdffontattr\thisisundefined \else
+  \begingroup
+    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
+    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1-0)
+%%Title: (TeX-OT1-0 TeX OT1 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+8 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<23> <26> <0023>
+<28> <3B> <0028>
+<3F> <5B> <003F>
+<5D> <5E> <005D>
+<61> <7A> <0061>
+<7B> <7C> <2013>
+endbfrange
+40 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <00660066>
+<0C> <00660069>
+<0D> <0066006C>
+<0E> <006600660069>
+<0F> <00660066006C>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<21> <0021>
+<22> <201D>
+<27> <2019>
+<3C> <00A1>
+<3D> <003D>
+<3E> <00BF>
+<5C> <201C>
+<5F> <02D9>
+<60> <2018>
+<7D> <02DD>
+<7E> <007E>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+    }\endgroup
+  \expandafter\edef\csname cmapOT1\endcsname#1{%
+    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+  }%
+%
+% \cmapOT1IT
+  \begingroup
+    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
+    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1IT-0)
+%%Title: (TeX-OT1IT-0 TeX OT1IT 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1IT)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1IT-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+8 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<25> <26> <0025>
+<28> <3B> <0028>
+<3F> <5B> <003F>
+<5D> <5E> <005D>
+<61> <7A> <0061>
+<7B> <7C> <2013>
+endbfrange
+42 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <00660066>
+<0C> <00660069>
+<0D> <0066006C>
+<0E> <006600660069>
+<0F> <00660066006C>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<21> <0021>
+<22> <201D>
+<23> <0023>
+<24> <00A3>
+<27> <2019>
+<3C> <00A1>
+<3D> <003D>
+<3E> <00BF>
+<5C> <201C>
+<5F> <02D9>
+<60> <2018>
+<7D> <02DD>
+<7E> <007E>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+    }\endgroup
+  \expandafter\edef\csname cmapOT1IT\endcsname#1{%
+    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+  }%
+%
+% \cmapOT1TT
+  \begingroup
+    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
+    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1TT-0)
+%%Title: (TeX-OT1TT-0 TeX OT1TT 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1TT)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1TT-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+5 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<21> <26> <0021>
+<28> <5F> <0028>
+<61> <7E> <0061>
+endbfrange
+32 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <2191>
+<0C> <2193>
+<0D> <0027>
+<0E> <00A1>
+<0F> <00BF>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<20> <2423>
+<27> <2019>
+<60> <2018>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+    }\endgroup
+  \expandafter\edef\csname cmapOT1TT\endcsname#1{%
+    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+  }%
+\fi\fi
+
+
+% Set the font macro #1 to the font named #2, adding on the
+% specified font prefix (normally `cm').
+% #3 is the font's design size, #4 is a scale factor, #5 is the CMap
+% encoding (currently only OT1, OT1IT and OT1TT are allowed, pass
+% empty to omit).
+\def\setfont#1#2#3#4#5{%
+  \font#1=\fontprefix#2#3 scaled #4
+  \csname cmap#5\endcsname#1%
+}
+% This is what gets called when #5 of \setfont is empty.
+\let\cmap\gobble
+% emacs-page end of cmaps
+
+% Use cm as the default font prefix.
+% To specify the font prefix, you must define \fontprefix
+% before you read in texinfo.tex.
+\ifx\fontprefix\thisisundefined
+\def\fontprefix{cm}
+\fi
+% Support font families that don't use the same naming scheme as CM.
+\def\rmshape{r}
+\def\rmbshape{bx}               %where the normal face is bold
+\def\bfshape{b}
+\def\bxshape{bx}
+\def\ttshape{tt}
+\def\ttbshape{tt}
+\def\ttslshape{sltt}
+\def\itshape{ti}
+\def\itbshape{bxti}
+\def\slshape{sl}
+\def\slbshape{bxsl}
+\def\sfshape{ss}
+\def\sfbshape{ss}
+\def\scshape{csc}
+\def\scbshape{csc}
+
+% Definitions for a main text size of 11pt.  This is the default in
+% Texinfo.
+%
+\def\definetextfontsizexi{%
+% Text fonts (11.2pt, magstep1).
+\def\textnominalsize{11pt}
+\edef\mainmagstep{\magstephalf}
+\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
+\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
+\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
+\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
+\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
+\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
+\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
+\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
+\font\texti=cmmi10 scaled \mainmagstep
+\font\textsy=cmsy10 scaled \mainmagstep
+\def\textecsize{1095}
+
+% A few fonts for @defun names and args.
+\setfont\defbf\bfshape{10}{\magstep1}{OT1}
+\setfont\deftt\ttshape{10}{\magstep1}{OT1TT}
+\setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT}
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
+
+% Fonts for indices, footnotes, small examples (9pt).
+\def\smallnominalsize{9pt}
+\setfont\smallrm\rmshape{9}{1000}{OT1}
+\setfont\smalltt\ttshape{9}{1000}{OT1TT}
+\setfont\smallbf\bfshape{10}{900}{OT1}
+\setfont\smallit\itshape{9}{1000}{OT1IT}
+\setfont\smallsl\slshape{9}{1000}{OT1}
+\setfont\smallsf\sfshape{9}{1000}{OT1}
+\setfont\smallsc\scshape{10}{900}{OT1}
+\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
+\font\smalli=cmmi9
+\font\smallsy=cmsy9
+\def\smallecsize{0900}
+
+% Fonts for small examples (8pt).
+\def\smallernominalsize{8pt}
+\setfont\smallerrm\rmshape{8}{1000}{OT1}
+\setfont\smallertt\ttshape{8}{1000}{OT1TT}
+\setfont\smallerbf\bfshape{10}{800}{OT1}
+\setfont\smallerit\itshape{8}{1000}{OT1IT}
+\setfont\smallersl\slshape{8}{1000}{OT1}
+\setfont\smallersf\sfshape{8}{1000}{OT1}
+\setfont\smallersc\scshape{10}{800}{OT1}
+\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
+\font\smalleri=cmmi8
+\font\smallersy=cmsy8
+\def\smallerecsize{0800}
+
+% Fonts for title page (20.4pt):
+\def\titlenominalsize{20pt}
+\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
+\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
+\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
+\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
+\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
+\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
+\let\titlebf=\titlerm
+\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
+\font\titlei=cmmi12 scaled \magstep3
+\font\titlesy=cmsy10 scaled \magstep4
+\def\titleecsize{2074}
+
+% Chapter (and unnumbered) fonts (17.28pt).
+\def\chapnominalsize{17pt}
+\setfont\chaprm\rmbshape{12}{\magstep2}{OT1}
+\setfont\chapit\itbshape{10}{\magstep3}{OT1IT}
+\setfont\chapsl\slbshape{10}{\magstep3}{OT1}
+\setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT}
+\setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT}
+\setfont\chapsf\sfbshape{17}{1000}{OT1}
+\let\chapbf=\chaprm
+\setfont\chapsc\scbshape{10}{\magstep3}{OT1}
+\font\chapi=cmmi12 scaled \magstep2
+\font\chapsy=cmsy10 scaled \magstep3
+\def\chapecsize{1728}
+
+% Section fonts (14.4pt).
+\def\secnominalsize{14pt}
+\setfont\secrm\rmbshape{12}{\magstep1}{OT1}
+\setfont\secit\itbshape{10}{\magstep2}{OT1IT}
+\setfont\secsl\slbshape{10}{\magstep2}{OT1}
+\setfont\sectt\ttbshape{12}{\magstep1}{OT1TT}
+\setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT}
+\setfont\secsf\sfbshape{12}{\magstep1}{OT1}
+\let\secbf\secrm
+\setfont\secsc\scbshape{10}{\magstep2}{OT1}
+\font\seci=cmmi12 scaled \magstep1
+\font\secsy=cmsy10 scaled \magstep2
+\def\sececsize{1440}
+
+% Subsection fonts (13.15pt).
+\def\ssecnominalsize{13pt}
+\setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1}
+\setfont\ssecit\itbshape{10}{1315}{OT1IT}
+\setfont\ssecsl\slbshape{10}{1315}{OT1}
+\setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT}
+\setfont\ssecttsl\ttslshape{10}{1315}{OT1TT}
+\setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1}
+\let\ssecbf\ssecrm
+\setfont\ssecsc\scbshape{10}{1315}{OT1}
+\font\sseci=cmmi12 scaled \magstephalf
+\font\ssecsy=cmsy10 scaled 1315
+\def\ssececsize{1200}
+
+% Reduced fonts for @acro in text (10pt).
+\def\reducednominalsize{10pt}
+\setfont\reducedrm\rmshape{10}{1000}{OT1}
+\setfont\reducedtt\ttshape{10}{1000}{OT1TT}
+\setfont\reducedbf\bfshape{10}{1000}{OT1}
+\setfont\reducedit\itshape{10}{1000}{OT1IT}
+\setfont\reducedsl\slshape{10}{1000}{OT1}
+\setfont\reducedsf\sfshape{10}{1000}{OT1}
+\setfont\reducedsc\scshape{10}{1000}{OT1}
+\setfont\reducedttsl\ttslshape{10}{1000}{OT1TT}
+\font\reducedi=cmmi10
+\font\reducedsy=cmsy10
+\def\reducedecsize{1000}
+
+\textleading = 13.2pt % line spacing for 11pt CM
+\textfonts            % reset the current fonts
+\rm
+} % end of 11pt text font size definitions
+
+
+% Definitions to make the main text be 10pt Computer Modern, with
+% section, chapter, etc., sizes following suit.  This is for the GNU
+% Press printing of the Emacs 22 manual.  Maybe other manuals in the
+% future.  Used with @smallbook, which sets the leading to 12pt.
+%
+\def\definetextfontsizex{%
+% Text fonts (10pt).
+\def\textnominalsize{10pt}
+\edef\mainmagstep{1000}
+\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
+\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
+\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
+\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
+\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
+\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
+\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
+\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
+\font\texti=cmmi10 scaled \mainmagstep
+\font\textsy=cmsy10 scaled \mainmagstep
+\def\textecsize{1000}
+
+% A few fonts for @defun names and args.
+\setfont\defbf\bfshape{10}{\magstephalf}{OT1}
+\setfont\deftt\ttshape{10}{\magstephalf}{OT1TT}
+\setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT}
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
+
+% Fonts for indices, footnotes, small examples (9pt).
+\def\smallnominalsize{9pt}
+\setfont\smallrm\rmshape{9}{1000}{OT1}
+\setfont\smalltt\ttshape{9}{1000}{OT1TT}
+\setfont\smallbf\bfshape{10}{900}{OT1}
+\setfont\smallit\itshape{9}{1000}{OT1IT}
+\setfont\smallsl\slshape{9}{1000}{OT1}
+\setfont\smallsf\sfshape{9}{1000}{OT1}
+\setfont\smallsc\scshape{10}{900}{OT1}
+\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
+\font\smalli=cmmi9
+\font\smallsy=cmsy9
+\def\smallecsize{0900}
+
+% Fonts for small examples (8pt).
+\def\smallernominalsize{8pt}
+\setfont\smallerrm\rmshape{8}{1000}{OT1}
+\setfont\smallertt\ttshape{8}{1000}{OT1TT}
+\setfont\smallerbf\bfshape{10}{800}{OT1}
+\setfont\smallerit\itshape{8}{1000}{OT1IT}
+\setfont\smallersl\slshape{8}{1000}{OT1}
+\setfont\smallersf\sfshape{8}{1000}{OT1}
+\setfont\smallersc\scshape{10}{800}{OT1}
+\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
+\font\smalleri=cmmi8
+\font\smallersy=cmsy8
+\def\smallerecsize{0800}
+
+% Fonts for title page (20.4pt):
+\def\titlenominalsize{20pt}
+\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
+\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
+\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
+\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
+\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
+\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
+\let\titlebf=\titlerm
+\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
+\font\titlei=cmmi12 scaled \magstep3
+\font\titlesy=cmsy10 scaled \magstep4
+\def\titleecsize{2074}
+
+% Chapter fonts (14.4pt).
+\def\chapnominalsize{14pt}
+\setfont\chaprm\rmbshape{12}{\magstep1}{OT1}
+\setfont\chapit\itbshape{10}{\magstep2}{OT1IT}
+\setfont\chapsl\slbshape{10}{\magstep2}{OT1}
+\setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT}
+\setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT}
+\setfont\chapsf\sfbshape{12}{\magstep1}{OT1}
+\let\chapbf\chaprm
+\setfont\chapsc\scbshape{10}{\magstep2}{OT1}
+\font\chapi=cmmi12 scaled \magstep1
+\font\chapsy=cmsy10 scaled \magstep2
+\def\chapecsize{1440}
+
+% Section fonts (12pt).
+\def\secnominalsize{12pt}
+\setfont\secrm\rmbshape{12}{1000}{OT1}
+\setfont\secit\itbshape{10}{\magstep1}{OT1IT}
+\setfont\secsl\slbshape{10}{\magstep1}{OT1}
+\setfont\sectt\ttbshape{12}{1000}{OT1TT}
+\setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT}
+\setfont\secsf\sfbshape{12}{1000}{OT1}
+\let\secbf\secrm
+\setfont\secsc\scbshape{10}{\magstep1}{OT1}
+\font\seci=cmmi12
+\font\secsy=cmsy10 scaled \magstep1
+\def\sececsize{1200}
+
+% Subsection fonts (10pt).
+\def\ssecnominalsize{10pt}
+\setfont\ssecrm\rmbshape{10}{1000}{OT1}
+\setfont\ssecit\itbshape{10}{1000}{OT1IT}
+\setfont\ssecsl\slbshape{10}{1000}{OT1}
+\setfont\ssectt\ttbshape{10}{1000}{OT1TT}
+\setfont\ssecttsl\ttslshape{10}{1000}{OT1TT}
+\setfont\ssecsf\sfbshape{10}{1000}{OT1}
+\let\ssecbf\ssecrm
+\setfont\ssecsc\scbshape{10}{1000}{OT1}
+\font\sseci=cmmi10
+\font\ssecsy=cmsy10
+\def\ssececsize{1000}
+
+% Reduced fonts for @acro in text (9pt).
+\def\reducednominalsize{9pt}
+\setfont\reducedrm\rmshape{9}{1000}{OT1}
+\setfont\reducedtt\ttshape{9}{1000}{OT1TT}
+\setfont\reducedbf\bfshape{10}{900}{OT1}
+\setfont\reducedit\itshape{9}{1000}{OT1IT}
+\setfont\reducedsl\slshape{9}{1000}{OT1}
+\setfont\reducedsf\sfshape{9}{1000}{OT1}
+\setfont\reducedsc\scshape{10}{900}{OT1}
+\setfont\reducedttsl\ttslshape{10}{900}{OT1TT}
+\font\reducedi=cmmi9
+\font\reducedsy=cmsy9
+\def\reducedecsize{0900}
+
+\divide\parskip by 2  % reduce space between paragraphs
+\textleading = 12pt   % line spacing for 10pt CM
+\textfonts            % reset the current fonts
+\rm
+} % end of 10pt text font size definitions
+
+
+% We provide the user-level command
+%   @fonttextsize 10
+% (or 11) to redefine the text font size.  pt is assumed.
+%
+\def\xiword{11}
+\def\xword{10}
+\def\xwordpt{10pt}
+%
+\parseargdef\fonttextsize{%
+  \def\textsizearg{#1}%
+  %\wlog{doing @fonttextsize \textsizearg}%
+  %
+  % Set \globaldefs so that documents can use this inside @tex, since
+  % makeinfo 4.8 does not support it, but we need it nonetheless.
+  %
+ \begingroup \globaldefs=1
+  \ifx\textsizearg\xword \definetextfontsizex
+  \else \ifx\textsizearg\xiword \definetextfontsizexi
+  \else
+    \errhelp=\EMsimple
+    \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'}
+  \fi\fi
+ \endgroup
+}
+
+
+% In order for the font changes to affect most math symbols and letters,
+% we have to define the \textfont of the standard families.  Since
+% texinfo doesn't allow for producing subscripts and superscripts except
+% in the main text, we don't bother to reset \scriptfont and
+% \scriptscriptfont (which would also require loading a lot more fonts).
+%
+\def\resetmathfonts{%
+  \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy
+  \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf
+  \textfont\ttfam=\tentt \textfont\sffam=\tensf
+}
+
+% The font-changing commands redefine the meanings of \tenSTYLE, instead
+% of just \STYLE.  We do this because \STYLE needs to also set the
+% current \fam for math mode.  Our \STYLE (e.g., \rm) commands hardwire
+% \tenSTYLE to set the current font.
+%
+% Each font-changing command also sets the names \lsize (one size lower)
+% and \lllsize (three sizes lower).  These relative commands are used in
+% the LaTeX logo and acronyms.
+%
+% This all needs generalizing, badly.
+%
+\def\textfonts{%
+  \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl
+  \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc
+  \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy
+  \let\tenttsl=\textttsl
+  \def\curfontsize{text}%
+  \def\lsize{reduced}\def\lllsize{smaller}%
+  \resetmathfonts \setleading{\textleading}}
+\def\titlefonts{%
+  \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl
+  \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc
+  \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy
+  \let\tenttsl=\titlettsl
+  \def\curfontsize{title}%
+  \def\lsize{chap}\def\lllsize{subsec}%
+  \resetmathfonts \setleading{27pt}}
+\def\titlefont#1{{\titlefonts\rmisbold #1}}
+\def\chapfonts{%
+  \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
+  \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
+  \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy
+  \let\tenttsl=\chapttsl
+  \def\curfontsize{chap}%
+  \def\lsize{sec}\def\lllsize{text}%
+  \resetmathfonts \setleading{19pt}}
+\def\secfonts{%
+  \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl
+  \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc
+  \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy
+  \let\tenttsl=\secttsl
+  \def\curfontsize{sec}%
+  \def\lsize{subsec}\def\lllsize{reduced}%
+  \resetmathfonts \setleading{16pt}}
+\def\subsecfonts{%
+  \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl
+  \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc
+  \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy
+  \let\tenttsl=\ssecttsl
+  \def\curfontsize{ssec}%
+  \def\lsize{text}\def\lllsize{small}%
+  \resetmathfonts \setleading{15pt}}
+\let\subsubsecfonts = \subsecfonts
+\def\reducedfonts{%
+  \let\tenrm=\reducedrm \let\tenit=\reducedit \let\tensl=\reducedsl
+  \let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc
+  \let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy
+  \let\tenttsl=\reducedttsl
+  \def\curfontsize{reduced}%
+  \def\lsize{small}\def\lllsize{smaller}%
+  \resetmathfonts \setleading{10.5pt}}
+\def\smallfonts{%
+  \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl
+  \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc
+  \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy
+  \let\tenttsl=\smallttsl
+  \def\curfontsize{small}%
+  \def\lsize{smaller}\def\lllsize{smaller}%
+  \resetmathfonts \setleading{10.5pt}}
+\def\smallerfonts{%
+  \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl
+  \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc
+  \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy
+  \let\tenttsl=\smallerttsl
+  \def\curfontsize{smaller}%
+  \def\lsize{smaller}\def\lllsize{smaller}%
+  \resetmathfonts \setleading{9.5pt}}
+
+% Fonts for short table of contents.
+\setfont\shortcontrm\rmshape{12}{1000}{OT1}
+\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1}  % no cmb12
+\setfont\shortcontsl\slshape{12}{1000}{OT1}
+\setfont\shortconttt\ttshape{12}{1000}{OT1TT}
+
+% Define these just so they can be easily changed for other fonts.
+\def\angleleft{$\langle$}
+\def\angleright{$\rangle$}
+
+% Set the fonts to use with the @small... environments.
+\let\smallexamplefonts = \smallfonts
+
+% About \smallexamplefonts.  If we use \smallfonts (9pt), @smallexample
+% can fit this many characters:
+%   8.5x11=86   smallbook=72  a4=90  a5=69
+% If we use \scriptfonts (8pt), then we can fit this many characters:
+%   8.5x11=90+  smallbook=80  a4=90+  a5=77
+% For me, subjectively, the few extra characters that fit aren't worth
+% the additional smallness of 8pt.  So I'm making the default 9pt.
+%
+% By the way, for comparison, here's what fits with @example (10pt):
+%   8.5x11=71  smallbook=60  a4=75  a5=58
+% --karl, 24jan03.
+
+% Set up the default fonts, so we can use them for creating boxes.
+%
+\definetextfontsizexi
+
+
+\message{markup,}
+
+% Check if we are currently using a typewriter font.  Since all the
+% Computer Modern typewriter fonts have zero interword stretch (and
+% shrink), and it is reasonable to expect all typewriter fonts to have
+% this property, we can check that font parameter.
+%
+\def\ifmonospace{\ifdim\fontdimen3\font=0pt }
+
+% Markup style infrastructure.  \defmarkupstylesetup\INITMACRO will
+% define and register \INITMACRO to be called on markup style changes.
+% \INITMACRO can check \currentmarkupstyle for the innermost
+% style and the set of \ifmarkupSTYLE switches for all styles
+% currently in effect.
+\newif\ifmarkupvar
+\newif\ifmarkupsamp
+\newif\ifmarkupkey
+%\newif\ifmarkupfile % @file == @samp.
+%\newif\ifmarkupoption % @option == @samp.
+\newif\ifmarkupcode
+\newif\ifmarkupkbd
+%\newif\ifmarkupenv % @env == @code.
+%\newif\ifmarkupcommand % @command == @code.
+\newif\ifmarkuptex % @tex (and part of @math, for now).
+\newif\ifmarkupexample
+\newif\ifmarkupverb
+\newif\ifmarkupverbatim
+
+\let\currentmarkupstyle\empty
+
+\def\setupmarkupstyle#1{%
+  \csname markup#1true\endcsname
+  \def\currentmarkupstyle{#1}%
+  \markupstylesetup
+}
+
+\let\markupstylesetup\empty
+
+\def\defmarkupstylesetup#1{%
+  \expandafter\def\expandafter\markupstylesetup
+    \expandafter{\markupstylesetup #1}%
+  \def#1%
+}
+
+% Markup style setup for left and right quotes.
+\defmarkupstylesetup\markupsetuplq{%
+  \expandafter\let\expandafter \temp
+    \csname markupsetuplq\currentmarkupstyle\endcsname
+  \ifx\temp\relax \markupsetuplqdefault \else \temp \fi
+}
+
+\defmarkupstylesetup\markupsetuprq{%
+  \expandafter\let\expandafter \temp
+    \csname markupsetuprq\currentmarkupstyle\endcsname
+  \ifx\temp\relax \markupsetuprqdefault \else \temp \fi
+}
+
+{
+\catcode`\'=\active
+\catcode`\`=\active
+
+\gdef\markupsetuplqdefault{\let`\lq}
+\gdef\markupsetuprqdefault{\let'\rq}
+
+\gdef\markupsetcodequoteleft{\let`\codequoteleft}
+\gdef\markupsetcodequoteright{\let'\codequoteright}
+
+\gdef\markupsetnoligaturesquoteleft{\let`\noligaturesquoteleft}
+}
+
+\let\markupsetuplqcode \markupsetcodequoteleft
+\let\markupsetuprqcode \markupsetcodequoteright
+%
+\let\markupsetuplqexample \markupsetcodequoteleft
+\let\markupsetuprqexample \markupsetcodequoteright
+%
+\let\markupsetuplqsamp \markupsetcodequoteleft
+\let\markupsetuprqsamp \markupsetcodequoteright
+%
+\let\markupsetuplqverb \markupsetcodequoteleft
+\let\markupsetuprqverb \markupsetcodequoteright
+%
+\let\markupsetuplqverbatim \markupsetcodequoteleft
+\let\markupsetuprqverbatim \markupsetcodequoteright
+
+\let\markupsetuplqkbd \markupsetnoligaturesquoteleft
+
+% Allow an option to not use regular directed right quote/apostrophe
+% (char 0x27), but instead the undirected quote from cmtt (char 0x0d).
+% The undirected quote is ugly, so don't make it the default, but it
+% works for pasting with more pdf viewers (at least evince), the
+% lilypond developers report.  xpdf does work with the regular 0x27.
+%
+\def\codequoteright{%
+  \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax
+    \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax
+      '%
+    \else \char'15 \fi
+  \else \char'15 \fi
+}
+%
+% and a similar option for the left quote char vs. a grave accent.
+% Modern fonts display ASCII 0x60 as a grave accent, so some people like
+% the code environments to do likewise.
+%
+\def\codequoteleft{%
+  \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax
+    \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax
+      % [Knuth] pp. 380,381,391
+      % \relax disables Spanish ligatures ?` and !` of \tt font.
+      \relax`%
+    \else \char'22 \fi
+  \else \char'22 \fi
+}
+
+% Commands to set the quote options.
+% 
+\parseargdef\codequoteundirected{%
+  \def\temp{#1}%
+  \ifx\temp\onword
+    \expandafter\let\csname SETtxicodequoteundirected\endcsname
+      = t%
+  \else\ifx\temp\offword
+    \expandafter\let\csname SETtxicodequoteundirected\endcsname
+      = \relax
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}%
+  \fi\fi
+}
+%
+\parseargdef\codequotebacktick{%
+  \def\temp{#1}%
+  \ifx\temp\onword
+    \expandafter\let\csname SETtxicodequotebacktick\endcsname
+      = t%
+  \else\ifx\temp\offword
+    \expandafter\let\csname SETtxicodequotebacktick\endcsname
+      = \relax
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @codequotebacktick value `\temp', must be on|off}%
+  \fi\fi
+}
+
+% [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font.
+\def\noligaturesquoteleft{\relax\lq}
+
+% Count depth in font-changes, for error checks
+\newcount\fontdepth \fontdepth=0
+
+% Font commands.
+
+% #1 is the font command (\sl or \it), #2 is the text to slant.
+% If we are in a monospaced environment, however, 1) always use \ttsl,
+% and 2) do not add an italic correction.
+\def\dosmartslant#1#2{%
+  \ifusingtt 
+    {{\ttsl #2}\let\next=\relax}%
+    {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}%
+  \next
+}
+\def\smartslanted{\dosmartslant\sl}
+\def\smartitalic{\dosmartslant\it}
+
+% Output an italic correction unless \next (presumed to be the following
+% character) is such as not to need one.
+\def\smartitaliccorrection{%
+  \ifx\next,%
+  \else\ifx\next-%
+  \else\ifx\next.%
+  \else\ptexslash
+  \fi\fi\fi}
+
+% like \smartslanted except unconditionally uses \ttsl, and no ic.
+% @var is set to this for defun arguments.
+\def\ttslanted#1{{\ttsl #1}}
+
+% @cite is like \smartslanted except unconditionally use \sl.  We never want
+% ttsl for book titles, do we?
+\def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection}
+
+\let\i=\smartitalic
+\let\slanted=\smartslanted
+\def\var#1{\smartslanted{#1}}
+\let\dfn=\smartslanted
+\let\emph=\smartitalic
+
+% Explicit font changes: @r, @sc, undocumented @ii.
+\def\r#1{{\rm #1}}              % roman font
+\def\sc#1{{\smallcaps#1}}       % smallcaps font
+\def\ii#1{{\it #1}}             % italic font
+
+% @b, explicit bold.  Also @strong.
+\def\b#1{{\bf #1}}
+\let\strong=\b
+
+% @sansserif, explicit sans.
+\def\sansserif#1{{\sf #1}}
+
+% We can't just use \exhyphenpenalty, because that only has effect at
+% the end of a paragraph.  Restore normal hyphenation at the end of the
+% group within which \nohyphenation is presumably called.
+%
+\def\nohyphenation{\hyphenchar\font = -1  \aftergroup\restorehyphenation}
+\def\restorehyphenation{\hyphenchar\font = `- }
+
+% Set sfcode to normal for the chars that usually have another value.
+% Can't use plain's \frenchspacing because it uses the `\x notation, and
+% sometimes \x has an active definition that messes things up.
+%
+\catcode`@=11
+  \def\plainfrenchspacing{%
+    \sfcode\dotChar  =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m
+    \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m
+    \def\endofsentencespacefactor{1000}% for @. and friends
+  }
+  \def\plainnonfrenchspacing{%
+    \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000
+    \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250
+    \def\endofsentencespacefactor{3000}% for @. and friends
+  }
+\catcode`@=\other
+\def\endofsentencespacefactor{3000}% default
+
+% @t, explicit typewriter.
+\def\t#1{%
+  {\tt \rawbackslash \plainfrenchspacing #1}%
+  \null
+}
+
+% @samp.
+\def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}}
+
+% definition of @key that produces a lozenge.  Doesn't adjust to text size.
+%\setfont\keyrm\rmshape{8}{1000}{OT1}
+%\font\keysy=cmsy9
+%\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
+%  \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
+%    \vbox{\hrule\kern-0.4pt
+%     \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
+%    \kern-0.4pt\hrule}%
+%  \kern-.06em\raise0.4pt\hbox{\angleright}}}}
+
+% definition of @key with no lozenge.  If the current font is already
+% monospace, don't change it; that way, we respect @kbdinputstyle.  But
+% if it isn't monospace, then use \tt.
+%
+\def\key#1{{\setupmarkupstyle{key}%
+  \nohyphenation
+  \ifmonospace\else\tt\fi
+  #1}\null}
+
+% ctrl is no longer a Texinfo command.
+\def\ctrl #1{{\tt \rawbackslash \hat}#1}
+
+% @file, @option are the same as @samp.
+\let\file=\samp
+\let\option=\samp
+
+% @code is a modification of @t,
+% which makes spaces the same size as normal in the surrounding text.
+\def\tclose#1{%
+  {%
+    % Change normal interword space to be same as for the current font.
+    \spaceskip = \fontdimen2\font
+    %
+    % Switch to typewriter.
+    \tt
+    %
+    % But `\ ' produces the large typewriter interword space.
+    \def\ {{\spaceskip = 0pt{} }}%
+    %
+    % Turn off hyphenation.
+    \nohyphenation
+    %
+    \rawbackslash
+    \plainfrenchspacing
+    #1%
+  }%
+  \null
+}
+
+% We *must* turn on hyphenation at `-' and `_' in @code.
+% Otherwise, it is too hard to avoid overfull hboxes
+% in the Emacs manual, the Library manual, etc.
+
+% Unfortunately, TeX uses one parameter (\hyphenchar) to control
+% both hyphenation at - and hyphenation within words.
+% We must therefore turn them both off (\tclose does that)
+% and arrange explicitly to hyphenate at a dash.
+%  -- rms.
+{
+  \catcode`\-=\active \catcode`\_=\active
+  \catcode`\'=\active \catcode`\`=\active
+  \global\let'=\rq \global\let`=\lq  % default definitions
+  %
+  \global\def\code{\begingroup
+    \setupmarkupstyle{code}%
+    % The following should really be moved into \setupmarkupstyle handlers.
+    \catcode\dashChar=\active  \catcode\underChar=\active
+    \ifallowcodebreaks
+     \let-\codedash
+     \let_\codeunder
+    \else
+     \let-\realdash
+     \let_\realunder
+    \fi
+    \codex
+  }
+}
+
+\def\codex #1{\tclose{#1}\endgroup}
+
+\def\realdash{-}
+\def\codedash{-\discretionary{}{}{}}
+\def\codeunder{%
+  % this is all so @math{@code{var_name}+1} can work.  In math mode, _
+  % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.)
+  % will therefore expand the active definition of _, which is us
+  % (inside @code that is), therefore an endless loop.
+  \ifusingtt{\ifmmode
+               \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_.
+             \else\normalunderscore \fi
+             \discretionary{}{}{}}%
+            {\_}%
+}
+
+% An additional complication: the above will allow breaks after, e.g.,
+% each of the four underscores in __typeof__.  This is undesirable in
+% some manuals, especially if they don't have long identifiers in
+% general.  @allowcodebreaks provides a way to control this.
+%
+\newif\ifallowcodebreaks  \allowcodebreakstrue
+
+\def\keywordtrue{true}
+\def\keywordfalse{false}
+
+\parseargdef\allowcodebreaks{%
+  \def\txiarg{#1}%
+  \ifx\txiarg\keywordtrue
+    \allowcodebreakstrue
+  \else\ifx\txiarg\keywordfalse
+    \allowcodebreaksfalse
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @allowcodebreaks option `\txiarg', must be true|false}%
+  \fi\fi
+}
+
+% @uref (abbreviation for `urlref') takes an optional (comma-separated)
+% second argument specifying the text to display and an optional third
+% arg as text to display instead of (rather than in addition to) the url
+% itself.  First (mandatory) arg is the url.
+% (This \urefnobreak definition isn't used now, leaving it for a while
+% for comparison.)
+\def\urefnobreak#1{\dourefnobreak #1,,,\finish}
+\def\dourefnobreak#1,#2,#3,#4\finish{\begingroup
+  \unsepspaces
+  \pdfurl{#1}%
+  \setbox0 = \hbox{\ignorespaces #3}%
+  \ifdim\wd0 > 0pt
+    \unhbox0 % third arg given, show only that
+  \else
+    \setbox0 = \hbox{\ignorespaces #2}%
+    \ifdim\wd0 > 0pt
+      \ifpdf
+        \unhbox0             % PDF: 2nd arg given, show only it
+      \else
+        \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url
+      \fi
+    \else
+      \code{#1}% only url given, so show it
+    \fi
+  \fi
+  \endlink
+\endgroup}
+
+% This \urefbreak definition is the active one.
+\def\urefbreak{\begingroup \urefcatcodes \dourefbreak}
+\let\uref=\urefbreak
+\def\dourefbreak#1{\urefbreakfinish #1,,,\finish}
+\def\urefbreakfinish#1,#2,#3,#4\finish{% doesn't work in @example
+  \unsepspaces
+  \pdfurl{#1}%
+  \setbox0 = \hbox{\ignorespaces #3}%
+  \ifdim\wd0 > 0pt
+    \unhbox0 % third arg given, show only that
+  \else
+    \setbox0 = \hbox{\ignorespaces #2}%
+    \ifdim\wd0 > 0pt
+      \ifpdf
+        \unhbox0             % PDF: 2nd arg given, show only it
+      \else
+        \unhbox0\ (\urefcode{#1})% DVI: 2nd arg given, show both it and url
+      \fi
+    \else
+      \urefcode{#1}% only url given, so show it
+    \fi
+  \fi
+  \endlink
+\endgroup}
+
+% Allow line breaks around only a few characters (only).
+\def\urefcatcodes{%
+  \catcode\ampChar=\active   \catcode\dotChar=\active
+  \catcode\hashChar=\active  \catcode\questChar=\active
+  \catcode\slashChar=\active
+}
+{
+  \urefcatcodes
+  %
+  \global\def\urefcode{\begingroup
+    \setupmarkupstyle{code}%
+    \urefcatcodes
+    \let&\urefcodeamp
+    \let.\urefcodedot
+    \let#\urefcodehash
+    \let?\urefcodequest
+    \let/\urefcodeslash
+    \codex
+  }
+  %
+  % By default, they are just regular characters.
+  \global\def&{\normalamp}
+  \global\def.{\normaldot}
+  \global\def#{\normalhash}
+  \global\def?{\normalquest}
+  \global\def/{\normalslash}
+}
+
+% we put a little stretch before and after the breakable chars, to help
+% line breaking of long url's.  The unequal skips make look better in
+% cmtt at least, especially for dots.
+\def\urefprestretch{\urefprebreak \hskip0pt plus.13em }
+\def\urefpoststretch{\urefpostbreak \hskip0pt plus.1em }
+%
+\def\urefcodeamp{\urefprestretch \&\urefpoststretch}
+\def\urefcodedot{\urefprestretch .\urefpoststretch}
+\def\urefcodehash{\urefprestretch \#\urefpoststretch}
+\def\urefcodequest{\urefprestretch ?\urefpoststretch}
+\def\urefcodeslash{\futurelet\next\urefcodeslashfinish}
+{
+  \catcode`\/=\active
+  \global\def\urefcodeslashfinish{%
+    \urefprestretch \slashChar
+    % Allow line break only after the final / in a sequence of
+    % slashes, to avoid line break between the slashes in http://.
+    \ifx\next/\else \urefpoststretch \fi
+  }
+}
+
+% One more complication: by default we'll break after the special
+% characters, but some people like to break before the special chars, so
+% allow that.  Also allow no breaking at all, for manual control.
+% 
+\parseargdef\urefbreakstyle{%
+  \def\txiarg{#1}%
+  \ifx\txiarg\wordnone
+    \def\urefprebreak{\nobreak}\def\urefpostbreak{\nobreak}
+  \else\ifx\txiarg\wordbefore
+    \def\urefprebreak{\allowbreak}\def\urefpostbreak{\nobreak}
+  \else\ifx\txiarg\wordafter
+    \def\urefprebreak{\nobreak}\def\urefpostbreak{\allowbreak}
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @urefbreakstyle setting `\txiarg'}%
+  \fi\fi\fi
+}
+\def\wordafter{after}
+\def\wordbefore{before}
+\def\wordnone{none}
+
+\urefbreakstyle after
+
+% @url synonym for @uref, since that's how everyone uses it.
+%
+\let\url=\uref
+
+% rms does not like angle brackets --karl, 17may97.
+% So now @email is just like @uref, unless we are pdf.
+%
+%\def\email#1{\angleleft{\tt #1}\angleright}
+\ifpdf
+  \def\email#1{\doemail#1,,\finish}
+  \def\doemail#1,#2,#3\finish{\begingroup
+    \unsepspaces
+    \pdfurl{mailto:#1}%
+    \setbox0 = \hbox{\ignorespaces #2}%
+    \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi
+    \endlink
+  \endgroup}
+\else
+  \let\email=\uref
+\fi
+
+% @kbd is like @code, except that if the argument is just one @key command,
+% then @kbd has no effect.
+\def\kbd#1{{\setupmarkupstyle{kbd}\def\look{#1}\expandafter\kbdfoo\look??\par}}
+
+% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
+%   `example' (@kbd uses ttsl only inside of @example and friends),
+%   or `code' (@kbd uses normal tty font always).
+\parseargdef\kbdinputstyle{%
+  \def\txiarg{#1}%
+  \ifx\txiarg\worddistinct
+    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
+  \else\ifx\txiarg\wordexample
+    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
+  \else\ifx\txiarg\wordcode
+    \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @kbdinputstyle setting `\txiarg'}%
+  \fi\fi\fi
+}
+\def\worddistinct{distinct}
+\def\wordexample{example}
+\def\wordcode{code}
+
+% Default is `distinct'.
+\kbdinputstyle distinct
+
+\def\xkey{\key}
+\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%
+\ifx\one\xkey\ifx\threex\three \key{#2}%
+\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
+\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi}
+
+% For @indicateurl, @env, @command quotes seem unnecessary, so use \code.
+\let\indicateurl=\code
+\let\env=\code
+\let\command=\code
+
+% @clicksequence{File @click{} Open ...}
+\def\clicksequence#1{\begingroup #1\endgroup}
+
+% @clickstyle @arrow   (by default)
+\parseargdef\clickstyle{\def\click{#1}}
+\def\click{\arrow}
+
+% Typeset a dimension, e.g., `in' or `pt'.  The only reason for the
+% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt.
+%
+\def\dmn#1{\thinspace #1}
+
+% @l was never documented to mean ``switch to the Lisp font'',
+% and it is not used as such in any manual I can find.  We need it for
+% Polish suppressed-l.  --karl, 22sep96.
+%\def\l#1{{\li #1}\null}
+
+% @acronym for "FBI", "NATO", and the like.
+% We print this one point size smaller, since it's intended for
+% all-uppercase.
+%
+\def\acronym#1{\doacronym #1,,\finish}
+\def\doacronym#1,#2,#3\finish{%
+  {\selectfonts\lsize #1}%
+  \def\temp{#2}%
+  \ifx\temp\empty \else
+    \space ({\unsepspaces \ignorespaces \temp \unskip})%
+  \fi
+}
+
+% @abbr for "Comput. J." and the like.
+% No font change, but don't do end-of-sentence spacing.
+%
+\def\abbr#1{\doabbr #1,,\finish}
+\def\doabbr#1,#2,#3\finish{%
+  {\plainfrenchspacing #1}%
+  \def\temp{#2}%
+  \ifx\temp\empty \else
+    \space ({\unsepspaces \ignorespaces \temp \unskip})%
+  \fi
+}
+
+% @asis just yields its argument.  Used with @table, for example.
+%
+\def\asis#1{#1}
+
+% @math outputs its argument in math mode.
+%
+% One complication: _ usually means subscripts, but it could also mean
+% an actual _ character, as in @math{@var{some_variable} + 1}.  So make
+% _ active, and distinguish by seeing if the current family is \slfam,
+% which is what @var uses.
+{
+  \catcode`\_ = \active
+  \gdef\mathunderscore{%
+    \catcode`\_=\active
+    \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
+  }
+}
+% Another complication: we want \\ (and @\) to output a math (or tt) \.
+% FYI, plain.tex uses \\ as a temporary control sequence (for no
+% particular reason), but this is not advertised and we don't care.
+%
+% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
+\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
+%
+\def\math{%
+  \tex
+  \mathunderscore
+  \let\\ = \mathbackslash
+  \mathactive
+  % make the texinfo accent commands work in math mode
+  \let\"=\ddot
+  \let\'=\acute
+  \let\==\bar
+  \let\^=\hat
+  \let\`=\grave
+  \let\u=\breve
+  \let\v=\check
+  \let\~=\tilde
+  \let\dotaccent=\dot
+  $\finishmath
+}
+\def\finishmath#1{#1$\endgroup}  % Close the group opened by \tex.
+
+% Some active characters (such as <) are spaced differently in math.
+% We have to reset their definitions in case the @math was an argument
+% to a command which sets the catcodes (such as @item or @section).
+%
+{
+  \catcode`^ = \active
+  \catcode`< = \active
+  \catcode`> = \active
+  \catcode`+ = \active
+  \catcode`' = \active
+  \gdef\mathactive{%
+    \let^ = \ptexhat
+    \let< = \ptexless
+    \let> = \ptexgtr
+    \let+ = \ptexplus
+    \let' = \ptexquoteright
+  }
+}
+
+
+\message{glyphs,}
+% and logos.
+
+% @@ prints an @.
+\def\@{\char64 }
+
+% Used to generate quoted braces.  Unless we're in typewriter, use
+% \ecfont because the CM text fonts do not have braces, and we don't
+% want to switch into math.
+\def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}}
+\def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}}
+\let\{=\mylbrace
+\let\}=\myrbrace
+\begingroup
+  % Definitions to produce \{ and \} commands for indices,
+  % and @{ and @} for the aux/toc files.
+  \catcode`\{ = \other \catcode`\} = \other
+  \catcode`\[ = 1 \catcode`\] = 2
+  \catcode`\! = 0 \catcode`\\ = \other
+  !gdef!lbracecmd[\{]%
+  !gdef!rbracecmd[\}]%
+  !gdef!lbraceatcmd[@{]%
+  !gdef!rbraceatcmd[@}]%
+!endgroup
+
+% @comma{} to avoid , parsing problems.
+\let\comma = ,
+
+% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
+% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
+\let\, = \ptexc
+\let\dotaccent = \ptexdot
+\def\ringaccent#1{{\accent23 #1}}
+\let\tieaccent = \ptext
+\let\ubaraccent = \ptexb
+\let\udotaccent = \d
+
+% Other special characters: @questiondown @exclamdown @ordf @ordm
+% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
+\def\questiondown{?`}
+\def\exclamdown{!`}
+\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}}
+\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}}
+
+% Dotless i and dotless j, used for accents.
+\def\imacro{i}
+\def\jmacro{j}
+\def\dotless#1{%
+  \def\temp{#1}%
+  \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi
+  \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi
+  \else \errmessage{@dotless can be used only with i or j}%
+  \fi\fi
+}
+
+% The \TeX{} logo, as in plain, but resetting the spacing so that a
+% period following counts as ending a sentence.  (Idea found in latex.)
+%
+\edef\TeX{\TeX \spacefactor=1000 }
+
+% @LaTeX{} logo.  Not quite the same results as the definition in
+% latex.ltx, since we use a different font for the raised A; it's most
+% convenient for us to use an explicitly smaller font, rather than using
+% the \scriptstyle font (since we don't reset \scriptstyle and
+% \scriptscriptstyle).
+%
+\def\LaTeX{%
+  L\kern-.36em
+  {\setbox0=\hbox{T}%
+   \vbox to \ht0{\hbox{%
+     \ifx\textnominalsize\xwordpt
+       % for 10pt running text, \lllsize (8pt) is too small for the A in LaTeX.
+       % Revert to plain's \scriptsize, which is 7pt.
+       \count255=\the\fam $\fam\count255 \scriptstyle A$%
+     \else
+       % For 11pt, we can use our lllsize.
+       \selectfonts\lllsize A%
+     \fi
+     }%
+     \vss
+  }}%
+  \kern-.15em
+  \TeX
+}
+
+% Some math mode symbols.
+\def\bullet{$\ptexbullet$}
+\def\geq{\ifmmode \ge\else $\ge$\fi}
+\def\leq{\ifmmode \le\else $\le$\fi}
+\def\minus{\ifmmode -\else $-$\fi}
+
+% @dots{} outputs an ellipsis using the current font.
+% We do .5em per period so that it has the same spacing in the cm
+% typewriter fonts as three actual period characters; on the other hand,
+% in other typewriter fonts three periods are wider than 1.5em.  So do
+% whichever is larger.
+%
+\def\dots{%
+  \leavevmode
+  \setbox0=\hbox{...}% get width of three periods
+  \ifdim\wd0 > 1.5em
+    \dimen0 = \wd0
+  \else
+    \dimen0 = 1.5em
+  \fi
+  \hbox to \dimen0{%
+    \hskip 0pt plus.25fil
+    .\hskip 0pt plus1fil
+    .\hskip 0pt plus1fil
+    .\hskip 0pt plus.5fil
+  }%
+}
+
+% @enddots{} is an end-of-sentence ellipsis.
+%
+\def\enddots{%
+  \dots
+  \spacefactor=\endofsentencespacefactor
+}
+
+% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
+%
+% Since these characters are used in examples, they should be an even number of
+% \tt widths. Each \tt character is 1en, so two makes it 1em.
+%
+\def\point{$\star$}
+\def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}}
+\def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
+\def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}}
+\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
+\def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}}
+
+% The @error{} command.
+% Adapted from the TeXbook's \boxit.
+%
+\newbox\errorbox
+%
+{\tentt \global\dimen0 = 3em}% Width of the box.
+\dimen2 = .55pt % Thickness of rules
+% The text. (`r' is open on the right, `e' somewhat less so on the left.)
+\setbox0 = \hbox{\kern-.75pt \reducedsf error\kern-1.5pt}
+%
+\setbox\errorbox=\hbox to \dimen0{\hfil
+   \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
+   \advance\hsize by -2\dimen2 % Rules.
+   \vbox{%
+      \hrule height\dimen2
+      \hbox{\vrule width\dimen2 \kern3pt          % Space to left of text.
+         \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
+         \kern3pt\vrule width\dimen2}% Space to right.
+      \hrule height\dimen2}
+    \hfil}
+%
+\def\error{\leavevmode\lower.7ex\copy\errorbox}
+
+% @pounds{} is a sterling sign, which Knuth put in the CM italic font.
+%
+\def\pounds{{\it\$}}
+
+% @euro{} comes from a separate font, depending on the current style.
+% We use the free feym* fonts from the eurosym package by Henrik
+% Theiling, which support regular, slanted, bold and bold slanted (and
+% "outlined" (blackboard board, sort of) versions, which we don't need).
+% It is available from http://www.ctan.org/tex-archive/fonts/eurosym.
+%
+% Although only regular is the truly official Euro symbol, we ignore
+% that.  The Euro is designed to be slightly taller than the regular
+% font height.
+%
+% feymr - regular
+% feymo - slanted
+% feybr - bold
+% feybo - bold slanted
+%
+% There is no good (free) typewriter version, to my knowledge.
+% A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide.
+% Hmm.
+%
+% Also doesn't work in math.  Do we need to do math with euro symbols?
+% Hope not.
+%
+%
+\def\euro{{\eurofont e}}
+\def\eurofont{%
+  % We set the font at each command, rather than predefining it in
+  % \textfonts and the other font-switching commands, so that
+  % installations which never need the symbol don't have to have the
+  % font installed.
+  %
+  % There is only one designed size (nominal 10pt), so we always scale
+  % that to the current nominal size.
+  %
+  % By the way, simply using "at 1em" works for cmr10 and the like, but
+  % does not work for cmbx10 and other extended/shrunken fonts.
+  %
+  \def\eurosize{\csname\curfontsize nominalsize\endcsname}%
+  %
+  \ifx\curfontstyle\bfstylename
+    % bold:
+    \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize
+  \else
+    % regular:
+    \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize
+  \fi
+  \thiseurofont
+}
+
+% Glyphs from the EC fonts.  We don't use \let for the aliases, because
+% sometimes we redefine the original macro, and the alias should reflect
+% the redefinition.
+%
+% Use LaTeX names for the Icelandic letters.
+\def\DH{{\ecfont \char"D0}} % Eth
+\def\dh{{\ecfont \char"F0}} % eth
+\def\TH{{\ecfont \char"DE}} % Thorn
+\def\th{{\ecfont \char"FE}} % thorn
+%
+\def\guillemetleft{{\ecfont \char"13}}
+\def\guillemotleft{\guillemetleft}
+\def\guillemetright{{\ecfont \char"14}}
+\def\guillemotright{\guillemetright}
+\def\guilsinglleft{{\ecfont \char"0E}}
+\def\guilsinglright{{\ecfont \char"0F}}
+\def\quotedblbase{{\ecfont \char"12}}
+\def\quotesinglbase{{\ecfont \char"0D}}
+%
+% This positioning is not perfect (see the ogonek LaTeX package), but
+% we have the precomposed glyphs for the most common cases.  We put the
+% tests to use those glyphs in the single \ogonek macro so we have fewer
+% dummy definitions to worry about for index entries, etc.
+%
+% ogonek is also used with other letters in Lithuanian (IOU), but using
+% the precomposed glyphs for those is not so easy since they aren't in
+% the same EC font.
+\def\ogonek#1{{%
+  \def\temp{#1}%
+  \ifx\temp\macrocharA\Aogonek
+  \else\ifx\temp\macrochara\aogonek
+  \else\ifx\temp\macrocharE\Eogonek
+  \else\ifx\temp\macrochare\eogonek
+  \else
+    \ecfont \setbox0=\hbox{#1}%
+    \ifdim\ht0=1ex\accent"0C #1%
+    \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}%
+    \fi
+  \fi\fi\fi\fi
+  }%
+}
+\def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A}
+\def\aogonek{{\ecfont \char"A1}}\def\macrochara{a}
+\def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E}
+\def\eogonek{{\ecfont \char"A6}}\def\macrochare{e}
+%
+% Use the ec* fonts (cm-super in outline format) for non-CM glyphs.
+\def\ecfont{%
+  % We can't distinguish serif/sans and italic/slanted, but this
+  % is used for crude hacks anyway (like adding French and German
+  % quotes to documents typeset with CM, where we lose kerning), so
+  % hopefully nobody will notice/care.
+  \edef\ecsize{\csname\curfontsize ecsize\endcsname}%
+  \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}%
+  \ifx\curfontstyle\bfstylename
+    % bold:
+    \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize
+  \else
+    % regular:
+    \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize
+  \fi
+  \thisecfont
+}
+
+% @registeredsymbol - R in a circle.  The font for the R should really
+% be smaller yet, but lllsize is the best we can do for now.
+% Adapted from the plain.tex definition of \copyright.
+%
+\def\registeredsymbol{%
+  $^{{\ooalign{\hfil\raise.07ex\hbox{\selectfonts\lllsize R}%
+               \hfil\crcr\Orb}}%
+    }$%
+}
+
+% @textdegree - the normal degrees sign.
+%
+\def\textdegree{$^\circ$}
+
+% Laurent Siebenmann reports \Orb undefined with:
+%  Textures 1.7.7 (preloaded format=plain 93.10.14)  (68K)  16 APR 2004 02:38
+% so we'll define it if necessary.
+%
+\ifx\Orb\thisisundefined
+\def\Orb{\mathhexbox20D}
+\fi
+
+% Quotes.
+\chardef\quotedblleft="5C
+\chardef\quotedblright=`\"
+\chardef\quoteleft=`\`
+\chardef\quoteright=`\'
+
+
+\message{page headings,}
+
+\newskip\titlepagetopglue \titlepagetopglue = 1.5in
+\newskip\titlepagebottomglue \titlepagebottomglue = 2pc
+
+% First the title page.  Must do @settitle before @titlepage.
+\newif\ifseenauthor
+\newif\iffinishedtitlepage
+
+% Do an implicit @contents or @shortcontents after @end titlepage if the
+% user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage.
+%
+\newif\ifsetcontentsaftertitlepage
+ \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue
+\newif\ifsetshortcontentsaftertitlepage
+ \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue
+
+\parseargdef\shorttitlepage{%
+  \begingroup \hbox{}\vskip 1.5in \chaprm \centerline{#1}%
+  \endgroup\page\hbox{}\page}
+
+\envdef\titlepage{%
+  % Open one extra group, as we want to close it in the middle of \Etitlepage.
+  \begingroup
+    \parindent=0pt \textfonts
+    % Leave some space at the very top of the page.
+    \vglue\titlepagetopglue
+    % No rule at page bottom unless we print one at the top with @title.
+    \finishedtitlepagetrue
+    %
+    % Most title ``pages'' are actually two pages long, with space
+    % at the top of the second.  We don't want the ragged left on the second.
+    \let\oldpage = \page
+    \def\page{%
+      \iffinishedtitlepage\else
+        \finishtitlepage
+      \fi
+      \let\page = \oldpage
+      \page
+      \null
+    }%
+}
+
+\def\Etitlepage{%
+    \iffinishedtitlepage\else
+       \finishtitlepage
+    \fi
+    % It is important to do the page break before ending the group,
+    % because the headline and footline are only empty inside the group.
+    % If we use the new definition of \page, we always get a blank page
+    % after the title page, which we certainly don't want.
+    \oldpage
+  \endgroup
+  %
+  % Need this before the \...aftertitlepage checks so that if they are
+  % in effect the toc pages will come out with page numbers.
+  \HEADINGSon
+  %
+  % If they want short, they certainly want long too.
+  \ifsetshortcontentsaftertitlepage
+    \shortcontents
+    \contents
+    \global\let\shortcontents = \relax
+    \global\let\contents = \relax
+  \fi
+  %
+  \ifsetcontentsaftertitlepage
+    \contents
+    \global\let\contents = \relax
+    \global\let\shortcontents = \relax
+  \fi
+}
+
+\def\finishtitlepage{%
+  \vskip4pt \hrule height 2pt width \hsize
+  \vskip\titlepagebottomglue
+  \finishedtitlepagetrue
+}
+
+% Macros to be used within @titlepage:
+
+\let\subtitlerm=\tenrm
+\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}
+
+\parseargdef\title{%
+  \checkenv\titlepage
+  \leftline{\titlefonts\rmisbold #1}
+  % print a rule at the page bottom also.
+  \finishedtitlepagefalse
+  \vskip4pt \hrule height 4pt width \hsize \vskip4pt
+}
+
+\parseargdef\subtitle{%
+  \checkenv\titlepage
+  {\subtitlefont \rightline{#1}}%
+}
+
+% @author should come last, but may come many times.
+% It can also be used inside @quotation.
+%
+\parseargdef\author{%
+  \def\temp{\quotation}%
+  \ifx\thisenv\temp
+    \def\quotationauthor{#1}% printed in \Equotation.
+  \else
+    \checkenv\titlepage
+    \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi
+    {\secfonts\rmisbold \leftline{#1}}%
+  \fi
+}
+
+
+% Set up page headings and footings.
+
+\let\thispage=\folio
+
+\newtoks\evenheadline    % headline on even pages
+\newtoks\oddheadline     % headline on odd pages
+\newtoks\evenfootline    % footline on even pages
+\newtoks\oddfootline     % footline on odd pages
+
+% Now make TeX use those variables
+\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline
+                            \else \the\evenheadline \fi}}
+\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline
+                            \else \the\evenfootline \fi}\HEADINGShook}
+\let\HEADINGShook=\relax
+
+% Commands to set those variables.
+% For example, this is what  @headings on  does
+% @evenheading @thistitle|@thispage|@thischapter
+% @oddheading @thischapter|@thispage|@thistitle
+% @evenfooting @thisfile||
+% @oddfooting ||@thisfile
+
+
+\def\evenheading{\parsearg\evenheadingxxx}
+\def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish}
+\def\evenheadingyyy #1\|#2\|#3\|#4\finish{%
+\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\def\oddheading{\parsearg\oddheadingxxx}
+\def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish}
+\def\oddheadingyyy #1\|#2\|#3\|#4\finish{%
+\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}%
+
+\def\evenfooting{\parsearg\evenfootingxxx}
+\def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish}
+\def\evenfootingyyy #1\|#2\|#3\|#4\finish{%
+\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\def\oddfooting{\parsearg\oddfootingxxx}
+\def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish}
+\def\oddfootingyyy #1\|#2\|#3\|#4\finish{%
+  \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}%
+  %
+  % Leave some space for the footline.  Hopefully ok to assume
+  % @evenfooting will not be used by itself.
+  \global\advance\pageheight by -12pt
+  \global\advance\vsize by -12pt
+}
+
+\parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}}
+
+% @evenheadingmarks top     \thischapter <- chapter at the top of a page
+% @evenheadingmarks bottom  \thischapter <- chapter at the bottom of a page
+%
+% The same set of arguments for:
+%
+% @oddheadingmarks
+% @evenfootingmarks
+% @oddfootingmarks
+% @everyheadingmarks
+% @everyfootingmarks
+
+\def\evenheadingmarks{\headingmarks{even}{heading}}
+\def\oddheadingmarks{\headingmarks{odd}{heading}}
+\def\evenfootingmarks{\headingmarks{even}{footing}}
+\def\oddfootingmarks{\headingmarks{odd}{footing}}
+\def\everyheadingmarks#1 {\headingmarks{even}{heading}{#1}
+                          \headingmarks{odd}{heading}{#1} }
+\def\everyfootingmarks#1 {\headingmarks{even}{footing}{#1}
+                          \headingmarks{odd}{footing}{#1} }
+% #1 = even/odd, #2 = heading/footing, #3 = top/bottom.
+\def\headingmarks#1#2#3 {%
+  \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname
+  \global\expandafter\let\csname get#1#2marks\endcsname \temp
+}
+
+\everyheadingmarks bottom
+\everyfootingmarks bottom
+
+% @headings double      turns headings on for double-sided printing.
+% @headings single      turns headings on for single-sided printing.
+% @headings off         turns them off.
+% @headings on          same as @headings double, retained for compatibility.
+% @headings after       turns on double-sided headings after this page.
+% @headings doubleafter turns on double-sided headings after this page.
+% @headings singleafter turns on single-sided headings after this page.
+% By default, they are off at the start of a document,
+% and turned `on' after @end titlepage.
+
+\def\headings #1 {\csname HEADINGS#1\endcsname}
+
+\def\headingsoff{% non-global headings elimination
+  \evenheadline={\hfil}\evenfootline={\hfil}%
+   \oddheadline={\hfil}\oddfootline={\hfil}%
+}
+
+\def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting
+\HEADINGSoff  % it's the default
+
+% When we turn headings on, set the page number to 1.
+% For double-sided printing, put current file name in lower left corner,
+% chapter name on inside top of right hand pages, document
+% title on inside top of left hand pages, and page numbers on outside top
+% edge of all pages.
+\def\HEADINGSdouble{%
+\global\pageno=1
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\folio\hfil\thistitle}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chapoddpage
+}
+\let\contentsalignmacro = \chappager
+
+% For single-sided printing, chapter title goes across top left of page,
+% page number on top right.
+\def\HEADINGSsingle{%
+\global\pageno=1
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\thischapter\hfil\folio}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chappager
+}
+\def\HEADINGSon{\HEADINGSdouble}
+
+\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex}
+\let\HEADINGSdoubleafter=\HEADINGSafter
+\def\HEADINGSdoublex{%
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\folio\hfil\thistitle}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chapoddpage
+}
+
+\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex}
+\def\HEADINGSsinglex{%
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\thischapter\hfil\folio}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chappager
+}
+
+% Subroutines used in generating headings
+% This produces Day Month Year style of output.
+% Only define if not already defined, in case a txi-??.tex file has set
+% up a different format (e.g., txi-cs.tex does this).
+\ifx\today\thisisundefined
+\def\today{%
+  \number\day\space
+  \ifcase\month
+  \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
+  \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug
+  \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
+  \fi
+  \space\number\year}
+\fi
+
+% @settitle line...  specifies the title of the document, for headings.
+% It generates no output of its own.
+\def\thistitle{\putwordNoTitle}
+\def\settitle{\parsearg{\gdef\thistitle}}
+
+
+\message{tables,}
+% Tables -- @table, @ftable, @vtable, @item(x).
+
+% default indentation of table text
+\newdimen\tableindent \tableindent=.8in
+% default indentation of @itemize and @enumerate text
+\newdimen\itemindent  \itemindent=.3in
+% margin between end of table item and start of table text.
+\newdimen\itemmargin  \itemmargin=.1in
+
+% used internally for \itemindent minus \itemmargin
+\newdimen\itemmax
+
+% Note @table, @ftable, and @vtable define @item, @itemx, etc., with
+% these defs.
+% They also define \itemindex
+% to index the item name in whatever manner is desired (perhaps none).
+
+\newif\ifitemxneedsnegativevskip
+
+\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi}
+
+\def\internalBitem{\smallbreak \parsearg\itemzzz}
+\def\internalBitemx{\itemxpar \parsearg\itemzzz}
+
+\def\itemzzz #1{\begingroup %
+  \advance\hsize by -\rightskip
+  \advance\hsize by -\tableindent
+  \setbox0=\hbox{\itemindicate{#1}}%
+  \itemindex{#1}%
+  \nobreak % This prevents a break before @itemx.
+  %
+  % If the item text does not fit in the space we have, put it on a line
+  % by itself, and do not allow a page break either before or after that
+  % line.  We do not start a paragraph here because then if the next
+  % command is, e.g., @kindex, the whatsit would get put into the
+  % horizontal list on a line by itself, resulting in extra blank space.
+  \ifdim \wd0>\itemmax
+    %
+    % Make this a paragraph so we get the \parskip glue and wrapping,
+    % but leave it ragged-right.
+    \begingroup
+      \advance\leftskip by-\tableindent
+      \advance\hsize by\tableindent
+      \advance\rightskip by0pt plus1fil\relax
+      \leavevmode\unhbox0\par
+    \endgroup
+    %
+    % We're going to be starting a paragraph, but we don't want the
+    % \parskip glue -- logically it's part of the @item we just started.
+    \nobreak \vskip-\parskip
+    %
+    % Stop a page break at the \parskip glue coming up.  However, if
+    % what follows is an environment such as @example, there will be no
+    % \parskip glue; then the negative vskip we just inserted would
+    % cause the example and the item to crash together.  So we use this
+    % bizarre value of 10001 as a signal to \aboveenvbreak to insert
+    % \parskip glue after all.  Section titles are handled this way also.
+    %
+    \penalty 10001
+    \endgroup
+    \itemxneedsnegativevskipfalse
+  \else
+    % The item text fits into the space.  Start a paragraph, so that the
+    % following text (if any) will end up on the same line.
+    \noindent
+    % Do this with kerns and \unhbox so that if there is a footnote in
+    % the item text, it can migrate to the main vertical list and
+    % eventually be printed.
+    \nobreak\kern-\tableindent
+    \dimen0 = \itemmax  \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0
+    \unhbox0
+    \nobreak\kern\dimen0
+    \endgroup
+    \itemxneedsnegativevskiptrue
+  \fi
+}
+
+\def\item{\errmessage{@item while not in a list environment}}
+\def\itemx{\errmessage{@itemx while not in a list environment}}
+
+% @table, @ftable, @vtable.
+\envdef\table{%
+  \let\itemindex\gobble
+  \tablecheck{table}%
+}
+\envdef\ftable{%
+  \def\itemindex ##1{\doind {fn}{\code{##1}}}%
+  \tablecheck{ftable}%
+}
+\envdef\vtable{%
+  \def\itemindex ##1{\doind {vr}{\code{##1}}}%
+  \tablecheck{vtable}%
+}
+\def\tablecheck#1{%
+  \ifnum \the\catcode`\^^M=\active
+    \endgroup
+    \errmessage{This command won't work in this context; perhaps the problem is
+      that we are \inenvironment\thisenv}%
+    \def\next{\doignore{#1}}%
+  \else
+    \let\next\tablex
+  \fi
+  \next
+}
+\def\tablex#1{%
+  \def\itemindicate{#1}%
+  \parsearg\tabley
+}
+\def\tabley#1{%
+  {%
+    \makevalueexpandable
+    \edef\temp{\noexpand\tablez #1\space\space\space}%
+    \expandafter
+  }\temp \endtablez
+}
+\def\tablez #1 #2 #3 #4\endtablez{%
+  \aboveenvbreak
+  \ifnum 0#1>0 \advance \leftskip by #1\mil \fi
+  \ifnum 0#2>0 \tableindent=#2\mil \fi
+  \ifnum 0#3>0 \advance \rightskip by #3\mil \fi
+  \itemmax=\tableindent
+  \advance \itemmax by -\itemmargin
+  \advance \leftskip by \tableindent
+  \exdentamount=\tableindent
+  \parindent = 0pt
+  \parskip = \smallskipamount
+  \ifdim \parskip=0pt \parskip=2pt \fi
+  \let\item = \internalBitem
+  \let\itemx = \internalBitemx
+}
+\def\Etable{\endgraf\afterenvbreak}
+\let\Eftable\Etable
+\let\Evtable\Etable
+\let\Eitemize\Etable
+\let\Eenumerate\Etable
+
+% This is the counter used by @enumerate, which is really @itemize
+
+\newcount \itemno
+
+\envdef\itemize{\parsearg\doitemize}
+
+\def\doitemize#1{%
+  \aboveenvbreak
+  \itemmax=\itemindent
+  \advance\itemmax by -\itemmargin
+  \advance\leftskip by \itemindent
+  \exdentamount=\itemindent
+  \parindent=0pt
+  \parskip=\smallskipamount
+  \ifdim\parskip=0pt \parskip=2pt \fi
+  %
+  % Try typesetting the item mark that if the document erroneously says
+  % something like @itemize @samp (intending @table), there's an error
+  % right away at the @itemize.  It's not the best error message in the
+  % world, but it's better than leaving it to the @item.  This means if
+  % the user wants an empty mark, they have to say @w{} not just @w.
+  \def\itemcontents{#1}%
+  \setbox0 = \hbox{\itemcontents}%
+  %
+  % @itemize with no arg is equivalent to @itemize @bullet.
+  \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi
+  %
+  \let\item=\itemizeitem
+}
+
+% Definition of @item while inside @itemize and @enumerate.
+%
+\def\itemizeitem{%
+  \advance\itemno by 1  % for enumerations
+  {\let\par=\endgraf \smallbreak}% reasonable place to break
+  {%
+   % If the document has an @itemize directly after a section title, a
+   % \nobreak will be last on the list, and \sectionheading will have
+   % done a \vskip-\parskip.  In that case, we don't want to zero
+   % parskip, or the item text will crash with the heading.  On the
+   % other hand, when there is normal text preceding the item (as there
+   % usually is), we do want to zero parskip, or there would be too much
+   % space.  In that case, we won't have a \nobreak before.  At least
+   % that's the theory.
+   \ifnum\lastpenalty<10000 \parskip=0in \fi
+   \noindent
+   \hbox to 0pt{\hss \itemcontents \kern\itemmargin}%
+   %
+   \vadjust{\penalty 1200}}% not good to break after first line of item.
+  \flushcr
+}
+
+% \splitoff TOKENS\endmark defines \first to be the first token in
+% TOKENS, and \rest to be the remainder.
+%
+\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}%
+
+% Allow an optional argument of an uppercase letter, lowercase letter,
+% or number, to specify the first label in the enumerated list.  No
+% argument is the same as `1'.
+%
+\envparseargdef\enumerate{\enumeratey #1  \endenumeratey}
+\def\enumeratey #1 #2\endenumeratey{%
+  % If we were given no argument, pretend we were given `1'.
+  \def\thearg{#1}%
+  \ifx\thearg\empty \def\thearg{1}\fi
+  %
+  % Detect if the argument is a single token.  If so, it might be a
+  % letter.  Otherwise, the only valid thing it can be is a number.
+  % (We will always have one token, because of the test we just made.
+  % This is a good thing, since \splitoff doesn't work given nothing at
+  % all -- the first parameter is undelimited.)
+  \expandafter\splitoff\thearg\endmark
+  \ifx\rest\empty
+    % Only one token in the argument.  It could still be anything.
+    % A ``lowercase letter'' is one whose \lccode is nonzero.
+    % An ``uppercase letter'' is one whose \lccode is both nonzero, and
+    %   not equal to itself.
+    % Otherwise, we assume it's a number.
+    %
+    % We need the \relax at the end of the \ifnum lines to stop TeX from
+    % continuing to look for a <number>.
+    %
+    \ifnum\lccode\expandafter`\thearg=0\relax
+      \numericenumerate % a number (we hope)
+    \else
+      % It's a letter.
+      \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax
+        \lowercaseenumerate % lowercase letter
+      \else
+        \uppercaseenumerate % uppercase letter
+      \fi
+    \fi
+  \else
+    % Multiple tokens in the argument.  We hope it's a number.
+    \numericenumerate
+  \fi
+}
+
+% An @enumerate whose labels are integers.  The starting integer is
+% given in \thearg.
+%
+\def\numericenumerate{%
+  \itemno = \thearg
+  \startenumeration{\the\itemno}%
+}
+
+% The starting (lowercase) letter is in \thearg.
+\def\lowercaseenumerate{%
+  \itemno = \expandafter`\thearg
+  \startenumeration{%
+    % Be sure we're not beyond the end of the alphabet.
+    \ifnum\itemno=0
+      \errmessage{No more lowercase letters in @enumerate; get a bigger
+                  alphabet}%
+    \fi
+    \char\lccode\itemno
+  }%
+}
+
+% The starting (uppercase) letter is in \thearg.
+\def\uppercaseenumerate{%
+  \itemno = \expandafter`\thearg
+  \startenumeration{%
+    % Be sure we're not beyond the end of the alphabet.
+    \ifnum\itemno=0
+      \errmessage{No more uppercase letters in @enumerate; get a bigger
+                  alphabet}
+    \fi
+    \char\uccode\itemno
+  }%
+}
+
+% Call \doitemize, adding a period to the first argument and supplying the
+% common last two arguments.  Also subtract one from the initial value in
+% \itemno, since @item increments \itemno.
+%
+\def\startenumeration#1{%
+  \advance\itemno by -1
+  \doitemize{#1.}\flushcr
+}
+
+% @alphaenumerate and @capsenumerate are abbreviations for giving an arg
+% to @enumerate.
+%
+\def\alphaenumerate{\enumerate{a}}
+\def\capsenumerate{\enumerate{A}}
+\def\Ealphaenumerate{\Eenumerate}
+\def\Ecapsenumerate{\Eenumerate}
+
+
+% @multitable macros
+% Amy Hendrickson, 8/18/94, 3/6/96
+%
+% @multitable ... @end multitable will make as many columns as desired.
+% Contents of each column will wrap at width given in preamble.  Width
+% can be specified either with sample text given in a template line,
+% or in percent of \hsize, the current width of text on page.
+
+% Table can continue over pages but will only break between lines.
+
+% To make preamble:
+%
+% Either define widths of columns in terms of percent of \hsize:
+%   @multitable @columnfractions .25 .3 .45
+%   @item ...
+%
+%   Numbers following @columnfractions are the percent of the total
+%   current hsize to be used for each column. You may use as many
+%   columns as desired.
+
+
+% Or use a template:
+%   @multitable {Column 1 template} {Column 2 template} {Column 3 template}
+%   @item ...
+%   using the widest term desired in each column.
+
+% Each new table line starts with @item, each subsequent new column
+% starts with @tab. Empty columns may be produced by supplying @tab's
+% with nothing between them for as many times as empty columns are needed,
+% ie, @tab@tab@tab will produce two empty columns.
+
+% @item, @tab do not need to be on their own lines, but it will not hurt
+% if they are.
+
+% Sample multitable:
+
+%   @multitable {Column 1 template} {Column 2 template} {Column 3 template}
+%   @item first col stuff @tab second col stuff @tab third col
+%   @item
+%   first col stuff
+%   @tab
+%   second col stuff
+%   @tab
+%   third col
+%   @item first col stuff @tab second col stuff
+%   @tab Many paragraphs of text may be used in any column.
+%
+%         They will wrap at the width determined by the template.
+%   @item@tab@tab This will be in third column.
+%   @end multitable
+
+% Default dimensions may be reset by user.
+% @multitableparskip is vertical space between paragraphs in table.
+% @multitableparindent is paragraph indent in table.
+% @multitablecolmargin is horizontal space to be left between columns.
+% @multitablelinespace is space to leave between table items, baseline
+%                                                            to baseline.
+%   0pt means it depends on current normal line spacing.
+%
+\newskip\multitableparskip
+\newskip\multitableparindent
+\newdimen\multitablecolspace
+\newskip\multitablelinespace
+\multitableparskip=0pt
+\multitableparindent=6pt
+\multitablecolspace=12pt
+\multitablelinespace=0pt
+
+% Macros used to set up halign preamble:
+%
+\let\endsetuptable\relax
+\def\xendsetuptable{\endsetuptable}
+\let\columnfractions\relax
+\def\xcolumnfractions{\columnfractions}
+\newif\ifsetpercent
+
+% #1 is the @columnfraction, usually a decimal number like .5, but might
+% be just 1.  We just use it, whatever it is.
+%
+\def\pickupwholefraction#1 {%
+  \global\advance\colcount by 1
+  \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}%
+  \setuptable
+}
+
+\newcount\colcount
+\def\setuptable#1{%
+  \def\firstarg{#1}%
+  \ifx\firstarg\xendsetuptable
+    \let\go = \relax
+  \else
+    \ifx\firstarg\xcolumnfractions
+      \global\setpercenttrue
+    \else
+      \ifsetpercent
+         \let\go\pickupwholefraction
+      \else
+         \global\advance\colcount by 1
+         \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a
+                   % separator; typically that is always in the input, anyway.
+         \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}%
+      \fi
+    \fi
+    \ifx\go\pickupwholefraction
+      % Put the argument back for the \pickupwholefraction call, so
+      % we'll always have a period there to be parsed.
+      \def\go{\pickupwholefraction#1}%
+    \else
+      \let\go = \setuptable
+    \fi%
+  \fi
+  \go
+}
+
+% multitable-only commands.
+%
+% @headitem starts a heading row, which we typeset in bold.
+% Assignments have to be global since we are inside the implicit group
+% of an alignment entry.  \everycr resets \everytab so we don't have to
+% undo it ourselves.
+\def\headitemfont{\b}% for people to use in the template row; not changeable
+\def\headitem{%
+  \checkenv\multitable
+  \crcr
+  \global\everytab={\bf}% can't use \headitemfont since the parsing differs
+  \the\everytab % for the first item
+}%
+%
+% A \tab used to include \hskip1sp.  But then the space in a template
+% line is not enough.  That is bad.  So let's go back to just `&' until
+% we again encounter the problem the 1sp was intended to solve.
+%                                      --karl, nathan@acm.org, 20apr99.
+\def\tab{\checkenv\multitable &\the\everytab}%
+
+% @multitable ... @end multitable definitions:
+%
+\newtoks\everytab  % insert after every tab.
+%
+\envdef\multitable{%
+  \vskip\parskip
+  \startsavinginserts
+  %
+  % @item within a multitable starts a normal row.
+  % We use \def instead of \let so that if one of the multitable entries
+  % contains an @itemize, we don't choke on the \item (seen as \crcr aka
+  % \endtemplate) expanding \doitemize.
+  \def\item{\crcr}%
+  %
+  \tolerance=9500
+  \hbadness=9500
+  \setmultitablespacing
+  \parskip=\multitableparskip
+  \parindent=\multitableparindent
+  \overfullrule=0pt
+  \global\colcount=0
+  %
+  \everycr = {%
+    \noalign{%
+      \global\everytab={}%
+      \global\colcount=0 % Reset the column counter.
+      % Check for saved footnotes, etc.
+      \checkinserts
+      % Keeps underfull box messages off when table breaks over pages.
+      %\filbreak
+       % Maybe so, but it also creates really weird page breaks when the
+       % table breaks over pages. Wouldn't \vfil be better?  Wait until the
+       % problem manifests itself, so it can be fixed for real --karl.
+    }%
+  }%
+  %
+  \parsearg\domultitable
+}
+\def\domultitable#1{%
+  % To parse everything between @multitable and @item:
+  \setuptable#1 \endsetuptable
+  %
+  % This preamble sets up a generic column definition, which will
+  % be used as many times as user calls for columns.
+  % \vtop will set a single line and will also let text wrap and
+  % continue for many paragraphs if desired.
+  \halign\bgroup &%
+    \global\advance\colcount by 1
+    \multistrut
+    \vtop{%
+      % Use the current \colcount to find the correct column width:
+      \hsize=\expandafter\csname col\the\colcount\endcsname
+      %
+      % In order to keep entries from bumping into each other
+      % we will add a \leftskip of \multitablecolspace to all columns after
+      % the first one.
+      %
+      % If a template has been used, we will add \multitablecolspace
+      % to the width of each template entry.
+      %
+      % If the user has set preamble in terms of percent of \hsize we will
+      % use that dimension as the width of the column, and the \leftskip
+      % will keep entries from bumping into each other.  Table will start at
+      % left margin and final column will justify at right margin.
+      %
+      % Make sure we don't inherit \rightskip from the outer environment.
+      \rightskip=0pt
+      \ifnum\colcount=1
+       % The first column will be indented with the surrounding text.
+       \advance\hsize by\leftskip
+      \else
+       \ifsetpercent \else
+         % If user has not set preamble in terms of percent of \hsize
+         % we will advance \hsize by \multitablecolspace.
+         \advance\hsize by \multitablecolspace
+       \fi
+       % In either case we will make \leftskip=\multitablecolspace:
+      \leftskip=\multitablecolspace
+      \fi
+      % Ignoring space at the beginning and end avoids an occasional spurious
+      % blank line, when TeX decides to break the line at the space before the
+      % box from the multistrut, so the strut ends up on a line by itself.
+      % For example:
+      % @multitable @columnfractions .11 .89
+      % @item @code{#}
+      % @tab Legal holiday which is valid in major parts of the whole country.
+      % Is automatically provided with highlighting sequences respectively
+      % marking characters.
+      \noindent\ignorespaces##\unskip\multistrut
+    }\cr
+}
+\def\Emultitable{%
+  \crcr
+  \egroup % end the \halign
+  \global\setpercentfalse
+}
+
+\def\setmultitablespacing{%
+  \def\multistrut{\strut}% just use the standard line spacing
+  %
+  % Compute \multitablelinespace (if not defined by user) for use in
+  % \multitableparskip calculation.  We used define \multistrut based on
+  % this, but (ironically) that caused the spacing to be off.
+  % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100.
+\ifdim\multitablelinespace=0pt
+\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip
+\global\advance\multitablelinespace by-\ht0
+\fi
+% Test to see if parskip is larger than space between lines of
+% table. If not, do nothing.
+%        If so, set to same dimension as multitablelinespace.
+\ifdim\multitableparskip>\multitablelinespace
+\global\multitableparskip=\multitablelinespace
+\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
+                                      %% than skip between lines in the table.
+\fi%
+\ifdim\multitableparskip=0pt
+\global\multitableparskip=\multitablelinespace
+\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
+                                      %% than skip between lines in the table.
+\fi}
+
+
+\message{conditionals,}
+
+% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext,
+% @ifnotxml always succeed.  They currently do nothing; we don't
+% attempt to check whether the conditionals are properly nested.  But we
+% have to remember that they are conditionals, so that @end doesn't
+% attempt to close an environment group.
+%
+\def\makecond#1{%
+  \expandafter\let\csname #1\endcsname = \relax
+  \expandafter\let\csname iscond.#1\endcsname = 1
+}
+\makecond{iftex}
+\makecond{ifnotdocbook}
+\makecond{ifnothtml}
+\makecond{ifnotinfo}
+\makecond{ifnotplaintext}
+\makecond{ifnotxml}
+
+% Ignore @ignore, @ifhtml, @ifinfo, and the like.
+%
+\def\direntry{\doignore{direntry}}
+\def\documentdescription{\doignore{documentdescription}}
+\def\docbook{\doignore{docbook}}
+\def\html{\doignore{html}}
+\def\ifdocbook{\doignore{ifdocbook}}
+\def\ifhtml{\doignore{ifhtml}}
+\def\ifinfo{\doignore{ifinfo}}
+\def\ifnottex{\doignore{ifnottex}}
+\def\ifplaintext{\doignore{ifplaintext}}
+\def\ifxml{\doignore{ifxml}}
+\def\ignore{\doignore{ignore}}
+\def\menu{\doignore{menu}}
+\def\xml{\doignore{xml}}
+
+% Ignore text until a line `@end #1', keeping track of nested conditionals.
+%
+% A count to remember the depth of nesting.
+\newcount\doignorecount
+
+\def\doignore#1{\begingroup
+  % Scan in ``verbatim'' mode:
+  \obeylines
+  \catcode`\@ = \other
+  \catcode`\{ = \other
+  \catcode`\} = \other
+  %
+  % Make sure that spaces turn into tokens that match what \doignoretext wants.
+  \spaceisspace
+  %
+  % Count number of #1's that we've seen.
+  \doignorecount = 0
+  %
+  % Swallow text until we reach the matching `@end #1'.
+  \dodoignore{#1}%
+}
+
+{ \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source.
+  \obeylines %
+  %
+  \gdef\dodoignore#1{%
+    % #1 contains the command name as a string, e.g., `ifinfo'.
+    %
+    % Define a command to find the next `@end #1'.
+    \long\def\doignoretext##1^^M@end #1{%
+      \doignoretextyyy##1^^M@#1\_STOP_}%
+    %
+    % And this command to find another #1 command, at the beginning of a
+    % line.  (Otherwise, we would consider a line `@c @ifset', for
+    % example, to count as an @ifset for nesting.)
+    \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}%
+    %
+    % And now expand that command.
+    \doignoretext ^^M%
+  }%
+}
+
+\def\doignoreyyy#1{%
+  \def\temp{#1}%
+  \ifx\temp\empty                      % Nothing found.
+    \let\next\doignoretextzzz
+  \else                                        % Found a nested condition, ...
+    \advance\doignorecount by 1
+    \let\next\doignoretextyyy          % ..., look for another.
+    % If we're here, #1 ends with ^^M\ifinfo (for example).
+  \fi
+  \next #1% the token \_STOP_ is present just after this macro.
+}
+
+% We have to swallow the remaining "\_STOP_".
+%
+\def\doignoretextzzz#1{%
+  \ifnum\doignorecount = 0     % We have just found the outermost @end.
+    \let\next\enddoignore
+  \else                                % Still inside a nested condition.
+    \advance\doignorecount by -1
+    \let\next\doignoretext      % Look for the next @end.
+  \fi
+  \next
+}
+
+% Finish off ignored text.
+{ \obeylines%
+  % Ignore anything after the last `@end #1'; this matters in verbatim
+  % environments, where otherwise the newline after an ignored conditional
+  % would result in a blank line in the output.
+  \gdef\enddoignore#1^^M{\endgroup\ignorespaces}%
+}
+
+
+% @set VAR sets the variable VAR to an empty value.
+% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE.
+%
+% Since we want to separate VAR from REST-OF-LINE (which might be
+% empty), we can't just use \parsearg; we have to insert a space of our
+% own to delimit the rest of the line, and then take it out again if we
+% didn't need it.
+% We rely on the fact that \parsearg sets \catcode`\ =10.
+%
+\parseargdef\set{\setyyy#1 \endsetyyy}
+\def\setyyy#1 #2\endsetyyy{%
+  {%
+    \makevalueexpandable
+    \def\temp{#2}%
+    \edef\next{\gdef\makecsname{SET#1}}%
+    \ifx\temp\empty
+      \next{}%
+    \else
+      \setzzz#2\endsetzzz
+    \fi
+  }%
+}
+% Remove the trailing space \setxxx inserted.
+\def\setzzz#1 \endsetzzz{\next{#1}}
+
+% @clear VAR clears (i.e., unsets) the variable VAR.
+%
+\parseargdef\clear{%
+  {%
+    \makevalueexpandable
+    \global\expandafter\let\csname SET#1\endcsname=\relax
+  }%
+}
+
+% @value{foo} gets the text saved in variable foo.
+\def\value{\begingroup\makevalueexpandable\valuexxx}
+\def\valuexxx#1{\expandablevalue{#1}\endgroup}
+{
+  \catcode`\- = \active \catcode`\_ = \active
+  %
+  \gdef\makevalueexpandable{%
+    \let\value = \expandablevalue
+    % We don't want these characters active, ...
+    \catcode`\-=\other \catcode`\_=\other
+    % ..., but we might end up with active ones in the argument if
+    % we're called from @code, as @code{@value{foo-bar_}}, though.
+    % So \let them to their normal equivalents.
+    \let-\realdash \let_\normalunderscore
+  }
+}
+
+% We have this subroutine so that we can handle at least some @value's
+% properly in indexes (we call \makevalueexpandable in \indexdummies).
+% The command has to be fully expandable (if the variable is set), since
+% the result winds up in the index file.  This means that if the
+% variable's value contains other Texinfo commands, it's almost certain
+% it will fail (although perhaps we could fix that with sufficient work
+% to do a one-level expansion on the result, instead of complete).
+%
+\def\expandablevalue#1{%
+  \expandafter\ifx\csname SET#1\endcsname\relax
+    {[No value for ``#1'']}%
+    \message{Variable `#1', used in @value, is not set.}%
+  \else
+    \csname SET#1\endcsname
+  \fi
+}
+
+% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
+% with @set.
+%
+% To get special treatment of `@end ifset,' call \makeond and the redefine.
+%
+\makecond{ifset}
+\def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}}
+\def\doifset#1#2{%
+  {%
+    \makevalueexpandable
+    \let\next=\empty
+    \expandafter\ifx\csname SET#2\endcsname\relax
+      #1% If not set, redefine \next.
+    \fi
+    \expandafter
+  }\next
+}
+\def\ifsetfail{\doignore{ifset}}
+
+% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been
+% defined with @set, or has been undefined with @clear.
+%
+% The `\else' inside the `\doifset' parameter is a trick to reuse the
+% above code: if the variable is not set, do nothing, if it is set,
+% then redefine \next to \ifclearfail.
+%
+\makecond{ifclear}
+\def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}}
+\def\ifclearfail{\doignore{ifclear}}
+
+% @dircategory CATEGORY  -- specify a category of the dir file
+% which this file should belong to.  Ignore this in TeX.
+\let\dircategory=\comment
+
+% @defininfoenclose.
+\let\definfoenclose=\comment
+
+
+\message{indexing,}
+% Index generation facilities
+
+% Define \newwrite to be identical to plain tex's \newwrite
+% except not \outer, so it can be used within macros and \if's.
+\edef\newwrite{\makecsname{ptexnewwrite}}
+
+% \newindex {foo} defines an index named foo.
+% It automatically defines \fooindex such that
+% \fooindex ...rest of line... puts an entry in the index foo.
+% It also defines \fooindfile to be the number of the output channel for
+% the file that accumulates this index.  The file's extension is foo.
+% The name of an index should be no more than 2 characters long
+% for the sake of vms.
+%
+\def\newindex#1{%
+  \iflinks
+    \expandafter\newwrite \csname#1indfile\endcsname
+    \openout \csname#1indfile\endcsname \jobname.#1 % Open the file
+  \fi
+  \expandafter\xdef\csname#1index\endcsname{%     % Define @#1index
+    \noexpand\doindex{#1}}
+}
+
+% @defindex foo  ==  \newindex{foo}
+%
+\def\defindex{\parsearg\newindex}
+
+% Define @defcodeindex, like @defindex except put all entries in @code.
+%
+\def\defcodeindex{\parsearg\newcodeindex}
+%
+\def\newcodeindex#1{%
+  \iflinks
+    \expandafter\newwrite \csname#1indfile\endcsname
+    \openout \csname#1indfile\endcsname \jobname.#1
+  \fi
+  \expandafter\xdef\csname#1index\endcsname{%
+    \noexpand\docodeindex{#1}}%
+}
+
+
+% @synindex foo bar    makes index foo feed into index bar.
+% Do this instead of @defindex foo if you don't want it as a separate index.
+%
+% @syncodeindex foo bar   similar, but put all entries made for index foo
+% inside @code.
+%
+\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}}
+\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}}
+
+% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo),
+% #3 the target index (bar).
+\def\dosynindex#1#2#3{%
+  % Only do \closeout if we haven't already done it, else we'll end up
+  % closing the target index.
+  \expandafter \ifx\csname donesynindex#2\endcsname \relax
+    % The \closeout helps reduce unnecessary open files; the limit on the
+    % Acorn RISC OS is a mere 16 files.
+    \expandafter\closeout\csname#2indfile\endcsname
+    \expandafter\let\csname donesynindex#2\endcsname = 1
+  \fi
+  % redefine \fooindfile:
+  \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname
+  \expandafter\let\csname#2indfile\endcsname=\temp
+  % redefine \fooindex:
+  \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}%
+}
+
+% Define \doindex, the driver for all \fooindex macros.
+% Argument #1 is generated by the calling \fooindex macro,
+%  and it is "foo", the name of the index.
+
+% \doindex just uses \parsearg; it calls \doind for the actual work.
+% This is because \doind is more useful to call from other macros.
+
+% There is also \dosubind {index}{topic}{subtopic}
+% which makes an entry in a two-level index such as the operation index.
+
+\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer}
+\def\singleindexer #1{\doind{\indexname}{#1}}
+
+% like the previous two, but they put @code around the argument.
+\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}
+\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}
+
+% Take care of Texinfo commands that can appear in an index entry.
+% Since there are some commands we want to expand, and others we don't,
+% we have to laboriously prevent expansion for those that we don't.
+%
+\def\indexdummies{%
+  \escapechar = `\\     % use backslash in output files.
+  \def\@{@}% change to @@ when we switch to @ as escape char in index files.
+  \def\ {\realbackslash\space }%
+  %
+  % Need these unexpandable (because we define \tt as a dummy)
+  % definitions when @{ or @} appear in index entry text.  Also, more
+  % complicated, when \tex is in effect and \{ is a \delimiter again.
+  % We can't use \lbracecmd and \rbracecmd because texindex assumes
+  % braces and backslashes are used only as delimiters.  Perhaps we
+  % should define @lbrace and @rbrace commands a la @comma.
+  \def\{{{\tt\char123}}%
+  \def\}{{\tt\char125}}%
+  %
+  % I don't entirely understand this, but when an index entry is
+  % generated from a macro call, the \endinput which \scanmacro inserts
+  % causes processing to be prematurely terminated.  This is,
+  % apparently, because \indexsorttmp is fully expanded, and \endinput
+  % is an expandable command.  The redefinition below makes \endinput
+  % disappear altogether for that purpose -- although logging shows that
+  % processing continues to some further point.  On the other hand, it
+  % seems \endinput does not hurt in the printed index arg, since that
+  % is still getting written without apparent harm.
+  %
+  % Sample source (mac-idx3.tex, reported by Graham Percival to
+  % help-texinfo, 22may06):
+  % @macro funindex {WORD}
+  % @findex xyz
+  % @end macro
+  % ...
+  % @funindex commtest
+  %
+  % The above is not enough to reproduce the bug, but it gives the flavor.
+  %
+  % Sample whatsit resulting:
+  % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}}
+  %
+  % So:
+  \let\endinput = \empty
+  %
+  % Do the redefinitions.
+  \commondummies
+}
+
+% For the aux and toc files, @ is the escape character.  So we want to
+% redefine everything using @ as the escape character (instead of
+% \realbackslash, still used for index files).  When everything uses @,
+% this will be simpler.
+%
+\def\atdummies{%
+  \def\@{@@}%
+  \def\ {@ }%
+  \let\{ = \lbraceatcmd
+  \let\} = \rbraceatcmd
+  %
+  % Do the redefinitions.
+  \commondummies
+  \otherbackslash
+}
+
+% Called from \indexdummies and \atdummies.
+%
+\def\commondummies{%
+  %
+  % \definedummyword defines \#1 as \string\#1\space, thus effectively
+  % preventing its expansion.  This is used only for control words,
+  % not control letters, because the \space would be incorrect for
+  % control characters, but is needed to separate the control word
+  % from whatever follows.
+  %
+  % For control letters, we have \definedummyletter, which omits the
+  % space.
+  %
+  % These can be used both for control words that take an argument and
+  % those that do not.  If it is followed by {arg} in the input, then
+  % that will dutifully get written to the index (or wherever).
+  %
+  \def\definedummyword  ##1{\def##1{\string##1\space}}%
+  \def\definedummyletter##1{\def##1{\string##1}}%
+  \let\definedummyaccent\definedummyletter
+  %
+  \commondummiesnofonts
+  %
+  \definedummyletter\_%
+  \definedummyletter\-%
+  %
+  % Non-English letters.
+  \definedummyword\AA
+  \definedummyword\AE
+  \definedummyword\DH
+  \definedummyword\L
+  \definedummyword\O
+  \definedummyword\OE
+  \definedummyword\TH
+  \definedummyword\aa
+  \definedummyword\ae
+  \definedummyword\dh
+  \definedummyword\exclamdown
+  \definedummyword\l
+  \definedummyword\o
+  \definedummyword\oe
+  \definedummyword\ordf
+  \definedummyword\ordm
+  \definedummyword\questiondown
+  \definedummyword\ss
+  \definedummyword\th
+  %
+  % Although these internal commands shouldn't show up, sometimes they do.
+  \definedummyword\bf
+  \definedummyword\gtr
+  \definedummyword\hat
+  \definedummyword\less
+  \definedummyword\sf
+  \definedummyword\sl
+  \definedummyword\tclose
+  \definedummyword\tt
+  %
+  \definedummyword\LaTeX
+  \definedummyword\TeX
+  %
+  % Assorted special characters.
+  \definedummyword\arrow
+  \definedummyword\bullet
+  \definedummyword\comma
+  \definedummyword\copyright
+  \definedummyword\registeredsymbol
+  \definedummyword\dots
+  \definedummyword\enddots
+  \definedummyword\entrybreak
+  \definedummyword\equiv
+  \definedummyword\error
+  \definedummyword\euro
+  \definedummyword\expansion
+  \definedummyword\geq
+  \definedummyword\guillemetleft
+  \definedummyword\guillemetright
+  \definedummyword\guilsinglleft
+  \definedummyword\guilsinglright
+  \definedummyword\leq
+  \definedummyword\minus
+  \definedummyword\ogonek
+  \definedummyword\pounds
+  \definedummyword\point
+  \definedummyword\print
+  \definedummyword\quotedblbase
+  \definedummyword\quotedblleft
+  \definedummyword\quotedblright
+  \definedummyword\quoteleft
+  \definedummyword\quoteright
+  \definedummyword\quotesinglbase
+  \definedummyword\result
+  \definedummyword\textdegree
+  %
+  % We want to disable all macros so that they are not expanded by \write.
+  \macrolist
+  %
+  \normalturnoffactive
+  %
+  % Handle some cases of @value -- where it does not contain any
+  % (non-fully-expandable) commands.
+  \makevalueexpandable
+}
+
+% \commondummiesnofonts: common to \commondummies and \indexnofonts.
+%
+\def\commondummiesnofonts{%
+  % Control letters and accents.
+  \definedummyletter\!%
+  \definedummyaccent\"%
+  \definedummyaccent\'%
+  \definedummyletter\*%
+  \definedummyaccent\,%
+  \definedummyletter\.%
+  \definedummyletter\/%
+  \definedummyletter\:%
+  \definedummyaccent\=%
+  \definedummyletter\?%
+  \definedummyaccent\^%
+  \definedummyaccent\`%
+  \definedummyaccent\~%
+  \definedummyword\u
+  \definedummyword\v
+  \definedummyword\H
+  \definedummyword\dotaccent
+  \definedummyword\ogonek
+  \definedummyword\ringaccent
+  \definedummyword\tieaccent
+  \definedummyword\ubaraccent
+  \definedummyword\udotaccent
+  \definedummyword\dotless
+  %
+  % Texinfo font commands.
+  \definedummyword\b
+  \definedummyword\i
+  \definedummyword\r
+  \definedummyword\sansserif
+  \definedummyword\sc
+  \definedummyword\slanted
+  \definedummyword\t
+  %
+  % Commands that take arguments.
+  \definedummyword\acronym
+  \definedummyword\cite
+  \definedummyword\code
+  \definedummyword\command
+  \definedummyword\dfn
+  \definedummyword\dmn
+  \definedummyword\email
+  \definedummyword\emph
+  \definedummyword\env
+  \definedummyword\file
+  \definedummyword\indicateurl
+  \definedummyword\kbd
+  \definedummyword\key
+  \definedummyword\math
+  \definedummyword\option
+  \definedummyword\pxref
+  \definedummyword\ref
+  \definedummyword\samp
+  \definedummyword\strong
+  \definedummyword\tie
+  \definedummyword\uref
+  \definedummyword\url
+  \definedummyword\var
+  \definedummyword\verb
+  \definedummyword\w
+  \definedummyword\xref
+}
+
+% \indexnofonts is used when outputting the strings to sort the index
+% by, and when constructing control sequence names.  It eliminates all
+% control sequences and just writes whatever the best ASCII sort string
+% would be for a given command (usually its argument).
+%
+\def\indexnofonts{%
+  % Accent commands should become @asis.
+  \def\definedummyaccent##1{\let##1\asis}%
+  % We can just ignore other control letters.
+  \def\definedummyletter##1{\let##1\empty}%
+  % All control words become @asis by default; overrides below.
+  \let\definedummyword\definedummyaccent
+  %
+  \commondummiesnofonts
+  %
+  % Don't no-op \tt, since it isn't a user-level command
+  % and is used in the definitions of the active chars like <, >, |, etc.
+  % Likewise with the other plain tex font commands.
+  %\let\tt=\asis
+  %
+  \def\ { }%
+  \def\@{@}%
+  \def\_{\normalunderscore}%
+  \def\-{}% @- shouldn't affect sorting
+  %
+  % Unfortunately, texindex is not prepared to handle braces in the
+  % content at all.  So for index sorting, we map @{ and @} to strings
+  % starting with |, since that ASCII character is between ASCII { and }.
+  \def\{{|a}%
+  \def\}{|b}%
+  %
+  % Non-English letters.
+  \def\AA{AA}%
+  \def\AE{AE}%
+  \def\DH{DZZ}%
+  \def\L{L}%
+  \def\OE{OE}%
+  \def\O{O}%
+  \def\TH{ZZZ}%
+  \def\aa{aa}%
+  \def\ae{ae}%
+  \def\dh{dzz}%
+  \def\exclamdown{!}%
+  \def\l{l}%
+  \def\oe{oe}%
+  \def\ordf{a}%
+  \def\ordm{o}%
+  \def\o{o}%
+  \def\questiondown{?}%
+  \def\ss{ss}%
+  \def\th{zzz}%
+  %
+  \def\LaTeX{LaTeX}%
+  \def\TeX{TeX}%
+  %
+  % Assorted special characters.
+  % (The following {} will end up in the sort string, but that's ok.)
+  \def\arrow{->}%
+  \def\bullet{bullet}%
+  \def\comma{,}%
+  \def\copyright{copyright}%
+  \def\dots{...}%
+  \def\enddots{...}%
+  \def\equiv{==}%
+  \def\error{error}%
+  \def\euro{euro}%
+  \def\expansion{==>}%
+  \def\geq{>=}%
+  \def\guillemetleft{<<}%
+  \def\guillemetright{>>}%
+  \def\guilsinglleft{<}%
+  \def\guilsinglright{>}%
+  \def\leq{<=}%
+  \def\minus{-}%
+  \def\point{.}%
+  \def\pounds{pounds}%
+  \def\print{-|}%
+  \def\quotedblbase{"}%
+  \def\quotedblleft{"}%
+  \def\quotedblright{"}%
+  \def\quoteleft{`}%
+  \def\quoteright{'}%
+  \def\quotesinglbase{,}%
+  \def\registeredsymbol{R}%
+  \def\result{=>}%
+  \def\textdegree{o}%
+  %
+  \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax
+  \else \indexlquoteignore \fi
+  %
+  % We need to get rid of all macros, leaving only the arguments (if present).
+  % Of course this is not nearly correct, but it is the best we can do for now.
+  % makeinfo does not expand macros in the argument to @deffn, which ends up
+  % writing an index entry, and texindex isn't prepared for an index sort entry
+  % that starts with \.
+  %
+  % Since macro invocations are followed by braces, we can just redefine them
+  % to take a single TeX argument.  The case of a macro invocation that
+  % goes to end-of-line is not handled.
+  %
+  \macrolist
+}
+
+% Undocumented (for FSFS 2nd ed.): @set txiindexlquoteignore makes us
+% ignore left quotes in the sort term.
+{\catcode`\`=\active
+ \gdef\indexlquoteignore{\let`=\empty}}
+
+\let\indexbackslash=0  %overridden during \printindex.
+\let\SETmarginindex=\relax % put index entries in margin (undocumented)?
+
+% Most index entries go through here, but \dosubind is the general case.
+% #1 is the index name, #2 is the entry text.
+\def\doind#1#2{\dosubind{#1}{#2}{}}
+
+% Workhorse for all \fooindexes.
+% #1 is name of index, #2 is stuff to put there, #3 is subentry --
+% empty if called from \doind, as we usually are (the main exception
+% is with most defuns, which call us directly).
+%
+\def\dosubind#1#2#3{%
+  \iflinks
+  {%
+    % Store the main index entry text (including the third arg).
+    \toks0 = {#2}%
+    % If third arg is present, precede it with a space.
+    \def\thirdarg{#3}%
+    \ifx\thirdarg\empty \else
+      \toks0 = \expandafter{\the\toks0 \space #3}%
+    \fi
+    %
+    \edef\writeto{\csname#1indfile\endcsname}%
+    %
+    \safewhatsit\dosubindwrite
+  }%
+  \fi
+}
+
+% Write the entry in \toks0 to the index file:
+%
+\def\dosubindwrite{%
+  % Put the index entry in the margin if desired.
+  \ifx\SETmarginindex\relax\else
+    \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}%
+  \fi
+  %
+  % Remember, we are within a group.
+  \indexdummies % Must do this here, since \bf, etc expand at this stage
+  \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now
+      % so it will be output as is; and it will print as backslash.
+  %
+  % Process the index entry with all font commands turned off, to
+  % get the string to sort by.
+  {\indexnofonts
+   \edef\temp{\the\toks0}% need full expansion
+   \xdef\indexsorttmp{\temp}%
+  }%
+  %
+  % Set up the complete index entry, with both the sort key and
+  % the original text, including any font commands.  We write
+  % three arguments to \entry to the .?? file (four in the
+  % subentry case), texindex reduces to two when writing the .??s
+  % sorted result.
+  \edef\temp{%
+    \write\writeto{%
+      \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}%
+  }%
+  \temp
+}
+
+% Take care of unwanted page breaks/skips around a whatsit:
+%
+% If a skip is the last thing on the list now, preserve it
+% by backing up by \lastskip, doing the \write, then inserting
+% the skip again.  Otherwise, the whatsit generated by the
+% \write or \pdfdest will make \lastskip zero.  The result is that
+% sequences like this:
+% @end defun
+% @tindex whatever
+% @defun ...
+% will have extra space inserted, because the \medbreak in the
+% start of the @defun won't see the skip inserted by the @end of
+% the previous defun.
+%
+% But don't do any of this if we're not in vertical mode.  We
+% don't want to do a \vskip and prematurely end a paragraph.
+%
+% Avoid page breaks due to these extra skips, too.
+%
+% But wait, there is a catch there:
+% We'll have to check whether \lastskip is zero skip.  \ifdim is not
+% sufficient for this purpose, as it ignores stretch and shrink parts
+% of the skip.  The only way seems to be to check the textual
+% representation of the skip.
+%
+% The following is almost like \def\zeroskipmacro{0.0pt} except that
+% the ``p'' and ``t'' characters have catcode \other, not 11 (letter).
+%
+\edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname}
+%
+\newskip\whatsitskip
+\newcount\whatsitpenalty
+%
+% ..., ready, GO:
+%
+\def\safewhatsit#1{%
+\ifhmode
+  #1%
+\else
+  % \lastskip and \lastpenalty cannot both be nonzero simultaneously.
+  \whatsitskip = \lastskip
+  \edef\lastskipmacro{\the\lastskip}%
+  \whatsitpenalty = \lastpenalty
+  %
+  % If \lastskip is nonzero, that means the last item was a
+  % skip.  And since a skip is discardable, that means this
+  % -\whatsitskip glue we're inserting is preceded by a
+  % non-discardable item, therefore it is not a potential
+  % breakpoint, therefore no \nobreak needed.
+  \ifx\lastskipmacro\zeroskipmacro
+  \else
+    \vskip-\whatsitskip
+  \fi
+  %
+  #1%
+  %
+  \ifx\lastskipmacro\zeroskipmacro
+    % If \lastskip was zero, perhaps the last item was a penalty, and
+    % perhaps it was >=10000, e.g., a \nobreak.  In that case, we want
+    % to re-insert the same penalty (values >10000 are used for various
+    % signals); since we just inserted a non-discardable item, any
+    % following glue (such as a \parskip) would be a breakpoint.  For example:
+    %
+    %   @deffn deffn-whatever
+    %   @vindex index-whatever
+    %   Description.
+    % would allow a break between the index-whatever whatsit
+    % and the "Description." paragraph.
+    \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi
+  \else
+    % On the other hand, if we had a nonzero \lastskip,
+    % this make-up glue would be preceded by a non-discardable item
+    % (the whatsit from the \write), so we must insert a \nobreak.
+    \nobreak\vskip\whatsitskip
+  \fi
+\fi
+}
+
+% The index entry written in the file actually looks like
+%  \entry {sortstring}{page}{topic}
+% or
+%  \entry {sortstring}{page}{topic}{subtopic}
+% The texindex program reads in these files and writes files
+% containing these kinds of lines:
+%  \initial {c}
+%     before the first topic whose initial is c
+%  \entry {topic}{pagelist}
+%     for a topic that is used without subtopics
+%  \primary {topic}
+%     for the beginning of a topic that is used with subtopics
+%  \secondary {subtopic}{pagelist}
+%     for each subtopic.
+
+% Define the user-accessible indexing commands
+% @findex, @vindex, @kindex, @cindex.
+
+\def\findex {\fnindex}
+\def\kindex {\kyindex}
+\def\cindex {\cpindex}
+\def\vindex {\vrindex}
+\def\tindex {\tpindex}
+\def\pindex {\pgindex}
+
+\def\cindexsub {\begingroup\obeylines\cindexsub}
+{\obeylines %
+\gdef\cindexsub "#1" #2^^M{\endgroup %
+\dosubind{cp}{#2}{#1}}}
+
+% Define the macros used in formatting output of the sorted index material.
+
+% @printindex causes a particular index (the ??s file) to get printed.
+% It does not print any chapter heading (usually an @unnumbered).
+%
+\parseargdef\printindex{\begingroup
+  \dobreak \chapheadingskip{10000}%
+  %
+  \smallfonts \rm
+  \tolerance = 9500
+  \plainfrenchspacing
+  \everypar = {}% don't want the \kern\-parindent from indentation suppression.
+  %
+  % See if the index file exists and is nonempty.
+  % Change catcode of @ here so that if the index file contains
+  % \initial {@}
+  % as its first line, TeX doesn't complain about mismatched braces
+  % (because it thinks @} is a control sequence).
+  \catcode`\@ = 11
+  \openin 1 \jobname.#1s
+  \ifeof 1
+    % \enddoublecolumns gets confused if there is no text in the index,
+    % and it loses the chapter title and the aux file entries for the
+    % index.  The easiest way to prevent this problem is to make sure
+    % there is some text.
+    \putwordIndexNonexistent
+  \else
+    %
+    % If the index file exists but is empty, then \openin leaves \ifeof
+    % false.  We have to make TeX try to read something from the file, so
+    % it can discover if there is anything in it.
+    \read 1 to \temp
+    \ifeof 1
+      \putwordIndexIsEmpty
+    \else
+      % Index files are almost Texinfo source, but we use \ as the escape
+      % character.  It would be better to use @, but that's too big a change
+      % to make right now.
+      \def\indexbackslash{\backslashcurfont}%
+      \catcode`\\ = 0
+      \escapechar = `\\
+      \begindoublecolumns
+      \input \jobname.#1s
+      \enddoublecolumns
+    \fi
+  \fi
+  \closein 1
+\endgroup}
+
+% These macros are used by the sorted index file itself.
+% Change them to control the appearance of the index.
+
+\def\initial#1{{%
+  % Some minor font changes for the special characters.
+  \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt
+  %
+  % Remove any glue we may have, we'll be inserting our own.
+  \removelastskip
+  %
+  % We like breaks before the index initials, so insert a bonus.
+  \nobreak
+  \vskip 0pt plus 3\baselineskip
+  \penalty 0
+  \vskip 0pt plus -3\baselineskip
+  %
+  % Typeset the initial.  Making this add up to a whole number of
+  % baselineskips increases the chance of the dots lining up from column
+  % to column.  It still won't often be perfect, because of the stretch
+  % we need before each entry, but it's better.
+  %
+  % No shrink because it confuses \balancecolumns.
+  \vskip 1.67\baselineskip plus .5\baselineskip
+  \leftline{\secbf #1}%
+  % Do our best not to break after the initial.
+  \nobreak
+  \vskip .33\baselineskip plus .1\baselineskip
+}}
+
+% \entry typesets a paragraph consisting of the text (#1), dot leaders, and
+% then page number (#2) flushed to the right margin.  It is used for index
+% and table of contents entries.  The paragraph is indented by \leftskip.
+%
+% A straightforward implementation would start like this:
+%      \def\entry#1#2{...
+% But this freezes the catcodes in the argument, and can cause problems to
+% @code, which sets - active.  This problem was fixed by a kludge---
+% ``-'' was active throughout whole index, but this isn't really right.
+% The right solution is to prevent \entry from swallowing the whole text.
+%                                 --kasal, 21nov03
+\def\entry{%
+  \begingroup
+    %
+    % Start a new paragraph if necessary, so our assignments below can't
+    % affect previous text.
+    \par
+    %
+    % Do not fill out the last line with white space.
+    \parfillskip = 0in
+    %
+    % No extra space above this paragraph.
+    \parskip = 0in
+    %
+    % Do not prefer a separate line ending with a hyphen to fewer lines.
+    \finalhyphendemerits = 0
+    %
+    % \hangindent is only relevant when the entry text and page number
+    % don't both fit on one line.  In that case, bob suggests starting the
+    % dots pretty far over on the line.  Unfortunately, a large
+    % indentation looks wrong when the entry text itself is broken across
+    % lines.  So we use a small indentation and put up with long leaders.
+    %
+    % \hangafter is reset to 1 (which is the value we want) at the start
+    % of each paragraph, so we need not do anything with that.
+    \hangindent = 2em
+    %
+    % When the entry text needs to be broken, just fill out the first line
+    % with blank space.
+    \rightskip = 0pt plus1fil
+    %
+    % A bit of stretch before each entry for the benefit of balancing
+    % columns.
+    \vskip 0pt plus1pt
+    %
+    % When reading the text of entry, convert explicit line breaks
+    % from @* into spaces.  The user might give these in long section
+    % titles, for instance.
+    \def\*{\unskip\space\ignorespaces}%
+    \def\entrybreak{\hfil\break}%
+    %
+    % Swallow the left brace of the text (first parameter):
+    \afterassignment\doentry
+    \let\temp =
+}
+\def\entrybreak{\unskip\space\ignorespaces}%
+\def\doentry{%
+    \bgroup % Instead of the swallowed brace.
+      \noindent
+      \aftergroup\finishentry
+      % And now comes the text of the entry.
+}
+\def\finishentry#1{%
+    % #1 is the page number.
+    %
+    % The following is kludged to not output a line of dots in the index if
+    % there are no page numbers.  The next person who breaks this will be
+    % cursed by a Unix daemon.
+    \setbox\boxA = \hbox{#1}%
+    \ifdim\wd\boxA = 0pt
+      \ %
+    \else
+      %
+      % If we must, put the page number on a line of its own, and fill out
+      % this line with blank space.  (The \hfil is overwhelmed with the
+      % fill leaders glue in \indexdotfill if the page number does fit.)
+      \hfil\penalty50
+      \null\nobreak\indexdotfill % Have leaders before the page number.
+      %
+      % The `\ ' here is removed by the implicit \unskip that TeX does as
+      % part of (the primitive) \par.  Without it, a spurious underfull
+      % \hbox ensues.
+      \ifpdf
+       \pdfgettoks#1.%
+       \ \the\toksA
+      \else
+       \ #1%
+      \fi
+    \fi
+    \par
+  \endgroup
+}
+
+% Like plain.tex's \dotfill, except uses up at least 1 em.
+\def\indexdotfill{\cleaders
+  \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill}
+
+\def\primary #1{\line{#1\hfil}}
+
+\newskip\secondaryindent \secondaryindent=0.5cm
+\def\secondary#1#2{{%
+  \parfillskip=0in
+  \parskip=0in
+  \hangindent=1in
+  \hangafter=1
+  \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill
+  \ifpdf
+    \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
+  \else
+    #2
+  \fi
+  \par
+}}
+
+% Define two-column mode, which we use to typeset indexes.
+% Adapted from the TeXbook, page 416, which is to say,
+% the manmac.tex format used to print the TeXbook itself.
+\catcode`\@=11
+
+\newbox\partialpage
+\newdimen\doublecolumnhsize
+
+\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns
+  % Grab any single-column material above us.
+  \output = {%
+    %
+    % Here is a possibility not foreseen in manmac: if we accumulate a
+    % whole lot of material, we might end up calling this \output
+    % routine twice in a row (see the doublecol-lose test, which is
+    % essentially a couple of indexes with @setchapternewpage off).  In
+    % that case we just ship out what is in \partialpage with the normal
+    % output routine.  Generally, \partialpage will be empty when this
+    % runs and this will be a no-op.  See the indexspread.tex test case.
+    \ifvoid\partialpage \else
+      \onepageout{\pagecontents\partialpage}%
+    \fi
+    %
+    \global\setbox\partialpage = \vbox{%
+      % Unvbox the main output page.
+      \unvbox\PAGE
+      \kern-\topskip \kern\baselineskip
+    }%
+  }%
+  \eject % run that output routine to set \partialpage
+  %
+  % Use the double-column output routine for subsequent pages.
+  \output = {\doublecolumnout}%
+  %
+  % Change the page size parameters.  We could do this once outside this
+  % routine, in each of @smallbook, @afourpaper, and the default 8.5x11
+  % format, but then we repeat the same computation.  Repeating a couple
+  % of assignments once per index is clearly meaningless for the
+  % execution time, so we may as well do it in one place.
+  %
+  % First we halve the line length, less a little for the gutter between
+  % the columns.  We compute the gutter based on the line length, so it
+  % changes automatically with the paper format.  The magic constant
+  % below is chosen so that the gutter has the same value (well, +-<1pt)
+  % as it did when we hard-coded it.
+  %
+  % We put the result in a separate register, \doublecolumhsize, so we
+  % can restore it in \pagesofar, after \hsize itself has (potentially)
+  % been clobbered.
+  %
+  \doublecolumnhsize = \hsize
+    \advance\doublecolumnhsize by -.04154\hsize
+    \divide\doublecolumnhsize by 2
+  \hsize = \doublecolumnhsize
+  %
+  % Double the \vsize as well.  (We don't need a separate register here,
+  % since nobody clobbers \vsize.)
+  \vsize = 2\vsize
+}
+
+% The double-column output routine for all double-column pages except
+% the last.
+%
+\def\doublecolumnout{%
+  \splittopskip=\topskip \splitmaxdepth=\maxdepth
+  % Get the available space for the double columns -- the normal
+  % (undoubled) page height minus any material left over from the
+  % previous page.
+  \dimen@ = \vsize
+  \divide\dimen@ by 2
+  \advance\dimen@ by -\ht\partialpage
+  %
+  % box0 will be the left-hand column, box2 the right.
+  \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@
+  \onepageout\pagesofar
+  \unvbox255
+  \penalty\outputpenalty
+}
+%
+% Re-output the contents of the output page -- any previous material,
+% followed by the two boxes we just split, in box0 and box2.
+\def\pagesofar{%
+  \unvbox\partialpage
+  %
+  \hsize = \doublecolumnhsize
+  \wd0=\hsize \wd2=\hsize
+  \hbox to\pagewidth{\box0\hfil\box2}%
+}
+%
+% All done with double columns.
+\def\enddoublecolumns{%
+  % The following penalty ensures that the page builder is exercised
+  % _before_ we change the output routine.  This is necessary in the
+  % following situation:
+  %
+  % The last section of the index consists only of a single entry.
+  % Before this section, \pagetotal is less than \pagegoal, so no
+  % break occurs before the last section starts.  However, the last
+  % section, consisting of \initial and the single \entry, does not
+  % fit on the page and has to be broken off.  Without the following
+  % penalty the page builder will not be exercised until \eject
+  % below, and by that time we'll already have changed the output
+  % routine to the \balancecolumns version, so the next-to-last
+  % double-column page will be processed with \balancecolumns, which
+  % is wrong:  The two columns will go to the main vertical list, with
+  % the broken-off section in the recent contributions.  As soon as
+  % the output routine finishes, TeX starts reconsidering the page
+  % break.  The two columns and the broken-off section both fit on the
+  % page, because the two columns now take up only half of the page
+  % goal.  When TeX sees \eject from below which follows the final
+  % section, it invokes the new output routine that we've set after
+  % \balancecolumns below; \onepageout will try to fit the two columns
+  % and the final section into the vbox of \pageheight (see
+  % \pagebody), causing an overfull box.
+  %
+  % Note that glue won't work here, because glue does not exercise the
+  % page builder, unlike penalties (see The TeXbook, pp. 280-281).
+  \penalty0
+  %
+  \output = {%
+    % Split the last of the double-column material.  Leave it on the
+    % current page, no automatic page break.
+    \balancecolumns
+    %
+    % If we end up splitting too much material for the current page,
+    % though, there will be another page break right after this \output
+    % invocation ends.  Having called \balancecolumns once, we do not
+    % want to call it again.  Therefore, reset \output to its normal
+    % definition right away.  (We hope \balancecolumns will never be
+    % called on to balance too much material, but if it is, this makes
+    % the output somewhat more palatable.)
+    \global\output = {\onepageout{\pagecontents\PAGE}}%
+  }%
+  \eject
+  \endgroup % started in \begindoublecolumns
+  %
+  % \pagegoal was set to the doubled \vsize above, since we restarted
+  % the current page.  We're now back to normal single-column
+  % typesetting, so reset \pagegoal to the normal \vsize (after the
+  % \endgroup where \vsize got restored).
+  \pagegoal = \vsize
+}
+%
+% Called at the end of the double column material.
+\def\balancecolumns{%
+  \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120.
+  \dimen@ = \ht0
+  \advance\dimen@ by \topskip
+  \advance\dimen@ by-\baselineskip
+  \divide\dimen@ by 2 % target to split to
+  %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}%
+  \splittopskip = \topskip
+  % Loop until we get a decent breakpoint.
+  {%
+    \vbadness = 10000
+    \loop
+      \global\setbox3 = \copy0
+      \global\setbox1 = \vsplit3 to \dimen@
+    \ifdim\ht3>\dimen@
+      \global\advance\dimen@ by 1pt
+    \repeat
+  }%
+  %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}%
+  \setbox0=\vbox to\dimen@{\unvbox1}%
+  \setbox2=\vbox to\dimen@{\unvbox3}%
+  %
+  \pagesofar
+}
+\catcode`\@ = \other
+
+
+\message{sectioning,}
+% Chapters, sections, etc.
+
+% Let's start with @part.
+\outer\parseargdef\part{\partzzz{#1}}
+\def\partzzz#1{%
+  \chapoddpage
+  \null
+  \vskip.3\vsize  % move it down on the page a bit
+  \begingroup
+    \noindent \titlefonts\rmisbold #1\par % the text
+    \let\lastnode=\empty      % no node to associate with
+    \writetocentry{part}{#1}{}% but put it in the toc
+    \headingsoff              % no headline or footline on the part page
+    \chapoddpage
+  \endgroup
+}
+
+% \unnumberedno is an oxymoron.  But we count the unnumbered
+% sections so that we can refer to them unambiguously in the pdf
+% outlines by their "section number".  We avoid collisions with chapter
+% numbers by starting them at 10000.  (If a document ever has 10000
+% chapters, we're in trouble anyway, I'm sure.)
+\newcount\unnumberedno \unnumberedno = 10000
+\newcount\chapno
+\newcount\secno        \secno=0
+\newcount\subsecno     \subsecno=0
+\newcount\subsubsecno  \subsubsecno=0
+
+% This counter is funny since it counts through charcodes of letters A, B, ...
+\newcount\appendixno  \appendixno = `\@
+%
+% \def\appendixletter{\char\the\appendixno}
+% We do the following ugly conditional instead of the above simple
+% construct for the sake of pdftex, which needs the actual
+% letter in the expansion, not just typeset.
+%
+\def\appendixletter{%
+  \ifnum\appendixno=`A A%
+  \else\ifnum\appendixno=`B B%
+  \else\ifnum\appendixno=`C C%
+  \else\ifnum\appendixno=`D D%
+  \else\ifnum\appendixno=`E E%
+  \else\ifnum\appendixno=`F F%
+  \else\ifnum\appendixno=`G G%
+  \else\ifnum\appendixno=`H H%
+  \else\ifnum\appendixno=`I I%
+  \else\ifnum\appendixno=`J J%
+  \else\ifnum\appendixno=`K K%
+  \else\ifnum\appendixno=`L L%
+  \else\ifnum\appendixno=`M M%
+  \else\ifnum\appendixno=`N N%
+  \else\ifnum\appendixno=`O O%
+  \else\ifnum\appendixno=`P P%
+  \else\ifnum\appendixno=`Q Q%
+  \else\ifnum\appendixno=`R R%
+  \else\ifnum\appendixno=`S S%
+  \else\ifnum\appendixno=`T T%
+  \else\ifnum\appendixno=`U U%
+  \else\ifnum\appendixno=`V V%
+  \else\ifnum\appendixno=`W W%
+  \else\ifnum\appendixno=`X X%
+  \else\ifnum\appendixno=`Y Y%
+  \else\ifnum\appendixno=`Z Z%
+  % The \the is necessary, despite appearances, because \appendixletter is
+  % expanded while writing the .toc file.  \char\appendixno is not
+  % expandable, thus it is written literally, thus all appendixes come out
+  % with the same letter (or @) in the toc without it.
+  \else\char\the\appendixno
+  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
+
+% Each @chapter defines these (using marks) as the number+name, number
+% and name of the chapter.  Page headings and footings can use
+% these.  @section does likewise.
+\def\thischapter{}
+\def\thischapternum{}
+\def\thischaptername{}
+\def\thissection{}
+\def\thissectionnum{}
+\def\thissectionname{}
+
+\newcount\absseclevel % used to calculate proper heading level
+\newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count
+
+% @raisesections: treat @section as chapter, @subsection as section, etc.
+\def\raisesections{\global\advance\secbase by -1}
+\let\up=\raisesections % original BFox name
+
+% @lowersections: treat @chapter as section, @section as subsection, etc.
+\def\lowersections{\global\advance\secbase by 1}
+\let\down=\lowersections % original BFox name
+
+% we only have subsub.
+\chardef\maxseclevel = 3
+%
+% A numbered section within an unnumbered changes to unnumbered too.
+% To achieve this, remember the "biggest" unnum. sec. we are currently in:
+\chardef\unnlevel = \maxseclevel
+%
+% Trace whether the current chapter is an appendix or not:
+% \chapheadtype is "N" or "A", unnumbered chapters are ignored.
+\def\chapheadtype{N}
+
+% Choose a heading macro
+% #1 is heading type
+% #2 is heading level
+% #3 is text for heading
+\def\genhead#1#2#3{%
+  % Compute the abs. sec. level:
+  \absseclevel=#2
+  \advance\absseclevel by \secbase
+  % Make sure \absseclevel doesn't fall outside the range:
+  \ifnum \absseclevel < 0
+    \absseclevel = 0
+  \else
+    \ifnum \absseclevel > 3
+      \absseclevel = 3
+    \fi
+  \fi
+  % The heading type:
+  \def\headtype{#1}%
+  \if \headtype U%
+    \ifnum \absseclevel < \unnlevel
+      \chardef\unnlevel = \absseclevel
+    \fi
+  \else
+    % Check for appendix sections:
+    \ifnum \absseclevel = 0
+      \edef\chapheadtype{\headtype}%
+    \else
+      \if \headtype A\if \chapheadtype N%
+       \errmessage{@appendix... within a non-appendix chapter}%
+      \fi\fi
+    \fi
+    % Check for numbered within unnumbered:
+    \ifnum \absseclevel > \unnlevel
+      \def\headtype{U}%
+    \else
+      \chardef\unnlevel = 3
+    \fi
+  \fi
+  % Now print the heading:
+  \if \headtype U%
+    \ifcase\absseclevel
+       \unnumberedzzz{#3}%
+    \or \unnumberedseczzz{#3}%
+    \or \unnumberedsubseczzz{#3}%
+    \or \unnumberedsubsubseczzz{#3}%
+    \fi
+  \else
+    \if \headtype A%
+      \ifcase\absseclevel
+         \appendixzzz{#3}%
+      \or \appendixsectionzzz{#3}%
+      \or \appendixsubseczzz{#3}%
+      \or \appendixsubsubseczzz{#3}%
+      \fi
+    \else
+      \ifcase\absseclevel
+         \chapterzzz{#3}%
+      \or \seczzz{#3}%
+      \or \numberedsubseczzz{#3}%
+      \or \numberedsubsubseczzz{#3}%
+      \fi
+    \fi
+  \fi
+  \suppressfirstparagraphindent
+}
+
+% an interface:
+\def\numhead{\genhead N}
+\def\apphead{\genhead A}
+\def\unnmhead{\genhead U}
+
+% @chapter, @appendix, @unnumbered.  Increment top-level counter, reset
+% all lower-level sectioning counters to zero.
+%
+% Also set \chaplevelprefix, which we prepend to @float sequence numbers
+% (e.g., figures), q.v.  By default (before any chapter), that is empty.
+\let\chaplevelprefix = \empty
+%
+\outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz
+\def\chapterzzz#1{%
+  % section resetting is \global in case the chapter is in a group, such
+  % as an @include file.
+  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+    \global\advance\chapno by 1
+  %
+  % Used for \float.
+  \gdef\chaplevelprefix{\the\chapno.}%
+  \resetallfloatnos
+  %
+  % \putwordChapter can contain complex things in translations.
+  \toks0=\expandafter{\putwordChapter}%
+  \message{\the\toks0 \space \the\chapno}%
+  %
+  % Write the actual heading.
+  \chapmacro{#1}{Ynumbered}{\the\chapno}%
+  %
+  % So @section and the like are numbered underneath this chapter.
+  \global\let\section = \numberedsec
+  \global\let\subsection = \numberedsubsec
+  \global\let\subsubsection = \numberedsubsubsec
+}
+
+\outer\parseargdef\appendix{\apphead0{#1}} % normally calls appendixzzz
+%
+\def\appendixzzz#1{%
+  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+    \global\advance\appendixno by 1
+  \gdef\chaplevelprefix{\appendixletter.}%
+  \resetallfloatnos
+  %
+  % \putwordAppendix can contain complex things in translations.
+  \toks0=\expandafter{\putwordAppendix}%
+  \message{\the\toks0 \space \appendixletter}%
+  %
+  \chapmacro{#1}{Yappendix}{\appendixletter}%
+  %
+  \global\let\section = \appendixsec
+  \global\let\subsection = \appendixsubsec
+  \global\let\subsubsection = \appendixsubsubsec
+}
+
+% normally unnmhead0 calls unnumberedzzz:
+\outer\parseargdef\unnumbered{\unnmhead0{#1}}
+\def\unnumberedzzz#1{%
+  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+    \global\advance\unnumberedno by 1
+  %
+  % Since an unnumbered has no number, no prefix for figures.
+  \global\let\chaplevelprefix = \empty
+  \resetallfloatnos
+  %
+  % This used to be simply \message{#1}, but TeX fully expands the
+  % argument to \message.  Therefore, if #1 contained @-commands, TeX
+  % expanded them.  For example, in `@unnumbered The @cite{Book}', TeX
+  % expanded @cite (which turns out to cause errors because \cite is meant
+  % to be executed, not expanded).
+  %
+  % Anyway, we don't want the fully-expanded definition of @cite to appear
+  % as a result of the \message, we just want `@cite' itself.  We use
+  % \the<toks register> to achieve this: TeX expands \the<toks> only once,
+  % simply yielding the contents of <toks register>.  (We also do this for
+  % the toc entries.)
+  \toks0 = {#1}%
+  \message{(\the\toks0)}%
+  %
+  \chapmacro{#1}{Ynothing}{\the\unnumberedno}%
+  %
+  \global\let\section = \unnumberedsec
+  \global\let\subsection = \unnumberedsubsec
+  \global\let\subsubsection = \unnumberedsubsubsec
+}
+
+% @centerchap is like @unnumbered, but the heading is centered.
+\outer\parseargdef\centerchap{%
+  % Well, we could do the following in a group, but that would break
+  % an assumption that \chapmacro is called at the outermost level.
+  % Thus we are safer this way:                --kasal, 24feb04
+  \let\centerparametersmaybe = \centerparameters
+  \unnmhead0{#1}%
+  \let\centerparametersmaybe = \relax
+}
+
+% @top is like @unnumbered.
+\let\top\unnumbered
+
+% Sections.
+% 
+\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz
+\def\seczzz#1{%
+  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
+  \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}%
+}
+
+% normally calls appendixsectionzzz:
+\outer\parseargdef\appendixsection{\apphead1{#1}}
+\def\appendixsectionzzz#1{%
+  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
+  \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}%
+}
+\let\appendixsec\appendixsection
+
+% normally calls unnumberedseczzz:
+\outer\parseargdef\unnumberedsec{\unnmhead1{#1}}
+\def\unnumberedseczzz#1{%
+  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
+  \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}%
+}
+
+% Subsections.
+% 
+% normally calls numberedsubseczzz:
+\outer\parseargdef\numberedsubsec{\numhead2{#1}}
+\def\numberedsubseczzz#1{%
+  \global\subsubsecno=0  \global\advance\subsecno by 1
+  \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}%
+}
+
+% normally calls appendixsubseczzz:
+\outer\parseargdef\appendixsubsec{\apphead2{#1}}
+\def\appendixsubseczzz#1{%
+  \global\subsubsecno=0  \global\advance\subsecno by 1
+  \sectionheading{#1}{subsec}{Yappendix}%
+                 {\appendixletter.\the\secno.\the\subsecno}%
+}
+
+% normally calls unnumberedsubseczzz:
+\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}}
+\def\unnumberedsubseczzz#1{%
+  \global\subsubsecno=0  \global\advance\subsecno by 1
+  \sectionheading{#1}{subsec}{Ynothing}%
+                 {\the\unnumberedno.\the\secno.\the\subsecno}%
+}
+
+% Subsubsections.
+% 
+% normally numberedsubsubseczzz:
+\outer\parseargdef\numberedsubsubsec{\numhead3{#1}}
+\def\numberedsubsubseczzz#1{%
+  \global\advance\subsubsecno by 1
+  \sectionheading{#1}{subsubsec}{Ynumbered}%
+                 {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+% normally appendixsubsubseczzz:
+\outer\parseargdef\appendixsubsubsec{\apphead3{#1}}
+\def\appendixsubsubseczzz#1{%
+  \global\advance\subsubsecno by 1
+  \sectionheading{#1}{subsubsec}{Yappendix}%
+                 {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+% normally unnumberedsubsubseczzz:
+\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}}
+\def\unnumberedsubsubseczzz#1{%
+  \global\advance\subsubsecno by 1
+  \sectionheading{#1}{subsubsec}{Ynothing}%
+                 {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+% These macros control what the section commands do, according
+% to what kind of chapter we are in (ordinary, appendix, or unnumbered).
+% Define them by default for a numbered chapter.
+\let\section = \numberedsec
+\let\subsection = \numberedsubsec
+\let\subsubsection = \numberedsubsubsec
+
+% Define @majorheading, @heading and @subheading
+
+% NOTE on use of \vbox for chapter headings, section headings, and such:
+%       1) We use \vbox rather than the earlier \line to permit
+%          overlong headings to fold.
+%       2) \hyphenpenalty is set to 10000 because hyphenation in a
+%          heading is obnoxious; this forbids it.
+%       3) Likewise, headings look best if no \parindent is used, and
+%          if justification is not attempted.  Hence \raggedright.
+
+\def\majorheading{%
+  {\advance\chapheadingskip by 10pt \chapbreak }%
+  \parsearg\chapheadingzzz
+}
+
+\def\chapheading{\chapbreak \parsearg\chapheadingzzz}
+\def\chapheadingzzz#1{%
+  {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+                    \parindent=0pt\ptexraggedright
+                    \rmisbold #1\hfill}}%
+  \bigskip \par\penalty 200\relax
+  \suppressfirstparagraphindent
+}
+
+% @heading, @subheading, @subsubheading.
+\parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{}
+  \suppressfirstparagraphindent}
+\parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{}
+  \suppressfirstparagraphindent}
+\parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{}
+  \suppressfirstparagraphindent}
+
+% These macros generate a chapter, section, etc. heading only
+% (including whitespace, linebreaking, etc. around it),
+% given all the information in convenient, parsed form.
+
+% Args are the skip and penalty (usually negative)
+\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi}
+
+% Parameter controlling skip before chapter headings (if needed)
+\newskip\chapheadingskip
+
+% Define plain chapter starts, and page on/off switching for it.
+\def\chapbreak{\dobreak \chapheadingskip {-4000}}
+\def\chappager{\par\vfill\supereject}
+% Because \domark is called before \chapoddpage, the filler page will
+% get the headings for the next chapter, which is wrong.  But we don't
+% care -- we just disable all headings on the filler page.
+\def\chapoddpage{%
+  \chappager
+  \ifodd\pageno \else
+    \begingroup
+      \headingsoff
+      \null
+      \chappager
+    \endgroup
+  \fi
+}
+
+\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname}
+
+\def\CHAPPAGoff{%
+\global\let\contentsalignmacro = \chappager
+\global\let\pchapsepmacro=\chapbreak
+\global\let\pagealignmacro=\chappager}
+
+\def\CHAPPAGon{%
+\global\let\contentsalignmacro = \chappager
+\global\let\pchapsepmacro=\chappager
+\global\let\pagealignmacro=\chappager
+\global\def\HEADINGSon{\HEADINGSsingle}}
+
+\def\CHAPPAGodd{%
+\global\let\contentsalignmacro = \chapoddpage
+\global\let\pchapsepmacro=\chapoddpage
+\global\let\pagealignmacro=\chapoddpage
+\global\def\HEADINGSon{\HEADINGSdouble}}
+
+\CHAPPAGon
+
+% Chapter opening.
+%
+% #1 is the text, #2 is the section type (Ynumbered, Ynothing,
+% Yappendix, Yomitfromtoc), #3 the chapter number.
+%
+% To test against our argument.
+\def\Ynothingkeyword{Ynothing}
+\def\Yomitfromtockeyword{Yomitfromtoc}
+\def\Yappendixkeyword{Yappendix}
+%
+\def\chapmacro#1#2#3{%
+  % Insert the first mark before the heading break (see notes for \domark).
+  \let\prevchapterdefs=\lastchapterdefs
+  \let\prevsectiondefs=\lastsectiondefs
+  \gdef\lastsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}%
+                        \gdef\thissection{}}%
+  %
+  \def\temptype{#2}%
+  \ifx\temptype\Ynothingkeyword
+    \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
+                          \gdef\thischapter{\thischaptername}}%
+  \else\ifx\temptype\Yomitfromtockeyword
+    \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
+                          \gdef\thischapter{}}%
+  \else\ifx\temptype\Yappendixkeyword
+    \toks0={#1}%
+    \xdef\lastchapterdefs{%
+      \gdef\noexpand\thischaptername{\the\toks0}%
+      \gdef\noexpand\thischapternum{\appendixletter}%
+      % \noexpand\putwordAppendix avoids expanding indigestible
+      % commands in some of the translations.
+      \gdef\noexpand\thischapter{\noexpand\putwordAppendix{}
+                                 \noexpand\thischapternum:
+                                 \noexpand\thischaptername}%
+    }%
+  \else
+    \toks0={#1}%
+    \xdef\lastchapterdefs{%
+      \gdef\noexpand\thischaptername{\the\toks0}%
+      \gdef\noexpand\thischapternum{\the\chapno}%
+      % \noexpand\putwordChapter avoids expanding indigestible
+      % commands in some of the translations.
+      \gdef\noexpand\thischapter{\noexpand\putwordChapter{}
+                                 \noexpand\thischapternum:
+                                 \noexpand\thischaptername}%
+    }%
+  \fi\fi\fi
+  %
+  % Output the mark.  Pass it through \safewhatsit, to take care of
+  % the preceding space.
+  \safewhatsit\domark
+  %
+  % Insert the chapter heading break.
+  \pchapsepmacro
+  %
+  % Now the second mark, after the heading break.  No break points
+  % between here and the heading.
+  \let\prevchapterdefs=\lastchapterdefs
+  \let\prevsectiondefs=\lastsectiondefs
+  \domark
+  %
+  {%
+    \chapfonts \rmisbold
+    %
+    % Have to define \lastsection before calling \donoderef, because the
+    % xref code eventually uses it.  On the other hand, it has to be called
+    % after \pchapsepmacro, or the headline will change too soon.
+    \gdef\lastsection{#1}%
+    %
+    % Only insert the separating space if we have a chapter/appendix
+    % number, and don't print the unnumbered ``number''.
+    \ifx\temptype\Ynothingkeyword
+      \setbox0 = \hbox{}%
+      \def\toctype{unnchap}%
+    \else\ifx\temptype\Yomitfromtockeyword
+      \setbox0 = \hbox{}% contents like unnumbered, but no toc entry
+      \def\toctype{omit}%
+    \else\ifx\temptype\Yappendixkeyword
+      \setbox0 = \hbox{\putwordAppendix{} #3\enspace}%
+      \def\toctype{app}%
+    \else
+      \setbox0 = \hbox{#3\enspace}%
+      \def\toctype{numchap}%
+    \fi\fi\fi
+    %
+    % Write the toc entry for this chapter.  Must come before the
+    % \donoderef, because we include the current node name in the toc
+    % entry, and \donoderef resets it to empty.
+    \writetocentry{\toctype}{#1}{#3}%
+    %
+    % For pdftex, we have to write out the node definition (aka, make
+    % the pdfdest) after any page break, but before the actual text has
+    % been typeset.  If the destination for the pdf outline is after the
+    % text, then jumping from the outline may wind up with the text not
+    % being visible, for instance under high magnification.
+    \donoderef{#2}%
+    %
+    % Typeset the actual heading.
+    \nobreak % Avoid page breaks at the interline glue.
+    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright
+          \hangindent=\wd0 \centerparametersmaybe
+          \unhbox0 #1\par}%
+  }%
+  \nobreak\bigskip % no page break after a chapter title
+  \nobreak
+}
+
+% @centerchap -- centered and unnumbered.
+\let\centerparametersmaybe = \relax
+\def\centerparameters{%
+  \advance\rightskip by 3\rightskip
+  \leftskip = \rightskip
+  \parfillskip = 0pt
+}
+
+
+% I don't think this chapter style is supported any more, so I'm not
+% updating it with the new noderef stuff.  We'll see.  --karl, 11aug03.
+%
+\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
+%
+\def\unnchfopen #1{%
+\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+                       \parindent=0pt\ptexraggedright
+                       \rmisbold #1\hfill}}\bigskip \par\nobreak
+}
+\def\chfopen #1#2{\chapoddpage {\chapfonts
+\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
+\par\penalty 5000 %
+}
+\def\centerchfopen #1{%
+\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+                       \parindent=0pt
+                       \hfill {\rmisbold #1}\hfill}}\bigskip \par\nobreak
+}
+\def\CHAPFopen{%
+  \global\let\chapmacro=\chfopen
+  \global\let\centerchapmacro=\centerchfopen}
+
+
+% Section titles.  These macros combine the section number parts and
+% call the generic \sectionheading to do the printing.
+%
+\newskip\secheadingskip
+\def\secheadingbreak{\dobreak \secheadingskip{-1000}}
+
+% Subsection titles.
+\newskip\subsecheadingskip
+\def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}}
+
+% Subsubsection titles.
+\def\subsubsecheadingskip{\subsecheadingskip}
+\def\subsubsecheadingbreak{\subsecheadingbreak}
+
+
+% Print any size, any type, section title.
+%
+% #1 is the text, #2 is the section level (sec/subsec/subsubsec), #3 is
+% the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the
+% section number.
+%
+\def\seckeyword{sec}
+%
+\def\sectionheading#1#2#3#4{%
+  {%
+    \checkenv{}% should not be in an environment.
+    %
+    % Switch to the right set of fonts.
+    \csname #2fonts\endcsname \rmisbold
+    %
+    \def\sectionlevel{#2}%
+    \def\temptype{#3}%
+    %
+    % Insert first mark before the heading break (see notes for \domark).
+    \let\prevsectiondefs=\lastsectiondefs
+    \ifx\temptype\Ynothingkeyword
+      \ifx\sectionlevel\seckeyword
+        \gdef\lastsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}%
+                              \gdef\thissection{\thissectionname}}%
+      \fi
+    \else\ifx\temptype\Yomitfromtockeyword
+      % Don't redefine \thissection.
+    \else\ifx\temptype\Yappendixkeyword
+      \ifx\sectionlevel\seckeyword
+        \toks0={#1}%
+        \xdef\lastsectiondefs{%
+          \gdef\noexpand\thissectionname{\the\toks0}%
+          \gdef\noexpand\thissectionnum{#4}%
+          % \noexpand\putwordSection avoids expanding indigestible
+          % commands in some of the translations.
+          \gdef\noexpand\thissection{\noexpand\putwordSection{}
+                                     \noexpand\thissectionnum:
+                                     \noexpand\thissectionname}%
+        }%
+      \fi
+    \else
+      \ifx\sectionlevel\seckeyword
+        \toks0={#1}%
+        \xdef\lastsectiondefs{%
+          \gdef\noexpand\thissectionname{\the\toks0}%
+          \gdef\noexpand\thissectionnum{#4}%
+          % \noexpand\putwordSection avoids expanding indigestible
+          % commands in some of the translations.
+          \gdef\noexpand\thissection{\noexpand\putwordSection{}
+                                     \noexpand\thissectionnum:
+                                     \noexpand\thissectionname}%
+        }%
+      \fi
+    \fi\fi\fi
+    %
+    % Go into vertical mode.  Usually we'll already be there, but we
+    % don't want the following whatsit to end up in a preceding paragraph
+    % if the document didn't happen to have a blank line.
+    \par
+    %
+    % Output the mark.  Pass it through \safewhatsit, to take care of
+    % the preceding space.
+    \safewhatsit\domark
+    %
+    % Insert space above the heading.
+    \csname #2headingbreak\endcsname
+    %
+    % Now the second mark, after the heading break.  No break points
+    % between here and the heading.
+    \let\prevsectiondefs=\lastsectiondefs
+    \domark
+    %
+    % Only insert the space after the number if we have a section number.
+    \ifx\temptype\Ynothingkeyword
+      \setbox0 = \hbox{}%
+      \def\toctype{unn}%
+      \gdef\lastsection{#1}%
+    \else\ifx\temptype\Yomitfromtockeyword
+      % for @headings -- no section number, don't include in toc,
+      % and don't redefine \lastsection.
+      \setbox0 = \hbox{}%
+      \def\toctype{omit}%
+      \let\sectionlevel=\empty
+    \else\ifx\temptype\Yappendixkeyword
+      \setbox0 = \hbox{#4\enspace}%
+      \def\toctype{app}%
+      \gdef\lastsection{#1}%
+    \else
+      \setbox0 = \hbox{#4\enspace}%
+      \def\toctype{num}%
+      \gdef\lastsection{#1}%
+    \fi\fi\fi
+    %
+    % Write the toc entry (before \donoderef).  See comments in \chapmacro.
+    \writetocentry{\toctype\sectionlevel}{#1}{#4}%
+    %
+    % Write the node reference (= pdf destination for pdftex).
+    % Again, see comments in \chapmacro.
+    \donoderef{#3}%
+    %
+    % Interline glue will be inserted when the vbox is completed.
+    % That glue will be a valid breakpoint for the page, since it'll be
+    % preceded by a whatsit (usually from the \donoderef, or from the
+    % \writetocentry if there was no node).  We don't want to allow that
+    % break, since then the whatsits could end up on page n while the
+    % section is on page n+1, thus toc/etc. are wrong.  Debian bug 276000.
+    \nobreak
+    %
+    % Output the actual section heading.
+    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright
+          \hangindent=\wd0  % zero if no section number
+          \unhbox0 #1}%
+  }%
+  % Add extra space after the heading -- half of whatever came above it.
+  % Don't allow stretch, though.
+  \kern .5 \csname #2headingskip\endcsname
+  %
+  % Do not let the kern be a potential breakpoint, as it would be if it
+  % was followed by glue.
+  \nobreak
+  %
+  % We'll almost certainly start a paragraph next, so don't let that
+  % glue accumulate.  (Not a breakpoint because it's preceded by a
+  % discardable item.)
+  \vskip-\parskip
+  %
+  % This is purely so the last item on the list is a known \penalty >
+  % 10000.  This is so \startdefun can avoid allowing breakpoints after
+  % section headings.  Otherwise, it would insert a valid breakpoint between:
+  %
+  %   @section sec-whatever
+  %   @deffn def-whatever
+  \penalty 10001
+}
+
+
+\message{toc,}
+% Table of contents.
+\newwrite\tocfile
+
+% Write an entry to the toc file, opening it if necessary.
+% Called from @chapter, etc.
+%
+% Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno}
+% We append the current node name (if any) and page number as additional
+% arguments for the \{chap,sec,...}entry macros which will eventually
+% read this.  The node name is used in the pdf outlines as the
+% destination to jump to.
+%
+% We open the .toc file for writing here instead of at @setfilename (or
+% any other fixed time) so that @contents can be anywhere in the document.
+% But if #1 is `omit', then we don't do anything.  This is used for the
+% table of contents chapter openings themselves.
+%
+\newif\iftocfileopened
+\def\omitkeyword{omit}%
+%
+\def\writetocentry#1#2#3{%
+  \edef\writetoctype{#1}%
+  \ifx\writetoctype\omitkeyword \else
+    \iftocfileopened\else
+      \immediate\openout\tocfile = \jobname.toc
+      \global\tocfileopenedtrue
+    \fi
+    %
+    \iflinks
+      {\atdummies
+       \edef\temp{%
+         \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}%
+       \temp
+      }%
+    \fi
+  \fi
+  %
+  % Tell \shipout to create a pdf destination on each page, if we're
+  % writing pdf.  These are used in the table of contents.  We can't
+  % just write one on every page because the title pages are numbered
+  % 1 and 2 (the page numbers aren't printed), and so are the first
+  % two pages of the document.  Thus, we'd have two destinations named
+  % `1', and two named `2'.
+  \ifpdf \global\pdfmakepagedesttrue \fi
+}
+
+
+% These characters do not print properly in the Computer Modern roman
+% fonts, so we must take special care.  This is more or less redundant
+% with the Texinfo input format setup at the end of this file.
+%
+\def\activecatcodes{%
+  \catcode`\"=\active
+  \catcode`\$=\active
+  \catcode`\<=\active
+  \catcode`\>=\active
+  \catcode`\\=\active
+  \catcode`\^=\active
+  \catcode`\_=\active
+  \catcode`\|=\active
+  \catcode`\~=\active
+}
+
+
+% Read the toc file, which is essentially Texinfo input.
+\def\readtocfile{%
+  \setupdatafile
+  \activecatcodes
+  \input \tocreadfilename
+}
+
+\newskip\contentsrightmargin \contentsrightmargin=1in
+\newcount\savepageno
+\newcount\lastnegativepageno \lastnegativepageno = -1
+
+% Prepare to read what we've written to \tocfile.
+%
+\def\startcontents#1{%
+  % If @setchapternewpage on, and @headings double, the contents should
+  % start on an odd page, unlike chapters.  Thus, we maintain
+  % \contentsalignmacro in parallel with \pagealignmacro.
+  % From: Torbjorn Granlund <tege@matematik.su.se>
+  \contentsalignmacro
+  \immediate\closeout\tocfile
+  %
+  % Don't need to put `Contents' or `Short Contents' in the headline.
+  % It is abundantly clear what they are.
+  \chapmacro{#1}{Yomitfromtoc}{}%
+  %
+  \savepageno = \pageno
+  \begingroup                  % Set up to handle contents files properly.
+    \raggedbottom              % Worry more about breakpoints than the bottom.
+    \advance\hsize by -\contentsrightmargin % Don't use the full line length.
+    %
+    % Roman numerals for page numbers.
+    \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi
+}
+
+% redefined for the two-volume lispref.  We always output on
+% \jobname.toc even if this is redefined.
+%
+\def\tocreadfilename{\jobname.toc}
+
+% Normal (long) toc.
+%
+\def\contents{%
+  \startcontents{\putwordTOC}%
+    \openin 1 \tocreadfilename\space
+    \ifeof 1 \else
+      \readtocfile
+    \fi
+    \vfill \eject
+    \contentsalignmacro % in case @setchapternewpage odd is in effect
+    \ifeof 1 \else
+      \pdfmakeoutlines
+    \fi
+    \closein 1
+  \endgroup
+  \lastnegativepageno = \pageno
+  \global\pageno = \savepageno
+}
+
+% And just the chapters.
+\def\summarycontents{%
+  \startcontents{\putwordShortTOC}%
+    %
+    \let\partentry = \shortpartentry
+    \let\numchapentry = \shortchapentry
+    \let\appentry = \shortchapentry
+    \let\unnchapentry = \shortunnchapentry
+    % We want a true roman here for the page numbers.
+    \secfonts
+    \let\rm=\shortcontrm \let\bf=\shortcontbf
+    \let\sl=\shortcontsl \let\tt=\shortconttt
+    \rm
+    \hyphenpenalty = 10000
+    \advance\baselineskip by 1pt % Open it up a little.
+    \def\numsecentry##1##2##3##4{}
+    \let\appsecentry = \numsecentry
+    \let\unnsecentry = \numsecentry
+    \let\numsubsecentry = \numsecentry
+    \let\appsubsecentry = \numsecentry
+    \let\unnsubsecentry = \numsecentry
+    \let\numsubsubsecentry = \numsecentry
+    \let\appsubsubsecentry = \numsecentry
+    \let\unnsubsubsecentry = \numsecentry
+    \openin 1 \tocreadfilename\space
+    \ifeof 1 \else
+      \readtocfile
+    \fi
+    \closein 1
+    \vfill \eject
+    \contentsalignmacro % in case @setchapternewpage odd is in effect
+  \endgroup
+  \lastnegativepageno = \pageno
+  \global\pageno = \savepageno
+}
+\let\shortcontents = \summarycontents
+
+% Typeset the label for a chapter or appendix for the short contents.
+% The arg is, e.g., `A' for an appendix, or `3' for a chapter.
+%
+\def\shortchaplabel#1{%
+  % This space should be enough, since a single number is .5em, and the
+  % widest letter (M) is 1em, at least in the Computer Modern fonts.
+  % But use \hss just in case.
+  % (This space doesn't include the extra space that gets added after
+  % the label; that gets put in by \shortchapentry above.)
+  %
+  % We'd like to right-justify chapter numbers, but that looks strange
+  % with appendix letters.  And right-justifying numbers and
+  % left-justifying letters looks strange when there is less than 10
+  % chapters.  Have to read the whole toc once to know how many chapters
+  % there are before deciding ...
+  \hbox to 1em{#1\hss}%
+}
+
+% These macros generate individual entries in the table of contents.
+% The first argument is the chapter or section name.
+% The last argument is the page number.
+% The arguments in between are the chapter number, section number, ...
+
+% Parts, in the main contents.  Replace the part number, which doesn't
+% exist, with an empty box.  Let's hope all the numbers have the same width.
+% Also ignore the page number, which is conventionally not printed.
+\def\numeralbox{\setbox0=\hbox{8}\hbox to \wd0{\hfil}}
+\def\partentry#1#2#3#4{\dochapentry{\numeralbox\labelspace#1}{}}
+%
+% Parts, in the short toc.
+\def\shortpartentry#1#2#3#4{%
+  \penalty-300
+  \vskip.5\baselineskip plus.15\baselineskip minus.1\baselineskip
+  \shortchapentry{{\bf #1}}{\numeralbox}{}{}%
+}
+
+% Chapters, in the main contents.
+\def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}}
+%
+% Chapters, in the short toc.
+% See comments in \dochapentry re vbox and related settings.
+\def\shortchapentry#1#2#3#4{%
+  \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}%
+}
+
+% Appendices, in the main contents.
+% Need the word Appendix, and a fixed-size box.
+%
+\def\appendixbox#1{%
+  % We use M since it's probably the widest letter.
+  \setbox0 = \hbox{\putwordAppendix{} M}%
+  \hbox to \wd0{\putwordAppendix{} #1\hss}}
+%
+\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}}
+
+% Unnumbered chapters.
+\def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}}
+\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}}
+
+% Sections.
+\def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}}
+\let\appsecentry=\numsecentry
+\def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}}
+
+% Subsections.
+\def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}}
+\let\appsubsecentry=\numsubsecentry
+\def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}}
+
+% And subsubsections.
+\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}}
+\let\appsubsubsecentry=\numsubsubsecentry
+\def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}}
+
+% This parameter controls the indentation of the various levels.
+% Same as \defaultparindent.
+\newdimen\tocindent \tocindent = 15pt
+
+% Now for the actual typesetting. In all these, #1 is the text and #2 is the
+% page number.
+%
+% If the toc has to be broken over pages, we want it to be at chapters
+% if at all possible; hence the \penalty.
+\def\dochapentry#1#2{%
+   \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip
+   \begingroup
+     \chapentryfonts
+     \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+   \endgroup
+   \nobreak\vskip .25\baselineskip plus.1\baselineskip
+}
+
+\def\dosecentry#1#2{\begingroup
+  \secentryfonts \leftskip=\tocindent
+  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+\endgroup}
+
+\def\dosubsecentry#1#2{\begingroup
+  \subsecentryfonts \leftskip=2\tocindent
+  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+\endgroup}
+
+\def\dosubsubsecentry#1#2{\begingroup
+  \subsubsecentryfonts \leftskip=3\tocindent
+  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+\endgroup}
+
+% We use the same \entry macro as for the index entries.
+\let\tocentry = \entry
+
+% Space between chapter (or whatever) number and the title.
+\def\labelspace{\hskip1em \relax}
+
+\def\dopageno#1{{\rm #1}}
+\def\doshortpageno#1{{\rm #1}}
+
+\def\chapentryfonts{\secfonts \rm}
+\def\secentryfonts{\textfonts}
+\def\subsecentryfonts{\textfonts}
+\def\subsubsecentryfonts{\textfonts}
+
+
+\message{environments,}
+% @foo ... @end foo.
+
+% @tex ... @end tex    escapes into raw TeX temporarily.
+% One exception: @ is still an escape character, so that @end tex works.
+% But \@ or @@ will get a plain @ character.
+
+\envdef\tex{%
+  \setupmarkupstyle{tex}%
+  \catcode `\\=0 \catcode `\{=1 \catcode `\}=2
+  \catcode `\$=3 \catcode `\&=4 \catcode `\#=6
+  \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie
+  \catcode `\%=14
+  \catcode `\+=\other
+  \catcode `\"=\other
+  \catcode `\|=\other
+  \catcode `\<=\other
+  \catcode `\>=\other
+  \catcode`\`=\other
+  \catcode`\'=\other
+  \escapechar=`\\
+  %
+  % ' is active in math mode (mathcode"8000).  So reset it, and all our
+  % other math active characters (just in case), to plain's definitions.
+  \mathactive
+  %
+  \let\b=\ptexb
+  \let\bullet=\ptexbullet
+  \let\c=\ptexc
+  \let\,=\ptexcomma
+  \let\.=\ptexdot
+  \let\dots=\ptexdots
+  \let\equiv=\ptexequiv
+  \let\!=\ptexexclam
+  \let\i=\ptexi
+  \let\indent=\ptexindent
+  \let\noindent=\ptexnoindent
+  \let\{=\ptexlbrace
+  \let\+=\tabalign
+  \let\}=\ptexrbrace
+  \let\/=\ptexslash
+  \let\*=\ptexstar
+  \let\t=\ptext
+  \expandafter \let\csname top\endcsname=\ptextop  % outer
+  \let\frenchspacing=\plainfrenchspacing
+  %
+  \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
+  \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}%
+  \def\@{@}%
+}
+% There is no need to define \Etex.
+
+% Define @lisp ... @end lisp.
+% @lisp environment forms a group so it can rebind things,
+% including the definition of @end lisp (which normally is erroneous).
+
+% Amount to narrow the margins by for @lisp.
+\newskip\lispnarrowing \lispnarrowing=0.4in
+
+% This is the definition that ^^M gets inside @lisp, @example, and other
+% such environments.  \null is better than a space, since it doesn't
+% have any width.
+\def\lisppar{\null\endgraf}
+
+% This space is always present above and below environments.
+\newskip\envskipamount \envskipamount = 0pt
+
+% Make spacing and below environment symmetrical.  We use \parskip here
+% to help in doing that, since in @example-like environments \parskip
+% is reset to zero; thus the \afterenvbreak inserts no space -- but the
+% start of the next paragraph will insert \parskip.
+%
+\def\aboveenvbreak{{%
+  % =10000 instead of <10000 because of a special case in \itemzzz and
+  % \sectionheading, q.v.
+  \ifnum \lastpenalty=10000 \else
+    \advance\envskipamount by \parskip
+    \endgraf
+    \ifdim\lastskip<\envskipamount
+      \removelastskip
+      % it's not a good place to break if the last penalty was \nobreak
+      % or better ...
+      \ifnum\lastpenalty<10000 \penalty-50 \fi
+      \vskip\envskipamount
+    \fi
+  \fi
+}}
+
+\let\afterenvbreak = \aboveenvbreak
+
+% \nonarrowing is a flag.  If "set", @lisp etc don't narrow margins; it will
+% also clear it, so that its embedded environments do the narrowing again.
+\let\nonarrowing=\relax
+
+% @cartouche ... @end cartouche: draw rectangle w/rounded corners around
+% environment contents.
+\font\circle=lcircle10
+\newdimen\circthick
+\newdimen\cartouter\newdimen\cartinner
+\newskip\normbskip\newskip\normpskip\newskip\normlskip
+\circthick=\fontdimen8\circle
+%
+\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth
+\def\ctr{{\hskip 6pt\circle\char'010}}
+\def\cbl{{\circle\char'012\hskip -6pt}}
+\def\cbr{{\hskip 6pt\circle\char'011}}
+\def\carttop{\hbox to \cartouter{\hskip\lskip
+        \ctl\leaders\hrule height\circthick\hfil\ctr
+        \hskip\rskip}}
+\def\cartbot{\hbox to \cartouter{\hskip\lskip
+        \cbl\leaders\hrule height\circthick\hfil\cbr
+        \hskip\rskip}}
+%
+\newskip\lskip\newskip\rskip
+
+\envdef\cartouche{%
+  \ifhmode\par\fi  % can't be in the midst of a paragraph.
+  \startsavinginserts
+  \lskip=\leftskip \rskip=\rightskip
+  \leftskip=0pt\rightskip=0pt % we want these *outside*.
+  \cartinner=\hsize \advance\cartinner by-\lskip
+  \advance\cartinner by-\rskip
+  \cartouter=\hsize
+  \advance\cartouter by 18.4pt % allow for 3pt kerns on either
+                               % side, and for 6pt waste from
+                               % each corner char, and rule thickness
+  \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
+  % Flag to tell @lisp, etc., not to narrow margin.
+  \let\nonarrowing = t%
+  \vbox\bgroup
+      \baselineskip=0pt\parskip=0pt\lineskip=0pt
+      \carttop
+      \hbox\bgroup
+         \hskip\lskip
+         \vrule\kern3pt
+         \vbox\bgroup
+             \kern3pt
+             \hsize=\cartinner
+             \baselineskip=\normbskip
+             \lineskip=\normlskip
+             \parskip=\normpskip
+             \vskip -\parskip
+             \comment % For explanation, see the end of \def\group.
+}
+\def\Ecartouche{%
+              \ifhmode\par\fi
+             \kern3pt
+         \egroup
+         \kern3pt\vrule
+         \hskip\rskip
+      \egroup
+      \cartbot
+  \egroup
+  \checkinserts
+}
+
+
+% This macro is called at the beginning of all the @example variants,
+% inside a group.
+\newdimen\nonfillparindent
+\def\nonfillstart{%
+  \aboveenvbreak
+  \hfuzz = 12pt % Don't be fussy
+  \sepspaces % Make spaces be word-separators rather than space tokens.
+  \let\par = \lisppar % don't ignore blank lines
+  \obeylines % each line of input is a line of output
+  \parskip = 0pt
+  % Turn off paragraph indentation but redefine \indent to emulate
+  % the normal \indent.
+  \nonfillparindent=\parindent
+  \parindent = 0pt
+  \let\indent\nonfillindent
+  %
+  \emergencystretch = 0pt % don't try to avoid overfull boxes
+  \ifx\nonarrowing\relax
+    \advance \leftskip by \lispnarrowing
+    \exdentamount=\lispnarrowing
+  \else
+    \let\nonarrowing = \relax
+  \fi
+  \let\exdent=\nofillexdent
+}
+
+\begingroup
+\obeyspaces
+% We want to swallow spaces (but not other tokens) after the fake
+% @indent in our nonfill-environments, where spaces are normally
+% active and set to @tie, resulting in them not being ignored after
+% @indent.
+\gdef\nonfillindent{\futurelet\temp\nonfillindentcheck}%
+\gdef\nonfillindentcheck{%
+\ifx\temp %
+\expandafter\nonfillindentgobble%
+\else%
+\leavevmode\nonfillindentbox%
+\fi%
+}%
+\endgroup
+\def\nonfillindentgobble#1{\nonfillindent}
+\def\nonfillindentbox{\hbox to \nonfillparindent{\hss}}
+
+% If you want all examples etc. small: @set dispenvsize small.
+% If you want even small examples the full size: @set dispenvsize nosmall.
+% This affects the following displayed environments:
+%    @example, @display, @format, @lisp
+%
+\def\smallword{small}
+\def\nosmallword{nosmall}
+\let\SETdispenvsize\relax
+\def\setnormaldispenv{%
+  \ifx\SETdispenvsize\smallword
+    % end paragraph for sake of leading, in case document has no blank
+    % line.  This is redundant with what happens in \aboveenvbreak, but
+    % we need to do it before changing the fonts, and it's inconvenient
+    % to change the fonts afterward.
+    \ifnum \lastpenalty=10000 \else \endgraf \fi
+    \smallexamplefonts \rm
+  \fi
+}
+\def\setsmalldispenv{%
+  \ifx\SETdispenvsize\nosmallword
+  \else
+    \ifnum \lastpenalty=10000 \else \endgraf \fi
+    \smallexamplefonts \rm
+  \fi
+}
+
+% We often define two environments, @foo and @smallfoo.
+% Let's do it in one command.  #1 is the env name, #2 the definition.
+\def\makedispenvdef#1#2{%
+  \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}%
+  \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}%
+  \expandafter\let\csname E#1\endcsname \afterenvbreak
+  \expandafter\let\csname Esmall#1\endcsname \afterenvbreak
+}
+
+% Define two environment synonyms (#1 and #2) for an environment.
+\def\maketwodispenvdef#1#2#3{%
+  \makedispenvdef{#1}{#3}%
+  \makedispenvdef{#2}{#3}%
+}
+%
+% @lisp: indented, narrowed, typewriter font;
+% @example: same as @lisp.
+%
+% @smallexample and @smalllisp: use smaller fonts.
+% Originally contributed by Pavel@xerox.
+%
+\maketwodispenvdef{lisp}{example}{%
+  \nonfillstart
+  \tt\setupmarkupstyle{example}%
+  \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
+  \gobble % eat return
+}
+% @display/@smalldisplay: same as @lisp except keep current font.
+%
+\makedispenvdef{display}{%
+  \nonfillstart
+  \gobble
+}
+
+% @format/@smallformat: same as @display except don't narrow margins.
+%
+\makedispenvdef{format}{%
+  \let\nonarrowing = t%
+  \nonfillstart
+  \gobble
+}
+
+% @flushleft: same as @format, but doesn't obey \SETdispenvsize.
+\envdef\flushleft{%
+  \let\nonarrowing = t%
+  \nonfillstart
+  \gobble
+}
+\let\Eflushleft = \afterenvbreak
+
+% @flushright.
+%
+\envdef\flushright{%
+  \let\nonarrowing = t%
+  \nonfillstart
+  \advance\leftskip by 0pt plus 1fill\relax
+  \gobble
+}
+\let\Eflushright = \afterenvbreak
+
+
+% @raggedright does more-or-less normal line breaking but no right
+% justification.  From plain.tex.
+\envdef\raggedright{%
+  \rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax
+}
+\let\Eraggedright\par
+
+\envdef\raggedleft{%
+  \parindent=0pt \leftskip0pt plus2em
+  \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt
+  \hbadness=10000 % Last line will usually be underfull, so turn off
+                  % badness reporting.
+}
+\let\Eraggedleft\par
+
+\envdef\raggedcenter{%
+  \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em
+  \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt
+  \hbadness=10000 % Last line will usually be underfull, so turn off
+                  % badness reporting.
+}
+\let\Eraggedcenter\par
+
+
+% @quotation does normal linebreaking (hence we can't use \nonfillstart)
+% and narrows the margins.  We keep \parskip nonzero in general, since
+% we're doing normal filling.  So, when using \aboveenvbreak and
+% \afterenvbreak, temporarily make \parskip 0.
+%
+\makedispenvdef{quotation}{\quotationstart}
+%
+\def\quotationstart{%
+  {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
+  \parindent=0pt
+  %
+  % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
+  \ifx\nonarrowing\relax
+    \advance\leftskip by \lispnarrowing
+    \advance\rightskip by \lispnarrowing
+    \exdentamount = \lispnarrowing
+  \else
+    \let\nonarrowing = \relax
+  \fi
+  \parsearg\quotationlabel
+}
+
+% We have retained a nonzero parskip for the environment, since we're
+% doing normal filling.
+%
+\def\Equotation{%
+  \par
+  \ifx\quotationauthor\thisisundefined\else
+    % indent a bit.
+    \leftline{\kern 2\leftskip \sl ---\quotationauthor}%
+  \fi
+  {\parskip=0pt \afterenvbreak}%
+}
+\def\Esmallquotation{\Equotation}
+
+% If we're given an argument, typeset it in bold with a colon after.
+\def\quotationlabel#1{%
+  \def\temp{#1}%
+  \ifx\temp\empty \else
+    {\bf #1: }%
+  \fi
+}
+
+
+% LaTeX-like @verbatim...@end verbatim and @verb{<char>...<char>}
+% If we want to allow any <char> as delimiter,
+% we need the curly braces so that makeinfo sees the @verb command, eg:
+% `@verbx...x' would look like the '@verbx' command.  --janneke@gnu.org
+%
+% [Knuth]: Donald Ervin Knuth, 1996.  The TeXbook.
+%
+% [Knuth] p.344; only we need to do the other characters Texinfo sets
+% active too.  Otherwise, they get lost as the first character on a
+% verbatim line.
+\def\dospecials{%
+  \do\ \do\\\do\{\do\}\do\$\do\&%
+  \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~%
+  \do\<\do\>\do\|\do\@\do+\do\"%
+  % Don't do the quotes -- if we do, @set txicodequoteundirected and
+  % @set txicodequotebacktick will not have effect on @verb and
+  % @verbatim, and ?` and !` ligatures won't get disabled.
+  %\do\`\do\'%
+}
+%
+% [Knuth] p. 380
+\def\uncatcodespecials{%
+  \def\do##1{\catcode`##1=\other}\dospecials}
+%
+% Setup for the @verb command.
+%
+% Eight spaces for a tab
+\begingroup
+  \catcode`\^^I=\active
+  \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }}
+\endgroup
+%
+\def\setupverb{%
+  \tt  % easiest (and conventionally used) font for verbatim
+  \def\par{\leavevmode\endgraf}%
+  \setupmarkupstyle{verb}%
+  \tabeightspaces
+  % Respect line breaks,
+  % print special symbols as themselves, and
+  % make each space count
+  % must do in this order:
+  \obeylines \uncatcodespecials \sepspaces
+}
+
+% Setup for the @verbatim environment
+%
+% Real tab expansion.
+\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
+%
+% We typeset each line of the verbatim in an \hbox, so we can handle
+% tabs.  The \global is in case the verbatim line starts with an accent,
+% or some other command that starts with a begin-group.  Otherwise, the
+% entire \verbbox would disappear at the corresponding end-group, before
+% it is typeset.  Meanwhile, we can't have nested verbatim commands
+% (can we?), so the \global won't be overwriting itself.
+\newbox\verbbox
+\def\starttabbox{\global\setbox\verbbox=\hbox\bgroup}
+%
+\begingroup
+  \catcode`\^^I=\active
+  \gdef\tabexpand{%
+    \catcode`\^^I=\active
+    \def^^I{\leavevmode\egroup
+      \dimen\verbbox=\wd\verbbox % the width so far, or since the previous tab
+      \divide\dimen\verbbox by\tabw
+      \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw
+      \advance\dimen\verbbox by\tabw  % advance to next multiple of \tabw
+      \wd\verbbox=\dimen\verbbox \box\verbbox \starttabbox
+    }%
+  }
+\endgroup
+
+% start the verbatim environment.
+\def\setupverbatim{%
+  \let\nonarrowing = t%
+  \nonfillstart
+  \tt % easiest (and conventionally used) font for verbatim
+  % The \leavevmode here is for blank lines.  Otherwise, we would
+  % never \starttabox and the \egroup would end verbatim mode.
+  \def\par{\leavevmode\egroup\box\verbbox\endgraf}%
+  \tabexpand
+  \setupmarkupstyle{verbatim}%
+  % Respect line breaks,
+  % print special symbols as themselves, and
+  % make each space count.
+  % Must do in this order:
+  \obeylines \uncatcodespecials \sepspaces
+  \everypar{\starttabbox}%
+}
+
+% Do the @verb magic: verbatim text is quoted by unique
+% delimiter characters.  Before first delimiter expect a
+% right brace, after last delimiter expect closing brace:
+%
+%    \def\doverb'{'<char>#1<char>'}'{#1}
+%
+% [Knuth] p. 382; only eat outer {}
+\begingroup
+  \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other
+  \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next]
+\endgroup
+%
+\def\verb{\begingroup\setupverb\doverb}
+%
+%
+% Do the @verbatim magic: define the macro \doverbatim so that
+% the (first) argument ends when '@end verbatim' is reached, ie:
+%
+%     \def\doverbatim#1@end verbatim{#1}
+%
+% For Texinfo it's a lot easier than for LaTeX,
+% because texinfo's \verbatim doesn't stop at '\end{verbatim}':
+% we need not redefine '\', '{' and '}'.
+%
+% Inspired by LaTeX's verbatim command set [latex.ltx]
+%
+\begingroup
+  \catcode`\ =\active
+  \obeylines %
+  % ignore everything up to the first ^^M, that's the newline at the end
+  % of the @verbatim input line itself.  Otherwise we get an extra blank
+  % line in the output.
+  \xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}%
+  % We really want {...\end verbatim} in the body of the macro, but
+  % without the active space; thus we have to use \xdef and \gobble.
+\endgroup
+%
+\envdef\verbatim{%
+    \setupverbatim\doverbatim
+}
+\let\Everbatim = \afterenvbreak
+
+
+% @verbatiminclude FILE - insert text of file in verbatim environment.
+%
+\def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude}
+%
+\def\doverbatiminclude#1{%
+  {%
+    \makevalueexpandable
+    \setupverbatim
+    \indexnofonts       % Allow `@@' and other weird things in file names.
+    \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}%
+    \input #1
+    \afterenvbreak
+  }%
+}
+
+% @copying ... @end copying.
+% Save the text away for @insertcopying later.
+%
+% We save the uninterpreted tokens, rather than creating a box.
+% Saving the text in a box would be much easier, but then all the
+% typesetting commands (@smallbook, font changes, etc.) have to be done
+% beforehand -- and a) we want @copying to be done first in the source
+% file; b) letting users define the frontmatter in as flexible order as
+% possible is very desirable.
+%
+\def\copying{\checkenv{}\begingroup\scanargctxt\docopying}
+\def\docopying#1@end copying{\endgroup\def\copyingtext{#1}}
+%
+\def\insertcopying{%
+  \begingroup
+    \parindent = 0pt  % paragraph indentation looks wrong on title page
+    \scanexp\copyingtext
+  \endgroup
+}
+
+
+\message{defuns,}
+% @defun etc.
+
+\newskip\defbodyindent \defbodyindent=.4in
+\newskip\defargsindent \defargsindent=50pt
+\newskip\deflastargmargin \deflastargmargin=18pt
+\newcount\defunpenalty
+
+% Start the processing of @deffn:
+\def\startdefun{%
+  \ifnum\lastpenalty<10000
+    \medbreak
+    \defunpenalty=10003 % Will keep this @deffn together with the
+                        % following @def command, see below.
+  \else
+    % If there are two @def commands in a row, we'll have a \nobreak,
+    % which is there to keep the function description together with its
+    % header.  But if there's nothing but headers, we need to allow a
+    % break somewhere.  Check specifically for penalty 10002, inserted
+    % by \printdefunline, instead of 10000, since the sectioning
+    % commands also insert a nobreak penalty, and we don't want to allow
+    % a break between a section heading and a defun.
+    %
+    % As a further refinement, we avoid "club" headers by signalling
+    % with penalty of 10003 after the very first @deffn in the
+    % sequence (see above), and penalty of 10002 after any following
+    % @def command.
+    \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi
+    %
+    % Similarly, after a section heading, do not allow a break.
+    % But do insert the glue.
+    \medskip  % preceded by discardable penalty, so not a breakpoint
+  \fi
+  %
+  \parindent=0in
+  \advance\leftskip by \defbodyindent
+  \exdentamount=\defbodyindent
+}
+
+\def\dodefunx#1{%
+  % First, check whether we are in the right environment:
+  \checkenv#1%
+  %
+  % As above, allow line break if we have multiple x headers in a row.
+  % It's not a great place, though.
+  \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi
+  %
+  % And now, it's time to reuse the body of the original defun:
+  \expandafter\gobbledefun#1%
+}
+\def\gobbledefun#1\startdefun{}
+
+% \printdefunline \deffnheader{text}
+%
+\def\printdefunline#1#2{%
+  \begingroup
+    % call \deffnheader:
+    #1#2 \endheader
+    % common ending:
+    \interlinepenalty = 10000
+    \advance\rightskip by 0pt plus 1fil\relax
+    \endgraf
+    \nobreak\vskip -\parskip
+    \penalty\defunpenalty  % signal to \startdefun and \dodefunx
+    % Some of the @defun-type tags do not enable magic parentheses,
+    % rendering the following check redundant.  But we don't optimize.
+    \checkparencounts
+  \endgroup
+}
+
+\def\Edefun{\endgraf\medbreak}
+
+% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn;
+% the only thing remaining is to define \deffnheader.
+%
+\def\makedefun#1{%
+  \expandafter\let\csname E#1\endcsname = \Edefun
+  \edef\temp{\noexpand\domakedefun
+    \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}%
+  \temp
+}
+
+% \domakedefun \deffn \deffnx \deffnheader
+%
+% Define \deffn and \deffnx, without parameters.
+% \deffnheader has to be defined explicitly.
+%
+\def\domakedefun#1#2#3{%
+  \envdef#1{%
+    \startdefun
+    \doingtypefnfalse    % distinguish typed functions from all else
+    \parseargusing\activeparens{\printdefunline#3}%
+  }%
+  \def#2{\dodefunx#1}%
+  \def#3%
+}
+
+\newif\ifdoingtypefn       % doing typed function?
+\newif\ifrettypeownline    % typeset return type on its own line?
+
+% @deftypefnnewline on|off says whether the return type of typed functions
+% are printed on their own line.  This affects @deftypefn, @deftypefun,
+% @deftypeop, and @deftypemethod.
+% 
+\parseargdef\deftypefnnewline{%
+  \def\temp{#1}%
+  \ifx\temp\onword
+    \expandafter\let\csname SETtxideftypefnnl\endcsname
+      = \empty
+  \else\ifx\temp\offword
+    \expandafter\let\csname SETtxideftypefnnl\endcsname
+      = \relax
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @txideftypefnnl value `\temp',
+                must be on|off}%
+  \fi\fi
+}
+
+% Untyped functions:
+
+% @deffn category name args
+\makedefun{deffn}{\deffngeneral{}}
+
+% @deffn category class name args
+\makedefun{defop}#1 {\defopon{#1\ \putwordon}}
+
+% \defopon {category on}class name args
+\def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
+
+% \deffngeneral {subind}category name args
+%
+\def\deffngeneral#1#2 #3 #4\endheader{%
+  % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}.
+  \dosubind{fn}{\code{#3}}{#1}%
+  \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}%
+}
+
+% Typed functions:
+
+% @deftypefn category type name args
+\makedefun{deftypefn}{\deftypefngeneral{}}
+
+% @deftypeop category class type name args
+\makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}}
+
+% \deftypeopon {category on}class type name args
+\def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
+
+% \deftypefngeneral {subind}category type name args
+%
+\def\deftypefngeneral#1#2 #3 #4 #5\endheader{%
+  \dosubind{fn}{\code{#4}}{#1}%
+  \doingtypefntrue
+  \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
+}
+
+% Typed variables:
+
+% @deftypevr category type var args
+\makedefun{deftypevr}{\deftypecvgeneral{}}
+
+% @deftypecv category class type var args
+\makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}}
+
+% \deftypecvof {category of}class type var args
+\def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} }
+
+% \deftypecvgeneral {subind}category type var args
+%
+\def\deftypecvgeneral#1#2 #3 #4 #5\endheader{%
+  \dosubind{vr}{\code{#4}}{#1}%
+  \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
+}
+
+% Untyped variables:
+
+% @defvr category var args
+\makedefun{defvr}#1 {\deftypevrheader{#1} {} }
+
+% @defcv category class var args
+\makedefun{defcv}#1 {\defcvof{#1\ \putwordof}}
+
+% \defcvof {category of}class var args
+\def\defcvof#1#2 {\deftypecvof{#1}#2 {} }
+
+% Types:
+
+% @deftp category name args
+\makedefun{deftp}#1 #2 #3\endheader{%
+  \doind{tp}{\code{#2}}%
+  \defname{#1}{}{#2}\defunargs{#3\unskip}%
+}
+
+% Remaining @defun-like shortcuts:
+\makedefun{defun}{\deffnheader{\putwordDeffunc} }
+\makedefun{defmac}{\deffnheader{\putwordDefmac} }
+\makedefun{defspec}{\deffnheader{\putwordDefspec} }
+\makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} }
+\makedefun{defvar}{\defvrheader{\putwordDefvar} }
+\makedefun{defopt}{\defvrheader{\putwordDefopt} }
+\makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} }
+\makedefun{defmethod}{\defopon\putwordMethodon}
+\makedefun{deftypemethod}{\deftypeopon\putwordMethodon}
+\makedefun{defivar}{\defcvof\putwordInstanceVariableof}
+\makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof}
+
+% \defname, which formats the name of the @def (not the args).
+% #1 is the category, such as "Function".
+% #2 is the return type, if any.
+% #3 is the function name.
+%
+% We are followed by (but not passed) the arguments, if any.
+%
+\def\defname#1#2#3{%
+  \par
+  % Get the values of \leftskip and \rightskip as they were outside the @def...
+  \advance\leftskip by -\defbodyindent
+  %
+  % Determine if we are typesetting the return type of a typed function
+  % on a line by itself.
+  \rettypeownlinefalse
+  \ifdoingtypefn  % doing a typed function specifically?
+    % then check user option for putting return type on its own line:
+    \expandafter\ifx\csname SETtxideftypefnnl\endcsname\relax \else
+      \rettypeownlinetrue
+    \fi
+  \fi
+  %
+  % How we'll format the category name.  Putting it in brackets helps
+  % distinguish it from the body text that may end up on the next line
+  % just below it.
+  \def\temp{#1}%
+  \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi}
+  %
+  % Figure out line sizes for the paragraph shape.  We'll always have at
+  % least two.
+  \tempnum = 2
+  %
+  % The first line needs space for \box0; but if \rightskip is nonzero,
+  % we need only space for the part of \box0 which exceeds it:
+  \dimen0=\hsize  \advance\dimen0 by -\wd0  \advance\dimen0 by \rightskip
+  %
+  % If doing a return type on its own line, we'll have another line.
+  \ifrettypeownline
+    \advance\tempnum by 1
+    \def\maybeshapeline{0in \hsize}%
+  \else
+    \def\maybeshapeline{}%
+  \fi
+  %
+  % The continuations:
+  \dimen2=\hsize  \advance\dimen2 by -\defargsindent
+  %
+  % The final paragraph shape:
+  \parshape \tempnum  0in \dimen0  \maybeshapeline  \defargsindent \dimen2
+  %
+  % Put the category name at the right margin.
+  \noindent
+  \hbox to 0pt{%
+    \hfil\box0 \kern-\hsize
+    % \hsize has to be shortened this way:
+    \kern\leftskip
+    % Intentionally do not respect \rightskip, since we need the space.
+  }%
+  %
+  % Allow all lines to be underfull without complaint:
+  \tolerance=10000 \hbadness=10000
+  \exdentamount=\defbodyindent
+  {%
+    % defun fonts. We use typewriter by default (used to be bold) because:
+    % . we're printing identifiers, they should be in tt in principle.
+    % . in languages with many accents, such as Czech or French, it's
+    %   common to leave accents off identifiers.  The result looks ok in
+    %   tt, but exceedingly strange in rm.
+    % . we don't want -- and --- to be treated as ligatures.
+    % . this still does not fix the ?` and !` ligatures, but so far no
+    %   one has made identifiers using them :).
+    \df \tt
+    \def\temp{#2}% text of the return type
+    \ifx\temp\empty\else
+      \tclose{\temp}% typeset the return type
+      \ifrettypeownline
+        % put return type on its own line; prohibit line break following:
+        \hfil\vadjust{\nobreak}\break  
+      \else
+        \space  % type on same line, so just followed by a space
+      \fi
+    \fi           % no return type
+    #3% output function name
+  }%
+  {\rm\enskip}% hskip 0.5 em of \tenrm
+  %
+  \boldbrax
+  % arguments will be output next, if any.
+}
+
+% Print arguments in slanted roman (not ttsl), inconsistently with using
+% tt for the name.  This is because literal text is sometimes needed in
+% the argument list (groff manual), and ttsl and tt are not very
+% distinguishable.  Prevent hyphenation at `-' chars.
+%
+\def\defunargs#1{%
+  % use sl by default (not ttsl),
+  % tt for the names.
+  \df \sl \hyphenchar\font=0
+  %
+  % On the other hand, if an argument has two dashes (for instance), we
+  % want a way to get ttsl.  Let's try @var for that.
+  \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}%
+  #1%
+  \sl\hyphenchar\font=45
+}
+
+% We want ()&[] to print specially on the defun line.
+%
+\def\activeparens{%
+  \catcode`\(=\active \catcode`\)=\active
+  \catcode`\[=\active \catcode`\]=\active
+  \catcode`\&=\active
+}
+
+% Make control sequences which act like normal parenthesis chars.
+\let\lparen = ( \let\rparen = )
+
+% Be sure that we always have a definition for `(', etc.  For example,
+% if the fn name has parens in it, \boldbrax will not be in effect yet,
+% so TeX would otherwise complain about undefined control sequence.
+{
+  \activeparens
+  \global\let(=\lparen \global\let)=\rparen
+  \global\let[=\lbrack \global\let]=\rbrack
+  \global\let& = \&
+
+  \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
+  \gdef\magicamp{\let&=\amprm}
+}
+
+\newcount\parencount
+
+% If we encounter &foo, then turn on ()-hacking afterwards
+\newif\ifampseen
+\def\amprm#1 {\ampseentrue{\bf\&#1 }}
+
+\def\parenfont{%
+  \ifampseen
+    % At the first level, print parens in roman,
+    % otherwise use the default font.
+    \ifnum \parencount=1 \rm \fi
+  \else
+    % The \sf parens (in \boldbrax) actually are a little bolder than
+    % the contained text.  This is especially needed for [ and ] .
+    \sf
+  \fi
+}
+\def\infirstlevel#1{%
+  \ifampseen
+    \ifnum\parencount=1
+      #1%
+    \fi
+  \fi
+}
+\def\bfafterword#1 {#1 \bf}
+
+\def\opnr{%
+  \global\advance\parencount by 1
+  {\parenfont(}%
+  \infirstlevel \bfafterword
+}
+\def\clnr{%
+  {\parenfont)}%
+  \infirstlevel \sl
+  \global\advance\parencount by -1
+}
+
+\newcount\brackcount
+\def\lbrb{%
+  \global\advance\brackcount by 1
+  {\bf[}%
+}
+\def\rbrb{%
+  {\bf]}%
+  \global\advance\brackcount by -1
+}
+
+\def\checkparencounts{%
+  \ifnum\parencount=0 \else \badparencount \fi
+  \ifnum\brackcount=0 \else \badbrackcount \fi
+}
+% these should not use \errmessage; the glibc manual, at least, actually
+% has such constructs (when documenting function pointers).
+\def\badparencount{%
+  \message{Warning: unbalanced parentheses in @def...}%
+  \global\parencount=0
+}
+\def\badbrackcount{%
+  \message{Warning: unbalanced square brackets in @def...}%
+  \global\brackcount=0
+}
+
+
+\message{macros,}
+% @macro.
+
+% To do this right we need a feature of e-TeX, \scantokens,
+% which we arrange to emulate with a temporary file in ordinary TeX.
+\ifx\eTeXversion\thisisundefined
+  \newwrite\macscribble
+  \def\scantokens#1{%
+    \toks0={#1}%
+    \immediate\openout\macscribble=\jobname.tmp
+    \immediate\write\macscribble{\the\toks0}%
+    \immediate\closeout\macscribble
+    \input \jobname.tmp
+  }
+\fi
+
+\def\scanmacro#1{\begingroup
+  \newlinechar`\^^M
+  \let\xeatspaces\eatspaces
+  %
+  % Undo catcode changes of \startcontents and \doprintindex
+  % When called from @insertcopying or (short)caption, we need active
+  % backslash to get it printed correctly.  Previously, we had
+  % \catcode`\\=\other instead.  We'll see whether a problem appears
+  % with macro expansion.                              --kasal, 19aug04
+  \catcode`\@=0 \catcode`\\=\active \escapechar=`\@
+  %
+  % ... and for \example:
+  \spaceisspace
+  %
+  % The \empty here causes a following catcode 5 newline to be eaten as
+  % part of reading whitespace after a control sequence.  It does not
+  % eat a catcode 13 newline.  There's no good way to handle the two
+  % cases (untried: maybe e-TeX's \everyeof could help, though plain TeX
+  % would then have different behavior).  See the Macro Details node in
+  % the manual for the workaround we recommend for macros and
+  % line-oriented commands.
+  % 
+  \scantokens{#1\empty}%
+\endgroup}
+
+\def\scanexp#1{%
+  \edef\temp{\noexpand\scanmacro{#1}}%
+  \temp
+}
+
+\newcount\paramno   % Count of parameters
+\newtoks\macname    % Macro name
+\newif\ifrecursive  % Is it recursive?
+
+% List of all defined macros in the form
+%    \definedummyword\macro1\definedummyword\macro2...
+% Currently is also contains all @aliases; the list can be split
+% if there is a need.
+\def\macrolist{}
+
+% Add the macro to \macrolist
+\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname}
+\def\addtomacrolistxxx#1{%
+     \toks0 = \expandafter{\macrolist\definedummyword#1}%
+     \xdef\macrolist{\the\toks0}%
+}
+
+% Utility routines.
+% This does \let #1 = #2, with \csnames; that is,
+%   \let \csname#1\endcsname = \csname#2\endcsname
+% (except of course we have to play expansion games).
+%
+\def\cslet#1#2{%
+  \expandafter\let
+  \csname#1\expandafter\endcsname
+  \csname#2\endcsname
+}
+
+% Trim leading and trailing spaces off a string.
+% Concepts from aro-bend problem 15 (see CTAN).
+{\catcode`\@=11
+\gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }}
+\gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@}
+\gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @}
+\def\unbrace#1{#1}
+\unbrace{\gdef\trim@@@ #1 } #2@{#1}
+}
+
+% Trim a single trailing ^^M off a string.
+{\catcode`\^^M=\other \catcode`\Q=3%
+\gdef\eatcr #1{\eatcra #1Q^^MQ}%
+\gdef\eatcra#1^^MQ{\eatcrb#1Q}%
+\gdef\eatcrb#1Q#2Q{#1}%
+}
+
+% Macro bodies are absorbed as an argument in a context where
+% all characters are catcode 10, 11 or 12, except \ which is active
+% (as in normal texinfo). It is necessary to change the definition of \
+% to recognize macro arguments; this is the job of \mbodybackslash.
+%
+% Non-ASCII encodings make 8-bit characters active, so un-activate
+% them to avoid their expansion.  Must do this non-globally, to
+% confine the change to the current group.
+%
+% It's necessary to have hard CRs when the macro is executed. This is
+% done by making ^^M (\endlinechar) catcode 12 when reading the macro
+% body, and then making it the \newlinechar in \scanmacro.
+%
+\def\scanctxt{% used as subroutine
+  \catcode`\"=\other
+  \catcode`\+=\other
+  \catcode`\<=\other
+  \catcode`\>=\other
+  \catcode`\@=\other
+  \catcode`\^=\other
+  \catcode`\_=\other
+  \catcode`\|=\other
+  \catcode`\~=\other
+  \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi
+}
+
+\def\scanargctxt{% used for copying and captions, not macros.
+  \scanctxt
+  \catcode`\\=\other
+  \catcode`\^^M=\other
+}
+
+\def\macrobodyctxt{% used for @macro definitions
+  \scanctxt
+  \catcode`\{=\other
+  \catcode`\}=\other
+  \catcode`\^^M=\other
+  \usembodybackslash
+}
+
+\def\macroargctxt{% used when scanning invocations
+  \scanctxt
+  \catcode`\\=0
+}
+% why catcode 0 for \ in the above?  To recognize \\ \{ \} as "escapes"
+% for the single characters \ { }.  Thus, we end up with the "commands"
+% that would be written @\ @{ @} in a Texinfo document.
+% 
+% We already have @{ and @}.  For @\, we define it here, and only for
+% this purpose, to produce a typewriter backslash (so, the @\ that we
+% define for @math can't be used with @macro calls):
+%
+\def\\{\normalbackslash}%
+% 
+% We would like to do this for \, too, since that is what makeinfo does.
+% But it is not possible, because Texinfo already has a command @, for a
+% cedilla accent.  Documents must use @comma{} instead.
+%
+% \anythingelse will almost certainly be an error of some kind.
+
+
+% \mbodybackslash is the definition of \ in @macro bodies.
+% It maps \foo\ => \csname macarg.foo\endcsname => #N
+% where N is the macro parameter number.
+% We define \csname macarg.\endcsname to be \realbackslash, so
+% \\ in macro replacement text gets you a backslash.
+%
+{\catcode`@=0 @catcode`@\=@active
+ @gdef@usembodybackslash{@let\=@mbodybackslash}
+ @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname}
+}
+\expandafter\def\csname macarg.\endcsname{\realbackslash}
+
+\def\margbackslash#1{\char`\#1 }
+
+\def\macro{\recursivefalse\parsearg\macroxxx}
+\def\rmacro{\recursivetrue\parsearg\macroxxx}
+
+\def\macroxxx#1{%
+  \getargs{#1}% now \macname is the macname and \argl the arglist
+  \ifx\argl\empty       % no arguments
+     \paramno=0
+  \else
+     \expandafter\parsemargdef \argl;%
+  \fi
+  \if1\csname ismacro.\the\macname\endcsname
+     \message{Warning: redefining \the\macname}%
+  \else
+     \expandafter\ifx\csname \the\macname\endcsname \relax
+     \else \errmessage{Macro name \the\macname\space already defined}\fi
+     \global\cslet{macsave.\the\macname}{\the\macname}%
+     \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
+     \addtomacrolist{\the\macname}%
+  \fi
+  \begingroup \macrobodyctxt
+  \ifrecursive \expandafter\parsermacbody
+  \else \expandafter\parsemacbody
+  \fi}
+
+\parseargdef\unmacro{%
+  \if1\csname ismacro.#1\endcsname
+    \global\cslet{#1}{macsave.#1}%
+    \global\expandafter\let \csname ismacro.#1\endcsname=0%
+    % Remove the macro name from \macrolist:
+    \begingroup
+      \expandafter\let\csname#1\endcsname \relax
+      \let\definedummyword\unmacrodo
+      \xdef\macrolist{\macrolist}%
+    \endgroup
+  \else
+    \errmessage{Macro #1 not defined}%
+  \fi
+}
+
+% Called by \do from \dounmacro on each macro.  The idea is to omit any
+% macro definitions that have been changed to \relax.
+%
+\def\unmacrodo#1{%
+  \ifx #1\relax
+    % remove this
+  \else
+    \noexpand\definedummyword \noexpand#1%
+  \fi
+}
+
+% This makes use of the obscure feature that if the last token of a
+% <parameter list> is #, then the preceding argument is delimited by
+% an opening brace, and that opening brace is not consumed.
+\def\getargs#1{\getargsxxx#1{}}
+\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs}
+\def\getmacname#1 #2\relax{\macname={#1}}
+\def\getmacargs#1{\def\argl{#1}}
+
+% Parse the optional {params} list.  Set up \paramno and \paramlist
+% so \defmacro knows what to do.  Define \macarg.blah for each blah
+% in the params list to be ##N where N is the position in that list.
+% That gets used by \mbodybackslash (above).
+%
+% We need to get `macro parameter char #' into several definitions.
+% The technique used is stolen from LaTeX: let \hash be something
+% unexpandable, insert that wherever you need a #, and then redefine
+% it to # just before using the token list produced.
+%
+% The same technique is used to protect \eatspaces till just before
+% the macro is used.
+
+\def\parsemargdef#1;{%
+  \paramno=0\def\paramlist{}%
+  \let\hash\relax
+  \let\xeatspaces\relax
+  \parsemargdefxxx#1,;,%
+}
+\def\parsemargdefxxx#1,{%
+  \if#1;\let\next=\relax
+  \else \let\next=\parsemargdefxxx
+    \advance\paramno by 1
+    \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname
+        {\xeatspaces{\hash\the\paramno}}%
+    \edef\paramlist{\paramlist\hash\the\paramno,}%
+  \fi\next}
+
+% These two commands read recursive and nonrecursive macro bodies.
+% (They're different since rec and nonrec macros end differently.)
+%
+\long\def\parsemacbody#1@end macro%
+{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
+\long\def\parsermacbody#1@end rmacro%
+{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
+
+% This defines the macro itself. There are six cases: recursive and
+% nonrecursive macros of zero, one, and many arguments.
+% Much magic with \expandafter here.
+% \xdef is used so that macro definitions will survive the file
+% they're defined in; @include reads the file inside a group.
+%
+\def\defmacro{%
+  \let\hash=##% convert placeholders to macro parameter chars
+  \ifrecursive
+    \ifcase\paramno
+    % 0
+      \expandafter\xdef\csname\the\macname\endcsname{%
+        \noexpand\scanmacro{\temp}}%
+    \or % 1
+      \expandafter\xdef\csname\the\macname\endcsname{%
+         \bgroup\noexpand\macroargctxt
+         \noexpand\braceorline
+         \expandafter\noexpand\csname\the\macname xxx\endcsname}%
+      \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
+         \egroup\noexpand\scanmacro{\temp}}%
+    \else % many
+      \expandafter\xdef\csname\the\macname\endcsname{%
+         \bgroup\noexpand\macroargctxt
+         \noexpand\csname\the\macname xx\endcsname}%
+      \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+          \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+      \expandafter\expandafter
+      \expandafter\xdef
+      \expandafter\expandafter
+        \csname\the\macname xxx\endcsname
+          \paramlist{\egroup\noexpand\scanmacro{\temp}}%
+    \fi
+  \else
+    \ifcase\paramno
+    % 0
+      \expandafter\xdef\csname\the\macname\endcsname{%
+        \noexpand\norecurse{\the\macname}%
+        \noexpand\scanmacro{\temp}\egroup}%
+    \or % 1
+      \expandafter\xdef\csname\the\macname\endcsname{%
+         \bgroup\noexpand\macroargctxt
+         \noexpand\braceorline
+         \expandafter\noexpand\csname\the\macname xxx\endcsname}%
+      \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
+        \egroup
+        \noexpand\norecurse{\the\macname}%
+        \noexpand\scanmacro{\temp}\egroup}%
+    \else % many
+      \expandafter\xdef\csname\the\macname\endcsname{%
+         \bgroup\noexpand\macroargctxt
+         \expandafter\noexpand\csname\the\macname xx\endcsname}%
+      \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+          \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+      \expandafter\expandafter
+      \expandafter\xdef
+      \expandafter\expandafter
+      \csname\the\macname xxx\endcsname
+      \paramlist{%
+          \egroup
+          \noexpand\norecurse{\the\macname}%
+          \noexpand\scanmacro{\temp}\egroup}%
+    \fi
+  \fi}
+
+\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}}
+
+% \braceorline decides whether the next nonwhitespace character is a
+% {.  If so it reads up to the closing }, if not, it reads the whole
+% line.  Whatever was read is then fed to the next control sequence
+% as an argument (by \parsebrace or \parsearg).
+% 
+\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
+\def\braceorlinexxx{%
+  \ifx\nchar\bgroup\else
+    \expandafter\parsearg
+  \fi \macnamexxx}
+
+
+% @alias.
+% We need some trickery to remove the optional spaces around the equal
+% sign.  Make them active and then expand them all to nothing.
+%
+\def\alias{\parseargusing\obeyspaces\aliasxxx}
+\def\aliasxxx #1{\aliasyyy#1\relax}
+\def\aliasyyy #1=#2\relax{%
+  {%
+    \expandafter\let\obeyedspace=\empty
+    \addtomacrolist{#1}%
+    \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}%
+  }%
+  \next
+}
+
+
+\message{cross references,}
+
+\newwrite\auxfile
+\newif\ifhavexrefs    % True if xref values are known.
+\newif\ifwarnedxrefs  % True if we warned once that they aren't known.
+
+% @inforef is relatively simple.
+\def\inforef #1{\inforefzzz #1,,,,**}
+\def\inforefzzz #1,#2,#3,#4**{%
+  \putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
+  node \samp{\ignorespaces#1{}}}
+
+% @node's only job in TeX is to define \lastnode, which is used in
+% cross-references.  The @node line might or might not have commas, and
+% might or might not have spaces before the first comma, like:
+% @node foo , bar , ...
+% We don't want such trailing spaces in the node name.
+%
+\parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse}
+%
+% also remove a trailing comma, in case of something like this:
+% @node Help-Cross,  ,  , Cross-refs
+\def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse}
+\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}}
+
+\let\nwnode=\node
+\let\lastnode=\empty
+
+% Write a cross-reference definition for the current node.  #1 is the
+% type (Ynumbered, Yappendix, Ynothing).
+%
+\def\donoderef#1{%
+  \ifx\lastnode\empty\else
+    \setref{\lastnode}{#1}%
+    \global\let\lastnode=\empty
+  \fi
+}
+
+% @anchor{NAME} -- define xref target at arbitrary point.
+%
+\newcount\savesfregister
+%
+\def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi}
+\def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi}
+\def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces}
+
+% \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an
+% anchor), which consists of three parts:
+% 1) NAME-title - the current sectioning name taken from \lastsection,
+%                 or the anchor name.
+% 2) NAME-snt   - section number and type, passed as the SNT arg, or
+%                 empty for anchors.
+% 3) NAME-pg    - the page number.
+%
+% This is called from \donoderef, \anchor, and \dofloat.  In the case of
+% floats, there is an additional part, which is not written here:
+% 4) NAME-lof   - the text as it should appear in a @listoffloats.
+%
+\def\setref#1#2{%
+  \pdfmkdest{#1}%
+  \iflinks
+    {%
+      \atdummies  % preserve commands, but don't expand them
+      \edef\writexrdef##1##2{%
+       \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef
+         ##1}{##2}}% these are parameters of \writexrdef
+      }%
+      \toks0 = \expandafter{\lastsection}%
+      \immediate \writexrdef{title}{\the\toks0 }%
+      \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc.
+      \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, at \shipout
+    }%
+  \fi
+}
+
+% @xrefautosectiontitle on|off says whether @section(ing) names are used
+% automatically in xrefs, if the third arg is not explicitly specified.
+% This was provided as a "secret" @set xref-automatic-section-title
+% variable, now it's official.
+% 
+\parseargdef\xrefautomaticsectiontitle{%
+  \def\temp{#1}%
+  \ifx\temp\onword
+    \expandafter\let\csname SETxref-automatic-section-title\endcsname
+      = \empty
+  \else\ifx\temp\offword
+    \expandafter\let\csname SETxref-automatic-section-title\endcsname
+      = \relax
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @xrefautomaticsectiontitle value `\temp',
+                must be on|off}%
+  \fi\fi
+}
+
+
+% @xref, @pxref, and @ref generate cross-references.  For \xrefX, #1 is
+% the node name, #2 the name of the Info cross-reference, #3 the printed
+% node name, #4 the name of the Info file, #5 the name of the printed
+% manual.  All but the node name can be omitted.
+%
+\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]}
+\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]}
+\def\ref#1{\xrefX[#1,,,,,,,]}
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
+  \unsepspaces
+  \def\printedmanual{\ignorespaces #5}%
+  \def\printedrefname{\ignorespaces #3}%
+  \setbox1=\hbox{\printedmanual\unskip}%
+  \setbox0=\hbox{\printedrefname\unskip}%
+  \ifdim \wd0 = 0pt
+    % No printed node name was explicitly given.
+    \expandafter\ifx\csname SETxref-automatic-section-title\endcsname \relax
+      % Use the node name inside the square brackets.
+      \def\printedrefname{\ignorespaces #1}%
+    \else
+      % Use the actual chapter/section title appear inside
+      % the square brackets.  Use the real section title if we have it.
+      \ifdim \wd1 > 0pt
+        % It is in another manual, so we don't have it.
+        \def\printedrefname{\ignorespaces #1}%
+      \else
+        \ifhavexrefs
+          % We know the real title if we have the xref values.
+          \def\printedrefname{\refx{#1-title}{}}%
+        \else
+          % Otherwise just copy the Info node name.
+          \def\printedrefname{\ignorespaces #1}%
+        \fi%
+      \fi
+    \fi
+  \fi
+  %
+  % Make link in pdf output.
+  \ifpdf
+    {\indexnofonts
+     \turnoffactive
+     % This expands tokens, so do it after making catcode changes, so _
+     % etc. don't get their TeX definitions.
+     \getfilename{#4}%
+     %
+     % See comments at \activebackslashdouble.
+     {\activebackslashdouble \xdef\pdfxrefdest{#1}%
+      \backslashparens\pdfxrefdest}%
+     %
+     \leavevmode
+     \startlink attr{/Border [0 0 0]}%
+     \ifnum\filenamelength>0
+       goto file{\the\filename.pdf} name{\pdfxrefdest}%
+     \else
+       goto name{\pdfmkpgn{\pdfxrefdest}}%
+     \fi
+    }%
+    \setcolor{\linkcolor}%
+  \fi
+  %
+  % Float references are printed completely differently: "Figure 1.2"
+  % instead of "[somenode], p.3".  We distinguish them by the
+  % LABEL-title being set to a magic string.
+  {%
+    % Have to otherify everything special to allow the \csname to
+    % include an _ in the xref name, etc.
+    \indexnofonts
+    \turnoffactive
+    \expandafter\global\expandafter\let\expandafter\Xthisreftitle
+      \csname XR#1-title\endcsname
+  }%
+  \iffloat\Xthisreftitle
+    % If the user specified the print name (third arg) to the ref,
+    % print it instead of our usual "Figure 1.2".
+    \ifdim\wd0 = 0pt
+      \refx{#1-snt}{}%
+    \else
+      \printedrefname
+    \fi
+    %
+    % if the user also gave the printed manual name (fifth arg), append
+    % "in MANUALNAME".
+    \ifdim \wd1 > 0pt
+      \space \putwordin{} \cite{\printedmanual}%
+    \fi
+  \else
+    % node/anchor (non-float) references.
+    %
+    % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not
+    % insert empty discretionaries after hyphens, which means that it will
+    % not find a line break at a hyphen in a node names.  Since some manuals
+    % are best written with fairly long node names, containing hyphens, this
+    % is a loss.  Therefore, we give the text of the node name again, so it
+    % is as if TeX is seeing it for the first time.
+    \ifdim \wd1 > 0pt
+      \putwordSection{} ``\printedrefname'' \putwordin{} \cite{\printedmanual}%
+    \else
+      % _ (for example) has to be the character _ for the purposes of the
+      % control sequence corresponding to the node, but it has to expand
+      % into the usual \leavevmode...\vrule stuff for purposes of
+      % printing. So we \turnoffactive for the \refx-snt, back on for the
+      % printing, back off for the \refx-pg.
+      {\turnoffactive
+       % Only output a following space if the -snt ref is nonempty; for
+       % @unnumbered and @anchor, it won't be.
+       \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
+       \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi
+      }%
+      % output the `[mynode]' via a macro so it can be overridden.
+      \xrefprintnodename\printedrefname
+      %
+      % But we always want a comma and a space:
+      ,\space
+      %
+      % output the `page 3'.
+      \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
+    \fi
+  \fi
+  \endlink
+\endgroup}
+
+% This macro is called from \xrefX for the `[nodename]' part of xref
+% output.  It's a separate macro only so it can be changed more easily,
+% since square brackets don't work well in some documents.  Particularly
+% one that Bob is working on :).
+%
+\def\xrefprintnodename#1{[#1]}
+
+% Things referred to by \setref.
+%
+\def\Ynothing{}
+\def\Yomitfromtoc{}
+\def\Ynumbered{%
+  \ifnum\secno=0
+    \putwordChapter@tie \the\chapno
+  \else \ifnum\subsecno=0
+    \putwordSection@tie \the\chapno.\the\secno
+  \else \ifnum\subsubsecno=0
+    \putwordSection@tie \the\chapno.\the\secno.\the\subsecno
+  \else
+    \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno
+  \fi\fi\fi
+}
+\def\Yappendix{%
+  \ifnum\secno=0
+     \putwordAppendix@tie @char\the\appendixno{}%
+  \else \ifnum\subsecno=0
+     \putwordSection@tie @char\the\appendixno.\the\secno
+  \else \ifnum\subsubsecno=0
+    \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno
+  \else
+    \putwordSection@tie
+      @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno
+  \fi\fi\fi
+}
+
+% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME.
+% If its value is nonempty, SUFFIX is output afterward.
+%
+\def\refx#1#2{%
+  {%
+    \indexnofonts
+    \otherbackslash
+    \expandafter\global\expandafter\let\expandafter\thisrefX
+      \csname XR#1\endcsname
+  }%
+  \ifx\thisrefX\relax
+    % If not defined, say something at least.
+    \angleleft un\-de\-fined\angleright
+    \iflinks
+      \ifhavexrefs
+        {\toks0 = {#1}% avoid expansion of possibly-complex value
+         \message{\linenumber Undefined cross reference `\the\toks0'.}}%
+      \else
+        \ifwarnedxrefs\else
+          \global\warnedxrefstrue
+          \message{Cross reference values unknown; you must run TeX again.}%
+        \fi
+      \fi
+    \fi
+  \else
+    % It's defined, so just use it.
+    \thisrefX
+  \fi
+  #2% Output the suffix in any case.
+}
+
+% This is the macro invoked by entries in the aux file.  Usually it's
+% just a \def (we prepend XR to the control sequence name to avoid
+% collisions).  But if this is a float type, we have more work to do.
+%
+\def\xrdef#1#2{%
+  {% The node name might contain 8-bit characters, which in our current
+   % implementation are changed to commands like @'e.  Don't let these
+   % mess up the control sequence name.
+    \indexnofonts
+    \turnoffactive
+    \xdef\safexrefname{#1}%
+  }%
+  %
+  \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref
+  %
+  % Was that xref control sequence that we just defined for a float?
+  \expandafter\iffloat\csname XR\safexrefname\endcsname
+    % it was a float, and we have the (safe) float type in \iffloattype.
+    \expandafter\let\expandafter\floatlist
+      \csname floatlist\iffloattype\endcsname
+    %
+    % Is this the first time we've seen this float type?
+    \expandafter\ifx\floatlist\relax
+      \toks0 = {\do}% yes, so just \do
+    \else
+      % had it before, so preserve previous elements in list.
+      \toks0 = \expandafter{\floatlist\do}%
+    \fi
+    %
+    % Remember this xref in the control sequence \floatlistFLOATTYPE,
+    % for later use in \listoffloats.
+    \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0
+      {\safexrefname}}%
+  \fi
+}
+
+% Read the last existing aux file, if any.  No error if none exists.
+%
+\def\tryauxfile{%
+  \openin 1 \jobname.aux
+  \ifeof 1 \else
+    \readdatafile{aux}%
+    \global\havexrefstrue
+  \fi
+  \closein 1
+}
+
+\def\setupdatafile{%
+  \catcode`\^^@=\other
+  \catcode`\^^A=\other
+  \catcode`\^^B=\other
+  \catcode`\^^C=\other
+  \catcode`\^^D=\other
+  \catcode`\^^E=\other
+  \catcode`\^^F=\other
+  \catcode`\^^G=\other
+  \catcode`\^^H=\other
+  \catcode`\^^K=\other
+  \catcode`\^^L=\other
+  \catcode`\^^N=\other
+  \catcode`\^^P=\other
+  \catcode`\^^Q=\other
+  \catcode`\^^R=\other
+  \catcode`\^^S=\other
+  \catcode`\^^T=\other
+  \catcode`\^^U=\other
+  \catcode`\^^V=\other
+  \catcode`\^^W=\other
+  \catcode`\^^X=\other
+  \catcode`\^^Z=\other
+  \catcode`\^^[=\other
+  \catcode`\^^\=\other
+  \catcode`\^^]=\other
+  \catcode`\^^^=\other
+  \catcode`\^^_=\other
+  % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc.
+  % in xref tags, i.e., node names.  But since ^^e4 notation isn't
+  % supported in the main text, it doesn't seem desirable.  Furthermore,
+  % that is not enough: for node names that actually contain a ^
+  % character, we would end up writing a line like this: 'xrdef {'hat
+  % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first
+  % argument, and \hat is not an expandable control sequence.  It could
+  % all be worked out, but why?  Either we support ^^ or we don't.
+  %
+  % The other change necessary for this was to define \auxhat:
+  % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter
+  % and then to call \auxhat in \setq.
+  %
+  \catcode`\^=\other
+  %
+  % Special characters.  Should be turned off anyway, but...
+  \catcode`\~=\other
+  \catcode`\[=\other
+  \catcode`\]=\other
+  \catcode`\"=\other
+  \catcode`\_=\other
+  \catcode`\|=\other
+  \catcode`\<=\other
+  \catcode`\>=\other
+  \catcode`\$=\other
+  \catcode`\#=\other
+  \catcode`\&=\other
+  \catcode`\%=\other
+  \catcode`+=\other % avoid \+ for paranoia even though we've turned it off
+  %
+  % This is to support \ in node names and titles, since the \
+  % characters end up in a \csname.  It's easier than
+  % leaving it active and making its active definition an actual \
+  % character.  What I don't understand is why it works in the *value*
+  % of the xrdef.  Seems like it should be a catcode12 \, and that
+  % should not typeset properly.  But it works, so I'm moving on for
+  % now.  --karl, 15jan04.
+  \catcode`\\=\other
+  %
+  % Make the characters 128-255 be printing characters.
+  {%
+    \count1=128
+    \def\loop{%
+      \catcode\count1=\other
+      \advance\count1 by 1
+      \ifnum \count1<256 \loop \fi
+    }%
+  }%
+  %
+  % @ is our escape character in .aux files, and we need braces.
+  \catcode`\{=1
+  \catcode`\}=2
+  \catcode`\@=0
+}
+
+\def\readdatafile#1{%
+\begingroup
+  \setupdatafile
+  \input\jobname.#1
+\endgroup}
+
+
+\message{insertions,}
+% including footnotes.
+
+\newcount \footnoteno
+
+% The trailing space in the following definition for supereject is
+% vital for proper filling; pages come out unaligned when you do a
+% pagealignmacro call if that space before the closing brace is
+% removed. (Generally, numeric constants should always be followed by a
+% space to prevent strange expansion errors.)
+\def\supereject{\par\penalty -20000\footnoteno =0 }
+
+% @footnotestyle is meaningful for info output only.
+\let\footnotestyle=\comment
+
+{\catcode `\@=11
+%
+% Auto-number footnotes.  Otherwise like plain.
+\gdef\footnote{%
+  \let\indent=\ptexindent
+  \let\noindent=\ptexnoindent
+  \global\advance\footnoteno by \@ne
+  \edef\thisfootno{$^{\the\footnoteno}$}%
+  %
+  % In case the footnote comes at the end of a sentence, preserve the
+  % extra spacing after we do the footnote number.
+  \let\@sf\empty
+  \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi
+  %
+  % Remove inadvertent blank space before typesetting the footnote number.
+  \unskip
+  \thisfootno\@sf
+  \dofootnote
+}%
+
+% Don't bother with the trickery in plain.tex to not require the
+% footnote text as a parameter.  Our footnotes don't need to be so general.
+%
+% Oh yes, they do; otherwise, @ifset (and anything else that uses
+% \parseargline) fails inside footnotes because the tokens are fixed when
+% the footnote is read.  --karl, 16nov96.
+%
+\gdef\dofootnote{%
+  \insert\footins\bgroup
+  % We want to typeset this text as a normal paragraph, even if the
+  % footnote reference occurs in (for example) a display environment.
+  % So reset some parameters.
+  \hsize=\pagewidth
+  \interlinepenalty\interfootnotelinepenalty
+  \splittopskip\ht\strutbox % top baseline for broken footnotes
+  \splitmaxdepth\dp\strutbox
+  \floatingpenalty\@MM
+  \leftskip\z@skip
+  \rightskip\z@skip
+  \spaceskip\z@skip
+  \xspaceskip\z@skip
+  \parindent\defaultparindent
+  %
+  \smallfonts \rm
+  %
+  % Because we use hanging indentation in footnotes, a @noindent appears
+  % to exdent this text, so make it be a no-op.  makeinfo does not use
+  % hanging indentation so @noindent can still be needed within footnote
+  % text after an @example or the like (not that this is good style).
+  \let\noindent = \relax
+  %
+  % Hang the footnote text off the number.  Use \everypar in case the
+  % footnote extends for more than one paragraph.
+  \everypar = {\hang}%
+  \textindent{\thisfootno}%
+  %
+  % Don't crash into the line above the footnote text.  Since this
+  % expands into a box, it must come within the paragraph, lest it
+  % provide a place where TeX can split the footnote.
+  \footstrut
+  \futurelet\next\fo@t
+}
+}%end \catcode `\@=11
+
+% In case a @footnote appears in a vbox, save the footnote text and create
+% the real \insert just after the vbox finished.  Otherwise, the insertion
+% would be lost.
+% Similarly, if a @footnote appears inside an alignment, save the footnote
+% text to a box and make the \insert when a row of the table is finished.
+% And the same can be done for other insert classes.  --kasal, 16nov03.
+
+% Replace the \insert primitive by a cheating macro.
+% Deeper inside, just make sure that the saved insertions are not spilled
+% out prematurely.
+%
+\def\startsavinginserts{%
+  \ifx \insert\ptexinsert
+    \let\insert\saveinsert
+  \else
+    \let\checkinserts\relax
+  \fi
+}
+
+% This \insert replacement works for both \insert\footins{foo} and
+% \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}.
+%
+\def\saveinsert#1{%
+  \edef\next{\noexpand\savetobox \makeSAVEname#1}%
+  \afterassignment\next
+  % swallow the left brace
+  \let\temp =
+}
+\def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}}
+\def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1}
+
+\def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi}
+
+\def\placesaveins#1{%
+  \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname
+    {\box#1}%
+}
+
+% eat @SAVE -- beware, all of them have catcode \other:
+{
+  \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials  %  ;-)
+  \gdef\gobblesave @SAVE{}
+}
+
+% initialization:
+\def\newsaveins #1{%
+  \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}%
+  \next
+}
+\def\newsaveinsX #1{%
+  \csname newbox\endcsname #1%
+  \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts
+    \checksaveins #1}%
+}
+
+% initialize:
+\let\checkinserts\empty
+\newsaveins\footins
+\newsaveins\margin
+
+
+% @image.  We use the macros from epsf.tex to support this.
+% If epsf.tex is not installed and @image is used, we complain.
+%
+% Check for and read epsf.tex up front.  If we read it only at @image
+% time, we might be inside a group, and then its definitions would get
+% undone and the next image would fail.
+\openin 1 = epsf.tex
+\ifeof 1 \else
+  % Do not bother showing banner with epsf.tex v2.7k (available in
+  % doc/epsf.tex and on ctan).
+  \def\epsfannounce{\toks0 = }%
+  \input epsf.tex
+\fi
+\closein 1
+%
+% We will only complain once about lack of epsf.tex.
+\newif\ifwarnednoepsf
+\newhelp\noepsfhelp{epsf.tex must be installed for images to
+  work.  It is also included in the Texinfo distribution, or you can get
+  it from ftp://tug.org/tex/epsf.tex.}
+%
+\def\image#1{%
+  \ifx\epsfbox\thisiundefined
+    \ifwarnednoepsf \else
+      \errhelp = \noepsfhelp
+      \errmessage{epsf.tex not found, images will be ignored}%
+      \global\warnednoepsftrue
+    \fi
+  \else
+    \imagexxx #1,,,,,\finish
+  \fi
+}
+%
+% Arguments to @image:
+% #1 is (mandatory) image filename; we tack on .eps extension.
+% #2 is (optional) width, #3 is (optional) height.
+% #4 is (ignored optional) html alt text.
+% #5 is (ignored optional) extension.
+% #6 is just the usual extra ignored arg for parsing stuff.
+\newif\ifimagevmode
+\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup
+  \catcode`\^^M = 5     % in case we're inside an example
+  \normalturnoffactive  % allow _ et al. in names
+  % If the image is by itself, center it.
+  \ifvmode
+    \imagevmodetrue
+    \nobreak\medskip
+    % Usually we'll have text after the image which will insert
+    % \parskip glue, so insert it here too to equalize the space
+    % above and below.
+    \nobreak\vskip\parskip
+    \nobreak
+  \fi
+  %
+  % Leave vertical mode so that indentation from an enclosing
+  % environment such as @quotation is respected.  On the other hand, if
+  % it's at the top level, we don't want the normal paragraph indentation.
+  \noindent
+  %
+  % Output the image.
+  \ifpdf
+    \dopdfimage{#1}{#2}{#3}%
+  \else
+    % \epsfbox itself resets \epsf?size at each figure.
+    \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi
+    \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi
+    \epsfbox{#1.eps}%
+  \fi
+  %
+  \ifimagevmode \medskip \fi  % space after the standalone image
+\endgroup}
+
+
+% @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables,
+% etc.  We don't actually implement floating yet, we always include the
+% float "here".  But it seemed the best name for the future.
+%
+\envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish}
+
+% There may be a space before second and/or third parameter; delete it.
+\def\eatcommaspace#1, {#1,}
+
+% #1 is the optional FLOATTYPE, the text label for this float, typically
+% "Figure", "Table", "Example", etc.  Can't contain commas.  If omitted,
+% this float will not be numbered and cannot be referred to.
+%
+% #2 is the optional xref label.  Also must be present for the float to
+% be referable.
+%
+% #3 is the optional positioning argument; for now, it is ignored.  It
+% will somehow specify the positions allowed to float to (here, top, bottom).
+%
+% We keep a separate counter for each FLOATTYPE, which we reset at each
+% chapter-level command.
+\let\resetallfloatnos=\empty
+%
+\def\dofloat#1,#2,#3,#4\finish{%
+  \let\thiscaption=\empty
+  \let\thisshortcaption=\empty
+  %
+  % don't lose footnotes inside @float.
+  %
+  % BEWARE: when the floats start float, we have to issue warning whenever an
+  % insert appears inside a float which could possibly float. --kasal, 26may04
+  %
+  \startsavinginserts
+  %
+  % We can't be used inside a paragraph.
+  \par
+  %
+  \vtop\bgroup
+    \def\floattype{#1}%
+    \def\floatlabel{#2}%
+    \def\floatloc{#3}% we do nothing with this yet.
+    %
+    \ifx\floattype\empty
+      \let\safefloattype=\empty
+    \else
+      {%
+        % the floattype might have accents or other special characters,
+        % but we need to use it in a control sequence name.
+        \indexnofonts
+        \turnoffactive
+        \xdef\safefloattype{\floattype}%
+      }%
+    \fi
+    %
+    % If label is given but no type, we handle that as the empty type.
+    \ifx\floatlabel\empty \else
+      % We want each FLOATTYPE to be numbered separately (Figure 1,
+      % Table 1, Figure 2, ...).  (And if no label, no number.)
+      %
+      \expandafter\getfloatno\csname\safefloattype floatno\endcsname
+      \global\advance\floatno by 1
+      %
+      {%
+        % This magic value for \lastsection is output by \setref as the
+        % XREFLABEL-title value.  \xrefX uses it to distinguish float
+        % labels (which have a completely different output format) from
+        % node and anchor labels.  And \xrdef uses it to construct the
+        % lists of floats.
+        %
+        \edef\lastsection{\floatmagic=\safefloattype}%
+        \setref{\floatlabel}{Yfloat}%
+      }%
+    \fi
+    %
+    % start with \parskip glue, I guess.
+    \vskip\parskip
+    %
+    % Don't suppress indentation if a float happens to start a section.
+    \restorefirstparagraphindent
+}
+
+% we have these possibilities:
+% @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap
+% @float Foo,lbl & no caption:    Foo 1.1
+% @float Foo & @caption{Cap}:     Foo: Cap
+% @float Foo & no caption:        Foo
+% @float ,lbl & Caption{Cap}:     1.1: Cap
+% @float ,lbl & no caption:       1.1
+% @float & @caption{Cap}:         Cap
+% @float & no caption:
+%
+\def\Efloat{%
+    \let\floatident = \empty
+    %
+    % In all cases, if we have a float type, it comes first.
+    \ifx\floattype\empty \else \def\floatident{\floattype}\fi
+    %
+    % If we have an xref label, the number comes next.
+    \ifx\floatlabel\empty \else
+      \ifx\floattype\empty \else % if also had float type, need tie first.
+        \appendtomacro\floatident{\tie}%
+      \fi
+      % the number.
+      \appendtomacro\floatident{\chaplevelprefix\the\floatno}%
+    \fi
+    %
+    % Start the printed caption with what we've constructed in
+    % \floatident, but keep it separate; we need \floatident again.
+    \let\captionline = \floatident
+    %
+    \ifx\thiscaption\empty \else
+      \ifx\floatident\empty \else
+       \appendtomacro\captionline{: }% had ident, so need a colon between
+      \fi
+      %
+      % caption text.
+      \appendtomacro\captionline{\scanexp\thiscaption}%
+    \fi
+    %
+    % If we have anything to print, print it, with space before.
+    % Eventually this needs to become an \insert.
+    \ifx\captionline\empty \else
+      \vskip.5\parskip
+      \captionline
+      %
+      % Space below caption.
+      \vskip\parskip
+    \fi
+    %
+    % If have an xref label, write the list of floats info.  Do this
+    % after the caption, to avoid chance of it being a breakpoint.
+    \ifx\floatlabel\empty \else
+      % Write the text that goes in the lof to the aux file as
+      % \floatlabel-lof.  Besides \floatident, we include the short
+      % caption if specified, else the full caption if specified, else nothing.
+      {%
+        \atdummies
+        %
+        % since we read the caption text in the macro world, where ^^M
+        % is turned into a normal character, we have to scan it back, so
+        % we don't write the literal three characters "^^M" into the aux file.
+       \scanexp{%
+         \xdef\noexpand\gtemp{%
+           \ifx\thisshortcaption\empty
+             \thiscaption
+           \else
+             \thisshortcaption
+           \fi
+         }%
+       }%
+        \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident
+         \ifx\gtemp\empty \else : \gtemp \fi}}%
+      }%
+    \fi
+  \egroup  % end of \vtop
+  %
+  % place the captured inserts
+  %
+  % BEWARE: when the floats start floating, we have to issue warning
+  % whenever an insert appears inside a float which could possibly
+  % float. --kasal, 26may04
+  %
+  \checkinserts
+}
+
+% Append the tokens #2 to the definition of macro #1, not expanding either.
+%
+\def\appendtomacro#1#2{%
+  \expandafter\def\expandafter#1\expandafter{#1#2}%
+}
+
+% @caption, @shortcaption
+%
+\def\caption{\docaption\thiscaption}
+\def\shortcaption{\docaption\thisshortcaption}
+\def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption}
+\def\defcaption#1#2{\egroup \def#1{#2}}
+
+% The parameter is the control sequence identifying the counter we are
+% going to use.  Create it if it doesn't exist and assign it to \floatno.
+\def\getfloatno#1{%
+  \ifx#1\relax
+      % Haven't seen this figure type before.
+      \csname newcount\endcsname #1%
+      %
+      % Remember to reset this floatno at the next chap.
+      \expandafter\gdef\expandafter\resetallfloatnos
+        \expandafter{\resetallfloatnos #1=0 }%
+  \fi
+  \let\floatno#1%
+}
+
+% \setref calls this to get the XREFLABEL-snt value.  We want an @xref
+% to the FLOATLABEL to expand to "Figure 3.1".  We call \setref when we
+% first read the @float command.
+%
+\def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}%
+
+% Magic string used for the XREFLABEL-title value, so \xrefX can
+% distinguish floats from other xref types.
+\def\floatmagic{!!float!!}
+
+% #1 is the control sequence we are passed; we expand into a conditional
+% which is true if #1 represents a float ref.  That is, the magic
+% \lastsection value which we \setref above.
+%
+\def\iffloat#1{\expandafter\doiffloat#1==\finish}
+%
+% #1 is (maybe) the \floatmagic string.  If so, #2 will be the
+% (safe) float type for this float.  We set \iffloattype to #2.
+%
+\def\doiffloat#1=#2=#3\finish{%
+  \def\temp{#1}%
+  \def\iffloattype{#2}%
+  \ifx\temp\floatmagic
+}
+
+% @listoffloats FLOATTYPE - print a list of floats like a table of contents.
+%
+\parseargdef\listoffloats{%
+  \def\floattype{#1}% floattype
+  {%
+    % the floattype might have accents or other special characters,
+    % but we need to use it in a control sequence name.
+    \indexnofonts
+    \turnoffactive
+    \xdef\safefloattype{\floattype}%
+  }%
+  %
+  % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE.
+  \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax
+    \ifhavexrefs
+      % if the user said @listoffloats foo but never @float foo.
+      \message{\linenumber No `\safefloattype' floats to list.}%
+    \fi
+  \else
+    \begingroup
+      \leftskip=\tocindent  % indent these entries like a toc
+      \let\do=\listoffloatsdo
+      \csname floatlist\safefloattype\endcsname
+    \endgroup
+  \fi
+}
+
+% This is called on each entry in a list of floats.  We're passed the
+% xref label, in the form LABEL-title, which is how we save it in the
+% aux file.  We strip off the -title and look up \XRLABEL-lof, which
+% has the text we're supposed to typeset here.
+%
+% Figures without xref labels will not be included in the list (since
+% they won't appear in the aux file).
+%
+\def\listoffloatsdo#1{\listoffloatsdoentry#1\finish}
+\def\listoffloatsdoentry#1-title\finish{{%
+  % Can't fully expand XR#1-lof because it can contain anything.  Just
+  % pass the control sequence.  On the other hand, XR#1-pg is just the
+  % page number, and we want to fully expand that so we can get a link
+  % in pdf output.
+  \toksA = \expandafter{\csname XR#1-lof\endcsname}%
+  %
+  % use the same \entry macro we use to generate the TOC and index.
+  \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}%
+  \writeentry
+}}
+
+
+\message{localization,}
+
+% For single-language documents, @documentlanguage is usually given very
+% early, just after @documentencoding.  Single argument is the language
+% (de) or locale (de_DE) abbreviation.
+%
+{
+  \catcode`\_ = \active
+  \globaldefs=1
+\parseargdef\documentlanguage{\begingroup
+  \let_=\normalunderscore  % normal _ character for filenames
+  \tex % read txi-??.tex file in plain TeX.
+    % Read the file by the name they passed if it exists.
+    \openin 1 txi-#1.tex
+    \ifeof 1
+      \documentlanguagetrywithoutunderscore{#1_\finish}%
+    \else
+      \globaldefs = 1  % everything in the txi-LL files needs to persist
+      \input txi-#1.tex
+    \fi
+    \closein 1
+  \endgroup % end raw TeX
+\endgroup}
+%
+% If they passed de_DE, and txi-de_DE.tex doesn't exist,
+% try txi-de.tex.
+%
+\gdef\documentlanguagetrywithoutunderscore#1_#2\finish{%
+  \openin 1 txi-#1.tex
+  \ifeof 1
+    \errhelp = \nolanghelp
+    \errmessage{Cannot read language file txi-#1.tex}%
+  \else
+    \globaldefs = 1  % everything in the txi-LL files needs to persist
+    \input txi-#1.tex
+  \fi
+  \closein 1
+}
+}% end of special _ catcode
+%
+\newhelp\nolanghelp{The given language definition file cannot be found or
+is empty.  Maybe you need to install it?  Putting it in the current
+directory should work if nowhere else does.}
+
+% This macro is called from txi-??.tex files; the first argument is the
+% \language name to set (without the "\lang@" prefix), the second and
+% third args are \{left,right}hyphenmin.
+%
+% The language names to pass are determined when the format is built.
+% See the etex.log file created at that time, e.g.,
+% /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log.
+%
+% With TeX Live 2008, etex now includes hyphenation patterns for all
+% available languages.  This means we can support hyphenation in
+% Texinfo, at least to some extent.  (This still doesn't solve the
+% accented characters problem.)
+%
+\catcode`@=11
+\def\txisetlanguage#1#2#3{%
+  % do not set the language if the name is undefined in the current TeX.
+  \expandafter\ifx\csname lang@#1\endcsname \relax
+    \message{no patterns for #1}%
+  \else
+    \global\language = \csname lang@#1\endcsname
+  \fi
+  % but there is no harm in adjusting the hyphenmin values regardless.
+  \global\lefthyphenmin = #2\relax
+  \global\righthyphenmin = #3\relax
+}
+
+% Helpers for encodings.
+% Set the catcode of characters 128 through 255 to the specified number.
+%
+\def\setnonasciicharscatcode#1{%
+   \count255=128
+   \loop\ifnum\count255<256
+      \global\catcode\count255=#1\relax
+      \advance\count255 by 1
+   \repeat
+}
+
+\def\setnonasciicharscatcodenonglobal#1{%
+   \count255=128
+   \loop\ifnum\count255<256
+      \catcode\count255=#1\relax
+      \advance\count255 by 1
+   \repeat
+}
+
+% @documentencoding sets the definition of non-ASCII characters
+% according to the specified encoding.
+%
+\parseargdef\documentencoding{%
+  % Encoding being declared for the document.
+  \def\declaredencoding{\csname #1.enc\endcsname}%
+  %
+  % Supported encodings: names converted to tokens in order to be able
+  % to compare them with \ifx.
+  \def\ascii{\csname US-ASCII.enc\endcsname}%
+  \def\latnine{\csname ISO-8859-15.enc\endcsname}%
+  \def\latone{\csname ISO-8859-1.enc\endcsname}%
+  \def\lattwo{\csname ISO-8859-2.enc\endcsname}%
+  \def\utfeight{\csname UTF-8.enc\endcsname}%
+  %
+  \ifx \declaredencoding \ascii
+     \asciichardefs
+  %
+  \else \ifx \declaredencoding \lattwo
+     \setnonasciicharscatcode\active
+     \lattwochardefs
+  %
+  \else \ifx \declaredencoding \latone
+     \setnonasciicharscatcode\active
+     \latonechardefs
+  %
+  \else \ifx \declaredencoding \latnine
+     \setnonasciicharscatcode\active
+     \latninechardefs
+  %
+  \else \ifx \declaredencoding \utfeight
+     \setnonasciicharscatcode\active
+     \utfeightchardefs
+  %
+  \else
+    \message{Unknown document encoding #1, ignoring.}%
+  %
+  \fi % utfeight
+  \fi % latnine
+  \fi % latone
+  \fi % lattwo
+  \fi % ascii
+}
+
+% A message to be logged when using a character that isn't available
+% the default font encoding (OT1).
+%
+\def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}}
+
+% Take account of \c (plain) vs. \, (Texinfo) difference.
+\def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi}
+
+% First, make active non-ASCII characters in order for them to be
+% correctly categorized when TeX reads the replacement text of
+% macros containing the character definitions.
+\setnonasciicharscatcode\active
+%
+% Latin1 (ISO-8859-1) character definitions.
+\def\latonechardefs{%
+  \gdef^^a0{\tie}
+  \gdef^^a1{\exclamdown}
+  \gdef^^a2{\missingcharmsg{CENT SIGN}}
+  \gdef^^a3{{\pounds}}
+  \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
+  \gdef^^a5{\missingcharmsg{YEN SIGN}}
+  \gdef^^a6{\missingcharmsg{BROKEN BAR}}
+  \gdef^^a7{\S}
+  \gdef^^a8{\"{}}
+  \gdef^^a9{\copyright}
+  \gdef^^aa{\ordf}
+  \gdef^^ab{\guillemetleft}
+  \gdef^^ac{$\lnot$}
+  \gdef^^ad{\-}
+  \gdef^^ae{\registeredsymbol}
+  \gdef^^af{\={}}
+  %
+  \gdef^^b0{\textdegree}
+  \gdef^^b1{$\pm$}
+  \gdef^^b2{$^2$}
+  \gdef^^b3{$^3$}
+  \gdef^^b4{\'{}}
+  \gdef^^b5{$\mu$}
+  \gdef^^b6{\P}
+  %
+  \gdef^^b7{$^.$}
+  \gdef^^b8{\cedilla\ }
+  \gdef^^b9{$^1$}
+  \gdef^^ba{\ordm}
+  %
+  \gdef^^bb{\guillemetright}
+  \gdef^^bc{$1\over4$}
+  \gdef^^bd{$1\over2$}
+  \gdef^^be{$3\over4$}
+  \gdef^^bf{\questiondown}
+  %
+  \gdef^^c0{\`A}
+  \gdef^^c1{\'A}
+  \gdef^^c2{\^A}
+  \gdef^^c3{\~A}
+  \gdef^^c4{\"A}
+  \gdef^^c5{\ringaccent A}
+  \gdef^^c6{\AE}
+  \gdef^^c7{\cedilla C}
+  \gdef^^c8{\`E}
+  \gdef^^c9{\'E}
+  \gdef^^ca{\^E}
+  \gdef^^cb{\"E}
+  \gdef^^cc{\`I}
+  \gdef^^cd{\'I}
+  \gdef^^ce{\^I}
+  \gdef^^cf{\"I}
+  %
+  \gdef^^d0{\DH}
+  \gdef^^d1{\~N}
+  \gdef^^d2{\`O}
+  \gdef^^d3{\'O}
+  \gdef^^d4{\^O}
+  \gdef^^d5{\~O}
+  \gdef^^d6{\"O}
+  \gdef^^d7{$\times$}
+  \gdef^^d8{\O}
+  \gdef^^d9{\`U}
+  \gdef^^da{\'U}
+  \gdef^^db{\^U}
+  \gdef^^dc{\"U}
+  \gdef^^dd{\'Y}
+  \gdef^^de{\TH}
+  \gdef^^df{\ss}
+  %
+  \gdef^^e0{\`a}
+  \gdef^^e1{\'a}
+  \gdef^^e2{\^a}
+  \gdef^^e3{\~a}
+  \gdef^^e4{\"a}
+  \gdef^^e5{\ringaccent a}
+  \gdef^^e6{\ae}
+  \gdef^^e7{\cedilla c}
+  \gdef^^e8{\`e}
+  \gdef^^e9{\'e}
+  \gdef^^ea{\^e}
+  \gdef^^eb{\"e}
+  \gdef^^ec{\`{\dotless i}}
+  \gdef^^ed{\'{\dotless i}}
+  \gdef^^ee{\^{\dotless i}}
+  \gdef^^ef{\"{\dotless i}}
+  %
+  \gdef^^f0{\dh}
+  \gdef^^f1{\~n}
+  \gdef^^f2{\`o}
+  \gdef^^f3{\'o}
+  \gdef^^f4{\^o}
+  \gdef^^f5{\~o}
+  \gdef^^f6{\"o}
+  \gdef^^f7{$\div$}
+  \gdef^^f8{\o}
+  \gdef^^f9{\`u}
+  \gdef^^fa{\'u}
+  \gdef^^fb{\^u}
+  \gdef^^fc{\"u}
+  \gdef^^fd{\'y}
+  \gdef^^fe{\th}
+  \gdef^^ff{\"y}
+}
+
+% Latin9 (ISO-8859-15) encoding character definitions.
+\def\latninechardefs{%
+  % Encoding is almost identical to Latin1.
+  \latonechardefs
+  %
+  \gdef^^a4{\euro}
+  \gdef^^a6{\v S}
+  \gdef^^a8{\v s}
+  \gdef^^b4{\v Z}
+  \gdef^^b8{\v z}
+  \gdef^^bc{\OE}
+  \gdef^^bd{\oe}
+  \gdef^^be{\"Y}
+}
+
+% Latin2 (ISO-8859-2) character definitions.
+\def\lattwochardefs{%
+  \gdef^^a0{\tie}
+  \gdef^^a1{\ogonek{A}}
+  \gdef^^a2{\u{}}
+  \gdef^^a3{\L}
+  \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
+  \gdef^^a5{\v L}
+  \gdef^^a6{\'S}
+  \gdef^^a7{\S}
+  \gdef^^a8{\"{}}
+  \gdef^^a9{\v S}
+  \gdef^^aa{\cedilla S}
+  \gdef^^ab{\v T}
+  \gdef^^ac{\'Z}
+  \gdef^^ad{\-}
+  \gdef^^ae{\v Z}
+  \gdef^^af{\dotaccent Z}
+  %
+  \gdef^^b0{\textdegree}
+  \gdef^^b1{\ogonek{a}}
+  \gdef^^b2{\ogonek{ }}
+  \gdef^^b3{\l}
+  \gdef^^b4{\'{}}
+  \gdef^^b5{\v l}
+  \gdef^^b6{\'s}
+  \gdef^^b7{\v{}}
+  \gdef^^b8{\cedilla\ }
+  \gdef^^b9{\v s}
+  \gdef^^ba{\cedilla s}
+  \gdef^^bb{\v t}
+  \gdef^^bc{\'z}
+  \gdef^^bd{\H{}}
+  \gdef^^be{\v z}
+  \gdef^^bf{\dotaccent z}
+  %
+  \gdef^^c0{\'R}
+  \gdef^^c1{\'A}
+  \gdef^^c2{\^A}
+  \gdef^^c3{\u A}
+  \gdef^^c4{\"A}
+  \gdef^^c5{\'L}
+  \gdef^^c6{\'C}
+  \gdef^^c7{\cedilla C}
+  \gdef^^c8{\v C}
+  \gdef^^c9{\'E}
+  \gdef^^ca{\ogonek{E}}
+  \gdef^^cb{\"E}
+  \gdef^^cc{\v E}
+  \gdef^^cd{\'I}
+  \gdef^^ce{\^I}
+  \gdef^^cf{\v D}
+  %
+  \gdef^^d0{\DH}
+  \gdef^^d1{\'N}
+  \gdef^^d2{\v N}
+  \gdef^^d3{\'O}
+  \gdef^^d4{\^O}
+  \gdef^^d5{\H O}
+  \gdef^^d6{\"O}
+  \gdef^^d7{$\times$}
+  \gdef^^d8{\v R}
+  \gdef^^d9{\ringaccent U}
+  \gdef^^da{\'U}
+  \gdef^^db{\H U}
+  \gdef^^dc{\"U}
+  \gdef^^dd{\'Y}
+  \gdef^^de{\cedilla T}
+  \gdef^^df{\ss}
+  %
+  \gdef^^e0{\'r}
+  \gdef^^e1{\'a}
+  \gdef^^e2{\^a}
+  \gdef^^e3{\u a}
+  \gdef^^e4{\"a}
+  \gdef^^e5{\'l}
+  \gdef^^e6{\'c}
+  \gdef^^e7{\cedilla c}
+  \gdef^^e8{\v c}
+  \gdef^^e9{\'e}
+  \gdef^^ea{\ogonek{e}}
+  \gdef^^eb{\"e}
+  \gdef^^ec{\v e}
+  \gdef^^ed{\'{\dotless{i}}}
+  \gdef^^ee{\^{\dotless{i}}}
+  \gdef^^ef{\v d}
+  %
+  \gdef^^f0{\dh}
+  \gdef^^f1{\'n}
+  \gdef^^f2{\v n}
+  \gdef^^f3{\'o}
+  \gdef^^f4{\^o}
+  \gdef^^f5{\H o}
+  \gdef^^f6{\"o}
+  \gdef^^f7{$\div$}
+  \gdef^^f8{\v r}
+  \gdef^^f9{\ringaccent u}
+  \gdef^^fa{\'u}
+  \gdef^^fb{\H u}
+  \gdef^^fc{\"u}
+  \gdef^^fd{\'y}
+  \gdef^^fe{\cedilla t}
+  \gdef^^ff{\dotaccent{}}
+}
+
+% UTF-8 character definitions.
+%
+% This code to support UTF-8 is based on LaTeX's utf8.def, with some
+% changes for Texinfo conventions.  It is included here under the GPL by
+% permission from Frank Mittelbach and the LaTeX team.
+%
+\newcount\countUTFx
+\newcount\countUTFy
+\newcount\countUTFz
+
+\gdef\UTFviiiTwoOctets#1#2{\expandafter
+   \UTFviiiDefined\csname u8:#1\string #2\endcsname}
+%
+\gdef\UTFviiiThreeOctets#1#2#3{\expandafter
+   \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname}
+%
+\gdef\UTFviiiFourOctets#1#2#3#4{\expandafter
+   \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname}
+
+\gdef\UTFviiiDefined#1{%
+  \ifx #1\relax
+    \message{\linenumber Unicode char \string #1 not defined for Texinfo}%
+  \else
+    \expandafter #1%
+  \fi
+}
+
+\begingroup
+  \catcode`\~13
+  \catcode`\"12
+
+  \def\UTFviiiLoop{%
+    \global\catcode\countUTFx\active
+    \uccode`\~\countUTFx
+    \uppercase\expandafter{\UTFviiiTmp}%
+    \advance\countUTFx by 1
+    \ifnum\countUTFx < \countUTFy
+      \expandafter\UTFviiiLoop
+    \fi}
+
+  \countUTFx = "C2
+  \countUTFy = "E0
+  \def\UTFviiiTmp{%
+    \xdef~{\noexpand\UTFviiiTwoOctets\string~}}
+  \UTFviiiLoop
+
+  \countUTFx = "E0
+  \countUTFy = "F0
+  \def\UTFviiiTmp{%
+    \xdef~{\noexpand\UTFviiiThreeOctets\string~}}
+  \UTFviiiLoop
+
+  \countUTFx = "F0
+  \countUTFy = "F4
+  \def\UTFviiiTmp{%
+    \xdef~{\noexpand\UTFviiiFourOctets\string~}}
+  \UTFviiiLoop
+\endgroup
+
+\begingroup
+  \catcode`\"=12
+  \catcode`\<=12
+  \catcode`\.=12
+  \catcode`\,=12
+  \catcode`\;=12
+  \catcode`\!=12
+  \catcode`\~=13
+
+  \gdef\DeclareUnicodeCharacter#1#2{%
+    \countUTFz = "#1\relax
+    %\wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
+    \begingroup
+      \parseXMLCharref
+      \def\UTFviiiTwoOctets##1##2{%
+        \csname u8:##1\string ##2\endcsname}%
+      \def\UTFviiiThreeOctets##1##2##3{%
+        \csname u8:##1\string ##2\string ##3\endcsname}%
+      \def\UTFviiiFourOctets##1##2##3##4{%
+        \csname u8:##1\string ##2\string ##3\string ##4\endcsname}%
+      \expandafter\expandafter\expandafter\expandafter
+       \expandafter\expandafter\expandafter
+       \gdef\UTFviiiTmp{#2}%
+    \endgroup}
+
+  \gdef\parseXMLCharref{%
+    \ifnum\countUTFz < "A0\relax
+      \errhelp = \EMsimple
+      \errmessage{Cannot define Unicode char value < 00A0}%
+    \else\ifnum\countUTFz < "800\relax
+      \parseUTFviiiA,%
+      \parseUTFviiiB C\UTFviiiTwoOctets.,%
+    \else\ifnum\countUTFz < "10000\relax
+      \parseUTFviiiA;%
+      \parseUTFviiiA,%
+      \parseUTFviiiB E\UTFviiiThreeOctets.{,;}%
+    \else
+      \parseUTFviiiA;%
+      \parseUTFviiiA,%
+      \parseUTFviiiA!%
+      \parseUTFviiiB F\UTFviiiFourOctets.{!,;}%
+    \fi\fi\fi
+  }
+
+  \gdef\parseUTFviiiA#1{%
+    \countUTFx = \countUTFz
+    \divide\countUTFz by 64
+    \countUTFy = \countUTFz
+    \multiply\countUTFz by 64
+    \advance\countUTFx by -\countUTFz
+    \advance\countUTFx by 128
+    \uccode `#1\countUTFx
+    \countUTFz = \countUTFy}
+
+  \gdef\parseUTFviiiB#1#2#3#4{%
+    \advance\countUTFz by "#10\relax
+    \uccode `#3\countUTFz
+    \uppercase{\gdef\UTFviiiTmp{#2#3#4}}}
+\endgroup
+
+\def\utfeightchardefs{%
+  \DeclareUnicodeCharacter{00A0}{\tie}
+  \DeclareUnicodeCharacter{00A1}{\exclamdown}
+  \DeclareUnicodeCharacter{00A3}{\pounds}
+  \DeclareUnicodeCharacter{00A8}{\"{ }}
+  \DeclareUnicodeCharacter{00A9}{\copyright}
+  \DeclareUnicodeCharacter{00AA}{\ordf}
+  \DeclareUnicodeCharacter{00AB}{\guillemetleft}
+  \DeclareUnicodeCharacter{00AD}{\-}
+  \DeclareUnicodeCharacter{00AE}{\registeredsymbol}
+  \DeclareUnicodeCharacter{00AF}{\={ }}
+
+  \DeclareUnicodeCharacter{00B0}{\ringaccent{ }}
+  \DeclareUnicodeCharacter{00B4}{\'{ }}
+  \DeclareUnicodeCharacter{00B8}{\cedilla{ }}
+  \DeclareUnicodeCharacter{00BA}{\ordm}
+  \DeclareUnicodeCharacter{00BB}{\guillemetright}
+  \DeclareUnicodeCharacter{00BF}{\questiondown}
+
+  \DeclareUnicodeCharacter{00C0}{\`A}
+  \DeclareUnicodeCharacter{00C1}{\'A}
+  \DeclareUnicodeCharacter{00C2}{\^A}
+  \DeclareUnicodeCharacter{00C3}{\~A}
+  \DeclareUnicodeCharacter{00C4}{\"A}
+  \DeclareUnicodeCharacter{00C5}{\AA}
+  \DeclareUnicodeCharacter{00C6}{\AE}
+  \DeclareUnicodeCharacter{00C7}{\cedilla{C}}
+  \DeclareUnicodeCharacter{00C8}{\`E}
+  \DeclareUnicodeCharacter{00C9}{\'E}
+  \DeclareUnicodeCharacter{00CA}{\^E}
+  \DeclareUnicodeCharacter{00CB}{\"E}
+  \DeclareUnicodeCharacter{00CC}{\`I}
+  \DeclareUnicodeCharacter{00CD}{\'I}
+  \DeclareUnicodeCharacter{00CE}{\^I}
+  \DeclareUnicodeCharacter{00CF}{\"I}
+
+  \DeclareUnicodeCharacter{00D0}{\DH}
+  \DeclareUnicodeCharacter{00D1}{\~N}
+  \DeclareUnicodeCharacter{00D2}{\`O}
+  \DeclareUnicodeCharacter{00D3}{\'O}
+  \DeclareUnicodeCharacter{00D4}{\^O}
+  \DeclareUnicodeCharacter{00D5}{\~O}
+  \DeclareUnicodeCharacter{00D6}{\"O}
+  \DeclareUnicodeCharacter{00D8}{\O}
+  \DeclareUnicodeCharacter{00D9}{\`U}
+  \DeclareUnicodeCharacter{00DA}{\'U}
+  \DeclareUnicodeCharacter{00DB}{\^U}
+  \DeclareUnicodeCharacter{00DC}{\"U}
+  \DeclareUnicodeCharacter{00DD}{\'Y}
+  \DeclareUnicodeCharacter{00DE}{\TH}
+  \DeclareUnicodeCharacter{00DF}{\ss}
+
+  \DeclareUnicodeCharacter{00E0}{\`a}
+  \DeclareUnicodeCharacter{00E1}{\'a}
+  \DeclareUnicodeCharacter{00E2}{\^a}
+  \DeclareUnicodeCharacter{00E3}{\~a}
+  \DeclareUnicodeCharacter{00E4}{\"a}
+  \DeclareUnicodeCharacter{00E5}{\aa}
+  \DeclareUnicodeCharacter{00E6}{\ae}
+  \DeclareUnicodeCharacter{00E7}{\cedilla{c}}
+  \DeclareUnicodeCharacter{00E8}{\`e}
+  \DeclareUnicodeCharacter{00E9}{\'e}
+  \DeclareUnicodeCharacter{00EA}{\^e}
+  \DeclareUnicodeCharacter{00EB}{\"e}
+  \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}}
+  \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}}
+  \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}}
+  \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}}
+
+  \DeclareUnicodeCharacter{00F0}{\dh}
+  \DeclareUnicodeCharacter{00F1}{\~n}
+  \DeclareUnicodeCharacter{00F2}{\`o}
+  \DeclareUnicodeCharacter{00F3}{\'o}
+  \DeclareUnicodeCharacter{00F4}{\^o}
+  \DeclareUnicodeCharacter{00F5}{\~o}
+  \DeclareUnicodeCharacter{00F6}{\"o}
+  \DeclareUnicodeCharacter{00F8}{\o}
+  \DeclareUnicodeCharacter{00F9}{\`u}
+  \DeclareUnicodeCharacter{00FA}{\'u}
+  \DeclareUnicodeCharacter{00FB}{\^u}
+  \DeclareUnicodeCharacter{00FC}{\"u}
+  \DeclareUnicodeCharacter{00FD}{\'y}
+  \DeclareUnicodeCharacter{00FE}{\th}
+  \DeclareUnicodeCharacter{00FF}{\"y}
+
+  \DeclareUnicodeCharacter{0100}{\=A}
+  \DeclareUnicodeCharacter{0101}{\=a}
+  \DeclareUnicodeCharacter{0102}{\u{A}}
+  \DeclareUnicodeCharacter{0103}{\u{a}}
+  \DeclareUnicodeCharacter{0104}{\ogonek{A}}
+  \DeclareUnicodeCharacter{0105}{\ogonek{a}}
+  \DeclareUnicodeCharacter{0106}{\'C}
+  \DeclareUnicodeCharacter{0107}{\'c}
+  \DeclareUnicodeCharacter{0108}{\^C}
+  \DeclareUnicodeCharacter{0109}{\^c}
+  \DeclareUnicodeCharacter{0118}{\ogonek{E}}
+  \DeclareUnicodeCharacter{0119}{\ogonek{e}}
+  \DeclareUnicodeCharacter{010A}{\dotaccent{C}}
+  \DeclareUnicodeCharacter{010B}{\dotaccent{c}}
+  \DeclareUnicodeCharacter{010C}{\v{C}}
+  \DeclareUnicodeCharacter{010D}{\v{c}}
+  \DeclareUnicodeCharacter{010E}{\v{D}}
+
+  \DeclareUnicodeCharacter{0112}{\=E}
+  \DeclareUnicodeCharacter{0113}{\=e}
+  \DeclareUnicodeCharacter{0114}{\u{E}}
+  \DeclareUnicodeCharacter{0115}{\u{e}}
+  \DeclareUnicodeCharacter{0116}{\dotaccent{E}}
+  \DeclareUnicodeCharacter{0117}{\dotaccent{e}}
+  \DeclareUnicodeCharacter{011A}{\v{E}}
+  \DeclareUnicodeCharacter{011B}{\v{e}}
+  \DeclareUnicodeCharacter{011C}{\^G}
+  \DeclareUnicodeCharacter{011D}{\^g}
+  \DeclareUnicodeCharacter{011E}{\u{G}}
+  \DeclareUnicodeCharacter{011F}{\u{g}}
+
+  \DeclareUnicodeCharacter{0120}{\dotaccent{G}}
+  \DeclareUnicodeCharacter{0121}{\dotaccent{g}}
+  \DeclareUnicodeCharacter{0124}{\^H}
+  \DeclareUnicodeCharacter{0125}{\^h}
+  \DeclareUnicodeCharacter{0128}{\~I}
+  \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}}
+  \DeclareUnicodeCharacter{012A}{\=I}
+  \DeclareUnicodeCharacter{012B}{\={\dotless{i}}}
+  \DeclareUnicodeCharacter{012C}{\u{I}}
+  \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}}
+
+  \DeclareUnicodeCharacter{0130}{\dotaccent{I}}
+  \DeclareUnicodeCharacter{0131}{\dotless{i}}
+  \DeclareUnicodeCharacter{0132}{IJ}
+  \DeclareUnicodeCharacter{0133}{ij}
+  \DeclareUnicodeCharacter{0134}{\^J}
+  \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}}
+  \DeclareUnicodeCharacter{0139}{\'L}
+  \DeclareUnicodeCharacter{013A}{\'l}
+
+  \DeclareUnicodeCharacter{0141}{\L}
+  \DeclareUnicodeCharacter{0142}{\l}
+  \DeclareUnicodeCharacter{0143}{\'N}
+  \DeclareUnicodeCharacter{0144}{\'n}
+  \DeclareUnicodeCharacter{0147}{\v{N}}
+  \DeclareUnicodeCharacter{0148}{\v{n}}
+  \DeclareUnicodeCharacter{014C}{\=O}
+  \DeclareUnicodeCharacter{014D}{\=o}
+  \DeclareUnicodeCharacter{014E}{\u{O}}
+  \DeclareUnicodeCharacter{014F}{\u{o}}
+
+  \DeclareUnicodeCharacter{0150}{\H{O}}
+  \DeclareUnicodeCharacter{0151}{\H{o}}
+  \DeclareUnicodeCharacter{0152}{\OE}
+  \DeclareUnicodeCharacter{0153}{\oe}
+  \DeclareUnicodeCharacter{0154}{\'R}
+  \DeclareUnicodeCharacter{0155}{\'r}
+  \DeclareUnicodeCharacter{0158}{\v{R}}
+  \DeclareUnicodeCharacter{0159}{\v{r}}
+  \DeclareUnicodeCharacter{015A}{\'S}
+  \DeclareUnicodeCharacter{015B}{\'s}
+  \DeclareUnicodeCharacter{015C}{\^S}
+  \DeclareUnicodeCharacter{015D}{\^s}
+  \DeclareUnicodeCharacter{015E}{\cedilla{S}}
+  \DeclareUnicodeCharacter{015F}{\cedilla{s}}
+
+  \DeclareUnicodeCharacter{0160}{\v{S}}
+  \DeclareUnicodeCharacter{0161}{\v{s}}
+  \DeclareUnicodeCharacter{0162}{\cedilla{t}}
+  \DeclareUnicodeCharacter{0163}{\cedilla{T}}
+  \DeclareUnicodeCharacter{0164}{\v{T}}
+
+  \DeclareUnicodeCharacter{0168}{\~U}
+  \DeclareUnicodeCharacter{0169}{\~u}
+  \DeclareUnicodeCharacter{016A}{\=U}
+  \DeclareUnicodeCharacter{016B}{\=u}
+  \DeclareUnicodeCharacter{016C}{\u{U}}
+  \DeclareUnicodeCharacter{016D}{\u{u}}
+  \DeclareUnicodeCharacter{016E}{\ringaccent{U}}
+  \DeclareUnicodeCharacter{016F}{\ringaccent{u}}
+
+  \DeclareUnicodeCharacter{0170}{\H{U}}
+  \DeclareUnicodeCharacter{0171}{\H{u}}
+  \DeclareUnicodeCharacter{0174}{\^W}
+  \DeclareUnicodeCharacter{0175}{\^w}
+  \DeclareUnicodeCharacter{0176}{\^Y}
+  \DeclareUnicodeCharacter{0177}{\^y}
+  \DeclareUnicodeCharacter{0178}{\"Y}
+  \DeclareUnicodeCharacter{0179}{\'Z}
+  \DeclareUnicodeCharacter{017A}{\'z}
+  \DeclareUnicodeCharacter{017B}{\dotaccent{Z}}
+  \DeclareUnicodeCharacter{017C}{\dotaccent{z}}
+  \DeclareUnicodeCharacter{017D}{\v{Z}}
+  \DeclareUnicodeCharacter{017E}{\v{z}}
+
+  \DeclareUnicodeCharacter{01C4}{D\v{Z}}
+  \DeclareUnicodeCharacter{01C5}{D\v{z}}
+  \DeclareUnicodeCharacter{01C6}{d\v{z}}
+  \DeclareUnicodeCharacter{01C7}{LJ}
+  \DeclareUnicodeCharacter{01C8}{Lj}
+  \DeclareUnicodeCharacter{01C9}{lj}
+  \DeclareUnicodeCharacter{01CA}{NJ}
+  \DeclareUnicodeCharacter{01CB}{Nj}
+  \DeclareUnicodeCharacter{01CC}{nj}
+  \DeclareUnicodeCharacter{01CD}{\v{A}}
+  \DeclareUnicodeCharacter{01CE}{\v{a}}
+  \DeclareUnicodeCharacter{01CF}{\v{I}}
+
+  \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}}
+  \DeclareUnicodeCharacter{01D1}{\v{O}}
+  \DeclareUnicodeCharacter{01D2}{\v{o}}
+  \DeclareUnicodeCharacter{01D3}{\v{U}}
+  \DeclareUnicodeCharacter{01D4}{\v{u}}
+
+  \DeclareUnicodeCharacter{01E2}{\={\AE}}
+  \DeclareUnicodeCharacter{01E3}{\={\ae}}
+  \DeclareUnicodeCharacter{01E6}{\v{G}}
+  \DeclareUnicodeCharacter{01E7}{\v{g}}
+  \DeclareUnicodeCharacter{01E8}{\v{K}}
+  \DeclareUnicodeCharacter{01E9}{\v{k}}
+
+  \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}}
+  \DeclareUnicodeCharacter{01F1}{DZ}
+  \DeclareUnicodeCharacter{01F2}{Dz}
+  \DeclareUnicodeCharacter{01F3}{dz}
+  \DeclareUnicodeCharacter{01F4}{\'G}
+  \DeclareUnicodeCharacter{01F5}{\'g}
+  \DeclareUnicodeCharacter{01F8}{\`N}
+  \DeclareUnicodeCharacter{01F9}{\`n}
+  \DeclareUnicodeCharacter{01FC}{\'{\AE}}
+  \DeclareUnicodeCharacter{01FD}{\'{\ae}}
+  \DeclareUnicodeCharacter{01FE}{\'{\O}}
+  \DeclareUnicodeCharacter{01FF}{\'{\o}}
+
+  \DeclareUnicodeCharacter{021E}{\v{H}}
+  \DeclareUnicodeCharacter{021F}{\v{h}}
+
+  \DeclareUnicodeCharacter{0226}{\dotaccent{A}}
+  \DeclareUnicodeCharacter{0227}{\dotaccent{a}}
+  \DeclareUnicodeCharacter{0228}{\cedilla{E}}
+  \DeclareUnicodeCharacter{0229}{\cedilla{e}}
+  \DeclareUnicodeCharacter{022E}{\dotaccent{O}}
+  \DeclareUnicodeCharacter{022F}{\dotaccent{o}}
+
+  \DeclareUnicodeCharacter{0232}{\=Y}
+  \DeclareUnicodeCharacter{0233}{\=y}
+  \DeclareUnicodeCharacter{0237}{\dotless{j}}
+
+  \DeclareUnicodeCharacter{02DB}{\ogonek{ }}
+
+  \DeclareUnicodeCharacter{1E02}{\dotaccent{B}}
+  \DeclareUnicodeCharacter{1E03}{\dotaccent{b}}
+  \DeclareUnicodeCharacter{1E04}{\udotaccent{B}}
+  \DeclareUnicodeCharacter{1E05}{\udotaccent{b}}
+  \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}}
+  \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}}
+  \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}}
+  \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}}
+  \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}}
+  \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}}
+  \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}}
+  \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}}
+
+  \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}}
+  \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}}
+
+  \DeclareUnicodeCharacter{1E20}{\=G}
+  \DeclareUnicodeCharacter{1E21}{\=g}
+  \DeclareUnicodeCharacter{1E22}{\dotaccent{H}}
+  \DeclareUnicodeCharacter{1E23}{\dotaccent{h}}
+  \DeclareUnicodeCharacter{1E24}{\udotaccent{H}}
+  \DeclareUnicodeCharacter{1E25}{\udotaccent{h}}
+  \DeclareUnicodeCharacter{1E26}{\"H}
+  \DeclareUnicodeCharacter{1E27}{\"h}
+
+  \DeclareUnicodeCharacter{1E30}{\'K}
+  \DeclareUnicodeCharacter{1E31}{\'k}
+  \DeclareUnicodeCharacter{1E32}{\udotaccent{K}}
+  \DeclareUnicodeCharacter{1E33}{\udotaccent{k}}
+  \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}}
+  \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}}
+  \DeclareUnicodeCharacter{1E36}{\udotaccent{L}}
+  \DeclareUnicodeCharacter{1E37}{\udotaccent{l}}
+  \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}}
+  \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}}
+  \DeclareUnicodeCharacter{1E3E}{\'M}
+  \DeclareUnicodeCharacter{1E3F}{\'m}
+
+  \DeclareUnicodeCharacter{1E40}{\dotaccent{M}}
+  \DeclareUnicodeCharacter{1E41}{\dotaccent{m}}
+  \DeclareUnicodeCharacter{1E42}{\udotaccent{M}}
+  \DeclareUnicodeCharacter{1E43}{\udotaccent{m}}
+  \DeclareUnicodeCharacter{1E44}{\dotaccent{N}}
+  \DeclareUnicodeCharacter{1E45}{\dotaccent{n}}
+  \DeclareUnicodeCharacter{1E46}{\udotaccent{N}}
+  \DeclareUnicodeCharacter{1E47}{\udotaccent{n}}
+  \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}}
+  \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}}
+
+  \DeclareUnicodeCharacter{1E54}{\'P}
+  \DeclareUnicodeCharacter{1E55}{\'p}
+  \DeclareUnicodeCharacter{1E56}{\dotaccent{P}}
+  \DeclareUnicodeCharacter{1E57}{\dotaccent{p}}
+  \DeclareUnicodeCharacter{1E58}{\dotaccent{R}}
+  \DeclareUnicodeCharacter{1E59}{\dotaccent{r}}
+  \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}}
+  \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}}
+  \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}}
+  \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}}
+
+  \DeclareUnicodeCharacter{1E60}{\dotaccent{S}}
+  \DeclareUnicodeCharacter{1E61}{\dotaccent{s}}
+  \DeclareUnicodeCharacter{1E62}{\udotaccent{S}}
+  \DeclareUnicodeCharacter{1E63}{\udotaccent{s}}
+  \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}}
+  \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}}
+  \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}}
+  \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}}
+  \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}}
+  \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}}
+
+  \DeclareUnicodeCharacter{1E7C}{\~V}
+  \DeclareUnicodeCharacter{1E7D}{\~v}
+  \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}}
+  \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}}
+
+  \DeclareUnicodeCharacter{1E80}{\`W}
+  \DeclareUnicodeCharacter{1E81}{\`w}
+  \DeclareUnicodeCharacter{1E82}{\'W}
+  \DeclareUnicodeCharacter{1E83}{\'w}
+  \DeclareUnicodeCharacter{1E84}{\"W}
+  \DeclareUnicodeCharacter{1E85}{\"w}
+  \DeclareUnicodeCharacter{1E86}{\dotaccent{W}}
+  \DeclareUnicodeCharacter{1E87}{\dotaccent{w}}
+  \DeclareUnicodeCharacter{1E88}{\udotaccent{W}}
+  \DeclareUnicodeCharacter{1E89}{\udotaccent{w}}
+  \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}}
+  \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}}
+  \DeclareUnicodeCharacter{1E8C}{\"X}
+  \DeclareUnicodeCharacter{1E8D}{\"x}
+  \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}}
+  \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}}
+
+  \DeclareUnicodeCharacter{1E90}{\^Z}
+  \DeclareUnicodeCharacter{1E91}{\^z}
+  \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}}
+  \DeclareUnicodeCharacter{1E93}{\udotaccent{z}}
+  \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}}
+  \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}}
+  \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}}
+  \DeclareUnicodeCharacter{1E97}{\"t}
+  \DeclareUnicodeCharacter{1E98}{\ringaccent{w}}
+  \DeclareUnicodeCharacter{1E99}{\ringaccent{y}}
+
+  \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}}
+  \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}}
+
+  \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}}
+  \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}}
+  \DeclareUnicodeCharacter{1EBC}{\~E}
+  \DeclareUnicodeCharacter{1EBD}{\~e}
+
+  \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}}
+  \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}}
+  \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}}
+  \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}}
+
+  \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}}
+  \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}}
+
+  \DeclareUnicodeCharacter{1EF2}{\`Y}
+  \DeclareUnicodeCharacter{1EF3}{\`y}
+  \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}}
+
+  \DeclareUnicodeCharacter{1EF8}{\~Y}
+  \DeclareUnicodeCharacter{1EF9}{\~y}
+
+  \DeclareUnicodeCharacter{2013}{--}
+  \DeclareUnicodeCharacter{2014}{---}
+  \DeclareUnicodeCharacter{2018}{\quoteleft}
+  \DeclareUnicodeCharacter{2019}{\quoteright}
+  \DeclareUnicodeCharacter{201A}{\quotesinglbase}
+  \DeclareUnicodeCharacter{201C}{\quotedblleft}
+  \DeclareUnicodeCharacter{201D}{\quotedblright}
+  \DeclareUnicodeCharacter{201E}{\quotedblbase}
+  \DeclareUnicodeCharacter{2022}{\bullet}
+  \DeclareUnicodeCharacter{2026}{\dots}
+  \DeclareUnicodeCharacter{2039}{\guilsinglleft}
+  \DeclareUnicodeCharacter{203A}{\guilsinglright}
+  \DeclareUnicodeCharacter{20AC}{\euro}
+
+  \DeclareUnicodeCharacter{2192}{\expansion}
+  \DeclareUnicodeCharacter{21D2}{\result}
+
+  \DeclareUnicodeCharacter{2212}{\minus}
+  \DeclareUnicodeCharacter{2217}{\point}
+  \DeclareUnicodeCharacter{2261}{\equiv}
+}% end of \utfeightchardefs
+
+
+% US-ASCII character definitions.
+\def\asciichardefs{% nothing need be done
+   \relax
+}
+
+% Make non-ASCII characters printable again for compatibility with
+% existing Texinfo documents that may use them, even without declaring a
+% document encoding.
+%
+\setnonasciicharscatcode \other
+
+
+\message{formatting,}
+
+\newdimen\defaultparindent \defaultparindent = 15pt
+
+\chapheadingskip = 15pt plus 4pt minus 2pt
+\secheadingskip = 12pt plus 3pt minus 2pt
+\subsecheadingskip = 9pt plus 2pt minus 2pt
+
+% Prevent underfull vbox error messages.
+\vbadness = 10000
+
+% Don't be very finicky about underfull hboxes, either.
+\hbadness = 6666
+
+% Following George Bush, get rid of widows and orphans.
+\widowpenalty=10000
+\clubpenalty=10000
+
+% Use TeX 3.0's \emergencystretch to help line breaking, but if we're
+% using an old version of TeX, don't do anything.  We want the amount of
+% stretch added to depend on the line length, hence the dependence on
+% \hsize.  We call this whenever the paper size is set.
+%
+\def\setemergencystretch{%
+  \ifx\emergencystretch\thisisundefined
+    % Allow us to assign to \emergencystretch anyway.
+    \def\emergencystretch{\dimen0}%
+  \else
+    \emergencystretch = .15\hsize
+  \fi
+}
+
+% Parameters in order: 1) textheight; 2) textwidth;
+% 3) voffset; 4) hoffset; 5) binding offset; 6) topskip;
+% 7) physical page height; 8) physical page width.
+%
+% We also call \setleading{\textleading}, so the caller should define
+% \textleading.  The caller should also set \parskip.
+%
+\def\internalpagesizes#1#2#3#4#5#6#7#8{%
+  \voffset = #3\relax
+  \topskip = #6\relax
+  \splittopskip = \topskip
+  %
+  \vsize = #1\relax
+  \advance\vsize by \topskip
+  \outervsize = \vsize
+  \advance\outervsize by 2\topandbottommargin
+  \pageheight = \vsize
+  %
+  \hsize = #2\relax
+  \outerhsize = \hsize
+  \advance\outerhsize by 0.5in
+  \pagewidth = \hsize
+  %
+  \normaloffset = #4\relax
+  \bindingoffset = #5\relax
+  %
+  \ifpdf
+    \pdfpageheight #7\relax
+    \pdfpagewidth #8\relax
+    % if we don't reset these, they will remain at "1 true in" of
+    % whatever layout pdftex was dumped with.
+    \pdfhorigin = 1 true in
+    \pdfvorigin = 1 true in
+  \fi
+  %
+  \setleading{\textleading}
+  %
+  \parindent = \defaultparindent
+  \setemergencystretch
+}
+
+% @letterpaper (the default).
+\def\letterpaper{{\globaldefs = 1
+  \parskip = 3pt plus 2pt minus 1pt
+  \textleading = 13.2pt
+  %
+  % If page is nothing but text, make it come out even.
+  \internalpagesizes{607.2pt}{6in}% that's 46 lines
+                    {\voffset}{.25in}%
+                    {\bindingoffset}{36pt}%
+                    {11in}{8.5in}%
+}}
+
+% Use @smallbook to reset parameters for 7x9.25 trim size.
+\def\smallbook{{\globaldefs = 1
+  \parskip = 2pt plus 1pt
+  \textleading = 12pt
+  %
+  \internalpagesizes{7.5in}{5in}%
+                    {-.2in}{0in}%
+                    {\bindingoffset}{16pt}%
+                    {9.25in}{7in}%
+  %
+  \lispnarrowing = 0.3in
+  \tolerance = 700
+  \hfuzz = 1pt
+  \contentsrightmargin = 0pt
+  \defbodyindent = .5cm
+}}
+
+% Use @smallerbook to reset parameters for 6x9 trim size.
+% (Just testing, parameters still in flux.)
+\def\smallerbook{{\globaldefs = 1
+  \parskip = 1.5pt plus 1pt
+  \textleading = 12pt
+  %
+  \internalpagesizes{7.4in}{4.8in}%
+                    {-.2in}{-.4in}%
+                    {0pt}{14pt}%
+                    {9in}{6in}%
+  %
+  \lispnarrowing = 0.25in
+  \tolerance = 700
+  \hfuzz = 1pt
+  \contentsrightmargin = 0pt
+  \defbodyindent = .4cm
+}}
+
+% Use @afourpaper to print on European A4 paper.
+\def\afourpaper{{\globaldefs = 1
+  \parskip = 3pt plus 2pt minus 1pt
+  \textleading = 13.2pt
+  %
+  % Double-side printing via postscript on Laserjet 4050
+  % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm.
+  % To change the settings for a different printer or situation, adjust
+  % \normaloffset until the front-side and back-side texts align.  Then
+  % do the same for \bindingoffset.  You can set these for testing in
+  % your texinfo source file like this:
+  % @tex
+  % \global\normaloffset = -6mm
+  % \global\bindingoffset = 10mm
+  % @end tex
+  \internalpagesizes{673.2pt}{160mm}% that's 51 lines
+                    {\voffset}{\hoffset}%
+                    {\bindingoffset}{44pt}%
+                    {297mm}{210mm}%
+  %
+  \tolerance = 700
+  \hfuzz = 1pt
+  \contentsrightmargin = 0pt
+  \defbodyindent = 5mm
+}}
+
+% Use @afivepaper to print on European A5 paper.
+% From romildo@urano.iceb.ufop.br, 2 July 2000.
+% He also recommends making @example and @lisp be small.
+\def\afivepaper{{\globaldefs = 1
+  \parskip = 2pt plus 1pt minus 0.1pt
+  \textleading = 12.5pt
+  %
+  \internalpagesizes{160mm}{120mm}%
+                    {\voffset}{\hoffset}%
+                    {\bindingoffset}{8pt}%
+                    {210mm}{148mm}%
+  %
+  \lispnarrowing = 0.2in
+  \tolerance = 800
+  \hfuzz = 1.2pt
+  \contentsrightmargin = 0pt
+  \defbodyindent = 2mm
+  \tableindent = 12mm
+}}
+
+% A specific text layout, 24x15cm overall, intended for A4 paper.
+\def\afourlatex{{\globaldefs = 1
+  \afourpaper
+  \internalpagesizes{237mm}{150mm}%
+                    {\voffset}{4.6mm}%
+                    {\bindingoffset}{7mm}%
+                    {297mm}{210mm}%
+  %
+  % Must explicitly reset to 0 because we call \afourpaper.
+  \globaldefs = 0
+}}
+
+% Use @afourwide to print on A4 paper in landscape format.
+\def\afourwide{{\globaldefs = 1
+  \afourpaper
+  \internalpagesizes{241mm}{165mm}%
+                    {\voffset}{-2.95mm}%
+                    {\bindingoffset}{7mm}%
+                    {297mm}{210mm}%
+  \globaldefs = 0
+}}
+
+% @pagesizes TEXTHEIGHT[,TEXTWIDTH]
+% Perhaps we should allow setting the margins, \topskip, \parskip,
+% and/or leading, also. Or perhaps we should compute them somehow.
+%
+\parseargdef\pagesizes{\pagesizesyyy #1,,\finish}
+\def\pagesizesyyy#1,#2,#3\finish{{%
+  \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi
+  \globaldefs = 1
+  %
+  \parskip = 3pt plus 2pt minus 1pt
+  \setleading{\textleading}%
+  %
+  \dimen0 = #1\relax
+  \advance\dimen0 by \voffset
+  %
+  \dimen2 = \hsize
+  \advance\dimen2 by \normaloffset
+  %
+  \internalpagesizes{#1}{\hsize}%
+                    {\voffset}{\normaloffset}%
+                    {\bindingoffset}{44pt}%
+                    {\dimen0}{\dimen2}%
+}}
+
+% Set default to letter.
+%
+\letterpaper
+
+
+\message{and turning on texinfo input format.}
+
+\def^^L{\par} % remove \outer, so ^L can appear in an @comment
+
+% DEL is a comment character, in case @c does not suffice.
+\catcode`\^^? = 14
+
+% Define macros to output various characters with catcode for normal text.
+\catcode`\"=\other \def\normaldoublequote{"}
+\catcode`\$=\other \def\normaldollar{$}%$ font-lock fix
+\catcode`\+=\other \def\normalplus{+}
+\catcode`\<=\other \def\normalless{<}
+\catcode`\>=\other \def\normalgreater{>}
+\catcode`\^=\other \def\normalcaret{^}
+\catcode`\_=\other \def\normalunderscore{_}
+\catcode`\|=\other \def\normalverticalbar{|}
+\catcode`\~=\other \def\normaltilde{~}
+
+% This macro is used to make a character print one way in \tt
+% (where it can probably be output as-is), and another way in other fonts,
+% where something hairier probably needs to be done.
+%
+% #1 is what to print if we are indeed using \tt; #2 is what to print
+% otherwise.  Since all the Computer Modern typewriter fonts have zero
+% interword stretch (and shrink), and it is reasonable to expect all
+% typewriter fonts to have this, we can check that font parameter.
+%
+\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi}
+
+% Same as above, but check for italic font.  Actually this also catches
+% non-italic slanted fonts since it is impossible to distinguish them from
+% italic fonts.  But since this is only used by $ and it uses \sl anyway
+% this is not a problem.
+\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi}
+
+% Turn off all special characters except @
+% (and those which the user can use as if they were ordinary).
+% Most of these we simply print from the \tt font, but for some, we can
+% use math or other variants that look better in normal text.
+
+\catcode`\"=\active
+\def\activedoublequote{{\tt\char34}}
+\let"=\activedoublequote
+\catcode`\~=\active
+\def~{{\tt\char126}}
+\chardef\hat=`\^
+\catcode`\^=\active
+\def^{{\tt \hat}}
+
+\catcode`\_=\active
+\def_{\ifusingtt\normalunderscore\_}
+\let\realunder=_
+% Subroutine for the previous macro.
+\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }
+
+\catcode`\|=\active
+\def|{{\tt\char124}}
+\chardef \less=`\<
+\catcode`\<=\active
+\def<{{\tt \less}}
+\chardef \gtr=`\>
+\catcode`\>=\active
+\def>{{\tt \gtr}}
+\catcode`\+=\active
+\def+{{\tt \char 43}}
+\catcode`\$=\active
+\def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
+
+% If a .fmt file is being used, characters that might appear in a file
+% name cannot be active until we have parsed the command line.
+% So turn them off again, and have \everyjob (or @setfilename) turn them on.
+% \otherifyactive is called near the end of this file.
+\def\otherifyactive{\catcode`+=\other \catcode`\_=\other}
+
+% Used sometimes to turn off (effectively) the active characters even after
+% parsing them.
+\def\turnoffactive{%
+  \normalturnoffactive
+  \otherbackslash
+}
+
+\catcode`\@=0
+
+% \backslashcurfont outputs one backslash character in current font,
+% as in \char`\\.
+\global\chardef\backslashcurfont=`\\
+\global\let\rawbackslashxx=\backslashcurfont  % let existing .??s files work
+
+% \realbackslash is an actual character `\' with catcode other, and
+% \doublebackslash is two of them (for the pdf outlines).
+{\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}}
+
+% In texinfo, backslash is an active character; it prints the backslash
+% in fixed width font.
+\catcode`\\=\active
+@def@normalbackslash{{@tt@backslashcurfont}}
+% On startup, @fixbackslash assigns:
+%  @let \ = @normalbackslash
+
+% \rawbackslash defines an active \ to do \backslashcurfont.
+% \otherbackslash defines an active \ to be a literal `\' character with
+% catcode other.
+@gdef@rawbackslash{@let\=@backslashcurfont}
+@gdef@otherbackslash{@let\=@realbackslash}
+
+% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
+% the literal character `\'.
+%
+@def@normalturnoffactive{%
+  @let"=@normaldoublequote
+  @let$=@normaldollar %$ font-lock fix
+  @let+=@normalplus
+  @let<=@normalless
+  @let>=@normalgreater
+  @let\=@normalbackslash
+  @let^=@normalcaret
+  @let_=@normalunderscore
+  @let|=@normalverticalbar
+  @let~=@normaltilde
+  @markupsetuplqdefault
+  @markupsetuprqdefault
+  @unsepspaces
+}
+
+% Make _ and + \other characters, temporarily.
+% This is canceled by @fixbackslash.
+@otherifyactive
+
+% If a .fmt file is being used, we don't want the `\input texinfo' to show up.
+% That is what \eatinput is for; after that, the `\' should revert to printing
+% a backslash.
+%
+@gdef@eatinput input texinfo{@fixbackslash}
+@global@let\ = @eatinput
+
+% On the other hand, perhaps the file did not have a `\input texinfo'. Then
+% the first `\' in the file would cause an error. This macro tries to fix
+% that, assuming it is called before the first `\' could plausibly occur.
+% Also turn back on active characters that might appear in the input
+% file name, in case not using a pre-dumped format.
+%
+@gdef@fixbackslash{%
+  @ifx\@eatinput @let\ = @normalbackslash @fi
+  @catcode`+=@active
+  @catcode`@_=@active
+}
+
+% Say @foo, not \foo, in error messages.
+@escapechar = `@@
+
+% These (along with & and #) are made active for url-breaking, so need
+% active definitions as the normal characters.
+@def@normaldot{.}
+@def@normalquest{?}
+@def@normalslash{/}
+
+% These look ok in all fonts, so just make them not special.
+@catcode`@& = @other @def@normalamp{&}
+@catcode`@# = @other @def@normalhash{#}
+@catcode`@% = @other @def@normalpercent{%}
+
+@c Finally, make ` and ' active, so that txicodequoteundirected and
+@c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}.  If we
+@c don't make ` and ' active, @code will not get them as active chars.
+@c Do this last of all since we use ` in the previous @catcode assignments.
+@catcode`@'=@active
+@catcode`@`=@active
+@markupsetuplqdefault
+@markupsetuprqdefault
+
+@c Local variables:
+@c eval: (add-hook 'write-file-hooks 'time-stamp)
+@c page-delimiter: "^\\\\message"
+@c time-stamp-start: "def\\\\texinfoversion{"
+@c time-stamp-format: "%:y-%02m-%02d.%02H"
+@c time-stamp-end: "}"
+@c End:
+
+@c vim:sw=2:
+
+@ignore
+   arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115
+@end ignore
diff --git a/build-aux/update-copyright b/build-aux/update-copyright
new file mode 100755 (executable)
index 0000000..ef0b1ce
--- /dev/null
@@ -0,0 +1,267 @@
+eval '(exit $?0)' && eval 'exec perl -wS -0777 -pi "$0" ${1+"$@"}'
+  & eval 'exec perl -wS -0777 -pi "$0" $argv:q'
+    if 0;
+# Update an FSF copyright year list to include the current year.
+
+my $VERSION = '2011-01-02.20:59'; # UTC
+
+# Copyright (C) 2009-2011 Free Software Foundation, 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; either version 3, 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 <http://www.gnu.org/licenses/>.
+
+# Written by Jim Meyering and Joel E. Denny
+
+# The arguments to this script should be names of files that contain
+# copyright statements to be updated.  The copyright holder's name
+# defaults to "Free Softward Foundation, Inc." but may be changed to
+# any other name by using the "UPDATE_COPYRIGHT_HOLDER" environment
+# variable.
+#
+# For example, you might wish to use the update-copyright target rule
+# in maint.mk from gnulib's maintainer-makefile module.
+#
+# Iff a copyright statement is recognized in a file and the final
+# year is not the current year, then the statement is updated for the
+# new year and it is reformatted to:
+#
+#   1. Fit within 72 columns.
+#   2. Convert 2-digit years to 4-digit years by prepending "19".
+#   3. Expand copyright year intervals.  (See "Environment variables"
+#      below.)
+#
+# A warning is printed for every file for which no copyright
+# statement is recognized.
+#
+# Each file's copyright statement must be formated correctly in
+# order to be recognized.  For example, each of these is fine:
+#
+#   Copyright @copyright{} 1990-2005, 2007-2009 Free Software
+#   Foundation, Inc.
+#
+#   # Copyright (C) 1990-2005, 2007-2009 Free Software
+#   # Foundation, Inc.
+#
+#   /*
+#    * Copyright &copy; 90,2005,2007-2009
+#    * Free Software Foundation, Inc.
+#    */
+#
+# However, the following format is not recognized because the line
+# prefix changes after the first line:
+#
+#   ## Copyright (C) 1990-2005, 2007-2009 Free Software
+#   #  Foundation, Inc.
+#
+# However, any correctly formatted copyright statement following
+# a non-matching copyright statements would be recognized.
+#
+# The exact conditions that a file's copyright statement must meet
+# to be recognized are:
+#
+#   1. It is the first copyright statement that meets all of the
+#      following conditions.  Subsequent copyright statements are
+#      ignored.
+#   2. Its format is "Copyright (C)", then a list of copyright years,
+#      and then the name of the copyright holder.
+#   3. The "(C)" takes one of the following forms or is omitted
+#      entirely:
+#
+#        A. (C)
+#        B. (c)
+#        C. @copyright{}
+#        D. &copy;
+#
+#   4. The "Copyright" appears at the beginning of a line, except that it
+#      may be prefixed by any sequence (e.g., a comment) of no more than
+#      5 characters -- including white space.
+#   5. Iff such a prefix is present, the same prefix appears at the
+#      beginning of each remaining line within the FSF copyright
+#      statement.  There is one exception in order to support C-style
+#      comments: if the first line's prefix contains nothing but
+#      whitespace surrounding a "/*", then the prefix for all subsequent
+#      lines is the same as the first line's prefix except with each of
+#      "/" and possibly "*" replaced by a " ".  The replacement of "*"
+#      by " " is consistent throughout all subsequent lines.
+#   6. Blank lines, even if preceded by the prefix, do not appear
+#      within the FSF copyright statement.
+#   7. Each copyright year is 2 or 4 digits, and years are separated by
+#      commas or dashes.  Whitespace may appear after commas.
+#
+# Environment variables:
+#
+#   1. If UPDATE_COPYRIGHT_FORCE=1, a recognized FSF copyright statement
+#      is reformatted even if it does not need updating for the new
+#      year.  If unset or set to 0, only updated FSF copyright
+#      statements are reformatted.
+#   2. If UPDATE_COPYRIGHT_USE_INTERVALS=1, every series of consecutive
+#      copyright years (such as 90, 1991, 1992-2007, 2008) in a
+#      reformatted FSF copyright statement is collapsed to a single
+#      interval (such as 1990-2008).  If unset or set to 0, all existing
+#      copyright year intervals in a reformatted FSF copyright statement
+#      are expanded instead.
+#   3. For testing purposes, you can set the assumed current year in
+#      UPDATE_COPYRIGHT_YEAR.
+#   4. The default maximum line length for a copyright line is 72.
+#      Set UPDATE_COPYRIGHT_MAX_LINE_LENGTH to use a different length.
+#   5. Set UPDATE_COPYRIGHT_HOLDER if the copyright holder is other
+#      than "Free Software Foundation, Inc.".
+
+use strict;
+use warnings;
+
+my $copyright_re = 'Copyright';
+my $circle_c_re = '(?:\([cC]\)|@copyright{}|&copy;)';
+my $holder = $ENV{UPDATE_COPYRIGHT_HOLDER};
+$holder ||= 'Free Software Foundation, Inc.';
+my $prefix_max = 5;
+my $margin = $ENV{UPDATE_COPYRIGHT_MAX_LINE_LENGTH};
+!$margin || $margin !~ m/^\d+$/
+  and $margin = 72;
+
+my $tab_width = 8;
+
+my $this_year = $ENV{UPDATE_COPYRIGHT_YEAR};
+if (!$this_year || $this_year !~ m/^\d{4}$/)
+  {
+    my ($sec, $min, $hour, $mday, $month, $year) = localtime (time ());
+    $this_year = $year + 1900;
+  }
+
+# Unless the file consistently uses "\r\n" as the EOL, use "\n" instead.
+my $eol = /(?:^|[^\r])\n/ ? "\n" : "\r\n";
+
+my $leading;
+my $prefix;
+my $ws_re;
+my $stmt_re;
+while (/(^|\n)(.{0,$prefix_max})$copyright_re/g)
+  {
+    $leading = "$1$2";
+    $prefix = $2;
+    if ($prefix =~ /^(\s*\/)\*(\s*)$/)
+      {
+        $prefix =~ s,/, ,;
+        my $prefix_ws = $prefix;
+        $prefix_ws =~ s/\*/ /; # Only whitespace.
+        if (/\G(?:[^*\n]|\*[^\/\n])*\*?\n$prefix_ws/)
+          {
+            $prefix = $prefix_ws;
+          }
+      }
+    $ws_re = '[ \t\r\f]'; # \s without \n
+    $ws_re =
+      "(?:$ws_re*(?:$ws_re|\\n" . quotemeta($prefix) . ")$ws_re*)";
+    my $holder_re = $holder;
+    $holder_re =~ s/\s/$ws_re/g;
+    my $stmt_remainder_re =
+      "(?:$ws_re$circle_c_re)?"
+      . "$ws_re(?:(?:\\d\\d)?\\d\\d(?:,$ws_re?|-))*"
+      . "((?:\\d\\d)?\\d\\d)$ws_re$holder_re";
+    if (/\G$stmt_remainder_re/)
+      {
+        $stmt_re =
+          quotemeta($leading) . "($copyright_re$stmt_remainder_re)";
+        last;
+      }
+  }
+if (defined $stmt_re)
+  {
+    /$stmt_re/ or die; # Should never die.
+    my $stmt = $1;
+    my $final_year_orig = $2;
+
+    # Handle two-digit year numbers like "98" and "99".
+    my $final_year = $final_year_orig;
+    $final_year <= 99
+      and $final_year += 1900;
+
+    if ($final_year != $this_year)
+      {
+        # Update the year.
+        $stmt =~ s/$final_year_orig/$final_year, $this_year/;
+      }
+    if ($final_year != $this_year || $ENV{'UPDATE_COPYRIGHT_FORCE'})
+      {
+        # Normalize all whitespace including newline-prefix sequences.
+        $stmt =~ s/$ws_re/ /g;
+
+        # Put spaces after commas.
+        $stmt =~ s/, ?/, /g;
+
+        # Convert 2-digit to 4-digit years.
+        $stmt =~ s/(\b\d\d\b)/19$1/g;
+
+        # Make the use of intervals consistent.
+        if (!$ENV{UPDATE_COPYRIGHT_USE_INTERVALS})
+          {
+            $stmt =~ s/(\d{4})-(\d{4})/join(', ', $1..$2)/eg;
+          }
+        else
+          {
+            $stmt =~
+              s/
+                (\d{4})
+                (?:
+                  (,\ |-)
+                  ((??{
+                    if    ($2 eq '-') { '\d{4}'; }
+                    elsif (!$3)       { $1 + 1;  }
+                    else              { $3 + 1;  }
+                  }))
+                )+
+              /$1-$3/gx;
+          }
+
+        # Format within margin.
+        my $stmt_wrapped;
+        my $text_margin = $margin - length($prefix);
+        if ($prefix =~ /^(\t+)/)
+          {
+            $text_margin -= length($1) * ($tab_width - 1);
+          }
+        while (length $stmt)
+          {
+            if (($stmt =~ s/^(.{1,$text_margin})(?: |$)//)
+                || ($stmt =~ s/^([\S]+)(?: |$)//))
+              {
+                my $line = $1;
+                $stmt_wrapped .= $stmt_wrapped ? "$eol$prefix" : $leading;
+                $stmt_wrapped .= $line;
+              }
+            else
+              {
+                # Should be unreachable, but we don't want an infinite
+                # loop if it can be reached.
+                die;
+              }
+          }
+
+        # Replace the old copyright statement.
+        s/$stmt_re/$stmt_wrapped/;
+      }
+  }
+else
+  {
+    print STDERR "$ARGV: warning: copyright statement not found\n";
+  }
+
+# Local variables:
+# mode: perl
+# indent-tabs-mode: nil
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "my $VERSION = '"
+# time-stamp-format: "%:y-%02m-%02d.%02H:%02M"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "'; # UTC"
+# End:
diff --git a/build-aux/useless-if-before-free b/build-aux/useless-if-before-free
new file mode 100755 (executable)
index 0000000..b8f5a26
--- /dev/null
@@ -0,0 +1,207 @@
+eval '(exit $?0)' && eval 'exec perl -wST "$0" ${1+"$@"}'
+  & eval 'exec perl -wST "$0" $argv:q'
+    if 0;
+# Detect instances of "if (p) free (p);".
+# Likewise "if (p != 0)", "if (0 != p)", or with NULL; and with braces.
+
+my $VERSION = '2011-04-20 13:43'; # UTC
+# The definition above must lie within the first 8 lines in order
+# for the Emacs time-stamp write hook (at end) to update it.
+# If you change this file with Emacs, please let the write hook
+# do its job.  Otherwise, update this string manually.
+
+# Copyright (C) 2008-2011 Free Software Foundation, 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, 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 <http://www.gnu.org/licenses/>.
+
+# Written by Jim Meyering
+
+use strict;
+use warnings;
+use Getopt::Long;
+
+(my $ME = $0) =~ s|.*/||;
+
+# use File::Coda; # http://meyering.net/code/Coda/
+END {
+  defined fileno STDOUT or return;
+  close STDOUT and return;
+  warn "$ME: failed to close standard output: $!\n";
+  $? ||= 1;
+}
+
+sub usage ($)
+{
+  my ($exit_code) = @_;
+  my $STREAM = ($exit_code == 0 ? *STDOUT : *STDERR);
+  if ($exit_code != 0)
+    {
+      print $STREAM "Try `$ME --help' for more information.\n";
+    }
+  else
+    {
+      print $STREAM <<EOF;
+Usage: $ME [OPTIONS] FILE...
+
+Detect any instance in FILE of a useless "if" test before a free call, e.g.,
+"if (p) free (p);".  Any such test may be safely removed without affecting
+the semantics of the C code in FILE.  Use --name=FOO --name=BAR to also
+detect free-like functions named FOO and BAR.
+
+OPTIONS:
+
+   --list       print only the name of each matching FILE (\\0-terminated)
+   --name=N     add name N to the list of \`free\'-like functions to detect;
+                  may be repeated
+
+   --help       display this help and exit
+   --version    output version information and exit
+
+Exit status:
+
+  0   one or more matches
+  1   no match
+  2   an error
+
+EXAMPLE:
+
+For example, this command prints all removable "if" tests before "free"
+and "kfree" calls in the linux kernel sources:
+
+    git ls-files -z |xargs -0 $ME --name=kfree
+
+EOF
+    }
+  exit $exit_code;
+}
+
+sub is_NULL ($)
+{
+  my ($expr) = @_;
+  return ($expr eq 'NULL' || $expr eq '0');
+}
+
+{
+  sub EXIT_MATCH {0}
+  sub EXIT_NO_MATCH {1}
+  sub EXIT_ERROR {2}
+  my $err = EXIT_NO_MATCH;
+
+  my $list;
+  my @name = qw(free);
+  GetOptions
+    (
+     help => sub { usage 0 },
+     version => sub { print "$ME version $VERSION\n"; exit },
+     list => \$list,
+     'name=s@' => \@name,
+    ) or usage 1;
+
+  # Make sure we have the right number of non-option arguments.
+  # Always tell the user why we fail.
+  @ARGV < 1
+    and (warn "$ME: missing FILE argument\n"), usage EXIT_ERROR;
+
+  my $or = join '|', @name;
+  my $regexp = qr/(?:$or)/;
+
+  # Set the input record separator.
+  # Note: this makes it impractical to print line numbers.
+  $/ = '"';
+
+  my $found_match = 0;
+ FILE:
+  foreach my $file (@ARGV)
+    {
+      open FH, '<', $file
+        or (warn "$ME: can't open `$file' for reading: $!\n"),
+          $err = EXIT_ERROR, next;
+      while (defined (my $line = <FH>))
+        {
+          while ($line =~
+              /\b(if\s*\(\s*([^)]+?)(?:\s*!=\s*([^)]+?))?\s*\)
+              #  1          2                  3
+               (?:   \s*$regexp\s*\((?:\s*\([^)]+\))?\s*([^)]+)\)\s*;|
+                \s*\{\s*$regexp\s*\((?:\s*\([^)]+\))?\s*([^)]+)\)\s*;\s*\}))/sxg)
+            {
+              my $all = $1;
+              my ($lhs, $rhs) = ($2, $3);
+              my ($free_opnd, $braced_free_opnd) = ($4, $5);
+              my $non_NULL;
+              if (!defined $rhs) { $non_NULL = $lhs }
+              elsif (is_NULL $rhs) { $non_NULL = $lhs }
+              elsif (is_NULL $lhs) { $non_NULL = $rhs }
+              else { next }
+
+              # Compare the non-NULL part of the "if" expression and the
+              # free'd expression, without regard to white space.
+              $non_NULL =~ tr/ \t//d;
+              my $e2 = defined $free_opnd ? $free_opnd : $braced_free_opnd;
+              $e2 =~ tr/ \t//d;
+              if ($non_NULL eq $e2)
+                {
+                  $found_match = 1;
+                  $list
+                    and (print "$file\0"), next FILE;
+                  print "$file: $all\n";
+                }
+            }
+        }
+    }
+  continue
+    {
+      close FH;
+    }
+
+  $found_match && $err == EXIT_NO_MATCH
+    and $err = EXIT_MATCH;
+
+  exit $err;
+}
+
+my $foo = <<'EOF';
+# The above is to *find* them.
+# This adjusts them, removing the unnecessary "if (p)" part.
+
+# FIXME: do something like this as an option (doesn't do braces):
+free=xfree
+git grep -l -z "$free *(" \
+  | xargs -0 useless-if-before-free -l --name="$free" \
+  | xargs -0 perl -0x3b -pi -e \
+   's/\bif\s*\(\s*(\S+?)(?:\s*!=\s*(?:0|NULL))?\s*\)\s+('"$free"'\s*\((?:\s*\([^)]+\))?\s*\1\s*\)\s*;)/$2/s'
+
+# Use the following to remove redundant uses of kfree inside braces.
+# Note that -0777 puts perl in slurp-whole-file mode;
+# but we have plenty of memory, these days...
+free=kfree
+git grep -l -z "$free *(" \
+  | xargs -0 useless-if-before-free -l --name="$free" \
+  | xargs -0 perl -0777 -pi -e \
+     's/\bif\s*\(\s*(\S+?)(?:\s*!=\s*(?:0|NULL))?\s*\)\s*\{\s*('"$free"'\s*\((?:\s*\([^)]+\))?\s*\1\s*\);)\s*\}[^\n]*$/$2/gms'
+
+Be careful that the result of the above transformation is valid.
+If the matched string is followed by "else", then obviously, it won't be.
+
+When modifying files, refuse to process anything other than a regular file.
+EOF
+
+## Local Variables:
+## mode: perl
+## indent-tabs-mode: nil
+## eval: (add-hook 'write-file-hooks 'time-stamp)
+## time-stamp-start: "my $VERSION = '"
+## time-stamp-format: "%:y-%02m-%02d %02H:%02M"
+## time-stamp-time-zone: "UTC"
+## time-stamp-end: "'; # UTC"
+## End:
diff --git a/build-aux/vc-list-files b/build-aux/vc-list-files
new file mode 100755 (executable)
index 0000000..405e458
--- /dev/null
@@ -0,0 +1,113 @@
+#!/bin/sh
+# List version-controlled file names.
+
+# Print a version string.
+scriptversion=2011-05-16.22; # UTC
+
+# Copyright (C) 2006-2011 Free Software Foundation, 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, 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 <http://www.gnu.org/licenses/>.
+
+
+# List the specified version-controlled files.
+# With no argument, list them all.  With a single DIRECTORY argument,
+# list the version-controlled files in that directory.
+
+# If there's an argument, it must be a single, "."-relative directory name.
+# cvsu is part of the cvsutils package: http://www.red-bean.com/cvsutils/
+
+postprocess=
+case $1 in
+  --help) cat <<EOF
+Usage: $0 [-C SRCDIR] [DIR...]
+
+Output a list of version-controlled files in DIR (default .), relative to
+SRCDIR (default .).  SRCDIR must be the top directory of a checkout.
+
+Options:
+  --help     print this help, then exit
+  --version  print version number, then exit
+  -C SRCDIR  change directory to SRCDIR before generating list
+
+Report bugs and patches to <bug-gnulib@gnu.org>.
+EOF
+    exit ;;
+
+  --version)
+    year=`echo "$scriptversion" | sed 's/[^0-9].*//'`
+    cat <<EOF
+vc-list-files $scriptversion
+Copyright (C) $year Free Software Foundation, Inc,
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+EOF
+    exit ;;
+
+  -C)
+    test "$2" = . || postprocess="| sed 's|^|$2/|'"
+    cd "$2" || exit 1
+    shift; shift ;;
+esac
+
+test $# = 0 && set .
+
+for dir
+do
+  if test -d .git; then
+    test "x$dir" = x. \
+      && dir= sed_esc= \
+      || { dir="$dir/"; sed_esc=`echo "$dir"|env sed 's,\([\\/]\),\\\\\1,g'`; }
+    # Ignore git symlinks - either they point into the tree, in which case
+    # we don't need to visit the target twice, or they point somewhere
+    # else (often into a submodule), in which case the content does not
+    # belong to this package.
+    eval exec git ls-tree -r 'HEAD:"$dir"' \
+      \| sed -n '"s/^100[^     ]*./$sed_esc/p"' $postprocess
+  elif test -d .hg; then
+    eval exec hg locate '"$dir/*"' $postprocess
+  elif test -d .bzr; then
+    test "$postprocess" = '' && postprocess="| sed 's|^\./||'"
+    eval exec bzr ls -R --versioned '"$dir"' $postprocess
+  elif test -d CVS; then
+    test "$postprocess" = '' && postprocess="| sed 's|^\./||'"
+    if test -x build-aux/cvsu; then
+      eval build-aux/cvsu --find --types=AFGM '"$dir"' $postprocess
+    elif (cvsu --help) >/dev/null 2>&1; then
+      eval cvsu --find --types=AFGM '"$dir"' $postprocess
+    else
+      eval awk -F/ \''{                        \
+          if (!$1 && $3 !~ /^-/) {     \
+            f=FILENAME;                        \
+            if (f ~ /CVS\/Entries$/)   \
+              f = substr(f, 1, length(f)-11); \
+            print f $2;                        \
+          }}'\''                               \
+        `find "$dir" -name Entries -print` /dev/null' $postprocess
+    fi
+  elif test -d .svn; then
+    eval exec svn list -R '"$dir"' $postprocess
+  else
+    echo "$0: Failed to determine type of version control used in `pwd`" 1>&2
+    exit 1
+  fi
+done
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/build-aux/warn-on-use.h b/build-aux/warn-on-use.h
new file mode 100644 (file)
index 0000000..5dfc590
--- /dev/null
@@ -0,0 +1,111 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* A C macro for emitting warnings if a function is used.
+   Copyright (C) 2010-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+/* _GL_WARN_ON_USE (function, "literal string") issues a declaration
+   for FUNCTION which will then trigger a compiler warning containing
+   the text of "literal string" anywhere that function is called, if
+   supported by the compiler.  If the compiler does not support this
+   feature, the macro expands to an unused extern declaration.
+
+   This macro is useful for marking a function as a potential
+   portability trap, with the intent that "literal string" include
+   instructions on the replacement function that should be used
+   instead.  However, one of the reasons that a function is a
+   portability trap is if it has the wrong signature.  Declaring
+   FUNCTION with a different signature in C is a compilation error, so
+   this macro must use the same type as any existing declaration so
+   that programs that avoid the problematic FUNCTION do not fail to
+   compile merely because they included a header that poisoned the
+   function.  But this implies that _GL_WARN_ON_USE is only safe to
+   use if FUNCTION is known to already have a declaration.  Use of
+   this macro implies that there must not be any other macro hiding
+   the declaration of FUNCTION; but undefining FUNCTION first is part
+   of the poisoning process anyway (although for symbols that are
+   provided only via a macro, the result is a compilation error rather
+   than a warning containing "literal string").  Also note that in
+   C++, it is only safe to use if FUNCTION has no overloads.
+
+   For an example, it is possible to poison 'getline' by:
+   - adding a call to gl_WARN_ON_USE_PREPARE([[#include <stdio.h>]],
+     [getline]) in configure.ac, which potentially defines
+     HAVE_RAW_DECL_GETLINE
+   - adding this code to a header that wraps the system <stdio.h>:
+     #undef getline
+     #if HAVE_RAW_DECL_GETLINE
+     _GL_WARN_ON_USE (getline, "getline is required by POSIX 2008, but"
+       "not universally present; use the gnulib module getline");
+     #endif
+
+   It is not possible to directly poison global variables.  But it is
+   possible to write a wrapper accessor function, and poison that
+   (less common usage, like &environ, will cause a compilation error
+   rather than issue the nice warning, but the end result of informing
+   the developer about their portability problem is still achieved):
+   #if HAVE_RAW_DECL_ENVIRON
+   static inline char ***rpl_environ (void) { return &environ; }
+   _GL_WARN_ON_USE (rpl_environ, "environ is not always properly declared");
+   # undef environ
+   # define environ (*rpl_environ ())
+   #endif
+   */
+#ifndef _GL_WARN_ON_USE
+
+# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
+/* A compiler attribute is available in gcc versions 4.3.0 and later.  */
+#  define _GL_WARN_ON_USE(function, message) \
+extern __typeof__ (function) function __attribute__ ((__warning__ (message)))
+# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
+/* Verify the existence of the function.  */
+#  define _GL_WARN_ON_USE(function, message) \
+extern __typeof__ (function) function
+# else /* Unsupported.  */
+#  define _GL_WARN_ON_USE(function, message) \
+_GL_WARN_EXTERN_C int _gl_warn_on_use
+# endif
+#endif
+
+/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string")
+   is like _GL_WARN_ON_USE (function, "string"), except that the function is
+   declared with the given prototype, consisting of return type, parameters,
+   and attributes.
+   This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does
+   not work in this case.  */
+#ifndef _GL_WARN_ON_USE_CXX
+# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
+#  define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
+extern rettype function parameters_and_attributes \
+     __attribute__ ((__warning__ (msg)))
+# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
+/* Verify the existence of the function.  */
+#  define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
+extern rettype function parameters_and_attributes
+# else /* Unsupported.  */
+#  define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
+_GL_WARN_EXTERN_C int _gl_warn_on_use
+# endif
+#endif
+
+/* _GL_WARN_EXTERN_C declaration;
+   performs the declaration with C linkage.  */
+#ifndef _GL_WARN_EXTERN_C
+# if defined __cplusplus
+#  define _GL_WARN_EXTERN_C extern "C"
+# else
+#  define _GL_WARN_EXTERN_C extern
+# endif
+#endif
diff --git a/cfg.mk b/cfg.mk
new file mode 100644 (file)
index 0000000..52c903e
--- /dev/null
+++ b/cfg.mk
@@ -0,0 +1,70 @@
+# Customize maint.mk                           -*- makefile -*-
+# Copyright (C) 2003-2011 Free Software Foundation, 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, 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 <http://www.gnu.org/licenses/>.
+
+# Use alpha.gnu.org for alpha and beta releases.
+# Use ftp.gnu.org for stable releases.
+gnu_ftp_host-alpha = alpha.gnu.org
+gnu_ftp_host-beta = alpha.gnu.org
+gnu_ftp_host-stable = ftp.gnu.org
+gnu_rel_host = $(gnu_ftp_host-$(RELEASE_TYPE))
+
+url_dir_list = \
+  ftp://$(gnu_rel_host)/gnu/parted
+
+# Used in maint.mk's web-manual rule
+manual_title = Parted User's Manual
+
+# Tests not to run as part of "make distcheck".
+# Exclude changelog-check here so that there's less churn in ChangeLog
+# files -- otherwise, you'd need to have the upcoming version number
+# at the top of the file for each `make distcheck' run.
+local-checks-to-skip = \
+  sc_error_message_uppercase \
+  sc_error_message_period \
+  sc_file_system \
+  sc_prohibit_strcmp \
+  sc_prohibit_atoi_atof \
+  sc_require_test_exit_idiom \
+  sc_space_tab \
+  sc_texinfo_acronym
+
+# Now that we have better (check.mk) tests, make this the default.
+export VERBOSE = yes
+
+old_NEWS_hash = 31d7ac1051f7d5678928cb459b7abd5f
+
+include $(srcdir)/dist-check.mk
+
+useless_free_options = \
+  --name=pth_free
+
+# Tools used to bootstrap this package, used for "announcement".
+bootstrap-tools = autoconf,automake,gettext,gnulib,gperf
+
+update-copyright-env = \
+  UPDATE_COPYRIGHT_USE_INTERVALS=1 \
+  UPDATE_COPYRIGHT_MAX_LINE_LENGTH=79
+
+#==> .j/.x-sc_GPL_version <==
+#build-aux/vc-list-files
+
+exclude_file_name_regexp--sc_bindtextdomain = ^(libparted/)?tests/.*\.c$$
+
+exclude_file_name_regexp--sc_cross_check_PATH_usage_in_tests = \
+  ^libparted/tests/t.*\.sh$$
+
+exclude_file_name_regexp--sc_prohibit_always-defined_macros = \
+  ^parted/(strlist|table)\.h$$
diff --git a/configure b/configure
new file mode 100755 (executable)
index 0000000..0ca9781
--- /dev/null
+++ b/configure
@@ -0,0 +1,40152 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.68.68-2105 for GNU parted 3.0.
+#
+# Report bugs to <bug-parted@gnu.org>.
+#
+#
+# Copyright (C) 1992-1996, 1998-2011 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
+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
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+       expr "X$arg" : "X\\(.*\\)$as_nl";
+       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+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
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""       $as_nl"
+
+# 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
+  test -z "$as_dir" && as_dir=.
+    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
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test "x$CONFIG_SHELL" = x; then
+  as_bourne_compatible="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
+"
+  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
+  exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || 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
+
+  test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
+    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+    PATH=/empty FPATH=/empty; export PATH FPATH
+    test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
+      || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1"
+  if (eval "$as_required") 2>/dev/null; then :
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+  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
+  test -z "$as_dir" && as_dir=.
+  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_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  CONFIG_SHELL=$as_shell as_have_required=yes
+                  if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  break 2
+fi
+fi
+          done;;
+       esac
+  as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+             { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+      if test "x$CONFIG_SHELL" != x; then :
+  # 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
+       export CONFIG_SHELL
+       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+"$@"}
+fi
+
+    if test x$as_have_required = xno; then :
+  $as_echo "$0: This script requires a shell more modern than all"
+  $as_echo "$0: the shells that I found on your system."
+  if test x${ZSH_VERSION+set} = xset ; then
+    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+  else
+    $as_echo "$0: Please tell bug-autoconf@gnu.org and bug-parted@gnu.org
+$0: about your system, including any error possibly output
+$0: before this message. Then install a modern shell, or
+$0: manually run the script under such a shell if you do
+$0: 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_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=`$as_echo "$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 ||
+$as_echo 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_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_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_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+# 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
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$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 ||
+$as_echo 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" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+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
+
+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 -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
+else
+  as_ln_s='cp -p'
+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
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+       test -d "$1/.";
+      else
+       case $1 in #(
+       -*)set "./$1";;
+       esac;
+       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+       ???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# 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'"
+
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&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='GNU parted'
+PACKAGE_TARNAME='parted'
+PACKAGE_VERSION='3.0'
+PACKAGE_STRING='GNU parted 3.0'
+PACKAGE_BUGREPORT='bug-parted@gnu.org'
+PACKAGE_URL='http://www.gnu.org/software/parted/'
+
+ac_unique_file="include/parted/parted.h"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+gl_use_threads_default=
+ac_func_list=
+ac_header_list=
+gl_getopt_required=POSIX
+gl_getopt_required=POSIX
+gt_needs=
+ac_subst_vars='gltests_LTLIBOBJS
+gltests_LIBOBJS
+gl_LTLIBOBJS
+gl_LIBOBJS
+CONFIG_INCLUDE
+am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
+LIBOBJS
+LIB_BLKID
+BUILDINFO
+HAVE_CHECK_FALSE
+HAVE_CHECK_TRUE
+CHECK_LIBS
+CHECK_CFLAGS
+PKG_CONFIG_LIBDIR
+PKG_CONFIG_PATH
+PKG_CONFIG
+BUILD_LINUX_FALSE
+BUILD_LINUX_TRUE
+COMPILE_FOR_S390_FALSE
+COMPILE_FOR_S390_TRUE
+INTLINCS
+OS_LIBS
+PARTED_LIBS
+REISER_LIBS
+SELINUX_LIBS
+DM_LIBS
+UUID_LIBS
+DL_LIBS
+DYNAMIC_LOADING
+POSUB
+INTLLIBS
+LTLIBICONV
+LIBICONV
+XGETTEXT_EXTRA_OPTIONS
+MSGMERGE
+XGETTEXT_015
+XGETTEXT
+GMSGFMT_015
+MSGFMT_015
+GMSGFMT
+MSGFMT
+GETTEXT_MACRO_VERSION
+USE_NLS
+OTOOL64
+OTOOL
+LIPO
+NMEDIT
+DSYMUTIL
+MANIFEST_TOOL
+ac_ct_AR
+AR
+DLLTOOL
+OBJDUMP
+LN_S
+NM
+ac_ct_DUMPBIN
+DUMPBIN
+LD
+FGREP
+SED
+LIBTOOL
+WERROR_CFLAGS
+LIBTESTS_LIBDEPS
+YIELD_LIB
+abs_aux_dir
+INTL_MACOSX_LIBS
+NEXT_AS_FIRST_DIRECTIVE_LOCALE_H
+NEXT_LOCALE_H
+HAVE_XLOCALE_H
+REPLACE_DUPLOCALE
+REPLACE_SETLOCALE
+HAVE_DUPLOCALE
+GNULIB_DUPLOCALE
+GNULIB_SETLOCALE
+NEXT_AS_FIRST_DIRECTIVE_FCNTL_H
+NEXT_FCNTL_H
+REPLACE_OPENAT
+REPLACE_OPEN
+REPLACE_FCNTL
+HAVE_OPENAT
+HAVE_FCNTL
+GNULIB_OPENAT
+GNULIB_OPEN
+GNULIB_NONBLOCKING
+GNULIB_FCNTL
+LOCALE_TR_UTF8
+gltests_WITNESS
+REPLACE_ISWCNTRL
+HAVE_WCTYPE_H
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H
+NEXT_WCTYPE_H
+HAVE_ISWCNTRL
+REPLACE_ISWBLANK
+HAVE_WCTRANS_T
+HAVE_WCTYPE_T
+HAVE_ISWBLANK
+GNULIB_TOWCTRANS
+GNULIB_WCTRANS
+GNULIB_ISWCTYPE
+GNULIB_WCTYPE
+GNULIB_ISWBLANK
+HAVE_WINT_T
+HAVE_FEATURES_H
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H
+NEXT_WCHAR_H
+WARN_CFLAGS
+HAVE_UNISTD_H
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H
+NEXT_UNISTD_H
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC
+TIME_H_DEFINES_STRUCT_TIMESPEC
+NEXT_AS_FIRST_DIRECTIVE_TIME_H
+NEXT_TIME_H
+REPLACE_TIMEGM
+REPLACE_NANOSLEEP
+REPLACE_MKTIME
+REPLACE_LOCALTIME_R
+HAVE_TIMEGM
+HAVE_STRPTIME
+HAVE_NANOSLEEP
+HAVE_DECL_LOCALTIME_R
+GNULIB_TIME_R
+GNULIB_TIMEGM
+GNULIB_STRPTIME
+GNULIB_NANOSLEEP
+GNULIB_MKTIME
+NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H
+NEXT_SYS_STAT_H
+NEXT_AS_FIRST_DIRECTIVE_STRING_H
+NEXT_STRING_H
+UNDEFINE_STRTOK_R
+REPLACE_STRTOK_R
+REPLACE_STRSIGNAL
+REPLACE_STRNLEN
+REPLACE_STRNDUP
+REPLACE_STRNCAT
+REPLACE_STRERROR_R
+REPLACE_STRERROR
+REPLACE_STRCHRNUL
+REPLACE_STRCASESTR
+REPLACE_STRSTR
+REPLACE_STRDUP
+REPLACE_STPNCPY
+REPLACE_MEMMEM
+REPLACE_MEMCHR
+HAVE_STRVERSCMP
+HAVE_DECL_STRSIGNAL
+HAVE_DECL_STRERROR_R
+HAVE_DECL_STRTOK_R
+HAVE_STRCASESTR
+HAVE_STRSEP
+HAVE_STRPBRK
+HAVE_DECL_STRNLEN
+HAVE_DECL_STRNDUP
+HAVE_DECL_STRDUP
+HAVE_STRCHRNUL
+HAVE_STPNCPY
+HAVE_STPCPY
+HAVE_RAWMEMCHR
+HAVE_DECL_MEMRCHR
+HAVE_MEMPCPY
+HAVE_DECL_MEMMEM
+HAVE_MEMCHR
+HAVE_MBSLEN
+GNULIB_STRVERSCMP
+GNULIB_STRSIGNAL
+GNULIB_STRERROR_R
+GNULIB_STRERROR
+GNULIB_MBSTOK_R
+GNULIB_MBSSEP
+GNULIB_MBSSPN
+GNULIB_MBSPBRK
+GNULIB_MBSCSPN
+GNULIB_MBSCASESTR
+GNULIB_MBSPCASECMP
+GNULIB_MBSNCASECMP
+GNULIB_MBSCASECMP
+GNULIB_MBSSTR
+GNULIB_MBSRCHR
+GNULIB_MBSCHR
+GNULIB_MBSNLEN
+GNULIB_MBSLEN
+GNULIB_STRTOK_R
+GNULIB_STRCASESTR
+GNULIB_STRSTR
+GNULIB_STRSEP
+GNULIB_STRPBRK
+GNULIB_STRNLEN
+GNULIB_STRNDUP
+GNULIB_STRNCAT
+GNULIB_STRDUP
+GNULIB_STRCHRNUL
+GNULIB_STPNCPY
+GNULIB_STPCPY
+GNULIB_RAWMEMCHR
+GNULIB_MEMRCHR
+GNULIB_MEMPCPY
+GNULIB_MEMMEM
+GNULIB_MEMCHR
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H
+NEXT_STDLIB_H
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H
+NEXT_STDIO_H
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H
+NEXT_STDDEF_H
+GL_GENERATE_STDDEF_H_FALSE
+GL_GENERATE_STDDEF_H_TRUE
+STDDEF_H
+HAVE_WCHAR_T
+REPLACE_NULL
+HAVE__BOOL
+GL_GENERATE_STDBOOL_H_FALSE
+GL_GENERATE_STDBOOL_H_TRUE
+STDBOOL_H
+GL_GENERATE_STDARG_H_FALSE
+GL_GENERATE_STDARG_H_TRUE
+STDARG_H
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H
+NEXT_STDARG_H
+LOCALE_FR_UTF8
+LOCALE_ZH_CN
+LOCALE_JA
+REPLACE_UTIMENSAT
+REPLACE_STAT
+REPLACE_MKNOD
+REPLACE_MKFIFO
+REPLACE_MKDIR
+REPLACE_LSTAT
+REPLACE_FUTIMENS
+REPLACE_FSTATAT
+REPLACE_FSTAT
+HAVE_UTIMENSAT
+HAVE_MKNODAT
+HAVE_MKNOD
+HAVE_MKFIFOAT
+HAVE_MKFIFO
+HAVE_MKDIRAT
+HAVE_LSTAT
+HAVE_LCHMOD
+HAVE_FUTIMENS
+HAVE_FSTATAT
+HAVE_FCHMODAT
+GNULIB_UTIMENSAT
+GNULIB_STAT
+GNULIB_MKNODAT
+GNULIB_MKNOD
+GNULIB_MKFIFOAT
+GNULIB_MKFIFO
+GNULIB_MKDIRAT
+GNULIB_LSTAT
+GNULIB_LCHMOD
+GNULIB_FUTIMENS
+GNULIB_FSTATAT
+GNULIB_FCHMODAT
+LTLIBMULTITHREAD
+LIBMULTITHREAD
+LTLIBTHREAD
+LIBTHREAD
+LIBPTH_PREFIX
+LTLIBPTH
+LIBPTH
+LOCALCHARSET_TESTS_ENVIRONMENT
+GLIBC21
+IGNORE_UNUSED_LIBRARIES_CFLAGS
+HAVE_LANGINFO_YESEXPR
+HAVE_LANGINFO_ERA
+HAVE_LANGINFO_T_FMT_AMPM
+HAVE_LANGINFO_CODESET
+HAVE_LANGINFO_H
+NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H
+NEXT_LANGINFO_H
+REPLACE_NL_LANGINFO
+HAVE_NL_LANGINFO
+GNULIB_NL_LANGINFO
+NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H
+NEXT_INTTYPES_H
+UINT64_MAX_EQ_ULONG_MAX
+UINT32_MAX_LT_UINTMAX_MAX
+PRIPTR_PREFIX
+PRI_MACROS_BROKEN
+INT64_MAX_EQ_LONG_MAX
+INT32_MAX_LT_INTMAX_MAX
+HAVE_DECL_STRTOUMAX
+HAVE_DECL_STRTOIMAX
+HAVE_DECL_IMAXDIV
+HAVE_DECL_IMAXABS
+GNULIB_STRTOUMAX
+GNULIB_STRTOIMAX
+GNULIB_IMAXDIV
+GNULIB_IMAXABS
+GL_GENERATE_STDINT_H_FALSE
+GL_GENERATE_STDINT_H_TRUE
+STDINT_H
+WINT_T_SUFFIX
+WCHAR_T_SUFFIX
+SIG_ATOMIC_T_SUFFIX
+SIZE_T_SUFFIX
+PTRDIFF_T_SUFFIX
+HAVE_SIGNED_WINT_T
+HAVE_SIGNED_WCHAR_T
+HAVE_SIGNED_SIG_ATOMIC_T
+BITSIZEOF_WINT_T
+BITSIZEOF_WCHAR_T
+BITSIZEOF_SIG_ATOMIC_T
+BITSIZEOF_SIZE_T
+BITSIZEOF_PTRDIFF_T
+APPLE_UNIVERSAL_BUILD
+HAVE_SYS_BITYPES_H
+HAVE_SYS_INTTYPES_H
+HAVE_STDINT_H
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H
+NEXT_STDINT_H
+HAVE_SYS_TYPES_H
+HAVE_INTTYPES_H
+HAVE_WCHAR_H
+HAVE_UNSIGNED_LONG_LONG_INT
+HAVE_LONG_LONG_INT
+NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H
+NEXT_SYS_TIME_H
+REPLACE_GETTIMEOFDAY
+HAVE_SYS_TIME_H
+HAVE_STRUCT_TIMEVAL
+HAVE_GETTIMEOFDAY
+GNULIB_GETTIMEOFDAY
+LTLIBINTL
+LIBINTL
+GETOPT_H
+HAVE_GETOPT_H
+NEXT_AS_FIRST_DIRECTIVE_GETOPT_H
+NEXT_GETOPT_H
+REPLACE_VSPRINTF
+REPLACE_VSNPRINTF
+REPLACE_VPRINTF
+REPLACE_VFPRINTF
+REPLACE_VDPRINTF
+REPLACE_VASPRINTF
+REPLACE_TMPFILE
+REPLACE_STDIO_WRITE_FUNCS
+REPLACE_STDIO_READ_FUNCS
+REPLACE_SPRINTF
+REPLACE_SNPRINTF
+REPLACE_RENAMEAT
+REPLACE_RENAME
+REPLACE_REMOVE
+REPLACE_PRINTF
+REPLACE_POPEN
+REPLACE_PERROR
+REPLACE_OBSTACK_PRINTF
+REPLACE_GETLINE
+REPLACE_GETDELIM
+REPLACE_FTELLO
+REPLACE_FTELL
+REPLACE_FSEEKO
+REPLACE_FSEEK
+REPLACE_FREOPEN
+REPLACE_FPURGE
+REPLACE_FPRINTF
+REPLACE_FOPEN
+REPLACE_FFLUSH
+REPLACE_FCLOSE
+REPLACE_DPRINTF
+HAVE_VDPRINTF
+HAVE_VASPRINTF
+HAVE_RENAMEAT
+HAVE_FTELLO
+HAVE_FSEEKO
+HAVE_DPRINTF
+HAVE_DECL_VSNPRINTF
+HAVE_DECL_SNPRINTF
+HAVE_DECL_OBSTACK_PRINTF
+HAVE_DECL_GETLINE
+HAVE_DECL_GETDELIM
+HAVE_DECL_FTELLO
+HAVE_DECL_FSEEKO
+HAVE_DECL_FPURGE
+GNULIB_VSPRINTF_POSIX
+GNULIB_VSNPRINTF
+GNULIB_VPRINTF_POSIX
+GNULIB_VPRINTF
+GNULIB_VFPRINTF_POSIX
+GNULIB_VFPRINTF
+GNULIB_VDPRINTF
+GNULIB_VSCANF
+GNULIB_VFSCANF
+GNULIB_VASPRINTF
+GNULIB_TMPFILE
+GNULIB_STDIO_H_SIGPIPE
+GNULIB_STDIO_H_NONBLOCKING
+GNULIB_SPRINTF_POSIX
+GNULIB_SNPRINTF
+GNULIB_SCANF
+GNULIB_RENAMEAT
+GNULIB_RENAME
+GNULIB_REMOVE
+GNULIB_PUTS
+GNULIB_PUTCHAR
+GNULIB_PUTC
+GNULIB_PRINTF_POSIX
+GNULIB_PRINTF
+GNULIB_POPEN
+GNULIB_PERROR
+GNULIB_OBSTACK_PRINTF_POSIX
+GNULIB_OBSTACK_PRINTF
+GNULIB_GETS
+GNULIB_GETLINE
+GNULIB_GETDELIM
+GNULIB_GETCHAR
+GNULIB_GETC
+GNULIB_FWRITE
+GNULIB_FTELLO
+GNULIB_FTELL
+GNULIB_FSEEKO
+GNULIB_FSEEK
+GNULIB_FSCANF
+GNULIB_FREOPEN
+GNULIB_FREAD
+GNULIB_FPUTS
+GNULIB_FPUTC
+GNULIB_FPURGE
+GNULIB_FPRINTF_POSIX
+GNULIB_FPRINTF
+GNULIB_FOPEN
+GNULIB_FGETS
+GNULIB_FGETC
+GNULIB_FFLUSH
+GNULIB_FCLOSE
+GNULIB_DPRINTF
+EOVERFLOW_VALUE
+EOVERFLOW_HIDDEN
+ENOLINK_VALUE
+ENOLINK_HIDDEN
+EMULTIHOP_VALUE
+EMULTIHOP_HIDDEN
+GL_GENERATE_ERRNO_H_FALSE
+GL_GENERATE_ERRNO_H_TRUE
+ERRNO_H
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H
+NEXT_ERRNO_H
+PRAGMA_COLUMNS
+PRAGMA_SYSTEM_HEADER
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE
+INCLUDE_NEXT
+pkglibexecdir
+lispdir
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS
+UNISTD_H_HAVE_WINSOCK2_H
+REPLACE_WRITE
+REPLACE_USLEEP
+REPLACE_UNLINKAT
+REPLACE_UNLINK
+REPLACE_TTYNAME_R
+REPLACE_SYMLINK
+REPLACE_SLEEP
+REPLACE_RMDIR
+REPLACE_READLINK
+REPLACE_READ
+REPLACE_PWRITE
+REPLACE_PREAD
+REPLACE_LSEEK
+REPLACE_LINKAT
+REPLACE_LINK
+REPLACE_LCHOWN
+REPLACE_GETPAGESIZE
+REPLACE_GETGROUPS
+REPLACE_GETLOGIN_R
+REPLACE_GETDOMAINNAME
+REPLACE_GETCWD
+REPLACE_FCHOWNAT
+REPLACE_DUP2
+REPLACE_DUP
+REPLACE_CLOSE
+REPLACE_CHOWN
+HAVE_SYS_PARAM_H
+HAVE_OS_H
+HAVE_DECL_TTYNAME_R
+HAVE_DECL_GETUSERSHELL
+HAVE_DECL_GETPAGESIZE
+HAVE_DECL_GETLOGIN_R
+HAVE_DECL_GETDOMAINNAME
+HAVE_DECL_FCHDIR
+HAVE_DECL_ENVIRON
+HAVE_USLEEP
+HAVE_UNLINKAT
+HAVE_SYMLINKAT
+HAVE_SYMLINK
+HAVE_SLEEP
+HAVE_READLINKAT
+HAVE_READLINK
+HAVE_PWRITE
+HAVE_PREAD
+HAVE_PIPE2
+HAVE_PIPE
+HAVE_LINKAT
+HAVE_LINK
+HAVE_LCHOWN
+HAVE_GROUP_MEMBER
+HAVE_GETPAGESIZE
+HAVE_GETLOGIN
+HAVE_GETHOSTNAME
+HAVE_GETGROUPS
+HAVE_GETDTABLESIZE
+HAVE_FTRUNCATE
+HAVE_FSYNC
+HAVE_FCHOWNAT
+HAVE_FCHDIR
+HAVE_FACCESSAT
+HAVE_EUIDACCESS
+HAVE_DUP3
+HAVE_DUP2
+HAVE_CHOWN
+GNULIB_WRITE
+GNULIB_USLEEP
+GNULIB_UNLINKAT
+GNULIB_UNLINK
+GNULIB_UNISTD_H_SIGPIPE
+GNULIB_UNISTD_H_NONBLOCKING
+GNULIB_UNISTD_H_GETOPT
+GNULIB_TTYNAME_R
+GNULIB_SYMLINKAT
+GNULIB_SYMLINK
+GNULIB_SLEEP
+GNULIB_RMDIR
+GNULIB_READLINKAT
+GNULIB_READLINK
+GNULIB_READ
+GNULIB_PWRITE
+GNULIB_PREAD
+GNULIB_PIPE2
+GNULIB_PIPE
+GNULIB_LSEEK
+GNULIB_LINKAT
+GNULIB_LINK
+GNULIB_LCHOWN
+GNULIB_GROUP_MEMBER
+GNULIB_GETUSERSHELL
+GNULIB_GETPAGESIZE
+GNULIB_GETLOGIN_R
+GNULIB_GETLOGIN
+GNULIB_GETHOSTNAME
+GNULIB_GETGROUPS
+GNULIB_GETDTABLESIZE
+GNULIB_GETDOMAINNAME
+GNULIB_GETCWD
+GNULIB_FTRUNCATE
+GNULIB_FSYNC
+GNULIB_FCHOWNAT
+GNULIB_FCHDIR
+GNULIB_FACCESSAT
+GNULIB_EUIDACCESS
+GNULIB_ENVIRON
+GNULIB_DUP3
+GNULIB_DUP2
+GNULIB_CLOSE
+GNULIB_CHOWN
+REPLACE_WCTOMB
+REPLACE_UNSETENV
+REPLACE_STRTOD
+REPLACE_SETENV
+REPLACE_REALPATH
+REPLACE_REALLOC
+REPLACE_PUTENV
+REPLACE_MKSTEMP
+REPLACE_MBTOWC
+REPLACE_MALLOC
+REPLACE_CANONICALIZE_FILE_NAME
+REPLACE_CALLOC
+HAVE_DECL_UNSETENV
+HAVE_UNLOCKPT
+HAVE_SYS_LOADAVG_H
+HAVE_STRUCT_RANDOM_DATA
+HAVE_STRTOULL
+HAVE_STRTOLL
+HAVE_STRTOD
+HAVE_DECL_SETENV
+HAVE_SETENV
+HAVE_RPMATCH
+HAVE_REALPATH
+HAVE_RANDOM_R
+HAVE_RANDOM_H
+HAVE_PTSNAME
+HAVE_MKSTEMPS
+HAVE_MKSTEMP
+HAVE_MKOSTEMPS
+HAVE_MKOSTEMP
+HAVE_MKDTEMP
+HAVE_GRANTPT
+HAVE_GETSUBOPT
+HAVE_DECL_GETLOADAVG
+HAVE_CANONICALIZE_FILE_NAME
+HAVE_ATOLL
+HAVE__EXIT
+GNULIB_WCTOMB
+GNULIB_UNSETENV
+GNULIB_UNLOCKPT
+GNULIB_SYSTEM_POSIX
+GNULIB_STRTOULL
+GNULIB_STRTOLL
+GNULIB_STRTOD
+GNULIB_SETENV
+GNULIB_RPMATCH
+GNULIB_REALPATH
+GNULIB_REALLOC_POSIX
+GNULIB_RANDOM_R
+GNULIB_PUTENV
+GNULIB_PTSNAME
+GNULIB_MKSTEMPS
+GNULIB_MKSTEMP
+GNULIB_MKOSTEMPS
+GNULIB_MKOSTEMP
+GNULIB_MKDTEMP
+GNULIB_MBTOWC
+GNULIB_MALLOC_POSIX
+GNULIB_GRANTPT
+GNULIB_GETSUBOPT
+GNULIB_GETLOADAVG
+GNULIB_CANONICALIZE_FILE_NAME
+GNULIB_CALLOC_POSIX
+GNULIB_ATOLL
+GNULIB__EXIT
+LOCALE_FR
+REPLACE_WCSWIDTH
+REPLACE_WCWIDTH
+REPLACE_WCSNRTOMBS
+REPLACE_WCSRTOMBS
+REPLACE_WCRTOMB
+REPLACE_MBSNRTOWCS
+REPLACE_MBSRTOWCS
+REPLACE_MBRLEN
+REPLACE_MBRTOWC
+REPLACE_MBSINIT
+REPLACE_WCTOB
+REPLACE_BTOWC
+REPLACE_MBSTATE_T
+HAVE_DECL_WCWIDTH
+HAVE_DECL_WCTOB
+HAVE_WCSWIDTH
+HAVE_WCSTOK
+HAVE_WCSSTR
+HAVE_WCSPBRK
+HAVE_WCSSPN
+HAVE_WCSCSPN
+HAVE_WCSRCHR
+HAVE_WCSCHR
+HAVE_WCSDUP
+HAVE_WCSXFRM
+HAVE_WCSCOLL
+HAVE_WCSNCASECMP
+HAVE_WCSCASECMP
+HAVE_WCSNCMP
+HAVE_WCSCMP
+HAVE_WCSNCAT
+HAVE_WCSCAT
+HAVE_WCPNCPY
+HAVE_WCSNCPY
+HAVE_WCPCPY
+HAVE_WCSCPY
+HAVE_WCSNLEN
+HAVE_WCSLEN
+HAVE_WMEMSET
+HAVE_WMEMMOVE
+HAVE_WMEMCPY
+HAVE_WMEMCMP
+HAVE_WMEMCHR
+HAVE_WCSNRTOMBS
+HAVE_WCSRTOMBS
+HAVE_WCRTOMB
+HAVE_MBSNRTOWCS
+HAVE_MBSRTOWCS
+HAVE_MBRLEN
+HAVE_MBRTOWC
+HAVE_MBSINIT
+HAVE_BTOWC
+GNULIB_WCSWIDTH
+GNULIB_WCSTOK
+GNULIB_WCSSTR
+GNULIB_WCSPBRK
+GNULIB_WCSSPN
+GNULIB_WCSCSPN
+GNULIB_WCSRCHR
+GNULIB_WCSCHR
+GNULIB_WCSDUP
+GNULIB_WCSXFRM
+GNULIB_WCSCOLL
+GNULIB_WCSNCASECMP
+GNULIB_WCSCASECMP
+GNULIB_WCSNCMP
+GNULIB_WCSCMP
+GNULIB_WCSNCAT
+GNULIB_WCSCAT
+GNULIB_WCPNCPY
+GNULIB_WCSNCPY
+GNULIB_WCPCPY
+GNULIB_WCSCPY
+GNULIB_WCSNLEN
+GNULIB_WCSLEN
+GNULIB_WMEMSET
+GNULIB_WMEMMOVE
+GNULIB_WMEMCPY
+GNULIB_WMEMCMP
+GNULIB_WMEMCHR
+GNULIB_WCWIDTH
+GNULIB_WCSNRTOMBS
+GNULIB_WCSRTOMBS
+GNULIB_WCRTOMB
+GNULIB_MBSNRTOWCS
+GNULIB_MBSRTOWCS
+GNULIB_MBRLEN
+GNULIB_MBRTOWC
+GNULIB_MBSINIT
+GNULIB_WCTOB
+GNULIB_BTOWC
+GL_GENERATE_ALLOCA_H_FALSE
+GL_GENERATE_ALLOCA_H_TRUE
+ALLOCA_H
+ALLOCA
+LTALLOCA
+GL_COND_LIBTOOL_FALSE
+GL_COND_LIBTOOL_TRUE
+PARTED_USABLE_TEST_DIR
+RANLIB
+EGREP
+GREP
+CPP
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+am__nodep
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__quote
+am__include
+DEPDIR
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+PARTEDLDFLAGS
+ENABLE_DEVICE_MAPPER
+OS
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+AM_BACKSLASH
+AM_DEFAULT_VERBOSITY
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+LT_AGE
+LT_REVISION
+LT_CURRENT
+LT_RELEASE
+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
+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=''
+ac_user_opts='
+enable_option_checking
+enable_silent_rules
+with_readline
+enable_mtrace
+enable_device_mapper
+enable_selinux
+enable_discover_only
+enable_dynamic_loading
+enable_debug
+enable_read_only
+enable_pc98
+enable_hfs_extract_fs
+enable_dependency_tracking
+enable_threads
+enable_largefile
+enable_assert
+with_gnu_ld
+enable_rpath
+with_libpth_prefix
+with_included_regex
+with_packager
+with_packager_version
+with_packager_bug_reports
+enable_gcc_warnings
+enable_shared
+enable_static
+with_pic
+enable_fast_install
+with_sysroot
+enable_libtool_lock
+enable_nls
+with_libiconv_prefix
+with_libintl_prefix
+'
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CPP
+PKG_CONFIG
+PKG_CONFIG_PATH
+PKG_CONFIG_LIBDIR
+CHECK_CFLAGS
+CHECK_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'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+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
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  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=`$as_echo "$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=`$as_echo "$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 ;;
+
+  -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=`$as_echo "$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=`$as_echo "$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.
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  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" ;;
+    *)     $as_echo "$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
+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
+    $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used" >&2
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+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 ||
+$as_echo 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 GNU parted 3.0 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]
+  --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/parted]
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
+_ACEOF
+
+  cat <<\_ACEOF
+
+Program names:
+  --program-prefix=PREFIX            prepend PREFIX to installed program names
+  --program-suffix=SUFFIX            append SUFFIX to installed program names
+  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
+
+System types:
+  --build=BUILD     configure for building on BUILD [guessed]
+  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of GNU parted 3.0:";;
+   esac
+  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-silent-rules   less verbose build output (undo: `make V=1')
+  --disable-silent-rules  verbose build output (undo: `make V=0')
+  --enable-mtrace         enable malloc() debugging
+  --enable-device-mapper  enable device mapper support default=yes
+  --enable-selinux        enable SELinux support default=no
+  --enable-discover-only  support only reading/probing default=no
+  --enable-dynamic-loading  support dynamic fs libraries default=yes
+  --enable-debug          compile in assertions default=yes
+  --enable-read-only      disable writing (for debugging) default=no
+
+  --enable-pc98          build with pc98 support default=yes
+  --enable-hfs-extract-fs Extract special HFS files for debugging default=no
+  --enable-dependency-tracking
+                          do not reject slow dependency extractors
+  --disable-dependency-tracking
+                          speeds up one-time build
+  --enable-threads={posix|solaris|pth|win32}
+                          specify multithreading API
+  --disable-threads       build without multithread safety
+  --disable-largefile     omit support for large files
+  --disable-assert        turn off assertions
+  --disable-rpath         do not hardcode runtime library paths
+  --enable-gcc-warnings   turn on lots of GCC warnings (for developers)
+  --enable-shared[=PKGS]  build shared libraries [default=yes]
+  --enable-static[=PKGS]  build static libraries [default=yes]
+  --enable-fast-install[=PKGS]
+                          optimize for fast installation [default=yes]
+  --disable-libtool-lock  avoid locking (might break parallel builds)
+  --disable-nls           do not use Native Language Support
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-readline         support fancy command line editing
+  --with-gnu-ld           assume the C compiler uses GNU ld default=no
+  --with-libpth-prefix[=DIR]  search for libpth in DIR/include and DIR/lib
+  --without-libpth-prefix     don't search for libpth in includedir and libdir
+  --without-included-regex
+                          don't compile regex; this is the default on systems
+                          with recent-enough versions of the GNU C Library
+                          (use with caution on other systems).
+  --with-packager         String identifying the packager of this software
+  --with-packager-version Packager-specific version information
+  --with-packager-bug-reports
+                          Packager info for bug reports (URL/e-mail/...)
+  --with-pic              try to use only PIC/non-PIC objects [default=use
+                          both]
+  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
+  --with-sysroot=DIR Search for dependent libraries within DIR
+                        (or the compiler's sysroot if not specified).
+  --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
+
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
+  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
+  CHECK_CFLAGS
+              C compiler flags for CHECK, overriding pkg-config
+  CHECK_LIBS  linker flags for CHECK, 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 <bug-parted@gnu.org>.
+GNU parted home page: <http://www.gnu.org/software/parted/>.
+General help using GNU software: <http://www.gnu.org/gethelp/>.
+_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=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$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 guested configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+    elif test -f "$ac_srcdir/configure"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure" --help=recursive
+    else
+      $as_echo "$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
+GNU parted configure 3.0
+generated by GNU Autoconf 2.68.68-2105
+
+Copyright (C) 2011 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
+  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\""
+$as_echo "$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
+  $as_echo "$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_echo "$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_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$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\""
+$as_echo "$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
+  $as_echo "$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 ||
+        $as_test_x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$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\""
+$as_echo "$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
+  $as_echo "$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_echo "$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_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if eval \${$3+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( $as_echo "## --------------------------------- ##
+## Report this to bug-parted@gnu.org ##
+## --------------------------------- ##"
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_mongrel
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link 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\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$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\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$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_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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_compile
+
+# 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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=no"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+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 ()
+{
+if (sizeof (($2)))
+           return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  eval "$3=yes"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_type
+
+# 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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $2 (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#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 ()
+{
+return $2 ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_func
+
+# 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 ()
+{
+static int test_array [1 - 2 * !(($2) >= 0)];
+test_array [0] = 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 ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_hi=$ac_mid; break
+else
+  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.$ac_ext
+  done
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) < 0)];
+test_array [0] = 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 ()
+{
+static int test_array [1 - 2 * !(($2) >= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_lo=$ac_mid; break
+else
+  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.$ac_ext
+  done
+else
+  ac_lo= ac_hi=
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext 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 ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_hi=$ac_mid
+else
+  as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext 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 () { return $2; }
+static unsigned long int ulongval () { return $2; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+  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 <conftest.val; ac_retval=0
+else
+  ac_retval=1
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f conftest.val
+
+  fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_compute_int
+
+# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
+# ---------------------------------------------
+# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
+# accordingly.
+ac_fn_c_check_decl ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  as_decl_name=`echo $2|sed 's/ *(.*//'`
+  as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
+$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+#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
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_decl
+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 GNU parted $as_me 3.0, which was
+generated by GNU Autoconf 2.68.68-2105.  Invocation command line was
+
+  $ $0 $@
+
+_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
+  test -z "$as_dir" && as_dir=.
+    $as_echo "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=`$as_echo "$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=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    $as_echo "## ---------------- ##
+## 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_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$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
+
+    $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+      echo
+      for ac_var in $ac_subst_files
+      do
+       eval ac_val=\$$ac_var
+       case $ac_val in
+       *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+       esac
+       $as_echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$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
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  # We do not want a PATH search for config.site.
+  case $CONFIG_SITE in #((
+    -*)  ac_site_file1=./$CONFIG_SITE;;
+    */*) ac_site_file1=$CONFIG_SITE;;
+    *)   ac_site_file1=./$CONFIG_SITE;;
+  esac
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
+else
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file" \
+      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$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
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+as_fn_append ac_func_list " btowc"
+as_fn_append ac_func_list " canonicalize_file_name"
+as_fn_append ac_func_list " getcwd"
+as_fn_append ac_func_list " readlink"
+as_fn_append ac_func_list " realpath"
+as_fn_append ac_header_list " sys/param.h"
+as_fn_append ac_header_list " stdio_ext.h"
+as_fn_append ac_func_list " __fpending"
+as_fn_append ac_func_list " fpurge"
+as_fn_append ac_func_list " __fpurge"
+as_fn_append ac_func_list " __freading"
+as_fn_append ac_func_list " fsync"
+gl_getopt_required=GNU
+as_fn_append ac_header_list " getopt.h"
+as_fn_append ac_header_list " sys/time.h"
+as_fn_append ac_func_list " gettimeofday"
+as_fn_append ac_header_list " wchar.h"
+as_fn_append ac_header_list " stdint.h"
+as_fn_append ac_header_list " inttypes.h"
+as_fn_append ac_header_list " langinfo.h"
+as_fn_append ac_func_list " lstat"
+as_fn_append ac_func_list " mbsinit"
+as_fn_append ac_func_list " mbrtowc"
+as_fn_append ac_func_list " mkstemp"
+as_fn_append ac_func_list " nl_langinfo"
+as_fn_append ac_func_list " pathconf"
+as_fn_append ac_func_list " isblank"
+as_fn_append ac_func_list " iswctype"
+as_fn_append ac_func_list " wcscoll"
+as_fn_append ac_func_list " sleep"
+as_fn_append ac_func_list " strdup"
+as_fn_append ac_header_list " sys/socket.h"
+as_fn_append ac_func_list " catgets"
+as_fn_append ac_func_list " strndup"
+as_fn_append ac_header_list " sys/stat.h"
+as_fn_append ac_header_list " unistd.h"
+as_fn_append ac_func_list " usleep"
+as_fn_append ac_header_list " features.h"
+as_fn_append ac_func_list " wcrtomb"
+as_fn_append ac_func_list " iswcntrl"
+as_fn_append ac_header_list " wctype.h"
+as_fn_append ac_func_list " fcntl"
+as_fn_append ac_func_list " dup2"
+as_fn_append ac_header_list " xlocale.h"
+as_fn_append ac_func_list " newlocale"
+as_fn_append ac_header_list " priv.h"
+as_fn_append ac_func_list " setenv"
+as_fn_append ac_header_list " sys/mman.h"
+as_fn_append ac_func_list " mprotect"
+as_fn_append ac_func_list " symlink"
+as_fn_append ac_func_list " wctob"
+gt_needs="$gt_needs "
+as_fn_append ac_header_list " blkid/blkid.h"
+# 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,)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+       # 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
+         { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+         ac_cache_corrupted=:
+       else
+         { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+         eval $ac_var=\$ac_old_val
+       fi
+       { $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+       { $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
+$as_echo "$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=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error $? "run \`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
+
+
+
+# When the most recent signed tag is v1.8.8.1,
+# the above might set e.g., PACKAGE_VERSION='1.8.8.1.1-0bfc'
+
+
+
+ac_config_headers="$ac_config_headers lib/config.h:lib/config.h.in"
+
+ac_aux_dir=
+for ac_dir in build-aux "$srcdir"/build-aux; do
+  if test -f "$ac_dir/install-sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f "$ac_dir/install.sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f "$ac_dir/shtool"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  as_fn_error $? "cannot find install-sh, install.sh, or shtool in build-aux \"$srcdir\"/build-aux" "$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.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
+
+
+
+
+# Derive these numbers from $PACKAGE_VERSION, which is set
+# when autoconf creates configure (see AC_INIT, above).
+PED_MAJOR_VERSION=`echo "$PACKAGE_VERSION"|sed 's/\..*//'`
+PED_MINOR_VERSION=`echo "$PACKAGE_VERSION"|sed 's/^[0-9][0-9]*\.//;s/\..*//'`
+case $PACKAGE_VERSION in
+  *.*.*.*.*)
+    PED_MICRO_VERSION=`echo "$PACKAGE_VERSION" \
+      | sed 's/^^.*\.^.*\.//;s/\..*//'`
+    ;;
+  *) PED_MICRO_VERSION=0;;
+esac
+
+PED_INTERFACE_AGE=0
+PED_BINARY_AGE=0
+PED_VERSION_SUFFIX=
+PED_VERSION=$PED_MAJOR_VERSION.$PED_MINOR_VERSION.$PED_MICRO_VERSION$PED_VERSION_SUFFIX
+
+LT_RELEASE=$PED_MAJOR_VERSION.$PED_MINOR_VERSION
+LT_CURRENT=`expr $PED_MICRO_VERSION - $PED_INTERFACE_AGE`
+LT_REVISION=$PED_INTERFACE_AGE
+LT_AGE=`expr $PED_BINARY_AGE - $PED_INTERFACE_AGE`
+
+
+
+
+
+am__api_version='1.11a'
+
+# 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.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+  ./ | .// | /[cC]/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+       if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$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+set}" = set; 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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$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'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[\\\"\#\$\&\'\`$am_lf]*)
+    as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+  *[\\\"\#\$\&\'\`$am_lf\ \    ]*)
+    as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$*" = "X"; then
+       # -L didn't work.
+       set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$*" != "X $srcdir/configure conftest.file" \
+       && test "$*" != "X conftest.file $srcdir/configure"; then
+
+       # If neither matched, then we have a broken ls.  This can happen
+       # if, for instance, CONFIG_SHELL is bash and it inherits a
+       # broken ls alias from the environment.  This has actually
+       # happened.  Such a system could not be considered "sane".
+       as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment" "$LINENO" 5
+     fi
+     if test "$2" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
+   test "$2" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   as_fn_error $? "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+
+rm -f conftest.file
+
+test "$program_prefix" != NONE &&
+  program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+  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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$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
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+  if ${ac_cv_path_mkdir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in mkdir gmkdir; do
+        for ac_exec_ext in '' $ac_executable_extensions; do
+          { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+          case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+            'mkdir (GNU coreutils) '* | \
+            'mkdir (coreutils) '* | \
+            '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+set}" = set; 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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+
+mkdir_p="$MKDIR_P"
+case $mkdir_p in
+  [\\/$]* | ?:[\\/]*) ;;
+  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AWK+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_AWK="$ac_prog"
+    $as_echo "$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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  SET_MAKE=
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  am__isrc=' -I$(srcdir)'
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='parted'
+ VERSION='3.0'
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility.
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+
+
+
+
+
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+  enableval=$enable_silent_rules;
+fi
+
+case $enable_silent_rules in # (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=0;;
+esac
+AM_BACKSLASH='\'
+ # make --enable-silent-rules the default.
+
+# 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
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if ${ac_cv_build+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$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
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if ${ac_cv_host+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$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
+
+
+case "$host_os" in
+       linux*) OS=linux ;;
+       gnu*)   OS=gnu ;;
+       beos*)  OS=beos ;;
+       *)      as_fn_error $? "Unknown or unsupported OS \"$host_os\".  Only \"linux\", \"gnu\" and \"beos\" are supported in this version of GNU Parted." "$LINENO" 5 ;;
+esac
+
+
+
+# Check whether --with-readline was given.
+if test "${with_readline+set}" = set; then :
+  withval=$with_readline;
+else
+  with_readline=yes
+
+fi
+
+
+# Check whether --enable-mtrace was given.
+if test "${enable_mtrace+set}" = set; then :
+  enableval=$enable_mtrace;
+else
+  enable_mtrace=no
+
+fi
+
+if test "$enable_mtrace" = yes; then
+
+$as_echo "#define ENABLE_MTRACE 1" >>confdefs.h
+
+fi
+
+
+ENABLE_DEVICE_MAPPER=yes
+# Check whether --enable-device-mapper was given.
+if test "${enable_device_mapper+set}" = set; then :
+  enableval=$enable_device_mapper; ENABLE_DEVICE_MAPPER=$enable_device_mapper
+fi
+
+if test $ENABLE_DEVICE_MAPPER = yes; then
+
+$as_echo "#define ENABLE_DEVICE_MAPPER 1" >>confdefs.h
+
+fi
+
+# Check whether --enable-selinux was given.
+if test "${enable_selinux+set}" = set; then :
+  enableval=$enable_selinux;
+else
+  enable_selinux=no
+
+fi
+
+
+# Check whether --enable-discover-only was given.
+if test "${enable_discover_only+set}" = set; then :
+  enableval=$enable_discover_only;
+else
+  enable_discover_only=no
+
+fi
+
+if test "$enable_discover_only" = yes; then
+
+$as_echo "#define DISCOVER_ONLY 1" >>confdefs.h
+
+fi
+
+PARTED_LIBS=""
+# Check whether --enable-dynamic-loading was given.
+if test "${enable_dynamic_loading+set}" = set; then :
+  enableval=$enable_dynamic_loading;
+else
+  if test "$enable_discover_only" = yes; then
+               enable_dynamic_loading=no
+       else
+               enable_dynamic_loading=yes
+       fi
+
+fi
+
+if test "$enable_discover_only" = yes \
+ && test "$enable_dynamic_loading" = yes; then
+       as_fn_error $? "You can't use --enable-dynamic-loading and --disable-discover-only together
+       " "$LINENO" 5
+fi
+
+# Check whether --enable-debug was given.
+if test "${enable_debug+set}" = set; then :
+  enableval=$enable_debug;
+else
+  enable_debug=yes
+
+fi
+
+
+if test "$enable_debug" = yes; then
+
+$as_echo "#define DEBUG 1" >>confdefs.h
+
+fi
+
+# Check whether --enable-read-only was given.
+if test "${enable_read_only+set}" = set; then :
+  enableval=$enable_read_only;
+else
+  enable_read_only=no
+
+fi
+
+if test "$enable_read_only" = yes; then
+
+$as_echo "#define READ_ONLY 1" >>confdefs.h
+
+fi
+
+PARTEDLDFLAGS=
+
+
+# Check whether --enable-pc98 was given.
+if test "${enable_pc98+set}" = set; then :
+  enableval=$enable_pc98;
+else
+  enable_pc98=yes
+
+fi
+
+if test "$enable_pc98" = yes; then
+
+$as_echo "#define ENABLE_PC98 1" >>confdefs.h
+
+fi
+
+# Check whether --enable-hfs-extract-fs was given.
+if test "${enable_hfs_extract_fs+set}" = set; then :
+  enableval=$enable_hfs_extract_fs;
+else
+  enable_hfs_extract_fs=no
+
+fi
+
+if test "$enable_hfs_extract_fs" = yes; then
+
+$as_echo "#define HFS_EXTRACT_FS 1" >>confdefs.h
+
+fi
+
+AM_CPPFLAGS="$AM_CPPFLAGS -D_REENTRANT"
+
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+       @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then :
+  enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+  am__nodep='_no'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+  AMDEP_TRUE=
+  AMDEP_FALSE='#'
+else
+  AMDEP_TRUE='#'
+  AMDEP_FALSE=
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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"
+    $as_echo "$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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "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:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$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.
+$as_echo "$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\""
+$as_echo "$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
+  $as_echo "$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 ()
+{
+
+  ;
+  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.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$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\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$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+set}" = set && 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
+  ac_file=''
+fi
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$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_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "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\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$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_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$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 <stdio.h>
+int
+main ()
+{
+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.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "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\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$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\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$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
+       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  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\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$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_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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 ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+else
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+        CFLAGS="-g"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  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.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -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 **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+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
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+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
+
+depcc="$CC"   am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+       continue
+      else
+       break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok `-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CC_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+  am__fastdepCC_TRUE=
+  am__fastdepCC_FALSE='#'
+else
+  am__fastdepCC_TRUE='#'
+  am__fastdepCC_FALSE=
+fi
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5
+$as_echo_n "checking for library containing strerror... " >&6; }
+if ${ac_cv_search_strerror+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$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.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char strerror ();
+int
+main ()
+{
+return strerror ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' cposix; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_strerror=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_strerror+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_strerror+:} false; then :
+
+else
+  ac_cv_search_strerror=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5
+$as_echo "$ac_cv_search_strerror" >&6; }
+ac_res=$ac_cv_search_strerror
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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"
+    $as_echo "$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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "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:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$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.
+$as_echo "$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\""
+$as_echo "$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
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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 ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+else
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+        CFLAGS="-g"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  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.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -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 **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+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
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+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
+
+depcc="$CC"   am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+       continue
+      else
+       break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok `-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CC_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+  am__fastdepCC_TRUE=
+  am__fastdepCC_FALSE='#'
+else
+  am__fastdepCC_TRUE='#'
+  am__fastdepCC_FALSE=
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "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 ${ac_cv_prog_CPP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+                    Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # 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 <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # 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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+                    Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # 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 <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # 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_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$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
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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
+  test -z "$as_dir" && as_dir=.
+    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"
+      { test -f "$ac_path_GREP" && $as_test_x "$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
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo '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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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
+  test -z "$as_dir" && as_dir=.
+    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"
+      { test -f "$ac_path_EGREP" && $as_test_x "$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
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo '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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+if test $ac_cv_c_compiler_gnu = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC needs -traditional" >&5
+$as_echo_n "checking whether $CC needs -traditional... " >&6; }
+if ${ac_cv_prog_gcc_traditional+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+    ac_pattern="Autoconf.*'x'"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sgtty.h>
+Autoconf TIOCGETP
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "$ac_pattern" >/dev/null 2>&1; then :
+  ac_cv_prog_gcc_traditional=yes
+else
+  ac_cv_prog_gcc_traditional=no
+fi
+rm -f conftest*
+
+
+  if test $ac_cv_prog_gcc_traditional = no; then
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <termio.h>
+Autoconf TCGETA
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "$ac_pattern" >/dev/null 2>&1; then :
+  ac_cv_prog_gcc_traditional=yes
+fi
+rm -f conftest*
+
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_gcc_traditional" >&5
+$as_echo "$ac_cv_prog_gcc_traditional" >&6; }
+  if test $ac_cv_prog_gcc_traditional = yes; then
+    CC="$CC -traditional"
+  fi
+fi
+
+if test "x$CC" != xcc; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5
+$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5
+$as_echo_n "checking whether cc understands -c and -o together... " >&6; }
+fi
+set dummy $CC; ac_cc=`$as_echo "$2" |
+                     sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+# Make sure it works both with $CC and with simple cc.
+# We do the test twice because some compilers refuse to overwrite an
+# existing .o file with -o, though they will create one.
+ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+rm -f conftest2.*
+if { { 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\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } &&
+   test -f conftest2.$ac_objext && { { 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\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; };
+then
+  eval ac_cv_prog_cc_${ac_cc}_c_o=yes
+  if test "x$CC" != xcc; then
+    # Test first that cc exists at all.
+    if { ac_try='cc -c conftest.$ac_ext >&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\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+      ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+      rm -f conftest2.*
+      if { { 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\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } &&
+        test -f conftest2.$ac_objext && { { 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\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; };
+      then
+       # cc works too.
+       :
+      else
+       # cc exists but doesn't like -o.
+       eval ac_cv_prog_cc_${ac_cc}_c_o=no
+      fi
+    fi
+  fi
+else
+  eval ac_cv_prog_cc_${ac_cc}_c_o=no
+fi
+rm -f core conftest*
+
+fi
+if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+$as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h
+
+fi
+
+# FIXME: we rely on the cache variable name because
+# there is no other way.
+set dummy $CC
+am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
+if test "$am_t" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    $as_echo "$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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    $as_echo "$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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$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
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdc=yes
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+                  (('a' <= (c) && (c) <= 'i') \
+                    || ('j' <= (c) && (c) <= 'r') \
+                    || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+       || toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+  ac_cv_header_stdc=no
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+                 inttypes.h stdint.h unistd.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+  ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"
+if test "x$ac_cv_header_minix_config_h" = xyes; then :
+  MINIX=yes
+else
+  MINIX=
+fi
+
+
+  if test "$MINIX" = yes; then
+
+$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h
+
+
+$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h
+
+
+$as_echo "#define _MINIX 1" >>confdefs.h
+
+  fi
+
+        case "$host_os" in
+    hpux*)
+
+$as_echo "#define _XOPEN_SOURCE 500" >>confdefs.h
+
+      ;;
+  esac
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
+$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
+if ${ac_cv_safe_to_define___extensions__+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#         define __EXTENSIONS__ 1
+          $ac_includes_default
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_safe_to_define___extensions__=yes
+else
+  ac_cv_safe_to_define___extensions__=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
+$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
+  test $ac_cv_safe_to_define___extensions__ = yes &&
+    $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h
+
+  $as_echo "#define _ALL_SOURCE 1" >>confdefs.h
+
+  $as_echo "#define _GNU_SOURCE 1" >>confdefs.h
+
+  $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
+
+  $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5
+$as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; }
+if ${ac_cv_sys_largefile_source+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  while :; do
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h> /* for off_t */
+     #include <stdio.h>
+int
+main ()
+{
+int (*fp) (FILE *, off_t, int) = fseeko;
+     return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_sys_largefile_source=no; break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#define _LARGEFILE_SOURCE 1
+#include <sys/types.h> /* for off_t */
+     #include <stdio.h>
+int
+main ()
+{
+int (*fp) (FILE *, off_t, int) = fseeko;
+     return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_sys_largefile_source=1; break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  ac_cv_sys_largefile_source=unknown
+  break
+done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_source" >&5
+$as_echo "$ac_cv_sys_largefile_source" >&6; }
+case $ac_cv_sys_largefile_source in #(
+  no | unknown) ;;
+  *)
+cat >>confdefs.h <<_ACEOF
+#define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source
+_ACEOF
+;;
+esac
+rm -rf conftest*
+
+# We used to try defining _XOPEN_SOURCE=500 too, to work around a bug
+# in glibc 2.1.3, but that breaks too many other things.
+# If you want fseeko and ftello with glibc, upgrade to a fixed glibc.
+if test $ac_cv_sys_largefile_source != unknown; then
+
+$as_echo "#define HAVE_FSEEKO 1" >>confdefs.h
+
+fi
+
+   case $ac_cv_prog_cc_stdc in #(
+  no) :
+    ac_cv_prog_cc_c99=no; ac_cv_prog_cc_c89=no ;; #(
+  *) :
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5
+$as_echo_n "checking for $CC option to accept ISO C99... " >&6; }
+if ${ac_cv_prog_cc_c99+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c99=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <wchar.h>
+#include <stdio.h>
+
+// Check varargs macros.  These examples are taken from C99 6.10.3.5.
+#define debug(...) fprintf (stderr, __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
+  your preprocessor is broken;
+#endif
+#if BIG_OK
+#else
+  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 void
+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;
+  float fnumber;
+
+  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);
+}
+
+int
+main ()
+{
+
+  // Check bool.
+  _Bool success = false;
+
+  // Check restrict.
+  if (test_restrict ("String literal") == 0)
+    success = true;
+  char *restrict newvar = "Another string";
+
+  // Check varargs.
+  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[ni.number - 1] = 543;
+
+  // work around unused variable warnings
+  return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x'
+         || dynamic_array[ni.number - 1] != 543);
+
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99
+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
+  test "x$ac_cv_prog_cc_c99" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c99" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c99"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
+$as_echo "$ac_cv_prog_cc_c99" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c99" != xno; then :
+  ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -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 **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+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
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+  ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89
+else
+  ac_cv_prog_cc_stdc=no
+fi
+
+fi
+ ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO Standard C" >&5
+$as_echo_n "checking for $CC option to accept ISO Standard C... " >&6; }
+  if ${ac_cv_prog_cc_stdc+:} false; then :
+  $as_echo_n "(cached) " >&6
+fi
+
+  case $ac_cv_prog_cc_stdc in #(
+  no) :
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;; #(
+  '') :
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;; #(
+  *) :
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_stdc" >&5
+$as_echo "$ac_cv_prog_cc_stdc" >&6; } ;;
+esac
+
+
+
+
+
+
+  # Check whether --enable-threads was given.
+if test "${enable_threads+set}" = set; then :
+  enableval=$enable_threads; gl_use_threads=$enableval
+else
+  if test -n "$gl_use_threads_default"; then
+       gl_use_threads="$gl_use_threads_default"
+     else
+       case "$host_os" in
+                                                               osf*) gl_use_threads=no ;;
+         cygwin*)
+               case `uname -r` in
+                 1.[0-5].*) gl_use_threads=no ;;
+                 *)         gl_use_threads=yes ;;
+               esac
+               ;;
+         *)    gl_use_threads=yes ;;
+       esac
+     fi
+
+fi
+
+  if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
+    # For using <pthread.h>:
+    case "$host_os" in
+      osf*)
+        # On OSF/1, the compiler needs the flag -D_REENTRANT so that it
+        # groks <pthread.h>. cc also understands the flag -pthread, but
+        # we don't use it because 1. gcc-2.95 doesn't understand -pthread,
+        # 2. putting a flag into CPPFLAGS that has an effect on the linker
+        # causes the AC_LINK_IFELSE test below to succeed unexpectedly,
+        # leading to wrong values of LIBTHREAD and LTLIBTHREAD.
+        CPPFLAGS="$CPPFLAGS -D_REENTRANT"
+        ;;
+    esac
+    # Some systems optimize for single-threaded programs by default, and
+    # need special flags to disable these optimizations. For example, the
+    # definition of 'errno' in <errno.h>.
+    case "$host_os" in
+      aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;;
+      solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;;
+    esac
+  fi
+
+
+
+
+  # Code from module alloca:
+  # Code from module alloca-opt:
+  # Code from module alloca-opt-tests:
+  # Code from module announce-gen:
+  # Code from module arg-nonnull:
+  # Code from module argmatch:
+  # Code from module argmatch-tests:
+  # Code from module assert:
+  # Code from module binary-io:
+  # Code from module binary-io-tests:
+  # Code from module btowc:
+  # Code from module btowc-tests:
+  # Code from module c++defs:
+  # Code from module c-ctype:
+  # Code from module c-ctype-tests:
+  # Code from module c-strcase:
+  # Code from module c-strcase-tests:
+  # Code from module calloc-gnu:
+  # Code from module calloc-gnu-tests:
+  # Code from module calloc-posix:
+  # Code from module canonicalize-lgpl:
+  # Code from module canonicalize-lgpl-tests:
+  # Code from module close:
+  # Code from module close-stream:
+  # Code from module closeout:
+  # Code from module config-h:
+  # Code from module configmake:
+  # Code from module dirname:
+  # Code from module dirname-lgpl:
+  # Code from module dirname-tests:
+  # Code from module do-release-commit-and-tag:
+  # Code from module dosname:
+  # Code from module double-slash-root:
+  # Code from module dup2:
+  # Code from module dup2-tests:
+  # Code from module environ:
+  # Code from module environ-tests:
+  # Code from module errno:
+  # Code from module errno-tests:
+  # Code from module error:
+  # Code from module exitfail:
+  # Code from module extensions:
+
+  # Code from module fclose:
+  # Code from module fclose-tests:
+  # Code from module fcntl-h:
+  # Code from module fcntl-h-tests:
+  # Code from module fd-hook:
+  # Code from module fdl:
+  # Code from module fflush:
+
+  # Code from module fflush-tests:
+  # Code from module fpending:
+  # Code from module fpending-tests:
+  # Code from module fpurge:
+  # Code from module fpurge-tests:
+  # Code from module freading:
+  # Code from module freading-tests:
+  # Code from module fseeko:
+
+  # Code from module fseeko-tests:
+  # Code from module fsync:
+  # Code from module fsync-tests:
+  # Code from module ftell:
+  # Code from module ftell-tests:
+  # Code from module ftello:
+
+  # Code from module ftello-tests:
+  # Code from module gendocs:
+  # Code from module getopt-gnu:
+  # Code from module getopt-posix:
+  # Code from module getopt-posix-tests:
+  # Code from module getpagesize:
+  # Code from module gettext-h:
+  # Code from module gettimeofday:
+  # Code from module gettimeofday-tests:
+  # Code from module git-version-gen:
+  # Code from module gitlog-to-changelog:
+  # Code from module gnu-web-doc-update:
+  # Code from module gnumakefile:
+  # Code from module gnupload:
+  # Code from module havelib:
+  # Code from module ignore-value:
+  # Code from module ignore-value-tests:
+  # Code from module include_next:
+  # Code from module inline:
+  # Code from module intprops:
+  # Code from module intprops-tests:
+  # Code from module inttypes:
+  # Code from module inttypes-incomplete:
+  # Code from module inttypes-tests:
+  # Code from module langinfo:
+  # Code from module langinfo-tests:
+  # Code from module lib-ignore:
+  # Code from module localcharset:
+  # Code from module locale:
+  # Code from module locale-tests:
+  # Code from module localename:
+  # Code from module localename-tests:
+  # Code from module lock:
+  # Code from module lock-tests:
+  # Code from module long-options:
+  # Code from module lseek:
+  # Code from module lseek-tests:
+  # Code from module lstat:
+  # Code from module lstat-tests:
+  # Code from module maintainer-makefile:
+  # Code from module malloc-gnu:
+  # Code from module malloc-gnu-tests:
+  # Code from module malloc-posix:
+  # Code from module malloca:
+  # Code from module malloca-tests:
+  # Code from module manywarnings:
+  # Code from module mbrtowc:
+  # Code from module mbrtowc-tests:
+  # Code from module mbsinit:
+  # Code from module mbsinit-tests:
+  # Code from module mbtowc:
+  # Code from module mkstemp:
+  # Code from module mktempd:
+  # Code from module multiarch:
+  # Code from module nl_langinfo:
+  # Code from module nl_langinfo-tests:
+  # Code from module nocrash:
+  # Code from module open:
+  # Code from module open-tests:
+  # Code from module pathmax:
+  # Code from module priv-set:
+  # Code from module priv-set-tests:
+  # Code from module progname:
+  # Code from module putenv:
+  # Code from module quote:
+  # Code from module quotearg:
+  # Code from module quotearg-simple:
+  # Code from module quotearg-simple-tests:
+  # Code from module read:
+  # Code from module readlink:
+  # Code from module readlink-tests:
+  # Code from module realloc-gnu:
+  # Code from module realloc-gnu-tests:
+  # Code from module realloc-posix:
+  # Code from module regex:
+  # Code from module rpmatch:
+  # Code from module safe-read:
+  # Code from module same-inode:
+  # Code from module setenv:
+  # Code from module setenv-tests:
+  # Code from module setlocale:
+  # Code from module setlocale-tests:
+  # Code from module sleep:
+  # Code from module sleep-tests:
+  # Code from module ssize_t:
+  # Code from module stat:
+  # Code from module stat-tests:
+  # Code from module stdarg:
+
+  # Code from module stdbool:
+  # Code from module stdbool-tests:
+  # Code from module stddef:
+  # Code from module stddef-tests:
+  # Code from module stdint:
+  # Code from module stdint-tests:
+  # Code from module stdio:
+  # Code from module stdio-tests:
+  # Code from module stdlib:
+  # Code from module stdlib-tests:
+  # Code from module strdup-posix:
+  # Code from module streq:
+  # Code from module strerror:
+  # Code from module strerror-tests:
+  # Code from module strerror_r-posix:
+  # Code from module strerror_r-posix-tests:
+  # Code from module string:
+  # Code from module string-tests:
+  # Code from module strndup:
+  # Code from module strnlen:
+  # Code from module strnlen-tests:
+  # Code from module strtoll:
+  # Code from module strtoull:
+  # Code from module symlink:
+  # Code from module symlink-tests:
+  # Code from module sys_stat:
+  # Code from module sys_stat-tests:
+  # Code from module sys_time:
+  # Code from module sys_time-tests:
+  # Code from module tempname:
+  # Code from module thread:
+  # Code from module threadlib:
+
+
+
+  # Code from module time:
+  # Code from module time-tests:
+  # Code from module unistd:
+  # Code from module unistd-tests:
+  # Code from module unlink:
+  # Code from module unlink-tests:
+  # Code from module unlinkdir:
+  # Code from module unsetenv:
+  # Code from module unsetenv-tests:
+  # Code from module update-copyright:
+  # Code from module update-copyright-tests:
+  # Code from module useless-if-before-free:
+  # Code from module usleep:
+  # Code from module usleep-tests:
+  # Code from module vc-list-files:
+  # Code from module vc-list-files-tests:
+  # Code from module verify:
+  # Code from module verify-tests:
+  # Code from module version-etc:
+  # Code from module version-etc-fsf:
+  # Code from module version-etc-tests:
+  # Code from module warn-on-use:
+  # Code from module warnings:
+  # Code from module wchar:
+  # Code from module wchar-tests:
+  # Code from module wcrtomb:
+  # Code from module wcrtomb-tests:
+  # Code from module wctob:
+  # Code from module wctomb:
+  # Code from module wctype-h:
+  # Code from module wctype-h-tests:
+  # Code from module xalloc:
+  # Code from module xalloc-die:
+  # Code from module xalloc-die-tests:
+  # Code from module xalloc-oversized:
+  # Code from module xstrndup:
+  # Code from module xstrtol:
+  # Code from module xstrtol-tests:
+  # Code from module xstrtoll:
+  # Code from module xstrtoll-tests:
+  # Code from module yield:
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a usable (O_DIRECT-supporting) temporary dir" >&5
+$as_echo_n "checking for a usable (O_DIRECT-supporting) temporary dir... " >&6; }
+if ${parted_cv_func_open_O_DIRECT_temp_dir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      # First of all, if there is no O_DIRECT definition, use ".",
+      # and skip the run-test.
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <fcntl.h>
+#ifdef O_DIRECT
+frobnozzle
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "frobnozzle" >/dev/null 2>&1; then :
+  pe_have_O_DIRECT=yes
+else
+  pe_have_O_DIRECT=no
+fi
+rm -f conftest*
+
+      if test $pe_have_O_DIRECT = no; then
+         # With no O_DIRECT definition, "." is fine.
+         pe_cand_dirs=.
+      else
+         pe_cand_dirs=.
+         for pe_dir in "$HOME" "$TMPDIR"; do
+             case $pe_dir in
+             /tmp) ;;
+             /var/tmp) ;;
+             /dev/shm) ;;
+             /*) case $pe_dir in
+                 # Accept $HOME or $TMP only if the value is nice and boring.
+                 *^/a-zA-Z0-9_.-*) ;;
+                 *) pe_cand_dirs="$pe_cand_dirs $pe_dir";;
+                 esac
+             esac
+         done
+
+         case $PARTED_TMPDIR in
+             *^/a-zA-Z0-9_.-*) ;;
+             *) pe_cand_dirs="$PARTED_TMPDIR $pe_cand_dirs";;
+         esac
+
+         # This is the list of candidate directories.
+         pe_cand_dirs="$pe_cand_dirs /tmp /var/tmp /dev/shm"
+
+         PARTED_CANDIDATE_DIRS=$pe_cand_dirs
+         export PARTED_CANDIDATE_DIRS
+
+         if test "$cross_compiling" = yes; then :
+  # When cross-compiling, use ".".
+           parted_cv_func_open_O_DIRECT_temp_dir=.
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define MAX_LOGICAL_BLOCK_SIZE 4096
+static char g_buf[2 * MAX_LOGICAL_BLOCK_SIZE];
+
+static inline void *
+ptr_align (void const *ptr, size_t alignment)
+{
+  char const *p0 = ptr;
+  char const *p1 = p0 + alignment - 1;
+  return (void *) (p1 - (size_t) p1 % alignment);
+}
+
+static int
+create_input_file (char const *file, char const *buf, size_t n_bytes)
+{
+  int fd = open (file, O_CREAT | O_WRONLY, 0600);
+  if (fd < 0)
+    return 1;
+  if (write (fd, buf, n_bytes) != n_bytes)
+    {
+      close (fd);
+      return 1;
+    }
+  return !! close (fd);
+}
+
+static int
+try_o_direct (char const *file, size_t block_size)
+{
+  char *p = ptr_align (g_buf, MAX_LOGICAL_BLOCK_SIZE);
+  int fd;
+
+  if (!(p + block_size < g_buf + sizeof g_buf))
+    return 4;
+
+  fd = open (file, O_RDWR | O_DIRECT);
+  if (fd < 0)
+    return 1;
+
+  if (write (fd, p, block_size) != block_size)
+    return 1;
+
+  if (lseek (fd, 0, SEEK_SET) != 0)
+    return 1;
+
+  if (read (fd, p, block_size) != block_size)
+    return 1;
+
+  return !! close (fd);
+}
+
+#undef stpcpy
+#define stpcpy(a, b) my_stpcpy (a, b)
+static char *
+my_stpcpy (char *dest, const char *src)
+{
+  char *d = dest;
+  const char *s = src;
+  do *d++ = *s; while (*s++ != '\0');
+  return d - 1;
+}
+
+/* The base name of the file we'll create in the mkdtemp-returned
+   temporary directory.  */
+#define BASENAME "x"
+
+/* Return 0 upon failure, else the 1-based index of the first
+   useful directory name from PARTED_CANDIDATE_DIRS.  */
+int
+main ()
+{
+  char const *env_dirs;
+  char *dirs;
+  char *dir;
+  unsigned int n;
+  int found = 0;
+  size_t dirs_len;
+
+  if ((env_dirs = getenv ("PARTED_CANDIDATE_DIRS")) == NULL)
+    return 0;
+
+  dirs_len = strlen (env_dirs);
+  if ((dirs = strndup (env_dirs, dirs_len)) == NULL)
+    return 0;
+  dir = dirs;
+
+  for (n = 1; ; n++)
+    {
+      size_t dirname_len;
+      char *space;
+
+      /* Skip any leading spaces.  */
+      while (*dir == ' ')
+       ++dir;
+
+      space = strchr (dir, ' ');
+      if (space)
+       {
+         *space = '\0';
+         dirname_len = space - dir;
+       }
+      else
+       {
+         dirname_len = strlen (dir);
+       }
+
+      if (dirname_len != 0)
+       {
+         /* Create an mkdtemp template starting with dir.  */
+         char *tmp;
+         char *endp;
+         char const *base = "partedOD.XXXXXX";
+         /* Allocate enough space not just for the dir name, but
+            also for the name of the file to create within it.  */
+         char *template = malloc (dirname_len + 1 + strlen (base)
+                                  + 1 + strlen (BASENAME) + 1);
+         if (template != NULL
+             && (endp = stpcpy (stpcpy (stpcpy (template, dir), "/"), base))
+             && (tmp = mkdtemp (template)) != NULL)
+           {
+             /* Append "/BASENAME" to create the file name.  */
+             stpcpy (stpcpy (endp, "/"), BASENAME);
+
+             if (create_input_file (tmp, g_buf, sizeof g_buf) == 0
+                 && try_o_direct (tmp, 512) == 0
+                 && try_o_direct (tmp, MAX_LOGICAL_BLOCK_SIZE) == 0)
+               found = 1;
+
+             unlink (tmp); /* ignore failure */
+             *endp = '\0';
+             rmdir (tmp); /* ignore failure */
+           }
+         free (template);
+       }
+
+      if (found)
+       break;
+
+      dir += dirname_len + 1;
+      if (dirs + dirs_len < dir)
+       {
+         n = 0;
+         break;
+       }
+    }
+  free (dirs);
+
+  return n;
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  # If the above program exits with status 0, then
+           # there it found no useful directory.  Use ".".
+           parted_cv_func_open_O_DIRECT_temp_dir=.
+else
+  # It found one.  The exit status is an index into the list.
+           # We also run this code when the program fails to compile or
+           # to link, as will happen on systems without a mkdtemp function.
+           pe_err=$?; set _ $pe_cand_dirs; shift
+             eval parted_cv_func_open_O_DIRECT_temp_dir='$'$pe_err
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $parted_cv_func_open_O_DIRECT_temp_dir" >&5
+$as_echo "$parted_cv_func_open_O_DIRECT_temp_dir" >&6; }
+  PARTED_USABLE_TEST_DIR=$parted_cv_func_open_O_DIRECT_temp_dir
+
+
+  # If the result is ".", don't cache it.  The next user of
+  # the cache may well be running from a different file system.
+        if test "$parted_cv_func_open_O_DIRECT_temp_dir" = .; then
+    $as_unset parted_cv_func_open_O_DIRECT_temp_dir
+  fi
+
+
+# Check whether --enable-largefile was given.
+if test "${enable_largefile+set}" = set; then :
+  enableval=$enable_largefile;
+fi
+
+if test "$enable_largefile" != no; then
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
+$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
+if ${ac_cv_sys_largefile_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_sys_largefile_CC=no
+     if test "$GCC" != yes; then
+       ac_save_CC=$CC
+       while :; do
+        # IRIX 6.2 and later do not support large files by default,
+        # so use the C compiler's -n32 option if that helps.
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+        if ac_fn_c_try_compile "$LINENO"; then :
+  break
+fi
+rm -f core conftest.err conftest.$ac_objext
+        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
+        break
+       done
+       CC=$ac_save_CC
+       rm -f conftest.$ac_ext
+    fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
+$as_echo "$ac_cv_sys_largefile_CC" >&6; }
+  if test "$ac_cv_sys_largefile_CC" != no; then
+    CC=$CC$ac_cv_sys_largefile_CC
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
+if ${ac_cv_sys_file_offset_bits+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  while :; do
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+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.$ac_ext
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#define _FILE_OFFSET_BITS 64
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+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.$ac_ext
+  ac_cv_sys_file_offset_bits=unknown
+  break
+done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
+$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
+case $ac_cv_sys_file_offset_bits in #(
+  no | unknown) ;;
+  *)
+cat >>confdefs.h <<_ACEOF
+#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
+_ACEOF
+;;
+esac
+rm -rf conftest*
+  if test $ac_cv_sys_file_offset_bits = unknown; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
+$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
+if ${ac_cv_sys_large_files+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  while :; do
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+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.$ac_ext
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#define _LARGE_FILES 1
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+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.$ac_ext
+  ac_cv_sys_large_files=unknown
+  break
+done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
+$as_echo "$ac_cv_sys_large_files" >&6; }
+case $ac_cv_sys_large_files in #(
+  no | unknown) ;;
+  *)
+cat >>confdefs.h <<_ACEOF
+#define _LARGE_FILES $ac_cv_sys_large_files
+_ACEOF
+;;
+esac
+rm -rf conftest*
+  fi
+fi
+
+
+
+
+
+
+          LIBC_FATAL_STDERR_=1
+  export LIBC_FATAL_STDERR_
+
+ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
+if test "x$ac_cv_type_size_t" = xyes; then :
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define size_t unsigned int
+_ACEOF
+
+fi
+
+# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
+# for constant arguments.  Useless!
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5
+$as_echo_n "checking for working alloca.h... " >&6; }
+if ${ac_cv_working_alloca_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <alloca.h>
+int
+main ()
+{
+char *p = (char *) alloca (2 * sizeof (int));
+                         if (p) return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_working_alloca_h=yes
+else
+  ac_cv_working_alloca_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5
+$as_echo "$ac_cv_working_alloca_h" >&6; }
+if test $ac_cv_working_alloca_h = yes; then
+
+$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5
+$as_echo_n "checking for alloca... " >&6; }
+if ${ac_cv_func_alloca_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __GNUC__
+# define alloca __builtin_alloca
+#else
+# ifdef _MSC_VER
+#  include <malloc.h>
+#  define alloca _alloca
+# else
+#  ifdef HAVE_ALLOCA_H
+#   include <alloca.h>
+#  else
+#   ifdef _AIX
+ #pragma alloca
+#   else
+#    ifndef alloca /* predefined by HP cc +Olibcalls */
+void *alloca (size_t);
+#    endif
+#   endif
+#  endif
+# endif
+#endif
+
+int
+main ()
+{
+char *p = (char *) alloca (1);
+                                   if (p) return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_func_alloca_works=yes
+else
+  ac_cv_func_alloca_works=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5
+$as_echo "$ac_cv_func_alloca_works" >&6; }
+
+if test $ac_cv_func_alloca_works = yes; then
+
+$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h
+
+else
+  # The SVR3 libPW and SVR4 libucb both contain incompatible functions
+# that cause trouble.  Some versions do not even contain alloca or
+# contain a buggy version.  If you still want to use their alloca,
+# use ar to extract alloca.o from them instead of compiling alloca.c.
+
+
+
+
+
+ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
+
+$as_echo "#define C_ALLOCA 1" >>confdefs.h
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5
+$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; }
+if ${ac_cv_os_cray+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#if defined CRAY && ! defined CRAY2
+webecray
+#else
+wenotbecray
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "webecray" >/dev/null 2>&1; then :
+  ac_cv_os_cray=yes
+else
+  ac_cv_os_cray=no
+fi
+rm -f conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5
+$as_echo "$ac_cv_os_cray" >&6; }
+if test $ac_cv_os_cray = yes; then
+  for ac_func in _getb67 GETB67 getb67; do
+    as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+
+cat >>confdefs.h <<_ACEOF
+#define CRAY_STACKSEG_END $ac_func
+_ACEOF
+
+    break
+fi
+
+  done
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5
+$as_echo_n "checking stack direction for C alloca... " >&6; }
+if ${ac_cv_c_stack_direction+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  ac_cv_c_stack_direction=0
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+find_stack_direction ()
+{
+  static char *addr = 0;
+  auto char dummy;
+  if (addr == 0)
+    {
+      addr = &dummy;
+      return find_stack_direction ();
+    }
+  else
+    return (&dummy > addr) ? 1 : -1;
+}
+
+int
+main ()
+{
+  return find_stack_direction () < 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_c_stack_direction=1
+else
+  ac_cv_c_stack_direction=-1
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5
+$as_echo "$ac_cv_c_stack_direction" >&6; }
+cat >>confdefs.h <<_ACEOF
+#define STACK_DIRECTION $ac_cv_c_stack_direction
+_ACEOF
+
+
+fi
+
+
+  GNULIB_BTOWC=0;
+  GNULIB_WCTOB=0;
+  GNULIB_MBSINIT=0;
+  GNULIB_MBRTOWC=0;
+  GNULIB_MBRLEN=0;
+  GNULIB_MBSRTOWCS=0;
+  GNULIB_MBSNRTOWCS=0;
+  GNULIB_WCRTOMB=0;
+  GNULIB_WCSRTOMBS=0;
+  GNULIB_WCSNRTOMBS=0;
+  GNULIB_WCWIDTH=0;
+  GNULIB_WMEMCHR=0;
+  GNULIB_WMEMCMP=0;
+  GNULIB_WMEMCPY=0;
+  GNULIB_WMEMMOVE=0;
+  GNULIB_WMEMSET=0;
+  GNULIB_WCSLEN=0;
+  GNULIB_WCSNLEN=0;
+  GNULIB_WCSCPY=0;
+  GNULIB_WCPCPY=0;
+  GNULIB_WCSNCPY=0;
+  GNULIB_WCPNCPY=0;
+  GNULIB_WCSCAT=0;
+  GNULIB_WCSNCAT=0;
+  GNULIB_WCSCMP=0;
+  GNULIB_WCSNCMP=0;
+  GNULIB_WCSCASECMP=0;
+  GNULIB_WCSNCASECMP=0;
+  GNULIB_WCSCOLL=0;
+  GNULIB_WCSXFRM=0;
+  GNULIB_WCSDUP=0;
+  GNULIB_WCSCHR=0;
+  GNULIB_WCSRCHR=0;
+  GNULIB_WCSCSPN=0;
+  GNULIB_WCSSPN=0;
+  GNULIB_WCSPBRK=0;
+  GNULIB_WCSSTR=0;
+  GNULIB_WCSTOK=0;
+  GNULIB_WCSWIDTH=0;
+    HAVE_BTOWC=1;
+  HAVE_MBSINIT=1;
+  HAVE_MBRTOWC=1;
+  HAVE_MBRLEN=1;
+  HAVE_MBSRTOWCS=1;
+  HAVE_MBSNRTOWCS=1;
+  HAVE_WCRTOMB=1;
+  HAVE_WCSRTOMBS=1;
+  HAVE_WCSNRTOMBS=1;
+  HAVE_WMEMCHR=1;
+  HAVE_WMEMCMP=1;
+  HAVE_WMEMCPY=1;
+  HAVE_WMEMMOVE=1;
+  HAVE_WMEMSET=1;
+  HAVE_WCSLEN=1;
+  HAVE_WCSNLEN=1;
+  HAVE_WCSCPY=1;
+  HAVE_WCPCPY=1;
+  HAVE_WCSNCPY=1;
+  HAVE_WCPNCPY=1;
+  HAVE_WCSCAT=1;
+  HAVE_WCSNCAT=1;
+  HAVE_WCSCMP=1;
+  HAVE_WCSNCMP=1;
+  HAVE_WCSCASECMP=1;
+  HAVE_WCSNCASECMP=1;
+  HAVE_WCSCOLL=1;
+  HAVE_WCSXFRM=1;
+  HAVE_WCSDUP=1;
+  HAVE_WCSCHR=1;
+  HAVE_WCSRCHR=1;
+  HAVE_WCSCSPN=1;
+  HAVE_WCSSPN=1;
+  HAVE_WCSPBRK=1;
+  HAVE_WCSSTR=1;
+  HAVE_WCSTOK=1;
+  HAVE_WCSWIDTH=1;
+  HAVE_DECL_WCTOB=1;
+  HAVE_DECL_WCWIDTH=1;
+  REPLACE_MBSTATE_T=0;
+  REPLACE_BTOWC=0;
+  REPLACE_WCTOB=0;
+  REPLACE_MBSINIT=0;
+  REPLACE_MBRTOWC=0;
+  REPLACE_MBRLEN=0;
+  REPLACE_MBSRTOWCS=0;
+  REPLACE_MBSNRTOWCS=0;
+  REPLACE_WCRTOMB=0;
+  REPLACE_WCSRTOMBS=0;
+  REPLACE_WCSNRTOMBS=0;
+  REPLACE_WCWIDTH=0;
+  REPLACE_WCSWIDTH=0;
+
+
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether <wchar.h> uses 'inline' correctly" >&5
+$as_echo_n "checking whether <wchar.h> uses 'inline' correctly... " >&6; }
+if ${gl_cv_header_wchar_h_correct_inline+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  gl_cv_header_wchar_h_correct_inline=yes
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+       #define wcstod renamed_wcstod
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+extern int zero (void);
+int main () { return zero(); }
+
+_ACEOF
+     if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+       mv conftest.$ac_objext conftest1.$ac_objext
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+         #define wcstod renamed_wcstod
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int zero (void) { return 0; }
+
+_ACEOF
+       if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+         mv conftest.$ac_objext conftest2.$ac_objext
+         if $CC -o conftest$ac_exeext $CFLAGS $LDFLAGS conftest1.$ac_objext conftest2.$ac_objext $LIBS >&5 2>&1; then
+           :
+         else
+           gl_cv_header_wchar_h_correct_inline=no
+         fi
+       fi
+     fi
+     rm -f conftest1.$ac_objext conftest2.$ac_objext conftest$ac_exeext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_wchar_h_correct_inline" >&5
+$as_echo "$gl_cv_header_wchar_h_correct_inline" >&6; }
+  if test $gl_cv_header_wchar_h_correct_inline = no; then
+    as_fn_error $? "<wchar.h> cannot be used with this compiler ($CC $CFLAGS $CPPFLAGS).
+This is a known interoperability problem of glibc <= 2.5 with gcc >= 4.3 in
+C99 mode. You have four options:
+  - Add the flag -fgnu89-inline to CC and reconfigure, or
+  - Fix your include files, using parts of
+    <http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=b037a293a48718af30d706c2e18c929d0e69a621>, or
+  - Use a gcc version older than 4.3, or
+  - Don't use the flags -std=c99 or -std=gnu99.
+Configuration aborted." "$LINENO" 5
+  fi
+
+
+
+
+  for ac_func in $ac_func_list
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5
+$as_echo_n "checking for nl_langinfo and CODESET... " >&6; }
+if ${am_cv_langinfo_codeset+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <langinfo.h>
+int
+main ()
+{
+char* cs = nl_langinfo(CODESET); return !cs;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  am_cv_langinfo_codeset=yes
+else
+  am_cv_langinfo_codeset=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_langinfo_codeset" >&5
+$as_echo "$am_cv_langinfo_codeset" >&6; }
+  if test $am_cv_langinfo_codeset = yes; then
+
+$as_echo "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h
+
+  fi
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a traditional french locale" >&5
+$as_echo_n "checking for a traditional french locale... " >&6; }
+if ${gt_cv_locale_fr+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+  /* Check whether the given locale name is recognized by the system.  */
+#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
+  /* On native Win32, setlocale(category, "") looks at the system settings,
+     not at the environment variables.  Also, when an encoding suffix such
+     as ".65001" or ".54936" is speficied, it succeeds but sets the LC_CTYPE
+     category of the locale to "C".  */
+  if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
+      || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
+    return 1;
+#else
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+#endif
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.
+     On MirBSD 10, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "UTF-8".  */
+#if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0
+        || strcmp (cs, "UTF-8") == 0)
+      return 1;
+  }
+#endif
+#ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+  /* Check whether in the abbreviation of the second month, the second
+     character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is only
+     one byte long. This excludes the UTF-8 encoding.  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+  if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1;
+  /* Check whether the decimal separator is a comma.
+     On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+     are nl_langinfo(RADIXCHAR) are both ".".  */
+  if (localeconv () ->decimal_point[0] != ',') return 1;
+  return 0;
+}
+
+_ACEOF
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest$ac_exeext; then
+      case "$host_os" in
+        # Handle native Windows specially, because there setlocale() interprets
+        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "fr" or "fra" as "French" or "French_France.1252",
+        # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
+        # "ja" as "Japanese" or "Japanese_Japan.932",
+        # and similar.
+        mingw*)
+          # Test for the native Win32 locale name.
+          if (LC_ALL=French_France.1252 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr=French_France.1252
+          else
+            # None found.
+            gt_cv_locale_fr=none
+          fi
+          ;;
+        *)
+          # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+          # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+          # configure script would override the LC_ALL setting. Likewise for
+          # LC_CTYPE, which is also set at the beginning of the configure script.
+          # Test for the usual locale name.
+          if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr=fr_FR
+          else
+            # Test for the locale name with explicit encoding suffix.
+            if (LC_ALL=fr_FR.ISO-8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+              gt_cv_locale_fr=fr_FR.ISO-8859-1
+            else
+              # Test for the AIX, OSF/1, FreeBSD, NetBSD, OpenBSD locale name.
+              if (LC_ALL=fr_FR.ISO8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                gt_cv_locale_fr=fr_FR.ISO8859-1
+              else
+                # Test for the HP-UX locale name.
+                if (LC_ALL=fr_FR.iso88591 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                  gt_cv_locale_fr=fr_FR.iso88591
+                else
+                  # Test for the Solaris 7 locale name.
+                  if (LC_ALL=fr LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                    gt_cv_locale_fr=fr
+                  else
+                    # None found.
+                    gt_cv_locale_fr=none
+                  fi
+                fi
+              fi
+            fi
+          fi
+          ;;
+      esac
+    fi
+    rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_fr" >&5
+$as_echo "$gt_cv_locale_fr" >&6; }
+  LOCALE_FR=$gt_cv_locale_fr
+
+
+
+  GNULIB__EXIT=0;
+  GNULIB_ATOLL=0;
+  GNULIB_CALLOC_POSIX=0;
+  GNULIB_CANONICALIZE_FILE_NAME=0;
+  GNULIB_GETLOADAVG=0;
+  GNULIB_GETSUBOPT=0;
+  GNULIB_GRANTPT=0;
+  GNULIB_MALLOC_POSIX=0;
+  GNULIB_MBTOWC=0;
+  GNULIB_MKDTEMP=0;
+  GNULIB_MKOSTEMP=0;
+  GNULIB_MKOSTEMPS=0;
+  GNULIB_MKSTEMP=0;
+  GNULIB_MKSTEMPS=0;
+  GNULIB_PTSNAME=0;
+  GNULIB_PUTENV=0;
+  GNULIB_RANDOM_R=0;
+  GNULIB_REALLOC_POSIX=0;
+  GNULIB_REALPATH=0;
+  GNULIB_RPMATCH=0;
+  GNULIB_SETENV=0;
+  GNULIB_STRTOD=0;
+  GNULIB_STRTOLL=0;
+  GNULIB_STRTOULL=0;
+  GNULIB_SYSTEM_POSIX=0;
+  GNULIB_UNLOCKPT=0;
+  GNULIB_UNSETENV=0;
+  GNULIB_WCTOMB=0;
+    HAVE__EXIT=1;
+  HAVE_ATOLL=1;
+  HAVE_CANONICALIZE_FILE_NAME=1;
+  HAVE_DECL_GETLOADAVG=1;
+  HAVE_GETSUBOPT=1;
+  HAVE_GRANTPT=1;
+  HAVE_MKDTEMP=1;
+  HAVE_MKOSTEMP=1;
+  HAVE_MKOSTEMPS=1;
+  HAVE_MKSTEMP=1;
+  HAVE_MKSTEMPS=1;
+  HAVE_PTSNAME=1;
+  HAVE_RANDOM_H=1;
+  HAVE_RANDOM_R=1;
+  HAVE_REALPATH=1;
+  HAVE_RPMATCH=1;
+  HAVE_SETENV=1;
+  HAVE_DECL_SETENV=1;
+  HAVE_STRTOD=1;
+  HAVE_STRTOLL=1;
+  HAVE_STRTOULL=1;
+  HAVE_STRUCT_RANDOM_DATA=1;
+  HAVE_SYS_LOADAVG_H=0;
+  HAVE_UNLOCKPT=1;
+  HAVE_DECL_UNSETENV=1;
+  REPLACE_CALLOC=0;
+  REPLACE_CANONICALIZE_FILE_NAME=0;
+  REPLACE_MALLOC=0;
+  REPLACE_MBTOWC=0;
+  REPLACE_MKSTEMP=0;
+  REPLACE_PUTENV=0;
+  REPLACE_REALLOC=0;
+  REPLACE_REALPATH=0;
+  REPLACE_SETENV=0;
+  REPLACE_STRTOD=0;
+  REPLACE_UNSETENV=0;
+  REPLACE_WCTOMB=0;
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether malloc, realloc, calloc are POSIX compliant" >&5
+$as_echo_n "checking whether malloc, realloc, calloc are POSIX compliant... " >&6; }
+if ${gl_cv_func_malloc_posix+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+                        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+             choke me
+             #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_func_malloc_posix=yes
+else
+  gl_cv_func_malloc_posix=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_malloc_posix" >&5
+$as_echo "$gl_cv_func_malloc_posix" >&6; }
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether // is distinct from /" >&5
+$as_echo_n "checking whether // is distinct from /... " >&6; }
+if ${gl_cv_double_slash_root+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+   if test x"$cross_compiling" = xyes ; then
+        # When cross-compiling, there is no way to tell whether // is special
+        # short of a list of hosts.  However, the only known hosts to date
+        # that have a distinct // are Apollo DomainOS (too old to port to),
+        # Cygwin, and z/OS.  If anyone knows of another system for which // has
+        # special semantics and is distinct from /, please report it to
+        # <bug-gnulib@gnu.org>.
+        case $host in
+          *-cygwin | i370-ibm-openedition)
+            gl_cv_double_slash_root=yes ;;
+          *)
+            # Be optimistic and assume that / and // are the same when we
+            # don't know.
+            gl_cv_double_slash_root='unknown, assuming no' ;;
+        esac
+      else
+        set x `ls -di / // 2>/dev/null`
+        if test "$2" = "$4" && wc //dev/null >/dev/null 2>&1; then
+          gl_cv_double_slash_root=no
+        else
+          gl_cv_double_slash_root=yes
+        fi
+      fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_double_slash_root" >&5
+$as_echo "$gl_cv_double_slash_root" >&6; }
+  if test "$gl_cv_double_slash_root" = yes; then
+
+$as_echo "#define DOUBLE_SLASH_IS_DISTINCT_ROOT 1" >>confdefs.h
+
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether realpath works" >&5
+$as_echo_n "checking whether realpath works... " >&6; }
+if ${gl_cv_func_realpath_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    touch conftest.a
+    if test "$cross_compiling" = yes; then :
+  gl_cv_func_realpath_works="guessing no"
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+
+#include <stdlib.h>
+#if defined __MACH__ && defined __APPLE__
+/* Avoid a crash on MacOS X.  */
+#include <mach/mach.h>
+#include <mach/mach_error.h>
+#include <mach/thread_status.h>
+#include <mach/exception.h>
+#include <mach/task.h>
+#include <pthread.h>
+/* The exception port on which our thread listens.  */
+static mach_port_t our_exception_port;
+/* The main function of the thread listening for exceptions of type
+   EXC_BAD_ACCESS.  */
+static void *
+mach_exception_thread (void *arg)
+{
+  /* Buffer for a message to be received.  */
+  struct {
+    mach_msg_header_t head;
+    mach_msg_body_t msgh_body;
+    char data[1024];
+  } msg;
+  mach_msg_return_t retval;
+  /* Wait for a message on the exception port.  */
+  retval = mach_msg (&msg.head, MACH_RCV_MSG | MACH_RCV_LARGE, 0, sizeof (msg),
+                     our_exception_port, MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL);
+  if (retval != MACH_MSG_SUCCESS)
+    abort ();
+  exit (1);
+}
+static void
+nocrash_init (void)
+{
+  mach_port_t self = mach_task_self ();
+  /* Allocate a port on which the thread shall listen for exceptions.  */
+  if (mach_port_allocate (self, MACH_PORT_RIGHT_RECEIVE, &our_exception_port)
+      == KERN_SUCCESS) {
+    /* See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/mach_port_insert_right.html.  */
+    if (mach_port_insert_right (self, our_exception_port, our_exception_port,
+                                MACH_MSG_TYPE_MAKE_SEND)
+        == KERN_SUCCESS) {
+      /* The exceptions we want to catch.  Only EXC_BAD_ACCESS is interesting
+         for us.  */
+      exception_mask_t mask = EXC_MASK_BAD_ACCESS;
+      /* Create the thread listening on the exception port.  */
+      pthread_attr_t attr;
+      pthread_t thread;
+      if (pthread_attr_init (&attr) == 0
+          && pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED) == 0
+          && pthread_create (&thread, &attr, mach_exception_thread, NULL) == 0) {
+        pthread_attr_destroy (&attr);
+        /* Replace the exception port info for these exceptions with our own.
+           Note that we replace the exception port for the entire task, not only
+           for a particular thread.  This has the effect that when our exception
+           port gets the message, the thread specific exception port has already
+           been asked, and we don't need to bother about it.
+           See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/task_set_exception_ports.html.  */
+        task_set_exception_ports (self, mask, our_exception_port,
+                                  EXCEPTION_DEFAULT, MACHINE_THREAD_STATE);
+      }
+    }
+  }
+}
+#else
+/* Avoid a crash on POSIX systems.  */
+#include <signal.h>
+/* A POSIX signal handler.  */
+static void
+exception_handler (int sig)
+{
+  exit (1);
+}
+static void
+nocrash_init (void)
+{
+#ifdef SIGSEGV
+  signal (SIGSEGV, exception_handler);
+#endif
+#ifdef SIGBUS
+  signal (SIGBUS, exception_handler);
+#endif
+}
+#endif
+
+        #include <stdlib.h>
+
+int
+main ()
+{
+
+        int result = 0;
+        {
+          char *name = realpath ("conftest.a", NULL);
+          if (!(name && *name == '/'))
+            result |= 1;
+        }
+        {
+          char *name = realpath ("conftest.b/../conftest.a", NULL);
+          if (name != NULL)
+            result |= 2;
+        }
+        {
+          char *name = realpath ("conftest.a/", NULL);
+          if (name != NULL)
+            result |= 4;
+        }
+        return result;
+
+  ;
+  return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_realpath_works=yes
+else
+  gl_cv_func_realpath_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_realpath_works" >&5
+$as_echo "$gl_cv_func_realpath_works" >&6; }
+  if test "$gl_cv_func_realpath_works" = yes; then
+
+$as_echo "#define FUNC_REALPATH_WORKS 1" >>confdefs.h
+
+  fi
+
+
+
+
+  for ac_header in $ac_header_list
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+
+
+
+
+
+
+  GNULIB_CHOWN=0;
+  GNULIB_CLOSE=0;
+  GNULIB_DUP2=0;
+  GNULIB_DUP3=0;
+  GNULIB_ENVIRON=0;
+  GNULIB_EUIDACCESS=0;
+  GNULIB_FACCESSAT=0;
+  GNULIB_FCHDIR=0;
+  GNULIB_FCHOWNAT=0;
+  GNULIB_FSYNC=0;
+  GNULIB_FTRUNCATE=0;
+  GNULIB_GETCWD=0;
+  GNULIB_GETDOMAINNAME=0;
+  GNULIB_GETDTABLESIZE=0;
+  GNULIB_GETGROUPS=0;
+  GNULIB_GETHOSTNAME=0;
+  GNULIB_GETLOGIN=0;
+  GNULIB_GETLOGIN_R=0;
+  GNULIB_GETPAGESIZE=0;
+  GNULIB_GETUSERSHELL=0;
+  GNULIB_GROUP_MEMBER=0;
+  GNULIB_LCHOWN=0;
+  GNULIB_LINK=0;
+  GNULIB_LINKAT=0;
+  GNULIB_LSEEK=0;
+  GNULIB_PIPE=0;
+  GNULIB_PIPE2=0;
+  GNULIB_PREAD=0;
+  GNULIB_PWRITE=0;
+  GNULIB_READ=0;
+  GNULIB_READLINK=0;
+  GNULIB_READLINKAT=0;
+  GNULIB_RMDIR=0;
+  GNULIB_SLEEP=0;
+  GNULIB_SYMLINK=0;
+  GNULIB_SYMLINKAT=0;
+  GNULIB_TTYNAME_R=0;
+  GNULIB_UNISTD_H_GETOPT=0;
+  GNULIB_UNISTD_H_NONBLOCKING=0;
+  GNULIB_UNISTD_H_SIGPIPE=0;
+  GNULIB_UNLINK=0;
+  GNULIB_UNLINKAT=0;
+  GNULIB_USLEEP=0;
+  GNULIB_WRITE=0;
+    HAVE_CHOWN=1;
+  HAVE_DUP2=1;
+  HAVE_DUP3=1;
+  HAVE_EUIDACCESS=1;
+  HAVE_FACCESSAT=1;
+  HAVE_FCHDIR=1;
+  HAVE_FCHOWNAT=1;
+  HAVE_FSYNC=1;
+  HAVE_FTRUNCATE=1;
+  HAVE_GETDTABLESIZE=1;
+  HAVE_GETGROUPS=1;
+  HAVE_GETHOSTNAME=1;
+  HAVE_GETLOGIN=1;
+  HAVE_GETPAGESIZE=1;
+  HAVE_GROUP_MEMBER=1;
+  HAVE_LCHOWN=1;
+  HAVE_LINK=1;
+  HAVE_LINKAT=1;
+  HAVE_PIPE=1;
+  HAVE_PIPE2=1;
+  HAVE_PREAD=1;
+  HAVE_PWRITE=1;
+  HAVE_READLINK=1;
+  HAVE_READLINKAT=1;
+  HAVE_SLEEP=1;
+  HAVE_SYMLINK=1;
+  HAVE_SYMLINKAT=1;
+  HAVE_UNLINKAT=1;
+  HAVE_USLEEP=1;
+  HAVE_DECL_ENVIRON=1;
+  HAVE_DECL_FCHDIR=1;
+  HAVE_DECL_GETDOMAINNAME=1;
+  HAVE_DECL_GETLOGIN_R=1;
+  HAVE_DECL_GETPAGESIZE=1;
+  HAVE_DECL_GETUSERSHELL=1;
+  HAVE_DECL_TTYNAME_R=1;
+  HAVE_OS_H=0;
+  HAVE_SYS_PARAM_H=0;
+  REPLACE_CHOWN=0;
+  REPLACE_CLOSE=0;
+  REPLACE_DUP=0;
+  REPLACE_DUP2=0;
+  REPLACE_FCHOWNAT=0;
+  REPLACE_GETCWD=0;
+  REPLACE_GETDOMAINNAME=0;
+  REPLACE_GETLOGIN_R=0;
+  REPLACE_GETGROUPS=0;
+  REPLACE_GETPAGESIZE=0;
+  REPLACE_LCHOWN=0;
+  REPLACE_LINK=0;
+  REPLACE_LINKAT=0;
+  REPLACE_LSEEK=0;
+  REPLACE_PREAD=0;
+  REPLACE_PWRITE=0;
+  REPLACE_READ=0;
+  REPLACE_READLINK=0;
+  REPLACE_RMDIR=0;
+  REPLACE_SLEEP=0;
+  REPLACE_SYMLINK=0;
+  REPLACE_TTYNAME_R=0;
+  REPLACE_UNLINK=0;
+  REPLACE_UNLINKAT=0;
+  REPLACE_USLEEP=0;
+  REPLACE_WRITE=0;
+  UNISTD_H_HAVE_WINSOCK2_H=0;
+  UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS=0;
+
+
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS basename-lgpl.$ac_objext"
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS dirname-lgpl.$ac_objext"
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS stripslash.$ac_objext"
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the preprocessor supports include_next" >&5
+$as_echo_n "checking whether the preprocessor supports include_next... " >&6; }
+if ${gl_cv_have_include_next+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  rm -rf conftestd1a conftestd1b conftestd2
+     mkdir conftestd1a conftestd1b conftestd2
+                                                  cat <<EOF > conftestd1a/conftest.h
+#define DEFINED_IN_CONFTESTD1
+#include_next <conftest.h>
+#ifdef DEFINED_IN_CONFTESTD2
+int foo;
+#else
+#error "include_next doesn't work"
+#endif
+EOF
+     cat <<EOF > conftestd1b/conftest.h
+#define DEFINED_IN_CONFTESTD1
+#include <stdio.h>
+#include_next <conftest.h>
+#ifdef DEFINED_IN_CONFTESTD2
+int foo;
+#else
+#error "include_next doesn't work"
+#endif
+EOF
+     cat <<EOF > conftestd2/conftest.h
+#ifndef DEFINED_IN_CONFTESTD1
+#error "include_next test doesn't work"
+#endif
+#define DEFINED_IN_CONFTESTD2
+EOF
+     gl_save_CPPFLAGS="$CPPFLAGS"
+     CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1b -Iconftestd2"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <conftest.h>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_have_include_next=yes
+else
+  CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1a -Iconftestd2"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <conftest.h>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_have_include_next=buggy
+else
+  gl_cv_have_include_next=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+     CPPFLAGS="$gl_save_CPPFLAGS"
+     rm -rf conftestd1a conftestd1b conftestd2
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_have_include_next" >&5
+$as_echo "$gl_cv_have_include_next" >&6; }
+  PRAGMA_SYSTEM_HEADER=
+  if test $gl_cv_have_include_next = yes; then
+    INCLUDE_NEXT=include_next
+    INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next
+    if test -n "$GCC"; then
+      PRAGMA_SYSTEM_HEADER='#pragma GCC system_header'
+    fi
+  else
+    if test $gl_cv_have_include_next = buggy; then
+      INCLUDE_NEXT=include
+      INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next
+    else
+      INCLUDE_NEXT=include
+      INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include
+    fi
+  fi
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether system header files limit the line length" >&5
+$as_echo_n "checking whether system header files limit the line length... " >&6; }
+if ${gl_cv_pragma_columns+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef __TANDEM
+choke me
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "choke me" >/dev/null 2>&1; then :
+  gl_cv_pragma_columns=yes
+else
+  gl_cv_pragma_columns=no
+fi
+rm -f conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_pragma_columns" >&5
+$as_echo "$gl_cv_pragma_columns" >&6; }
+  if test $gl_cv_pragma_columns = yes; then
+    PRAGMA_COLUMNS="#pragma COLUMNS 10000"
+  else
+    PRAGMA_COLUMNS=
+  fi
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for complete errno.h" >&5
+$as_echo_n "checking for complete errno.h... " >&6; }
+if ${gl_cv_header_errno_h_complete+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <errno.h>
+#if !defined ENOMSG
+booboo
+#endif
+#if !defined EIDRM
+booboo
+#endif
+#if !defined ENOLINK
+booboo
+#endif
+#if !defined EPROTO
+booboo
+#endif
+#if !defined EMULTIHOP
+booboo
+#endif
+#if !defined EBADMSG
+booboo
+#endif
+#if !defined EOVERFLOW
+booboo
+#endif
+#if !defined ENOTSUP
+booboo
+#endif
+#if !defined ESTALE
+booboo
+#endif
+#if !defined EDQUOT
+booboo
+#endif
+#if !defined ECANCELED
+booboo
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "booboo" >/dev/null 2>&1; then :
+  gl_cv_header_errno_h_complete=no
+else
+  gl_cv_header_errno_h_complete=yes
+fi
+rm -f conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_errno_h_complete" >&5
+$as_echo "$gl_cv_header_errno_h_complete" >&6; }
+  if test $gl_cv_header_errno_h_complete = yes; then
+    ERRNO_H=''
+  else
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_errno_h='<'errno.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <errno.h>" >&5
+$as_echo_n "checking absolute name of <errno.h>... " >&6; }
+if ${gl_cv_next_errno_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <errno.h>
+
+_ACEOF
+                                                                                                                        case "$host_os" in
+                 aix*) gl_absname_cpp="$ac_cpp -C" ;;
+                 *)    gl_absname_cpp="$ac_cpp" ;;
+               esac
+                                                            gl_cv_next_errno_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+                  sed -n '\#/errno.h#{
+                    s#.*"\(.*/errno.h\)".*#\1#
+                    s#^/[^/]#//&#
+                    p
+                    q
+                  }'`'"'
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_errno_h" >&5
+$as_echo "$gl_cv_next_errno_h" >&6; }
+     fi
+     NEXT_ERRNO_H=$gl_cv_next_errno_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'errno.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_errno_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_ERRNO_H=$gl_next_as_first_directive
+
+
+
+
+    ERRNO_H='errno.h'
+  fi
+
+   if test -n "$ERRNO_H"; then
+  GL_GENERATE_ERRNO_H_TRUE=
+  GL_GENERATE_ERRNO_H_FALSE='#'
+else
+  GL_GENERATE_ERRNO_H_TRUE='#'
+  GL_GENERATE_ERRNO_H_FALSE=
+fi
+
+
+  if test -n "$ERRNO_H"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EMULTIHOP value" >&5
+$as_echo_n "checking for EMULTIHOP value... " >&6; }
+if ${gl_cv_header_errno_h_EMULTIHOP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <errno.h>
+#ifdef EMULTIHOP
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "yes" >/dev/null 2>&1; then :
+  gl_cv_header_errno_h_EMULTIHOP=yes
+else
+  gl_cv_header_errno_h_EMULTIHOP=no
+fi
+rm -f conftest*
+
+      if test $gl_cv_header_errno_h_EMULTIHOP = no; then
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+#ifdef EMULTIHOP
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "yes" >/dev/null 2>&1; then :
+  gl_cv_header_errno_h_EMULTIHOP=hidden
+fi
+rm -f conftest*
+
+        if test $gl_cv_header_errno_h_EMULTIHOP = hidden; then
+                              if ac_fn_c_compute_int "$LINENO" "EMULTIHOP" "gl_cv_header_errno_h_EMULTIHOP"        "
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug.  */
+#include <stdio.h>
+#include <stdlib.h>
+"; then :
+
+fi
+
+        fi
+      fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_errno_h_EMULTIHOP" >&5
+$as_echo "$gl_cv_header_errno_h_EMULTIHOP" >&6; }
+    case $gl_cv_header_errno_h_EMULTIHOP in
+      yes | no)
+        EMULTIHOP_HIDDEN=0; EMULTIHOP_VALUE=
+        ;;
+      *)
+        EMULTIHOP_HIDDEN=1; EMULTIHOP_VALUE="$gl_cv_header_errno_h_EMULTIHOP"
+        ;;
+    esac
+
+
+  fi
+
+
+  if test -n "$ERRNO_H"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ENOLINK value" >&5
+$as_echo_n "checking for ENOLINK value... " >&6; }
+if ${gl_cv_header_errno_h_ENOLINK+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <errno.h>
+#ifdef ENOLINK
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "yes" >/dev/null 2>&1; then :
+  gl_cv_header_errno_h_ENOLINK=yes
+else
+  gl_cv_header_errno_h_ENOLINK=no
+fi
+rm -f conftest*
+
+      if test $gl_cv_header_errno_h_ENOLINK = no; then
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+#ifdef ENOLINK
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "yes" >/dev/null 2>&1; then :
+  gl_cv_header_errno_h_ENOLINK=hidden
+fi
+rm -f conftest*
+
+        if test $gl_cv_header_errno_h_ENOLINK = hidden; then
+                              if ac_fn_c_compute_int "$LINENO" "ENOLINK" "gl_cv_header_errno_h_ENOLINK"        "
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug.  */
+#include <stdio.h>
+#include <stdlib.h>
+"; then :
+
+fi
+
+        fi
+      fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_errno_h_ENOLINK" >&5
+$as_echo "$gl_cv_header_errno_h_ENOLINK" >&6; }
+    case $gl_cv_header_errno_h_ENOLINK in
+      yes | no)
+        ENOLINK_HIDDEN=0; ENOLINK_VALUE=
+        ;;
+      *)
+        ENOLINK_HIDDEN=1; ENOLINK_VALUE="$gl_cv_header_errno_h_ENOLINK"
+        ;;
+    esac
+
+
+  fi
+
+
+  if test -n "$ERRNO_H"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EOVERFLOW value" >&5
+$as_echo_n "checking for EOVERFLOW value... " >&6; }
+if ${gl_cv_header_errno_h_EOVERFLOW+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <errno.h>
+#ifdef EOVERFLOW
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "yes" >/dev/null 2>&1; then :
+  gl_cv_header_errno_h_EOVERFLOW=yes
+else
+  gl_cv_header_errno_h_EOVERFLOW=no
+fi
+rm -f conftest*
+
+      if test $gl_cv_header_errno_h_EOVERFLOW = no; then
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+#ifdef EOVERFLOW
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "yes" >/dev/null 2>&1; then :
+  gl_cv_header_errno_h_EOVERFLOW=hidden
+fi
+rm -f conftest*
+
+        if test $gl_cv_header_errno_h_EOVERFLOW = hidden; then
+                              if ac_fn_c_compute_int "$LINENO" "EOVERFLOW" "gl_cv_header_errno_h_EOVERFLOW"        "
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug.  */
+#include <stdio.h>
+#include <stdlib.h>
+"; then :
+
+fi
+
+        fi
+      fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_errno_h_EOVERFLOW" >&5
+$as_echo "$gl_cv_header_errno_h_EOVERFLOW" >&6; }
+    case $gl_cv_header_errno_h_EOVERFLOW in
+      yes | no)
+        EOVERFLOW_HIDDEN=0; EOVERFLOW_VALUE=
+        ;;
+      *)
+        EOVERFLOW_HIDDEN=1; EOVERFLOW_VALUE="$gl_cv_header_errno_h_EOVERFLOW"
+        ;;
+    esac
+
+
+  fi
+
+
+ac_fn_c_check_decl "$LINENO" "strerror_r" "ac_cv_have_decl_strerror_r" "$ac_includes_default"
+if test "x$ac_cv_have_decl_strerror_r" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRERROR_R $ac_have_decl
+_ACEOF
+
+for ac_func in strerror_r
+do :
+  ac_fn_c_check_func "$LINENO" "strerror_r" "ac_cv_func_strerror_r"
+if test "x$ac_cv_func_strerror_r" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STRERROR_R 1
+_ACEOF
+
+fi
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether strerror_r returns char *" >&5
+$as_echo_n "checking whether strerror_r returns char *... " >&6; }
+if ${ac_cv_func_strerror_r_char_p+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    ac_cv_func_strerror_r_char_p=no
+    if test $ac_cv_have_decl_strerror_r = yes; then
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+
+         char buf[100];
+         char x = *strerror_r (0, buf, sizeof buf);
+         char *p = strerror_r (0, buf, sizeof buf);
+         return !p || x;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_func_strerror_r_char_p=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    else
+      # strerror_r is not declared.  Choose between
+      # systems that have relatively inaccessible declarations for the
+      # function.  BeOS and DEC UNIX 4.0 fall in this category, but the
+      # former has a strerror_r that returns char*, while the latter
+      # has a strerror_r that returns `int'.
+      # This test should segfault on the DEC system.
+      if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+       extern char *strerror_r ();
+int
+main ()
+{
+char buf[100];
+         char x = *strerror_r (0, buf, sizeof buf);
+         return ! isalpha (x);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_func_strerror_r_char_p=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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strerror_r_char_p" >&5
+$as_echo "$ac_cv_func_strerror_r_char_p" >&6; }
+if test $ac_cv_func_strerror_r_char_p = yes; then
+
+$as_echo "#define STRERROR_R_CHAR_P 1" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
+$as_echo_n "checking for inline... " >&6; }
+if ${ac_cv_c_inline+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_inline=no
+for ac_kw in inline __inline__ __inline; do
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifndef __cplusplus
+typedef int foo_t;
+static $ac_kw foo_t static_foo () {return 0; }
+$ac_kw foo_t foo () {return 0; }
+#endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_inline=$ac_kw
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  test "$ac_cv_c_inline" != no && break
+done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
+$as_echo "$ac_cv_c_inline" >&6; }
+
+case $ac_cv_c_inline in
+  inline | yes) ;;
+  *)
+    case $ac_cv_c_inline in
+      no) ac_val=;;
+      *) ac_val=$ac_cv_c_inline;;
+    esac
+    cat >>confdefs.h <<_ACEOF
+#ifndef __cplusplus
+#define inline $ac_val
+#endif
+_ACEOF
+    ;;
+esac
+
+
+  XGETTEXT_EXTRA_OPTIONS=
+
+
+  GNULIB_DPRINTF=0;
+  GNULIB_FCLOSE=0;
+  GNULIB_FFLUSH=0;
+  GNULIB_FGETC=0;
+  GNULIB_FGETS=0;
+  GNULIB_FOPEN=0;
+  GNULIB_FPRINTF=0;
+  GNULIB_FPRINTF_POSIX=0;
+  GNULIB_FPURGE=0;
+  GNULIB_FPUTC=0;
+  GNULIB_FPUTS=0;
+  GNULIB_FREAD=0;
+  GNULIB_FREOPEN=0;
+  GNULIB_FSCANF=0;
+  GNULIB_FSEEK=0;
+  GNULIB_FSEEKO=0;
+  GNULIB_FTELL=0;
+  GNULIB_FTELLO=0;
+  GNULIB_FWRITE=0;
+  GNULIB_GETC=0;
+  GNULIB_GETCHAR=0;
+  GNULIB_GETDELIM=0;
+  GNULIB_GETLINE=0;
+  GNULIB_GETS=0;
+  GNULIB_OBSTACK_PRINTF=0;
+  GNULIB_OBSTACK_PRINTF_POSIX=0;
+  GNULIB_PERROR=0;
+  GNULIB_POPEN=0;
+  GNULIB_PRINTF=0;
+  GNULIB_PRINTF_POSIX=0;
+  GNULIB_PUTC=0;
+  GNULIB_PUTCHAR=0;
+  GNULIB_PUTS=0;
+  GNULIB_REMOVE=0;
+  GNULIB_RENAME=0;
+  GNULIB_RENAMEAT=0;
+  GNULIB_SCANF=0;
+  GNULIB_SNPRINTF=0;
+  GNULIB_SPRINTF_POSIX=0;
+  GNULIB_STDIO_H_NONBLOCKING=0;
+  GNULIB_STDIO_H_SIGPIPE=0;
+  GNULIB_TMPFILE=0;
+  GNULIB_VASPRINTF=0;
+  GNULIB_VFSCANF=0;
+  GNULIB_VSCANF=0;
+  GNULIB_VDPRINTF=0;
+  GNULIB_VFPRINTF=0;
+  GNULIB_VFPRINTF_POSIX=0;
+  GNULIB_VPRINTF=0;
+  GNULIB_VPRINTF_POSIX=0;
+  GNULIB_VSNPRINTF=0;
+  GNULIB_VSPRINTF_POSIX=0;
+    HAVE_DECL_FPURGE=1;
+  HAVE_DECL_FSEEKO=1;
+  HAVE_DECL_FTELLO=1;
+  HAVE_DECL_GETDELIM=1;
+  HAVE_DECL_GETLINE=1;
+  HAVE_DECL_OBSTACK_PRINTF=1;
+  HAVE_DECL_SNPRINTF=1;
+  HAVE_DECL_VSNPRINTF=1;
+  HAVE_DPRINTF=1;
+  HAVE_FSEEKO=1;
+  HAVE_FTELLO=1;
+  HAVE_RENAMEAT=1;
+  HAVE_VASPRINTF=1;
+  HAVE_VDPRINTF=1;
+  REPLACE_DPRINTF=0;
+  REPLACE_FCLOSE=0;
+  REPLACE_FFLUSH=0;
+  REPLACE_FOPEN=0;
+  REPLACE_FPRINTF=0;
+  REPLACE_FPURGE=0;
+  REPLACE_FREOPEN=0;
+  REPLACE_FSEEK=0;
+  REPLACE_FSEEKO=0;
+  REPLACE_FTELL=0;
+  REPLACE_FTELLO=0;
+  REPLACE_GETDELIM=0;
+  REPLACE_GETLINE=0;
+  REPLACE_OBSTACK_PRINTF=0;
+  REPLACE_PERROR=0;
+  REPLACE_POPEN=0;
+  REPLACE_PRINTF=0;
+  REPLACE_REMOVE=0;
+  REPLACE_RENAME=0;
+  REPLACE_RENAMEAT=0;
+  REPLACE_SNPRINTF=0;
+  REPLACE_SPRINTF=0;
+  REPLACE_STDIO_READ_FUNCS=0;
+  REPLACE_STDIO_WRITE_FUNCS=0;
+  REPLACE_TMPFILE=0;
+  REPLACE_VASPRINTF=0;
+  REPLACE_VDPRINTF=0;
+  REPLACE_VFPRINTF=0;
+  REPLACE_VPRINTF=0;
+  REPLACE_VSNPRINTF=0;
+  REPLACE_VSPRINTF=0;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fseeko" >&5
+$as_echo_n "checking for fseeko... " >&6; }
+if ${gl_cv_func_fseeko+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+
+int
+main ()
+{
+fseeko (stdin, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_func_fseeko=yes
+else
+  gl_cv_func_fseeko=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_fseeko" >&5
+$as_echo "$gl_cv_func_fseeko" >&6; }
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stdin defaults to large file offsets" >&5
+$as_echo_n "checking whether stdin defaults to large file offsets... " >&6; }
+if ${gl_cv_var_stdin_large_offset+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+#if defined __SL64 && defined __SCLE /* cygwin */
+  /* Cygwin 1.5.24 and earlier fail to put stdin in 64-bit mode, making
+     fseeko/ftello needlessly fail.  This bug was fixed in 1.5.25, and
+     it is easier to do a version check than building a runtime test.  */
+# include <cygwin/version.h>
+# if CYGWIN_VERSION_DLL_COMBINED < CYGWIN_VERSION_DLL_MAKE_COMBINED (1005, 25)
+  choke me
+# endif
+#endif
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_var_stdin_large_offset=yes
+else
+  gl_cv_var_stdin_large_offset=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_var_stdin_large_offset" >&5
+$as_echo "$gl_cv_var_stdin_large_offset" >&6; }
+
+ac_fn_c_check_decl "$LINENO" "fseeko" "ac_cv_have_decl_fseeko" "$ac_includes_default"
+if test "x$ac_cv_have_decl_fseeko" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FSEEKO $ac_have_decl
+_ACEOF
+
+
+
+ac_fn_c_check_decl "$LINENO" "ftello" "ac_cv_have_decl_ftello" "$ac_includes_default"
+if test "x$ac_cv_have_decl_ftello" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FTELLO $ac_have_decl
+_ACEOF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_getopt_h='<'getopt.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <getopt.h>" >&5
+$as_echo_n "checking absolute name of <getopt.h>... " >&6; }
+if ${gl_cv_next_getopt_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+             if test $ac_cv_header_getopt_h = yes; then
+
+
+               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <getopt.h>
+
+_ACEOF
+                                                                                                                        case "$host_os" in
+                 aix*) gl_absname_cpp="$ac_cpp -C" ;;
+                 *)    gl_absname_cpp="$ac_cpp" ;;
+               esac
+                                                            gl_cv_next_getopt_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+                  sed -n '\#/getopt.h#{
+                    s#.*"\(.*/getopt.h\)".*#\1#
+                    s#^/[^/]#//&#
+                    p
+                    q
+                  }'`'"'
+          else
+               gl_cv_next_getopt_h='<'getopt.h'>'
+             fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_getopt_h" >&5
+$as_echo "$gl_cv_next_getopt_h" >&6; }
+     fi
+     NEXT_GETOPT_H=$gl_cv_next_getopt_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'getopt.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_getopt_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_GETOPT_H=$gl_next_as_first_directive
+
+
+
+
+  if test $ac_cv_header_getopt_h = yes; then
+    HAVE_GETOPT_H=1
+  else
+    HAVE_GETOPT_H=0
+  fi
+
+
+  gl_replace_getopt=
+
+    if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then
+    for ac_header in getopt.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "getopt.h" "ac_cv_header_getopt_h" "$ac_includes_default"
+if test "x$ac_cv_header_getopt_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_GETOPT_H 1
+_ACEOF
+
+else
+  gl_replace_getopt=yes
+fi
+
+done
+
+  fi
+
+    if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then
+    for ac_func in getopt_long_only
+do :
+  ac_fn_c_check_func "$LINENO" "getopt_long_only" "ac_cv_func_getopt_long_only"
+if test "x$ac_cv_func_getopt_long_only" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_GETOPT_LONG_ONLY 1
+_ACEOF
+
+else
+  gl_replace_getopt=yes
+fi
+done
+
+  fi
+
+                    if test -z "$gl_replace_getopt"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getopt is POSIX compatible" >&5
+$as_echo_n "checking whether getopt is POSIX compatible... " >&6; }
+if ${gl_cv_func_getopt_posix+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+                                                                        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <unistd.h>
+int
+main ()
+{
+int *p = &optreset; return optreset;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_optind_min=1
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <getopt.h>
+int
+main ()
+{
+return !getopt_clip;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_optind_min=1
+else
+  gl_optind_min=0
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+                gl_save_CPPFLAGS=$CPPFLAGS
+        CPPFLAGS="$CPPFLAGS -DOPTIND_MIN=$gl_optind_min"
+        if test "$cross_compiling" = yes; then :
+  case "$host_os" in
+             mingw*)         gl_cv_func_getopt_posix="guessing no";;
+             darwin* | aix*) gl_cv_func_getopt_posix="guessing no";;
+             *)              gl_cv_func_getopt_posix="guessing yes";;
+           esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <unistd.h>
+#include <stdlib.h>
+#include <string.h>
+
+int
+main ()
+{
+  {
+    int argc = 0;
+    char *argv[10];
+    int c;
+
+    argv[argc++] = "program";
+    argv[argc++] = "-a";
+    argv[argc++] = "foo";
+    argv[argc++] = "bar";
+    argv[argc] = NULL;
+    optind = OPTIND_MIN;
+    opterr = 0;
+
+    c = getopt (argc, argv, "ab");
+    if (!(c == 'a'))
+      return 1;
+    c = getopt (argc, argv, "ab");
+    if (!(c == -1))
+      return 2;
+    if (!(optind == 2))
+      return 3;
+  }
+  /* Some internal state exists at this point.  */
+  {
+    int argc = 0;
+    char *argv[10];
+    int c;
+
+    argv[argc++] = "program";
+    argv[argc++] = "donald";
+    argv[argc++] = "-p";
+    argv[argc++] = "billy";
+    argv[argc++] = "duck";
+    argv[argc++] = "-a";
+    argv[argc++] = "bar";
+    argv[argc] = NULL;
+    optind = OPTIND_MIN;
+    opterr = 0;
+
+    c = getopt (argc, argv, "+abp:q:");
+    if (!(c == -1))
+      return 4;
+    if (!(strcmp (argv[0], "program") == 0))
+      return 5;
+    if (!(strcmp (argv[1], "donald") == 0))
+      return 6;
+    if (!(strcmp (argv[2], "-p") == 0))
+      return 7;
+    if (!(strcmp (argv[3], "billy") == 0))
+      return 8;
+    if (!(strcmp (argv[4], "duck") == 0))
+      return 9;
+    if (!(strcmp (argv[5], "-a") == 0))
+      return 10;
+    if (!(strcmp (argv[6], "bar") == 0))
+      return 11;
+    if (!(optind == 1))
+      return 12;
+  }
+  /* Detect MacOS 10.5, AIX 7.1 bug.  */
+  {
+    char *argv[3] = { "program", "-ab", NULL };
+    optind = OPTIND_MIN;
+    opterr = 0;
+    if (getopt (2, argv, "ab:") != 'a')
+      return 13;
+    if (getopt (2, argv, "ab:") != '?')
+      return 14;
+    if (optopt != 'b')
+      return 15;
+    if (optind != 2)
+      return 16;
+  }
+
+  return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_getopt_posix=yes
+else
+  gl_cv_func_getopt_posix=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+        CPPFLAGS=$gl_save_CPPFLAGS
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_getopt_posix" >&5
+$as_echo "$gl_cv_func_getopt_posix" >&6; }
+    case "$gl_cv_func_getopt_posix" in
+      *no) gl_replace_getopt=yes ;;
+    esac
+  fi
+
+  if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working GNU getopt function" >&5
+$as_echo_n "checking for working GNU getopt function... " >&6; }
+if ${gl_cv_func_getopt_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  # Even with POSIXLY_CORRECT, the GNU extension of leading '-' in the
+       # optstring is necessary for programs like m4 that have POSIX-mandated
+       # semantics for supporting options interspersed with files.
+       # Also, since getopt_long is a GNU extension, we require optind=0.
+       # Bash ties 'set -o posix' to a non-exported POSIXLY_CORRECT;
+       # so take care to revert to the correct (non-)export state.
+       gl_awk_probe='BEGIN { if ("POSIXLY_CORRECT" in ENVIRON) print "x" }'
+       case ${POSIXLY_CORRECT+x}`$AWK "$gl_awk_probe" </dev/null` in
+         xx) gl_had_POSIXLY_CORRECT=exported ;;
+         x)  gl_had_POSIXLY_CORRECT=yes      ;;
+         *)  gl_had_POSIXLY_CORRECT=         ;;
+       esac
+       POSIXLY_CORRECT=1
+       export POSIXLY_CORRECT
+       if test "$cross_compiling" = yes; then :
+           case $host_os:$ac_cv_have_decl_optreset in
+           *-gnu*:* | mingw*:*) gl_cv_func_getopt_gnu=no;;
+           *:yes)               gl_cv_func_getopt_gnu=no;;
+           *)                   gl_cv_func_getopt_gnu=yes;;
+         esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <getopt.h>
+                           #include <stddef.h>
+                           #include <string.h>
+
+int
+main ()
+{
+
+             int result = 0;
+             /* This code succeeds on glibc 2.8, OpenBSD 4.0, Cygwin, mingw,
+                and fails on MacOS X 10.5, AIX 5.2, HP-UX 11, IRIX 6.5,
+                OSF/1 5.1, Solaris 10.  */
+             {
+               char *myargv[3];
+               myargv[0] = "conftest";
+               myargv[1] = "-+";
+               myargv[2] = 0;
+               opterr = 0;
+               if (getopt (2, myargv, "+a") != '?')
+                 result |= 1;
+             }
+             /* This code succeeds on glibc 2.8, mingw,
+                and fails on MacOS X 10.5, OpenBSD 4.0, AIX 5.2, HP-UX 11,
+                IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x.  */
+             {
+               char *argv[] = { "program", "-p", "foo", "bar", NULL };
+
+               optind = 1;
+               if (getopt (4, argv, "p::") != 'p')
+                 result |= 2;
+               else if (optarg != NULL)
+                 result |= 4;
+               else if (getopt (4, argv, "p::") != -1)
+                 result |= 6;
+               else if (optind != 2)
+                 result |= 8;
+             }
+             /* This code succeeds on glibc 2.8 and fails on Cygwin 1.7.0.  */
+             {
+               char *argv[] = { "program", "foo", "-p", NULL };
+               optind = 0;
+               if (getopt (3, argv, "-p") != 1)
+                 result |= 16;
+               else if (getopt (3, argv, "-p") != 'p')
+                 result |= 32;
+             }
+             /* This code fails on glibc 2.11.  */
+             {
+               char *argv[] = { "program", "-b", "-a", NULL };
+               optind = opterr = 0;
+               if (getopt (3, argv, "+:a:b") != 'b')
+                 result |= 64;
+               else if (getopt (3, argv, "+:a:b") != ':')
+                 result |= 64;
+             }
+             return result;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_getopt_gnu=yes
+else
+  gl_cv_func_getopt_gnu=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+       case $gl_had_POSIXLY_CORRECT in
+         exported) ;;
+         yes) { POSIXLY_CORRECT=; unset POSIXLY_CORRECT;}; POSIXLY_CORRECT=1 ;;
+         *) { POSIXLY_CORRECT=; unset POSIXLY_CORRECT;} ;;
+       esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_getopt_gnu" >&5
+$as_echo "$gl_cv_func_getopt_gnu" >&6; }
+    if test "$gl_cv_func_getopt_gnu" = "no"; then
+      gl_replace_getopt=yes
+    fi
+  fi
+
+ac_fn_c_check_decl "$LINENO" "getenv" "ac_cv_have_decl_getenv" "$ac_includes_default"
+if test "x$ac_cv_have_decl_getenv" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETENV $ac_have_decl
+_ACEOF
+
+
+
+
+
+
+  if test -n "$gl_replace_getopt"; then :
+
+
+
+  GETOPT_H=getopt.h
+
+$as_echo "#define __GETOPT_PREFIX rpl_" >>confdefs.h
+
+
+
+    GNULIB_UNISTD_H_GETOPT=1
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS getopt.$ac_objext"
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS getopt1.$ac_objext"
+
+
+
+
+
+
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C/C++ restrict keyword" >&5
+$as_echo_n "checking for C/C++ restrict keyword... " >&6; }
+if ${ac_cv_c_restrict+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_restrict=no
+   # The order here caters to the fact that C++ does not require restrict.
+   for ac_kw in __restrict __restrict__ _Restrict restrict; do
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+typedef int * int_ptr;
+       int foo (int_ptr $ac_kw ip) {
+       return ip[0];
+       }
+int
+main ()
+{
+int s[1];
+       int * $ac_kw t = s;
+       t[0] = 0;
+       return foo(t)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_restrict=$ac_kw
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+     test "$ac_cv_c_restrict" != no && break
+   done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_restrict" >&5
+$as_echo "$ac_cv_c_restrict" >&6; }
+
+ case $ac_cv_c_restrict in
+   restrict) ;;
+   no) $as_echo "#define restrict /**/" >>confdefs.h
+ ;;
+   *)  cat >>confdefs.h <<_ACEOF
+#define restrict $ac_cv_c_restrict
+_ACEOF
+ ;;
+ esac
+
+
+  GNULIB_GETTIMEOFDAY=0;
+    HAVE_GETTIMEOFDAY=1;
+  HAVE_STRUCT_TIMEVAL=1;
+  HAVE_SYS_TIME_H=1;
+  REPLACE_GETTIMEOFDAY=0;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_sys_time_h='<'sys/time.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <sys/time.h>" >&5
+$as_echo_n "checking absolute name of <sys/time.h>... " >&6; }
+if ${gl_cv_next_sys_time_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+             if test $ac_cv_header_sys_time_h = yes; then
+
+
+               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/time.h>
+
+_ACEOF
+                                                                                                                        case "$host_os" in
+                 aix*) gl_absname_cpp="$ac_cpp -C" ;;
+                 *)    gl_absname_cpp="$ac_cpp" ;;
+               esac
+                                                            gl_cv_next_sys_time_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+                  sed -n '\#/sys/time.h#{
+                    s#.*"\(.*/sys/time.h\)".*#\1#
+                    s#^/[^/]#//&#
+                    p
+                    q
+                  }'`'"'
+          else
+               gl_cv_next_sys_time_h='<'sys/time.h'>'
+             fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_sys_time_h" >&5
+$as_echo "$gl_cv_next_sys_time_h" >&6; }
+     fi
+     NEXT_SYS_TIME_H=$gl_cv_next_sys_time_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'sys/time.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_sys_time_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H=$gl_next_as_first_directive
+
+
+
+
+
+  if test $ac_cv_header_sys_time_h != yes; then
+    HAVE_SYS_TIME_H=0
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timeval" >&5
+$as_echo_n "checking for struct timeval... " >&6; }
+if ${gl_cv_sys_struct_timeval+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#if HAVE_SYS_TIME_H
+             #include <sys/time.h>
+            #endif
+            #include <time.h>
+
+int
+main ()
+{
+static struct timeval x; x.tv_sec = x.tv_usec;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_sys_struct_timeval=yes
+else
+  gl_cv_sys_struct_timeval=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_sys_struct_timeval" >&5
+$as_echo "$gl_cv_sys_struct_timeval" >&6; }
+  if test $gl_cv_sys_struct_timeval != yes; then
+    HAVE_STRUCT_TIMEVAL=0
+  fi
+
+
+    for gl_func in gettimeofday; do
+    as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5
+$as_echo_n "checking whether $gl_func is declared without a macro... " >&6; }
+if eval \${$as_gl_Symbol+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#if HAVE_SYS_TIME_H
+# include <sys/time.h>
+#endif
+#include <time.h>
+
+int
+main ()
+{
+#undef $gl_func
+  (void) $gl_func;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$as_gl_Symbol=yes"
+else
+  eval "$as_gl_Symbol=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$as_gl_Symbol
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+     if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1
+_ACEOF
+
+                     eval ac_cv_have_decl_$gl_func=yes
+fi
+      done
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5
+$as_echo_n "checking for unsigned long long int... " >&6; }
+if ${ac_cv_type_unsigned_long_long_int+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_type_unsigned_long_long_int=yes
+     if test "x${ac_cv_prog_cc_c99-no}" = xno; then
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+  /* For now, do not test the preprocessor; as of 2007 there are too many
+         implementations with broken preprocessors.  Perhaps this can
+         be revisited in 2012.  In the meantime, code should not expect
+         #if to work with literals wider than 32 bits.  */
+      /* Test literals.  */
+      long long int ll = 9223372036854775807ll;
+      long long int nll = -9223372036854775807LL;
+      unsigned long long int ull = 18446744073709551615ULL;
+      /* Test constant expressions.   */
+      typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
+                     ? 1 : -1)];
+      typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
+                     ? 1 : -1)];
+      int i = 63;
+int
+main ()
+{
+/* Test availability of runtime routines for shift and division.  */
+      long long int llmax = 9223372036854775807ll;
+      unsigned long long int ullmax = 18446744073709551615ull;
+      return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
+              | (llmax / ll) | (llmax % ll)
+              | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
+              | (ullmax / ull) | (ullmax % ull));
+  ;
+  return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+else
+  ac_cv_type_unsigned_long_long_int=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5
+$as_echo "$ac_cv_type_unsigned_long_long_int" >&6; }
+  if test $ac_cv_type_unsigned_long_long_int = yes; then
+
+$as_echo "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h
+
+  fi
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5
+$as_echo_n "checking for long long int... " >&6; }
+if ${ac_cv_type_long_long_int+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_type_long_long_int=yes
+      if test "x${ac_cv_prog_cc_c99-no}" = xno; then
+        ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int
+        if test $ac_cv_type_long_long_int = yes; then
+                                        if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <limits.h>
+                 #ifndef LLONG_MAX
+                 # define HALF \
+                          (1LL << (sizeof (long long int) * CHAR_BIT - 2))
+                 # define LLONG_MAX (HALF - 1 + HALF)
+                 #endif
+int
+main ()
+{
+long long int n = 1;
+                 int i;
+                 for (i = 0; ; i++)
+                   {
+                     long long int m = n << i;
+                     if (m >> i != n)
+                       return 1;
+                     if (LLONG_MAX / 2 < m)
+                       break;
+                   }
+                 return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+  ac_cv_type_long_long_int=no
+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
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5
+$as_echo "$ac_cv_type_long_long_int" >&6; }
+  if test $ac_cv_type_long_long_int = yes; then
+
+$as_echo "#define HAVE_LONG_LONG_INT 1" >>confdefs.h
+
+  fi
+
+
+
+
+
+
+    gl_cv_c_multiarch=no
+  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 :
+
+               arch=
+     prev=
+     for word in ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}; do
+       if test -n "$prev"; then
+         case $word in
+           i?86 | x86_64 | ppc | ppc64)
+             if test -z "$arch" || test "$arch" = "$word"; then
+               arch="$word"
+             else
+               gl_cv_c_multiarch=yes
+             fi
+             ;;
+         esac
+         prev=
+       else
+         if test "x$word" = "x-arch"; then
+           prev=arch
+         fi
+       fi
+     done
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  if test $gl_cv_c_multiarch = yes; then
+    APPLE_UNIVERSAL_BUILD=1
+  else
+    APPLE_UNIVERSAL_BUILD=0
+  fi
+
+
+
+
+
+  if test $ac_cv_type_long_long_int = yes; then
+    HAVE_LONG_LONG_INT=1
+  else
+    HAVE_LONG_LONG_INT=0
+  fi
+
+
+  if test $ac_cv_type_unsigned_long_long_int = yes; then
+    HAVE_UNSIGNED_LONG_LONG_INT=1
+  else
+    HAVE_UNSIGNED_LONG_LONG_INT=0
+  fi
+
+
+
+  if test $ac_cv_header_wchar_h = yes; then
+    HAVE_WCHAR_H=1
+  else
+    HAVE_WCHAR_H=0
+  fi
+
+
+      if test $ac_cv_header_inttypes_h = yes; then
+    HAVE_INTTYPES_H=1
+  else
+    HAVE_INTTYPES_H=0
+  fi
+
+
+      if test $ac_cv_header_sys_types_h = yes; then
+    HAVE_SYS_TYPES_H=1
+  else
+    HAVE_SYS_TYPES_H=0
+  fi
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_stdint_h='<'stdint.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <stdint.h>" >&5
+$as_echo_n "checking absolute name of <stdint.h>... " >&6; }
+if ${gl_cv_next_stdint_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+             if test $ac_cv_header_stdint_h = yes; then
+
+
+               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdint.h>
+
+_ACEOF
+                                                                                                                        case "$host_os" in
+                 aix*) gl_absname_cpp="$ac_cpp -C" ;;
+                 *)    gl_absname_cpp="$ac_cpp" ;;
+               esac
+                                                            gl_cv_next_stdint_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+                  sed -n '\#/stdint.h#{
+                    s#.*"\(.*/stdint.h\)".*#\1#
+                    s#^/[^/]#//&#
+                    p
+                    q
+                  }'`'"'
+          else
+               gl_cv_next_stdint_h='<'stdint.h'>'
+             fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stdint_h" >&5
+$as_echo "$gl_cv_next_stdint_h" >&6; }
+     fi
+     NEXT_STDINT_H=$gl_cv_next_stdint_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'stdint.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_stdint_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_STDINT_H=$gl_next_as_first_directive
+
+
+
+
+  if test $ac_cv_header_stdint_h = yes; then
+    HAVE_STDINT_H=1
+  else
+    HAVE_STDINT_H=0
+  fi
+
+
+    if test $ac_cv_header_stdint_h = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stdint.h conforms to C99" >&5
+$as_echo_n "checking whether stdint.h conforms to C99... " >&6; }
+if ${gl_cv_header_working_stdint_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  gl_cv_header_working_stdint_h=no
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
+#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */
+#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
+#include <stdint.h>
+/* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in <wchar.h>.  */
+#if !(defined WCHAR_MIN && defined WCHAR_MAX)
+#error "WCHAR_MIN, WCHAR_MAX not defined in <stdint.h>"
+#endif
+
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+
+#ifdef INT8_MAX
+int8_t a1 = INT8_MAX;
+int8_t a1min = INT8_MIN;
+#endif
+#ifdef INT16_MAX
+int16_t a2 = INT16_MAX;
+int16_t a2min = INT16_MIN;
+#endif
+#ifdef INT32_MAX
+int32_t a3 = INT32_MAX;
+int32_t a3min = INT32_MIN;
+#endif
+#ifdef INT64_MAX
+int64_t a4 = INT64_MAX;
+int64_t a4min = INT64_MIN;
+#endif
+#ifdef UINT8_MAX
+uint8_t b1 = UINT8_MAX;
+#else
+typedef int b1[(unsigned char) -1 != 255 ? 1 : -1];
+#endif
+#ifdef UINT16_MAX
+uint16_t b2 = UINT16_MAX;
+#endif
+#ifdef UINT32_MAX
+uint32_t b3 = UINT32_MAX;
+#endif
+#ifdef UINT64_MAX
+uint64_t b4 = UINT64_MAX;
+#endif
+int_least8_t c1 = INT8_C (0x7f);
+int_least8_t c1max = INT_LEAST8_MAX;
+int_least8_t c1min = INT_LEAST8_MIN;
+int_least16_t c2 = INT16_C (0x7fff);
+int_least16_t c2max = INT_LEAST16_MAX;
+int_least16_t c2min = INT_LEAST16_MIN;
+int_least32_t c3 = INT32_C (0x7fffffff);
+int_least32_t c3max = INT_LEAST32_MAX;
+int_least32_t c3min = INT_LEAST32_MIN;
+int_least64_t c4 = INT64_C (0x7fffffffffffffff);
+int_least64_t c4max = INT_LEAST64_MAX;
+int_least64_t c4min = INT_LEAST64_MIN;
+uint_least8_t d1 = UINT8_C (0xff);
+uint_least8_t d1max = UINT_LEAST8_MAX;
+uint_least16_t d2 = UINT16_C (0xffff);
+uint_least16_t d2max = UINT_LEAST16_MAX;
+uint_least32_t d3 = UINT32_C (0xffffffff);
+uint_least32_t d3max = UINT_LEAST32_MAX;
+uint_least64_t d4 = UINT64_C (0xffffffffffffffff);
+uint_least64_t d4max = UINT_LEAST64_MAX;
+int_fast8_t e1 = INT_FAST8_MAX;
+int_fast8_t e1min = INT_FAST8_MIN;
+int_fast16_t e2 = INT_FAST16_MAX;
+int_fast16_t e2min = INT_FAST16_MIN;
+int_fast32_t e3 = INT_FAST32_MAX;
+int_fast32_t e3min = INT_FAST32_MIN;
+int_fast64_t e4 = INT_FAST64_MAX;
+int_fast64_t e4min = INT_FAST64_MIN;
+uint_fast8_t f1 = UINT_FAST8_MAX;
+uint_fast16_t f2 = UINT_FAST16_MAX;
+uint_fast32_t f3 = UINT_FAST32_MAX;
+uint_fast64_t f4 = UINT_FAST64_MAX;
+#ifdef INTPTR_MAX
+intptr_t g = INTPTR_MAX;
+intptr_t gmin = INTPTR_MIN;
+#endif
+#ifdef UINTPTR_MAX
+uintptr_t h = UINTPTR_MAX;
+#endif
+intmax_t i = INTMAX_MAX;
+uintmax_t j = UINTMAX_MAX;
+
+#include <limits.h> /* for CHAR_BIT */
+#define TYPE_MINIMUM(t) \
+  ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ TYPE_MAXIMUM (t)))
+#define TYPE_MAXIMUM(t) \
+  ((t) ((t) 0 < (t) -1 \
+        ? (t) -1 \
+        : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1)))
+struct s {
+  int check_PTRDIFF:
+      PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t)
+      && PTRDIFF_MAX == TYPE_MAXIMUM (ptrdiff_t)
+      ? 1 : -1;
+  /* Detect bug in FreeBSD 6.0 / ia64.  */
+  int check_SIG_ATOMIC:
+      SIG_ATOMIC_MIN == TYPE_MINIMUM (sig_atomic_t)
+      && SIG_ATOMIC_MAX == TYPE_MAXIMUM (sig_atomic_t)
+      ? 1 : -1;
+  int check_SIZE: SIZE_MAX == TYPE_MAXIMUM (size_t) ? 1 : -1;
+  int check_WCHAR:
+      WCHAR_MIN == TYPE_MINIMUM (wchar_t)
+      && WCHAR_MAX == TYPE_MAXIMUM (wchar_t)
+      ? 1 : -1;
+  /* Detect bug in mingw.  */
+  int check_WINT:
+      WINT_MIN == TYPE_MINIMUM (wint_t)
+      && WINT_MAX == TYPE_MAXIMUM (wint_t)
+      ? 1 : -1;
+
+  /* Detect bugs in glibc 2.4 and Solaris 10 stdint.h, among others.  */
+  int check_UINT8_C:
+        (-1 < UINT8_C (0)) == (-1 < (uint_least8_t) 0) ? 1 : -1;
+  int check_UINT16_C:
+        (-1 < UINT16_C (0)) == (-1 < (uint_least16_t) 0) ? 1 : -1;
+
+  /* Detect bugs in OpenBSD 3.9 stdint.h.  */
+#ifdef UINT8_MAX
+  int check_uint8: (uint8_t) -1 == UINT8_MAX ? 1 : -1;
+#endif
+#ifdef UINT16_MAX
+  int check_uint16: (uint16_t) -1 == UINT16_MAX ? 1 : -1;
+#endif
+#ifdef UINT32_MAX
+  int check_uint32: (uint32_t) -1 == UINT32_MAX ? 1 : -1;
+#endif
+#ifdef UINT64_MAX
+  int check_uint64: (uint64_t) -1 == UINT64_MAX ? 1 : -1;
+#endif
+  int check_uint_least8: (uint_least8_t) -1 == UINT_LEAST8_MAX ? 1 : -1;
+  int check_uint_least16: (uint_least16_t) -1 == UINT_LEAST16_MAX ? 1 : -1;
+  int check_uint_least32: (uint_least32_t) -1 == UINT_LEAST32_MAX ? 1 : -1;
+  int check_uint_least64: (uint_least64_t) -1 == UINT_LEAST64_MAX ? 1 : -1;
+  int check_uint_fast8: (uint_fast8_t) -1 == UINT_FAST8_MAX ? 1 : -1;
+  int check_uint_fast16: (uint_fast16_t) -1 == UINT_FAST16_MAX ? 1 : -1;
+  int check_uint_fast32: (uint_fast32_t) -1 == UINT_FAST32_MAX ? 1 : -1;
+  int check_uint_fast64: (uint_fast64_t) -1 == UINT_FAST64_MAX ? 1 : -1;
+  int check_uintptr: (uintptr_t) -1 == UINTPTR_MAX ? 1 : -1;
+  int check_uintmax: (uintmax_t) -1 == UINTMAX_MAX ? 1 : -1;
+  int check_size: (size_t) -1 == SIZE_MAX ? 1 : -1;
+};
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+                                                    if test "$cross_compiling" = yes; then :
+                 gl_cv_header_working_stdint_h=yes
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
+#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */
+#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
+#include <stdint.h>
+
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+
+#include <stdio.h>
+#include <string.h>
+#define MVAL(macro) MVAL1(macro)
+#define MVAL1(expression) #expression
+static const char *macro_values[] =
+  {
+#ifdef INT8_MAX
+    MVAL (INT8_MAX),
+#endif
+#ifdef INT16_MAX
+    MVAL (INT16_MAX),
+#endif
+#ifdef INT32_MAX
+    MVAL (INT32_MAX),
+#endif
+#ifdef INT64_MAX
+    MVAL (INT64_MAX),
+#endif
+#ifdef UINT8_MAX
+    MVAL (UINT8_MAX),
+#endif
+#ifdef UINT16_MAX
+    MVAL (UINT16_MAX),
+#endif
+#ifdef UINT32_MAX
+    MVAL (UINT32_MAX),
+#endif
+#ifdef UINT64_MAX
+    MVAL (UINT64_MAX),
+#endif
+    NULL
+  };
+
+int
+main ()
+{
+
+  const char **mv;
+  for (mv = macro_values; *mv != NULL; mv++)
+    {
+      const char *value = *mv;
+      /* Test whether it looks like a cast expression.  */
+      if (strncmp (value, "((unsigned int)"/*)*/, 15) == 0
+          || strncmp (value, "((unsigned short)"/*)*/, 17) == 0
+          || strncmp (value, "((unsigned char)"/*)*/, 16) == 0
+          || strncmp (value, "((int)"/*)*/, 6) == 0
+          || strncmp (value, "((signed short)"/*)*/, 15) == 0
+          || strncmp (value, "((signed char)"/*)*/, 14) == 0)
+        return mv - macro_values + 1;
+    }
+  return 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_header_working_stdint_h=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
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_working_stdint_h" >&5
+$as_echo "$gl_cv_header_working_stdint_h" >&6; }
+  fi
+  if test "$gl_cv_header_working_stdint_h" = yes; then
+    STDINT_H=
+  else
+            for ac_header in sys/inttypes.h sys/bitypes.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+    if test $ac_cv_header_sys_inttypes_h = yes; then
+      HAVE_SYS_INTTYPES_H=1
+    else
+      HAVE_SYS_INTTYPES_H=0
+    fi
+
+    if test $ac_cv_header_sys_bitypes_h = yes; then
+      HAVE_SYS_BITYPES_H=1
+    else
+      HAVE_SYS_BITYPES_H=0
+    fi
+
+
+
+
+  if test $APPLE_UNIVERSAL_BUILD = 0; then
+
+
+  for gltype in ptrdiff_t size_t ; do
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bit size of $gltype" >&5
+$as_echo_n "checking for bit size of $gltype... " >&6; }
+if eval \${gl_cv_bitsizeof_${gltype}+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "sizeof ($gltype) * CHAR_BIT" "result"        "
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+#include <limits.h>"; then :
+
+else
+  result=unknown
+fi
+
+       eval gl_cv_bitsizeof_${gltype}=\$result
+
+fi
+eval ac_res=\$gl_cv_bitsizeof_${gltype}
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+    eval result=\$gl_cv_bitsizeof_${gltype}
+    if test $result = unknown; then
+                                                result=0
+    fi
+    GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+    cat >>confdefs.h <<_ACEOF
+#define BITSIZEOF_${GLTYPE} $result
+_ACEOF
+
+    eval BITSIZEOF_${GLTYPE}=\$result
+  done
+
+
+  fi
+
+
+  for gltype in sig_atomic_t wchar_t wint_t ; do
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bit size of $gltype" >&5
+$as_echo_n "checking for bit size of $gltype... " >&6; }
+if eval \${gl_cv_bitsizeof_${gltype}+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "sizeof ($gltype) * CHAR_BIT" "result"        "
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+#include <limits.h>"; then :
+
+else
+  result=unknown
+fi
+
+       eval gl_cv_bitsizeof_${gltype}=\$result
+
+fi
+eval ac_res=\$gl_cv_bitsizeof_${gltype}
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+    eval result=\$gl_cv_bitsizeof_${gltype}
+    if test $result = unknown; then
+                                                result=0
+    fi
+    GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+    cat >>confdefs.h <<_ACEOF
+#define BITSIZEOF_${GLTYPE} $result
+_ACEOF
+
+    eval BITSIZEOF_${GLTYPE}=\$result
+  done
+
+
+
+
+  for gltype in sig_atomic_t wchar_t wint_t ; do
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gltype is signed" >&5
+$as_echo_n "checking whether $gltype is signed... " >&6; }
+if eval \${gl_cv_type_${gltype}_signed+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+            int verify[2 * (($gltype) -1 < ($gltype) 0) - 1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  result=yes
+else
+  result=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+       eval gl_cv_type_${gltype}_signed=\$result
+
+fi
+eval ac_res=\$gl_cv_type_${gltype}_signed
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+    eval result=\$gl_cv_type_${gltype}_signed
+    GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+    if test "$result" = yes; then
+      cat >>confdefs.h <<_ACEOF
+#define HAVE_SIGNED_${GLTYPE} 1
+_ACEOF
+
+      eval HAVE_SIGNED_${GLTYPE}=1
+    else
+      eval HAVE_SIGNED_${GLTYPE}=0
+    fi
+  done
+
+
+  gl_cv_type_ptrdiff_t_signed=yes
+  gl_cv_type_size_t_signed=no
+  if test $APPLE_UNIVERSAL_BUILD = 0; then
+
+
+  for gltype in ptrdiff_t size_t ; do
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $gltype integer literal suffix" >&5
+$as_echo_n "checking for $gltype integer literal suffix... " >&6; }
+if eval \${gl_cv_type_${gltype}_suffix+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval gl_cv_type_${gltype}_suffix=no
+       eval result=\$gl_cv_type_${gltype}_signed
+       if test "$result" = yes; then
+         glsufu=
+       else
+         glsufu=u
+       fi
+       for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do
+         case $glsuf in
+           '')  gltype1='int';;
+           l)   gltype1='long int';;
+           ll)  gltype1='long long int';;
+           i64) gltype1='__int64';;
+           u)   gltype1='unsigned int';;
+           ul)  gltype1='unsigned long int';;
+           ull) gltype1='unsigned long long int';;
+           ui64)gltype1='unsigned __int64';;
+         esac
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+              extern $gltype foo;
+              extern $gltype1 foo;
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval gl_cv_type_${gltype}_suffix=\$glsuf
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+         eval result=\$gl_cv_type_${gltype}_suffix
+         test "$result" != no && break
+       done
+fi
+eval ac_res=\$gl_cv_type_${gltype}_suffix
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+    GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+    eval result=\$gl_cv_type_${gltype}_suffix
+    test "$result" = no && result=
+    eval ${GLTYPE}_SUFFIX=\$result
+    cat >>confdefs.h <<_ACEOF
+#define ${GLTYPE}_SUFFIX $result
+_ACEOF
+
+  done
+
+
+  fi
+
+
+  for gltype in sig_atomic_t wchar_t wint_t ; do
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $gltype integer literal suffix" >&5
+$as_echo_n "checking for $gltype integer literal suffix... " >&6; }
+if eval \${gl_cv_type_${gltype}_suffix+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval gl_cv_type_${gltype}_suffix=no
+       eval result=\$gl_cv_type_${gltype}_signed
+       if test "$result" = yes; then
+         glsufu=
+       else
+         glsufu=u
+       fi
+       for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do
+         case $glsuf in
+           '')  gltype1='int';;
+           l)   gltype1='long int';;
+           ll)  gltype1='long long int';;
+           i64) gltype1='__int64';;
+           u)   gltype1='unsigned int';;
+           ul)  gltype1='unsigned long int';;
+           ull) gltype1='unsigned long long int';;
+           ui64)gltype1='unsigned __int64';;
+         esac
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+              extern $gltype foo;
+              extern $gltype1 foo;
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval gl_cv_type_${gltype}_suffix=\$glsuf
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+         eval result=\$gl_cv_type_${gltype}_suffix
+         test "$result" != no && break
+       done
+fi
+eval ac_res=\$gl_cv_type_${gltype}_suffix
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+    GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+    eval result=\$gl_cv_type_${gltype}_suffix
+    test "$result" = no && result=
+    eval ${GLTYPE}_SUFFIX=\$result
+    cat >>confdefs.h <<_ACEOF
+#define ${GLTYPE}_SUFFIX $result
+_ACEOF
+
+  done
+
+
+
+    STDINT_H=stdint.h
+  fi
+
+   if test -n "$STDINT_H"; then
+  GL_GENERATE_STDINT_H_TRUE=
+  GL_GENERATE_STDINT_H_FALSE='#'
+else
+  GL_GENERATE_STDINT_H_TRUE='#'
+  GL_GENERATE_STDINT_H_FALSE=
+fi
+
+
+
+
+
+  GNULIB_IMAXABS=0;
+  GNULIB_IMAXDIV=0;
+  GNULIB_STRTOIMAX=0;
+  GNULIB_STRTOUMAX=0;
+    HAVE_DECL_IMAXABS=1;
+  HAVE_DECL_IMAXDIV=1;
+  HAVE_DECL_STRTOIMAX=1;
+  HAVE_DECL_STRTOUMAX=1;
+  INT32_MAX_LT_INTMAX_MAX=1;
+  INT64_MAX_EQ_LONG_MAX='defined _LP64';
+  PRI_MACROS_BROKEN=0;
+  PRIPTR_PREFIX=__PRIPTR_PREFIX;
+  UINT32_MAX_LT_UINTMAX_MAX=1;
+  UINT64_MAX_EQ_ULONG_MAX='defined _LP64';
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_inttypes_h='<'inttypes.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <inttypes.h>" >&5
+$as_echo_n "checking absolute name of <inttypes.h>... " >&6; }
+if ${gl_cv_next_inttypes_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+             if test $ac_cv_header_inttypes_h = yes; then
+
+
+               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <inttypes.h>
+
+_ACEOF
+                                                                                                                        case "$host_os" in
+                 aix*) gl_absname_cpp="$ac_cpp -C" ;;
+                 *)    gl_absname_cpp="$ac_cpp" ;;
+               esac
+                                                            gl_cv_next_inttypes_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+                  sed -n '\#/inttypes.h#{
+                    s#.*"\(.*/inttypes.h\)".*#\1#
+                    s#^/[^/]#//&#
+                    p
+                    q
+                  }'`'"'
+          else
+               gl_cv_next_inttypes_h='<'inttypes.h'>'
+             fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_inttypes_h" >&5
+$as_echo "$gl_cv_next_inttypes_h" >&6; }
+     fi
+     NEXT_INTTYPES_H=$gl_cv_next_inttypes_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'inttypes.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_inttypes_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H=$gl_next_as_first_directive
+
+
+
+
+
+
+
+
+$as_echo "#define GL_TRIGGER_STDC_LIMIT_MACROS 1" >>confdefs.h
+
+
+
+
+    for gl_func in imaxabs imaxdiv strtoimax strtoumax; do
+    as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5
+$as_echo_n "checking whether $gl_func is declared without a macro... " >&6; }
+if eval \${$as_gl_Symbol+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <inttypes.h>
+
+int
+main ()
+{
+#undef $gl_func
+  (void) $gl_func;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$as_gl_Symbol=yes"
+else
+  eval "$as_gl_Symbol=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$as_gl_Symbol
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+     if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1
+_ACEOF
+
+                     eval ac_cv_have_decl_$gl_func=yes
+fi
+      done
+
+
+
+  for ac_header in inttypes.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "inttypes.h" "ac_cv_header_inttypes_h" "$ac_includes_default"
+if test "x$ac_cv_header_inttypes_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_INTTYPES_H 1
+_ACEOF
+
+fi
+
+done
+
+  if test $ac_cv_header_inttypes_h = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the inttypes.h PRIxNN macros are broken" >&5
+$as_echo_n "checking whether the inttypes.h PRIxNN macros are broken... " >&6; }
+if ${gt_cv_inttypes_pri_broken+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <inttypes.h>
+#ifdef PRId32
+char *p = PRId32;
+#endif
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gt_cv_inttypes_pri_broken=no
+else
+  gt_cv_inttypes_pri_broken=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_inttypes_pri_broken" >&5
+$as_echo "$gt_cv_inttypes_pri_broken" >&6; }
+  fi
+  if test "$gt_cv_inttypes_pri_broken" = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define PRI_MACROS_BROKEN 1
+_ACEOF
+
+    PRI_MACROS_BROKEN=1
+  else
+    PRI_MACROS_BROKEN=0
+  fi
+
+
+
+  GNULIB_NL_LANGINFO=0;
+    HAVE_NL_LANGINFO=1;
+  REPLACE_NL_LANGINFO=0;
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fcntl.h" >&5
+$as_echo_n "checking for working fcntl.h... " >&6; }
+if ${gl_cv_header_working_fcntl_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  gl_cv_header_working_fcntl_h=cross-compiling
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+           #include <sys/stat.h>
+           #include <unistd.h>
+           #include <fcntl.h>
+           #ifndef O_NOATIME
+            #define O_NOATIME 0
+           #endif
+           #ifndef O_NOFOLLOW
+            #define O_NOFOLLOW 0
+           #endif
+           static int const constants[] =
+            {
+              O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND,
+              O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY
+            };
+
+int
+main ()
+{
+
+            int result = !constants;
+            {
+              static char const sym[] = "conftest.sym";
+              if (symlink (".", sym) != 0)
+                result |= 2;
+              else
+                {
+                  int fd = open (sym, O_RDONLY | O_NOFOLLOW);
+                  if (fd >= 0)
+                    {
+                      close (fd);
+                      result |= 4;
+                    }
+                }
+              unlink (sym);
+            }
+            {
+              static char const file[] = "confdefs.h";
+              int fd = open (file, O_RDONLY | O_NOATIME);
+              if (fd < 0)
+                result |= 8;
+              else
+                {
+                  struct stat st0;
+                  if (fstat (fd, &st0) != 0)
+                    result |= 16;
+                  else
+                    {
+                      char c;
+                      sleep (1);
+                      if (read (fd, &c, 1) != 1)
+                        result |= 24;
+                      else
+                        {
+                          if (close (fd) != 0)
+                            result |= 32;
+                          else
+                            {
+                              struct stat st1;
+                              if (stat (file, &st1) != 0)
+                                result |= 40;
+                              else
+                                if (st0.st_atime != st1.st_atime)
+                                  result |= 64;
+                            }
+                        }
+                    }
+                }
+            }
+            return result;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_header_working_fcntl_h=yes
+else
+  case $? in #(
+        4) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #(
+        64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #(
+        68) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #(
+         *) gl_cv_header_working_fcntl_h='no';;
+        esac
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_working_fcntl_h" >&5
+$as_echo "$gl_cv_header_working_fcntl_h" >&6; }
+
+  case $gl_cv_header_working_fcntl_h in #(
+  *O_NOATIME* | no | cross-compiling) ac_val=0;; #(
+  *) ac_val=1;;
+  esac
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_WORKING_O_NOATIME $ac_val
+_ACEOF
+
+
+  case $gl_cv_header_working_fcntl_h in #(
+  *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #(
+  *) ac_val=1;;
+  esac
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_WORKING_O_NOFOLLOW $ac_val
+_ACEOF
+
+
+ac_fn_c_check_decl "$LINENO" "getc_unlocked" "ac_cv_have_decl_getc_unlocked" "$ac_includes_default"
+if test "x$ac_cv_have_decl_getc_unlocked" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETC_UNLOCKED $ac_have_decl
+_ACEOF
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library >= 2.1 or uClibc" >&5
+$as_echo_n "checking whether we are using the GNU C Library >= 2.1 or uClibc... " >&6; }
+if ${ac_cv_gnu_library_2_1+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
+  Lucky GNU user
+ #endif
+#endif
+#ifdef __UCLIBC__
+ Lucky user
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "Lucky" >/dev/null 2>&1; then :
+  ac_cv_gnu_library_2_1=yes
+else
+  ac_cv_gnu_library_2_1=no
+fi
+rm -f conftest*
+
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2_1" >&5
+$as_echo "$ac_cv_gnu_library_2_1" >&6; }
+
+    GLIBC21="$ac_cv_gnu_library_2_1"
+
+
+
+
+
+
+    # Check whether --enable-threads was given.
+if test "${enable_threads+set}" = set; then :
+  enableval=$enable_threads; gl_use_threads=$enableval
+else
+  case "$host_os" in
+                            osf*) gl_use_threads=no ;;
+       *)    gl_use_threads=yes ;;
+     esac
+
+fi
+
+  if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
+    # For using <pthread.h>:
+    case "$host_os" in
+      osf*)
+        # On OSF/1, the compiler needs the flag -D_REENTRANT so that it
+        # groks <pthread.h>. cc also understands the flag -pthread, but
+        # we don't use it because 1. gcc-2.95 doesn't understand -pthread,
+        # 2. putting a flag into CPPFLAGS that has an effect on the linker
+        # causes the AC_TRY_LINK test below to succeed unexpectedly,
+        # leading to wrong values of LIBTHREAD and LTLIBTHREAD.
+        CPPFLAGS="$CPPFLAGS -D_REENTRANT"
+        ;;
+    esac
+    # Some systems optimize for single-threaded programs by default, and
+    # need special flags to disable these optimizations. For example, the
+    # definition of 'errno' in <errno.h>.
+    case "$host_os" in
+      aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;;
+      solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;;
+    esac
+  fi
+
+
+
+
+
+      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+set}" = set; then :
+  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+  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
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5
+$as_echo_n "checking for ld used by GCC... " >&6; }
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | [A-Za-z]:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the path of ld
+      ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+        ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if ${acl_cv_path_LD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$LD"; then
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
+  for ac_dir in $PATH; do
+    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 GNU ld's only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
+      *GNU* | *'with BFD'*)
+        test "$with_gnu_ld" != no && break ;;
+      *)
+        test "$with_gnu_ld" != yes && break ;;
+      esac
+    fi
+  done
+  IFS="$ac_save_ifs"
+else
+  acl_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$acl_cv_path_LD"
+if test -n "$LD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if ${acl_cv_prog_gnu_ld+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  acl_cv_prog_gnu_ld=yes ;;
+*)
+  acl_cv_prog_gnu_ld=no ;;
+esac
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_prog_gnu_ld" >&5
+$as_echo "$acl_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$acl_cv_prog_gnu_ld
+
+
+
+
+                                                { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5
+$as_echo_n "checking for shared library run path origin... " >&6; }
+if ${acl_cv_rpath+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5
+$as_echo "$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+set}" = set; then :
+  enableval=$enable_rpath; :
+else
+  enable_rpath=yes
+fi
+
+
+
+
+  acl_libdirstem=lib
+  acl_libdirstem2=
+  case "$host_os" in
+    solaris*)
+                                    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5
+$as_echo_n "checking for 64-bit host... " >&6; }
+if ${gl_cv_solaris_64bit+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef _LP64
+sixtyfour bits
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "sixtyfour bits" >/dev/null 2>&1; then :
+  gl_cv_solaris_64bit=yes
+else
+  gl_cv_solaris_64bit=no
+fi
+rm -f conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5
+$as_echo "$gl_cv_solaris_64bit" >&6; }
+      if test $gl_cv_solaris_64bit = yes; then
+        acl_libdirstem=lib/64
+        case "$host_cpu" in
+          sparc*)        acl_libdirstem2=lib/sparcv9 ;;
+          i*86 | x86_64) acl_libdirstem2=lib/amd64 ;;
+        esac
+      fi
+      ;;
+    *)
+      searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
+      if test -n "$searchpath"; then
+        acl_save_IFS="${IFS=   }"; IFS=":"
+        for searchdir in $searchpath; do
+          if test -d "$searchdir"; then
+            case "$searchdir" in
+              */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
+              */../ | */.. )
+                # Better ignore directories of this form. They are misleading.
+                ;;
+              *) searchdir=`cd "$searchdir" && pwd`
+                 case "$searchdir" in
+                   */lib64 ) acl_libdirstem=lib64 ;;
+                 esac ;;
+            esac
+          fi
+        done
+        IFS="$acl_save_IFS"
+      fi
+      ;;
+  esac
+  test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem"
+
+
+
+  gl_threads_api=none
+  LIBTHREAD=
+  LTLIBTHREAD=
+  LIBMULTITHREAD=
+  LTLIBMULTITHREAD=
+  if test "$gl_use_threads" != no; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether imported symbols can be declared weak" >&5
+$as_echo_n "checking whether imported symbols can be declared weak... " >&6; }
+    gl_have_weak=no
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+extern void xyzzy ();
+#pragma weak xyzzy
+int
+main ()
+{
+xyzzy();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_have_weak=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_have_weak" >&5
+$as_echo "$gl_have_weak" >&6; }
+    if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
+      # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that
+      # it groks <pthread.h>. It's added above, in gl_LOCK_EARLY_BODY.
+      ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default"
+if test "x$ac_cv_header_pthread_h" = xyes; then :
+  gl_have_pthread_h=yes
+else
+  gl_have_pthread_h=no
+fi
+
+
+      if test "$gl_have_pthread_h" = yes; then
+        # Other possible tests:
+        #   -lpthreads (FSU threads, PCthreads)
+        #   -lgthreads
+        gl_have_pthread=
+        # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist
+        # in libc. IRIX 6.5 has the first one in both libc and libpthread, but
+        # the second one only in libpthread, and lock.c needs it.
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <pthread.h>
+int
+main ()
+{
+pthread_mutex_lock((pthread_mutex_t*)0);
+           pthread_mutexattr_init((pthread_mutexattr_t*)0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_have_pthread=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+        # Test for libpthread by looking for pthread_kill. (Not pthread_self,
+        # since it is defined as a macro on OSF/1.)
+        if test -n "$gl_have_pthread"; then
+          # The program links fine without libpthread. But it may actually
+          # need to link with libpthread in order to create multiple threads.
+          { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lpthread" >&5
+$as_echo_n "checking for pthread_kill in -lpthread... " >&6; }
+if ${ac_cv_lib_pthread_pthread_kill+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_kill ();
+int
+main ()
+{
+return pthread_kill ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_pthread_pthread_kill=yes
+else
+  ac_cv_lib_pthread_pthread_kill=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_kill" >&5
+$as_echo "$ac_cv_lib_pthread_pthread_kill" >&6; }
+if test "x$ac_cv_lib_pthread_pthread_kill" = xyes; then :
+  LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread
+             # On Solaris and HP-UX, most pthread functions exist also in libc.
+             # Therefore pthread_in_use() needs to actually try to create a
+             # thread: pthread_create from libc will fail, whereas
+             # pthread_create will actually create a thread.
+             case "$host_os" in
+               solaris* | hpux*)
+
+$as_echo "#define PTHREAD_IN_USE_DETECTION_HARD 1" >>confdefs.h
+
+             esac
+
+fi
+
+        else
+          # Some library is needed. Try libpthread and libc_r.
+          { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lpthread" >&5
+$as_echo_n "checking for pthread_kill in -lpthread... " >&6; }
+if ${ac_cv_lib_pthread_pthread_kill+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_kill ();
+int
+main ()
+{
+return pthread_kill ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_pthread_pthread_kill=yes
+else
+  ac_cv_lib_pthread_pthread_kill=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_kill" >&5
+$as_echo "$ac_cv_lib_pthread_pthread_kill" >&6; }
+if test "x$ac_cv_lib_pthread_pthread_kill" = xyes; then :
+  gl_have_pthread=yes
+             LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread
+             LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread
+fi
+
+          if test -z "$gl_have_pthread"; then
+            # For FreeBSD 4.
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lc_r" >&5
+$as_echo_n "checking for pthread_kill in -lc_r... " >&6; }
+if ${ac_cv_lib_c_r_pthread_kill+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lc_r  $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.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_kill ();
+int
+main ()
+{
+return pthread_kill ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_c_r_pthread_kill=yes
+else
+  ac_cv_lib_c_r_pthread_kill=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_r_pthread_kill" >&5
+$as_echo "$ac_cv_lib_c_r_pthread_kill" >&6; }
+if test "x$ac_cv_lib_c_r_pthread_kill" = xyes; then :
+  gl_have_pthread=yes
+               LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r
+               LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r
+fi
+
+          fi
+        fi
+        if test -n "$gl_have_pthread"; then
+          gl_threads_api=posix
+
+$as_echo "#define USE_POSIX_THREADS 1" >>confdefs.h
+
+          if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
+            if test $gl_have_weak = yes; then
+
+$as_echo "#define USE_POSIX_THREADS_WEAK 1" >>confdefs.h
+
+              LIBTHREAD=
+              LTLIBTHREAD=
+            fi
+          fi
+          # OSF/1 4.0 and MacOS X 10.1 lack the pthread_rwlock_t type and the
+          # pthread_rwlock_* functions.
+          ac_fn_c_check_type "$LINENO" "pthread_rwlock_t" "ac_cv_type_pthread_rwlock_t" "#include <pthread.h>
+"
+if test "x$ac_cv_type_pthread_rwlock_t" = xyes; then :
+
+$as_echo "#define HAVE_PTHREAD_RWLOCK 1" >>confdefs.h
+
+fi
+
+          # glibc defines PTHREAD_MUTEX_RECURSIVE as enum, not as a macro.
+          cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <pthread.h>
+int
+main ()
+{
+#if __FreeBSD__ == 4
+error "No, in FreeBSD 4.0 recursive mutexes actually don't work."
+#else
+int x = (int)PTHREAD_MUTEX_RECURSIVE;
+return !x;
+#endif
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+$as_echo "#define HAVE_PTHREAD_MUTEX_RECURSIVE 1" >>confdefs.h
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+        fi
+      fi
+    fi
+    if test -z "$gl_have_pthread"; then
+      if test "$gl_use_threads" = yes || test "$gl_use_threads" = solaris; then
+        gl_have_solaristhread=
+        gl_save_LIBS="$LIBS"
+        LIBS="$LIBS -lthread"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <thread.h>
+#include <synch.h>
+int
+main ()
+{
+thr_self();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_have_solaristhread=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+        LIBS="$gl_save_LIBS"
+        if test -n "$gl_have_solaristhread"; then
+          gl_threads_api=solaris
+          LIBTHREAD=-lthread
+          LTLIBTHREAD=-lthread
+          LIBMULTITHREAD="$LIBTHREAD"
+          LTLIBMULTITHREAD="$LTLIBTHREAD"
+
+$as_echo "#define USE_SOLARIS_THREADS 1" >>confdefs.h
+
+          if test $gl_have_weak = yes; then
+
+$as_echo "#define USE_SOLARIS_THREADS_WEAK 1" >>confdefs.h
+
+            LIBTHREAD=
+            LTLIBTHREAD=
+          fi
+        fi
+      fi
+    fi
+    if test "$gl_use_threads" = pth; then
+      gl_save_CPPFLAGS="$CPPFLAGS"
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libpth" >&5
+$as_echo_n "checking how to link with libpth... " >&6; }
+if ${ac_cv_libpth_libs+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+
+
+
+
+
+
+    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\"
+
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+
+# Check whether --with-libpth-prefix was given.
+if test "${with_libpth_prefix+set}" = set; then :
+  withval=$with_libpth_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\"
+
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+      else
+        additional_includedir="$withval/include"
+        additional_libdir="$withval/$acl_libdirstem"
+        if test "$acl_libdirstem2" != "$acl_libdirstem" \
+           && ! test -d "$withval/$acl_libdirstem"; then
+          additional_libdir="$withval/$acl_libdirstem2"
+        fi
+      fi
+    fi
+
+fi
+
+      LIBPTH=
+  LTLIBPTH=
+  INCPTH=
+  LIBPTH_PREFIX=
+      HAVE_LIBPTH=
+  rpathdirs=
+  ltrpathdirs=
+  names_already_handled=
+  names_next_round='pth '
+  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" || LIBPTH="${LIBPTH}${LIBPTH:+ }$value"
+            eval value=\"\$LTLIB$uppername\"
+            test -z "$value" || LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }$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
+            dir="$additional_libdir"
+                                    if test -n "$acl_shlibext"; then
+              if test -f "$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"; 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"; 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"; 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
+          if test "X$found_dir" = "X"; then
+            for x in $LDFLAGS $LTLIBPTH; 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"; 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"; 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"; 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"; 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
+                        LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-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"; then
+                                LIBPTH="${LIBPTH}${LIBPTH:+ }$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
+                                                      LIBPTH="${LIBPTH}${LIBPTH:+ }$found_so"
+                else
+                  if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
+                                                            LIBPTH="${LIBPTH}${LIBPTH:+ }$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 $LIBPTH; 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
+                      LIBPTH="${LIBPTH}${LIBPTH:+ }-L$found_dir"
+                    fi
+                    if test "$acl_hardcode_minus_L" != no; then
+                                                                                        LIBPTH="${LIBPTH}${LIBPTH:+ }$found_so"
+                    else
+                                                                                                                                                                                LIBPTH="${LIBPTH}${LIBPTH:+ }-l$name"
+                    fi
+                  fi
+                fi
+              fi
+            else
+              if test "X$found_a" != "X"; then
+                                LIBPTH="${LIBPTH}${LIBPTH:+ }$found_a"
+              else
+                                                LIBPTH="${LIBPTH}${LIBPTH:+ }-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" = 'pth'; then
+                  LIBPTH_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" = 'pth'; then
+                  LIBPTH_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 $INCPTH; 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
+                                            INCPTH="${INCPTH}${INCPTH:+ }-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*)
+                    additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+                                                                                                                                                                if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \
+                       && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then
+                      haveit=
+                      if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \
+                         || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; 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 $LIBPTH; 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$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                                                        LIBPTH="${LIBPTH}${LIBPTH:+ }-L$additional_libdir"
+                          fi
+                        fi
+                        haveit=
+                        for x in $LDFLAGS $LTLIBPTH; 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$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                                                        LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-L$additional_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$,,'`
+                    ;;
+                  *)
+                                        LIBPTH="${LIBPTH}${LIBPTH:+ }$dep"
+                    LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }$dep"
+                    ;;
+                esac
+              done
+            fi
+          else
+                                                            LIBPTH="${LIBPTH}${LIBPTH:+ }-l$name"
+            LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-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"
+      LIBPTH="${LIBPTH}${LIBPTH:+ }$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"
+        LIBPTH="${LIBPTH}${LIBPTH:+ }$flag"
+      done
+    fi
+  fi
+  if test "X$ltrpathdirs" != "X"; then
+            for found_dir in $ltrpathdirs; do
+      LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-R$found_dir"
+    done
+  fi
+
+
+
+
+
+
+    ac_cv_libpth_libs="$LIBPTH"
+    ac_cv_libpth_ltlibs="$LTLIBPTH"
+    ac_cv_libpth_cppflags="$INCPTH"
+    ac_cv_libpth_prefix="$LIBPTH_PREFIX"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libpth_libs" >&5
+$as_echo "$ac_cv_libpth_libs" >&6; }
+  LIBPTH="$ac_cv_libpth_libs"
+  LTLIBPTH="$ac_cv_libpth_ltlibs"
+  INCPTH="$ac_cv_libpth_cppflags"
+  LIBPTH_PREFIX="$ac_cv_libpth_prefix"
+
+  for element in $INCPTH; 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
+
+
+
+
+      HAVE_LIBPTH=yes
+
+
+
+      gl_have_pth=
+      gl_save_LIBS="$LIBS"
+      LIBS="$LIBS -lpth"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <pth.h>
+int
+main ()
+{
+pth_self();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_have_pth=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+      LIBS="$gl_save_LIBS"
+      if test -n "$gl_have_pth"; then
+        gl_threads_api=pth
+        LIBTHREAD="$LIBPTH"
+        LTLIBTHREAD="$LTLIBPTH"
+        LIBMULTITHREAD="$LIBTHREAD"
+        LTLIBMULTITHREAD="$LTLIBTHREAD"
+
+$as_echo "#define USE_PTH_THREADS 1" >>confdefs.h
+
+        if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
+          if test $gl_have_weak = yes; then
+
+$as_echo "#define USE_PTH_THREADS_WEAK 1" >>confdefs.h
+
+            LIBTHREAD=
+            LTLIBTHREAD=
+          fi
+        fi
+      else
+        CPPFLAGS="$gl_save_CPPFLAGS"
+      fi
+    fi
+    if test -z "$gl_have_pthread"; then
+      if test "$gl_use_threads" = yes || test "$gl_use_threads" = win32; then
+        if { case "$host_os" in
+               mingw*) true;;
+               *) false;;
+             esac
+           }; then
+          gl_threads_api=win32
+
+$as_echo "#define USE_WIN32_THREADS 1" >>confdefs.h
+
+        fi
+      fi
+    fi
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for multithread API to use" >&5
+$as_echo_n "checking for multithread API to use... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_threads_api" >&5
+$as_echo "$gl_threads_api" >&6; }
+
+
+
+
+
+
+     GNULIB_FCHMODAT=0;
+  GNULIB_FSTATAT=0;
+  GNULIB_FUTIMENS=0;
+  GNULIB_LCHMOD=0;
+  GNULIB_LSTAT=0;
+  GNULIB_MKDIRAT=0;
+  GNULIB_MKFIFO=0;
+  GNULIB_MKFIFOAT=0;
+  GNULIB_MKNOD=0;
+  GNULIB_MKNODAT=0;
+  GNULIB_STAT=0;
+  GNULIB_UTIMENSAT=0;
+    HAVE_FCHMODAT=1;
+  HAVE_FSTATAT=1;
+  HAVE_FUTIMENS=1;
+  HAVE_LCHMOD=1;
+  HAVE_LSTAT=1;
+  HAVE_MKDIRAT=1;
+  HAVE_MKFIFO=1;
+  HAVE_MKFIFOAT=1;
+  HAVE_MKNOD=1;
+  HAVE_MKNODAT=1;
+  HAVE_UTIMENSAT=1;
+  REPLACE_FSTAT=0;
+  REPLACE_FSTATAT=0;
+  REPLACE_FUTIMENS=0;
+  REPLACE_LSTAT=0;
+  REPLACE_MKDIR=0;
+  REPLACE_MKFIFO=0;
+  REPLACE_MKNOD=0;
+  REPLACE_STAT=0;
+  REPLACE_UTIMENSAT=0;
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lstat correctly handles trailing slash" >&5
+$as_echo_n "checking whether lstat correctly handles trailing slash... " >&6; }
+if ${ac_cv_func_lstat_dereferences_slashed_symlink+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  rm -f conftest.sym conftest.file
+     echo >conftest.file
+     if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then
+       if test "$cross_compiling" = yes; then :
+  # When cross-compiling, be pessimistic so we will end up using the
+          # replacement version of lstat that checks for trailing slashes and
+          # calls lstat a second time when necessary.
+          ac_cv_func_lstat_dereferences_slashed_symlink=no
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+struct stat sbuf;
+              /* Linux will dereference the symlink and fail, as required by
+                 POSIX.  That is better in the sense that it means we will not
+                 have to compile and use the lstat wrapper.  */
+              return lstat ("conftest.sym/", &sbuf) == 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_func_lstat_dereferences_slashed_symlink=yes
+else
+  ac_cv_func_lstat_dereferences_slashed_symlink=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+     else
+       # If the 'ln -s' command failed, then we probably don't even
+       # have an lstat function.
+       ac_cv_func_lstat_dereferences_slashed_symlink=no
+     fi
+     rm -f conftest.sym conftest.file
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_lstat_dereferences_slashed_symlink" >&5
+$as_echo "$ac_cv_func_lstat_dereferences_slashed_symlink" >&6; }
+  test $ac_cv_func_lstat_dereferences_slashed_symlink = yes &&
+
+cat >>confdefs.h <<_ACEOF
+#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1
+_ACEOF
+
+  if test "x$ac_cv_func_lstat_dereferences_slashed_symlink" = xno; then
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS lstat.$ac_objext"
+
+  fi
+
+
+  for ac_header in stdlib.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default"
+if test "x$ac_cv_header_stdlib_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STDLIB_H 1
+_ACEOF
+
+fi
+
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible malloc" >&5
+$as_echo_n "checking for GNU libc compatible malloc... " >&6; }
+if ${ac_cv_func_malloc_0_nonnull+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  ac_cv_func_malloc_0_nonnull=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#if defined STDC_HEADERS || defined HAVE_STDLIB_H
+# include <stdlib.h>
+#else
+char *malloc ();
+#endif
+
+int
+main ()
+{
+return ! malloc (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_func_malloc_0_nonnull=yes
+else
+  ac_cv_func_malloc_0_nonnull=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_malloc_0_nonnull" >&5
+$as_echo "$ac_cv_func_malloc_0_nonnull" >&6; }
+if test $ac_cv_func_malloc_0_nonnull = yes; then :
+  gl_cv_func_malloc_0_nonnull=1
+else
+  gl_cv_func_malloc_0_nonnull=0
+fi
+
+
+cat >>confdefs.h <<_ACEOF
+#define MALLOC_0_IS_NONNULL $gl_cv_func_malloc_0_nonnull
+_ACEOF
+
+
+
+
+   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mbstate_t" >&5
+$as_echo_n "checking for mbstate_t... " >&6; }
+if ${ac_cv_type_mbstate_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int
+main ()
+{
+mbstate_t x; return sizeof x;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_type_mbstate_t=yes
+else
+  ac_cv_type_mbstate_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_mbstate_t" >&5
+$as_echo "$ac_cv_type_mbstate_t" >&6; }
+   if test $ac_cv_type_mbstate_t = yes; then
+
+$as_echo "#define HAVE_MBSTATE_T 1" >>confdefs.h
+
+   else
+
+$as_echo "#define mbstate_t int" >>confdefs.h
+
+   fi
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a traditional japanese locale" >&5
+$as_echo_n "checking for a traditional japanese locale... " >&6; }
+if ${gt_cv_locale_ja+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main ()
+{
+  const char *p;
+  /* Check whether the given locale name is recognized by the system.  */
+#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
+  /* On native Win32, setlocale(category, "") looks at the system settings,
+     not at the environment variables.  Also, when an encoding suffix such
+     as ".65001" or ".54936" is speficied, it succeeds but sets the LC_CTYPE
+     category of the locale to "C".  */
+  if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
+      || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
+    return 1;
+#else
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+#endif
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.
+     On MirBSD 10, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "UTF-8".  */
+#if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0
+        || strcmp (cs, "UTF-8") == 0)
+      return 1;
+  }
+#endif
+#ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+  /* Check whether MB_CUR_MAX is > 1.  This excludes the dysfunctional locales
+     on Cygwin 1.5.x.  */
+  if (MB_CUR_MAX == 1)
+    return 1;
+  /* Check whether in a month name, no byte in the range 0x80..0x9F occurs.
+     This excludes the UTF-8 encoding (except on MirBSD).  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+  if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1;
+  for (p = buf; *p != '\0'; p++)
+    if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0)
+      return 1;
+  return 0;
+}
+
+_ACEOF
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest$ac_exeext; then
+      case "$host_os" in
+        # Handle native Windows specially, because there setlocale() interprets
+        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "fr" or "fra" as "French" or "French_France.1252",
+        # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
+        # "ja" as "Japanese" or "Japanese_Japan.932",
+        # and similar.
+        mingw*)
+          # Note that on native Win32, the Japanese locale is Japanese_Japan.932,
+          # and CP932 is very different from EUC-JP, so we cannot use it here.
+          gt_cv_locale_ja=none
+          ;;
+        *)
+          # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+          # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+          # configure script would override the LC_ALL setting. Likewise for
+          # LC_CTYPE, which is also set at the beginning of the configure script.
+          # Test for the AIX locale name.
+          if (LC_ALL=ja_JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_ja=ja_JP
+          else
+            # Test for the locale name with explicit encoding suffix.
+            if (LC_ALL=ja_JP.EUC-JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+              gt_cv_locale_ja=ja_JP.EUC-JP
+            else
+              # Test for the HP-UX, OSF/1, NetBSD locale name.
+              if (LC_ALL=ja_JP.eucJP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                gt_cv_locale_ja=ja_JP.eucJP
+              else
+                # Test for the IRIX, FreeBSD locale name.
+                if (LC_ALL=ja_JP.EUC LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                  gt_cv_locale_ja=ja_JP.EUC
+                else
+                  # Test for the Solaris 7 locale name.
+                  if (LC_ALL=ja LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                    gt_cv_locale_ja=ja
+                  else
+                    # Special test for NetBSD 1.6.
+                    if test -f /usr/share/locale/ja_JP.eucJP/LC_CTYPE; then
+                      gt_cv_locale_ja=ja_JP.eucJP
+                    else
+                      # None found.
+                      gt_cv_locale_ja=none
+                    fi
+                  fi
+                fi
+              fi
+            fi
+          fi
+          ;;
+      esac
+    fi
+    rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_ja" >&5
+$as_echo "$gt_cv_locale_ja" >&6; }
+  LOCALE_JA=$gt_cv_locale_ja
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a transitional chinese locale" >&5
+$as_echo_n "checking for a transitional chinese locale... " >&6; }
+if ${gt_cv_locale_zh_CN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <stdlib.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main ()
+{
+  const char *p;
+  /* Check whether the given locale name is recognized by the system.  */
+#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
+  /* On native Win32, setlocale(category, "") looks at the system settings,
+     not at the environment variables.  Also, when an encoding suffix such
+     as ".65001" or ".54936" is speficied, it succeeds but sets the LC_CTYPE
+     category of the locale to "C".  */
+  if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
+      || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
+    return 1;
+#else
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+#endif
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.
+     On MirBSD 10, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "UTF-8".  */
+#if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0
+        || strcmp (cs, "UTF-8") == 0)
+      return 1;
+  }
+#endif
+#ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+  /* Check whether in a month name, no byte in the range 0x80..0x9F occurs.
+     This excludes the UTF-8 encoding (except on MirBSD).  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+  if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1;
+  for (p = buf; *p != '\0'; p++)
+    if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0)
+      return 1;
+  /* Check whether a typical GB18030 multibyte sequence is recognized as a
+     single wide character.  This excludes the GB2312 and GBK encodings.  */
+  if (mblen ("\203\062\332\066", 5) != 4)
+    return 1;
+  return 0;
+}
+
+_ACEOF
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest$ac_exeext; then
+      case "$host_os" in
+        # Handle native Windows specially, because there setlocale() interprets
+        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "fr" or "fra" as "French" or "French_France.1252",
+        # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
+        # "ja" as "Japanese" or "Japanese_Japan.932",
+        # and similar.
+        mingw*)
+          # Test for the hypothetical native Win32 locale name.
+          if (LC_ALL=Chinese_China.54936 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_zh_CN=Chinese_China.54936
+          else
+            # None found.
+            gt_cv_locale_zh_CN=none
+          fi
+          ;;
+        *)
+          # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+          # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+          # configure script would override the LC_ALL setting. Likewise for
+          # LC_CTYPE, which is also set at the beginning of the configure script.
+          # Test for the locale name without encoding suffix.
+          if (LC_ALL=zh_CN LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_zh_CN=zh_CN
+          else
+            # Test for the locale name with explicit encoding suffix.
+            if (LC_ALL=zh_CN.GB18030 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+              gt_cv_locale_zh_CN=zh_CN.GB18030
+            else
+              # None found.
+              gt_cv_locale_zh_CN=none
+            fi
+          fi
+          ;;
+      esac
+    else
+      # If there was a link error, due to mblen(), the system is so old that
+      # it certainly doesn't have a chinese locale.
+      gt_cv_locale_zh_CN=none
+    fi
+    rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_zh_CN" >&5
+$as_echo "$gt_cv_locale_zh_CN" >&6; }
+  LOCALE_ZH_CN=$gt_cv_locale_zh_CN
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a french Unicode locale" >&5
+$as_echo_n "checking for a french Unicode locale... " >&6; }
+if ${gt_cv_locale_fr_utf8+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+  /* On BeOS and Haiku, locales are not implemented in libc.  Rather, libintl
+     imitates locale dependent behaviour by looking at the environment
+     variables, and all locales use the UTF-8 encoding.  */
+#if !(defined __BEOS__ || defined __HAIKU__)
+  /* Check whether the given locale name is recognized by the system.  */
+# if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
+  /* On native Win32, setlocale(category, "") looks at the system settings,
+     not at the environment variables.  Also, when an encoding suffix such
+     as ".65001" or ".54936" is speficied, it succeeds but sets the LC_CTYPE
+     category of the locale to "C".  */
+  if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
+      || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
+    return 1;
+# else
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+# endif
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.  */
+# if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+      return 1;
+  }
+# endif
+# ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+# endif
+  /* Check whether in the abbreviation of the second month, the second
+     character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is
+     two bytes long, with UTF-8 encoding.  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+  if (strftime (buf, sizeof (buf), "%b", &t) < 4
+      || buf[1] != (char) 0xc3 || buf[2] != (char) 0xa9 || buf[3] != 'v')
+    return 1;
+#endif
+  /* Check whether the decimal separator is a comma.
+     On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+     are nl_langinfo(RADIXCHAR) are both ".".  */
+  if (localeconv () ->decimal_point[0] != ',') return 1;
+  return 0;
+}
+
+_ACEOF
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest$ac_exeext; then
+      case "$host_os" in
+        # Handle native Windows specially, because there setlocale() interprets
+        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "fr" or "fra" as "French" or "French_France.1252",
+        # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
+        # "ja" as "Japanese" or "Japanese_Japan.932",
+        # and similar.
+        mingw*)
+          # Test for the hypothetical native Win32 locale name.
+          if (LC_ALL=French_France.65001 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr_utf8=French_France.65001
+          else
+            # None found.
+            gt_cv_locale_fr_utf8=none
+          fi
+          ;;
+        *)
+          # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+          # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+          # configure script would override the LC_ALL setting. Likewise for
+          # LC_CTYPE, which is also set at the beginning of the configure script.
+          # Test for the usual locale name.
+          if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr_utf8=fr_FR
+          else
+            # Test for the locale name with explicit encoding suffix.
+            if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+              gt_cv_locale_fr_utf8=fr_FR.UTF-8
+            else
+              # Test for the Solaris 7 locale name.
+              if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                gt_cv_locale_fr_utf8=fr.UTF-8
+              else
+                # None found.
+                gt_cv_locale_fr_utf8=none
+              fi
+            fi
+          fi
+          ;;
+      esac
+    fi
+    rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_fr_utf8" >&5
+$as_echo "$gt_cv_locale_fr_utf8" >&6; }
+  LOCALE_FR_UTF8=$gt_cv_locale_fr_utf8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ssize_t" >&5
+$as_echo_n "checking for ssize_t... " >&6; }
+if ${gt_cv_ssize_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+int
+main ()
+{
+int x = sizeof (ssize_t *) + sizeof (ssize_t);
+            return !x;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gt_cv_ssize_t=yes
+else
+  gt_cv_ssize_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_ssize_t" >&5
+$as_echo "$gt_cv_ssize_t" >&6; }
+  if test $gt_cv_ssize_t = no; then
+
+$as_echo "#define ssize_t int" >>confdefs.h
+
+  fi
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5
+$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; }
+if ${ac_cv_header_stdbool_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+             #include <stdbool.h>
+             #ifndef bool
+              "error: bool is not defined"
+             #endif
+             #ifndef false
+              "error: false is not defined"
+             #endif
+             #if false
+              "error: false is not 0"
+             #endif
+             #ifndef true
+              "error: true is not defined"
+             #endif
+             #if true != 1
+              "error: true is not 1"
+             #endif
+             #ifndef __bool_true_false_are_defined
+              "error: __bool_true_false_are_defined is not defined"
+             #endif
+
+             struct s { _Bool s: 1; _Bool t; } s;
+
+             char a[true == 1 ? 1 : -1];
+             char b[false == 0 ? 1 : -1];
+             char c[__bool_true_false_are_defined == 1 ? 1 : -1];
+             char d[(bool) 0.5 == true ? 1 : -1];
+             /* See body of main program for 'e'.  */
+             char f[(_Bool) 0.0 == false ? 1 : -1];
+             char g[true];
+             char h[sizeof (_Bool)];
+             char i[sizeof s.t];
+             enum { j = false, k = true, l = false * true, m = true * 256 };
+             /* The following fails for
+                HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */
+             _Bool n[m];
+             char o[sizeof n == m * sizeof n[0] ? 1 : -1];
+             char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+             /* Catch a bug in an HP-UX C compiler.  See
+                http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+                http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+              */
+             _Bool q = true;
+             _Bool *pq = &q;
+
+int
+main ()
+{
+
+             bool e = &s;
+             *pq |= q;
+             *pq |= ! q;
+             /* Refer to every declared value, to avoid compiler optimizations.  */
+             return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
+                     + !m + !n + !o + !p + !q + !pq);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdbool_h=yes
+else
+  ac_cv_header_stdbool_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5
+$as_echo "$ac_cv_header_stdbool_h" >&6; }
+   ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
+if test "x$ac_cv_type__Bool" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE__BOOL 1
+_ACEOF
+
+
+fi
+
+
+
+    REPLACE_NULL=0;
+  HAVE_WCHAR_T=1;
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wchar_t" >&5
+$as_echo_n "checking for wchar_t... " >&6; }
+if ${gt_cv_c_wchar_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stddef.h>
+            wchar_t foo = (wchar_t)'\0';
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gt_cv_c_wchar_t=yes
+else
+  gt_cv_c_wchar_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wchar_t" >&5
+$as_echo "$gt_cv_c_wchar_t" >&6; }
+  if test $gt_cv_c_wchar_t = yes; then
+
+$as_echo "#define HAVE_WCHAR_T 1" >>confdefs.h
+
+  fi
+
+
+  GNULIB_MEMCHR=0;
+  GNULIB_MEMMEM=0;
+  GNULIB_MEMPCPY=0;
+  GNULIB_MEMRCHR=0;
+  GNULIB_RAWMEMCHR=0;
+  GNULIB_STPCPY=0;
+  GNULIB_STPNCPY=0;
+  GNULIB_STRCHRNUL=0;
+  GNULIB_STRDUP=0;
+  GNULIB_STRNCAT=0;
+  GNULIB_STRNDUP=0;
+  GNULIB_STRNLEN=0;
+  GNULIB_STRPBRK=0;
+  GNULIB_STRSEP=0;
+  GNULIB_STRSTR=0;
+  GNULIB_STRCASESTR=0;
+  GNULIB_STRTOK_R=0;
+  GNULIB_MBSLEN=0;
+  GNULIB_MBSNLEN=0;
+  GNULIB_MBSCHR=0;
+  GNULIB_MBSRCHR=0;
+  GNULIB_MBSSTR=0;
+  GNULIB_MBSCASECMP=0;
+  GNULIB_MBSNCASECMP=0;
+  GNULIB_MBSPCASECMP=0;
+  GNULIB_MBSCASESTR=0;
+  GNULIB_MBSCSPN=0;
+  GNULIB_MBSPBRK=0;
+  GNULIB_MBSSPN=0;
+  GNULIB_MBSSEP=0;
+  GNULIB_MBSTOK_R=0;
+  GNULIB_STRERROR=0;
+  GNULIB_STRERROR_R=0;
+  GNULIB_STRSIGNAL=0;
+  GNULIB_STRVERSCMP=0;
+  HAVE_MBSLEN=0;
+    HAVE_MEMCHR=1;
+  HAVE_DECL_MEMMEM=1;
+  HAVE_MEMPCPY=1;
+  HAVE_DECL_MEMRCHR=1;
+  HAVE_RAWMEMCHR=1;
+  HAVE_STPCPY=1;
+  HAVE_STPNCPY=1;
+  HAVE_STRCHRNUL=1;
+  HAVE_DECL_STRDUP=1;
+  HAVE_DECL_STRNDUP=1;
+  HAVE_DECL_STRNLEN=1;
+  HAVE_STRPBRK=1;
+  HAVE_STRSEP=1;
+  HAVE_STRCASESTR=1;
+  HAVE_DECL_STRTOK_R=1;
+  HAVE_DECL_STRERROR_R=1;
+  HAVE_DECL_STRSIGNAL=1;
+  HAVE_STRVERSCMP=1;
+  REPLACE_MEMCHR=0;
+  REPLACE_MEMMEM=0;
+  REPLACE_STPNCPY=0;
+  REPLACE_STRDUP=0;
+  REPLACE_STRSTR=0;
+  REPLACE_STRCASESTR=0;
+  REPLACE_STRCHRNUL=0;
+  REPLACE_STRERROR=0;
+  REPLACE_STRERROR_R=0;
+  REPLACE_STRNCAT=0;
+  REPLACE_STRNDUP=0;
+  REPLACE_STRNLEN=0;
+  REPLACE_STRSIGNAL=0;
+  REPLACE_STRTOK_R=0;
+  UNDEFINE_STRTOK_R=0;
+
+
+
+ac_fn_c_check_decl "$LINENO" "strdup" "ac_cv_have_decl_strdup" "$ac_includes_default"
+if test "x$ac_cv_have_decl_strdup" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRDUP $ac_have_decl
+_ACEOF
+
+
+
+ac_fn_c_check_decl "$LINENO" "strerror_r" "ac_cv_have_decl_strerror_r" "$ac_includes_default"
+if test "x$ac_cv_have_decl_strerror_r" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRERROR_R $ac_have_decl
+_ACEOF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_string_h='<'string.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <string.h>" >&5
+$as_echo_n "checking absolute name of <string.h>... " >&6; }
+if ${gl_cv_next_string_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+                                                                                                                        case "$host_os" in
+                 aix*) gl_absname_cpp="$ac_cpp -C" ;;
+                 *)    gl_absname_cpp="$ac_cpp" ;;
+               esac
+                                                            gl_cv_next_string_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+                  sed -n '\#/string.h#{
+                    s#.*"\(.*/string.h\)".*#\1#
+                    s#^/[^/]#//&#
+                    p
+                    q
+                  }'`'"'
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_string_h" >&5
+$as_echo "$gl_cv_next_string_h" >&6; }
+     fi
+     NEXT_STRING_H=$gl_cv_next_string_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'string.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_string_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_STRING_H=$gl_next_as_first_directive
+
+
+
+
+
+
+    for gl_func in memmem mempcpy memrchr rawmemchr stpcpy stpncpy strchrnul strdup      strncat strndup strnlen strpbrk strsep strcasestr strtok_r strerror_r      strsignal strverscmp; do
+    as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5
+$as_echo_n "checking whether $gl_func is declared without a macro... " >&6; }
+if eval \${$as_gl_Symbol+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+
+int
+main ()
+{
+#undef $gl_func
+  (void) $gl_func;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$as_gl_Symbol=yes"
+else
+  eval "$as_gl_Symbol=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$as_gl_Symbol
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+     if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1
+_ACEOF
+
+                     eval ac_cv_have_decl_$gl_func=yes
+fi
+      done
+
+
+ac_fn_c_check_decl "$LINENO" "strndup" "ac_cv_have_decl_strndup" "$ac_includes_default"
+if test "x$ac_cv_have_decl_strndup" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRNDUP $ac_have_decl
+_ACEOF
+
+
+
+ac_fn_c_check_decl "$LINENO" "strnlen" "ac_cv_have_decl_strnlen" "$ac_includes_default"
+if test "x$ac_cv_have_decl_strnlen" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRNLEN $ac_have_decl
+_ACEOF
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stat file-mode macros are broken" >&5
+$as_echo_n "checking whether stat file-mode macros are broken... " >&6; }
+if ${ac_cv_header_stat_broken+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#if defined S_ISBLK && defined S_IFDIR
+extern char c1[S_ISBLK (S_IFDIR) ? -1 : 1];
+#endif
+
+#if defined S_ISBLK && defined S_IFCHR
+extern char c2[S_ISBLK (S_IFCHR) ? -1 : 1];
+#endif
+
+#if defined S_ISLNK && defined S_IFREG
+extern char c3[S_ISLNK (S_IFREG) ? -1 : 1];
+#endif
+
+#if defined S_ISSOCK && defined S_IFREG
+extern char c4[S_ISSOCK (S_IFREG) ? -1 : 1];
+#endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stat_broken=no
+else
+  ac_cv_header_stat_broken=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stat_broken" >&5
+$as_echo "$ac_cv_header_stat_broken" >&6; }
+if test $ac_cv_header_stat_broken = yes; then
+
+$as_echo "#define STAT_MACROS_BROKEN 1" >>confdefs.h
+
+fi
+
+
+
+
+
+  gl_threads_api=none
+  LIBTHREAD=
+  LTLIBTHREAD=
+  LIBMULTITHREAD=
+  LTLIBMULTITHREAD=
+  if test "$gl_use_threads" != no; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether imported symbols can be declared weak" >&5
+$as_echo_n "checking whether imported symbols can be declared weak... " >&6; }
+if ${gl_cv_have_weak+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  gl_cv_have_weak=no
+              cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+extern void xyzzy ();
+#pragma weak xyzzy
+int
+main ()
+{
+xyzzy();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_have_weak=maybe
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+       if test $gl_cv_have_weak = maybe; then
+                           if test "$cross_compiling" = yes; then :
+                          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_have_weak="guessing yes"
+else
+  gl_cv_have_weak="guessing no"
+fi
+rm -f conftest*
+
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdio.h>
+#pragma weak fputs
+int main ()
+{
+  return (fputs == NULL);
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_have_weak=yes
+else
+  gl_cv_have_weak=no
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_have_weak" >&5
+$as_echo "$gl_cv_have_weak" >&6; }
+    if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
+      # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that
+      # it groks <pthread.h>. It's added above, in gl_THREADLIB_EARLY_BODY.
+      ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default"
+if test "x$ac_cv_header_pthread_h" = xyes; then :
+  gl_have_pthread_h=yes
+else
+  gl_have_pthread_h=no
+fi
+
+
+      if test "$gl_have_pthread_h" = yes; then
+        # Other possible tests:
+        #   -lpthreads (FSU threads, PCthreads)
+        #   -lgthreads
+        gl_have_pthread=
+        # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist
+        # in libc. IRIX 6.5 has the first one in both libc and libpthread, but
+        # the second one only in libpthread, and lock.c needs it.
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <pthread.h>
+int
+main ()
+{
+pthread_mutex_lock((pthread_mutex_t*)0);
+               pthread_mutexattr_init((pthread_mutexattr_t*)0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_have_pthread=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+        # Test for libpthread by looking for pthread_kill. (Not pthread_self,
+        # since it is defined as a macro on OSF/1.)
+        if test -n "$gl_have_pthread"; then
+          # The program links fine without libpthread. But it may actually
+          # need to link with libpthread in order to create multiple threads.
+          { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lpthread" >&5
+$as_echo_n "checking for pthread_kill in -lpthread... " >&6; }
+if ${ac_cv_lib_pthread_pthread_kill+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_kill ();
+int
+main ()
+{
+return pthread_kill ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_pthread_pthread_kill=yes
+else
+  ac_cv_lib_pthread_pthread_kill=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_kill" >&5
+$as_echo "$ac_cv_lib_pthread_pthread_kill" >&6; }
+if test "x$ac_cv_lib_pthread_pthread_kill" = xyes; then :
+  LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread
+             # On Solaris and HP-UX, most pthread functions exist also in libc.
+             # Therefore pthread_in_use() needs to actually try to create a
+             # thread: pthread_create from libc will fail, whereas
+             # pthread_create will actually create a thread.
+             case "$host_os" in
+               solaris* | hpux*)
+
+$as_echo "#define PTHREAD_IN_USE_DETECTION_HARD 1" >>confdefs.h
+
+             esac
+
+fi
+
+        else
+          # Some library is needed. Try libpthread and libc_r.
+          { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lpthread" >&5
+$as_echo_n "checking for pthread_kill in -lpthread... " >&6; }
+if ${ac_cv_lib_pthread_pthread_kill+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_kill ();
+int
+main ()
+{
+return pthread_kill ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_pthread_pthread_kill=yes
+else
+  ac_cv_lib_pthread_pthread_kill=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_kill" >&5
+$as_echo "$ac_cv_lib_pthread_pthread_kill" >&6; }
+if test "x$ac_cv_lib_pthread_pthread_kill" = xyes; then :
+  gl_have_pthread=yes
+             LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread
+             LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread
+fi
+
+          if test -z "$gl_have_pthread"; then
+            # For FreeBSD 4.
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lc_r" >&5
+$as_echo_n "checking for pthread_kill in -lc_r... " >&6; }
+if ${ac_cv_lib_c_r_pthread_kill+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lc_r  $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.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_kill ();
+int
+main ()
+{
+return pthread_kill ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_c_r_pthread_kill=yes
+else
+  ac_cv_lib_c_r_pthread_kill=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_r_pthread_kill" >&5
+$as_echo "$ac_cv_lib_c_r_pthread_kill" >&6; }
+if test "x$ac_cv_lib_c_r_pthread_kill" = xyes; then :
+  gl_have_pthread=yes
+               LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r
+               LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r
+fi
+
+          fi
+        fi
+        if test -n "$gl_have_pthread"; then
+          gl_threads_api=posix
+
+$as_echo "#define USE_POSIX_THREADS 1" >>confdefs.h
+
+          if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
+            if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
+
+$as_echo "#define USE_POSIX_THREADS_WEAK 1" >>confdefs.h
+
+              LIBTHREAD=
+              LTLIBTHREAD=
+            fi
+          fi
+        fi
+      fi
+    fi
+    if test -z "$gl_have_pthread"; then
+      if test "$gl_use_threads" = yes || test "$gl_use_threads" = solaris; then
+        gl_have_solaristhread=
+        gl_save_LIBS="$LIBS"
+        LIBS="$LIBS -lthread"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <thread.h>
+#include <synch.h>
+
+int
+main ()
+{
+thr_self();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_have_solaristhread=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+        LIBS="$gl_save_LIBS"
+        if test -n "$gl_have_solaristhread"; then
+          gl_threads_api=solaris
+          LIBTHREAD=-lthread
+          LTLIBTHREAD=-lthread
+          LIBMULTITHREAD="$LIBTHREAD"
+          LTLIBMULTITHREAD="$LTLIBTHREAD"
+
+$as_echo "#define USE_SOLARIS_THREADS 1" >>confdefs.h
+
+          if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
+
+$as_echo "#define USE_SOLARIS_THREADS_WEAK 1" >>confdefs.h
+
+            LIBTHREAD=
+            LTLIBTHREAD=
+          fi
+        fi
+      fi
+    fi
+    if test "$gl_use_threads" = pth; then
+      gl_save_CPPFLAGS="$CPPFLAGS"
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libpth" >&5
+$as_echo_n "checking how to link with libpth... " >&6; }
+if ${ac_cv_libpth_libs+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+
+
+
+
+
+
+    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\"
+
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+
+# Check whether --with-libpth-prefix was given.
+if test "${with_libpth_prefix+set}" = set; then :
+  withval=$with_libpth_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\"
+
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+      else
+        additional_includedir="$withval/include"
+        additional_libdir="$withval/$acl_libdirstem"
+        if test "$acl_libdirstem2" != "$acl_libdirstem" \
+           && ! test -d "$withval/$acl_libdirstem"; then
+          additional_libdir="$withval/$acl_libdirstem2"
+        fi
+      fi
+    fi
+
+fi
+
+      LIBPTH=
+  LTLIBPTH=
+  INCPTH=
+  LIBPTH_PREFIX=
+      HAVE_LIBPTH=
+  rpathdirs=
+  ltrpathdirs=
+  names_already_handled=
+  names_next_round='pth '
+  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" || LIBPTH="${LIBPTH}${LIBPTH:+ }$value"
+            eval value=\"\$LTLIB$uppername\"
+            test -z "$value" || LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }$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
+            dir="$additional_libdir"
+                                    if test -n "$acl_shlibext"; then
+              if test -f "$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"; 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"; 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"; 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
+          if test "X$found_dir" = "X"; then
+            for x in $LDFLAGS $LTLIBPTH; 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"; 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"; 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"; 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"; 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
+                        LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-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"; then
+                                LIBPTH="${LIBPTH}${LIBPTH:+ }$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
+                                                      LIBPTH="${LIBPTH}${LIBPTH:+ }$found_so"
+                else
+                  if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
+                                                            LIBPTH="${LIBPTH}${LIBPTH:+ }$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 $LIBPTH; 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
+                      LIBPTH="${LIBPTH}${LIBPTH:+ }-L$found_dir"
+                    fi
+                    if test "$acl_hardcode_minus_L" != no; then
+                                                                                        LIBPTH="${LIBPTH}${LIBPTH:+ }$found_so"
+                    else
+                                                                                                                                                                                LIBPTH="${LIBPTH}${LIBPTH:+ }-l$name"
+                    fi
+                  fi
+                fi
+              fi
+            else
+              if test "X$found_a" != "X"; then
+                                LIBPTH="${LIBPTH}${LIBPTH:+ }$found_a"
+              else
+                                                LIBPTH="${LIBPTH}${LIBPTH:+ }-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" = 'pth'; then
+                  LIBPTH_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" = 'pth'; then
+                  LIBPTH_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 $INCPTH; 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
+                                            INCPTH="${INCPTH}${INCPTH:+ }-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*)
+                    additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+                                                                                                                                                                if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \
+                       && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then
+                      haveit=
+                      if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \
+                         || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; 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 $LIBPTH; 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$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                                                        LIBPTH="${LIBPTH}${LIBPTH:+ }-L$additional_libdir"
+                          fi
+                        fi
+                        haveit=
+                        for x in $LDFLAGS $LTLIBPTH; 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$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                                                        LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-L$additional_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$,,'`
+                    ;;
+                  *)
+                                        LIBPTH="${LIBPTH}${LIBPTH:+ }$dep"
+                    LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }$dep"
+                    ;;
+                esac
+              done
+            fi
+          else
+                                                            LIBPTH="${LIBPTH}${LIBPTH:+ }-l$name"
+            LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-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"
+      LIBPTH="${LIBPTH}${LIBPTH:+ }$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"
+        LIBPTH="${LIBPTH}${LIBPTH:+ }$flag"
+      done
+    fi
+  fi
+  if test "X$ltrpathdirs" != "X"; then
+            for found_dir in $ltrpathdirs; do
+      LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-R$found_dir"
+    done
+  fi
+
+
+
+
+
+
+    ac_cv_libpth_libs="$LIBPTH"
+    ac_cv_libpth_ltlibs="$LTLIBPTH"
+    ac_cv_libpth_cppflags="$INCPTH"
+    ac_cv_libpth_prefix="$LIBPTH_PREFIX"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libpth_libs" >&5
+$as_echo "$ac_cv_libpth_libs" >&6; }
+  LIBPTH="$ac_cv_libpth_libs"
+  LTLIBPTH="$ac_cv_libpth_ltlibs"
+  INCPTH="$ac_cv_libpth_cppflags"
+  LIBPTH_PREFIX="$ac_cv_libpth_prefix"
+
+  for element in $INCPTH; 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
+
+
+
+
+      HAVE_LIBPTH=yes
+
+
+
+      gl_have_pth=
+      gl_save_LIBS="$LIBS"
+      LIBS="$LIBS $LIBPTH"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <pth.h>
+int
+main ()
+{
+pth_self();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_have_pth=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+      LIBS="$gl_save_LIBS"
+      if test -n "$gl_have_pth"; then
+        gl_threads_api=pth
+        LIBTHREAD="$LIBPTH"
+        LTLIBTHREAD="$LTLIBPTH"
+        LIBMULTITHREAD="$LIBTHREAD"
+        LTLIBMULTITHREAD="$LTLIBTHREAD"
+
+$as_echo "#define USE_PTH_THREADS 1" >>confdefs.h
+
+        if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
+          if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
+
+$as_echo "#define USE_PTH_THREADS_WEAK 1" >>confdefs.h
+
+            LIBTHREAD=
+            LTLIBTHREAD=
+          fi
+        fi
+      else
+        CPPFLAGS="$gl_save_CPPFLAGS"
+      fi
+    fi
+    if test -z "$gl_have_pthread"; then
+      if test "$gl_use_threads" = yes || test "$gl_use_threads" = win32; then
+        if { case "$host_os" in
+               mingw*) true;;
+               *) false;;
+             esac
+           }; then
+          gl_threads_api=win32
+
+$as_echo "#define USE_WIN32_THREADS 1" >>confdefs.h
+
+        fi
+      fi
+    fi
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for multithread API to use" >&5
+$as_echo_n "checking for multithread API to use... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_threads_api" >&5
+$as_echo "$gl_threads_api" >&6; }
+
+
+
+
+
+
+  GNULIB_MKTIME=0;
+  GNULIB_NANOSLEEP=0;
+  GNULIB_STRPTIME=0;
+  GNULIB_TIMEGM=0;
+  GNULIB_TIME_R=0;
+    HAVE_DECL_LOCALTIME_R=1;
+  HAVE_NANOSLEEP=1;
+  HAVE_STRPTIME=1;
+  HAVE_TIMEGM=1;
+        REPLACE_LOCALTIME_R=GNULIB_PORTCHECK;
+  REPLACE_MKTIME=GNULIB_PORTCHECK;
+  REPLACE_NANOSLEEP=GNULIB_PORTCHECK;
+  REPLACE_TIMEGM=GNULIB_PORTCHECK;
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timespec in <time.h>" >&5
+$as_echo_n "checking for struct timespec in <time.h>... " >&6; }
+if ${gl_cv_sys_struct_timespec_in_time_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <time.h>
+
+int
+main ()
+{
+static struct timespec x; x.tv_sec = x.tv_nsec;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_sys_struct_timespec_in_time_h=yes
+else
+  gl_cv_sys_struct_timespec_in_time_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_sys_struct_timespec_in_time_h" >&5
+$as_echo "$gl_cv_sys_struct_timespec_in_time_h" >&6; }
+
+  TIME_H_DEFINES_STRUCT_TIMESPEC=0
+  SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=0
+  PTHREAD_H_DEFINES_STRUCT_TIMESPEC=0
+  if test $gl_cv_sys_struct_timespec_in_time_h = yes; then
+    TIME_H_DEFINES_STRUCT_TIMESPEC=1
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timespec in <sys/time.h>" >&5
+$as_echo_n "checking for struct timespec in <sys/time.h>... " >&6; }
+if ${gl_cv_sys_struct_timespec_in_sys_time_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/time.h>
+
+int
+main ()
+{
+static struct timespec x; x.tv_sec = x.tv_nsec;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_sys_struct_timespec_in_sys_time_h=yes
+else
+  gl_cv_sys_struct_timespec_in_sys_time_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_sys_struct_timespec_in_sys_time_h" >&5
+$as_echo "$gl_cv_sys_struct_timespec_in_sys_time_h" >&6; }
+    if test $gl_cv_sys_struct_timespec_in_sys_time_h = yes; then
+      SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=1
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timespec in <pthread.h>" >&5
+$as_echo_n "checking for struct timespec in <pthread.h>... " >&6; }
+if ${gl_cv_sys_struct_timespec_in_pthread_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <pthread.h>
+
+int
+main ()
+{
+static struct timespec x; x.tv_sec = x.tv_nsec;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_sys_struct_timespec_in_pthread_h=yes
+else
+  gl_cv_sys_struct_timespec_in_pthread_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_sys_struct_timespec_in_pthread_h" >&5
+$as_echo "$gl_cv_sys_struct_timespec_in_pthread_h" >&6; }
+      if test $gl_cv_sys_struct_timespec_in_pthread_h = yes; then
+        PTHREAD_H_DEFINES_STRUCT_TIMESPEC=1
+      fi
+    fi
+  fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_time_h='<'time.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <time.h>" >&5
+$as_echo_n "checking absolute name of <time.h>... " >&6; }
+if ${gl_cv_next_time_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <time.h>
+
+_ACEOF
+                                                                                                                        case "$host_os" in
+                 aix*) gl_absname_cpp="$ac_cpp -C" ;;
+                 *)    gl_absname_cpp="$ac_cpp" ;;
+               esac
+                                                            gl_cv_next_time_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+                  sed -n '\#/time.h#{
+                    s#.*"\(.*/time.h\)".*#\1#
+                    s#^/[^/]#//&#
+                    p
+                    q
+                  }'`'"'
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_time_h" >&5
+$as_echo "$gl_cv_next_time_h" >&6; }
+     fi
+     NEXT_TIME_H=$gl_cv_next_time_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'time.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_time_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_TIME_H=$gl_next_as_first_directive
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  if test $ac_cv_header_features_h = yes; then
+    HAVE_FEATURES_H=1
+  else
+    HAVE_FEATURES_H=0
+  fi
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wint_t" >&5
+$as_echo_n "checking for wint_t... " >&6; }
+if ${gt_cv_c_wint_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+   before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+            wint_t foo = (wchar_t)'\0';
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gt_cv_c_wint_t=yes
+else
+  gt_cv_c_wint_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wint_t" >&5
+$as_echo "$gt_cv_c_wint_t" >&6; }
+  if test $gt_cv_c_wint_t = yes; then
+
+$as_echo "#define HAVE_WINT_T 1" >>confdefs.h
+
+  fi
+
+
+
+
+  GNULIB_ISWBLANK=0;
+  GNULIB_WCTYPE=0;
+  GNULIB_ISWCTYPE=0;
+  GNULIB_WCTRANS=0;
+  GNULIB_TOWCTRANS=0;
+    HAVE_ISWBLANK=1;
+  HAVE_WCTYPE_T=1;
+  HAVE_WCTRANS_T=1;
+  REPLACE_ISWBLANK=0;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if environ is properly declared" >&5
+$as_echo_n "checking if environ is properly declared... " >&6; }
+  if ${gt_cv_var_environ_declaration+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <unistd.h>
+           extern struct { int foo; } environ;
+int
+main ()
+{
+environ.foo = 1;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gt_cv_var_environ_declaration=no
+else
+  gt_cv_var_environ_declaration=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_var_environ_declaration" >&5
+$as_echo "$gt_cv_var_environ_declaration" >&6; }
+  if test $gt_cv_var_environ_declaration = yes; then
+
+$as_echo "#define HAVE_ENVIRON_DECL 1" >>confdefs.h
+
+  fi
+
+
+  if test $gt_cv_var_environ_declaration != yes; then
+    HAVE_DECL_ENVIRON=0
+  fi
+
+
+  GNULIB_FCNTL=0;
+  GNULIB_NONBLOCKING=0;
+  GNULIB_OPEN=0;
+  GNULIB_OPENAT=0;
+    HAVE_FCNTL=1;
+  HAVE_OPENAT=1;
+  REPLACE_FCNTL=0;
+  REPLACE_OPEN=0;
+  REPLACE_OPENAT=0;
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ungetc works on arbitrary bytes" >&5
+$as_echo_n "checking whether ungetc works on arbitrary bytes... " >&6; }
+if ${gl_cv_func_ungetc_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  gl_cv_func_ungetc_works='guessing no'
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdio.h>
+
+int
+main ()
+{
+FILE *f;
+           if (!(f = fopen ("conftest.tmp", "w+"))) return 1;
+           if (fputs ("abc", f) < 0) return 2;
+           rewind (f);
+           if (fgetc (f) != 'a') return 3;
+           if (fgetc (f) != 'b') return 4;
+           if (ungetc ('d', f) != 'd') return 5;
+           if (ftell (f) != 1) return 6;
+           if (fgetc (f) != 'd') return 7;
+           if (ftell (f) != 2) return 8;
+           if (fseek (f, 0, SEEK_CUR) != 0) return 9;
+           if (ftell (f) != 2) return 10;
+           if (fgetc (f) != 'c') return 11;
+           fclose (f); remove ("conftest.tmp");
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_ungetc_works=yes
+else
+  gl_cv_func_ungetc_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_ungetc_works" >&5
+$as_echo "$gl_cv_func_ungetc_works" >&6; }
+  if test "$gl_cv_func_ungetc_works" != yes; then
+
+$as_echo "#define FUNC_UNGETC_BROKEN 1" >>confdefs.h
+
+  fi
+
+
+  GNULIB_SETLOCALE=0;
+  GNULIB_DUPLOCALE=0;
+    HAVE_DUPLOCALE=1;
+  REPLACE_SETLOCALE=0;
+  REPLACE_DUPLOCALE=0;
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5
+$as_echo_n "checking for LC_MESSAGES... " >&6; }
+if ${gt_cv_val_LC_MESSAGES+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <locale.h>
+int
+main ()
+{
+return LC_MESSAGES
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gt_cv_val_LC_MESSAGES=yes
+else
+  gt_cv_val_LC_MESSAGES=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_val_LC_MESSAGES" >&5
+$as_echo "$gt_cv_val_LC_MESSAGES" >&6; }
+  if test $gt_cv_val_LC_MESSAGES = yes; then
+
+$as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h
+
+  fi
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5
+$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; }
+if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  gt_save_LIBS="$LIBS"
+     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <CoreFoundation/CFPreferences.h>
+int
+main ()
+{
+CFPreferencesCopyAppValue(NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gt_cv_func_CFPreferencesCopyAppValue=yes
+else
+  gt_cv_func_CFPreferencesCopyAppValue=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     LIBS="$gt_save_LIBS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5
+$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; }
+  if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
+
+$as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h
+
+  fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5
+$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; }
+if ${gt_cv_func_CFLocaleCopyCurrent+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  gt_save_LIBS="$LIBS"
+     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <CoreFoundation/CFLocale.h>
+int
+main ()
+{
+CFLocaleCopyCurrent();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gt_cv_func_CFLocaleCopyCurrent=yes
+else
+  gt_cv_func_CFLocaleCopyCurrent=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     LIBS="$gt_save_LIBS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5
+$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; }
+  if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+
+$as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h
+
+  fi
+  INTL_MACOSX_LIBS=
+  if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+    INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
+  fi
+
+
+ac_fn_c_check_type "$LINENO" "mode_t" "ac_cv_type_mode_t" "$ac_includes_default"
+if test "x$ac_cv_type_mode_t" = xyes; then :
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define mode_t int
+_ACEOF
+
+fi
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for promoted mode_t type" >&5
+$as_echo_n "checking for promoted mode_t type... " >&6; }
+if ${gl_cv_promoted_mode_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+                cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+int
+main ()
+{
+typedef int array[2 * (sizeof (mode_t) < sizeof (int)) - 1];
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_promoted_mode_t='int'
+else
+  gl_cv_promoted_mode_t='mode_t'
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_promoted_mode_t" >&5
+$as_echo "$gl_cv_promoted_mode_t" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define PROMOTED_MODE_T $gl_cv_promoted_mode_t
+_ACEOF
+
+
+
+
+ac_fn_c_check_decl "$LINENO" "setenv" "ac_cv_have_decl_setenv" "$ac_includes_default"
+if test "x$ac_cv_have_decl_setenv" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_SETENV $ac_have_decl
+_ACEOF
+
+
+
+
+
+
+  if test $ac_cv_have_decl_setenv = no; then
+    HAVE_DECL_SETENV=0
+  fi
+
+
+
+
+
+  for ac_header in search.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "search.h" "ac_cv_header_search_h" "$ac_includes_default"
+if test "x$ac_cv_header_search_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SEARCH_H 1
+_ACEOF
+
+fi
+
+done
+
+  for ac_func in tsearch
+do :
+  ac_fn_c_check_func "$LINENO" "tsearch" "ac_cv_func_tsearch"
+if test "x$ac_cv_func_tsearch" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_TSEARCH 1
+_ACEOF
+
+fi
+done
+
+
+
+ac_fn_c_check_decl "$LINENO" "alarm" "ac_cv_have_decl_alarm" "$ac_includes_default"
+if test "x$ac_cv_have_decl_alarm" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_ALARM $ac_have_decl
+_ACEOF
+
+
+
+
+
+
+
+ac_fn_c_check_decl "$LINENO" "unsetenv" "ac_cv_have_decl_unsetenv" "$ac_includes_default"
+if test "x$ac_cv_have_decl_unsetenv" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_UNSETENV $ac_have_decl
+_ACEOF
+
+
+
+
+   if true; then
+  GL_COND_LIBTOOL_TRUE=
+  GL_COND_LIBTOOL_FALSE='#'
+else
+  GL_COND_LIBTOOL_TRUE='#'
+  GL_COND_LIBTOOL_FALSE=
+fi
+
+  gl_cond_libtool=true
+  gl_m4_base='m4'
+
+
+
+
+
+
+
+
+
+  gl_source_base='lib'
+LTALLOCA=`echo "$ALLOCA" | sed -e 's/\.[^.]* /.lo /g;s/\.[^.]*$/.lo/'`
+
+
+
+  if test $ac_cv_func_alloca_works = no; then
+    :
+  fi
+
+  # Define an additional variable used in the Makefile substitution.
+  if test $ac_cv_working_alloca_h = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca as a compiler built-in" >&5
+$as_echo_n "checking for alloca as a compiler built-in... " >&6; }
+if ${gl_cv_rpl_alloca+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#if defined __GNUC__ || defined _AIX || defined _MSC_VER
+        Need own alloca
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "Need own alloca" >/dev/null 2>&1; then :
+  gl_cv_rpl_alloca=yes
+else
+  gl_cv_rpl_alloca=no
+fi
+rm -f conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_rpl_alloca" >&5
+$as_echo "$gl_cv_rpl_alloca" >&6; }
+    if test $gl_cv_rpl_alloca = yes; then
+
+$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h
+
+      ALLOCA_H=alloca.h
+    else
+                  ALLOCA_H=
+    fi
+  else
+    ALLOCA_H=alloca.h
+  fi
+
+   if test -n "$ALLOCA_H"; then
+  GL_GENERATE_ALLOCA_H_TRUE=
+  GL_GENERATE_ALLOCA_H_FALSE='#'
+else
+  GL_GENERATE_ALLOCA_H_TRUE='#'
+  GL_GENERATE_ALLOCA_H_FALSE=
+fi
+
+
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS argmatch.$ac_objext"
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable assertions" >&5
+$as_echo_n "checking whether to enable assertions... " >&6; }
+  # Check whether --enable-assert was given.
+if test "${enable_assert+set}" = set; then :
+  enableval=$enable_assert; if test "x$enableval" = xno; then :
+
+$as_echo "#define NDEBUG 1" >>confdefs.h
+
+elif test "x$enableval" != xyes; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: invalid argument supplied to --enable-assert" >&5
+$as_echo "$as_me: WARNING: invalid argument supplied to --enable-assert" >&2;}
+      enable_assert=yes
+fi
+else
+  enable_assert=yes
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_assert" >&5
+$as_echo "$enable_assert" >&6; }
+
+
+
+
+
+
+
+  if test $ac_cv_func_btowc = no; then
+    HAVE_BTOWC=0
+  else
+
+
+
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether btowc(0) is correct" >&5
+$as_echo_n "checking whether btowc(0) is correct... " >&6; }
+if ${gl_cv_func_btowc_nul+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+        if test "$cross_compiling" = yes; then :
+
+           case "$host_os" in
+                      # Guess no on Cygwin.
+             cygwin*) gl_cv_func_btowc_nul="guessing no" ;;
+                      # Guess yes otherwise.
+             *)       gl_cv_func_btowc_nul="guessing yes" ;;
+           esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int main ()
+{
+  if (btowc ('\0') != 0)
+    return 1;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_btowc_nul=yes
+else
+  gl_cv_func_btowc_nul=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_btowc_nul" >&5
+$as_echo "$gl_cv_func_btowc_nul" >&6; }
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether btowc(EOF) is correct" >&5
+$as_echo_n "checking whether btowc(EOF) is correct... " >&6; }
+if ${gl_cv_func_btowc_eof+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+                        case "$host_os" in
+                 # Guess no on IRIX.
+          irix*) gl_cv_func_btowc_eof="guessing no" ;;
+                 # Guess yes otherwise.
+          *)     gl_cv_func_btowc_eof="guessing yes" ;;
+        esac
+        if test $LOCALE_FR != none; then
+          if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int main ()
+{
+  if (setlocale (LC_ALL, "$LOCALE_FR") != NULL)
+    {
+      if (btowc (EOF) != WEOF)
+        return 1;
+    }
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_btowc_eof=yes
+else
+  gl_cv_func_btowc_eof=no
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_btowc_eof" >&5
+$as_echo "$gl_cv_func_btowc_eof" >&6; }
+
+    case "$gl_cv_func_btowc_nul" in
+      *yes) ;;
+      *) REPLACE_BTOWC=1 ;;
+    esac
+    case "$gl_cv_func_btowc_eof" in
+      *yes) ;;
+      *) REPLACE_BTOWC=1 ;;
+    esac
+  fi
+  if test $HAVE_BTOWC = 0 || test $REPLACE_BTOWC = 1; then
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS btowc.$ac_objext"
+
+
+  :
+
+  fi
+
+
+
+
+  GNULIB_BTOWC=1
+
+
+
+$as_echo "#define GNULIB_TEST_BTOWC 1" >>confdefs.h
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible calloc" >&5
+$as_echo_n "checking for GNU libc compatible calloc... " >&6; }
+if ${ac_cv_func_calloc_0_nonnull+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  ac_cv_func_calloc_0_nonnull=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+int result = 0;
+            if (!calloc (0, 0))
+              result |= 1;
+            if (calloc ((size_t) -1 / 8 + 1, 8))
+              result |= 2;
+            return result;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_func_calloc_0_nonnull=yes
+else
+  ac_cv_func_calloc_0_nonnull=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_calloc_0_nonnull" >&5
+$as_echo "$ac_cv_func_calloc_0_nonnull" >&6; }
+  if test $ac_cv_func_calloc_0_nonnull = yes; then :
+
+$as_echo "#define HAVE_CALLOC_GNU 1" >>confdefs.h
+
+else
+  $as_echo "#define HAVE_CALLOC_GNU 0" >>confdefs.h
+
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS calloc.$ac_objext"
+
+  REPLACE_CALLOC=1
+
+
+fi
+
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define GNULIB_CALLOC_GNU 1
+_ACEOF
+
+
+
+
+
+  if test $gl_cv_func_malloc_posix = yes; then
+
+$as_echo "#define HAVE_CALLOC_POSIX 1" >>confdefs.h
+
+  else
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS calloc.$ac_objext"
+
+  REPLACE_CALLOC=1
+
+  fi
+
+
+
+
+  GNULIB_CALLOC_POSIX=1
+
+
+
+$as_echo "#define GNULIB_TEST_CALLOC_POSIX 1" >>confdefs.h
+
+
+
+
+
+
+  if test $ac_cv_func_canonicalize_file_name = no; then
+    HAVE_CANONICALIZE_FILE_NAME=0
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS canonicalize-lgpl.$ac_objext"
+
+    if test $ac_cv_func_realpath = no; then
+      HAVE_REALPATH=0
+    elif test "$gl_cv_func_realpath_works" != yes; then
+      REPLACE_REALPATH=1
+    fi
+  elif test "$gl_cv_func_realpath_works" != yes; then
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS canonicalize-lgpl.$ac_objext"
+
+    REPLACE_REALPATH=1
+    REPLACE_CANONICALIZE_FILE_NAME=1
+  fi
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define GNULIB_CANONICALIZE_LGPL 1
+_ACEOF
+
+
+
+
+
+  GNULIB_CANONICALIZE_FILE_NAME=1
+
+
+
+$as_echo "#define GNULIB_TEST_CANONICALIZE_FILE_NAME 1" >>confdefs.h
+
+
+
+
+
+
+  GNULIB_REALPATH=1
+
+
+
+$as_echo "#define GNULIB_TEST_REALPATH 1" >>confdefs.h
+
+
+
+
+
+
+
+
+
+  GNULIB_CLOSE=1
+
+
+
+$as_echo "#define GNULIB_TEST_CLOSE 1" >>confdefs.h
+
+
+
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS close-stream.$ac_objext"
+
+
+    :
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define GNULIB_CLOSE_STREAM 1
+_ACEOF
+
+
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS closeout.$ac_objext"
+
+
+    :
+
+
+
+          if test "x$datarootdir" = x; then
+    datarootdir='${datadir}'
+
+  fi
+    if test "x$docdir" = x; then
+    docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+
+  fi
+    if test "x$htmldir" = x; then
+    htmldir='${docdir}'
+
+  fi
+  if test "x$dvidir" = x; then
+    dvidir='${docdir}'
+
+  fi
+  if test "x$pdfdir" = x; then
+    pdfdir='${docdir}'
+
+  fi
+  if test "x$psdir" = x; then
+    psdir='${docdir}'
+
+  fi
+  if test "x$lispdir" = x; then
+    lispdir='${datarootdir}/emacs/site-lisp'
+
+  fi
+  if test "x$localedir" = x; then
+    localedir='${datarootdir}/locale'
+
+  fi
+
+      pkglibexecdir='${libexecdir}/${PACKAGE}'
+
+
+
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS basename.$ac_objext"
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS dirname.$ac_objext"
+
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define GNULIB_DIRNAME 1
+_ACEOF
+
+
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS basename-lgpl.$ac_objext"
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS dirname-lgpl.$ac_objext"
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS stripslash.$ac_objext"
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether // is distinct from /" >&5
+$as_echo_n "checking whether // is distinct from /... " >&6; }
+if ${gl_cv_double_slash_root+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+   if test x"$cross_compiling" = xyes ; then
+        # When cross-compiling, there is no way to tell whether // is special
+        # short of a list of hosts.  However, the only known hosts to date
+        # that have a distinct // are Apollo DomainOS (too old to port to),
+        # Cygwin, and z/OS.  If anyone knows of another system for which // has
+        # special semantics and is distinct from /, please report it to
+        # <bug-gnulib@gnu.org>.
+        case $host in
+          *-cygwin | i370-ibm-openedition)
+            gl_cv_double_slash_root=yes ;;
+          *)
+            # Be optimistic and assume that / and // are the same when we
+            # don't know.
+            gl_cv_double_slash_root='unknown, assuming no' ;;
+        esac
+      else
+        set x `ls -di / // 2>/dev/null`
+        if test "$2" = "$4" && wc //dev/null >/dev/null 2>&1; then
+          gl_cv_double_slash_root=no
+        else
+          gl_cv_double_slash_root=yes
+        fi
+      fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_double_slash_root" >&5
+$as_echo "$gl_cv_double_slash_root" >&6; }
+  if test "$gl_cv_double_slash_root" = yes; then
+
+$as_echo "#define DOUBLE_SLASH_IS_DISTINCT_ROOT 1" >>confdefs.h
+
+  fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for error_at_line" >&5
+$as_echo_n "checking for error_at_line... " >&6; }
+if ${ac_cv_lib_error_at_line+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <error.h>
+int
+main ()
+{
+error_at_line (0, 0, "", 0, "an error occurred");
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_error_at_line=yes
+else
+  ac_cv_lib_error_at_line=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_error_at_line" >&5
+$as_echo "$ac_cv_lib_error_at_line" >&6; }
+  if test $ac_cv_lib_error_at_line = no; then
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS error.$ac_objext"
+
+  fi
+
+
+
+
+  :
+
+
+
+
+  XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS --flag=error:3:c-format"
+
+
+
+  XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS --flag=error_at_line:5:c-format"
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fflush works on input streams" >&5
+$as_echo_n "checking whether fflush works on input streams... " >&6; }
+if ${gl_cv_func_fflush_stdin+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  echo hello world > conftest.txt
+     if test "$cross_compiling" = yes; then :
+        gl_cv_func_fflush_stdin=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdio.h>
+#include <unistd.h>
+
+int
+main ()
+{
+FILE *f = fopen ("conftest.txt", "r");
+         char buffer[10];
+         int fd;
+         int c;
+         if (f == NULL)
+           return 1;
+         fd = fileno (f);
+         if (fd < 0 || fread (buffer, 1, 5, f) != 5)
+           return 2;
+         /* For deterministic results, ensure f read a bigger buffer.  */
+         if (lseek (fd, 0, SEEK_CUR) == 5)
+           return 3;
+         /* POSIX requires fflush-fseek to set file offset of fd.  This fails
+            on BSD systems and on mingw.  */
+         if (fflush (f) != 0 || fseek (f, 0, SEEK_CUR) != 0)
+           return 4;
+         if (lseek (fd, 0, SEEK_CUR) != 5)
+           return 5;
+         /* Verify behaviour of fflush after ungetc. See
+            <http://www.opengroup.org/austin/aardvark/latest/xshbug3.txt>  */
+         /* Verify behaviour of fflush after a backup ungetc.  This fails on
+            mingw.  */
+         c = fgetc (f);
+         ungetc (c, f);
+         fflush (f);
+         if (fgetc (f) != c)
+           return 6;
+         /* Verify behaviour of fflush after a non-backup ungetc.  This fails
+            on glibc 2.8 and on BSD systems.  */
+         c = fgetc (f);
+         ungetc ('@', f);
+         fflush (f);
+         if (fgetc (f) != c)
+           return 7;
+         return 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_fflush_stdin=yes
+else
+  gl_cv_func_fflush_stdin=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+     rm conftest.txt
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_fflush_stdin" >&5
+$as_echo "$gl_cv_func_fflush_stdin" >&6; }
+
+  if test $gl_cv_func_fflush_stdin = no; then
+
+
+  REPLACE_FCLOSE=1
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS fclose.$ac_objext"
+
+
+  fi
+
+
+
+
+  GNULIB_FCLOSE=1
+
+
+
+$as_echo "#define GNULIB_TEST_FCLOSE 1" >>confdefs.h
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fflush works on input streams" >&5
+$as_echo_n "checking whether fflush works on input streams... " >&6; }
+if ${gl_cv_func_fflush_stdin+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  echo hello world > conftest.txt
+     if test "$cross_compiling" = yes; then :
+        gl_cv_func_fflush_stdin=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdio.h>
+#include <unistd.h>
+
+int
+main ()
+{
+FILE *f = fopen ("conftest.txt", "r");
+         char buffer[10];
+         int fd;
+         int c;
+         if (f == NULL)
+           return 1;
+         fd = fileno (f);
+         if (fd < 0 || fread (buffer, 1, 5, f) != 5)
+           return 2;
+         /* For deterministic results, ensure f read a bigger buffer.  */
+         if (lseek (fd, 0, SEEK_CUR) == 5)
+           return 3;
+         /* POSIX requires fflush-fseek to set file offset of fd.  This fails
+            on BSD systems and on mingw.  */
+         if (fflush (f) != 0 || fseek (f, 0, SEEK_CUR) != 0)
+           return 4;
+         if (lseek (fd, 0, SEEK_CUR) != 5)
+           return 5;
+         /* Verify behaviour of fflush after ungetc. See
+            <http://www.opengroup.org/austin/aardvark/latest/xshbug3.txt>  */
+         /* Verify behaviour of fflush after a backup ungetc.  This fails on
+            mingw.  */
+         c = fgetc (f);
+         ungetc (c, f);
+         fflush (f);
+         if (fgetc (f) != c)
+           return 6;
+         /* Verify behaviour of fflush after a non-backup ungetc.  This fails
+            on glibc 2.8 and on BSD systems.  */
+         c = fgetc (f);
+         ungetc ('@', f);
+         fflush (f);
+         if (fgetc (f) != c)
+           return 7;
+         return 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_fflush_stdin=yes
+else
+  gl_cv_func_fflush_stdin=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+     rm conftest.txt
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_fflush_stdin" >&5
+$as_echo "$gl_cv_func_fflush_stdin" >&6; }
+
+  if test $gl_cv_func_fflush_stdin = no; then
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS fflush.$ac_objext"
+
+
+  REPLACE_FFLUSH=1
+
+
+  :
+
+
+  fi
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define GNULIB_FFLUSH 1
+_ACEOF
+
+
+
+
+
+  GNULIB_FFLUSH=1
+
+
+
+$as_echo "#define GNULIB_TEST_FFLUSH 1" >>confdefs.h
+
+
+
+
+
+
+  fp_headers='
+#     include <stdio.h>
+#     if HAVE_STDIO_EXT_H
+#      include <stdio_ext.h>
+#     endif
+'
+  ac_fn_c_check_decl "$LINENO" "__fpending" "ac_cv_have_decl___fpending" "$fp_headers
+"
+if test "x$ac_cv_have_decl___fpending" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL___FPENDING $ac_have_decl
+_ACEOF
+
+  if test $ac_cv_func___fpending = no; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to determine the number of pending output bytes on a stream" >&5
+$as_echo_n "checking how to determine the number of pending output bytes on a stream... " >&6; }
+if ${ac_cv_sys_pending_output_n_bytes+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+        for ac_expr in                                                    \
+                                                                          \
+            '# glibc2'                                                    \
+            'fp->_IO_write_ptr - fp->_IO_write_base'                      \
+                                                                          \
+            '# traditional Unix'                                          \
+            'fp->_ptr - fp->_base'                                        \
+                                                                          \
+            '# BSD'                                                       \
+            'fp->_p - fp->_bf._base'                                      \
+                                                                          \
+            '# SCO, Unixware'                                             \
+            '(fp->__ptr ? fp->__ptr - fp->__base : 0)'                    \
+                                                                          \
+            '# QNX'                                                       \
+            '(fp->_Mode & 0x2000 /*_MWRITE*/ ? fp->_Next - fp->_Buf : 0)' \
+                                                                          \
+            '# old glibc?'                                                \
+            'fp->__bufp - fp->__buffer'                                   \
+                                                                          \
+            '# old glibc iostream?'                                       \
+            'fp->_pptr - fp->_pbase'                                      \
+                                                                          \
+            '# emx+gcc'                                                   \
+            'fp->_ptr - fp->_buffer'                                      \
+                                                                          \
+            '# VMS'                                                       \
+            '(*fp)->_ptr - (*fp)->_base'                                  \
+                                                                          \
+            '# e.g., DGUX R4.11; the info is not available'               \
+            1                                                             \
+            ; do
+
+          # Skip each embedded comment.
+          case "$ac_expr" in '#'*) continue;; esac
+
+          cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+FILE *fp = stdin; (void) ($ac_expr);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  fp_done=yes
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+          test "$fp_done" = yes && break
+        done
+
+        ac_cv_sys_pending_output_n_bytes=$ac_expr
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_pending_output_n_bytes" >&5
+$as_echo "$ac_cv_sys_pending_output_n_bytes" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define PENDING_OUTPUT_N_BYTES $ac_cv_sys_pending_output_n_bytes
+_ACEOF
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS fpending.$ac_objext"
+
+  fi
+
+
+
+
+
+  ac_fn_c_check_decl "$LINENO" "fpurge" "ac_cv_have_decl_fpurge" "#include <stdio.h>
+"
+if test "x$ac_cv_have_decl_fpurge" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FPURGE $ac_have_decl
+_ACEOF
+
+  if test "x$ac_cv_func_fpurge" = xyes; then
+    # Detect BSD bug.  Only cygwin 1.7 is known to be immune.
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fpurge works" >&5
+$as_echo_n "checking whether fpurge works... " >&6; }
+if ${gl_cv_func_fpurge_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  gl_cv_func_fpurge_works='guessing no'
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+
+int
+main ()
+{
+FILE *f = fopen ("conftest.txt", "w+");
+        if (!f) return 1;
+        if (fputc ('a', f) != 'a') return 2;
+        rewind (f);
+        if (fgetc (f) != 'a') return 3;
+        if (fgetc (f) != EOF) return 4;
+        if (fpurge (f) != 0) return 5;
+        if (putc ('b', f) != 'b') return 6;
+        if (fclose (f) != 0) return 7;
+        if ((f = fopen ("conftest.txt", "r")) == NULL) return 8;
+        if (fgetc (f) != 'a') return 9;
+        if (fgetc (f) != 'b') return 10;
+        if (fgetc (f) != EOF) return 11;
+        if (fclose (f) != 0) return 12;
+        if (remove ("conftest.txt") != 0) return 13;
+        return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_fpurge_works=yes
+else
+  gl_cv_func_fpurge_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_fpurge_works" >&5
+$as_echo "$gl_cv_func_fpurge_works" >&6; }
+    if test "x$gl_cv_func_fpurge_works" != xyes; then
+      REPLACE_FPURGE=1
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS fpurge.$ac_objext"
+
+    fi
+  else
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS fpurge.$ac_objext"
+
+  fi
+  if test "x$ac_cv_have_decl_fpurge" = xno; then
+    HAVE_DECL_FPURGE=0
+  fi
+
+
+
+
+  GNULIB_FPURGE=1
+
+
+
+$as_echo "#define GNULIB_TEST_FPURGE 1" >>confdefs.h
+
+
+
+
+
+
+
+
+
+
+
+
+  if test $ac_cv_have_decl_fseeko = no; then
+    HAVE_DECL_FSEEKO=0
+  fi
+
+  if test $gl_cv_func_fseeko = no; then
+    HAVE_FSEEKO=0
+
+
+
+  if test $gl_cv_func_fseeko = yes; then
+    REPLACE_FSEEKO=1
+  fi
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS fseeko.$ac_objext"
+
+
+
+  else
+    if test $gl_cv_var_stdin_large_offset = no; then
+
+
+
+  if test $gl_cv_func_fseeko = yes; then
+    REPLACE_FSEEKO=1
+  fi
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS fseeko.$ac_objext"
+
+
+
+    fi
+  fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fflush works on input streams" >&5
+$as_echo_n "checking whether fflush works on input streams... " >&6; }
+if ${gl_cv_func_fflush_stdin+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  echo hello world > conftest.txt
+     if test "$cross_compiling" = yes; then :
+        gl_cv_func_fflush_stdin=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdio.h>
+#include <unistd.h>
+
+int
+main ()
+{
+FILE *f = fopen ("conftest.txt", "r");
+         char buffer[10];
+         int fd;
+         int c;
+         if (f == NULL)
+           return 1;
+         fd = fileno (f);
+         if (fd < 0 || fread (buffer, 1, 5, f) != 5)
+           return 2;
+         /* For deterministic results, ensure f read a bigger buffer.  */
+         if (lseek (fd, 0, SEEK_CUR) == 5)
+           return 3;
+         /* POSIX requires fflush-fseek to set file offset of fd.  This fails
+            on BSD systems and on mingw.  */
+         if (fflush (f) != 0 || fseek (f, 0, SEEK_CUR) != 0)
+           return 4;
+         if (lseek (fd, 0, SEEK_CUR) != 5)
+           return 5;
+         /* Verify behaviour of fflush after ungetc. See
+            <http://www.opengroup.org/austin/aardvark/latest/xshbug3.txt>  */
+         /* Verify behaviour of fflush after a backup ungetc.  This fails on
+            mingw.  */
+         c = fgetc (f);
+         ungetc (c, f);
+         fflush (f);
+         if (fgetc (f) != c)
+           return 6;
+         /* Verify behaviour of fflush after a non-backup ungetc.  This fails
+            on glibc 2.8 and on BSD systems.  */
+         c = fgetc (f);
+         ungetc ('@', f);
+         fflush (f);
+         if (fgetc (f) != c)
+           return 7;
+         return 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_fflush_stdin=yes
+else
+  gl_cv_func_fflush_stdin=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+     rm conftest.txt
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_fflush_stdin" >&5
+$as_echo "$gl_cv_func_fflush_stdin" >&6; }
+
+    if test $gl_cv_func_fflush_stdin = no; then
+
+
+
+  if test $gl_cv_func_fseeko = yes; then
+    REPLACE_FSEEKO=1
+  fi
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS fseeko.$ac_objext"
+
+
+
+    fi
+
+
+
+
+
+  GNULIB_FSEEKO=1
+
+
+
+$as_echo "#define GNULIB_TEST_FSEEKO 1" >>confdefs.h
+
+
+
+
+
+
+  if test $ac_cv_func_fsync = no; then
+    HAVE_FSYNC=0
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS fsync.$ac_objext"
+
+    :
+  fi
+
+
+
+
+  GNULIB_FSYNC=1
+
+
+
+$as_echo "#define GNULIB_TEST_FSYNC 1" >>confdefs.h
+
+
+
+
+
+
+
+
+
+
+
+  if test $ac_cv_have_decl_ftello = no; then
+    HAVE_DECL_FTELLO=0
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ftello" >&5
+$as_echo_n "checking for ftello... " >&6; }
+if ${gl_cv_func_ftello+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+ftello (stdin);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_func_ftello=yes
+else
+  gl_cv_func_ftello=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_ftello" >&5
+$as_echo "$gl_cv_func_ftello" >&6; }
+  if test $gl_cv_func_ftello = no; then
+    HAVE_FTELLO=0
+  else
+    if test $gl_cv_var_stdin_large_offset = no; then
+      REPLACE_FTELLO=1
+    else
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ftello works" >&5
+$as_echo_n "checking whether ftello works... " >&6; }
+if ${gl_cv_func_ftello_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+                              case "$host_os" in
+                      # Guess no on Solaris.
+            solaris*) gl_cv_func_ftello_works="guessing no" ;;
+                      # Guess yes otherwise.
+            *)        gl_cv_func_ftello_works="guessing yes" ;;
+          esac
+          if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#define TESTFILE "conftest.tmp"
+int
+main (void)
+{
+  FILE *fp;
+
+  /* Create a file with some contents.  */
+  fp = fopen (TESTFILE, "w");
+  if (fp == NULL)
+    return 70;
+  if (fwrite ("foogarsh", 1, 8, fp) < 8)
+    return 71;
+  if (fclose (fp))
+    return 72;
+
+  /* The file's contents is now "foogarsh".  */
+
+  /* Try writing after reading to EOF.  */
+  fp = fopen (TESTFILE, "r+");
+  if (fp == NULL)
+    return 73;
+  if (fseek (fp, -1, SEEK_END))
+    return 74;
+  if (!(getc (fp) == 'h'))
+    return 1;
+  if (!(getc (fp) == EOF))
+    return 2;
+  if (!(ftell (fp) == 8))
+    return 3;
+  if (!(ftell (fp) == 8))
+    return 4;
+  if (!(putc ('!', fp) == '!'))
+    return 5;
+  if (!(ftell (fp) == 9))
+    return 6;
+  if (!(fclose (fp) == 0))
+    return 7;
+  fp = fopen (TESTFILE, "r");
+  if (fp == NULL)
+    return 75;
+  {
+    char buf[10];
+    if (!(fread (buf, 1, 10, fp) == 9))
+      return 10;
+    if (!(memcmp (buf, "foogarsh!", 9) == 0))
+      return 11;
+  }
+  if (!(fclose (fp) == 0))
+    return 12;
+
+  /* The file's contents is now "foogarsh!".  */
+
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_ftello_works=yes
+else
+  gl_cv_func_ftello_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_ftello_works" >&5
+$as_echo "$gl_cv_func_ftello_works" >&6; }
+      case "$gl_cv_func_ftello_works" in
+        *yes) ;;
+        *)
+          REPLACE_FTELLO=1
+
+$as_echo "#define FTELLO_BROKEN_AFTER_SWITCHING_FROM_READ_TO_WRITE 1" >>confdefs.h
+
+          ;;
+      esac
+    fi
+  fi
+  if test $HAVE_FTELLO = 0 || test $REPLACE_FTELLO = 1; then
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS ftello.$ac_objext"
+
+
+  fi
+
+
+
+
+  GNULIB_FTELLO=1
+
+
+
+$as_echo "#define GNULIB_TEST_FTELLO 1" >>confdefs.h
+
+
+
+
+
+
+
+
+
+
+$as_echo "#define GNULIB_TEST_GETOPT_GNU 1" >>confdefs.h
+
+
+
+
+
+
+
+  if test -n "$gl_replace_getopt"; then :
+
+
+
+  GETOPT_H=getopt.h
+
+$as_echo "#define __GETOPT_PREFIX rpl_" >>confdefs.h
+
+
+
+    GNULIB_UNISTD_H_GETOPT=1
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS getopt.$ac_objext"
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS getopt1.$ac_objext"
+
+
+
+
+
+
+fi
+
+
+
+
+
+
+
+
+
+
+  gl_gettimeofday_timezone=void
+  if test $ac_cv_func_gettimeofday != yes; then
+    HAVE_GETTIMEOFDAY=0
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS gettimeofday.$ac_objext"
+
+
+  for ac_header in sys/timeb.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "sys/timeb.h" "ac_cv_header_sys_timeb_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_timeb_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SYS_TIMEB_H 1
+_ACEOF
+
+fi
+
+done
+
+  for ac_func in _ftime
+do :
+  ac_fn_c_check_func "$LINENO" "_ftime" "ac_cv_func__ftime"
+if test "x$ac_cv_func__ftime" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FTIME 1
+_ACEOF
+
+fi
+done
+
+
+  else
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether gettimeofday clobbers localtime buffer" >&5
+$as_echo_n "checking whether gettimeofday clobbers localtime buffer... " >&6; }
+if ${gl_cv_func_gettimeofday_clobber+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+       gl_cv_func_gettimeofday_clobber=yes
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+          #include <sys/time.h>
+          #include <time.h>
+          #include <stdlib.h>
+
+int
+main ()
+{
+
+          time_t t = 0;
+          struct tm *lt;
+          struct tm saved_lt;
+          struct timeval tv;
+          lt = localtime (&t);
+          saved_lt = *lt;
+          gettimeofday (&tv, NULL);
+          return memcmp (lt, &saved_lt, sizeof (struct tm)) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_gettimeofday_clobber=no
+else
+  gl_cv_func_gettimeofday_clobber=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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_gettimeofday_clobber" >&5
+$as_echo "$gl_cv_func_gettimeofday_clobber" >&6; }
+
+ if test $gl_cv_func_gettimeofday_clobber = yes; then
+   REPLACE_GETTIMEOFDAY=1
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS gettimeofday.$ac_objext"
+
+
+  for ac_header in sys/timeb.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "sys/timeb.h" "ac_cv_header_sys_timeb_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_timeb_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SYS_TIMEB_H 1
+_ACEOF
+
+fi
+
+done
+
+  for ac_func in _ftime
+do :
+  ac_fn_c_check_func "$LINENO" "_ftime" "ac_cv_func__ftime"
+if test "x$ac_cv_func__ftime" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FTIME 1
+_ACEOF
+
+fi
+done
+
+
+
+$as_echo "#define gmtime rpl_gmtime" >>confdefs.h
+
+
+$as_echo "#define localtime rpl_localtime" >>confdefs.h
+
+
+
+$as_echo "#define GETTIMEOFDAY_CLOBBERS_LOCALTIME 1" >>confdefs.h
+
+ fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gettimeofday with POSIX signature" >&5
+$as_echo_n "checking for gettimeofday with POSIX signature... " >&6; }
+if ${gl_cv_func_gettimeofday_posix_signature+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/time.h>
+              struct timeval c;
+              int gettimeofday (struct timeval *restrict, void *restrict);
+
+int
+main ()
+{
+/* glibc uses struct timezone * rather than the POSIX void *
+                 if _GNU_SOURCE is defined.  However, since the only portable
+                 use of gettimeofday uses NULL as the second parameter, and
+                 since the glibc definition is actually more typesafe, it is
+                 not worth wrapping this to get a compliant signature.  */
+              int (*f) (struct timeval *restrict, void *restrict)
+                = gettimeofday;
+              int x = f (&c, 0);
+              return !(x | c.tv_sec | c.tv_usec);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_func_gettimeofday_posix_signature=yes
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/time.h>
+int gettimeofday (struct timeval *restrict, struct timezone *restrict);
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_func_gettimeofday_posix_signature=almost
+else
+  gl_cv_func_gettimeofday_posix_signature=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_gettimeofday_posix_signature" >&5
+$as_echo "$gl_cv_func_gettimeofday_posix_signature" >&6; }
+    if test $gl_cv_func_gettimeofday_posix_signature = almost; then
+      gl_gettimeofday_timezone='struct timezone'
+    elif test $gl_cv_func_gettimeofday_posix_signature != yes; then
+      REPLACE_GETTIMEOFDAY=1
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS gettimeofday.$ac_objext"
+
+
+  for ac_header in sys/timeb.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "sys/timeb.h" "ac_cv_header_sys_timeb_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_timeb_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SYS_TIMEB_H 1
+_ACEOF
+
+fi
+
+done
+
+  for ac_func in _ftime
+do :
+  ac_fn_c_check_func "$LINENO" "_ftime" "ac_cv_func__ftime"
+if test "x$ac_cv_func__ftime" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FTIME 1
+_ACEOF
+
+fi
+done
+
+
+    fi
+  fi
+
+cat >>confdefs.h <<_ACEOF
+#define GETTIMEOFDAY_TIMEZONE $gl_gettimeofday_timezone
+_ACEOF
+
+
+
+
+
+  GNULIB_GETTIMEOFDAY=1
+
+
+
+$as_echo "#define GNULIB_TEST_GETTIMEOFDAY 1" >>confdefs.h
+
+
+
+# Autoconf 2.61a.99 and earlier don't support linking a file only
+# in VPATH builds.  But since GNUmakefile is for maintainer use
+# only, it does not matter if we skip the link with older autoconf.
+# Automake 1.10.1 and earlier try to remove GNUmakefile in non-VPATH
+# builds, so use a shell variable to bypass this.
+GNUmakefile=GNUmakefile
+ac_config_links="$ac_config_links $GNUmakefile:$GNUmakefile"
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler generally respects inline" >&5
+$as_echo_n "checking whether the compiler generally respects inline... " >&6; }
+if ${gl_cv_c_inline_effective+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test $ac_cv_c_inline = no; then
+       gl_cv_c_inline_effective=no
+     else
+                                          cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifdef __NO_INLINE__
+               #error "inline is not effective"
+             #endif
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_c_inline_effective=yes
+else
+  gl_cv_c_inline_effective=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+     fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_c_inline_effective" >&5
+$as_echo "$gl_cv_c_inline_effective" >&6; }
+  if test $gl_cv_c_inline_effective = yes; then
+
+$as_echo "#define HAVE_INLINE 1" >>confdefs.h
+
+  fi
+
+
+
+
+
+
+  PRIPTR_PREFIX=
+  if test -n "$STDINT_H"; then
+        PRIPTR_PREFIX='"l"'
+  else
+        for glpfx in '' l ll I64; do
+      case $glpfx in
+        '')  gltype1='int';;
+        l)   gltype1='long int';;
+        ll)  gltype1='long long int';;
+        I64) gltype1='__int64';;
+      esac
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdint.h>
+           extern intptr_t foo;
+           extern $gltype1 foo;
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  PRIPTR_PREFIX='"'$glpfx'"'
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      test -n "$PRIPTR_PREFIX" && break
+    done
+  fi
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether INT32_MAX < INTMAX_MAX" >&5
+$as_echo_n "checking whether INT32_MAX < INTMAX_MAX... " >&6; }
+if ${gl_cv_test_INT32_MAX_LT_INTMAX_MAX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Work also in C++ mode.  */
+            #define __STDC_LIMIT_MACROS 1
+
+            /* Work if build is not clean.  */
+            #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H
+
+            #include <limits.h>
+            #if HAVE_STDINT_H
+             #include <stdint.h>
+            #endif
+
+            #if defined INT32_MAX && defined INTMAX_MAX
+             #define CONDITION (INT32_MAX < INTMAX_MAX)
+            #elif HAVE_LONG_LONG_INT
+             #define CONDITION (sizeof (int) < sizeof (long long int))
+            #else
+             #define CONDITION 0
+            #endif
+            int test[CONDITION ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_test_INT32_MAX_LT_INTMAX_MAX=yes
+else
+  gl_cv_test_INT32_MAX_LT_INTMAX_MAX=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_test_INT32_MAX_LT_INTMAX_MAX" >&5
+$as_echo "$gl_cv_test_INT32_MAX_LT_INTMAX_MAX" >&6; }
+  if test $gl_cv_test_INT32_MAX_LT_INTMAX_MAX = yes; then
+    INT32_MAX_LT_INTMAX_MAX=1;
+  else
+    INT32_MAX_LT_INTMAX_MAX=0;
+  fi
+
+
+  if test $APPLE_UNIVERSAL_BUILD = 0; then
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether INT64_MAX == LONG_MAX" >&5
+$as_echo_n "checking whether INT64_MAX == LONG_MAX... " >&6; }
+if ${gl_cv_test_INT64_MAX_EQ_LONG_MAX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Work also in C++ mode.  */
+            #define __STDC_LIMIT_MACROS 1
+
+            /* Work if build is not clean.  */
+            #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H
+
+            #include <limits.h>
+            #if HAVE_STDINT_H
+             #include <stdint.h>
+            #endif
+
+            #if defined INT64_MAX
+             #define CONDITION (INT64_MAX == LONG_MAX)
+            #elif HAVE_LONG_LONG_INT
+             #define CONDITION (sizeof (long long int) == sizeof (long int))
+            #else
+             #define CONDITION 0
+            #endif
+            int test[CONDITION ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_test_INT64_MAX_EQ_LONG_MAX=yes
+else
+  gl_cv_test_INT64_MAX_EQ_LONG_MAX=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_test_INT64_MAX_EQ_LONG_MAX" >&5
+$as_echo "$gl_cv_test_INT64_MAX_EQ_LONG_MAX" >&6; }
+  if test $gl_cv_test_INT64_MAX_EQ_LONG_MAX = yes; then
+    INT64_MAX_EQ_LONG_MAX=1;
+  else
+    INT64_MAX_EQ_LONG_MAX=0;
+  fi
+
+
+  else
+    INT64_MAX_EQ_LONG_MAX=-1
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether UINT32_MAX < UINTMAX_MAX" >&5
+$as_echo_n "checking whether UINT32_MAX < UINTMAX_MAX... " >&6; }
+if ${gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Work also in C++ mode.  */
+            #define __STDC_LIMIT_MACROS 1
+
+            /* Work if build is not clean.  */
+            #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H
+
+            #include <limits.h>
+            #if HAVE_STDINT_H
+             #include <stdint.h>
+            #endif
+
+            #if defined UINT32_MAX && defined UINTMAX_MAX
+             #define CONDITION (UINT32_MAX < UINTMAX_MAX)
+            #elif HAVE_LONG_LONG_INT
+             #define CONDITION (sizeof (unsigned int) < sizeof (unsigned long long int))
+            #else
+             #define CONDITION 0
+            #endif
+            int test[CONDITION ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX=yes
+else
+  gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX" >&5
+$as_echo "$gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX" >&6; }
+  if test $gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX = yes; then
+    UINT32_MAX_LT_UINTMAX_MAX=1;
+  else
+    UINT32_MAX_LT_UINTMAX_MAX=0;
+  fi
+
+
+  if test $APPLE_UNIVERSAL_BUILD = 0; then
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether UINT64_MAX == ULONG_MAX" >&5
+$as_echo_n "checking whether UINT64_MAX == ULONG_MAX... " >&6; }
+if ${gl_cv_test_UINT64_MAX_EQ_ULONG_MAX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Work also in C++ mode.  */
+            #define __STDC_LIMIT_MACROS 1
+
+            /* Work if build is not clean.  */
+            #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H
+
+            #include <limits.h>
+            #if HAVE_STDINT_H
+             #include <stdint.h>
+            #endif
+
+            #if defined UINT64_MAX
+             #define CONDITION (UINT64_MAX == ULONG_MAX)
+            #elif HAVE_LONG_LONG_INT
+             #define CONDITION (sizeof (unsigned long long int) == sizeof (unsigned long int))
+            #else
+             #define CONDITION 0
+            #endif
+            int test[CONDITION ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_test_UINT64_MAX_EQ_ULONG_MAX=yes
+else
+  gl_cv_test_UINT64_MAX_EQ_ULONG_MAX=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_test_UINT64_MAX_EQ_ULONG_MAX" >&5
+$as_echo "$gl_cv_test_UINT64_MAX_EQ_ULONG_MAX" >&6; }
+  if test $gl_cv_test_UINT64_MAX_EQ_ULONG_MAX = yes; then
+    UINT64_MAX_EQ_ULONG_MAX=1;
+  else
+    UINT64_MAX_EQ_ULONG_MAX=0;
+  fi
+
+
+  else
+    UINT64_MAX_EQ_ULONG_MAX=-1
+  fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_langinfo_h='<'langinfo.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <langinfo.h>" >&5
+$as_echo_n "checking absolute name of <langinfo.h>... " >&6; }
+if ${gl_cv_next_langinfo_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+             if test $ac_cv_header_langinfo_h = yes; then
+
+
+               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <langinfo.h>
+
+_ACEOF
+                                                                                                                        case "$host_os" in
+                 aix*) gl_absname_cpp="$ac_cpp -C" ;;
+                 *)    gl_absname_cpp="$ac_cpp" ;;
+               esac
+                                                            gl_cv_next_langinfo_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+                  sed -n '\#/langinfo.h#{
+                    s#.*"\(.*/langinfo.h\)".*#\1#
+                    s#^/[^/]#//&#
+                    p
+                    q
+                  }'`'"'
+          else
+               gl_cv_next_langinfo_h='<'langinfo.h'>'
+             fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_langinfo_h" >&5
+$as_echo "$gl_cv_next_langinfo_h" >&6; }
+     fi
+     NEXT_LANGINFO_H=$gl_cv_next_langinfo_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'langinfo.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_langinfo_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H=$gl_next_as_first_directive
+
+
+
+
+
+    HAVE_LANGINFO_CODESET=0
+  HAVE_LANGINFO_T_FMT_AMPM=0
+  HAVE_LANGINFO_ERA=0
+  HAVE_LANGINFO_YESEXPR=0
+
+  if test $ac_cv_header_langinfo_h = yes; then
+    HAVE_LANGINFO_H=1
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether langinfo.h defines CODESET" >&5
+$as_echo_n "checking whether langinfo.h defines CODESET... " >&6; }
+if ${gl_cv_header_langinfo_codeset+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <langinfo.h>
+int a = CODESET;
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_header_langinfo_codeset=yes
+else
+  gl_cv_header_langinfo_codeset=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_langinfo_codeset" >&5
+$as_echo "$gl_cv_header_langinfo_codeset" >&6; }
+    if test $gl_cv_header_langinfo_codeset = yes; then
+      HAVE_LANGINFO_CODESET=1
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether langinfo.h defines T_FMT_AMPM" >&5
+$as_echo_n "checking whether langinfo.h defines T_FMT_AMPM... " >&6; }
+if ${gl_cv_header_langinfo_t_fmt_ampm+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <langinfo.h>
+int a = T_FMT_AMPM;
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_header_langinfo_t_fmt_ampm=yes
+else
+  gl_cv_header_langinfo_t_fmt_ampm=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_langinfo_t_fmt_ampm" >&5
+$as_echo "$gl_cv_header_langinfo_t_fmt_ampm" >&6; }
+    if test $gl_cv_header_langinfo_t_fmt_ampm = yes; then
+      HAVE_LANGINFO_T_FMT_AMPM=1
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether langinfo.h defines ERA" >&5
+$as_echo_n "checking whether langinfo.h defines ERA... " >&6; }
+if ${gl_cv_header_langinfo_era+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <langinfo.h>
+int a = ERA;
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_header_langinfo_era=yes
+else
+  gl_cv_header_langinfo_era=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_langinfo_era" >&5
+$as_echo "$gl_cv_header_langinfo_era" >&6; }
+    if test $gl_cv_header_langinfo_era = yes; then
+      HAVE_LANGINFO_ERA=1
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether langinfo.h defines YESEXPR" >&5
+$as_echo_n "checking whether langinfo.h defines YESEXPR... " >&6; }
+if ${gl_cv_header_langinfo_yesexpr+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <langinfo.h>
+int a = YESEXPR;
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_header_langinfo_yesexpr=yes
+else
+  gl_cv_header_langinfo_yesexpr=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_langinfo_yesexpr" >&5
+$as_echo "$gl_cv_header_langinfo_yesexpr" >&6; }
+    if test $gl_cv_header_langinfo_yesexpr = yes; then
+      HAVE_LANGINFO_YESEXPR=1
+    fi
+  else
+    HAVE_LANGINFO_H=0
+  fi
+
+
+
+
+
+
+
+    for gl_func in nl_langinfo; do
+    as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5
+$as_echo_n "checking whether $gl_func is declared without a macro... " >&6; }
+if eval \${$as_gl_Symbol+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <langinfo.h>
+
+int
+main ()
+{
+#undef $gl_func
+  (void) $gl_func;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$as_gl_Symbol=yes"
+else
+  eval "$as_gl_Symbol=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$as_gl_Symbol
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+     if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1
+_ACEOF
+
+                     eval ac_cv_have_decl_$gl_func=yes
+fi
+      done
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler flag to ignore unused libraries" >&5
+$as_echo_n "checking for C compiler flag to ignore unused libraries... " >&6; }
+if ${gl_cv_prog_c_ignore_unused_libraries+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  gl_cv_prog_c_ignore_unused_libraries=none
+     gl_saved_ldflags=$LDFLAGS
+     gl_saved_libs=$LIBS
+     # Link with -lm to detect binutils 2.16 bug with --as-needed; see
+     # <http://lists.gnu.org/archive/html/bug-gnulib/2006-06/msg00131.html>.
+     LIBS="$LIBS -lm"
+     # Use long option sequences like '-z ignore' to test for the feature,
+     # to forestall problems with linkers that have -z, -i, -g, -n, etc. flags.
+     # GCC + binutils likes '-Wl,--as-needed'.
+     # GCC + Solaris ld likes '-Wl,-z,ignore'.
+     # Sun C likes '-Wl,-z,ignore'. '-z ignore' is accepted but has no effect.
+     # Don't try bare '--as-needed'; nothing likes it and the HP-UX 11.11
+     # native cc issues annoying warnings and then ignores it,
+     # which would cause us to incorrectly conclude that it worked.
+     for gl_flags in  '-Wl,--as-needed' \
+  '-Wl,-z,ignore' \
+  '-z ignore'
+
+     do
+       LDFLAGS="$gl_flags $LDFLAGS"
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_prog_c_ignore_unused_libraries=$gl_flags
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+       LDFLAGS=$gl_saved_ldflags
+       test "$gl_cv_prog_c_ignore_unused_libraries" != none &&
+         break
+     done
+     LIBS=$gl_saved_libs
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_prog_c_ignore_unused_libraries" >&5
+$as_echo "$gl_cv_prog_c_ignore_unused_libraries" >&6; }
+  IGNORE_UNUSED_LIBRARIES_CFLAGS=
+  if test "$gl_cv_prog_c_ignore_unused_libraries" != none; then
+    IGNORE_UNUSED_LIBRARIES_CFLAGS="$gl_cv_prog_c_ignore_unused_libraries"
+  fi
+
+
+
+
+
+
+
+
+
+
+LOCALCHARSET_TESTS_ENVIRONMENT="CHARSETALIASDIR=\"\$(top_builddir)/$gl_source_base\""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS long-options.$ac_objext"
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lseek detects pipes" >&5
+$as_echo_n "checking whether lseek detects pipes... " >&6; }
+if ${gl_cv_func_lseek_pipe+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test $cross_compiling = no; then
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <sys/types.h> /* for off_t */
+#include <stdio.h> /* for SEEK_CUR */
+#include <unistd.h>
+int
+main ()
+{
+
+  /* Exit with success only if stdin is seekable.  */
+  return lseek (0, (off_t)0, SEEK_CUR) < 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  if test -s conftest$ac_exeext \
+             && ./conftest$ac_exeext < conftest.$ac_ext \
+             && test 1 = "`echo hi \
+               | { ./conftest$ac_exeext; echo $?; cat >/dev/null; }`"; then
+            gl_cv_func_lseek_pipe=yes
+          else
+            gl_cv_func_lseek_pipe=no
+          fi
+else
+  gl_cv_func_lseek_pipe=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     else
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#if ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) || defined __BEOS__
+/* mingw and BeOS mistakenly return 0 when trying to seek on pipes.  */
+  Choke me.
+#endif
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_func_lseek_pipe=yes
+else
+  gl_cv_func_lseek_pipe=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+     fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_lseek_pipe" >&5
+$as_echo "$gl_cv_func_lseek_pipe" >&6; }
+  if test $gl_cv_func_lseek_pipe = no; then
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS lseek.$ac_objext"
+
+
+  REPLACE_LSEEK=1
+
+$as_echo "#define LSEEK_PIPE_BROKEN 1" >>confdefs.h
+
+
+  fi
+
+
+
+
+  GNULIB_LSEEK=1
+
+
+
+$as_echo "#define GNULIB_TEST_LSEEK 1" >>confdefs.h
+
+
+
+
+
+
+  if test $ac_cv_func_lstat = yes; then
+
+    if test $ac_cv_func_lstat_dereferences_slashed_symlink = no; then
+            REPLACE_LSTAT=1
+    fi
+    # Prerequisites of lib/lstat.c.
+
+  else
+    HAVE_LSTAT=0
+  fi
+
+
+
+
+  GNULIB_LSTAT=1
+
+
+
+$as_echo "#define GNULIB_TEST_LSTAT 1" >>confdefs.h
+
+
+
+
+
+
+    for ac_header in stdlib.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default"
+if test "x$ac_cv_header_stdlib_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STDLIB_H 1
+_ACEOF
+
+fi
+
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible malloc" >&5
+$as_echo_n "checking for GNU libc compatible malloc... " >&6; }
+if ${ac_cv_func_malloc_0_nonnull+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  ac_cv_func_malloc_0_nonnull=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#if defined STDC_HEADERS || defined HAVE_STDLIB_H
+# include <stdlib.h>
+#else
+char *malloc ();
+#endif
+
+int
+main ()
+{
+return ! malloc (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_func_malloc_0_nonnull=yes
+else
+  ac_cv_func_malloc_0_nonnull=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_malloc_0_nonnull" >&5
+$as_echo "$ac_cv_func_malloc_0_nonnull" >&6; }
+if test $ac_cv_func_malloc_0_nonnull = yes; then :
+
+$as_echo "#define HAVE_MALLOC_GNU 1" >>confdefs.h
+
+else
+  $as_echo "#define HAVE_MALLOC_GNU 0" >>confdefs.h
+
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS malloc.$ac_objext"
+
+  REPLACE_MALLOC=1
+
+
+fi
+
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define GNULIB_MALLOC_GNU 1
+_ACEOF
+
+
+
+
+
+  if test $gl_cv_func_malloc_posix = yes; then
+
+$as_echo "#define HAVE_MALLOC_POSIX 1" >>confdefs.h
+
+  else
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS malloc.$ac_objext"
+
+  REPLACE_MALLOC=1
+
+  fi
+
+
+
+
+  GNULIB_MALLOC_POSIX=1
+
+
+
+$as_echo "#define GNULIB_TEST_MALLOC_POSIX 1" >>confdefs.h
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  if test $ac_cv_func_mbsinit = yes && test $ac_cv_func_mbrtowc = yes; then
+
+
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc handles incomplete characters" >&5
+$as_echo_n "checking whether mbrtowc handles incomplete characters... " >&6; }
+if ${gl_cv_func_mbrtowc_incomplete_state+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+                  case "$host_os" in
+                     # Guess no on AIX and OSF/1.
+        aix* | osf*) gl_cv_func_mbrtowc_incomplete_state="guessing no" ;;
+                     # Guess yes otherwise.
+        *)           gl_cv_func_mbrtowc_incomplete_state="guessing yes" ;;
+      esac
+      if test $LOCALE_JA != none; then
+        if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int main ()
+{
+  if (setlocale (LC_ALL, "$LOCALE_JA") != NULL)
+    {
+      const char input[] = "B\217\253\344\217\251\316er"; /* "Büßer" */
+      mbstate_t state;
+      wchar_t wc;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2))
+        if (mbsinit (&state))
+          return 1;
+    }
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_mbrtowc_incomplete_state=yes
+else
+  gl_cv_func_mbrtowc_incomplete_state=no
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_incomplete_state" >&5
+$as_echo "$gl_cv_func_mbrtowc_incomplete_state" >&6; }
+
+
+
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc works as well as mbtowc" >&5
+$as_echo_n "checking whether mbrtowc works as well as mbtowc... " >&6; }
+if ${gl_cv_func_mbrtowc_sanitycheck+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+                  case "$host_os" in
+                    # Guess no on Solaris 8.
+        solaris2.8) gl_cv_func_mbrtowc_sanitycheck="guessing no" ;;
+                    # Guess yes otherwise.
+        *)          gl_cv_func_mbrtowc_sanitycheck="guessing yes" ;;
+      esac
+      if test $LOCALE_ZH_CN != none; then
+        if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <stdlib.h>
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int main ()
+{
+  /* This fails on Solaris 8:
+     mbrtowc returns 2, and sets wc to 0x00F0.
+     mbtowc returns 4 (correct) and sets wc to 0x5EDC.  */
+  if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL)
+    {
+      char input[] = "B\250\271\201\060\211\070er"; /* "Büßer" */
+      mbstate_t state;
+      wchar_t wc;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      if (mbrtowc (&wc, input + 3, 6, &state) != 4
+          && mbtowc (&wc, input + 3, 6) == 4)
+        return 1;
+    }
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_mbrtowc_sanitycheck=yes
+else
+  gl_cv_func_mbrtowc_sanitycheck=no
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_sanitycheck" >&5
+$as_echo "$gl_cv_func_mbrtowc_sanitycheck" >&6; }
+
+    REPLACE_MBSTATE_T=0
+    case "$gl_cv_func_mbrtowc_incomplete_state" in
+      *yes) ;;
+      *) REPLACE_MBSTATE_T=1 ;;
+    esac
+    case "$gl_cv_func_mbrtowc_sanitycheck" in
+      *yes) ;;
+      *) REPLACE_MBSTATE_T=1 ;;
+    esac
+  else
+    REPLACE_MBSTATE_T=1
+  fi
+
+
+
+  if test $ac_cv_func_mbrtowc = no; then
+    HAVE_MBRTOWC=0
+  else
+    if test $REPLACE_MBSTATE_T = 1; then
+      REPLACE_MBRTOWC=1
+    else
+
+
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc handles a NULL pwc argument" >&5
+$as_echo_n "checking whether mbrtowc handles a NULL pwc argument... " >&6; }
+if ${gl_cv_func_mbrtowc_null_arg1+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+                  case "$host_os" in
+                  # Guess no on Solaris.
+        solaris*) gl_cv_func_mbrtowc_null_arg1="guessing no" ;;
+                  # Guess yes otherwise.
+        *)        gl_cv_func_mbrtowc_null_arg1="guessing yes" ;;
+      esac
+      if test $LOCALE_FR_UTF8 != none; then
+        if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <stdlib.h>
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int main ()
+{
+  int result = 0;
+
+  if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+    {
+      char input[] = "\303\237er";
+      mbstate_t state;
+      wchar_t wc;
+      size_t ret;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      wc = (wchar_t) 0xBADFACE;
+      ret = mbrtowc (&wc, input, 5, &state);
+      if (ret != 2)
+        result |= 1;
+      if (!mbsinit (&state))
+        result |= 2;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      ret = mbrtowc (NULL, input, 5, &state);
+      if (ret != 2) /* Solaris 7 fails here: ret is -1.  */
+        result |= 4;
+      if (!mbsinit (&state))
+        result |= 8;
+    }
+  return result;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_mbrtowc_null_arg1=yes
+else
+  gl_cv_func_mbrtowc_null_arg1=no
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_null_arg1" >&5
+$as_echo "$gl_cv_func_mbrtowc_null_arg1" >&6; }
+
+
+
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc handles a NULL string argument" >&5
+$as_echo_n "checking whether mbrtowc handles a NULL string argument... " >&6; }
+if ${gl_cv_func_mbrtowc_null_arg2+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+                  case "$host_os" in
+              # Guess no on OSF/1.
+        osf*) gl_cv_func_mbrtowc_null_arg2="guessing no" ;;
+              # Guess yes otherwise.
+        *)    gl_cv_func_mbrtowc_null_arg2="guessing yes" ;;
+      esac
+      if test $LOCALE_FR_UTF8 != none; then
+        if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int main ()
+{
+  if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+    {
+      mbstate_t state;
+      wchar_t wc;
+      int ret;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      wc = (wchar_t) 0xBADFACE;
+      mbrtowc (&wc, NULL, 5, &state);
+      /* Check that wc was not modified.  */
+      if (wc != (wchar_t) 0xBADFACE)
+        return 1;
+    }
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_mbrtowc_null_arg2=yes
+else
+  gl_cv_func_mbrtowc_null_arg2=no
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_null_arg2" >&5
+$as_echo "$gl_cv_func_mbrtowc_null_arg2" >&6; }
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc has a correct return value" >&5
+$as_echo_n "checking whether mbrtowc has a correct return value... " >&6; }
+if ${gl_cv_func_mbrtowc_retval+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+                  case "$host_os" in
+                                   # Guess no on HP-UX, Solaris, native Windows.
+        hpux* | solaris* | mingw*) gl_cv_func_mbrtowc_retval="guessing no" ;;
+                                   # Guess yes otherwise.
+        *)                         gl_cv_func_mbrtowc_retval="guessing yes" ;;
+      esac
+      if test $LOCALE_FR_UTF8 != none || test $LOCALE_JA != none \
+         || { case "$host_os" in mingw*) true;; *) false;; esac; }; then
+        if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int main ()
+{
+  int result = 0;
+  int found_some_locale = 0;
+  /* This fails on Solaris.  */
+  if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+    {
+      char input[] = "B\303\274\303\237er"; /* "Büßer" */
+      mbstate_t state;
+      wchar_t wc;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2))
+        {
+          input[1] = '\0';
+          if (mbrtowc (&wc, input + 2, 5, &state) != 1)
+            result |= 1;
+        }
+      found_some_locale = 1;
+    }
+  /* This fails on HP-UX 11.11.  */
+  if (setlocale (LC_ALL, "$LOCALE_JA") != NULL)
+    {
+      char input[] = "B\217\253\344\217\251\316er"; /* "Büßer" */
+      mbstate_t state;
+      wchar_t wc;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2))
+        {
+          input[1] = '\0';
+          if (mbrtowc (&wc, input + 2, 5, &state) != 2)
+            result |= 2;
+        }
+      found_some_locale = 1;
+    }
+  /* This fails on native Windows.  */
+  if (setlocale (LC_ALL, "Japanese_Japan.932") != NULL)
+    {
+      char input[] = "<\223\372\226\173\214\352>"; /* "<日本語>" */
+      mbstate_t state;
+      wchar_t wc;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      if (mbrtowc (&wc, input + 3, 1, &state) == (size_t)(-2))
+        {
+          input[3] = '\0';
+          if (mbrtowc (&wc, input + 4, 4, &state) != 1)
+            result |= 4;
+        }
+      found_some_locale = 1;
+    }
+  if (setlocale (LC_ALL, "Chinese_Taiwan.950") != NULL)
+    {
+      char input[] = "<\244\351\245\273\273\171>"; /* "<日本語>" */
+      mbstate_t state;
+      wchar_t wc;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      if (mbrtowc (&wc, input + 3, 1, &state) == (size_t)(-2))
+        {
+          input[3] = '\0';
+          if (mbrtowc (&wc, input + 4, 4, &state) != 1)
+            result |= 8;
+        }
+      found_some_locale = 1;
+    }
+  if (setlocale (LC_ALL, "Chinese_China.936") != NULL)
+    {
+      char input[] = "<\310\325\261\276\325\132>"; /* "<日本語>" */
+      mbstate_t state;
+      wchar_t wc;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      if (mbrtowc (&wc, input + 3, 1, &state) == (size_t)(-2))
+        {
+          input[3] = '\0';
+          if (mbrtowc (&wc, input + 4, 4, &state) != 1)
+            result |= 16;
+        }
+      found_some_locale = 1;
+    }
+  return (found_some_locale ? result : 77);
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_mbrtowc_retval=yes
+else
+  if test $? != 77; then
+             gl_cv_func_mbrtowc_retval=no
+           fi
+
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_retval" >&5
+$as_echo "$gl_cv_func_mbrtowc_retval" >&6; }
+
+
+
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc returns 0 when parsing a NUL character" >&5
+$as_echo_n "checking whether mbrtowc returns 0 when parsing a NUL character... " >&6; }
+if ${gl_cv_func_mbrtowc_nul_retval+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+                  case "$host_os" in
+                       # Guess no on Solaris 8 and 9.
+        solaris2.[89]) gl_cv_func_mbrtowc_nul_retval="guessing no" ;;
+                       # Guess yes otherwise.
+        *)             gl_cv_func_mbrtowc_nul_retval="guessing yes" ;;
+      esac
+      if test $LOCALE_ZH_CN != none; then
+        if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int main ()
+{
+  /* This fails on Solaris 8 and 9.  */
+  if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL)
+    {
+      mbstate_t state;
+      wchar_t wc;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      if (mbrtowc (&wc, "", 1, &state) != 0)
+        return 1;
+    }
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_mbrtowc_nul_retval=yes
+else
+  gl_cv_func_mbrtowc_nul_retval=no
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_nul_retval" >&5
+$as_echo "$gl_cv_func_mbrtowc_nul_retval" >&6; }
+
+      case "$gl_cv_func_mbrtowc_null_arg1" in
+        *yes) ;;
+        *)
+$as_echo "#define MBRTOWC_NULL_ARG1_BUG 1" >>confdefs.h
+
+           REPLACE_MBRTOWC=1
+           ;;
+      esac
+      case "$gl_cv_func_mbrtowc_null_arg2" in
+        *yes) ;;
+        *)
+$as_echo "#define MBRTOWC_NULL_ARG2_BUG 1" >>confdefs.h
+
+           REPLACE_MBRTOWC=1
+           ;;
+      esac
+      case "$gl_cv_func_mbrtowc_retval" in
+        *yes) ;;
+        *)
+$as_echo "#define MBRTOWC_RETVAL_BUG 1" >>confdefs.h
+
+           REPLACE_MBRTOWC=1
+           ;;
+      esac
+      case "$gl_cv_func_mbrtowc_nul_retval" in
+        *yes) ;;
+        *)
+$as_echo "#define MBRTOWC_NUL_RETVAL_BUG 1" >>confdefs.h
+
+           REPLACE_MBRTOWC=1
+           ;;
+      esac
+    fi
+  fi
+  if test $HAVE_MBRTOWC = 0 || test $REPLACE_MBRTOWC = 1; then
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS mbrtowc.$ac_objext"
+
+
+  :
+
+  fi
+
+
+
+
+  GNULIB_MBRTOWC=1
+
+
+
+$as_echo "#define GNULIB_TEST_MBRTOWC 1" >>confdefs.h
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  if test $ac_cv_func_mbsinit = yes && test $ac_cv_func_mbrtowc = yes; then
+
+
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc handles incomplete characters" >&5
+$as_echo_n "checking whether mbrtowc handles incomplete characters... " >&6; }
+if ${gl_cv_func_mbrtowc_incomplete_state+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+                  case "$host_os" in
+                     # Guess no on AIX and OSF/1.
+        aix* | osf*) gl_cv_func_mbrtowc_incomplete_state="guessing no" ;;
+                     # Guess yes otherwise.
+        *)           gl_cv_func_mbrtowc_incomplete_state="guessing yes" ;;
+      esac
+      if test $LOCALE_JA != none; then
+        if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int main ()
+{
+  if (setlocale (LC_ALL, "$LOCALE_JA") != NULL)
+    {
+      const char input[] = "B\217\253\344\217\251\316er"; /* "Büßer" */
+      mbstate_t state;
+      wchar_t wc;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2))
+        if (mbsinit (&state))
+          return 1;
+    }
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_mbrtowc_incomplete_state=yes
+else
+  gl_cv_func_mbrtowc_incomplete_state=no
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_incomplete_state" >&5
+$as_echo "$gl_cv_func_mbrtowc_incomplete_state" >&6; }
+
+
+
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc works as well as mbtowc" >&5
+$as_echo_n "checking whether mbrtowc works as well as mbtowc... " >&6; }
+if ${gl_cv_func_mbrtowc_sanitycheck+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+                  case "$host_os" in
+                    # Guess no on Solaris 8.
+        solaris2.8) gl_cv_func_mbrtowc_sanitycheck="guessing no" ;;
+                    # Guess yes otherwise.
+        *)          gl_cv_func_mbrtowc_sanitycheck="guessing yes" ;;
+      esac
+      if test $LOCALE_ZH_CN != none; then
+        if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <stdlib.h>
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int main ()
+{
+  /* This fails on Solaris 8:
+     mbrtowc returns 2, and sets wc to 0x00F0.
+     mbtowc returns 4 (correct) and sets wc to 0x5EDC.  */
+  if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL)
+    {
+      char input[] = "B\250\271\201\060\211\070er"; /* "Büßer" */
+      mbstate_t state;
+      wchar_t wc;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      if (mbrtowc (&wc, input + 3, 6, &state) != 4
+          && mbtowc (&wc, input + 3, 6) == 4)
+        return 1;
+    }
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_mbrtowc_sanitycheck=yes
+else
+  gl_cv_func_mbrtowc_sanitycheck=no
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_sanitycheck" >&5
+$as_echo "$gl_cv_func_mbrtowc_sanitycheck" >&6; }
+
+    REPLACE_MBSTATE_T=0
+    case "$gl_cv_func_mbrtowc_incomplete_state" in
+      *yes) ;;
+      *) REPLACE_MBSTATE_T=1 ;;
+    esac
+    case "$gl_cv_func_mbrtowc_sanitycheck" in
+      *yes) ;;
+      *) REPLACE_MBSTATE_T=1 ;;
+    esac
+  else
+    REPLACE_MBSTATE_T=1
+  fi
+
+
+
+  if test $ac_cv_func_mbsinit = no; then
+    HAVE_MBSINIT=0
+  else
+    if test $REPLACE_MBSTATE_T = 1; then
+      REPLACE_MBSINIT=1
+    else
+                        case "$host_os" in
+        mingw*) REPLACE_MBSINIT=1 ;;
+      esac
+    fi
+  fi
+  if test $HAVE_MBSINIT = 0 || test $REPLACE_MBSINIT = 1; then
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS mbsinit.$ac_objext"
+
+
+  :
+
+  fi
+
+
+
+
+  GNULIB_MBSINIT=1
+
+
+
+$as_echo "#define GNULIB_TEST_MBSINIT 1" >>confdefs.h
+
+
+
+
+
+
+  if false; then
+    REPLACE_MBTOWC=1
+  fi
+  if test $REPLACE_MBTOWC = 1; then
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS mbtowc.$ac_objext"
+
+
+  :
+
+  fi
+
+
+
+
+  GNULIB_MBTOWC=1
+
+
+
+$as_echo "#define GNULIB_TEST_MBTOWC 1" >>confdefs.h
+
+
+
+
+
+
+
+
+  if test $ac_cv_func_mkstemp = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mkstemp" >&5
+$as_echo_n "checking for working mkstemp... " >&6; }
+if ${gl_cv_func_working_mkstemp+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+        mkdir conftest.mkstemp
+        if test "$cross_compiling" = yes; then :
+  gl_cv_func_working_mkstemp="guessing no"
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+int result = 0;
+              int i;
+              off_t large = (off_t) 4294967295u;
+              if (large < 0)
+                large = 2147483647;
+              umask (0);
+              for (i = 0; i < 70; i++)
+                {
+                  char templ[] = "conftest.mkstemp/coXXXXXX";
+                  int (*mkstemp_function) (char *) = mkstemp;
+                  int fd = mkstemp_function (templ);
+                  if (fd < 0)
+                    result |= 1;
+                  else
+                    {
+                      struct stat st;
+                      if (lseek (fd, large, SEEK_SET) != large)
+                        result |= 2;
+                      if (fstat (fd, &st) < 0)
+                        result |= 4;
+                      else if (st.st_mode & 0077)
+                        result |= 8;
+                      if (close (fd))
+                        result |= 16;
+                    }
+                }
+              return result;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_working_mkstemp=yes
+else
+  gl_cv_func_working_mkstemp=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+        rm -rf conftest.mkstemp
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_working_mkstemp" >&5
+$as_echo "$gl_cv_func_working_mkstemp" >&6; }
+    if test "$gl_cv_func_working_mkstemp" != yes; then
+      REPLACE_MKSTEMP=1
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS mkstemp.$ac_objext"
+
+
+
+    fi
+  else
+    HAVE_MKSTEMP=0
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS mkstemp.$ac_objext"
+
+
+
+  fi
+
+
+
+
+  GNULIB_MKSTEMP=1
+
+
+
+$as_echo "#define GNULIB_TEST_MKSTEMP 1" >>confdefs.h
+
+
+
+
+
+
+
+
+     if test $ac_cv_func_nl_langinfo = yes; then
+    # On Irix 6.5, YESEXPR is defined, but nl_langinfo(YESEXPR) is broken.
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether YESEXPR works" >&5
+$as_echo_n "checking whether YESEXPR works... " >&6; }
+if ${gl_cv_func_nl_langinfo_yesexpr_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+
+         case "$host_os" in
+                   # Guess no on irix systems.
+           irix*)  gl_cv_func_nl_langinfo_yesexpr_works="guessing no";;
+                   # Guess yes elsewhere.
+           *)      gl_cv_func_nl_langinfo_yesexpr_works="guessing yes";;
+         esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <langinfo.h>
+
+int
+main ()
+{
+return !*nl_langinfo(YESEXPR);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_nl_langinfo_yesexpr_works=yes
+else
+  gl_cv_func_nl_langinfo_yesexpr_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_nl_langinfo_yesexpr_works" >&5
+$as_echo "$gl_cv_func_nl_langinfo_yesexpr_works" >&6; }
+    case $gl_cv_func_nl_langinfo_yesexpr_works in
+      *yes) FUNC_NL_LANGINFO_YESEXPR_WORKS=1 ;;
+      *)    FUNC_NL_LANGINFO_YESEXPR_WORKS=0 ;;
+    esac
+
+cat >>confdefs.h <<_ACEOF
+#define FUNC_NL_LANGINFO_YESEXPR_WORKS $FUNC_NL_LANGINFO_YESEXPR_WORKS
+_ACEOF
+
+    if test $HAVE_LANGINFO_CODESET = 1 && test $HAVE_LANGINFO_ERA = 1 \
+        && test $FUNC_NL_LANGINFO_YESEXPR_WORKS = 1; then
+      :
+    else
+      REPLACE_NL_LANGINFO=1
+
+$as_echo "#define REPLACE_NL_LANGINFO 1" >>confdefs.h
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS nl_langinfo.$ac_objext"
+
+    fi
+  else
+    HAVE_NL_LANGINFO=0
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS nl_langinfo.$ac_objext"
+
+  fi
+
+
+
+
+  GNULIB_NL_LANGINFO=1
+
+
+
+$as_echo "#define GNULIB_TEST_NL_LANGINFO 1" >>confdefs.h
+
+
+
+
+
+
+
+ac_fn_c_check_decl "$LINENO" "program_invocation_name" "ac_cv_have_decl_program_invocation_name" "#include <errno.h>
+"
+if test "x$ac_cv_have_decl_program_invocation_name" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PROGRAM_INVOCATION_NAME $ac_have_decl
+_ACEOF
+
+ac_fn_c_check_decl "$LINENO" "program_invocation_short_name" "ac_cv_have_decl_program_invocation_short_name" "#include <errno.h>
+"
+if test "x$ac_cv_have_decl_program_invocation_short_name" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME $ac_have_decl
+_ACEOF
+
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS quote.$ac_objext"
+
+
+
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS quotearg.$ac_objext"
+
+
+
+
+
+
+
+
+
+  GNULIB_READ=1
+
+
+
+$as_echo "#define GNULIB_TEST_READ 1" >>confdefs.h
+
+
+
+
+
+
+  if test $ac_cv_func_readlink = no; then
+    HAVE_READLINK=0
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS readlink.$ac_objext"
+
+
+  :
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether readlink signature is correct" >&5
+$as_echo_n "checking whether readlink signature is correct... " >&6; }
+if ${gl_cv_decl_readlink_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <unistd.h>
+      /* Cause compilation failure if original declaration has wrong type.  */
+      ssize_t readlink (const char *, char *, size_t);
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_decl_readlink_works=yes
+else
+  gl_cv_decl_readlink_works=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_decl_readlink_works" >&5
+$as_echo "$gl_cv_decl_readlink_works" >&6; }
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether readlink handles trailing slash correctly" >&5
+$as_echo_n "checking whether readlink handles trailing slash correctly... " >&6; }
+if ${gl_cv_func_readlink_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  # We have readlink, so assume ln -s works.
+       ln -s conftest.no-such conftest.link
+       ln -s conftest.link conftest.lnk2
+       if test "$cross_compiling" = yes; then :
+  gl_cv_func_readlink_works="guessing no"
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <unistd.h>
+
+int
+main ()
+{
+char buf[20];
+      return readlink ("conftest.lnk2/", buf, sizeof buf) != -1;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_readlink_works=yes
+else
+  gl_cv_func_readlink_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+      rm -f conftest.link conftest.lnk2
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_readlink_works" >&5
+$as_echo "$gl_cv_func_readlink_works" >&6; }
+    if test "$gl_cv_func_readlink_works" != yes; then
+
+$as_echo "#define READLINK_TRAILING_SLASH_BUG 1" >>confdefs.h
+
+      REPLACE_READLINK=1
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS readlink.$ac_objext"
+
+    elif test "$gl_cv_decl_readlink_works" != yes; then
+      REPLACE_READLINK=1
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS readlink.$ac_objext"
+
+    fi
+  fi
+
+
+
+
+  GNULIB_READLINK=1
+
+
+
+$as_echo "#define GNULIB_TEST_READLINK 1" >>confdefs.h
+
+
+
+
+
+    for ac_header in stdlib.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default"
+if test "x$ac_cv_header_stdlib_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STDLIB_H 1
+_ACEOF
+
+fi
+
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible realloc" >&5
+$as_echo_n "checking for GNU libc compatible realloc... " >&6; }
+if ${ac_cv_func_realloc_0_nonnull+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  ac_cv_func_realloc_0_nonnull=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#if defined STDC_HEADERS || defined HAVE_STDLIB_H
+# include <stdlib.h>
+#else
+char *realloc ();
+#endif
+
+int
+main ()
+{
+return ! realloc (0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_func_realloc_0_nonnull=yes
+else
+  ac_cv_func_realloc_0_nonnull=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_realloc_0_nonnull" >&5
+$as_echo "$ac_cv_func_realloc_0_nonnull" >&6; }
+if test $ac_cv_func_realloc_0_nonnull = yes; then :
+
+$as_echo "#define HAVE_REALLOC_GNU 1" >>confdefs.h
+
+else
+  $as_echo "#define HAVE_REALLOC_GNU 0" >>confdefs.h
+
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS realloc.$ac_objext"
+
+  REPLACE_REALLOC=1
+
+
+fi
+
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define GNULIB_REALLOC_GNU 1
+_ACEOF
+
+
+
+
+
+  if test $gl_cv_func_malloc_posix = yes; then
+
+$as_echo "#define HAVE_REALLOC_POSIX 1" >>confdefs.h
+
+  else
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS realloc.$ac_objext"
+
+  REPLACE_REALLOC=1
+
+  fi
+
+
+
+
+  GNULIB_REALLOC_POSIX=1
+
+
+
+$as_echo "#define GNULIB_TEST_REALLOC_POSIX 1" >>confdefs.h
+
+
+
+
+
+# Check whether --with-included-regex was given.
+if test "${with_included_regex+set}" = set; then :
+  withval=$with_included_regex;
+fi
+
+
+  case $with_included_regex in #(
+  yes|no) ac_use_included_regex=$with_included_regex
+        ;;
+  '')
+    # If the system regex support is good enough that it passes the
+    # following run test, then default to *not* using the included regex.c.
+    # If cross compiling, assume the test would fail and use the included
+    # regex.c.
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working re_compile_pattern" >&5
+$as_echo_n "checking for working re_compile_pattern... " >&6; }
+if ${gl_cv_func_re_compile_pattern_working+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+         gl_cv_func_re_compile_pattern_working=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+           #include <locale.h>
+           #include <limits.h>
+           #include <regex.h>
+
+int
+main ()
+{
+int result = 0;
+            static struct re_pattern_buffer regex;
+            unsigned char folded_chars[UCHAR_MAX + 1];
+            int i;
+            const char *s;
+            struct re_registers regs;
+
+            /* http://sourceware.org/ml/libc-hacker/2006-09/msg00008.html
+               This test needs valgrind to catch the bug on Debian
+               GNU/Linux 3.1 x86, but it might catch the bug better
+               on other platforms and it shouldn't hurt to try the
+               test here.  */
+            if (setlocale (LC_ALL, "en_US.UTF-8"))
+              {
+                static char const pat[] = "insert into";
+                static char const data[] =
+                  "\xFF\0\x12\xA2\xAA\xC4\xB1,K\x12\xC4\xB1*\xACK";
+                re_set_syntax (RE_SYNTAX_GREP | RE_HAT_LISTS_NOT_NEWLINE
+                               | RE_ICASE);
+                memset (&regex, 0, sizeof regex);
+                s = re_compile_pattern (pat, sizeof pat - 1, &regex);
+                if (s)
+                  result |= 1;
+                else if (re_search (&regex, data, sizeof data - 1,
+                                    0, sizeof data - 1, &regs)
+                         != -1)
+                  result |= 1;
+                if (! setlocale (LC_ALL, "C"))
+                  return 1;
+              }
+
+            /* This test is from glibc bug 3957, reported by Andrew Mackey.  */
+            re_set_syntax (RE_SYNTAX_EGREP | RE_HAT_LISTS_NOT_NEWLINE);
+            memset (&regex, 0, sizeof regex);
+            s = re_compile_pattern ("a[^x]b", 6, &regex);
+            if (s)
+              result |= 2;
+            /* This should fail, but succeeds for glibc-2.5.  */
+            else if (re_search (&regex, "a\nb", 3, 0, 3, &regs) != -1)
+              result |= 2;
+
+            /* This regular expression is from Spencer ere test number 75
+               in grep-2.3.  */
+            re_set_syntax (RE_SYNTAX_POSIX_EGREP);
+            memset (&regex, 0, sizeof regex);
+            for (i = 0; i <= UCHAR_MAX; i++)
+              folded_chars[i] = i;
+            regex.translate = folded_chars;
+            s = re_compile_pattern ("a[[:]:]]b\n", 11, &regex);
+            /* This should fail with _Invalid character class name_ error.  */
+            if (!s)
+              result |= 4;
+
+            /* Ensure that [b-a] is diagnosed as invalid, when
+               using RE_NO_EMPTY_RANGES. */
+            re_set_syntax (RE_SYNTAX_POSIX_EGREP | RE_NO_EMPTY_RANGES);
+            memset (&regex, 0, sizeof regex);
+            s = re_compile_pattern ("a[b-a]", 6, &regex);
+            if (s == 0)
+              result |= 8;
+
+            /* This should succeed, but does not for glibc-2.1.3.  */
+            memset (&regex, 0, sizeof regex);
+            s = re_compile_pattern ("{1", 2, &regex);
+            if (s)
+              result |= 8;
+
+            /* The following example is derived from a problem report
+               against gawk from Jorge Stolfi <stolfi@ic.unicamp.br>.  */
+            memset (&regex, 0, sizeof regex);
+            s = re_compile_pattern ("[an\371]*n", 7, &regex);
+            if (s)
+              result |= 8;
+            /* This should match, but does not for glibc-2.2.1.  */
+            else if (re_match (&regex, "an", 2, 0, &regs) != 2)
+              result |= 8;
+
+            memset (&regex, 0, sizeof regex);
+            s = re_compile_pattern ("x", 1, &regex);
+            if (s)
+              result |= 8;
+            /* glibc-2.2.93 does not work with a negative RANGE argument.  */
+            else if (re_search (&regex, "wxy", 3, 2, -2, &regs) != 1)
+              result |= 8;
+
+            /* The version of regex.c in older versions of gnulib
+               ignored RE_ICASE.  Detect that problem too.  */
+            re_set_syntax (RE_SYNTAX_EMACS | RE_ICASE);
+            memset (&regex, 0, sizeof regex);
+            s = re_compile_pattern ("x", 1, &regex);
+            if (s)
+              result |= 16;
+            else if (re_search (&regex, "WXY", 3, 0, 3, &regs) < 0)
+              result |= 16;
+
+            /* Catch a bug reported by Vin Shelton in
+               http://lists.gnu.org/archive/html/bug-coreutils/2007-06/msg00089.html
+               */
+            re_set_syntax (RE_SYNTAX_POSIX_BASIC
+                           & ~RE_CONTEXT_INVALID_DUP
+                           & ~RE_NO_EMPTY_RANGES);
+            memset (&regex, 0, sizeof regex);
+            s = re_compile_pattern ("[[:alnum:]_-]\\\\+$", 16, &regex);
+            if (s)
+              result |= 32;
+
+            /* REG_STARTEND was added to glibc on 2004-01-15.
+               Reject older versions.  */
+            if (! REG_STARTEND)
+              result |= 64;
+
+#if 0
+            /* It would be nice to reject hosts whose regoff_t values are too
+               narrow (including glibc on hosts with 64-bit ptrdiff_t and
+               32-bit int), but we should wait until glibc implements this
+               feature.  Otherwise, support for equivalence classes and
+               multibyte collation symbols would always be broken except
+               when compiling --without-included-regex.   */
+            if (sizeof (regoff_t) < sizeof (ptrdiff_t)
+                || sizeof (regoff_t) < sizeof (ssize_t))
+              result |= 64;
+#endif
+
+            return result;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_re_compile_pattern_working=yes
+else
+  gl_cv_func_re_compile_pattern_working=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_re_compile_pattern_working" >&5
+$as_echo "$gl_cv_func_re_compile_pattern_working" >&6; }
+    case $gl_cv_func_re_compile_pattern_working in #(
+    yes) ac_use_included_regex=no;; #(
+    no) ac_use_included_regex=yes;;
+    esac
+    ;;
+  *) as_fn_error $? "Invalid value for --with-included-regex: $with_included_regex" "$LINENO" 5
+    ;;
+  esac
+
+  if test $ac_use_included_regex = yes; then
+
+$as_echo "#define _REGEX_LARGE_OFFSETS 1" >>confdefs.h
+
+
+$as_echo "#define re_syntax_options rpl_re_syntax_options" >>confdefs.h
+
+
+$as_echo "#define re_set_syntax rpl_re_set_syntax" >>confdefs.h
+
+
+$as_echo "#define re_compile_pattern rpl_re_compile_pattern" >>confdefs.h
+
+
+$as_echo "#define re_compile_fastmap rpl_re_compile_fastmap" >>confdefs.h
+
+
+$as_echo "#define re_search rpl_re_search" >>confdefs.h
+
+
+$as_echo "#define re_search_2 rpl_re_search_2" >>confdefs.h
+
+
+$as_echo "#define re_match rpl_re_match" >>confdefs.h
+
+
+$as_echo "#define re_match_2 rpl_re_match_2" >>confdefs.h
+
+
+$as_echo "#define re_set_registers rpl_re_set_registers" >>confdefs.h
+
+
+$as_echo "#define re_comp rpl_re_comp" >>confdefs.h
+
+
+$as_echo "#define re_exec rpl_re_exec" >>confdefs.h
+
+
+$as_echo "#define regcomp rpl_regcomp" >>confdefs.h
+
+
+$as_echo "#define regexec rpl_regexec" >>confdefs.h
+
+
+$as_echo "#define regerror rpl_regerror" >>confdefs.h
+
+
+$as_echo "#define regfree rpl_regfree" >>confdefs.h
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS regex.$ac_objext"
+
+
+
+
+
+
+  for ac_header in libintl.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "libintl.h" "ac_cv_header_libintl_h" "$ac_includes_default"
+if test "x$ac_cv_header_libintl_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBINTL_H 1
+_ACEOF
+
+fi
+
+done
+
+
+  ac_fn_c_check_decl "$LINENO" "isblank" "ac_cv_have_decl_isblank" "#include <ctype.h>
+"
+if test "x$ac_cv_have_decl_isblank" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_ISBLANK $ac_have_decl
+_ACEOF
+
+
+  fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+  for ac_func in rpmatch
+do :
+  ac_fn_c_check_func "$LINENO" "rpmatch" "ac_cv_func_rpmatch"
+if test "x$ac_cv_func_rpmatch" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_RPMATCH 1
+_ACEOF
+
+else
+
+    gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+
+fi
+done
+
+
+  if test $ac_cv_func_rpmatch = no; then
+    HAVE_RPMATCH=0
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and YESEXPR" >&5
+$as_echo_n "checking for nl_langinfo and YESEXPR... " >&6; }
+if ${gl_cv_langinfo_yesexpr+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <langinfo.h>
+int
+main ()
+{
+char* cs = nl_langinfo(YESEXPR); return !cs;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_langinfo_yesexpr=yes
+else
+  gl_cv_langinfo_yesexpr=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_langinfo_yesexpr" >&5
+$as_echo "$gl_cv_langinfo_yesexpr" >&6; }
+  if test $gl_cv_langinfo_yesexpr = yes; then
+
+$as_echo "#define HAVE_LANGINFO_YESEXPR 1" >>confdefs.h
+
+  fi
+
+  fi
+
+
+
+
+  GNULIB_RPMATCH=1
+
+
+
+$as_echo "#define GNULIB_TEST_RPMATCH 1" >>confdefs.h
+
+
+
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS safe-read.$ac_objext"
+
+
+
+
+
+
+
+
+            ac_fn_c_check_decl "$LINENO" "sleep" "ac_cv_have_decl_sleep" "#include <unistd.h>
+"
+if test "x$ac_cv_have_decl_sleep" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_SLEEP $ac_have_decl
+_ACEOF
+
+
+  if test $ac_cv_have_decl_sleep != yes; then
+    HAVE_SLEEP=0
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS sleep.$ac_objext"
+
+  else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working sleep" >&5
+$as_echo_n "checking for working sleep... " >&6; }
+if ${gl_cv_func_sleep_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  gl_cv_func_sleep_works="guessing no"
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <errno.h>
+#include <unistd.h>
+#include <signal.h>
+static void
+handle_alarm (int sig)
+{
+  if (sig != SIGALRM)
+    _exit (2);
+}
+
+int
+main ()
+{
+
+    /* Failure to compile this test due to missing alarm is okay,
+       since all such platforms (mingw) also lack sleep.  */
+    unsigned int pentecost = 50 * 24 * 60 * 60; /* 50 days.  */
+    unsigned int remaining;
+    signal (SIGALRM, handle_alarm);
+    alarm (1);
+    remaining = sleep (pentecost);
+    if (remaining > pentecost)
+      return 3;
+    if (remaining <= pentecost - 10)
+      return 4;
+    return 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_sleep_works=yes
+else
+  gl_cv_func_sleep_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_sleep_works" >&5
+$as_echo "$gl_cv_func_sleep_works" >&6; }
+    if test "$gl_cv_func_sleep_works" != yes; then
+      REPLACE_SLEEP=1
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS sleep.$ac_objext"
+
+    fi
+  fi
+
+
+
+
+  GNULIB_SLEEP=1
+
+
+
+$as_echo "#define GNULIB_TEST_SLEEP 1" >>confdefs.h
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ssize_t" >&5
+$as_echo_n "checking for ssize_t... " >&6; }
+if ${gt_cv_ssize_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+int
+main ()
+{
+int x = sizeof (ssize_t *) + sizeof (ssize_t);
+            return !x;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gt_cv_ssize_t=yes
+else
+  gt_cv_ssize_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_ssize_t" >&5
+$as_echo "$gt_cv_ssize_t" >&6; }
+  if test $gt_cv_ssize_t = no; then
+
+$as_echo "#define ssize_t int" >>confdefs.h
+
+  fi
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stat handles trailing slashes on directories" >&5
+$as_echo_n "checking whether stat handles trailing slashes on directories... " >&6; }
+if ${gl_cv_func_stat_dir_slash+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  case $host_os in
+            mingw*) gl_cv_func_stat_dir_slash="guessing no";;
+            *) gl_cv_func_stat_dir_slash="guessing yes";;
+          esac
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/stat.h>
+
+int
+main ()
+{
+struct stat st; return stat (".", &st) != stat ("./", &st);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_stat_dir_slash=yes
+else
+  gl_cv_func_stat_dir_slash=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_stat_dir_slash" >&5
+$as_echo "$gl_cv_func_stat_dir_slash" >&6; }
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stat handles trailing slashes on files" >&5
+$as_echo_n "checking whether stat handles trailing slashes on files... " >&6; }
+if ${gl_cv_func_stat_file_slash+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  touch conftest.tmp
+       # Assume that if we have lstat, we can also check symlinks.
+       if test $ac_cv_func_lstat = yes; then
+         ln -s conftest.tmp conftest.lnk
+       fi
+       if test "$cross_compiling" = yes; then :
+  gl_cv_func_stat_file_slash="guessing no"
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/stat.h>
+
+int
+main ()
+{
+int result = 0;
+      struct stat st;
+      if (!stat ("conftest.tmp/", &st))
+        result |= 1;
+#if HAVE_LSTAT
+      if (!stat ("conftest.lnk/", &st))
+        result |= 2;
+#endif
+      return result;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_stat_file_slash=yes
+else
+  gl_cv_func_stat_file_slash=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+       rm -f conftest.tmp conftest.lnk
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_stat_file_slash" >&5
+$as_echo "$gl_cv_func_stat_file_slash" >&6; }
+  case $gl_cv_func_stat_dir_slash in
+    *no) REPLACE_STAT=1
+
+$as_echo "#define REPLACE_FUNC_STAT_DIR 1" >>confdefs.h
+;;
+  esac
+  case $gl_cv_func_stat_file_slash in
+    *no) REPLACE_STAT=1
+
+$as_echo "#define REPLACE_FUNC_STAT_FILE 1" >>confdefs.h
+;;
+  esac
+  if test $REPLACE_STAT = 1; then
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS stat.$ac_objext"
+
+
+  fi
+
+
+
+
+  GNULIB_STAT=1
+
+
+
+$as_echo "#define GNULIB_TEST_STAT 1" >>confdefs.h
+
+
+
+
+  STDARG_H=''
+  NEXT_STDARG_H='<stdarg.h>'
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for va_copy" >&5
+$as_echo_n "checking for va_copy... " >&6; }
+  if ${gl_cv_func_va_copy+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+int
+main ()
+{
+
+#ifndef va_copy
+void (*func) (va_list, va_list) = va_copy;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_func_va_copy=yes
+else
+  gl_cv_func_va_copy=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_va_copy" >&5
+$as_echo "$gl_cv_func_va_copy" >&6; }
+  if test $gl_cv_func_va_copy = no; then
+                                    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#if defined _AIX && !defined __GNUC__
+        AIX vaccine
+       #endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "vaccine" >/dev/null 2>&1; then :
+  gl_aixcc=yes
+else
+  gl_aixcc=no
+fi
+rm -f conftest*
+
+    if test $gl_aixcc = yes; then
+            STDARG_H=stdarg.h
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_stdarg_h='<'stdarg.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <stdarg.h>" >&5
+$as_echo_n "checking absolute name of <stdarg.h>... " >&6; }
+if ${gl_cv_next_stdarg_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+
+_ACEOF
+                                                                                                                        case "$host_os" in
+                 aix*) gl_absname_cpp="$ac_cpp -C" ;;
+                 *)    gl_absname_cpp="$ac_cpp" ;;
+               esac
+                                                            gl_cv_next_stdarg_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+                  sed -n '\#/stdarg.h#{
+                    s#.*"\(.*/stdarg.h\)".*#\1#
+                    s#^/[^/]#//&#
+                    p
+                    q
+                  }'`'"'
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stdarg_h" >&5
+$as_echo "$gl_cv_next_stdarg_h" >&6; }
+     fi
+     NEXT_STDARG_H=$gl_cv_next_stdarg_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'stdarg.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_stdarg_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_STDARG_H=$gl_next_as_first_directive
+
+
+
+
+            if test "$gl_cv_next_stdarg_h" = '""'; then
+        gl_cv_next_stdarg_h='"///usr/include/stdarg.h"'
+        NEXT_STDARG_H="$gl_cv_next_stdarg_h"
+      fi
+    else
+
+  saved_as_echo_n="$as_echo_n"
+  as_echo_n=':'
+  if ${gl_cv_func___va_copy+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+int
+main ()
+{
+
+#ifndef __va_copy
+error, bail out
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_func___va_copy=yes
+else
+  gl_cv_func___va_copy=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+  as_echo_n="$saved_as_echo_n"
+
+      if test $gl_cv_func___va_copy = yes; then
+
+$as_echo "#define va_copy __va_copy" >>confdefs.h
+
+      else
+
+
+$as_echo "#define va_copy gl_va_copy" >>confdefs.h
+
+      fi
+    fi
+  fi
+
+   if test -n "$STDARG_H"; then
+  GL_GENERATE_STDARG_H_TRUE=
+  GL_GENERATE_STDARG_H_FALSE='#'
+else
+  GL_GENERATE_STDARG_H_TRUE='#'
+  GL_GENERATE_STDARG_H_FALSE=
+fi
+
+
+
+
+
+
+  # Define two additional variables used in the Makefile substitution.
+
+  if test "$ac_cv_header_stdbool_h" = yes; then
+    STDBOOL_H=''
+  else
+    STDBOOL_H='stdbool.h'
+  fi
+
+   if test -n "$STDBOOL_H"; then
+  GL_GENERATE_STDBOOL_H_TRUE=
+  GL_GENERATE_STDBOOL_H_FALSE='#'
+else
+  GL_GENERATE_STDBOOL_H_TRUE='#'
+  GL_GENERATE_STDBOOL_H_FALSE=
+fi
+
+
+  if test "$ac_cv_type__Bool" = yes; then
+    HAVE__BOOL=1
+  else
+    HAVE__BOOL=0
+  fi
+
+
+
+
+
+  STDDEF_H=
+  if test $gt_cv_c_wchar_t = no; then
+    HAVE_WCHAR_T=0
+    STDDEF_H=stddef.h
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NULL can be used in arbitrary expressions" >&5
+$as_echo_n "checking whether NULL can be used in arbitrary expressions... " >&6; }
+if ${gl_cv_decl_null_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stddef.h>
+      int test[2 * (sizeof NULL == sizeof (void *)) -1];
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_decl_null_works=yes
+else
+  gl_cv_decl_null_works=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_decl_null_works" >&5
+$as_echo "$gl_cv_decl_null_works" >&6; }
+  if test $gl_cv_decl_null_works = no; then
+    REPLACE_NULL=1
+    STDDEF_H=stddef.h
+  fi
+
+   if test -n "$STDDEF_H"; then
+  GL_GENERATE_STDDEF_H_TRUE=
+  GL_GENERATE_STDDEF_H_FALSE='#'
+else
+  GL_GENERATE_STDDEF_H_TRUE='#'
+  GL_GENERATE_STDDEF_H_FALSE=
+fi
+
+  if test -n "$STDDEF_H"; then
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_stddef_h='<'stddef.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <stddef.h>" >&5
+$as_echo_n "checking absolute name of <stddef.h>... " >&6; }
+if ${gl_cv_next_stddef_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stddef.h>
+
+_ACEOF
+                                                                                                                        case "$host_os" in
+                 aix*) gl_absname_cpp="$ac_cpp -C" ;;
+                 *)    gl_absname_cpp="$ac_cpp" ;;
+               esac
+                                                            gl_cv_next_stddef_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+                  sed -n '\#/stddef.h#{
+                    s#.*"\(.*/stddef.h\)".*#\1#
+                    s#^/[^/]#//&#
+                    p
+                    q
+                  }'`'"'
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stddef_h" >&5
+$as_echo "$gl_cv_next_stddef_h" >&6; }
+     fi
+     NEXT_STDDEF_H=$gl_cv_next_stddef_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'stddef.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_stddef_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_STDDEF_H=$gl_next_as_first_directive
+
+
+
+
+  fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_stdio_h='<'stdio.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <stdio.h>" >&5
+$as_echo_n "checking absolute name of <stdio.h>... " >&6; }
+if ${gl_cv_next_stdio_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+
+_ACEOF
+                                                                                                                        case "$host_os" in
+                 aix*) gl_absname_cpp="$ac_cpp -C" ;;
+                 *)    gl_absname_cpp="$ac_cpp" ;;
+               esac
+                                                            gl_cv_next_stdio_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+                  sed -n '\#/stdio.h#{
+                    s#.*"\(.*/stdio.h\)".*#\1#
+                    s#^/[^/]#//&#
+                    p
+                    q
+                  }'`'"'
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stdio_h" >&5
+$as_echo "$gl_cv_next_stdio_h" >&6; }
+     fi
+     NEXT_STDIO_H=$gl_cv_next_stdio_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'stdio.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_stdio_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_STDIO_H=$gl_next_as_first_directive
+
+
+
+
+
+      GNULIB_FSCANF=1
+  GNULIB_SCANF=1
+  GNULIB_FGETC=1
+  GNULIB_GETC=1
+  GNULIB_GETCHAR=1
+  GNULIB_FGETS=1
+  GNULIB_GETS=1
+  GNULIB_FREAD=1
+
+
+      GNULIB_FPRINTF=1
+  GNULIB_PRINTF=1
+  GNULIB_VFPRINTF=1
+  GNULIB_VPRINTF=1
+  GNULIB_FPUTC=1
+  GNULIB_PUTC=1
+  GNULIB_PUTCHAR=1
+  GNULIB_FPUTS=1
+  GNULIB_PUTS=1
+  GNULIB_FWRITE=1
+
+
+
+
+    for gl_func in dprintf fpurge fseeko ftello getdelim getline popen renameat     snprintf tmpfile vdprintf vsnprintf; do
+    as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5
+$as_echo_n "checking whether $gl_func is declared without a macro... " >&6; }
+if eval \${$as_gl_Symbol+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+
+int
+main ()
+{
+#undef $gl_func
+  (void) $gl_func;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$as_gl_Symbol=yes"
+else
+  eval "$as_gl_Symbol=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$as_gl_Symbol
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+     if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1
+_ACEOF
+
+                     eval ac_cv_have_decl_$gl_func=yes
+fi
+      done
+
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_stdlib_h='<'stdlib.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <stdlib.h>" >&5
+$as_echo_n "checking absolute name of <stdlib.h>... " >&6; }
+if ${gl_cv_next_stdlib_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+                                                                                                                        case "$host_os" in
+                 aix*) gl_absname_cpp="$ac_cpp -C" ;;
+                 *)    gl_absname_cpp="$ac_cpp" ;;
+               esac
+                                                            gl_cv_next_stdlib_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+                  sed -n '\#/stdlib.h#{
+                    s#.*"\(.*/stdlib.h\)".*#\1#
+                    s#^/[^/]#//&#
+                    p
+                    q
+                  }'`'"'
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stdlib_h" >&5
+$as_echo "$gl_cv_next_stdlib_h" >&6; }
+     fi
+     NEXT_STDLIB_H=$gl_cv_next_stdlib_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'stdlib.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_stdlib_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_STDLIB_H=$gl_next_as_first_directive
+
+
+
+
+
+
+    for gl_func in _Exit atoll canonicalize_file_name getloadavg getsubopt grantpt mkdtemp     mkostemp mkostemps mkstemp mkstemps ptsname random_r initstat_r srandom_r     setstate_r realpath rpmatch setenv strtod strtoll strtoull unlockpt     unsetenv; do
+    as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5
+$as_echo_n "checking whether $gl_func is declared without a macro... " >&6; }
+if eval \${$as_gl_Symbol+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#if HAVE_SYS_LOADAVG_H
+# include <sys/loadavg.h>
+#endif
+#if HAVE_RANDOM_H
+# include <random.h>
+#endif
+
+int
+main ()
+{
+#undef $gl_func
+  (void) $gl_func;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$as_gl_Symbol=yes"
+else
+  eval "$as_gl_Symbol=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$as_gl_Symbol
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+     if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1
+_ACEOF
+
+                     eval ac_cv_have_decl_$gl_func=yes
+fi
+      done
+
+
+
+
+
+
+  if test $ac_cv_func_strdup = yes; then
+    if test $gl_cv_func_malloc_posix != yes; then
+      REPLACE_STRDUP=1
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS strdup.$ac_objext"
+
+      :
+    fi
+  else
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS strdup.$ac_objext"
+
+    :
+  fi
+
+  if test $ac_cv_have_decl_strdup = no; then
+    HAVE_DECL_STRDUP=0
+  fi
+
+
+
+
+  GNULIB_STRDUP=1
+
+
+
+$as_echo "#define GNULIB_TEST_STRDUP 1" >>confdefs.h
+
+
+
+
+
+
+  if test -z "$ERRNO_H"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working strerror function" >&5
+$as_echo_n "checking for working strerror function... " >&6; }
+if ${gl_cv_func_working_strerror+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+           gl_cv_func_working_strerror=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+             #include <errno.h>
+
+int
+main ()
+{
+int result = 0;
+             if (!*strerror (-2)) result |= 1;
+             errno = 0;
+             if (!*strerror (0)) result |= 2;
+             if (errno) result |= 4;
+             return result;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_working_strerror=yes
+else
+  gl_cv_func_working_strerror=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_working_strerror" >&5
+$as_echo "$gl_cv_func_working_strerror" >&6; }
+    if test $gl_cv_func_working_strerror = no; then
+                  REPLACE_STRERROR=1
+    fi
+  else
+            REPLACE_STRERROR=1
+  fi
+  if test $REPLACE_STRERROR = 1; then
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS strerror.$ac_objext"
+
+
+  ac_fn_c_check_decl "$LINENO" "strerror" "ac_cv_have_decl_strerror" "$ac_includes_default"
+if test "x$ac_cv_have_decl_strerror" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRERROR $ac_have_decl
+_ACEOF
+
+
+  if test $ac_cv_header_sys_socket_h != yes; then
+                    for ac_header in winsock2.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "winsock2.h" "ac_cv_header_winsock2_h" "$ac_includes_default"
+if test "x$ac_cv_header_winsock2_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_WINSOCK2_H 1
+_ACEOF
+
+fi
+
+done
+
+  fi
+
+  fi
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define GNULIB_STRERROR 1
+_ACEOF
+
+
+
+
+
+  GNULIB_STRERROR=1
+
+
+
+$as_echo "#define GNULIB_TEST_STRERROR 1" >>confdefs.h
+
+
+
+
+
+
+
+
+
+
+  if test $ac_cv_have_decl_strerror_r = no; then
+    HAVE_DECL_STRERROR_R=0
+  fi
+
+  for ac_func in strerror_r
+do :
+  ac_fn_c_check_func "$LINENO" "strerror_r" "ac_cv_func_strerror_r"
+if test "x$ac_cv_func_strerror_r" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STRERROR_R 1
+_ACEOF
+
+fi
+done
+
+  if test $ac_cv_func_strerror_r = yes; then
+    if test -z "$ERRNO_H"; then
+                        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strerror_r with POSIX signature" >&5
+$as_echo_n "checking for strerror_r with POSIX signature... " >&6; }
+if ${gl_cv_func_strerror_r_posix_signature+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+                int strerror_r (int, char *, size_t);
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_func_strerror_r_posix_signature=yes
+else
+  gl_cv_func_strerror_r_posix_signature=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_strerror_r_posix_signature" >&5
+$as_echo "$gl_cv_func_strerror_r_posix_signature" >&6; }
+      if test $gl_cv_func_strerror_r_posix_signature = yes; then
+                                                { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether strerror_r works" >&5
+$as_echo_n "checking whether strerror_r works... " >&6; }
+if ${gl_cv_func_strerror_r_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+
+              case "$host_os" in
+                       # Guess no on AIX.
+                aix*)  gl_cv_func_strerror_r_works="guessing no";;
+                       # Guess no on HP-UX.
+                hpux*) gl_cv_func_strerror_r_works="guessing no";;
+                       # Guess no on FreeBSD.
+                freebsd*)  gl_cv_func_strerror_r_works="guessing no";;
+                       # Guess yes otherwise.
+                *)     gl_cv_func_strerror_r_works="guessing yes";;
+              esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <errno.h>
+                  #include <string.h>
+
+int
+main ()
+{
+int result = 0;
+                  char buf[79];
+                  if (strerror_r (EACCES, buf, 0) < 0)
+                    result |= 1;
+                  errno = 0;
+                  if (strerror_r (EACCES, buf, sizeof buf) != 0)
+                    result |= 2;
+                  if (strerror_r (0, buf, sizeof buf) != 0)
+                    result |= 4;
+                  if (errno)
+                    result |= 8;
+                  errno = 0;
+                  if (strerror_r (-3, buf, sizeof buf) != 0)
+                    result |= 0x10;
+                  if (errno)
+                    result |= 0x20;
+                  return result;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_strerror_r_works=yes
+else
+  gl_cv_func_strerror_r_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_strerror_r_works" >&5
+$as_echo "$gl_cv_func_strerror_r_works" >&6; }
+        case "$gl_cv_func_strerror_r_works" in
+          *no) REPLACE_STRERROR_R=1 ;;
+        esac
+      else
+                REPLACE_STRERROR_R=1
+                for ac_func in __xpg_strerror_r
+do :
+  ac_fn_c_check_func "$LINENO" "__xpg_strerror_r" "ac_cv_func___xpg_strerror_r"
+if test "x$ac_cv_func___xpg_strerror_r" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE___XPG_STRERROR_R 1
+_ACEOF
+
+fi
+done
+
+      fi
+    else
+                  REPLACE_STRERROR_R=1
+    fi
+  fi
+
+if test $HAVE_DECL_STRERROR_R = 0 || test $REPLACE_STRERROR_R = 1; then
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS strerror_r.$ac_objext"
+
+
+
+  :
+
+fi
+
+
+
+  GNULIB_STRERROR_R=1
+
+
+
+$as_echo "#define GNULIB_TEST_STRERROR_R 1" >>confdefs.h
+
+
+
+
+
+
+
+
+
+
+
+
+  if test $ac_cv_have_decl_strndup = no; then
+    HAVE_DECL_STRNDUP=0
+  fi
+
+  if test $ac_cv_func_strndup = yes; then
+    # AIX 4.3.3, AIX 5.1 have a function that fails to add the terminating '\0'.
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working strndup" >&5
+$as_echo_n "checking for working strndup... " >&6; }
+if ${gl_cv_func_strndup_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+
+          case $host_os in
+            aix | aix[3-6]*) gl_cv_func_strndup_works="guessing no";;
+            *)               gl_cv_func_strndup_works="guessing yes";;
+          esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+         #include <string.h>
+                           #include <stdlib.h>
+int
+main ()
+{
+
+#ifndef HAVE_DECL_STRNDUP
+  extern char *strndup (const char *, size_t);
+#endif
+  char *s;
+  s = strndup ("some longer string", 15);
+  free (s);
+  s = strndup ("shorter string", 13);
+  return s[13] != '\0';
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_strndup_works=yes
+else
+  gl_cv_func_strndup_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_strndup_works" >&5
+$as_echo "$gl_cv_func_strndup_works" >&6; }
+    case $gl_cv_func_strndup_works in
+      *no)
+        REPLACE_STRNDUP=1
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS strndup.$ac_objext"
+
+        ;;
+    esac
+  else
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS strndup.$ac_objext"
+
+  fi
+
+
+
+
+  GNULIB_STRNDUP=1
+
+
+
+$as_echo "#define GNULIB_TEST_STRNDUP 1" >>confdefs.h
+
+
+
+
+
+
+
+
+
+  if test $ac_cv_have_decl_strnlen = no; then
+    HAVE_DECL_STRNLEN=0
+  else
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working strnlen" >&5
+$as_echo_n "checking for working strnlen... " >&6; }
+if ${ac_cv_func_strnlen_working+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  # Guess no on AIX systems, yes otherwise.
+               case "$host_os" in
+                 aix*) ac_cv_func_strnlen_working=no;;
+                 *)    ac_cv_func_strnlen_working=yes;;
+               esac
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+
+#define S "foobar"
+#define S_LEN (sizeof S - 1)
+
+  /* At least one implementation is buggy: that of AIX 4.3 would
+     give strnlen (S, 1) == 3.  */
+
+  int i;
+  for (i = 0; i < S_LEN + 1; ++i)
+    {
+      int expected = i <= S_LEN ? i : S_LEN;
+      if (strnlen (S, i) != expected)
+       return 1;
+    }
+  return 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_func_strnlen_working=yes
+else
+  ac_cv_func_strnlen_working=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strnlen_working" >&5
+$as_echo "$ac_cv_func_strnlen_working" >&6; }
+test $ac_cv_func_strnlen_working = no &&
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS strnlen.$ac_objext"
+
+
+        if test $ac_cv_func_strnlen_working = no; then
+      REPLACE_STRNLEN=1
+    fi
+  fi
+  if test $HAVE_DECL_STRNLEN = 0 || test $REPLACE_STRNLEN = 1; then
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS strnlen.$ac_objext"
+
+    :
+  fi
+
+
+
+
+  GNULIB_STRNLEN=1
+
+
+
+$as_echo "#define GNULIB_TEST_STRNLEN 1" >>confdefs.h
+
+
+
+
+
+
+  if test "$ac_cv_type_long_long_int" = yes; then
+
+
+
+
+
+
+
+
+  for ac_func in strtoll
+do :
+  ac_fn_c_check_func "$LINENO" "strtoll" "ac_cv_func_strtoll"
+if test "x$ac_cv_func_strtoll" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STRTOLL 1
+_ACEOF
+
+else
+
+    gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+
+fi
+done
+
+
+    if test $ac_cv_func_strtoll = no; then
+      HAVE_STRTOLL=0
+
+  :
+
+    fi
+  fi
+
+
+
+
+  GNULIB_STRTOLL=1
+
+
+
+$as_echo "#define GNULIB_TEST_STRTOLL 1" >>confdefs.h
+
+
+
+
+
+
+  if test "$ac_cv_type_unsigned_long_long_int" = yes; then
+
+
+
+
+
+
+
+
+  for ac_func in strtoull
+do :
+  ac_fn_c_check_func "$LINENO" "strtoull" "ac_cv_func_strtoull"
+if test "x$ac_cv_func_strtoull" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STRTOULL 1
+_ACEOF
+
+else
+
+    gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+
+fi
+done
+
+
+    if test $ac_cv_func_strtoull = no; then
+      HAVE_STRTOULL=0
+
+  :
+
+    fi
+  fi
+
+
+
+
+  GNULIB_STRTOULL=1
+
+
+
+$as_echo "#define GNULIB_TEST_STRTOULL 1" >>confdefs.h
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_sys_stat_h='<'sys/stat.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <sys/stat.h>" >&5
+$as_echo_n "checking absolute name of <sys/stat.h>... " >&6; }
+if ${gl_cv_next_sys_stat_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+             if test $ac_cv_header_sys_stat_h = yes; then
+
+
+               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/stat.h>
+
+_ACEOF
+                                                                                                                        case "$host_os" in
+                 aix*) gl_absname_cpp="$ac_cpp -C" ;;
+                 *)    gl_absname_cpp="$ac_cpp" ;;
+               esac
+                                                            gl_cv_next_sys_stat_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+                  sed -n '\#/sys/stat.h#{
+                    s#.*"\(.*/sys/stat.h\)".*#\1#
+                    s#^/[^/]#//&#
+                    p
+                    q
+                  }'`'"'
+          else
+               gl_cv_next_sys_stat_h='<'sys/stat.h'>'
+             fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_sys_stat_h" >&5
+$as_echo "$gl_cv_next_sys_stat_h" >&6; }
+     fi
+     NEXT_SYS_STAT_H=$gl_cv_next_sys_stat_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'sys/stat.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_sys_stat_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H=$gl_next_as_first_directive
+
+
+
+
+
+      ac_fn_c_check_type "$LINENO" "nlink_t" "ac_cv_type_nlink_t" "#include <sys/types.h>
+     #include <sys/stat.h>
+"
+if test "x$ac_cv_type_nlink_t" = xyes; then :
+
+else
+
+$as_echo "#define nlink_t int" >>confdefs.h
+
+fi
+
+
+
+    for gl_func in fchmodat fstatat futimens lchmod lstat mkdirat mkfifo mkfifoat     mknod mknodat stat utimensat; do
+    as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5
+$as_echo_n "checking whether $gl_func is declared without a macro... " >&6; }
+if eval \${$as_gl_Symbol+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/stat.h>
+
+int
+main ()
+{
+#undef $gl_func
+  (void) $gl_func;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$as_gl_Symbol=yes"
+else
+  eval "$as_gl_Symbol=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$as_gl_Symbol
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+     if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1
+_ACEOF
+
+                     eval ac_cv_have_decl_$gl_func=yes
+fi
+      done
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS tempname.$ac_objext"
+
+
+  :
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_unistd_h='<'unistd.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <unistd.h>" >&5
+$as_echo_n "checking absolute name of <unistd.h>... " >&6; }
+if ${gl_cv_next_unistd_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+             if test $ac_cv_header_unistd_h = yes; then
+
+
+               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <unistd.h>
+
+_ACEOF
+                                                                                                                        case "$host_os" in
+                 aix*) gl_absname_cpp="$ac_cpp -C" ;;
+                 *)    gl_absname_cpp="$ac_cpp" ;;
+               esac
+                                                            gl_cv_next_unistd_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+                  sed -n '\#/unistd.h#{
+                    s#.*"\(.*/unistd.h\)".*#\1#
+                    s#^/[^/]#//&#
+                    p
+                    q
+                  }'`'"'
+          else
+               gl_cv_next_unistd_h='<'unistd.h'>'
+             fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_unistd_h" >&5
+$as_echo "$gl_cv_next_unistd_h" >&6; }
+     fi
+     NEXT_UNISTD_H=$gl_cv_next_unistd_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'unistd.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_unistd_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_UNISTD_H=$gl_next_as_first_directive
+
+
+
+
+  if test $ac_cv_header_unistd_h = yes; then
+    HAVE_UNISTD_H=1
+  else
+    HAVE_UNISTD_H=0
+  fi
+
+
+
+    for gl_func in chown dup2 dup3 environ euidaccess faccessat fchdir fchownat     fsync ftruncate getcwd getdomainname getdtablesize getgroups     gethostname getlogin getlogin_r getpagesize getusershell setusershell     endusershell group_member lchown link linkat lseek pipe pipe2 pread pwrite     readlink readlinkat rmdir sleep symlink symlinkat ttyname_r unlink unlinkat     usleep; do
+    as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5
+$as_echo_n "checking whether $gl_func is declared without a macro... " >&6; }
+if eval \${$as_gl_Symbol+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <unistd.h>
+/* Some systems declare various items in the wrong headers.  */
+#if !(defined __GLIBC__ && !defined __UCLIBC__)
+# include <fcntl.h>
+# include <stdio.h>
+# include <stdlib.h>
+# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+#  include <io.h>
+# endif
+#endif
+
+int
+main ()
+{
+#undef $gl_func
+  (void) $gl_func;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$as_gl_Symbol=yes"
+else
+  eval "$as_gl_Symbol=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$as_gl_Symbol
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+     if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1
+_ACEOF
+
+                     eval ac_cv_have_decl_$gl_func=yes
+fi
+      done
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether unlink honors trailing slashes" >&5
+$as_echo_n "checking whether unlink honors trailing slashes... " >&6; }
+if ${gl_cv_func_unlink_honors_slashes+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  touch conftest.file
+     # Assume that if we have lstat, we can also check symlinks.
+     if test $ac_cv_func_lstat = yes; then
+       ln -s conftest.file conftest.lnk
+     fi
+     if test "$cross_compiling" = yes; then :
+  gl_cv_func_unlink_honors_slashes="guessing no"
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <unistd.h>
+           #include <errno.h>
+
+int
+main ()
+{
+int result = 0;
+           if (!unlink ("conftest.file/"))
+             result |= 1;
+           else if (errno != ENOTDIR)
+             result |= 2;
+#if HAVE_LSTAT
+           if (!unlink ("conftest.lnk/"))
+             result |= 4;
+           else if (errno != ENOTDIR)
+             result |= 8;
+#endif
+           return result;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_unlink_honors_slashes=yes
+else
+  gl_cv_func_unlink_honors_slashes=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+     rm -f conftest.file conftest.lnk
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_unlink_honors_slashes" >&5
+$as_echo "$gl_cv_func_unlink_honors_slashes" >&6; }
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether unlink of a parent directory fails as it should" >&5
+$as_echo_n "checking whether unlink of a parent directory fails as it should... " >&6; }
+if ${gl_cv_func_unlink_parent_fails+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case "$host_os" in
+       darwin*)
+                                                      if {
+              # Use the mktemp program if available. If not available, hide the error
+              # message.
+              tmp=`(umask 077 && mktemp -d /tmp/gtXXXXXX) 2>/dev/null` &&
+              test -n "$tmp" && test -d "$tmp"
+            } ||
+            {
+              # Use a simple mkdir command. It is guaranteed to fail if the directory
+              # already exists.  $RANDOM is bash specific and expands to empty in shells
+              # other than bash, ksh and zsh.  Its use does not increase security;
+              # rather, it minimizes the probability of failure in a very cluttered /tmp
+              # directory.
+              tmp=/tmp/gt$$-$RANDOM
+              (umask 077 && mkdir "$tmp")
+            }; then
+           mkdir "$tmp/subdir"
+           GL_SUBDIR_FOR_UNLINK="$tmp/subdir"
+           export GL_SUBDIR_FOR_UNLINK
+           if test "$cross_compiling" = yes; then :
+  gl_cv_func_unlink_parent_fails="guessing no"
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+                #include <stdlib.h>
+                #include <unistd.h>
+                int main ()
+                {
+                  int result = 0;
+                  if (chdir (getenv ("GL_SUBDIR_FOR_UNLINK")) != 0)
+                    result |= 1;
+                  else if (unlink ("..") == 0)
+                    result |= 2;
+                  return result;
+                }
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_unlink_parent_fails=yes
+else
+  gl_cv_func_unlink_parent_fails=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+           unset GL_SUBDIR_FOR_UNLINK
+           rm -rf "$tmp"
+         else
+           gl_cv_func_unlink_parent_fails="guessing no"
+         fi
+         ;;
+       *)
+         gl_cv_func_unlink_parent_fails="guessing yes"
+         ;;
+     esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_unlink_parent_fails" >&5
+$as_echo "$gl_cv_func_unlink_parent_fails" >&6; }
+  case "$gl_cv_func_unlink_parent_fails" in
+    *no)
+
+$as_echo "#define UNLINK_PARENT_BUG 1" >>confdefs.h
+
+      ;;
+  esac
+  if test "$gl_cv_func_unlink_honors_slashes" != yes \
+     || { case "$gl_cv_func_unlink_parent_fails" in
+            *yes) false;;
+            *no) true;;
+          esac
+        }; then
+    REPLACE_UNLINK=1
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS unlink.$ac_objext"
+
+  fi
+
+
+
+
+  GNULIB_UNLINK=1
+
+
+
+$as_echo "#define GNULIB_TEST_UNLINK 1" >>confdefs.h
+
+
+
+
+
+
+
+  ac_fn_c_check_type "$LINENO" "useconds_t" "ac_cv_type_useconds_t" "$ac_includes_default"
+if test "x$ac_cv_type_useconds_t" = xyes; then :
+
+else
+
+$as_echo "#define useconds_t unsigned int" >>confdefs.h
+
+fi
+
+  if test $ac_cv_func_usleep = no; then
+    HAVE_USLEEP=0
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS usleep.$ac_objext"
+
+  else
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether usleep allows large arguments" >&5
+$as_echo_n "checking whether usleep allows large arguments... " >&6; }
+if ${gl_cv_func_usleep_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  gl_cv_func_usleep_works="guessing no"
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <unistd.h>
+
+int
+main ()
+{
+return !!usleep (1000000);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_usleep_works=yes
+else
+  gl_cv_func_usleep_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_usleep_works" >&5
+$as_echo "$gl_cv_func_usleep_works" >&6; }
+    if test "$gl_cv_func_usleep_works" != yes; then
+      REPLACE_USLEEP=1
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS usleep.$ac_objext"
+
+    fi
+  fi
+
+
+
+
+  GNULIB_USLEEP=1
+
+
+
+$as_echo "#define GNULIB_TEST_USLEEP 1" >>confdefs.h
+
+
+
+
+# Check whether --with-packager was given.
+if test "${with_packager+set}" = set; then :
+  withval=$with_packager;       case $withval in
+        yes|no) ;;
+        *)
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_PACKAGER "$withval"
+_ACEOF
+ ;;
+      esac
+
+fi
+
+
+
+# Check whether --with-packager-version was given.
+if test "${with_packager_version+set}" = set; then :
+  withval=$with_packager_version;       case $withval in
+        yes|no) ;;
+        *)
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_PACKAGER_VERSION "$withval"
+_ACEOF
+ ;;
+      esac
+
+fi
+
+
+
+# Check whether --with-packager-bug-reports was given.
+if test "${with_packager_bug_reports+set}" = set; then :
+  withval=$with_packager_bug_reports;       case $withval in
+        yes|no) ;;
+        *)
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_PACKAGER_BUG_REPORTS "$withval"
+_ACEOF
+ ;;
+      esac
+
+fi
+
+
+  if test "X$with_packager" = "X" && \
+     test "X$with_packager_version$with_packager_bug_reports" != "X"
+  then
+    as_fn_error $? "The --with-packager-{bug-reports,version} options require --with-packager" "$LINENO" 5
+  fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_wchar_h='<'wchar.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <wchar.h>" >&5
+$as_echo_n "checking absolute name of <wchar.h>... " >&6; }
+if ${gl_cv_next_wchar_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+             if test $ac_cv_header_wchar_h = yes; then
+
+
+               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <wchar.h>
+
+_ACEOF
+                                                                                                                        case "$host_os" in
+                 aix*) gl_absname_cpp="$ac_cpp -C" ;;
+                 *)    gl_absname_cpp="$ac_cpp" ;;
+               esac
+                                                            gl_cv_next_wchar_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+                  sed -n '\#/wchar.h#{
+                    s#.*"\(.*/wchar.h\)".*#\1#
+                    s#^/[^/]#//&#
+                    p
+                    q
+                  }'`'"'
+          else
+               gl_cv_next_wchar_h='<'wchar.h'>'
+             fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_wchar_h" >&5
+$as_echo "$gl_cv_next_wchar_h" >&6; }
+     fi
+     NEXT_WCHAR_H=$gl_cv_next_wchar_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'wchar.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_wchar_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_WCHAR_H=$gl_next_as_first_directive
+
+
+
+
+  if test $ac_cv_header_wchar_h = yes; then
+    HAVE_WCHAR_H=1
+  else
+    HAVE_WCHAR_H=0
+  fi
+
+
+
+
+
+  if test $gt_cv_c_wint_t = yes; then
+    HAVE_WINT_T=1
+  else
+    HAVE_WINT_T=0
+  fi
+
+
+
+    for gl_func in btowc wctob mbsinit mbrtowc mbrlen mbsrtowcs mbsnrtowcs wcrtomb      wcsrtombs wcsnrtombs wcwidth wmemchr wmemcmp wmemcpy wmemmove wmemset      wcslen wcsnlen wcscpy wcpcpy wcsncpy wcpncpy wcscat wcsncat wcscmp      wcsncmp wcscasecmp wcsncasecmp wcscoll wcsxfrm wcsdup wcschr wcsrchr      wcscspn wcsspn wcspbrk wcsstr wcstok wcswidth     ; do
+    as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5
+$as_echo_n "checking whether $gl_func is declared without a macro... " >&6; }
+if eval \${$as_gl_Symbol+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#if !(defined __GLIBC__ && !defined __UCLIBC__)
+# include <stddef.h>
+# include <stdio.h>
+# include <time.h>
+#endif
+#include <wchar.h>
+
+int
+main ()
+{
+#undef $gl_func
+  (void) $gl_func;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$as_gl_Symbol=yes"
+else
+  eval "$as_gl_Symbol=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$as_gl_Symbol
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+     if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1
+_ACEOF
+
+                     eval ac_cv_have_decl_$gl_func=yes
+fi
+      done
+
+
+
+
+
+
+
+
+
+
+
+
+  if test $ac_cv_func_mbsinit = yes && test $ac_cv_func_mbrtowc = yes; then
+
+
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc handles incomplete characters" >&5
+$as_echo_n "checking whether mbrtowc handles incomplete characters... " >&6; }
+if ${gl_cv_func_mbrtowc_incomplete_state+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+                  case "$host_os" in
+                     # Guess no on AIX and OSF/1.
+        aix* | osf*) gl_cv_func_mbrtowc_incomplete_state="guessing no" ;;
+                     # Guess yes otherwise.
+        *)           gl_cv_func_mbrtowc_incomplete_state="guessing yes" ;;
+      esac
+      if test $LOCALE_JA != none; then
+        if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int main ()
+{
+  if (setlocale (LC_ALL, "$LOCALE_JA") != NULL)
+    {
+      const char input[] = "B\217\253\344\217\251\316er"; /* "Büßer" */
+      mbstate_t state;
+      wchar_t wc;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2))
+        if (mbsinit (&state))
+          return 1;
+    }
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_mbrtowc_incomplete_state=yes
+else
+  gl_cv_func_mbrtowc_incomplete_state=no
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_incomplete_state" >&5
+$as_echo "$gl_cv_func_mbrtowc_incomplete_state" >&6; }
+
+
+
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc works as well as mbtowc" >&5
+$as_echo_n "checking whether mbrtowc works as well as mbtowc... " >&6; }
+if ${gl_cv_func_mbrtowc_sanitycheck+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+                  case "$host_os" in
+                    # Guess no on Solaris 8.
+        solaris2.8) gl_cv_func_mbrtowc_sanitycheck="guessing no" ;;
+                    # Guess yes otherwise.
+        *)          gl_cv_func_mbrtowc_sanitycheck="guessing yes" ;;
+      esac
+      if test $LOCALE_ZH_CN != none; then
+        if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <stdlib.h>
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int main ()
+{
+  /* This fails on Solaris 8:
+     mbrtowc returns 2, and sets wc to 0x00F0.
+     mbtowc returns 4 (correct) and sets wc to 0x5EDC.  */
+  if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL)
+    {
+      char input[] = "B\250\271\201\060\211\070er"; /* "Büßer" */
+      mbstate_t state;
+      wchar_t wc;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      if (mbrtowc (&wc, input + 3, 6, &state) != 4
+          && mbtowc (&wc, input + 3, 6) == 4)
+        return 1;
+    }
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_mbrtowc_sanitycheck=yes
+else
+  gl_cv_func_mbrtowc_sanitycheck=no
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_sanitycheck" >&5
+$as_echo "$gl_cv_func_mbrtowc_sanitycheck" >&6; }
+
+    REPLACE_MBSTATE_T=0
+    case "$gl_cv_func_mbrtowc_incomplete_state" in
+      *yes) ;;
+      *) REPLACE_MBSTATE_T=1 ;;
+    esac
+    case "$gl_cv_func_mbrtowc_sanitycheck" in
+      *yes) ;;
+      *) REPLACE_MBSTATE_T=1 ;;
+    esac
+  else
+    REPLACE_MBSTATE_T=1
+  fi
+
+
+
+  if test $ac_cv_func_wcrtomb = no; then
+    HAVE_WCRTOMB=0
+  else
+    if test $REPLACE_MBSTATE_T = 1; then
+      REPLACE_WCRTOMB=1
+    else
+
+
+
+
+
+             { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether wcrtomb return value is correct" >&5
+$as_echo_n "checking whether wcrtomb return value is correct... " >&6; }
+if ${gl_cv_func_wcrtomb_retval+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+                              case "$host_os" in
+                                     # Guess no on AIX 4, OSF/1 and Solaris.
+            aix4* | osf* | solaris*) gl_cv_func_wcrtomb_retval="guessing no" ;;
+                                     # Guess yes otherwise.
+            *)                       gl_cv_func_wcrtomb_retval="guessing yes" ;;
+          esac
+          if test $LOCALE_FR != none || test $LOCALE_FR_UTF8 != none || test $LOCALE_JA != none || test $LOCALE_ZH_CN != none; then
+            if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int main ()
+{
+  int result = 0;
+  if (setlocale (LC_ALL, "$LOCALE_FR") != NULL)
+    {
+      if (wcrtomb (NULL, 0, NULL) != 1)
+        result |= 1;
+    }
+  if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+    {
+      if (wcrtomb (NULL, 0, NULL) != 1)
+        result |= 2;
+    }
+  if (setlocale (LC_ALL, "$LOCALE_JA") != NULL)
+    {
+      if (wcrtomb (NULL, 0, NULL) != 1)
+        result |= 4;
+    }
+  if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL)
+    {
+      if (wcrtomb (NULL, 0, NULL) != 1)
+        result |= 8;
+    }
+  return result;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_wcrtomb_retval=yes
+else
+  gl_cv_func_wcrtomb_retval=no
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_wcrtomb_retval" >&5
+$as_echo "$gl_cv_func_wcrtomb_retval" >&6; }
+      case "$gl_cv_func_wcrtomb_retval" in
+        *yes) ;;
+        *) REPLACE_WCRTOMB=1 ;;
+      esac
+    fi
+  fi
+  if test $HAVE_WCRTOMB = 0 || test $REPLACE_WCRTOMB = 1; then
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS wcrtomb.$ac_objext"
+
+
+  :
+
+  fi
+
+
+
+
+  GNULIB_WCRTOMB=1
+
+
+
+$as_echo "#define GNULIB_TEST_WCRTOMB 1" >>confdefs.h
+
+
+
+
+
+
+
+
+  if test $ac_cv_func_iswcntrl = yes; then
+    HAVE_ISWCNTRL=1
+  else
+    HAVE_ISWCNTRL=0
+  fi
+
+
+
+
+
+  if test $gt_cv_c_wint_t = yes; then
+    HAVE_WINT_T=1
+  else
+    HAVE_WINT_T=0
+  fi
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_wctype_h='<'wctype.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <wctype.h>" >&5
+$as_echo_n "checking absolute name of <wctype.h>... " >&6; }
+if ${gl_cv_next_wctype_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+             if test $ac_cv_header_wctype_h = yes; then
+
+
+               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <wctype.h>
+
+_ACEOF
+                                                                                                                        case "$host_os" in
+                 aix*) gl_absname_cpp="$ac_cpp -C" ;;
+                 *)    gl_absname_cpp="$ac_cpp" ;;
+               esac
+                                                            gl_cv_next_wctype_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+                  sed -n '\#/wctype.h#{
+                    s#.*"\(.*/wctype.h\)".*#\1#
+                    s#^/[^/]#//&#
+                    p
+                    q
+                  }'`'"'
+          else
+               gl_cv_next_wctype_h='<'wctype.h'>'
+             fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_wctype_h" >&5
+$as_echo "$gl_cv_next_wctype_h" >&6; }
+     fi
+     NEXT_WCTYPE_H=$gl_cv_next_wctype_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'wctype.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_wctype_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H=$gl_next_as_first_directive
+
+
+
+
+  if test $ac_cv_header_wctype_h = yes; then
+    if test $ac_cv_func_iswcntrl = yes; then
+                  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iswcntrl works" >&5
+$as_echo_n "checking whether iswcntrl works... " >&6; }
+if ${gl_cv_func_iswcntrl_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+          if test "$cross_compiling" = yes; then :
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+                          #if __GNU_LIBRARY__ == 1
+                          Linux libc5 i18n is broken.
+                          #endif
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_func_iswcntrl_works=yes
+else
+  gl_cv_func_iswcntrl_works=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+               /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be
+                  included before <wchar.h>.
+                  BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h>
+                  must be included before <wchar.h>.  */
+               #include <stddef.h>
+               #include <stdio.h>
+               #include <time.h>
+               #include <wchar.h>
+               #include <wctype.h>
+               int main () { return iswprint ('x') == 0; }
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_iswcntrl_works=yes
+else
+  gl_cv_func_iswcntrl_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_iswcntrl_works" >&5
+$as_echo "$gl_cv_func_iswcntrl_works" >&6; }
+    fi
+    HAVE_WCTYPE_H=1
+  else
+    HAVE_WCTYPE_H=0
+  fi
+
+
+  if test "$gl_cv_func_iswcntrl_works" = no; then
+    REPLACE_ISWCNTRL=1
+  else
+    REPLACE_ISWCNTRL=0
+  fi
+
+
+  if test $HAVE_ISWCNTRL = 0 || test $REPLACE_ISWCNTRL = 1; then
+        :
+  fi
+
+          { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wctype_t" >&5
+$as_echo_n "checking for wctype_t... " >&6; }
+if ${gl_cv_type_wctype_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be
+               included before <wchar.h>.
+               BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h>
+               must be included before <wchar.h>.  */
+            #include <stddef.h>
+            #include <stdio.h>
+            #include <time.h>
+            #include <wchar.h>
+            #if HAVE_WCTYPE_H
+            # include <wctype.h>
+            #endif
+            wctype_t a;
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_type_wctype_t=yes
+else
+  gl_cv_type_wctype_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_wctype_t" >&5
+$as_echo "$gl_cv_type_wctype_t" >&6; }
+  if test $gl_cv_type_wctype_t = no; then
+    HAVE_WCTYPE_T=0
+  fi
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wctrans_t" >&5
+$as_echo_n "checking for wctrans_t... " >&6; }
+if ${gl_cv_type_wctrans_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be
+               included before <wchar.h>.
+               BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h>
+               must be included before <wchar.h>.  */
+            #include <stddef.h>
+            #include <stdio.h>
+            #include <time.h>
+            #include <wchar.h>
+            #include <wctype.h>
+            wctrans_t a;
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_type_wctrans_t=yes
+else
+  gl_cv_type_wctrans_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_wctrans_t" >&5
+$as_echo "$gl_cv_type_wctrans_t" >&6; }
+  if test $gl_cv_type_wctrans_t = no; then
+    HAVE_WCTRANS_T=0
+  fi
+
+
+    for gl_func in wctype iswctype wctrans towctrans     ; do
+    as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5
+$as_echo_n "checking whether $gl_func is declared without a macro... " >&6; }
+if eval \${$as_gl_Symbol+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#if !(defined __GLIBC__ && !defined __UCLIBC__)
+# include <stddef.h>
+# include <stdio.h>
+# include <time.h>
+# include <wchar.h>
+#endif
+#include <wctype.h>
+
+int
+main ()
+{
+#undef $gl_func
+  (void) $gl_func;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$as_gl_Symbol=yes"
+else
+  eval "$as_gl_Symbol=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$as_gl_Symbol
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+     if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1
+_ACEOF
+
+                     eval ac_cv_have_decl_$gl_func=yes
+fi
+      done
+
+
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS xmalloc.$ac_objext"
+
+
+
+
+  :
+
+
+  :
+
+
+
+
+  :
+
+
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS xstrtol.$ac_objext"
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS xstrtoul.$ac_objext"
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS xstrtol-error.$ac_objext"
+
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS xstrtoll.$ac_objext"
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS xstrtoull.$ac_objext"
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5
+$as_echo_n "checking for long long int... " >&6; }
+if ${ac_cv_type_long_long_int+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_type_long_long_int=yes
+      if test "x${ac_cv_prog_cc_c99-no}" = xno; then
+        ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int
+        if test $ac_cv_type_long_long_int = yes; then
+                                        if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <limits.h>
+                 #ifndef LLONG_MAX
+                 # define HALF \
+                          (1LL << (sizeof (long long int) * CHAR_BIT - 2))
+                 # define LLONG_MAX (HALF - 1 + HALF)
+                 #endif
+int
+main ()
+{
+long long int n = 1;
+                 int i;
+                 for (i = 0; ; i++)
+                   {
+                     long long int m = n << i;
+                     if (m >> i != n)
+                       return 1;
+                     if (LLONG_MAX / 2 < m)
+                       break;
+                   }
+                 return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+  ac_cv_type_long_long_int=no
+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
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5
+$as_echo "$ac_cv_type_long_long_int" >&6; }
+  if test $ac_cv_type_long_long_int = yes; then
+
+$as_echo "#define HAVE_LONG_LONG_INT 1" >>confdefs.h
+
+  fi
+
+test $ac_cv_type_long_long_int = no \
+  && as_fn_error $? "you lack long long support; required by gnulib's xstrtoll module" "$LINENO" 5
+  # End of code from modules
+
+
+
+
+
+
+
+
+
+  gltests_libdeps=
+  gltests_ltlibdeps=
+
+
+
+
+
+
+
+
+
+  gl_source_base='gnulib-tests'
+  gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS
+
+  gl_module_indicator_condition=$gltests_WITNESS
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a traditional french locale" >&5
+$as_echo_n "checking for a traditional french locale... " >&6; }
+if ${gt_cv_locale_fr+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+  /* Check whether the given locale name is recognized by the system.  */
+#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
+  /* On native Win32, setlocale(category, "") looks at the system settings,
+     not at the environment variables.  Also, when an encoding suffix such
+     as ".65001" or ".54936" is speficied, it succeeds but sets the LC_CTYPE
+     category of the locale to "C".  */
+  if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
+      || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
+    return 1;
+#else
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+#endif
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.
+     On MirBSD 10, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "UTF-8".  */
+#if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0
+        || strcmp (cs, "UTF-8") == 0)
+      return 1;
+  }
+#endif
+#ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+  /* Check whether in the abbreviation of the second month, the second
+     character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is only
+     one byte long. This excludes the UTF-8 encoding.  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+  if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1;
+  /* Check whether the decimal separator is a comma.
+     On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+     are nl_langinfo(RADIXCHAR) are both ".".  */
+  if (localeconv () ->decimal_point[0] != ',') return 1;
+  return 0;
+}
+
+_ACEOF
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest$ac_exeext; then
+      case "$host_os" in
+        # Handle native Windows specially, because there setlocale() interprets
+        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "fr" or "fra" as "French" or "French_France.1252",
+        # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
+        # "ja" as "Japanese" or "Japanese_Japan.932",
+        # and similar.
+        mingw*)
+          # Test for the native Win32 locale name.
+          if (LC_ALL=French_France.1252 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr=French_France.1252
+          else
+            # None found.
+            gt_cv_locale_fr=none
+          fi
+          ;;
+        *)
+          # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+          # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+          # configure script would override the LC_ALL setting. Likewise for
+          # LC_CTYPE, which is also set at the beginning of the configure script.
+          # Test for the usual locale name.
+          if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr=fr_FR
+          else
+            # Test for the locale name with explicit encoding suffix.
+            if (LC_ALL=fr_FR.ISO-8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+              gt_cv_locale_fr=fr_FR.ISO-8859-1
+            else
+              # Test for the AIX, OSF/1, FreeBSD, NetBSD, OpenBSD locale name.
+              if (LC_ALL=fr_FR.ISO8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                gt_cv_locale_fr=fr_FR.ISO8859-1
+              else
+                # Test for the HP-UX locale name.
+                if (LC_ALL=fr_FR.iso88591 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                  gt_cv_locale_fr=fr_FR.iso88591
+                else
+                  # Test for the Solaris 7 locale name.
+                  if (LC_ALL=fr LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                    gt_cv_locale_fr=fr
+                  else
+                    # None found.
+                    gt_cv_locale_fr=none
+                  fi
+                fi
+              fi
+            fi
+          fi
+          ;;
+      esac
+    fi
+    rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_fr" >&5
+$as_echo "$gt_cv_locale_fr" >&6; }
+  LOCALE_FR=$gt_cv_locale_fr
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a french Unicode locale" >&5
+$as_echo_n "checking for a french Unicode locale... " >&6; }
+if ${gt_cv_locale_fr_utf8+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+  /* On BeOS and Haiku, locales are not implemented in libc.  Rather, libintl
+     imitates locale dependent behaviour by looking at the environment
+     variables, and all locales use the UTF-8 encoding.  */
+#if !(defined __BEOS__ || defined __HAIKU__)
+  /* Check whether the given locale name is recognized by the system.  */
+# if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
+  /* On native Win32, setlocale(category, "") looks at the system settings,
+     not at the environment variables.  Also, when an encoding suffix such
+     as ".65001" or ".54936" is speficied, it succeeds but sets the LC_CTYPE
+     category of the locale to "C".  */
+  if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
+      || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
+    return 1;
+# else
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+# endif
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.  */
+# if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+      return 1;
+  }
+# endif
+# ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+# endif
+  /* Check whether in the abbreviation of the second month, the second
+     character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is
+     two bytes long, with UTF-8 encoding.  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+  if (strftime (buf, sizeof (buf), "%b", &t) < 4
+      || buf[1] != (char) 0xc3 || buf[2] != (char) 0xa9 || buf[3] != 'v')
+    return 1;
+#endif
+  /* Check whether the decimal separator is a comma.
+     On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+     are nl_langinfo(RADIXCHAR) are both ".".  */
+  if (localeconv () ->decimal_point[0] != ',') return 1;
+  return 0;
+}
+
+_ACEOF
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest$ac_exeext; then
+      case "$host_os" in
+        # Handle native Windows specially, because there setlocale() interprets
+        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "fr" or "fra" as "French" or "French_France.1252",
+        # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
+        # "ja" as "Japanese" or "Japanese_Japan.932",
+        # and similar.
+        mingw*)
+          # Test for the hypothetical native Win32 locale name.
+          if (LC_ALL=French_France.65001 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr_utf8=French_France.65001
+          else
+            # None found.
+            gt_cv_locale_fr_utf8=none
+          fi
+          ;;
+        *)
+          # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+          # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+          # configure script would override the LC_ALL setting. Likewise for
+          # LC_CTYPE, which is also set at the beginning of the configure script.
+          # Test for the usual locale name.
+          if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr_utf8=fr_FR
+          else
+            # Test for the locale name with explicit encoding suffix.
+            if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+              gt_cv_locale_fr_utf8=fr_FR.UTF-8
+            else
+              # Test for the Solaris 7 locale name.
+              if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                gt_cv_locale_fr_utf8=fr.UTF-8
+              else
+                # None found.
+                gt_cv_locale_fr_utf8=none
+              fi
+            fi
+          fi
+          ;;
+      esac
+    fi
+    rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_fr_utf8" >&5
+$as_echo "$gt_cv_locale_fr_utf8" >&6; }
+  LOCALE_FR_UTF8=$gt_cv_locale_fr_utf8
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a traditional french locale" >&5
+$as_echo_n "checking for a traditional french locale... " >&6; }
+if ${gt_cv_locale_fr+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+  /* Check whether the given locale name is recognized by the system.  */
+#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
+  /* On native Win32, setlocale(category, "") looks at the system settings,
+     not at the environment variables.  Also, when an encoding suffix such
+     as ".65001" or ".54936" is speficied, it succeeds but sets the LC_CTYPE
+     category of the locale to "C".  */
+  if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
+      || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
+    return 1;
+#else
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+#endif
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.
+     On MirBSD 10, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "UTF-8".  */
+#if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0
+        || strcmp (cs, "UTF-8") == 0)
+      return 1;
+  }
+#endif
+#ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+  /* Check whether in the abbreviation of the second month, the second
+     character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is only
+     one byte long. This excludes the UTF-8 encoding.  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+  if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1;
+  /* Check whether the decimal separator is a comma.
+     On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+     are nl_langinfo(RADIXCHAR) are both ".".  */
+  if (localeconv () ->decimal_point[0] != ',') return 1;
+  return 0;
+}
+
+_ACEOF
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest$ac_exeext; then
+      case "$host_os" in
+        # Handle native Windows specially, because there setlocale() interprets
+        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "fr" or "fra" as "French" or "French_France.1252",
+        # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
+        # "ja" as "Japanese" or "Japanese_Japan.932",
+        # and similar.
+        mingw*)
+          # Test for the native Win32 locale name.
+          if (LC_ALL=French_France.1252 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr=French_France.1252
+          else
+            # None found.
+            gt_cv_locale_fr=none
+          fi
+          ;;
+        *)
+          # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+          # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+          # configure script would override the LC_ALL setting. Likewise for
+          # LC_CTYPE, which is also set at the beginning of the configure script.
+          # Test for the usual locale name.
+          if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr=fr_FR
+          else
+            # Test for the locale name with explicit encoding suffix.
+            if (LC_ALL=fr_FR.ISO-8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+              gt_cv_locale_fr=fr_FR.ISO-8859-1
+            else
+              # Test for the AIX, OSF/1, FreeBSD, NetBSD, OpenBSD locale name.
+              if (LC_ALL=fr_FR.ISO8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                gt_cv_locale_fr=fr_FR.ISO8859-1
+              else
+                # Test for the HP-UX locale name.
+                if (LC_ALL=fr_FR.iso88591 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                  gt_cv_locale_fr=fr_FR.iso88591
+                else
+                  # Test for the Solaris 7 locale name.
+                  if (LC_ALL=fr LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                    gt_cv_locale_fr=fr
+                  else
+                    # None found.
+                    gt_cv_locale_fr=none
+                  fi
+                fi
+              fi
+            fi
+          fi
+          ;;
+      esac
+    fi
+    rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_fr" >&5
+$as_echo "$gt_cv_locale_fr" >&6; }
+  LOCALE_FR=$gt_cv_locale_fr
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a turkish Unicode locale" >&5
+$as_echo_n "checking for a turkish Unicode locale... " >&6; }
+if ${gt_cv_locale_tr_utf8+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+  /* On BeOS, locales are not implemented in libc.  Rather, libintl
+     imitates locale dependent behaviour by looking at the environment
+     variables, and all locales use the UTF-8 encoding.  But BeOS does not
+     implement the Turkish upper-/lowercase mappings.  Therefore, let this
+     program return 1 on BeOS.  */
+  /* Check whether the given locale name is recognized by the system.  */
+#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
+  /* On native Win32, setlocale(category, "") looks at the system settings,
+     not at the environment variables.  Also, when an encoding suffix such
+     as ".65001" or ".54936" is speficied, it succeeds but sets the LC_CTYPE
+     category of the locale to "C".  */
+  if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
+      || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
+    return 1;
+#else
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+#endif
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the tr_TR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.  */
+#if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+      return 1;
+  }
+#endif
+#ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+  /* Check whether in the abbreviation of the eighth month, the second
+     character (should be U+011F: LATIN SMALL LETTER G WITH BREVE) is
+     two bytes long, with UTF-8 encoding.  */
+  t.tm_year = 1992 - 1900; t.tm_mon = 8 - 1; t.tm_mday = 19;
+  if (strftime (buf, sizeof (buf), "%b", &t) < 4
+      || buf[1] != (char) 0xc4 || buf[2] != (char) 0x9f)
+    return 1;
+  /* Check whether the upper-/lowercase mappings are as expected for
+     Turkish.  */
+  if (towupper ('i') != 0x0130 || towlower (0x0130) != 'i'
+      || towupper(0x0131) != 'I' || towlower ('I') != 0x0131)
+    return 1;
+  return 0;
+}
+
+_ACEOF
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest$ac_exeext; then
+      case "$host_os" in
+        # Handle native Windows specially, because there setlocale() interprets
+        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "fr" or "fra" as "French" or "French_France.1252",
+        # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
+        # "ja" as "Japanese" or "Japanese_Japan.932",
+        # and similar.
+        mingw*)
+          # Test for the hypothetical native Win32 locale name.
+          if (LC_ALL=Turkish_Turkey.65001 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_tr_utf8=Turkish_Turkey.65001
+          else
+            # None found.
+            gt_cv_locale_tr_utf8=none
+          fi
+          ;;
+        *)
+          # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+          # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+          # configure script would override the LC_ALL setting. Likewise for
+          # LC_CTYPE, which is also set at the beginning of the configure script.
+          # Test for the usual locale name.
+          if (LC_ALL=tr_TR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_tr_utf8=tr_TR
+          else
+            # Test for the locale name with explicit encoding suffix.
+            if (LC_ALL=tr_TR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+              gt_cv_locale_tr_utf8=tr_TR.UTF-8
+            else
+              # Test for the Solaris 7 locale name.
+              if (LC_ALL=tr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                gt_cv_locale_tr_utf8=tr.UTF-8
+              else
+                # None found.
+                gt_cv_locale_tr_utf8=none
+              fi
+            fi
+          fi
+          ;;
+      esac
+    else
+      gt_cv_locale_tr_utf8=none
+    fi
+    rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_tr_utf8" >&5
+$as_echo "$gt_cv_locale_tr_utf8" >&6; }
+  LOCALE_TR_UTF8=$gt_cv_locale_tr_utf8
+
+
+
+
+
+
+
+$as_echo "#define HAVE_DUP2 1" >>confdefs.h
+
+
+
+  if test $HAVE_DUP2 = 1; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether dup2 works" >&5
+$as_echo_n "checking whether dup2 works... " >&6; }
+if ${gl_cv_func_dup2_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  case "$host_os" in
+           mingw*) # on this platform, dup2 always returns 0 for success
+             gl_cv_func_dup2_works=no;;
+           cygwin*) # on cygwin 1.5.x, dup2(1,1) returns 0
+             gl_cv_func_dup2_works=no;;
+           linux*) # On linux between 2008-07-27 and 2009-05-11, dup2 of a
+                   # closed fd may yield -EBADF instead of -1 / errno=EBADF.
+             gl_cv_func_dup2_works=no;;
+           freebsd*) # on FreeBSD 6.1, dup2(1,1000000) gives EMFILE, not EBADF.
+             gl_cv_func_dup2_works=no;;
+           haiku*) # on Haiku alpha 2, dup2(1, 1) resets FD_CLOEXEC.
+             gl_cv_func_dup2_works=no;;
+           *) gl_cv_func_dup2_works=yes;;
+         esac
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+         #include <unistd.h>
+#include <fcntl.h>
+#include <errno.h>
+int
+main ()
+{
+int result = 0;
+#if HAVE_FCNTL
+            if (fcntl (1, F_SETFD, FD_CLOEXEC) == -1)
+              result |= 1;
+#endif HAVE_FCNTL
+            if (dup2 (1, 1) == 0)
+              result |= 2;
+#if HAVE_FCNTL
+            if (fcntl (1, F_GETFD) != FD_CLOEXEC)
+              result |= 4;
+#endif
+            close (0);
+            if (dup2 (0, 0) != -1)
+              result |= 8;
+            /* Many gnulib modules require POSIX conformance of EBADF.  */
+            if (dup2 (2, 1000000) == -1 && errno != EBADF)
+              result |= 16;
+            return result;
+
+  ;
+  return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_dup2_works=yes
+else
+  gl_cv_func_dup2_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_dup2_works" >&5
+$as_echo "$gl_cv_func_dup2_works" >&6; }
+    if test "$gl_cv_func_dup2_works" = no; then
+
+
+
+  if test $ac_cv_func_dup2 = yes; then
+    REPLACE_DUP2=1
+  fi
+
+
+
+
+
+
+
+
+  gltests_LIBOBJS="$gltests_LIBOBJS dup2.$ac_objext"
+
+
+    fi
+  fi
+
+
+
+
+  GNULIB_DUP2=$gl_module_indicator_condition
+
+
+
+$as_echo "#define GNULIB_TEST_DUP2 1" >>confdefs.h
+
+
+
+
+
+
+
+  GNULIB_ENVIRON=$gl_module_indicator_condition
+
+
+
+$as_echo "#define GNULIB_TEST_ENVIRON 1" >>confdefs.h
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_fcntl_h='<'fcntl.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <fcntl.h>" >&5
+$as_echo_n "checking absolute name of <fcntl.h>... " >&6; }
+if ${gl_cv_next_fcntl_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <fcntl.h>
+
+_ACEOF
+                                                                                                                        case "$host_os" in
+                 aix*) gl_absname_cpp="$ac_cpp -C" ;;
+                 *)    gl_absname_cpp="$ac_cpp" ;;
+               esac
+                                                            gl_cv_next_fcntl_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+                  sed -n '\#/fcntl.h#{
+                    s#.*"\(.*/fcntl.h\)".*#\1#
+                    s#^/[^/]#//&#
+                    p
+                    q
+                  }'`'"'
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_fcntl_h" >&5
+$as_echo "$gl_cv_next_fcntl_h" >&6; }
+     fi
+     NEXT_FCNTL_H=$gl_cv_next_fcntl_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'fcntl.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_fcntl_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_FCNTL_H=$gl_next_as_first_directive
+
+
+
+
+
+
+    for gl_func in fcntl openat; do
+    as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5
+$as_echo_n "checking whether $gl_func is declared without a macro... " >&6; }
+if eval \${$as_gl_Symbol+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <fcntl.h>
+
+int
+main ()
+{
+#undef $gl_func
+  (void) $gl_func;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$as_gl_Symbol=yes"
+else
+  eval "$as_gl_Symbol=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$as_gl_Symbol
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+     if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1
+_ACEOF
+
+                     eval ac_cv_have_decl_$gl_func=yes
+fi
+      done
+
+
+
+
+
+
+    if test $REPLACE_FTELLO != 0; then
+
+
+
+
+
+
+
+
+  gltests_LIBOBJS="$gltests_LIBOBJS ftell.$ac_objext"
+
+    REPLACE_FTELL=1
+  fi
+
+
+
+
+  GNULIB_FTELL=$gl_module_indicator_condition
+
+
+
+$as_echo "#define GNULIB_TEST_FTELL 1" >>confdefs.h
+
+
+
+
+
+
+
+
+  for ac_func in getpagesize
+do :
+  ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize"
+if test "x$ac_cv_func_getpagesize" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_GETPAGESIZE 1
+_ACEOF
+
+fi
+done
+
+  if test $ac_cv_func_getpagesize = no; then
+    HAVE_GETPAGESIZE=0
+    for ac_header in OS.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "OS.h" "ac_cv_header_OS_h" "$ac_includes_default"
+if test "x$ac_cv_header_OS_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_OS_H 1
+_ACEOF
+
+fi
+
+done
+
+    if test $ac_cv_header_OS_h = yes; then
+      HAVE_OS_H=1
+    fi
+    for ac_header in sys/param.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_param_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SYS_PARAM_H 1
+_ACEOF
+
+fi
+
+done
+
+    if test $ac_cv_header_sys_param_h = yes; then
+      HAVE_SYS_PARAM_H=1
+    fi
+  fi
+  case "$host_os" in
+    mingw*)
+      REPLACE_GETPAGESIZE=1
+
+
+
+
+
+
+
+
+  gltests_LIBOBJS="$gltests_LIBOBJS getpagesize.$ac_objext"
+
+      ;;
+  esac
+      ac_fn_c_check_decl "$LINENO" "getpagesize" "ac_cv_have_decl_getpagesize" "$ac_includes_default"
+if test "x$ac_cv_have_decl_getpagesize" = xyes; then :
+
+else
+  HAVE_DECL_GETPAGESIZE=0
+fi
+
+
+
+
+
+  GNULIB_GETPAGESIZE=$gl_module_indicator_condition
+
+
+
+$as_echo "#define GNULIB_TEST_GETPAGESIZE 1" >>confdefs.h
+
+
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether locale.h conforms to POSIX:2001" >&5
+$as_echo_n "checking whether locale.h conforms to POSIX:2001... " >&6; }
+if ${gl_cv_header_locale_h_posix2001+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <locale.h>
+            int x = LC_MESSAGES;
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_header_locale_h_posix2001=yes
+else
+  gl_cv_header_locale_h_posix2001=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_locale_h_posix2001" >&5
+$as_echo "$gl_cv_header_locale_h_posix2001" >&6; }
+
+
+  if test $ac_cv_header_xlocale_h = yes; then
+    HAVE_XLOCALE_H=1
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether locale.h defines locale_t" >&5
+$as_echo_n "checking whether locale.h defines locale_t... " >&6; }
+if ${gl_cv_header_locale_has_locale_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <locale.h>
+              locale_t x;
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_header_locale_has_locale_t=yes
+else
+  gl_cv_header_locale_has_locale_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_locale_has_locale_t" >&5
+$as_echo "$gl_cv_header_locale_has_locale_t" >&6; }
+    if test $gl_cv_header_locale_has_locale_t = yes; then
+      gl_cv_header_locale_h_needs_xlocale_h=no
+    else
+      gl_cv_header_locale_h_needs_xlocale_h=yes
+    fi
+  else
+    HAVE_XLOCALE_H=0
+    gl_cv_header_locale_h_needs_xlocale_h=no
+  fi
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_locale_h='<'locale.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <locale.h>" >&5
+$as_echo_n "checking absolute name of <locale.h>... " >&6; }
+if ${gl_cv_next_locale_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <locale.h>
+
+_ACEOF
+                                                                                                                        case "$host_os" in
+                 aix*) gl_absname_cpp="$ac_cpp -C" ;;
+                 *)    gl_absname_cpp="$ac_cpp" ;;
+               esac
+                                                            gl_cv_next_locale_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+                  sed -n '\#/locale.h#{
+                    s#.*"\(.*/locale.h\)".*#\1#
+                    s#^/[^/]#//&#
+                    p
+                    q
+                  }'`'"'
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_locale_h" >&5
+$as_echo "$gl_cv_next_locale_h" >&6; }
+     fi
+     NEXT_LOCALE_H=$gl_cv_next_locale_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'locale.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_locale_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_LOCALE_H=$gl_next_as_first_directive
+
+
+
+
+
+
+    for gl_func in setlocale duplocale; do
+    as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5
+$as_echo_n "checking whether $gl_func is declared without a macro... " >&6; }
+if eval \${$as_gl_Symbol+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <locale.h>
+/* Some systems provide declarations in a non-standard header.  */
+#if HAVE_XLOCALE_H
+# include <xlocale.h>
+#endif
+
+int
+main ()
+{
+#undef $gl_func
+  (void) $gl_func;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$as_gl_Symbol=yes"
+else
+  eval "$as_gl_Symbol=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$as_gl_Symbol
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+     if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1
+_ACEOF
+
+                     eval ac_cv_have_decl_$gl_func=yes
+fi
+      done
+
+
+
+
+
+
+  for ac_func in setlocale uselocale
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a traditional french locale" >&5
+$as_echo_n "checking for a traditional french locale... " >&6; }
+if ${gt_cv_locale_fr+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+  /* Check whether the given locale name is recognized by the system.  */
+#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
+  /* On native Win32, setlocale(category, "") looks at the system settings,
+     not at the environment variables.  Also, when an encoding suffix such
+     as ".65001" or ".54936" is speficied, it succeeds but sets the LC_CTYPE
+     category of the locale to "C".  */
+  if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
+      || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
+    return 1;
+#else
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+#endif
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.
+     On MirBSD 10, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "UTF-8".  */
+#if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0
+        || strcmp (cs, "UTF-8") == 0)
+      return 1;
+  }
+#endif
+#ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+  /* Check whether in the abbreviation of the second month, the second
+     character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is only
+     one byte long. This excludes the UTF-8 encoding.  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+  if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1;
+  /* Check whether the decimal separator is a comma.
+     On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+     are nl_langinfo(RADIXCHAR) are both ".".  */
+  if (localeconv () ->decimal_point[0] != ',') return 1;
+  return 0;
+}
+
+_ACEOF
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest$ac_exeext; then
+      case "$host_os" in
+        # Handle native Windows specially, because there setlocale() interprets
+        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "fr" or "fra" as "French" or "French_France.1252",
+        # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
+        # "ja" as "Japanese" or "Japanese_Japan.932",
+        # and similar.
+        mingw*)
+          # Test for the native Win32 locale name.
+          if (LC_ALL=French_France.1252 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr=French_France.1252
+          else
+            # None found.
+            gt_cv_locale_fr=none
+          fi
+          ;;
+        *)
+          # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+          # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+          # configure script would override the LC_ALL setting. Likewise for
+          # LC_CTYPE, which is also set at the beginning of the configure script.
+          # Test for the usual locale name.
+          if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr=fr_FR
+          else
+            # Test for the locale name with explicit encoding suffix.
+            if (LC_ALL=fr_FR.ISO-8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+              gt_cv_locale_fr=fr_FR.ISO-8859-1
+            else
+              # Test for the AIX, OSF/1, FreeBSD, NetBSD, OpenBSD locale name.
+              if (LC_ALL=fr_FR.ISO8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                gt_cv_locale_fr=fr_FR.ISO8859-1
+              else
+                # Test for the HP-UX locale name.
+                if (LC_ALL=fr_FR.iso88591 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                  gt_cv_locale_fr=fr_FR.iso88591
+                else
+                  # Test for the Solaris 7 locale name.
+                  if (LC_ALL=fr LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                    gt_cv_locale_fr=fr
+                  else
+                    # None found.
+                    gt_cv_locale_fr=none
+                  fi
+                fi
+              fi
+            fi
+          fi
+          ;;
+      esac
+    fi
+    rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_fr" >&5
+$as_echo "$gt_cv_locale_fr" >&6; }
+  LOCALE_FR=$gt_cv_locale_fr
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a french Unicode locale" >&5
+$as_echo_n "checking for a french Unicode locale... " >&6; }
+if ${gt_cv_locale_fr_utf8+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+  /* On BeOS and Haiku, locales are not implemented in libc.  Rather, libintl
+     imitates locale dependent behaviour by looking at the environment
+     variables, and all locales use the UTF-8 encoding.  */
+#if !(defined __BEOS__ || defined __HAIKU__)
+  /* Check whether the given locale name is recognized by the system.  */
+# if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
+  /* On native Win32, setlocale(category, "") looks at the system settings,
+     not at the environment variables.  Also, when an encoding suffix such
+     as ".65001" or ".54936" is speficied, it succeeds but sets the LC_CTYPE
+     category of the locale to "C".  */
+  if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
+      || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
+    return 1;
+# else
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+# endif
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.  */
+# if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+      return 1;
+  }
+# endif
+# ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+# endif
+  /* Check whether in the abbreviation of the second month, the second
+     character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is
+     two bytes long, with UTF-8 encoding.  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+  if (strftime (buf, sizeof (buf), "%b", &t) < 4
+      || buf[1] != (char) 0xc3 || buf[2] != (char) 0xa9 || buf[3] != 'v')
+    return 1;
+#endif
+  /* Check whether the decimal separator is a comma.
+     On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+     are nl_langinfo(RADIXCHAR) are both ".".  */
+  if (localeconv () ->decimal_point[0] != ',') return 1;
+  return 0;
+}
+
+_ACEOF
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest$ac_exeext; then
+      case "$host_os" in
+        # Handle native Windows specially, because there setlocale() interprets
+        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "fr" or "fra" as "French" or "French_France.1252",
+        # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
+        # "ja" as "Japanese" or "Japanese_Japan.932",
+        # and similar.
+        mingw*)
+          # Test for the hypothetical native Win32 locale name.
+          if (LC_ALL=French_France.65001 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr_utf8=French_France.65001
+          else
+            # None found.
+            gt_cv_locale_fr_utf8=none
+          fi
+          ;;
+        *)
+          # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+          # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+          # configure script would override the LC_ALL setting. Likewise for
+          # LC_CTYPE, which is also set at the beginning of the configure script.
+          # Test for the usual locale name.
+          if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr_utf8=fr_FR
+          else
+            # Test for the locale name with explicit encoding suffix.
+            if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+              gt_cv_locale_fr_utf8=fr_FR.UTF-8
+            else
+              # Test for the Solaris 7 locale name.
+              if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                gt_cv_locale_fr_utf8=fr.UTF-8
+              else
+                # None found.
+                gt_cv_locale_fr_utf8=none
+              fi
+            fi
+          fi
+          ;;
+      esac
+    fi
+    rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_fr_utf8" >&5
+$as_echo "$gt_cv_locale_fr_utf8" >&6; }
+  LOCALE_FR_UTF8=$gt_cv_locale_fr_utf8
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a traditional japanese locale" >&5
+$as_echo_n "checking for a traditional japanese locale... " >&6; }
+if ${gt_cv_locale_ja+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main ()
+{
+  const char *p;
+  /* Check whether the given locale name is recognized by the system.  */
+#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
+  /* On native Win32, setlocale(category, "") looks at the system settings,
+     not at the environment variables.  Also, when an encoding suffix such
+     as ".65001" or ".54936" is speficied, it succeeds but sets the LC_CTYPE
+     category of the locale to "C".  */
+  if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
+      || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
+    return 1;
+#else
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+#endif
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.
+     On MirBSD 10, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "UTF-8".  */
+#if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0
+        || strcmp (cs, "UTF-8") == 0)
+      return 1;
+  }
+#endif
+#ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+  /* Check whether MB_CUR_MAX is > 1.  This excludes the dysfunctional locales
+     on Cygwin 1.5.x.  */
+  if (MB_CUR_MAX == 1)
+    return 1;
+  /* Check whether in a month name, no byte in the range 0x80..0x9F occurs.
+     This excludes the UTF-8 encoding (except on MirBSD).  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+  if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1;
+  for (p = buf; *p != '\0'; p++)
+    if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0)
+      return 1;
+  return 0;
+}
+
+_ACEOF
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest$ac_exeext; then
+      case "$host_os" in
+        # Handle native Windows specially, because there setlocale() interprets
+        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "fr" or "fra" as "French" or "French_France.1252",
+        # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
+        # "ja" as "Japanese" or "Japanese_Japan.932",
+        # and similar.
+        mingw*)
+          # Note that on native Win32, the Japanese locale is Japanese_Japan.932,
+          # and CP932 is very different from EUC-JP, so we cannot use it here.
+          gt_cv_locale_ja=none
+          ;;
+        *)
+          # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+          # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+          # configure script would override the LC_ALL setting. Likewise for
+          # LC_CTYPE, which is also set at the beginning of the configure script.
+          # Test for the AIX locale name.
+          if (LC_ALL=ja_JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_ja=ja_JP
+          else
+            # Test for the locale name with explicit encoding suffix.
+            if (LC_ALL=ja_JP.EUC-JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+              gt_cv_locale_ja=ja_JP.EUC-JP
+            else
+              # Test for the HP-UX, OSF/1, NetBSD locale name.
+              if (LC_ALL=ja_JP.eucJP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                gt_cv_locale_ja=ja_JP.eucJP
+              else
+                # Test for the IRIX, FreeBSD locale name.
+                if (LC_ALL=ja_JP.EUC LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                  gt_cv_locale_ja=ja_JP.EUC
+                else
+                  # Test for the Solaris 7 locale name.
+                  if (LC_ALL=ja LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                    gt_cv_locale_ja=ja
+                  else
+                    # Special test for NetBSD 1.6.
+                    if test -f /usr/share/locale/ja_JP.eucJP/LC_CTYPE; then
+                      gt_cv_locale_ja=ja_JP.eucJP
+                    else
+                      # None found.
+                      gt_cv_locale_ja=none
+                    fi
+                  fi
+                fi
+              fi
+            fi
+          fi
+          ;;
+      esac
+    fi
+    rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_ja" >&5
+$as_echo "$gt_cv_locale_ja" >&6; }
+  LOCALE_JA=$gt_cv_locale_ja
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a transitional chinese locale" >&5
+$as_echo_n "checking for a transitional chinese locale... " >&6; }
+if ${gt_cv_locale_zh_CN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <stdlib.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main ()
+{
+  const char *p;
+  /* Check whether the given locale name is recognized by the system.  */
+#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
+  /* On native Win32, setlocale(category, "") looks at the system settings,
+     not at the environment variables.  Also, when an encoding suffix such
+     as ".65001" or ".54936" is speficied, it succeeds but sets the LC_CTYPE
+     category of the locale to "C".  */
+  if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
+      || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
+    return 1;
+#else
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+#endif
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.
+     On MirBSD 10, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "UTF-8".  */
+#if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0
+        || strcmp (cs, "UTF-8") == 0)
+      return 1;
+  }
+#endif
+#ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+  /* Check whether in a month name, no byte in the range 0x80..0x9F occurs.
+     This excludes the UTF-8 encoding (except on MirBSD).  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+  if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1;
+  for (p = buf; *p != '\0'; p++)
+    if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0)
+      return 1;
+  /* Check whether a typical GB18030 multibyte sequence is recognized as a
+     single wide character.  This excludes the GB2312 and GBK encodings.  */
+  if (mblen ("\203\062\332\066", 5) != 4)
+    return 1;
+  return 0;
+}
+
+_ACEOF
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest$ac_exeext; then
+      case "$host_os" in
+        # Handle native Windows specially, because there setlocale() interprets
+        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "fr" or "fra" as "French" or "French_France.1252",
+        # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
+        # "ja" as "Japanese" or "Japanese_Japan.932",
+        # and similar.
+        mingw*)
+          # Test for the hypothetical native Win32 locale name.
+          if (LC_ALL=Chinese_China.54936 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_zh_CN=Chinese_China.54936
+          else
+            # None found.
+            gt_cv_locale_zh_CN=none
+          fi
+          ;;
+        *)
+          # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+          # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+          # configure script would override the LC_ALL setting. Likewise for
+          # LC_CTYPE, which is also set at the beginning of the configure script.
+          # Test for the locale name without encoding suffix.
+          if (LC_ALL=zh_CN LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_zh_CN=zh_CN
+          else
+            # Test for the locale name with explicit encoding suffix.
+            if (LC_ALL=zh_CN.GB18030 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+              gt_cv_locale_zh_CN=zh_CN.GB18030
+            else
+              # None found.
+              gt_cv_locale_zh_CN=none
+            fi
+          fi
+          ;;
+      esac
+    else
+      # If there was a link error, due to mblen(), the system is so old that
+      # it certainly doesn't have a chinese locale.
+      gt_cv_locale_zh_CN=none
+    fi
+    rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_zh_CN" >&5
+$as_echo "$gt_cv_locale_zh_CN" >&6; }
+  LOCALE_ZH_CN=$gt_cv_locale_zh_CN
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a french Unicode locale" >&5
+$as_echo_n "checking for a french Unicode locale... " >&6; }
+if ${gt_cv_locale_fr_utf8+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+  /* On BeOS and Haiku, locales are not implemented in libc.  Rather, libintl
+     imitates locale dependent behaviour by looking at the environment
+     variables, and all locales use the UTF-8 encoding.  */
+#if !(defined __BEOS__ || defined __HAIKU__)
+  /* Check whether the given locale name is recognized by the system.  */
+# if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
+  /* On native Win32, setlocale(category, "") looks at the system settings,
+     not at the environment variables.  Also, when an encoding suffix such
+     as ".65001" or ".54936" is speficied, it succeeds but sets the LC_CTYPE
+     category of the locale to "C".  */
+  if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
+      || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
+    return 1;
+# else
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+# endif
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.  */
+# if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+      return 1;
+  }
+# endif
+# ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+# endif
+  /* Check whether in the abbreviation of the second month, the second
+     character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is
+     two bytes long, with UTF-8 encoding.  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+  if (strftime (buf, sizeof (buf), "%b", &t) < 4
+      || buf[1] != (char) 0xc3 || buf[2] != (char) 0xa9 || buf[3] != 'v')
+    return 1;
+#endif
+  /* Check whether the decimal separator is a comma.
+     On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+     are nl_langinfo(RADIXCHAR) are both ".".  */
+  if (localeconv () ->decimal_point[0] != ',') return 1;
+  return 0;
+}
+
+_ACEOF
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest$ac_exeext; then
+      case "$host_os" in
+        # Handle native Windows specially, because there setlocale() interprets
+        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "fr" or "fra" as "French" or "French_France.1252",
+        # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
+        # "ja" as "Japanese" or "Japanese_Japan.932",
+        # and similar.
+        mingw*)
+          # Test for the hypothetical native Win32 locale name.
+          if (LC_ALL=French_France.65001 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr_utf8=French_France.65001
+          else
+            # None found.
+            gt_cv_locale_fr_utf8=none
+          fi
+          ;;
+        *)
+          # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+          # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+          # configure script would override the LC_ALL setting. Likewise for
+          # LC_CTYPE, which is also set at the beginning of the configure script.
+          # Test for the usual locale name.
+          if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr_utf8=fr_FR
+          else
+            # Test for the locale name with explicit encoding suffix.
+            if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+              gt_cv_locale_fr_utf8=fr_FR.UTF-8
+            else
+              # Test for the Solaris 7 locale name.
+              if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                gt_cv_locale_fr_utf8=fr.UTF-8
+              else
+                # None found.
+                gt_cv_locale_fr_utf8=none
+              fi
+            fi
+          fi
+          ;;
+      esac
+    fi
+    rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_fr_utf8" >&5
+$as_echo "$gt_cv_locale_fr_utf8" >&6; }
+  LOCALE_FR_UTF8=$gt_cv_locale_fr_utf8
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a traditional french locale" >&5
+$as_echo_n "checking for a traditional french locale... " >&6; }
+if ${gt_cv_locale_fr+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+  /* Check whether the given locale name is recognized by the system.  */
+#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
+  /* On native Win32, setlocale(category, "") looks at the system settings,
+     not at the environment variables.  Also, when an encoding suffix such
+     as ".65001" or ".54936" is speficied, it succeeds but sets the LC_CTYPE
+     category of the locale to "C".  */
+  if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
+      || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
+    return 1;
+#else
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+#endif
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.
+     On MirBSD 10, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "UTF-8".  */
+#if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0
+        || strcmp (cs, "UTF-8") == 0)
+      return 1;
+  }
+#endif
+#ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+  /* Check whether in the abbreviation of the second month, the second
+     character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is only
+     one byte long. This excludes the UTF-8 encoding.  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+  if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1;
+  /* Check whether the decimal separator is a comma.
+     On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+     are nl_langinfo(RADIXCHAR) are both ".".  */
+  if (localeconv () ->decimal_point[0] != ',') return 1;
+  return 0;
+}
+
+_ACEOF
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest$ac_exeext; then
+      case "$host_os" in
+        # Handle native Windows specially, because there setlocale() interprets
+        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "fr" or "fra" as "French" or "French_France.1252",
+        # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
+        # "ja" as "Japanese" or "Japanese_Japan.932",
+        # and similar.
+        mingw*)
+          # Test for the native Win32 locale name.
+          if (LC_ALL=French_France.1252 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr=French_France.1252
+          else
+            # None found.
+            gt_cv_locale_fr=none
+          fi
+          ;;
+        *)
+          # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+          # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+          # configure script would override the LC_ALL setting. Likewise for
+          # LC_CTYPE, which is also set at the beginning of the configure script.
+          # Test for the usual locale name.
+          if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr=fr_FR
+          else
+            # Test for the locale name with explicit encoding suffix.
+            if (LC_ALL=fr_FR.ISO-8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+              gt_cv_locale_fr=fr_FR.ISO-8859-1
+            else
+              # Test for the AIX, OSF/1, FreeBSD, NetBSD, OpenBSD locale name.
+              if (LC_ALL=fr_FR.ISO8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                gt_cv_locale_fr=fr_FR.ISO8859-1
+              else
+                # Test for the HP-UX locale name.
+                if (LC_ALL=fr_FR.iso88591 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                  gt_cv_locale_fr=fr_FR.iso88591
+                else
+                  # Test for the Solaris 7 locale name.
+                  if (LC_ALL=fr LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                    gt_cv_locale_fr=fr
+                  else
+                    # None found.
+                    gt_cv_locale_fr=none
+                  fi
+                fi
+              fi
+            fi
+          fi
+          ;;
+      esac
+    fi
+    rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_fr" >&5
+$as_echo "$gt_cv_locale_fr" >&6; }
+  LOCALE_FR=$gt_cv_locale_fr
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a french Unicode locale" >&5
+$as_echo_n "checking for a french Unicode locale... " >&6; }
+if ${gt_cv_locale_fr_utf8+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+  /* On BeOS and Haiku, locales are not implemented in libc.  Rather, libintl
+     imitates locale dependent behaviour by looking at the environment
+     variables, and all locales use the UTF-8 encoding.  */
+#if !(defined __BEOS__ || defined __HAIKU__)
+  /* Check whether the given locale name is recognized by the system.  */
+# if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
+  /* On native Win32, setlocale(category, "") looks at the system settings,
+     not at the environment variables.  Also, when an encoding suffix such
+     as ".65001" or ".54936" is speficied, it succeeds but sets the LC_CTYPE
+     category of the locale to "C".  */
+  if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
+      || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
+    return 1;
+# else
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+# endif
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.  */
+# if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+      return 1;
+  }
+# endif
+# ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+# endif
+  /* Check whether in the abbreviation of the second month, the second
+     character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is
+     two bytes long, with UTF-8 encoding.  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+  if (strftime (buf, sizeof (buf), "%b", &t) < 4
+      || buf[1] != (char) 0xc3 || buf[2] != (char) 0xa9 || buf[3] != 'v')
+    return 1;
+#endif
+  /* Check whether the decimal separator is a comma.
+     On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+     are nl_langinfo(RADIXCHAR) are both ".".  */
+  if (localeconv () ->decimal_point[0] != ',') return 1;
+  return 0;
+}
+
+_ACEOF
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest$ac_exeext; then
+      case "$host_os" in
+        # Handle native Windows specially, because there setlocale() interprets
+        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "fr" or "fra" as "French" or "French_France.1252",
+        # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
+        # "ja" as "Japanese" or "Japanese_Japan.932",
+        # and similar.
+        mingw*)
+          # Test for the hypothetical native Win32 locale name.
+          if (LC_ALL=French_France.65001 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr_utf8=French_France.65001
+          else
+            # None found.
+            gt_cv_locale_fr_utf8=none
+          fi
+          ;;
+        *)
+          # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+          # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+          # configure script would override the LC_ALL setting. Likewise for
+          # LC_CTYPE, which is also set at the beginning of the configure script.
+          # Test for the usual locale name.
+          if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr_utf8=fr_FR
+          else
+            # Test for the locale name with explicit encoding suffix.
+            if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+              gt_cv_locale_fr_utf8=fr_FR.UTF-8
+            else
+              # Test for the Solaris 7 locale name.
+              if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                gt_cv_locale_fr_utf8=fr.UTF-8
+              else
+                # None found.
+                gt_cv_locale_fr_utf8=none
+              fi
+            fi
+          fi
+          ;;
+      esac
+    fi
+    rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_fr_utf8" >&5
+$as_echo "$gt_cv_locale_fr_utf8" >&6; }
+  LOCALE_FR_UTF8=$gt_cv_locale_fr_utf8
+
+
+
+
+  case "$host_os" in
+    mingw* | pw*)
+
+
+  REPLACE_OPEN=1
+
+
+
+
+
+
+
+
+  gltests_LIBOBJS="$gltests_LIBOBJS open.$ac_objext"
+
+
+
+
+  :
+
+
+      ;;
+    *)
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether open recognizes a trailing slash" >&5
+$as_echo_n "checking whether open recognizes a trailing slash... " >&6; }
+if ${gl_cv_func_open_slash+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  # Assume that if we have lstat, we can also check symlinks.
+          if test $ac_cv_func_lstat = yes; then
+            touch conftest.tmp
+            ln -s conftest.tmp conftest.lnk
+          fi
+          if test "$cross_compiling" = yes; then :
+
+             case "$host_os" in
+               freebsd* | aix* | hpux* | solaris2.[0-9] | solaris2.[0-9].*)
+                 gl_cv_func_open_slash="guessing no" ;;
+               *)
+                 gl_cv_func_open_slash="guessing yes" ;;
+             esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <fcntl.h>
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+int main ()
+{
+  int result = 0;
+#if HAVE_LSTAT
+  if (open ("conftest.lnk/", O_RDONLY) != -1)
+    result |= 1;
+#endif
+  if (open ("conftest.sl/", O_CREAT, 0600) >= 0)
+    result |= 2;
+  return result;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_open_slash=yes
+else
+  gl_cv_func_open_slash=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+          rm -f conftest.sl conftest.tmp conftest.lnk
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_open_slash" >&5
+$as_echo "$gl_cv_func_open_slash" >&6; }
+      case "$gl_cv_func_open_slash" in
+        *no)
+
+$as_echo "#define OPEN_TRAILING_SLASH_BUG 1" >>confdefs.h
+
+
+
+  REPLACE_OPEN=1
+
+
+
+
+
+
+
+
+  gltests_LIBOBJS="$gltests_LIBOBJS open.$ac_objext"
+
+
+
+
+  :
+
+
+          ;;
+      esac
+      ;;
+  esac
+
+
+
+
+
+  GNULIB_OPEN=$gl_module_indicator_condition
+
+
+
+$as_echo "#define GNULIB_TEST_OPEN 1" >>confdefs.h
+
+
+
+
+
+  for ac_func in getppriv
+do :
+  ac_fn_c_check_func "$LINENO" "getppriv" "ac_cv_func_getppriv"
+if test "x$ac_cv_func_getppriv" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_GETPPRIV 1
+_ACEOF
+
+fi
+done
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for putenv compatible with GNU and SVID" >&5
+$as_echo_n "checking for putenv compatible with GNU and SVID... " >&6; }
+if ${gl_cv_func_svid_putenv+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+               gl_cv_func_svid_putenv=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+
+    /* Put it in env.  */
+    if (putenv ("CONFTEST_putenv=val"))
+      return 1;
+
+    /* Try to remove it.  */
+    if (putenv ("CONFTEST_putenv"))
+      return 2;
+
+    /* Make sure it was deleted.  */
+    if (getenv ("CONFTEST_putenv") != 0)
+      return 3;
+
+    return 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_svid_putenv=yes
+else
+  gl_cv_func_svid_putenv=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_svid_putenv" >&5
+$as_echo "$gl_cv_func_svid_putenv" >&6; }
+  if test $gl_cv_func_svid_putenv = no; then
+    REPLACE_PUTENV=1
+
+
+
+
+
+
+
+
+  gltests_LIBOBJS="$gltests_LIBOBJS putenv.$ac_objext"
+
+  fi
+
+
+
+
+  GNULIB_PUTENV=$gl_module_indicator_condition
+
+
+
+$as_echo "#define GNULIB_TEST_PUTENV 1" >>confdefs.h
+
+
+
+
+
+  if test $ac_cv_func_setenv = no; then
+    HAVE_SETENV=0
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether setenv validates arguments" >&5
+$as_echo_n "checking whether setenv validates arguments... " >&6; }
+if ${gl_cv_func_setenv_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  gl_cv_func_setenv_works="guessing no"
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+       #include <stdlib.h>
+       #include <errno.h>
+       #include <string.h>
+
+int
+main ()
+{
+
+       int result = 0;
+       {
+         if (setenv ("", "", 0) != -1)
+           result |= 1;
+         else if (errno != EINVAL)
+           result |= 2;
+       }
+       {
+         if (setenv ("a", "=", 1) != 0)
+           result |= 4;
+         else if (strcmp (getenv ("a"), "=") != 0)
+           result |= 8;
+       }
+       return result;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_setenv_works=yes
+else
+  gl_cv_func_setenv_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_setenv_works" >&5
+$as_echo "$gl_cv_func_setenv_works" >&6; }
+    if test "$gl_cv_func_setenv_works" != yes; then
+      REPLACE_SETENV=1
+    fi
+  fi
+  if test $HAVE_SETENV$REPLACE_SETENV != 10; then
+
+
+
+
+
+
+
+
+  gltests_LIBOBJS="$gltests_LIBOBJS setenv.$ac_objext"
+
+  fi
+
+
+
+
+  GNULIB_SETENV=$gl_module_indicator_condition
+
+
+
+$as_echo "#define GNULIB_TEST_SETENV 1" >>confdefs.h
+
+
+
+
+
+
+  case "$host_os" in
+            mingw*) REPLACE_SETLOCALE=1 ;;
+  esac
+  if test $REPLACE_SETLOCALE = 1; then
+
+
+
+
+
+
+
+
+  gltests_LIBOBJS="$gltests_LIBOBJS setlocale.$ac_objext"
+
+
+  :
+
+  fi
+
+
+
+
+  GNULIB_SETLOCALE=$gl_module_indicator_condition
+
+
+
+$as_echo "#define GNULIB_TEST_SETLOCALE 1" >>confdefs.h
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a traditional french locale" >&5
+$as_echo_n "checking for a traditional french locale... " >&6; }
+if ${gt_cv_locale_fr+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+  /* Check whether the given locale name is recognized by the system.  */
+#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
+  /* On native Win32, setlocale(category, "") looks at the system settings,
+     not at the environment variables.  Also, when an encoding suffix such
+     as ".65001" or ".54936" is speficied, it succeeds but sets the LC_CTYPE
+     category of the locale to "C".  */
+  if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
+      || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
+    return 1;
+#else
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+#endif
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.
+     On MirBSD 10, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "UTF-8".  */
+#if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0
+        || strcmp (cs, "UTF-8") == 0)
+      return 1;
+  }
+#endif
+#ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+  /* Check whether in the abbreviation of the second month, the second
+     character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is only
+     one byte long. This excludes the UTF-8 encoding.  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+  if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1;
+  /* Check whether the decimal separator is a comma.
+     On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+     are nl_langinfo(RADIXCHAR) are both ".".  */
+  if (localeconv () ->decimal_point[0] != ',') return 1;
+  return 0;
+}
+
+_ACEOF
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest$ac_exeext; then
+      case "$host_os" in
+        # Handle native Windows specially, because there setlocale() interprets
+        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "fr" or "fra" as "French" or "French_France.1252",
+        # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
+        # "ja" as "Japanese" or "Japanese_Japan.932",
+        # and similar.
+        mingw*)
+          # Test for the native Win32 locale name.
+          if (LC_ALL=French_France.1252 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr=French_France.1252
+          else
+            # None found.
+            gt_cv_locale_fr=none
+          fi
+          ;;
+        *)
+          # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+          # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+          # configure script would override the LC_ALL setting. Likewise for
+          # LC_CTYPE, which is also set at the beginning of the configure script.
+          # Test for the usual locale name.
+          if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr=fr_FR
+          else
+            # Test for the locale name with explicit encoding suffix.
+            if (LC_ALL=fr_FR.ISO-8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+              gt_cv_locale_fr=fr_FR.ISO-8859-1
+            else
+              # Test for the AIX, OSF/1, FreeBSD, NetBSD, OpenBSD locale name.
+              if (LC_ALL=fr_FR.ISO8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                gt_cv_locale_fr=fr_FR.ISO8859-1
+              else
+                # Test for the HP-UX locale name.
+                if (LC_ALL=fr_FR.iso88591 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                  gt_cv_locale_fr=fr_FR.iso88591
+                else
+                  # Test for the Solaris 7 locale name.
+                  if (LC_ALL=fr LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                    gt_cv_locale_fr=fr
+                  else
+                    # None found.
+                    gt_cv_locale_fr=none
+                  fi
+                fi
+              fi
+            fi
+          fi
+          ;;
+      esac
+    fi
+    rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_fr" >&5
+$as_echo "$gt_cv_locale_fr" >&6; }
+  LOCALE_FR=$gt_cv_locale_fr
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a french Unicode locale" >&5
+$as_echo_n "checking for a french Unicode locale... " >&6; }
+if ${gt_cv_locale_fr_utf8+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+  /* On BeOS and Haiku, locales are not implemented in libc.  Rather, libintl
+     imitates locale dependent behaviour by looking at the environment
+     variables, and all locales use the UTF-8 encoding.  */
+#if !(defined __BEOS__ || defined __HAIKU__)
+  /* Check whether the given locale name is recognized by the system.  */
+# if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
+  /* On native Win32, setlocale(category, "") looks at the system settings,
+     not at the environment variables.  Also, when an encoding suffix such
+     as ".65001" or ".54936" is speficied, it succeeds but sets the LC_CTYPE
+     category of the locale to "C".  */
+  if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
+      || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
+    return 1;
+# else
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+# endif
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.  */
+# if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+      return 1;
+  }
+# endif
+# ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+# endif
+  /* Check whether in the abbreviation of the second month, the second
+     character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is
+     two bytes long, with UTF-8 encoding.  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+  if (strftime (buf, sizeof (buf), "%b", &t) < 4
+      || buf[1] != (char) 0xc3 || buf[2] != (char) 0xa9 || buf[3] != 'v')
+    return 1;
+#endif
+  /* Check whether the decimal separator is a comma.
+     On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+     are nl_langinfo(RADIXCHAR) are both ".".  */
+  if (localeconv () ->decimal_point[0] != ',') return 1;
+  return 0;
+}
+
+_ACEOF
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest$ac_exeext; then
+      case "$host_os" in
+        # Handle native Windows specially, because there setlocale() interprets
+        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "fr" or "fra" as "French" or "French_France.1252",
+        # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
+        # "ja" as "Japanese" or "Japanese_Japan.932",
+        # and similar.
+        mingw*)
+          # Test for the hypothetical native Win32 locale name.
+          if (LC_ALL=French_France.65001 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr_utf8=French_France.65001
+          else
+            # None found.
+            gt_cv_locale_fr_utf8=none
+          fi
+          ;;
+        *)
+          # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+          # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+          # configure script would override the LC_ALL setting. Likewise for
+          # LC_CTYPE, which is also set at the beginning of the configure script.
+          # Test for the usual locale name.
+          if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr_utf8=fr_FR
+          else
+            # Test for the locale name with explicit encoding suffix.
+            if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+              gt_cv_locale_fr_utf8=fr_FR.UTF-8
+            else
+              # Test for the Solaris 7 locale name.
+              if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                gt_cv_locale_fr_utf8=fr.UTF-8
+              else
+                # None found.
+                gt_cv_locale_fr_utf8=none
+              fi
+            fi
+          fi
+          ;;
+      esac
+    fi
+    rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_fr_utf8" >&5
+$as_echo "$gt_cv_locale_fr_utf8" >&6; }
+  LOCALE_FR_UTF8=$gt_cv_locale_fr_utf8
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a traditional japanese locale" >&5
+$as_echo_n "checking for a traditional japanese locale... " >&6; }
+if ${gt_cv_locale_ja+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main ()
+{
+  const char *p;
+  /* Check whether the given locale name is recognized by the system.  */
+#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
+  /* On native Win32, setlocale(category, "") looks at the system settings,
+     not at the environment variables.  Also, when an encoding suffix such
+     as ".65001" or ".54936" is speficied, it succeeds but sets the LC_CTYPE
+     category of the locale to "C".  */
+  if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
+      || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
+    return 1;
+#else
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+#endif
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.
+     On MirBSD 10, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "UTF-8".  */
+#if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0
+        || strcmp (cs, "UTF-8") == 0)
+      return 1;
+  }
+#endif
+#ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+  /* Check whether MB_CUR_MAX is > 1.  This excludes the dysfunctional locales
+     on Cygwin 1.5.x.  */
+  if (MB_CUR_MAX == 1)
+    return 1;
+  /* Check whether in a month name, no byte in the range 0x80..0x9F occurs.
+     This excludes the UTF-8 encoding (except on MirBSD).  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+  if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1;
+  for (p = buf; *p != '\0'; p++)
+    if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0)
+      return 1;
+  return 0;
+}
+
+_ACEOF
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest$ac_exeext; then
+      case "$host_os" in
+        # Handle native Windows specially, because there setlocale() interprets
+        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "fr" or "fra" as "French" or "French_France.1252",
+        # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
+        # "ja" as "Japanese" or "Japanese_Japan.932",
+        # and similar.
+        mingw*)
+          # Note that on native Win32, the Japanese locale is Japanese_Japan.932,
+          # and CP932 is very different from EUC-JP, so we cannot use it here.
+          gt_cv_locale_ja=none
+          ;;
+        *)
+          # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+          # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+          # configure script would override the LC_ALL setting. Likewise for
+          # LC_CTYPE, which is also set at the beginning of the configure script.
+          # Test for the AIX locale name.
+          if (LC_ALL=ja_JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_ja=ja_JP
+          else
+            # Test for the locale name with explicit encoding suffix.
+            if (LC_ALL=ja_JP.EUC-JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+              gt_cv_locale_ja=ja_JP.EUC-JP
+            else
+              # Test for the HP-UX, OSF/1, NetBSD locale name.
+              if (LC_ALL=ja_JP.eucJP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                gt_cv_locale_ja=ja_JP.eucJP
+              else
+                # Test for the IRIX, FreeBSD locale name.
+                if (LC_ALL=ja_JP.EUC LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                  gt_cv_locale_ja=ja_JP.EUC
+                else
+                  # Test for the Solaris 7 locale name.
+                  if (LC_ALL=ja LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                    gt_cv_locale_ja=ja
+                  else
+                    # Special test for NetBSD 1.6.
+                    if test -f /usr/share/locale/ja_JP.eucJP/LC_CTYPE; then
+                      gt_cv_locale_ja=ja_JP.eucJP
+                    else
+                      # None found.
+                      gt_cv_locale_ja=none
+                    fi
+                  fi
+                fi
+              fi
+            fi
+          fi
+          ;;
+      esac
+    fi
+    rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_ja" >&5
+$as_echo "$gt_cv_locale_ja" >&6; }
+  LOCALE_JA=$gt_cv_locale_ja
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a transitional chinese locale" >&5
+$as_echo_n "checking for a transitional chinese locale... " >&6; }
+if ${gt_cv_locale_zh_CN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <stdlib.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main ()
+{
+  const char *p;
+  /* Check whether the given locale name is recognized by the system.  */
+#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
+  /* On native Win32, setlocale(category, "") looks at the system settings,
+     not at the environment variables.  Also, when an encoding suffix such
+     as ".65001" or ".54936" is speficied, it succeeds but sets the LC_CTYPE
+     category of the locale to "C".  */
+  if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
+      || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
+    return 1;
+#else
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+#endif
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.
+     On MirBSD 10, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "UTF-8".  */
+#if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0
+        || strcmp (cs, "UTF-8") == 0)
+      return 1;
+  }
+#endif
+#ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+  /* Check whether in a month name, no byte in the range 0x80..0x9F occurs.
+     This excludes the UTF-8 encoding (except on MirBSD).  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+  if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1;
+  for (p = buf; *p != '\0'; p++)
+    if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0)
+      return 1;
+  /* Check whether a typical GB18030 multibyte sequence is recognized as a
+     single wide character.  This excludes the GB2312 and GBK encodings.  */
+  if (mblen ("\203\062\332\066", 5) != 4)
+    return 1;
+  return 0;
+}
+
+_ACEOF
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest$ac_exeext; then
+      case "$host_os" in
+        # Handle native Windows specially, because there setlocale() interprets
+        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "fr" or "fra" as "French" or "French_France.1252",
+        # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
+        # "ja" as "Japanese" or "Japanese_Japan.932",
+        # and similar.
+        mingw*)
+          # Test for the hypothetical native Win32 locale name.
+          if (LC_ALL=Chinese_China.54936 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_zh_CN=Chinese_China.54936
+          else
+            # None found.
+            gt_cv_locale_zh_CN=none
+          fi
+          ;;
+        *)
+          # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+          # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+          # configure script would override the LC_ALL setting. Likewise for
+          # LC_CTYPE, which is also set at the beginning of the configure script.
+          # Test for the locale name without encoding suffix.
+          if (LC_ALL=zh_CN LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_zh_CN=zh_CN
+          else
+            # Test for the locale name with explicit encoding suffix.
+            if (LC_ALL=zh_CN.GB18030 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+              gt_cv_locale_zh_CN=zh_CN.GB18030
+            else
+              # None found.
+              gt_cv_locale_zh_CN=none
+            fi
+          fi
+          ;;
+      esac
+    else
+      # If there was a link error, due to mblen(), the system is so old that
+      # it certainly doesn't have a chinese locale.
+      gt_cv_locale_zh_CN=none
+    fi
+    rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_zh_CN" >&5
+$as_echo "$gt_cv_locale_zh_CN" >&6; }
+  LOCALE_ZH_CN=$gt_cv_locale_zh_CN
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wchar_t" >&5
+$as_echo_n "checking for wchar_t... " >&6; }
+if ${gt_cv_c_wchar_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stddef.h>
+            wchar_t foo = (wchar_t)'\0';
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gt_cv_c_wchar_t=yes
+else
+  gt_cv_c_wchar_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wchar_t" >&5
+$as_echo "$gt_cv_c_wchar_t" >&6; }
+  if test $gt_cv_c_wchar_t = yes; then
+
+$as_echo "#define HAVE_WCHAR_T 1" >>confdefs.h
+
+  fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wint_t" >&5
+$as_echo_n "checking for wint_t... " >&6; }
+if ${gt_cv_c_wint_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+   before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+            wint_t foo = (wchar_t)'\0';
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gt_cv_c_wint_t=yes
+else
+  gt_cv_c_wint_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wint_t" >&5
+$as_echo "$gt_cv_c_wint_t" >&6; }
+  if test $gt_cv_c_wint_t = yes; then
+
+$as_echo "#define HAVE_WINT_T 1" >>confdefs.h
+
+  fi
+
+
+
+
+  # Check for mmap(). Don't use AC_FUNC_MMAP, because it checks too much: it
+  # fails on HP-UX 11, because MAP_FIXED mappings do not work. But this is
+  # irrelevant for anonymous mappings.
+  ac_fn_c_check_func "$LINENO" "mmap" "ac_cv_func_mmap"
+if test "x$ac_cv_func_mmap" = xyes; then :
+  gl_have_mmap=yes
+else
+  gl_have_mmap=no
+fi
+
+
+  # Try to allow MAP_ANONYMOUS.
+  gl_have_mmap_anonymous=no
+  if test $gl_have_mmap = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MAP_ANONYMOUS" >&5
+$as_echo_n "checking for MAP_ANONYMOUS... " >&6; }
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <sys/mman.h>
+#ifdef MAP_ANONYMOUS
+    I cant identify this map.
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "I cant identify this map." >/dev/null 2>&1; then :
+  gl_have_mmap_anonymous=yes
+fi
+rm -f conftest*
+
+    if test $gl_have_mmap_anonymous != yes; then
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <sys/mman.h>
+#ifdef MAP_ANON
+    I cant identify this map.
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "I cant identify this map." >/dev/null 2>&1; then :
+
+$as_echo "#define MAP_ANONYMOUS MAP_ANON" >>confdefs.h
+
+         gl_have_mmap_anonymous=yes
+fi
+rm -f conftest*
+
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_have_mmap_anonymous" >&5
+$as_echo "$gl_have_mmap_anonymous" >&6; }
+    if test $gl_have_mmap_anonymous = yes; then
+
+$as_echo "#define HAVE_MAP_ANONYMOUS 1" >>confdefs.h
+
+    fi
+  fi
+
+
+
+
+
+
+        if test $ac_cv_func_symlink = no; then
+    HAVE_SYMLINK=0
+
+
+
+
+
+
+
+
+  gltests_LIBOBJS="$gltests_LIBOBJS symlink.$ac_objext"
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether symlink handles trailing slash correctly" >&5
+$as_echo_n "checking whether symlink handles trailing slash correctly... " >&6; }
+if ${gl_cv_func_symlink_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  gl_cv_func_symlink_works="guessing no"
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <unistd.h>
+
+int
+main ()
+{
+int result = 0;
+             if (!symlink ("a", "conftest.link/"))
+               result |= 1;
+             if (symlink ("conftest.f", "conftest.lnk2"))
+               result |= 2;
+             else if (!symlink ("a", "conftest.lnk2/"))
+               result |= 4;
+             return result;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_symlink_works=yes
+else
+  gl_cv_func_symlink_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+      rm -f conftest.f conftest.link conftest.lnk2
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_symlink_works" >&5
+$as_echo "$gl_cv_func_symlink_works" >&6; }
+    if test "$gl_cv_func_symlink_works" != yes; then
+      REPLACE_SYMLINK=1
+
+
+
+
+
+
+
+
+  gltests_LIBOBJS="$gltests_LIBOBJS symlink.$ac_objext"
+
+    fi
+  fi
+
+
+
+
+  GNULIB_SYMLINK=$gl_module_indicator_condition
+
+
+
+$as_echo "#define GNULIB_TEST_SYMLINK 1" >>confdefs.h
+
+
+
+
+
+
+
+  if test $gl_threads_api = posix; then
+    gl_save_LIBS="$LIBS"
+    LIBS="$LIBS $LIBMULTITHREAD"
+    for ac_func in pthread_atfork
+do :
+  ac_fn_c_check_func "$LINENO" "pthread_atfork" "ac_cv_func_pthread_atfork"
+if test "x$ac_cv_func_pthread_atfork" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_PTHREAD_ATFORK 1
+_ACEOF
+
+fi
+done
+
+    LIBS="$gl_save_LIBS"
+  fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+  gltests_LIBOBJS="$gltests_LIBOBJS unlinkdir.$ac_objext"
+
+
+  # The Hurd, the Linux kernel, the FreeBSD kernel version 2.2 and later,
+  # Cygwin, and mingw never let anyone (even root) unlink directories.
+  # If anyone knows of another system for which unlink can never
+  # remove a directory, please report it to <bug-coreutils@gnu.org>.
+  # Unfortunately this is difficult to test for, since it requires root access
+  # and might create garbage in the file system,
+  # so the code below simply relies on the kernel name and version number.
+  case $host_os in
+  gnu[0-9]* | \
+  linux-* | linux | \
+  freebsd2.2* | freebsd[3-9]* | freebsd[1-9][0-9]* | \
+  cygwin | \
+  mingw*)
+
+$as_echo "#define UNLINK_CANNOT_UNLINK_DIR 1" >>confdefs.h
+;;
+  esac
+
+
+
+
+  if test $ac_cv_have_decl_unsetenv = no; then
+    HAVE_DECL_UNSETENV=0
+  fi
+  for ac_func in unsetenv
+do :
+  ac_fn_c_check_func "$LINENO" "unsetenv" "ac_cv_func_unsetenv"
+if test "x$ac_cv_func_unsetenv" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_UNSETENV 1
+_ACEOF
+
+fi
+done
+
+  if test $ac_cv_func_unsetenv = no; then
+
+
+
+
+
+
+
+
+  gltests_LIBOBJS="$gltests_LIBOBJS unsetenv.$ac_objext"
+
+
+
+
+
+  else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsetenv() return type" >&5
+$as_echo_n "checking for unsetenv() return type... " >&6; }
+if ${gt_cv_func_unsetenv_ret+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#undef _BSD
+#define _BSD 1 /* unhide unsetenv declaration in OSF/1 5.1 <stdlib.h> */
+#include <stdlib.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+#if defined(__STDC__) || defined(__cplusplus)
+int unsetenv (const char *name);
+#else
+int unsetenv();
+#endif
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gt_cv_func_unsetenv_ret='int'
+else
+  gt_cv_func_unsetenv_ret='void'
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_unsetenv_ret" >&5
+$as_echo "$gt_cv_func_unsetenv_ret" >&6; }
+    if test $gt_cv_func_unsetenv_ret = 'void'; then
+
+$as_echo "#define VOID_UNSETENV 1" >>confdefs.h
+
+      REPLACE_UNSETENV=1
+
+
+
+
+
+
+
+
+  gltests_LIBOBJS="$gltests_LIBOBJS unsetenv.$ac_objext"
+
+    fi
+
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether unsetenv obeys POSIX" >&5
+$as_echo_n "checking whether unsetenv obeys POSIX... " >&6; }
+if ${gl_cv_func_unsetenv_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  gl_cv_func_unsetenv_works="guessing no"
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+       #include <stdlib.h>
+       #include <errno.h>
+       extern char **environ;
+
+int
+main ()
+{
+
+       char entry1[] = "a=1";
+       char entry2[] = "b=2";
+       char *env[] = { entry1, entry2, NULL };
+       if (putenv ((char *) "a=1")) return 1;
+       if (putenv (entry2)) return 2;
+       entry2[0] = 'a';
+       unsetenv ("a");
+       if (getenv ("a")) return 3;
+       if (!unsetenv ("") || errno != EINVAL) return 4;
+       entry2[0] = 'b';
+       environ = env;
+       if (!getenv ("a")) return 5;
+       entry2[0] = 'a';
+       unsetenv ("a");
+       if (getenv ("a")) return 6;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_unsetenv_works=yes
+else
+  gl_cv_func_unsetenv_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_unsetenv_works" >&5
+$as_echo "$gl_cv_func_unsetenv_works" >&6; }
+    if test "$gl_cv_func_unsetenv_works" != yes; then
+      REPLACE_UNSETENV=1
+
+
+
+
+
+
+
+
+  gltests_LIBOBJS="$gltests_LIBOBJS unsetenv.$ac_objext"
+
+    fi
+  fi
+
+
+
+
+  GNULIB_UNSETENV=$gl_module_indicator_condition
+
+
+
+$as_echo "#define GNULIB_TEST_UNSETENV 1" >>confdefs.h
+
+
+
+abs_aux_dir=`cd "$ac_aux_dir"; pwd`
+
+abs_aux_dir=`cd "$ac_aux_dir"; pwd`
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a traditional french locale" >&5
+$as_echo_n "checking for a traditional french locale... " >&6; }
+if ${gt_cv_locale_fr+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+  /* Check whether the given locale name is recognized by the system.  */
+#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
+  /* On native Win32, setlocale(category, "") looks at the system settings,
+     not at the environment variables.  Also, when an encoding suffix such
+     as ".65001" or ".54936" is speficied, it succeeds but sets the LC_CTYPE
+     category of the locale to "C".  */
+  if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
+      || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
+    return 1;
+#else
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+#endif
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.
+     On MirBSD 10, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "UTF-8".  */
+#if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0
+        || strcmp (cs, "UTF-8") == 0)
+      return 1;
+  }
+#endif
+#ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+  /* Check whether in the abbreviation of the second month, the second
+     character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is only
+     one byte long. This excludes the UTF-8 encoding.  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+  if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1;
+  /* Check whether the decimal separator is a comma.
+     On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+     are nl_langinfo(RADIXCHAR) are both ".".  */
+  if (localeconv () ->decimal_point[0] != ',') return 1;
+  return 0;
+}
+
+_ACEOF
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest$ac_exeext; then
+      case "$host_os" in
+        # Handle native Windows specially, because there setlocale() interprets
+        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "fr" or "fra" as "French" or "French_France.1252",
+        # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
+        # "ja" as "Japanese" or "Japanese_Japan.932",
+        # and similar.
+        mingw*)
+          # Test for the native Win32 locale name.
+          if (LC_ALL=French_France.1252 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr=French_France.1252
+          else
+            # None found.
+            gt_cv_locale_fr=none
+          fi
+          ;;
+        *)
+          # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+          # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+          # configure script would override the LC_ALL setting. Likewise for
+          # LC_CTYPE, which is also set at the beginning of the configure script.
+          # Test for the usual locale name.
+          if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr=fr_FR
+          else
+            # Test for the locale name with explicit encoding suffix.
+            if (LC_ALL=fr_FR.ISO-8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+              gt_cv_locale_fr=fr_FR.ISO-8859-1
+            else
+              # Test for the AIX, OSF/1, FreeBSD, NetBSD, OpenBSD locale name.
+              if (LC_ALL=fr_FR.ISO8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                gt_cv_locale_fr=fr_FR.ISO8859-1
+              else
+                # Test for the HP-UX locale name.
+                if (LC_ALL=fr_FR.iso88591 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                  gt_cv_locale_fr=fr_FR.iso88591
+                else
+                  # Test for the Solaris 7 locale name.
+                  if (LC_ALL=fr LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                    gt_cv_locale_fr=fr
+                  else
+                    # None found.
+                    gt_cv_locale_fr=none
+                  fi
+                fi
+              fi
+            fi
+          fi
+          ;;
+      esac
+    fi
+    rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_fr" >&5
+$as_echo "$gt_cv_locale_fr" >&6; }
+  LOCALE_FR=$gt_cv_locale_fr
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a french Unicode locale" >&5
+$as_echo_n "checking for a french Unicode locale... " >&6; }
+if ${gt_cv_locale_fr_utf8+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+  /* On BeOS and Haiku, locales are not implemented in libc.  Rather, libintl
+     imitates locale dependent behaviour by looking at the environment
+     variables, and all locales use the UTF-8 encoding.  */
+#if !(defined __BEOS__ || defined __HAIKU__)
+  /* Check whether the given locale name is recognized by the system.  */
+# if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
+  /* On native Win32, setlocale(category, "") looks at the system settings,
+     not at the environment variables.  Also, when an encoding suffix such
+     as ".65001" or ".54936" is speficied, it succeeds but sets the LC_CTYPE
+     category of the locale to "C".  */
+  if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
+      || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
+    return 1;
+# else
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+# endif
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.  */
+# if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+      return 1;
+  }
+# endif
+# ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+# endif
+  /* Check whether in the abbreviation of the second month, the second
+     character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is
+     two bytes long, with UTF-8 encoding.  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+  if (strftime (buf, sizeof (buf), "%b", &t) < 4
+      || buf[1] != (char) 0xc3 || buf[2] != (char) 0xa9 || buf[3] != 'v')
+    return 1;
+#endif
+  /* Check whether the decimal separator is a comma.
+     On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+     are nl_langinfo(RADIXCHAR) are both ".".  */
+  if (localeconv () ->decimal_point[0] != ',') return 1;
+  return 0;
+}
+
+_ACEOF
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest$ac_exeext; then
+      case "$host_os" in
+        # Handle native Windows specially, because there setlocale() interprets
+        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "fr" or "fra" as "French" or "French_France.1252",
+        # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
+        # "ja" as "Japanese" or "Japanese_Japan.932",
+        # and similar.
+        mingw*)
+          # Test for the hypothetical native Win32 locale name.
+          if (LC_ALL=French_France.65001 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr_utf8=French_France.65001
+          else
+            # None found.
+            gt_cv_locale_fr_utf8=none
+          fi
+          ;;
+        *)
+          # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+          # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+          # configure script would override the LC_ALL setting. Likewise for
+          # LC_CTYPE, which is also set at the beginning of the configure script.
+          # Test for the usual locale name.
+          if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr_utf8=fr_FR
+          else
+            # Test for the locale name with explicit encoding suffix.
+            if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+              gt_cv_locale_fr_utf8=fr_FR.UTF-8
+            else
+              # Test for the Solaris 7 locale name.
+              if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                gt_cv_locale_fr_utf8=fr.UTF-8
+              else
+                # None found.
+                gt_cv_locale_fr_utf8=none
+              fi
+            fi
+          fi
+          ;;
+      esac
+    fi
+    rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_fr_utf8" >&5
+$as_echo "$gt_cv_locale_fr_utf8" >&6; }
+  LOCALE_FR_UTF8=$gt_cv_locale_fr_utf8
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a traditional japanese locale" >&5
+$as_echo_n "checking for a traditional japanese locale... " >&6; }
+if ${gt_cv_locale_ja+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main ()
+{
+  const char *p;
+  /* Check whether the given locale name is recognized by the system.  */
+#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
+  /* On native Win32, setlocale(category, "") looks at the system settings,
+     not at the environment variables.  Also, when an encoding suffix such
+     as ".65001" or ".54936" is speficied, it succeeds but sets the LC_CTYPE
+     category of the locale to "C".  */
+  if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
+      || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
+    return 1;
+#else
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+#endif
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.
+     On MirBSD 10, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "UTF-8".  */
+#if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0
+        || strcmp (cs, "UTF-8") == 0)
+      return 1;
+  }
+#endif
+#ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+  /* Check whether MB_CUR_MAX is > 1.  This excludes the dysfunctional locales
+     on Cygwin 1.5.x.  */
+  if (MB_CUR_MAX == 1)
+    return 1;
+  /* Check whether in a month name, no byte in the range 0x80..0x9F occurs.
+     This excludes the UTF-8 encoding (except on MirBSD).  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+  if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1;
+  for (p = buf; *p != '\0'; p++)
+    if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0)
+      return 1;
+  return 0;
+}
+
+_ACEOF
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest$ac_exeext; then
+      case "$host_os" in
+        # Handle native Windows specially, because there setlocale() interprets
+        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "fr" or "fra" as "French" or "French_France.1252",
+        # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
+        # "ja" as "Japanese" or "Japanese_Japan.932",
+        # and similar.
+        mingw*)
+          # Note that on native Win32, the Japanese locale is Japanese_Japan.932,
+          # and CP932 is very different from EUC-JP, so we cannot use it here.
+          gt_cv_locale_ja=none
+          ;;
+        *)
+          # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+          # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+          # configure script would override the LC_ALL setting. Likewise for
+          # LC_CTYPE, which is also set at the beginning of the configure script.
+          # Test for the AIX locale name.
+          if (LC_ALL=ja_JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_ja=ja_JP
+          else
+            # Test for the locale name with explicit encoding suffix.
+            if (LC_ALL=ja_JP.EUC-JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+              gt_cv_locale_ja=ja_JP.EUC-JP
+            else
+              # Test for the HP-UX, OSF/1, NetBSD locale name.
+              if (LC_ALL=ja_JP.eucJP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                gt_cv_locale_ja=ja_JP.eucJP
+              else
+                # Test for the IRIX, FreeBSD locale name.
+                if (LC_ALL=ja_JP.EUC LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                  gt_cv_locale_ja=ja_JP.EUC
+                else
+                  # Test for the Solaris 7 locale name.
+                  if (LC_ALL=ja LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                    gt_cv_locale_ja=ja
+                  else
+                    # Special test for NetBSD 1.6.
+                    if test -f /usr/share/locale/ja_JP.eucJP/LC_CTYPE; then
+                      gt_cv_locale_ja=ja_JP.eucJP
+                    else
+                      # None found.
+                      gt_cv_locale_ja=none
+                    fi
+                  fi
+                fi
+              fi
+            fi
+          fi
+          ;;
+      esac
+    fi
+    rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_ja" >&5
+$as_echo "$gt_cv_locale_ja" >&6; }
+  LOCALE_JA=$gt_cv_locale_ja
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a transitional chinese locale" >&5
+$as_echo_n "checking for a transitional chinese locale... " >&6; }
+if ${gt_cv_locale_zh_CN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <stdlib.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main ()
+{
+  const char *p;
+  /* Check whether the given locale name is recognized by the system.  */
+#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
+  /* On native Win32, setlocale(category, "") looks at the system settings,
+     not at the environment variables.  Also, when an encoding suffix such
+     as ".65001" or ".54936" is speficied, it succeeds but sets the LC_CTYPE
+     category of the locale to "C".  */
+  if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
+      || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
+    return 1;
+#else
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+#endif
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.
+     On MirBSD 10, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "UTF-8".  */
+#if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0
+        || strcmp (cs, "UTF-8") == 0)
+      return 1;
+  }
+#endif
+#ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+  /* Check whether in a month name, no byte in the range 0x80..0x9F occurs.
+     This excludes the UTF-8 encoding (except on MirBSD).  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+  if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1;
+  for (p = buf; *p != '\0'; p++)
+    if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0)
+      return 1;
+  /* Check whether a typical GB18030 multibyte sequence is recognized as a
+     single wide character.  This excludes the GB2312 and GBK encodings.  */
+  if (mblen ("\203\062\332\066", 5) != 4)
+    return 1;
+  return 0;
+}
+
+_ACEOF
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest$ac_exeext; then
+      case "$host_os" in
+        # Handle native Windows specially, because there setlocale() interprets
+        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "fr" or "fra" as "French" or "French_France.1252",
+        # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
+        # "ja" as "Japanese" or "Japanese_Japan.932",
+        # and similar.
+        mingw*)
+          # Test for the hypothetical native Win32 locale name.
+          if (LC_ALL=Chinese_China.54936 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_zh_CN=Chinese_China.54936
+          else
+            # None found.
+            gt_cv_locale_zh_CN=none
+          fi
+          ;;
+        *)
+          # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+          # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+          # configure script would override the LC_ALL setting. Likewise for
+          # LC_CTYPE, which is also set at the beginning of the configure script.
+          # Test for the locale name without encoding suffix.
+          if (LC_ALL=zh_CN LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_zh_CN=zh_CN
+          else
+            # Test for the locale name with explicit encoding suffix.
+            if (LC_ALL=zh_CN.GB18030 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+              gt_cv_locale_zh_CN=zh_CN.GB18030
+            else
+              # None found.
+              gt_cv_locale_zh_CN=none
+            fi
+          fi
+          ;;
+      esac
+    else
+      # If there was a link error, due to mblen(), the system is so old that
+      # it certainly doesn't have a chinese locale.
+      gt_cv_locale_zh_CN=none
+    fi
+    rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_zh_CN" >&5
+$as_echo "$gt_cv_locale_zh_CN" >&6; }
+  LOCALE_ZH_CN=$gt_cv_locale_zh_CN
+
+
+
+
+
+
+  if test $ac_cv_func_wctob = no; then
+    HAVE_DECL_WCTOB=0
+
+
+
+
+
+
+
+
+  gltests_LIBOBJS="$gltests_LIBOBJS wctob.$ac_objext"
+
+
+  :
+
+  else
+
+
+
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether wctob works" >&5
+$as_echo_n "checking whether wctob works... " >&6; }
+if ${gl_cv_func_wctob_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+                        case "$host_os" in
+            # Guess no on Solaris <= 9 and Cygwin.
+          solaris2.[1-9] | solaris2.[1-9].* | cygwin*)
+            gl_cv_func_wctob_works="guessing no" ;;
+            # Guess yes otherwise.
+          *) gl_cv_func_wctob_works="guessing yes" ;;
+        esac
+        case "$host_os" in
+          cygwin*)
+            if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+
+register long global __asm__ ("%ebx");
+
+int main ()
+{
+  setlocale (LC_ALL, "en_US.UTF-8");
+
+  global = 0x12345678;
+  if (wctob (0x00FC) != -1)
+    return 1;
+  if (global != 0x12345678)
+    return 2;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  :
+else
+  gl_cv_func_wctob_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+            ;;
+        esac
+        if test "$gl_cv_func_wctob_works" != no && test $LOCALE_FR != none; then
+          if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int main ()
+{
+  if (setlocale (LC_ALL, "$LOCALE_FR") != NULL)
+    {
+      wchar_t wc;
+
+      if (mbtowc (&wc, "\374", 1) == 1)
+        if (wctob (wc) != (unsigned char) '\374')
+          return 1;
+    }
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_wctob_works=yes
+else
+  gl_cv_func_wctob_works=no
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_wctob_works" >&5
+$as_echo "$gl_cv_func_wctob_works" >&6; }
+    case "$gl_cv_func_wctob_works" in
+      *yes) ;;
+      *) REPLACE_WCTOB=1 ;;
+    esac
+    if test $REPLACE_WCTOB = 1; then
+
+
+
+
+
+
+
+
+  gltests_LIBOBJS="$gltests_LIBOBJS wctob.$ac_objext"
+
+
+  :
+
+    else
+
+            ac_fn_c_check_decl "$LINENO" "wctob" "ac_cv_have_decl_wctob" "
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+   before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+
+"
+if test "x$ac_cv_have_decl_wctob" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_WCTOB $ac_have_decl
+_ACEOF
+
+      if test $ac_cv_have_decl_wctob != yes; then
+        HAVE_DECL_WCTOB=0
+      fi
+    fi
+  fi
+
+
+
+
+  GNULIB_WCTOB=$gl_module_indicator_condition
+
+
+
+$as_echo "#define GNULIB_TEST_WCTOB 1" >>confdefs.h
+
+
+
+
+
+
+  if false; then
+    REPLACE_WCTOMB=1
+  fi
+  if test $REPLACE_WCTOMB = 1; then
+
+
+
+
+
+
+
+
+  gltests_LIBOBJS="$gltests_LIBOBJS wctomb.$ac_objext"
+
+
+  :
+
+  fi
+
+
+
+
+  GNULIB_WCTOMB=$gl_module_indicator_condition
+
+
+
+$as_echo "#define GNULIB_TEST_WCTOMB 1" >>confdefs.h
+
+
+
+
+
+    YIELD_LIB=
+  if test $gl_threads_api = posix; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sched_yield in -lrt" >&5
+$as_echo_n "checking for sched_yield in -lrt... " >&6; }
+if ${ac_cv_lib_rt_sched_yield+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char sched_yield ();
+int
+main ()
+{
+return sched_yield ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_rt_sched_yield=yes
+else
+  ac_cv_lib_rt_sched_yield=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_sched_yield" >&5
+$as_echo "$ac_cv_lib_rt_sched_yield" >&6; }
+if test "x$ac_cv_lib_rt_sched_yield" = xyes; then :
+  YIELD_LIB=-lrt
+else
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sched_yield in -lposix4" >&5
+$as_echo_n "checking for sched_yield in -lposix4... " >&6; }
+if ${ac_cv_lib_posix4_sched_yield+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char sched_yield ();
+int
+main ()
+{
+return sched_yield ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_posix4_sched_yield=yes
+else
+  ac_cv_lib_posix4_sched_yield=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_posix4_sched_yield" >&5
+$as_echo "$ac_cv_lib_posix4_sched_yield" >&6; }
+if test "x$ac_cv_lib_posix4_sched_yield" = xyes; then :
+  YIELD_LIB=-lposix4
+fi
+
+fi
+
+  fi
+
+
+
+
+
+
+
+
+
+
+
+
+  LIBTESTS_LIBDEPS="$gltests_libdeps"
+
+
+
+# Check whether --enable-gcc-warnings was given.
+if test "${enable_gcc_warnings+set}" = set; then :
+  enableval=$enable_gcc_warnings; case $enableval in
+     yes|no) ;;
+     *)      as_fn_error $? "bad value $enableval for gcc-warnings option" "$LINENO" 5 ;;
+   esac
+   gl_gcc_warnings=$enableval
+else
+  gl_gcc_warnings=no
+
+fi
+
+
+if test "$gl_gcc_warnings" = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler handles -Werror" >&5
+$as_echo_n "checking whether compiler handles -Werror... " >&6; }
+if ${gl_cv_warn__Werror+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_CPPFLAGS="$CPPFLAGS"
+  CPPFLAGS="${CPPFLAGS} -Werror"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  gl_cv_warn__Werror=yes
+else
+  gl_cv_warn__Werror=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+  CPPFLAGS="$gl_save_CPPFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn__Werror" >&5
+$as_echo "$gl_cv_warn__Werror" >&6; }
+if test "x$gl_cv_warn__Werror" = xyes; then :
+  as_fn_append WERROR_CFLAGS " -Werror"
+fi
+
+
+
+  nw=
+  # This, $nw, is the list of warnings we disable.
+  nw="$nw -Wdeclaration-after-statement" # too useful to forbid
+  nw="$nw -Waggregate-return"       # anachronistic
+  nw="$nw -Wlong-long"              # C90 is anachronistic (lib/gethrxtime.h)
+  nw="$nw -Wc++-compat"             # We don't care about C++ compilers
+  nw="$nw -Wundef"                  # Warns on '#if GNULIB_FOO' etc in gnulib
+  nw="$nw -Wtraditional"            # Warns on #elif which we use often
+  nw="$nw -Wcast-qual"              # Too many warnings for now
+  nw="$nw -Wconversion"             # Too many warnings for now
+  nw="$nw -Wsystem-headers"         # Don't let system headers trigger warnings
+  nw="$nw -Wsign-conversion"        # Too many warnings for now
+  nw="$nw -Wtraditional-conversion" # Too many warnings for now
+  nw="$nw -Wunreachable-code"       # Too many warnings for now
+  nw="$nw -Wpadded"                 # Our structs are not padded
+  nw="$nw -Wredundant-decls"        # openat.h declares e.g., mkdirat
+  nw="$nw -Wlogical-op"             # any use of fwrite provokes this
+  nw="$nw -Wformat-nonliteral"      # who.c and pinky.c strftime uses
+  nw="$nw -Wvla"                    # warnings in gettext.h
+  nw="$nw -Wnested-externs"         # use of XARGMATCH/verify_function__
+  nw="$nw -Wswitch-enum"            # Too many warnings for now
+  nw="$nw -Wswitch-default"         # Too many warnings for now
+  # Too many warnings for now
+  nw="$nw -Wattributes"
+  nw="$nw -Wstrict-prototypes"
+  nw="$nw -Wold-style-definition"
+  nw="$nw -Wpacked"
+  nw="$nw -Wmissing-prototypes"
+  nw="$nw -Wmissing-declarations"
+  nw="$nw -Wmissing-noreturn"
+  # things I might fix soon:
+  nw="$nw -Wfloat-equal"            # sort.c, seq.c
+  nw="$nw -Wmissing-format-attribute" # copy.c
+  nw="$nw -Wunsafe-loop-optimizations" # a few src/*.c
+  nw="$nw -Winline"                 # system.h's readdir_ignoring_dot_and_dotdot
+  nw="$nw -Wstrict-overflow"        # expr.c, pr.c, tr.c, factor.c
+  nw="$nw -Wstack-protector"        # libparted/label/gpt.c
+  # ?? -Wstrict-overflow
+
+
+
+  if test -n "$GCC"; then
+
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -Wno-missing-field-initializers is supported" >&5
+$as_echo_n "checking whether -Wno-missing-field-initializers is supported... " >&6; }
+    if ${gl_cv_cc_nomfi_supported+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      gl_save_CFLAGS="$CFLAGS"
+      CFLAGS="$CFLAGS -W -Werror -Wno-missing-field-initializers"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_cc_nomfi_supported=yes
+else
+  gl_cv_cc_nomfi_supported=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      CFLAGS="$gl_save_CFLAGS"
+fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_nomfi_supported" >&5
+$as_echo "$gl_cv_cc_nomfi_supported" >&6; }
+
+    if test "$gl_cv_cc_nomfi_supported" = yes; then
+                  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -Wno-missing-field-initializers is needed" >&5
+$as_echo_n "checking whether -Wno-missing-field-initializers is needed... " >&6; }
+      if ${gl_cv_cc_nomfi_needed+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+        gl_save_CFLAGS="$CFLAGS"
+        CFLAGS="$CFLAGS -W -Werror"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+void f (void)
+               {
+                 typedef struct { int a; int b; } s_t;
+                 s_t s1 = { 0, };
+               }
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_cc_nomfi_needed=no
+else
+  gl_cv_cc_nomfi_needed=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+        CFLAGS="$gl_save_CFLAGS"
+
+fi
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_nomfi_needed" >&5
+$as_echo "$gl_cv_cc_nomfi_needed" >&6; }
+    fi
+  fi
+
+  gl_manywarn_set=
+  for gl_manywarn_item in \
+    -Wall \
+    -W \
+    -Wformat-y2k \
+    -Wformat-nonliteral \
+    -Wformat-security \
+    -Winit-self \
+    -Wmissing-include-dirs \
+    -Wswitch-default \
+    -Wswitch-enum \
+    -Wunused \
+    -Wunknown-pragmas \
+    -Wstrict-aliasing \
+    -Wstrict-overflow \
+    -Wsystem-headers \
+    -Wfloat-equal \
+    -Wtraditional \
+    -Wtraditional-conversion \
+    -Wdeclaration-after-statement \
+    -Wundef \
+    -Wshadow \
+    -Wunsafe-loop-optimizations \
+    -Wpointer-arith \
+    -Wbad-function-cast \
+    -Wc++-compat \
+    -Wcast-qual \
+    -Wcast-align \
+    -Wwrite-strings \
+    -Wconversion \
+    -Wsign-conversion \
+    -Wlogical-op \
+    -Waggregate-return \
+    -Wstrict-prototypes \
+    -Wold-style-definition \
+    -Wmissing-prototypes \
+    -Wmissing-declarations \
+    -Wmissing-noreturn \
+    -Wmissing-format-attribute \
+    -Wpacked \
+    -Wpadded \
+    -Wredundant-decls \
+    -Wnested-externs \
+    -Wunreachable-code \
+    -Winline \
+    -Winvalid-pch \
+    -Wlong-long \
+    -Wvla \
+    -Wvolatile-register-var \
+    -Wdisabled-optimization \
+    -Wstack-protector \
+    -Woverlength-strings \
+    -Wbuiltin-macro-redefined \
+    -Wmudflap \
+    -Wpacked-bitfield-compat \
+    -Wsync-nand \
+    ; do
+    gl_manywarn_set="$gl_manywarn_set $gl_manywarn_item"
+  done
+  # The following are not documented in the manual but are included in
+  # output from gcc --help=warnings.
+  for gl_manywarn_item in \
+    -Wattributes \
+    -Wcoverage-mismatch \
+    -Wmultichar \
+    -Wunused-macros \
+    ; do
+    gl_manywarn_set="$gl_manywarn_set $gl_manywarn_item"
+  done
+
+  # Disable the missing-field-initializers warning if needed
+  if test "$gl_cv_cc_nomfi_needed" = yes; then
+    gl_manywarn_set="$gl_manywarn_set -Wno-missing-field-initializers"
+  fi
+
+  ws=$gl_manywarn_set
+
+
+  gl_warn_set=
+  set x $ws; shift
+  for gl_warn_item
+  do
+    case " $nw " in
+      *" $gl_warn_item "*)
+        ;;
+      *)
+        gl_warn_set="$gl_warn_set $gl_warn_item"
+        ;;
+    esac
+  done
+  ws=$gl_warn_set
+
+  for w in $ws; do
+    as_gl_Warn=`$as_echo "gl_cv_warn_$w" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler handles $w" >&5
+$as_echo_n "checking whether compiler handles $w... " >&6; }
+if eval \${$as_gl_Warn+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_CPPFLAGS="$CPPFLAGS"
+  CPPFLAGS="${CPPFLAGS} $w"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  eval "$as_gl_Warn=yes"
+else
+  eval "$as_gl_Warn=no"
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+  CPPFLAGS="$gl_save_CPPFLAGS"
+
+fi
+eval ac_res=\$$as_gl_Warn
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_gl_Warn"\" = x"yes"; then :
+  as_fn_append WARN_CFLAGS " $w"
+fi
+
+  done
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler handles -Wno-missing-field-initializers" >&5
+$as_echo_n "checking whether compiler handles -Wno-missing-field-initializers... " >&6; }
+if ${gl_cv_warn__Wno_missing_field_initializers+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_CPPFLAGS="$CPPFLAGS"
+  CPPFLAGS="${CPPFLAGS} -Wno-missing-field-initializers"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  gl_cv_warn__Wno_missing_field_initializers=yes
+else
+  gl_cv_warn__Wno_missing_field_initializers=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+  CPPFLAGS="$gl_save_CPPFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn__Wno_missing_field_initializers" >&5
+$as_echo "$gl_cv_warn__Wno_missing_field_initializers" >&6; }
+if test "x$gl_cv_warn__Wno_missing_field_initializers" = xyes; then :
+  as_fn_append WARN_CFLAGS " -Wno-missing-field-initializers"
+fi
+ # We need this one
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler handles -Wno-sign-compare" >&5
+$as_echo_n "checking whether compiler handles -Wno-sign-compare... " >&6; }
+if ${gl_cv_warn__Wno_sign_compare+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_CPPFLAGS="$CPPFLAGS"
+  CPPFLAGS="${CPPFLAGS} -Wno-sign-compare"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  gl_cv_warn__Wno_sign_compare=yes
+else
+  gl_cv_warn__Wno_sign_compare=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+  CPPFLAGS="$gl_save_CPPFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn__Wno_sign_compare" >&5
+$as_echo "$gl_cv_warn__Wno_sign_compare" >&6; }
+if test "x$gl_cv_warn__Wno_sign_compare" = xyes; then :
+  as_fn_append WARN_CFLAGS " -Wno-sign-compare"
+fi
+     # Too many warnings for now
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler handles -Wno-pointer-sign" >&5
+$as_echo_n "checking whether compiler handles -Wno-pointer-sign... " >&6; }
+if ${gl_cv_warn__Wno_pointer_sign+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_CPPFLAGS="$CPPFLAGS"
+  CPPFLAGS="${CPPFLAGS} -Wno-pointer-sign"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  gl_cv_warn__Wno_pointer_sign=yes
+else
+  gl_cv_warn__Wno_pointer_sign=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+  CPPFLAGS="$gl_save_CPPFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn__Wno_pointer_sign" >&5
+$as_echo "$gl_cv_warn__Wno_pointer_sign" >&6; }
+if test "x$gl_cv_warn__Wno_pointer_sign" = xyes; then :
+  as_fn_append WARN_CFLAGS " -Wno-pointer-sign"
+fi
+     # Too many warnings for now
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler handles -Wno-unused-parameter" >&5
+$as_echo_n "checking whether compiler handles -Wno-unused-parameter... " >&6; }
+if ${gl_cv_warn__Wno_unused_parameter+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_CPPFLAGS="$CPPFLAGS"
+  CPPFLAGS="${CPPFLAGS} -Wno-unused-parameter"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  gl_cv_warn__Wno_unused_parameter=yes
+else
+  gl_cv_warn__Wno_unused_parameter=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+  CPPFLAGS="$gl_save_CPPFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn__Wno_unused_parameter" >&5
+$as_echo "$gl_cv_warn__Wno_unused_parameter" >&6; }
+if test "x$gl_cv_warn__Wno_unused_parameter" = xyes; then :
+  as_fn_append WARN_CFLAGS " -Wno-unused-parameter"
+fi
+ # Too many warnings for now
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler handles -Wno-unused-macros" >&5
+$as_echo_n "checking whether compiler handles -Wno-unused-macros... " >&6; }
+if ${gl_cv_warn__Wno_unused_macros+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_CPPFLAGS="$CPPFLAGS"
+  CPPFLAGS="${CPPFLAGS} -Wno-unused-macros"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  gl_cv_warn__Wno_unused_macros=yes
+else
+  gl_cv_warn__Wno_unused_macros=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+  CPPFLAGS="$gl_save_CPPFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn__Wno_unused_macros" >&5
+$as_echo "$gl_cv_warn__Wno_unused_macros" >&6; }
+if test "x$gl_cv_warn__Wno_unused_macros" = xyes; then :
+  as_fn_append WARN_CFLAGS " -Wno-unused-macros"
+fi
+ # Too many warnings for now
+
+  # FIXME: investigate these
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler handles -Wno-jump-misses-init" >&5
+$as_echo_n "checking whether compiler handles -Wno-jump-misses-init... " >&6; }
+if ${gl_cv_warn__Wno_jump_misses_init+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_CPPFLAGS="$CPPFLAGS"
+  CPPFLAGS="${CPPFLAGS} -Wno-jump-misses-init"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  gl_cv_warn__Wno_jump_misses_init=yes
+else
+  gl_cv_warn__Wno_jump_misses_init=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+  CPPFLAGS="$gl_save_CPPFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn__Wno_jump_misses_init" >&5
+$as_echo "$gl_cv_warn__Wno_jump_misses_init" >&6; }
+if test "x$gl_cv_warn__Wno_jump_misses_init" = xyes; then :
+  as_fn_append WARN_CFLAGS " -Wno-jump-misses-init"
+fi
+
+
+  # In spite of excluding -Wlogical-op above, it is enabled, as of
+  # gcc 4.5.0 20090517, and it provokes warnings in cat.c, dd.c, truncate.c
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler handles -Wno-logical-op" >&5
+$as_echo_n "checking whether compiler handles -Wno-logical-op... " >&6; }
+if ${gl_cv_warn__Wno_logical_op+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_CPPFLAGS="$CPPFLAGS"
+  CPPFLAGS="${CPPFLAGS} -Wno-logical-op"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  gl_cv_warn__Wno_logical_op=yes
+else
+  gl_cv_warn__Wno_logical_op=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+  CPPFLAGS="$gl_save_CPPFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn__Wno_logical_op" >&5
+$as_echo "$gl_cv_warn__Wno_logical_op" >&6; }
+if test "x$gl_cv_warn__Wno_logical_op" = xyes; then :
+  as_fn_append WARN_CFLAGS " -Wno-logical-op"
+fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler handles -fdiagnostics-show-option" >&5
+$as_echo_n "checking whether compiler handles -fdiagnostics-show-option... " >&6; }
+if ${gl_cv_warn__fdiagnostics_show_option+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_CPPFLAGS="$CPPFLAGS"
+  CPPFLAGS="${CPPFLAGS} -fdiagnostics-show-option"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  gl_cv_warn__fdiagnostics_show_option=yes
+else
+  gl_cv_warn__fdiagnostics_show_option=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+  CPPFLAGS="$gl_save_CPPFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn__fdiagnostics_show_option" >&5
+$as_echo "$gl_cv_warn__fdiagnostics_show_option" >&6; }
+if test "x$gl_cv_warn__fdiagnostics_show_option" = xyes; then :
+  as_fn_append WARN_CFLAGS " -fdiagnostics-show-option"
+fi
+
+
+
+
+
+$as_echo "#define lint 1" >>confdefs.h
+
+
+$as_echo "#define _FORTIFY_SOURCE 2" >>confdefs.h
+
+
+$as_echo "#define GNULIB_PORTCHECK 1" >>confdefs.h
+
+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.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of off_t" >&5
+$as_echo_n "checking size of off_t... " >&6; }
+if ${ac_cv_sizeof_off_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (off_t))" "ac_cv_sizeof_off_t"        "
+       #include <stdio.h>
+       #include <sys/types.h>
+       #include <unistd.h>
+
+"; then :
+
+else
+  if test "$ac_cv_type_off_t" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_off_t" >&5
+$as_echo "$ac_cv_sizeof_off_t" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_OFF_T $ac_cv_sizeof_off_t
+_ACEOF
+
+
+
+# Check whether --enable-shared was given.
+if test "${enable_shared+set}" = set; then :
+  enableval=$enable_shared; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_shared=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_shared=yes
+fi
+
+
+
+
+
+
+
+
+
+if test "$OS" = linux && test $ac_cv_sizeof_off_t -lt 8; then
+                                       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: off_t is less than 8 bytes.  Using llseek syscall" >&5
+$as_echo "$as_me: WARNING: off_t is less than 8 bytes.  Using llseek syscall" >&2;}
+       # Check whether --enable-shared was given.
+if test "${enable_shared+set}" = set; then :
+  enableval=$enable_shared; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_shared=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_shared=no
+fi
+
+
+
+
+
+
+fi
+case `pwd` in
+  *\ * | *\    *)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
+$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
+esac
+
+
+
+macro_version='2.4'
+macro_revision='1.3293'
+
+
+
+
+
+
+
+
+
+
+
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+# Backslashify metacharacters that are still active within
+# double-quoted strings.
+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
+$as_echo_n "checking how to print strings... " >&6; }
+# Test print first, because it will be a builtin if present.
+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='print -r --'
+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='printf %s\n'
+else
+  # Use this function as a fallback that always works.
+  func_fallback_echo ()
+  {
+    eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+  }
+  ECHO='func_fallback_echo'
+fi
+
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+    $ECHO ""
+}
+
+case "$ECHO" in
+  printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
+$as_echo "printf" >&6; } ;;
+  print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
+$as_echo "print -r" >&6; } ;;
+  *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
+$as_echo "cat" >&6; } ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if ${ac_cv_path_SED+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+            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
+  test -z "$as_dir" && as_dir=.
+    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"
+      { test -f "$ac_path_SED" && $as_test_x "$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
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo '' >> "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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+  rm -f conftest.sed
+
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
+$as_echo_n "checking for fgrep... " >&6; }
+if ${ac_cv_path_FGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
+   then ac_cv_path_FGREP="$GREP -F"
+   else
+     if test -z "$FGREP"; then
+  ac_path_FGREP_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
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in fgrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue
+# Check for GNU ac_path_FGREP and select it if it is found.
+  # Check for GNU $ac_path_FGREP
+case `"$ac_path_FGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'FGREP' >> "conftest.nl"
+    "$ac_path_FGREP" FGREP < "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_FGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_FGREP="$ac_path_FGREP"
+      ac_path_FGREP_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_FGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_FGREP"; then
+    as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_FGREP=$FGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
+$as_echo "$ac_cv_path_FGREP" >&6; }
+ FGREP="$ac_cv_path_FGREP"
+
+
+test -z "$GREP" && GREP=grep
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then :
+  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi
+
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | ?:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+       ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if ${lt_cv_path_LD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_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 `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+       test "$with_gnu_ld" != no && break
+       ;;
+      *)
+       test "$with_gnu_ld" != yes && break
+       ;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if ${lt_cv_prog_gnu_ld+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
+$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
+if ${lt_cv_path_NM+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  lt_nm_to_check="${ac_tool_prefix}nm"
+  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+    lt_nm_to_check="$lt_nm_to_check nm"
+  fi
+  for lt_tmp_nm in $lt_nm_to_check; do
+    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+      IFS="$lt_save_ifs"
+      test -z "$ac_dir" && ac_dir=.
+      tmp_nm="$ac_dir/$lt_tmp_nm"
+      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+       # Check to see if the nm accepts a BSD-compat flag.
+       # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+       #   nm: unknown option "B" ignored
+       # Tru64's nm complains that /dev/null is an invalid object file
+       case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+       */dev/null* | *'Invalid file or object type'*)
+         lt_cv_path_NM="$tmp_nm -B"
+         break
+         ;;
+       *)
+         case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+         */dev/null*)
+           lt_cv_path_NM="$tmp_nm -p"
+           break
+           ;;
+         *)
+           lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+           continue # so that we can try to find one that supports BSD flags
+           ;;
+         esac
+         ;;
+       esac
+      fi
+    done
+    IFS="$lt_save_ifs"
+  done
+  : ${lt_cv_path_NM=no}
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
+$as_echo "$lt_cv_path_NM" >&6; }
+if test "$lt_cv_path_NM" != "no"; then
+  NM="$lt_cv_path_NM"
+else
+  # Didn't find any BSD compatible name lister, look for dumpbin.
+  if test -n "$DUMPBIN"; then :
+    # Let the user override the test.
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in dumpbin "link -dump"
+  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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DUMPBIN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DUMPBIN"; then
+  ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
+    $as_echo "$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
+DUMPBIN=$ac_cv_prog_DUMPBIN
+if test -n "$DUMPBIN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
+$as_echo "$DUMPBIN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$DUMPBIN" && break
+  done
+fi
+if test -z "$DUMPBIN"; then
+  ac_ct_DUMPBIN=$DUMPBIN
+  for ac_prog in dumpbin "link -dump"
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DUMPBIN"; then
+  ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
+    $as_echo "$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_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
+if test -n "$ac_ct_DUMPBIN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
+$as_echo "$ac_ct_DUMPBIN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_DUMPBIN" && break
+done
+
+  if test "x$ac_ct_DUMPBIN" = x; then
+    DUMPBIN=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DUMPBIN=$ac_ct_DUMPBIN
+  fi
+fi
+
+    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+    *COFF*)
+      DUMPBIN="$DUMPBIN -symbols"
+      ;;
+    *)
+      DUMPBIN=:
+      ;;
+    esac
+  fi
+
+  if test "$DUMPBIN" != ":"; then
+    NM="$DUMPBIN"
+  fi
+fi
+test -z "$NM" && NM=nm
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
+$as_echo_n "checking the name lister ($NM) interface... " >&6; }
+if ${lt_cv_nm_interface+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_nm_interface="BSD nm"
+  echo "int some_variable = 0;" > conftest.$ac_ext
+  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
+  (eval "$ac_compile" 2>conftest.err)
+  cat conftest.err >&5
+  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+  cat conftest.err >&5
+  (eval echo "\"\$as_me:$LINENO: output\"" >&5)
+  cat conftest.out >&5
+  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+    lt_cv_nm_interface="MS dumpbin"
+  fi
+  rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
+$as_echo "$lt_cv_nm_interface" >&6; }
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
+
+# find the maximum length of command line arguments
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
+$as_echo_n "checking the maximum length of command line arguments... " >&6; }
+if ${lt_cv_sys_max_cmd_len+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+    i=0
+  teststring="ABCD"
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
+
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
+
+  cygwin* | mingw* | cegcc*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  mint*)
+    # On MiNT this can take a long time and run out of memory.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+    # This has been around since 386BSD, at least.  Likely further.
+    if test -x /sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+    elif test -x /usr/sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+    else
+      lt_cv_sys_max_cmd_len=65536      # usable default for all BSDs
+    fi
+    # And add a safety zone
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    ;;
+
+  interix*)
+    # We know the value 262144 and hardcode it with a safety zone (like BSD)
+    lt_cv_sys_max_cmd_len=196608
+    ;;
+
+  osf*)
+    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+    # nice to cause kernel panics so lets avoid the loop below.
+    # First set a reasonable default.
+    lt_cv_sys_max_cmd_len=16384
+    #
+    if test -x /sbin/sysconfig; then
+      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+        *1*) lt_cv_sys_max_cmd_len=-1 ;;
+      esac
+    fi
+    ;;
+  sco3.2v5*)
+    lt_cv_sys_max_cmd_len=102400
+    ;;
+  sysv5* | sco5v6* | sysv4.2uw2*)
+    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+    if test -n "$kargmax"; then
+      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[         ]//'`
+    else
+      lt_cv_sys_max_cmd_len=32768
+    fi
+    ;;
+  *)
+    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+    if test -n "$lt_cv_sys_max_cmd_len"; then
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    else
+      # Make teststring a little bigger before we do anything with it.
+      # a 1K string should be a reasonable start.
+      for i in 1 2 3 4 5 6 7 8 ; do
+        teststring=$teststring$teststring
+      done
+      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+      # If test is not a shell built-in, we'll probably end up computing a
+      # maximum length that is only half of the actual maximum length, but
+      # we can't tell.
+      while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
+                = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+             test $i != 17 # 1/2 MB should be enough
+      do
+        i=`expr $i + 1`
+        teststring=$teststring$teststring
+      done
+      # Only check the string length outside the loop.
+      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+      teststring=
+      # Add a significant safety factor because C++ compilers can tack on
+      # massive amounts of additional arguments before passing them to the
+      # linker.  It appears as though 1/2 is a usable value.
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    fi
+    ;;
+  esac
+
+fi
+
+if test -n $lt_cv_sys_max_cmd_len ; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
+$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
+$as_echo "none" >&6; }
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+
+
+
+
+
+: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
+$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
+# Try some XSI features
+xsi_shell=no
+( _lt_dummy="a/b/c"
+  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
+      = c,a/b,b/c, \
+    && eval 'test $(( 1 + 1 )) -eq 2 \
+    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+  && xsi_shell=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
+$as_echo "$xsi_shell" >&6; }
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
+$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
+lt_shell_append=no
+( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
+    >/dev/null 2>&1 \
+  && lt_shell_append=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
+$as_echo "$lt_shell_append" >&6; }
+
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  lt_unset=unset
+else
+  lt_unset=false
+fi
+
+
+
+
+
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+  lt_SP2NL='tr \040 \012'
+  lt_NL2SP='tr \015\012 \040\040'
+  ;;
+ *) # EBCDIC based system
+  lt_SP2NL='tr \100 \n'
+  lt_NL2SP='tr \r\n \100\100'
+  ;;
+esac
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
+$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
+if ${lt_cv_to_host_file_cmd+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
+        ;;
+    esac
+    ;;
+  *-*-cygwin* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_noop
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
+        ;;
+    esac
+    ;;
+  * ) # unhandled hosts (and "normal" native builds)
+    lt_cv_to_host_file_cmd=func_convert_file_noop
+    ;;
+esac
+
+fi
+
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
+$as_echo "$lt_cv_to_host_file_cmd" >&6; }
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
+$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
+if ${lt_cv_to_tool_file_cmd+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  #assume ordinary cross tools, or native build.
+lt_cv_to_tool_file_cmd=func_convert_file_noop
+case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
+        ;;
+    esac
+    ;;
+esac
+
+fi
+
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
+$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
+$as_echo_n "checking for $LD option to reload object files... " >&6; }
+if ${lt_cv_ld_reload_flag+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_reload_flag='-r'
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
+$as_echo "$lt_cv_ld_reload_flag" >&6; }
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    if test "$GCC" != yes; then
+      reload_cmds=false
+    fi
+    ;;
+  darwin*)
+    if test "$GCC" = yes; then
+      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+    else
+      reload_cmds='$LD$reload_flag -o $output$reload_objs'
+    fi
+    ;;
+esac
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OBJDUMP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OBJDUMP"; then
+  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
+    $as_echo "$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
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OBJDUMP"; then
+  ac_ct_OBJDUMP=$OBJDUMP
+  # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OBJDUMP"; then
+  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_OBJDUMP="objdump"
+    $as_echo "$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_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OBJDUMP" = x; then
+    OBJDUMP="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OBJDUMP=$ac_ct_OBJDUMP
+  fi
+else
+  OBJDUMP="$ac_cv_prog_OBJDUMP"
+fi
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
+$as_echo_n "checking how to recognize dependent libraries... " >&6; }
+if ${lt_cv_deplibs_check_method+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix[4-9]*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi[45]*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin*)
+  # func_win32_libid is a shell function defined in ltmain.sh
+  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+  lt_cv_file_magic_cmd='func_win32_libid'
+  ;;
+
+mingw* | pw32*)
+  # Base MSYS/MinGW do not provide the 'file' command needed by
+  # func_win32_libid shell function, so use a weaker test based on 'objdump',
+  # unless we find 'file', for example because we are cross-compiling.
+  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
+  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
+    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+    lt_cv_file_magic_cmd='func_win32_libid'
+  else
+    # Keep this pattern in sync with the one in func_win32_libid.
+    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+    lt_cv_file_magic_cmd='$OBJDUMP -f'
+  fi
+  ;;
+
+cegcc*)
+  # use the weaker test based on 'objdump'. See mingw*.
+  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+freebsd* | dragonfly*)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+haiku*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20* | hpux11*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  case $host_cpu in
+  ia64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
+    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+    ;;
+  hppa*64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'
+    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+    ;;
+  *)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library'
+    lt_cv_file_magic_test_file=/usr/lib/libc.sl
+    ;;
+  esac
+  ;;
+
+interix[3-9]*)
+  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+  lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $LD in
+  *-32|*"-32 ") libmagic=32-bit;;
+  *-n32|*"-n32 ") libmagic=N32;;
+  *-64|*"-64 ") libmagic=64-bit;;
+  *) libmagic=never-match;;
+  esac
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+netbsd*)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+*nto* | *qnx*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+openbsd*)
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  fi
+  ;;
+
+osf3* | osf4* | osf5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+rdos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.3*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  siemens)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  pc)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
+  ;;
+
+tpf*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
+$as_echo "$lt_cv_deplibs_check_method" >&6; }
+
+file_magic_glob=
+want_nocaseglob=no
+if test "$build" = "$host"; then
+  case $host_os in
+  mingw* | pw32*)
+    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
+      want_nocaseglob=yes
+    else
+      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
+    fi
+    ;;
+  esac
+fi
+
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DLLTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DLLTOOL"; then
+  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
+    $as_echo "$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
+DLLTOOL=$ac_cv_prog_DLLTOOL
+if test -n "$DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
+$as_echo "$DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DLLTOOL"; then
+  ac_ct_DLLTOOL=$DLLTOOL
+  # Extract the first word of "dlltool", so it can be a program name with args.
+set dummy dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DLLTOOL"; then
+  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
+    $as_echo "$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_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
+if test -n "$ac_ct_DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
+$as_echo "$ac_ct_DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_DLLTOOL" = x; then
+    DLLTOOL="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DLLTOOL=$ac_ct_DLLTOOL
+  fi
+else
+  DLLTOOL="$ac_cv_prog_DLLTOOL"
+fi
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
+$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
+if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_sharedlib_from_linklib_cmd='unknown'
+
+case $host_os in
+cygwin* | mingw* | pw32* | cegcc*)
+  # two different shell functions defined in ltmain.sh
+  # decide which to use based on capabilities of $DLLTOOL
+  case `$DLLTOOL --help 2>&1` in
+  *--identify-strict*)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
+    ;;
+  *)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
+    ;;
+  esac
+  ;;
+*)
+  # fallback: assume linklib IS sharedlib
+  lt_cv_sharedlib_from_linklib_cmd="$ECHO"
+  ;;
+esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
+$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in ar
+  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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+    $as_echo "$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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$AR" && break
+  done
+fi
+if test -z "$AR"; then
+  ac_ct_AR=$AR
+  for ac_prog in ar
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_AR="$ac_prog"
+    $as_echo "$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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_AR" && break
+done
+
+  if test "x$ac_ct_AR" = x; then
+    AR="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    AR=$ac_ct_AR
+  fi
+fi
+
+: ${AR=ar}
+: ${AR_FLAGS=cru}
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
+$as_echo_n "checking for archiver @FILE support... " >&6; }
+if ${lt_cv_ar_at_file+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ar_at_file=no
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  echo conftest.$ac_objext > conftest.lst
+      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
+      { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
+  (eval $lt_ar_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+      if test "$ac_status" -eq 0; then
+       # Ensure the archiver fails upon bogus file names.
+       rm -f conftest.$ac_objext libconftest.a
+       { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
+  (eval $lt_ar_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+       if test "$ac_status" -ne 0; then
+          lt_cv_ar_at_file=@
+        fi
+      fi
+      rm -f conftest.* libconftest.a
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
+$as_echo "$lt_cv_ar_at_file" >&6; }
+
+if test "x$lt_cv_ar_at_file" = xno; then
+  archiver_list_spec=
+else
+  archiver_list_spec=$lt_cv_ar_at_file
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$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
+
+test -z "$STRIP" && STRIP=:
+
+
+
+
+
+
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    $as_echo "$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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    $as_echo "$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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$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
+
+test -z "$RANLIB" && RANLIB=:
+
+
+
+
+
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  openbsd*)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+    ;;
+  *)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+case $host_os in
+  darwin*)
+    lock_old_archive_extraction=yes ;;
+  *)
+    lock_old_archive_extraction=no ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
+$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
+if ${lt_cv_sys_global_symbol_pipe+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[BCDT]'
+  ;;
+cygwin* | mingw* | pw32* | cegcc*)
+  symcode='[ABCDGISTW]'
+  ;;
+hpux*)
+  if test "$host_cpu" = ia64; then
+    symcode='[ABCDEGRST]'
+  fi
+  ;;
+irix* | nonstopux*)
+  symcode='[BCDEGRST]'
+  ;;
+osf*)
+  symcode='[BCDEGQRST]'
+  ;;
+solaris*)
+  symcode='[BDRT]'
+  ;;
+sco3.2v5*)
+  symcode='[DT]'
+  ;;
+sysv4.2uw2*)
+  symcode='[DT]'
+  ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+  symcode='[ABDT]'
+  ;;
+sysv4)
+  symcode='[DFNSTU]'
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+  symcode='[ABCDGIRSTW]' ;;
+esac
+
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# Try without a prefix underscore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+  symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+  # Write the raw and C identifiers.
+  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+    # Fake it for dumpbin and say T for any non-static function
+    # and D for any global variable.
+    # Also find C++ and __fastcall symbols from MSVC++,
+    # which start with @ or ?.
+    lt_cv_sys_global_symbol_pipe="$AWK '"\
+"     {last_section=section; section=\$ 3};"\
+"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+"     \$ 0!~/External *\|/{next};"\
+"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+"     {if(hide[section]) next};"\
+"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
+"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
+"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
+"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+"     ' prfx=^$ac_symprfx"
+  else
+    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[     ]\($symcode$symcode*\)[         ][      ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+  fi
+  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+
+  rm -f conftest*
+  cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_EOF
+
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
+  (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+       mv -f "$nlist"T "$nlist"
+      else
+       rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+       if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+         cat <<_LT_EOF > conftest.$ac_ext
+/* 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 con'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
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_LT_EOF
+         # Now generate the symbol file.
+         eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+
+         cat <<_LT_EOF >> conftest.$ac_ext
+
+/* The mapping between symbol names and symbols.  */
+LT_DLSYM_CONST struct {
+  const char *name;
+  void       *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[] =
+{
+  { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+         $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+         cat <<\_LT_EOF >> conftest.$ac_ext
+  {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+         # Now try linking the two files.
+         mv conftest.$ac_objext conftstm.$ac_objext
+         lt_globsym_save_LIBS=$LIBS
+         lt_globsym_save_CFLAGS=$CFLAGS
+         LIBS="conftstm.$ac_objext"
+         CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+         if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext}; then
+           pipe_works=yes
+         fi
+         LIBS=$lt_globsym_save_LIBS
+         CFLAGS=$lt_globsym_save_CFLAGS
+       else
+         echo "cannot find nm_test_func in $nlist" >&5
+       fi
+      else
+       echo "cannot find nm_test_var in $nlist" >&5
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+    fi
+  else
+    echo "$progname: failed program was:" >&5
+    cat conftest.$ac_ext >&5
+  fi
+  rm -rf conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test "$pipe_works" = yes; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
+  fi
+done
+
+fi
+
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+$as_echo "failed" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+fi
+
+# Response file support.
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+  nm_file_list_spec='@'
+elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
+  nm_file_list_spec='@'
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+$as_echo_n "checking for sysroot... " >&6; }
+
+# Check whether --with-sysroot was given.
+if test "${with_sysroot+set}" = set; then :
+  withval=$with_sysroot;
+else
+  with_sysroot=no
+fi
+
+
+lt_sysroot=
+case ${with_sysroot} in #(
+ yes)
+   if test "$GCC" = yes; then
+     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+   fi
+   ;; #(
+ /*)
+   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+   ;; #(
+ no|'')
+   ;; #(
+ *)
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
+$as_echo "${with_sysroot}" >&6; }
+   as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
+   ;;
+esac
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
+$as_echo "${lt_sysroot:-no}" >&6; }
+
+
+
+
+
+# Check whether --enable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then :
+  enableval=$enable_libtool_lock;
+fi
+
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.$ac_objext` in
+      *ELF-32*)
+       HPUX_IA64_MODE="32"
+       ;;
+      *ELF-64*)
+       HPUX_IA64_MODE="64"
+       ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '#line '$LINENO' "configure"' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    if test "$lt_cv_prog_gnu_ld" = yes; then
+      case `/usr/bin/file conftest.$ac_objext` in
+       *32-bit*)
+         LD="${LD-ld} -melf32bsmip"
+         ;;
+       *N32*)
+         LD="${LD-ld} -melf32bmipn32"
+         ;;
+       *64-bit*)
+         LD="${LD-ld} -melf64bmip"
+       ;;
+      esac
+    else
+      case `/usr/bin/file conftest.$ac_objext` in
+       *32-bit*)
+         LD="${LD-ld} -32"
+         ;;
+       *N32*)
+         LD="${LD-ld} -n32"
+         ;;
+       *64-bit*)
+         LD="${LD-ld} -64"
+         ;;
+      esac
+    fi
+  fi
+  rm -rf conftest*
+  ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.o` in
+      *32-bit*)
+       case $host in
+         x86_64-*kfreebsd*-gnu)
+           LD="${LD-ld} -m elf_i386_fbsd"
+           ;;
+         x86_64-*linux*)
+           LD="${LD-ld} -m elf_i386"
+           ;;
+         ppc64-*linux*|powerpc64-*linux*)
+           LD="${LD-ld} -m elf32ppclinux"
+           ;;
+         s390x-*linux*)
+           LD="${LD-ld} -m elf_s390"
+           ;;
+         sparc64-*linux*)
+           LD="${LD-ld} -m elf32_sparc"
+           ;;
+       esac
+       ;;
+      *64-bit*)
+       case $host in
+         x86_64-*kfreebsd*-gnu)
+           LD="${LD-ld} -m elf_x86_64_fbsd"
+           ;;
+         x86_64-*linux*)
+           LD="${LD-ld} -m elf_x86_64"
+           ;;
+         ppc*-*linux*|powerpc*-*linux*)
+           LD="${LD-ld} -m elf64ppc"
+           ;;
+         s390*-*linux*|s390*-*tpf*)
+           LD="${LD-ld} -m elf64_s390"
+           ;;
+         sparc*-*linux*)
+           LD="${LD-ld} -m elf64_sparc"
+           ;;
+       esac
+       ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
+$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
+if ${lt_cv_cc_needs_belf+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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
+
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_cc_needs_belf=yes
+else
+  lt_cv_cc_needs_belf=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
+$as_echo "$lt_cv_cc_needs_belf" >&6; }
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+sparc*-*solaris*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.o` in
+    *64-bit*)
+      case $lt_cv_prog_gnu_ld in
+      yes*) LD="${LD-ld} -m elf64_sparc" ;;
+      *)
+       if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+         LD="${LD-ld} -64"
+       fi
+       ;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+esac
+
+need_locks="$enable_libtool_lock"
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
+set dummy ${ac_tool_prefix}mt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$MANIFEST_TOOL"; then
+  ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
+    $as_echo "$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
+MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
+if test -n "$MANIFEST_TOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
+$as_echo "$MANIFEST_TOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
+  ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
+  # Extract the first word of "mt", so it can be a program name with args.
+set dummy mt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_MANIFEST_TOOL"; then
+  ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
+    $as_echo "$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_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
+if test -n "$ac_ct_MANIFEST_TOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
+$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_MANIFEST_TOOL" = x; then
+    MANIFEST_TOOL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
+  fi
+else
+  MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
+fi
+
+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
+$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
+if ${lt_cv_path_mainfest_tool+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_path_mainfest_tool=no
+  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
+  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
+  cat conftest.err >&5
+  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
+    lt_cv_path_mainfest_tool=yes
+  fi
+  rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
+$as_echo "$lt_cv_path_mainfest_tool" >&6; }
+if test "x$lt_cv_path_mainfest_tool" != xyes; then
+  MANIFEST_TOOL=:
+fi
+
+
+
+
+
+
+  case $host_os in
+    rhapsody* | darwin*)
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DSYMUTIL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DSYMUTIL"; then
+  ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
+    $as_echo "$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
+DSYMUTIL=$ac_cv_prog_DSYMUTIL
+if test -n "$DSYMUTIL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
+$as_echo "$DSYMUTIL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DSYMUTIL"; then
+  ac_ct_DSYMUTIL=$DSYMUTIL
+  # Extract the first word of "dsymutil", so it can be a program name with args.
+set dummy dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DSYMUTIL"; then
+  ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
+    $as_echo "$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_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
+if test -n "$ac_ct_DSYMUTIL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
+$as_echo "$ac_ct_DSYMUTIL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_DSYMUTIL" = x; then
+    DSYMUTIL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DSYMUTIL=$ac_ct_DSYMUTIL
+  fi
+else
+  DSYMUTIL="$ac_cv_prog_DSYMUTIL"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
+set dummy ${ac_tool_prefix}nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_NMEDIT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$NMEDIT"; then
+  ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
+    $as_echo "$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
+NMEDIT=$ac_cv_prog_NMEDIT
+if test -n "$NMEDIT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
+$as_echo "$NMEDIT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_NMEDIT"; then
+  ac_ct_NMEDIT=$NMEDIT
+  # Extract the first word of "nmedit", so it can be a program name with args.
+set dummy nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_NMEDIT"; then
+  ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_NMEDIT="nmedit"
+    $as_echo "$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_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
+if test -n "$ac_ct_NMEDIT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
+$as_echo "$ac_ct_NMEDIT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_NMEDIT" = x; then
+    NMEDIT=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    NMEDIT=$ac_ct_NMEDIT
+  fi
+else
+  NMEDIT="$ac_cv_prog_NMEDIT"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
+set dummy ${ac_tool_prefix}lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_LIPO+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$LIPO"; then
+  ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
+    $as_echo "$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
+LIPO=$ac_cv_prog_LIPO
+if test -n "$LIPO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
+$as_echo "$LIPO" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_LIPO"; then
+  ac_ct_LIPO=$LIPO
+  # Extract the first word of "lipo", so it can be a program name with args.
+set dummy lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_LIPO"; then
+  ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_LIPO="lipo"
+    $as_echo "$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_LIPO=$ac_cv_prog_ac_ct_LIPO
+if test -n "$ac_ct_LIPO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
+$as_echo "$ac_ct_LIPO" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_LIPO" = x; then
+    LIPO=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    LIPO=$ac_ct_LIPO
+  fi
+else
+  LIPO="$ac_cv_prog_LIPO"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OTOOL"; then
+  ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
+    $as_echo "$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
+OTOOL=$ac_cv_prog_OTOOL
+if test -n "$OTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
+$as_echo "$OTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL"; then
+  ac_ct_OTOOL=$OTOOL
+  # Extract the first word of "otool", so it can be a program name with args.
+set dummy otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OTOOL"; then
+  ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_OTOOL="otool"
+    $as_echo "$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_OTOOL=$ac_cv_prog_ac_ct_OTOOL
+if test -n "$ac_ct_OTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
+$as_echo "$ac_ct_OTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OTOOL" = x; then
+    OTOOL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OTOOL=$ac_ct_OTOOL
+  fi
+else
+  OTOOL="$ac_cv_prog_OTOOL"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OTOOL64+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OTOOL64"; then
+  ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
+    $as_echo "$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
+OTOOL64=$ac_cv_prog_OTOOL64
+if test -n "$OTOOL64"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
+$as_echo "$OTOOL64" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL64"; then
+  ac_ct_OTOOL64=$OTOOL64
+  # Extract the first word of "otool64", so it can be a program name with args.
+set dummy otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OTOOL64"; then
+  ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_OTOOL64="otool64"
+    $as_echo "$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_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
+if test -n "$ac_ct_OTOOL64"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
+$as_echo "$ac_ct_OTOOL64" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OTOOL64" = x; then
+    OTOOL64=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OTOOL64=$ac_ct_OTOOL64
+  fi
+else
+  OTOOL64="$ac_cv_prog_OTOOL64"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
+$as_echo_n "checking for -single_module linker flag... " >&6; }
+if ${lt_cv_apple_cc_single_mod+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_apple_cc_single_mod=no
+      if test -z "${LT_MULTI_MODULE}"; then
+       # By default we will add the -single_module flag. You can override
+       # by either setting the environment variable LT_MULTI_MODULE
+       # non-empty at configure time, or by adding -multi_module to the
+       # link flags.
+       rm -rf libconftest.dylib*
+       echo "int foo(void){return 1;}" > conftest.c
+       echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&5
+       $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+         -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+        _lt_result=$?
+       if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+         lt_cv_apple_cc_single_mod=yes
+       else
+         cat conftest.err >&5
+       fi
+       rm -rf libconftest.dylib*
+       rm -f conftest.*
+      fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
+$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
+$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
+if ${lt_cv_ld_exported_symbols_list+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_exported_symbols_list=no
+      save_LDFLAGS=$LDFLAGS
+      echo "_main" > conftest.sym
+      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_ld_exported_symbols_list=yes
+else
+  lt_cv_ld_exported_symbols_list=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+       LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
+$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
+$as_echo_n "checking for -force_load linker flag... " >&6; }
+if ${lt_cv_ld_force_load+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_force_load=no
+      cat > conftest.c << _LT_EOF
+int forced_loaded() { return 2;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
+      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
+      echo "$AR cru libconftest.a conftest.o" >&5
+      $AR cru libconftest.a conftest.o 2>&5
+      echo "$RANLIB libconftest.a" >&5
+      $RANLIB libconftest.a 2>&5
+      cat > conftest.c << _LT_EOF
+int main() { return 0;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
+      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
+      _lt_result=$?
+      if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
+       lt_cv_ld_force_load=yes
+      else
+       cat conftest.err >&5
+      fi
+        rm -f conftest.err libconftest.a conftest conftest.c
+        rm -rf conftest.dSYM
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
+$as_echo "$lt_cv_ld_force_load" >&6; }
+    case $host_os in
+    rhapsody* | darwin1.[012])
+      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+    darwin1.*)
+      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+    darwin*) # darwin 5.x on
+      # if running on 10.5 or later, the deployment target defaults
+      # to the OS version, if on x86, and 10.4, the deployment
+      # target defaults to 10.4. Don't you love it?
+      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+       10.0,*86*-darwin8*|10.0,*-darwin[91]*)
+         _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+       10.[012]*)
+         _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+       10.*)
+         _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+      esac
+    ;;
+  esac
+    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+      _lt_dar_single_mod='$single_module'
+    fi
+    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+    else
+      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    fi
+    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
+      _lt_dsymutil='~$DSYMUTIL $lib || :'
+    else
+      _lt_dsymutil=
+    fi
+    ;;
+  esac
+
+for ac_header in dlfcn.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_dlfcn_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DLFCN_H 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+# Set options
+
+
+
+        enable_dlopen=no
+
+
+  enable_win32_dll=no
+
+
+
+  # Check whether --enable-static was given.
+if test "${enable_static+set}" = set; then :
+  enableval=$enable_static; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
+    *)
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_static=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_static=yes
+fi
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-pic was given.
+if test "${with_pic+set}" = set; then :
+  withval=$with_pic; pic_mode="$withval"
+else
+  pic_mode=default
+fi
+
+
+test -z "$pic_mode" && pic_mode=default
+
+
+
+
+
+
+
+  # Check whether --enable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then :
+  enableval=$enable_fast_install; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_fast_install=yes ;;
+    no) enable_fast_install=no ;;
+    *)
+      enable_fast_install=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_fast_install=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_fast_install=yes
+fi
+
+
+
+
+
+
+
+
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+test -z "$LN_S" && LN_S="ln -s"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
+$as_echo_n "checking for objdir... " >&6; }
+if ${lt_cv_objdir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  lt_cv_objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
+$as_echo "$lt_cv_objdir" >&6; }
+objdir=$lt_cv_objdir
+
+
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define LT_OBJDIR "$lt_cv_objdir/"
+_ACEOF
+
+
+
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "X${COLLECT_NAMES+set}" != Xset; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
+$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/${ac_tool_prefix}file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+      if test -n "$file_magic_test_file"; then
+       case $deplibs_check_method in
+       "file_magic "*)
+         file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+         MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+         if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+           $EGREP "$file_magic_regex" > /dev/null; then
+           :
+         else
+           cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+         fi ;;
+       esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
+$as_echo_n "checking for file... " >&6; }
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/file"
+      if test -n "$file_magic_test_file"; then
+       case $deplibs_check_method in
+       "file_magic "*)
+         file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+         MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+         if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+           $EGREP "$file_magic_regex" > /dev/null; then
+           :
+         else
+           cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+         fi ;;
+       esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  else
+    MAGIC_CMD=:
+  fi
+fi
+
+  fi
+  ;;
+esac
+
+# Use C for the default configuration in the libtool script
+
+lt_save_CC="$CC"
+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
+
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+objext=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+
+lt_prog_compiler_no_builtin_flag=
+
+if test "$GCC" = yes; then
+  case $cc_basename in
+  nvcc*)
+    lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
+  *)
+    lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
+  esac
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
+if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_rtti_exceptions=no
+   ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="-fno-rtti -fno-exceptions"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_rtti_exceptions=yes
+     fi
+   fi
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+    lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+else
+    :
+fi
+
+fi
+
+
+
+
+
+
+  lt_prog_compiler_wl=
+lt_prog_compiler_pic=
+lt_prog_compiler_static=
+
+
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl='-Wl,'
+    lt_prog_compiler_static='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       lt_prog_compiler_static='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            lt_prog_compiler_pic='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the `-m68020' flag to GCC prevents building anything better,
+            # like `-m68040'.
+            lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic='-fno-common'
+      ;;
+
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      lt_prog_compiler_static=
+      ;;
+
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+       # +Z the default
+       ;;
+      *)
+       lt_prog_compiler_pic='-fPIC'
+       ;;
+      esac
+      ;;
+
+    interix[3-9]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared=no
+      enable_shared=no
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic='-fPIC -shared'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       lt_prog_compiler_pic=-Kconform_pic
+      fi
+      ;;
+
+    *)
+      lt_prog_compiler_pic='-fPIC'
+      ;;
+    esac
+
+    case $cc_basename in
+    nvcc*) # Cuda Compiler Driver 2.2
+      lt_prog_compiler_wl='-Xlinker '
+      lt_prog_compiler_pic='-Xcompiler -fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl='-Wl,'
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       lt_prog_compiler_static='-Bstatic'
+      else
+       lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+       # +Z the default
+       ;;
+      *)
+       lt_prog_compiler_pic='+Z'
+       ;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      case $cc_basename in
+      # old Intel for x86_64 which still supported -KPIC.
+      ecc*)
+       lt_prog_compiler_wl='-Wl,'
+       lt_prog_compiler_pic='-KPIC'
+       lt_prog_compiler_static='-static'
+        ;;
+      # icc used to be incompatible with GCC.
+      # ICC 10 doesn't accept -KPIC any more.
+      icc* | ifort*)
+       lt_prog_compiler_wl='-Wl,'
+       lt_prog_compiler_pic='-fPIC'
+       lt_prog_compiler_static='-static'
+        ;;
+      # Lahey Fortran 8.1.
+      lf95*)
+       lt_prog_compiler_wl='-Wl,'
+       lt_prog_compiler_pic='--shared'
+       lt_prog_compiler_static='--static'
+       ;;
+      nagfor*)
+       # NAG Fortran compiler
+       lt_prog_compiler_wl='-Wl,-Wl,,'
+       lt_prog_compiler_pic='-PIC'
+       lt_prog_compiler_static='-Bstatic'
+       ;;
+      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+       # which looks to be a dead project)
+       lt_prog_compiler_wl='-Wl,'
+       lt_prog_compiler_pic='-fpic'
+       lt_prog_compiler_static='-Bstatic'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static='-non_shared'
+        ;;
+      xl* | bgxl* | bgf* | mpixl*)
+       # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
+       lt_prog_compiler_wl='-Wl,'
+       lt_prog_compiler_pic='-qpic'
+       lt_prog_compiler_static='-qstaticlink'
+       ;;
+      *)
+       case `$CC -V 2>&1 | sed 5q` in
+       *Sun\ F* | *Sun*Fortran*)
+         # Sun Fortran 8.3 passes all unrecognized flags to the linker
+         lt_prog_compiler_pic='-KPIC'
+         lt_prog_compiler_static='-Bstatic'
+         lt_prog_compiler_wl=''
+         ;;
+       *Sun\ C*)
+         # Sun C 5.9
+         lt_prog_compiler_pic='-KPIC'
+         lt_prog_compiler_static='-Bstatic'
+         lt_prog_compiler_wl='-Wl,'
+         ;;
+       esac
+       ;;
+      esac
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic='-fPIC -shared'
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    rdos*)
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+       lt_prog_compiler_wl='-Qoption ld ';;
+      *)
+       lt_prog_compiler_wl='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl='-Qoption ld '
+      lt_prog_compiler_pic='-PIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+       lt_prog_compiler_pic='-Kconform_pic'
+       lt_prog_compiler_static='-Bstatic'
+      fi
+      ;;
+
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    unicos*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_can_build_shared=no
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic='-pic'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared=no
+      ;;
+    esac
+  fi
+
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic=
+    ;;
+  *)
+    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+    ;;
+esac
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+if ${lt_cv_prog_compiler_pic+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
+$as_echo "$lt_cv_prog_compiler_pic" >&6; }
+lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
+if ${lt_cv_prog_compiler_pic_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic_works=no
+   ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_pic_works=yes
+     fi
+   fi
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
+
+if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
+    case $lt_prog_compiler_pic in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
+     esac
+else
+    lt_prog_compiler_pic=
+     lt_prog_compiler_can_build_shared=no
+fi
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if ${lt_cv_prog_compiler_static_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_static_works=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler_static_works=yes
+       fi
+     else
+       lt_cv_prog_compiler_static_works=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
+$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
+
+if test x"$lt_cv_prog_compiler_static_works" = xyes; then
+    :
+else
+    lt_prog_compiler_static=
+fi
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+  hard_links=yes
+  $RM conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+  if test "$hard_links" = no; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+
+  runpath_var=
+  allow_undefined_flag=
+  always_export_symbols=no
+  archive_cmds=
+  archive_expsym_cmds=
+  compiler_needs_object=no
+  enable_shared_with_static_runtimes=no
+  export_dynamic_flag_spec=
+  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  hardcode_automatic=no
+  hardcode_direct=no
+  hardcode_direct_absolute=no
+  hardcode_libdir_flag_spec=
+  hardcode_libdir_flag_spec_ld=
+  hardcode_libdir_separator=
+  hardcode_minus_L=no
+  hardcode_shlibpath_var=unsupported
+  inherit_rpath=no
+  link_all_deplibs=unknown
+  module_cmds=
+  module_expsym_cmds=
+  old_archive_from_new_cmds=
+  old_archive_from_expsyms_cmds=
+  thread_safe_flag_spec=
+  whole_archive_flag_spec=
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  # Exclude shared library initialization/finalization symbols.
+  extract_expsyms_cmds=
+
+  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
+
+  # On some targets, GNU ld is compatible enough with the native linker
+  # that we're better off using the native interface for both.
+  lt_use_gnu_ld_interface=no
+  if test "$with_gnu_ld" = yes; then
+    case $host_os in
+      aix*)
+       # The AIX port of GNU ld has always aspired to compatibility
+       # with the native linker.  However, as the warning in the GNU ld
+       # block says, versions before 2.19.5* couldn't really create working
+       # shared libraries, regardless of the interface used.
+       case `$LD -v 2>&1` in
+         *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
+         *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
+         *\ \(GNU\ Binutils\)\ [3-9]*) ;;
+         *)
+           lt_use_gnu_ld_interface=yes
+           ;;
+       esac
+       ;;
+      *)
+       lt_use_gnu_ld_interface=yes
+       ;;
+    esac
+  fi
+
+  if test "$lt_use_gnu_ld_interface" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # 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.
+    runpath_var=LD_RUN_PATH
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    export_dynamic_flag_spec='${wl}--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+      whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    else
+      whole_archive_flag_spec=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>&1` in
+      *GNU\ gold*) supports_anon_versioning=yes ;;
+      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
+    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
+       cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.19, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to install binutils
+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
+*** You will then need to restart the configuration process.
+
+_LT_EOF
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            archive_expsym_cmds=''
+        ;;
+      m68k)
+            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            hardcode_libdir_flag_spec='-L$libdir'
+            hardcode_minus_L=yes
+        ;;
+      esac
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+       allow_undefined_flag=unsupported
+       # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+       # support --undefined.  This deserves some investigation.  FIXME
+       archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+       ld_shlibs=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec='-L$libdir'
+      export_dynamic_flag_spec='${wl}--export-all-symbols'
+      allow_undefined_flag=unsupported
+      always_export_symbols=no
+      enable_shared_with_static_runtimes=yes
+      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
+      exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
+
+      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+       # If the export-symbols file already is a .def file (1st line
+       # is EXPORTS), use it as is; otherwise, prepend...
+       archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+         cp $export_symbols $output_objdir/$soname.def;
+       else
+         echo EXPORTS > $output_objdir/$soname.def;
+         cat $export_symbols >> $output_objdir/$soname.def;
+       fi~
+       $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+      else
+       ld_shlibs=no
+      fi
+      ;;
+
+    haiku*)
+      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      link_all_deplibs=yes
+      ;;
+
+    interix[3-9]*)
+      hardcode_direct=no
+      hardcode_shlibpath_var=no
+      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+      export_dynamic_flag_spec='${wl}-E'
+      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+      # Instead, shared libraries are loaded at an image base (0x10000000 by
+      # default) and relocated if they conflict, which is a slow very memory
+      # consuming and fragmenting process.  To avoid this, we pick a random,
+      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+      archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      ;;
+
+    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+      tmp_diet=no
+      if test "$host_os" = linux-dietlibc; then
+       case $cc_basename in
+         diet\ *) tmp_diet=yes;;       # linux-dietlibc with static linking (!diet-dyn)
+       esac
+      fi
+      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+        && test "$tmp_diet" = no
+      then
+       tmp_addflag=' $pic_flag'
+       tmp_sharedflag='-shared'
+       case $cc_basename,$host_cpu in
+        pgcc*)                         # Portland Group C compiler
+         whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+         tmp_addflag=' $pic_flag'
+         ;;
+       pgf77* | pgf90* | pgf95* | pgfortran*)
+                                       # Portland Group f77 and f90 compilers
+         whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+         tmp_addflag=' $pic_flag -Mnomain' ;;
+       ecc*,ia64* | icc*,ia64*)        # Intel C compiler on ia64
+         tmp_addflag=' -i_dynamic' ;;
+       efc*,ia64* | ifort*,ia64*)      # Intel Fortran compiler on ia64
+         tmp_addflag=' -i_dynamic -nofor_main' ;;
+       ifc* | ifort*)                  # Intel Fortran compiler
+         tmp_addflag=' -nofor_main' ;;
+       lf95*)                          # Lahey Fortran 8.1
+         whole_archive_flag_spec=
+         tmp_sharedflag='--shared' ;;
+       xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+         tmp_sharedflag='-qmkshrobj'
+         tmp_addflag= ;;
+       nvcc*)  # Cuda Compiler Driver 2.2
+         whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+         compiler_needs_object=yes
+         ;;
+       esac
+       case `$CC -V 2>&1 | sed 5q` in
+       *Sun\ C*)                       # Sun C 5.9
+         whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+         compiler_needs_object=yes
+         tmp_sharedflag='-G' ;;
+       *Sun\ F*)                       # Sun Fortran 8.3
+         tmp_sharedflag='-G' ;;
+       esac
+       archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+        if test "x$supports_anon_versioning" = xyes; then
+          archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+           cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+           echo "local: *; };" >> $output_objdir/$libname.ver~
+           $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+        fi
+
+       case $cc_basename in
+       xlf* | bgf* | bgxlf* | mpixlf*)
+         # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+         whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+         hardcode_libdir_flag_spec=
+         hardcode_libdir_flag_spec_ld='-rpath $libdir'
+         archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+         if test "x$supports_anon_versioning" = xyes; then
+           archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+             cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+             echo "local: *; };" >> $output_objdir/$libname.ver~
+             $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+         fi
+         ;;
+       esac
+      else
+        ld_shlibs=no
+      fi
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+       archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+       wlarc=
+      else
+       archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris*)
+      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+       ld_shlibs=no
+       cat <<_LT_EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+       archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      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
+       cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+       ;;
+       *)
+         # For security reasons, it is highly recommended that you always
+         # use absolute paths for naming shared libraries, and exclude the
+         # DT_RUNPATH tag from executables and libraries.  But doing so
+         # requires that you compile everything twice, which is a pain.
+         if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+           hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+           archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+           archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+         else
+           ld_shlibs=no
+         fi
+       ;;
+      esac
+      ;;
+
+    sunos4*)
+      archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+       archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+       ld_shlibs=no
+      fi
+      ;;
+    esac
+
+    if test "$ld_shlibs" = no; then
+      runpath_var=
+      hardcode_libdir_flag_spec=
+      export_dynamic_flag_spec=
+      whole_archive_flag_spec=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag=unsupported
+      always_export_symbols=yes
+      archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L=yes
+      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; 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
+       exp_sym_flag='-Bexport'
+       no_entry_flag=""
+      else
+       # If we're using GNU nm, then we don't want the "-C" option.
+       # -C means demangle to AIX nm, but means don't demangle with GNU nm
+       # Also, AIX nm treats weak defined symbols like other global
+       # defined symbols, whereas GNU nm marks them as "W".
+       if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+         export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+       else
+         export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+       fi
+       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
+
+       exp_sym_flag='-bexport'
+       no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      archive_cmds=''
+      hardcode_direct=yes
+      hardcode_direct_absolute=yes
+      hardcode_libdir_separator=':'
+      link_all_deplibs=yes
+      file_list_spec='${wl}-f,'
+
+      if test "$GCC" = yes; then
+       case $host_os in aix4.[012]|aix4.[012].*)
+       # We only want to do this on AIX 4.2 and lower, the check
+       # below for broken collect2 doesn't work under 4.3+
+         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
+         # It fails to find uninstalled libraries when the uninstalled
+         # path is not listed in the libpath.  Setting hardcode_minus_L
+         # to unsupported forces relinking
+         hardcode_minus_L=yes
+         hardcode_libdir_flag_spec='-L$libdir'
+         hardcode_libdir_separator=
+         fi
+         ;;
+       esac
+       shared_flag='-shared'
+       if test "$aix_use_runtimelinking" = yes; then
+         shared_flag="$shared_flag "'${wl}-G'
+       fi
+      else
+       # not using gcc
+       if test "$host_cpu" = ia64; then
+       # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+       # chokes on -Wl,-G. The following line is correct:
+         shared_flag='-G'
+       else
+         if test "$aix_use_runtimelinking" = yes; then
+           shared_flag='${wl}-G'
+         else
+           shared_flag='${wl}-bM:SRE'
+         fi
+       fi
+      fi
+
+      export_dynamic_flag_spec='${wl}-bexpall'
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols=yes
+      if test "$aix_use_runtimelinking" = yes; then
+       # Warning - without using the other runtime loading flags (-brtl),
+       # -berok will link without error, but may produce a broken library.
+       allow_undefined_flag='-berok'
+        # Determine the default libpath from the value encoded in an
+        # empty executable.
+        if test "${lt_cv_aix_libpath+set}" = set; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath_+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+         /^0/ {
+             s/^0  *\([^ ]*\) *$/\1/
+             p
+         }
+      }'
+  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_="/usr/lib:/lib"
+  fi
+
+fi
+
+  aix_libpath=$lt_cv_aix_libpath_
+fi
+
+        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+        archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+      else
+       if test "$host_cpu" = ia64; then
+         hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+         allow_undefined_flag="-z nodefs"
+         archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+       else
+        # Determine the default libpath from the value encoded in an
+        # empty executable.
+        if test "${lt_cv_aix_libpath+set}" = set; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath_+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+         /^0/ {
+             s/^0  *\([^ ]*\) *$/\1/
+             p
+         }
+      }'
+  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_="/usr/lib:/lib"
+  fi
+
+fi
+
+  aix_libpath=$lt_cv_aix_libpath_
+fi
+
+        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+         # Warning - without using the other run time loading flags,
+         # -berok will link without error, but may produce a broken library.
+         no_undefined_flag=' ${wl}-bernotok'
+         allow_undefined_flag=' ${wl}-berok'
+         if test "$with_gnu_ld" = yes; then
+           # We only use this code for GNU lds that support --whole-archive.
+           whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+         else
+           # Exported symbols can be pulled into shared objects from archives
+           whole_archive_flag_spec='$convenience'
+         fi
+         archive_cmds_need_lc=yes
+         # This is similar to how AIX traditionally builds its shared libraries.
+         archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+       fi
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            archive_expsym_cmds=''
+        ;;
+      m68k)
+            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            hardcode_libdir_flag_spec='-L$libdir'
+            hardcode_minus_L=yes
+        ;;
+      esac
+      ;;
+
+    bsdi[45]*)
+      export_dynamic_flag_spec=-rdynamic
+      ;;
+
+    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.
+      case $cc_basename in
+      cl*)
+       # Native MSVC
+       hardcode_libdir_flag_spec=' '
+       allow_undefined_flag=unsupported
+       always_export_symbols=yes
+       file_list_spec='@'
+       # Tell ltmain to make .lib files, not .a files.
+       libext=lib
+       # Tell ltmain to make .dll files, not .so files.
+       shrext_cmds=".dll"
+       # FIXME: Setting linknames here is a bad hack.
+       archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
+       archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+           sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
+         else
+           sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+         fi~
+         $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+         linknames='
+       # The linker will not automatically build a static lib if we build a DLL.
+       # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
+       enable_shared_with_static_runtimes=yes
+       export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
+       # Don't use ranlib
+       old_postinstall_cmds='chmod 644 $oldlib'
+       postlink_cmds='lt_outputfile="@OUTPUT@"~
+         lt_tool_outputfile="@TOOL_OUTPUT@"~
+         case $lt_outputfile in
+           *.exe|*.EXE) ;;
+           *)
+             lt_outputfile="$lt_outputfile.exe"
+             lt_tool_outputfile="$lt_tool_outputfile.exe"
+             ;;
+         esac~
+         if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
+           $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+           $RM "$lt_outputfile.manifest";
+         fi'
+       ;;
+      *)
+       # Assume MSVC wrapper
+       hardcode_libdir_flag_spec=' '
+       allow_undefined_flag=unsupported
+       # Tell ltmain to make .lib files, not .a files.
+       libext=lib
+       # Tell ltmain to make .dll files, not .so files.
+       shrext_cmds=".dll"
+       # FIXME: Setting linknames here is a bad hack.
+       archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+       # The linker will automatically build a .lib file if we build a DLL.
+       old_archive_from_new_cmds='true'
+       # FIXME: Should let the user specify the lib program.
+       old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+       enable_shared_with_static_runtimes=yes
+       ;;
+      esac
+      ;;
+
+    darwin* | rhapsody*)
+
+
+  archive_cmds_need_lc=no
+  hardcode_direct=no
+  hardcode_automatic=yes
+  hardcode_shlibpath_var=unsupported
+  if test "$lt_cv_ld_force_load" = "yes"; then
+    whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+  else
+    whole_archive_flag_spec=''
+  fi
+  link_all_deplibs=yes
+  allow_undefined_flag="$_lt_dar_allow_undefined"
+  case $cc_basename in
+     ifort*) _lt_dar_can_shared=yes ;;
+     *) _lt_dar_can_shared=$GCC ;;
+  esac
+  if test "$_lt_dar_can_shared" = "yes"; then
+    output_verbose_link_cmd=func_echo_all
+    archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+    module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+    archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+    module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+
+  else
+  ld_shlibs=no
+  fi
+
+      ;;
+
+    dgux*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
+
+    freebsd1*)
+      ld_shlibs=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | dragonfly*)
+      archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+       archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+       archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      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
+      export_dynamic_flag_spec='${wl}-E'
+      ;;
+
+    hpux10*)
+      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+       archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      if test "$with_gnu_ld" = no; then
+       hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+       hardcode_libdir_flag_spec_ld='+b $libdir'
+       hardcode_libdir_separator=:
+       hardcode_direct=yes
+       hardcode_direct_absolute=yes
+       export_dynamic_flag_spec='${wl}-E'
+       # 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 "$GCC" = yes && test "$with_gnu_ld" = no; then
+       case $host_cpu in
+       hppa*64*)
+         archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       ia64*)
+         archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       *)
+         archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       esac
+      else
+       case $host_cpu in
+       hppa*64*)
+         archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       ia64*)
+         archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       *)
+
+         # Older versions of the 11.00 compiler do not understand -b yet
+         # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
+$as_echo_n "checking if $CC understands -b... " >&6; }
+if ${lt_cv_prog_compiler__b+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler__b=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS -b"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler__b=yes
+       fi
+     else
+       lt_cv_prog_compiler__b=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
+$as_echo "$lt_cv_prog_compiler__b" >&6; }
+
+if test x"$lt_cv_prog_compiler__b" = xyes; then
+    archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+else
+    archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+fi
+
+         ;;
+       esac
+      fi
+      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_shlibpath_var=no
+         ;;
+       *)
+         hardcode_direct=yes
+         hardcode_direct_absolute=yes
+         export_dynamic_flag_spec='${wl}-E'
+
+         # 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*)
+      if test "$GCC" = yes; then
+       archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+       # Try to use the -exported_symbol ld option, if it does not
+       # work, assume that -exports_file does not work either and
+       # implicitly export all symbols.
+       # This should be the same for all languages, so no per-tag cache variable.
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
+$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
+if ${lt_cv_irix_exported_symbol+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  save_LDFLAGS="$LDFLAGS"
+          LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+          cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int foo (void) { return 0; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_irix_exported_symbol=yes
+else
+  lt_cv_irix_exported_symbol=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+           LDFLAGS="$save_LDFLAGS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
+$as_echo "$lt_cv_irix_exported_symbol" >&6; }
+       if test "$lt_cv_irix_exported_symbol" = yes; then
+          archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+       fi
+      else
+       archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+       archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+      fi
+      archive_cmds_need_lc='no'
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      inherit_rpath=yes
+      link_all_deplibs=yes
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+       archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+       archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    newsos6)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_shlibpath_var=no
+      ;;
+
+    *nto* | *qnx*)
+      ;;
+
+    openbsd*)
+      if test -f /usr/libexec/ld.so; then
+       hardcode_direct=yes
+       hardcode_shlibpath_var=no
+       hardcode_direct_absolute=yes
+       if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+         archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+         archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+         hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+         export_dynamic_flag_spec='${wl}-E'
+       else
+         case $host_os in
+          openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+            archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+            hardcode_libdir_flag_spec='-R$libdir'
+            ;;
+          *)
+            archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+            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
+      allow_undefined_flag=unsupported
+      archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+       allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+       archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+       allow_undefined_flag=' -expect_unresolved \*'
+       archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      archive_cmds_need_lc='no'
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      ;;
+
+    osf4* | osf5*)     # as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+       allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+       archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+       hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      else
+       allow_undefined_flag=' -expect_unresolved \*'
+       archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+       archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+       $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+
+       # Both c and cxx compiler support -rpath directly
+       hardcode_libdir_flag_spec='-rpath $libdir'
+      fi
+      archive_cmds_need_lc='no'
+      hardcode_libdir_separator=:
+      ;;
+
+    solaris*)
+      no_undefined_flag=' -z defs'
+      if test "$GCC" = yes; then
+       wlarc='${wl}'
+       archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+         $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+      else
+       case `$CC -V 2>&1` in
+       *"Compilers 5.0"*)
+         wlarc=''
+         archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+         $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+         ;;
+       *)
+         wlarc='${wl}'
+         archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+         archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+         $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+         ;;
+       esac
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_shlibpath_var=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *)
+       # The compiler driver will combine and reorder linker options,
+       # but understands `-z linker_flag'.  GCC discards it without `$wl',
+       # but is careful enough not to reorder.
+       # Supported since Solaris 2.6 (maybe 2.5.1?)
+       if test "$GCC" = yes; then
+         whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+       else
+         whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
+       fi
+       ;;
+      esac
+      link_all_deplibs=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+       # Use $CC to link under sequent, because it throws in some extra .o
+       # files that make .init and .fini sections work.
+       archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+       sni)
+         archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         hardcode_direct=yes # is this really true???
+       ;;
+       siemens)
+         ## LD is ld it makes a PLAMLIB
+         ## CC just makes a GrossModule.
+         archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+         reload_cmds='$CC -r -o $output$reload_objs'
+         hardcode_direct=no
+        ;;
+       motorola)
+         archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+       ;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var=no
+      export_dynamic_flag_spec='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+       hardcode_shlibpath_var=no
+       runpath_var=LD_RUN_PATH
+       hardcode_runpath_var=yes
+       ld_shlibs=yes
+      fi
+      ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+      no_undefined_flag='${wl}-z,text'
+      archive_cmds_need_lc=no
+      hardcode_shlibpath_var=no
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+       archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6*)
+      # Note: We can NOT use -z defs as we might desire, because we do not
+      # link with -lc, and that would cause any symbols used from libc to
+      # always be unresolved, which means just about no library would
+      # ever link correctly.  If we're not using GNU ld we use -z text
+      # though, which does catch some bad symbols but isn't as heavy-handed
+      # as -z defs.
+      no_undefined_flag='${wl}-z,text'
+      allow_undefined_flag='${wl}-z,nodefs'
+      archive_cmds_need_lc=no
+      hardcode_shlibpath_var=no
+      hardcode_libdir_flag_spec='${wl}-R,$libdir'
+      hardcode_libdir_separator=':'
+      link_all_deplibs=yes
+      export_dynamic_flag_spec='${wl}-Bexport'
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+       archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    uts4*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
+
+    *)
+      ld_shlibs=no
+      ;;
+    esac
+
+    if test x$host_vendor = xsni; then
+      case $host in
+      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+       export_dynamic_flag_spec='${wl}-Blargedynsym'
+       ;;
+      esac
+    fi
+  fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
+$as_echo "$ld_shlibs" >&6; }
+test "$ld_shlibs" = no && can_build_shared=no
+
+with_gnu_ld=$with_gnu_ld
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+if ${lt_cv_archive_cmds_need_lc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  $RM conftest*
+       echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+       if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } 2>conftest.err; then
+         soname=conftest
+         lib=conftest
+         libobjs=conftest.$ac_objext
+         deplibs=
+         wl=$lt_prog_compiler_wl
+         pic_flag=$lt_prog_compiler_pic
+         compiler_flags=-v
+         linker_flags=-v
+         verstring=
+         output_objdir=.
+         libname=conftest
+         lt_save_allow_undefined_flag=$allow_undefined_flag
+         allow_undefined_flag=
+         if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+         then
+           lt_cv_archive_cmds_need_lc=no
+         else
+           lt_cv_archive_cmds_need_lc=yes
+         fi
+         allow_undefined_flag=$lt_save_allow_undefined_flag
+       else
+         cat conftest.err 1>&5
+       fi
+       $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
+      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
+
+if test "$GCC" = yes; then
+  case $host_os in
+    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+    *) lt_awk_arg="/^libraries:/" ;;
+  esac
+  case $host_os in
+    mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;;
+    *) lt_sed_strip_eq="s,=/,/,g" ;;
+  esac
+  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
+  case $lt_search_path_spec in
+  *\;*)
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
+    ;;
+  *)
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
+    ;;
+  esac
+  # Ok, now we have the path, separated by spaces, we can step through it
+  # and add multilib dir if necessary.
+  lt_tmp_lt_search_path_spec=
+  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+  for lt_sys_path in $lt_search_path_spec; do
+    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+    else
+      test -d "$lt_sys_path" && \
+       lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+    fi
+  done
+  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+  lt_foo="";
+  lt_count=0;
+  for (lt_i = NF; lt_i > 0; lt_i--) {
+    if ($lt_i != "" && $lt_i != ".") {
+      if ($lt_i == "..") {
+        lt_count++;
+      } else {
+        if (lt_count == 0) {
+          lt_foo="/" $lt_i lt_foo;
+        } else {
+          lt_count--;
+        }
+      }
+    }
+  }
+  if (lt_foo != "") { lt_freq[lt_foo]++; }
+  if (lt_freq[lt_foo] == 1) { print lt_foo; }
+}'`
+  # AWK program above erroneously prepends '/' to C:/dos/paths
+  # for these hosts.
+  case $host_os in
+    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
+      $SED 's,/\([A-Za-z]:\),\1,g'` ;;
+  esac
+  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix[4-9]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+          echo ' yes '
+          echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+       :
+      else
+       can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  case $host_cpu in
+  powerpc)
+    # Since July 2007 AmigaOS4 officially supports .so libraries.
+    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    ;;
+  m68k)
+    library_names_spec='$libname.ixlibrary $libname.a'
+    # Create ${libname}_ixlibrary.a entries in /sys/libs.
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+    ;;
+  esac
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[45]*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$cc_basename in
+  yes,*)
+    # gcc
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname~
+      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+      fi'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+
+      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
+      ;;
+    mingw* | cegcc*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    dynamic_linker='Win32 ld.exe'
+    ;;
+
+  *,cl*)
+    # Native MSVC
+    libname_spec='$name'
+    soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+    library_names_spec='${libname}.dll.lib'
+
+    case $build_os in
+    mingw*)
+      sys_lib_search_path_spec=
+      lt_save_ifs=$IFS
+      IFS=';'
+      for lt_path in $LIB
+      do
+        IFS=$lt_save_ifs
+        # Let DOS variable expansion print the short 8.3 style file name.
+        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+      done
+      IFS=$lt_save_ifs
+      # Convert to MSYS style.
+      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
+      ;;
+    cygwin*)
+      # Convert to unix form, then to dos form, then back to unix form
+      # but this time dos style (no spaces!) so that the unix form looks
+      # like /cygdrive/c/PROGRA~1:/cygdr...
+      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      ;;
+    *)
+      sys_lib_search_path_spec="$LIB"
+      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH.
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      # FIXME: find the short name or the path components, as spaces are
+      # common. (e.g. "Program Files" -> "PROGRA~1")
+      ;;
+    esac
+
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+    dynamic_linker='Win32 link.exe'
+    ;;
+
+  *)
+    # Assume MSVC wrapper
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    dynamic_linker='Win32 ld.exe'
+    ;;
+  esac
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+
+  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[123]*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  *) # from 4.6 on, and DragonFly
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+haiku*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  dynamic_linker="$host_os runtime_loader"
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  hppa*64*)
+    shrext_cmds='.sl'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
+  postinstall_cmds='chmod 555 $lib'
+  # or fails outright, so override atomically:
+  install_override_mode=555
+  ;;
+
+interix[3-9]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+       if test "$lt_cv_prog_gnu_ld" = yes; then
+               version_type=linux
+       else
+               version_type=irix
+       fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+
+  # Some binutils ld are patched to set DT_RUNPATH
+  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_shlibpath_overrides_runpath=no
+    save_LDFLAGS=$LDFLAGS
+    save_libdir=$libdir
+    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
+        LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+  lt_cv_shlibpath_overrides_runpath=yes
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    LDFLAGS=$save_LDFLAGS
+    libdir=$save_libdir
+
+fi
+
+  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Add ABI-specific directories to the system library path.
+  sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib"
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[      ]*hwcap[        ]/d;s/[:,      ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra"
+
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+*nto* | *qnx*)
+  version_type=qnx
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='ldqnx.so'
+  ;;
+
+openbsd*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+    *)                         need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+       shlibpath_overrides_runpath=no
+       ;;
+      *)
+       shlibpath_overrides_runpath=yes
+       ;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+rdos*)
+  dynamic_linker=no
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+       ;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
+tpf*)
+  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" ||
+   test -n "$runpath_var" ||
+   test "X$hardcode_automatic" = "Xyes" ; then
+
+  # We can hardcode non-existent directories.
+  if test "$hardcode_direct" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
+     test "$hardcode_minus_L" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action=unsupported
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
+$as_echo "$hardcode_action" >&6; }
+
+if test "$hardcode_action" = relink ||
+   test "$inherit_rpath" = yes; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+
+
+
+
+
+  if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32* | cegcc*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+    ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+    ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dl_dlopen=yes
+else
+  ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+
+fi
+
+    ;;
+
+  *)
+    ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
+if test "x$ac_cv_func_shl_load" = xyes; then :
+  lt_cv_dlopen="shl_load"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
+$as_echo_n "checking for shl_load in -ldld... " >&6; }
+if ${ac_cv_lib_dld_shl_load+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $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.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load ();
+int
+main ()
+{
+return shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dld_shl_load=yes
+else
+  ac_cv_lib_dld_shl_load=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
+$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
+if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
+else
+  ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
+if test "x$ac_cv_func_dlopen" = xyes; then :
+  lt_cv_dlopen="dlopen"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dl_dlopen=yes
+else
+  ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
+$as_echo_n "checking for dlopen in -lsvld... " >&6; }
+if ${ac_cv_lib_svld_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $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.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_svld_dlopen=yes
+else
+  ac_cv_lib_svld_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
+$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
+if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
+$as_echo_n "checking for dld_link in -ldld... " >&6; }
+if ${ac_cv_lib_dld_dld_link+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $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.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dld_link ();
+int
+main ()
+{
+return dld_link ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dld_dld_link=yes
+else
+  ac_cv_lib_dld_dld_link=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
+$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
+if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
+$as_echo_n "checking whether a program can dlopen itself... " >&6; }
+if ${lt_cv_dlopen_self+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+         if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<_LT_EOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL          RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL                DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL                0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW           RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW         DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW       RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW     DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW     0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+/* When -fvisbility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 42; }
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else
+        {
+         if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+       }
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+  return status;
+}
+_LT_EOF
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) >&5 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
+$as_echo "$lt_cv_dlopen_self" >&6; }
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
+$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
+if ${lt_cv_dlopen_self_static+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+         if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self_static=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<_LT_EOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL          RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL                DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL                0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW           RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW         DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW       RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW     DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW     0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+/* When -fvisbility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 42; }
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else
+        {
+         if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+       }
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+  return status;
+}
+_LT_EOF
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) >&5 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self_static=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
+$as_echo "$lt_cv_dlopen_self_static" >&6; }
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+striplib=
+old_striplib=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
+$as_echo_n "checking whether stripping libraries is possible... " >&6; }
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+  darwin*)
+    if test -n "$STRIP" ; then
+      striplib="$STRIP -x"
+      old_striplib="$STRIP -S"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    fi
+    ;;
+  *)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    ;;
+  esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+  # Report which library types will actually be built
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
+$as_echo_n "checking if libtool supports shared libraries... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
+$as_echo "$can_build_shared" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
+$as_echo_n "checking whether to build shared libraries... " >&6; }
+  test "$can_build_shared" = "no" && enable_shared=no
+
+  # On AIX, shared libraries and static libraries use the same namespace, and
+  # are all built from PIC.
+  case $host_os in
+  aix3*)
+    test "$enable_shared" = yes && enable_static=no
+    if test -n "$RANLIB"; then
+      archive_cmds="$archive_cmds~\$RANLIB \$lib"
+      postinstall_cmds='$RANLIB $lib'
+    fi
+    ;;
+
+  aix[4-9]*)
+    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+      test "$enable_shared" = yes && enable_static=no
+    fi
+    ;;
+  esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
+$as_echo "$enable_shared" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
+$as_echo_n "checking whether to build static libraries... " >&6; }
+  # Make sure either enable_shared or enable_static is yes.
+  test "$enable_shared" = yes || enable_static=yes
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
+$as_echo "$enable_static" >&6; }
+
+
+
+
+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
+
+CC="$lt_save_CC"
+
+
+
+
+
+
+
+
+
+
+
+
+
+        ac_config_commands="$ac_config_commands libtool"
+
+
+
+
+# Only expand once:
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5
+$as_echo_n "checking whether NLS is requested... " >&6; }
+    # Check whether --enable-nls was given.
+if test "${enable_nls+set}" = set; then :
+  enableval=$enable_nls; USE_NLS=$enableval
+else
+  USE_NLS=yes
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5
+$as_echo "$USE_NLS" >&6; }
+
+
+
+
+      GETTEXT_MACRO_VERSION=0.18
+
+
+
+
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+# 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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_MSGFMT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5
+$as_echo "$MSGFMT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  # Extract the first word of "gmsgfmt", so it can be a program name with args.
+set dummy gmsgfmt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_GMSGFMT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5
+$as_echo "$GMSGFMT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+    case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;;
+    *) MSGFMT_015=$MSGFMT ;;
+  esac
+
+  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
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+# 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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_XGETTEXT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5
+$as_echo "$XGETTEXT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "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
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+# 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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_MSGMERGE+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5
+$as_echo "$MSGMERGE" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+        test -n "$localedir" || localedir='${datadir}/locale'
+
+
+    test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS=
+
+
+  ac_config_commands="$ac_config_commands po-directories"
+
+
+
+
+
+
+
+
+
+
+
+
+
+    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\"
+
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+
+# Check whether --with-libiconv-prefix was given.
+if test "${with_libiconv_prefix+set}" = set; 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\"
+
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+      else
+        additional_includedir="$withval/include"
+        additional_libdir="$withval/$acl_libdirstem"
+        if test "$acl_libdirstem2" != "$acl_libdirstem" \
+           && ! test -d "$withval/$acl_libdirstem"; then
+          additional_libdir="$withval/$acl_libdirstem2"
+        fi
+      fi
+    fi
+
+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
+            dir="$additional_libdir"
+                                    if test -n "$acl_shlibext"; then
+              if test -f "$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"; 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"; 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"; 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
+          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"; 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"; 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"; 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"; 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"; 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"
+                ;;
+            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*)
+                    additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+                                                                                                                                                                if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \
+                       && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then
+                      haveit=
+                      if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \
+                         || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; 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$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                                                        LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_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$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                                                        LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5
+$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; }
+if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  gt_save_LIBS="$LIBS"
+     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <CoreFoundation/CFPreferences.h>
+int
+main ()
+{
+CFPreferencesCopyAppValue(NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gt_cv_func_CFPreferencesCopyAppValue=yes
+else
+  gt_cv_func_CFPreferencesCopyAppValue=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     LIBS="$gt_save_LIBS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5
+$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; }
+  if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
+
+$as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h
+
+  fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5
+$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; }
+if ${gt_cv_func_CFLocaleCopyCurrent+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  gt_save_LIBS="$LIBS"
+     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <CoreFoundation/CFLocale.h>
+int
+main ()
+{
+CFLocaleCopyCurrent();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gt_cv_func_CFLocaleCopyCurrent=yes
+else
+  gt_cv_func_CFLocaleCopyCurrent=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     LIBS="$gt_save_LIBS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5
+$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; }
+  if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+
+$as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h
+
+  fi
+  INTL_MACOSX_LIBS=
+  if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = 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
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5
+$as_echo_n "checking for GNU gettext in libc... " >&6; }
+if eval \${$gt_func_gnugettext_libc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <libintl.h>
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
+extern int *_nl_domain_bindings;
+int
+main ()
+{
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  eval "$gt_func_gnugettext_libc=yes"
+else
+  eval "$gt_func_gnugettext_libc=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$gt_func_gnugettext_libc
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$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
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5
+$as_echo_n "checking for iconv... " >&6; }
+if ${am_cv_func_iconv+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    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 <stdlib.h>
+#include <iconv.h>
+int
+main ()
+{
+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$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 <stdlib.h>
+#include <iconv.h>
+int
+main ()
+{
+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$ac_exeext conftest.$ac_ext
+      LIBS="$am_save_LIBS"
+    fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5
+$as_echo "$am_cv_func_iconv" >&6; }
+  if test "$am_cv_func_iconv" = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5
+$as_echo_n "checking for working iconv... " >&6; }
+if ${am_cv_func_iconv_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+            am_save_LIBS="$LIBS"
+      if test $am_cv_lib_iconv = yes; then
+        LIBS="$LIBS $LIBICONV"
+      fi
+      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
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <iconv.h>
+#include <string.h>
+int main ()
+{
+  /* 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 const char input[] = "\342\202\254"; /* EURO SIGN */
+        char buf[10];
+        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,
+                            (char **) &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if (res == 0)
+          return 1;
+      }
+  }
+  /* 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 const char input[] = "\263";
+        char buf[10];
+        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,
+                            (char **) &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if (res == 0)
+          return 1;
+      }
+  }
+#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 const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+        char buf[50];
+        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,
+                            (char **) &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if ((int)res > 0)
+          return 1;
+      }
+  }
+#endif
+  /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
+     provided.  */
+  if (/* Try standardized names.  */
+      iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1)
+      /* Try IRIX, OSF/1 names.  */
+      && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1)
+      /* Try AIX names.  */
+      && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
+      /* Try HP-UX names.  */
+      && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
+    return 1;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  am_cv_func_iconv_works=yes
+else
+  am_cv_func_iconv_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+      LIBS="$am_save_LIBS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5
+$as_echo "$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
+
+$as_echo "#define HAVE_ICONV 1" >>confdefs.h
+
+  fi
+  if test "$am_cv_lib_iconv" = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5
+$as_echo_n "checking how to link with libiconv... " >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5
+$as_echo "$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\"
+
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+
+# Check whether --with-libintl-prefix was given.
+if test "${with_libintl_prefix+set}" = set; 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\"
+
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+      else
+        additional_includedir="$withval/include"
+        additional_libdir="$withval/$acl_libdirstem"
+        if test "$acl_libdirstem2" != "$acl_libdirstem" \
+           && ! test -d "$withval/$acl_libdirstem"; then
+          additional_libdir="$withval/$acl_libdirstem2"
+        fi
+      fi
+    fi
+
+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
+            dir="$additional_libdir"
+                                    if test -n "$acl_shlibext"; then
+              if test -f "$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"; 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"; 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"; 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
+          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"; 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"; 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"; 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"; 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"; 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"
+                ;;
+            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*)
+                    additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+                                                                                                                                                                if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \
+                       && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then
+                      haveit=
+                      if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \
+                         || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; 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$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                                                        LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_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$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                                                        LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_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
+
+
+
+
+
+
+          { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5
+$as_echo_n "checking for GNU gettext in libintl... " >&6; }
+if eval \${$gt_func_gnugettext_libintl+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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 <libintl.h>
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias (const char *);
+int
+main ()
+{
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  eval "$gt_func_gnugettext_libintl=yes"
+else
+  eval "$gt_func_gnugettext_libintl=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    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 <libintl.h>
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias (const char *);
+int
+main ()
+{
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")
+  ;
+  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$ac_exeext conftest.$ac_ext
+            fi
+            CPPFLAGS="$gt_save_CPPFLAGS"
+            LIBS="$gt_save_LIBS"
+fi
+eval ac_res=\$$gt_func_gnugettext_libintl
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$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
+
+$as_echo "#define ENABLE_NLS 1" >>confdefs.h
+
+    else
+      USE_NLS=no
+    fi
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5
+$as_echo_n "checking whether to use NLS... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5
+$as_echo "$USE_NLS" >&6; }
+  if test "$USE_NLS" = "yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5
+$as_echo_n "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
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5
+$as_echo "$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
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5
+$as_echo_n "checking how to link with libintl... " >&6; }
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5
+$as_echo "$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
+
+
+$as_echo "#define HAVE_GETTEXT 1" >>confdefs.h
+
+
+$as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h
+
+    fi
+
+        POSUB=po
+  fi
+
+
+
+    INTLLIBS="$LIBINTL"
+
+
+
+
+
+
+if test "$USE_INCLUDED_LIBINTL" = "yes"; then
+       as_fn_error $? "
+GNU Parted requires gettext to be installed for compilation -
+if native language support is desired.  Either disable native language support
+with:
+       $ ./configure --disable-nls
+Or install gettext.  GNU gettext is available from
+       http://ftp.gnu.org/gnu/gettext
+" "$LINENO" 5
+fi
+
+DL_LIBS=""
+
+DYNAMIC_LOADING=no
+if test "$enable_dynamic_loading" = yes; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dl_dlopen=yes
+else
+  ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+  DL_LIBS="-ldl"
+               PARTED_LIBS="$PARTED_LIBS -ldl"
+               DYNAMIC_LOADING=yes
+
+$as_echo "#define DYNAMIC_LOADING 1" >>confdefs.h
+
+else
+  as_fn_error $? "-ldl not found!  Try using --disable-dynamic-loading
+               " "$LINENO" 5
+
+fi
+
+fi
+
+
+UUID_LIBS=""
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uuid_generate in -luuid" >&5
+$as_echo_n "checking for uuid_generate in -luuid... " >&6; }
+if ${ac_cv_lib_uuid_uuid_generate+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char uuid_generate ();
+int
+main ()
+{
+return uuid_generate ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_uuid_uuid_generate=yes
+else
+  ac_cv_lib_uuid_uuid_generate=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_uuid_uuid_generate" >&5
+$as_echo "$ac_cv_lib_uuid_uuid_generate" >&6; }
+if test "x$ac_cv_lib_uuid_uuid_generate" = xyes; then :
+  UUID_LIBS="-luuid"
+else
+  as_fn_error $? "GNU Parted requires libuuid - a part of the util-linux-ng package (but
+usually distributed separately in libuuid-devel, uuid-dev or similar)
+This can probably be found on your distribution's CD or FTP site or at:
+    http://userweb.kernel.org/~kzak/util-linux-ng/
+Note: originally, libuuid was part of the e2fsprogs package.  Later, it
+moved to util-linux-ng-2.16, and that package is now the preferred source." "$LINENO" 5
+fi
+
+
+
+DM_LIBS=
+if test $ENABLE_DEVICE_MAPPER = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dm_task_create in -ldevmapper" >&5
+$as_echo_n "checking for dm_task_create in -ldevmapper... " >&6; }
+if ${ac_cv_lib_devmapper_dm_task_create+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldevmapper  $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.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dm_task_create ();
+int
+main ()
+{
+return dm_task_create ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_devmapper_dm_task_create=yes
+else
+  ac_cv_lib_devmapper_dm_task_create=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_devmapper_dm_task_create" >&5
+$as_echo "$ac_cv_lib_devmapper_dm_task_create" >&6; }
+if test "x$ac_cv_lib_devmapper_dm_task_create" = xyes; then :
+  DM_LIBS=-ldevmapper
+else
+  as_fn_error $? "libdevmapper could not be found, but is required for the
+--enable-device-mapper option, which is enabled by default.  Either disable
+device-mapper support with --disable-device-mapper or download and install
+device-mapper from:
+       http://sources.redhat.com/dm/
+Note: if you are using precompiled packages you will need the development
+package as well (it may be called device-mapper-devel or something similar).
+    " "$LINENO" 5
+
+fi
+
+fi
+
+
+SELINUX_LIBS=""
+if test "$enable_selinux" = yes; then
+       SELINUX_LIBS="-lselinux -lsepol"
+fi
+
+
+REISER_LIBS=""
+if test "$enable_dynamic_loading" = no && test "$enable_discover_only" = no; then
+       OLD_LIBS="$LIBS"
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dal_equals in -ldal" >&5
+$as_echo_n "checking for dal_equals in -ldal... " >&6; }
+if ${ac_cv_lib_dal_dal_equals+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldal  $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.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dal_equals ();
+int
+main ()
+{
+return dal_equals ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dal_dal_equals=yes
+else
+  ac_cv_lib_dal_dal_equals=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dal_dal_equals" >&5
+$as_echo "$ac_cv_lib_dal_dal_equals" >&6; }
+if test "x$ac_cv_lib_dal_dal_equals" = xyes; then :
+  LIBS="-ldal"
+               { $as_echo "$as_me:${as_lineno-$LINENO}: checking for reiserfs_fs_probe in -lreiserfs" >&5
+$as_echo_n "checking for reiserfs_fs_probe in -lreiserfs... " >&6; }
+if ${ac_cv_lib_reiserfs_reiserfs_fs_probe+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lreiserfs  $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.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char reiserfs_fs_probe ();
+int
+main ()
+{
+return reiserfs_fs_probe ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_reiserfs_reiserfs_fs_probe=yes
+else
+  ac_cv_lib_reiserfs_reiserfs_fs_probe=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_reiserfs_reiserfs_fs_probe" >&5
+$as_echo "$ac_cv_lib_reiserfs_reiserfs_fs_probe" >&6; }
+if test "x$ac_cv_lib_reiserfs_reiserfs_fs_probe" = xyes; then :
+  REISER_LIBS="-ldal -lreiserfs"
+
+$as_echo "#define HAVE_LIBREISERFS 1" >>confdefs.h
+
+
+fi
+
+               { $as_echo "$as_me:${as_lineno-$LINENO}: checking for reiserfs_fs_check in -lreiserfs" >&5
+$as_echo_n "checking for reiserfs_fs_check in -lreiserfs... " >&6; }
+if ${ac_cv_lib_reiserfs_reiserfs_fs_check+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lreiserfs  $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.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char reiserfs_fs_check ();
+int
+main ()
+{
+return reiserfs_fs_check ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_reiserfs_reiserfs_fs_check=yes
+else
+  ac_cv_lib_reiserfs_reiserfs_fs_check=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_reiserfs_reiserfs_fs_check" >&5
+$as_echo "$ac_cv_lib_reiserfs_reiserfs_fs_check" >&6; }
+if test "x$ac_cv_lib_reiserfs_reiserfs_fs_check" = xyes; then :
+
+$as_echo "#define HAVE_REISERFS_FS_CHECK 1" >>confdefs.h
+
+
+fi
+
+
+fi
+
+       LIBS="$OLD_LIBS"
+fi
+
+
+if test "$with_readline" = yes; then
+       OLD_LIBS="$LIBS"
+       LIBS=""
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing tgetent" >&5
+$as_echo_n "checking for library containing tgetent... " >&6; }
+if ${ac_cv_search_tgetent+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$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.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char tgetent ();
+int
+main ()
+{
+return tgetent ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' tinfo ncurses curses termcap termlib; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_tgetent=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_tgetent+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_tgetent+:} false; then :
+
+else
+  ac_cv_search_tgetent=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_tgetent" >&5
+$as_echo "$ac_cv_search_tgetent" >&6; }
+ac_res=$ac_cv_search_tgetent
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+  PARTED_LIBS="$PARTED_LIBS $LIBS"
+else
+  as_fn_error $? "termcap could not be found which is required for the
+--with-readline option (which is enabled by default).  Either disable readline
+support with --without-readline or download and install termcap from:
+       ftp.gnu.org/gnu/termcap
+Note: if you are using precompiled packages you will also need the development
+  package as well (which may be called termcap-devel or something similar).
+Note: (n)curses also seems to work as a substitute for termcap.  This was
+  not found either - but you could try installing that as well." "$LINENO" 5
+fi
+
+       LIBS="$OLD_LIBS"
+fi
+
+if test "$with_readline" = yes; then
+       OLD_LIBS="$LIBS"
+       LIBS="$LIBS $PARTED_LIBS"
+       found_working_libreadline=no
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for readline in -lreadline" >&5
+$as_echo_n "checking for readline in -lreadline... " >&6; }
+if ${ac_cv_lib_readline_readline+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lreadline $PARTED_LIBS
+        $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.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char readline ();
+int
+main ()
+{
+return readline ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_readline_readline=yes
+else
+  ac_cv_lib_readline_readline=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_readline" >&5
+$as_echo "$ac_cv_lib_readline_readline" >&6; }
+if test "x$ac_cv_lib_readline_readline" = xyes; then :
+  found_working_libreadline=yes
+else
+  as_fn_error $? "GNU Readline could not be found which is required for the
+--with-readline (which is enabled by default).  Either disable readline support with
+--without-readline or downloaded and install it from:
+        ftp.gnu.org/gnu/readline
+Note: if you are using precompiled packages you will also need the development
+package as well (which may be called readline-devel or something similar).
+" "$LINENO" 5
+
+fi
+
+       LIBS="$OLD_LIBS $PARTED_LIBS"
+
+       # See if libreadline is too old to be used.
+       # The readline function in Debian's libreadline5 5.0-10 fails to
+       # print to stdout the response (from stdin) to a prompt, when stdout
+       # is redirected, while 5.2-3 works fine.  That failure would cause
+       # several of parted's tests to failure.
+       # The purist approach would be to write a run-test, but that's
+       # not friendly to cross-compilers, so here's a compromise:
+       #
+       # See if libreadline defines one of these symbols:
+       # [this is the list of public symbols that are in 5.2, but not 5.0]
+       #
+       # $ diff -u /tmp/readline-5.[02]|grep '+T.[^_]'
+       # +T rl_vi_rubout
+       # +T rl_variable_value
+       # +T rl_reset_screen_size
+       # +T alloc_history_entry
+       # +T copy_history_entry
+       # +T replace_history_data
+       #
+       # If not, then reject this readline lib.
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for rl_variable_value in -lreadline" >&5
+$as_echo_n "checking for rl_variable_value in -lreadline... " >&6; }
+if ${ac_cv_lib_readline_rl_variable_value+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lreadline $PARTED_LIBS $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.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char rl_variable_value ();
+int
+main ()
+{
+return rl_variable_value ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_readline_rl_variable_value=yes
+else
+  ac_cv_lib_readline_rl_variable_value=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_rl_variable_value" >&5
+$as_echo "$ac_cv_lib_readline_rl_variable_value" >&6; }
+if test "x$ac_cv_lib_readline_rl_variable_value" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBREADLINE 1
+_ACEOF
+
+  LIBS="-lreadline $LIBS"
+
+else
+  as_fn_error $? "Your version of libreadline is too old to be used.
+Consider upgrading to version 5.2 or newer." "$LINENO" 5
+                    found_working_libreadline=no
+fi
+
+
+       if test $found_working_libreadline = yes; then
+               PARTED_LIBS="-lreadline $PARTED_LIBS"
+
+$as_echo "#define HAVE_LIBREADLINE 1" >>confdefs.h
+
+       fi
+       LIBS="$OLD_LIBS"
+fi
+
+
+
+
+if test "$OS" = gnu; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for vm_deallocate in -lshouldbeinlibc" >&5
+$as_echo_n "checking for vm_deallocate in -lshouldbeinlibc... " >&6; }
+if ${ac_cv_lib_shouldbeinlibc_vm_deallocate+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lshouldbeinlibc  $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.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char vm_deallocate ();
+int
+main ()
+{
+return vm_deallocate ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_shouldbeinlibc_vm_deallocate=yes
+else
+  ac_cv_lib_shouldbeinlibc_vm_deallocate=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_shouldbeinlibc_vm_deallocate" >&5
+$as_echo "$ac_cv_lib_shouldbeinlibc_vm_deallocate" >&6; }
+if test "x$ac_cv_lib_shouldbeinlibc_vm_deallocate" = xyes; then :
+  OS_LIBS="$OS_LIBS -lshouldbeinlibc"
+else
+  as_fn_error $? "GNU Parted requires libshouldbeinlibc when running on
+GNU/Hurd systems.  It is a standard part of a GNU/Hurd system.
+               " "$LINENO" 5
+
+fi
+
+
+       OLD_LIBS="$LIBS"
+       LIBS=
+
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ped_device_read in -lparted" >&5
+$as_echo_n "checking for ped_device_read in -lparted... " >&6; }
+if ${ac_cv_lib_parted_ped_device_read+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lparted  $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.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char ped_device_read ();
+int
+main ()
+{
+return ped_device_read ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_parted_ped_device_read=yes
+else
+  ac_cv_lib_parted_ped_device_read=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_parted_ped_device_read" >&5
+$as_echo "$ac_cv_lib_parted_ped_device_read" >&6; }
+if test "x$ac_cv_lib_parted_ped_device_read" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBPARTED 1
+_ACEOF
+
+  LIBS="-lparted $LIBS"
+
+fi
+
+
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for store_open in -lstore" >&5
+$as_echo_n "checking for store_open in -lstore... " >&6; }
+if ${ac_cv_lib_store_store_open+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lstore $OS_LIBS $UUID_LIBS $DM_LIBS $LIBS
+        $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.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char store_open ();
+int
+main ()
+{
+return store_open ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_store_store_open=yes
+else
+  ac_cv_lib_store_store_open=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_store_store_open" >&5
+$as_echo "$ac_cv_lib_store_store_open" >&6; }
+if test "x$ac_cv_lib_store_store_open" = xyes; then :
+  OS_LIBS="$OS_LIBS -lstore"
+else
+  as_fn_error $? "GNU Parted requires libstore when running on GNU/Hurd
+systems.  It is a standard part of a GNU/Hurd system.
+               " "$LINENO" 5
+
+fi
+
+       LIBS="$OLD_LIBS"
+fi
+
+
+if test "$OS" = beos; then
+                       OS_LIBS="$OS_LIBS -lsocket"
+fi
+
+
+
+
+
+
+ac_fn_c_check_header_mongrel "$LINENO" "uuid/uuid.h" "ac_cv_header_uuid_uuid_h" "$ac_includes_default"
+if test "x$ac_cv_header_uuid_uuid_h" = xyes; then :
+
+else
+  as_fn_error $? "GNU Parted requires libuuid - a part of the e2fsprogs package.
+You seem to have the library installed but not the headers.  These are usually
+found in a corresponding development package (usually called e2fsprogs-devel).
+If you can't find one try:
+        http://web.mit.edu/tytso/www/linux/e2fsprogs.html" "$LINENO" 5
+
+fi
+
+
+
+for ac_header in getopt.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "getopt.h" "ac_cv_header_getopt_h" "$ac_includes_default"
+if test "x$ac_cv_header_getopt_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_GETOPT_H 1
+_ACEOF
+
+fi
+
+done
+
+for ac_header in linux/ext2_fs.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "linux/ext2_fs.h" "ac_cv_header_linux_ext2_fs_h" "$ac_includes_default"
+if test "x$ac_cv_header_linux_ext2_fs_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LINUX_EXT2_FS_H 1
+_ACEOF
+
+fi
+
+done
+
+
+if test "$OS" = linux; then
+       ac_fn_c_check_header_mongrel "$LINENO" "linux/unistd.h" "ac_cv_header_linux_unistd_h" "$ac_includes_default"
+if test "x$ac_cv_header_linux_unistd_h" = xyes; then :
+
+fi
+
+
+fi
+
+if test "$with_readline" = yes; then
+       for ac_header in readline/readline.h readline/history.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+else
+  as_fn_error $? "The headers for GNU Readline could not be found which
+are required for the --with-readline option.  You seem to have the GNU readline
+library installed but not the headers.  These are usually found in a
+corresponding development package (usually called readline-devel).  If you can't
+find one try:
+        ftp.gnu.org/gnu/readline
+Alternatively you can disable readline support with --without-readline" "$LINENO" 5
+
+fi
+
+done
+
+fi
+
+for ac_header in termcap.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "termcap.h" "ac_cv_header_termcap_h" "$ac_includes_default"
+if test "x$ac_cv_header_termcap_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_TERMCAP_H 1
+_ACEOF
+
+fi
+
+done
+
+
+if test "$USE_NLS" = yes; then
+       for ac_header in wctype.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "wctype.h" "ac_cv_header_wctype_h" "$ac_includes_default"
+if test "x$ac_cv_header_wctype_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_WCTYPE_H 1
+_ACEOF
+
+else
+  as_fn_error $? "One or more of the header files that are required for
+native language support (wctype.h) could not be found.  Either get a newer
+version of GNU libc and its headers - which can be obtained from:
+       ftp.gnu.org/gnu/glibc
+Or disable native language support with the --disable-nls option" "$LINENO" 5
+
+fi
+
+done
+
+fi
+
+ac_fn_c_check_header_mongrel "$LINENO" "execinfo.h" "ac_cv_header_execinfo_h" "$ac_includes_default"
+if test "x$ac_cv_header_execinfo_h" = xyes; then :
+
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for backtrace in -lc" >&5
+$as_echo_n "checking for backtrace in -lc... " >&6; }
+if ${ac_cv_lib_c_backtrace+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lc  $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.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char backtrace ();
+int
+main ()
+{
+return backtrace ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_c_backtrace=yes
+else
+  ac_cv_lib_c_backtrace=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_backtrace" >&5
+$as_echo "$ac_cv_lib_c_backtrace" >&6; }
+if test "x$ac_cv_lib_c_backtrace" = xyes; then :
+
+
+$as_echo "#define HAVE_BACKTRACE 1" >>confdefs.h
+
+               LDFLAGS="$LDFLAGS -rdynamic"
+
+fi
+
+
+fi
+
+
+
+ if test "$host_cpu" = s390 || test "$host_cpu" = s390x; then
+  COMPILE_FOR_S390_TRUE=
+  COMPILE_FOR_S390_FALSE='#'
+else
+  COMPILE_FOR_S390_TRUE='#'
+  COMPILE_FOR_S390_FALSE=
+fi
+
+ if test "$OS" = linux; then
+  BUILD_LINUX_TRUE=
+  BUILD_LINUX_FALSE='#'
+else
+  BUILD_LINUX_TRUE='#'
+  BUILD_LINUX_FALSE=
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PKG_CONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+$as_echo "$PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
+$as_echo "$ac_pt_PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_PKG_CONFIG" = x; then
+    PKG_CONFIG=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$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
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
+$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
+       if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+       else
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+               PKG_CONFIG=""
+       fi
+fi
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CHECK" >&5
+$as_echo_n "checking for CHECK... " >&6; }
+
+if test -n "$CHECK_CFLAGS"; then
+    pkg_cv_CHECK_CFLAGS="$CHECK_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"check >= 0.9.3\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "check >= 0.9.3") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_CHECK_CFLAGS=`$PKG_CONFIG --cflags "check >= 0.9.3" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$CHECK_LIBS"; then
+    pkg_cv_CHECK_LIBS="$CHECK_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"check >= 0.9.3\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "check >= 0.9.3") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_CHECK_LIBS=`$PKG_CONFIG --libs "check >= 0.9.3" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "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
+               CHECK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "check >= 0.9.3" 2>&1`
+        else
+               CHECK_PKG_ERRORS=`$PKG_CONFIG --print-errors "check >= 0.9.3" 2>&1`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$CHECK_PKG_ERRORS" >&5
+
+       have_check=no
+elif test $pkg_failed = untried; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+       have_check=no
+else
+       CHECK_CFLAGS=$pkg_cv_CHECK_CFLAGS
+       CHECK_LIBS=$pkg_cv_CHECK_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+       have_check=yes
+fi
+if test "$have_check" != "yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: Unable to locate check version 0.9.3 or higher: not building" >&5
+$as_echo "Unable to locate check version 0.9.3 or higher: not building" >&6; }
+fi
+ if test "$have_check" = yes; then
+  HAVE_CHECK_TRUE=
+  HAVE_CHECK_FALSE='#'
+else
+  HAVE_CHECK_TRUE='#'
+  HAVE_CHECK_FALSE=
+fi
+
+
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then :
+  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi
+
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | ?:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+       ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if ${lt_cv_path_LD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_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 `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+       test "$with_gnu_ld" != no && break
+       ;;
+      *)
+       test "$with_gnu_ld" != yes && break
+       ;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if ${lt_cv_prog_gnu_ld+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
+$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
+if ${ac_cv_c_bigendian+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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.$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 <sys/types.h>
+            #include <sys/param.h>
+
+int
+main ()
+{
+#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 <sys/types.h>
+               #include <sys/param.h>
+
+int
+main ()
+{
+#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
+  ac_cv_c_bigendian=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    fi
+    if test $ac_cv_c_bigendian = unknown; then
+      # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <limits.h>
+
+int
+main ()
+{
+#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 <limits.h>
+
+int
+main ()
+{
+#ifndef _BIG_ENDIAN
+                not big endian
+               #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_bigendian=yes
+else
+  ac_cv_c_bigendian=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext 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.  */
+short int ascii_mm[] =
+                 { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
+               short int ascii_ii[] =
+                 { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
+               int use_ascii (int i) {
+                 return ascii_mm[i] + ascii_ii[i];
+               }
+               short int ebcdic_ii[] =
+                 { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
+               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 ()
+{
+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.$ac_ext
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+
+            /* 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
+  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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
+$as_echo "$ac_cv_c_bigendian" >&6; }
+ case $ac_cv_c_bigendian in #(
+   yes)
+     $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h
+;; #(
+   no)
+      ;; #(
+   universal)
+
+$as_echo "#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
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
+$as_echo_n "checking for inline... " >&6; }
+if ${ac_cv_c_inline+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_inline=no
+for ac_kw in inline __inline__ __inline; do
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifndef __cplusplus
+typedef int foo_t;
+static $ac_kw foo_t static_foo () {return 0; }
+$ac_kw foo_t foo () {return 0; }
+#endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_inline=$ac_kw
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  test "$ac_cv_c_inline" != no && break
+done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
+$as_echo "$ac_cv_c_inline" >&6; }
+
+case $ac_cv_c_inline in
+  inline | yes) ;;
+  *)
+    case $ac_cv_c_inline in
+      no) ac_val=;;
+      *) ac_val=$ac_cv_c_inline;;
+    esac
+    cat >>confdefs.h <<_ACEOF
+#ifndef __cplusplus
+#define inline $ac_val
+#endif
+_ACEOF
+    ;;
+esac
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
+$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
+if ${ac_cv_c_const+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+/* FIXME: Include the comments suggested by Paul. */
+#ifndef __cplusplus
+  /* Ultrix mips cc rejects this.  */
+  typedef int charset[2];
+  const charset cs;
+  /* SunOS 4.1.1 cc rejects this.  */
+  char const *const *pcpcc;
+  char **ppc;
+  /* NEC SVR4.0.2 mips cc rejects this.  */
+  struct point {int x, y;};
+  static struct point const zero = {0,0};
+  /* AIX XL C 1.02.0.0 rejects this.
+     It does not let you subtract one const X* pointer from another in
+     an arm of an if-expression whose if-part is not a constant
+     expression */
+  const char *g = "string";
+  pcpcc = &g + (g ? g-g : 0);
+  /* HPUX 7.0 cc rejects these. */
+  ++pcpcc;
+  ppc = (char**) pcpcc;
+  pcpcc = (char const *const *) ppc;
+  { /* SCO 3.2v4 cc rejects this.  */
+    char *t;
+    char const *s = 0 ? (char *) 0 : (char const *) 0;
+
+    *t++ = 0;
+    if (s) return 0;
+  }
+  { /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */
+    int x[] = {25, 17};
+    const int *foo = &x[0];
+    ++foo;
+  }
+  { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
+    typedef const int *iptr;
+    iptr p = 0;
+    ++p;
+  }
+  { /* AIX XL C 1.02.0.0 rejects this saying
+       "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
+    struct s { int j; const int *ap[3]; };
+    struct s *b; b->j = 5;
+  }
+  { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+    const int foo = 10;
+    if (!foo) return 0;
+  }
+  return !cs[0] && !zero.x;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_const=yes
+else
+  ac_cv_c_const=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
+$as_echo "$ac_cv_c_const" >&6; }
+if test $ac_cv_c_const = no; then
+
+$as_echo "#define const /**/" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C/C++ restrict keyword" >&5
+$as_echo_n "checking for C/C++ restrict keyword... " >&6; }
+if ${ac_cv_c_restrict+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_restrict=no
+   # The order here caters to the fact that C++ does not require restrict.
+   for ac_kw in __restrict __restrict__ _Restrict restrict; do
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+typedef int * int_ptr;
+       int foo (int_ptr $ac_kw ip) {
+       return ip[0];
+       }
+int
+main ()
+{
+int s[1];
+       int * $ac_kw t = s;
+       t[0] = 0;
+       return foo(t)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_restrict=$ac_kw
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+     test "$ac_cv_c_restrict" != no && break
+   done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_restrict" >&5
+$as_echo "$ac_cv_c_restrict" >&6; }
+
+ case $ac_cv_c_restrict in
+   restrict) ;;
+   no) $as_echo "#define restrict /**/" >>confdefs.h
+ ;;
+   *)  cat >>confdefs.h <<_ACEOF
+#define restrict $ac_cv_c_restrict
+_ACEOF
+ ;;
+ esac
+
+
+for ac_func in sigaction
+do :
+  ac_fn_c_check_func "$LINENO" "sigaction" "ac_cv_func_sigaction"
+if test "x$ac_cv_func_sigaction" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SIGACTION 1
+_ACEOF
+
+fi
+done
+
+for ac_func in getuid
+do :
+  ac_fn_c_check_func "$LINENO" "getuid" "ac_cv_func_getuid"
+if test "x$ac_cv_func_getuid" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_GETUID 1
+_ACEOF
+
+fi
+done
+
+
+if test "$with_readline" = yes; then
+       OLD_LIBS="$LIBS"
+       LIBS="$LIBS $PARTED_LIBS -lreadline"
+       for ac_func in rl_completion_matches
+do :
+  ac_fn_c_check_func "$LINENO" "rl_completion_matches" "ac_cv_func_rl_completion_matches"
+if test "x$ac_cv_func_rl_completion_matches" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_RL_COMPLETION_MATCHES 1
+_ACEOF
+
+fi
+done
+
+       LIBS="$OLD_LIBS"
+fi
+
+for ac_func in canonicalize_file_name
+do :
+  ac_fn_c_check_func "$LINENO" "canonicalize_file_name" "ac_cv_func_canonicalize_file_name"
+if test "x$ac_cv_func_canonicalize_file_name" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_CANONICALIZE_FILE_NAME 1
+_ACEOF
+
+fi
+done
+
+
+DATE=$(date '+%d %b %Y %H:%M')
+USER=$(whoami)
+HOST=$(hostname)
+BUILDINFO="$USER@$HOST, $DATE"
+
+
+LIB_BLKID=
+
+pe_saved_libs=$LIBS
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing blkid_probe_get_topology" >&5
+$as_echo_n "checking for library containing blkid_probe_get_topology... " >&6; }
+if ${ac_cv_search_blkid_probe_get_topology+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$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.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char blkid_probe_get_topology ();
+int
+main ()
+{
+return blkid_probe_get_topology ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' blkid; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_blkid_probe_get_topology=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_blkid_probe_get_topology+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_blkid_probe_get_topology+:} false; then :
+
+else
+  ac_cv_search_blkid_probe_get_topology=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_blkid_probe_get_topology" >&5
+$as_echo "$ac_cv_search_blkid_probe_get_topology" >&6; }
+ac_res=$ac_cv_search_blkid_probe_get_topology
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+  test "$ac_cv_search_blkid_probe_get_topology" = "none required" \
+     || LIB_BLKID=$ac_cv_search_blkid_probe_get_topology
+fi
+
+  ac_fn_c_check_func "$LINENO" "blkid_probe_get_topology" "ac_cv_func_blkid_probe_get_topology"
+if test "x$ac_cv_func_blkid_probe_get_topology" = xyes; then :
+  use_blkid=1
+else
+  use_blkid=0
+fi
+
+LIBS=$pe_saved_libs
+
+cat >>confdefs.h <<_ACEOF
+#define USE_BLKID $use_blkid
+_ACEOF
+
+
+
+
+
+ac_config_files="$ac_config_files Makefile lib/Makefile include/Makefile include/parted/Makefile libparted/Makefile libparted/labels/Makefile libparted/fs/Makefile libparted/fs/amiga/Makefile libparted/fs/ext2/Makefile libparted/fs/fat/Makefile libparted/fs/hfs/Makefile libparted/fs/jfs/Makefile libparted/fs/linux_swap/Makefile libparted/fs/ntfs/Makefile libparted/fs/reiserfs/Makefile libparted/fs/ufs/Makefile libparted/fs/xfs/Makefile libparted/fs/nilfs2/Makefile libparted/tests/Makefile libparted.pc parted/Makefile partprobe/Makefile doc/Makefile doc/C/Makefile doc/pt_BR/Makefile debug/Makefile debug/test/Makefile tests/Makefile po/Makefile.in"
+
+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_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$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+set}" = set || &/
+     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
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$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
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$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=`$as_echo "$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
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
+$as_echo_n "checking that generated files are newer than configure... " >&6; }
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
+$as_echo "done" >&6; }
+ if test -n "$EXEEXT"; then
+  am__EXEEXT_TRUE=
+  am__EXEEXT_FALSE='#'
+else
+  am__EXEEXT_TRUE='#'
+  am__EXEEXT_FALSE=
+fi
+
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+  as_fn_error $? "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GL_COND_LIBTOOL_TRUE}" && test -z "${GL_COND_LIBTOOL_FALSE}"; then
+  as_fn_error $? "conditional \"GL_COND_LIBTOOL\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GL_GENERATE_ALLOCA_H_TRUE}" && test -z "${GL_GENERATE_ALLOCA_H_FALSE}"; then
+  as_fn_error $? "conditional \"GL_GENERATE_ALLOCA_H\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+test "X$DEFS" = X-DHAVE_CONFIG_H && DEFS=
+if test -z "${GL_GENERATE_ERRNO_H_TRUE}" && test -z "${GL_GENERATE_ERRNO_H_FALSE}"; then
+  as_fn_error $? "conditional \"GL_GENERATE_ERRNO_H\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GL_GENERATE_STDINT_H_TRUE}" && test -z "${GL_GENERATE_STDINT_H_FALSE}"; then
+  as_fn_error $? "conditional \"GL_GENERATE_STDINT_H\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+CONFIG_INCLUDE=lib/config.h
+
+if test -z "${GL_GENERATE_STDARG_H_TRUE}" && test -z "${GL_GENERATE_STDARG_H_FALSE}"; then
+  as_fn_error $? "conditional \"GL_GENERATE_STDARG_H\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GL_GENERATE_STDBOOL_H_TRUE}" && test -z "${GL_GENERATE_STDBOOL_H_FALSE}"; then
+  as_fn_error $? "conditional \"GL_GENERATE_STDBOOL_H\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GL_GENERATE_STDDEF_H_TRUE}" && test -z "${GL_GENERATE_STDDEF_H_FALSE}"; then
+  as_fn_error $? "conditional \"GL_GENERATE_STDDEF_H\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+    gl_libobjs=
+    gl_ltlibobjs=
+    if test -n "$gl_LIBOBJS"; then
+      # Remove the extension.
+      sed_drop_objext='s/\.o$//;s/\.obj$//'
+      for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do
+        gl_libobjs="$gl_libobjs $i.$ac_objext"
+        gl_ltlibobjs="$gl_ltlibobjs $i.lo"
+      done
+    fi
+    gl_LIBOBJS=$gl_libobjs
+
+    gl_LTLIBOBJS=$gl_ltlibobjs
+
+
+
+    gltests_libobjs=
+    gltests_ltlibobjs=
+    if test -n "$gltests_LIBOBJS"; then
+      # Remove the extension.
+      sed_drop_objext='s/\.o$//;s/\.obj$//'
+      for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do
+        gltests_libobjs="$gltests_libobjs $i.$ac_objext"
+        gltests_ltlibobjs="$gltests_ltlibobjs $i.lo"
+      done
+    fi
+    gltests_LIBOBJS=$gltests_libobjs
+
+    gltests_LTLIBOBJS=$gltests_ltlibobjs
+
+
+if test -z "${COMPILE_FOR_S390_TRUE}" && test -z "${COMPILE_FOR_S390_FALSE}"; then
+  as_fn_error $? "conditional \"COMPILE_FOR_S390\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_LINUX_TRUE}" && test -z "${BUILD_LINUX_FALSE}"; then
+  as_fn_error $? "conditional \"BUILD_LINUX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_CHECK_TRUE}" && test -z "${HAVE_CHECK_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_CHECK\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$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
+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
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+       expr "X$arg" : "X\\(.*\\)$as_nl";
+       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+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
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""       $as_nl"
+
+# 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
+  test -z "$as_dir" && as_dir=.
+    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
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# 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
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$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_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_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 ||
+$as_echo 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
+
+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
+
+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 -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
+else
+  as_ln_s='cp -p'
+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=`$as_echo "$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 ||
+$as_echo 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
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+       test -d "$1/.";
+      else
+       case $1 in #(
+       -*)set "./$1";;
+       esac;
+       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+       ???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# 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 GNU parted $as_me 3.0, which was
+generated by GNU Autoconf 2.68.68-2105.  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_links="$ac_config_links"
+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 links:
+$config_links
+
+Configuration commands:
+$config_commands
+
+Report bugs to <bug-parted@gnu.org>.
+GNU parted home page: <http://www.gnu.org/software/parted/>.
+General help using GNU software: <http://www.gnu.org/gethelp/>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+GNU parted config.status 3.0
+configured by $0, generated by GNU Autoconf 2.68.68-2105,
+  with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2011 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 )
+    $as_echo "$ac_cs_version"; exit ;;
+  --config | --confi | --conf | --con | --co | --c )
+    $as_echo "$ac_cs_config"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$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=`$as_echo "$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 )
+    $as_echo "$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
+  \$as_echo "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
+  $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+GNUmakefile=$GNUmakefile
+
+
+# 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
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
+macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
+macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
+enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
+pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
+enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
+SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
+ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
+host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
+host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
+host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
+build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
+build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
+build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
+SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
+Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
+GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
+EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
+FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
+LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
+NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
+LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
+max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
+ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
+exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
+lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
+lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
+lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
+lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
+reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
+reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
+deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
+file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
+file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
+want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
+DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
+sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
+AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
+archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
+STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
+RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
+old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
+lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
+CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
+CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
+compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
+GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
+nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
+lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
+objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
+MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
+need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
+MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
+DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
+NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
+LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
+OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
+OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
+libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
+shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
+extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
+export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
+whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
+compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
+old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
+archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
+module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
+allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
+no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
+hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
+hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
+hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
+hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
+inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
+link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
+always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
+export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
+exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
+include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
+prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
+postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
+file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
+variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
+need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
+need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
+version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
+runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
+libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
+library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
+soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
+install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
+postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
+finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
+hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
+sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
+sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
+enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
+old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
+striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
+
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+\$1
+_LTECHO_EOF'
+}
+
+# Quote evaled strings.
+for var in SHELL \
+ECHO \
+SED \
+GREP \
+EGREP \
+FGREP \
+LD \
+NM \
+LN_S \
+lt_SP2NL \
+lt_NL2SP \
+reload_flag \
+OBJDUMP \
+deplibs_check_method \
+file_magic_cmd \
+file_magic_glob \
+want_nocaseglob \
+DLLTOOL \
+sharedlib_from_linklib_cmd \
+AR \
+AR_FLAGS \
+archiver_list_spec \
+STRIP \
+RANLIB \
+CC \
+CFLAGS \
+compiler \
+lt_cv_sys_global_symbol_pipe \
+lt_cv_sys_global_symbol_to_cdecl \
+lt_cv_sys_global_symbol_to_c_name_address \
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
+nm_file_list_spec \
+lt_prog_compiler_no_builtin_flag \
+lt_prog_compiler_pic \
+lt_prog_compiler_wl \
+lt_prog_compiler_static \
+lt_cv_prog_compiler_c_o \
+need_locks \
+MANIFEST_TOOL \
+DSYMUTIL \
+NMEDIT \
+LIPO \
+OTOOL \
+OTOOL64 \
+shrext_cmds \
+export_dynamic_flag_spec \
+whole_archive_flag_spec \
+compiler_needs_object \
+with_gnu_ld \
+allow_undefined_flag \
+no_undefined_flag \
+hardcode_libdir_flag_spec \
+hardcode_libdir_flag_spec_ld \
+hardcode_libdir_separator \
+exclude_expsyms \
+include_expsyms \
+file_list_spec \
+variables_saved_for_relink \
+libname_spec \
+library_names_spec \
+soname_spec \
+install_override_mode \
+finish_eval \
+old_striplib \
+striplib; do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+    *[\\\\\\\`\\"\\\$]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+# Double-quote double-evaled strings.
+for var in reload_cmds \
+old_postinstall_cmds \
+old_postuninstall_cmds \
+old_archive_cmds \
+extract_expsyms_cmds \
+old_archive_from_new_cmds \
+old_archive_from_expsyms_cmds \
+archive_cmds \
+archive_expsym_cmds \
+module_cmds \
+module_expsym_cmds \
+export_symbols_cmds \
+prelink_cmds \
+postlink_cmds \
+postinstall_cmds \
+postuninstall_cmds \
+finish_cmds \
+sys_lib_search_path_spec \
+sys_lib_dlsearch_path_spec; do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+    *[\\\\\\\`\\"\\\$]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+ac_aux_dir='$ac_aux_dir'
+xsi_shell='$xsi_shell'
+lt_shell_append='$lt_shell_append'
+
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
+fi
+
+
+    PACKAGE='$PACKAGE'
+    VERSION='$VERSION'
+    TIMESTAMP='$TIMESTAMP'
+    RM='$RM'
+    ofile='$ofile'
+
+
+
+# Capture the value of obsolete ALL_LINGUAS because we need it to compute
+    # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
+    # from automake < 1.5.
+    eval '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:lib/config.h.in" ;;
+    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+    "$GNUmakefile") CONFIG_LINKS="$CONFIG_LINKS $GNUmakefile:$GNUmakefile" ;;
+    "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
+    "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;;
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+    "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;;
+    "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;;
+    "include/parted/Makefile") CONFIG_FILES="$CONFIG_FILES include/parted/Makefile" ;;
+    "libparted/Makefile") CONFIG_FILES="$CONFIG_FILES libparted/Makefile" ;;
+    "libparted/labels/Makefile") CONFIG_FILES="$CONFIG_FILES libparted/labels/Makefile" ;;
+    "libparted/fs/Makefile") CONFIG_FILES="$CONFIG_FILES libparted/fs/Makefile" ;;
+    "libparted/fs/amiga/Makefile") CONFIG_FILES="$CONFIG_FILES libparted/fs/amiga/Makefile" ;;
+    "libparted/fs/ext2/Makefile") CONFIG_FILES="$CONFIG_FILES libparted/fs/ext2/Makefile" ;;
+    "libparted/fs/fat/Makefile") CONFIG_FILES="$CONFIG_FILES libparted/fs/fat/Makefile" ;;
+    "libparted/fs/hfs/Makefile") CONFIG_FILES="$CONFIG_FILES libparted/fs/hfs/Makefile" ;;
+    "libparted/fs/jfs/Makefile") CONFIG_FILES="$CONFIG_FILES libparted/fs/jfs/Makefile" ;;
+    "libparted/fs/linux_swap/Makefile") CONFIG_FILES="$CONFIG_FILES libparted/fs/linux_swap/Makefile" ;;
+    "libparted/fs/ntfs/Makefile") CONFIG_FILES="$CONFIG_FILES libparted/fs/ntfs/Makefile" ;;
+    "libparted/fs/reiserfs/Makefile") CONFIG_FILES="$CONFIG_FILES libparted/fs/reiserfs/Makefile" ;;
+    "libparted/fs/ufs/Makefile") CONFIG_FILES="$CONFIG_FILES libparted/fs/ufs/Makefile" ;;
+    "libparted/fs/xfs/Makefile") CONFIG_FILES="$CONFIG_FILES libparted/fs/xfs/Makefile" ;;
+    "libparted/fs/nilfs2/Makefile") CONFIG_FILES="$CONFIG_FILES libparted/fs/nilfs2/Makefile" ;;
+    "libparted/tests/Makefile") CONFIG_FILES="$CONFIG_FILES libparted/tests/Makefile" ;;
+    "libparted.pc") CONFIG_FILES="$CONFIG_FILES libparted.pc" ;;
+    "parted/Makefile") CONFIG_FILES="$CONFIG_FILES parted/Makefile" ;;
+    "partprobe/Makefile") CONFIG_FILES="$CONFIG_FILES partprobe/Makefile" ;;
+    "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
+    "doc/C/Makefile") CONFIG_FILES="$CONFIG_FILES doc/C/Makefile" ;;
+    "doc/pt_BR/Makefile") CONFIG_FILES="$CONFIG_FILES doc/pt_BR/Makefile" ;;
+    "debug/Makefile") CONFIG_FILES="$CONFIG_FILES debug/Makefile" ;;
+    "debug/test/Makefile") CONFIG_FILES="$CONFIG_FILES debug/test/Makefile" ;;
+    "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;;
+    "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
+
+  *) 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+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+  test "${CONFIG_LINKS+set}" = set || CONFIG_LINKS=$config_links
+  test "${CONFIG_COMMANDS+set}" = set || 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
+
+
+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 2>/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
+
+
+{
+  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
+' <conf$$subs.awk | sed '
+/^[^""]/{
+  N
+  s/\n//
+}
+' >>$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 = "\a"
+
+}
+{
+  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
+  }
+
+  print line
+}
+
+_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
+' <confdefs.h | sed '
+s/'"$ac_delim"'/"\\\
+"/g' >>$CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  for (key in D) D_is_set[key] = 1
+  FS = "\a"
+}
+/^[\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  :L $CONFIG_LINKS  :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=`$as_echo "$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 '`
+         $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+       `' by configure.'
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+    fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$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 ||
+$as_echo 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=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$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@*)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$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" | $AWK -f "$ac_tmp/subs.awk" \
+  >$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"; } &&
+  { $as_echo "$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
+$as_echo "$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
+    {
+      $as_echo "/* $configure_input  */" \
+      && 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
+      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+$as_echo "$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
+    $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
+      || as_fn_error $? "could not create -" "$LINENO" 5
+  fi
+# Compute "$ac_file"'s index in $config_headers.
+_am_arg="$ac_file"
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
+$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$_am_arg" : 'X\(//\)[^/]' \| \
+        X"$_am_arg" : 'X\(//\)$' \| \
+        X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$_am_arg" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`/stamp-h$_am_stamp_count
+ ;;
+  :L)
+  #
+  # CONFIG_LINK
+  #
+
+  if test "$ac_source" = "$ac_file" && test "$srcdir" = '.'; then
+    :
+  else
+    # Prefer the file from the source tree if names are identical.
+    if test "$ac_source" = "$ac_file" || test ! -r "$ac_source"; then
+      ac_source=$srcdir/$ac_source
+    fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: linking $ac_source to $ac_file" >&5
+$as_echo "$as_me: linking $ac_source to $ac_file" >&6;}
+
+    if test ! -r "$ac_source"; then
+      as_fn_error $? "$ac_source: file not found" "$LINENO" 5
+    fi
+    rm -f "$ac_file"
+
+    # Try a relative symlink, then a hard link, then a copy.
+    case $ac_source in
+    [\\/$]* | ?:[\\/]* ) ac_rel_source=$ac_source ;;
+       *) ac_rel_source=$ac_top_build_prefix$ac_source ;;
+    esac
+    ln -s "$ac_rel_source" "$ac_file" 2>/dev/null ||
+      ln "$ac_source" "$ac_file" 2>/dev/null ||
+      cp -p "$ac_source" "$ac_file" ||
+      as_fn_error $? "cannot link or copy $ac_source to $ac_file" "$LINENO" 5
+  fi
+ ;;
+  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+  esac
+
+
+  case $ac_file$ac_mode in
+    "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named `Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$mf" : 'X\(//\)[^/]' \| \
+        X"$mf" : 'X\(//\)$' \| \
+        X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$mf" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running `make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # When using ansi2knr, U may be empty or an underscore; expand it
+    U=`sed -n 's/^U = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$file" : 'X\(//\)[^/]' \| \
+        X"$file" : 'X\(//\)$' \| \
+        X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+      as_dir=$dirpart/$fdir; as_fn_mkdir_p
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
+  done
+}
+ ;;
+    "libtool":C)
+
+    # See if we are running on zsh, and set the options which allow our
+    # commands through without removal of \ escapes.
+    if test -n "${ZSH_VERSION+set}" ; then
+      setopt NO_GLOB_SUBST
+    fi
+
+    cfgfile="${ofile}T"
+    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+    $RM "$cfgfile"
+
+    cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+
+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
+#                 Inc.
+#   Written by Gordon Matzigkeit, 1996
+#
+#   This file is part of GNU Libtool.
+#
+# 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 GNU Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+
+# The names of the tagged configurations supported by this script.
+available_tags=""
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Which release of libtool.m4 was used?
+macro_version=$macro_version
+macro_revision=$macro_revision
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# What type of objects to build.
+pic_mode=$pic_mode
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# An echo program that protects backslashes.
+ECHO=$lt_ECHO
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="\$SED -e 1s/^X//"
+
+# A grep program that handles long lines.
+GREP=$lt_GREP
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# A literal string matcher.
+FGREP=$lt_FGREP
+
+# A BSD- or MS-compatible name lister.
+NM=$lt_NM
+
+# Whether we need soft or hard links.
+LN_S=$lt_LN_S
+
+# What is the maximum length of a command?
+max_cmd_len=$max_cmd_len
+
+# Object file suffix (normally "o").
+objext=$ac_objext
+
+# Executable file suffix (normally "").
+exeext=$exeext
+
+# whether the shell understands "unset".
+lt_unset=$lt_unset
+
+# turn spaces into newlines.
+SP2NL=$lt_lt_SP2NL
+
+# turn newlines into spaces.
+NL2SP=$lt_lt_NL2SP
+
+# convert \$build file names to \$host format.
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+
+# convert \$build files to toolchain format.
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+
+# An object symbol dumper.
+OBJDUMP=$lt_OBJDUMP
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method = "file_magic".
+file_magic_cmd=$lt_file_magic_cmd
+
+# How to find potential files when deplibs_check_method = "file_magic".
+file_magic_glob=$lt_file_magic_glob
+
+# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
+want_nocaseglob=$lt_want_nocaseglob
+
+# DLL creation program.
+DLLTOOL=$lt_DLLTOOL
+
+# Command to associate shared and link libraries.
+sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
+
+# The archiver.
+AR=$lt_AR
+
+# Flags to create an archive.
+AR_FLAGS=$lt_AR_FLAGS
+
+# How to feed a file listing to the archiver.
+archiver_list_spec=$lt_archiver_list_spec
+
+# A symbol stripping program.
+STRIP=$lt_STRIP
+
+# Commands used to install an old-style archive.
+RANLIB=$lt_RANLIB
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Whether to use a lock for old archive extraction.
+lock_old_archive_extraction=$lock_old_archive_extraction
+
+# A C compiler.
+LTCC=$lt_CC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_CFLAGS
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration.
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair.
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# Transform the output of nm in a C name address pair when lib prefix is needed.
+global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
+
+# Specify filename containing input files for \$NM.
+nm_file_list_spec=$lt_nm_file_list_spec
+
+# The root where to search for dependent libraries,and in which our libraries should be installed.
+lt_sysroot=$lt_sysroot
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# Used to examine libraries when file_magic_cmd begins with "file".
+MAGIC_CMD=$MAGIC_CMD
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Manifest tool.
+MANIFEST_TOOL=$lt_MANIFEST_TOOL
+
+# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+DSYMUTIL=$lt_DSYMUTIL
+
+# Tool to change global to local symbols on Mac OS X.
+NMEDIT=$lt_NMEDIT
+
+# Tool to manipulate fat objects and archives on Mac OS X.
+LIPO=$lt_LIPO
+
+# ldd/readelf like tool for Mach-O binaries on Mac OS X.
+OTOOL=$lt_OTOOL
+
+# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
+OTOOL64=$lt_OTOOL64
+
+# Old archive suffix (normally "a").
+libext=$libext
+
+# Shared library suffix (normally ".so").
+shrext_cmds=$lt_shrext_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at link time.
+variables_saved_for_relink=$lt_variables_saved_for_relink
+
+# Do we need the "lib" prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Library versioning type.
+version_type=$version_type
+
+# Shared library runtime path variable.
+runpath_var=$runpath_var
+
+# Shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Permission mode override for installation of shared libraries.
+install_override_mode=$lt_install_override_mode
+
+# Command to use after installation of a shared archive.
+postinstall_cmds=$lt_postinstall_cmds
+
+# Command to use after uninstallation of a shared archive.
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# As "finish_cmds", except a single script fragment to be evaled but
+# not shown.
+finish_eval=$lt_finish_eval
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Compile-time system search path for libraries.
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries.
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds
+
+# A language specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# If ld is used when linking, flag to hardcode \$libdir into a binary
+# during linking.  This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=$hardcode_automatic
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds
+
+# Commands necessary for finishing linking programs.
+postlink_cmds=$lt_postlink_cmds
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+  case $host_os in
+  aix3*)
+    cat <<\_LT_EOF >> "$cfgfile"
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+_LT_EOF
+    ;;
+  esac
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '$q' "$ltmain" >> "$cfgfile" \
+     || (rm -f "$cfgfile"; exit 1)
+
+  if test x"$xsi_shell" = xyes; then
+  sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
+func_dirname ()\
+{\
+\    case ${1} in\
+\      */*) func_dirname_result="${1%/*}${2}" ;;\
+\      *  ) func_dirname_result="${3}" ;;\
+\    esac\
+} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_basename ()$/,/^} # func_basename /c\
+func_basename ()\
+{\
+\    func_basename_result="${1##*/}"\
+} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
+func_dirname_and_basename ()\
+{\
+\    case ${1} in\
+\      */*) func_dirname_result="${1%/*}${2}" ;;\
+\      *  ) func_dirname_result="${3}" ;;\
+\    esac\
+\    func_basename_result="${1##*/}"\
+} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
+func_stripname ()\
+{\
+\    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
+\    # positional parameters, so assign one to ordinary parameter first.\
+\    func_stripname_result=${3}\
+\    func_stripname_result=${func_stripname_result#"${1}"}\
+\    func_stripname_result=${func_stripname_result%"${2}"}\
+} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
+func_split_long_opt ()\
+{\
+\    func_split_long_opt_name=${1%%=*}\
+\    func_split_long_opt_arg=${1#*=}\
+} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
+func_split_short_opt ()\
+{\
+\    func_split_short_opt_arg=${1#??}\
+\    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
+} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
+func_lo2o ()\
+{\
+\    case ${1} in\
+\      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
+\      *)    func_lo2o_result=${1} ;;\
+\    esac\
+} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_xform ()$/,/^} # func_xform /c\
+func_xform ()\
+{\
+    func_xform_result=${1%.*}.lo\
+} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_arith ()$/,/^} # func_arith /c\
+func_arith ()\
+{\
+    func_arith_result=$(( $* ))\
+} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_len ()$/,/^} # func_len /c\
+func_len ()\
+{\
+    func_len_result=${#1}\
+} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+fi
+
+if test x"$lt_shell_append" = xyes; then
+  sed -e '/^func_append ()$/,/^} # func_append /c\
+func_append ()\
+{\
+    eval "${1}+=\\${2}"\
+} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
+func_append_quoted ()\
+{\
+\    func_quote_for_eval "${2}"\
+\    eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
+} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  # Save a `func_append' function call where possible by direct use of '+='
+  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
+    && mv -f "$cfgfile.tmp" "$cfgfile" \
+      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+  test 0 -eq $? || _lt_function_replace_fail=:
+else
+  # Save a `func_append' function call even when '+=' is not available
+  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
+    && mv -f "$cfgfile.tmp" "$cfgfile" \
+      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+  test 0 -eq $? || _lt_function_replace_fail=:
+fi
+
+if test x"$_lt_function_replace_fail" = x":"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
+$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
+fi
+
+
+   mv -f "$cfgfile" "$ofile" ||
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+
+ ;;
+    "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"
+          cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[  ]*\$/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"`
+            # Hide the ALL_LINGUAS assigment from automake < 1.5.
+            eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
+            POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
+          else
+            # The set of available languages was given in configure.in.
+            # Hide the ALL_LINGUAS assigment from automake < 1.5.
+            eval '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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
+
+echo
+echo Type \'make\' to compile parted.
diff --git a/configure.ac b/configure.ac
new file mode 100644 (file)
index 0000000..ce2b3b5
--- /dev/null
@@ -0,0 +1,633 @@
+dnl GNU Parted - a library and front end for manipulation hard disk partitions
+dnl Copyright (C) 1998-2002, 2005-2011 Free Software Foundation, Inc.
+dnl
+dnl This file may be modified and/or distributed without restriction.
+
+AC_PREREQ([2.63])
+AC_INIT([GNU parted], m4_esyscmd([build-aux/git-version-gen .version]),
+        [bug-parted@gnu.org])
+
+# When the most recent signed tag is v1.8.8.1,
+# the above might set e.g., PACKAGE_VERSION='1.8.8.1.1-0bfc'
+
+AC_CONFIG_SRCDIR([include/parted/parted.h])
+
+AC_CONFIG_HEADERS([lib/config.h:lib/config.h.in])
+AC_CONFIG_AUX_DIR([build-aux])
+
+dnl Versioning
+dnl Shamelessly pulled straight from glib's configure.in ...
+dnl Making releases:
+dnl    PED_MICRO_VERSION += 1;
+dnl    PED_INTERFACE_AGE += 1;
+dnl    PED_BINARY_AGE += 1;
+dnl if any functions have been added, set PED_INTERFACE_AGE to 0.
+dnl if backwards compatibility has been broken (eg. functions removed,
+dnl function signatures changed),
+dnl set PED_BINARY_AGE _and_ PED_INTERFACE_AGE to 0.
+
+# Derive these numbers from $PACKAGE_VERSION, which is set
+# when autoconf creates configure (see AC_INIT, above).
+PED_MAJOR_VERSION=`echo "$PACKAGE_VERSION"|sed 's/\..*//'`
+PED_MINOR_VERSION=`echo "$PACKAGE_VERSION"|sed 's/^[[0-9]][[0-9]]*\.//;s/\..*//'`
+case $PACKAGE_VERSION in
+  *.*.*.*.*)
+    PED_MICRO_VERSION=`echo "$PACKAGE_VERSION" \
+      | sed 's/^[^.]*\.[^.]*\.//;s/\..*//'`
+    ;;
+  *) PED_MICRO_VERSION=0;;
+esac
+
+PED_INTERFACE_AGE=0
+PED_BINARY_AGE=0
+PED_VERSION_SUFFIX=
+PED_VERSION=$PED_MAJOR_VERSION.$PED_MINOR_VERSION.$PED_MICRO_VERSION$PED_VERSION_SUFFIX
+
+LT_RELEASE=$PED_MAJOR_VERSION.$PED_MINOR_VERSION
+LT_CURRENT=`expr $PED_MICRO_VERSION - $PED_INTERFACE_AGE`
+LT_REVISION=$PED_INTERFACE_AGE
+LT_AGE=`expr $PED_BINARY_AGE - $PED_INTERFACE_AGE`
+AC_SUBST([LT_RELEASE])
+AC_SUBST([LT_CURRENT])
+AC_SUBST([LT_REVISION])
+AC_SUBST([LT_AGE])
+
+AM_INIT_AUTOMAKE([1.11 dist-xz color-tests parallel-tests])
+AM_SILENT_RULES([yes]) # make --enable-silent-rules the default.
+
+AC_CANONICAL_HOST
+case "$host_os" in
+       linux*) OS=linux ;;
+       gnu*)   OS=gnu ;;
+       beos*)  OS=beos ;;
+       *)      AC_MSG_ERROR([Unknown or unsupported OS "$host_os".  Only "linux", "gnu" and "beos" are supported in this version of GNU Parted.]) ;;
+esac
+AC_SUBST([OS])
+
+dnl Command-line options
+AC_ARG_WITH([readline],
+       [  --with-readline         support fancy command line editing], ,
+       with_readline=yes
+)
+
+AC_ARG_ENABLE([mtrace],
+       [  --enable-mtrace         enable malloc() debugging], ,
+       enable_mtrace=no
+)
+if test "$enable_mtrace" = yes; then
+       AC_DEFINE([ENABLE_MTRACE], [1], [Mtrace malloc() debugging])
+fi
+
+AC_SUBST([ENABLE_DEVICE_MAPPER])
+ENABLE_DEVICE_MAPPER=yes
+AC_ARG_ENABLE([device-mapper],
+       [  --enable-device-mapper  enable device mapper support [default=yes]],
+       [ENABLE_DEVICE_MAPPER=$enable_device_mapper])
+if test $ENABLE_DEVICE_MAPPER = yes; then
+       AC_DEFINE([ENABLE_DEVICE_MAPPER],
+                  1, [device mapper (libdevmapper) support])
+fi
+
+AC_ARG_ENABLE([selinux],
+       [  --enable-selinux        enable SELinux support [default=no]], ,
+       enable_selinux=no
+)
+
+AC_ARG_ENABLE([discover-only],
+       [  --enable-discover-only  support only reading/probing [default=no]], ,
+       enable_discover_only=no
+)
+if test "$enable_discover_only" = yes; then
+       AC_DEFINE([DISCOVER_ONLY], [1], [Probing functionality only])
+fi
+
+PARTED_LIBS=""
+AC_ARG_ENABLE([dynamic-loading],
+[  --enable-dynamic-loading  support dynamic fs libraries [default=yes]], ,
+       if test "$enable_discover_only" = yes; then
+               enable_dynamic_loading=no
+       else
+               enable_dynamic_loading=yes
+       fi
+)
+if test "$enable_discover_only" = yes \
+ && test "$enable_dynamic_loading" = yes; then
+       AC_MSG_ERROR(
+[You can't use --enable-dynamic-loading and --disable-discover-only together]
+       )
+fi
+
+AC_ARG_ENABLE([debug],
+       [  --enable-debug          compile in assertions [default=yes]], ,
+       enable_debug=yes
+)
+
+if test "$enable_debug" = yes; then
+       AC_DEFINE([DEBUG], [1], [Enable assertions, etc.])
+fi
+
+AC_ARG_ENABLE([read-only],
+       [  --enable-read-only      disable writing (for debugging) [default=no]]
+       , ,
+       enable_read_only=no
+)
+if test "$enable_read_only" = yes; then
+       AC_DEFINE([READ_ONLY], [1], [Disable all writing code])
+fi
+
+PARTEDLDFLAGS=
+AC_SUBST([PARTEDLDFLAGS])
+
+AC_ARG_ENABLE([pc98],
+       [  --enable-pc98          build with pc98 support [default=yes]], ,
+       enable_pc98=yes
+)
+if test "$enable_pc98" = yes; then
+       AC_DEFINE([ENABLE_PC98], [1],
+                 [Include PC98 partition tables.  (Sometimes excluded to avoid
+                  collisions with msdos partition tables])
+fi
+
+AC_ARG_ENABLE([hfs-extract-fs],
+       [  --enable-hfs-extract-fs Extract special HFS files for debugging [default=no]], ,
+       enable_hfs_extract_fs=no
+)
+if test "$enable_hfs_extract_fs" = yes; then
+       AC_DEFINE([HFS_EXTRACT_FS], [1],
+                 [Extract low level special HFS(+) files for debugging purposes
+                  when using the "check" command (NOT FOR PACKAGING)])
+fi
+
+dnl make libc threadsafe (not required for us, but useful other users of
+dnl libparted)
+AM_CPPFLAGS="$AM_CPPFLAGS -D_REENTRANT"
+
+dnl Check for programs.
+AC_ISC_POSIX
+AC_PROG_CC
+AC_PROG_GCC_TRADITIONAL
+AM_PROG_CC_C_O
+
+gl_EARLY
+parted_FIND_USABLE_TEST_DIR
+
+dnl This test must come as early as possible after the compiler configuration
+dnl tests, because the choice of the file model can (in principle) affect
+dnl whether functions and headers are available, whether they work, etc.
+AC_SYS_LARGEFILE
+
+gl_INIT
+
+AC_ARG_ENABLE([gcc-warnings],
+  [AS_HELP_STRING([--enable-gcc-warnings],
+                 [turn on lots of GCC warnings (for developers)])],
+  [case $enableval in
+     yes|no) ;;
+     *)      AC_MSG_ERROR([bad value $enableval for gcc-warnings option]) ;;
+   esac
+   gl_gcc_warnings=$enableval],
+  [gl_gcc_warnings=no]
+)
+
+if test "$gl_gcc_warnings" = yes; then
+  gl_WARN_ADD([-Werror], [WERROR_CFLAGS])
+  AC_SUBST([WERROR_CFLAGS])
+
+  nw=
+  # This, $nw, is the list of warnings we disable.
+  nw="$nw -Wdeclaration-after-statement" # too useful to forbid
+  nw="$nw -Waggregate-return"       # anachronistic
+  nw="$nw -Wlong-long"              # C90 is anachronistic (lib/gethrxtime.h)
+  nw="$nw -Wc++-compat"             # We don't care about C++ compilers
+  nw="$nw -Wundef"                  # Warns on '#if GNULIB_FOO' etc in gnulib
+  nw="$nw -Wtraditional"            # Warns on #elif which we use often
+  nw="$nw -Wcast-qual"              # Too many warnings for now
+  nw="$nw -Wconversion"             # Too many warnings for now
+  nw="$nw -Wsystem-headers"         # Don't let system headers trigger warnings
+  nw="$nw -Wsign-conversion"        # Too many warnings for now
+  nw="$nw -Wtraditional-conversion" # Too many warnings for now
+  nw="$nw -Wunreachable-code"       # Too many warnings for now
+  nw="$nw -Wpadded"                 # Our structs are not padded
+  nw="$nw -Wredundant-decls"        # openat.h declares e.g., mkdirat
+  nw="$nw -Wlogical-op"             # any use of fwrite provokes this
+  nw="$nw -Wformat-nonliteral"      # who.c and pinky.c strftime uses
+  nw="$nw -Wvla"                    # warnings in gettext.h
+  nw="$nw -Wnested-externs"         # use of XARGMATCH/verify_function__
+  nw="$nw -Wswitch-enum"            # Too many warnings for now
+  nw="$nw -Wswitch-default"         # Too many warnings for now
+  # Too many warnings for now
+  nw="$nw -Wattributes"
+  nw="$nw -Wstrict-prototypes"
+  nw="$nw -Wold-style-definition"
+  nw="$nw -Wpacked"
+  nw="$nw -Wmissing-prototypes"
+  nw="$nw -Wmissing-declarations"
+  nw="$nw -Wmissing-noreturn"
+  # things I might fix soon:
+  nw="$nw -Wfloat-equal"            # sort.c, seq.c
+  nw="$nw -Wmissing-format-attribute" # copy.c
+  nw="$nw -Wunsafe-loop-optimizations" # a few src/*.c
+  nw="$nw -Winline"                 # system.h's readdir_ignoring_dot_and_dotdot
+  nw="$nw -Wstrict-overflow"        # expr.c, pr.c, tr.c, factor.c
+  nw="$nw -Wstack-protector"        # libparted/label/gpt.c
+  # ?? -Wstrict-overflow
+
+  gl_MANYWARN_ALL_GCC([ws])
+  gl_MANYWARN_COMPLEMENT([ws], [$ws], [$nw])
+  for w in $ws; do
+    gl_WARN_ADD([$w])
+  done
+  gl_WARN_ADD([-Wno-missing-field-initializers]) # We need this one
+  gl_WARN_ADD([-Wno-sign-compare])     # Too many warnings for now
+  gl_WARN_ADD([-Wno-pointer-sign])     # Too many warnings for now
+  gl_WARN_ADD([-Wno-unused-parameter]) # Too many warnings for now
+  gl_WARN_ADD([-Wno-unused-macros]) # Too many warnings for now
+
+  # FIXME: investigate these
+  gl_WARN_ADD([-Wno-jump-misses-init])
+
+  # In spite of excluding -Wlogical-op above, it is enabled, as of
+  # gcc 4.5.0 20090517, and it provokes warnings in cat.c, dd.c, truncate.c
+  gl_WARN_ADD([-Wno-logical-op])
+
+  gl_WARN_ADD([-fdiagnostics-show-option])
+
+  AC_SUBST([WARN_CFLAGS])
+
+  AC_DEFINE([lint], [1], [Define to 1 if the compiler is checking for lint.])
+  AC_DEFINE([_FORTIFY_SOURCE], [2],
+    [enable compile-time and run-time bounds-checking, and some warnings])
+  AC_DEFINE([GNULIB_PORTCHECK], [1], [enable some gnulib portability checks])
+fi
+
+
+
+AC_CHECK_SIZEOF([off_t], [64], [
+       #include <stdio.h>
+       #include <sys/types.h>
+       #include <unistd.h>
+])
+
+AM_ENABLE_SHARED
+if test "$OS" = linux && test $ac_cv_sizeof_off_t -lt 8; then
+       dnl Need to disable shared libraries, to get llseek() to work.  Long
+       dnl story.  The short story is: lseek() isn't in glibc, so a syscall
+       dnl must be made.  syscalls can't be made from within shared libraries,
+       dnl because of a bug (?) in gcc.
+       AC_MSG_WARN(
+off_t is less than 8 bytes.  Using llseek syscall, and disabling shared
+libraries.)
+       AM_DISABLE_SHARED
+fi
+AM_PROG_LIBTOOL
+
+AM_GNU_GETTEXT_VERSION([0.18])
+AM_GNU_GETTEXT([external])
+if test "$USE_INCLUDED_LIBINTL" = "yes"; then
+       AC_MSG_ERROR([
+GNU Parted requires gettext to be installed for compilation -
+if native language support is desired.  Either disable native language support
+with:
+       $ ./configure --disable-nls
+Or install gettext.  GNU gettext is available from
+       http://ftp.gnu.org/gnu/gettext
+])
+fi
+
+dnl Check for libdl, if we are doing dynamic loading
+DL_LIBS=""
+AC_SUBST([DYNAMIC_LOADING])
+DYNAMIC_LOADING=no
+if test "$enable_dynamic_loading" = yes; then
+       AC_CHECK_LIB([dl], [dlopen],
+               DL_LIBS="-ldl"
+               PARTED_LIBS="$PARTED_LIBS -ldl"
+               DYNAMIC_LOADING=yes
+               AC_DEFINE([DYNAMIC_LOADING], [1], [Lazy linking to fs libs]),
+               AC_MSG_ERROR(
+                       [-ldl not found!  Try using --disable-dynamic-loading]
+               )
+       )
+fi
+AC_SUBST([DL_LIBS])
+
+dnl Check for libuuid
+UUID_LIBS=""
+AC_CHECK_LIB([uuid], [uuid_generate], [UUID_LIBS="-luuid"],
+       [AC_MSG_ERROR(dnl
+[GNU Parted requires libuuid - a part of the util-linux-ng package (but
+usually distributed separately in libuuid-devel, uuid-dev or similar)
+This can probably be found on your distribution's CD or FTP site or at:
+    http://userweb.kernel.org/~kzak/util-linux-ng/
+Note: originally, libuuid was part of the e2fsprogs package.  Later, it
+moved to util-linux-ng-2.16, and that package is now the preferred source.])])
+AC_SUBST([UUID_LIBS])
+
+dnl Check for libdevmapper
+DM_LIBS=
+if test $ENABLE_DEVICE_MAPPER = yes; then
+  AC_CHECK_LIB([devmapper], [dm_task_create],
+    [DM_LIBS=-ldevmapper],
+    [AC_MSG_ERROR(dnl
+[libdevmapper could not be found, but is required for the
+--enable-device-mapper option, which is enabled by default.  Either disable
+device-mapper support with --disable-device-mapper or download and install
+device-mapper from:
+       http://sources.redhat.com/dm/
+Note: if you are using precompiled packages you will need the development
+package as well (it may be called device-mapper-devel or something similar).]
+    )]
+  )
+fi
+AC_SUBST([DM_LIBS])
+
+dnl Check for SELinux
+SELINUX_LIBS=""
+if test "$enable_selinux" = yes; then
+       SELINUX_LIBS="-lselinux -lsepol"
+fi
+AC_SUBST([SELINUX_LIBS])
+
+dnl Check for libreiserfs
+REISER_LIBS=""
+if test "$enable_dynamic_loading" = no && test "$enable_discover_only" = no; then
+       OLD_LIBS="$LIBS"
+       AC_CHECK_LIB([dal], [dal_equals],
+               LIBS="-ldal"
+               AC_CHECK_LIB([reiserfs], [reiserfs_fs_probe],
+                       REISER_LIBS="-ldal -lreiserfs"
+                       AC_DEFINE([HAVE_LIBREISERFS], [1], [Have libreiserfs])
+               )
+               AC_CHECK_LIB([reiserfs], [reiserfs_fs_check],
+                       AC_DEFINE([HAVE_REISERFS_FS_CHECK], [1], [Have reiserfs_fs_check()])
+               )
+       )
+       LIBS="$OLD_LIBS"
+fi
+AC_SUBST([REISER_LIBS])
+
+dnl Check for termcap
+if test "$with_readline" = yes; then
+       OLD_LIBS="$LIBS"
+       LIBS=""
+       AC_SEARCH_LIBS([tgetent], [tinfo ncurses curses termcap termlib],
+               [PARTED_LIBS="$PARTED_LIBS $LIBS"],
+               [AC_MSG_ERROR(dnl
+[termcap could not be found which is required for the
+--with-readline option (which is enabled by default).  Either disable readline
+support with --without-readline or download and install termcap from:
+       ftp.gnu.org/gnu/termcap
+Note: if you are using precompiled packages you will also need the development
+  package as well (which may be called termcap-devel or something similar).
+Note: (n)curses also seems to work as a substitute for termcap.  This was
+  not found either - but you could try installing that as well.])])
+       LIBS="$OLD_LIBS"
+fi
+
+dnl Check for readline
+dnl NOTE: We need to remove the gl_cv_ignore_unused_libraries flag if we
+dnl detected one earlier.  libreadline on some platforms (e.g., RHEL and
+dnl Fedora) is left with
+if test "$with_readline" = yes; then
+       OLD_LIBS="$LIBS"
+       LIBS="$LIBS $PARTED_LIBS"
+       found_working_libreadline=no
+       AC_CHECK_LIB([readline], [readline],
+               found_working_libreadline=yes,
+               AC_MSG_ERROR(
+[GNU Readline could not be found which is required for the
+--with-readline (which is enabled by default).  Either disable readline support with
+--without-readline or downloaded and install it from:
+        ftp.gnu.org/gnu/readline
+Note: if you are using precompiled packages you will also need the development
+package as well (which may be called readline-devel or something similar).
+])
+               ,
+               $PARTED_LIBS
+       )
+       LIBS="$OLD_LIBS $PARTED_LIBS"
+
+       # See if libreadline is too old to be used.
+       # The readline function in Debian's libreadline5 5.0-10 fails to
+       # print to stdout the response (from stdin) to a prompt, when stdout
+       # is redirected, while 5.2-3 works fine.  That failure would cause
+       # several of parted's tests to failure.
+       # The purist approach would be to write a run-test, but that's
+       # not friendly to cross-compilers, so here's a compromise:
+       #
+       # See if libreadline defines one of these symbols:
+       # [this is the list of public symbols that are in 5.2, but not 5.0]
+       #
+       # $ diff -u /tmp/readline-5.[02]|grep '+T.[^_]'
+       # +T rl_vi_rubout
+       # +T rl_variable_value
+       # +T rl_reset_screen_size
+       # +T alloc_history_entry
+       # +T copy_history_entry
+       # +T replace_history_data
+       #
+       # If not, then reject this readline lib.
+       AC_CHECK_LIB([readline], [rl_variable_value],
+                    ,
+                    AC_MSG_ERROR(
+[Your version of libreadline is too old to be used.
+Consider upgrading to version 5.2 or newer.])
+                    found_working_libreadline=no,
+                    $PARTED_LIBS)
+
+       if test $found_working_libreadline = yes; then
+               PARTED_LIBS="-lreadline $PARTED_LIBS"
+               AC_DEFINE([HAVE_LIBREADLINE], [1], [have readline])
+       fi
+       LIBS="$OLD_LIBS"
+fi
+
+AC_SUBST([PARTED_LIBS])
+
+dnl Check for OS specific libraries
+
+dnl GNU/Hurd:
+if test "$OS" = gnu; then
+dnl libshouldbeinlibc
+       AC_CHECK_LIB([shouldbeinlibc], [vm_deallocate],
+               OS_LIBS="$OS_LIBS -lshouldbeinlibc",
+               AC_MSG_ERROR(
+[GNU Parted requires libshouldbeinlibc when running on
+GNU/Hurd systems.  It is a standard part of a GNU/Hurd system.]
+               )
+       )
+
+dnl libstore may depend on libparted being present.
+dnl Aren't circular dependencies wonderful?
+       OLD_LIBS="$LIBS"
+       LIBS=
+
+       AC_CHECK_LIB([parted], [ped_device_read])
+
+dnl libstore
+       AC_CHECK_LIB([store], [store_open],
+               OS_LIBS="$OS_LIBS -lstore",
+               AC_MSG_ERROR(
+[GNU Parted requires libstore when running on GNU/Hurd
+systems.  It is a standard part of a GNU/Hurd system.]
+               )
+               ,
+               $OS_LIBS $UUID_LIBS $DM_LIBS $LIBS
+       )
+       LIBS="$OLD_LIBS"
+fi
+
+dnl BeOS/ZETA/Haiku:
+
+if test "$OS" = beos; then
+       dnl Include the socket library, as it is a depedency of libuuid
+       dnl and so also of us (due to socket() call in libuuid)
+       OS_LIBS="$OS_LIBS -lsocket"
+fi
+
+AC_SUBST([OS_LIBS])
+
+dnl One day, gettext might support libtool...
+dnl if test "$USE_INCLUDED_LIBINTL" = "yes"; then
+dnl    INTLINCS='-I$(top_srcdir)/intl'
+dnl fi
+AC_SUBST([INTLINCS])
+
+
+dnl Checks for header files.
+AC_CHECK_HEADER([uuid/uuid.h], ,
+       [AC_MSG_ERROR(
+[GNU Parted requires libuuid - a part of the e2fsprogs package.
+You seem to have the library installed but not the headers.  These are usually
+found in a corresponding development package (usually called e2fsprogs-devel).
+If you can't find one try:
+        http://web.mit.edu/tytso/www/linux/e2fsprogs.html])]
+)
+
+AC_CHECK_HEADERS([getopt.h])
+AC_CHECK_HEADERS([linux/ext2_fs.h])
+
+dnl required for libparted/llseek.c  (TODO: make linux-x86 only)
+if test "$OS" = linux; then
+       AC_CHECK_HEADER([linux/unistd.h])
+fi
+
+if test "$with_readline" = yes; then
+       AC_CHECK_HEADERS([readline/readline.h readline/history.h], ,
+               [AC_MSG_ERROR(
+[The headers for GNU Readline could not be found which
+are required for the --with-readline option.  You seem to have the GNU readline
+library installed but not the headers.  These are usually found in a
+corresponding development package (usually called readline-devel).  If you can't
+find one try:
+        ftp.gnu.org/gnu/readline
+Alternatively you can disable readline support with --without-readline])]
+       )
+fi
+
+AC_CHECK_HEADERS([termcap.h])
+
+if test "$USE_NLS" = yes; then
+       AC_CHECK_HEADERS([wctype.h], ,
+               [AC_MSG_ERROR(
+[One or more of the header files that are required for
+native language support (wctype.h) could not be found.  Either get a newer
+version of GNU libc and its headers - which can be obtained from:
+       ftp.gnu.org/gnu/glibc
+Or disable native language support with the --disable-nls option])]
+       )
+fi
+
+AC_CHECK_HEADER([execinfo.h], [
+       AC_CHECK_LIB([c], [backtrace], [
+               AC_DEFINE([HAVE_BACKTRACE], [1], [Has backtrace support])
+               LDFLAGS="$LDFLAGS -rdynamic"
+       ])
+])
+
+AM_CONDITIONAL([COMPILE_FOR_S390], [test "$host_cpu" = s390 || test "$host_cpu" = s390x])
+AM_CONDITIONAL([BUILD_LINUX], [test "$OS" = linux])
+
+dnl check for "check", unit testing library/header
+PKG_CHECK_MODULES([CHECK], [check >= 0.9.3], have_check=yes, have_check=no)
+if test "$have_check" != "yes"; then
+    AC_MSG_RESULT([Unable to locate check version 0.9.3 or higher: not building])
+fi
+AM_CONDITIONAL([HAVE_CHECK], [test "$have_check" = yes])
+
+dnl Checks for typedefs, structures and compiler characteristics.
+AC_PROG_LD
+
+AC_C_BIGENDIAN
+AC_C_INLINE
+AC_C_CONST
+AC_C_RESTRICT
+
+dnl Checks for library functions.
+AC_CHECK_FUNCS([sigaction])
+AC_CHECK_FUNCS([getuid])
+
+dnl NOTE: We need to remove the gl_cv_ignore_unused_libraries flag if we
+dnl detected one earlier.  libreadline on some platforms (e.g., RHEL and
+dnl Fedora) is left with
+if test "$with_readline" = yes; then
+       OLD_LIBS="$LIBS"
+       LIBS="$LIBS $PARTED_LIBS -lreadline"
+       AC_CHECK_FUNCS([rl_completion_matches])
+       LIBS="$OLD_LIBS"
+fi
+
+AC_CHECK_FUNCS([canonicalize_file_name])
+
+DATE=$(date '+%d %b %Y %H:%M')
+USER=$(whoami)
+HOST=$(hostname)
+BUILDINFO="$USER@$HOST, $DATE"
+AC_SUBST([BUILDINFO])
+
+LIB_BLKID=
+AC_SUBST([LIB_BLKID])
+pe_saved_libs=$LIBS
+  AC_SEARCH_LIBS([blkid_probe_get_topology], [blkid],
+    [test "$ac_cv_search_blkid_probe_get_topology" = "none required" \
+     || LIB_BLKID=$ac_cv_search_blkid_probe_get_topology])
+  AC_CHECK_FUNC([blkid_probe_get_topology], [use_blkid=1], [use_blkid=0])
+LIBS=$pe_saved_libs
+AC_DEFINE_UNQUOTED([USE_BLKID], [$use_blkid],
+  [Define if you have sufficient blkid support.])
+AC_CHECK_HEADERS_ONCE([blkid/blkid.h])
+
+AC_OUTPUT([
+Makefile
+lib/Makefile
+include/Makefile
+include/parted/Makefile
+libparted/Makefile
+libparted/labels/Makefile
+libparted/fs/Makefile
+libparted/fs/amiga/Makefile
+libparted/fs/ext2/Makefile
+libparted/fs/fat/Makefile
+libparted/fs/hfs/Makefile
+libparted/fs/jfs/Makefile
+libparted/fs/linux_swap/Makefile
+libparted/fs/ntfs/Makefile
+libparted/fs/reiserfs/Makefile
+libparted/fs/ufs/Makefile
+libparted/fs/xfs/Makefile
+libparted/fs/nilfs2/Makefile
+libparted/tests/Makefile
+libparted.pc
+parted/Makefile
+partprobe/Makefile
+doc/Makefile
+doc/C/Makefile
+doc/pt_BR/Makefile
+debug/Makefile
+debug/test/Makefile
+tests/Makefile
+po/Makefile.in
+])
+
+echo
+echo Type \'make\' to compile parted.
diff --git a/debug/Makefile.am b/debug/Makefile.am
new file mode 100644 (file)
index 0000000..eacf2e8
--- /dev/null
@@ -0,0 +1,4 @@
+SUBDIRS = test
+AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/debug/Makefile.in b/debug/Makefile.in
new file mode 100644 (file)
index 0000000..7d8e663
--- /dev/null
@@ -0,0 +1,1344 @@
+# Makefile.in generated by automake 1.11a from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in 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.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = debug
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+       $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argmatch.m4 \
+       $(top_srcdir)/m4/assert.m4 $(top_srcdir)/m4/btowc.m4 \
+       $(top_srcdir)/m4/calloc.m4 $(top_srcdir)/m4/canonicalize.m4 \
+       $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
+       $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/configmake.m4 \
+       $(top_srcdir)/m4/dirname.m4 \
+       $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+       $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/environ.m4 \
+       $(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
+       $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fclose.m4 \
+       $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/fcntl_h.m4 \
+       $(top_srcdir)/m4/fflush.m4 $(top_srcdir)/m4/fpending.m4 \
+       $(top_srcdir)/m4/fpurge.m4 $(top_srcdir)/m4/freading.m4 \
+       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/fsync.m4 \
+       $(top_srcdir)/m4/ftell.m4 $(top_srcdir)/m4/ftello.m4 \
+       $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
+       $(top_srcdir)/m4/langinfo_h.m4 $(top_srcdir)/m4/lcmessage.m4 \
+       $(top_srcdir)/m4/lib-ignore.m4 $(top_srcdir)/m4/lib-ld.m4 \
+       $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/localcharset.m4 \
+       $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \
+       $(top_srcdir)/m4/locale-tr.m4 $(top_srcdir)/m4/locale-zh.m4 \
+       $(top_srcdir)/m4/locale_h.m4 $(top_srcdir)/m4/localename.m4 \
+       $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/long-options.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
+       $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+       $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
+       $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+       $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbtowc.m4 \
+       $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+       $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/multiarch.m4 \
+       $(top_srcdir)/m4/nl_langinfo.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/nocrash.m4 $(top_srcdir)/m4/o-direct.m4 \
+       $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/priv-set.m4 \
+       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+       $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+       $(top_srcdir)/m4/read.m4 $(top_srcdir)/m4/readlink.m4 \
+       $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/regex.m4 \
+       $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+       $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/setlocale.m4 \
+       $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/ssize_t.m4 \
+       $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdarg.m4 \
+       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strdup.m4 \
+       $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/strerror_r.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+       $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtoll.m4 \
+       $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/symlink.m4 \
+       $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+       $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/thread.m4 \
+       $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/time_h.m4 \
+       $(top_srcdir)/m4/ungetc.m4 $(top_srcdir)/m4/unistd_h.m4 \
+       $(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkdir.m4 \
+       $(top_srcdir)/m4/usleep.m4 $(top_srcdir)/m4/version-etc.m4 \
+       $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \
+       $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
+       $(top_srcdir)/m4/wcrtomb.m4 $(top_srcdir)/m4/wctob.m4 \
+       $(top_srcdir)/m4/wctomb.m4 $(top_srcdir)/m4/wctype_h.m4 \
+       $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+       $(top_srcdir)/m4/xstrndup.m4 $(top_srcdir)/m4/xstrtol.m4 \
+       $(top_srcdir)/m4/yield.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+       html-recursive info-recursive install-data-recursive \
+       install-dvi-recursive install-exec-recursive \
+       install-html-recursive install-info-recursive \
+       install-pdf-recursive install-ps-recursive install-recursive \
+       installcheck-recursive installdirs-recursive pdf-recursive \
+       ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
+  distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+       $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+       distdir
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+pkglibexecdir = @pkglibexecdir@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+BUILDINFO = @BUILDINFO@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHECK_CFLAGS = @CHECK_CFLAGS@
+CHECK_LIBS = @CHECK_LIBS@
+CONFIG_INCLUDE = @CONFIG_INCLUDE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DYNAMIC_LOADING = @DYNAMIC_LOADING@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENABLE_DEVICE_MAPPER = @ENABLE_DEVICE_MAPPER@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FACCESSAT = @GNULIB_FACCESSAT@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCHMODAT = @GNULIB_FCHMODAT@
+GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FCNTL = @GNULIB_FCNTL@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FGETC = @GNULIB_FGETC@
+GNULIB_FGETS = @GNULIB_FGETS@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREAD = @GNULIB_FREAD@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSCANF = @GNULIB_FSCANF@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSTATAT = @GNULIB_FSTATAT@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FUTIMENS = @GNULIB_FUTIMENS@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETC = @GNULIB_GETC@
+GNULIB_GETCHAR = @GNULIB_GETCHAR@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETGROUPS = @GNULIB_GETGROUPS@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETS = @GNULIB_GETS@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
+GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_ISWBLANK = @GNULIB_ISWBLANK@
+GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@
+GNULIB_LCHMOD = @GNULIB_LCHMOD@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LINKAT = @GNULIB_LINKAT@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_LSTAT = @GNULIB_LSTAT@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MBTOWC = @GNULIB_MBTOWC@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDIRAT = @GNULIB_MKDIRAT@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKFIFO = @GNULIB_MKFIFO@
+GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@
+GNULIB_MKNOD = @GNULIB_MKNOD@
+GNULIB_MKNODAT = @GNULIB_MKNODAT@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@
+GNULIB_MKTIME = @GNULIB_MKTIME@
+GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@
+GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@
+GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_OPEN = @GNULIB_OPEN@
+GNULIB_OPENAT = @GNULIB_OPENAT@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE = @GNULIB_PIPE@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_PREAD = @GNULIB_PREAD@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READ = @GNULIB_READ@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_READLINKAT = @GNULIB_READLINKAT@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_REALPATH = @GNULIB_REALPATH@
+GNULIB_REMOVE = @GNULIB_REMOVE@
+GNULIB_RENAME = @GNULIB_RENAME@
+GNULIB_RENAMEAT = @GNULIB_RENAMEAT@
+GNULIB_RMDIR = @GNULIB_RMDIR@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SETLOCALE = @GNULIB_SETLOCALE@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STAT = @GNULIB_STAT@
+GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRERROR_R = @GNULIB_STRERROR_R@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRPTIME = @GNULIB_STRPTIME@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_SYMLINK = @GNULIB_SYMLINK@
+GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
+GNULIB_TIMEGM = @GNULIB_TIMEGM@
+GNULIB_TIME_R = @GNULIB_TIME_R@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
+GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
+GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNLINK = @GNULIB_UNLINK@
+GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_USLEEP = @GNULIB_USLEEP@
+GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VFSCANF = @GNULIB_VFSCANF@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSCANF = @GNULIB_VSCANF@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCPCPY = @GNULIB_WCPCPY@
+GNULIB_WCPNCPY = @GNULIB_WCPNCPY@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@
+GNULIB_WCSCAT = @GNULIB_WCSCAT@
+GNULIB_WCSCHR = @GNULIB_WCSCHR@
+GNULIB_WCSCMP = @GNULIB_WCSCMP@
+GNULIB_WCSCOLL = @GNULIB_WCSCOLL@
+GNULIB_WCSCPY = @GNULIB_WCSCPY@
+GNULIB_WCSCSPN = @GNULIB_WCSCSPN@
+GNULIB_WCSDUP = @GNULIB_WCSDUP@
+GNULIB_WCSLEN = @GNULIB_WCSLEN@
+GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@
+GNULIB_WCSNCAT = @GNULIB_WCSNCAT@
+GNULIB_WCSNCMP = @GNULIB_WCSNCMP@
+GNULIB_WCSNCPY = @GNULIB_WCSNCPY@
+GNULIB_WCSNLEN = @GNULIB_WCSNLEN@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSPBRK = @GNULIB_WCSPBRK@
+GNULIB_WCSRCHR = @GNULIB_WCSRCHR@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCSSPN = @GNULIB_WCSSPN@
+GNULIB_WCSSTR = @GNULIB_WCSSTR@
+GNULIB_WCSTOK = @GNULIB_WCSTOK@
+GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@
+GNULIB_WCSXFRM = @GNULIB_WCSXFRM@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCTOMB = @GNULIB_WCTOMB@
+GNULIB_WCTRANS = @GNULIB_WCTRANS@
+GNULIB_WCTYPE = @GNULIB_WCTYPE@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WMEMCHR = @GNULIB_WMEMCHR@
+GNULIB_WMEMCMP = @GNULIB_WMEMCMP@
+GNULIB_WMEMCPY = @GNULIB_WMEMCPY@
+GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@
+GNULIB_WMEMSET = @GNULIB_WMEMSET@
+GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
+HAVE_CHOWN = @HAVE_CHOWN@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@
+HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SETENV = @HAVE_DECL_SETENV@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@
+HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_DUPLOCALE = @HAVE_DUPLOCALE@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
+HAVE_FCHMODAT = @HAVE_FCHMODAT@
+HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
+HAVE_FCNTL = @HAVE_FCNTL@
+HAVE_FEATURES_H = @HAVE_FEATURES_H@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSTATAT = @HAVE_FSTATAT@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_FUTIMENS = @HAVE_FUTIMENS@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETGROUPS = @HAVE_GETGROUPS@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETLOGIN = @HAVE_GETLOGIN@
+HAVE_GETOPT_H = @HAVE_GETOPT_H@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
+HAVE_GRANTPT = @HAVE_GRANTPT@
+HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWBLANK = @HAVE_ISWBLANK@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
+HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
+HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
+HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
+HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
+HAVE_LCHMOD = @HAVE_LCHMOD@
+HAVE_LCHOWN = @HAVE_LCHOWN@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_LSTAT = @HAVE_LSTAT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSLEN = @HAVE_MBSLEN@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMCHR = @HAVE_MEMCHR@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDIRAT = @HAVE_MKDIRAT@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKFIFO = @HAVE_MKFIFO@
+HAVE_MKFIFOAT = @HAVE_MKFIFOAT@
+HAVE_MKNOD = @HAVE_MKNOD@
+HAVE_MKNODAT = @HAVE_MKNODAT@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
+HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
+HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
+HAVE_OPENAT = @HAVE_OPENAT@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PIPE = @HAVE_PIPE@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PWRITE = @HAVE_PWRITE@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_READLINKAT = @HAVE_READLINKAT@
+HAVE_REALPATH = @HAVE_REALPATH@
+HAVE_RENAMEAT = @HAVE_RENAMEAT@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRPTIME = @HAVE_STRPTIME@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYMLINK = @HAVE_SYMLINK@
+HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_TIMEGM = @HAVE_TIMEGM@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_USLEEP = @HAVE_USLEEP@
+HAVE_UTIMENSAT = @HAVE_UTIMENSAT@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCPCPY = @HAVE_WCPCPY@
+HAVE_WCPNCPY = @HAVE_WCPNCPY@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSCASECMP = @HAVE_WCSCASECMP@
+HAVE_WCSCAT = @HAVE_WCSCAT@
+HAVE_WCSCHR = @HAVE_WCSCHR@
+HAVE_WCSCMP = @HAVE_WCSCMP@
+HAVE_WCSCOLL = @HAVE_WCSCOLL@
+HAVE_WCSCPY = @HAVE_WCSCPY@
+HAVE_WCSCSPN = @HAVE_WCSCSPN@
+HAVE_WCSDUP = @HAVE_WCSDUP@
+HAVE_WCSLEN = @HAVE_WCSLEN@
+HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@
+HAVE_WCSNCAT = @HAVE_WCSNCAT@
+HAVE_WCSNCMP = @HAVE_WCSNCMP@
+HAVE_WCSNCPY = @HAVE_WCSNCPY@
+HAVE_WCSNLEN = @HAVE_WCSNLEN@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSPBRK = @HAVE_WCSPBRK@
+HAVE_WCSRCHR = @HAVE_WCSRCHR@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCSSPN = @HAVE_WCSSPN@
+HAVE_WCSSTR = @HAVE_WCSSTR@
+HAVE_WCSTOK = @HAVE_WCSTOK@
+HAVE_WCSWIDTH = @HAVE_WCSWIDTH@
+HAVE_WCSXFRM = @HAVE_WCSXFRM@
+HAVE_WCTRANS_T = @HAVE_WCTRANS_T@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WCTYPE_T = @HAVE_WCTYPE_T@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WMEMCHR = @HAVE_WMEMCHR@
+HAVE_WMEMCMP = @HAVE_WMEMCMP@
+HAVE_WMEMCPY = @HAVE_WMEMCPY@
+HAVE_WMEMMOVE = @HAVE_WMEMMOVE@
+HAVE_WMEMSET = @HAVE_WMEMSET@
+HAVE_XLOCALE_H = @HAVE_XLOCALE_H@
+HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
+IGNORE_UNUSED_LIBRARIES_CFLAGS = @IGNORE_UNUSED_LIBRARIES_CFLAGS@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@
+INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMULTITHREAD = @LIBMULTITHREAD@
+LIBOBJS = @LIBOBJS@
+LIBPTH = @LIBPTH@
+LIBPTH_PREFIX = @LIBPTH_PREFIX@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTHREAD = @LIBTHREAD@
+LIBTOOL = @LIBTOOL@
+LIB_BLKID = @LIB_BLKID@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBMULTITHREAD = @LTLIBMULTITHREAD@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBPTH = @LTLIBPTH@
+LTLIBTHREAD = @LTLIBTHREAD@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
+NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@
+NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
+NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@
+NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FCNTL_H = @NEXT_FCNTL_H@
+NEXT_GETOPT_H = @NEXT_GETOPT_H@
+NEXT_INTTYPES_H = @NEXT_INTTYPES_H@
+NEXT_LANGINFO_H = @NEXT_LANGINFO_H@
+NEXT_LOCALE_H = @NEXT_LOCALE_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@
+NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@
+NEXT_TIME_H = @NEXT_TIME_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PARTED_USABLE_TEST_DIR = @PARTED_USABLE_TEST_DIR@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CALLOC = @REPLACE_CALLOC@
+REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP = @REPLACE_DUP@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@
+REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FCNTL = @REPLACE_FCNTL@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FSTAT = @REPLACE_FSTAT@
+REPLACE_FSTATAT = @REPLACE_FSTATAT@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_FUTIMENS = @REPLACE_FUTIMENS@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETDELIM = @REPLACE_GETDELIM@
+REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@
+REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LINK = @REPLACE_LINK@
+REPLACE_LINKAT = @REPLACE_LINKAT@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_LSTAT = @REPLACE_LSTAT@
+REPLACE_MALLOC = @REPLACE_MALLOC@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MBTOWC = @REPLACE_MBTOWC@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKDIR = @REPLACE_MKDIR@
+REPLACE_MKFIFO = @REPLACE_MKFIFO@
+REPLACE_MKNOD = @REPLACE_MKNOD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_MKTIME = @REPLACE_MKTIME@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_OPEN = @REPLACE_OPEN@
+REPLACE_OPENAT = @REPLACE_OPENAT@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PREAD = @REPLACE_PREAD@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
+REPLACE_READ = @REPLACE_READ@
+REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_REALLOC = @REPLACE_REALLOC@
+REPLACE_REALPATH = @REPLACE_REALPATH@
+REPLACE_REMOVE = @REPLACE_REMOVE@
+REPLACE_RENAME = @REPLACE_RENAME@
+REPLACE_RENAMEAT = @REPLACE_RENAMEAT@
+REPLACE_RMDIR = @REPLACE_RMDIR@
+REPLACE_SETENV = @REPLACE_SETENV@
+REPLACE_SETLOCALE = @REPLACE_SETLOCALE@
+REPLACE_SLEEP = @REPLACE_SLEEP@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STAT = @REPLACE_STAT@
+REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRERROR_R = @REPLACE_STRERROR_R@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
+REPLACE_STRNDUP = @REPLACE_STRNDUP@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
+REPLACE_SYMLINK = @REPLACE_SYMLINK@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
+REPLACE_UNLINK = @REPLACE_UNLINK@
+REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
+REPLACE_UNSETENV = @REPLACE_UNSETENV@
+REPLACE_USLEEP = @REPLACE_USLEEP@
+REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCTOMB = @REPLACE_WCTOMB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SELINUX_LIBS = @SELINUX_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
+UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
+UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+YIELD_LIB = @YIELD_LIB@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = test
+AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
+MAINTAINERCLEANFILES = Makefile.in
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu debug/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu debug/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+       @fail= failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+       @fail= failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       rev=''; for subdir in $$list; do \
+         if test "$$subdir" = "."; then :; else \
+           rev="$$subdir $$rev"; \
+         fi; \
+       done; \
+       rev="$$rev ."; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+ctags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+       done
+cscopelist-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \
+       done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+         empty_fix=.; \
+       else \
+         include_option=--include; \
+         empty_fix=; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test ! -f $$subdir/TAGS || \
+             set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -d "$(distdir)/$$subdir" \
+           || $(MKDIR_P) "$(distdir)/$$subdir" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+           $(am__relativize); \
+           new_distdir=$$reldir; \
+           dir1=$$subdir; dir2="$(top_distdir)"; \
+           $(am__relativize); \
+           new_top_distdir=$$reldir; \
+           echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+           echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+           ($(am__cd) $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$$new_top_distdir" \
+               distdir="$$new_distdir" \
+               am__remove_distdir=: \
+               am__skip_length_check=: \
+               am__skip_mode_fix=: \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) \
+       cscopelist-recursive ctags-recursive install-am install-strip \
+       tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+       all all-am check check-am clean clean-generic clean-libtool \
+       cscopelist cscopelist-recursive ctags ctags-recursive \
+       distclean distclean-generic distclean-libtool distclean-tags \
+       distdir dvi dvi-am html html-am info info-am install \
+       install-am install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-ps install-ps-am \
+       install-strip installcheck installcheck-am installdirs \
+       installdirs-am maintainer-clean maintainer-clean-generic \
+       mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+       ps ps-am tags tags-recursive uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/debug/test/HOWTO b/debug/test/HOWTO
new file mode 100644 (file)
index 0000000..e7c2300
--- /dev/null
@@ -0,0 +1,240 @@
+==============================================================================
+                       PARTED REGRESSION TEST HOWTO
+==============================================================================
+
+       by Andrew Clausen
+
+       Copyright (C) 2002, 2009-2011 Free Software Foundation, Inc.
+       This document may be distributed and/or modified
+       without restriction
+
+
+CONTENTS
+--------
+
+1      Introduction
+2      What you need
+3      Setting up testrc
+4      Running the tests
+
+5      How the tests work
+
+
+------------------------------------------------------------------------------
+1      INTRODUCTION
+------------------------------------------------------------------------------
+
+This document describes how to safely configure and run the GNU Parted
+regression tests.
+
+Regression tests are a set of "test cases" (or program inputs, whatever),
+that have a well defined "correct" and "broken".  The idea is to run
+regression tests after making changes, to check you didn't break anything.
+They are also useful for testing Parted in a new environment... perhaps
+you're computer has something peculiar that breaks it.
+
+Therefore, it's helpful for you to run Parted regression tests.
+
+
+------------------------------------------------------------------------------
+2      WHAT YOU NEED
+------------------------------------------------------------------------------
+
+You need:
+ * a spare hard drive (for GNU/Linux... haven't tried GNU/Hurd)
+   This is because only gendisk block devices can have partition tables.
+ * msdos partition table support in the kernel (for Linux).  (FIXME: can
+   use our shiny new partprobe!)
+ * file system support for ext2 and fat
+ * a reasonably standard GNU system, with diff(1), bash(1), e2fsck(8),
+   dosfsck(8), etc.
+ * parted, compiled in it's source directory.  i.e. ./configure && make
+ * a test data source, between 100 and 150 Mb, that contains all
+   lower-case filenames, and no symlinks.  It must have a significant
+   (i.e. at least 5%) amount of data in a subdirectory.
+       You can convert filenames to lowercase with:
+
+       cd /data-source
+       echo 'mv $1 $( echo $1 | tr A-Z a-z )' > tolower
+       chmod a+x tolower
+       find | grep [A-Z] | xargs -l1 ./tolower
+       rm tolower
+
+       (Hint: if you don't trust me, stick an "echo" before mv, and
+       it'll print out what it's going to do ;)
+
+
+------------------------------------------------------------------------------
+3      SETTING UP TESTRC
+------------------------------------------------------------------------------
+
+The testrc must be configured for your system.  The tests will refuse
+to run if you don't.  I'll work from top-to-bottom, describing how
+to fill in each value:
+
+
+3.1    TEST_HOST
+-----------------
+This field must match the output of hostname(1).  This is just a safety
+check, so you don't use the wrong testrc file, and destroy the wrong
+data ;)
+
+Example:
+       TEST_HOST=mirkwood
+
+3.2    TEST_PARTED_BASE
+------------------------
+This is the directory where you untarred and compiled parted:
+
+Example:
+       TEST_PARTED_BASE=~clausen/parted-1.4.20
+
+3.3    TEST_PARTED_COMMAND
+---------------------------
+You shouldn't need to change this.  It's just where to find parted.
+
+Example:
+       TEST_PARTED_COMMAND=$TEST_PARTED_BASE/parted/parted
+
+3.4    TEST_PARTED_CLEARFAT
+----------------------------
+You shouldn't need to change this.  It's just where to find clearfat,
+a special tool to help test Parted's fat code.  All it does is zero
+out unused (meta)data.  (There were cases in the past where stale
+metadata was making it appear that parted was working, when it wasn't)
+
+Example:
+       TEST_PARTED_CLEARFAT=$TEST_PARTED_BASE/debug/clearfat/clearfat
+
+3.5    TEST_DRIVE
+------------------
+The drive to be completely clobbered!  i.e. where testing will occur.
+Needless to say, I hope you don't have anything important there.
+Example:
+
+Example:
+       TEST_DRIVE=/dev/hdc
+
+3.6    TEST_DRIVE
+------------------
+The size of the disk, in megabytes, excluding the fractional part (decimal
+point).  You can get this from Parted's print output.  (Geometry of
+/dev/hdc is 0.0-*THIS IS IT*).
+
+Example:
+       TEST_DRIVE_SIZE=8063
+
+3.7    TEST_MOUNT_POINT
+------------------------
+A mount point that the tests can use, to mount $TEST_DRIVE.  Obviously, you
+need to create it with mkdir(1).
+
+Example:
+       TEST_MOUNT_POINT=/mnt/test
+
+3.8    TEST_DATA
+-----------------
+Where to get test data from.  See advice in section 2 for requirements
+on the test data.
+
+Example:
+       TEST_DATA=/var/www
+
+3.9    TEST_DATA_HOLE
+----------------------
+A directory inside $TEST_DATA, that will be deleted to create some
+fragmentation.  It should be at least 5% and at most 80% of the
+test data.
+
+Example:
+       TEST_DATA_HOLE=icons
+
+3.10   TEST_FS_USE_DISK_LABEL
+------------------------------
+Which disk label to use for testing file systems.  At the moment, only
+msdos is supported/tested, although most should work.
+
+Example:
+       TEST_FS_USE_DISK_LABEL=msdos
+
+3.11   QUIET_KERNEL
+--------------------
+Set to 1 if you want to shut up the kernel's annoying messages
+
+Example:
+       QUIET_KERNEL=1
+
+3.12   VERBOSE_LOGS
+--------------------
+Set to 1 if you want logging of everything, including successful tests.
+
+Example:
+       VERBOSE_LOGS=1
+
+3.13   MALLOC_TRACE
+--------------------
+Uncomment this if you want to do malloc() debugging with mtrace.
+TODO: document this.
+
+
+------------------------------------------------------------------------------
+4      RUNNING THE TESTS
+------------------------------------------------------------------------------
+
+4.1    Starting the tests
+--------------------------
+To run the tests, you must be root.  To run all tests, type:
+
+       ./test
+
+To run a subset of tests, you can type part of the file name of
+those tests.  For example, to run all partition table tests, type:
+
+       ./test disk
+
+Or the FAT tests:
+
+       ./test fat
+
+4.2    Stopping the tests
+--------------------------
+If you want to interrupt the tests, the easiest way is:
+
+       (1) hit ctrl-z on the controlling virtual console / terminal
+       (2) run "ps", with no arguments
+       (3) run "kill -9 [PID]", where [PID] is the process id of
+           "test"
+
+4.3    Examining the logs
+--------------------------
+In progress logs are written to test_out.  After each test completes,
+it's output (from test_out), among other things is appended to test_log
+
+To check if any tests failed, type:
+
+       grep failed test_log > /dev/null && echo FAILED || echo PASSED
+
+If some tests failed, check the logs to see what the problem is.  You
+may have set up the regression tests incorrectly.
+
+4.4    Sending bug reports
+---------------------------
+If you think it's a bug (or you're not sure), email us!
+
+       bug-parted@gnu.org
+
+Please attach the test_log.  Gzip it first ;)
+
+
+------------------------------------------------------------------------------
+5      HOW THE TESTS WORK
+------------------------------------------------------------------------------
+
+Parted has regression tests for all partition table formats, and for
+the ext2, fat and linuxswap.  The partition table tests are mainly
+"Create problem X and test that parted complains about it".  It
+doesn't compare output... only if parted reports error, and that it
+doesn't segfault.
+       The file system tests are mainly "do some operation on the
+file system, and check it's still got the same data", via diff(1).
+Also, it runs dosfsck(1) and e2fsck(1).
diff --git a/debug/test/Makefile.am b/debug/test/Makefile.am
new file mode 100644 (file)
index 0000000..4c5b2f7
--- /dev/null
@@ -0,0 +1,21 @@
+noinst_SCRIPTS = test                  \
+                 test_disk_bsd         \
+                 test_disk_dos         \
+                 test_disk_dvh         \
+                 test_disk_gpt         \
+                 test_disk_pc98        \
+                 test_disk_mac         \
+                 test_disk_sun         \
+                 test_fs_ext2          \
+                 test_fs_fat           \
+                 test_fs_hfs           \
+                 test_fs_hfsplus       \
+                 test_fs_linux_swap    \
+                 test_fs_reiserfs      \
+                 build_leak_list
+
+EXTRA_DIST     = HOWTO testrc $(noinst_SCRIPTS)
+
+CLEANFILES     = test_log test_out
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/debug/test/Makefile.in b/debug/test/Makefile.in
new file mode 100644 (file)
index 0000000..c4572b3
--- /dev/null
@@ -0,0 +1,1144 @@
+# Makefile.in generated by automake 1.11a from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in 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.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = debug/test
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+       $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argmatch.m4 \
+       $(top_srcdir)/m4/assert.m4 $(top_srcdir)/m4/btowc.m4 \
+       $(top_srcdir)/m4/calloc.m4 $(top_srcdir)/m4/canonicalize.m4 \
+       $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
+       $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/configmake.m4 \
+       $(top_srcdir)/m4/dirname.m4 \
+       $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+       $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/environ.m4 \
+       $(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
+       $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fclose.m4 \
+       $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/fcntl_h.m4 \
+       $(top_srcdir)/m4/fflush.m4 $(top_srcdir)/m4/fpending.m4 \
+       $(top_srcdir)/m4/fpurge.m4 $(top_srcdir)/m4/freading.m4 \
+       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/fsync.m4 \
+       $(top_srcdir)/m4/ftell.m4 $(top_srcdir)/m4/ftello.m4 \
+       $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
+       $(top_srcdir)/m4/langinfo_h.m4 $(top_srcdir)/m4/lcmessage.m4 \
+       $(top_srcdir)/m4/lib-ignore.m4 $(top_srcdir)/m4/lib-ld.m4 \
+       $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/localcharset.m4 \
+       $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \
+       $(top_srcdir)/m4/locale-tr.m4 $(top_srcdir)/m4/locale-zh.m4 \
+       $(top_srcdir)/m4/locale_h.m4 $(top_srcdir)/m4/localename.m4 \
+       $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/long-options.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
+       $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+       $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
+       $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+       $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbtowc.m4 \
+       $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+       $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/multiarch.m4 \
+       $(top_srcdir)/m4/nl_langinfo.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/nocrash.m4 $(top_srcdir)/m4/o-direct.m4 \
+       $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/priv-set.m4 \
+       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+       $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+       $(top_srcdir)/m4/read.m4 $(top_srcdir)/m4/readlink.m4 \
+       $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/regex.m4 \
+       $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+       $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/setlocale.m4 \
+       $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/ssize_t.m4 \
+       $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdarg.m4 \
+       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strdup.m4 \
+       $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/strerror_r.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+       $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtoll.m4 \
+       $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/symlink.m4 \
+       $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+       $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/thread.m4 \
+       $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/time_h.m4 \
+       $(top_srcdir)/m4/ungetc.m4 $(top_srcdir)/m4/unistd_h.m4 \
+       $(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkdir.m4 \
+       $(top_srcdir)/m4/usleep.m4 $(top_srcdir)/m4/version-etc.m4 \
+       $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \
+       $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
+       $(top_srcdir)/m4/wcrtomb.m4 $(top_srcdir)/m4/wctob.m4 \
+       $(top_srcdir)/m4/wctomb.m4 $(top_srcdir)/m4/wctype_h.m4 \
+       $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+       $(top_srcdir)/m4/xstrndup.m4 $(top_srcdir)/m4/xstrtol.m4 \
+       $(top_srcdir)/m4/yield.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SCRIPTS = $(noinst_SCRIPTS)
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+pkglibexecdir = @pkglibexecdir@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+BUILDINFO = @BUILDINFO@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHECK_CFLAGS = @CHECK_CFLAGS@
+CHECK_LIBS = @CHECK_LIBS@
+CONFIG_INCLUDE = @CONFIG_INCLUDE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DYNAMIC_LOADING = @DYNAMIC_LOADING@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENABLE_DEVICE_MAPPER = @ENABLE_DEVICE_MAPPER@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FACCESSAT = @GNULIB_FACCESSAT@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCHMODAT = @GNULIB_FCHMODAT@
+GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FCNTL = @GNULIB_FCNTL@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FGETC = @GNULIB_FGETC@
+GNULIB_FGETS = @GNULIB_FGETS@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREAD = @GNULIB_FREAD@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSCANF = @GNULIB_FSCANF@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSTATAT = @GNULIB_FSTATAT@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FUTIMENS = @GNULIB_FUTIMENS@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETC = @GNULIB_GETC@
+GNULIB_GETCHAR = @GNULIB_GETCHAR@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETGROUPS = @GNULIB_GETGROUPS@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETS = @GNULIB_GETS@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
+GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_ISWBLANK = @GNULIB_ISWBLANK@
+GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@
+GNULIB_LCHMOD = @GNULIB_LCHMOD@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LINKAT = @GNULIB_LINKAT@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_LSTAT = @GNULIB_LSTAT@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MBTOWC = @GNULIB_MBTOWC@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDIRAT = @GNULIB_MKDIRAT@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKFIFO = @GNULIB_MKFIFO@
+GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@
+GNULIB_MKNOD = @GNULIB_MKNOD@
+GNULIB_MKNODAT = @GNULIB_MKNODAT@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@
+GNULIB_MKTIME = @GNULIB_MKTIME@
+GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@
+GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@
+GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_OPEN = @GNULIB_OPEN@
+GNULIB_OPENAT = @GNULIB_OPENAT@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE = @GNULIB_PIPE@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_PREAD = @GNULIB_PREAD@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READ = @GNULIB_READ@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_READLINKAT = @GNULIB_READLINKAT@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_REALPATH = @GNULIB_REALPATH@
+GNULIB_REMOVE = @GNULIB_REMOVE@
+GNULIB_RENAME = @GNULIB_RENAME@
+GNULIB_RENAMEAT = @GNULIB_RENAMEAT@
+GNULIB_RMDIR = @GNULIB_RMDIR@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SETLOCALE = @GNULIB_SETLOCALE@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STAT = @GNULIB_STAT@
+GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRERROR_R = @GNULIB_STRERROR_R@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRPTIME = @GNULIB_STRPTIME@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_SYMLINK = @GNULIB_SYMLINK@
+GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
+GNULIB_TIMEGM = @GNULIB_TIMEGM@
+GNULIB_TIME_R = @GNULIB_TIME_R@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
+GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
+GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNLINK = @GNULIB_UNLINK@
+GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_USLEEP = @GNULIB_USLEEP@
+GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VFSCANF = @GNULIB_VFSCANF@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSCANF = @GNULIB_VSCANF@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCPCPY = @GNULIB_WCPCPY@
+GNULIB_WCPNCPY = @GNULIB_WCPNCPY@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@
+GNULIB_WCSCAT = @GNULIB_WCSCAT@
+GNULIB_WCSCHR = @GNULIB_WCSCHR@
+GNULIB_WCSCMP = @GNULIB_WCSCMP@
+GNULIB_WCSCOLL = @GNULIB_WCSCOLL@
+GNULIB_WCSCPY = @GNULIB_WCSCPY@
+GNULIB_WCSCSPN = @GNULIB_WCSCSPN@
+GNULIB_WCSDUP = @GNULIB_WCSDUP@
+GNULIB_WCSLEN = @GNULIB_WCSLEN@
+GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@
+GNULIB_WCSNCAT = @GNULIB_WCSNCAT@
+GNULIB_WCSNCMP = @GNULIB_WCSNCMP@
+GNULIB_WCSNCPY = @GNULIB_WCSNCPY@
+GNULIB_WCSNLEN = @GNULIB_WCSNLEN@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSPBRK = @GNULIB_WCSPBRK@
+GNULIB_WCSRCHR = @GNULIB_WCSRCHR@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCSSPN = @GNULIB_WCSSPN@
+GNULIB_WCSSTR = @GNULIB_WCSSTR@
+GNULIB_WCSTOK = @GNULIB_WCSTOK@
+GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@
+GNULIB_WCSXFRM = @GNULIB_WCSXFRM@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCTOMB = @GNULIB_WCTOMB@
+GNULIB_WCTRANS = @GNULIB_WCTRANS@
+GNULIB_WCTYPE = @GNULIB_WCTYPE@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WMEMCHR = @GNULIB_WMEMCHR@
+GNULIB_WMEMCMP = @GNULIB_WMEMCMP@
+GNULIB_WMEMCPY = @GNULIB_WMEMCPY@
+GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@
+GNULIB_WMEMSET = @GNULIB_WMEMSET@
+GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
+HAVE_CHOWN = @HAVE_CHOWN@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@
+HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SETENV = @HAVE_DECL_SETENV@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@
+HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_DUPLOCALE = @HAVE_DUPLOCALE@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
+HAVE_FCHMODAT = @HAVE_FCHMODAT@
+HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
+HAVE_FCNTL = @HAVE_FCNTL@
+HAVE_FEATURES_H = @HAVE_FEATURES_H@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSTATAT = @HAVE_FSTATAT@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_FUTIMENS = @HAVE_FUTIMENS@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETGROUPS = @HAVE_GETGROUPS@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETLOGIN = @HAVE_GETLOGIN@
+HAVE_GETOPT_H = @HAVE_GETOPT_H@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
+HAVE_GRANTPT = @HAVE_GRANTPT@
+HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWBLANK = @HAVE_ISWBLANK@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
+HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
+HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
+HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
+HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
+HAVE_LCHMOD = @HAVE_LCHMOD@
+HAVE_LCHOWN = @HAVE_LCHOWN@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_LSTAT = @HAVE_LSTAT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSLEN = @HAVE_MBSLEN@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMCHR = @HAVE_MEMCHR@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDIRAT = @HAVE_MKDIRAT@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKFIFO = @HAVE_MKFIFO@
+HAVE_MKFIFOAT = @HAVE_MKFIFOAT@
+HAVE_MKNOD = @HAVE_MKNOD@
+HAVE_MKNODAT = @HAVE_MKNODAT@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
+HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
+HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
+HAVE_OPENAT = @HAVE_OPENAT@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PIPE = @HAVE_PIPE@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PWRITE = @HAVE_PWRITE@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_READLINKAT = @HAVE_READLINKAT@
+HAVE_REALPATH = @HAVE_REALPATH@
+HAVE_RENAMEAT = @HAVE_RENAMEAT@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRPTIME = @HAVE_STRPTIME@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYMLINK = @HAVE_SYMLINK@
+HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_TIMEGM = @HAVE_TIMEGM@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_USLEEP = @HAVE_USLEEP@
+HAVE_UTIMENSAT = @HAVE_UTIMENSAT@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCPCPY = @HAVE_WCPCPY@
+HAVE_WCPNCPY = @HAVE_WCPNCPY@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSCASECMP = @HAVE_WCSCASECMP@
+HAVE_WCSCAT = @HAVE_WCSCAT@
+HAVE_WCSCHR = @HAVE_WCSCHR@
+HAVE_WCSCMP = @HAVE_WCSCMP@
+HAVE_WCSCOLL = @HAVE_WCSCOLL@
+HAVE_WCSCPY = @HAVE_WCSCPY@
+HAVE_WCSCSPN = @HAVE_WCSCSPN@
+HAVE_WCSDUP = @HAVE_WCSDUP@
+HAVE_WCSLEN = @HAVE_WCSLEN@
+HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@
+HAVE_WCSNCAT = @HAVE_WCSNCAT@
+HAVE_WCSNCMP = @HAVE_WCSNCMP@
+HAVE_WCSNCPY = @HAVE_WCSNCPY@
+HAVE_WCSNLEN = @HAVE_WCSNLEN@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSPBRK = @HAVE_WCSPBRK@
+HAVE_WCSRCHR = @HAVE_WCSRCHR@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCSSPN = @HAVE_WCSSPN@
+HAVE_WCSSTR = @HAVE_WCSSTR@
+HAVE_WCSTOK = @HAVE_WCSTOK@
+HAVE_WCSWIDTH = @HAVE_WCSWIDTH@
+HAVE_WCSXFRM = @HAVE_WCSXFRM@
+HAVE_WCTRANS_T = @HAVE_WCTRANS_T@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WCTYPE_T = @HAVE_WCTYPE_T@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WMEMCHR = @HAVE_WMEMCHR@
+HAVE_WMEMCMP = @HAVE_WMEMCMP@
+HAVE_WMEMCPY = @HAVE_WMEMCPY@
+HAVE_WMEMMOVE = @HAVE_WMEMMOVE@
+HAVE_WMEMSET = @HAVE_WMEMSET@
+HAVE_XLOCALE_H = @HAVE_XLOCALE_H@
+HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
+IGNORE_UNUSED_LIBRARIES_CFLAGS = @IGNORE_UNUSED_LIBRARIES_CFLAGS@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@
+INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMULTITHREAD = @LIBMULTITHREAD@
+LIBOBJS = @LIBOBJS@
+LIBPTH = @LIBPTH@
+LIBPTH_PREFIX = @LIBPTH_PREFIX@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTHREAD = @LIBTHREAD@
+LIBTOOL = @LIBTOOL@
+LIB_BLKID = @LIB_BLKID@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBMULTITHREAD = @LTLIBMULTITHREAD@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBPTH = @LTLIBPTH@
+LTLIBTHREAD = @LTLIBTHREAD@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
+NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@
+NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
+NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@
+NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FCNTL_H = @NEXT_FCNTL_H@
+NEXT_GETOPT_H = @NEXT_GETOPT_H@
+NEXT_INTTYPES_H = @NEXT_INTTYPES_H@
+NEXT_LANGINFO_H = @NEXT_LANGINFO_H@
+NEXT_LOCALE_H = @NEXT_LOCALE_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@
+NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@
+NEXT_TIME_H = @NEXT_TIME_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PARTED_USABLE_TEST_DIR = @PARTED_USABLE_TEST_DIR@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CALLOC = @REPLACE_CALLOC@
+REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP = @REPLACE_DUP@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@
+REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FCNTL = @REPLACE_FCNTL@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FSTAT = @REPLACE_FSTAT@
+REPLACE_FSTATAT = @REPLACE_FSTATAT@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_FUTIMENS = @REPLACE_FUTIMENS@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETDELIM = @REPLACE_GETDELIM@
+REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@
+REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LINK = @REPLACE_LINK@
+REPLACE_LINKAT = @REPLACE_LINKAT@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_LSTAT = @REPLACE_LSTAT@
+REPLACE_MALLOC = @REPLACE_MALLOC@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MBTOWC = @REPLACE_MBTOWC@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKDIR = @REPLACE_MKDIR@
+REPLACE_MKFIFO = @REPLACE_MKFIFO@
+REPLACE_MKNOD = @REPLACE_MKNOD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_MKTIME = @REPLACE_MKTIME@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_OPEN = @REPLACE_OPEN@
+REPLACE_OPENAT = @REPLACE_OPENAT@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PREAD = @REPLACE_PREAD@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
+REPLACE_READ = @REPLACE_READ@
+REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_REALLOC = @REPLACE_REALLOC@
+REPLACE_REALPATH = @REPLACE_REALPATH@
+REPLACE_REMOVE = @REPLACE_REMOVE@
+REPLACE_RENAME = @REPLACE_RENAME@
+REPLACE_RENAMEAT = @REPLACE_RENAMEAT@
+REPLACE_RMDIR = @REPLACE_RMDIR@
+REPLACE_SETENV = @REPLACE_SETENV@
+REPLACE_SETLOCALE = @REPLACE_SETLOCALE@
+REPLACE_SLEEP = @REPLACE_SLEEP@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STAT = @REPLACE_STAT@
+REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRERROR_R = @REPLACE_STRERROR_R@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
+REPLACE_STRNDUP = @REPLACE_STRNDUP@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
+REPLACE_SYMLINK = @REPLACE_SYMLINK@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
+REPLACE_UNLINK = @REPLACE_UNLINK@
+REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
+REPLACE_UNSETENV = @REPLACE_UNSETENV@
+REPLACE_USLEEP = @REPLACE_USLEEP@
+REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCTOMB = @REPLACE_WCTOMB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SELINUX_LIBS = @SELINUX_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
+UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
+UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+YIELD_LIB = @YIELD_LIB@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+noinst_SCRIPTS = test                  \
+                 test_disk_bsd         \
+                 test_disk_dos         \
+                 test_disk_dvh         \
+                 test_disk_gpt         \
+                 test_disk_pc98        \
+                 test_disk_mac         \
+                 test_disk_sun         \
+                 test_fs_ext2          \
+                 test_fs_fat           \
+                 test_fs_hfs           \
+                 test_fs_hfsplus       \
+                 test_fs_linux_swap    \
+                 test_fs_reiserfs      \
+                 build_leak_list
+
+EXTRA_DIST = HOWTO testrc $(noinst_SCRIPTS)
+CLEANFILES = test_log test_out
+MAINTAINERCLEANFILES = Makefile.in
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu debug/test/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu debug/test/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile $(SCRIPTS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+       distclean distclean-generic distclean-libtool distdir dvi \
+       dvi-am html html-am info info-am install install-am \
+       install-data install-data-am install-dvi install-dvi-am \
+       install-exec install-exec-am install-html install-html-am \
+       install-info install-info-am install-man install-pdf \
+       install-pdf-am install-ps install-ps-am install-strip \
+       installcheck installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/debug/test/build_leak_list b/debug/test/build_leak_list
new file mode 100755 (executable)
index 0000000..845692d
--- /dev/null
@@ -0,0 +1,11 @@
+#! /bin/sh
+
+if test "x$TEST_PARTED_BASE" = "x"; then
+       TEST_PARTED_BASE=~parted/parted-dev
+fi
+
+mtrace $TEST_PARTED_BASE/parted/.libs/parted $MALLOC_TRACE \
+       | grep libparted \
+       | sed 's/  at.*//' \
+       | sed 's/^\(0x[0-9a-f]\+\) \+\(0x[0-9a-f]\+\) */ {\1, \2},/' \
+       | less
diff --git a/debug/test/test b/debug/test/test
new file mode 100755 (executable)
index 0000000..42ebcb6
--- /dev/null
@@ -0,0 +1,261 @@
+#! /bin/bash
+
+do_help()
+{
+       echo You need to fill out the testrc with your machine\'s details before
+       echo using this script.
+       exit;
+}
+
+do_test()
+{
+       test_prog=$1
+       test_name=`echo -n $test_prog | sed "s/test_//" | sed "s/_/ /" \
+                  | tr '[:lower:]' '[:upper:]'`
+
+       echo "-----------------------------------------------------------------"
+       echo "TESTING $test_name..."
+       echo "-----------------------------------------------------------------"
+
+       echo "-----------------------------------------------------------------"\
+               >> test_log
+       echo "TESTING $test_name..." >> test_log
+       echo "-----------------------------------------------------------------"\
+               >> test_log
+
+       if [ -e core* ]; then
+               rm core*
+       fi
+       ./$test_prog
+       if [ -e test_out ]; then
+               echo > test_out
+       fi
+}
+
+do_tests()
+{
+       for walk in $TEST_LIST; do
+               if [ -x $walk ]; then
+                       do_test $walk
+               fi
+       done
+}
+
+################################################
+# GLOBAL HELPER FUNCTIONS
+################################################
+
+ped_testing()
+{
+       echo -n "testing $1... "
+       echo -n "testing $1... " >> test_log
+}
+
+ped_testing_expect_fail()
+{
+       echo -n "testing for failure on $1... "
+       echo -n "testing for failure on $1... " >> test_log
+}
+
+ped_test_ok()
+{
+       echo "ok"
+       echo "ok" >> test_log
+
+       if [ "x$VERBOSE_LOGS" = "x1" ]; then
+               cat test_out >> test_log
+               echo >> test_log
+       fi
+
+       export OK_COUNT=$[ $OK_COUNT + 1 ]
+}
+
+ped_test_failed()
+{
+       echo "failed"
+       echo "failed" >> test_log
+
+       cat test_out >> test_log
+       echo >> test_log
+
+       export FAILED_COUNT=$[ $FAILED_COUNT + 1 ]
+
+       if [ -e core ]; then
+               echo core dumped, saving to core-$CORE_COUNTER\
+                       >> test_log
+               echo >> test_log
+               mv core core-$CORE_COUNTER
+               export CORE_COUNTER=$[ $CORE_COUNTER + 1 ]
+       fi
+}
+
+check_leaks()
+{
+       if test "x$MALLOC_TRACE" != "x"; then
+               ./build_leak_list > leaks
+               if test -s leaks; then
+                       printf \
+'Found memory leaks: (add this list to dodgey_malloc_list in\n'\
+'libparted/libparted.c to debug them)\n' \
+                               >> test_out
+                       cat leaks >> test_out
+                       return 0
+               fi
+               rm leaks
+       fi
+
+       return 1
+}
+
+ped_test_get_val()
+{
+       post_command=$2
+       if test "x$input" = "x"; then
+               input="Cancel"
+       fi
+       if test "x$post_command" = "x"; then
+               post_command="true"
+       fi
+
+       if test -e leaks; then
+               rm leaks
+       fi
+       if test "x$MALLOC_TRACE" != "x"; then
+               if test -e $MALLOC_TRACE; then
+                       rm $MALLOC_TRACE
+               fi
+       fi
+
+       if $TEST_PARTED_COMMAND -s $TEST_DRIVE $1 2>&1 > test_out; then
+               if [ -e core ]; then
+                       return 0
+               fi
+
+               if check_leaks; then
+                       return 0
+               fi
+
+               if ( echo >> test_out ; ( eval $post_command ) 2>&1 >> test_out ); then
+                       return 1
+               else
+                       return 0
+               fi
+       else
+               return 0
+       fi
+}
+
+ped_test()
+{
+       ped_testing "$1"
+       if ped_test_get_val "$2" "$3"; then
+               ped_test_failed
+               return 1
+       else
+               ped_test_ok
+               return 0
+       fi
+}
+
+ped_test_expect_fail()
+{
+       ped_testing_expect_fail "$1"
+       if ped_test_get_val "$2" "$3"; then
+
+       # we expect a CLEAN fail :-)
+               if [ -e core ]; then
+                       ped_test_failed
+                       return 1
+               fi
+               if check_leaks; then
+                       ped_test_failed
+                       return 1
+               fi
+
+               ped_test_ok
+               return 0
+       else
+               ped_test_failed
+               return 1
+       fi
+}
+
+################################################
+# the rest...
+################################################
+
+init_environment()
+{
+       if [ "x$UID" != "x0" ]; then
+               echo Warning: you should probably be running this as root.
+               echo
+       fi
+
+       . testrc
+       `cat testrc | grep "^[^#].*=" | sed "s/=.*//" | sed "s/^/export /" `
+
+       if [ "x$HOSTNAME" != "x$TEST_HOST" ]; then
+               do_help
+       fi
+
+       export OLD_KERNEL_PRINTK=`cat /proc/sys/kernel/printk`
+
+       if [ "x$QUIET_KERNEL" = "x1" ]; then
+               echo 1 1 1 1 > /proc/sys/kernel/printk
+       fi
+
+       renice 20 $$ > /dev/null
+
+       export CORE_COUNTER=1
+       export OK_COUNT=0
+       export FAILED_COUNT=0
+
+       export -f ped_testing
+       export -f ped_testing_expect_fail
+       export -f ped_test_ok
+       export -f ped_test_failed
+       export -f ped_test_get_val
+       export -f ped_test
+       export -f ped_test_expect_fail
+       export -f check_leaks
+}
+
+done_environment()
+{
+       echo $OLD_KERNEL_PRINTK > /proc/sys/kernel/printk
+}
+
+open_log()
+{
+       if [ -e test_log ]; then
+               echo -n > test_log;
+       fi
+}
+
+print_version()
+{
+       echo -n "Testing "
+       $TEST_PARTED_COMMAND --version
+       echo
+
+       echo -n "Testing " >> test_log
+       $TEST_PARTED_COMMAND --version >> test_log
+       echo >> test_log
+}
+
+main()
+{
+       init_environment
+       open_log
+       print_version
+       do_tests
+       done_environment
+}
+
+if [ "x$1" !=  "x" ]; then
+       export TEST_LIST="test_*$1*"
+else
+       export TEST_LIST="test_*"
+fi
+
+main
diff --git a/debug/test/test_disk_bsd b/debug/test/test_disk_bsd
new file mode 100755 (executable)
index 0000000..9206fae
--- /dev/null
@@ -0,0 +1,93 @@
+#! /bin/bash
+
+test_mklabel()
+{
+       ped_test "mklabel" "mklabel bsd"
+}
+
+test_mkpart()
+{
+       ped_test "mkpart" "mklabel bsd mkpart primary ext2 10 20"
+}
+
+test_mkpartfs()
+{
+       ped_test "mkpartfs" "mklabel bsd mkpartfs primary ext2 10 20"
+}
+
+test_rm()
+{
+       ped_test "rm" "mklabel bsd mkpart primary ext2 10 20 rm 1"
+}
+
+test_too_many_primary()
+{
+       ped_test_expect_fail "too many primary partitions" \
+               "mklabel bsd \
+                mkpart primary ext2 10 20 \
+                mkpart primary ext2 20 30 \
+                mkpart primary ext2 30 40 \
+                mkpart primary ext2 40 50 \
+                mkpart primary ext2 50 60 \
+                mkpart primary ext2 60 70 \
+                mkpart primary ext2 70 80 \
+                mkpart primary ext2 80 90 \
+                mkpart primary ext2 90 100"
+}
+
+test_primary_overlap()
+{
+       ped_test "correction of partition overlapping"\
+               "mklabel bsd \
+                mkpart primary ext2 0 100\
+                mkpart primary ext2 50 150"
+}
+
+test_nonexistent_remove()
+{
+       ped_test_expect_fail "removal of non-existent partition"\
+               "mklabel bsd \
+                rm 1"
+}
+
+test_create_extended()
+{
+       ped_test_expect_fail "creation of extended partition"\
+               "mklabel bsd \
+                mkpart extended 0 100"
+}
+
+test_create_small()
+{
+       ped_test "create small partition"\
+               "mklabel bsd \
+                mkpartfs primary ext2 1 2"
+}
+
+test_move()
+{
+       ped_test "move partition"\
+               "mklabel bsd \
+                mkpartfs primary ext2 0 100 \
+                mkpartfs primary ext2 101 200 \
+                move 1 201 301"
+}
+
+main()
+{
+       if ! test_mklabel; then
+               exit 1
+       fi
+
+       test_mkpart
+       test_mkpartfs
+       test_rm
+       test_too_many_primary
+       test_primary_overlap
+       test_nonexistent_remove
+       test_create_extended
+       test_create_small
+       test_move
+}
+
+main
diff --git a/debug/test/test_disk_dos b/debug/test/test_disk_dos
new file mode 100755 (executable)
index 0000000..4933ed4
--- /dev/null
@@ -0,0 +1,172 @@
+#! /bin/bash
+
+test_mklabel()
+{
+       ped_test "mklabel" "mklabel msdos"
+}
+
+test_mkpart()
+{
+       ped_test "mkpart" "mklabel msdos mkpart primary ext2 10 20"
+}
+
+test_create_extended_at_start()
+{
+       ped_test "creating an extended partition at the start of the disk"\
+               "mklabel msdos \
+                mkpart extended 0 500"
+}
+
+
+test_mkpartfs()
+{
+       ped_test "mkpartfs" "mklabel msdos mkpartfs primary ext2 10 20"
+}
+
+test_rm()
+{
+       ped_test "rm" "mklabel msdos mkpart primary ext2 10 20 rm 1"
+}
+
+test_too_many_primary()
+{
+       ped_test_expect_fail "too many primary partitions" \
+               "mklabel msdos \
+                mkpart primary ext2 10 20 \
+                mkpart primary ext2 20 30 \
+                mkpart primary ext2 30 40 \
+                mkpart primary ext2 40 50 \
+                mkpart primary ext2 50 60"
+}
+
+test_logical_without_extended()
+{
+       ped_test_expect_fail "logical partitions without extended partition"\
+               "mklabel msdos \
+                mkpart logical ext2 10 20"
+}
+
+# Parted's constraint solver "corrects" this.  Hmmm... is this wise?
+test_logical_outside_extended()
+{
+       ped_test "correction of logical partitions outside extended partition"\
+               "mklabel msdos \
+                mkpart extended 50 100\
+                mkpart logical ext2 90 150"
+}
+
+test_shrink_extended_too_far()
+{
+       ped_test "correction of excessive extended partition shrink"\
+               "mklabel msdos \
+                mkpart extended 50 150\
+                mkpart logical ext2 90 110\
+                resize 1 50 100"
+}
+
+test_shrink_extended()
+{
+       ped_test "extended partition shrink"\
+               "mklabel msdos \
+                mkpart extended 50 150\
+                mkpart logical ext2 90 110\
+                resize 1 80 110"
+}
+
+test_many_logical()
+{
+       ped_test "many logical partitions"\
+               "mklabel msdos \
+                mkpart extended 100 1000 \
+                mkpart logical ext2 100 200 \
+                mkpart logical ext2 200 300 \
+                mkpart logical ext2 300 400 \
+                mkpart logical ext2 400 500 \
+                mkpart logical ext2 500 600 \
+                mkpart logical ext2 600 700 \
+                mkpart logical ext2 700 800"
+}
+
+test_primary_overlap()
+{
+       ped_test "correction of primary partition overlapping"\
+               "mklabel msdos \
+                mkpart primary ext2 0 100\
+                mkpart primary ext2 50 150"
+}
+
+test_extended_primary_overlap()
+{
+       ped_test "correction of primary with extended partition overlapping"\
+               "mklabel msdos \
+                mkpart extended 1 100\
+                mkpart primary ext2 50 150"
+}
+
+test_nonexistent_remove()
+{
+       ped_test_expect_fail "removal of non-existent partition"\
+               "mklabel msdos \
+                rm 1"
+}
+
+test_create_small()
+{
+       ped_test "create small partition"\
+               "mklabel msdos \
+                mkpartfs primary ext2 1 2"
+}
+
+test_move_primary()
+{
+       ped_test "move primary partition"\
+               "mklabel msdos \
+                mkpartfs primary fat16 0 100 \
+                mkpartfs primary fat16 100 200 \
+                move 1 200 300"
+}
+
+test_move_logical()
+{
+       ped_test "move logical partition"\
+               "mklabel msdos \
+                mkpart extended 0 500
+                mkpartfs logical fat16 0 100 \
+                mkpartfs logical fat16 100 200 \
+                move 5 200 300"
+}
+
+test_create_end()
+{
+       ped_test "create partition at end-of-disk"\
+              "mklabel msdos \
+               mkpartfs primary ext2 \
+               $[TEST_DRIVE_SIZE - 10] $[TEST_DRIVE_SIZE]"
+}
+
+main()
+{
+       if ! test_mklabel; then
+               exit 1
+       fi
+
+       test_mkpart
+       test_create_extended_at_start
+       test_mkpartfs
+       test_rm
+       test_too_many_primary
+       test_logical_without_extended
+       test_logical_outside_extended
+       test_shrink_extended_too_far
+       test_shrink_extended
+       test_many_logical
+       test_primary_overlap
+       test_extended_primary_overlap
+       test_nonexistent_remove
+       test_create_small
+       test_move_primary
+       test_move_logical
+       test_create_end
+}
+
+main
diff --git a/debug/test/test_disk_dvh b/debug/test/test_disk_dvh
new file mode 100755 (executable)
index 0000000..9e84aa3
--- /dev/null
@@ -0,0 +1,93 @@
+#! /bin/bash
+
+test_mklabel()
+{
+       ped_test "mklabel" "mklabel mips"
+}
+
+test_mkpart()
+{
+       ped_test "mkpart" "mklabel mips mkpart primary ext2 11 20"
+}
+
+test_mkpartfs()
+{
+       ped_test "mkpartfs" "mklabel mips mkpartfs primary ext2 11 20"
+}
+
+test_rm()
+{
+       ped_test "rm" "mklabel mips mkpart primary ext2 10 20 rm 2"
+}
+
+test_too_many_primary()
+{
+       ped_test_expect_fail "too many primary partitions" \
+               "mklabel mips \
+                mkpart primary ext2 10 20 \
+                mkpart primary ext2 20 30 \
+                mkpart primary ext2 30 40 \
+                mkpart primary ext2 40 50 \
+                mkpart primary ext2 50 60 \
+                mkpart primary ext2 60 70 \
+                mkpart primary ext2 70 80 \
+                mkpart primary ext2 80 90 \
+                mkpart primary ext2 90 100 \
+                mkpart primary ext2 100 110 \
+                mkpart primary ext2 110 120 \
+                mkpart primary ext2 120 130 \
+                mkpart primary ext2 130 140 \
+                mkpart primary ext2 140 150 \
+                mkpart primary ext2 150 160 \
+                mkpart primary ext2 160 170 \
+                mkpart primary ext2 170 180"
+}
+
+test_primary_overlap()
+{
+       ped_test "correction of primary partition overlapping"\
+               "mklabel mips \
+                mkpart primary ext2 1 100\
+                mkpart primary ext2 50 150"
+}
+
+test_nonexistent_remove()
+{
+       ped_test_expect_fail "removal of non-existent partition"\
+               "mklabel mips \
+                rm 2"
+}
+
+test_create_small()
+{
+       ped_test "create small partition"\
+               "mklabel mips \
+                mkpartfs primary ext2 1 2"
+}
+
+test_move()
+{
+       ped_test "move partition"\
+               "mklabel mips \
+                mkpartfs primary ext2 1 100 \
+                mkpartfs primary ext2 101 200 \
+                move 2 201 301"
+}
+
+main()
+{
+       if ! test_mklabel; then
+               exit 1
+       fi
+
+       test_mkpart
+       test_mkpartfs
+       test_rm
+       test_too_many_primary
+       test_primary_overlap
+       test_nonexistent_remove
+       test_create_small
+       test_move
+}
+
+main
diff --git a/debug/test/test_disk_gpt b/debug/test/test_disk_gpt
new file mode 100755 (executable)
index 0000000..721891d
--- /dev/null
@@ -0,0 +1,77 @@
+#! /bin/bash
+
+test_mklabel()
+{
+       ped_test "mklabel" "mklabel gpt"
+}
+
+test_mkpart()
+{
+       ped_test "mkpart" "mklabel gpt mkpart primary ext2 10 20"
+}
+
+test_mkpartfs()
+{
+       ped_test "mkpartfs" "mklabel gpt mkpartfs primary ext2 10 20"
+}
+
+test_rm()
+{
+       ped_test "rm" "mklabel gpt mkpart primary ext2 10 20 rm 1"
+}
+
+test_primary_overlap()
+{
+       ped_test "correction of primary partition overlapping"\
+               "mklabel gpt \
+                mkpart primary ext2 0 100\
+                mkpart primary ext2 50 150"
+}
+
+test_nonexistent_remove()
+{
+       ped_test_expect_fail "removal of non-existent partition"\
+               "mklabel gpt \
+                rm 1"
+}
+
+test_create_extended()
+{
+       ped_test_expect_fail "creation of extended partition"\
+               "mklabel gpt \
+                mkpart extended 0 100"
+}
+
+test_create_small()
+{
+       ped_test "create small partition"\
+               "mklabel gpt \
+                mkpartfs primary ext2 1 2"
+}
+
+test_move()
+{
+       ped_test "move partition"\
+               "mklabel gpt \
+                mkpartfs primary ext2 0 100 \
+                mkpartfs primary ext2 101 200 \
+                move 1 201 301"
+}
+
+main()
+{
+       if ! test_mklabel; then
+               exit 1
+       fi
+
+       test_mkpart
+       test_mkpartfs
+       test_rm
+       test_primary_overlap
+       test_nonexistent_remove
+       test_create_extended
+       test_create_small
+       test_move
+}
+
+main
diff --git a/debug/test/test_disk_mac b/debug/test/test_disk_mac
new file mode 100755 (executable)
index 0000000..09b1353
--- /dev/null
@@ -0,0 +1,77 @@
+#! /bin/bash
+
+test_mklabel()
+{
+       ped_test "mklabel" "mklabel mac"
+}
+
+test_mkpart()
+{
+       ped_test "mkpart" "mklabel mac mkpart primary ext2 10 20"
+}
+
+test_mkpartfs()
+{
+       ped_test "mkpartfs" "mklabel mac mkpartfs primary ext2 10 20"
+}
+
+test_rm()
+{
+       ped_test "rm" "mklabel mac mkpart primary ext2 10 20 rm 2"
+}
+
+test_primary_overlap()
+{
+       ped_test "correction of primary partition overlapping"\
+               "mklabel mac \
+                mkpart primary ext2 0.01 100\
+                mkpart primary ext2 50 150"
+}
+
+test_nonexistent_remove()
+{
+       ped_test_expect_fail "removal of non-existent partition"\
+               "mklabel mac \
+                rm 2"
+}
+
+test_create_extended()
+{
+       ped_test_expect_fail "creation of extended partition"\
+               "mklabel mac \
+                mkpart extended 0.01 100"
+}
+
+test_create_small()
+{
+       ped_test "create small partition"\
+               "mklabel mac \
+                mkpartfs primary ext2 1 2"
+}
+
+test_move()
+{
+       ped_test "move partition"\
+               "mklabel mac \
+                mkpartfs primary ext2 1 100 \
+                mkpartfs primary ext2 101 200 \
+                move 2 201 301"
+}
+
+main()
+{
+       if ! test_mklabel; then
+               exit 1
+       fi
+
+       test_mkpart
+       test_mkpartfs
+       test_rm
+       test_primary_overlap
+       test_nonexistent_remove
+       test_create_extended
+       test_create_small
+       test_move
+}
+
+main
diff --git a/debug/test/test_disk_pc98 b/debug/test/test_disk_pc98
new file mode 100755 (executable)
index 0000000..923d8be
--- /dev/null
@@ -0,0 +1,101 @@
+#! /bin/bash
+
+test_mklabel()
+{
+       ped_test "mklabel" "mklabel pc98"
+}
+
+test_mkpart()
+{
+       ped_test "mkpart" "mklabel pc98 mkpart primary ext2 10 20"
+}
+
+test_mkpartfs()
+{
+       ped_test "mkpartfs" "mklabel pc98 mkpartfs primary ext2 10 20"
+}
+
+test_rm()
+{
+       ped_test "rm" "mklabel pc98 mkpart primary ext2 10 20 rm 1"
+}
+
+test_too_many_primary()
+{
+       ped_test_expect_fail "too many primary partitions" \
+               "mklabel pc98 \
+                mkpart primary ext2 10 20 \
+                mkpart primary ext2 20 30 \
+                mkpart primary ext2 30 40 \
+                mkpart primary ext2 40 50 \
+                mkpart primary ext2 50 60 \
+                mkpart primary ext2 60 70 \
+                mkpart primary ext2 70 80 \
+                mkpart primary ext2 80 90 \
+                mkpart primary ext2 90 100 \
+                mkpart primary ext2 100 110 \
+                mkpart primary ext2 110 120 \
+                mkpart primary ext2 120 130 \
+                mkpart primary ext2 130 140 \
+                mkpart primary ext2 140 150 \
+                mkpart primary ext2 150 160 \
+                mkpart primary ext2 160 170 \
+                mkpart primary ext2 170 180 "
+}
+
+test_primary_overlap()
+{
+       ped_test "correction of primary partition overlapping"\
+               "mklabel pc98 \
+                mkpart primary ext2 0 100\
+                mkpart primary ext2 50 150"
+}
+
+test_nonexistent_remove()
+{
+       ped_test_expect_fail "removal of non-existent partition"\
+               "mklabel pc98 \
+                rm 1"
+}
+
+test_create_extended()
+{
+       ped_test_expect_fail "creation of extended partition"\
+               "mklabel pc98 \
+                mkpart extended 0 100"
+}
+
+test_create_small()
+{
+       ped_test "create small partition"\
+               "mklabel pc98 \
+                mkpartfs primary ext2 1 2"
+}
+
+test_move()
+{
+       ped_test "move partition"\
+               "mklabel pc98 \
+                mkpartfs primary fat16 0 100 \
+                mkpartfs primary fat16 100 200 \
+                move 1 200 300"
+}
+
+main()
+{
+       if ! test_mklabel; then
+               exit 1
+       fi
+
+       test_mkpart
+       test_mkpartfs
+       test_rm
+       test_too_many_primary
+       test_primary_overlap
+       test_nonexistent_remove
+       test_create_extended
+       test_create_small
+       test_move
+}
+
+main
diff --git a/debug/test/test_disk_sun b/debug/test/test_disk_sun
new file mode 100755 (executable)
index 0000000..d65ec10
--- /dev/null
@@ -0,0 +1,93 @@
+#! /bin/bash
+
+test_mklabel()
+{
+       ped_test "mklabel" "mklabel sun"
+}
+
+test_mkpart()
+{
+       ped_test "mkpart" "mklabel sun mkpart primary ext2 10 20"
+}
+
+test_mkpartfs()
+{
+       ped_test "mkpartfs" "mklabel sun mkpartfs primary ext2 10 20"
+}
+
+test_rm()
+{
+       ped_test "rm" "mklabel sun mkpart primary ext2 10 20 rm 1"
+}
+
+test_too_many_primary()
+{
+       ped_test_expect_fail "too many primary partitions" \
+               "mklabel sun \
+                mkpart primary ext2 10 20 \
+                mkpart primary ext2 20 30 \
+                mkpart primary ext2 30 40 \
+                mkpart primary ext2 40 50 \
+                mkpart primary ext2 50 60 \
+                mkpart primary ext2 60 70 \
+                mkpart primary ext2 70 80 \
+                mkpart primary ext2 80 90 \
+                mkpart primary ext2 90 100"
+}
+
+test_primary_overlap()
+{
+       ped_test "correction primary partition overlapping"\
+               "mklabel sun \
+                mkpart primary ext2 0 100\
+                mkpart primary ext2 50 150"
+}
+
+test_nonexistent_remove()
+{
+       ped_test_expect_fail "removal of non-existent partition"\
+               "mklabel sun \
+                rm 1"
+}
+
+test_create_extended()
+{
+       ped_test_expect_fail "creation of extended partition"\
+               "mklabel sun \
+                mkpart extended 0 100"
+}
+
+test_create_small()
+{
+       ped_test "create small partition"\
+               "mklabel sun \
+                mkpartfs primary ext2 1 2"
+}
+
+test_move()
+{
+       ped_test "move partition"\
+               "mklabel sun \
+                mkpartfs primary ext2 0 100 \
+                mkpartfs primary ext2 101 200 \
+                move 1 201 301"
+}
+
+main()
+{
+       if ! test_mklabel; then
+               exit 1
+       fi
+
+       test_mkpart
+       test_mkpartfs
+       test_rm
+       test_too_many_primary
+       test_primary_overlap
+       test_nonexistent_remove
+       test_create_extended
+       test_create_small
+       test_move
+}
+
+main
diff --git a/debug/test/test_fs_ext2 b/debug/test/test_fs_ext2
new file mode 100755 (executable)
index 0000000..f1f2ec0
--- /dev/null
@@ -0,0 +1,97 @@
+#! /bin/bash
+
+do_diff()
+{
+       mount "${TEST_DRIVE}1" $TEST_MOUNT_POINT -t ext2 > /dev/null
+
+       if diff -rq $1 $2 --exclude lost+found >> test_log; then
+               ped_test_ok
+       else
+               ped_test_failed
+       fi
+
+       umount $TEST_MOUNT_POINT 2>&1 > /dev/null
+}
+
+do_test_diff()
+{
+       ped_testing "$1"
+       if ped_test_get_val "$4" "$5" "$6"; then
+               ped_test_failed
+               return 1
+       fi
+       do_diff "$2" "$3"
+}
+
+test_mkpartfs()
+{
+       ped_test "mkpartfs 1 ext2 1 1"\
+               "mklabel $TEST_FS_USE_DISK_LABEL\
+                mkpartfs 1 ext2 1 1\
+                check 1"\
+               "/sbin/e2fsck -n -f ${TEST_DRIVE}1"
+
+       ped_test "mkpartfs"\
+               "mklabel $TEST_FS_USE_DISK_LABEL\
+               mkpartfs primary ext2 1 $DEFAULT_END\
+               check 1"\
+               "/sbin/e2fsck -n -f ${TEST_DRIVE}1"
+
+       ped_test "mkfs"\
+               "mkfs 1 ext2\
+                check 1"\
+               "/sbin/e2fsck -n -f ${TEST_DRIVE}1"
+}
+
+prepare_resize_tests()
+{
+       part_num=1
+       part=$TEST_DRIVE$part_num
+
+       umount $TEST_MOUNT_POINT 2>&1 > /dev/null
+
+       mount $part $TEST_MOUNT_POINT -t ext2 \
+       && cp $TEST_DATA/* $TEST_MOUNT_POINT -r
+       umount $TEST_MOUNT_POINT 2>&1 > /dev/null
+}
+
+test_resize_move_end_forward()
+{
+       do_test_diff "resize: move end forward"\
+               $TEST_DATA $TEST_MOUNT_POINT \
+               "resize 1 1 $[ $DEFAULT_END + 5 ] check 1"\
+               "/sbin/e2fsck -n -f ${TEST_DRIVE}1"
+}
+
+test_resize_move_end_forward_big()
+{
+       do_test_diff "resize: move end forward (big)"\
+               $TEST_DATA $TEST_MOUNT_POINT \
+               "resize 1 1 $[ $DEFAULT_END + 200 ] check 1"\
+               "/sbin/e2fsck -n -f ${TEST_DRIVE}1"
+}
+
+test_resize_move_end_backward()
+{
+       do_test_diff "resize: move end backward"\
+               $TEST_DATA $TEST_MOUNT_POINT \
+               "resize 1 1 $DEFAULT_END check 1"\
+               "/sbin/e2fsck -n -f ${TEST_DRIVE}1"
+}
+
+main()
+{
+       export DEFAULT_END=200
+
+       if ! test_mkpartfs; then
+               return 1
+       fi
+
+       prepare_resize_tests
+       test_resize_move_end_forward
+       test_resize_move_end_backward
+       test_resize_move_end_forward_big
+       test_resize_move_end_backward
+}
+
+main
diff --git a/debug/test/test_fs_fat b/debug/test/test_fs_fat
new file mode 100755 (executable)
index 0000000..6eddecb
--- /dev/null
@@ -0,0 +1,180 @@
+#! /bin/bash
+
+do_diff()
+{
+       mount -t vfat ${TEST_DRIVE}1 $TEST_MOUNT_POINT > /dev/null
+
+       if diff -rq $1 $2 >> test_log; then
+               ped_test_ok
+       else
+               ped_test_failed
+       fi
+
+       umount $TEST_MOUNT_POINT 2>&1 > /dev/null
+}
+
+do_test_diff()
+{
+       ped_testing "$1"
+       if ped_test_get_val "$4" "$5" "$6" "$7"; then
+               ped_test_failed
+               return 1
+       fi
+       do_diff "$2" "$3"
+}
+
+test_mkpartfs()
+{
+       ped_test "mkpartfs fat16 minimum size"\
+               "mklabel $TEST_FS_USE_DISK_LABEL\
+               mkpartfs primary fat16 0 1\
+               check 1"\
+               "/sbin/dosfsck ${TEST_DRIVE}1"
+
+       ped_test "mkpartfs fat32 minimum size"\
+               "mklabel $TEST_FS_USE_DISK_LABEL\
+               mkpartfs primary fat32 0 1\
+               check 1"\
+               "/sbin/dosfsck ${TEST_DRIVE}1"
+
+       ped_test "mkpartfs"\
+               "mklabel $TEST_FS_USE_DISK_LABEL\
+               mkpartfs primary fat32 1 $DEFAULT_END\
+               check 1"\
+               "/sbin/dosfsck ${TEST_DRIVE}1"
+
+       ped_test "mkfs"\
+               "mkfs 1 fat32\
+                check 1"\
+               "/sbin/dosfsck ${TEST_DRIVE}1"
+}
+
+prepare_resize_tests()
+{
+       part_num=1
+       part=$TEST_DRIVE$part_num
+       hole_parent=`echo $TEST_DATA_HOLE | sed -e "s/[-_.a-zA-Z0-9]+\///g"`
+
+       umount $TEST_MOUNT_POINT 2>&1 > /dev/null
+
+       mount $part $TEST_MOUNT_POINT -t vfat \
+       && cp -r $TEST_DATA/* $TEST_MOUNT_POINT \
+       && cp -r $TEST_DATA $TEST_MOUNT_POINT/tmp_copy \
+       && rm -rf $TEST_MOUNT_POINT/$TEST_DATA_HOLE \
+       && mv $TEST_MOUNT_POINT/tmp_copy/$TEST_DATA_HOLE \
+             $TEST_MOUNT_POINT/$hole_parent \
+       && rm -rf $TEST_MOUNT_POINT/tmp_copy
+       umount $TEST_MOUNT_POINT
+}
+
+clearfat()
+{
+       $TEST_PARTED_CLEARFAT $TEST_DRIVE $1
+}
+
+test_resize_move_start_forward()
+{
+# geometry beforehand:  1 to $DEFAULT_END
+       do_test_diff "resize: move start forward"\
+               $TEST_DATA $TEST_MOUNT_POINT \
+               "resize 1 5 $DEFAULT_END check 1"\
+               "/sbin/dosfsck ${TEST_DRIVE}1"
+       clearfat 1
+}
+
+test_resize_move_start_backward()
+{
+# geometry beforehand: 5 to $DEFAULT_END
+       do_test_diff "resize: move start backward"\
+               $TEST_DATA $TEST_MOUNT_POINT \
+               "resize 1 1 $DEFAULT_END check 1"\
+               "/sbin/dosfsck ${TEST_DRIVE}1"
+       clearfat 1
+}
+
+test_resize_move_end_forward()
+{
+# geometry beforehand: 1 to $DEFAULT_END
+       do_test_diff "resize: move end forward"\
+               $TEST_DATA $TEST_MOUNT_POINT \
+               "resize 1 1 $[ $DEFAULT_END + 5 ] check 1"\
+               "/sbin/dosfsck ${TEST_DRIVE}1"
+       clearfat 1
+}
+
+test_resize_move_end_backward()
+{
+# geometry beforehand:  1 to $[$DEFAULT_END + 5]
+       do_test_diff "resize: move end backward"\
+               $TEST_DATA $TEST_MOUNT_POINT \
+               "resize 1 1 $DEFAULT_END check 1"\
+               "/sbin/dosfsck ${TEST_DRIVE}1"
+       clearfat 1
+}
+
+test_convert_fat16_fat32_shrink_cluster()
+{
+# geometry beforehand:  1 to $DEFAULT_END
+       do_test_diff \
+       "resize: convert from FAT16 to FAT32, shrinking the cluster size"\
+               $TEST_DATA $TEST_MOUNT_POINT \
+               "resize 1 1 $FAT32_END check 1"\
+               "/sbin/dosfsck ${TEST_DRIVE}1"
+       clearfat 1
+}
+
+test_convert_fat32_fat16()
+{
+# geometry beforehand:  1 to $FAT16_SMALL_END
+       do_test_diff "resize: convert from FAT32 to FAT16"\
+               $TEST_DATA $TEST_MOUNT_POINT \
+               "resize 1 1 $FAT32_END check 1"\
+               "/sbin/dosfsck ${TEST_DRIVE}1"
+       clearfat 1
+}
+
+test_convert_fat16_fat32()
+{
+# geometry beforehand:  1 to $FAT32_END
+       do_test_diff "resize: convert from FAT16 to FAT32"\
+               $TEST_DATA $TEST_MOUNT_POINT \
+               "resize 1 1 $FAT16_SMALL_END check 1"\
+               "/sbin/dosfsck ${TEST_DRIVE}1"
+       clearfat 1
+}
+
+#test_convert_fat32_fat16_shrink_cluster()
+#{
+#}
+
+#test_fat16_shrink_cluster()
+#{
+#}
+
+#test_fat32_shrink_cluster()
+#{
+#}
+
+main()
+{
+       export DEFAULT_END=300
+       export FAT32_END=600
+       export FAT16_SMALL_END=200
+
+       if ! test_mkpartfs; then
+               return 1
+       fi
+
+       prepare_resize_tests
+       test_resize_move_start_forward
+       test_resize_move_start_backward
+       test_resize_move_end_forward
+       test_resize_move_end_backward
+
+#      prepare_resize_tests
+       test_convert_fat16_fat32_shrink_cluster
+       test_convert_fat32_fat16
+       test_convert_fat16_fat32
+}
+
+main
diff --git a/debug/test/test_fs_hfs b/debug/test/test_fs_hfs
new file mode 100644 (file)
index 0000000..cb0d3f1
--- /dev/null
@@ -0,0 +1,90 @@
+#!/bin/bash
+# fsck_hfs seems to be broken : it doesn't even succeed in scanning a freshly
+# created by newfs_hfs partition.
+
+do_diff()
+{
+       mount "${TEST_DRIVE}1" $TEST_MOUNT_POINT -t $FILE_SYSTEM > /dev/null
+
+       if diff -rq $1 $2 --exclude lost+found >> test_log; then
+               ped_test_ok
+       else
+               ped_test_failed
+       fi
+
+       umount $TEST_MOUNT_POINT 2>&1 > /dev/null
+}
+
+do_test_diff()
+{
+       ped_testing "$1"
+       if ped_test_get_val "$4" "$5" "$6"; then
+               ped_test_failed
+               return 1
+       fi
+       do_diff "$2" "$3"
+}
+
+
+test_newfs_hfs()
+{
+# -h option for newfs_hfs makes it use legacy HFS (not Plus)
+# -dfn for fsck_hfs means Debug, Force, No
+# Debug => print more information
+# Force => force check even if clean bit is set
+# No => don't modify the F.S.
+       ped_test "mkpart && newfs_hfs && fsck_hfs"\
+               "mklabel $TEST_FS_USE_DISK_LABEL\
+                mkpart primary $FILE_SYSTEM 1 $DEFAULT_END"\
+               "newfs_hfs -h -v \"PED HFS TEST\" ${TEST_DRIVE}1"
+# &&\
+#               fsck_hfs -dfn ${TEST_DRIVE}1"
+}
+
+prepare_resize_tests()
+{
+       part_num=1
+       part=$TEST_DRIVE$part_num
+       hole_parent=`echo $TEST_DATA_HOLE | sed -e "s/[-_.a-zA-Z0-9]+\///g"`
+
+       umount $TEST_MOUNT_POINT 2>&1 > /dev/null
+
+       mount $part $TEST_MOUNT_POINT -t $FILE_SYSTEM \
+       && cp $TEST_DATA/* $TEST_MOUNT_POINT -r \
+       && cp -r $TEST_DATA $TEST_MOUNT_POINT/tmp_copy \
+       && rm -rf $TEST_MOUNT_POINT/$TEST_DATA_HOLE \
+       && mv $TEST_MOUNT_POINT/tmp_copy/$TEST_DATA_HOLE \
+             $TEST_MOUNT_POINT/$hole_parent \
+       && rm -rf $TEST_MOUNT_POINT/tmp_copy
+
+       umount $TEST_MOUNT_POINT 2>&1 > /dev/null
+}
+
+test_resize_move_end_backward()
+{
+# -dfn for fsck_hfs means Debug, Force, No
+# Debug => print more information
+# Force => force check even if clean bit is set
+# No => don't modify the F.S.
+       do_test_diff "resize: move end backward"\
+               $TEST_DATA $TEST_MOUNT_POINT \
+               "resize 1 1 $RESIZE_END"\
+               ""
+#fsck_hfs -dfn ${TEST_DRIVE}1 2>&1"
+}
+
+main()
+{
+       export DEFAULT_END=250
+       export RESIZE_END=200
+       export FILE_SYSTEM=hfs
+
+       if ! test_newfs_hfs; then
+               return 1
+       fi
+
+       prepare_resize_tests
+       test_resize_move_end_backward
+}
+
+main
diff --git a/debug/test/test_fs_hfsplus b/debug/test/test_fs_hfsplus
new file mode 100644 (file)
index 0000000..39652df
--- /dev/null
@@ -0,0 +1,94 @@
+#!/bin/bash
+# fsck_hfs seems to be broken : it doesn't even succeed in scanning a freshly
+# created by newfs_hfs partition.
+# update : retry with my newfs_hfs that round file system size down to 4 ko
+
+do_diff()
+{
+       mount "${TEST_DRIVE}1" $TEST_MOUNT_POINT -t $FILE_SYSTEM > /dev/null
+
+       if diff -rq $1 $2 --exclude lost+found >> test_log; then
+               ped_test_ok
+       else
+               ped_test_failed
+       fi
+
+       umount $TEST_MOUNT_POINT 2>&1 > /dev/null
+}
+
+do_test_diff()
+{
+       ped_testing "$1"
+       if ped_test_get_val "$4" "$5" "$6"; then
+               ped_test_failed
+               return 1
+       fi
+       do_diff "$2" "$3"
+}
+
+
+test_newfs_hfs()
+{
+# -w option for newfs_hfs adds an HFS wrapper around the HFS+ F.S.
+# update : don't use -w yet because it doesn't works well
+# it seems that the wrapper bad block file is stored differently by
+# newfs_hfs than by mac os X install format program
+# -dfn for fsck_hfs means Debug, Force, No
+# Debug => print more information
+# Force => force check even if clean bit is set
+# No => don't modify the F.S.
+       ped_test "mkpart && newfs_hfs && fsck_hfs"\
+               "mklabel $TEST_FS_USE_DISK_LABEL\
+                mkpart primary $FILE_SYSTEM 1 $DEFAULT_END"\
+               "newfs_hfs -v \"PED HFS TEST\" ${TEST_DRIVE}1"
+# &&\
+#               fsck_hfs -dfn ${TEST_DRIVE}1"
+}
+
+prepare_resize_tests()
+{
+       part_num=1
+       part=$TEST_DRIVE$part_num
+       hole_parent=`echo $TEST_DATA_HOLE | sed -e "s/[-_.a-zA-Z0-9]+\///g"`
+
+       umount $TEST_MOUNT_POINT 2>&1 > /dev/null
+
+       mount $part $TEST_MOUNT_POINT -t $FILE_SYSTEM \
+       && cp $TEST_DATA/* $TEST_MOUNT_POINT -r \
+       && cp -r $TEST_DATA $TEST_MOUNT_POINT/tmp_copy \
+       && rm -rf $TEST_MOUNT_POINT/$TEST_DATA_HOLE \
+       && mv $TEST_MOUNT_POINT/tmp_copy/$TEST_DATA_HOLE \
+             $TEST_MOUNT_POINT/$hole_parent \
+       && rm -rf $TEST_MOUNT_POINT/tmp_copy
+
+       umount $TEST_MOUNT_POINT 2>&1 > /dev/null
+}
+
+test_resize_move_end_backward()
+{
+# -dfn for fsck_hfs means Debug, Force, No
+# Debug => print more information
+# Force => force check even if clean bit is set
+# No => don't modify the F.S.
+       do_test_diff "resize: move end backward"\
+               $TEST_DATA $TEST_MOUNT_POINT \
+               "resize 1 1 $RESIZE_END"\
+               ""
+#fsck_hfs -dfn ${TEST_DRIVE}1 2>&1"
+}
+
+main()
+{
+       export DEFAULT_END=250
+       export RESIZE_END=200
+       export FILE_SYSTEM=hfsplus
+
+       if ! test_newfs_hfs; then
+               return 1
+       fi
+
+       prepare_resize_tests
+       test_resize_move_end_backward
+}
+
+main
diff --git a/debug/test/test_fs_linux_swap b/debug/test/test_fs_linux_swap
new file mode 100755 (executable)
index 0000000..512dded
--- /dev/null
@@ -0,0 +1,68 @@
+#! /bin/bash
+
+test_mkpartfs()
+{
+       ped_test "mkpartfs"\
+               "mklabel $TEST_FS_USE_DISK_LABEL\
+               mkpartfs primary linux-swap 1 $DEFAULT_END\
+               check 1"
+
+       ped_test "mkfs"\
+               "mkfs 1 linux-swap\
+                check 1"
+}
+
+do_test_swap()
+{
+       ped_testing "$1"
+       if ped_test_get_val "$2" "$3"; then
+               ped_test_failed
+               return 1
+       fi
+       if /sbin/swapon "${TEST_DRIVE}1"; then
+               /sbin/swapoff "${TEST_DRIVE}1"
+               ped_test_ok
+       else
+               ped_test_failed
+       fi
+}
+
+test_resize_move_start_forward()
+{
+       do_test_swap "resize: move start forward"\
+               "resize 1 5 $DEFAULT_END check 1"
+}
+
+test_resize_move_start_backward()
+{
+       do_test_swap "resize: move start backward"\
+               "resize 1 1 $DEFAULT_END check 1"
+}
+
+test_resize_move_end_forward()
+{
+       do_test_swap "resize: move end forward"\
+               "resize 1 1 $[ $DEFAULT_END + 5 ] check 1"
+}
+
+test_resize_move_end_backward()
+{
+       do_test_swap "resize: move end backward"\
+               "resize 1 1 $DEFAULT_END check 1"
+}
+
+main()
+{
+       export DEFAULT_END=200
+
+       if ! test_mkpartfs; then
+               return 1
+       fi
+
+       test_resize_move_start_forward
+       test_resize_move_start_backward
+       test_resize_move_end_forward
+       test_resize_move_end_backward
+}
+
+main
diff --git a/debug/test/test_fs_reiserfs b/debug/test/test_fs_reiserfs
new file mode 100755 (executable)
index 0000000..7e1ffdf
--- /dev/null
@@ -0,0 +1,97 @@
+#! /bin/bash
+
+do_diff()
+{
+       mount "${TEST_DRIVE}1" $TEST_MOUNT_POINT -t reiserfs > /dev/null
+
+       if diff -rq $1 $2 --exclude lost+found >> test_log; then
+               ped_test_ok
+       else
+               ped_test_failed
+       fi
+
+       umount $TEST_MOUNT_POINT 2>&1 > /dev/null
+}
+
+do_test_diff()
+{
+       ped_testing "$1"
+       if ped_test_get_val "$4" "$5" "$6"; then
+               ped_test_failed
+               return 1
+       fi
+       do_diff "$2" "$3"
+}
+
+test_mkpartfs()
+{
+       ped_test "mkpartfs primary reiserfs 1 1"\
+               "mklabel $TEST_FS_USE_DISK_LABEL\
+                mkpartfs primary reiserfs 1 1\
+                check 1"\
+               "echo Yes | /sbin/reiserfsck -q ${TEST_DRIVE}1 2>&1"
+
+       ped_test "mkpartfs"\
+               "mklabel $TEST_FS_USE_DISK_LABEL\
+               mkpartfs primary reiserfs 1 $DEFAULT_END\
+               check 1"\
+               "echo Yes | /sbin/reiserfsck -q ${TEST_DRIVE}1 2>&1"
+
+       ped_test "mkfs"\
+               "mkfs 1 reiserfs\
+                check 1"\
+               "echo Yes | /sbin/reiserfsck -q ${TEST_DRIVE}1 2>&1"
+}
+
+prepare_resize_tests()
+{
+       part_num=1
+       part=$TEST_DRIVE$part_num
+
+       umount $TEST_MOUNT_POINT 2>&1 > /dev/null
+
+       mount $part $TEST_MOUNT_POINT -t reiserfs \
+       && cp $TEST_DATA/* $TEST_MOUNT_POINT -r
+       umount $TEST_MOUNT_POINT 2>&1 > /dev/null
+}
+
+test_resize_move_end_forward()
+{
+       do_test_diff "resize: move end forward"\
+               $TEST_DATA $TEST_MOUNT_POINT \
+               "resize 1 1 $[ $DEFAULT_END + 5 ] check 1"\
+               "echo Yes | /sbin/reiserfsck -q ${TEST_DRIVE}1 2>&1"
+}
+
+test_resize_move_end_forward_big()
+{
+       do_test_diff "resize: move end forward (big)"\
+               $TEST_DATA $TEST_MOUNT_POINT \
+               "resize 1 1 $[ $DEFAULT_END + 200 ] check 1"\
+               "echo Yes | /sbin/reiserfsck -q ${TEST_DRIVE}1 2>&1"
+}
+
+test_resize_move_end_backward()
+{
+       do_test_diff "resize: move end backward"\
+               $TEST_DATA $TEST_MOUNT_POINT \
+               "resize 1 1 $DEFAULT_END check 1"\
+               "echo Yes | /sbin/reiserfsck -q ${TEST_DRIVE}1 2>&1"
+}
+
+main()
+{
+       export DEFAULT_END=200
+
+       if ! test_mkpartfs; then
+               return 1
+       fi
+
+       prepare_resize_tests
+       test_resize_move_end_forward
+       test_resize_move_end_backward
+       test_resize_move_end_forward_big
+       test_resize_move_end_backward
+}
+
+main
diff --git a/debug/test/testrc b/debug/test/testrc
new file mode 100644 (file)
index 0000000..a2d154f
--- /dev/null
@@ -0,0 +1,40 @@
+# fill this in!  It'll refuse to run if you don't.  I don't want this
+# configuration used to clobber your machine :-)
+TEST_HOST=satisfactory
+
+# Parted distribution base
+# TEST_PARTED_BASE=../..
+TEST_PARTED_BASE=/home/parted/cvs/stable
+
+# where to find GNU parted
+TEST_PARTED_COMMAND=$TEST_PARTED_BASE/parted/parted
+
+# where to find clearfat
+TEST_PARTED_CLEARFAT=$TEST_PARTED_BASE/debug/clearfat/clearfat
+
+# the drive to be completely clobbered!
+TEST_DRIVE=/dev/hdb
+
+# The size of the disk, in megabytes
+TEST_DRIVE_SIZE=19092
+
+# where TEST_DRIVE gets mounted
+TEST_MOUNT_POINT=/mnt/test
+
+# where to get test data from.  Clear text is nice - easier to debug.
+TEST_DATA=/usr/src/kernel-source-2.4.20
+
+# data to delete and replace, to "fragment" the drive.
+TEST_DATA_HOLE=include
+
+# which disk label to use for testing file systems
+TEST_FS_USE_DISK_LABEL=msdos
+
+# set to 1 if you want to shut up the kernel's annoying messages
+QUIET_KERNEL=1
+
+# set to 1 if you want logging of everything, including successful tests
+VERBOSE_LOGS=1
+
+# set this if you want to do malloc() debugging with mtrace
+#MALLOC_TRACE=malloc-trace
diff --git a/dist-check.mk b/dist-check.mk
new file mode 100644 (file)
index 0000000..310f0d0
--- /dev/null
@@ -0,0 +1,170 @@
+# Most of this is probably too coreutils-centric to be useful to other packages.
+
+bin=bin-$$$$
+
+write_loser = printf '\#!%s\necho $$0: bad path 1>&2; exit 1\n' '$(SHELL)'
+
+tmpdir = $(abs_top_builddir)/tests/torture
+
+t=$(tmpdir)/$(PACKAGE)/test
+pfx=$(t)/i
+
+built_programs =                                               \
+  $$(echo 'spy:;@echo $$(PROGRAMS)'                            \
+    | MAKEFLAGS= $(MAKE) -s -C parted -f Makefile -f - spy     \
+    | fmt -1 | sed 's,$(EXEEXT)$$,,' | sort -u)
+
+# More than once, tainted build and source directory names would
+# have caused at least one "make check" test to apply "chmod 700"
+# to all directories under $HOME.  Make sure it doesn't happen again.
+tp = $(tmpdir)/taint
+t_prefix = $(tp)/a
+t_taint = '$(t_prefix) b'
+fake_home = $(tp)/home
+
+# When extracting from a distribution tarball, extract using the fastest
+# method possible.  With dist-xz, that means using the *.xz file.
+ifneq ('', $(filter *.xz, $(DIST_ARCHIVES)))
+  tar_decompress_opt_ = J
+  suffix_ = xz
+else
+  ifneq ('', $(filter *.gz, $(DIST_ARCHIVES)))
+    tar_decompress_opt_ = z
+    suffix_ = gz
+  else
+    tar_decompress_opt_ = j
+    suffix_ = bz2
+  endif
+endif
+amtar_extract_ = $(AMTAR) -$(tar_decompress_opt_)xf
+preferred_tarball_ = $(distdir).tar.$(suffix_)
+
+# Ensure that tests run from tainted build and src dir names work,
+# and don't affect anything in $HOME.  Create witness files in $HOME,
+# record their attributes, and build/test.  Then ensure that the
+# witnesses were not affected.
+# Skip this test when using libtool, since libtool-generated scripts
+# cannot deal with a space-tainted srcdir.
+ALL_RECURSIVE_TARGETS += taint-distcheck
+taint-distcheck: $(DIST_ARCHIVES)
+       grep '^[         ]*LT_INIT' configure.ac >/dev/null && exit 0
+       test -d $(t_taint) && chmod -R 700 $(t_taint) || :
+       -rm -rf $(t_taint) $(fake_home)
+       mkdir -p $(t_prefix) $(t_taint) $(fake_home)
+       $(amtar_extract_) $(preferred_tarball_) -C $(t_taint)
+       mkfifo $(fake_home)/fifo
+       touch $(fake_home)/f
+       mkdir -p $(fake_home)/d/e
+       ls -lR $(fake_home) $(t_prefix) > $(tp)/.ls-before
+       HOME=$(fake_home); export HOME;                 \
+       cd $(t_taint)/$(distdir)                        \
+         && ./configure                                \
+         && $(MAKE)                                    \
+         && $(MAKE) check                              \
+         && ls -lR $(fake_home) $(t_prefix) > $(tp)/.ls-after \
+         && diff $(tp)/.ls-before $(tp)/.ls-after      \
+         && test -d $(t_prefix)
+       rm -rf $(tp)
+
+# Verify that a twisted use of --program-transform-name=PROGRAM works.
+define install-transform-check
+  echo running install-transform-check                 \
+    && rm -rf $(pfx)                                   \
+    && $(MAKE) program_transform_name='s/.*/zyx/'      \
+      prefix=$(pfx) install                            \
+    && test "$$(echo $(pfx)/sbin/*)" = "$(pfx)/sbin/zyx"       \
+    && test "$$(find $(pfx)/share/man -type f|sed 's,.*/,,;s,\..*,,')" = "zyx"
+endef
+
+# Install, then verify that all binaries and man pages are in place.
+# Note that neither the binary, ginstall, nor the [.1 man page is installed.
+define my-instcheck
+  echo running my-instcheck;                           \
+  $(MAKE) prefix=$(pfx) install                                \
+    && test ! -f $(pfx)/bin/ginstall                   \
+    && { fail=0;                                       \
+      for i in $(built_programs); do                   \
+        test "$$i" = ginstall && i=install;            \
+        for j in "$(pfx)/sbin/$$i"                     \
+                 "$(pfx)/share/man/man8/$$i.8"; do     \
+          case $$j in *'[.1') continue;; esac;         \
+          test -f "$$j" && :                           \
+            || { echo "$$j not installed"; fail=1; };  \
+        done;                                          \
+      done;                                            \
+      test $$fail = 1 && exit 1 || :;                  \
+    }
+endef
+
+# The hard-linking for-loop below ensures that there is a bin/ directory
+# full of all of the programs under test (except the ones that are required
+# for basic Makefile rules), all symlinked to the just-built "false" program.
+# This is to ensure that if ever a test neglects to make PATH include
+# the build srcdir, these always-failing programs will run.
+# Otherwise, it is too easy to test the wrong programs.
+# Note that "false" itself is a symlink to true, so it too will malfunction.
+define coreutils-path-check
+  {                                                    \
+    echo running coreutils-path-check;                 \
+    if test -f $(srcdir)/src/true.c; then              \
+      fail=1;                                          \
+      mkdir $(bin)                                     \
+       && ($(write_loser)) > $(bin)/loser              \
+       && chmod a+x $(bin)/loser                       \
+       && for i in $(built_programs); do               \
+              case $$i in                              \
+                rm|expr|basename|echo|sort|ls|tr);;    \
+                cat|dirname|mv|wc);;                   \
+                *) ln $(bin)/loser $(bin)/$$i;;        \
+              esac;                                    \
+            done                                       \
+         && ln -sf ../src/true $(bin)/false            \
+         && PATH=`pwd`/$(bin)$(PATH_SEPARATOR)$$PATH   \
+               $(MAKE) -C tests check                  \
+         && { test -d gnulib-tests                     \
+                && $(MAKE) -C gnulib-tests check       \
+                || :; }                                \
+         && rm -rf $(bin)                              \
+         && fail=0;                                    \
+    else                                               \
+      fail=0;                                          \
+    fi;                                                        \
+    test $$fail = 1 && exit 1 || :;                    \
+  }
+endef
+
+# Use this to make sure we don't run these programs when building
+# from a virgin compressed tarball file, below.
+null_AM_MAKEFLAGS ?= \
+  ACLOCAL=false \
+  AUTOCONF=false \
+  AUTOMAKE=false \
+  AUTOHEADER=false \
+  GPERF=false \
+  MAKEINFO=false
+
+ALL_RECURSIVE_TARGETS += my-distcheck
+my-distcheck: $(DIST_ARCHIVES) $(local-check)
+       $(MAKE) syntax-check
+       $(MAKE) check
+       -rm -rf $(t)
+       mkdir -p $(t)
+       $(amtar_extract_) $(preferred_tarball_) -C $(t)
+       (set -e; cd $(t)/$(distdir);                    \
+         ./configure --quiet --enable-gcc-warnings --disable-nls; \
+         $(MAKE) AM_MAKEFLAGS='$(null_AM_MAKEFLAGS)';  \
+         $(MAKE) dvi;                                  \
+         $(install-transform-check);                   \
+         $(my-instcheck);                              \
+         $(coreutils-path-check);                      \
+         $(MAKE) distclean                             \
+       )
+       (cd $(t) && mv $(distdir) $(distdir).old        \
+         && $(amtar_extract_) - ) < $(preferred_tarball_)
+       diff -ur $(t)/$(distdir).old $(t)/$(distdir)
+       -rm -rf $(t)
+       rmdir $(tmpdir)/$(PACKAGE) $(tmpdir)
+       @echo "========================"; \
+       echo "ready for distribution:"; \
+       for i in $(DIST_ARCHIVES); do echo "  $$i"; done; \
+       echo "========================"
diff --git a/doc/API b/doc/API
new file mode 100644 (file)
index 0000000..ea83aaf
--- /dev/null
+++ b/doc/API
@@ -0,0 +1,286 @@
+===============================================================================
+                               GNU libparted API
+===============================================================================
+
+
+
+
+
+
+
+
+                <<< This file is deprecated and being converted
+                       to Doxygen in-line documentation.
+                  Until this is finished, both are incomplete
+                    but fully document the API together. >>>
+
+
+                            ( scroll down to read )
+
+
+
+
+
+      by Andrew Clausen <clausen@gnu.org>,
+         Leslie P. Polzer <polzer@gnu.org>
+
+      Copyright (C) 1999, 2000, 2001, 2002, 2003, 2005, 2006, 2007
+      Free Software Foundation, Inc.
+
+      Permission is granted to copy, distribute and/or modify this document
+      under the terms of the GNU Free Documentation License, Version 1.3
+      or any later version published by the Free Software Foundation;
+      with the no Invariant Sections, with the no Front-Cover Texts, and
+      with no Back-Cover Texts.  A copy of the license is included in the
+      file, COPYING.DOC.
+
+
+CONTENTS
+--------
+
+1      Introduction
+2      Initialising libparted
+3      PedDevice
+4      PedDisk, PedDiskType
+5      PedGeometry
+6      PedPartition, PedPartitionType
+7      PedFileSystem, PedFileSystemType
+8      PedConstraint, PedAlignment
+9      PedTimer
+10     PedUnit
+11     Exceptions
+
+-------------------------------------------------------------------------------
+1      INTRODUCTION
+-------------------------------------------------------------------------------
+
+GNU Parted is built on top of libparted, which does all of the real work.
+libparted provides an API capable of manipulating partition tables, and
+the filesystems on them.
+
+The main motivation for separating the back-end into a separate library was
+to encourage different GNU/Linux distributions to encorporate their own
+customized front-end into the install process.
+
+This documents the API -- not the implementation details of libparted.
+Documentation that is not relevant to programs using the API are marked with
+INTERNAL.  Apart from this file, a good place to look would be
+parted/parted.c, the front-end's source, and the TUTORIAL file (not finished
+yet!).
+
+This documentation isn't as complete as it should be.  Feel free to ask
+questions, either to me personally (clausen@gnu.org), or to the mailing list
+(bug-parted@gnu.org).
+
+1.1    TERMINOLOGY
+-------------------
+Some of the terminology is a bit weird, so you might want to read this.
+
+CONSTRAINT             a set of conditions that must be satisfied, for
+                       a given GEOMETRY of a PARTITION.
+
+DEVICE                 a storage device.
+
+DISK                   a storage device, with a valid partition table.
+
+EXCEPTION              an event that needs attention.
+
+EXTENDED PARTITION     a PRIMARY PARTITION, that may contain LOGICAL
+                       PARTITIONS instead of a file system.  There is at most
+                       one extended partition.
+
+FILE SYSTEM            any data that resides on a partition.  For the purposes
+                       for GNU Parted, this includes swap devices.
+
+GEOMETRY               a description of a continuous region on a disk.  eg,
+                       partitions have a geometry.
+
+HIDDEN PARTITION       a partition that is hidden from MS operating systems.
+                       Only FAT partitions may be hidden.
+
+LOGICAL PARTITION      like normal partitions, but they lie inside the
+                       extended partition.
+
+PARTITION              a continuous region on a disk where a file system may
+                       reside.
+
+PRIMARY PARTITION      a normal, vanilla, partition.
+
+PARTITION TABLE                also, DISK LABEL.  A description of where the
+                       partitions lie, and information about those partitions.
+                       For example, what type of file system resides on them.
+                       The partition table is usually at the start of the
+                       disk.
+
+TIMER                  a progress meter.  It is an entity that keeps track
+                       of time, and who to inform when something interesting
+                       happens.
+
+1.2    DESIGN
+--------------
+libparted has a fairly object-oriented design.  The most important objects are:
+
+PedArchitecture                describes support for an "archicture", which is sort
+                       of like "operating system", but could also be,
+                       for example, another libparted environment, EVMS, etc.
+PedConstraint          a constraint on the geometry of a partition
+PedDevice              a storage device
+PedDisk                        a device + partition table
+PedFileSystem          a filesystem, associated with a PedGeometry, NOT a
+                       PedPartition.
+PedGeometry            a continious region on a device
+PedPartition           a partition (basically PedGeometry plus some attributes)
+PedTimer               a timer keeps track of progress and time
+
+All functions return 0 (or NULL) on failure and non-zero (or non-NULL) on
+success.  If a function fails, an exception is thrown.  This may be handled by
+either an exception handler, or the calling function (see the section on
+exceptions).
+
+All objects should be considered read-only; they should only be modified by
+calls to libparted's API.
+
+-------------------------------------------------------------------------------
+2      INITIALISING LIBPARTED
+-------------------------------------------------------------------------------
+
+Headers for libparted can be included with:
+
+#include <parted/parted.h>
+
+Parted automatically initialises itself via an __attribute__ ((constructor))
+function.
+
+However, you might want to set the exception handler with
+ped_exception_set_handler().  libparted does come with a default exception
+handler, if you're feeling lazy.
+
+Here's a minimal example:
+
+#include <parted/parted.h>
+
+int
+main()
+{
+       /* automatically initialized */
+       ped_exception_set_handler(exception_handler);   /* see section 7 */
+       return 0;
+       /* automatically cleaned up */
+}
+
+-----------------------------------------------------------------------------
+5      PEDGEOMETRY
+-----------------------------------------------------------------------------
+
+5.1    FIELDS
+--------------
+
+5.2    FUNCTIONS
+-----------------
+
+
+-----------------------------------------------------------------------------
+6      PEDPARTITION, PEDPARTITIONTYPE
+-----------------------------------------------------------------------------
+
+interface:             <parted/disk.h>
+implementation:                libparted/disk.c
+
+A PedPartition represents a partition (surprise!).  PedPartitions have weird
+relationships with PedDisks.  Hence, many functions for manipulating partitions
+will be called ped_disk_* - so have a look at the PedDisk documentation as well.
+
+Parted creates "imaginary" free space and metadata partitions.  You can't
+do any operations on these partitions (like set_geometry, {set,get}_flag, etc.)
+Partitions that are not free space or metadata partitions are said to
+be "active" partitions.  You can use ped_partition_is_active() to check.
+
+6.1    FIELDS
+--------------
+
+
+6.2    FUNCTIONS
+-----------------
+
+
+-----------------------------------------------------------------------------
+7      PEDFILESYSTEM, PEDFILESYSTEMTYPE
+-----------------------------------------------------------------------------
+
+
+7.1    FIELDS
+--------------
+
+
+7.2    FUNCTIONS
+-----------------
+
+
+-----------------------------------------------------------------------------
+8      PEDCONSTRAINT, PEDALIGNMENT
+-----------------------------------------------------------------------------
+
+
+"Alignments" are restrictions on the location of a sector in the form of:
+
+       sector = offset + X * grain_size
+
+For example, logical partitions on msdos disk labels usually have a constraint
+with offset = 63 and grain_size = 16065 (Long story!).  An important
+(and non-obvious!) property of alignment restrictions is they are closed
+under intersection,  i.e. if you take two constraints, like (offset, grain_size)
+= (63, 16065) and (0, 4), then either:
+  * there are no valid solutions
+  * all solutions can be expressed in the form of (offset + X * grain_size)
+In the example, the intersection of the constraint is (16128, 64260).
+
+For more information on the maths, see the source -- there's a large comment
+containing proofs above ped_alignment_intersect() in libparted/natmath.c
+
+The restrictions on the location of the start and end are in the form of
+PedGeometry objects -- continous regions in which the start and end must lie.
+Obviously, these restrictions are also closed under intersection.
+
+The other restriction -- the minimum size -- is also closed under intersection.
+(The intersection of 2 minimum size restrictions is the maximum of the
+2 values)
+
+FIXME: mention ped_alignment_any
+
+8.2    FUNCTIONS
+-----------------
+
+
+
+-----------------------------------------------------------------------------
+9      PEDTIMER
+-----------------------------------------------------------------------------
+
+9.1    FIELDS
+--------------
+
+typedef void PedTimerHandler (PedTimer* timer, void* context);
+
+
+9.2    FUNCTIONS
+-----------------
+
+
+-----------------------------------------------------------------------------
+10     PEDUNIT
+-----------------------------------------------------------------------------
+
+
+10.1   CONSTANTS
+-----------------
+
+10.2   FUNCTIONS
+-----------------
+
+
+-----------------------------------------------------------------------------
+11     EXCEPTIONS
+-----------------------------------------------------------------------------
+
+11.1   FIELDS
+--------------
diff --git a/doc/C/Makefile.am b/doc/C/Makefile.am
new file mode 100644 (file)
index 0000000..7d62b7b
--- /dev/null
@@ -0,0 +1,28 @@
+## Process this file with automake to produce Makefile.in
+
+dist_man8_MANS = \
+       parted.8 \
+       partprobe.8
+
+.PHONY: updatepo
+# Update the POT in srcdir
+# Make sure the update does not only consist in a new POT-Creation-Date
+# Don't do anything if $(srcdir) is read-only (i.e., for "make distcheck").
+updatepo:
+       cd $(srcdir); \
+       test -w . || exit 0; \
+       for name in $(dist_man8_MANS); do \
+               echo $$name; \
+               cp po/$$name.pot po/$$name.new.pot; \
+               po4a-updatepo -f man -m $$name -p po/$$name.new.pot; \
+               diff -I '^\"POT-Creation-Date: ' po/$$name.pot po/$$name.new.pot 2>&1 > /dev/null; \
+               if [ $$? ]; then \
+                       mv po/$$name.new.pot po/$$name.pot; \
+               else \
+                       rm -f po/$$name.new.pot; \
+               fi; \
+       done
+
+dist-hook: updatepo
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/doc/C/Makefile.in b/doc/C/Makefile.in
new file mode 100644 (file)
index 0000000..5dba669
--- /dev/null
@@ -0,0 +1,1230 @@
+# Makefile.in generated by automake 1.11a from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in 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.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = doc/C
+DIST_COMMON = $(dist_man8_MANS) $(srcdir)/Makefile.am \
+       $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+       $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argmatch.m4 \
+       $(top_srcdir)/m4/assert.m4 $(top_srcdir)/m4/btowc.m4 \
+       $(top_srcdir)/m4/calloc.m4 $(top_srcdir)/m4/canonicalize.m4 \
+       $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
+       $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/configmake.m4 \
+       $(top_srcdir)/m4/dirname.m4 \
+       $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+       $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/environ.m4 \
+       $(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
+       $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fclose.m4 \
+       $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/fcntl_h.m4 \
+       $(top_srcdir)/m4/fflush.m4 $(top_srcdir)/m4/fpending.m4 \
+       $(top_srcdir)/m4/fpurge.m4 $(top_srcdir)/m4/freading.m4 \
+       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/fsync.m4 \
+       $(top_srcdir)/m4/ftell.m4 $(top_srcdir)/m4/ftello.m4 \
+       $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
+       $(top_srcdir)/m4/langinfo_h.m4 $(top_srcdir)/m4/lcmessage.m4 \
+       $(top_srcdir)/m4/lib-ignore.m4 $(top_srcdir)/m4/lib-ld.m4 \
+       $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/localcharset.m4 \
+       $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \
+       $(top_srcdir)/m4/locale-tr.m4 $(top_srcdir)/m4/locale-zh.m4 \
+       $(top_srcdir)/m4/locale_h.m4 $(top_srcdir)/m4/localename.m4 \
+       $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/long-options.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
+       $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+       $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
+       $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+       $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbtowc.m4 \
+       $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+       $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/multiarch.m4 \
+       $(top_srcdir)/m4/nl_langinfo.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/nocrash.m4 $(top_srcdir)/m4/o-direct.m4 \
+       $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/priv-set.m4 \
+       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+       $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+       $(top_srcdir)/m4/read.m4 $(top_srcdir)/m4/readlink.m4 \
+       $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/regex.m4 \
+       $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+       $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/setlocale.m4 \
+       $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/ssize_t.m4 \
+       $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdarg.m4 \
+       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strdup.m4 \
+       $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/strerror_r.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+       $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtoll.m4 \
+       $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/symlink.m4 \
+       $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+       $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/thread.m4 \
+       $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/time_h.m4 \
+       $(top_srcdir)/m4/ungetc.m4 $(top_srcdir)/m4/unistd_h.m4 \
+       $(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkdir.m4 \
+       $(top_srcdir)/m4/usleep.m4 $(top_srcdir)/m4/version-etc.m4 \
+       $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \
+       $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
+       $(top_srcdir)/m4/wcrtomb.m4 $(top_srcdir)/m4/wctob.m4 \
+       $(top_srcdir)/m4/wctomb.m4 $(top_srcdir)/m4/wctype_h.m4 \
+       $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+       $(top_srcdir)/m4/xstrndup.m4 $(top_srcdir)/m4/xstrtol.m4 \
+       $(top_srcdir)/m4/yield.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+man8dir = $(mandir)/man8
+am__installdirs = "$(DESTDIR)$(man8dir)"
+NROFF = nroff
+MANS = $(dist_man8_MANS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+pkglibexecdir = @pkglibexecdir@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+BUILDINFO = @BUILDINFO@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHECK_CFLAGS = @CHECK_CFLAGS@
+CHECK_LIBS = @CHECK_LIBS@
+CONFIG_INCLUDE = @CONFIG_INCLUDE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DYNAMIC_LOADING = @DYNAMIC_LOADING@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENABLE_DEVICE_MAPPER = @ENABLE_DEVICE_MAPPER@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FACCESSAT = @GNULIB_FACCESSAT@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCHMODAT = @GNULIB_FCHMODAT@
+GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FCNTL = @GNULIB_FCNTL@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FGETC = @GNULIB_FGETC@
+GNULIB_FGETS = @GNULIB_FGETS@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREAD = @GNULIB_FREAD@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSCANF = @GNULIB_FSCANF@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSTATAT = @GNULIB_FSTATAT@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FUTIMENS = @GNULIB_FUTIMENS@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETC = @GNULIB_GETC@
+GNULIB_GETCHAR = @GNULIB_GETCHAR@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETGROUPS = @GNULIB_GETGROUPS@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETS = @GNULIB_GETS@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
+GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_ISWBLANK = @GNULIB_ISWBLANK@
+GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@
+GNULIB_LCHMOD = @GNULIB_LCHMOD@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LINKAT = @GNULIB_LINKAT@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_LSTAT = @GNULIB_LSTAT@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MBTOWC = @GNULIB_MBTOWC@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDIRAT = @GNULIB_MKDIRAT@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKFIFO = @GNULIB_MKFIFO@
+GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@
+GNULIB_MKNOD = @GNULIB_MKNOD@
+GNULIB_MKNODAT = @GNULIB_MKNODAT@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@
+GNULIB_MKTIME = @GNULIB_MKTIME@
+GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@
+GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@
+GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_OPEN = @GNULIB_OPEN@
+GNULIB_OPENAT = @GNULIB_OPENAT@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE = @GNULIB_PIPE@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_PREAD = @GNULIB_PREAD@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READ = @GNULIB_READ@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_READLINKAT = @GNULIB_READLINKAT@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_REALPATH = @GNULIB_REALPATH@
+GNULIB_REMOVE = @GNULIB_REMOVE@
+GNULIB_RENAME = @GNULIB_RENAME@
+GNULIB_RENAMEAT = @GNULIB_RENAMEAT@
+GNULIB_RMDIR = @GNULIB_RMDIR@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SETLOCALE = @GNULIB_SETLOCALE@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STAT = @GNULIB_STAT@
+GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRERROR_R = @GNULIB_STRERROR_R@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRPTIME = @GNULIB_STRPTIME@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_SYMLINK = @GNULIB_SYMLINK@
+GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
+GNULIB_TIMEGM = @GNULIB_TIMEGM@
+GNULIB_TIME_R = @GNULIB_TIME_R@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
+GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
+GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNLINK = @GNULIB_UNLINK@
+GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_USLEEP = @GNULIB_USLEEP@
+GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VFSCANF = @GNULIB_VFSCANF@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSCANF = @GNULIB_VSCANF@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCPCPY = @GNULIB_WCPCPY@
+GNULIB_WCPNCPY = @GNULIB_WCPNCPY@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@
+GNULIB_WCSCAT = @GNULIB_WCSCAT@
+GNULIB_WCSCHR = @GNULIB_WCSCHR@
+GNULIB_WCSCMP = @GNULIB_WCSCMP@
+GNULIB_WCSCOLL = @GNULIB_WCSCOLL@
+GNULIB_WCSCPY = @GNULIB_WCSCPY@
+GNULIB_WCSCSPN = @GNULIB_WCSCSPN@
+GNULIB_WCSDUP = @GNULIB_WCSDUP@
+GNULIB_WCSLEN = @GNULIB_WCSLEN@
+GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@
+GNULIB_WCSNCAT = @GNULIB_WCSNCAT@
+GNULIB_WCSNCMP = @GNULIB_WCSNCMP@
+GNULIB_WCSNCPY = @GNULIB_WCSNCPY@
+GNULIB_WCSNLEN = @GNULIB_WCSNLEN@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSPBRK = @GNULIB_WCSPBRK@
+GNULIB_WCSRCHR = @GNULIB_WCSRCHR@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCSSPN = @GNULIB_WCSSPN@
+GNULIB_WCSSTR = @GNULIB_WCSSTR@
+GNULIB_WCSTOK = @GNULIB_WCSTOK@
+GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@
+GNULIB_WCSXFRM = @GNULIB_WCSXFRM@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCTOMB = @GNULIB_WCTOMB@
+GNULIB_WCTRANS = @GNULIB_WCTRANS@
+GNULIB_WCTYPE = @GNULIB_WCTYPE@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WMEMCHR = @GNULIB_WMEMCHR@
+GNULIB_WMEMCMP = @GNULIB_WMEMCMP@
+GNULIB_WMEMCPY = @GNULIB_WMEMCPY@
+GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@
+GNULIB_WMEMSET = @GNULIB_WMEMSET@
+GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
+HAVE_CHOWN = @HAVE_CHOWN@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@
+HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SETENV = @HAVE_DECL_SETENV@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@
+HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_DUPLOCALE = @HAVE_DUPLOCALE@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
+HAVE_FCHMODAT = @HAVE_FCHMODAT@
+HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
+HAVE_FCNTL = @HAVE_FCNTL@
+HAVE_FEATURES_H = @HAVE_FEATURES_H@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSTATAT = @HAVE_FSTATAT@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_FUTIMENS = @HAVE_FUTIMENS@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETGROUPS = @HAVE_GETGROUPS@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETLOGIN = @HAVE_GETLOGIN@
+HAVE_GETOPT_H = @HAVE_GETOPT_H@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
+HAVE_GRANTPT = @HAVE_GRANTPT@
+HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWBLANK = @HAVE_ISWBLANK@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
+HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
+HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
+HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
+HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
+HAVE_LCHMOD = @HAVE_LCHMOD@
+HAVE_LCHOWN = @HAVE_LCHOWN@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_LSTAT = @HAVE_LSTAT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSLEN = @HAVE_MBSLEN@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMCHR = @HAVE_MEMCHR@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDIRAT = @HAVE_MKDIRAT@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKFIFO = @HAVE_MKFIFO@
+HAVE_MKFIFOAT = @HAVE_MKFIFOAT@
+HAVE_MKNOD = @HAVE_MKNOD@
+HAVE_MKNODAT = @HAVE_MKNODAT@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
+HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
+HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
+HAVE_OPENAT = @HAVE_OPENAT@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PIPE = @HAVE_PIPE@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PWRITE = @HAVE_PWRITE@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_READLINKAT = @HAVE_READLINKAT@
+HAVE_REALPATH = @HAVE_REALPATH@
+HAVE_RENAMEAT = @HAVE_RENAMEAT@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRPTIME = @HAVE_STRPTIME@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYMLINK = @HAVE_SYMLINK@
+HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_TIMEGM = @HAVE_TIMEGM@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_USLEEP = @HAVE_USLEEP@
+HAVE_UTIMENSAT = @HAVE_UTIMENSAT@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCPCPY = @HAVE_WCPCPY@
+HAVE_WCPNCPY = @HAVE_WCPNCPY@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSCASECMP = @HAVE_WCSCASECMP@
+HAVE_WCSCAT = @HAVE_WCSCAT@
+HAVE_WCSCHR = @HAVE_WCSCHR@
+HAVE_WCSCMP = @HAVE_WCSCMP@
+HAVE_WCSCOLL = @HAVE_WCSCOLL@
+HAVE_WCSCPY = @HAVE_WCSCPY@
+HAVE_WCSCSPN = @HAVE_WCSCSPN@
+HAVE_WCSDUP = @HAVE_WCSDUP@
+HAVE_WCSLEN = @HAVE_WCSLEN@
+HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@
+HAVE_WCSNCAT = @HAVE_WCSNCAT@
+HAVE_WCSNCMP = @HAVE_WCSNCMP@
+HAVE_WCSNCPY = @HAVE_WCSNCPY@
+HAVE_WCSNLEN = @HAVE_WCSNLEN@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSPBRK = @HAVE_WCSPBRK@
+HAVE_WCSRCHR = @HAVE_WCSRCHR@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCSSPN = @HAVE_WCSSPN@
+HAVE_WCSSTR = @HAVE_WCSSTR@
+HAVE_WCSTOK = @HAVE_WCSTOK@
+HAVE_WCSWIDTH = @HAVE_WCSWIDTH@
+HAVE_WCSXFRM = @HAVE_WCSXFRM@
+HAVE_WCTRANS_T = @HAVE_WCTRANS_T@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WCTYPE_T = @HAVE_WCTYPE_T@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WMEMCHR = @HAVE_WMEMCHR@
+HAVE_WMEMCMP = @HAVE_WMEMCMP@
+HAVE_WMEMCPY = @HAVE_WMEMCPY@
+HAVE_WMEMMOVE = @HAVE_WMEMMOVE@
+HAVE_WMEMSET = @HAVE_WMEMSET@
+HAVE_XLOCALE_H = @HAVE_XLOCALE_H@
+HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
+IGNORE_UNUSED_LIBRARIES_CFLAGS = @IGNORE_UNUSED_LIBRARIES_CFLAGS@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@
+INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMULTITHREAD = @LIBMULTITHREAD@
+LIBOBJS = @LIBOBJS@
+LIBPTH = @LIBPTH@
+LIBPTH_PREFIX = @LIBPTH_PREFIX@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTHREAD = @LIBTHREAD@
+LIBTOOL = @LIBTOOL@
+LIB_BLKID = @LIB_BLKID@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBMULTITHREAD = @LTLIBMULTITHREAD@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBPTH = @LTLIBPTH@
+LTLIBTHREAD = @LTLIBTHREAD@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
+NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@
+NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
+NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@
+NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FCNTL_H = @NEXT_FCNTL_H@
+NEXT_GETOPT_H = @NEXT_GETOPT_H@
+NEXT_INTTYPES_H = @NEXT_INTTYPES_H@
+NEXT_LANGINFO_H = @NEXT_LANGINFO_H@
+NEXT_LOCALE_H = @NEXT_LOCALE_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@
+NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@
+NEXT_TIME_H = @NEXT_TIME_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PARTED_USABLE_TEST_DIR = @PARTED_USABLE_TEST_DIR@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CALLOC = @REPLACE_CALLOC@
+REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP = @REPLACE_DUP@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@
+REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FCNTL = @REPLACE_FCNTL@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FSTAT = @REPLACE_FSTAT@
+REPLACE_FSTATAT = @REPLACE_FSTATAT@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_FUTIMENS = @REPLACE_FUTIMENS@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETDELIM = @REPLACE_GETDELIM@
+REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@
+REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LINK = @REPLACE_LINK@
+REPLACE_LINKAT = @REPLACE_LINKAT@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_LSTAT = @REPLACE_LSTAT@
+REPLACE_MALLOC = @REPLACE_MALLOC@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MBTOWC = @REPLACE_MBTOWC@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKDIR = @REPLACE_MKDIR@
+REPLACE_MKFIFO = @REPLACE_MKFIFO@
+REPLACE_MKNOD = @REPLACE_MKNOD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_MKTIME = @REPLACE_MKTIME@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_OPEN = @REPLACE_OPEN@
+REPLACE_OPENAT = @REPLACE_OPENAT@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PREAD = @REPLACE_PREAD@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
+REPLACE_READ = @REPLACE_READ@
+REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_REALLOC = @REPLACE_REALLOC@
+REPLACE_REALPATH = @REPLACE_REALPATH@
+REPLACE_REMOVE = @REPLACE_REMOVE@
+REPLACE_RENAME = @REPLACE_RENAME@
+REPLACE_RENAMEAT = @REPLACE_RENAMEAT@
+REPLACE_RMDIR = @REPLACE_RMDIR@
+REPLACE_SETENV = @REPLACE_SETENV@
+REPLACE_SETLOCALE = @REPLACE_SETLOCALE@
+REPLACE_SLEEP = @REPLACE_SLEEP@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STAT = @REPLACE_STAT@
+REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRERROR_R = @REPLACE_STRERROR_R@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
+REPLACE_STRNDUP = @REPLACE_STRNDUP@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
+REPLACE_SYMLINK = @REPLACE_SYMLINK@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
+REPLACE_UNLINK = @REPLACE_UNLINK@
+REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
+REPLACE_UNSETENV = @REPLACE_UNSETENV@
+REPLACE_USLEEP = @REPLACE_USLEEP@
+REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCTOMB = @REPLACE_WCTOMB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SELINUX_LIBS = @SELINUX_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
+UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
+UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+YIELD_LIB = @YIELD_LIB@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+dist_man8_MANS = \
+       parted.8 \
+       partprobe.8
+
+MAINTAINERCLEANFILES = Makefile.in
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/C/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu doc/C/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+install-man8: $(dist_man8_MANS)
+       @$(NORMAL_INSTALL)
+       test -z "$(man8dir)" || $(MKDIR_P) "$(DESTDIR)$(man8dir)"
+       @list='$(dist_man8_MANS)'; test -n "$(man8dir)" || exit 0; \
+       { for i in $$list; do echo "$$i"; done; \
+       } | while read p; do \
+         if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; echo "$$p"; \
+       done | \
+       sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \
+             -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+       sed 'N;N;s,\n, ,g' | { \
+       list=; while read file base inst; do \
+         if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+           echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \
+           $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst" || exit $$?; \
+         fi; \
+       done; \
+       for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+       while read files; do \
+         test -z "$$files" || { \
+           echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man8dir)'"; \
+           $(INSTALL_DATA) $$files "$(DESTDIR)$(man8dir)" || exit $$?; }; \
+       done; }
+
+uninstall-man8:
+       @$(NORMAL_UNINSTALL)
+       @list='$(dist_man8_MANS)'; test -n "$(man8dir)" || exit 0; \
+       files=`{ for i in $$list; do echo "$$i"; done; \
+       } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \
+             -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+       test -z "$$files" || { \
+         echo " ( cd '$(DESTDIR)$(man8dir)' && rm -f" $$files ")"; \
+         cd "$(DESTDIR)$(man8dir)" && rm -f $$files; }
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(DISTFILES)
+       @list='$(MANS)'; if test -n "$$list"; then \
+         list=`for p in $$list; do \
+           if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+           if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
+         if test -n "$$list" && \
+           grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
+           echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
+           grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/         /' >&2; \
+           echo "       to fix them, install help2man, remove and regenerate the man pages;" >&2; \
+           echo "       typically \`make maintainer-clean' will remove them" >&2; \
+           exit 1; \
+         else :; fi; \
+       else :; fi
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+       $(MAKE) $(AM_MAKEFLAGS) \
+         top_distdir="$(top_distdir)" distdir="$(distdir)" \
+         dist-hook
+check-am: all-am
+check: check-am
+all-am: Makefile $(MANS)
+installdirs:
+       for dir in "$(DESTDIR)$(man8dir)"; do \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+       done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-man
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man: install-man8
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-man
+
+uninstall-man: uninstall-man8
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+       dist-hook distclean distclean-generic distclean-libtool \
+       distdir dvi dvi-am html html-am info info-am install \
+       install-am install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-man8 install-pdf install-pdf-am install-ps \
+       install-ps-am install-strip installcheck installcheck-am \
+       installdirs maintainer-clean maintainer-clean-generic \
+       mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+       ps ps-am uninstall uninstall-am uninstall-man uninstall-man8
+
+
+.PHONY: updatepo
+# Update the POT in srcdir
+# Make sure the update does not only consist in a new POT-Creation-Date
+# Don't do anything if $(srcdir) is read-only (i.e., for "make distcheck").
+updatepo:
+       cd $(srcdir); \
+       test -w . || exit 0; \
+       for name in $(dist_man8_MANS); do \
+               echo $$name; \
+               cp po/$$name.pot po/$$name.new.pot; \
+               po4a-updatepo -f man -m $$name -p po/$$name.new.pot; \
+               diff -I '^\"POT-Creation-Date: ' po/$$name.pot po/$$name.new.pot 2>&1 > /dev/null; \
+               if [ $$? ]; then \
+                       mv po/$$name.new.pot po/$$name.pot; \
+               else \
+                       rm -f po/$$name.new.pot; \
+               fi; \
+       done
+
+dist-hook: updatepo
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/doc/C/parted.8 b/doc/C/parted.8
new file mode 100644 (file)
index 0000000..f4b940c
--- /dev/null
@@ -0,0 +1,180 @@
+.TH PARTED 8 "2007 March 29" parted "GNU Parted Manual"
+.SH NAME
+GNU Parted \- a partition manipulation program
+.SH SYNOPSIS
+.B parted
+[options] [device [command [options...]...]]
+.SH DESCRIPTION
+.B parted
+is a disk partitioning and partition resizing program.  It allows you to
+create, destroy, resize, move and copy ext2, linux-swap, FAT, FAT32, and reiserfs
+partitions.  It can create, resize, and move Macintosh HFS partitions, as well as detect jfs,
+ntfs, ufs, and xfs partitions.  It is useful for creating space for new operating systems,
+reorganising disk usage, and copying data to new hard disks.
+.PP
+This manual page documents \fBparted\fP briefly.  Complete documentation is
+distributed with the package in GNU Info format; see near the bottom.
+.SH OPTIONS
+.TP
+.B -h, --help
+displays a help message
+.TP
+.B -l, --list
+lists partition layout on all block devices
+.TP
+.B -m, --machine
+displays machine parseable output
+.TP
+.B -s, --script
+never prompts for user intervention
+.TP
+.B -v, --version
+displays the version
+.TP
+.B -a \fIalignment-type\fP, --align \fIalignment-type\fP
+Set alignment for newly created partitions, valid alignment types are:
+.RS
+.IP none
+Use the minimum alignment allowed by the disk type.
+.IP cylinder
+Align partitions to cylinders.
+.IP minimal
+Use minimum alignment as given by the disk topology information. This and
+the opt value will use layout information provided by the disk to align the
+logical partition table addresses to actual physical blocks on the disks.
+The min value is the minimum aligment needed to align the partition properly to
+physical blocks, which avoids performance degradation.
+.IP optimal
+Use optimum alignment as given by the disk topology information. This
+aligns to a multiple of the physical block size in a way that guarantees
+optimal performance.
+.RE
+
+.SH COMMANDS
+.TP
+.B [device]
+The block device to be used.  When none is given, \fBparted\fP will use the
+first block device it finds.
+.TP
+.B [command [options]]
+Specifies the command to be executed.  If no command is given,
+.BR parted
+will present a command prompt.  Possible commands are:
+.RS
+.TP
+.B check \fIpartition\fP
+Do a simple check on \fIpartition\fP.
+.TP
+.B cp \fI[source-device]\fP \fIsource\fP \fIdest\fP
+Copy the \fIsource\fP partition's filesystem on \fIsource-device\fP (or the
+current device if no other device was specified) to the \fIdest\fP partition
+on the current device.
+.TP
+.B help \fI[command]\fP
+Print general help, or help on \fIcommand\fP if specified.
+.TP
+.B mkfs \fIpartition\fP \fIfs-type\fP
+Make a filesystem \fIfs-type\fP on \fIpartition\fP. \fIfs-type\fP can be one
+of "fat16", "fat32", "ext2", "linux-swap", or "reiserfs".
+.TP
+.B mklabel \fIlabel-type\fP
+Create a new disklabel (partition table) of \fIlabel-type\fP.
+\fIlabel-type\fP should be one of "bsd", "dvh", "gpt", "loop", "mac", "msdos",
+"pc98", or "sun".
+.TP
+.B mkpart \fIpart-type\fP \fI[fs-type]\fP \fIstart\fP \fIend\fP
+Make a \fIpart-type\fP partition with filesystem \fIfs-type\fP (if specified),
+beginning at \fIstart\fP and ending at \fIend\fP (by default in megabytes).
+\fIfs-type\fP can be one of
+"fat16", "fat32", "ext2", "HFS", "linux-swap", "NTFS", "reiserfs", or "ufs".
+\fIpart-type\fP should be one of "primary", "logical", or "extended".
+.TP
+.B mkpartfs \fIpart-type\fP \fIfs-type\fP \fIstart\fP \fIend\fP
+Make a \fIpart-type\fP partition with filesystem \fIfs-type\fP beginning at
+\fIstart\fP and ending at \fIend\fP (by default in megabytes).  Using
+this command is discouraged.  Instead use
+.BR mkpart
+to create an empty partition, and then use external tools like
+.BR mke2fs (8)
+to create the filesystem.
+.TP
+.B move \fIpartition\fP \fIstart\fP \fIend\fP
+Move \fIpartition\fP so that it begins at \fIstart\fP and ends at \fIend\fP.
+Note: \fBmove\fP never changes the minor number.
+.TP
+.B name \fIpartition\fP \fIname\fP
+Set the name of \fIpartition\fP to \fIname\fP. This option works only on Mac,
+PC98, and GPT disklabels. The name can be placed in quotes, if necessary.
+.TP
+.B print
+Display the partition table.
+.TP
+.B quit
+Exit from \fBparted\fP.
+.TP
+.B rescue \fIstart\fP \fIend\fP
+Rescue a lost partition that was located somewhere between \fIstart\fP and
+\fIend\fP.  If a partition is found, \fBparted\fP will ask if you want to
+create an entry for it in the partition table.
+.TP
+.B resize \fIpartition\fP \fIstart\fP \fIend\fP
+Resize the filesystem on \fIpartition\fP so that it begins at \fIstart\fP and
+ends at \fIend\fP (by default in megabytes).
+.TP
+.B rm \fIpartition\fP
+Delete \fIpartition\fP.
+.TP
+.B select \fIdevice\fP
+Choose \fIdevice\fP as the current device to edit. \fIdevice\fP should usually
+be a Linux hard disk device, but it can be a partition, software raid device,
+or an LVM logical volume if necessary.
+.TP
+.B set \fIpartition\fP \fIflag\fP \fIstate\fP
+Change the state of the \fIflag\fP on \fIpartition\fP to \fIstate\fP.
+Supported flags are: "boot", "root", "swap", "hidden", "raid", "lvm", "lba",
+"legacy_boot" and "palo".
+\fIstate\fP should be either "on" or "off".
+.TP
+.B unit \fIunit\fP
+Set \fIunit\fP as the unit to use when displaying locations and sizes,
+and for interpreting those given by the user when not suffixed with an
+explicit unit.  \fIunit\fP can be one of "s" (sectors), "B" (bytes), "kB",
+"MB", "GB", "TB", "%" (percentage of device size), "cyl" (cylinders),
+"chs" (cylinders, heads, sectors), or "compact" (megabytes for input,
+and a human-friendly form for output).
+.TP
+.B version
+Display version information and a copyright message.
+.RE
+.SH KNOWN ISSUES
+ext3 filesystem functionality does not currently work.  To manage ext3
+type filesystems use tools like
+.BR resize2fs (8)
+or
+.BR mke2fs (8).
+Note that the currently supported ext2 filesystem will be deprecated
+once ext3 support is finalized.  Further note that ext3 support will
+have limited functionality that is yet to be defined.  Use tools like
+.BR resize2fs (8)
+and
+.BR mke2fs (8)
+to manage these types of filesystems.
+
+To manually resize an ext3 filesystem and/or a partition use
+.BR resize2fs (8),
+.BR fdisk (8)
+or similar tools.  For LVM situations, you will need to use the LVM commands
+to resize the LVM elements.
+.SH REPORTING BUGS
+Report bugs to <bug-parted@gnu.org>
+.SH SEE ALSO
+.BR fdisk (8),
+.BR mkfs (8),
+The \fIparted\fP program is fully documented in the
+.BR info(1)
+format
+.IR "GNU partitioning software"
+manual.
+.SH AUTHOR
+This manual page was written by Timshel Knoll <timshel@debian.org>,
+for the Debian GNU/Linux system (but may be used by others).
diff --git a/doc/C/partprobe.8 b/doc/C/partprobe.8
new file mode 100644 (file)
index 0000000..6abf97d
--- /dev/null
@@ -0,0 +1,54 @@
+.\"                                      Hey, EMACS: -*- nroff -*-
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH PARTPROBE 8 "March 18, 2002" parted "GNU Parted Manual"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh        disable hyphenation
+.\" .hy        enable hyphenation
+.\" .ad l      left justify
+.\" .ad b      justify to both left and right margins
+.\" .nf        disable filling
+.\" .fi        enable filling
+.\" .br        insert line break
+.\" .sp <n>    insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+partprobe \- inform the OS of partition table changes
+.SH SYNOPSIS
+.B partprobe
+.RI [ -d ]
+.RI [ -s ]
+.RI [ devices... ]
+.SH DESCRIPTION
+This manual page documents briefly the
+.B partprobe
+command.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
+.\" respectively.
+\fBpartprobe\fP is a program that informs the operating system kernel of
+partition table changes, by requesting that the operating system re-read
+the partition table.
+.SH OPTIONS
+This program uses short UNIX style options.
+.TP
+.B \-d
+Don't update the kernel.
+.TP
+.B \-s
+Show a summary of devices and their partitions.
+.TP
+.B \-h
+Show summary of options.
+.TP
+.B \-v
+Show version of program.
+.SH SEE ALSO
+.BR parted (8).
+.SH AUTHOR
+This manual page was written by Timshel Knoll <timshel@debian.org>,
+for the Debian GNU/Linux system (but may be used by others).
diff --git a/doc/FAT b/doc/FAT
new file mode 100644 (file)
index 0000000..9a3a991
--- /dev/null
+++ b/doc/FAT
@@ -0,0 +1,759 @@
+===============================================================================
+               GNU Parted FAT file system documentation
+===============================================================================
+
+      by Andrew Clausen <clausen@gnu.org>
+
+      Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+
+      Permission is granted to copy, distribute and/or modify this document
+      under the terms of the GNU Free Documentation License, Version 1.3
+      or any later version published by the Free Software Foundation;
+      with the no Invariant Sections, with the no Front-Cover Texts, and
+      with no Back-Cover Texts.  A copy of the license is included in the
+      file, COPYING.DOC.
+
+
+CONTENTS
+--------
+
+               PART I - THE FAT FILE SYSTEM
+
+1      Introduction
+
+2      Overview
+
+3      The Boot Sector
+3.1    Data Layout
+3.2    Descriptions of Fields
+3.3    Calculating the ignored fields
+3.4    DOS/Windows bootstrap process
+
+4      The Info Sector
+4.1    Data Layout
+4.2    Descriptions of Fields
+
+5      File Allocation Tables
+
+6      Directory tree
+6.1    Directory entries
+
+               PART II - GNU PARTED'S FAT IMPLEMENTATION
+
+7      Resizing "issues"
+
+8      Overview of GNU Parted's Strategy
+
+===============================================================================
+                       PART I  -  THE FAT FILE SYSTEM
+===============================================================================
+
+-------------------------------------------------------------------------------
+1      INTRODUCTION
+-------------------------------------------------------------------------------
+
+This document describes the FAT filesystem, and GNU Parted's support for it.
+
+Unfortunately, there are no particularly good sources of information on the FAT
+filesystem.  The information here was deduced from the source code of about 10
+different programs, documentation from about 20 different sources and testing.
+There are many cases where documentation for FAT from various sources
+(including Microsoft) are misleading, or just plain wrong.  For us,
+documentation is correct if it matches the behaviour of Microsoft's
+implementation.
+
+
+-------------------------------------------------------------------------------
+2      OVERVIEW
+-------------------------------------------------------------------------------
+
+FAT is a filesystem that is mainly used by Microsoft DOS, Windows 95,
+Windows 98 and Windows 2000.  FAT also stands for File Allocation Table - a
+part of the FAT filesystem.
+
+FAT comes in three flavors: FAT12, FAT16 and FAT32.
+FAT12 is used on floppy disks, and REALLY old hard drives <32Mb.  FAT16 is
+typically used on small hard drives <500Mb, and is very inefficient for large
+hard drives.  FAT32 is used on hard drives >500Mb under Windows 95 OSR2 and
+later and Windows 2000.  These three flavors have important differences (not
+JUST an increase in the maximum possible number of clusters).  On FAT12 and
+FAT16 cluster size directly relates to the filesystem size: the number of
+clusters is always between 2041 and 4080 resp. 32761 and 65520.
+
+The FAT filesystem has these parts (on disk, in this order):
+  * a bootsector.  This contains all of the information about the filesystem
+- whether it's FAT12, FAT16 or FAT32, how big it is, etc.
+
+  * an information sector (FAT32 only).  This contains additional information
+that couldn't fit in the boot sector.
+
+  * file allocation tables (FATs).  There are usually two identical copies.
+This is used to store the sequence of clusters that make of files.  Essentially,
+if you want to know the number of the cluster that comes after cluster X
+in a file, you look up the number for X.  If X is a magic number, it means
+it's the end of the file.
+
+  * clusters.  The data inside files are stored in clusters.  Most directory
+information is stored in clusters (except the root directory in FAT12 and
+FAT16).   Clusters may be 1, 2, 4, 8, etc. sectors.  Clusters are numbered,
+counting from 2.
+
+  * directory tree.  The FAT filesystem has files and directories (no named
+pipes, links, or anything fancy like that), that are stored in clusters.  The
+root directory on FAT12 and FAT16 is stored separately.  In FAT32, the root
+directory is stored inside a normal cluster, just like everything else.
+
+
+-------------------------------------------------------------------------------
+3      THE BOOT SECTOR
+-------------------------------------------------------------------------------
+
+The boot sector contains all of the information about the filesystem
+- whether it's FAT12, FAT16 or FAT32, how big it is, etc.  It also contains
+the boot loader for the operating system, if there is an operating system
+on the file system.  It is always the first thing to appear in the filesystem
+- i.e. it's found at sector 0.
+
+A word of warning: while the values inside the boot sector will always be
+consistent with the file system, many of these values are not read by
+Microsoft's implementation - they are calculated independently.
+
+
+3.1    The Data Layout
+-------------------------------------------------------------------------------
+
+Taken from libparted/fs_fat/bootsector.h:
+
+struct __attribute__ ((packed)) _FatBootSector {
+        __u8    boot_jump[3];   /* 00: Boot strap short or near jump */
+        __u8    system_id[8];   /* 03: system name */
+        __u16   sector_size;    /* 0b: bytes per logical sector */
+        __u8    cluster_size;   /* 0d: sectors/cluster */
+        __u16   reserved;       /* 0e: reserved sectors */
+        __u8    fats;           /* 10: number of FATs */
+        __u16   dir_entries;    /* 11: number of root directory entries */
+        __u16   sectors;        /* 13: if 0, sector_count supersedes */
+        __u8    media;          /* 15: media code */
+        __u16   fat_length;     /* 16: sectors/FAT for FAT12/16 */
+        __u16   secs_track;     /* 18: sectors per track */
+        __u16   heads;          /* 1a: number of heads */
+        __u32   hidden;         /* 1c: hidden sectors (partition start) */
+        __u32   sector_count;   /* 20: no. of sectors (if sectors == 0) */
+
+        union __attribute__ ((packed)) {
+                /* FAT16 fields */
+                struct __attribute__ ((packed)) {
+                        __u8    drive_num;      /* 24: */
+                        __u8    empty_1;        /* 25: */
+                        __u8    ext_signature;  /* 26: always 0x29 */
+                        __u32   serial_number;  /* 27: */
+                        __u8    volume_name [11];       /* 2b: */
+                        __u8    fat_name [8];   /* 37: */
+                        __u8    boot_code[448]; /* 3f: Boot code (or message) */
+                } fat16;
+                /* FAT32 fields */
+                struct __attribute__ ((packed)) {
+                        __u32   fat_length;     /* 24: size of FAT in sectors */
+                        __u16   flags;          /* 28: bit8: fat mirroring, low4: active fat */
+                        __u16   version;        /* 2a: minor * 256 + major */
+                        __u32   root_dir_cluster;       /* 2c: */
+                        __u16   info_sector;    /* 30: */
+                        __u16   backup_sector;  /* 32: */
+                        __u8    empty_1 [12];   /* 34: */
+                        __u16   drive_num;      /* 40: */
+                        __u8    ext_signature;  /* 42: always 0x29 */
+                        __u32   serial_number;  /* 43: */
+                        __u8    volume_name [11];       /* 47: */
+                        __u8    fat_name [8];   /* 52: */
+                        __u8    boot_code[420]; /* 5a: Boot code (or message) */
+                } fat32;
+        } u;
+
+        __u16   boot_sign;      /* 1fe: always 0xAA55 */
+};
+
+
+3.2    Descriptions of Fields
+-------------------------------------------------------------------------------
+
+3.2.1  Fields common to FAT12, FAT16 and FAT32
+-----------------------------------------------
+        __u8    boot_jump[3];   /* 00: Boot strap short or near jump */
+This contains the Intel x86 instruction to "jump" to further down in the
+boot sector.  This is necessary, because on PC systems, the first sector of
+the disk is loaded and executed.  On hard disks of PC systems, the first
+sector of the disk is in fact the Master Boot Record - which contains the
+partition table.  The master boot record loads the first sector of the boot
+partition, so the end result is the same for floppy's and hard disks.
+
+
+       __u8    system_id[8];   /* 03: system name */
+This contains the name of the program or operatings system that created the
+file system.  For FAT32, it seems you must have "MSWIN4.1" here.
+If this is "MSDMF3.2" (afaik only the "MSDMF" is checked") the partition
+can't be written under Windows 9x, Windows NT and Windows 2000.  This is
+how Microsoft realizes read-only installation or distribution floppy disks.
+
+
+       __u16   sector_size;    /* 0b: bytes per logical sector */
+This is bizarre.  Sectors are always 512 bytes.  However, a "logical" sector
+is a hack that allows sectors to be bigger (a multiple of 512 bytes).  This
+is rarely used, and untested in GNU Parted at the moment.  (Side note: is
+it possible to use this to avoid requiring a cluster resize?)
+
+
+       __u8    cluster_size;   /* 0d: sectors/cluster */
+THIS IS IGNORED BY MICROSOFT'S IMPLEMENTATION OF FAT12 AND FAT16!  (See section
+3.3)   This contains the size of all clusters, given in sectors.  This value is
+"read-only".
+
+
+       __u16   reserved;       /* 0e: reserved sectors */
+The number of sectors before the file allocation tables begin.  i.e. The
+number of the first sector of the first file allocation table.
+
+
+       __u8    fats;           /* 10: number of FATs */
+The number of file allocation tables (usually 2).
+
+
+       __u16   dir_entries;    /* 11: number of root directory entries */
+The size of the root directory (FAT12 and FAT16 only), in "directory entries"
+(32 bytes).  The root directory is immediately after the FATs (FAT12 and
+FAT16 only).  The first cluster (i.e. cluster number 2) starts immediately
+after the root directory (or after the FATs for FAT32).
+
+
+       __u16   sectors;        /* 13: if 0, sector_count supersedes */
+THIS IS IGNORED BY MICROSOFT'S IMPLEMENTATION!  The total size of the file
+system.  If the file system is bigger than 65536 sectors, this is set to 0,
+and a 32 bit field is used instead.  Microsoft's implementation gets this
+values from hardware (for floppy disks), or the partition table (for hard
+disks), rather than reading it off disk.
+
+
+       __u8    media;          /* 15: media code */
+For hard disks, this should always be 0xf8.
+
+
+       __u16   fat_length;     /* 16: sectors/FAT for FAT12/16 */
+THIS IS IGNORED BY MICROSOFT'S IMPLEMENTATION!  (See section 3.3)  The size in
+sectors of each file allocation table (FAT12 and FAT16 only).  A 32-bit field
+is used for FAT32.  This value is "read-only".
+
+
+
+       __u16   secs_track;     /* 18: sectors per track */
+       __u16   heads;          /* 1a: number of heads */
+These should match the BIOS geometry.  The GNU Parted README file explains
+BIOS geometry.
+
+
+       __u32   hidden;         /* 1c: hidden sectors (partition start) */
+On a hard disk, this should be the number of sectors from the start of the
+head (in terms of BIOS geometry) to the start of the partition.  i.e. the
+S in the CHS partition start.
+
+
+       __u32   sector_count;   /* 20: no. of sectors (if sectors == 0) */
+The size of the file system in sectors (if sectors is 0).
+
+
+        __u16   boot_sign;      /* 1fe: always 0xAA55 */
+Boot sector signature.  Don't use this exclusively to detect FAT file systems!
+It's also the signature for partition table sectors (and it appears in the
+same place too!)  Idiots.
+
+3.2.2  Fields in FAT12 and FAT16
+---------------------------------
+
+        __u8    drive_num;      /* 24: */
+Always 0x80.
+
+
+        __u8    ext_signature;  /* 26: always 0x29 */
+Always 0x29.
+
+
+        __u32   serial_number;  /* 27: */
+Serial number: Used to detect media change on floppy disk and removable drives.
+
+
+        __u8    volume_name [11];       /* 2b: */
+The disk label.
+
+
+        __u8    fat_name [8];   /* 37: */
+"FAT12\0\0\0" or "FAT16\0\0\0".
+
+
+3.2.3  Fields in FAT32
+-----------------------
+
+        __u32   fat_length;     /* 24: size of FAT in sectors */
+The size in sectors of each file allocation table.
+
+
+        __u16   flags;          /* 28: bit8: fat mirroring, low4: active fat */
+No idea what these are.
+
+
+        __u16   version;        /* 2a: minor * 256 + major */
+Seems to be 0 (?)
+
+
+        __u32   root_dir_cluster;       /* 2c: */
+The number of the first cluster in the root directory.
+
+
+        __u16   info_sector;    /* 30: */
+The number of the information sector.
+
+
+        __u16   backup_sector;  /* 32: */
+The number of the backup of the boot sector (i.e. this sector).
+
+
+        __u16   drive_num;      /* 40: */
+Always 0x80.
+
+
+        __u8    ext_signature;  /* 42: always 0x29 */
+Always 0x29.
+
+
+        __u32   serial_number;  /* 43: */
+Serial number (for Echelon, or something)
+
+
+        __u8    volume_name [11];       /* 47: */
+The disk label.
+
+
+        __u8    fat_name [8];   /* 52: */
+"FAT32\0\0\0".
+
+
+3.3    Calculating the ignored fields
+-------------------------------------------------------------------------------
+The cluster_size and fat_length fields are ignored by Microsoft's
+implementation of FAT12 and FAT16, but NOT FAT32.  That is, they are written out
+correctly, but NOT READ IN.  (Note: if FAT32 file system is configured to
+have less than 65520 clusters, then Windows assumes it's FAT16)
+
+Since these values don't usually change unless you resize a filesystem, this
+causes no problems.  However, if you want to resize the filesystem, you have to
+calculate these values to what Microsoft calculates them to, from the size of
+the filesystem.  It took me 2 months to figure this out (I want to KILL
+somebody...)
+
+Here's the algorithm I came up with that seemed to match all my test data:
+(from libparted/fs_fat/calc.c)
+
+FatCluster
+fat_max_cluster_count (FatType fat_type) {
+        switch (fat_type) {
+                case FAT_TYPE_FAT12: return 0xff0;
+                case FAT_TYPE_FAT16: return 0xfff0;
+                case FAT_TYPE_FAT32: return 0x0ffffff0;
+        }
+        return 0;
+}
+
+FatCluster
+fat_min_cluster_count (FatType fat_type) {
+        switch (fat_type) {
+                case FAT_TYPE_FAT12:
+                case FAT_TYPE_FAT16:
+                        return fat_max_cluster_count (fat_type) / 2;
+
+                case FAT_TYPE_FAT32: return 0xfff0;
+        }
+        return 0;
+}
+
+static int
+calc_sizes (PedGeometry* geom, PedSector align, int cluster_size,
+            PedSector root_dir_sectors, FatCluster* out_cluster_count,
+            PedSector* out_fat_size, FatType fat_type)
+{
+        PedSector       data_fat_size;
+        PedSector       fat_sectors;
+        PedSector       cluster_sectors;
+        FatCluster      cluster_count;
+        int             i;
+
+        data_fat_size = geom->length - fat_min_reserved_sector_count (fat_type)
+                        - align;
+        if (fat_type == FAT_TYPE_FAT16)
+                data_fat_size -= root_dir_sectors;
+
+        fat_sectors = 0;
+        for (i = 0; i < 2; i++) {
+                if (fat_type == FAT_TYPE_FAT32)
+                        cluster_sectors = data_fat_size - fat_sectors;
+                else
+                        cluster_sectors = data_fat_size - 2 * fat_sectors;
+
+                cluster_count = cluster_sectors / (cluster_size / 512);
+                fat_sectors = div_round_up (cluster_count + 2,
+                                            entries_per_sector (fat_type));
+        }
+
+        cluster_sectors = data_fat_size - 2 * fat_sectors;
+        cluster_count = cluster_sectors / (cluster_size / 512);
+
+        if (cluster_count > fat_max_cluster_count (fat_type)
+            || cluster_count < fat_min_cluster_count (fat_type))
+                return 0;
+
+        *out_cluster_count = cluster_count;
+        *out_fat_size = fat_sectors;
+
+        return 1;
+}
+
+FIXME: this is the "trial and error" algorithm.  What happened to my simple,
+test one?
+
+If the implications of the above code aren't that clear, here are some of
+them:
+  * for FAT16, the minimum number of clusters is 32760.
+  * the cluster size is completely determined by the size of the file system,
+for FAT16.  That means, if a file system is to be resized, it is quite
+possible that the cluster size must be changed just to be compatible
+with Microsoft's implementation  (Linux, for example, doesn't calculate the
+numbers independently, so it would work fine.  So always test your code on
+Microsoft as well as Linux)
+
+
+3.4    DOS/Windows bootstrap process
+-------------------------------------------------------------------------------
+All of the information that follows is from me reverse-engineering different
+versions of Microsoft's boot sectors.  It's pretty weird code (as you can
+imagine...), so there might be mistakes here.
+       There are many different versions of the boot sector:
+* Windows 98/2000/ME FAT12/FAT16 (supports CHS and LBA)
+* Windows 98/2000/ME FAT32 (supports CHS and LBA)
+
+(1) The MBR, LILO, or whatever loads in the first sector of the FAT
+partition into 0000:7c00, and executes it.
+
+(2) The first sector of the FAT partition (the "boot sector") does:
+    (a) loads the Master Boot Record (sector 0 of the disk) using the
+    BIOS's CHS calls, and finds the boot partition.  If the boot partition
+    has the LBA flag marked, it writes 0xe to [bp+2] (0000:7c02).  The "read
+    sectors" function in the boot loader checks for 0xe here, and uses LBA if
+    it finds it, and CHS otherwise.
+
+    (b) If it is the FAT32 version of the boot sector, it loads sectors 1
+    through 3 of the partition (it finds this from the "hidden" field in the
+    FAT boot sector, that was loaded by the MBR/LILO) at address 0000:7e00, and
+    continues executing at 0000:8000.  Note: the FAT16 version doesn't require
+    any more sectors to be read (they crammed it all in!), and it goes
+    directly to step 3.
+
+(3) The code loads IO.SYS (starting at address 0000:0700), off the same
+partition, and executes it, beginning execution at 0070:0200.  (Note:
+According to the x86 real mode segmentation scheme, 0070:0200 refers to the
+same physical memory as 0000:0900)
+
+
+-------------------------------------------------------------------------------
+4      THE INFO SECTOR
+-------------------------------------------------------------------------------
+
+The info sector is used in FAT32 to store additional information about the
+file system.
+
+
+4.1    Data Layout
+-------------------------------------------------------------------------------
+
+struct __attribute__ ((packed)) _FatInfoSector {
+        __u32   signature_1;    /* should be 0x41615252 */
+        __u8    unused [480];
+        __u32   signature_2;    /* should be 0x61417272 */
+        __u32   free_clusters;
+        __u32   next_cluster;   /* most recently allocated cluster */
+        __u8    unused2 [0xe];
+        __u16   signature_3;    /* should be 0xaa55 */
+};
+
+
+4.2    Descriptions of Fields
+-------------------------------------------------------------------------------
+
+        __u32   signature_1;    /* should be 0x41615252 */
+Always 0x41615252  ("AaRR")
+
+
+        __u32   signature_2;    /* should be 0x61417272 */
+Always 0x61417272  ("aArr")
+
+
+        __u32   free_clusters;
+The number of free clusters.  This could be calculated by going through the
+FATs, but this is stored on shutdown to speed things up.
+
+
+        __u32   next_cluster;   /* most recently allocated cluster */
+This contains the number of the last cluster allocated.  This speeds up
+cluster allocation, because free clusters usually come in chunks, so you
+can scan right for free clusters in the FAT.
+
+
+        __u16   signature_3;    /* should be 0xaa55 */
+Always 0xaa55.
+
+
+-------------------------------------------------------------------------------
+5      FILE ALLOCATION TABLES
+-------------------------------------------------------------------------------
+
+File allocation table (FAT) is a strange name, come to think of it.  Perhaps it
+should be called cluster allocation table, or something (?).  Essentially,
+it is used to represent file chains (i.e. linked lists) for files and
+directories.  There are usually two FATs (one is a backup, and should be
+identical).
+
+Anyway, a FAT is essentially an array.  In FAT12, each entry is 12 bits,
+FAT16 - 16 bits, FAT32 - 32 bits.  Hence the names.
+
+The first byte of each FAT must match the "media" field in the boot sector.
+The rest of the first 2 entries are filled with 0xff.
+
+All remaining entries - from 2 onwards - correspond to a cluster.  i.e.
+the second entry corresponds to cluster 2.  Clusters are numbered from 2 onwards
+(i.e. there is no cluster 1).
+
+The number in each entry gives the number of the cluster that occurs next in
+the file chain (linked list).  However, there are a few magic numbers:
+
+  * unused (0).  Indicates the cluster is unused.
+  * end of file (0xff0 for FAT12, 0xfff0 for FAT16, 0x0ffffff0 for FAT32).
+Indicates this is the last cluster in the file or directory.  Obviouslly for
+FAT32, the number of clusters must be < 0x0ffffff0.  So it should be called
+FAT28, perhaps...
+  * bad cluster (0xff7 for FAT12, 0xfff7 for FAT16, 0x0ffffff7 for FAT32).
+Indicates the disk is physically damaged where the cluster is stored.
+
+
+-------------------------------------------------------------------------------
+6      DIRECTORY TREE
+-------------------------------------------------------------------------------
+
+The directory tree is simple: there are files and directories.  Files and
+directories are stored in clusters (except the root directory on FAT12 and
+FAT16).  Directories are essentially special files that contain directory
+entries.
+
+In FAT12 and FAT16, the root directory is stored immediately after the FATs.
+In FAT32, the first cluster of the root directory is given in the FAT.  (To
+get the second cluster - if there is one - you just look up the FAT)
+
+
+6.1    Directory Entries
+------------------------------------------------------------------------------
+Directories are made up of directory entries, each of which represent a file,
+a directory or part of a file name (the VFAT extension - YUCK!!!).
+
+Each directory (except the root directory) contains a '.' (this directory) and
+'..' (parent directory) entry.
+
+6.1.1  Fields
+--------------
+
+From libparted/fs_fat/fat.h:
+
+struct __attribute__ ((packed)) _FatDirEntry {
+        __u8            name[8];
+        __u8            extension[3];
+        __u8            attributes;
+        __u8            is_upper_case_name;
+        __u8            creation_time_low;      /* milliseconds */
+        __u16           creation_time_high;
+        __u16           creation_date;
+        __u16           access_date;
+        __u16           first_cluster_high;     /* for FAT32 */
+        __u16           time;
+        __u16           date;
+        __u16           first_cluster;
+        __u32           length;
+};
+
+6.1.2  Field Descriptions
+--------------------------
+
+        __u8            name[8];
+The first part of the file name.  Eg, for a file called README.TXT, this is
+README.  Files with names longer than 8 characters use the VFAT extension (not
+described here).  When a file is deleted, the first character is set to 0xe5.
+If the first character is 0x0, then the entire directory entry is unused.
+
+
+        __u8            extension[3];
+The last part of the file name.  Eg, for a file called README.TXT, this is TXT.
+This explains all those .HTM files around the place...
+
+
+        __u8            attributes;
+If this is 0x0f, then this directory entry is a VFAT entry, and stores part
+of a file name.  Otherwise, it's treated as various bit fields:
+
+               0x1             read-only
+               0x2             hidden
+               0x4             system
+               0x8             volume label
+               0x10            directory
+               0x20            archived
+
+
+        __u8            is_upper_case_name;
+A Microsoft cludge: create a file with 8.3 name BUT containing small letters
+(like ReadMe.Txt) which is treated as an LFN (long file name) and occupies
+three directory entries.  Now when you rename this file to all uppercase
+README.TXT,- under Windows NT 4 the then superfluous LFN-VFAT entries are
+removed, resulting in a smaller directory, but under Windows 9x the LFN-VFAT
+entries are just upd- and this flag is set.  Executing DEFRAG on such entries
+MIGHT then remove the superfluous LFN-VFAT entries and shrink the directory.
+
+
+        __u8            creation_time_low;      /* milliseconds */
+        __u16           creation_time_high;
+        __u16           creation_date;
+Creation time and date.  Not used wih MS-DOS <7.0!
+
+
+        __u16           access_date;
+Last access date.  Not used wih MS-DOS <7.0!
+
+
+        __u16           first_cluster_high;     /* for FAT32 */
+High 32 bits of the first cluster in the file or directory (FAT32 only)
+
+
+        __u16           time;
+        __u16           date;
+?
+
+
+        __u16           first_cluster;
+Low 16 bits of first cluster.
+
+
+        __u32           length;
+Length of file in bytes.
+
+
+
+===============================================================================
+               PART II - GNU PARTED'S FAT IMPLEMENTATION
+===============================================================================
+
+-------------------------------------------------------------------------------
+7      RESIZING "ISSUES"
+-------------------------------------------------------------------------------
+
+To resize a FAT file system, a program must:
+  * copy all used clusters that lie outside of the new partition onto free
+space on that partition.  The directory tree and FATs must be updated to
+reflect this.
+  * grow or shrink the file allocation table(s) to the size corresponding
+to the size of the partition.
+  * convert between FAT16 and FAT32 if necessary.  This involves:
+    - changing the form of the root directory (FAT16 has it's before the
+      clusters whereas FAT32 stores it in normal clusters).
+    - creating space for the backup boot sector and info sector.
+    - updating the directory tree to use 32 bit first cluster entries.
+  * align the start of the clusters (using the "reserved" field in the
+boot sector), so that the clusters that are common to the old and new
+partition can be preserved.
+  * re-number clusters.  e.g. if you chop out some clusters from the beginning
+(i.e. move the start forward), then the first cluster (i.e. number 2) will
+be refer to a different cluster on the disk.  The directory tree and FATs must
+be updated to reflect this.
+  * create a new boot sector (and the info sector and backup boot sector for
+FAT32)
+
+
+-------------------------------------------------------------------------------
+8      OVERVIEW OF GNU PARTED'S STRATEGY
+-------------------------------------------------------------------------------
+
+GNU Parted copies all clusters that are not accessible from the new file system
+(either because it lies outside the file system, or file system meta-data must
+reside there instead) to an accessible place.
+
+Since all clusters must be renumbered (in most cases), the entire directory
+tree must be updated.  However converting the directory tree from one numbering
+system to another would break the file system if it was interrupted halfway
+through.  Instead, GNU Parted duplicates the directory tree (except the root
+directory for FAT16) along with clusters that need to be copied because they
+lie outside the new file system.  The directory tree is duplicated at the same
+time as inaccessible clusters are.  The relevant function,
+needs_duplicating() in libparted/fs_fat/clstdup.c is:
+
+       static int
+       needs_duplicating (FatOpContext* ctx, FatCluster cluster)
+       {
+               FatSpecific*    fs_info = FAT_SPECIFIC (ctx->old_fs);
+
+               return (fs_info->fat_flag_map [cluster] == FAT_FLAG_FILE
+                       && !fat_op_context_map_static_cluster (ctx, cluster))
+                       || fs_info->fat_flag_map [cluster]
+                               == FAT_FLAG_DIRECTORY;
+       }
+
+
+
+A good overview of this implementation is in the fat_resize() function, in
+libparted/fs_fat/resize.c (slightly edited):
+
+       int
+       fat_resize (PedFileSystem* fs, PedGeometry* geom)
+       {
+               FatSpecific*    fs_info = FAT_SPECIFIC (fs);
+               FatSpecific*    new_fs_info;
+               FatOpContext*   ctx;
+               PedFileSystem*  new_fs;
+
+               ctx = create_resize_context (fs, geom);
+               if (!ctx)
+                       return 0;
+               new_fs = ctx->new_fs;
+               new_fs_info = FAT_SPECIFIC (new_fs);
+
+               if (!fat_duplicate_clusters (ctx))
+                       return 0;
+               if (fs_info->fat_type == FAT_TYPE_FAT16
+                               && new_fs_info->fat_type == FAT_TYPE_FAT32) {
+                       if (!alloc_root_dir (ctx))
+                               return 0;
+               }
+               if (!fat_construct_new_fat (ctx))
+                       return 0;
+               if (!fat_construct_dir_tree (ctx))
+                       return 0;
+               if (!fat_table_write_all (new_fs_info->fat, new_fs))
+                       return 0;
+
+               if (!fat_boot_sector_generate (&new_fs_info->boot_sector,
+                                              new_fs))
+                       return 0;
+               if (!fat_boot_sector_write (&new_fs_info->boot_sector, new_fs))
+                       return 0;
+               if (new_fs_info->fat_type == FAT_TYPE_FAT32) {
+                       if (!fat_info_sector_generate (
+                                       &new_fs_info->info_sector, new_fs))
+                               return 0;
+                       if (!fat_info_sector_write (&new_fs_info->info_sector,
+                                                   new_fs))
+                               return 0;
+               }
+
+               if (!resize_context_assimilate (ctx))
+                       return 0;
+
+               return 1;
+       }
diff --git a/doc/Makefile.am b/doc/Makefile.am
new file mode 100644 (file)
index 0000000..c2e35f5
--- /dev/null
@@ -0,0 +1,21 @@
+# C must be the first sub-directory because it contains the POT files.
+SUBDIRS = C pt_BR
+
+info_TEXINFOS = parted.texi
+MAKEINFO = makeinfo --no-split
+
+EXTRA_DIST = FAT               \
+                        USER.jp        \
+                        API            \
+                        fdl.texi       \
+                        parted-pt_BR.texi
+
+.PHONY: updatepo
+updatepo:
+       list='$(SUBDIRS)'; for dir in $$list; do \
+               $(MAKE) -C "$$dir" updatepo; \
+       done
+
+MAINTAINERCLEANFILES = Makefile.in \
+                       mdate-sh    \
+                       texinfo.tex
diff --git a/doc/Makefile.in b/doc/Makefile.in
new file mode 100644 (file)
index 0000000..3582a58
--- /dev/null
@@ -0,0 +1,1674 @@
+# Makefile.in generated by automake 1.11a from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in 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.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = doc
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+       $(srcdir)/stamp-vti $(srcdir)/version.texi
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+       $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argmatch.m4 \
+       $(top_srcdir)/m4/assert.m4 $(top_srcdir)/m4/btowc.m4 \
+       $(top_srcdir)/m4/calloc.m4 $(top_srcdir)/m4/canonicalize.m4 \
+       $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
+       $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/configmake.m4 \
+       $(top_srcdir)/m4/dirname.m4 \
+       $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+       $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/environ.m4 \
+       $(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
+       $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fclose.m4 \
+       $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/fcntl_h.m4 \
+       $(top_srcdir)/m4/fflush.m4 $(top_srcdir)/m4/fpending.m4 \
+       $(top_srcdir)/m4/fpurge.m4 $(top_srcdir)/m4/freading.m4 \
+       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/fsync.m4 \
+       $(top_srcdir)/m4/ftell.m4 $(top_srcdir)/m4/ftello.m4 \
+       $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
+       $(top_srcdir)/m4/langinfo_h.m4 $(top_srcdir)/m4/lcmessage.m4 \
+       $(top_srcdir)/m4/lib-ignore.m4 $(top_srcdir)/m4/lib-ld.m4 \
+       $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/localcharset.m4 \
+       $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \
+       $(top_srcdir)/m4/locale-tr.m4 $(top_srcdir)/m4/locale-zh.m4 \
+       $(top_srcdir)/m4/locale_h.m4 $(top_srcdir)/m4/localename.m4 \
+       $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/long-options.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
+       $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+       $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
+       $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+       $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbtowc.m4 \
+       $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+       $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/multiarch.m4 \
+       $(top_srcdir)/m4/nl_langinfo.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/nocrash.m4 $(top_srcdir)/m4/o-direct.m4 \
+       $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/priv-set.m4 \
+       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+       $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+       $(top_srcdir)/m4/read.m4 $(top_srcdir)/m4/readlink.m4 \
+       $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/regex.m4 \
+       $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+       $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/setlocale.m4 \
+       $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/ssize_t.m4 \
+       $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdarg.m4 \
+       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strdup.m4 \
+       $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/strerror_r.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+       $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtoll.m4 \
+       $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/symlink.m4 \
+       $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+       $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/thread.m4 \
+       $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/time_h.m4 \
+       $(top_srcdir)/m4/ungetc.m4 $(top_srcdir)/m4/unistd_h.m4 \
+       $(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkdir.m4 \
+       $(top_srcdir)/m4/usleep.m4 $(top_srcdir)/m4/version-etc.m4 \
+       $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \
+       $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
+       $(top_srcdir)/m4/wcrtomb.m4 $(top_srcdir)/m4/wctob.m4 \
+       $(top_srcdir)/m4/wctomb.m4 $(top_srcdir)/m4/wctype_h.m4 \
+       $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+       $(top_srcdir)/m4/xstrndup.m4 $(top_srcdir)/m4/xstrtol.m4 \
+       $(top_srcdir)/m4/yield.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+AM_V_DVIPS = $(am__v_DVIPS_$(V))
+am__v_DVIPS_ = $(am__v_DVIPS_$(AM_DEFAULT_VERBOSITY))
+am__v_DVIPS_0 = @echo "  DVIPS   " $@;
+AM_V_MAKEINFO = $(am__v_MAKEINFO_$(V))
+am__v_MAKEINFO_ = $(am__v_MAKEINFO_$(AM_DEFAULT_VERBOSITY))
+am__v_MAKEINFO_0 = @echo "  MAKEINFO" $@;
+AM_V_INFOHTML = $(am__v_INFOHTML_$(V))
+am__v_INFOHTML_ = $(am__v_INFOHTML_$(AM_DEFAULT_VERBOSITY))
+am__v_INFOHTML_0 = @echo "  INFOHTML" $@;
+AM_V_TEXI2DVI = $(am__v_TEXI2DVI_$(V))
+am__v_TEXI2DVI_ = $(am__v_TEXI2DVI_$(AM_DEFAULT_VERBOSITY))
+am__v_TEXI2DVI_0 = @echo "  TEXI2DVI" $@;
+AM_V_TEXI2PDF = $(am__v_TEXI2PDF_$(V))
+am__v_TEXI2PDF_ = $(am__v_TEXI2PDF_$(AM_DEFAULT_VERBOSITY))
+am__v_TEXI2PDF_0 = @echo "  TEXI2PDF" $@;
+AM_V_texinfo = $(am__v_texinfo_$(V))
+am__v_texinfo_ = $(am__v_texinfo_$(AM_DEFAULT_VERBOSITY))
+am__v_texinfo_0 = -q
+AM_V_texidevnull = $(am__v_texidevnull_$(V))
+am__v_texidevnull_ = $(am__v_texidevnull_$(AM_DEFAULT_VERBOSITY))
+am__v_texidevnull_0 = > /dev/null
+INFO_DEPS = $(srcdir)/parted.info
+TEXINFO_TEX = $(top_srcdir)/build-aux/texinfo.tex
+am__TEXINFO_TEX_DIR = $(top_srcdir)/build-aux
+DVIS = parted.dvi
+PDFS = parted.pdf
+PSS = parted.ps
+HTMLS = parted.html
+TEXINFOS = parted.texi
+TEXI2DVI = texi2dvi
+TEXI2PDF = $(TEXI2DVI) --pdf --batch
+MAKEINFOHTML = $(MAKEINFO) --html
+AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
+DVIPS = dvips
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+       html-recursive info-recursive install-data-recursive \
+       install-dvi-recursive install-exec-recursive \
+       install-html-recursive install-info-recursive \
+       install-pdf-recursive install-ps-recursive install-recursive \
+       installcheck-recursive installdirs-recursive pdf-recursive \
+       ps-recursive uninstall-recursive
+am__installdirs = "$(DESTDIR)$(infodir)"
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
+  distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+       $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+       distdir
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+pkglibexecdir = @pkglibexecdir@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+BUILDINFO = @BUILDINFO@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHECK_CFLAGS = @CHECK_CFLAGS@
+CHECK_LIBS = @CHECK_LIBS@
+CONFIG_INCLUDE = @CONFIG_INCLUDE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DYNAMIC_LOADING = @DYNAMIC_LOADING@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENABLE_DEVICE_MAPPER = @ENABLE_DEVICE_MAPPER@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FACCESSAT = @GNULIB_FACCESSAT@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCHMODAT = @GNULIB_FCHMODAT@
+GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FCNTL = @GNULIB_FCNTL@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FGETC = @GNULIB_FGETC@
+GNULIB_FGETS = @GNULIB_FGETS@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREAD = @GNULIB_FREAD@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSCANF = @GNULIB_FSCANF@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSTATAT = @GNULIB_FSTATAT@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FUTIMENS = @GNULIB_FUTIMENS@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETC = @GNULIB_GETC@
+GNULIB_GETCHAR = @GNULIB_GETCHAR@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETGROUPS = @GNULIB_GETGROUPS@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETS = @GNULIB_GETS@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
+GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_ISWBLANK = @GNULIB_ISWBLANK@
+GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@
+GNULIB_LCHMOD = @GNULIB_LCHMOD@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LINKAT = @GNULIB_LINKAT@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_LSTAT = @GNULIB_LSTAT@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MBTOWC = @GNULIB_MBTOWC@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDIRAT = @GNULIB_MKDIRAT@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKFIFO = @GNULIB_MKFIFO@
+GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@
+GNULIB_MKNOD = @GNULIB_MKNOD@
+GNULIB_MKNODAT = @GNULIB_MKNODAT@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@
+GNULIB_MKTIME = @GNULIB_MKTIME@
+GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@
+GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@
+GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_OPEN = @GNULIB_OPEN@
+GNULIB_OPENAT = @GNULIB_OPENAT@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE = @GNULIB_PIPE@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_PREAD = @GNULIB_PREAD@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READ = @GNULIB_READ@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_READLINKAT = @GNULIB_READLINKAT@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_REALPATH = @GNULIB_REALPATH@
+GNULIB_REMOVE = @GNULIB_REMOVE@
+GNULIB_RENAME = @GNULIB_RENAME@
+GNULIB_RENAMEAT = @GNULIB_RENAMEAT@
+GNULIB_RMDIR = @GNULIB_RMDIR@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SETLOCALE = @GNULIB_SETLOCALE@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STAT = @GNULIB_STAT@
+GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRERROR_R = @GNULIB_STRERROR_R@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRPTIME = @GNULIB_STRPTIME@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_SYMLINK = @GNULIB_SYMLINK@
+GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
+GNULIB_TIMEGM = @GNULIB_TIMEGM@
+GNULIB_TIME_R = @GNULIB_TIME_R@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
+GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
+GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNLINK = @GNULIB_UNLINK@
+GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_USLEEP = @GNULIB_USLEEP@
+GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VFSCANF = @GNULIB_VFSCANF@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSCANF = @GNULIB_VSCANF@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCPCPY = @GNULIB_WCPCPY@
+GNULIB_WCPNCPY = @GNULIB_WCPNCPY@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@
+GNULIB_WCSCAT = @GNULIB_WCSCAT@
+GNULIB_WCSCHR = @GNULIB_WCSCHR@
+GNULIB_WCSCMP = @GNULIB_WCSCMP@
+GNULIB_WCSCOLL = @GNULIB_WCSCOLL@
+GNULIB_WCSCPY = @GNULIB_WCSCPY@
+GNULIB_WCSCSPN = @GNULIB_WCSCSPN@
+GNULIB_WCSDUP = @GNULIB_WCSDUP@
+GNULIB_WCSLEN = @GNULIB_WCSLEN@
+GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@
+GNULIB_WCSNCAT = @GNULIB_WCSNCAT@
+GNULIB_WCSNCMP = @GNULIB_WCSNCMP@
+GNULIB_WCSNCPY = @GNULIB_WCSNCPY@
+GNULIB_WCSNLEN = @GNULIB_WCSNLEN@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSPBRK = @GNULIB_WCSPBRK@
+GNULIB_WCSRCHR = @GNULIB_WCSRCHR@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCSSPN = @GNULIB_WCSSPN@
+GNULIB_WCSSTR = @GNULIB_WCSSTR@
+GNULIB_WCSTOK = @GNULIB_WCSTOK@
+GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@
+GNULIB_WCSXFRM = @GNULIB_WCSXFRM@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCTOMB = @GNULIB_WCTOMB@
+GNULIB_WCTRANS = @GNULIB_WCTRANS@
+GNULIB_WCTYPE = @GNULIB_WCTYPE@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WMEMCHR = @GNULIB_WMEMCHR@
+GNULIB_WMEMCMP = @GNULIB_WMEMCMP@
+GNULIB_WMEMCPY = @GNULIB_WMEMCPY@
+GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@
+GNULIB_WMEMSET = @GNULIB_WMEMSET@
+GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
+HAVE_CHOWN = @HAVE_CHOWN@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@
+HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SETENV = @HAVE_DECL_SETENV@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@
+HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_DUPLOCALE = @HAVE_DUPLOCALE@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
+HAVE_FCHMODAT = @HAVE_FCHMODAT@
+HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
+HAVE_FCNTL = @HAVE_FCNTL@
+HAVE_FEATURES_H = @HAVE_FEATURES_H@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSTATAT = @HAVE_FSTATAT@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_FUTIMENS = @HAVE_FUTIMENS@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETGROUPS = @HAVE_GETGROUPS@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETLOGIN = @HAVE_GETLOGIN@
+HAVE_GETOPT_H = @HAVE_GETOPT_H@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
+HAVE_GRANTPT = @HAVE_GRANTPT@
+HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWBLANK = @HAVE_ISWBLANK@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
+HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
+HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
+HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
+HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
+HAVE_LCHMOD = @HAVE_LCHMOD@
+HAVE_LCHOWN = @HAVE_LCHOWN@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_LSTAT = @HAVE_LSTAT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSLEN = @HAVE_MBSLEN@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMCHR = @HAVE_MEMCHR@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDIRAT = @HAVE_MKDIRAT@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKFIFO = @HAVE_MKFIFO@
+HAVE_MKFIFOAT = @HAVE_MKFIFOAT@
+HAVE_MKNOD = @HAVE_MKNOD@
+HAVE_MKNODAT = @HAVE_MKNODAT@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
+HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
+HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
+HAVE_OPENAT = @HAVE_OPENAT@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PIPE = @HAVE_PIPE@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PWRITE = @HAVE_PWRITE@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_READLINKAT = @HAVE_READLINKAT@
+HAVE_REALPATH = @HAVE_REALPATH@
+HAVE_RENAMEAT = @HAVE_RENAMEAT@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRPTIME = @HAVE_STRPTIME@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYMLINK = @HAVE_SYMLINK@
+HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_TIMEGM = @HAVE_TIMEGM@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_USLEEP = @HAVE_USLEEP@
+HAVE_UTIMENSAT = @HAVE_UTIMENSAT@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCPCPY = @HAVE_WCPCPY@
+HAVE_WCPNCPY = @HAVE_WCPNCPY@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSCASECMP = @HAVE_WCSCASECMP@
+HAVE_WCSCAT = @HAVE_WCSCAT@
+HAVE_WCSCHR = @HAVE_WCSCHR@
+HAVE_WCSCMP = @HAVE_WCSCMP@
+HAVE_WCSCOLL = @HAVE_WCSCOLL@
+HAVE_WCSCPY = @HAVE_WCSCPY@
+HAVE_WCSCSPN = @HAVE_WCSCSPN@
+HAVE_WCSDUP = @HAVE_WCSDUP@
+HAVE_WCSLEN = @HAVE_WCSLEN@
+HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@
+HAVE_WCSNCAT = @HAVE_WCSNCAT@
+HAVE_WCSNCMP = @HAVE_WCSNCMP@
+HAVE_WCSNCPY = @HAVE_WCSNCPY@
+HAVE_WCSNLEN = @HAVE_WCSNLEN@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSPBRK = @HAVE_WCSPBRK@
+HAVE_WCSRCHR = @HAVE_WCSRCHR@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCSSPN = @HAVE_WCSSPN@
+HAVE_WCSSTR = @HAVE_WCSSTR@
+HAVE_WCSTOK = @HAVE_WCSTOK@
+HAVE_WCSWIDTH = @HAVE_WCSWIDTH@
+HAVE_WCSXFRM = @HAVE_WCSXFRM@
+HAVE_WCTRANS_T = @HAVE_WCTRANS_T@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WCTYPE_T = @HAVE_WCTYPE_T@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WMEMCHR = @HAVE_WMEMCHR@
+HAVE_WMEMCMP = @HAVE_WMEMCMP@
+HAVE_WMEMCPY = @HAVE_WMEMCPY@
+HAVE_WMEMMOVE = @HAVE_WMEMMOVE@
+HAVE_WMEMSET = @HAVE_WMEMSET@
+HAVE_XLOCALE_H = @HAVE_XLOCALE_H@
+HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
+IGNORE_UNUSED_LIBRARIES_CFLAGS = @IGNORE_UNUSED_LIBRARIES_CFLAGS@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@
+INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMULTITHREAD = @LIBMULTITHREAD@
+LIBOBJS = @LIBOBJS@
+LIBPTH = @LIBPTH@
+LIBPTH_PREFIX = @LIBPTH_PREFIX@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTHREAD = @LIBTHREAD@
+LIBTOOL = @LIBTOOL@
+LIB_BLKID = @LIB_BLKID@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBMULTITHREAD = @LTLIBMULTITHREAD@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBPTH = @LTLIBPTH@
+LTLIBTHREAD = @LTLIBTHREAD@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = makeinfo --no-split
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
+NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@
+NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
+NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@
+NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FCNTL_H = @NEXT_FCNTL_H@
+NEXT_GETOPT_H = @NEXT_GETOPT_H@
+NEXT_INTTYPES_H = @NEXT_INTTYPES_H@
+NEXT_LANGINFO_H = @NEXT_LANGINFO_H@
+NEXT_LOCALE_H = @NEXT_LOCALE_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@
+NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@
+NEXT_TIME_H = @NEXT_TIME_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PARTED_USABLE_TEST_DIR = @PARTED_USABLE_TEST_DIR@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CALLOC = @REPLACE_CALLOC@
+REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP = @REPLACE_DUP@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@
+REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FCNTL = @REPLACE_FCNTL@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FSTAT = @REPLACE_FSTAT@
+REPLACE_FSTATAT = @REPLACE_FSTATAT@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_FUTIMENS = @REPLACE_FUTIMENS@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETDELIM = @REPLACE_GETDELIM@
+REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@
+REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LINK = @REPLACE_LINK@
+REPLACE_LINKAT = @REPLACE_LINKAT@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_LSTAT = @REPLACE_LSTAT@
+REPLACE_MALLOC = @REPLACE_MALLOC@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MBTOWC = @REPLACE_MBTOWC@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKDIR = @REPLACE_MKDIR@
+REPLACE_MKFIFO = @REPLACE_MKFIFO@
+REPLACE_MKNOD = @REPLACE_MKNOD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_MKTIME = @REPLACE_MKTIME@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_OPEN = @REPLACE_OPEN@
+REPLACE_OPENAT = @REPLACE_OPENAT@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PREAD = @REPLACE_PREAD@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
+REPLACE_READ = @REPLACE_READ@
+REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_REALLOC = @REPLACE_REALLOC@
+REPLACE_REALPATH = @REPLACE_REALPATH@
+REPLACE_REMOVE = @REPLACE_REMOVE@
+REPLACE_RENAME = @REPLACE_RENAME@
+REPLACE_RENAMEAT = @REPLACE_RENAMEAT@
+REPLACE_RMDIR = @REPLACE_RMDIR@
+REPLACE_SETENV = @REPLACE_SETENV@
+REPLACE_SETLOCALE = @REPLACE_SETLOCALE@
+REPLACE_SLEEP = @REPLACE_SLEEP@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STAT = @REPLACE_STAT@
+REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRERROR_R = @REPLACE_STRERROR_R@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
+REPLACE_STRNDUP = @REPLACE_STRNDUP@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
+REPLACE_SYMLINK = @REPLACE_SYMLINK@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
+REPLACE_UNLINK = @REPLACE_UNLINK@
+REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
+REPLACE_UNSETENV = @REPLACE_UNSETENV@
+REPLACE_USLEEP = @REPLACE_USLEEP@
+REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCTOMB = @REPLACE_WCTOMB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SELINUX_LIBS = @SELINUX_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
+UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
+UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+YIELD_LIB = @YIELD_LIB@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# C must be the first sub-directory because it contains the POT files.
+SUBDIRS = C pt_BR
+info_TEXINFOS = parted.texi
+EXTRA_DIST = FAT               \
+                        USER.jp        \
+                        API            \
+                        fdl.texi       \
+                        parted-pt_BR.texi
+
+MAINTAINERCLEANFILES = Makefile.in \
+                       mdate-sh    \
+                       texinfo.tex
+
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .dvi .html .info .pdf .ps .texi
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu doc/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+.texi.info:
+       $(AM_V_MAKEINFO)restore=: && backupdir="$(am__leading_dot)am$$$$" && \
+       am__cwd=`pwd` && $(am__cd) $(srcdir) && \
+       rm -rf $$backupdir && mkdir $$backupdir && \
+       if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
+         for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
+           if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
+         done; \
+       else :; fi && \
+       cd "$$am__cwd"; \
+       if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
+        -o $@ $<; \
+       then \
+         rc=0; \
+         $(am__cd) $(srcdir); \
+       else \
+         rc=$$?; \
+         $(am__cd) $(srcdir) && \
+         $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
+       fi; \
+       rm -rf $$backupdir; exit $$rc
+
+.texi.dvi:
+       $(AM_V_TEXI2DVI)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+       MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
+       $(TEXI2DVI) $(AM_V_texinfo) $< $(AM_V_texidevnull)
+
+.texi.pdf:
+       $(AM_V_TEXI2PDF)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+       MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
+       $(TEXI2PDF) $(AM_V_texinfo) $< $(AM_V_texidevnull)
+
+.texi.html:
+       $(AM_V_MAKEINFO)rm -rf $(@:.html=.htp)
+       $(AM_V_at)if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
+        -o $(@:.html=.htp) $<; \
+       then \
+         rm -rf $@; \
+         if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
+           mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \
+       else \
+         if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
+           rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \
+         exit 1; \
+       fi
+$(srcdir)/parted.info: parted.texi $(srcdir)/version.texi
+parted.dvi: parted.texi $(srcdir)/version.texi
+parted.pdf: parted.texi $(srcdir)/version.texi
+parted.html: parted.texi $(srcdir)/version.texi
+$(srcdir)/version.texi:  $(srcdir)/stamp-vti
+$(srcdir)/stamp-vti: parted.texi $(top_srcdir)/configure
+       @(dir=.; test -f ./parted.texi || dir=$(srcdir); \
+       set `$(SHELL) $(top_srcdir)/build-aux/mdate-sh $$dir/parted.texi`; \
+       echo "@set UPDATED $$1 $$2 $$3"; \
+       echo "@set UPDATED-MONTH $$2 $$3"; \
+       echo "@set EDITION $(VERSION)"; \
+       echo "@set VERSION $(VERSION)") > vti.tmp
+       @cmp -s vti.tmp $(srcdir)/version.texi \
+         || (echo "Updating $(srcdir)/version.texi"; \
+             cp vti.tmp $(srcdir)/version.texi)
+       -@rm -f vti.tmp
+       @cp $(srcdir)/version.texi $@
+
+mostlyclean-vti:
+       -rm -f vti.tmp
+
+maintainer-clean-vti:
+       -rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi
+.dvi.ps:
+       $(AM_V_DVIPS)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+       $(DVIPS) $(AM_V_texinfo) -o $@ $<
+
+uninstall-dvi-am:
+       @$(NORMAL_UNINSTALL)
+       @list='$(DVIS)'; test -n "$(dvidir)" || list=; \
+       for p in $$list; do \
+         $(am__strip_dir) \
+         echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \
+         rm -f "$(DESTDIR)$(dvidir)/$$f"; \
+       done
+
+uninstall-html-am:
+       @$(NORMAL_UNINSTALL)
+       @list='$(HTMLS)'; test -n "$(htmldir)" || list=; \
+       for p in $$list; do \
+         $(am__strip_dir) \
+         echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \
+         rm -rf "$(DESTDIR)$(htmldir)/$$f"; \
+       done
+
+uninstall-info-am:
+       @$(PRE_UNINSTALL)
+       @if test -d '$(DESTDIR)$(infodir)' && \
+           (install-info --version && \
+            install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
+         list='$(INFO_DEPS)'; \
+         for file in $$list; do \
+           relfile=`echo "$$file" | sed 's|^.*/||'`; \
+           echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \
+           if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \
+           then :; else test ! -f "$(DESTDIR)$(infodir)/$$relfile" || exit 1; fi; \
+         done; \
+       else :; fi
+       @$(NORMAL_UNINSTALL)
+       @list='$(INFO_DEPS)'; \
+       for file in $$list; do \
+         relfile=`echo "$$file" | sed 's|^.*/||'`; \
+         relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \
+         (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \
+            echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \
+            rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \
+          else :; fi); \
+       done
+
+uninstall-pdf-am:
+       @$(NORMAL_UNINSTALL)
+       @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
+       for p in $$list; do \
+         $(am__strip_dir) \
+         echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \
+         rm -f "$(DESTDIR)$(pdfdir)/$$f"; \
+       done
+
+uninstall-ps-am:
+       @$(NORMAL_UNINSTALL)
+       @list='$(PSS)'; test -n "$(psdir)" || list=; \
+       for p in $$list; do \
+         $(am__strip_dir) \
+         echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \
+         rm -f "$(DESTDIR)$(psdir)/$$f"; \
+       done
+
+dist-info: $(INFO_DEPS)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       list='$(INFO_DEPS)'; \
+       for base in $$list; do \
+         case $$base in \
+           $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \
+         esac; \
+         if test -f $$base; then d=.; else d=$(srcdir); fi; \
+         base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \
+         for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \
+           if test -f $$file; then \
+             relfile=`expr "$$file" : "$$d/\(.*\)"`; \
+             test -f "$(distdir)/$$relfile" || \
+               cp -p $$file "$(distdir)/$$relfile"; \
+           else :; fi; \
+         done; \
+       done
+
+mostlyclean-aminfo:
+       -rm -rf parted.aux parted.cp parted.cps parted.fn parted.fns parted.ky \
+         parted.kys parted.log parted.pg parted.pgs parted.tmp \
+         parted.toc parted.tp parted.tps parted.vr parted.vrs
+
+clean-aminfo:
+       -test -z "parted.dvi parted.pdf parted.ps parted.html" \
+       || rm -rf parted.dvi parted.pdf parted.ps parted.html
+
+maintainer-clean-aminfo:
+       @list='$(INFO_DEPS)'; for i in $$list; do \
+         i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \
+         echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \
+         rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \
+       done
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+       @fail= failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+       @fail= failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       rev=''; for subdir in $$list; do \
+         if test "$$subdir" = "."; then :; else \
+           rev="$$subdir $$rev"; \
+         fi; \
+       done; \
+       rev="$$rev ."; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+ctags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+       done
+cscopelist-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \
+       done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+         empty_fix=.; \
+       else \
+         include_option=--include; \
+         empty_fix=; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test ! -f $$subdir/TAGS || \
+             set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -d "$(distdir)/$$subdir" \
+           || $(MKDIR_P) "$(distdir)/$$subdir" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+           $(am__relativize); \
+           new_distdir=$$reldir; \
+           dir1=$$subdir; dir2="$(top_distdir)"; \
+           $(am__relativize); \
+           new_top_distdir=$$reldir; \
+           echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+           echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+           ($(am__cd) $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$$new_top_distdir" \
+               distdir="$$new_distdir" \
+               am__remove_distdir=: \
+               am__skip_length_check=: \
+               am__skip_mode_fix=: \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+       $(MAKE) $(AM_MAKEFLAGS) \
+         top_distdir="$(top_distdir)" distdir="$(distdir)" \
+         dist-info
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(INFO_DEPS)
+installdirs: installdirs-recursive
+installdirs-am:
+       for dir in "$(DESTDIR)$(infodir)"; do \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+       done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-recursive
+
+clean-am: clean-aminfo clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am: $(DVIS)
+
+html: html-recursive
+
+html-am: $(HTMLS)
+
+info: info-recursive
+
+info-am: $(INFO_DEPS)
+
+install-data-am: install-info-am
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am: $(DVIS)
+       @$(NORMAL_INSTALL)
+       test -z "$(dvidir)" || $(MKDIR_P) "$(DESTDIR)$(dvidir)"
+       @list='$(DVIS)'; test -n "$(dvidir)" || list=; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dvidir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \
+       done
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am: $(HTMLS)
+       @$(NORMAL_INSTALL)
+       test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)"
+       @list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \
+       for p in $$list; do \
+         if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         $(am__strip_dir) \
+         if test -d "$$d$$p"; then \
+           echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \
+           $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \
+           echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \
+           $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \
+         else \
+           list2="$$list2 $$d$$p"; \
+         fi; \
+       done; \
+       test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \
+       done; }
+install-info: install-info-recursive
+
+install-info-am: $(INFO_DEPS)
+       @$(NORMAL_INSTALL)
+       test -z "$(infodir)" || $(MKDIR_P) "$(DESTDIR)$(infodir)"
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
+       for file in $$list; do \
+         case $$file in \
+           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+         esac; \
+         if test -f $$file; then d=.; else d=$(srcdir); fi; \
+         file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \
+         for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \
+                      $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \
+           if test -f $$ifile; then \
+             echo "$$ifile"; \
+           else : ; fi; \
+         done; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done
+       @$(POST_INSTALL)
+       @if (install-info --version && \
+            install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
+         list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
+         for file in $$list; do \
+           relfile=`echo "$$file" | sed 's|^.*/||'`; \
+           echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\
+           install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\
+         done; \
+       else : ; fi
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am: $(PDFS)
+       @$(NORMAL_INSTALL)
+       test -z "$(pdfdir)" || $(MKDIR_P) "$(DESTDIR)$(pdfdir)"
+       @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done
+install-ps: install-ps-recursive
+
+install-ps-am: $(PSS)
+       @$(NORMAL_INSTALL)
+       test -z "$(psdir)" || $(MKDIR_P) "$(DESTDIR)$(psdir)"
+       @list='$(PSS)'; test -n "$(psdir)" || list=; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(psdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-aminfo \
+       maintainer-clean-generic maintainer-clean-vti
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-aminfo mostlyclean-generic \
+       mostlyclean-libtool mostlyclean-vti
+
+pdf: pdf-recursive
+
+pdf-am: $(PDFS)
+
+ps: ps-recursive
+
+ps-am: $(PSS)
+
+uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \
+       uninstall-pdf-am uninstall-ps-am
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) \
+       cscopelist-recursive ctags-recursive install-am install-strip \
+       tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+       all all-am check check-am clean clean-aminfo clean-generic \
+       clean-libtool cscopelist cscopelist-recursive ctags \
+       ctags-recursive dist-info distclean distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs installdirs-am maintainer-clean \
+       maintainer-clean-aminfo maintainer-clean-generic \
+       maintainer-clean-vti mostlyclean mostlyclean-aminfo \
+       mostlyclean-generic mostlyclean-libtool mostlyclean-vti pdf \
+       pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
+       uninstall-dvi-am uninstall-html-am uninstall-info-am \
+       uninstall-pdf-am uninstall-ps-am
+
+
+.PHONY: updatepo
+updatepo:
+       list='$(SUBDIRS)'; for dir in $$list; do \
+               $(MAKE) -C "$$dir" updatepo; \
+       done
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/doc/USER.jp b/doc/USER.jp
new file mode 100644 (file)
index 0000000..35ede18
--- /dev/null
@@ -0,0 +1,1786 @@
+==============================================================================
+                       GNU Parted ÆüËܸìÈÇ
+==============================================================================
+
+      written by Andrew Clausen <clausen@gnu.org>
+      translated by Yoshinori K. Okuji <okuji@gnu.org>
+
+      Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
+      Copyright (C) 2001 Yoshinori K. Okuji
+
+      Permission is granted to copy, distribute and/or modify this document
+      under the terms of the GNU Free Documentation License, Version 1.3
+      or any later version published by the Free Software Foundation;
+      with the no Invariant Sections, with the no Front-Cover Texts, and
+      with no Back-Cover Texts.  A copy of the license is included in the
+      file, COPYING.DOC.
+
+
+Ìܼ¡
+--------
+
+1      Æ³Æþ
+2      Parted ¤Î»ÈÍÑ
+3      BIOS ¤È¥Õ¥¡¡¼¥à¥¦¥§¥¢
+4      ¥Ö¡¼¥È¡¦¥í¡¼¥À
+5      ¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥à
+6      ¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à
+7      LVM¡¢¥½¥Õ¥È¥¦¥§¥¢ RAID ¤È Ä¾ÀÜŪ¤Ê¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤Ø¤Î¥¢¥¯¥»¥¹
+8      ¥Ç¥£¥¹¥¯¡¦¥¤¥á¡¼¥¸¥ó¥°
+9      ¤µ¤é¤Ê¤ë¾ðÊó¤È´ØÏ¢¥½¥Õ¥È¥¦¥§¥¢
+
+
+1      Æ³Æþ
+1.1    É¬Íפʥ½¥Õ¥È¥¦¥§¥¢
+1.2    ¥µ¥Ý¡¼¥È¤µ¤ì¤ë¥×¥é¥Ã¥È¥Û¡¼¥à
+1.3    ¥é¥¤¥»¥ó¥¹
+1.4    ¥³¥ó¥Ñ¥¤¥ë
+1.5    GNU Parted ¥Ö¡¼¥È¡¦¥Ç¥£¥¹¥¯
+
+2      Parted ¤Î»ÈÍÑ
+2.1    Parted ¤Î¼Â¹Ô
+2.2    ¥ª¥×¥·¥ç¥ó
+2.3    ¥³¥Þ¥ó¥É¤Î³µÍ×
+2.4    ¥³¥Þ¥ó¥É¤Î¾ÜºÙ¤Ê²òÀâ
+2.5    ¼ÂÎã
+
+3      BIOS ¤È¥Õ¥¡¡¼¥à¥¦¥§¥¢
+3.1    PC BIOS
+3.2    Macintosh OpenFirmware
+3.3    PC98 BIOS
+
+4      ¥Ö¡¼¥È¡¦¥í¡¼¥À
+4.1    LILO (Linux Loader)
+4.2    GNU GRUB (GRand Unified Bootloader)
+4.3    MS DOS¡¢MS Windows 9x¡¢MS Windows ME
+4.4    MS Windows NT
+4.5    MS Windows 2000
+4.6    Quik
+4.7    Yaboot
+
+5      ¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥à
+5.1    GNU/Linux ¤È FreeBSD
+5.2    MS Windows ¤È OS/2
+5.3    MacOS
+
+6      ¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à
+6.1    Ext2
+6.2    FAT16 ¤È FAT32
+6.3    Reiserfs
+
+7      LVM¡¢¥½¥Õ¥È¥¦¥§¥¢ RAID ¤È Ä¾ÀÜŪ¤Ê¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤Ø¤Î¥¢¥¯¥»¥¹
+7.1    ¥½¥Õ¥È¥¦¥§¥¢ RAID ¤ä LVM ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ÎºîÀ®
+7.2    ¥½¥Õ¥È¥¦¥§¥¢ RAID ¤ä LVM ÏÀÍý¥Ü¥ê¥å¡¼¥à¾å¤Î¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥àÁàºî
+
+8      ¥Ç¥£¥¹¥¯¡¦¥¤¥á¡¼¥¸¥ó¥°
+
+9      ¤µ¤é¤Ê¤ë¾ðÊó¤È´ØÏ¢¥½¥Õ¥È¥¦¥§¥¢
+
+
+------------------------------------------------------------------------------
+1      Æ³Æþ
+------------------------------------------------------------------------------
+
+GNU Parted ¤Ï¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ä¤½¤Î¾å¤ËÃÛ¤«¤ì¤ë¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤òºîÀ®¤·¤¿¤ê¡¢
+ÇË´þ¤·¤¿¤ê¡¢Â礭¤µ¤òÊѹ¹¤·¤¿¤ê¡¢¸¡ºº¤·¤¿¤ê¡¢Ê£À½¤¹¤ë¤¿¤á¤Î¥×¥í¥°¥é¥à¤Ç¤¹¡£
+
+¿·¤·¤¤¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥à¤ÎÎΰè¤òºîÀ®¤·¤¿¤ê¡¢¥Ç¥£¥¹¥¯¤Î»ÈÍÑË¡¤ò
+ºÆÊÔÀ®¤·¤¿¤ê¡¢¥Ï¡¼¥É¡¦¥Ç¥£¥¹¥¯´Ö¤Ç¥Ç¡¼¥¿¤ò¥³¥Ô¡¼¤·¤¿¤ê¡¢¤¿¤¯¤µ¤ó¤Î
+¥³¥ó¥Ô¥å¡¼¥¿¤Ë·«¤êÊÖ¤·¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤¿´Ä¶­¤òÊ£À½¤¹¤ë¡Ö¥Ç¥£¥¹¥¯¡¦
+¥¤¥á¡¼¥¸¥ó¥°¡×¤ò¹Ô¤¦¤Î¤Ë¡¢¤³¤ì¤ÏÌò¤ËΩ¤Á¤Þ¤¹¡£
+
+¤³¤Î²òÀâ¤Ç¤Ï¡¢¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ä¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ë´Ø¤¹¤ëÃ챤ò²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£
+¤â¤·¤³¤ì¤é¤ò¤â¤Ã¤ÈÊÙ¶¯¤·¤¿¤±¤ì¤Ð¡¢Partition mini-HOWTO ¤òÆɤà¤ÈÎɤ¤¤Ç¤·¤ç¤¦¡£
+
+¤½¤ì¤Ï¤­¤Ã¤È¤¢¤Ê¤¿¤Î¥Ç¥£¥¹¥È¥ê¥Ó¥å¡¼¥·¥ç¥ó¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë¤«¡¢°Ê²¼¤«¤é
+ÍøÍѲÄǽ¤Ç¤¹:
+
+       http://www.linuxdoc.org/HOWTO/mini/Partition/index.html
+
+GNU Parted ¤Ï¥Ç¡¼¥¿¤Î»¼º¤Î²ÄǽÀ­¤òºÇ¾®¸Â¤Ëα¤á¤ë¤è¤¦¤ËÀ߷פµ¤ì¤Þ¤·¤¿¡£
+Î㤨¤Ð¡¢(ÅÅÎÏÉÔ­¤Î¤è¤¦¤Ê) ¾ã³²¤Î´Ö¤Ë¥Ç¡¼¥¿¤Î»¼º¤¬µ¯¤­¤ë¤Î¤òÈò¤±¤ë
+¤è¤¦¤ËÀ߷פµ¤ì¡¢Â¿¤¯¤Î°ÂÁ´¸¡ºº¤ò¹Ô¤¤¤Þ¤¹¡£¤·¤«¤·¡¢Parted ¤Ë¥Ð¥°¤¬¤¢¤ë
+¤«¤â¤·¤ì¤Ê¤¤¤Î¤Ç¡¢½ÅÍפʥե¡¥¤¥ë¤ò¥Ð¥Ã¥¯¥¢¥Ã¥×¤·¤Æ¤ª¤¯¤Ù¤­¤Ç¤¹¡£
+
+GNU Parted ¤Î¥Û¡¼¥à¥Ú¡¼¥¸¤Ï www.gnu.org/software/parted ¤Ç¤¹¡£
+ftp.gnu.org/gnu/parted ¤«¤é¥À¥¦¥ó¥í¡¼¥É¤Ç¤­¤Þ¤¹¡£
+
+Parted ¤Î¥á¥¤¥ê¥ó¥°¡¦¥ê¥¹¥È¤Ï parted@gnu.org ¤Ç¤¹¡£¹ØÆɤ¹¤ë¤Ë¤Ï¡¢Âê̾¤Ë
+¡Ösubscribe¡×¤È½ñ¤¤¤Æ bug-parted-request@gnu.org ¤Ë¥á¡¼¥ë¤ò½Ð¤·¤Æ¤¯¤À¤µ¤¤¡£
+¹ØÆɤξðÊó¤ä¥¢¡¼¥«¥¤¥Ö¤Ï°Ê²¼¤«¤éÍøÍѲÄǽ¤Ç¤¹:
+
+       http://mail.gnu.org/mailman/listinfo/bug-parted
+
+¥Ð¥°¤ÎÊó¹ð¤ò bug-parted@gnu.org ¤ËÁ÷¤Ã¤Æ¤¯¤À¤µ¤¤¡£¥Ð¥°Êó¹ð¤òÁ÷¤ë¤È¤­¡¢
+GNU Parted ¤Î¥Ð¡¼¥¸¥ç¥ó¤ò´Þ¤á¤Æ¤¯¤À¤µ¤¤¡£¤â¤·¤½¤Î¥Ð¥°¤¬¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¡¦
+¥Æ¡¼¥Ö¥ë¤Ë´Ø·¸¤·¤Æ¤¤¤ë¤Ê¤é¡¢¼¡¤Î¥³¥Þ¥ó¥É¤«¤é¤Î½ÐÎϤòÆþ¤ì¤Æ¤¯¤À¤µ¤¤:
+
+       # fdisk /dev/hda -l
+       # fdisk /dev/hda
+       Command (m for help): p
+       Command (m for help): x
+       Extended command (m for help): p
+
+µ¤³Ú¤Ë¤³¤Î¥ê¥¹¥È¤Ë½õ¤±¤òµá¤á¤Æ¤¯¤À¤µ¤¤ - ¤Þ¤º¤¢¤Ê¤¿¤Î¼ÁÌ䤬¤³¤³¤ÇÅú¤¨¤é¤ì
+¤Æ¤¤¤Ê¤¤¤³¤È¤ò³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£¤â¤·²òÀ⤬ʬ¤«¤é¤Ê¤±¤ì¤Ð¡¢¤â¤Ã¤È¾å¼ê¤¯
+ÀâÌÀ¤Ç¤­¤ë¤è¤¦¡¢²æ¡¹¤Ë¶µ¤¨¤Æ¤¯¤À¤µ¤¤¡£°ìÈÌŪ¤Êů³Ø: ¤â¤·¤¢¤Ê¤¿¤¬½õ¤±¤ò
+µá¤á¤ëɬÍפ¬¤¢¤ë¤Ê¤é¡¢¤¢¤Ê¤¿ (¤ä¾¤Î¿Í¡¹) ¤¬½õ¤±¤òµá¤á¤ëɬÍפ¬¤Ê¤¤¤è¤¦¤Ë¡¢
+²¿¤«¤ò½¤Àµ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
+
+¤Þ¤¿¡¢²æ¡¹¤Ï¤¢¤Ê¤¿¤Î°Õ¸«¤ò¤È¤Æ¤âʹ¤­¤¿¤¯»×¤Ã¤Æ¤¤¤Þ¤¹ :-)
+
+
+1.1    É¬Íפʥ½¥Õ¥È¥¦¥§¥¢
+------------------------------------------------------------------------------
+  * e2fsprogs ¥Ñ¥Ã¥±¡¼¥¸¤Î°ìÉô¤Ç¤¢¤ë¡¢libuuid¡£¤â¤·¤³¤ì¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¤Ê¤é¡¢
+
+       http://web.mit.edu/tytso/www/linux/e2fsprogs.html
+
+    ¤«¤éÆþ¼ê¤Ç¤­¤Þ¤¹¡£
+
+¤â¤· Parted¡¢¤½¤·¤Æ e2fsprogs ¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤¿¤¤¤Ê¤é¡¢e2fsprogs ¤ò "make
+install" ¤È "make install-libs" ¤¹¤ëɬÍפ¬¤¢¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£
+
+  * GNU Readline (Ǥ°Õ)¡¢
+
+       ftp://ftp.gnu.org/gnu/readline
+
+    ¤«¤éÆþ¼ê¤Ç¤­¤Þ¤¹¡£
+
+¤â¤· Parted ¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¤¤¤Æ¡¢readline ¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¤Ê¤é¡¢Parted ¤Î
+readline ¥µ¥Ý¡¼¥È¤ò ./configure ¤Ø¤Î --disable-readline ¥ª¥×¥·¥ç¥ó¤Ç̵¸ú
+¤Ë¤Ç¤­¤Þ¤¹¡£
+
+  * ¤â¤·¹ñºÝ²½¥µ¥Ý¡¼¥È¤¬Ë¾¤Þ¤ì¤ë¤Ê¤é¡¢¥³¥ó¥Ñ¥¤¥ëÍѤˠGNU gettext
+    (¤¢¤ë¤¤¤Ï¡¢¸ß´¹¥½¥Õ¥È¥¦¥§¥¢)¡£
+
+       ftp://ftp.gnu.org/gnu/gettext
+
+
+1.2    ¥µ¥Ý¡¼¥È¤µ¤ì¤ë¥×¥é¥Ã¥È¥Û¡¼¥à
+------------------------------------------------------------------------------
+˾¤à¤é¤¯¤Ï¡¢¤³¤Î°ìÍ÷ɽ¤¬¤º¤Ã¤ÈÁýÂ礹¤ë¤³¤È¤ò¡£¤â¤·¤³¤ì¤é¤Î¥×¥é¥Ã¥È¥Û¡¼¥à
+¤Î°ì¤Ä¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¤Ê¤é (º£¤Î¤È¤³¤í¤Ï Linux!)¡¢¥Ö¡¼¥È¡¦¥Ç¥£¥¹¥¯¤¬»È¤¨¤Þ¤¹
+(¥»¥¯¥·¥ç¥ó 1.5 ¤ò»²¾È)
+
+  * Linux >= 2.0.x, 2.2.x (Alpha¡¢x86 PC¡¢PC98¡¢Macintosh PowerPC¡¢Sun)
+
+
+Ãí°Õ: GNU libc 2.1 °Ê¾å¤¬É¬ÍפǤ¹¡£¤ª¤½¤é¤¯ --disable-nls ¥ª¥×¥·¥ç¥ó¤ò»ÈÍÑ
+¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢¤â¤Ã¤È¸Å¤¤¥Ð¡¼¥¸¥ç¥ó¤òÍøÍѤǤ­¤Þ¤¹¡£ (Ãð: ¤³¤ÎɬÍ×À­¤ò¤â
+¤Ï¤äÀÚ¤êÍî¤È¤·¤¿¤È»×¤¤¤Þ¤¹¡£ ¤ä¤ë¤Ù¤­¤³¤È: libc 2.0 ¤¬Æ°¤¯¤«³Îǧ¤¹¤ë!)
+
+
+1.3    ¥é¥¤¥»¥ó¥¹
+------------------------------------------------------------------------------
+GNU Parted ¤Ï¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢¤Ç¤¢¤ê¡¢GNU General Public License
+¥Ð¡¼¥¸¥ç¥ó2¤¬Å¬ÍѤµ¤ì¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤Ï Parted ÇÛÉÛʪ¤È¤È¤â¤Ë¡¢COPYING
+¥Õ¥¡¥¤¥ë¤Ë´Þ¤á¤é¤ì¤Æ¤¤¤ë¤Ï¤º¤Ç¤¹¡£¤â¤·¤Ê¤±¤ì¤Ð¡¢
+Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+¤Ë¼ê»æ¤ò½ñ¤¤¤Æ¤¯¤À¤µ¤¤¡£
+
+Ãí¼á: libparted ¤Ï GNU Parted ¤Î°ìÉô¤È¹Í¤¨¤é¤ì¤Æ¤¤¤Þ¤¹¡£¤½¤ì¤Ï GNU General
+Public License ¤Ë¤è¤Ã¤ÆÊݸ¤ì¤Æ¤¤¤Þ¤¹¡£¤½¤ì¤Ï GNU Lesser General Public
+License (LGPL) ¤Î²¼¤Ç¤Ï¥ê¥ê¡¼¥¹¤µ¤ì¤Æ¡Ø¤¤¤Þ¤»¤ó¡Ù¡£
+
+
+1.4    ¥³¥ó¥Ñ¥¤¥ë
+------------------------------------------------------------------------------
+GNU Parted ¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤¿¤±¤ì¤Ð¡¢Ä̾盧¤Î¤è¤¦¤Ë¤·¤Æ¹Ô¤ï¤ì¤Þ¤¹:
+
+       $ ./configure
+       $ make
+
+¤·¤«¤·¡¢./configure ¤ËÂФ·¤Æ¿ô¸Ä¤Î¥ª¥×¥·¥ç¥ó¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹:
+
+  --without-readline           readline ¤ò»ÈÍѤ·¤Þ¤»¤ó¡£¤³¤ì¤Ï¤¢¤Þ¤ê
+                               Â¿¤¯¤Î¥é¥¤¥Ö¥é¥ê¤¬ÍøÍѤǤ­¤Ê¤¤¤è¤¦¤Ê¡¢
+                               ¶ÛµÞÍѥǥ£¥¹¥¯¤Ê¤É¤òºîÀ®¤¹¤ë¤Î¤ËÊØÍø¤Ç¤¹¡£
+
+  --disable-nls                        Êì¹ñ¸ì¥µ¥Ý¡¼¥È¤ò¼è¤ê¾Ã¤·¤Þ¤¹¡£¤³¤ì¤Ï
+                               glibc ¤Î¸Å¤¤¥Ð¡¼¥¸¥ç¥ó¤ä¶ÛµÞÍѥǥ£¥¹¥¯¤Ë
+                                Å¬¤·¤¿¡¢µ¡Ç½¤òºï¸º¤·¤¿glibc ¤È°ì½ï¤Ë»ÈÍÑ
+                                ¤¹¤ë¤Î¤ËÊØÍø¤Ç¤¹¡£
+
+  --disable-shared             ¶¦Í­¥é¥¤¥Ö¥é¥ê¤ò̵¸ú¤Ë¤·¤Þ¤¹¡£¤³¤ì¤Ï¤â¤·
+                               ¡Ö¤³¤ï¤µ¤ì¤¿¥ì¥¸¥¹¥¿ (spilled register)¡×
+                               ¤Ë´Ø¤¹¤ë¥³¥ó¥Ñ¥¤¥ë¡¦¥¨¥é¡¼¤ò¼õ¤±¼è¤Ã¤¿¤é¡¢
+                               GNU libc ¤Î¸Å¤¤¥Ð¡¼¥¸¥ç¥ó¤È°ì½ï¤Ë»È¤¦¤¿¤á
+                               ¤ËɬÍפˤʤ뤫¤â¤·¤ì¤Þ¤»¤ó¡£¥Ö¡¼¥È/¶ÛµÞÍÑ
+                               ¥Ç¥£¥¹¥¯¤Ë¤âÍ­ÍѤǤ·¤ç¤¦¡£
+
+  --enable-all-static          ´°Á´¤ËÀÅŪ¤Ê¥Ð¥¤¥Ê¥ê¤È¤·¤Æ¡¢Parted ¤Î¥Ð¥¤
+                               ¥Ê¥ê¤ò¹½ÃÛ¤·¤Þ¤¹¡£¤³¤ì¤Ï¥Ö¡¼¥È¡¦¥Ç¥£¥¹¥¯¤Ë
+                               ÊØÍø¤Ç¡¢¤È¤¤¤¦¤Î¤â¡¢¤¤¤«¤Ê¤ë¥é¥¤¥Ö¥é¥ê¤â
+                               ¥Ö¡¼¥È¡¦¥Ç¥£¥¹¥¯¾å¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ëɬÍפ¬
+                               ¤Ê¤¤¤«¤é¤Ç¤¹ (¾¤Î¥×¥í¥°¥é¥à¤¬É¬ÍפȤ¹¤ë¤«
+                               ¤â¤·¤ì¤Ê¤¤¤±¤É...)¡£Ãí°Õ: strip(1) ¤âÁö¤é
+                               ¤»¤¿¤¤¤Ç¤·¤ç¤¦¡£
+
+
+1.5    GNU Parted ¥Ö¡¼¥È¡¦¥Ç¥£¥¹¥¯
+------------------------------------------------------------------------------
+GNU/Linux ¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤¤¤Ê¤¤¥Þ¥·¥ó¤Ç Parted ¤ò¼Â¹Ô¤·¤¿¤¤¡¢¤¢¤ë¤¤¤Ï¡¢
+¥ë¡¼¥È¡¦¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ä¥Ö¡¼¥È¡¦¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ÎÂ礭¤µ¤òÊѹ¹¤·¤¿¤¤¤Ê¤é¡¢
+¥Ö¡¼¥È¡¦¥Ç¥£¥¹¥¯¤ò»ÈÍѤ¹¤ëɬÍפ¬¤¢¤ë¤Ç¤·¤ç¤¦¡£
+
+¥Ö¡¼¥È¡¦¥Ç¥£¥¹¥¯¤Î¥¤¥á¡¼¥¸¤Ï°Ê²¼¤«¤éÆþ¼ê²Äǽ¤Ç¤¹:
+
+       ftp://ftp.gnu.org/gnu/parted/bootdisk/partboot.img
+
+¼ÂºÝ¤Ë¥Ö¡¼¥È¡¦¥Ç¥£¥¹¥¯¤òºîÀ®¤¹¤ë¤Ë¤Ï¡¢(GNU/Linux ¤Ç¤Ï) ¤³¤¦ÂǤÁ¹þ¤ó¤Ç
+¤¯¤À¤µ¤¤:
+
+       # dd if=partboot.img of=/dev/fd0 bs=1440k
+
+¤¢¤ë¤¤¤Ï¡¢DOS ¤Ç RAWRITE.EXE ¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£
+
+ÉÔ±¿¤Ë¤â¡¢¤½¤Î¥Ö¡¼¥È¡¦¥Ç¥£¥¹¥¯¤Ï¤¢¤Þ¤ê¹­ÈϰϤΥϡ¼¥É¥¦¥§¥¢¤ò¥µ¥Ý¡¼¥È¤·¤Æ
+¤¤¤Þ¤»¤ó¡£¤â¤·¤¢¤Ê¤¿¤Î¥Ï¡¼¥É¡¦¥Ç¥£¥¹¥¯¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¤Ê¤é¡¢¼«Ê¬ÀìÍÑ
+¤Î¥Ö¡¼¥È¡¦¥Ç¥£¥¹¥¯¤òºî¤ëɬÍפ¬¤¢¤ë¤Ç¤·¤ç¤¦¡£parted ¤Î¥Ð¥¤¥Ê¥ê¤ò parted ¤Î
+¥Ö¡¼¥È¡¦¥Ç¥£¥¹¥¯¤«¤é¾¤Î¥Ç¥£¥¹¥¯¤Ø¥³¥Ô¡¼¤¹¤ë (ÊýË¡¤Ï°Ê²¼¤ÇÀâÌÀ) ¤³¤È¤¬¤Ç¤­
+¤Þ¤¹¤·¡¢Â¾¤Î¥Ö¡¼¥È¡¦¥Ç¥£¥¹¥¯¤ò»î¤·¤¿¤ê¡¢¼«Ê¬ÀìÍѤΤâ¤Î¤òºî¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£
+¤¢¤Ä¤é¤¨¤Î parted ¥Ö¡¼¥È¡¦¥Ç¥£¥¹¥¯¤òºî¤ë¤¿¤á¤Î¥·¥§¥ë¡¦¥¹¥¯¥ê¥×¥È¡¢mkparted
+¤¬ÊØÍø¤«¤â¤·¤ì¤Þ¤»¤ó¡£¤½¤ì¤Ï¤³¤³¤«¤éÆþ¼ê¤Ç¤­¤Þ¤¹:
+
+       ftp://ftp.tux.org/pub/people/kent-robotti/mkparted
+
+¥Ö¡¼¥È¡¦¥Ç¥£¥¹¥¯¤«¤é¾¤Î¥Ç¥£¥¹¥¯¤Ø parted ¤ò¥³¥Ô¡¼¤¹¤ë¤Ë¤Ï:
+(1) Parted ¤Î¥Ö¡¼¥È¡¦¥Ç¥£¥¹¥¯¤Çµ¯Æ°¤·¤Þ¤¹¡£
+(2) Â¾¤Î (ext2 ¤Î) ¥Õ¥í¥Ã¥Ô¥£¡¦¥Ç¥£¥¹¥¯¤òÁÞÆþ¤·¤Þ¤¹¡£¤â¤·¤½¤ì¤¬¥Õ¥©¡¼¥Þ¥Ã¥È
+¤µ¤ì¤Æ¤¤¤Ê¤¤¤Ê¤é¡¢"parted /dev/fd0 mklabel loop mkfs 1 ext2" ¤Ç
+¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤òºîÀ®¤Ç¤­¤Þ¤¹¡£
+(3) ¤½¤Î¥Õ¥í¥Ã¥Ô¥£¡¦¥Ç¥£¥¹¥¯¤ò¥Þ¥¦¥ó¥È¤·¤Þ¤¹¡£
+("mount -t ext2 /dev/fd0 /mnt/floppy")
+(4) /sbin/parted ¤ò¤½¤Î¥Õ¥í¥Ã¥Ô¥£¤Ë¥³¥Ô¡¼¤·¤Þ¤¹¡£
+("cp /sbin/parted /mnt/floppy")
+(5) /lib/* ¤ò¤½¤Î¥Õ¥í¥Ã¥Ô¥£¤Ë¥³¥Ô¡¼¤·¤Þ¤¹¡£ ("cp /lib/* /mnt/floppy)
+(6) ¤½¤Î¥Õ¥í¥Ã¥Ô¥£¤ò¥¢¥ó¥Þ¥¦¥ó¥È¤·¤Þ¤¹¡£ ("umount /mnt/floppy")
+(7) ¤¢¤Ê¤¿¤Î¥Ï¡¼¥É¡¦¥Ç¥£¥¹¥¯¤ò¥µ¥Ý¡¼¥È¡Ø¤·¤Æ¤¤¤ë¡Ù¥Ö¡¼¥È¡¦¥Ç¥£¥¹¥¯¤ò¸«ÉÕ¤±
+¤Þ¤¹¡£ (¥Ò¥ó¥È: Â礭¤Ê¥ß¥é¡¼¡¦¥µ¥¤¥È¾å¤Ç¤µ¤Þ¤¶¤Þ¤Ê¥Ç¥£¥¹¥È¥ê¥Ó¥å¡¼¥·¥ç¥ó¤«¤é
+¶ÛµÞÍѥǥ£¥¹¥¯¤òõ¤·¤Æ¤ß¤è¤¦¤È¤·¤Ê¤µ¤¤)
+(8) ¤¢¤Ê¤¿¤Î¶ÛµÞÍѥǥ£¥¹¥¯¤Çµ¯Æ°¤·¤Þ¤¹¡£ Parted ¤ò¥³¥Ô¡¼¤·¤¿¥Ç¥£¥¹¥¯¤ò
+¥Þ¥¦¥ó¥È¤·¤Þ¤¹¡£
+(9) Parted ¤ò¼Â¹Ô¤·¤Þ¤¹:
+       # cd /mnt/floppy
+       # LD_LIBRARY_PATH=. ./parted
+
+
+------------------------------------------------------------------------------
+2      Parted ¤Î»ÈÍÑ
+------------------------------------------------------------------------------
+¤¢¤¤¤Ë¤¯¡¢¥Ç¥£¥¹¥¯¤Îʬ³ä¤Ï´öʬº®¤ßÆþ¤Ã¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤Ï¹Íθ¤ËÆþ¤ì¤ëɬÍפÎ
+¤¢¤ë¡¢¤¿¤¯¤µ¤ó¤Î°Û¤Ê¤Ã¤¿¥·¥¹¥Æ¥à´Ö¤Ç¤ÎÁê¸ßºîÍѤ¬¤¢¤ë¤«¤é¤Ç¤¹:
+
+  * BIOS ¤ä¥Õ¥¡¡¼¥à¥¦¥§¥¢ - ¥á¥â¥ê¤Î¥Á¥§¥Ã¥¯¤Ê¤É¤ò¹Ô¤¦¡¢¤¢¤Ê¤¿¤Î¥³¥ó¥Ô¥å¡¼¥¿
+Æâ¤Î ROM ¥Á¥Ã¥×¤ËÁȤ߹þ¤Þ¤ì¤¿¥×¥í¥°¥é¥à¡£¤³¤Î¥·¥¹¥Æ¥à¤Î¥×¥í¥°¥é¥à¤ò(ÍưפˤÏ)
+Êѹ¹¤Ç¤­¤Þ¤»¤ó¡£BIOS ¤ä¥Õ¥¡¡¼¥à¥¦¥§¥¢¡¦¥×¥í¥°¥é¥à¤ÎÎã: AmiBIOS¡¢Award¡¢
+Phoenix¡¢OpenFirmware¡£¤³¤ì¤é¤Î¥×¥í¥°¥é¥à¤Î¤¦¤Á¡¢°ì¤Ä¤À¤±¤ò»ý¤Ã¤Æ¤¤¤ë¤Ç¤·¤ç¤¦¡£
+
+  * ¥Ö¡¼¥È¡¦¥í¡¼¥À - »È¤¤¤¿¤¤¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥à¤òÁªÂò¤¹¤ë¤³¤È¤ò
+²Äǽ¤Ë¤·¡¢¤½¤Î¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥à¤ò¥í¡¼¥É¤¹¤ë¥×¥í¥°¥é¥à¡£Îã: LILO¡¢
+GRUB¡¢Yaboot¡¢Quik¡£ÆäËÊ£¿ô¤Î¼ïÎà¤Î¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥à¤ò¥¤¥ó¥¹¥È¡¼¥ë
+¤·¤Æ¤¤¤ë¤Ê¤é¡¢Ê£¿ô¤Î¥Ö¡¼¥È¡¦¥í¡¼¥À¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤¤¤ë¤«¤â¤·¤ì¤Þ¤»¤ó
+
+  * Parted ¤òÆ°ºî¤µ¤»¤ë¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥à (ÅöºÂ¤Ï¡¢¤³¤ì¤Ï GNU/Linux
+¤Ë°ã¤¤¤¢¤ê¤Þ¤»¤ó)¡¢¤½¤·¤Æ¡¢¤¢¤Ê¤¿¤¬»ÈÍѤ¹¤ë¾¤Î¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥à¡£
+
+  * ¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤Î¼ïÎà - ¥Ç¡¼¥¿¤¬¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ë³ÊǼ¤µ¤ì¤ë¼êÃÊ¡£
+¤³¤ì¤é¤ÎÎã¤Ï: ext2¡¢fat¡¢hfs¡¢reiserfs¡£¤·¤Ð¤·¤Ð°Û¤Ê¤ë¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤Î
+¼ïÎà¤ò´Þ¤à¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò»ý¤Ã¤Æ¤¤¤ë¤Ç¤·¤ç¤¦¡£
+
+Parted ¤Ï¾åµ­¤Î¤¿¤¯¤µ¤ó¤ÎÁȤ߹ç¤ï¤»¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤ª¤ê¡¢¾­Íè¤Ï¤â¤Ã¤È¥µ¥Ý¡¼¥È
+¤¹¤ë¤Ç¤·¤ç¤¦¡£¤½¤ì¤æ¤¨¡¢3¾Ï¤¬ BIOS ¤Ë´Ø¤·¤Æ¡¢4¾Ï¤¬¥Ö¡¼¥È¡¦¥í¡¼¥À¤Ë¤Ä¤¤¤Æ¡¢
+5¾Ï¤¬¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥à¤Ë¤Ä¤¤¤Æ¡¢¤½¤·¤Æ¡¢6¾Ï¤¬¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤Ë
+¤Ä¤¤¤Æ½ñ¤«¤ì¤Æ¤¤¤Þ¤¹¡£
+       ¤³¤Î¾Ï¤Ï Parted ¤Î»ÈÍÑË¡¤òµ­½Ò¤·¤Æ¤ª¤ê¡¢¤³¤ì¤Ï¤É¤ó¤Ê¥·¥¹¥Æ¥à¤ò»È¤Ã
+¤Æ¤¤¤ë¤«¤Ë¤«¤«¤ï¤é¤º¡¢ÂçÂÎƱ¤¸¤Ç¤¹¡£¤³¤Î¾Ï¤òÆɤߡ¢¤½¤·¤Æ¡¢3¡¢4¡¢5¤È6¾Ï¡¢
+¤½¤ì¤¾¤ì¤òÆɤà¤Ù¤­¤Ç¤¹¡£¤·¤«¤·¡¢¤¢¤Ê¤¿¤Ë´Ø·¸¤¬¤¢¤ë¥»¥¯¥·¥ç¥ó¤À¤±¤òÆɤàɬÍ×
+¤¬¤¢¤ê¤Þ¤¹¡£Î㤨¤Ð¡¢¤â¤·¥Ö¡¼¥È¡¦¥í¡¼¥À¤È¤·¤Æ LILO ¤À¤±¤ò»È¤Ã¤Æ¤¤¤ë¤Ê¤é¡¢
+ƳÆþ¤È¡¢4¾Ï¤Î LILO ¤Ë´Ø¤¹¤ë¥»¥¯¥·¥ç¥ó¤À¤±¤òÆɤàɬÍפ¬¤¢¤ê¤Þ¤¹¡£
+
+
+2.1    Parted ¤Î¼Â¹Ô
+------------------------------------------------------------------------------
+
+Parted ¤ÏÆó¤Ä¤ÎÍͼ°¡¢¥³¥Þ¥ó¥É¡¦¥é¥¤¥ó¤ÈÂÐÏ÷¿¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£Parted ¤Ï¾ï¤Ë
+¤³¤Î¤è¤¦¤Ë³«»Ï¤µ¤ì¤ë¤Ù¤­¤Ç¤¹:
+
+       # parted DEVICE
+
+¤³¤³¤Ç¡¢DEVICE ¤ÏÊÔ½¸¤¹¤ë¥Ï¡¼¥É¡¦¥Ç¥£¥¹¥¯¡¦¥É¥é¥¤¥Ö¤Ç¤¹¡£(¤â¤·¤¢¤Ê¤¿¤¬ÂÕ¤±
+¤Æ¤¤¤ë¤Ê¤é¡¢Parted ¤Ï¤É¤Î¥Ç¥Ð¥¤¥¹¤ò˾¤ó¤Ç¤¤¤ë¤Î¤«¡¢¿ä¬¤·¤è¤¦¤È»î¤ß¤Þ¤¹¡£)
+
+¥³¥Þ¥ó¥É¡¦¥é¥¤¥ó¤Î¥â¡¼¥É¤Ç¤Ï¡¢¤³¤Î¸å¤Ë°ì¤Ä¤«¤½¤ì°Ê¾å¤Î¥³¥Þ¥ó¥É¤ò³¤±¤Þ¤¹¡£
+Îã:
+
+       # parted /dev/sda resize 1 52 104 mkfs 2 fat
+
+(--help ¤Î¤è¤¦¤Ê) ¥ª¥×¥·¥ç¥ó¤Ï¥³¥Þ¥ó¥É¡¦¥é¥¤¥ó¾å¤Ç¤Î¤ß»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
+
+ÂÐÏ÷¿¥â¡¼¥É¤Ç¤Ï¡¢¥³¥Þ¥ó¥É¤Ï°ìÅ٤˰ì¤Ä¤º¤Ä¥×¥í¥ó¥×¥È¤ËÆþÎϤµ¤ì¤Þ¤¹¡£Îã:
+
+       (parted) resize 1 52.0005 104.5
+       (parted) mkfs 2 fat
+
+Û£Ëæ¤Ç¤Ê¤¤¾Êά¤Ïµö¤µ¤ì¤Þ¤¹¡£Î㤨¤Ð¡¢¡Öprint¡×¤ÎÂå¤ï¤ê¤Ë¡Öp¡×¤ò¡¢¡Öresize¡×
+¤ÎÂå¤ï¤ê¤Ë¡Öre¡×¤òÂǤĤ³¤È¤¬¤Ç¤­¤Þ¤¹¡£¥³¥Þ¥ó¥É¤Ï±Ñ¸ì¤Ç¤â¡¢¤¢¤Ê¤¿¤ÎÊì¹ñ¸ì¤Ç¤â
+ÂǤÁ¹þ¤á¤Þ¤¹ (¤â¤·¤¢¤Ê¤¿¤Î¸À¸ì¤¬ËÝÌõ¤µ¤ì¤Æ¤¤¤ë¤Ê¤é)¡£¤³¤Î¤³¤È¤¬Û£Ë椵¤òÀ¸¤ß
+½Ð¤¹¤«¤â¤·¤ì¤Þ¤»¤ó¡£
+
+¤Þ¤¿¡¢¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Î°ÌÃÖ¤ËÂбþ¤¹¤ë¿ô»ú¤Ë¾®¿ô°Ì¤ò»ØÄê¤Ç¤­¤ë¤³¤È¤ËÃí°Õ¤·¤Æ
+¤¯¤À¤µ¤¤ (¥á¥¬¥Ð¥¤¥Èñ°Ì¤Ç)¡£
+
+
+2.2    ¥ª¥×¥·¥ç¥ó
+------------------------------------------------------------------------------
+-h, --help                    ¥Ø¥ë¥×¡¦¥á¥Ã¥»¡¼¥¸¤òɽ¼¨¤·¤Þ¤¹
+-s, --script                  ·è¤·¤Æ¥æ¡¼¥¶¤Î´³¾Ä¤òÂ¥¤·¤Þ¤»¤ó
+-v, --version                 ¥Ð¡¼¥¸¥ç¥ó¤òɽ¼¨¤·¤Þ¤¹
+
+
+2.3    ¥³¥Þ¥ó¥É¤Î³µÍ×
+------------------------------------------------------------------------------
+check MINOR                   ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ë´Êñ¤Ê¸¡ºº¤ò¹Ô¤¤¤Þ¤¹
+cp [FROM-DEVICE] FROM-MINOR TO-MINOR      ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ò¾¤Î¥Ñ¡¼¥Æ¥£
+                                          ¥·¥ç¥ó¤Ë¥³¥Ô¡¼¤·¤Þ¤¹
+help [COMMAND]                °ìÈÌŪ¤Ê¥Ø¥ë¥×¤«¡¢COMMAND ¤Ë´Ø¤¹¤ë¥Ø¥ë¥×¤ò
+                              É½¼¨¤·¤Þ¤¹
+mklabel LABEL-TYPE            ¿·¤·¤¤¥Ç¥£¥¹¥¯¡¦¥é¥Ù¥ë(¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¡¦
+                              ¥Æ¡¼¥Ö¥ë)¤òºîÀ®¤·¤Þ¤¹
+mkfs MINOR FS-TYPE            ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó MINOR ¾å¤Ë¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à
+                              FS-TYPE ¤òºîÀ®¤·¤Þ¤¹
+mkpart PART-TYPE [FS-TYPE] START END      ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤òºîÀ®¤·¤Þ¤¹
+mkpartfs PART-TYPE FS-TYPE START END      ¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤È°ì½ï¤Ë¥Ñ¡¼
+                                          ¥Æ¥£¥·¥ç¥ó¤òºîÀ®¤·¤Þ¤¹
+move MINOR START END          ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó MINOR ¤ò°ÜÆ°¤·¤Þ¤¹
+name MINOR NAME               ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó MINOR ¤ò NAME ¤È̾ÉÕ¤±¤Þ¤¹
+print                         ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¡¦¥Æ¡¼¥Ö¥ë¤òɽ¼¨¤·¤Þ¤¹
+quit                          ¥×¥í¥°¥é¥à¤ò½ªÎ»¤·¤Þ¤¹
+resize MINOR START END        ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó MINOR ¾å¤Î¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î
+                              Â礭¤µ¤òÊѹ¹¤·¤Þ¤¹
+rm MINOR                      ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó MINOR ¤òºï½ü¤·¤Þ¤¹
+select DEVICE                 ÊÔ½¸¤¹¤ë¥Ç¥Ð¥¤¥¹¤òÁª¤Ó¤Þ¤¹
+set MINOR FLAG STATE          ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó MINOR ¾å¤Î¥Õ¥é¥°¤òÊѹ¹¤·¤Þ¤¹
+
+FLAG ¤Ï boot¡¢root¡¢swap¡¢hidden¡¢raid¡¢lvm¡¢lba ¤Î¤¦¤Á¤Î°ì¤Ä¤Ç¤¹¡£
+
+FS-TYPE ¤Ï ext2¡¢FAT¡¢hfs¡¢linux-swap¡¢ntfs¡¢reiserfs ¤Î¤¦¤Á¤Î°ì¤Ä¤Ç¤¹¡£
+
+LABEL-TYPE ¤Ï sun¡¢bsd¡¢mac¡¢loop¡¢pc98¡¢msdos¡¢gpt ¤Î¤¦¤Á¤Î°ì¤Ä¤Ç¤¹¡£
+
+MINOR ¤Ï Linux ¤Ë»È¤ï¤ì¤ë¥Ñ¡¼¥Æ¥£¥·¥ç¥óÈÖ¹æ¤Ç¤¹¡£
+
+PART-TYPE ¤Ï primary¡¢logical¡¢extended ¤Î¤¦¤Á¤Î°ì¤Ä¤Ç¤¹¡£
+´ðËÜ (primary) ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ïɸ½àŪ¤Ê¡¢³ÈÄ¥À­¤Î¤Ê¤¤¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ç¤¹¡£
+³ÈÄ¥ (extended) ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ï¤¿¤À¾¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¡¢Àµ³Î¤Ë¤ÏÏÀÍý
+(logical) ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¡¢¤ò´Þ¤à¤À¤±¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ç¤¹¡£¤µ¤é¤Ë¤è¤êÀµ³Î
+¤Ë¤Ï¡¢³ÈÄ¥¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ï¥Ç¥£¥¹¥¯¡¦¥É¥é¥¤¥Ö¤Î¤è¤¦¤Ë¹½ÃÛ¤µ¤ì¤Æ¤ª¤ê¡¢
+¡Ö´ðËܡץѡ¼¥Æ¥£¥·¥ç¥ó (ÏÀÍý¥Ñ¡¼¥Æ¥£¥·¥ç¥ó) ¤È¡¢Ç¤°Õ¤Ç¡¢Ê̤ΡֳÈÄ¥¡×
+¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤òÊÝ»ý¤·¡¢¤½¤ì¤¬ºÆ¤ÓºÙʬ¤µ¤ì¤Æ ...
+ºÇÂç¤Ç¤â³ÈÄ¥¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ï°ì¤Ä¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¯¤Æ¡¢°ì¤Ä¤Î´ðËÜ
+¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ÎÎΰè¤òÀê¤á¤Þ¤¹¡£¤â¤· msdos ¥Ç¥£¥¹¥¯¡¦¥é¥Ù¥ë¤ò»È¤Ã¤Æ
+¤¤¤Ê¤¤¤Ê¤é¡¢´ðËܥѡ¼¥Æ¥£¥·¥ç¥ó¤À¤±¤ò»ý¤Ä¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
+
+START ¤È END ¤Ï¥¼¥í¤«¤é»Ï¤Þ¤ë¡¢¥á¥¬¥Ð¥¤¥È¤Çɽ¤µ¤ì¤Þ¤¹¡£¾®¿ô¤ò»È¤Ã¤Æ¤â
+¹½¤¤¤Þ¤»¤ó (Îã: 1258.9)¡£
+
+
+2.4    ¥³¥Þ¥ó¥É¤Î¾ÜºÙ¤Ê²òÀâ
+------------------------------------------------------------------------------
+
+2.4.1  check
+-------------
+       check MINOR                   ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ë´Êñ¤Ê¸¡ºº¤ò¹Ô¤¤¤Þ¤¹
+
+check ¥³¥Þ¥ó¥É¤Ï¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ë¥¨¥é¡¼¤¬¤¢¤ë¤«¤É¤¦¤«¤ò¸¡ºº¤·¤Þ¤¹¡£
+
+Îã:
+
+       (parted) check 1
+
+
+2.4.2  cp
+----------
+       cp [FROM-DEVICE] FROM-MINOR TO-MINOR      ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ò¾¤Î
+                                                  ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ë¥³¥Ô¡¼¤·¤Þ¤¹
+
+¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò¾¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ë¥³¥Ô¡¼¤·¡¢¤½¤ÎÌÜŪ¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Î
+¸µ¡¹¤¢¤Ã¤¿Ãæ¿È¤òºï½ü¤·¤Þ¤¹¡£ºÇ½é¤Î MINOR ÈÖ¹æ¤Ï¸µ¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò»Ø¤·¡¢
+ÆóÈÖÌܤÏÌÜŪ¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò»Ø¤·¤Þ¤¹¡£
+
+Ǥ°Õ¤Î¥Ñ¥é¥á¡¼¥¿¤È¤·¤Æ¡¢¥Ç¥Ð¥¤¥¹¤òÍ¿¤¨¤ë¤³¤È¤¬¤Ç¤­¡¢¤½¤ì¤ÏÌÜŪ¤Î
+¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤¬¤É¤Î¥Ç¥Ð¥¤¥¹¾å¤Ë¤¢¤ë¤«¤ò»ØÄꤷ¤Þ¤¹¡£
+
+¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à:
+  * ext2 (ÌÜŪ¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤¬¸µ¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤è¤ê¤âÂ礭¤¤¤È¤¤¤¦¾ò·ï¤Ç)
+  * FAT
+  * linux-swap (ÌÜŪ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ë¤ª¤±¤ë mkfs ¤ÈÅù²Á)
+
+Îã:
+
+       (parted) cp /dev/hdb 2 3
+
+       /dev/hdb ¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó2 (¤Ä¤Þ¤ê¡¢/dev/hdb2) ¤ò¡¢Parted ¤¬¥í¡¼¥É
+       ¤¹¤ë¤È¤­¤Ë»È¤Ã¤¿¥Ç¥Ð¥¤¥¹¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó3¤Ë¥³¥Ô¡¼¤·¡¢¥Ñ¡¼¥Æ¥£¥·¥ç¥ó3
+       ¤Î°ÊÁ°¤ÎÆâÍƤòÇ˲õ¤·¤Þ¤¹¡£
+
+
+2.4.3  help
+------------
+       help [COMMAND]                °ìÈÌŪ¤Ê¥Ø¥ë¥×¤«¡¢COMMAND ¤Ë´Ø¤¹¤ë
+                                     ¥Ø¥ë¥×¤òɽ¼¨¤·¤Þ¤¹
+
+Îã:
+
+       (parted) help resize
+
+
+2.4.4  mklabel
+---------------
+       mklabel LABEL-TYPE            ¿·¤·¤¤¥Ç¥£¥¹¥¯¡¦¥é¥Ù¥ë(¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¡¦
+                                     ¥Æ¡¼¥Ö¥ë)¤òºîÀ®¤·¤Þ¤¹
+
+¿·¤·¤¤¥Ç¥£¥¹¥¯¡¦¥é¥Ù¥ë¤ò¡¢¥¿¥¤¥× LABEL-TYPE ¤ÇºîÀ®¤·¤Þ¤¹¡£¿·¤·¤¤¥Ç¥£¥¹¥¯¡¦
+¥é¥Ù¥ë¤Ï¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò°ì¤Ä¤â»ý¤Á¤Þ¤»¤ó¡£¤³¤Î¥³¥Þ¥ó¥É¤Ï (Ä̾ï¤Ï)¡¢µ»½ÑŪ¤Ë
+¸À¤Ã¤Æ¡¢¥Ç¡¼¥¿¤òÇ˲õ¤·¤Þ¤»¤ó¤¬¡¢´ðËÜŪ¤ËÍøÍÑÉÔǽ¤Ë¤·¤Æ¤·¤Þ¤¤¡¢¥Ñ¡¼¥Æ¥£¥·¥ç¥ó
+¤ò½¤Éü¤¹¤ë¤Ë¤Ï¡¢gpart (¥»¥¯¥·¥ç¥ó 9 ¤ò»²¾È) ¤Î¤è¤¦¤Ê¥×¥í¥°¥é¥à¤òÍøÍѤ¹¤ëɬÍ×
+¤¬¤¢¤ë¤Ç¤·¤ç¤¦¡£(»ä¤ÎÃΤë¸Â¤ê) gpart ¤Ï msdos ¥Ç¥£¥¹¥¯¡¦¥é¥Ù¥ë¤Ë¤À¤±»È¤¨¤Þ¤¹¡£
+²æ¡¹¤Î¤³¤Îµ¡Ç½¤ò Parted ¤Ë²Ã¤¨¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡¢¤¢¤ë¤¤¤Ï¡¢¤¹¤ë¤Ù¤­¤Ç¤·¤ç¤¦¡£
+
+Ãí¼á: ¤ß¤ó¤Ê¡¢¡Ö¥Ç¥£¥¹¥¯¡¦¥é¥Ù¥ë¡×¤Ë°ã¤¦¸ÀÍÕ¤ò»È¤¦¤è¤¦¤Ç¤¹ - °Ê²¼¤ÏÁ´¤ÆƱ¤¸
+¤â¤Î¤Ç¤¹: ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¡¦¥Æ¡¼¥Ö¥ë¡¢¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¡¦¥Þ¥Ã¥×¡£¤Þ¤¿¡¢x86 ¥Þ¥·¥ó
+¾å¤Î¥Þ¥¹¥¿¡¼¡¦¥Ö¡¼¥È¡¦¥ì¥³¡¼¥É¤Ï¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¡¦¥Æ¡¼¥Ö¥ë¤ÈƱ¤¸¥»¥¯¥¿¤Ë¼ý¤á¤é
+¤ì¤Æ¤¤¤Þ¤¹ (Parted ¤ò»ÈÍѤ¹¤ë¤Î¤Ë¤³¤Î¤³¤È¤òÃΤëɬÍפϤ¢¤ê¤Þ¤»¤ó)¡£
+
+¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¥Ç¥£¥¹¥¯¡¦¥é¥Ù¥ë:
+  * bsd
+  * loop (ľÀÜŪ¤Ê¥Ç¥£¥¹¥¯¡¦¥¢¥¯¥»¥¹)
+  * gpt
+  * mac
+  * msdos
+  * pc98
+  * sun
+
+Îã:
+
+       (parted) mklabel msdos
+
+
+2.4.5  mkfs
+------------
+       mkfs MINOR FS-TYPE            ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó MINOR ¾å¤Ë¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à
+                                     FS-TYPE ¤òºîÀ®¤·¤Þ¤¹
+
+¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¾å¤Ë¿·¤·¤¤¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤òºîÀ®¤·¡¢¤½¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ë
+¸ºß¤¹¤ë¥Ç¡¼¥¿¤òÁ´¤ÆÇ˲õ¤·¤Þ¤¹¡£
+
+¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à:
+  * ext2
+  * FAT
+  * linux-swap
+
+Îã:
+
+       (parted) mkfs 2 fat
+
+
+2.4.6  mkpart
+--------------
+       mkpart PART-TYPE [FS-TYPE] START END      (¿·µ¬¤Î)¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ò
+                                                  ºî¤é¤º¤Ë¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤òºî
+                                                  À®¤·¤Þ¤¹¡£¥Ç¡¼¥¿¡¦¥Ñ¡¼¥Æ¥£
+                                                  ¥·¥ç¥ó¤Ç¤Ï¡¢FS-TYPE ¤¬É¬Í×
+                                                  ¤È¤µ¤ì¤Þ¤¹
+
+¿·¤·¤¤¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤òºîÀ®¡Ø¤»¤º¤Ë¡Ù¡¢¿·¤·¤¤¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤òºîÀ®¤·¤Þ¤¹¡£
+¤³¤ì¤Ï¶öÁ³¤Ëºï½ü¤·¤Æ¤·¤Þ¤Ã¤¿¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò²óÉü¤¹¤ë¤Î¤ËÌò¤ËΩ¤Á¤Þ¤¹¡£
+
+PART-TYPE ¤Ï¤³¤Î¤¦¤Á¤Î°ì¤Ä¤Ç¤¹: primary (´ðËÜ)¡¢extended (³ÈÄ¥)¡¢
+logical (ÏÀÍý)¡£extended ¤È logical ¤Ï msdos ¥Ç¥£¥¹¥¯¡¦¥é¥Ù¥ë¤ËÂФ·¤Æ¤Î¤ß
+»ÈÍѤ·¤Þ¤¹¡£
+
+¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à:
+  * ext2
+  * FAT
+  * HFS
+  * linux-swap
+  * NTFS
+  * reiserfs
+
+Îã:
+
+       (parted) mkpart logical ext2 0.0 692.1
+
+
+2.4.7  mkpartfs
+----------------
+       mkpartfs PART-TYPE FS-TYPE START END      ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤È°ì½ï¤Ë
+                                                 ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤òºîÀ®¤·¤Þ¤¹
+
+
+¿·¤·¤¤¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥àÉÕ¤­¤Ç¿·¤·¤¤¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤òºîÀ®¤·¤Þ¤¹¡£ºï½ü¤·¤Æ
+¤·¤Þ¤Ã¤¿¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò²óÉü¤µ¤»¤ë¤Î¤Ë¡¢¤³¤Î¥³¥Þ¥ó¥É¤ò»È¤ï¤Ê¤¤¤Ç¤¯¤À¤µ¤¤
+(Âå¤ï¤ê¤Ë mkpart ¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤)¡£
+
+PART-TYPE ¤Ï¤³¤Î¤¦¤Á¤Î°ì¤Ä¤Ç¤¹: primary (´ðËÜ)¡¢extended (³ÈÄ¥)¡¢
+logical (ÏÀÍý)¡£extended ¤È logical ¤Ï msdos ¥Ç¥£¥¹¥¯¡¦¥é¥Ù¥ë¤ËÂФ·¤Æ¤Î¤ß
+»ÈÍѤ·¤Þ¤¹¡£
+
+¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à:
+  * ext2
+  * FAT
+  * linux-swap
+
+Îã:
+
+       (parted) mkpartfs logical ext2 440 670
+
+
+2.4.8  move
+------------
+       move MINOR START [END]        ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó MINOR ¤ò°ÜÆ°¤·¤Þ¤¹
+
+¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò°ÜÆ°¤·¤Þ¤¹¡£ Ãí: move ¤Ï·è¤·¤Æ¥Þ¥¤¥Ê¡¼ÈÖ¹æ¤òÊѹ¹¤·¤Þ¤»¤ó¡£
+
+¤â¤· END ¤¬»ØÄꤵ¤ì¤Ê¤±¤ì¤Ð¡¢¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ÎÂ礭¤µ¤ÏƱ¤¸¤Þ¤Þ¤Ë¤Ê¤ê¤Þ¤¹¡£
+
+¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à:
+  * ext2 (ÌÜŪ¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤¬¸µ¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤è¤êÂ礭¤¤¤È¤¤¤¦¾ò·ï¤Ç)
+  * FAT
+  * linux-swap
+
+
+2.4.9  name
+------------
+       name MINOR NAME               ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó MINOR ¤ò NAME ¤È̾ÉÕ¤±
+                                     ¤Þ¤¹
+
+¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ë̾Á°¤òÉÕ¤±¤Þ¤¹ (Mac ¤È PC98 ¤À¤±)¡£ Ì¾Á°¤Ï¥¯¥¦¥©¡¼¥È¤Ç°Ï¤á
+¤Þ¤¹¡£ Îã:
+
+       (parted) name 2 'Secret Documents'
+
+
+2.4.10 print
+-------------
+       print                         ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¡¦¥Æ¡¼¥Ö¥ë¤òɽ¼¨¤·¤Þ¤¹
+
+¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¡¦¥Æ¡¼¥Ö¥ë¤òɽ¼¨¤·¤Þ¤¹¡£
+
+Îã:
+
+       (parted) print
+       Disk geometry for /dev/hda: 0.000-2445.679 megabytes
+       Disk label type: msdos
+       Minor    Start       End     Type      Filesystem  Flags
+       1          0.031    945.000  primary   FAT         boot, lba
+       2        945.000   2358.562  primary   ext2
+       3       2358.562   2445.187  primary   linux-swap
+
+
+2.4.11 resize
+--------------
+       resize MINOR START END        ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó MINOR ¾å¤Î¥Õ¥¡¥¤¥ë
+                                     ¥·¥¹¥Æ¥à¤ÎÂ礭¤µ¤òÊѹ¹¤·¤Þ¤¹
+
+¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ÎÂ礭¤µ¤òÊѹ¹¤·¤Þ¤¹¡£ Ãí: resize ¤Ï·è¤·¤Æ¥Þ¥¤¥Ê¡¼ÈÖ¹æ¤òÊѹ¹
+¤·¤Þ¤»¤ó¡£ºÆ¤Ó¡¢Ãí: ¿·¤·¤¤³ÈÄ¥¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤¬´°Á´¤ËÁ´¤Æ¤ÎÏÀÍý¥Ñ¡¼¥Æ¥£¥·¥ç¥ó
+¤ò´Þ¤ó¤Ç¤¤¤ë¸Â¤ê¡¢³ÈÄ¥¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ÎÂ礭¤µ¤òÊѹ¹¤Ç¤­¤Þ¤¹¡£
+
+Parted ¤Ï¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤¬¡Ö¥Ç¥Õ¥é¥°¡×¤µ¤ì¤Æ¤¤¤ë¤³¤È¤òÍ׵ᤷ¤Ê¤¤¤³¤È¤Ë
+Ãí°Õ¤·¤Æ¤¯¤À¤µ¤¤ (ɬÍפʤ顢Parted ¤Ï°ÂÁ´¤Ë¥Ç¡¼¥¿¤ò°ÜÆ°¤Ç¤­¤Þ¤¹)¡£¥Ç¥Õ¥é¥°
+¤¹¤ë¤Î¤Ï»þ´Ö¤Î̵Â̤Ǥ¹¡£¼ÙË⤷¤Ê¤¤¤Ç!
+
+¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à:
+  * ext2 - À©¸Â: ¿·¤·¤¤ START ¤Ï¸Å¤¤ START ¤ÈƱ¤¸¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó
+  * FAT
+  * linux-swap
+
+Îã:
+
+       (parted) resize 3 200 850
+
+
+2.4.12 rm
+----------
+       rm MINOR                      ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó MINOR ¤òºï½ü¤·¤Þ¤¹
+
+¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò½üµî¤·¤Þ¤¹¡£¤â¤·¶öÁ³¤Ë¤³¤Î¥³¥Þ¥ó¥É¤Ç¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò
+ºï½ü¤·¤Æ¤·¤Þ¤Ã¤¿¤é¡¢¼è¤êÌ᤹¤¿¤á¤Ë mkpart ¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤ (mkpartfs ¤Ç¤Ï
+¡Ø¤¢¤ê¤Þ¤»¤ó¡Ù)¡£¤Þ¤¿¡¢Â»½ý¤ò¼õ¤±¤¿¥Ç¥£¥¹¥¯¡¦¥é¥Ù¥ë¤ò²óÉü¤µ¤»¤ë¤¿¤á¤Ë¡¢
+gpart ¥×¥í¥°¥é¥à¤ò»È¤¦¤³¤È¤â²Äǽ¤Ç¤¹ (6¾Ï¤ò»²¾È)¡£
+
+msdos ¥Ç¥£¥¹¥¯¡¦¥é¥Ù¥ë¤Î¤¿¤á¤ÎÃí°Õ: ¤â¤·ÏÀÍý¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤òºï½ü¤¹¤ì¤Ð¡¢
+¤è¤êÂ礭¤¤¥Þ¥¤¥Ê¡¼ÈÖ¹æ¤ÎÉÕ¤¤¤¿ÏÀÍý¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ÏÁ´ÉôÈֹ椬ÉÕ¤±Ä¾¤µ¤ì¤ë
+¤Ç¤·¤ç¤¦¡£Î㤨¤Ð¡¢¤â¤· 6 ¤Î¥Þ¥¤¥Ê¡¼ÈÖ¹æ¤ÎÏÀÍý¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤òºï½ü¤¹¤ì¤Ð¡¢
+Èֹ椬 7¡¢8¡¢9 ¤À¤Ã¤¿ logical ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ï¤½¤ì¤¾¤ì 6¡¢7¡¢8 ¤Ë¤Ê¤ê¤Þ¤¹¡£
+¤³¤Î¤³¤È¤Î¤¿¤á¤Ë¡¢/etc/fstab ¤ò¹¹¿·¤·¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£
+
+Îã:
+
+       (parted) rm 3
+
+
+2.4.13 select
+--------------
+       select DEVICE                 ÊÔ½¸¤¹¤ë¥Ç¥Ð¥¤¥¹¤òÁªÂò¤·¤Þ¤¹
+
+Parted ¤¬ÊÔ½¸¤¹¤ë¥Ç¥Ð¥¤¥¹¤òÁªÂò¤·¤Þ¤¹¡£¥Ç¥Ð¥¤¥¹¤ÏÄ̾ï Linux ¤Î¥Ï¡¼¥É¡¦¥Ç¥£
+¥¹¥¯¡¦¥Ç¥Ð¥¤¥¹¤«¡¢¤¢¤ë¤¤¤Ï¡¢¤â¤·¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤Ø¤ÎľÀÜ¥¢¥¯¥»¥¹¤¬Í׵ᤵ
+¤ì¤ë¤Ê¤é¡¢¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ä¡¢¥½¥Õ¥È¥¦¥§¥¢ RAID ¥Ç¥Ð¥¤¥¹¡¢LVM ÏÀÍý¥Ü¥ê¥å¡¼¥à
+¤Ç¤·¤ç¤¦¡£
+
+Îã:
+
+       (parted) select /dev/hdb
+
+
+2.4.14 set
+-----------
+       set MINOR FLAG STATE          ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó MINOR ¾å¤Î¥Õ¥é¥°¤ò
+                                     Êѹ¹¤·¤Þ¤¹
+
+¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¾å¤Î¥Õ¥é¥°¤òÊѹ¹¤·¤Þ¤¹¡£¥Õ¥é¥°¤Ï¡Öon¡×¤«¡Öoff¡×¤Î¤É¤Á¤é¤«¤Ç
+¤¹¡£¤³¤ì¤é¤Î¥Õ¥é¥°¤Î°ìÉô¡¢¤¢¤ë¤¤¤Ï¡¢Á´Éô¤¬¡¢¤¢¤Ê¤¿¤¬»È¤Ã¤Æ¤¤¤ë¥Ç¥£¥¹¥¯¡¦¥é
+¥Ù¥ë¤Ë±þ¤¸¤Æ¡¢ÍøÍѤǤ­¤ë¤Ç¤·¤ç¤¦:
+  * boot (Mac¡¢MSDOS¡¢PC98) - ¤½¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤«¤éµ¯Æ°¤·¤¿¤±¤ì¤Ð¡¢Í­¸ú¤Ë
+¤µ¤ì¤ë¤Ù¤­¤Ç¤¹¡£¤½¤Î°ÕÌ£¤Ï¥Ç¥£¥¹¥¯¡¦¥é¥Ù¥ë´Ö¤Ç¤µ¤Þ¤¶¤Þ¤Ç¤¹¡£MSDOS ¥Ç¥£¥¹¥¯¡¦
+¥é¥Ù¥ë¤Ç¤Ï¡¢¤¿¤À°ì¤Ä¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤À¤±¤¬µ¯Æ°²Äǽ¤Ë¤Ê¤êÆÀ¤Þ¤¹¡£¤â¤·¥Ñ¡¼¥Æ¥£
+¥·¥ç¥ó¤Ë LILO ¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤¤¤ë¤Ê¤é¡¢¤½¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ïµ¯Æ°²Äǽ¤Ç¤Ê¤±
+¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£PC98 ¥Ç¥£¥¹¥¯¡¦¥é¥Ù¥ë¤Ç¤Ï¡¢Á´¤Æ¤Î ext2 ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤¬µ¯Æ°
+²Äǽ¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó (¤³¤ì¤Ï Parted ¤Ë¶¯À©¤µ¤ì¤Þ¤¹)¡£
+  * lba (MSDOS) - MSDOS¡¢MS Windows 9x ¤ä MS Windows ME ¤ò´ðËܤȤ¹¤ë¥ª¥Ú¥ì¡¼
+¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥à¤Ë¥ê¥Ë¥¢ (LBA) ¥â¡¼¥É¤ò»È¤¦¤è¤¦¤Ë»Ø¼¨¤¹¤ë¤¿¤á¤Ë¡¢¤³¤Î¥Õ¥é¥°
+¤ÏÍ­¸ú¤Ë¤Ç¤­¤Þ¤¹¡£
+  * root (Mac) - ¤½¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤¬ Linux ¤Ë¤è¤Ã¤Æ»ÈÍѤµ¤ì¤ë¥ë¡¼¥È¡¦¥Ç¥Ð¥¤
+¥¹¤Ê¤é¡¢¤³¤Î¥Õ¥é¥°¤òÍ­¸ú¤Ë¤¹¤Ù¤­¤Ç¤¹¡£
+  * swap (Mac) - ¤½¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤¬ Linux ¤Ë¤è¤Ã¤Æ»ÈÍѤµ¤ì¤ë¥¹¥ï¥Ã¥×¡¦¥Ç¥Ð
+¥¤¥¹¤Ê¤é¡¢¤³¤Î¥Õ¥é¥°¤òÍ­¸ú¤Ë¤¹¤Ù¤­¤Ç¤¹¡£
+  * hidden (MSDOS, PC98) - ¥Þ¥¤¥¯¥í¥½¥Õ¥È¤Î¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥à¤«¤é
+¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò±£¤¹¤¿¤á¤Ë¡¢¤³¤Î¥Õ¥é¥°¤òÍ­¸ú¤Ë¤Ç¤­¤Þ¤¹¡£
+  * raid (MSDOS) - Linux ¤Ë¤½¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤¬¥½¥Õ¥È¥¦¥§¥¢ RAID ¥Ñ¡¼¥Æ¥£
+¥·¥ç¥ó¤Ç¤¢¤ë¤³¤È¤ò¶µ¤¨¤ë¤¿¤á¤Ë¡¢¤³¤Î¥Õ¥é¥°¤òÍ­¸ú¤Ç¤­¤Þ¤¹¡£
+  * LVM (MSDOS) - Linux ¤Ë¤½¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤¬ÊªÍý¥Ü¥ê¥å¡¼¥à¤Ç¤¢¤ë¤³¤È¤ò¶µ¤¨
+¤ë¤¿¤á¤Ë¡¢¤³¤Î¥Õ¥é¥°¤òÍ­¸ú¤Ë¤Ç¤­¤Þ¤¹¡£
+
+print ¥³¥Þ¥ó¥É¤Ï³Æ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ËÂФ·¤ÆÍ­¸ú¤Ë¤µ¤ì¤Æ¤¤¤ë¥Õ¥é¥°Á´¤Æ¤òɽ¼¨¤·
+¤Þ¤¹¡£
+
+Îã:
+
+       (parted) set 1 boot on
+
+
+2.4.15 quit
+------------
+       quit                          ¥×¥í¥°¥é¥à¤ò½ªÎ»¤·¤Þ¤¹
+
+Parted ¤ò½ªÎ»¤µ¤»¤Þ¤¹¡£Linux ¥«¡¼¥Í¥ë¤¬ Parted ¤¬¥Ç¥£¥¹¥¯¤ËÂФ·¤Æ¹Ô¤Ã¤¿
+Êѹ¹¤òÃΤë¤Î¤Ï¡¢Parted ¤¬½ªÎ»¤·¤¿¸å¤À¤±¤Ç¤¹¡£¤·¤«¤·¤Ê¤¬¤é¡¢¥³¥Þ¥ó¥É¤òÂǤÁ
+¹þ¤ó¤Ç°ú¤­µ¯¤³¤µ¤ì¤ëÊѹ¹¤Ï¡Ø¤ª¤½¤é¤¯¡Ù¡¢¥³¥Þ¥ó¥É¤òÂǤƤФ¹¤°¤µ¤Þ¥Ç¥£¥¹¥¯¤Ë
+È¿±Ç¤µ¤ì¤ë¤Ç¤·¤ç¤¦¡£¤Ç¤â¡¢Linux ¤Î¥­¥ã¥Ã¥·¥å¤ä¥Ç¥£¥¹¥¯¤Î¥Ï¡¼¥É¥¦¥§¥¢¡¦
+¥­¥ã¥Ã¥·¥å¤¬¤³¤ì¤òÃٱ䤵¤»¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£
+
+
+2.5    ¼ÂÎã
+------------------------------------------------------------------------------
+
+°Ê²¼¤ÎÎã¤Ç¡¢ºÇ¤â¤¢¤ê¤Õ¤ì¤¿¾õ¶·¤òÊñ´Þ¤¹¤ë¤è¤¦¤Ë»î¤ß¤Þ¤¹¡£Îã³°¤Ï¥Ç¥£¥¹¥¯¡¦
+¥¤¥á¡¼¥¸¥ó¥°¤Ç¡¢¤½¤ì¤Ï8¾Ï¤Ç°·¤ï¤ì¤Æ¤¤¤Þ¤¹¡£
+
+2.5.1  Îã 1
+-----------------
+
+¾õ¶·
+
+¤¢¤Ê¤¿¤Î¥Ç¥£¥¹¥¯¤Î³ä¤êÅö¤Æ¤¬¼¡¤Î¤è¤¦¤Ç¤¢¤ë¤È¹Í¤¨¤Æ¤¯¤À¤µ¤¤:
+
+       (parted) print
+       Disk geometry for /dev/hda: 0.000-1000.000 megabytes
+       Disk label type: msdos
+       Minor    Start       End     Type      Filesystem  Flags
+       1          0.063    500.000  primary   ext2
+       2        500.000    625.000  primary   linux-swap
+
+¤½¤Î¥Ç¥£¥¹¥¯¤ÎºÇ¸å¤Ë (¥Ñ¡¼¥Æ¥£¥·¥ç¥ó 2 ¤Î¸å¤Ë) 375 Mb ¤Î¶õ¤­Îΰ褬¤¢¤ê¤Þ¤¹¡£
+¥Ñ¡¼¥Æ¥£¥·¥ç¥ó 1 ¤Ï ext2 ¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤ò»ý¤Á¡¢¤½¤ì¤¬¥ë¡¼¥È¡¦¥Ç¥Ð¥¤¥¹¤Ç
+¤¹¡£¥Ñ¡¼¥Æ¥£¥·¥ç¥ó 2 ¤Ï¥¹¥ï¥Ã¥×¡¦¥Ç¥Ð¥¤¥¹¤Ç¤¹¡£
+
+¤½¤Î¥Ç¥£¥¹¥¯¤ÎºÇ¸å¤Î¶õ¤­Îΰè¤ò¥Ñ¡¼¥Æ¥£¥·¥ç¥ó 1 ¾å¤Î¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥àÍѤ˻È
+¤¤¤¿¤«¤Ã¤¿¤È¤·¤Þ¤¹¡£
+
+¼ê½ç¤Î¸«ËÜ
+
+(1) °Ê²¼¤ÎÃʳ¬¤Ç¡¢¥Ñ¡¼¥Æ¥£¥·¥ç¥ó 1 ¾å¤Î¥ë¡¼¥È¡¦¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤È¥Ñ¡¼¥Æ¥£
+¥·¥ç¥ó 2 ¾å¤Î¥¹¥ï¥Ã¥×¡¦¥Ç¥Ð¥¤¥¹¤ÎξÊý¤ò½¤Àµ¤·¤Þ¤¹¡£¤½¤ì¤æ¤¨¡¢¤É¤Á¤é¤Î¥Ñ¡¼
+¥Æ¥£¥·¥ç¥ó¤ò¤â»ÈÍѤ·¤Æ¤¤¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£Â¿Ê¬ Parted ¤Î¥Ö¡¼¥È¡¦¥Ç¥£¥¹¥¯¤ò
+»ÈÍѤ¹¤ë¤Ù¤­¤Ç¤¹ (¥»¥¯¥·¥ç¥ó 1.5 ¤ò»²¾È)¡£¤½¤Î¥Ö¡¼¥È¡¦¥Ç¥£¥¹¥¯¤«¤é¡¢Parted
+¤ò¼Â¹Ô¤·¤Þ¤¹:
+
+       # parted /dev/hda
+
+(2) ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó 2 (¥¹¥ï¥Ã¥×¡¦¥Ñ¡¼¥Æ¥£¥·¥ç¥ó) ¤ò½üµî¤·¤Þ¤¹¡£ÉáÄÌ¡¢¥Ç¡¼¥¿
+¤¬¾è¤Ã¤Æ¤¤¤ë¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤òºï½ü¤·¤¿¤¯¤Ï¤Ê¤¤¤Ç¤·¤ç¤¦¡£¤·¤«¤·¡¢¡Ö¥¹¥ï¥Ã¥×¡¦
+¥ª¥ó¡× (¥Þ¥¦¥ó¥È) ¤µ¤ì¤Æ¤¤¤Ê¤¤¤È¤­¡¢¥¹¥ï¥Ã¥×¡¦¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ï¥Ç¡¼¥¿¤ò´Þ¤ó
+¤Ç¤¤¤Þ¤»¤ó¤Î¤Ç¡¢¤½¤ì¤ò½üµî¤·¡¢Âå¤ï¤ê¤Î¥¹¥ï¥Ã¥×¡¦¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò¸å¤Çºî¤ë¤³¤È
+¤¬¤Ç¤­¤Þ¤¹¡£
+
+       (parted) rm 2
+
+(3) ¤½¤Î¥Ç¥£¥¹¥¯¤ÎºÇ¸å¤Ë¿·¤·¤¤¥¹¥ï¥Ã¥×¡¦¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤òºîÀ®¤·¤Þ¤¹:
+
+       (parted) mkpartfs primary linux-swap 875 999.9
+       (parted) print
+       Disk geometry for /dev/hda: 0.000-1000.000 megabytes
+       Disk label type: msdos
+       Minor    Start       End     Type      Filesystem  Flags
+       1          0.063    500.000  primary   ext2
+       2        875.000   1000.000  primary   linux-swap
+
+(4) ¶áÀܤ·¤¿¶õ¤­Îΰè¤Ë¸þ¤«¤Ã¤Æ¡¢¥Ñ¡¼¥Æ¥£¥·¥ç¥ó 1 ¤òÁýÂ礵¤»¤Þ¤¹:
+
+       (parted) resize 1 0.063 874.9
+
+½ª¤ï¤ê¤Þ¤·¤¿!
+
+       (parted) print
+       Disk geometry for /dev/hda: 0.000-1000.000 megabytes
+       Disk label type: msdos
+       Minor    Start       End     Type      Filesystem  Flags
+       1          0.063    874.999  primary   ext2
+       2        875.000   1000.000  primary   linux-swap
+
+
+2.5.2  Îã 2
+-----------------
+
+¾õ¶·
+
+¤¢¤Ê¤¿¤Î¥Ç¥£¥¹¥¯¤Î³ä¤ê°¸¤Æ¤¬¤³¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤È¹Í¤¨¤Æ¤¯¤À¤µ¤¤:
+
+       Disk geometry for /dev/hda: 0-8063.5 megabytes
+       Disk label type: msdos
+       Minor   Start     End    Type            Filesystem     Flags
+       1          0.0     23.5  primary         ext2           boot
+       2         23.5   8056.0  extended
+       5         23.6   3545.6  logical         ext2
+       6       3545.6   7067.7  logical         ext2
+       7       7067.7   7326.5  logical         ext2
+       8       7326.5   7585.4  logical         ext2
+       9       7585.4   7844.2  logical         linux-swap
+
+       Filesystem            Size  Used Avail Use% Mounted on
+       /dev/hda8             251M   31M  207M  13% /
+       /dev/hda1              23M  2.4M   19M  11% /boot
+       /dev/hda5             3.4G  577M  2.7G  18% /usr
+       /dev/hda6             3.4G  289M  2.9G   9% /home
+       /dev/hda7             251M   12M  226M   5% /var
+
+/home (/dev/hda6) ¤ÎÎΰè¤ò»È¤Ã¤Æ¡¢/var ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó (/dev/hda7) ¤ò 1GB ¤Ë
+Áý¤ä¤·¤¿¤«¤Ã¤¿¤È¤·¤Þ¤¹¡£
+
+Parted ¤Ç¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ÎÂ礭¤µ¤òÊѹ¹¤¹¤ë¤Î¤Ë¡¢resize ¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¤Þ¤¹:
+
+       (parted) resize PARTITION_NUMBER NEW_START NEW_END
+
+NEW_START ¤Ï (¤¢¤¤¤Ë¤¯) ext2 ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ç¤Ï°ÊÁ°¤Î³«»ÏÅÀ¤ÈƱ¤¸¤Ç¤Ê¤±¤ì¤Ð
+¤Ê¤ê¤Þ¤»¤ó¡£¤À¤«¤é¡¢¤³¤Î¼ê³¤­¤Ï¤«¤Ê¤êÊ£»¨¤Ë¤Ê¤ê¤Þ¤¹¡£¤½¤ì¤Ï²Äǽ¤Ç¤Ï¤¢¤ê¤Þ¤¹
+¤¬ :-)
+
+Ãí: ¤â¤· (FAT ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ç¤Ç¤­¤ë¤è¤¦¤Ë) Parted ¤¬ ext2 ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Î
+³«»ÏÅÀ¤Î°ÜÆ°¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤¿¤é¤Ê¤é¡¢¤½¤ì¤Ï¼è¤ë¤Ë­¤ê¤Ê¤«¤Ã¤¿¤Ç¤·¤ç¤¦:
+
+       (parted) resize 6 3545.6 6200
+       (parted) resize 7 6200 7326.5
+
+¼ê½ç¤Î¸«ËÜ:
+
+(1) /home ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó (/dev/hda6) ¤ò 500MB ½Ì¤á¤Þ¤¹:
+
+       # parted /dev/hda
+       (parted) resize 6 3545.6 6200
+
+(2) ¤½¤Î¾ì½ê¤Ë¿·¤·¤¤¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤òºîÀ®¤·¤Þ¤¹¡£¤³¤ì¤ÏºÇ½ªÅª¤Ë¤Ï /var ¤Ë
+¤Ê¤ë¤È¤³¤í¤Ç¤¹¡£¤³¤Î¿·¤·¤¤¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ï 10 ¤ÈÈÖ¹æÉÕ¤±¤µ¤ì¤Þ¤¹¡£
+
+       (parted) mkpartfs logical ext2 6200 7067.7
+
+(3) °ÊÁ°¤Î /var ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó (/dev/hda7) ¤ò¿·¤·¤¤Êý (/dev/hda10) ¤Ø¥³¥Ô¡¼
+¤·¤Þ¤¹¡£
+
+       (parted) cp 7 10
+
+(4) °ÊÁ°¤Î /var ¤òºï½ü¤·¤Þ¤¹¡£
+
+        (parted) rm 7
+
+
+¤³¤Î»þÅÀ¤Ç¡¢Á´¤Æ¤Î 7 °Ê¹ß¤ÎÏÀÍý¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ÏÈֹ椬ÊѤï¤Ã¤¿¤È¤³¤í¤Ç¤¹¡£
+¤À¤«¤é¡¢8¡¢9¡¢10 ¤Ï¤½¤ì¤¾¤ì 7¡¢8¡¢9 ¤Ë¤Ê¤ê¤Þ¤¹¡£
+
+¤³¤ÎÈÖ¹æ¤ÎºÆ³ä¤êÅö¤Æ¤Ï¡¢¤³¤Î¥Ç¥£¥¹¥¯¾å¤Î²¿¤é¤«¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤¬¥Þ¥¦¥ó¥È
+¤µ¤ì¤Æ¤¤¤ë´Ö¤Ë¤Ï¹Ô¤ï¤ì¤Þ¤»¤ó (¤³¤ì¤ÏºÆµ¯Æ°¤¹¤ë¤È¤­¤Ëµ¯¤­¤Þ¤¹)¡£¤½¤Î·Ù¹ð
+¥á¥Ã¥»¡¼¥¸¤¬¸ì¤Ã¤Æ¤¤¤ë¤Î¤Ï¤³¤Î¤³¤È¤Ç¤¹¡£¤À¤«¤é¡¢¤â¤·¤³¤Î¥á¥Ã¥»¡¼¥¸¤ò¼õ¤±
+¼è¤Ã¤¿¤Ê¤é¡¢Parted ¤Ë¤è¤Ã¤Æ±Æ¶Á¤òÍ¿¤¨¤é¤ì¤¿ (Parted ¤Ë¤è¤Ã¤ÆÂ礭¤µ¤¬Êѹ¹
+¤µ¤ì¤¿¤ê¡¢ºîÀ®¤µ¤ì¤¿¤ê¤·¤¿) ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ò¡¢ºÆµ¯Æ°°ÊÁ°¤Ë¥Þ¥¦¥ó¥È¤·¤è¤¦
+¤È»î¤ß¤Æ¤ÏÀäÂФ¤¤±¤Þ¤»¤ó¡£
+
+(5) (º£¤Ç¤Ï 9 ¤ÈÈÖ¹æÉÕ¤±¤é¤ì¤¿) ¿·¤·¤¤ /var ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ÎÂ礭¤µ¤ò¡¢
+°ÊÁ°¤Î /var ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤òÄɲ乤뤳¤È¤Ç¡¢Êѹ¹¤·¤Þ¤¹:
+       (parted) resize 9 6200 7326.5
+       (parted) quit
+       Warning: The kernel was unable to re-read the partition table on
+       /dev/hda (Device or resource busy).  This means Linux knows nothing
+       about any modifications you made.  You should reboot your computer
+       before doing anything with /dev/hda.
+
+(6) ¥Ñ¡¼¥Æ¥£¥·¥ç¥óÈֹ椬Êѹ¹¤µ¤ì¤¿¤Î¤Ç¡¢/etc/fstab ¤ò¹¹¿·¤·¤Ê¤±¤ì¤Ð¤Ê¤ê
+¤Þ¤»¤ó¡£¥ë¡¼¥È¡¦¥Ç¥Ð¥¤¥¹¤Ï Parted ¤Ë¤è¤Ã¤Æ±Æ¶Á¤µ¤ì¤Ê¤«¤Ã¤¿¤Î¤Ç¡¢¤³¤ì¤Ï
+ºÆµ¯Æ°¤¹¤ëÁ°¤Ë¹Ô¤¨¤Þ¤¹¡£(¤â¤· Parted ¤ò»È¤Ã¤Æ¥ë¡¼¥È¡¦¥Ç¥Ð¥¤¥¹¤Ë²¿¤«¤ò
+¤·¤¿¤¤¤Î¤Ç¤¢¤ì¤Ð¡¢¥Ö¡¼¥È¡¦¥Ç¥£¥¹¥¯¤ò»È¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹)¡£
+
+¤â¤·º£¤Þ¤Ç¤Î /etc/fstab ¤¬¤³¤ó¤Ê´¶¤¸¤À¤Ã¤¿¤é:
+
+/dev/hda8               /                       ext2    defaults        1 1
+/dev/hda1               /boot                   ext2    defaults        1 2
+/dev/hda6  /home  ext2  grpquota,usrquota  0  2
+/dev/cdrom              /mnt/cdrom              iso9660 noauto,owner,ro 0 0
+/dev/hda5               /usr                    ext2    defaults        1 2
+/dev/hda7  /var  ext2  grpquota,usrquota  0  2
+/dev/fd0                /mnt/floppy             auto    noauto,owner    0 0
+none                    /proc                   proc    defaults        0 0
+none                    /dev/pts                devpts  gid=5,mode=620  0 0
+/dev/hda9               swap                    swap    defaults        0 0
+
+¿ô¹Ô¤òÊѹ¹¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹:
+  * /var ¤Ïº£¤Ç¤Ï /dev/hda9 ¤Ç¤¹ (¿·¤·¤¤¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ë¥³¥Ô¡¼¤·¤¿¤«¤é)
+  * /dev/hda8 (¥ë¡¼¥È¡¦¥Ç¥Ð¥¤¥¹) ¤Ï /dev/hda7 ¤ËÈֹ椬Êѹ¹¤µ¤ì¤Æ¤¤¤Þ¤¹
+  * /dev/hda9 (¥¹¥ï¥Ã¥×¡¦¥Ç¥Ð¥¤¥¹) ¤Ï /dev/hda8 ¤ËÈֹ椬Êѹ¹¤µ¤ì¤Æ¤¤¤Þ¤¹
+
+¿·¤·¤¤ /etc/fstab ¤Ï¤³¤ó¤Ê´¶¤¸¤Ç¤¹:
+
+/dev/hda7               /                       ext2    defaults        1 1
+/dev/hda1               /boot                   ext2    defaults        1 2
+/dev/hda6  /home  ext2  grpquota,usrquota  0  2
+/dev/cdrom              /mnt/cdrom              iso9660 noauto,owner,ro 0 0
+/dev/hda5               /usr                    ext2    defaults        1 2
+/dev/hda9  /var  ext2  grpquota,usrquota  0  2
+/dev/fd0                /mnt/floppy             auto    noauto,owner    0 0
+none                    /proc                   proc    defaults        0 0
+none                    /dev/pts                devpts  gid=5,mode=620  0 0
+/dev/hda8               swap                    swap    defaults        0 0
+
+(7) ºÆµ¯Æ°¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤ì¤Ç¤ª¤·¤Þ¤¤¡ª
+
+[ÌõÃí: ¤·¤«¤·¤³¤ì¤À¤È¡¢¸µ¡¹ /var ¤Î¤¢¤Ã¤¿¤È¤³¤í¤Ï̤»ÈÍѤΤޤ޻Ĥµ¤ì¤Æ¤·¤Þ¤¦
+¤Î¤Ç¡¢¤Á¤ç¤Ã¤È¤â¤Ã¤¿¤¤¤Ê¤¤µ¤¤¬¤¹¤ë... ¤¿¤Ã¤¿¤Î5%¤·¤«»È¤Ã¤Æ¤¤¤Ê¤¤¤ó¤À¤«¤é¡¢
+tar ¤Ç¸Ç¤á¤Æ¡¢/home ¤Ë¤Ç¤âÃÖ¤¤¤È¤¤¤Æ¡¢¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤òºî¤êľ¤·¤Æ¡¢tar
+¤ÇÉü¸µ¤·¤¿Êý¤¬Îɤ¤¤Î¤Ç¤Ï¡©]
+
+
+------------------------------------------------------------------------------
+3      BIOS ¤È¥Õ¥¡¡¼¥à¥¦¥§¥¢
+------------------------------------------------------------------------------
+¡ÖBIOS¡× (´ðËÜÆþ½ÐÎÏ¥·¥¹¥Æ¥à) ¤È¡Ö¥Õ¥¡¡¼¥à¥¦¥§¥¢¡×¤ÏƱ¤¸¤â¤Î¤ò°ÕÌ£¤·¤Þ¤¹¡£
+¤·¤«¤·¡¢PC ¤ä PC98 ¤Ë´ð¤Å¤¯¥³¥ó¥Ô¥å¡¼¥¿¤Ç¤Ï¡¢BIOS ¤È¤¤¤¦¸ÀÍÕ¤ÎÊý¤¬ÉáÄ̤Ǥ¹¡£
+Apple Macintosh ¤ä Sun ¤Î¥³¥ó¥Ô¥å¡¼¥¿¤Ç¤Ï¡¢¡Ö¥Õ¥¡¡¼¥à¥¦¥§¥¢¡×¤È¤¤¤¦¸ÀÍÕ¤ÎÊý
+¤¬ÉáÄ̤Ǥ¹¡£
+       BIOS ¤ä¥Õ¥¡¡¼¥à¥¦¥§¥¢¤Î¥×¥í¥°¥é¥à¤Ï¥³¥ó¥Ô¥å¡¼¥¿ÆâÉô¤Î ROM ¥Á¥Ã¥×¤Ë
+ÁȤ߹þ¤Þ¤ì¤Æ¤ª¤ê¡¢¥á¥â¥ê¤Î¸¡ºº¤Ê¤É¤ò¹Ô¤¤¤Þ¤¹¡£¤³¤Î¥×¥í¥°¥é¥à¤Ï (ÍưפˤÏ)
+Êѹ¹¤Ç¤­¤Þ¤»¤ó¡£º£Æü¤Î BIOS ¤Ï°ìÈÌŪ¤Ë 20 Ç¯Á°¤Ë»È¤ï¤ì¤¿ BIOS ¤È¸ß´¹¤Ê¤Î¤Ç¡¢
+¤³¤ì¤é¤Î¥×¥í¥°¥é¥à¤Ï¸Å¤á¤«¤·¤¤À߷פǤ¢¤ë·¹¸þ¤¬¤¢¤ê¤Þ¤¹¡£²¿Ç¯¤Ë¤âÅϤäơ¢
+ȿľ´ÑŪ¤ÊÊýË¡¤Çµ¡Ç½¤¬Äɲ䵤ì¤Æ¤­¤Æ¤ª¤ê¡¢º£Æü¤Ç¤Ï¿¤¯¤Îº®Íð¤ò¤â¤¿¤é¤¹¡¢
+¤¢¤Þ¤ê¤ËÈÑ»¨¤Ê¥·¥¹¥Æ¥à¤ËƳ¤¤¤Æ¤·¤Þ¤Ã¤Æ¤¤¤Þ¤¹¡£
+
+3.1    PC BIOS
+------------------------------------------------------------------------------
+¿ô¼ï¤ÎÉáµÚ¤·¤¿ PC BIOS ¤¬¤¢¤ê¤Þ¤¹: AmiBIOS¡¢Award¡¢Phoenix ¤ä¾¤Î¤â¤Î¤Ç¤¹¡£
+¤½¤ì¤é¤ÏÁ´¤Æ»÷¤¿¤è¤¦¤Ê¤ä¤êÊý¤ÇÆ°ºî¤·¤Þ¤¹¡£¤³¤ì¤é¤Î BIOS ¤Ï¤É¤ì¤â¥Ñ¡¼¥Æ¥£
+¥·¥ç¥ó¡¦¥Æ¡¼¥Ö¥ë¤òÍý²ò¤·¤¿¤ê¡¢ÃΤäƤ¤¤¿¤ê¤Ï¤·¤Þ¤»¤ó¡£¤½¤ì¤é¤Ï´ÖÀÜŪ¤Ë¥Ñ¡¼
+¥Æ¥£¥·¥ç¥Ë¥ó¥°¤Ë±Æ¶Á¤·¤Þ¤¹¡£
+       ¤¢¤Ê¤¿¤Î¥³¥ó¥Ô¥å¡¼¥¿¤¬µ¯Æ°¤¹¤ë¤È¤­:
+(1) ¤³¤ì¤é¤Î BIOS ¤Ï¥Ï¡¼¥É¡¦¥Ç¥£¥¹¥¯¾å¤Î MBR (¥Þ¥¹¥¿¡¼¡¦¥Ö¡¼¥È¡¦¥ì¥³¡¼¥É)
+¤Ë¼ý¤á¤é¤ì¤¿¡¢¥Ö¡¼¥È¡¦¥í¡¼¥À¡¦¥×¥í¥°¥é¥à¤ÎºÇ½é¤Î¤ï¤º¤«¤ÊÉôʬ¤ò¥í¡¼¥É¤·¤Þ¤¹¡£
+(2) BIOS ¤Ï¤½¤Î¥Ö¡¼¥È¡¦¥í¡¼¥À¤ÎºÇ½é¤Î¤ï¤º¤«¤ÊÉôʬ¤ò¼Â¹Ô¤·¤Þ¤¹¡£
+(3) ¤½¤Î¥Ö¡¼¥È¡¦¥í¡¼¥À¡¦¥×¥í¥°¥é¥à¤Ï¤½¤ì¼«¿È¤Î»Ä¤ê¤ò¥í¡¼¥É¤¹¤ë¤Î¤Ë¡¢BIOS ¤ò
+»ÈÍѤ·¤Þ¤¹¡£
+(4) ¤½¤Î¥Ö¡¼¥È¡¦¥í¡¼¥À¤Ï¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥à (¤¢¤ë¤¤¤Ï¡¢Â¾¤Î¥Ö¡¼¥È¡¦
+¥í¡¼¥À¡¢¤½¤Î¾ì¹ç¤Ï¥¹¥Æ¥Ã¥× 2 ¤ËºÆ¤ÓÌá¤ê¤Þ¤¹) ¤ò¥í¡¼¥É¤¹¤ë¤Î¤Ë¡¢BIOS ¤ò»ÈÍÑ
+¤·¤Þ¤¹¡£
+(5) ¤½¤Î¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥à¤ÏÄ̾ï¤Î¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤Ø¤Î¥¢¥¯¥»¥¹¤ò
+¹Ô¤¦¤Î¤Ë¡¢BIOS ¤ò»ÈÍѤ·¤¿¤ê¡¢¤·¤Ê¤«¤Ã¤¿¤ê¤·¤Þ¤¹¡£ (Windows ¤ÏÉáÄ̹Ԥ¤¡¢Linux
+¤ä BSD ¤Ï¤·¤Þ¤»¤ó)
+
+       ¥¹¥Æ¥Ã¥× (3) ¤«¤é (5) ¤Ï¡¢¥Ç¥£¥¹¥¯¤ËÏä·¤«¤±¤ë¤è¤¦¤ËÍ׵᤹¤ë¤Î¤Ë¡¢
+BIOS ¤ÈÄÌ¿®¤¹¤ë¥×¥í¥°¥é¥à¤ò´Þ¤ß¤Þ¤¹¡£BIOS ¤ËÏä·¤«¤±¤ë¤Î¤ËÆó¤Ä¤Î¤ä¤êÊý¤¬
+¤¢¤ê¤Þ¤¹: CHS (¥·¥ê¥ó¥À¡¢¥Ø¥Ã¥É¡¢¤½¤·¤Æ¡¢¥»¥¯¥¿) ¤ò»È¤Ã¤Æ¡¢¤¢¤ë¤¤¤Ï¡¢LBA
+(¥ê¥Ë¥¢¡¦¥Ö¥í¥Ã¥¯¡¦¥¢¥É¥ì¥Ã¥·¥ó¥°) ¤ò»È¤Ã¤Æ¡£¸Å¤á¤Î BIOS ¤Ï CHS ¤À¤±¤ò¥µ
+¥Ý¡¼¥È¤·¤Þ¤¹¡£CHS ¥µ¥Ý¡¼¥È¤Ï¾­Íè¾Ã¤¨µî¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¤¬¡¢¿·¤·¤¤ BIOS ¤Ï
+ÉáÄÌ LBA ¤È CHS ¤ÎξÊý¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¡£ (CHS ¤Ï³µ¤·¤Æ¤ª¤¾¤Þ¤·¤¤°äʪ¤Ç
+¤¢¤ë¤È¹Í¤¨¤é¤ì¤Æ¤¤¤Þ¤¹) (ÌõÃí: ¾Ã¤¨µî¤ë¤³¤È¤Ï¤Ê¤¤¤Ç¤·¤ç¤¦¡¢PC ¤¬¤¢¤ë¸Â¤ê)
+       ¥Ö¡¼¥È¡¦¥í¡¼¥À¤Ë¤è¤Ã¤Æ¹Ô¤ï¤ì¤ë¡¢¥¹¥Æ¥Ã¥× (3) ¤È (4) ¤Ï¾ï¤ËƱ¤¸¥¢¥¯
+¥»¥¹¼êË¡¤ò»È¤¦¤Ç¤·¤ç¤¦ - ¾ï¤Ë LBA ¤«¡¢¾ï¤Ë CHS ¤Ç¡£Windows ¤Î¥Ö¡¼¥È¡¦¥í¡¼¥À
+¤Î¾ì¹ç¡¢¤³¤ì¤Ï Windows ¤Î¥Ö¡¼¥È¡¦¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¾å¤Î LBA ¥Õ¥é¥°¤Ë¤è¤Ã¤Æ·èÄê
+¤µ¤ì¤Þ¤¹¡£(¥Õ¥é¥°¤Ë´Ø¤¹¤ë¾ðÊó¤Ï¡¢2.4.14 ¤ò»²¾È)¡£ Linux ¤Î¾ì¹ç¡¢¤ª¤½¤é¤¯
+LILO ¤« GRUB ¤ò¥Ö¡¼¥È¡¦¥í¡¼¥À¤È¤·¤Æ»ÈÍѤ·¤Æ¤¤¤ë¤Ç¤·¤ç¤¦¡£ GRUB ¤ÏÍøÍѲÄǽ¤Ê
+¤é¡¢LBA ¤ò»È¤¤¡¢¤µ¤â¤Ê¤±¤ì¤Ð CHS ¤ò»È¤¤¤Þ¤¹¡£ LILO ¤Ï¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤È¤­¡¢
+ÁªÂò¤¹¤ë¤³¤È¤òÍ׵ᤷ¤Þ¤¹ (linear¡¢¤¢¤ë¤¤¤Ï lba32 ¥ª¥×¥·¥ç¥ó¤Ç)¡£
+       ¥¹¥Æ¥Ã¥× (5) - ¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥à¤Ë¤è¤Ã¤ÆÆþ½ÐÎϤ¬¹Ô¤ï¤ì¤ë -
+Windows ¤À¤±¤¬ BIOS ¤Ë¤è¤Ã¤ÆÆþ½ÐÎϤò¹Ô¤¤¤Þ¤¹¡£ [²æ¡¹¤Ï¤Þ¤À¤½¤ÎÌäÂê¤Ë¤Ä¤¤¤Æ
+½½Ê¬¤Ë¤Ïʬ¤«¤ê¤Þ¤»¤ó¤¬¡¢Windows ¤Ï CHS ¥â¡¼¥É¤Ç¤½¤ì¼«¿È¤ÎÌäÂê¤òÊú¤¨¤Æ¤¤¤ë
+¤è¤¦¤Ë¸«¤¨¤Þ¤¹¡£¿Í¡¹¤Ï Windows ¤¬¤½¤ì¼«¿È¤Î¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤Ê¤É¤òÂÌÌܤË
+¤¹¤ë¾ì¹ç¤Ë¤Ä¤¤¤Æ¶µ¤¨¤Æ¤¯¤ì¤Þ¤·¤¿¡£²æ¡¹¤Ë¤Ï¡¢²¿¤¬µ¯¤­¤Æ¤¤¤ë¤Î¤«¤òÃΤë¤Î¤¬ËÜÅö
+¤Ëº¤Æñ¤Ç¤¹¡£¤Ç¤­¤ë¤³¤È¤Ê¤é¡¢LBA ¤ò»È¤¦¤³¤È¤ò¶¯¤¯´«¤á¤Þ¤¹!]
+       ¤À¤«¤é¡¢»°¤Ä¤Î¾õ¶·¤¬¤¢¤ê¤¨¡¢¤½¤ì¤é¤ÏÁ´¤Æ¤³¤³¤Ç¥«¥Ð¡¼¤µ¤ì¤Æ¤¤¤Þ¤¹:
+(1) CHS ¥â¡¼¥É¤ò»È¤Ã¤Æ¤¤¤Æ¡¢¤¢¤Ê¤¿¤Î BIOS ¤Ï CHS ¥â¡¼¥É¤À¤±¤ò¥µ¥Ý¡¼¥È¤·¤Æ
+¤¤¤Þ¤¹¡£
+(2) CHS ¥â¡¼¥É¤ò»È¤Ã¤Æ¤¤¤Æ¡¢¤¢¤Ê¤¿¤Î BIOS ¤Ï CHS ¤È LBA ¤ÎξÊý¤ò¥µ¥Ý¡¼¥È¤·
+¤Æ¤¤¤Þ¤¹¡£¤À¤«¤é¡¢CHS ¥â¡¼¥É¤«¤é LBA ¥â¡¼¥É¤Ø¡¢²Äǽ¤Ê¸Â¤êÁ᤯¡¢ÊÑ´¹¤·¤¿¤¤
+¤Ç¤¹¡£
+(3) LBA ¥â¡¼¥É¤ò¤¹¤Ç¤Ë»È¤Ã¤Æ¤¤¤Þ¤¹¡£
+
+3.1.1  CHS ¥â¡¼¥É¤Ç¤Î Parted ¤Î»ÈÍÑ
+----------------------------------
+Linux ¤ÏÄ̾ï BIOS ¤Î¥¸¥ª¥á¥È¥ê¤ò¼«Æ°Åª¤Ë¸¡½Ð¤·¤Þ¤¹¡£¤·¤«¤·¡¢¤È¤­¤É¤­´Ö°ã¤¤¤ò
+ÈȤ·¤Þ¤¹¡£¤³¤Î¾ì¹ç¡¢Linux ¤Ø¥Ñ¥é¥á¡¼¥¿¤òÅϤ¹¤³¤È¤Ë¤è¤Ã¤Æ¡¢¼«Ê¬¤Ç¶µ¤¨¤Æ¤¢¤²¤ë
+¤Ù¤­¤Ç¤¹¡£Î㤨¤Ð¡¢Linux ¤¬¥Ï¡¼¥É¡¦¥É¥é¥¤¥Ö /dev/hda ¤Ï¥¸¥ª¥á¥È¥ê 256/64/63
+¤ò»ý¤Ä¤È¹Í¤¨¡¢BIOS ¤ÎÀßÄê¥×¥í¥°¥é¥à¤Ï¤½¤Î¥¸¥ª¥á¥È¥ê¤Ï 512/32/63 ¤À¤È½ñ¤¤¤Æ¤¤
+¤ë¤Ê¤é¡¢¤³¤Î¥Ñ¥é¥á¡¼¥¿¤ò Linux ¤ËÅϤ¹¤ÈÎɤ¤¤Ç¤·¤ç¤¦:
+
+       hda=512,32,63
+
+¥Ñ¥é¥á¡¼¥¿¤Ï¡¢¤É¤ó¤Ê¥Ö¡¼¥È¡¦¥í¡¼¥À¤ò»È¤Ã¤Æ¤¤¤ë¤«¤Ë°Í¤ê¡¢°Û¤Ã¤¿ÊýË¡¤ÇÅϤµ¤ì
+¤Þ¤¹¡£¤ª¤½¤é¤¯ LILO ¤ò»È¤Ã¤Æ¤¤¤Þ¤¹¡£¤³¤Î¾ì¹ç¡¢¼¡¤Î¹Ô¤ò /etc/lilo.conf ¤ËÄɲÃ
+¤·¤Þ¤¹: (¤½¤·¤Æ¡¢¤½¤ÎÊѹ¹¤¬È¿±Ç¤µ¤ì¤ë¤è¤¦¤Ë¡¢/sbin/lilo ¤ò¼Â¹Ô¤·¡¢ºÆµ¯Æ°¤¹¤ë
+ɬÍפ¬¤¢¤ê¤Þ¤¹)
+
+       append="hda=512,32,63"
+
+Parted ¤ÏÉáÄÌ Linux ¤¬´Ö°ã¤Ã¤¿¥¸¥ª¥á¥È¥ê¤ò¸¡½Ð¤·¤¿¤«¤É¤¦¤«¤ò¸¡½Ð¤Ç¤­¤Þ¤¹¡£
+¤·¤«¤·¡¢¥Ç¥£¥¹¥¯¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤¬¤Ê¤¤¤È¡¢¤³¤ì¤Ï¤Ç¤­¤Þ¤»¤ó¡£¤³¤Î¾ì¹ç¡¢¼«Ê¬¤Ç
+¸¡ºº¤¹¤ë¤Ù¤­¤Ç¤¹¡£¤³¤ì¤ò¹Ô¤¦¤Î¤ÏÈó¾ï¤Ë½ÅÍפǤ¹¡£
+       ¤È¤­¤É¤­¡¢Parted ¤Ï¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤¬¥·¥ê¥ó¥À¶­³¦¤Ë·¤Ã¤Æ¤¤¤Ê¤¤¤Èʸ¶ç
+¤ò¸À¤¦¤Ç¤·¤ç¤¦¡£Parted ¤Ï̵»ë¤¹¤ë¤¿¤á¤Î¥ª¥×¥·¥ç¥ó¤òÄ󶡤¹¤ë¤Ç¤·¤ç¤¦¡£¤â¤·
+̵»ë¤¹¤ë¤Ê¤é¡¢Parted ¤Ï¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¡¦¥Æ¡¼¥Ö¥ë¤Ë¤¤¤¯¤Ä¤«¤Î·ÝÅö¤ò¹Ô¤¦¤Ç¤·¤ç¤¦¡£
+Linux ¤Ë¤Ï²¿¤ÎÌäÂê¤â¤Ê¤¤¤Ç¤·¤ç¤¦¡£DOS ¤ä Windows ¤Ï¡¢¤â¤· LBA ¥â¡¼¥É¤ò»È¤Ã¤Æ
+¤¤¤ë¤Ê¤é¡¢ÌäÂê¤Ê¤¤¤Ç¤·¤ç¤¦¡£¤â¤· DOS/Windows ¤¬ CHS ¥â¡¼¥É¤ò»È¤Ã¤Æ¤¤¤ë¤Ê¤é¡¢
+¤½¤Î¥Ö¡¼¥È¡¦¥í¡¼¥À¤òºÆ¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ì¤Ð (¥»¥¯¥·¥ç¥ó 4.3 ¤ò»²¾È)¡¢¤É¤ó¤ÊÌäÂê
+¤â²ò·è¤¹¤ë¤Ï¤º¤Ç¤¹ - ¤Ç¤â¡¢LBA ¥â¡¼¥É¤Ø¤ÎÀڤ괹¤¨¤¬Ë¾¤Þ¤·¤¤¤Ç¤¹ (°Ê²¼¤Î¡¢
+3.1.2 ¤ò»²¾È)¡£
+       ¥Ö¡¼¥È²áÄø¤Ë´Ø·¸¤¹¤ë¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ï¡¢¤â¤· CHS ¥â¡¼¥É¤¬»È¤ï¤ì¤Æ¤¤¤ë
+¤Ê¤é¡¢¥·¥ê¥ó¥À 1024 ¤è¤êÁ°¤Ç½ª¤ï¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£¤¢¤ë¥Ñ¡¼¥Æ¥£¥·¥ç¥ó
+¤¬¥Ö¡¼¥È²áÄø¤Ë´Ø·¸¤·¤Æ¤¤¤ë¤«¤É¤¦¤«¤ò·èÄꤹ¤ë¤Î¤Ë¡¢¥Ö¡¼¥È¡¦¥í¡¼¥À¤Ë´Ø¤¹¤ë¥»¥¯
+¥·¥ç¥ó¤ò¸«¤Æ¤¯¤À¤µ¤¤¡£Åµ·¿Åª¤ÊÀßÄê¤Ï¡¢¾®¤µ¤Ê Linux ¤Î /boot ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¡¢
+Windows ¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¡¢¤½¤·¤Æ¡¢Linux ¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò»ý¤Ã¤Æ¤¤¤ë¤â¤Î¤Ç¤¹¡£
+
+3.1.2  CHS ¤«¤é LBA ¤Ø¤ÎÊÑ´¹
+----------------------------------
+Windows ¤Î¥Ö¡¼¥È¡¦¥í¡¼¥À¡¢µÚ¤Ó¡¢¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥à¤Ë LBA ¥â¡¼¥É¤ò
+»È¤ï¤»¤ë¤Ë¤Ï¡¢Á´¤Æ¤Î FAT ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¾å¤Î LBA ¥Õ¥é¥°¤òΩ¤Æ¤ë¤À¤±¤Ç¤¹
+(¥»¥¯¥·¥ç¥ó 2.4.14 ¤ò»²¾È)¡£²¿¤âÌäÂê¤Ê¤¤¤Ï¤º¤Ç¤¹¡£¤â¤· Windows ¤òµ¯Æ°¤¹¤ë
+¤Î¤ËÌäÂ꤬¤¢¤ì¤Ð¡¢Windows ¤Î¥Ö¡¼¥È¡¦¥í¡¼¥À¤òºÆ¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ
+ľ¤»¤Þ¤¹ (¥»¥¯¥·¥ç¥ó 4.3 ¤ò»²¾È)¡£
+       Linux ¤ÏÆþ½ÐÎϤˠBIOS ¤ò»È¤¤¤Þ¤»¤ó¡£¤·¤«¤·¡¢¥Ö¡¼¥È¡¦¥í¡¼¥À (LILO ¤ä
+GRUB) ¤Ï¤¹¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£¤â¤·²Äǽ¤Ê¤é¡¢GRUB ¤Ï¼«Æ°Åª¤Ë LBA ¤ò»È¤¤¤Þ¤¹¡£
+LILO ¤Ï¡Ölinear¡×¤ä¡Ölba32¡×¥ª¥×¥·¥ç¥ó¤òɬÍפȤ·¤Þ¤¹¡£¤À¤«¤é¡¢¤â¤· LILO ¤¬
+/etc/lilo.conf ¤òÊѹ¹¤·¡¢/sbin/lilo ¤ÇºÆ¥¤¥ó¥¹¥È¡¼¥ë (¥»¥¯¥·¥ç¥ó 4.1 ¤ò»²¾È)
+¤·¤¿¸å¤Ç¤âµ¯Æ°¤¹¤ë¤Ê¤é¡¢Á´Éô½ª¤ï¤Ã¤Æ¤Þ¤¹! (¤â¤·ÌäÂ꤬¤¢¤ì¤Ð¡¢¡Ölinear¡×¤ä
+¡Ölba32¡×¤òºï½ü¤·¡¢¥Ö¡¼¥È¡¦¥Ç¥£¥¹¥¯¤«¤é LILO ¤òºÆ¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢
+CHS ¤ËÌᤷ¤Æ¤¯¤À¤µ¤¤)
+
+º£¤ä LBA ¤ò»È¤Ã¤Æ¤¤¤ë¤Î¤Ç¡¢Æɤ߿ʤó¤Ç¤¯¤À¤µ¤¤...
+
+3.1.3  LBA ¥â¡¼¥É
+----------------
+LBA ¤Ï CHS ¤ÎÌäÂê¤ÎÁ´¤Æ¤ò²ò·è¤·¤Þ¤¹¡£¤·¤«¤·¡¢Linux ¤ä Parted ¤¬ LBA ¤ò»È¤Ã
+¤Æ¤¤¤ë¤³¤È¤ò¸«Ê¬¤±¤ë¡¢¿®Íê¤Ç¤­¤ëÊýË¡¤Ï¤Ê¤¤¤Î¤Ç¡¢Parted ¤Ï·¤Ã¤Æ¤¤¤Ê¤¤¥·¥ê¥ó¥À
+¤ä¡¢Ì·½â¤·¤¿ BIOS ¥¸¥ª¥á¥È¥ê¤Ë¤Ä¤¤¤Æ·Ù¹ð¤òÍ¿¤¨¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£¤â¤· LBA
+¥â¡¼¥É¤ò»È¤Ã¤Æ¤¤¤ë¤Ê¤é¡¢¤³¤ì¤é¤Î¥á¥Ã¥»¡¼¥¸¤Ï̵»ë¤·¤Æ¤«¤Þ¤¤¤Þ¤»¤ó¡£ (Parted
+¤Î¸Å¤¤¥Ð¡¼¥¸¥ç¥ó¤Ç¤ÏÌäÂ꤬¤¢¤ê¤Þ¤·¤¿¤¬¡¢¤½¤ì¤é¤ÏÁ´¤Æ²ò·èºÑ¤ß¤Ç¤¹)
+
+¤â¤·¥Ç¥£¥¹¥¯¤¬ LBA ¥â¡¼¥É¤Ç¤¢¤ë¤Ê¤é¡¢Parted (¤ä¾¤Î¤Û¤È¤ó¤É¤Î¥×¥í¥°¥é¥à) ¤Ï
+CHS ¥¸¥ª¥á¥È¥ê¤Ï X/255/63 ¤Ç¤¢¤ë¤Èɽ¸½¤¹¤ë¤Ç¤·¤ç¤¦ - CHS ¤«¤é LBA ¤ËÀڤ괹¤¨
+¤¿¤Î¤Ç¤Ê¤±¤ì¤Ð¡£
+
+3.2    Macintosh OpenFirmware
+------------------------------------------------------------------------------
+PowerMac ¤Î OpenFirmware ¤Ë¤ÏÆó¤Ä¤Î¼çÍפʥС¼¥¸¥ç¥ó¤¬¤¢¤ê¤Þ¤¹ - ¡Ö¸Å¤¤À¤³¦¡×
+(old world) ¤Ç»È¤ï¤ì¤Æ¤¤¤ë¤â¤Î¤È¡¢¡Ö¿·¤·¤¤À¤³¦¡× (new world) ¤Î PowerMac ¤Ç
+¤Î¤â¤Î¤Ç¤¹¡£¤½¤ì¤é¤Ë¤Ï½ÅÂç¤Ê°ã¤¤¤¬¤¢¤ê¤Þ¤¹¡£¤·¤«¤·¡¢Î¾Êý¤È¤â¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¡¦
+¥Æ¡¼¥Ö¥ë¤òÍý²ò¤·¤Þ¤¹¡£
+       Î¾Êý¤È¤â¡¢¥æ¡¼¥¶¤¬¸·Ì©¤Ë°ì¤Ä¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò¥Ö¡¼¥È¡¦¥Ñ¡¼¥Æ¥£¥·¥ç¥ó
+(¥Ö¡¼¥È¡¦¥í¡¼¥À¤Î¤¢¤ë¥Ñ¡¼¥Æ¥£¥·¥ç¥ó) ¤ËÁª¤Ö¤³¤È¤òÍ׵ᤷ¤Þ¤¹¡£¤·¤«¤·¡¢¤³¤ì¤ò
+¹Ô¤¦¤Î¤Ë¡¢¤½¤ì¤é¤Ï°ã¤Ã¤¿»ÅÁȤߤòÍѤ¤¤Þ¤¹¡£
+
+3.2.1  ¸Å¤¤À¤³¦¤Î OpenFirmware
+------------------------------
+µ¯Æ°¤¹¤ë¤è¤¦¤ËÁª¤Ð¤ì¤¿¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ï¡¢Quik ¤Î¤è¤¦¤Ê¡¢¤µ¤Þ¤¶¤Þ¤Ê¥Ö¡¼¥È¡¦
+¥í¡¼¥À¤Ë¤è¤Ã¤ÆÀßÄꤵ¤ì¤Þ¤¹¡£¤À¤«¤é¡¢¤¢¤Ê¤¿¤Ï²¿¤â¤·¤Ê¤¯¤ÆÎɤ¤¤Ï¤º¤Ç¤¹¡£²æ¡¹¤Ï
+¤³¤ì¤ËÂФ¹¤ë¥µ¥Ý¡¼¥È¤ò Parted ¤ËÄɲ乤ë¤Ç¤·¤ç¤¦¡¢¤â¤·Ã¯¤«½½Ê¬¤ËÁû¤¬¤·¤¯¶«¤ó
+¤À¤é...
+
+3.2.2  ¿·¤·¤¤À¤³¦¤Î OpenFirmware
+------------------------------
+¿·¤·¤¤À¤³¦¤Î OpenFirmware ¤Ï¥Ö¡¼¥È¡¦¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤¬ HFS ¤Ç¤¢¤ê¡¢¥Ö¡¼¥È¡¦
+¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤È¤·¤Æ°õ¤¬ÉÕ¤±¤é¤ì¤Æ¤¤¤ë¤³¤È¤òɬÍפȤ·¤Þ¤¹¡£¥Ö¡¼¥È¡¦¥Ñ¡¼¥Æ¥£
+¥·¥ç¥ó¤È¤·¤Æ°õ¤òÉÕ¤±¤ë¤Î¤Ë¡¢°Û¤Ê¤ë»ÅÁȤߤò»È¤¤¤Þ¤¹¡£¤³¤ì¤Ï Parted ¤Î¡Öboot¡×
+¥Õ¥é¥°¤Ç´ÉÍý¤·¤Þ¤¹¡£Î㤨¤Ð:
+
+       (parted) set 2 boot on
+
+
+3.3    PC98 BIOS
+------------------------------------------------------------------------------
+PC98 BIOS ¤Ï¤¤¤¯¤Ä¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ë¤Ç¤â¡¢µ¯Æ°²Äǽ¤À¤È°õ¤òÉÕ¤±¤é¤ì¤ë¤è¤¦¤Ë
+¤·¤Æ¤¤¤Þ¤¹¡£Parted ¤Î¡Öboot¡×¥Õ¥é¥°¤Ç¡¢¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤òµ¯Æ°²Äǽ¤À¤È°õ¤òÉÕ¤±
+¤¿¤ê¡¢³°¤·¤¿¤ê¤Ç¤­¤Þ¤¹¡£Î㤨¤Ð:
+
+       (parted) set 2 boot off
+
+
+------------------------------------------------------------------------------
+4      ¥Ö¡¼¥È¡¦¥í¡¼¥À
+------------------------------------------------------------------------------
+¥Ö¡¼¥È¡¦¥í¡¼¥À¤Ï¡¢»È¤¤¤¿¤¤¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥à¤òÁª¤ó¤À¤ê¡¢¤½¤Î¥ª¥Ú
+¥ì¡¼¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥à¤ò¥í¡¼¥É¤¹¤ë¤³¤È¤ò²Äǽ¤Ë¤¹¤ë¥×¥í¥°¥é¥à¤Ç¤¹¡£Æäˡ¢
+¤â¤·Ê£¿ô¤Î¼ïÎà¤Î¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥à¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤¤¤ë¤Ê¤é¡¢Ê£¿ô
+¤Î¥Ö¡¼¥È¡¦¥í¡¼¥À¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤¤¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£¥Ö¡¼¥È¡¦¥í¡¼¥À¤Ë¤È¤Ã¤Æ¡¢
+¾¤Î¥Ö¡¼¥È¡¦¥í¡¼¥À¤ò¥í¡¼¥É¤Ç¤­¤ë¤Î¤ÏÅö¤¿¤êÁ°¤Î¤³¤È¤Ç¤¹¡£
+
+¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ÎÂ礭¤µ¤òÊѹ¹¤¹¤ë¤È¤­¡¢Â¿Î̤Υǡ¼¥¿¤¬°ÜÆ°¤µ¤»¤é¤ì¤Þ¤¹¡£Â¿¤¯¤Î
+¥Ö¡¼¥È¡¦¥í¡¼¥À¤Ï¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤òÍý²ò¤·¤Þ¤»¤ó¡£¤½¤ì¤é¤Ïñ¤ËɬÍפȤµ¤ì¤ë
+¥Ö¡¼¥È¡¦¥í¡¼¥À¤Î¾ðÊ󤬥ǥ£¥¹¥¯¾å¤Î¤É¤³¤Ë¤¢¤ë¤«¤òµ­²±¤·¤Æ¤¤¤ë¤À¤±¤Ç¤¹¡£¤â¤·
+¤³¤Î¾ðÊó¤¬Æ°¤«¤µ¤ì¤¿¤é¡¢¤½¤ì¤¬¤É¤³¤Ë°ÜÆ°¤µ¤»¤é¤ì¤¿¤«¶µ¤¨¤Æ¤¢¤²¤Ê¤±¤ì¤Ð¤Ê¤ê
+¤Þ¤»¤ó¡£¤³¤ì¤Ï¤½¤Î¥Ö¡¼¥È¡¦¥í¡¼¥À¤òºÆ¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¹Ô¤ï¤ì¤Þ¤¹
+(¤Ä¤Þ¤ê¡¢¤½¤Î¥Ö¡¼¥È¡¦¥í¡¼¥À¤Î¥¤¥ó¥¹¥È¡¼¥é¡¦¥×¥í¥°¥é¥à¤òºÆ¤ÓÁö¤é¤»¤ë¡¢¤½¤ì¤Ï
+Ä̾亮¥§¥ë¤Çñ°ì¤Î¥³¥Þ¥ó¥É¤òȯ¹Ô¤¹¤ë¤³¤È¤òɬÍפȤ·¤Þ¤¹)¡£¤¢¤é¤æ¤ë¥Ö¡¼¥È¡¦
+¥í¡¼¥À¤¬¤³¤Î¤³¤È¤òɬÍפȤ¹¤ë¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£
+
+4.1    LILO (Linux Loader)
+---------------------------
+LILO ¤Ï x86 ÍѤÎͭ̾¤Ê¥Ö¡¼¥È¡¦¥í¡¼¥À¤Ç¤¹¡£LILO ¤Î¥Ö¡¼¥È¡¦¥í¡¼¥À¤ÏÄ̾ï°Ê²¼¤Ç
+¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Þ¤¹:
+
+       # /sbin/lilo
+
+¤â¤·¥Ö¡¼¥È¡¦¥Ç¥£¥¹¥¯¤ò»È¤Ã¤Æ¤¤¤ë¤Ê¤é¡¢Âå¤ï¤ê¤Ë¼¡¤ò¹Ô¤¦¤Ù¤­¤Ç¤¹: (¤³¤³¤Ç¡¢
+/dev/hda1 ¤Ï¤¢¤Ê¤¿¤Î¥ë¡¼¥È¡¦¥Ç¥Ð¥¤¥¹¤ÈÃÖ¤­´¹¤¨¤ë¤Ù¤­¤Ç¤¹)
+
+       # mount /dev/hda1 /mnt
+       # chroot /mnt /sbin/lilo
+       # umount /dev/hda1
+
+LILO ¤Î (¤½¤ì¤Û¤É¤Ç¤Ï¤Ê¤¤¤¬) ¸Å¤¤¥Ð¡¼¥¸¥ç¥ó¤Ï LBA ¥â¡¼¥É¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ
+¤»¤ó (¥»¥¯¥·¥ç¥ó 3.1 ¤ò»²¾È)¡£LBA ¥â¡¼¥É¤Ï /etc/lilo.conf ¤Ç¡¢lba32 ¤ä
+linear ¥ª¥×¥·¥ç¥ó¤Ë¤è¤Ã¤ÆÍ­¸ú²½¤µ¤ì¤Þ¤¹ (¤â¤Ã¤È¾ðÊó¤òÆÀ¤ë¤Î¤Ë¡¢LILO ¤Î²òÀâ
+¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤)¡£
+       ¤â¤· LBA ¥â¡¼¥É¤ò»È¤¦¤Ê¤é¡¢¤¢¤Ê¤¿¤Î BIOS ¤¬ LBA ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë
+¸Â¤ê¡¢²¿¤âÌäÂê¤Ê¤¤¤Ï¤º¤Ç¤¹¡£
+       ¤â¤· CHS ¥â¡¼¥É¤ò»È¤¦¤Ê¤é¡¢/boot ¥Ç¥£¥ì¥¯¥È¥ê¤ò»ý¤Ä¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ï
+¥·¥ê¥ó¥À 1024 Æâ¤Ë¼ý¤Þ¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£¤À¤«¤é¡¢¤â¤·Â礭¤Ê¥Ç¥£¥¹¥¯
+(¸À¤Ã¤Æ¤ß¤ì¤Ð¡¢8 ¥®¥¬Ä¶) ¤ò»ý¤Ã¤Æ¤¤¤ë¤Ê¤é¡¢¥Ç¥£¥¹¥¯¤Î½é¤áÊÕ¤ê¤Ë¡¢/boot ¥Ñ¡¼
+¥Æ¥£¥·¥ç¥ó¤ò»ý¤Ã¤Æ¤¤¤ë¤Ù¤­¤Ç¤¹¡£
+
+4.2    GNU GRUB (GRand Unified Bootloader)
+-------------------------------------------
+GRUB ¤Ï x86 ÍѤΡ¢Èæ³ÓŪ¿·¤·¤¤¥Ö¡¼¥È¡¦¥í¡¼¥À¤Ç¤¹¡£¤É¤¦¤ä¤Ã¤Æ GRUB ¤¬¥¤¥ó¥¹
+¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ë¤«¤Ë¤è¤Ã¤Æ¡¢¤½¤ì¤Ï¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤òÍý²ò¤¹¤ë¤«¤â¤·¤ì¤Ê¤¤
+¤·¡¢Ã±¤Ëµ¯Æ°¥Õ¥¡¥¤¥ë¤¬¼ý¤á¤é¤ì¤Æ¤¤¤ë¤«¤ò³Ð¤¨¤Æ¤¤¤ë¤À¤±¤«¤â¤·¤ì¤Þ¤»¤ó¡£
+¡ÖStage 1.5¡×¤ò»È¤Ã¤Æ¤¤¤ë¤Ê¤é¡¢¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤òÍý²ò¤·¤Þ¤¹¡£¤â¤· Stage 1.5
+¤ò»È¤Ã¤Æ¤¤¤Ê¤¤¤«¡¢¥Ñ¡¼¥Æ¥£¥·¥ç¥óÈֹ椬ÊѤï¤Ã¤¿¤é¡¢Stage 2 ¤òºÆ¥¤¥ó¥¹¥È¡¼¥ë
+¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹ (GRUB ¤Î²òÀâ¤òÆɤó¤Ç¤¯¤À¤µ¤¤)¡£¤½¤¦¤Ç¤Ê¤¤¤Ê¤é¡¢²¿¤â¤·¤Ê
+¤¯¤Æ¹½¤¤¤Þ¤»¤ó¡£
+       GRUB ¤Ï LBA ¤¬ÍøÍѲÄǽ¤«¡¢¼«Æ°Åª¤Ë¸¡½Ð¤·¡¢¤â¤·ÍøÍѲÄǽ¤Ê¤é¡¢¤½¤ì¤ò
+»È¤¦¤Ç¤·¤ç¤¦ (LILO ¤Î¡Ölba32¡×¥ª¥×¥·¥ç¥ó¤ÈƱÅù)¡£
+
+4.3    MS DOS¡¢MS Windows 9x¡¢MS Windows ME
+--------------------------------------------
+DOS ¤È Windows ¤Ï¡¢¤â¤·¥Ö¡¼¥È¡¦¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Î FAT ¤Î¼ïÎà (FAT16 ¤« FAT32)
+¤òÊѹ¹¤¹¤ì¤Ð¡¢¤½¤Î¥Ö¡¼¥È¡¦¥í¡¼¥À¤òºÆ¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤³¤È¤òÍ׵ᤷ¤Þ¤¹¡£
+Parted ¤Ï¤³¤ì¤ò¹Ô¤ª¤¦¤È»î¤ß¤ëÁ°¤Ë·Ù¹ð¤¹¤ë¤Ç¤·¤ç¤¦¡£¤½¤Î¥Ö¡¼¥È¡¦¥í¡¼¥À¤òºÆ
+¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤¿¤á¤Ë¡¢¥Ö¡¼¥È¡¦¥Ç¥£¥¹¥¯¤òºîÀ®¤¹¤ë¤«¡¢¥Ö¡¼¥È CDROM ¤ò»ÈÍÑ
+¤Ç¤­¤Þ¤¹¡£¥Ö¡¼¥È¡¦¥Ç¥£¥¹¥¯¤ÎÊýË¡¤Ï Windows ME ¤Ç¤ÏƯ¤­¤Þ¤»¤ó¡£
+
+¥Ö¡¼¥È¡¦¥Ç¥£¥¹¥¯¤ÎÊýË¡:  (DOS/Windows 9x)
+
+ (1) Windows ¥Ö¡¼¥È¡¦¥Ç¥£¥¹¥¯¤ÎºîÀ®
+       * Windows ¤òµ¯Æ°¤·¤Þ¤¹¡£¡Ø¤³¤Î¤³¤È¤Ï Parted ¤ò»È¤¦Á°¤Ë¡¢¥Ö¡¼¥È¡¦
+¥Ç¥£¥¹¥¯¤òºî¤ë¤Ù¤­¤Ç¤¢¤ë¤È°ÕÌ£¤·¤Æ¤¤¤Þ¤¹¡£¡Ù
+       * Windows ¥¨¥¯¥¹¥×¥í¡¼¥é¤Î¥Õ¥í¥Ã¥Ô¥£¡¦¥É¥é¥¤¥Ö¤Ç±¦¥¯¥ê¥Ã¥¯¤·¤Þ¤¹¡£
+       * ¡Ö¥Õ¥©¡¼¥Þ¥Ã¥È¡×¤ò¥¯¥ê¥Ã¥¯¤·¤Þ¤¹¡£
+       * ¡Ö¥·¥¹¥Æ¥à¡¦¥Õ¥¡¥¤¥ë¤ò¥³¥Ô¡¼¤¹¤ë¡×¤Ë°õ¤òÉÕ¤±¤Þ¤¹¡£
+       * ¡Ö¥Õ¥©¡¼¥Þ¥Ã¥È¡×¤ò¥¯¥ê¥Ã¥¯¤·¤Þ¤¹¡£
+       * C:\WINDOWS\COMMAND\SYS.COM ¤ò A:\ ¤Ë¥³¥Ô¡¼¤·¤Þ¤¹¡£Ãí: C:\WINDOWS
+       ¤ÏÊ̤Î̾Á°¤ÇÆɤó¤Ç¤¤¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡¢C:\WIN98 ¤Î¤è¤¦¤Ê¡£
+ (2) µ¯Æ°¤¹¤ë¤È¤­¤Ë¥Õ¥í¥Ã¥Ô¥£¡¦¥É¥é¥¤¥Ö¤Ë¤½¤Î¥Ö¡¼¥È¡¦¥Ç¥£¥¹¥¯¤ò»Ä¤·¤Æ¤ª¤¤¤Æ¡¢
+Windows ¤Î¥Ö¡¼¥È¡¦¥Ç¥£¥¹¥¯¤«¤éµ¯Æ°¤·¤Þ¤¹¡£
+ (3) DOS ¥×¥í¥ó¥×¥È¤Ç¼¡¤òÂǤÁ¤Þ¤¹:
+       A:\>sys c:
+
+ÌõÃí: Ìõ¼Ô¤Ïµ×¤·¤¯ÆüËܸìÈÇ Windows ¤ò¿¨¤Ã¤¿¤³¤È¤¬¤Ê¤¤¤Î¤Ç¡¢Ìõ¸ì¤¬Åö¤Ã¤Æ¤Ê¤¤¤«
+¤â¤·¤ì¤Þ¤»¤ó¡£°ã¤Ã¤Æ¤¿¤é¡¢¶µ¤¨¤Æ¤¯¤À¤µ¤¤¡£
+
+CDROM ¤ÎÊýË¡:  (Windows 9x/ME)
+
+ (1) Windows ¤Î CDROM ¤òÁÞ¤·¡¢¤½¤ì¤«¤éµ¯Æ°¤·¤Þ¤¹¡£(¡ÖCDROM ¥µ¥Ý¡¼¥È¤Ê¤·¤Ç
+µ¯Æ°¡×¤òÁª¤Ó¤Þ¤¹)
+ (2) ¼¡¤Î¤è¤¦¤ËÂǤÁ¤Þ¤¹:
+       A:\>c:
+       C:\>cd \windows\command         (\win98\command ¤ä»÷¤¿¤è¤¦¤Ê¤â¤Î¤«¤â)
+       C:\WINDOWS\COMMAND>sys c:
+
+
+¤Þ¤¿¡¢DOS ¤ä Windows ¤Ï¿ô¸Ä¤ÎÀ©¸Â¤ò²¡¤·ÉÕ¤±¤Þ¤¹:
+
+  * ¥Ö¡¼¥È¡¦¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ï¡Öboot¡×¥Õ¥é¥°¤ÇÁªÂò¤µ¤ì¤Æ¤¤¤ë¤Ù¤­¤Ç¤¹¡£¤¿¤Ã¤¿
+°ì¤Ä¤Î¥Ö¡¼¥È¡¦¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤À¤±¤¬ÁªÂò¤µ¤ìÆÀ¤Þ¤¹ (¤È¤­¤É¤­¡Ö¥¢¥¯¥Æ¥£¥Ö¡×
+(active) ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤È¸Æ¤Ð¤ì¤Þ¤¹)¡£Î㤨¤Ð¡¢¥Ñ¡¼¥Æ¥£¥·¥ç¥ó 3 ¤ò¥Ö¡¼¥È¡¦
+¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ËÀßÄꤹ¤ë¤Ë¤Ï¡¢¤³¤¦¤·¤Þ¤¹:
+
+       (parted) set 3 boot on
+
+  * MS DOS ¤ä MS Windows 9x/ME ¤ÏºÇ½é¤Î FAT ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤«¤é¤·¤«µ¯Æ°¤Ç¤­
+¤Þ¤»¤ó¡£¤¹¤Ê¤ï¤Á¡¢°ìÈÖ¾®¤µ¤¤¡Ø¥Þ¥¤¥Ê¡¼¡ÙÈÖ¹æ¤ò»ý¤Ä¡¢±£¤µ¤ì¤Æ¤¤¤Ê¤¤ FAT ¥Ñ¡¼
+¥Æ¥£¥·¥ç¥ó¤Ç¤¹¡£GRUB ¤ä LILO ¤Î¤è¤¦¤Ê¥Ö¡¼¥È¡¦¥í¡¼¥À (¤½¤·¤Æ¡¢¤¤¤¯¤Ä¤«¤Î BIOS)
+¤Ï¤³¤Î¿¶¤ëÉñ¤¤¤òÊѹ¹¤Ç¤­¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤...
+
+  * ¤â¤· (LBA ¥¢¥É¥ì¥Ã¥·¥ó¥°¤Ç¤Ï¤Ê¤¯) CHS ¥¢¥É¥ì¥Ã¥·¥ó¥°¤ò»È¤Ã¤Æ¤¤¤ë¤Ê¤é¡¢
+¥Ö¡¼¥È¡¦¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Î³«»ÏÅÀ¤Ï¥·¥ê¥ó¥À 1024 ¤è¤ê¤â¾®¤µ¤¯¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£
+¥Ö¡¼¥È¡¦¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¾å¤Î LBA ¥Õ¥é¥°¤òÍ­¸ú¤Ë¤·¤¿¤ê¡¢Ìµ¸ú¤Ë¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢
+MS DOS ¤Ë LBA ¥¢¥É¥ì¥Ã¥·¥ó¥°¤ò»È¤¦ (¤¢¤ë¤¤¤Ï¡¢»È¤ï¤Ê¤¤) ¤è¤¦¤Ë¶µ¤¨¤ë¤³¤È¤¬
+¤Ç¤­¤Þ¤¹¡£Î㤨¤Ð¡¢¥Ñ¡¼¥Æ¥£¥·¥ç¥ó 2 ¾å¤Î LBA ¥Õ¥é¥°¤òÍ­¸ú¤¹¤ë¤Ë¤Ï¡¢¤³¤¦¤·¤Þ¤¹:
+
+       (parted) set 2 lba on
+
+Ãí: LBA ¥¢¥É¥ì¥Ã¥·¥ó¥°¤Ï¡¢PC-DOS ¤ÎÁ´¤Æ¥Ð¡¼¥¸¥ç¥ó¤À¤±¤Ç¤Ê¤¯¡¢MS-DOS 6.22 ¤ä
+¤½¤ì°ÊÁ°¤Ç¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£
+
+·Ù¹ð: ¤¤¤¯¤Ä¤«¤Î BIOS ¤Ç¤Ï¡¢BIOS ¤Ç¤âÍ­¸ú¤Ë¤·¤Ê¤¤¤È¡¢LBA ¥¢¥É¥ì¥Ã¥·¥ó¥°¤¬
+Í­¸ú¤Ë¤Ê¤é¤Ê¤¤¤Ç¤·¤ç¤¦¡£²¿¤é¤«¤ÎÍýͳ¤Ç¡¢Windows ¤¬¤³¤Î¥Õ¥é¥°¤òÊѹ¹¤·¤¿¸å¤Ë
+µ¯Æ°¤·¤Ê¤¤¤Ê¤é¡¢¤³¤ì¤¬¤ª¤½¤é¤¯¤½¤ÎÌäÂê¤Ç¤¹¡£
+
+  * ¡ÖËÜÅö¤Î¡×MS-DOS (¤Ä¤Þ¤ê¡¢¥Ð¡¼¥¸¥ç¥ó 6.22 ¤Þ¤Ç) ¤È MS-DOS 7.0 (¤Ä¤Þ¤ê¡¢
+Windows 95/95a) ¤Ï FAT32 ¤òÃΤê¤Þ¤»¤ó¡£¤½¤Î¤¿¤á¡¢¡ØºÇ½é¤Î¡Ù FAT ¥Ñ¡¼¥Æ¥£
+¥·¥ç¥ó¤¬ FAT32 ¤Î¤È¤­¡¢¤½¤ì¤é¤ò ¡ØÆóÈÖÌܤΡ٠FAT (¤â¤Á¤í¤ó¡¢FAT16 ¤Î¤ß)
+¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤«¤éµ¯Æ°¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£Î¾Êý¤È¤â´ðËܥѡ¼¥Æ¥£¥·¥ç¥ó¤Ç¤Ê¤±
+¤ì¤Ð¤Ê¤é¤º¡¢µ¯Æ°¤·¤¿¤¤Êý¤ò¥¢¥¯¥Æ¥£¥Ö¡¦¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ËÀßÄꤹ¤ëɬÍפ¬¤¢¤ë
+¤Ç¤·¤ç¤¦¡£
+
+4.4    MS Windows NT
+--------------------------------------
+Windows NT ¤Ï FAT32 ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤òÆɤó¤À¤ê¡¢µ¯Æ°¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£
+¤½¤ì¤æ¤¨¡¢¤â¤· Windows NT ¤Ç»È¤¤¤¿¤¤¤Ê¤é¡¢FAT16 ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤«¤é FAT32
+¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ËÊѹ¹¤·¤Æ¤ÏÀäÂФ¤¤±¤Þ¤»¤ó¡£
+
+4.5    MS Windows 2000
+-----------------------
+Windows 2000 ¤Ï¡¢¥·¥¹¥Æ¥à¡¦¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Î FAT ¤Î¼ïÎà (FAT16 ¤« FAT32)
+¤òÊѹ¹¤·¤¿¤é¡¢¤½¤Î¥Ö¡¼¥È¡¦¥í¡¼¥À¤òºÆ¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤³¤È¤òÍ׵ᤷ¤Þ¤¹¡£Parted
+¤Ï¤³¤ì¤ò¹Ô¤ª¤¦¤È»î¤ß¤ëÁ°¤Ë·Ù¹ð¤¹¤ë¤Ç¤·¤ç¤¦¡£¤½¤Î¥Ö¡¼¥È¡¦¥í¡¼¥À¤òºÆ¥¤¥ó¥¹¥È¡¼
+¥ë¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Þ¤¹:
+ (1) Windows 2000 ¤Î CD ¤«¤éµ¯Æ°¤·¤Þ¤¹¡£
+ (2) ¥¤¥ó¥¹¥È¡¼¥ë¤Ë¼è¤ê¤«¤«¤ê¤¿¤¤¤«¤É¤¦¤«¤ò¿Ö¤¯¤Ç¤·¤ç¤¦¡£Enter ¤òÂǤÁ¤Þ¤¹¡£
+ (3) ¤½¤·¤Æ¡¢¿·¤·¤¤¥·¥¹¥Æ¥à¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤¿¤¤¤«¡¢Â¸ºß¤¹¤ë¥·¥¹¥Æ¥à¤ò½¤Éü¤·
+¤¿¤¤¤«¤ò¿Ò¤Í¤ë¤Ç¤·¤ç¤¦¡£¸å¼Ô¤òÁª¤Ó¤Þ¤¹ (¡ÖR¡×¤ò²¡¤·¤Æ)¡£
+ (4) ¼«Æ°½¤Éü¤ò¹Ô¤¤¤¿¤¤¤«¡¢Éüµì¥³¥ó¥½¡¼¥ë (recovery console) ¤ò»È¤¤¤¿¤¤¤«¤ò
+¿Ö¤¯¤Ç¤·¤ç¤¦¡£Éüµì¥³¥ó¥½¡¼¥ë¤ò»È¤¦¤ÈÁªÂò¤·¤Þ¤¹¡£
+ (5) ¤½¤Î¥³¥ó¥½¡¼¥ë¤Ç¡¢¤³¤¦ÂǤÁ¤Þ¤¹:
+
+       C:\>fixboot
+
+NT/2000 ¤Î¥Ö¡¼¥È¡¦¥í¡¼¥À¤Ï¤Þ¤¿°Ê²¼¤òɬÍפȤ·¤Þ¤¹:
+  * ¡Ø´ðËÜ¡Ù FAT12¡¢FAT16¡¢¤¢¤ë¤¤¤Ï¡¢NTFS ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó (Windows 2000 ¤Ç¤Ï
+FAT32 ¤â²Äǽ)¡¢¤½¤ì¤Ï¡Ö¥·¥¹¥Æ¥à¡¦¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¡×¤È¸Æ¤Ð¤ì¤Þ¤¹¤¬¡¢¤½¤ÎÃæ¤Ë¡¢
+¤½¤ì¼«¿È¤Î¥Ö¡¼¥È¡¦¥»¥¯¥¿¤Î¥³¡¼¥É¤¬¤¢¤ë¤³¤È¡£¤³¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ï¡Öboot¡×
+¥Õ¥é¥°¤¬ Parted ¤ÇΩ¤Æ¤é¤ì¤Æ¤¤¤ë¤Ù¤­¤Ç¤¹¡£
+  * ¥Õ¥¡¥¤¥ë NTLDR¡¢BOOT.INI ¤È NTDETECT.COM ¤¬¥·¥¹¥Æ¥à¡¦¥Ñ¡¼¥Æ¥£¥·¥ç¥óÆâ¤Ë
+¤¢¤ë¤³¤È¡£BOOT.INI ¤Ï´ðËܥѡ¼¥Æ¥£¥·¥ç¥ó¤ÎʪÍý°ÌÃÖ¤ä¡Ö¥Ö¡¼¥È¡¦¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¡×
+¤È¸Æ¤Ð¤ì¤ë¡¢Windows NT ¤¬¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤¿ÏÀÍý¥É¥é¥¤¥Ö¤Ë¤Ä¤¤¤Æ¤Î¾ðÊó¤òÊÝ»ý
+¤·¤Þ¤¹¡£¥Ö¡¼¥È¡¦¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤È¥·¥¹¥Æ¥à¡¦¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ï°ì¤Ä¤Î´ðËܥѡ¼¥Æ¥£
+¥·¥ç¥ó¤Ë°ì½ï¤ËÀßÃÖ¤·¤Æ¤â¤«¤Þ¤¤¤Þ¤»¤ó¡£
+  * Ç¤°Õ¤Ç¡¢¥Õ¥¡¥¤¥ë NTBOOTDD.SYS ¤¬¥·¥¹¥Æ¥à¡¦¥Ñ¡¼¥Æ¥£¥·¥ç¥óÆâ¤Ë¤¢¤ë¤³¤È¡¢
+¤½¤ì¤Ï¡¢¼«¿È¤Î BIOS ¤ò»ý¤¿¤Ê¤¤ (¤¢¤ë¤¤¤Ï¡¢¤½¤Î BIOS ¤¬Â礭¤Ê¥Ç¥£¥¹¥¯¤Ë¥¢¥¯
+¥»¥¹¤Ç¤­¤Ê¤¤) ¤È¤­¤Î¡¢SCSI ¤ä IDE ¥³¥ó¥È¥í¡¼¥é¤Î̾Á°¤òÊѤ¨¤é¤ì¤¿¥Ç¥£¥¹¥¯¡¦
+¥É¥é¥¤¥Ð¤Ç¤¹¡£
+  * MS Windows NT ¤Ç¤Ï¡¢¥·¥¹¥Æ¥à¡¦¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ï¥·¥ê¥ó¥À 1024 °ÊÁ°¤Ç½ª¤ï¤ë
+¤Ù¤­¤Ç¡¢¥·¥ê¥ó¥À 1024 °ÊÁ°¤Ë³«»Ï¤·¡Ø¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡Ù¡£¤â¤·¥·¥ê¥ó¥À 1024
+°Ê¹ß¤Ç½ª¤ï¤ê¡¢µ¯Æ°¤ËɬÍפʥե¡¥¤¥ë¤¬¤³¤Î¶­³¦°Ê¹ß¤ËÆ°¤«¤µ¤ì¤¿¤é¡¢MS Windows
+NT ¤Ï¤â¤Ï¤ä³«»Ï¤·¤Ê¤¤¤Ç¤·¤ç¤¦!
+  * ¥Ö¡¼¥È¤È¥·¥¹¥Æ¥à¡¦¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ÎξÊý¤Ï¡¢¤½¤Î¾¤ÎÊѹ¹¤Ê¤·¤Ë¡¢Â礭¤µ¤ò
+Êѹ¹¤µ¤ì¤Æ¤â¤«¤Þ¤¤¤Þ¤»¤ó¡£
+  * ¤â¤·¥Ö¡¼¥È¡¦¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ÎÈÖ¹æ (¤Ä¤Þ¤ê¡¢¤½¤Î¡Ø¥Þ¥¤¥Ê¡¼¡ÙÈÖ¹æ) ¤¬Êѹ¹
+¤µ¤ì¤ì¤Ð¡¢BOOT.INIT ¤ò¹¹¿·¤·¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£
+
+4.6    Quik
+------------
+Quik ¤Ï¡ÖµìÀ¤³¦ (old world)¡×¤Î Macintosh PowerPC ÍѤΡ¢ÉáµÚ¤·¤¿¥Ö¡¼¥È¡¦
+¥í¡¼¥À¤Ç¤¹¡£¤â¤·ext2 ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ÎÂ礭¤µ¤òÊѤ¨¤¿¤é¡¢Quik ¤òºÆ¥¤¥ó¥¹¥È¡¼
+¥ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹:
+
+       # /sbin/quik
+
+4.7    Yaboot
+--------------
+Yaboot ¤Ï¡Ö¿·À¤³¦ (new world)¡×¤Î Macintosh PowerPC ÍѤΡ¢ÉáµÚ¤·¤¿¥Ö¡¼¥È¡¦
+¥í¡¼¥À¤Ç¤¹¡£(¡Ö¿·À¤³¦¡×¤Ï 1999 ¤«¤éÀ½Â¤¤µ¤ì¤Æ¤¤¤ë¡¢¿§¤ÎÉÕ¤¤¤¿ PowerPC ¤Ë
+°¤·¤Æ¤¤¤Þ¤¹)
+       Yaboot ¤Ï¡¢¾¯¤Ê¤¯¤È¤â 800k ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡¢¤½¤ì¼«¿È¤Îµ¯Æ°¥Ñ¡¼¥Æ¥£
+¥·¥ç¥ó¤òɬÍפȤ·¤Þ¤¹¡£¤À¤«¤é¡¢¤â¤· GNU/Linux ¤ò¿¿¤Ã¿·¤«¤é¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤¤
+¤ë¤Ê¤é¡¢¤³¤Î¤è¤¦¤Ê¤³¤È¤ò¤¹¤ë¤Ç¤·¤ç¤¦:
+
+       (parted) mklabel mac
+       (parted) print
+       Disk geometry for /dev/sda: 0.000-6149.882 megabytes
+       Disk label type: mac
+       Minor    Start       End     Filesystem  Name                  Flags
+       1          0.000      0.031              Apple
+       (parted) mkpart primary hfs 0.032 1
+       (parted) print
+       Disk geometry for /dev/hdb: 0.000-6149.882 megabytes
+       Disk label type: mac
+       Minor    Start       End     Filesystem  Name                  Flags
+       1          0.000      0.031              Apple
+       2          0.031      1.000
+       (parted) set 2 boot on
+       (parted) print
+       Disk geometry for /dev/hdb: 0.000-6149.882 megabytes
+       Disk label type: mac
+       Minor    Start       End     Filesystem  Name                  Flags
+       1          0.000      0.031              Apple
+       2          0.031      1.000                                    boot
+
+       ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ÎÂ礭¤µ¤òÊѹ¹¤·¤¿¸å¤Ë Yaboot ¤òºÆ¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë
+ɬÍפϤ¢¤ê¤Þ¤»¤ó¡£Yaboot ¤Ï ybin ¤Ç¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Þ¤¹¡£
+
+
+------------------------------------------------------------------------------
+5      ¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥à
+------------------------------------------------------------------------------
+º£¤Î¤È¤³¤í¡¢Parted ¤Ï GNU/Linux ¤Î²¼¤Ç¤Î¤ßÆ°ºî¤·¤Þ¤¹¡£¤·¤«¤·¡¢Â¾¤Î¥ª¥Ú¥ì¡¼
+¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥à¤Ë¤è¤Ã¤Æ»È¤ï¤ì¤Æ¤¤¤ë¡¢¤¢¤ë¤¤¤Ï¡¢¶¦Í­¤µ¤ì¤¿¥Ñ¡¼¥Æ¥£¥·¥ç¥ó
+¤ÎÂ礭¤µ¤òÊѹ¹¤¹¤ë¤Î¤ËÍøÍѤǤ­¤Þ¤¹¡£
+
+¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤ÎÂ礭¤µ¤òÊѹ¹¤·¤¿¤¤¤È¤­¡¢¥Þ¥¦¥ó¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤ò³Îǧ
+¤·¤Æ¤¯¤À¤µ¤¤¡£Parted ¤Ï¥Þ¥¦¥ó¥È¤µ¤ì¤¿¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ÎÂ礭¤µ¤òÊѹ¹¤Ç¤­¤Þ¤»¤ó
+(¤³¤ì¤Ï¾­ÍèÊѤï¤ë¤«¤â¤·¤ì¤Þ¤»¤ó...)
+
+¤â¤·¥ë¡¼¥È¤ä¥Ö¡¼¥È¡¦¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ÎÂ礭¤µ¤òÊѹ¹¤·¤¿¤¤¤Ê¤é¡¢¥Ö¡¼¥È¡¦¥Ç¥£¥¹¥¯
+¤ò»È¤¦ (¥»¥¯¥·¥ç¥ó 1.5 ¤ò»²¾È) ¤«¡¢ext2resize ¥Ñ¥Ã¥±¡¼¥¸¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë¡¢
+Andreas Dilger ¤Î online ext2 resizer (¾Ü¤·¤¯¤Ï¡¢6¾Ï¤ò»²¾È) ¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£
+
+¤â¤·¥Þ¥¦¥ó¥È¤µ¤ì¤¿¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤¬¤¢¤ë¥Ç¥£¥¹¥¯¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¡¦¥Æ¡¼¥Ö¥ë¤ò
+½¤Àµ¤¹¤ë¤Ê¤é¡¢¤¹¤°¤ËºÆµ¯Æ°¤¹¤ë¤Ù¤­¤Ç¤¹¡£Linux ¤Ï¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¡¦¥Æ¡¼¥Ö¥ë¤Ë
+²Ã¤¨¤¿Êѹ¹¤Ë¤Ä¤¤¤Æʬ¤«¤é¤Ê¤¤¤Ç¤·¤ç¤¦¡£ (¤³¤ì¤Ï¥«¡¼¥Í¥ë 2.4 ¤Ç¡¢¤½¤ì¤Î¥µ¥Ý¡¼
+¥È¤òÄɲ乤ë¤È¤­¤Ëľ¤µ¤ì¤ë¤Ç¤·¤ç¤¦)
+
+
+5.1    GNU/Linux ¤È FreeBSD
+------------------------------------------------------------------------------
+ξÊý¤Î¥·¥¹¥Æ¥à¤Ï¥Ç¥£¥¹¥¯¡¦¥é¥Ù¥ë¤Ë¤Ï¤«¤Ê¤ê½ÀÆð¤Ç¡¢¤¿¤¯¤µ¤ó¤Î°Û¤Ê¤ë¥Ç¥£¥¹¥¯¡¦
+¥é¥Ù¥ë¤Î¼ïÎà¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¡£
+       FreeBSD ¤Ï¡¢MSDOS ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¡¦¥Æ¡¼¥Ö¥ë¤È¤Ï¸ß´¹À­¤Î¤Ê¤¤¡¢
+¥Ç¥£¥¹¥¯¡¦¥é¥Ù¥ë¡¦¥·¥¹¥Æ¥à¤È¡¢MSDOS ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¡¦¥Æ¡¼¥Ö¥ë¤È¸ß´¹¤Ê¡¢
+¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¡¦¥¹¥é¥¤¥¹¡¦¥·¥¹¥Æ¥à¤ò»ý¤Á¤Þ¤¹¡£Parted ¤Ï BSD ¥Ç¥£¥¹¥¯¡¦
+¥é¥Ù¥ë¡¦¥·¥¹¥Æ¥à¤À¤±¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£¤½¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¡¦¥¹¥é¥¤¥¹¡¦¥·¥¹¥Æ¥à
+¤ò¥µ¥Ý¡¼¥È¤¹¤ë¤³¤È¤Ï¤¢¤ê¤½¤¦¤Ë¤Ê¤¯¡¢¤Ê¤¼¤Ê¤é¡¢¤½¤Î°ÕÌ£ÏÀ¤Ï¤¤¤µ¤µ¤«´ñ̯¤Ç¡¢
+¡ÖÉáÄ̤Ρץѡ¼¥Æ¥£¥·¥ç¥ó¡¦¥Æ¡¼¥Ö¥ë¤¬¤ä¤ë¤è¤¦¤Ë¤ÏƯ¤«¤Ê¤¤¤«¤é¤Ç¤¹¡£
+
+
+5.2    MS Windows ¤È OS/2
+------------------------------------------------------------------------------
+MS Windows ¤È OS/2 ¤Ï msdos ¥Ç¥£¥¹¥¯¡¦¥é¥Ù¥ë¤À¤±¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¡£¤½¤ì¤æ
+¤¨¡¢¤â¤·¿·¤·¤¤¥Ç¥£¥¹¥¯¡¦¥é¥Ù¥ë¤òºîÀ®¤¹¤ë¤Ê¤é¡¢°Ê²¼¤ò»ÈÍѤ¹¤ë¤Ù¤­¤Ç¤¹:
+
+       (parted) mklabel msdos
+
+
+5.3    MacOS
+------------------------------------------------------------------------------
+MacOS (¤È OpenFirmware) ¤Ï mac ¥Ç¥£¥¹¥¯¡¦¥é¥Ù¥ë¤À¤±¤òÍý²ò¤·¤Þ¤¹¡£¤½¤ì¤æ¤¨¡¢
+¤â¤·¿·¤·¤¤¥Ç¥£¥¹¥¯¡¦¥é¥Ù¥ë¤òºîÀ®¤¹¤ë¤Ê¤é¡¢°Ê²¼¤ò»ÈÍѤ¹¤ë¤Ù¤­¤Ç¤¹:
+
+       (parted) mklabel mac
+
+Ãí: Mac ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¡¦¥Þ¥Ã¥×¤Ç¤Ï¡¢¶õ¤­Îΰè¤Ï¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¡¦¥Þ¥Ã¥×¤Î¹àÌÜ
+¤ò¤È¤Ã¤Æ¤·¤Þ¤¦ (¤½¤·¤Æ¡¢Linux ¤Ï 15 ¤òĶ¤¨¤ë¹àÌܤò»ý¤Ä¤³¤È¤ò¹¥¤Þ¤Ê¤¤) ¤Î¤Ç¡¢
+¶õ¤­Îΰè¤ò»Ä¤¹¤Î¤òÈò¤±¤ë¤Ù¤­¤Ç¤¹¡£Î㤨¤Ð¡¢¤â¤·°Ê²¼¤ò¹Ô¤¨¤Ð:
+
+       (parted) print
+       Disk geometry for /dev/sda: 0.000-6149.882 megabytes
+       Disk label type: mac
+       Minor    Start       End     Filesystem  Name                  Flags
+       1          0.000      0.031              Apple
+       2          0.031      1.000                                    boot
+       3          1.000   1000.000  ext2        root                  root
+       (parted) mkpartfs primary ext2 1001 2000
+       (parted) print
+       Disk geometry for /dev/sda: 0.000-6149.882 megabytes
+       Disk label type: mac
+       Minor    Start       End     Filesystem  Name                  Flags
+       1          0.000      0.031              Apple
+       2          0.031      1.000                                    boot
+       3          1.000   1000.000  ext2        root                  root
+       4       1001.000   2000.000  ext2
+
+¥Ñ¡¼¥Æ¥£¥·¥ç¥ó 3 ¤È 4 ¤Î´Ö¤Ë¡¢1 ¥á¥¬¥Ð¥¤¥È¤Î¶õ¤­Îΰ褬¤¢¤ê¤Þ¤¹¡£¥Ñ¡¼¥Æ¥£
+¥·¥ç¥ó¤ò 0.1M Î¥¤·¤ÆºîÀ®¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢¤³¤ì¤òÈò¤±¤é¤ì¤Þ¤¹ (¤³¤Î¾ì¹ç¡¢
+Parted ¤Ï¼«Æ°Åª¤Ë¤½¤ì¤é¤ò°ì½ï¤Ë¡Ö²¡¤·¹þ¤ß¡×¤Þ¤¹)¡£¤À¤«¤é¡¢¾å¤ÎÎã¤Ç¤Ï¡¢ÊѤï¤ê
+¤Ë¼¡¤ò¹Ô¤¦¤Ù¤­¤Ç¤¹:
+
+       (parted) mkpartfs primary ext2 1000.1 2000
+       (parted) print
+       Disk geometry for /dev/sda: 0.000-6149.882 megabytes
+       Disk label type: mac
+       Minor    Start       End     Filesystem  Name                  Flags
+       1          0.000      0.031              Apple
+       2          0.031      1.000                                    boot
+       3          1.000   1000.000  ext2        root                  root
+       4       1000.000   2000.000  ext2
+
+
+------------------------------------------------------------------------------
+6      ¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à
+------------------------------------------------------------------------------
+
+Parted ¤Ï°Ê²¼¤ÎÁàºî¤ËÂФ¹¤ë¥µ¥Ý¡¼¥È¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹:
+
+¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à     ¸¡½Ð    ºîÀ®    Â礭¤µÊѹ¹      ¥³¥Ô¡¼  ÅÀ¸¡
+ext2                   *       *       *1              *2      *3
+ext3                   *               *1              *2      *3
+fat                    *       *       *4              *4      *
+hfs                    *
+jfs                    *
+linux-swap             *       *       *               *       *
+ntfs                   *
+reiserfs               *
+ufs                    *
+xfs                    *
+
+Ãí:
+(1) ext2 ¤È ext3 ¤Ç¤Ï¡¢¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Î³«»ÏÅÀ¤Ï¸ÇÄꤵ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£
+
+(2) ¥³¥Ô¡¼Àè¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ï¡¢¥³¥Ô¡¼¸µ¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤è¤êÂ礭¤¯ (¤¢¤ë¤¤¤Ï¡¢
+´°Á´¤ËƱ¤¸¥µ¥¤¥º) ¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£
+
+(3) ¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤¬³«¤«¤ì¤ë¤È¤­¤Ë¡¢¸ÂÄꤵ¤ì¤¿ÅÀ¸¡¤¬¹Ô¤ï¤ì¤Þ¤¹¡£¤³¤ì¤¬
+º£¤Î¤È¤³¤íÍ£°ì¤ÎÅÀ¸¡¤Ç¤¹¡£¤â¤·¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤Ë²¿¤é¤«¤Î¸í¤ê(¤½¤·¤Æ¡¢°ìÈÌ
+¤Ë¸í¤ê¤ÎÂçȾ) ¤¬¤¢¤ì¤Ð¡¢(resize ¤ò´Þ¤à) Á´¤Æ¤Î¥³¥Þ¥ó¥É¤Ï¤½¤Î¼ºÇÔ¤ò¾å¼ê¤¯½èÍý
+¤·¡¢¤½¤Î¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤Ï¼êÉÕ¤«¤º¤Î¤Þ¤Þ¤Ë¤Ê¤ê¤Þ¤¹¡£
+
+(4) fat ¤Ç¤Ï¡¢Â礭¤µ¤ÎÊѹ¹¤ä¥³¥Ô¡¼¤Î¸å¡¢¿·¤·¤¤¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ÎÂ礭¤µ¤Ï¥¯¥é
+¥¹¥¿¤ÎÂ礭¤µ¤ËÀ©¸Â¤µ¤ì¤Þ¤¹ (¼ç¤Ë FAT16 ¤Ë±Æ¶Á¤·¤Þ¤¹)¡£¤³¤ì¤Ï¤¢¤Ê¤¿¤¬¹Í¤¨¤ë
+¤è¤ê¤â°­¤¯¤Æ¡¢¤È¤¤¤¦¤Î¤â¡¢¥¯¥é¥¹¥¿¤ÎÂ礭¤µ¤òÁª¤Ö¤³¤È¤Ï¤Ç¤­¤Ê¤¤¤«¤é¤Ç¤¹
+(¤½¤ì¤Ï Windows ¤Î¥Ð¥°¤Ç¤¹¤¬¡¢¸ß´¹À­¤ÏÍߤ·¤¤¡¢¤½¤¦¤Ç¤¹¤è¤Í?)
+       ¤À¤«¤é¡¢¼ÂºÝŪ¤Ë¤Ï¡¢(Parted ¤Ï¥¯¥é¥¹¥¿¤ÎÂ礭¤µ¤ò½Ì¾®¤Ç¤­¤ë¤Î¤Ç) ¥Ñ¡¼
+¥Æ¥£¥·¥ç¥ó¤ò¾ï¤Ë½Ì¾®¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¤¬¡¢¤¢¤Ê¤¿¤¬Íߤ¹¤ëÂ礭¤µ¤Ë¡¢¥Ñ¡¼¥Æ¥£
+¥·¥ç¥ó¤òÁýÂ礵¤»¤ë¤³¤È¤Ï¤Ç¤­¤Ê¤¤¤«¤â¤·¤ì¤Þ¤»¤ó¡£¤â¤· FAT32 ¤ò»È¤¦¤³¤È¤Ë²¿¤â
+ÌäÂ꤬¤Ê¤¤¤Ê¤é¡¢¾ï¤Ë¤¢¤Ê¤¿¤¬Íߤ¹¤ëÂ礭¤µ¤Ë¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤òÁýÂ礵¤»¤é¤ì¤ë¤Ç
+¤·¤ç¤¦¡£
+       Í×Ìó: ¤¤¤Ä¤Ç¤â¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò½Ì¾®¤Ç¤­¤Þ¤¹¡£¤â¤·²¿¤é¤«¤ÎÍýͳ¤Ç FAT32
+¤ò»È¤¨¤Ê¤¤¤Ê¤é¡¢¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤òÁýÂ礵¤»¤é¤ì¤Ê¤¤¤«¤â¤·¤ì¤Þ¤»¤ó¡£
+
+
+6.1    Ext2
+------------------------------------------------------------------------------
+Parted ¤Ï (¤Þ¤À) ext2 ¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤Î¥³¥Ô¡¼¤òľÀܤϥµ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó¡£
+¤·¤«¤·¤Ê¤¬¤é¡¢¤³¤ì¤ò°Ù¤¹¿ë¤²¤ëÊýË¡¤¬¾¯¤·¤À¤±¤¢¤ê¤Þ¤¹:
+  * Parted ¤Î mkfs ¥³¥Þ¥ó¥É (¤« mkfs.ext2) ¤ò»È¤¤¡¢¤½¤ì¤«¤é¥·¥§¥ë¤Ç
+°Ê²¼¤ò¼Â¹Ô¤·¤Þ¤¹:
+       Ä¾¤·¤Æ¤¯¤ì¡ª¡ª ¤³¤ì¤Ï¤¢¤Þ¤ê¾å¼ê¤¯¹Ô¤«¤Ê¤¤ - ¤Ç¤âÂçÄñ¤Î¿Í¤Ë¤ÏÂç¾æÉ×
+       ¤Ê¤Ï¤º...
+
+       # mount -t ext2 /dev/hda2 /mnt/dst
+       # find /mnt/src -depth | cpio -pm /mnt/dst
+
+  * ¤â¤·Ê£À½¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤¬¸µ¤è¤ê¤âÂ礭¤¯¤Ê¤ë¤Ê¤é¡¢¤³¤¦¤¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹:
+¤Þ¤º¡¢¿·¤·¤¤ ext2 ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤òºîÀ®¤·¤Þ¤¹¡£¤½¤ì¤«¤é:
+
+       # dd if=/dev/src-device of=/dev/dst-device bs=1024 count=(OLD SIZE)
+       # parted /dev/hda resize 2 (START) (END)
+
+¤³¤³¤Ç¡¢(OLD SIZE) ¤Ï¸µ¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò¥­¥í¥Ð¥¤¥È¤Çɽ¤·¤¿Â礭¤µ¤Ç¤¹¡£
+(START) ¤È (END) ¤ÏÊ£À½¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ËÂФ¹¤ë¡¢¿·¤·¤¤³«»ÏÅÀ¤È½ªÃ¼¤Ç¤¹¡£
+
+
+6.2    FAT16 ¤È FAT32
+------------------------------------------------------------------------------
+Parted ¤Ï (¤Þ¤À) FAT ¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤Î¥¯¥é¥¹¥¿¤ÎÂ礭¤µ¤òÁýÂ礵¤»¤é¤ì¤Þ¤»
+¤ó¡£¤³¤Î¤³¤È¤Î¤¿¤á¤Ë¡¢¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ÎÂ礭¤µ¤ÎÊѹ¹¤ä¥³¥Ô¡¼¤ËÀ©¸Â¤¬Àߤ±¤é¤ì¤Þ
+¤¹¡£¤³¤ì¤Ï¤·¤Ð¤·¤ÐÁ´¤¯´ñ²ø¤Ç¡¢¤È¤¤¤¦¤Î¤â¡¢Parted ¤Ï FAT16 ¤È FAT32 ¤Î¥Õ¥¡¥¤
+¥ë¡¦¥·¥¹¥Æ¥à¤òÊÑ´¹¤Ç¤­¤ë¤«¤é¤Ç¡¢¥¯¥é¥¹¥¿¤ÎÂ礭¤µ¤¬¤É¤ì¤Û¤É¤Ë¤Ê¤êÆÀ¤ë¤«¤Ë¤Ä¤¤
+¤Æ¡¢°Û¤Ê¤ëÀ©¸Â¤¬¤¢¤ê¤Þ¤¹¡£
+
+Î㤨¤Ð¡¢¥¯¥é¥¹¥¿¤ÎÂ礭¤µ¤¬ 4k ¤Ç¤¢¤ë 100Mb ¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤¬¤¢¤ë¤È¤·¤Æ¤ß¤Þ
+¤·¤ç¤¦¡£¤³¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò 400Mb ¤ËÊѹ¹¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£¤Ê¤¼¤Ê¤é¡¢¤½
+¤Î¥¯¥é¥¹¥¿¤ÎÂ礭¤µ¤ò 16k ¤ËÊѹ¹¤¹¤ëɬÍפ¬¤¢¤ë¤«¤é¤Ç¤¹¡£¤·¤«¤·¡¢¤â¤· FAT32
+¤ò»È¤¨¤Ð¡¢¤½¤ì¤Ï 600Mb ¤ËÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£600Mb ¤Î FAT32 ¥Õ¥¡¥¤¥ë¡¦¥·
+¥¹¥Æ¥à¤ËÂФ·¤Æ¡¢µÕ¤âÀ®¤êΩ¤Á¤Þ¤¹¡£
+
+Ãí: ¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤ò¥³¥Ô¡¼¤·¤¿¤ê¡¢Â礭¤µ¤òÊѹ¹¤¹¤ë¤È¤­¡¢Parted ¤Ï (¤â¤·
+²Äǽ¤Ê¤é) FAT16 ¤È FAT32 ¤Î´Ö¤ÇÊÑ´¹¤·¤¿¤¤¤«¿Ò¤Í¤ë¤Ç¤·¤ç¤¦¡£¤½¤ì¤æ¤¨¡¢¤¢¤ë
+¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò (Â礭¤µ¤òÊѹ¹¤»¤º¤Ë) FAT32 ¤ËÊÑ´¹¤·¤¿¤¤¤À¤±¤Ê¤é¡¢¤½¤Î¥Ñ¡¼
+¥Æ¥£¥·¥ç¥ó¤òƱ¤¸Â礭¤µ¤ËÊѹ¹¤¹¤ë¤À¤±¤Ç¤Ç¤­¤Þ¤¹¡£
+
+6.2.1  MS DriveSpace ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó
+--------------------------------
+MS DriveSpace ¤Ï MS Windows 95 ¤ËÉÕ°¤·¤Æ¤¤¤ë¥×¥í¥°¥é¥à¤Ç¡¢FAT ¥Õ¥¡¥¤¥ë¡¦
+¥·¥¹¥Æ¥à¤ò°µ½Ì¤¹¤ë¤Î¤Ë»ÈÍѤǤ­¤Þ¤¹¡£»ä¤Ï¤³¤ì¤Ï DoubleSpace ¤ÈƱ¤¸¤è¤¦¤ËÆ°ºî
+¤¹¤ë¤È¹Í¤¨¤Æ¤¤¤ë¤Î¤Ç¡¢¤³¤³¤Ë½ñ¤«¤ì¤Æ¤¤¤ë¤³¤È¤Ï¤É¤ì¤Ç¤â DoubleSpace ¤Ë¤âÅö¤Æ
+¤Ï¤Þ¤ë¤Ï¤º¤Ç¤¹¡£
+
+¤³¤ì¤é¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ÎÂ礭¤µ¤òÊѹ¹¤·¤¿¤ê¥³¥Ô¡¼¤¹¤ë¤¿¤á¤Ë Parted ¤ò»ÈÍѤ¹¤ë
+¤³¤È¤Ï²Äǽ¤Ç¤¹¤¬¡¢2¡¢3¡¢Í¾Ê¬¤Ë¤ä¤é¤Ê¤¤¤È¤¤¤±¤Þ¤»¤ó...
+
+6.2.1.1        DriveSpace ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ÎÁýÂç
+--------------------------------------
+(1) ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò˾¤ß¤ÎÂ礭¤µ¤ËÁýÂ礵¤»¤ë¤Î¤Ë¡¢Parted ¤Î resize ¥³¥Þ¥ó¥É
+¤ò»È¤¤¤Þ¤¹¡£
+
+(2) ¶õ¤­Îΰè¤ò¥Û¥¹¥È¡¦¥É¥é¥¤¥Ö¤«¤é°µ½Ì¥É¥é¥¤¥Ö¤Ø°Ü¤¹¤¿¤á¤Ë¡¢MS DriveSpace
+¤ò»ÈÍѤ·¤Þ¤¹¡£
+
+6.2.1.2        DriveSpace ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Î½Ì¾®
+----------------------------------------
+(1) °µ½Ì¥É¥é¥¤¥Ö¤«¤é¥Û¥¹¥È¡¦¥É¥é¥¤¥Ö¤Ø¶õ¤­Îΰè¤ò°Ü¤¹¤¿¤á¤Ë¡¢MS DriveSpace
+¤ò»ÈÍѤ·¤Þ¤¹¡£°Ü¤µ¤ì¤ë¶õ¤­Îΰè¤ÎÎ̤ϥѡ¼¥Æ¥£¥·¥ç¥ó¤ò½Ì¾®¤¹¤ë¡¢Ë¾¤ß¤ÎÎ̤È
+°ìÃפ·¤Þ¤¹¡£
+
+(2) ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò˾¤ß¤ÎÂ礭¤µ¤Ë½Ì¾®¤¹¤ë¤¿¤á¤Ë¡¢Parted ¤Î resize ¥³¥Þ¥ó¥É
+¤ò»ÈÍѤ·¤Þ¤¹¡£Ãí: Parted ¤Ï¤½¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò¤É¤ì¤À¤±½Ì¾®¤¹¤ë¤Î¤«¤¬Ê¬¤«¤ë
+¤è¤¦¡¢¤½¤Î¿ô»ú¤ò¾å¼ê¤¯ÊÖ¤·¤Æ¤Ï¤¯¤ì¤Þ¤»¤ó¡£¤³¤ì¤Ï¤ä¤ë¤Ù¤­¤³¤È¤Î¥ê¥¹¥È¤Ëµó¤²
+¤é¤ì¤Æ¤¤¤Þ¤¹¡£
+
+6.2.1.3        DriveSpace ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Î¥³¥Ô¡¼
+--------------------------------------
+¤â¤· DriveSpace ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò¤â¤Ã¤ÈÂ礭¤¤¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ë¥³¥Ô¡¼¤·¤¿¤¤¤Ê¤é¡¢
+˾¤ß¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ÎÂ礭¤µ¤òÊѤ¨¤ë¤Î¤Ç¤Ï¤Ê¤¯¥³¥Ô¡¼¤¹¤ë¤³¤È¤ò½ü¤¤¤Æ¡¢
+DriveSpace ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ÎÁýÂçÍѤÎÀâÌÀ¤Ë½¾¤Ã¤Æ¤¯¤À¤µ¤¤¡£¤½¤·¤Æ¡¢DriveSpace
+¤Ç¤Î¿·¤·¤¤¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò»È¤Ã¤Æ¤¤¤ë¤³¤È¤ò³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£
+
+¤·¤«¤·¡¢¤â¤· DriveSpace ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò¤è¤ê¾®¤µ¤Ê¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ë¥³¥Ô¡¼
+¤·¤¿¤¤¤Ê¤é¡¢Êª»ö¤Ï¾¯¡¹Ê£»¨¤Ë¤Ê¤ê¤Þ¤¹:
+
+(1) °µ½Ì¥É¥é¥¤¥Ö¤«¤é¸»¤Ç¤¢¤ë¥Û¥¹¥È¡¦¥É¥é¥¤¥Ö¤Ë¶õ¤­Îΰè¤ò°Ü¤¹¤¿¤á¤Ë¡¢MS
+DriveSpace ¤ò»È¤¤¤Þ¤¹¡£°Ü¤µ¤ì¤ëÎΰè¤ÎÎ̤ϸµ¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ÈÊ£À½¥Ñ¡¼¥Æ¥£
+¥·¥ç¥ó¤Î˾¤ß¤ÎÂ礭¤µ¤Îº¹¤è¤ê¤âÂ礭¤¯¤¢¤ë¤Ù¤­¤Ç¤¹¡£
+
+(2) ¸µ¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤òÊ£À½¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ø¥³¥Ô¡¼¤¹¤ë¤¿¤á¡¢Parted ¤ò»È¤¤
+¤Þ¤¹¡£
+
+(3) ¸µ¤Î¥Û¥¹¥È¡¦¥É¥é¥¤¥Ö¤«¤é°µ½Ì¥É¥é¥¤¥Ö¤Ø¶õ¤­Îΰè¤òÌ᤹¤¿¤á¡¢MS DriveSpace
+¤ò»È¤¤¤Þ¤¹¡£
+
+(4) Ê£À½¥Û¥¹¥È¡¦¥É¥é¥¤¥Ö¤«¤é°µ½Ì¥É¥é¥¤¥Ö¤Ø¶õ¤­Îΰè¤òÌ᤹¤¿¤á¡¢MS DriveSpace
+¤ò»È¤¤¤Þ¤¹¡£
+
+6.3    Reiserfs
+------------------------------------------------------------------------------
+Parted ¤Ï reiserfs ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó¡£¤·¤«¤·¡¢reiserfs ¤Ë¤Ï¤½¤ì¼«¿È¤Î
+Â礭¤µÊѹ¹¥Ä¡¼¥ë¡¢resize_reiserfs ¤¬ÉÕ¤¤¤Æ¤¤¤Þ¤¹¡£¤¿¤À¤¢¤Ê¤¿¤ÎÃΤ餻¤ë¤¿¤á
+¤À¤±¤Ë ;-)
+
+
+------------------------------------------------------------------------------
+7      LVM¡¢RAID ¤ÈľÀÜŪ¤Ê¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤Ø¤Î¥¢¥¯¥»¥¹
+------------------------------------------------------------------------------
+
+LVM (ÏÀÍý¥Ü¥ê¥å¡¼¥à¡¦¥Þ¥Í¡¼¥¸¥ã) ¤Ï¥Ñ¡¼¥Æ¥£¥·¥ç¥Ë¥ó¥°¤ÎÂåÂØ¥·¥¹¥Æ¥à¤Ç¤¹¡£¤½¤ì
+¤ÏÏÀÍý¥Ü¥ê¥å¡¼¥à (¤Ä¤Þ¤ê¡¢¡Ö²¾Áۥѡ¼¥Æ¥£¥·¥ç¥ó¡×) ¤¬¤¿¤¯¤µ¤ó¤ÎʪÍý¥Ü¥ê¥å¡¼¥à
+(¤Ä¤Þ¤ê¡¢¥Ï¡¼¥É¡¦¥Ç¥£¥¹¥¯¤ä¥Ñ¡¼¥Æ¥£¥·¥ç¥ó) ¤Ë¹­¤¬¤ë¤³¤È¤òµö¤·¤Þ¤¹¡£LVM ¤Ï
+Linux ¥Ð¡¼¥¸¥ç¥ó 2.4 ¤«¤½¤ì°Ê¹ß¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
+
+RAID (°Â²Á¤Ê¥Ç¥£¥¹¥¯¤Î¾éŤÊÇÛÎó) ¤Ï¤¿¤¯¤µ¤ó¤Î¥Ç¥£¥¹¥¯¤ä¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò°ì½ï
+¤Ë¡¢¡Ö²¾Áۥѡ¼¥Æ¥£¥·¥ç¥ó¡×¤È¤·¤Æ»È¤¦¤¿¤á¤Î¥·¥¹¥Æ¥à¤Ç¤¹¡£¥½¥Õ¥È¥¦¥§¥¢ RAID ¤ò
+ÍøÍѤ¹¤ë¤Î¤Ë¡¢¿ô¼ï¤Î°Û¤Ê¤ë¥â¡¼¥É¤¬¤¢¤ê¡¢ËܼÁŪ¤Ë¤Ï:
+  * À­Ç½¤ò¸þ¾å¤µ¤»¡¢Á´Îΰè¤òñ°ì¤Î¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¾å¤ÇÍøÍѤǤ­¤ë¤è¤¦¤Ë¤¹¤ë
+¤¿¤á¡¢Ê£¿ô¤Î (¾®¤µ¤Ê) ¥Ç¥£¥¹¥¯¤òñ°ì¤Î¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤Î¤¿¤á¤Ë»ÈÍÑ¡£
+  * ¿®ÍêÀ­¤ÈÀ­Ç½¤ò¸þ¾å¤µ¤»¤ë¤¿¤á¡¢¾ðÊó¤Î¾éĹ¤Ê¥³¥Ô¡¼¤ò¼ý¤á¤ë¤Î¤ËÊ£¿ô¤Î¥Ç¥£¥¹
+¥¯¤ò»ÈÍÑ¡£
+¥½¥Õ¥È¥¦¥§¥¢ RAID ¤Ï Linux ¥Ð¡¼¥¸¥ç¥ó 2.0 ¤«¤½¤ì°Ê¹ß¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
+
+¥Ï¡¼¥É¥¦¥§¥¢ RAID ¤Ï¤Õ¤Ä¤¦¤Ë Parted ¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤¹ - ¤À¤«¤é¡¢¤â¤· (¥½¥Õ
+¥È¥¦¥§¥¢ RAID ¤ËÂФ·¤Æ) ¥Ï¡¼¥É¥¦¥§¥¢ RAID ¤ò»È¤Ã¤Æ¤¤¤ë¤Ê¤é¡¢¤³¤Î¥»¥¯¥·¥ç¥ó¤ò
+ÆɤàɬÍפϤ¢¤ê¤Þ¤»¤ó¡£
+
+LVM¡¢¥½¥Õ¥È¥¦¥§¥¢ RAID ¤ä¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ï¤·¤Ð¤·¤ÐƱ»þ¤Ë»ÈÍѤµ¤ì¤Þ¤¹¤¬¡¢¤½¤ì¤é
+¤ÏÁ´¤ÆÆÈΩ¤Ë»È¤ï¤ìÆÀ¤Þ¤¹:
+  * LVM ¤È¥½¥Õ¥È¥¦¥§¥¢ RAID ¤Ï¤·¤Ð¤·¤Ð¡¢À¸¤Î¥Ï¡¼¥É¡¦¥Ç¥£¥¹¥¯¤Ç¤Ï¤Ê¤¯¡¢¥Ñ¡¼
+¥Æ¥£¥·¥ç¥ó¤«¤éÀ®¤êΩ¤Á¤Þ¤¹¡£
+  * !!! Ä¾¤·¤Æ¤¯¤ì (Ãí: LVM ¾å¤Ç»È¤ï¤ì¤¿ RAID ¤Ï¤Þ¤À Linux ¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤Æ
+¤¤¤Ê¤¤ (?))
+
+GNU Parted ¤Ï LVM ¤ä¥½¥Õ¥È¥¦¥§¥¢ RAID ¤ò´°Á´¤Ë¤Ï¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó¤¬¡¢¤½¤ì
+¤é¤Î¸Ä¡¹¤Î¥Ä¡¼¥ë¤ÈÁȤ߹ç¤ï¤»¤Æ»È¤¦¤È¤­¡¢¤½¤ì¤Ç¤â¤Ê¤ªÍ­ÍѤǤ¹¡£Parted ¤Ï°Ê²¼¤Î
+ºî¶È¤ËÌò¤ËΩ¤Á¤Þ¤¹:
+  * ¥½¥Õ¥È¥¦¥§¥¢ RAID ¤ä LVM ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ÎºîÀ®
+  * ÏÀÍý¥Ü¥ê¥å¡¼¥à (¤¢¤ë¤¤¤Ï¡¢¡Ö²¾Áۥѡ¼¥Æ¥£¥·¥ç¥ó¡×) ¾å¤Î¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à
+¤ÎºîÀ®¡¢Â礭¤µÊѹ¹¤ä¥³¥Ô¡¼
+
+
+7.1    RAID ¤ä LVM ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ÎºîÀ®
+-------------------------------------------------------------------------------
+
+RAID ¤ä LVM ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤òºîÀ®¤¹¤ë¤¿¤á¤Ë¡¢°Ê²¼¤ò¤·¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó:
+(1) mkpart ¥³¥Þ¥ó¥É¤Ç¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤òºîÀ®¤·¤Þ¤¹¡£
+(2) ¤½¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¾å¤Î LVM ¤ä RAID ¥Õ¥é¥°¤òΩ¤Æ¤Þ¤¹¡£
+
+Î㤨¤Ð:
+
+       (parted) mkpart primary ext2 0 4000
+       (parted) set 1 lvm on
+
+Ãí: ¤½¤Î LVM ¤ä RAID ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ï¤Þ¤À»ÈÍѽàÈ÷¤¬À°¤Ã¤Æ¤¤¤Ê¤¤¤Ç¤·¤ç¤¦¡£
+¤½¤ì¤Ç¤â¤ä¤Ï¤ê¡¢RAID ¤ËÂФ·¤Æ¤Ï mkraid(8) ¤ò¼Â¹Ô¤·¤¿¤ê¡¢ÊªÍý¥Ü¥ê¥å¡¼¥à¤ò½é´ü
+²½¤·¤¿¤ê¡¢ÏÀÍý¥°¥ë¡¼¥×¤òºîÀ®¤¹¤ë¤Ê¤É¤Î¤¿¤á¤Ë¡¢LVM ¥Ä¡¼¥ë¤ò»È¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
+
+
+7.2    ¥½¥Õ¥È¥¦¥§¥¢ RAID ¤ä LVM ÏÀÍý¥Ü¥ê¥å¡¼¥à¾å¤Î¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥àÁàºî
+-------------------------------------------------------------------------------
+
+Parted ¤Ï RAID ¤ä LVM ¤òÍý²ò¤·¤Þ¤»¤ó¤¬¡¢RAID ¤ä LVM ÏÀÍý¥Ü¥ê¥å¡¼¥à¤òÁàºî¤¹¤ë
+¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤½¤ì¤Ï Linux ¤Î RAID ¤ä LVM ¤Î¥µ¥Ý¡¼¥È¤òÍøÍѤ·¤Þ¤¹¡£¤½¤ì¤æ¤¨¡¢
+¤¢¤Ê¤¿¤Î Linux ¥«¡¼¥Í¥ë¤¬ RAID ¤ä LVM ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¾ì¹ç¤Ë¸Â¤ê¡¢¤³¤ì¤é¤Î
+ÊýË¡¤ò»È¤¨¤Þ¤¹¡£
+
+RAID ¤ä LVM ÏÀÍý¥Ü¥ê¥å¡¼¥à (¤¢¤ë¤¤¤Ï¡¢¤½¤ì¤¬½ÅÍפʤ顢À¸¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó) ¾å
+¤Î¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤òÁàºî¤¹¤ë¤¿¤á¤Ë¡¢ÏÀÍý¥Ü¥ê¥å¡¼¥à (¥Ñ¡¼¥Æ¥£¥·¥ç¥ó) ¥Ç¥Ð¥¤
+¥¹¤òÁª¤Ö¤³¤È¤Ë¤è¤Ã¤Æ¡¢parted ¤ò³«»Ï¤Ç¤­¤Þ¤¹¡£Î㤨¤Ð:
+
+       # parted /dev/md0
+
+¤³¤Î¾Ï¤Î»Ä¤ê¤Ç¤Ï¡¢¡Ö²¾ÁۥǥХ¤¥¹¡×¤Ï Parted ¤¬ÊÔ½¸¤·¤Æ¤¤¤ë¥Ç¥Ð¥¤¥¹¤ò»Ø¤¹¤Ç
+¤·¤ç¤¦ (¤¹¤°¾å¤ÎÎã¤Ç¤Ï: /dev/md0)¡£
+
+
+7.2.1  ¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤ÎºîÀ®
+------------------------------
+(1) loop ¥Ç¥£¥¹¥¯¡¦¥é¥Ù¥ë¤òºîÀ®¤·¤Þ¤¹¡£¤³¤ì¤Ïµ¶¤Î¥Ç¥£¥¹¥¯¡¦¥é¥Ù¥ë¤Ç¡¢
+Parted ¤Ë²¾ÁۥǥХ¤¥¹¤òñ°ì¤Î¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤È¤·¤Æ°·¤¦¤è¤¦¤Ë¶µ¤¨¤Þ¤¹¡£
+¤³¤Îµ¶¤Î¥Ç¥£¥¹¥¯¡¦¥é¥Ù¥ë¤Ç¤Ï¡¢¥¼¥í¡¢¤Þ¤¿¤Ï¡¢°ì¤Ä¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤¬¤¢¤ê¤Þ¤¹¡£
+
+       (parted) mklabel loop
+
+(2) Parted ¤Î mkpartfs ¥³¥Þ¥ó¥É¤ò»È¤Ã¤Æ¡¢¤½¤Î¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤òºîÀ®¤·¤Þ¤¹¡£
+¤½¤Î¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤Î³«»ÏÅÀ¤ò¥¼¥í¤Ë¤¹¤ë¤Ù¤­¤Ç¤¹¡£¤½¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ï²¾ÁÛ
+¥Ç¥Ð¥¤¥¹Æâ¤Î¤É¤³¤Ç½ª¤ï¤Ã¤Æ¤â¤«¤Þ¤¤¤Þ¤»¤ó¡£²¾ÁۥǥХ¤¥¹¤ÎÂ礭¤µ¤Ï print ¥³¥Þ
+¥ó¥É¤Ç¸«½Ð¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£Îã:
+
+       (parted) print
+       Disk geometry for /dev/md0: 0.000-47.065 megabytes
+       Disk label type: loop
+       Minor    Start       End     Filesystem  Flags
+       (parted) mkpartfs primary ext2 0 47.065
+       (parted) print
+       Disk geometry for /dev/md0: 0.000-47.065 megabytes
+       Disk label type: loop
+       Minor    Start       End     Filesystem  Flags
+       1          0.000     47.065  ext2
+
+7.2.2  ¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤ÎÂ礭¤µÊѹ¹
+------------------------------
+Ä̾²¾ÁۥǥХ¤¥¹¤ÎÂ礭¤µ¤òÊѹ¹¤¹¤ë¤Î¤ÈƱ¤¸»þ¤Ë¡¢¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤ÎÂ礭¤µ
+¤òÊѹ¹¤·¤Þ¤¹¡£¤â¤·¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤È²¾ÁۥǥХ¤¥¹¤ÎÂ礭¤µ¤òÁýÂ礵¤»¤Æ¤¤¤ë
+¤Ê¤é¡¢¤Þ¤º¤½¤Î¥Ç¥Ð¥¤¥¹¤ò (RAID ¤ä LVM ¥Ä¡¼¥ë¤Ç) ÁýÂ礵¤»¤ë¤Ù¤­¤Ç¡¢¤½¤·¤Æ¤½¤Î
+¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤òÁýÂ礵¤»¤Þ¤¹¡£¤â¤·¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤È²¾ÁۥǥХ¤¥¹¤ò½Ì¾®
+¤·¤Æ¤¤¤ë¤Ê¤é¡¢¤Þ¤º¤½¤Î¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤ò½Ì¾®¤µ¤»¡¢¤½¤·¤Æ¡¢¤½¤Î²¾ÁۥǥХ¤¥¹
+¤ò¸å¤Ç¹Ô¤¦¤Ù¤­¤Ç¤¹¡£
+
+Parted ¤Ç¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤ÎÂ礭¤µ¤òÊѹ¹¤¹¤ë¤¿¤á¤Ë¡¢resize ¥³¥Þ¥ó¥É¤ò»È¤¤
+¤Þ¤¹¡£Î㤨¤Ð:
+
+       (parted) select /dev/md0
+       (parted) resize 1 0 20
+
+7.2.3  ²¾ÁۥǥХ¤¥¹¤«¤é¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ø¤Î¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤Î¥³¥Ô¡¼
+------------------------------------------------------------------
+ñ¤Ë cp ¥³¥Þ¥ó¥É¤ò»È¤¤¤Þ¤¹¡£Î㤨¤Ð:
+
+       (parted) select /dev/hda
+       (parted) cp /dev/md0 1 3
+
+7.2.4  ¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤«¤é²¾ÁۥǥХ¤¥¹¤Ø¤Î¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤Î¥³¥Ô¡¼
+-------------------------------------------------
+(1) ²¾ÁۥǥХ¤¥¹¾å¤Ë loop ¥Ç¥£¥¹¥¯¡¦¥é¥Ù¥ë¤òºîÀ®¤·¤Þ¤¹¡£Î㤨¤Ð:
+
+       (parted) select /dev/md0
+       (parted) mklabel loop
+
+(2) mkpartfs ¥³¥Þ¥ó¥É¤ò»È¤Ã¤Æ¡¢²¾ÁۥǥХ¤¥¹¾å¤Ë¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤òºîÀ®¤·¤Þ¤¹¡£
+Î㤨¤Ð:
+
+       (parted) mkpartfs primary ext2 0 47.065
+
+(3) cp ¥³¥Þ¥ó¥É¤Ç¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò¥³¥Ô¡¼¤·¤Þ¤¹:
+
+       (parted) select /dev/hda
+       (parted) cp /dev/md0 3 1
+
+
+------------------------------------------------------------------------------
+8      ¥Ç¥£¥¹¥¯¡¦¥¤¥á¡¼¥¸¥ó¥°
+------------------------------------------------------------------------------
+
+¥Ç¥£¥¹¥¯¡¦¥¤¥á¡¼¥¸¥ó¥°¤ÏÂà¶þ¤Ê Windows ¤Î¥¤¥ó¥¹¥È¡¼¥ëºî¶È¤ò²óÈò¤¹¤ë¤¿¤á¤Î
+¼êË¡¤Ç¤¹¡£Î㤨¤Ð¡¢¤â¤· Windows ¤È Office ¤ò 1000 ¥Þ¥·¥ó¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤·¤¿¤¤
+¤Ê¤é¡¢Â¿Ê¬ 1000 »þ´Ö¤ÎÌó 5 Çܤ°¤é¤¤¤«¤«¤ë¤Ç¤·¤ç¤¦¡£GNU/Linux ¤À¤È¡¢Red Hat
+¤Î kickstart ¤Î¤è¤¦¤Ê¥×¥í¥°¥é¥à¤¬¤¢¤ë¤Î¤Ç¡¢¤½¤ó¤Ê¤Ë¤Ò¤É¤¯¤Ï¤¢¤ê¤Þ¤»¤ó¡£
+¤½¤Î¥×¥í¥°¥é¥à¤Ï¾¤Î¥×¥í¥°¥é¥à¤Î¥¤¥ó¥¹¥È¡¼¥ë¤ä¡¢¼ÂºÝŪ¤Ë¤Ï¡¢¤¢¤Ê¤¿¤¬¤ä¤ë
+ɬÍפΤ¢¤ë¤³¤È¤ò²¿¤Ç¤â¼«Æ°²½¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤½¤Î¤¿¤á¡¢¥Ç¥£¥¹¥¯¡¦
+¥¤¥á¡¼¥¸¥ó¥°¤ÏËÜÅö¤Ë Windows ¥Þ¥·¥ó¤À¤±¤Î¤¿¤á¤Ë»È¤ï¤ì¤Æ¤¤¤Þ¤¹¡£ÌÀ¤é¤«¤Ë¡¢
+²æ¡¹¤Ï Windows (¤ä¡¢¤¤¤«¤Ê¤ë¼«Í³¤Ç¤Ê¤¤¥½¥Õ¥È¥¦¥§¥¢) ¤òÁ´¤¯»È¤ï¤Ê¤¤¤è¤¦¤Ë
+´«¤á¤Æ¤¤¤Þ¤¹¤¬¡¢¤Û¤È¤ó¤É¤ÎÁÈ¿¥¤Ç¤Ï¡¢Î¾Êý¤Î¥·¥¹¥Æ¥à¤¬ÍøÍѤǤ­¤ë¾õÂ֤ˤ¢¤ë
+°Ü¹Ô´ü¤ò·Ð¤ë¤³¤È¤Ê¤¯¡¢Windows ¤«¤é GNU/Linux (¤ä¾¤Î¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢)
+¤ËÀڤ괹¤¨¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¤¤³¤È¤òÍý²ò¤·¤Æ¤¤¤Þ¤¹¡£
+
+¥Ç¥£¥¹¥¯¡¦¥¤¥á¡¼¥¸¥ó¥°¤ò»È¤¨¤Ð¡¢¥Ö¡¼¥È¡¦¥Ç¥£¥¹¥¯¤È CD ¤òÁÞ¤·¹þ¤ß¡¢¤½¤ì¤ò
+Èô¤Ð¤¹¤³¤È¤Ë¤è¤Ã¤Æ¡¢Windows ¤È Office ¤ò´Þ¤à¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Î¥Ç¥£¥¹¥¯¡¦¥¤
+¥á¡¼¥¸¤ò CD ¤Ë¾Æ¤­¡¢¤½¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤òľÀÜÁ´¤Æ¤Î¥³¥ó¥Ô¥å¡¼¥¿¤Î¥Ï¡¼¥É¡¦
+¥Ç¥£¥¹¥¯¤Ë¥³¥Ô¡¼¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤·¤«¤· Windows ¤Î¥Ç¥£¥¹¥¯¾å¤Î¥Ñ¡¼¥Æ¥£
+¥·¥ç¥ó¤Ï¤ª¤½¤é¤¯¤â¤Ã¤ÈÂ礭¤¯¤Ê¤ë¤Ç¤·¤ç¤¦¤«¤é¡¢¤½¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ï¤Þ¤¿Âç
+¤­¤µ¤òÊѹ¹¤µ¤ì¤Í¤Ð¤Ê¤é¤Ê¤¤¤Ç¤·¤ç¤¦¡£»ä¤Ï²¿¿Í¤â¤Î¿Í¡¹¤¬¤³¤Î½èÃÖ¤ò Linux ¤Î
+¥Ö¡¼¥È¡¦¥Õ¥í¥Ã¥Ô¥£¤È Parted ¤ò»È¤Ã¤Æ¤¦¤Þ¤¯¼«Æ°²½¤·¤¿¤Èʹ¤¤¤Æ¤¤¤Þ¤¹¡£¤½¤Î
+¥Õ¥í¥Ã¥Ô¥£¤ò CD ¾å¤Î¥Ö¡¼¥È¡¦¥¤¥á¡¼¥¸¤È¤·¤ÆÍøÍѤ¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢CDROM ¤À
+¤±¤ò»È¤¦¤³¤È¤â²Äǽ¤Ç¤¹¡£¤è¤ê¿¤¯¤Î¾ðÊó¤òÃΤ뤿¤á¤Ë CD writing HOWTO ¤òÆɤó
+¤Ç¤¯¤À¤µ¤¤¡£¤³¤¦¤·¤¿¤³¤ÈÁ´ÂΤòƯ¤«¤»¤ë¤¿¤á¤Ë¤ä¤é¤Ê¤¤¤È¤¤¤±¤Ê¤¤ÉԲĻ׵ĤÊ
+¤³¤È¤¬¾¯¤·¤¢¤ê¤Þ¤¹ (¤½¤ì¤é¤Ï¼¡¤Î°ÂÄê·ÏÎó¤Çľ¤µ¤ì¤ë¤Ç¤·¤ç¤¦)¡£¤¤¤º¤ì¤Ë¤»¤è¡¢
+°Ê²¼¤¬°ìÈÌŪ¤ÊÊýË¡¤Ç¤¹:
+
+(1) Ë¾¤ß¤ÎÀßÄê¤Ç¡¢¤¢¤ë¥Þ¥·¥ó¤Ë Windows ¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Þ¤¹¡£640 Mb °Ê¾å
+»È¤ï¤º¡¢´°Á´¤Ê Linux ¤Î¥¤¥ó¥¹¥È¡¼¥ë¤È CD ¤Î¥¤¥á¡¼¥¸Æó¤Äʬ¤Î¥³¥Ô¡¼ÍѤÎ
+1300 Mb ¤Î¤¿¤á¤Ë½½Ê¬¤Ê;ÃϤò»Ä¤¹¸Â¤ê¡¢¤½¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò¹¥¤­¤Ê¤À¤±Â礭¤¯
+¤·¤Æ¹½¤¤¤Þ¤»¤ó¡£
+
+(2) ¤½¤Î¥Þ¥·¥ó¤Ë Linux ¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Þ¤¹¡£
+
+(3) ¤½¤Î CD ¤Î¥¤¥á¡¼¥¸¤Î¤¿¤á¤Î¥Ç¥£¥ì¥¯¥È¥ê¤òºî¤ê¤Þ¤¹ (Îã: /root/cdimage/)¡£
+
+(4) ¤½¤Î CD ¤Î¥¤¥á¡¼¥¸¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë 640 Mb ¤Î¥Ç¥£¥¹¥¯¡¦¥¤¥á¡¼¥¸¤Î¥Õ¥¡¥¤¥ë
+(Îã: /root/cdimage/diskimage) ¤òºîÀ®¤·¤Þ¤¹:
+
+        # dd if=/dev/zero of=/root/cdimage/diskimage bs=1M count=640
+
+(5) Windows ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò¥Ç¥£¥¹¥¯¡¦¥¤¥á¡¼¥¸¤Ø¥³¥Ô¡¼¤¹¤ë¤¿¤á¡¢Parted ¤ò
+ÍøÍѤ·¤Þ¤¹:
+
+        # parted /root/cdimage/diskimage mklabel msdos mkpart primary fat 0 639
+       # parted /root/cdimage/diskimage cp /dev/hda 1 1
+
+(6) ¤½¤Î CD ¤Î¥¤¥á¡¼¥¸¤Î¥Ç¥£¥ì¥¯¥È¥ê¤«¤é CD ¥¤¥á¡¼¥¸¤òºîÀ®¤·¡¢¤½¤ì¤ò¤¢¤Ê¤¿
+¹¥¤ß¤Î CD ½ñ¤­¹þ¤ß¥Ä¡¼¥ë¤Ç CD ¤Ë¾Æ¤­¤Þ¤¹¡£
+
+(7) Êì¹ñ¸ì¥µ¥Ý¡¼¥È¤È readline ¥µ¥Ý¡¼¥È¤ò̵¸ú¤Ë¤·¤¿¡¢Parted ¤ÎÆÃÊ̤ʥС¼¥¸¥ç¥ó
+¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤Þ¤¹ (¤¢¤ë¤¤¤Ï¡¢Freshmeat ¤«¤éÆÃÊ̤ʠRPM ¤ò¥À¥¦¥ó¥í¡¼¥É¤·¤Þ¤¹):
+
+        localhost:~/parted-1.0.0# ./configure --disable-nls
+        --without-readline --disable-shared; make
+
+(8) Linux ¤Î¥Ö¡¼¥È¡¦¥Ç¥£¥¹¥¯¤òºîÀ®¤·¤Þ¤¹ (Bootdisk HOWTO ¤ò»²¾È)¡£
+
+(9) ¤½¤Î¥Ö¡¼¥È¡¦¥Ç¥£¥¹¥¯ (¤«Êä½¼¤Î¥ë¡¼¥È¡¦¥Ç¥£¥¹¥¯) ¤Ë¾ÊάÈǤΠParted ¤ò
+ÃÖ¤­¤Þ¤¹¡£
+
+(10) °Ê²¼¤ò¹Ô¤¦¥·¥§¥ë¡¦¥¹¥¯¥ê¥×¥È¤ò½ñ¤­¤Þ¤¹:
+
+        mount /dev/cdrom /mnt/cdrom
+        parted --script /dev/hda mklabel msdos mkpartfs primary fat 0 SOME-SIZE
+       parted --script /dev/hda cp /mnt/cdrom/diskimage 1 1
+       parted --script /dev/hda set 1 boot on
+        /sbin/halt
+
+(11) ¥¤¥ó¥¹¥È¡¼¥ë³«»Ï¡ª ¤½¤Î¥Õ¥í¥Ã¥Ô¥£¤È CD ¤ò³Æ¥³¥ó¥Ô¥å¡¼¥¿¤ËÁÞ¤·¹þ¤ß¡¢
+¤½¤ì¤ò²ó¤·¤Æ¤¤¤­¤Þ¤¹...
+
+ÌÀ¤é¤«¤Ë¡¢»ä¤Ï¤³¤ÎÊýË¡¤ò¤º¤Ã¤È´Êñ¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¤·¡¢¤½¤¦¤¹¤ë¤Ç¤·¤ç¤¦¡£
+²æ¡¹¤Ï¤³¤ì¤ò¹Ô¤¦¤Î¤Ë¾®·¿¤Î¥Ç¥£¥¹¥È¥ê¥Ó¥å¡¼¥·¥ç¥ó¤òºî¤í¤¦¤È¹Í¤¨¤Æ¤¤¤ë¤È¤³¤í
+¤Ç¤¹¡£»ä¤Ë¤Ï¤½¤¦¤¤¤¦¤â¤Î¤ò´ÉÍý¤¹¤ë»þ´Ö¤¬¤¢¤ê¤Þ¤»¤ó¡¢Í­»Ö¤Ï¤¤¤Þ¤»¤ó¤«¡©
+
+
+------------------------------------------------------------------------------
+9      ¤µ¤é¤Ê¤ë¾ðÊó¤È´ØÏ¢¥½¥Õ¥È¥¦¥§¥¢
+------------------------------------------------------------------------------
+
+¤â¤·¤â¤Ã¤È¤¿¤¯¤µ¤ó¤Î¾ðÊó¤òȯ¸«¤·¤¿¤é¡¢µ¤·Ú¤Ë parted@gnu.org ¤Ë¼ÁÌä¤òÁ÷¤Ã¤Æ
+¤¯¤À¤µ¤¤¡£(!) ¤Ï¤ª¤½¤é¤¯¤¢¤Ê¤¿¤Î¥Ç¥£¥¹¥È¥ê¥Ó¥å¡¼¥·¥ç¥ó¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë¾ðÊó¤«
+¥½¥Õ¥È¥¦¥§¥¢¤ò¼¨¤·¤Æ¤¤¤Þ¤¹¡£
+
+GNU Parted ÇÛÉÛʪÃæ¤Î¤³¤ì¤é¤Î¥Õ¥¡¥¤¥ë¤Ï¤µ¤é¤Ê¤ë¾ðÊó¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹:
+  * ABOUT-NLS - Êì¹ñ¸ì¥µ¥Ý¡¼¥È¤Î»ÈÍѤȠFree Translation Project ¤Ë¤Ä¤¤¤Æ¤Î
+¾ðÊó
+  * API - libparted ¤Î API ¤Î²òÀâ
+  * AUTHORS - Ã¯¤¬²¿¤ò½ñ¤¤¤¿¤«
+  * BUGS - Ì¤²ò·è¤Î¥Ð¥°
+  * ChangeLog - GNU Parted ¤Ë¤Ê¤µ¤ì¤¿Êѹ¹¤ÎÍúÎò
+  * COPYING - GNU Parted ¤ÎÇÛÉÛ¾ò·ï¤Ç¤¢¤ë¡¢GNU General Public License
+  * COPYING.DOC - Parted ¤Î²òÀâ½ñ¤¬ÇÛÉÛ¤µ¤ì¤Æ¤è¤¤¾ò·ï¤Ç¤¢¤ë¡¢GNU Free
+Documentation Licence
+  * FAT - FAT ¤ÎÂ礭¤µÊѹ¹¥×¥í¥°¥é¥à¤ÎÆ°ºî¤Î»ÅÁȤ˴ؤ¹¤ë¾ðÊó (¥×¥í¥°¥é¥ÞÍÑ)
+  * INSTALL - GNU Parted ¤ä Â¾¤Î¤Û¤È¤ó¤É¤Î¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢¤Î¥³¥ó¥Ñ¥¤¥ëÊýË¡
+  * TODO - ¤Þ¤À¼ÂÁõ¤µ¤ì¤Æ¤¤¤Ê¤¤¡¢·×²èÃæ¤ÎÆÃħ
+
+°Ê²¼¤Î²òÀâ½ñ¤Ï GNU Parted ¤È¤Ï°ì½ï¤ËÇÛÉÛ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¤¬¡¢Ìò¤ËΩ¤Ä¤«¤â
+¤·¤ì¤Þ¤»¤ó¡£¤³¤ì¤é¤Î¤¦¤Á¡¢¤Û¤È¤ó¤É¤Ï¿ʬ¤¢¤Ê¤¿¤Î¥Ç¥£¥¹¥È¥ê¥Ó¥å¡¼¥·¥ç¥ó¤Ë
+Æþ¤Ã¤Æ¤¤¤ë¤Ç¤·¤ç¤¦¡£Î㤨¤Ð¡¢Red Hat Linux ¤Ç¤Ï¡¢CD ¾å¤Î /doc/HOWTO ¤È
+/doc/FAQ ¤ò¸«¤Æ¤¯¤À¤µ¤¤¡£
+
+[ÌõÃí: Â¿¤¯¤Î LDP ¥É¥­¥å¥á¥ó¥È¤ÏÍ­»Ö¤Î¼ê¤Ë¤è¤êÆüËܸì¤ËËÝÌõ¤µ¤ì¤Æ¤ª¤ê¡¢JF
+¤Î¥Ú¡¼¥¸¤«¤é¥À¥¦¥ó¥í¡¼¥É¤Ç¤­¤Þ¤¹:
+       http://jf.linux.or.jp/
+°Ê²¼¤Ç¤Ï¥ª¥ê¥¸¥Ê¥ë¤ÎURL¤Î¤Þ¤Þ¤Ë¤·¤Æ¤ª¤­¤Þ¤¹¡£]
+
+  * Filesystems HOWTO   http://penguin.cz/~mhi/fs/
+  * Hard Disk Upgrade mini-HOWTO (!):   http://sunsite.unc.edu/LDP/HOWTO
+  * Large Disk HOWTO   http://www.win.tue.nl/~aeb/linux/Large-Disk.html
+  * LILO mini-HOWTO (!)   http://sunsite.unc.edu/LDP/HOWTO
+  * MILO HOWTO (!)   http://sunsite.unc.edu/LDP/HOWTO
+  * Linux+OS mini-HOWTOs (!): Linux+DOS+Win95+OS2, Linux+FreeBSD-mini-HOWTO,
+Linux+Win95, Linux+FreeBSD, Linux+NT-Loader.  ¤³¤ì¤é¤Ï°Ê²¼¤«¤éÆþ¼ê¤Ç¤­¤Þ¤¹:
+      http://sunsite.unc.edu/LDP/HOWTO
+  * Partition mini-HOWTO (!):
+      http://www.linuxdoc.org/HOWTO/mini/Partition/index.html
+  * Partition Table HOWTO
+      http://www.win.tue.nl/~aeb/partitions/partition_tables.html
+  * Partition Types list
+      http://www.win.tue.nl/~aeb/partitions/partition_types.html
+  * Software RAID HOWTO
+      http://linas.org/linux/Software-RAID/Software-RAID.html
+
+¤³¤³¤Ç¾¤Î´ØÏ¢¤·¤¿¥×¥í¥°¥é¥à¤òµó¤²¤Þ¤¹¡£¤³¤ì¤é¤Î°ìÉô¤âÍ­ÍѤʲòÀâ¤ò»ý¤Ã¤Æ
+¤¤¤Þ¤¹:
+  * Disk Drake.  www.linux-mandrake.com/diskdrake.  ¤³¤ì¤Ï Parted ¤Èµ¡Ç½Åª¤Ë
+Îà»÷¤·¤Æ¤¤¤Þ¤¹¡£Disk Drake ¤Î FAT ¥³¡¼¥É¤Ï²æ¡¹¤Î Parted ¤Î¥³¡¼¥É¤ò´ð¤Ë¤·¤Æ¤¤
+¤Þ¤¹¡£¤µ¤¢¡¢Disk Drake ¤¬¤É¤Î¤è¤¦¤Ë Parted ¤ËɤŨ¤¹¤ë¤«¸«¤Æ¤ß¤Þ¤·¤ç¤¦: (²æ¡¹
+ξ¼Ô¤¬Æ±°Õ¤·¤Æ¤¤¤Þ¤¹ :-) Disk Drake ¤Ï:
+
+       - »È¤¦¤Î¤¬¤â¤Ã¤È´Êñ¤Ç¡¢´Ö°ã¤¤¤òÈȤµ¤Ê¤¤¤è¤¦¤Ë¼é¤Ã¤Æ¤¯¤ì¤Þ¤¹
+       - ¤â¤Ã¤È´°À®Å٤ι⤤ÌäÂê²ò·è¼êË¡ (/etc/fstab¡¢lilo ¤Ê¤É¤ò½èÍý¤·¤Þ¤¹)
+       - FAT ¤Î¥µ¥Ý¡¼¥È¤Ï¤â¤Ã¤ÈÉϼå (FAT16¡¢FAT32 ´Ö¤ÇÊÑ´¹¤Ç¤­¤Ê¤¤¤·¡¢
+         ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò¥³¥Ô¡¼¤Ç¤­¤Þ¤»¤ó)
+       - ext2 ¤Î¥µ¥Ý¡¼¥È¤Ï¤â¤Ã¤ÈÉϼå (º£¤Î¤È¤³¤í¤Ï)
+       - (µìÍè¤Î) DOS ¤ä Windows ¥·¥¹¥Æ¥à¤È¤Î¸ß´¹À­¤ò¤¢¤ó¤Þ¤ê¹Íθ¤·¤Æ¤Þ¤»¤ó
+       - Èó PC ¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤Ë¤Ï¥µ¥Ý¡¼¥È¤Ê¤·
+
+  * dosfsck
+  * e2fsck, resize2fs e2fsprogs (!)
+       http://web.mit.edu/tytso/www/linux/e2fsprogs.html
+  * ext2resize - Parted ¤ÈƱ¤¸¥³¡¼¥É¤ò»È¤¤¤Þ¤¹¤¬¡¢¥¢¥ó¥Þ¥¦¥ó¥È¤òɬÍפȤ·¤Ê¤¤¡¢
+online ext2 resizer ¤Î¤è¤¦¤Ê¡¢Â¾¤Î¤¤¤¤¤â¤Î¤ò¤¤¤¯¤Ä¤«´Þ¤ó¤Ç¤¤¤Þ¤¹¡£
+       http://ext2resize.sourceforge.net
+  * fdisk (!)
+  * FIPS (!) (First Interactive Partition Splitter)
+      http://www.igd.fhg.de/~aschaefe/fips/
+  * GPart - ²õ¤ì¤¿¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¡¦¥Æ¡¼¥Ö¥ë¤ò²óÉü¤µ¤»¤Þ¤¹¡£
+      http://www.stud.uni-hannover.de/user/76201/gpart
+  * GNU GRUB - GRand Unified Bootloader
+      http://www.gnu.org/software/grub/grub.html
+  * LILO (!) (LInux LOader)   ftp://tsx-11.mit.edu/pub/linux/packages/lilo/
+  * LVM   http://linux.msede.com/lvm
+  * mkdosfs (!)  (¤È¤­¤É¤­ mkfs.msdos ¤È¸Æ¤Ð¤ì¤Þ¤¹)
+  * mke2fs (!)  (¤È¤­¤É¤­ mkfs.ext2 ¤È¸Æ¤Ð¤ì¤Þ¤¹)
+  * mkfs (!)
+  * mkswap (!)
+  * quik (!)
+  * reiserfs: Ãí: reiserfs ¤ÎÂ礭¤µÊѹ¹¥Ä¡¼¥ë¤ÏÄ̾ï¤Î reiserfs ÇÛÉÛʪ¤Ë´Þ¤Þ
+¤ì¤Æ¤¤¤Þ¤¹¡£
+       http://devlinux.com/projects/reiserfs
+  * yaboot (!)  http://ppclinux.apple.com/~benh/
diff --git a/doc/fdl.texi b/doc/fdl.texi
new file mode 100644 (file)
index 0000000..0912c87
--- /dev/null
@@ -0,0 +1,402 @@
+
+@node GNU Free Documentation License
+@appendixsec GNU Free Documentation License
+
+@cindex FDL, GNU Free Documentation License
+@center Version 1.1, March 2000
+
+@display
+Copyright @copyright{} 2000, 2009-2011 Free Software Foundation, Inc.
+51 Franklin St, 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.
+@end display
+
+@enumerate 0
+@item
+PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+written document @dfn{free} in the sense of freedom: to assure everyone
+the effective freedom to copy and redistribute it, with or without
+modifying it, either commercially or noncommercially.  Secondarily,
+this License preserves for the author and publisher a way to get
+credit for their work, while not being considered responsible for
+modifications made by others.
+
+This License is a kind of ``copyleft'', which means that derivative
+works of the document must themselves be free in the same sense.  It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does.  But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book.  We recommend this License
+principally for works whose purpose is instruction or reference.
+
+@item
+APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work that contains a
+notice placed by the copyright holder saying it can be distributed
+under the terms of this License.  The ``Document'', below, refers to any
+such manual or work.  Any member of the public is a licensee, and is
+addressed as ``you''.
+
+A ``Modified Version'' of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A ``Secondary Section'' is a named appendix or a front-matter section of
+the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall subject
+(or to related matters) and contains nothing that could fall directly
+within that overall subject.  (For example, if the Document is in part a
+textbook of mathematics, a Secondary Section may not explain any
+mathematics.)  The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The ``Invariant Sections'' are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License.
+
+The ``Cover Texts'' are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License.
+
+A ``Transparent'' copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, whose contents can be viewed and edited directly and
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters.  A copy made in an otherwise Transparent file
+format whose markup has been designed to thwart or discourage
+subsequent modification by readers is not Transparent.  A copy that is
+not ``Transparent'' is called ``Opaque''.
+
+Examples of suitable formats for Transparent copies include plain
+@sc{ascii} without markup, Texinfo input format, La@TeX{} input format,
+@acronym{SGML} or @acronym{XML} using a publicly available
+@acronym{DTD}, and standard-conforming simple @acronym{HTML} designed
+for human modification.  Opaque formats include PostScript,
+@acronym{PDF}, proprietary formats that can be read and edited only by
+proprietary word processors, @acronym{SGML} or @acronym{XML} for which
+the @acronym{DTD} and/or processing tools are not generally available,
+and the machine-generated @acronym{HTML} produced by some word
+processors for output purposes only.
+
+The ``Title Page'' means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page.  For works in
+formats which do not have any title page as such, ``Title Page'' means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+@item
+VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License.  You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute.  However, you may accept
+compensation in exchange for copies.  If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+@item
+COPYING IN QUANTITY
+
+If you publish printed copies of the Document numbering more than 100,
+and the Document's license notice requires Cover Texts, you must enclose
+the copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover.  Both covers must also clearly and legibly identify
+you as the publisher of these copies.  The front cover must present
+the full title with all words of the title equally prominent and
+visible.  You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a publicly-accessible computer-network location containing a complete
+Transparent copy of the Document, free of added material, which the
+general network-using public has access to download anonymously at no
+charge using public-standard network protocols.  If you use the latter
+option, you must take reasonably prudent steps, when you begin
+distribution of Opaque copies in quantity, to ensure that this
+Transparent copy will remain thus accessible at the stated location
+until at least one year after the last time you distribute an Opaque
+copy (directly or through your agents or retailers) of that edition to
+the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+@item
+MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it.  In addition, you must do these things in the Modified Version:
+
+@enumerate A
+@item
+Use in the Title Page (and on the covers, if any) a title distinct
+from that of the Document, and from those of previous versions
+(which should, if there were any, be listed in the History section
+of the Document).  You may use the same title as a previous version
+if the original publisher of that version gives permission.
+
+@item
+List on the Title Page, as authors, one or more persons or entities
+responsible for authorship of the modifications in the Modified
+Version, together with at least five of the principal authors of the
+Document (all of its principal authors, if it has less than five).
+
+@item
+State on the Title page the name of the publisher of the
+Modified Version, as the publisher.
+
+@item
+Preserve all the copyright notices of the Document.
+
+@item
+Add an appropriate copyright notice for your modifications
+adjacent to the other copyright notices.
+
+@item
+Include, immediately after the copyright notices, a license notice
+giving the public permission to use the Modified Version under the
+terms of this License, in the form shown in the Addendum below.
+
+@item
+Preserve in that license notice the full lists of Invariant Sections
+and required Cover Texts given in the Document's license notice.
+
+@item
+Include an unaltered copy of this License.
+
+@item
+Preserve the section entitled ``History'', and its title, and add to
+it an item stating at least the title, year, new authors, and
+publisher of the Modified Version as given on the Title Page.  If
+there is no section entitled ``History'' in the Document, create one
+stating the title, year, authors, and publisher of the Document as
+given on its Title Page, then add an item describing the Modified
+Version as stated in the previous sentence.
+
+@item
+Preserve the network location, if any, given in the Document for
+public access to a Transparent copy of the Document, and likewise
+the network locations given in the Document for previous versions
+it was based on.  These may be placed in the ``History'' section.
+You may omit a network location for a work that was published at
+least four years before the Document itself, or if the original
+publisher of the version it refers to gives permission.
+
+@item
+In any section entitled ``Acknowledgments'' or ``Dedications'',
+preserve the section's title, and preserve in the section all the
+substance and tone of each of the contributor acknowledgments
+and/or dedications given therein.
+
+@item
+Preserve all the Invariant Sections of the Document,
+unaltered in their text and in their titles.  Section numbers
+or the equivalent are not considered part of the section titles.
+
+@item
+Delete any section entitled ``Endorsements''.  Such a section
+may not be included in the Modified Version.
+
+@item
+Do not retitle any existing section as ``Endorsements''
+or to conflict in title with any Invariant Section.
+@end enumerate
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant.  To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section entitled ``Endorsements'', provided it contains
+nothing but endorsements of your Modified Version by various
+parties---for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version.  Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity.  If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+@item
+COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy.  If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections entitled ``History''
+in the various original documents, forming one section entitled
+``History''; likewise combine any sections entitled ``Acknowledgments'',
+and any sections entitled ``Dedications''.  You must delete all sections
+entitled ``Endorsements.''
+
+@item
+COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+@item
+AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, does not as a whole count as a Modified Version
+of the Document, provided no compilation copyright is claimed for the
+compilation.  Such a compilation is called an ``aggregate'', and this
+License does not apply to the other self-contained works thus compiled
+with the Document, on account of their being thus compiled, if they
+are not themselves derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one quarter
+of the entire aggregate, the Document's Cover Texts may be placed on
+covers that surround only the Document within the aggregate.
+Otherwise they must appear on covers around the whole aggregate.
+
+@item
+TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections.  You may include a
+translation of this License provided that you also include the
+original English version of this License.  In case of a disagreement
+between the translation and the original English version of this
+License, the original English version will prevail.
+
+@item
+TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except
+as expressly provided for under this License.  Any other attempt to
+copy, modify, sublicense or distribute the Document 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.
+
+@item
+FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation 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.  See
+@uref{http://www.gnu.org/copyleft/}.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License ``or any later version'' applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation.  If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.
+@end enumerate
+
+@page
+@appendixsubsec ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+@smallexample
+@group
+  Copyright (C)  @var{year}  @var{your name}.
+  Permission is granted to copy, distribute and/or modify this document
+  under the terms of the GNU Free Documentation License, Version 1.3
+  or any later version published by the Free Software Foundation;
+  with the Invariant Sections being @var{list their titles}, with the
+  Front-Cover Texts being @var{list}, and with the Back-Cover Texts being @var{list}.
+  A copy of the license is included in the section entitled ``GNU
+  Free Documentation License''.
+@end group
+@end smallexample
+
+If you have no Invariant Sections, write ``with no Invariant Sections''
+instead of saying which ones are invariant.  If you have no
+Front-Cover Texts, write ``no Front-Cover Texts'' instead of
+``Front-Cover Texts being @var{list}''; likewise for Back-Cover Texts.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
+
+@c Local Variables:
+@c ispell-local-pdict: "ispell-dict"
+@c End:
diff --git a/doc/parted-pt_BR.texi b/doc/parted-pt_BR.texi
new file mode 100644 (file)
index 0000000..9005781
--- /dev/null
@@ -0,0 +1,2898 @@
+\input texinfo    @c -*-texinfo-*-
+@c %**start of header
+@setfilename parted-pt_BR.info
+@settitle Manual do Usuário do Parted
+@c %**end of header
+
+@c RMK: for definitions and discussion of my methods, skip to the end
+@c of the file, after  the "bye" directive.
+
+@include version.texi
+
+@paragraphindent 4
+
+@direntry
+* parted: (parted).                        software de particionamento GNU
+@c RMK: the following doesn't work.  'info --usage' is improperly documented.
+@c * Chamando o parted: (parted)Chamando o Parted.    Opções de linha de comando e comandos
+@end direntry
+
+@c RMK: texi: an info section describing the file is texinfo custom.
+@ifinfo
+This file documents the use of GNU Parted, a program for creating,
+resising, checking and copy partitions, and file systems on them.
+
+Copyright 1999-2002, 2009-2011 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+no Invariant Sections, with the no Front-Cover Texts, and with no
+Back-Cover Texts.  A copy of the license is included in the section
+entitled ``GNU Free Documentation License''.
+
+@end ifinfo
+
+@c RMK: texi : the titlepage section is texinfo custom.
+@titlepage
+@title Manual do GNU Parted
+@subtitle GNU Parted, versão @value{VERSION}, @value{UPDATED}
+@author Andrew Clausen @email{clausen@@gnu.org}
+@c FDL: Following section 4.B of the GNU Free Documentation License,
+@c I am required to list myself as an author of this work.
+@author Richard M. Kreuter @email{kreuter@@anduril.rutgers.edu}
+@author Bernardo João Torres da Silveira (Tradução Portuguesa) @email{bernardojts@@ig.com.br}
+
+@page
+@vskip 0pt plus 1filll
+
+Copyright @copyright{} 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts.  A copy of the license is included in the section entitled ``GNU
+Free Documentation License''.
+@end titlepage
+
+@ifnottex
+@node Top
+@top TITLE
+
+@c RMK: added Top node describing this manual Should it be more verbose?
+This document describes the use of GNU Parted, a program for creating,
+destroying, resizing, checking and copying hard drive partitions, and
+the file systems on them.
+
+This document applies to @value{VERSION} of GNU Parted.  Its content is
+substantially similar to the user's manual included in the source
+distribution of GNU Parted @value{VERSION}.  That file was written by
+Andrew Clausen.
+@end ifnottex
+
+@c if we don't get menus (eg: HTML), use contents instead
+@shortcontents
+
+@menu
+* Instrodução::                 Overview
+* Usando o Parted::             Particionando um Disco Rígido
+* BIOSes e Firmwares::          Entre ligar e carregar
+* Carregadores de Boot::        Como o sistema operacional inicia
+* Sistemas Operacionais::       Sistemas Operacionais e sistemas de arquivo
+* Sistemas de Arquivo::         Sistemas de arquivo suportados, e seus truques
+* LVM e RAID::                  Volumes virtuais de disco
+* Espelhamento de Disco::       Clonando instalações
+* Software Relacionado::        Leitura posterior em tópicos relacionados
+* Copiando esse Manual::         Como fazer cópias desse manual
+* História::                     A história desse manual
+@ifnotplaintext
+* Índice::                       Índice de conceitos citados
+@end ifnotplaintext
+@end menu
+
+@node    Introdução
+@chapter Introdução
+
+@menu
+* Overview::                    GNU Parted e conhecimentos necessários
+* Software Necessário::         Dependências de software do GNU Parted
+* Plataformas Suportadas::      Aonde você pode usar o GNU Parted
+* Licença::                     O que você pode e o que não pode com o GNU Parted
+* Compilando::                  Como compilar o GNU Parted
+* Discos de boot do Parted::    Como usar o Parted em plataformas não suportadas
+@end menu
+
+@node Overview
+@section Overview do GNU Parted
+@cindex descrição do parted
+@cindex overview
+@cindex descrição do parted
+@cindex bugs, como relatar
+@cindex relatando bugs
+@cindex falando com os desenvolvedores
+
+O GNU Parted é um programa para criar, destruir, redimensionar,
+checar e copiar partições, e os sistemas de arquivos nelas.
+Ele é útil para criar espaço para novos sistemas operacionais,
+reorganizar o uso de disco, copiar dados entre discos rígidos, e
+``espelhamento de discos'' --- clonar instalações em muitos
+computadores.
+
+Esta documentação assume que você conhece partições e sistemas de
+arquivos. Se você pode querer aprender mais sobre eles, a Partition
+mini-HOWTO é leitura recomendada. Ela provavelmente vem com a sua
+distribuição, ou está disponível em
+
+@c FIXME: standards: howto labelled non-free by LDP
+@uref{http://www.linuxdoc.org/HOWTO/mini/Partition/index.html}
+
+O GNU Parted foi feito para minizar as chances de perdas de dados.
+Por exemplo, ele foi feito para evitar perda de dados durante
+interrupções (como falta de luz) e realiza muitas checagens de erro.
+Contudo podem existir bugs no Parted, então você deve fazer backup de
+arquivos importantes.
+
+A página do GNU Parted é @uref{www.gnu.org/software/parted}.  Ele pode
+ser baixado em @uref{ftp.gnu.org/gnu/parted}.
+
+A lista de e-mails do Parted é @email{parted@@gnu.org}.  Para se
+inscrever, escreve para @email{bug-parted-request@@gnu.org} com @samp{subscribe} no assunto.  Informações para inscrição e os arquivos estão disponíveis em:
+
+@uref{http://mail.gnu.org/mailman/listinfo/bug-parted}
+
+Por favor mande relatos de bugs para @email{bug-parted@@gnu.org}.
+Quando enviar relatos de bugs, por favor inclua a versão do GNU Parted.
+Se o bug é relativo a tabelas de partição, então por favor inclua a
+saída desses comandos:
+
+@example
+@group
+# @kbd{fdisk /dev/hda -l}
+# @kbd{fdisk /dev/hda}
+Command (m for help): @kbd{p}
+Command (m for help): @kbd{x}
+Extended command (m for help): @kbd{p}
+@end group
+@end example
+
+Sinta-se à vontade para pedir ajuda nessa lista --- somente confira se
+a sua pergunta não foi respondida aqui ainda.  Se você não entende a
+documentação, por favor nos diga, para que possamos explicar melhor.
+Nossa filosofia é: se você precisar pedir por ajuda, então algo precisa
+ser ajustado para que você (e outros) não precisem pedir por ajuda.
+
+Do mesmo modo, adoraríamos ouvir suas idéias :-)
+
+@node Software Necessário
+@section Software necessário para usar o Parted
+@cindex dependências de software
+@cindex software necessário
+@cindex libuuid
+@cindex e2fsprogs
+@cindex readline
+@cindex gettext
+
+O GNU Parted depende dos seguintes pacotes para compilar corretamente:
+
+@itemize @bullet
+
+@item libuuid, part of the e2fsprogs package.  Se você não tem, você
+pode pegá-la em:
+
+       @uref{http://web.mit.edu/tytso/www/linux/e2fsprogs.html}
+
+Se você quer compilar o Parted e a e2fsprogs, note que você vai
+predcisar fazer @kbd{make install} and @kbd{make install-libs} e2fsprogs.
+
+@item GNU Readline (opcional), disponível em
+
+       @uref{ftp://ftp.gnu.org/gnu/readline}
+
+Se você está compilando o Parted, e você não tem readline, você
+pode desabilitar o suporte do Parted a readline com o a opção
+@kbd{--disable-readline} para o @command{configure}.
+
+@item GNU gettext (ou software compatível) para compilação, se
+você dese suporte a internacionalização.
+
+       @uref{ftp://ftp.gnu.org/gnu/gettext}
+
+@item libreiserfs, se vocÊ quiser suporte a reiserfs:
+
+       @uref{http://reiserfs.linux.kiev.ua}
+
+Preste atenção que o parted vai automaticamente detectar a libreiserfs
+quando rodar, e vai habilitar o suporte a reiserfs.  A libreiserfs é
+nova e não foi muito testada ainda.
+
+@end itemize
+
+@node Plataformas Suportadas
+@section Platformas aonde o GNU Parted roda
+@cindex plataformas suportadas
+@cindex platformas, suportadas
+
+Esperamos que essa lista cresça bastante. Se você não tem uma dessas
+plataformas (Linux no momento!), então você precisar usar um disco de
+boot. @xref{Discos de boot do Parted, Usando os Discos de Boot do Parted}.
+
+@table @asis
+@item GNU/Linux
+Linux versões 2.0 para cima, no Alpha, PCs x86, PC98, Macintosh PowerPC, e Sun.
+
+@c RMK: veracidade: bem, *Eu* nunca ussei o parted num GNU/Hurd ... :)
+@item GNU/Hurd
+Suporte experimental.
+
+@end table
+
+A GNU libc 2.1 ou superior é necessária. Você provavelmente pode usar
+versões anteriores usando a opção @samp{--disable-nls}.
+@xref{Compilando o GNU Parted}. (Nota: Eu acho que nós já tiramos essa
+necessidade.  Á fazer: checar se funciona na libc 2.0!)
+
+@node Licença
+@section Termos de distribuição para o GNU Parted
+@cindex termos da licença
+@cindex terms da distribuição
+@cindex gnu gpl
+@cindex gpl
+
+O GNU Parted é software livre, previsto pela GNU General Public
+Licese Version 2. Ela deve vir com a distribuição do Parted, no arquivo
+COPYING. Se não, escreva para a Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+
+Libparted é considerada parte do GNU Parted. Ela é prevista pela GNU
+General Public License. NÃO é lançada sobre a GNU Lesser General Public
+License (LGPL).
+
+@node Compilando
+@section Compilando o GNU Parted
+@cindex compilando o parted
+@cindex compilando o parted
+
+Se você quer compilar o GNU Parted, geralmente é feito com:
+
+@example
+@group
+$ @kbd{./configure}
+$ @kbd{make}
+@end group
+@end example
+
+Contudo há algumas opções para o @command{configure}:
+
+@table @code
+@item --without-readline
+desliga o uso de readline. Isso é útil para fazer discos de boot,
+etc., onde poucas bibliotecas estão disponíveis.
+
+@item --disable-debug
+não inclui símbolos para debugar
+
+@item --disable-dynamic-loading
+desabilita o carregamento dinâmico de algumas biblioteas (somente
+reiserfs no momento, apesar de haver pretensões de expansão). Carregamento
+dinâmico é útil porque ele permite você reusar as bibliotecas compartilhadas
+do libparted mesmo quando você não sabe se algumas bibliotecas vão estar
+disponíveis. Isso tem um pequeno aumento (principalmente ligando com a
+libdl), então pode ser útil desabilitar isso em discos de boot se você
+não precisa de flexibilidade.
+
+@item --disable-fs
+desabilita o suporte a todos os sistemas de arquivo
+
+@item --disable-nls
+desativa o suporte a língua nativa. Isso é útil par usar com versões
+antigas da glibc, ou uma versão reduzida da glibc boa para discos de
+boot.
+
+@item --disable-shared
+desabilita o uso de bibliotecas compartilhadas. Ela pode ser necessária
+para uso com versões antigas da GNU libc, se você receber um erro sobre
+algum ``registrador cuspido''.  Também útil para discos de boot.
+
+@item --disable-Werror
+ignorar avisos na compilação
+
+@item --enable-all-static
+compila o executável do Parted como um binário completamente estático
+Isto é conveniente para discos de boot, porque você não precisa instalar
+qualquer bibliotecas no disco de boot (contudo, alguns programas podem
+precisar delas@dots{}) Nota: você também vai precisar rodar o strip(1).
+
+@item --enable-discover-only
+suporta somente leitura/checagem
+
+@item --enable-mtrace
+habilita debugar os malloc()'s
+
+@item --enable-read-only
+desabilita escrita (para debugar)
+
+@end table
+
+@node Discos de Boot do Parted
+@section Usando um Disco de Boot do Parted
+@cindex disco de boot
+@cindex disquete de boot
+@cindex plataformas não-suportadas
+
+Se você quer rodar o Parted numa máquina sem o GNU/Linux instalado, ou
+voê quer redimensionar uma partição raíz ou de boot, você vai precisar
+usar um disco de boot.
+
+Uma imagem para um disco de boot está disponível em:
+
+@uref{ftp://ftp.gnu.org/gnu/parted/bootdisk/partboot.img}
+
+@c RMK: printing: added some wording here to make the paragraph look
+@c acceptable in print
+Para criar os discos de boot, a imagem de disco deve ser escrita para
+um disquete de boot. No GNU/Linux, isso pode ser feito com
+
+@example
+# @kbd{dd if=partboot.img of=/dev/fd0 bs=1440k}
+@end example
+
+@noindent Ou use o RAWRITE.EXE dentro do DOS.
+
+Infelizmente, o disco de boot não dá suporte a vários tipos de hardware.
+Se o seu disco rígido não é suportado, então você vai precisar fazer o
+seu próprio disco de boot. Você pode copiar o binário do parted do disco
+de boot do parted para outro disco, ou tentar outros discos de boot, ou
+fazer o seu próprio. Você pode achar o mkparted útil, que é um script
+shell para fazer seus próprios discos de boot do parted. Ele está
+disponível em:
+
+@uref{ftp://ftp.tux.org/pub/people/kent-robotti/mkparted}
+
+Para copiar o parted do disco de boot para outro disco:
+
+@enumerate
+@item Fazer o Boot de um disco de boot do Parted.
+
+@item Insira outro disquete de boot formatado em ext2. Se ele não está
+formatado, você pode criar um sistema de arquivo com, por exemplo:
+
+@example
+$ @kbd{parted /dev/fd0 mklabel loop mkpartfs primary ext2 0 1.4}
+@end example
+
+@item Monte o disquete, ex:
+
+@example
+$ @kbd{mount -t ext2 /dev/fd0 /mnt/floppy}
+@end example
+
+@item Copie o @file{/sbin/parted} para o disquete, ex:
+
+@example
+$ @kbd{cp /sbin/parted /mnt/floppy}
+@end example
+
+@item Copie @file{/lib/*} para o disquete, ex:
+
+@example
+$ @kbd{cp /lib/* /mnt/floppy}
+@end example
+
+@item Desmonte o disquete, ex:
+
+@example
+$ @kbd{umount /mnt/floppy}
+@end example
+
+@item Ache um disquete de boot que @emph{realmente} suporte o seu
+disco rígidos. (Dica: try looking for rescue disks from various
+distributions on big mirror sites)
+
+@item Tire o seu disquete de boot.  Monte o disquete aonde você copiou o Parted.
+
+@item Rode o Parted. Por exemplo,
+
+@example
+# @kbd{cd /mnt/floppy}
+# @kbd{LD_LIBRARY_PATH=. ./parted}
+@end example
+@end enumerate
+
+@node    Usando o Parted
+@chapter Usando o Parted
+@cindex comandos
+
+@menu
+* Particionando::                   Particionamento de disco no context
+* Rodando o Parted::                Particionamento com o Parted
+* Chamando o Parted::               Chamando o parted e suas opções
+* Explicação dos command::          Explicação completa dos comandos do parted
+* Exemplos::                        Sessões de exemplo do Parted
+@end menu
+
+@node Particionando
+@section Conceitos de Particionamento
+@cindex overview do particionamento
+
+Infelizmente, particionar o disco é mais complicado. Isto é porque
+exisstem interações entre muitos sistemas operacionais diferentes
+que precisam ser levadas em conta:
+
+@itemize @bullet
+@item
+A BIOS ou firmware - o programa que é colocado numa ROm dentro do seu
+computador, que faz checagem de memória, etc. Você não pode (facilmente)
+mudar os programas nesse sistema. Exemplos de BIOS ou programas firmware:
+AmiBIOS, Award, Phoenix, OpenFirmware. Você somente vai ter um desses
+programas.
+
+@item
+O carregador de boot - o programa que permite você selecionar qual
+sistema operacional que você quer usar, e carrega aquele sistema
+operacional. Exemplos: LILO, GRUB, Yaboot, Quik. Você pode ter mais de
+um carregador de boot instalado, especialmente se você tem mais de um
+tipo de sistema operacional instalado.
+
+@item
+O sistema operacional (nesse momento, este deve ser o GNU/Linux) que
+rode Parted e outros sistemas operacionais que você use.
+
+@item
+Os tipos de sistemas de arquivo - a maneira como os dados devem ser
+guardados nas partições. Exemplos deles são: ext2, fat32, hfs, reiserfs.
+Você freqüentemente ter partições de sistemas de arquivo diferente.
+@end itemize
+
+O Parted suporta muitas combinações de BIOS, carregadores de boot,
+sistemas operacionais, e sistemas de arquivo, e vai suportar mais
+ainda no futuro. Para melhor entender as regras de cada, por favor
+veja @ref{BIOSes and Firmware}, @ref{Boot Loaders},
+@ref{Sistemas operacionais}, e @ref{Sistemas de arquivo}.
+
+Este capítulo descreve como usar o Parted, que é sempre o mesmo, não
+importa que sistemas que você está usando. Você deve ler esse capítulo,
+então cada um dos capítulos sobre BIOS's, carregadores de boot, sistemas
+operacionais, e sistemas de arquivo. Contudo, você só precisa ler as
+seções que são relevantes pra você. Por exemplo, se você só usa o LILO
+como carregador de boot, você só precisar ler a introdução e
+@ref{LILO, the section on LILO}.
+
+@node Rodando o Parted
+@section Usando o GNU Parted
+@cindex modos de uso
+
+O Parted tem dois modos: linha de comando e interativo. O Parted
+sempre deve começar com:
+
+@example
+# @kbd{parted @var{device}}
+@end example
+
+@noindent aonde @var{device} o dispositivo de disco rígido que você
+quer editar. (Se você é malandro, o Parted vai tentar adivinhar qual
+dispositivo você quer.)
+
+No modo de linha de comando, ele é seguido por um ou mais comandos.
+Por exemplo:
+
+@example
+# @kbd{parted /dev/sda resize 1 52 104 mkfs 2 fat16}
+@end example
+
+@noindent Opções (como @kbd{--help}) só podem ser especificadas na
+linha de comando.
+
+No modo interativo, os comandos são inseridos um de cada vez num prompt,
+e você modifica o disco imediatamente. Por exemplo:
+
+@example
+(parted) @kbd{resize 1 52.0005 104.5}
+(parted) @kbd{mkfs 2 fat16}
+@end example
+
+@c RMK MARK
+
+@noindent Abreviações não-ambíguas são permitidas. Por exemplo, você pode
+digitar ``p'' ao invés de ``print'', e ``re'' ao invés de ``resize''.
+Comandos podem ser digitados, tanto em inglês, ou em português. Isto
+pode criar ambiguidades.
+
+Também perceba que você pode specificar casas decimais nos números
+correspondentes (em megabytes). Números negativos são contados a partir
+do final do disco, com "-0" sendo o final do disco.
+
+Se você não der um paramêtro para um comando, o Parted vai perguntar para
+você. Por exemplo:
+
+@example
+(parted) @kbd{resize 1}
+Start? @kbd{0}
+End? @kbd{400}
+@end example
+
+O Parted sempre vai avisar você antes de fazer algo que é potencialmente
+perigoso, a não ser que algo seja algo obviamente perigoso (por exemplo:
+rm, mklabel, mkfs). Por exemplo, se você tenta diminuir ``muito'' uma
+partição (por exemplo, menos que o espaço disponível), o Parted vai
+automaticamente redimensionar para o mínimo que ele pode fazer sem perder
+dados. Se este mínimo é muito diferente do que você pediu, ele vai avisar
+que vai fazer uma coisa significantemente diferente do que você pediu.
+Por causa dos sistemas de particionamento terem restrições complicadas,
+o Parted geralmente vai fazer algo diferente do que você pediu (Por
+exemplo, criar um particionamento começando em 10.352, e não 10.4).
+
+@node Chamando o Parted
+@section Opções de Linha de Comando
+@cindex opções na chamada
+@cindex comandos, overview
+@cindex opções na chamada
+
+Quando chamado na linha de comando, o parted suporta a seguinte sintaxe:
+
+@example
+# @kbd{parted [@var{opção}] @var{dispositivo} [@var{comando} [@var{argumento}]]}
+@end example
+
+As seguintes opções e comandos estão disponíveis. Para explicações
+detalhadas do uso dos comandos do parted, veja @ref{Command explanations}.
+Opções começam com um hífen, e comandos não:
+
+Opções
+
+@table @samp
+@item -h
+@itemx --help
+mostra uma mensagem de ajuda
+
+@item -s
+@itemx --script
+nunca pede pela intervenção do usuário
+
+@item -v
+@itemx --version
+mostra a versão
+display the vesion
+@end table
+
+@node Explicação dos comandos
+@section Comandos de Sessão no Parted
+@cindex sintaxe dos comandos
+@cindex listagem detalhada dos comandos
+@cindex comandos, lista detalhada
+
+O GNU Parted nos dá os seguintes comandos:
+
+@menu
+* check::
+* cp::
+* help::
+* mklabel::
+* mkfs::
+* mkpart::
+* mkpartfs::
+* move::
+* name::
+* print::
+* quit::
+* rescue::
+* resize::
+* rm::
+* select::
+* set::
+@end menu
+
+@node check
+@subsection check
+@cindex check, descrição do comando
+@cindex descrição do comando, check
+
+@deffn Comando check @var{minor}
+
+Checa se o sistemas de arquivo na partição @var{minor}
+tem algum erro.
+
+Exemplo:
+
+@example
+(parted) @kbd{check 1}
+@end example
+
+Checa o sistema na partição 1.
+@end deffn
+
+@node cp
+@subsection cp
+@cindex cp, descrição do comando
+@cindex descrição do comando, cp
+
+@deffn Comando cp [@var{qual-dispositivo}] @var{from-minor} @var{to-minor}
+
+Copia o sistemas de arquivo na partição @var{from-minor} para a partição
+@var{to-minor}, apagando o conteúdo original da partição de destino.
+
+Um parâmetro opcional pode ser dado, @var{qual-dispositivo}, que
+especifica de qual dispositivo a partição de origem é.
+
+Sistemas de arquivo suportados
+@itemize
+@item ext2, ext3
+(desde que a partição de destino é maior que a partição de origem)
+
+@item fat16, fat32
+@item linux-swap
+(equivalente ao mkswap na partição de destino)
+@item reiserfs (se a libreiserfs está instalada)
+
+@end itemize
+
+Exemplo:
+
+@example
+(parted) @kbd{cp /dev/hdb 2 3}
+@end example
+
+@c FIXME: this doesn't format right.
+
+Copia a partição 2 do @file{/dev/hdb} (por exemplo, @file{/dev/hdb2})
+para a partição em 3, no dispositivo aonde o Parted foi carregado,
+destruindo o conteúdo original da partição 3.
+@end deffn
+
+@node help
+@subsection help
+@cindex help, descrição do comando
+@cindex descrição do comando, help
+
+@deffn Comando help [@var{comando}]
+
+Mostra a ajuda geral, ou a ajuda no @var{comando}.
+
+Exemplo:
+
+@example
+(parted) @kbd{help resize}
+@end example
+
+Mostra a ajuda para o comando resize.
+@end deffn
+
+@node mklabel
+@subsection mklabel
+@cindex mklabel, descrição do comando
+@cindex descrição do comando, mkindex
+
+@deffn Comando mklabel @var{tipo-de-etiqueta}
+
+Cria uma nova etiqueta de disco, do tipo @var{tipo-de-etiqueta}. A nova
+etiqueta de disco não vai ter partições. Este comando (normalmente) não
+vai tecnicamente destruir seus dados, mas vai fazê-los inutilizáveis,
+e você vai precisar usar o comando rescue (@pxref{Softwares Relacionados})
+para recuperar qualquer partição. Gpart só trabalha com etiquetas de
+disco do msdos (AFAIK), mas é muito melhor que o parted para recuperar
+partições. O Parted funciona em todas as tabelas de partição.
+@footnote{Todo mundo parece ter diferentes palavras para ``etiqueta
+de disco'' --- todas essas palavras significam a mesma coisa: tabela
+de partições, mapa das partições. Também o Registro Mestre do Boot em
+máquinas x86 é guardado no mesmo setor das Tabelas de Partição (você
+não precisa saber disso para usar o Parted).}
+
+@var{tipo-de-etiqueta} deve ser de um desses tipos de tabelas de partição suportados:
+@itemize
+@item bsd
+@item loop (acesso bruto ao disco)
+@item gpt
+@item mac
+@item msdos
+@item pc98
+@item sun
+@end itemize
+
+Exemplo:
+
+@example
+(parted) @kbd{mklabel msdos}
+@end example
+
+Cria uma etiqueta de disco ao estilo msdos.
+@end deffn
+
+@node mkfs
+@subsection mkfs
+@cindex mkfs, descrição do comando
+@cindex descrição do comando, mkfs
+
+@deffn Command mkfs @var{minor} @var{tipo-de-sistema-de-arquivo}
+
+Faz um sistemas de arquivo @var{tipo-de-sistema-de-arquivo} na partição
+@var{minor}, destruindo todos os dados que residem naquela partição.
+
+Tipos de arquivo suportados:
+@itemize
+@item ext2
+@item mips
+@item fat16
+@item fat32
+@item linux-swap
+@item reiserfs (se a libreiserfs estiver instalada)
+@end itemize
+
+Exemplo:
+
+@example
+(parted) @kbd{mkfs 2 fat32}
+@end example
+
+Faz um sistemas de arquivo @var{fat32} na partição 2.
+@end deffn
+
+@node mkpart
+@subsection mkpart
+@cindex mkpart, descrição do comando
+@cindex descrição do comando, mkpart
+
+@deffn Comando mkpart @var{tipo-de-partição} [@var{tipo-de-sistemas-de-arquivo}] @var{começo} @var{fim}
+
+Cria uma nova partição, @emph{sem} criar um novo sistemas de arquivo
+na partição. Ela é útil para criar partições para sistemas de arquivo
+(ou LVM, etc.) que o Parted não suporta. Você pode especificar tipo
+de sistemas de arquivo, para definir o código de partição apropriado
+na tabela de partições para a nova partição. @var{tipo-de-sistemas-de-arquivo}
+é necessário para partições de dados (por exemplo, partições não-
+extendidas). @var{começo} e @var{fim} são a distância do começo do
+didco, isto é, a ``distância'' do começo do disco.
+
+@var{tipo-de-partição} é uma dessas: primary (primária), extended
+(extendida), logical (lógica). Extendida e lógica somente são usadas
+para tabelas de partição do tipo msdos e mips.
+
+@var{tipo-de-sistemas-de-arquivo} deve ser um dos suportados:
+@itemize
+@item ext2
+@item fat32
+@item fat16
+@item HFS
+@item linux-swap
+@item NTFS
+@item reiserfs
+@item ufs
+@end itemize
+
+Exemplo:
+
+@example
+(parted) @kbd{mkpart logical 0.0 692.1}
+@end example
+
+Cria uma partição lógica que vai conter um sistemas de arquivo ext2.
+A partição vai começar no começo do disco, e finalizar em 692.1
+megabytes naquele disco.
+
+@end deffn
+
+@node mkpartfs
+@subsection mkpartfs
+@cindex mkpartfs, descrição do comando
+@cindex descrição do comando, mkpartfs
+
+@deffn Comando mkpartfs @var{tipo-de-partição} @var{tipo-de-sistemas-de-arquivos} @var{começo} @var{fim}
+
+Cria uma nova partição do tipo @var{tipo-de-partição} com um novo
+sistemas de arquivo do tipo @var{tipo-de-sistemas-de-arquivo} nele.
+a nova partição vai começar em @var{começo} megabytes, e tem fim em
+@var{fim} megabytes do começo do disco.
+Não use esse comando para recuperar uma partição (use mkpart ao invés
+disso).
+
+@var{tipo-de-partição} é uma dessas: primary (primária), extended
+(extendida), logical (lógica). Extendida e lógica são somente usadas
+por tabelas de partição do tipo msdos e mips.
+
+@var{tipo-de-sistemas-de-arquivo} deve ser um dos seguintes suportados:
+@itemize
+@item ext2
+@item fat32
+@item fat16
+@item linux-swap
+@item reiserfs (se a libreiserfs está instalada)
+@end itemize
+
+Exemplo:
+
+@example
+(parted) @kbd{mkpartfs logical ext2 440 670}
+@end example
+
+Cria uma partição lógica e coloca um sistemas de arquivo do tipo
+ext2, começando em 440 megabytes e finalizando em 670 megabytes
+do começo do disco.
+@end deffn
+
+@node move
+@subsection move
+@cindex move, descrição do comando
+@cindex descrição do comando, move
+
+@deffn Comando move @var{minor} @var{começo} [@var{fim}]
+
+Move a partição no disco, movendo seu começo para @var{começo}.
+Nota: mover nunca muda o número do minor.
+
+Se nenhum @var{fim} é dado, o tamanho da partição permanece o mesmo.
+
+Sistemas de arquivo suportados:
+@itemize
+@item ext2, ext3
+(desde que a partição de destino é maior que a partição de origem)
+@item fat32
+@item fat16
+@item linux-swap
+@item reiserfs (se a libreiserfs está instalada)
+@end itemize
+
+Exemplo:
+
+@example
+(parted) move 2 150
+@end example
+
+Move a partição com o minor número 2 para que ela comece 150 megabytes
+do início do disco.
+
+@end deffn
+
+@node name
+@subsection name
+@cindex name, descrição do comando
+@cindex descrição do comando, name
+
+@deffn Comando name @var{minor} @var{nome}
+
+Define um nome para a partição @var{minor} (Mac e PC98 somente). O
+nome poder ser colocado entre aspas.
+
+Exemplo:
+
+@example
+(parted) @kbd{name 2 'Secreto'}
+@end example
+
+Define o nome da partição 2 para `Secreto'.
+@end deffn
+
+@node print
+@subsection print
+@cindex print, descrição do comando
+@cindex descrição do comando, print
+
+@deffn Comando print
+
+Mostra a tabela de partições que o parted está editando.
+
+Exemplo:
+
+@example
+@group
+(parted) @kbd{print}
+Disk geometry for /dev/hda: 0.000-2445.679 megabytes
+Disk label type: msdos
+Minor    Start       End     Type      Filesystem  Flags
+1          0.031    945.000  primary   FAT         boot, lba
+2        945.000   2358.562  primary   ext2
+3       2358.562   2445.187  primary   linux-swap
+@end group
+@end example
+@end deffn
+
+@node quit
+@subsection quit
+@cindex quit, descrição do comando
+@cindex descrição do comando, quit
+
+@deffn Comando quit
+
+Sai do Parted.
+
+@c RMK: generality: the following will apply to any operating system on
+@c which parted will run, not only Linux-based ones.
+@c clausen: yeah... just that the way hurd and linux work are totally
+@c different, and it's actually very hard to speak in general.  Need to
+@c discuss this more
+É somente depois que o Parted sai que o kernel do Linux fica sabendo
+das mudanças que o Parted fez nos discos. Contudo, as mudanças causadas
+quando você digita um comando vai @emph{provavelmente} serem feitas para
+o disco imediatamente após digitar um comando. Mas, Linux é cache, e o
+cache do hardware do disco pode por uma demora nisso.
+@end deffn
+
+@node rescue
+@subsection rescue
+@cindex rescue, descrição do comando
+@cindex descrição do comando, rescue
+
+@deffn Comando rescue @var{começo} @var{fim}
+resgata partições perdidas entre @var{começo} e @var{fim}
+Procura entre @var{começo} e @var{fim} por assinaturas de sistemas de
+arquivo. Se alguma é encontrada, ele vai perguntar se você quer criar
+uma partição pra ele. Isto é útil quando você acidentalmente apagou uma
+partição com o comando rm do parted, por exemplo.
+
+Infelizmente não há uma barra de progresso, porque é difícil (uma
+possível correção!) para dizer quanto vai demorar. Se o Parted não acha
+nada, ele vai demorar muito tempo procurando (o que é um bug que deve
+ser corrigido). No entanto, no exemplo abaixo, a partição é
+instantaneamente recuperada.
+
+Exemplo:
+
+@example
+(parted) @kbd{print}
+@group
+Disk geometry for /dev/hdc: 0.000-8063.507 megabytes
+Disk label type: msdos
+Minor    Start       End     Type      Filesystem  Flags
+1          0.031   8056.032  primary   ext3
+@end group
+(parted) @kbd{rm}
+Partition number? 1
+(parted) @kbd{print}
+@group
+Disk geometry for /dev/hdc: 0.000-8063.507 megabytes
+Disk label type: msdos
+Minor    Start       End     Type      Filesystem  Flags
+@end group
+@end example
+
+AI! Nós deletamos a nossa partição ext3!!! Parted vem para nos salvar...
+
+@example
+(parted) @kbd{rescue}
+Start? 0.0005?
+End? 8063.5073?
+Information: A ext3 primary partition was found at 0.031Mb ->
+8056.030Mb.  Do you want to add it to the partition table?
+Yes/No/Cancel? @kbd{y}
+(parted) @kbd{print}
+@group
+Disk geometry for /dev/hdc: 0.000-8063.507 megabytes
+Disk label type: msdos
+Minor    Start       End     Type      Filesystem  Flags
+1          0.031   8056.032  primary   ext3
+@end group
+@end example
+
+Está de volta!  :)
+
+@end deffn
+
+@node resize
+@subsection resize
+@cindex resize, descrição do comando
+@cindex descrição do comando, resize
+
+@deffn Comando resize @var{minor} @var{começo} @var{fim}
+
+Redimensiona a partição com o número @var{minor}. A partição vai começar
+em @var{começo} do começo do disco, e terminar em @var{fim} do começo do
+disco. O resize nunca muda o número do minor. Partições extendidas podem
+ser redimensionadas, desde que a nova partição entendida contenha
+todas as partições lógicas.
+
+Note que o Parted não requer que um sistema seja ``desfragmentado''
+(Parted pode mover os dados seguramente se necessário). É uma perda
+de tempo desframentar. Não se preocupe!
+
+Sistemas de arquivo suportados:
+@itemize
+@item ext2, ext3 - restrição: o novo @var{começo} deve ser o mesmo do antigo @var{começo}.
+
+@item fat16, fat32
+
+@item linux-swap
+@item reiserfs (se a libreiserfs estiver instalada)
+@end itemize
+
+Exemplo:
+
+@example
+(parted) @kbd{resize 3 200 850}
+@end example
+
+Redimensiona a partição 3, para que ela começa em 200 megabytes
+e termine em 850 megabytes do começo do disco.
+@end deffn
+
+@node rm
+@subsection rm
+@cindex rm, descrição do comando
+@cindex descrição do comando, rm
+
+
+@deffn Comando rm @var{minor}
+
+Remove a partição com número @var{minor}. Se você acidentalmente apagar
+a partição com esse comando, use o mkpart (@emph{não} o mkpartfs) para
+recuperá-la. Você também pode usar o programa gpart (@pxref{Programas
+Relacionados}) para recuperar tabelas de partição danificadas.
+
+Nota para tabelas de partição do tipo msdos: se você apagar uma partição
+lógica, todas as partições lógicas com um número maior que essa vão ser
+apagados. Por exemplo, se você apagar uma partição lógica com um número
+minor 6, então as partições que eram número 7, 8 e 9 devem ser renumeradas
+para 6, 7 e 8 respectivamente. Isto significa que você deve atualizar a
+@file{/etc/fstab} em sistemas GNU/Linux.
+
+Exemplo:
+
+@example
+(parted) @kbd{rm 3}
+@end example
+
+Remove a partição 3.
+@end deffn
+
+@node select
+@subsection select
+@cindex select, descrição do comando
+@cindex descrição do comando, select
+
+@deffn Comando select @var{dispositivo}
+
+Seleciona o dispositivo, @var{dispositivo}, para o Parted editar. O
+dispositivo geralmente é um dispositivo de disco rígido do Linux, ou,
+se acesso direto a um arquivo é necessário --- uma partição, dispositivo
+RAID em software, ou um volume lógico LVM.
+
+Exemplo:
+
+@example
+(parted) @kbd{select /dev/hdb}
+@end example
+
+Seleciona @file{/dev/hdb} (o disco slave na primeira controladora ide
+no Linux) como um dispositivo para editar.
+@end deffn
+
+@node set
+@subsection set
+@cindex set, descrição do comando
+@cindex descrição do comando, set
+
+@deffn Comando set @var{minor} @var{sinalizador} @var{estado}
+
+Muda um sinalizador na partição de número @var{minor}. Um
+sinalizador pode ser ``on'' ou ``off''. Algumas ou todas essas
+flags estarão disponíveis, dependendo qual tabela de partições
+você está usando:
+
+@table @samp
+@item boot
+(Mac, MSDOS, PC98) - só deve ser habilitada se você quer fazer
+boot da partição. A semântica poder variar entre as tabelas de
+partição. Para tabelas de partição do MSDOS, somente uma partição
+pode ser carregável. Se você está instalando LILO numa partição
+(@pxref{LILO}), então aquela partição deve ser carregável. Para tabelas
+de partição do PC98, todas as partições ext2 devem ser carregáveis
+(Isto é reforçado pelo Parted).
+
+@item lba
+(MSDOS) - este sinalizador pode ser habilitado, para dizer ao MS DOS,
+o MS Windows 9x ao MS Windows ME e outros sistemas baseados neles
+para usar o modo Linear (LBA).
+
+@item root
+(Mac) - este sinalizador deve ser habilitado se a partição está na
+partição raiz a ser usada pelo Linux.
+
+@item swap
+(Mac) - este sinalizador deve ser habilitado se a partição é a swap
+que vai ser usada pelo Linux.
+
+@item hidden
+(MSDOS, PC98) - esta flag deve ser habilitada para esconder partições
+de sistemas operacionais Microsoft.
+
+@item raid
+(MSDOS) - este sinalizador pode ser habilitado para dizer ao Linux que
+essa partição é uma partição de software RAID @xref{LVM e RAID}.
+
+@item LVM
+(MSDOS) - este sinalizador pode ser habilitado para dizer à partição
+linux que a partição é um volume físico.
+
+@end table
+
+O comando print mostra todas os sinalizadores para cada partição.
+
+Exemplo:
+
+@example
+(parted) @kbd{set 1 boot on}
+@end example
+
+Define o sinalizador de @samp{boot} na partição 1.
+@end deffn
+
+@node Exexmplos
+@section Sessões de Exemplo do Parted
+@cindex sessões de exemplo do parted
+@cindex sessões de exemplo do parted
+
+Estes exemplos tenta cobrir a maior parte das circunstâncias, com a
+exceção de espelhamento de disco, que é discutido em @ref{Espelhamento
+de disco}.
+
+@menu
+* Aumentando uma partição usando espaço não-usado::
+* Redimensionando uma partição ext2 num disco cheio::
+@end menu
+
+@node Aumentando uma partição usando espaço inusado
+@subsection Exemplo: Aumentando uma partição para usar espaço inusado
+@cindex aumentando uma partição, exemplo
+@cindex exemplo, aumentando uma partição
+
+Suponhã que seu disco se pareça com isso:
+
+@example
+@group
+(parted) @kbd{print}
+Disk geometry for /dev/hda: 0.000-1000.000 megabytes
+Disk label type: msdos
+Minor    Start       End     Type      Filesystem  Flags
+1          0.063    500.000  primary   ext2
+2        500.000    625.000  primary   linux-swap
+@end group
+@end example
+
+@noindent Existem 375 Mb de espaço livre no final do disco (depois da
+partição 2). A Partição 1 tem um sistemas de arquivo ext2, que é o
+dispositivo riaz. A partição 2 é um dispositivo de swap.
+
+Suponha que você queira usar o espaço livre no final do disco para o
+sistemas de arquivo na partição 1. Você pode fazer o seguinte:
+
+@enumerate
+@item Estes passos vão modificar tanto o sistemas de arquivo raiz na
+partição 1, quanto o dispositivo de swap na partição 2. Portanto, você
+não deveria estar usando nenhuma das duas partições. Você provavelmente
+deve usar um disco de boot do Parted. @xref{Discos de boot do Parted}.
+Do disco de boot, rode o Parted:
+
+@example
+# @kbd{parted /dev/hda}
+@end example
+
+@item Remove a partição 2 (a partição de swap). Normalmente, você não
+ia querer apagar uma partição com dados nela. Mas, uma partição não
+contém dados enquanto não está montada, então você pode removê-la, e
+criar uma outra partição de swap no seu lugar.
+
+@example
+(parted) @kbd{rm 2}
+@end example
+
+@item Cria uma nova partição de swap no fim do disco:
+
+@example
+@group
+(parted) @kbd{mkpartfs primary linux-swap 875 999.9}
+(parted) @kbd{print}
+Disk geometry for /dev/hda: 0.000-1000.000 megabytes
+Disk label type: msdos
+Minor    Start       End     Type      Filesystem  Flags
+1          0.063    500.000  primary   ext2
+2        875.000   1000.000  primary   linux-swap
+@end group
+@end example
+
+@item Aumenta a partição 1 no espaço que está sobrando
+
+@example
+(parted) @kbd{resize 1 0.063 874.9}
+@end example
+
+Tudo feito!
+
+@example
+@group
+(parted) @kbd{print}
+Disk geometry for /dev/hda: 0.000-1000.000 megabytes
+Disk label type: msdos
+Minor    Start       End     Type      Filesystem  Flags
+1          0.063    874.999  primary   ext2
+2        875.000   1000.000  primary   linux-swap
+@end group
+@end example
+@end enumerate
+
+
+@node Redimensionando uma partição ext2 em um disco cheio
+@subsection Exemplo: Redimensionando uma partição ext2 num disco cheio
+@cindex redimensionando uma partição num disco cheio, exemplo
+@cindex exemplo, redimensionando uma partição num disco cheio
+
+Suponha que o seu disco se pareça com isso:
+
+@example
+@group
+(parted) @kbd{print}
+Disk geometry for /dev/hda: 0-8063.5 megabytes
+Disk label type: msdos
+Minor   Start     End    Type            Filesystem     Flags
+1          0.0     23.5  primary         ext2           boot
+2         23.5   8056.0  extended
+5         23.6   3545.6  logical         ext2
+6       3545.6   7067.7  logical         ext2
+7       7067.7   7326.5  logical         ext2
+8       7326.5   7585.4  logical         ext2
+9       7585.4   7844.2  logical         linux-swap
+@end group
+
+@group
+$ @kbd{df -h}
+Filesystem            Size  Used Avail Use% Mounted on
+/dev/hda8             251M   31M  207M  13% /
+/dev/hda1              23M  2.4M   19M  11% /boot
+/dev/hda5             3.4G  577M  2.7G  18% /usr
+/dev/hda6             3.4G  289M  2.9G   9% /home
+/dev/hda7             251M   12M  226M   5% /var
+@end group
+@end example
+
+Suponha que você queira aumentar a partição do @file{/var}
+@file{/dev/hda7}) para 1GB, usando algum espaço da partição
+do @file{/home} (@file{/dev/hda6}).
+
+Para redimensionar uma partição usando o Parted, você pode usar
+o comando resize:
+
+@example
+(parted) resize @var{numero-da-particao} @var{novo-começo} @var{novo-fim}
+@end example
+
+@noindent @var{novo começo} deve ser o mesmo que o antigo começo em
+partições ext2 (infelizmente). Então esse processo vai ficar mais
+complicado. @emph{É} possível, portanto. @footnote{Se o Parted suportasse
+mover o começo de partições ext2 (como ele faz com partições FAT), então
+seria muito mais simples:
+
+@example
+@group
+(parted) @kbd{resize 6 3545.6 6200}
+(parted) @kbd{resize 7 6200 7326.5}
+@end group
+@end example
+}
+
+@enumerate
+@item Diminuir a partição do @file{/home} (@file{/dev/hda6}) em 500MB:
+
+@example
+# @kbd{parted /dev/hda}
+(parted) @kbd{resize 6 3545.6 6200}
+@end example
+
+@item Cria uma nova partição no seu lugar. Ali é onde @file{/var} vai
+estar, eventualmente. Esta nova partição vai ser numerada como 10.
+
+@example
+(parted) @kbd{mkpartfs logical ext2 6200 7067.7}
+@end example
+
+@item Copia a antiga partição do @file{/var} (@file{/dev/hda7}) para
+a nova (@file{/dev/hda10}).
+
+@example
+(parted) @kbd{cp 7 10}
+@end example
+
+@item Apaga a antiga @file{/var}
+
+@example
+(parted) rm 7
+@end example
+
+Nesse momento: todas as partições lógicas com número maior que 7
+mudaram de número. Então 8, 9 e 10 viraram 7, 8 e 9 respectivamente.
+
+Esta renumeração não vai acontecer de verdade enquanto qualquer uma delas
+estiver montadas naquele disco (só vai acontecer quando você reiniciar).
+Isto é do que essa mensagem de aviso trata. Então você @emph{nunca} deve
+tentar montar um sistemas de arquivo tocado pelo Parted (redimensionado
+ou criado pelo Parted), antes de reiniciar se você receber essa mensagem.
+
+@item Redimensiona a nova partição do @file{/var} (agora numerada para 9),
+adicionando o espaço da antiga partição do @file{/var}:
+
+@example
+@group
+(parted) @kbd{resize 9 6200 7326.5}
+(parted) @kbd{quit}
+Warning: The kernel was unable to re-read the partition table on
+/dev/hda (Device or resource busy).  This means Linux knows nothing
+about any modifications you made.  You should reboot your computer
+before doing anything with /dev/hda.
+@end group
+@end example
+
+@item Pelos números das partições terem mudado, a @file{/etc/fstab} deve
+ser atualizada. Isto pode ser feito antes de reiniciar, porque a partição
+raiz não foi tocada pelo Parted. (Se você quer que o Parted faça algo com
+a partição raiz, você precisa usar o disco de boot).
+
+Se a antiga @file{/etc/fstab} se parece com isso:
+
+@example
+@group
+/dev/hda8      /            ext2    defaults        1 1
+/dev/hda1      /boot        ext2    defaults        1 2
+/dev/hda6      /home        ext2    grpquota,usrquota  0  2
+/dev/cdrom     /mnt/cdrom   iso9660 noauto,owner,ro 0 0
+/dev/hda5      /usr         ext2    defaults        1 2
+/dev/hda7      /var         ext2    grpquota,usrquota  0  2
+/dev/fd0       /mnt/floppy  auto    noauto,owner    0 0
+none           /proc        proc    defaults        0 0
+none           /dev/pts     devpts  gid=5,mode=620  0 0
+/dev/hda9      swap         swap    defaults        0 0
+@end group
+@end example
+
+Algumas linhas precisam ser alteradas:
+A few lines need to be changed:
+@itemize
+@item @file{/var} is now /dev/hda9 (because we copied it to a new
+partition)
+
+@item @file{/dev/hda8} (the root device) has been renumbered to
+@file{/dev/hda7}
+
+@item @file{/dev/hda9} (the swap device) has been renumbered to
+@file{/dev/hda8}
+@end itemize
+
+The new @file{/etc/fstab} looks like this:
+
+@example
+@group
+/dev/hda7      /            ext2    defaults        1 1
+/dev/hda1      /boot        ext2    defaults        1 2
+/dev/hda6      /home        ext2    grpquota,usrquota  0  2
+/dev/cdrom     /mnt/cdrom   iso9660 noauto,owner,ro 0 0
+/dev/hda5      /usr         ext2    defaults        1 2
+/dev/hda9      /var         ext2    grpquota,usrquota  0  2
+/dev/fd0       /mnt/floppy  auto    noauto,owner    0 0
+none           /proc        proc    defaults        0 0
+none           /dev/pts     devpts  gid=5,mode=620  0 0
+/dev/hda8      swap         swap    defaults        0 0
+@end group
+@end example
+
+@item Reboot.  That's it!
+@end enumerate
+
+@node    BIOSes and Firmware
+@chapter BIOSes and Firmware
+@cindex bios
+@cindex firmware
+
+``BIOS'' (Basic Input/Output System) and ``firmware'' mean the same
+thing.  However, on PC and PC98 based computers, the word BIOS is more
+common.  On Apple Macintosh and Sun computers, the word ``firmware'' is
+more common.  The BIOS or firmware program is built into a ROM chip
+inside your computer, that does memory checks, etc.  You cannot
+(easily) change this program.  Since BIOSes today are generally
+compatible with BIOSes in use 20 years ago, these programs tend to have
+an antiquated design.  Features have been added in counter-intuitive
+ways over the years, leading to overly complicated systems that cause a
+lot of confusion today.
+
+@menu
+* PC BIOSes::                   The Legacy of IBM
+* Macintosh OpenFirmware::      Go Forth, Young Hacker!
+* PC98 BIOS::                   The BIOS of the PC98 computer
+* SGI / MIPS Firmware::         The firmware of SGI MIPS computers
+@end menu
+
+@node PC BIOSes
+@section The PC BIOS
+@cindex pc bios
+@cindex bios, pc
+
+There are a few popular PC BIOSes: AmiBIOS, Award, Phoenix, and others.
+They all work in a similar way.  None of these BIOSes understand or know
+about partition tables.  They affect partitioning indirectly.
+
+There are a few popular PC BIOSes: AmiBIOS, Award, Phoenix, and others.
+They all work in a similar way.  None of these BIOSes understand or know
+about partition tables.  They affect partitioning indirectly.
+
+outras. Elas todas trabalham de modo semelhante. Nenhma dessas BIOSs
+entende ou conhecem sobre tabelas de partição, mas elas a afetam
+indiretamente.
+
+O seguinte ocorre quando o seu computador é ligado:
+
+@enumerate
+@item Estas BIOSs carregam o primeiro bit do programa carregador de boot,
+guardado na MBR (Master Boot Record - Registro Mestre do Boot) no
+disco rígido.
+
+@item A BIOS execute o primeiro bit do carregador de boot, guardado na MBR
+(Master Boot Record - Registro Mestre do Boot) no disco rígido.
+
+@item O programa carregador de boot usa a BIOS para carregar o resto do
+próprio programa.
+
+@item O carregador de boot usa a BIOS para carregar o sistema operacional
+(ou quem sabe, outro carregador de boot, nesse caso, você vai para o passo
+2 de novo).
+
+@item O sistema operacional pode ou não usar a bios para acessar arquivos
+(o Windows geralmente usa, o Linux ou o BSd não).
+@end enumerate
+
+@c RMK: FIXME: learn how to refer to entries in the above list, so that
+@c the following paragraphs doesn't depend on the order details of the
+@c list.
+
+Os passos (3) a (5) involvem programas comunicando-se com a BIOS, para
+pedir para falar com os discos. Existem duas maneiras de se comunicar
+com a BIOS para fazer isso: usando CHS (Cylinders Heads and Sectors -
+Cilindros Trilhas e Setores) ou LBA (Linear Block Addressing -
+Endereçamento de Blocos Linear). BIOSs antigas somente vão suportar CHS.
+As novas BIOSs geralmente suportam tanto LBA quanto CHS, apesar do
+suporte a CHS ser interrompido no futuro. (o CHS é considerado um sistema
+legado horrível.)
+
+Passos (3) e (4), feitos pelo carregador deboot, sempre vão usar o mesmo
+método de acesso --- sempre LBA ou sempre CHS. No caso do carregador de
+boot do Windows, ele é determinado pelo indicador de LBA na partição de
+boot do Windows (@pxref{definida} para informações sobre indicadores).
+No caso do Linux, você provavelmente estará usando LILO ou GRUB como
+carregador de boot. O GRUB usa LBA se estiver disponível, e CHS se não.
+O LILO requer que você escolha quando você instala ele (com as opções
+"linear" ou "lba32").
+
+@c RMK: FIXME: find way to refer to above steps by @-command
+Passo (5) - E/S feita pelo sistema operacional - somente o Windows
+faz E/S pela BIOS. [Nós ainda não sabemos o suficiente sobre os
+problemas, mas parece que o Windows pode ter seus próprios problemas
+com o modo CHS. As pessoas nos disseram de vezes em que o Windows
+corrompe seu próprio sistemas de arquivo, etc. É realmente difícil
+para nós saber o que está acontecendo. Nós recomendamos fortemente
+que você use LBA, se você pode!]
+
+Então existem 3 possíveis situações, todas discutidas aqui:
+
+@enumerate
+@item Você está usando o modo CHS, e a sua BIOS só suporta o modo CHS.
+@item Você está usando o modo CHS, e a sua BIOS suporta tanto LBA quanto CHS.
+Então, você quer converter do modo CHS para LBA O Mais Rápido Possível
+@sc{tm}.
+@item Você já está usando o modo LBA.
+@end enumerate
+
+@menu
+* O Parted e o modo CHS::         Usando o Parted em BIOSs com modo CHS
+* Do modo CHS para LBA::          Convertendo a BIOS do modo CHS para LBA
+* O Parted e o modo LBA::         Usando o Parted com o modo LBA
+@end menu
+
+@node O Parted e o modo CHS
+@subsection Usando o Parted em BIOS do modo CHS
+@cindex bios de modo chs
+@cindex chs, bios com geometria de disco do modo
+
+O Linux normalmente detecta a geometria da BIOS automaticamente. Contudo,
+às vezes isso dá errado. Neste caso, você mesmo deve dizer ao Linux,
+passando um parâmetro para ele. Por exemplo, se o Linux pensa que o seu
+disco rígido @file{/dev/hda} tem a geometria 256/64/63, mas o programa
+de configuração da BIOS diz que a geometria é 512/32/63, então você deve
+passar esse parâmetro ao Linux:
+
+@example
+@kbd{hda=512,32,63}
+@end example
+
+Os parâmetros são passados de diversas maneiras, dependendo do carregador
+de boot que você está usando. Você provavelmente está usando o LILO. Neste
+caso, você adiciona a seguinte linha para o @file{/etc/lilo.conf}: (Você
+então precisa rodar o @command{/sbin/lilo}, e reiniciar para as mudanças
+terem efeito)
+
+@c RMK: FIXME: can't get the quotes right: texinfo double quotes ``'' don't
+@c work in example's, and keyboard double quotes "" don't look right in text.
+@example
+append="hda=512,32,63"
+@end example
+
+O Parted geralmente pode detectar se o Linux detectou a geometria incorreta.
+Contudo, ele não pode fazer isso se não existem partições no disco. Neste
+caso, você mesmo pode checar. É muito importante que você faça isso.
+
+Algumas vezes, o Parted vai reclamar que as partições não estão alinhadas
+aos limites dos cilindros. O Parted vai te dar a opção de ignorar. Se você
+ignorar, então o Parted via fazer alguns truques com a sua tabela de
+partições. No Linux não vai ter problemas. No DOS e no Windows não vão ter
+problemas se eles estão usando o modo LBA. Se o DOS/Windows está usando
+o modo CHS, então reinstalar o gerenciador de boot (@pxref{MS DOS
+MS Windows 9x MS Windows ME}) deve resolver qualquer problema - mas mudar
+pro modo LBA é preferível (veja @pxref{Do modo CHS para LBA}).
+
+Partições que estão envolvidas no processo de boot devem finalizar antes
+do cilindro 1024, se o modo CHS está sendo usado. Veja a seção sobre
+o processo de boot para determinar se a partição está envolvida no
+processo de boot. A configuração típica é ter uma pequena partição
+Linux para o @file{/boot}, uma partição Windows, e então a(s)
+partição(ões) Linux.
+
+@node Do modo CHS para o LBA
+@subsection Convertendo do modo CHS para o LBA
+@cindex chs para lba, converting de
+
+Para fazer com que o carregador de boot do Windows e o sistema
+operacional usarem o modo LBA, somente defina o indicador LBA em todas
+as partições FAT @ref{set}. Você não deve ter problemas. Se você
+tiver problemas carregando o Windows, então reinstalar o carregador
+de boot do Windows vai consertar isso @ref{MS DOS MS Windows 9x MS
+Windows ME}.
+
+O Linux não usa a BIOS para E/S. Contudo, o carregador de boot (LILO
+ou GRUB) pode. O GRUB automaticamente usa LBA, caso esteja disponível.
+O LILO exige a opção ``linear'' ou ``lba32''. Então, se o LILO ainda
+carrega após mudar o @file{/etc/lilo.conf} e rodar o @command{/sbin/lilo},
+então está tudo feito! @xref{LILO}. (Se você tiver problemas, reverta
+para CHS de volta, removendo a opção ``linear'' ou ``lba32'', e
+reinstalando o lilo do disco de boot.)
+
+Agora que você está usando LBA continue lendo@dots{}
+
+@node O Parted e o modo LBA
+@subsection Usando o Parted no modo LBA
+@cindex modo lba
+@cindex lba, geometria de disco do modo
+
+O modo LBA resolve todos os problemas do CHS. Contudo, não existe uma
+maneira confiável para o Linux ou o Parted saber que você está usando
+LBA, então o Parted pode te dar avisos sobre cilindros não alinhados,
+ou a geometria da BIOS ser inconsistente, etc. Você pode ignorar essas
+mensagens, se você está usando o modo LBA. (Versões antigas do Parted
+tinham problemas, mas todos foram resolvidos).
+
+Quando o seu disco está no modo LBA, o Parted (e a maioria dos outros
+programas) vai dizer que a sua geometria é X/255/63 - a menos que
+você tenha mudado do CHS para LBA.
+
+@node Macintosh OpenFirmware
+@section OpenFirmware do the Apple Macintosh
+@cindex open firmware, macintosh
+@cindex macintosh open firmware
+
+Existem duas versões do OpenFirmware do PowerMac - uma usada no
+``antigo mundo'' do PowerMac, e outra usada no ``novo mundo''. O
+``Novo mundo'' se refere aos PowerPCs coloridos feitos desde 1999.
+Eles tem diferenças significantes. Contudo, ambos entendem tabelas
+de partição.
+
+Ambas requerem que o usuário escolha exatamente uma partição para ser
+a partição de boot (a partição com o carregador de boot). Contudo,
+eles usam mecanismos diferentes para fazer isso.
+
+@menu
+* Velho Mundo::
+* Novo Mundo::
+@end menu
+
+@node Velho Mundo
+@subsection OpenFirware Macintosh do Velho Mundo
+@cindex firmware macintosh do velho mundo
+@cindex velho mundo, firmware macintosh do
+@cindex firmware macintosh do velho mundo
+
+A partição escolhida para dar boot é definida por vários carregadores
+de boot, como o Quik. Então, você não deve precisar fazer nada. Nós
+poderíamos adicionar suporte a isso no Parted, se alguém gritar muito
+alto@dots{}
+
+@node Novo Mundo
+@subsection OpenFirware Macintosh do Novo Mundo
+@cindex firware macintosh do velho mundo
+@cindex novo mundo, firwarem macintosh do
+@cindex firwarem macintosh do novo mundo
+
+@c RMK: completeness: do we have a description of HFS anywhere here?
+OpenFirmware do novo mundo requer que a partição que dá boot seja HFS
+e marcada como partição de boot. Ela usa um mecanismo diferente para
+ser marcada como a partição de boot. Isto é controlado com o indicador
+``boot'' no Parted. Por exemplo:
+
+@example
+(parted) @kbd{set 2 boot on}
+@end example
+
+@node BIOS dos PC98
+@section As BIOS dos PC98
+@cindex bios do pc98
+
+@c RMK: completeness : should we describe what machines are likely to
+@c have a PC 98 bios?
+@c RMK: illiteracy: the only pages I found for PC98 info were in Japanese,
+@c which I can't read :(
+A BIOS dos PC98 permitem a você marcar qualquer número de partição
+como bootável. Você pode desmarcar ou marcar uma partição como bootável
+com o indicador ``boot'' do Parted. Por exemplo:
+
+@example
+(parted) @kbd{set 2 boot off}
+@end example
+
+
+@node Firmwares dos SGI / MIPS
+@section Firmware dos SGI / MIPS
+@cindex firmware dos sgi
+@cindex firmware dos mips
+
+
+
+O firmware dos SGI / MIPS permite você fazer o boot de arquivos de
+boot especiais, que são gerenciados pela tabela de partições. No
+Parted, esses arquivos de boot são tratados como partições lógicas
+dentro das partições extendidas.
+
+Por exemplo:
+
+@example
+Disk label type: mips
+Minor    Start       End     Type      Filesystem  Name        Flags
+9          0.000      2.732  extended
+17         0.002      0.002  logical               sgilabel
+18         0.003      1.162  logical               symmon
+19         1.404      1.670  logical               sash
+1          2.732   8555.212  primary   xfs                     root
+2       8555.213   8682.270  primary                           swap
+@end example
+
+A Partição 9 é a partição extendida (um cabeçalho de volume, na terminologia
+dos SGI/MIPS) aonde o arquivo de boot pode ficar. As partições 17, 18 e 19
+são os arquivos de boot. Seus nomes podem ser manipulados com o comando name
+do Parted. A partição 1 e 2 são partições normais. Elas não podem ter nomes.
+
+Note que o Linux não vê os arquivos de boot como partições (talvez devesse?).
+Então o /dev/hda17 não existe no Linux. Você deve usar o dvhtool(8) para
+manipular arquivos de boot.
+
+@node    Carregadores de Boot
+@chapter Carregadores de Boot
+@cindex carregadores de boot
+
+O carregador de boot é o programa que permite que você selecione qual
+sistema operacional você quer usar, e carrega aquele sistema operacional.
+Você pode ter mais de um carregador de boot instalado, especialmente se
+você tem mais de um tipo de sistema operacional instalado. É comum para
+carregadores de boot poderem carregar outros carregadores de boot.
+
+Quando se redimensiona uma partição, muitos dados se movem. Muitos
+carregadores de boot não entendem o sistemas de arquivo. Eles só lembram
+aonde que as informações necessárias para o carregador de boot reside.
+Se esta informação é movida, deve-se dizer ao carregador de boot pra
+onde elas se moveram. Isto é feito reinstalando o carregador de boot
+(por exemplo, rodando novamente o programa instalador do carregador de
+boot, que normalmente envolve digitar um único comando na shell). Nem
+todos os carregadores de boot exigem isso.
+
+@menu
+* LILO::                                        O LInux LOader
+* GNU GRUB::                                    GNU GRand Unified Boot-loader
+* MS DOS MS Windows 9x MS Windows ME::          Software Legado da MS
+* MS Windows NT::                               Carregador do MS Windows NT
+* MS Windows 2000::                             Carregador do MS Windows 2000
+* Quik::                                        Quik
+* Yaboot::                                      Yaboot
+
+@end menu
+
+@node LILO
+@section LILO: um carregador de boot para o kernel do Linux
+@cindex lilo
+
+LILO é um carregador de boot popular para os x86. O carregador de
+boot do LILO é geralmente instalado com:
+
+@example
+# @kbd{/sbin/lilo}
+@end example
+
+Se você está usando um disco de boot, então você deve fazer isso:
+(aonde @file{/dev/hda1} deve ser substituído com a partição raiz)
+
+@example
+# @kbd{mount /dev/hda1 /mnt}
+# @kbd{chroot /mnt /sbin/lilo}
+# @kbd{umount /dev/hda1}
+@end example
+
+Versões antigas do LILO não suportam o modo LBA (@pxref{BIOSs de PC}).
+O modo LBA é habilitado com as opções lba32 ou linear, no @file{/etc/lilo.conf}
+(veja a documentação do LILO para maiores informações).
+
+Se você usa o modo LBA, você não deve ter problemas, contanto que a
+sua BIOS suporte LBA.
+
+Se você usa o modo CHS, então a partição com o diretório @file{/boot}
+deve acabar antes do cilindro 1024. Então, se você tem um disco grande
+(vamos dizer, com mais de 8 gigabytes), você deve ter um partição para
+o @file{/boot} próximo ao começo do disco.
+
+@node GNU GRUB
+@section GRUB: O GNU GRand Unified Bootloader
+@cindex grub
+
+GRUB é um carregador de boot relativamente novo, para x86. Dependendo
+de como o GRUB é instalado, ele pode entender o sistemas de arquivo,
+ou simplesmente lembrar aonde os arquivos de boot estão guardados. Ele
+entende o sistemas de arquivo se ele está usando ``Stage1.5''. Se ele
+não está usando Stage1.5, ou o número da partição muda, então você precisa
+reinstalar o Stage2 (por favor veja a documentação do GRUB). Do modo
+contrário, você não precisa fazer nada.
+
+O GRUB automaticamente detecta se LBA está disponível, e vai  usá-lo
+se ele está disponível (equivalente à opção ``lba32'' do LILO).
+
+@node MS DOS MS Windows 9x MS Windows ME
+@section Carregadores de Boot Legados dos Sistemas Operacionais Microsoft
+@cindex carregador de boot do win32
+@cindex carregador de boot legado dos sistemas operacinais microsoft
+
+O DOS e Windows requerem que você reinstale o carregador de boot se você
+mudar o tipo de FAT (FAT16 ou FAT32) da partição de boot. O Parted vai
+avisar você antes de fazer isso. Para reinstalar o carregador de boot,
+você pode tanto criar um disco de boot, ou usar o CDROM de boot. O
+método do disco de boot não funciona com o Windows ME.
+
+@itemize @minus
+@item MÉTODO DO DISCO DE BOOT  (DOS/Windows 9x)
+
+@enumerate
+
+@item Criar um disco de boot do Windows
+
+@itemize @bullet
+
+@item Carregue o Windows. @emph{Isto implica que você deve
+fazer um disco de boot antes de usar o parted}.
+
+@item Clique com o direito no drive de disquete no Windows Explorer.
+
+@item Clique em ``Formatar''.
+
+@item Selecione ``Copiar somente os arquivos de sistema''.
+
+@item Clique em ``Formatar''.
+
+@item Copie o C:\WINDOWS\COMMAND\SYS.COM para o A:\ Nota: você deve
+ter chamado o C:\WINDOWS de algo mais, como C:\WIN98.
+
+@end itemize
+
+@item Carregue o disco de boot do Windows, deixando o disco de boot no
+drive de disquete quando carregar. Você pode precisar dizer à sua BIOS
+para usar o disquete como boot.
+
+@item Digite o seguinte no prompt do DOS:
+
+@example
+A:\>@kbd{sys c:}
+@end example
+
+@end enumerate
+
+@item MÉTODO DO CDROM:  (Windows 9x/ME)
+
+@enumerate
+
+@item Insira o CDROM do Windows, e faça boot dele. (Selecione ``boot sem
+suporte a CDROM'').
+
+@item Digite:
+
+@example
+A:\>@kbd{c:}
+C:\>@kbd{cd \windows\command}    (pode ser \win98\command, ou similar)
+C:\WINDOWS\COMMAND>@kbd{sys c:}
+@end example
+
+Isto é tudo.
+
+@end enumerate
+@end itemize
+
+Além disso, o DOS e Windows impõe algumas restrições:
+
+@itemize @bullet
+
+@item A partição de boot deve ser selecionada com o indicador ``boot''.
+Somente uma partição podem ser selecionadas (algumas vezes chamadas de
+partições ``ativas''). Por exemplo, para definir a partição 3 como a
+partição de boot faça:
+
+@example
+(parted) @kbd{set 3 boot on}
+@end example
+
+@item O MS DOS e o MS Windows 9x/ME só podem fazer boot da primeira
+partição FAT. Isto é, a partição FAT com o menor número de partição,
+que não está oculta. Note que os carregadores de boot como o GRUB e o
+LILO (e algumas BIOSs) podem mudar esse comportamento@dots{}
+
+@item Se você está usando endereçamento CHS (ao invés de endereçamento
+LBA), então o início da partição de boot deve ser antes do cilindro 1024.
+Você pode dizer ao MS DOS para usar (ou não usar) o endereçamento LBA,
+habilitando ou desabilitando o indicador LBA na partição de boot. Por
+exemplo, habilitar o indicador LBA na partição 2, faça:
+
+@example
+(parted) @kbd{set 2 lba on}
+@end example
+
+Nota: o endereçamento LBA não é suportado pelo MS-DOS 6.22 ou inferior,
+bem como todas as versões do PC-DOS.
+
+Aviso: algumas BIOSs não vão habilitar o endereçamento LBA, ao menos
+que você habilite na BIOS também. Se, por alguma razão, o Windows não
+inicializar após mudar esse indicador, então este é provavelmente o
+problema.
+
+@item o MS-DOS ``real'' (por exemplo, versão 6.2 pra cima) e o MS-DOS
+7.0 (por exemplo, o Windows 95/98a) não conhecem FAT32. Então é possível
+inicializar eles da @emph{segunda partição fat} (somente FAT16, claro),
+quando @emph{a primeira partição fat} é FAT32. Ambas tem que ser partições
+primárias, então você provavelmente vai ter que definir qual você quer
+inicializar como partição ativa.
+
+@end itemize
+
+@node MS Windows NT
+@section O Carregador de Boot do Microsoft Windows NT
+@cindex carregador de boot do microsoft windows nt
+
+O Windows NT não pode ler ou inicializar de partições FAT32. Portanto,
+você não deve nunca converter partições FAT16 para FAT32, se você quer
+usá-las com o Windows NT.
+
+@node MS Windows 2000
+@section O Carregador de Boot do Microsoft Windows 2000
+@cindex carregador de boot do microsoft windows 2000
+
+O Windows 2000 requer que você reinstale o carregador de boot se você
+mudar o tipo de FAT (FAT16 ou FAT32) do sistemas de partições. O Parted
+vai avisar você antes de tentar fazer isso. Para reinstalar o carregador
+de boot, faça:
+
+@enumerate
+@item Faça boot do CD do Windows 2000.
+@item Ele vai perguntar se você quer continuar. Aperte Enter.
+@item Ele então vai perguntar se você quer instalar um novo sistema, ou
+Consertar um sistema pré-existente. Escolha a última (apertando ``R'').
+Ele vai perguntar se você quer reparar automaticamente, ou se você quer
+usar o console de recuperação. Escolha usar o console de recuperação.
+@item No console, digite:
+
+@example
+C:\>@kbd{fixboot}
+@end example
+
+O sistema deve inicializar com sucesso agora.
+@end enumerate
+
+O carregador de boot do NT/2000 também precisa:
+
+@itemize @bullet
+
+@item seu próprio código no setor de boot de uma partição PRIMÁRIA
+FAT12, FAT16 ou NTFS (FAT32 é possível com o Windows 2000), que é
+chamada de ``partição de sistema''. Esta partição deve ser marcada
+com o indicador de ``boot'' no Parted.
+
+@item os arquivos NTLDR, BOOT.INI e NTDETECT.COM dentro do sistema
+da partição. O BOOT.INI guarda toda a informação sobre a localização
+física da primeira partição ou de um drive lógico aonde o Windows NT
+foi instalado, chamado de ``partição de boot''. A partição de boot e
+a partição de sistema podem estar localizadas juntas numa partição
+primária.
+
+@c RMK: usage: ambiguous use of 'this': it refers to disk controller?
+@item opcionalmente, o arquivo NTBOOTDD.SYS dentro do sistemas de
+partições que é renomeado driver de disco para o seu controlador SCSI
+ou IDE, quando ele não tem BIOS própria (ou sua BIOS não acessa discos
+grandes).
+
+@item com o MS Windows NT, o sistemas de partições deve terminar antes
+do cilindro 1024 e @emph{deve} começar antes do cilindro 1024. Se ele
+termina antes do cilindro 1024 e os arquivos necessários para a
+inicialização são movidos depois dessa borda, o MS Windows NT não vai mais
+inicializar.
+@item ambos a partição de boot e de sistemas deve ser redimensionada, sem
+a necessidade de qualquer outra mudança.
+
+@item se o número da partição de boot muda (por exemplo, seu número
+de partição), então o BOOT.INI deve ser atualizado.
+
+@end itemize
+
+@node Quik
+@section Quik: um carregador de boot para PowerPCs Macintosh
+@cindex carregador de boot para macintoshs do velho mundo
+@cindex velho mundo, carregador de boot do macintosh do
+
+O Quik é um carregador de boot popular para PowerPCs Macintosh do
+``Velho Mundo''. Você precisa reinstalar o Quik se você redimensionar
+uma partição ext2, usando:
+
+@example
+# @kbd{/sbin/quik}
+@end example
+
+@node Yaboot
+@section Yaboot: um carregador de boot para PowerPCs Macintosh
+@cindex carregador de boot para macintoshs do velho mundo
+@cindex velho mundo, carregadores de boot para macintoshs do
+O Yaboot é um carregador de boot popular para Power PCs Macintosh
+do ``velho mundo''. (``Novo-mundo'' se refere aos PowerPCs coloridos
+fabricados desde 1999.)
+
+O Yaboot precisa de sua partição de boot que deve ser pelo menos 800k.
+Então, se você está instalando o GNU/Linux do zero, você faria algo
+como isso:
+
+@example
+(parted) @kbd{mklabel mac}
+@group
+(parted) @kbd{print}
+Disk geometry for /dev/sda: 0.000-6149.882 megabytes
+Disk label type: mac
+Minor    Start       End     Filesystem  Name          Flags
+1          0.000      0.031              Apple
+@end group
+(parted) @kbd{mkpart primary hfs 0.032 1}
+@group
+(parted) @kbd{print}
+Disk geometry for /dev/hdb: 0.000-6149.882 megabytes
+Disk label type: mac
+Minor    Start       End     Filesystem  Name          Flags
+1          0.000      0.031              Apple
+2          0.031      1.000
+@end group
+(parted) @kbd{set 2 boot on}
+@group
+(parted) @kbd{print}
+Disk geometry for /dev/hdb: 0.000-6149.882 megabytes
+Disk label type: mac
+Minor    Start       End     Filesystem  Name          Flags
+1          0.000      0.031              Apple
+2          0.031      1.000                            boot
+@end group
+@end example
+
+Você não precisa reinstalar o Yaboot depois de redimensionar uma partição.
+O Yaboot é instalado com o ybin @ref{Software Relacionado}.
+
+@node Sistemas Operacionais
+@chapter Sistemas Operacionais
+@cindex sistemas operacionais
+
+O Parted somente roda sob o GNU/Linux e o GNU/Hurd, no momento. Contudo,
+ele pode ser usado para redimensionar partições usadas por, ou
+compartilhadas com outros sistemas operacionais.
+
+Quando você quer redimensionar um sistemas de arquivo, certifique-se
+de que não está montado. O Parted não pode redimensionar partições
+montadas (isto pode mudar no futuro@dots{}).
+Se você modificar a tabela de partições num disco com um partição montada
+nela, você deve reiniciar imediatamente. O Linux não vai saber sobre as
+mudanças que você fez na tabela de partições. (Isto vai ser corrigido,
+com o kernel 2.4, e quando nós adicionarmos suporte a ele.)
+
+Se você quer redimensionar sua partição root ou de boot, use um disco
+de boot @xref{Discos de boot do Parted}, ou use o redimensionador
+online do Andreas Dilger, incluído no pacote ext2resize @ref{Ext2}.
+
+@menu
+* GNU/Linux e FreeBSD::     Suporte a tabelas de partição nesses sistemas livres
+* MS Windows and OS/2::     Suporte a tabelas de partição nesses sistemas
+* MacOS::                   As tabelas de partição suportadas pelo MacOS
+@end menu
+
+@node GNU/Linux e FreeBSD
+@section Tabelas de partição usadas pelo GNU/Linux e FreeBSD
+@cindex tabelas de partição do gnu/linux
+@cindex tabelas de partição do freebsd
+@cindex freebsd, tabelas de partição do
+@cindex linux, tabelas de partição do
+
+Ambos os sistemas GNU/Linux e FreeBSD são mais mais flexíveis quanto
+a tabelas de partição, suportando muitos tipos de tabelas de partição.
+
+@c RMK: padding: added notes about disklabel support for Linux kernel
+Por ser mais difícil para uma máquina usar discos rígidos com tabelas
+de partição normalmente usadas por outras arquiteturas, distribuições
+padrão do kernel do Linux somente suportam as tabelas de partição
+populares para a arquitetura para as quais foram compiladas. Por
+exemplo, um kernel do Linux padrão compilado para o PC provavelmente
+não vai ter suporte a tabelas de partição do Mac ou da Sun. Para acessar
+os sistemas de arquivo em discos com tabelas de partição não suportados,
+o kernel vai ter que ser recompilado.
+
+O FreeBSD tem um sistemas de tabelas de partições que é incompatível
+com as tabelas de partições do MSDOS. O Parted somente suporta o
+sistemas de tabelas de partição dos BSDs. É improvável que suporte
+o sistemas de partições em fatias, porque a semântica é muito estranha,
+e não trabalha como tabelas de partição ``normais''.
+
+@node O MS Windows e o OS/2
+@section Tabelas de partição de disco suportadas por sistemas Microsoft e o OS/2
+@cindex tabelas de partição legadas pela microsoft e a ibm
+@cindex microsoft e ibm, tabelas de partição legadas pela
+
+O MS Windows e o OS/2 somente suportam as tabelas de partição do MSDOS.
+Portanto, se você criar uma nova tabela de partições, você deve usar:
+
+@example
+(parted) @kbd{mklabel msdos}
+@end example
+
+@node MacOS
+@section Suporte a Tabelas de Partição no Sistema Operacional Macintosh
+@cindex tabelas de partição do macintosh
+@cindex macintosh, tabelas de partição do
+
+@c RMK: completeness: does Mac OS X understand non-mac disklabels?
+O MacOS (e o OpenFirmware) somente entende as tabelas de partição
+do mac. Portanto se você criar uma nova tabelas de partições,
+você deve usar:
+
+@example
+(parted) @kbd{mklabel mac}
+@end example
+
+Note que para tabelas de partição do Mac, você deve evitar deixar
+espaços livres em volta, porque as regiões de espaço livre deixam
+entradas na tabela de partições (e o Linux não gosta de ter mais de
+15 entradas). Por exemplo, se você fizer:
+
+@example
+@group
+(parted) @kbd{print}
+Disk geometry for /dev/sda: 0.000-6149.882 megabytes
+Disk label type: mac
+Minor    Start       End     Filesystem  Name          Flags
+1          0.000      0.031              Apple
+2          0.031      1.000                            boot
+3          1.000   1000.000  ext2        root          root
+@end group
+(parted) @kbd{ mkpartfs primary ext2 1001 2000}
+@group
+(parted) @kbd{print}
+Disk geometry for /dev/sda: 0.000-6149.882 megabytes
+Disk label type: mac
+Minor    Start       End     Filesystem  Name          Flags
+1          0.000      0.031              Apple
+2          0.031      1.000                            boot
+3          1.000   1000.000  ext2        root          root
+4       1001.000   2000.000  ext2
+@end group
+@end example
+
+Existe 1 megabyte de espaço livre entre as partições 3 e 4. Você pode
+evitar isso, criando partições de 0.1M (no caso, o Parted automaticamente
+``junta'' elas). Então, no exemplo acima, você deveria fazer isso ao invés:
+
+@example
+(parted) @kbd{mkpartfs primary ext2 1000.1 2000}
+@group
+(parted) @kbd{print}
+Disk geometry for /dev/sda: 0.000-6149.882 megabytes
+Disk label type: mac
+Minor    Start       End     Filesystem  Name          Flags
+1          0.000      0.031              Apple
+2          0.031      1.000                            boot
+3          1.000   1000.000  ext2        root          root
+4       1000.000   2000.000  ext2
+@end group
+@end example
+
+@node    Sistemas de Arquivo
+@chapter Sistemas de Arquivo suportados pelo Parted
+@cindex sistemas de arquivo
+
+@menu
+* Sistemas Suportados::      File systems operations supported by GNU Parted
+* Ext2::                     Sistemas ext2 do Linux no Parted
+* FAT16 and FAT32::          Sistemas Legados e o Parted da Microsoft e o Parted
+* Reiserfs::                 Sistema jornalístico Reiser e o Parted
+@end menu
+
+@node Sistemas de Arquivo Suportados
+@section Sistemas de Arquivo Suportados pelo GNU Parted
+@cindex sistemas de arquivo suportados
+@cindex sistemas de arquivo suportados
+
+O Parted tem suporte a essas operações:
+
+@c RMK: FIXME: can we put in nicer marks for "true", and note markers
+@c to associate notes below with entries in this table?
+
+@multitable {Filesystem} {detect} {create} {resize} {copy} {check}
+@item Sistema de Arquivo @tab detecta @tab cria @tab redimensiona @tab copia @tab checa
+@item ext2 @tab * @tab * @tab *1 @tab *2 @tab *3
+@item ext3 @tab        * @tab @tab *1 @tab *2 @tab *3
+@item fat16 @tab * @tab * @tab *4 @tab *4 @tab *
+@item fat32 @tab * @tab * @tab * @tab * @tab *
+@item hfs @tab * @tab @tab @tab @tab
+@item jfs @tab * @tab @tab @tab @tab
+@item linux-swap @tab * @tab * @tab * @tab * @tab *
+@item ntfs @tab * @tab @tab @tab @tab
+@item reiserfs @tab * @tab *5 @tab *1,5 @tab *5 @tab *3,5
+@item ufs @tab * @tab @tab @tab @tab
+@item xfs @tab * @tab @tab @tab @tab
+@end multitable
+
+@c RMK: note: the following is not an enumerated list, just a bunch of
+@c notes associated to entries in the above matrix.  That's bad.
+
+@noindent NOTAS:
+(1) O início da partição deve estar fixa para ext2, ext3 e reiserfs.
+
+(2) A partição que você copia deve ser maior (ou exatament o mesmo
+tamanho) da partição que você está copiando.
+
+(3) Checagem limitada é feita quando o sistemas de arquivo é aberto.
+Esta é a única checagem no momento. Todos os comandos (incluindo o
+resize) vão falhar graciosamente, deixando o sistemas de arquivo
+intacto, se não existir erros no sistemas de arquivo (e a vasta maioria
+de erros no geral).
+
+(4) O tamanho da nova partição, após redimensionar ou copiar, é restrito
+pelo tamanho de cluster para a fat (principalmente afeta FAT16). Isto
+é pior do que você pensa, porque você não chega a escolher o tamanho
+do cluster (isso é um bug no Windows, mas você quer compatibilidade,
+certo?).
+
+Então, em prática, você sempre pode diminuir sua partição (porque o
+Parted pode diminuir o tamanho do cluster), você não vai poder aumentar
+a partição pro tamanho que você quer. Se você não tiver problemas em
+usar FAT32, você sempre vai poder aumentar a partição pro tamanho
+que você quiser.
+
+Resumo: você sempre pode diminuir a sua partição. Se você não pode
+usar FAT32 por alguma razão, então você não vai poder aumentar sua
+partição.
+
+(5) O suporte a reiserfs é habilitado se você instalar libreiserfs,
+disponível em @uref{reiserfs.linux.kiev.ua}. (É provável que esteja
+disonível logo em www.namesys.com... nos diga se/quando isso acontecer!)
+
+@node Ext2
+@section O GNU Parted e o Second Extended Filesystem
+@cindex suporte a sistema de arquivo ext2
+@cindex suporte a sistemas second extended
+
+O Parted não suporta diretamente cópia de sistemas de arquivo ext2
+(ainda). Contudo, existem algumas maneiras de se conseguir isso:
+
+@itemize
+@item Use o comando mkfs (ou mkfs.ext2), e então rode na shell:
+
+ME CONSERTE!!! isto ainda não funciona muito bem - mas deve estar OK
+para a maioria das pessoas@dots{}
+
+@example
+# @kbd{mount -t ext2 /dev/hda2 /mnt/dst}
+# @kbd{find /mnt/src -depth | cpio -pm /mnt/dst}
+@end example
+
+@item Se você duplicar uma partição que será maior que o original,
+isto também pode ser feito: primeiro, crie uma nova partição ext2.
+Então:
+
+@example
+# @kbd{dd if=/dev/dsp-antigo of=/dev/dsp-novo bs=1024 count=@var{tam_ant}}
+# @kbd{parted /dev/hda resize 2 @var{início} @var{fim}}
+@end example
+
+@noindent aonde @var{tam_ant} é o tamanho da partição original em kilobytes.
+@var{início} e @var{fim} são o novo começo e fim para a partição duplicada.
+@end itemize
+
+@node FAT16 e FAT32
+@section Suporte a Sistemas de Arquivo da Microsoft
+@cindex suporte a sistemas de arquivo fat
+@cindex suporte a sistemas de arquivo legados da microsoft
+
+O Parted não pode aumentar o tamanho do cluster de sistemas de arquivo
+FAT (ainda). Isto põe restrições em redimensionar e copiar partições.
+Isto é geralmente bizarro, porque o Parted pode converter sistemas de
+arquivo entre FAT16 e FAT32, que tem restrições diferentes no que o
+tamanho do cluster pode ser.
+
+Por exemplo, vamos dizer que uma partição de 100Mb com um tamanho de
+cluster de 4k. Esta partição não pode ser redimensionados para 400Mb,
+porque o tamanho do cluster deveria ser mudado para 16k. Contudo, ele
+pode ser redimensionado para 600Mb se você usar FAT32. O contrário é
+verdade para sistemas de arquivo FAT32 de 600Mb.
+
+Note: quando você copia ou redimensiona um sistemas de arquivo, o Parted
+vai perguntar se você quer converter entre FAT16 e FAT32 (se isso for
+possível). Portanto, se você só quer converter um partição para FAT32
+(sem redimensionar), você só precisa redimensionar a partição para o
+mesmo tamanho.
+
+@menu
+* MS DriveSpace::                    Partições MS DriveSpace
+@end menu
+
+
+@node MS DriveSpace
+@subsection Partições MS DriveSpace
+@cindex partições drivespace
+
+O MS DriveSpace é um programa que vem com o MS Windows 95 que pdoe ser
+usado para comprimir sistemas de arquivo FAT. Eu acredito que ele
+funcione do mesmo jeito que o DoubleSpace, então tudo dito aqui pode
+ser aplicado no DoubleSpace também.
+
+É possível para o Parted redimensionar e copiar essas partições, mas
+você tem que fazer algumas coisas a mais@dots{}
+
+@menu
+* Aumentando uma partição DriveSpace::
+* Diminuindo um partição DriveSpace::
+* Copiando uma partição DriveSpace::
+@end menu
+
+
+@node Aumentando uma partição DriveSpace
+@subsection Aumentando uma partição DriveSpace
+@cindex partição drivespace, aumentando uma
+
+Para aumentar o tamanho de uma partição DriveSpace, faça o seguinte
+@enumerate
+@item Use o comando resize do Parted para aumentar a partição para o tamanho desejado.
+
+@item Use o MS DriveSpace para enviar o espaço livre do drive de origem
+para o drive comprimido.
+
+@end enumerate
+
+@node Diminuindo uma partição DriveSpace
+@subsubsection Diminuindo uma partição DriveSpace
+@cindex partição drivespace, diminuindo uma
+
+Para aumentar o tamanho de uma partição DriveSpace, faça o seguinte:
+
+@enumerate
+@item Use o MS DriveSpace para jogar o espaço livre do drive comprimido
+para o drive de origem. O número de espaço jogado corresponde ao
+montante que se deve diminuir a partição.
+
+@c RMK: usage: "Parted doesn't give good feedback on what the nubmers" huh?
+@item Use o comando resize do Parted para diminuir uma partição para o
+tamanho desejado. NOTA: O Parted não tem uma boa resposta com os números
+pelo qual se pede para uma partição diminuir. Isto está na lista de
+afazeres.
+
+@end enumerate
+
+@node Copiando uma partição DriveSpace
+@subsubsection Copiando uma partição DriveSpace
+@cindex partição drivespace, copiando uma
+
+Se você quer copiar uma partição DriveSpace para uma partição que é
+maior, então você pode seguir as instruções para aumentar uma partição
+DriveSpace, exceto se você copiar ao invés de redimensionar para a
+partição desejada, e ter certeza de que você usou a nova partição no
+DriveSpace.
+
+Contudo, se você quer copiar uma partição DriveSpace que é menor, as
+coisas ficam um pouco mais complicadas:
+
+@enumerate
+@item Use o MS DriveSpace para empurrar o espaço livre do disco
+comprimido para o drive de origem. O montante de disco empurrado deve ser
+mais que a diferença entre o disco de origem e o tamanho desejado de
+uma das partições duplicadas.
+
+@item Use o Parted para copiar a partição de destino para a partição
+duplicada.
+
+@item Use o MS DriveSpace para empurrar o espaço livre do disco de
+origem de volta para o disco comprimido.
+
+@item Use o MS DriveSpace para empurrar o espaço livre do drive duplicado
+de volta para o drive comprimido.
+@end enumerate
+
+
+@node Reiserfs
+@section Sistemas de Arquivo Jornalístico Reiserfs
+@cindex reiserfs
+
+O Parted suporta reiserfs se a libreiserfs está instalada. O Parted
+detecta isso ao rodar, e automaticamente ativa o suporte. Você pode
+baixar a libreiserfs em:
+
+       @uref{http://reiserfs.linux.kiev.ua}
+
+Note que a libreiserfs é software novo, e não foi largamente testado.
+
+
+@node    LVM e RAID
+@chapter LVM e RAID
+@cindex lvm e raid
+@cindex raid e lvm
+
+@menu
+* Visão geral da LVM e RAID::           Visão geral da LVM e RAID
+* Criando partições RAID ou LVM::       Configurando partições RAID e LVM
+* Manipulando um volume RAID ou LVM::   Operações em partições RAID ou LVM
+@end menu
+
+@node Visão geral do LVM e RAID
+@section Logical Volume Manager e Redundant Arrays of Inexpensive Disks
+@cindex lvm e raid, visão geral do
+@cindex lvw, visão geral
+@cindex raid, visão geral
+
+O LVM (Logical Volume Manager) é um sistema alternativo para
+particionamento. Ele permite volumes lógicos (por exemplo, ``partições
+virtuais'') a serem espalhadas em muitos volumes físicos (por exemplo,
+discos e/ou partições). O LVM é suportado no Linux versão 2.4 e
+superior.
+
+RAID (Redundant Array of Inexpensive Disks - Ordem Redundante de Discos
+Baratos) é um sistema para usar muitos discos e/ou partições juntas, como
+uma ``partição virtual''. Existem muito poucos modos de usar software
+RAID, e são essencialmente:
+
+@c RMK: if there are only two options, why not put them into a sentence?
+@itemize
+@item usar múltiplos (pequenos) discos par um único sistemas de arquivo,
+aumentar a performance e fazer todo o espaço disponível ser disponível
+num único sistemas de arquivo.
+@item usar múltiplos discos para guardar cópias redundantes de informação,
+para aumentar a confiança e performance.
+@end itemize
+RAID por software é suportado no Linux versão 2.0 e superior.
+
+@c RMK: usage: what does ``is supported normally by Parted'' mean?
+RAID por hardware é normalmente suportado pelo Parted - então você não
+precisa ler essa seção se você está usando RAID por hardware (o
+oposto para RAID por software).
+
+LVM, RAID por software e partições são comumente usadas simultaneamente,
+mas elas todas podem ser usadas independentemente. LVM e RAID por
+software são geralmente compostas de partições, mais do que discos
+rígidos.
+
+O GNU Parted não suporta LVM e RAID por software completamente,
+mas ele é ainda útil quando usado em combinação com suas ferramentas
+respectivas. O Parted é útil para essas tarefas:
+
+@itemize
+@item criar uma partição RAID ou LVM de software
+
+@item criando, redimensionando ou copiando um sistema de arquivo num
+volume lógico (ou ``partição lógica'')
+@end itemize
+
+@node Criando partições LVM ou RAID
+@section Criando partições LVM ou RAID
+@cindex criação de partições lvm
+@cindex criação de partições raid
+
+Para criar uma partição RAID ou LVM, você deve:
+@enumerate
+@item Criar uma partição com o comando mkpart
+@item Definir o indicador LVM ou RAID na partição.
+@end enumerate
+
+Por exemplo:
+
+@example
+(parted) @kbd{mkpart primary ext2 0 4000}
+(parted) @kbd{set 1 lvm on}
+@end example
+
+Nota: a partição LVM ou RAID não vai estar pronta para uso ainda. Você
+ainda precisa rodar o mkraid(8) para RAIDs, ou usar as ferramentas de
+LVM para inicializar o volume físico, e criar grupos lógicos, etc.
+
+@node Manipulando um volume RAID ou LVM
+@section Manipulando um Sistema de Arquivo num volume RAID ou LVM
+@cindex operação em partições raid
+@cindex operações em partições lvm
+
+O Parted pode manipular volumes lógicos RAID e LVM, mesmo não entendendo
+RAID ou LVM. Ele utiliza o suporte do Linux a RAID e LVM. Portanto, você
+somente pode usar esses métodos se o seu kernel do Linux suporta RAID
+e/ou LVM.
+
+Para manipular um sistema de arquivo num volume lógico RAID ou LVM (ou,
+uma partição sozinha, para esse intuito), você pode iniciar o parted
+selecionando o dispositivo do volume (partição) lógico. Por exemplo:
+
+@example
+# @kbd{parted /dev/md0}
+@end example
+
+Para o resto desse capítulo, ``dispositivo virtual'' vai se referir
+ao dispositivo que o Parted está editando (no nosso exemplo, @file{/dev/md0}).
+For the rest of this chapter, ``virtual device'' will refer to the
+device Parted is editting (in our example cases, @file{/dev/md0}).
+
+@menu
+* Criando um sistema de arquivo num dispositivo RAID ou LVM::
+* Redimensionando um sistema de arquivo::
+* Copiando um sistema de arquivo de um dispositivo virtual para uma partição::
+* Copiando um sistema de arquivo para um dispositivo virtual::
+@end menu
+
+@node Criando um Sistema de Arquivo num dispositivo RAID ou LVM
+@subsection Criando um Sistema de Arquivo num Dispositivo VIrtual LVM ou RAID
+@cindex lvm, criando um sistema de arquivo em
+@cindex raid, criando um sistema de arquivo em
+
+Para criar um sistema de arquivo num volume LVM, use os seguintes passos:
+
+@enumerate
+@item Crie uma tabelas de partição de loop. Este é uma tabela de partições
+falsa, que diz ao Parted para tratar o dispositivo virtual como um único
+sistema de arquivo. Com essa falsa tabela de partições, existe ou nenhuma
+ou uma partição.
+
+@example
+(parted) @kbd{mklabel loop}
+@end example
+
+@item Crie o sistema de arquivo, usando o comando mkpartfs do Parted.
+Você deve deixar o início do sistema de arquivo 0. A partição pode
+terminar em qualquer lugar dentro do dispositivo virtual. Você pode
+encontrar o tamanho do dispositivo virtual com o comando print. Por
+exemplo:
+
+@example
+(parted) @kbd{print}
+@group
+Disk geometry for /dev/md0: 0.000-47.065 megabytes
+Disk label type: loop
+Minor    Start       End     Filesystem  Flags
+@end group
+(parted) @kbd{mkpartfs primary ext2 0 47.065}
+(parted) @kbd{print}
+@group
+Disk geometry for /dev/md0: 0.000-47.065 megabytes
+Disk label type: loop
+Minor    Start       End     Filesystem  Flags
+1          0.000     47.065  ext2
+@end group
+@end example
+@end enumerate
+
+@node Redimensionando um sistemas de arquivo
+@subsection Redimensionando um Sistema de Arquivos num Dispositivo Virtual LVM ou RAID
+@cindex lvm, redimensionando um sistema de arquivo
+@cindex raid, redimensionando um sistema de arquivo
+
+Você geralmente redimensiona o sistema de arquivo ao mesmo tempo que
+você redimensiona o seu dispositivo virtual. Se você está aumentando
+o sistema de arquivo e o dispositivo virtual, você deve primeiro
+aumentar o dispositivo virtual (com as ferramentas RAID ou LVM), e então
+aumentar o sistema de arquivo. Se você está diminuindo o sistema de
+arquivo e o dispositivo virtual, você deve diminuir o sistema de arquivo
+primeiro, e então o dispositivo virtual.
+
+Para redimensionar o sistema de arquivo no Parted, use o comando resize.
+Por exemplo:
+
+@example
+(parted) @kbd{select /dev/md0}
+(parted) @kbd{resize 1 0 20}
+@end example
+
+@node Copiando um sistema de arquivo de um dispositivo virtual para uma partição
+@subsection Copiando um Sistema de Arquivo de um Dispositivo LVM ou RAID para uma partição
+@cindex lvm, copiando de um lvm para uma partição
+@cindex raid, copiando de um raid para uma partição
+
+Para copiar um sistema de arquivo de um dispositivo virtual LVM ou RAID,
+é só usar o comando cp. Por exemplo:
+
+(parted) @kbd{select /dev/hda}
+(parted) @kbd{cp /dev/md0 1 3}
+@node Copiando um sistema de arquivo para um dispositivo virtual
+@subsection Copiando um Sistema de Arquivo de um Dispositivo Virtual RAID ou LVM
+@cindex lvm, copiando de uma partição lvm para um volume
+@cindex raid, copiando de uma partição para um volume raid
+
+Para copiar o sistema de arquivo para um dispositivo virtual LVM ou RAID,
+use a seguinte receita:
+
+@enumerate
+@item Crie a tabela de partições de loop no dispositivo virtual. Por exemplo:
+
+@example
+(parted) @kbd{select /dev/md0}
+(parted) @kbd{mklabel loop}
+@end example
+
+@item Crie um sistema de arquivo no dispositivo virtual, com o comando
+mkpartfs. Por exemplo:
+
+@example
+(parted) @kbd{mkpartfs primary ext2 0 47.065}
+@end example
+
+@item Copie a partição com o comando cp:
+
+@example
+(parted) @kbd{select /dev/hda}
+(parted) @kbd{cp /dev/md0 3 1}
+@end example
+@end enumerate
+
+@node    Espelhamento de Discos
+@chapter Espelhamento de Discos
+@cindex espelhamento de discos
+
+Espelhamento de disco é o método para evitar o tedioso processo de
+instalação do Windows. Por exemplo, se você quer instalar o Windows e
+o Office em 1000 máquinas, vai levar provavelmente 5 vezes 1000 horas.
+As coisas não são tão ruins com o GNU/Linux, porque existem programas
+como o kickstart da Red Hat, que permite você automatizar a instalação
+de outros programas, ou praticamente qualquer coisa que você precise
+fazer. Portanto, o espelhamento de disco é somente usado para máquinas
+Windows (ou qualquer software não-livre) em geral, mas nós imaginamos
+que a maioria das organizações achariam impossível migrar do Windows
+para o GNU/Linux (ou qualquer outro software livre) sem um período de
+transição, aonde ambos os sistemas estão disponíveis.
+
+@c FIXME: standards: the CD-Writing howto is listed as non-free by LDP
+Com o espelhamento de disco, você pode torrar um CD com uma imagem de
+disco ou de uma partição contendo o Windows e o Office, e copiar a
+partição diretamente nos discos rígidos de todos os computadores,
+colocando um disco de boot e um CD, e deixando rolar. Mas a partição
+no disco Windows vai provavelmente ser maior, então a partição também
+vai ter de ser redimensionada. Eu já vi várias pessoas comentarem que
+elas gerenciaram esse processo usando discos de boot do Linux e o Parted.
+É possível usar o CDROM somente, usando o disquete de boot como a imagem
+de boot do CD. Leia a CD writing HOWTO para maiores informações. Existem
+algumas coisas peculiares que você tem que fazer pra coisa toda funcionar
+(que vai ser resolvida na próxima série estável do Parted). De qualquer
+modo, este é o processo geral:
+
+@enumerate
+@item Instale o Windows numa máquina, com a configuração que você
+quiser. Você pode ter uma partição do tamanho que quiser, contanto
+que não use mais de 640Mb, e deixe espaço para um instalação completa
+do Linux, e outros 1300Mb para duas cópias da imagem de disco.
+
+@item Instale o Linux na máquina.
+
+@item Faça um diretório para imagem do CD (exemplo: @file{/root/imagem})
+
+@item Crie um arquivo de imagem de disco (exemplo: @file{/root/imagem/disco})
+no diretório do CD:
+
+@example
+# @kbd{dd if=/dev/zero of=/root/imagem/disco bs=1M count=640}
+@end example
+
+@item Use o Parted para copiar a partição Windows para a imagem de disco:
+
+@example
+# @kbd{parted /root/cdimage/diskimage mklabel msdos}
+# @kbd{parted /root/cdimage/diskimage mkpart primary fat32 0 639}
+# @kbd{parted /root/cdimage/diskimage cp /dev/hda 1 1}
+@end example
+
+@item Crie uma imagem de CD do diretório da imagem de CD e torre esse
+CD com a sua ferramenta favorita de gravação.
+
+@item Compile uma versão especial do Parted sem suporte a língua
+nacional e suporte a readline (ou baixe a RPM especial da Freshmeat):
+
+@example
+localhost:~/parted-1.0.0# @kbd{./configure --disable-nls --without-readline --disable-shared; make}
+@end example
+
+@c FIXME: standards: LDP labelled the Bootdisk HOWTO non-free.
+@item Crie um disquete de boot do Linux (veja a Bootdisk HOWTO).
+
+@item Ponha a versão reduzida do Parted no disquete de boot (ou
+um disco raiz suplementar).
+
+@item Escreva um script shell para fazer o seguinte:
+
+@example
+@asis{mount /dev/cdrom /mnt/cdrom}
+@asis{parted --script /dev/hda mklabel msdos}
+@asis{parted --script /dev/hda mkpartfs primary fat 0 @var{algum-tamanho}}
+@asis{parted --script /dev/hda cp /mnt/cdrom/diskimage 1 1}
+@asis{parted --script /dev/hda set 1 boot on}
+@asis{/sbin/halt}
+@end example
+
+@var{algum-tamanho} é o tamanho que você quer que a primeira partição use.
+
+@item Inicie a instalação! Ponha o disquete + CD dentro de cada computador,
+e deixe rolar@dots{}
+@end enumerate
+
+Obviamente eu posso e vou fazer esse processo muito mais fácil. Nós
+estamos considerando fazer uma mini-distribuição para fazer isso.
+Eu não teria tempo para fazer isso --- algum voluntário?
+
+@node Software Relacionado
+@chapter Software Relacionado
+@cindex software relacionado
+@cindex leitura posterior
+@cindex documentação relacionada
+
+Se você quer procurar mais informações, sinta-se à vontade para enviar
+perguntas para @email{parted@@gnu.org}. (!) indica que a
+informação/software está provavelmente incluída na sua distribuição.
+
+Estes arquivos na distribuição do Parted contém informações adicionais:
+
+@itemize @bullet
+
+@item ABOUT-NLS - informações sobre usar o Suporte a Língua Nativa, e o Projeto de Tradução Livre
+
+@item API - a documentação sobre a API da libparted
+
+@item AUTHORS - quem escreveu o que
+
+@item BUGS - erros não arrumados
+
+@item ChangeLog - mudanças feitas no Parted
+
+@item COPYING - a GNU General Public License, os termos pelos quais o GNU Parted pode ser distribuido
+
+@item COPYING.DOC - a GNU Free Documentation Licence, o termo pelo qual
+a documentação do Parted pode ser distribuída.
+
+@item FAT -- informações sobre como o redimensionador de FAT funciona (para programadores)
+
+@item INSTALL --- como compilar e instalar o Parted, e a maioria dos outros softwares livres
+
+@item TODO --- recursos planejados que ainda não foram implementados
+@end itemize
+
+Estes documentos não são distribuídos com o Parted, mas você pode achar
+eles úteis. A maioria deles provavelmente vai estar na sua distribuição.
+Por exemplo, no Red Hat Linux, olhe no cd dentro de @file{/doc/HOWTO} e
+@file{/doc/FAQ}.
+
+@itemize @bullet
+
+@c RMK: usefulness: available at the LDP -- should these urls be updated?
+@c RMK: standards: GPL'd documentation.
+@item Filesystems HOWTO   @uref{http://penguin.cz/~mhi/fs}
+
+@c RMK: usefulness: available at the LDP -- should these urls be updated?
+@c FIXME: standards: LDP labelled this non-free
+@item Hard Disk Upgrade mini-HOWTO (!):   @uref{http://sunsite.unc.edu/LDP/HOWTO}
+
+@c RMK: usefulness: available at the LDP -- should these urls be updated?
+@c FIXME: standards: LDP labelled this non-free
+@item Large Disk HOWTO   @uref{http://www.win.tue.nl/~aeb/linux/Large-Disk.html}
+
+@item LILO mini-HOWTO (!)   @uref{http://sunsite.unc.edu/LDP/HOWTO}
+
+@c RMK: usefulness: available at the LDP -- should these urls be updated?
+@item MILO HOWTO (!)   @uref{http://sunsite.unc.edu/LDP/HOWTO}
+
+@c FIXME: standards: in short, none of the following is free documenation
+@c FIXME: standards: Linux+DOS+Win95+OS2 labelled non-free by LDP
+@c FIXME: standards: Linux+FreeBSD-mini labelled non-free by LDP
+@c FIXME: reference: can't find a Linux+Win95, only Linux+Win95-mini
+@c FIXME: standards: Linux+Win95-mini labelled non-free by LDP
+@c FIXME: reference: can't find a Linux+FreeBSD, only Linux+FreeBSD-mini
+@c FIXME: reference: can't find a Linux+NT-Loader, only "NT OS Loader +
+@c Linux mini
+@c FIXME: standards: NT OS Loader + Linux mini labelled non-free by LDP
+@item Linux+OS mini-HOWTOs (!): Linux+DOS+Win95+OS2, Linux+FreeBSD-mini-HOWTO,
+Linux+Win95, Linux+FreeBSD, Linux+NT-Loader.  You can get these from: @uref{http://sunsite.unc.edu/LDP/HOWTO}
+
+@c FIXME: standards: Partition mini  labelled non-free by LDP
+@item Partition mini-HOWTO (!): @uref{http://www.linuxdoc.org/HOWTO/mini/Partition/index.html}
+
+@c RMK: standards: no clear distribution terms
+@item Partition Table HOWTO @uref{http://www.win.tue.nl/~aeb/partitions/partition_tables.html}
+
+@c FIXME: standards: no clear distribution terms
+@item Lista de Tipos de Partições @uref{http://www.win.tue.nl/~aeb/partitions/partition_types.html}
+
+@item Software RAID HOWTO @uref{http://linas.org/linux/Software-RAID/Software-RAID.html}
+
+@end itemize
+
+Outros programas relacionados estão listados aqui. Alguns deles também
+tem documentação útil:
+
+@itemize @bullet
+
+@item Disk Drake. Disponível em @uref{www.linux-mandrake.com/diskdrake}
+Ele é simular em funcionalidade ao Parted. O código de FAT no Disk Drake
+é baseado no nosso código do Parted. Aqui é como o Disk Drake se
+compara ao Parted: (que ambos concordamos :-) O Disk Drake é:
+
+@itemize @minus
+@item mais fácil de usar, te proteje de cometer enganos
+@item uma solução mais completa (lida com o @file{/etc/fstab}, lilo, etc.)
+@item menos suporte à FAT (não pode converter FAT16<->FAT32, não copia partições)
+@item menos suporte a ext2 (no momento)
+@item menos atenção à compatibilidade entre sistemas DOS/Windows (mais antigos)
+@item sem suporte a arquiteturas não-PC
+@end itemize
+
+@item dvhtool (para SGI/MIPS) (!)
+
+@c RMK: standards: unchecked
+@item dosfsck (!)
+
+@item e2fsck, resize2fs e2fsprogs (!) @uref{http://web.mit.edu/tytso/www/linux/e2fsprogs.html}
+
+@item ext2resize - usa o mesmo código do Parted, mas inclui algumas
+outras coisas também, como um redimensionar ext2 na hora, que não
+requer desmontagem. @uref{http://ext2resize.sourceforge.net}
+
+@item fdisk (!)
+
+@item FIPS (!) (First Interactive Partition Splitter - Primeiro Divisor de Partições Interativo) @uref{http://www.igd.fhg.de/~aschaefe/fips}
+
+@ RMK: standards: GPL'd
+@item GPart - recupera tabelas de partição quebradas. @uref{http://www.stud.uni-hannover.de/user/76201/gpart}
+
+@item GNU GRUB - GRand Unified Boot-loader @uref{http://www.gnu.org/software/grub/grub.html}
+
+@item LILO (!) (LInux LOader)  @uref{ftp://tsx-11.mit.edu/pub/linux/packages/lilo}
+
+@item LVM @uref{http://linux.msede.com/lvm}
+
+@c RMK: standards: is mkdosfs Free?
+@item mkdosfs (!)  (às vezes chamada de mkfs.msdos)
+
+@item mke2fs (!)  (às vezes chamada de mkfs.ext2)
+
+@item mkfs (!)
+
+@item mkswap (!)
+
+@item quik (!)
+
+@item reiserfs: NOTA: um redimensionador reiserfs é incluído com a
+distribuição reiserfs normal. @uref{http://devlinux.com/projects/reiserfs}
+Também, uma implementação independente da raiserfs userland (que o parted
+também utiliza) @uref{http://reiserfs.linux.kiev.ua}.  Ele pode ser adotado
+por outros usuários no futuro...
+
+@item yaboot (!)  @uref{http://penguinppc.org/bootloaders/yaboot/}
+
+@item ybin (!)  @uref{http://penguinppc.org/bootloaders/yaboot/}
+
+@end itemize
+
+@node Copiando Este Manual
+@appendix Copiando Este Manual
+
+@menu
+* GNU Free Documentation License::  Licença para copiar esse manual
+@end menu
+
+@include fdl.texi
+
+@c FDL: FDL 4.I suggests a HISTORY section be included in
+@c the documentation.  In this case it seems superfluous, but
+@c here's one, in case it is desired.  As far as I'm concerned,
+@c this node doesn't fit well into the structure of the document
+@c at present.
+@node História
+@appendix A história desse manual
+@cindex  a história desse manual
+
+Esse manual é baseado no arquivo, USER, incluído na versão 1.4.22.
+O código-fonte do GNU Parted está disponível em @uref{ftp.gnu.org/gnu/parted}.
+
+Formatação texinfo por Richard M. Kreuter, 2002.
+
+Este manual é distribuído sob a GNU Free Documentation License,
+versão 1.1 ou superior, à sua discrição, sem Seções Invariantes,
+sem Textos na Capa, e sem Textos na Contra-capa. @xref{Copiando
+este Manual}, para mais detalhes.
+
+@c FIXME: why doesn't this @ifnotplaintext work?!
+@c @ifnotplaintext
+@node Índice
+@unnumbered Índice
+@printindex cp
+@c @end ifnotplaintext
+
+@bye
+
+@ignore
+I've (that is, RMK) included (too much) commentary in this file.
+
+Lines of the form
+
+    FIXME:<category>:
+
+are bugs, and should be fixed.  The categories are sort of vague, but
+"standards" means that something doesnt't meet somebody's (probably
+I've tried to check the license for each program and documentation
+referenced, but have missed some.  As a rule, if a Howto or mini-Howto
+has been labelled as non-free by the LDP, then I've assumed it's also
+non-Free for GNU purposes.  I've also tried to note the free software
+and documentation, since omission of such notes lead me to recheck things
+I'd forgotten I'd check, etc.
+
+Many nodes give some detailed explanation of how to use parted along
+with a non-free operating system using non-free utilities that are part
+of that system.  This may be a violation of the GNU standards,
+node/section "References".  I've marked up the text anyhow, in case the
+content is deemed acceptable by decision makers, and hope that my
+contribution here doesn't sway decisions.
+
+For what it's worth, I've noted references to non-free software as
+"acceptable" in case the reference includes a description of what the
+software can't do (e.g., not suck, not harm mankind).  This idiosyncratic
+assessment of the permissibility of reference of non-free software is
+meant partly as a joke.
+
+Note: there is a free (GPL'd) DOS compatible operating system, FreeDOS,
+that I've tested and found to work pretty well, better in many respects
+that Micros~1's DOS.  Many of the tips and tricks described in the
+manual might work with or be needed for a FreeDOS based system.  In
+principle, one could rewrite the sections of this manual to make
+reference only to 'DOS-compatible' systems, and refer people to FreeDOS.
+
+I, for one, would be happy to refer people to FreeDOS, since it's a nice
+project that could play a valuable role among free operating systems
+(actually, it does: it's the DOS kernel for DOSEMU).  But would
+reworking references to MS DOS and its progeny to refer to FreeDOS just
+be a clever hack around the GNU standards?  I dunno...
+
+<Sigh>  Screed over.
+
+Notes on possible (unimplemented!) modifications:
+
+The output samples from parted's print command, fdisk's p command, etc.,
+might be made into tables (multi-column tables) to ensure spiffy formatting.
+
+I'd like to find a way to make *entry: see *synonym type references in
+the index, so, e.g., to refer people looking for Apple to Macintosh, and
+PowerPC to Macintosh, etc.  Probably texinfo does this already; I dunno.
+
+
+Notes on general fixes:
+
+RMK: usage: eg -> e.g.  ("e.g." is customarily spelled thus).
+
+RMK: usage: "its" is English possessive third person singular adjective
+(cf "sein/ihr", "son/sa/ses").  "it's" is a contraction of "it is",
+i.e., third person singular present active indicative of "to be" (cf
+"das ist", "il est").  I hope that description doesn't come off too
+snotty.  I've changed 'it's' to 'its' more times than noted above.
+
+RMK: usage (punctuation): in English, commas are only used to separate
+relative clauses when the information in the clause is deemed
+non-essential for identifying the referent of the noun on which the
+clause depends (German uses commas around every relative clause, by
+contrast).  So: "I have read the book that was assigned" doesn't have a
+comma because the clause 'that was assigned' is needed to identify which
+book is the object of 'read', whereas "I have read the book, which
+wasn't very good" implies that the fact that the book wasn't very good
+is extra information, not required for the identification of the book,
+e.g. its identity has already been established).
+
+@end ignore
diff --git a/doc/parted.info b/doc/parted.info
new file mode 100644 (file)
index 0000000..121cb79
--- /dev/null
@@ -0,0 +1,1375 @@
+This is parted.info, produced by makeinfo version 4.13 from parted.texi.
+
+This file documents the use of GNU Parted, a program for creating and
+manipulating partition tables.
+
+  Copyright (C) 1999-2011 Free Software Foundation, Inc.
+
+  Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts.  A copy of the license is included in the section entitled "GNU
+Free Documentation License".
+
+INFO-DIR-SECTION System administration
+START-INFO-DIR-ENTRY
+* parted: (parted).                         GNU partitioning software
+END-INFO-DIR-ENTRY
+
+\1f
+File: parted.info,  Node: Top,  Next: Introduction,  Up: (dir)
+
+GNU Parted User Manual
+**********************
+
+This file documents the use of GNU Parted, a program for creating and
+manipulating partition tables.
+
+  This document applies roughly to version *3.0* of GNU Parted.
+
+  The original version was written by Andrew Clausen in text format.
+Richard M. Kreuter translated it into Texinfo format in 2002, to be
+heavily edited by Leslie P. Polzer in 2006.
+
+* Menu:
+
+* Introduction::                Overview
+* Using Parted::                Partitioning a Hard Drive
+* Related information::         Further reading on related topics
+* Copying This Manual::         How to make copies of this manual
+* History::                     This manual's history
+* Concept index::               Concept index
+
+\1f
+File: parted.info,  Node: Introduction,  Next: Using Parted,  Prev: Top,  Up: Top
+
+1 Introduction
+**************
+
+* Menu:
+
+* Overview::                    GNU Parted and prerequisite knowledge
+* Software Required::           GNU Parted's software dependencies
+* Supported Platforms::         Where you can use GNU Parted
+* License::                     What you may and may not do with GNU Parted
+* Compiling::                   How to build GNU Parted
+
+\1f
+File: parted.info,  Node: Overview,  Next: Software Required,  Up: Introduction
+
+1.1 Overview of GNU Parted
+==========================
+
+GNU Parted is a program for creating and manipulating partition tables.
+
+  This documentation is written with the assumption that the reader has
+some understanding of partitioning and file systems.
+
+  GNU Parted was designed to minimize the chance of data loss.  For
+example, it was designed to avoid data loss during interruptions (like
+power failure) and performs many safety checks.  However, there could
+be bugs in GNU Parted, so you should back up your important files before
+running Parted.
+
+  The GNU Parted homepage is `http://www.gnu.org/software/parted'.  The
+library and frontend themselves can be downloaded from
+`ftp://ftp.gnu.org/gnu/parted'.  You can also find a listing of mailing
+lists, notes for contributing and more useful information on the web
+site.
+
+  Please send bug reports to <bug-parted@gnu.org>.  When sending bug
+reports, please include the version of GNU Parted.  Please include the
+output from these commands (for disk `/dev/hda'):
+
+     # parted /dev/hda print unit s print unit chs print
+
+  Feel free to ask for help on this list -- just check that your
+question isn't answered here first.  If you don't understand the
+documentation, please tell us, so we can explain it better.  General
+philosophy is: if you need to ask for help, then something needs to be
+fixed so you (and others) don't need to ask for help.
+
+  Also, we'd love to hear your ideas :-)
+
+\1f
+File: parted.info,  Node: Software Required,  Next: Supported Platforms,  Prev: Overview,  Up: Introduction
+
+1.2 Software Required for the use of Parted
+===========================================
+
+If you're installing or compiling Parted yourself, you'll need to have
+some other programs installed.  If you are compiling Parted, you will
+need both the normal and devel packages of these programs installed:
+
+   * libuuid, part of the e2fsprogs package.  If you don't have this,
+     you can get it from:
+
+       `http://web.mit.edu/tytso/www/linux/e2fsprogs.html'
+
+     If you want to compile Parted and e2fsprogs, note that you will
+     need to `make install' and `make install-libs' e2fsprogs.
+
+   * GNU Readline (optional), available from
+
+       `ftp://ftp.gnu.org/gnu/readline'
+
+     If you are compiling Parted, and you don't have readline, you can
+     disable Parted's readline support with the `--disable-readline'
+     option for `configure'.
+
+   * GNU gettext (or compatible software) for compilation, if
+     internationalisation support is desired.
+
+       `ftp://ftp.gnu.org/gnu/gettext'
+
+   * libreiserfs, if you want reiserfs support:
+
+       `http://reiserfs.osdn.org.ua'
+
+     Note that parted will automatically detect libreiserfs at runtime,
+     and enable reiserfs support.  libreiserfs is new, and hasn't been
+     widely tested yet.
+
+
+\1f
+File: parted.info,  Node: Supported Platforms,  Next: License,  Prev: Software Required,  Up: Introduction
+
+1.3 Platforms on which GNU Parted runs
+======================================
+
+Hopefully, this list will grow a lot.  If you do not have one of these
+platforms, then you can use a rescue disk and a static binary of GNU
+Parted.
+
+GNU/Linux
+     Linux versions 2.0 and up, on Alpha, x86 PCs, PC98, Macintosh
+     PowerPC, Sun hardware.
+
+GNU/Hurd
+
+\1f
+File: parted.info,  Node: License,  Next: Compiling,  Prev: Supported Platforms,  Up: Introduction
+
+1.4 Terms of distribution for GNU Parted
+========================================
+
+GNU Parted is free software, covered by the GNU General Public License
+Version 2.  This should have been included with the Parted distribution,
+in the COPYING file.  If not, write to the Free Software Foundation,
+Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+
+  Libparted is considered part of GNU Parted.  It is covered by the GNU
+General Public License.  It is NOT released under the GNU Lesser General
+Public License (LGPL).
+
+\1f
+File: parted.info,  Node: Compiling,  Prev: License,  Up: Introduction
+
+1.5 Building GNU Parted
+=======================
+
+If you want to compile GNU Parted, this is generally done with:
+
+     $ ./configure
+     $ make
+
+  However, there are a few options for `configure':
+
+`--without-readline'
+     turns off use of readline.  This is useful for making rescue disks,
+     etc., where few libraries are available.
+
+`--disable-debug'
+     don't include assertions
+
+`--disable-dynamic-loading'
+     disables dynamic loading of some libraries (only libreiserfs for
+     now, although we hope to expand this).  Dynamic loading is useful
+     because it allows you to reuse libparted shared libraries even
+     when you don't know if some libraries will be available.  It has a
+     small overhead (mainly linking with libdl), so it may be useful to
+     disable it on bootdisks if you don't need the flexibility.
+
+`--disable-nls'
+     turns off native language support.  This is useful for use with old
+     versions of glibc, or a trimmed down version of glibc suitable for
+     rescue disks.
+
+`--disable-shared'
+     turns off shared libraries.  This may be necessary for use with old
+     versions of GNU libc, if you get a compile error about a "spilled
+     register".  Also useful for boot/rescue disks.
+
+`--enable-discover-only'
+     support only reading/probing (reduces size considerably)
+
+`--enable-mtrace'
+     enable malloc() debugging
+
+`--enable-read-only'
+     disable writing (for debugging)
+
+
+1.5.1 Introduction
+------------------
+
+If you want to run GNU Parted on a machine without GNU/Linux installed,
+or you want to modify a root or boot partition, use GParted Live:
+`http://gparted.sourceforge.net/livecd.php'.
+
+\1f
+File: parted.info,  Node: Using Parted,  Next: Related information,  Prev: Introduction,  Up: Top
+
+2 Using Parted
+**************
+
+* Menu:
+
+* Partitioning::                    Disk partitioning in context
+* Running Parted::                  Partitioning with Parted
+* Invoking Parted::                 Parted's invocation options and commands
+* Command explanations::            Full explanation of parted's commands
+
+\1f
+File: parted.info,  Node: Partitioning,  Next: Running Parted,  Up: Using Parted
+
+2.1 Introduction to Partitioning
+================================
+
+Unfortunately, partitioning your disk is rather complicated.  This is
+because there are interactions between many different systems that need
+to be taken into consideration.
+
+  This manual used to introduce the reader to these systems and their
+working.  This content has moved to the GNU Storage Guide.
+
+\1f
+File: parted.info,  Node: Running Parted,  Next: Invoking Parted,  Prev: Partitioning,  Up: Using Parted
+
+2.2 Using GNU Parted
+====================
+
+Parted has two modes: command line and interactive.  Parted should
+always be started with:
+
+     # parted DEVICE
+
+where DEVICE is the hard disk device to edit.  (If you're lazy and omit
+the DEVICE argument, Parted will attempt to guess which device you
+want.)
+
+  In command line mode, this is followed by one or more commands.  For
+example:
+
+     # parted /dev/sda mklabel gpt mkpart P1 ext3 1MiB 8MiB
+
+Options (like `--help') can only be specified on the command line.
+
+  In interactive mode, commands are entered one at a time at a prompt,
+and modify the disk immediately.  For example:
+
+     (parted) mklabel gpt
+     (parted) mkpart P1 ext3 1MiB 8MiB
+
+Unambiguous abbreviations are allowed.  For example, you can type "p"
+instead of "print", and "u" instead of "units".  Commands can be typed
+either in English, or your native language (if your language has been
+translated).  This may create ambiguities.  Commands are
+case-insensitive.
+
+  Numbers indicating partition locations can be whole numbers or
+decimals.  The suffix selects the unit, which may be one of those
+described in *note unit::, except CHS and compact.  If no suffix is
+given, then the default unit is assumed.  Negative numbers count back
+from the end of the disk, with "-1s" indicating the sector at the end
+of the disk.  Parted will compute sensible ranges for the locations you
+specify (e.g. a range of +/- 500 MB when you specify the location in
+"G"). Use the sector unit "s" to specify exact locations.  With
+parted-2.4 and newer, IEC binary units like "MiB", "GiB", "TiB", etc.,
+specify exact locations as well.  See *Note IEC binary units::.
+
+  If you don't give a parameter to a command, Parted will prompt you
+for it.  For example:
+
+     (parted) mklabel
+     New disk label type? gpt
+
+  Parted will always warn you before doing something that is potentially
+dangerous, unless the command is one of those that is inherently
+dangerous (viz., rm, mklabel and mkpart).  Since many partitioning
+systems have complicated constraints, Parted will usually do something
+slightly different to what you asked.  (For example, create a partition
+starting at 10.352Mb, not 10.4Mb) If the calculated values differ too
+much, Parted will ask you for confirmation.
+
+\1f
+File: parted.info,  Node: Invoking Parted,  Next: Command explanations,  Prev: Running Parted,  Up: Using Parted
+
+2.3 Command Line Options
+========================
+
+When invoked from the command line, Parted supports the following
+syntax:
+
+     # parted [OPTION] DEVICE [COMMAND [ARGUMENT]]
+
+  Available options and commands follow.  For detailed explanations of
+the use of Parted commands, see *note Command explanations::. Options
+begin with a hyphen, commands do not:
+
+  Options:
+
+`-h'
+`--help'
+     display a help message
+
+`-s'
+`--script'
+     never prompt the user
+
+`-a alignment-type'
+`--align alignment-type'
+     Set alignment for newly created partitions, valid alignment types
+     are: none, cylinder, minimal and optimal.
+
+`-v'
+`--version'
+     display the version
+
+\1f
+File: parted.info,  Node: Command explanations,  Prev: Invoking Parted,  Up: Using Parted
+
+2.4 Parted Session Commands
+===========================
+
+GNU Parted provides the following commands:
+
+* Menu:
+
+* align-check::
+* help::
+* mklabel::
+* mkpart::
+* name::
+* print::
+* quit::
+* rescue::
+* rm::
+* select::
+* set::
+* unit::
+
+  Note that after version 2.4, the following commands were removed:
+check, cp, mkfs, mkpartfs, move, resize.
+
+\1f
+File: parted.info,  Node: align-check,  Next: help,  Up: Command explanations
+
+2.4.1 align-check
+-----------------
+
+ -- Command: align-check ALIGN-TYPE N
+     Determine whether the starting sector of partition N meets the
+     disk's selected alignment criteria.  ALIGN-TYPE must be `minimal',
+     `optimal' or an abbreviation.  When in script mode, if the
+     partition does not meet the alignment requirement, exit with
+     status 1;  otherwise (including on older kernels for which
+     alignment data is not available), continue processing any
+     remaining commands.  Without `--script', print either `N aligned'
+     or `N not aligned'.
+
+     Example:
+
+          (parted) align-check minimal 1
+          1 aligned
+
+
+\1f
+File: parted.info,  Node: help,  Next: mklabel,  Prev: align-check,  Up: Command explanations
+
+2.4.2 help
+----------
+
+ -- Command: help [COMMAND]
+     Prints general help, or help on COMMAND.
+
+     Example:
+
+          (parted) help mklabel
+
+     Print help for the mklabel command.
+
+\1f
+File: parted.info,  Node: mklabel,  Next: mkpart,  Prev: help,  Up: Command explanations
+
+2.4.3 mklabel
+-------------
+
+ -- Command: mklabel LABEL-TYPE
+     Creates a new disk label, of type LABEL-TYPE.  The new disk label
+     will have no partitions.  This command (normally) won't technically
+     destroy your data, but it will make it basically unusable, and you
+     will need to use the rescue command (*note Related information::)
+     to recover any partitions.  Parted works on all partition tables.
+     (1)
+
+     LABEL-TYPE must be one of these supported disk labels:
+        * bsd
+
+        * loop (raw disk access)
+
+        * gpt
+
+        * mac
+
+        * msdos
+
+        * pc98
+
+        * sun
+
+     Example:
+
+          (parted) mklabel msdos
+
+     Create an MS-DOS disk label.  This is still the most common disk
+     label for PCs.
+
+  ---------- Footnotes ----------
+
+  (1) Everyone seems to have a different word for "disk label" -- these
+are all the same thing: partition table, partition map.
+
+\1f
+File: parted.info,  Node: mkpart,  Next: name,  Prev: mklabel,  Up: Command explanations
+
+2.4.4 mkpart
+------------
+
+ -- Command: mkpart [PART-TYPE FS-TYPE NAME] START END
+     Creates a new partition, _without_ creating a new file system on
+     that partition.  This is useful for creating partitions for file
+     systems (or LVM, etc.) that Parted doesn't support.  You may
+     specify a file system type, to set the appropriate partition code
+     in the partition table for the new partition.  FS-TYPE is required
+     for data partitions (i.e., non-extended partitions).  START and END
+     are the offset from the beginning of the disk, that is, the
+     "distance" from the start of the disk.
+
+     PART-TYPE is one of `primary', `extended' or `logical', and may be
+     specified only with `msdos' or `dvh' partition tables.  A NAME
+     must be specified for a `gpt' partition table.  Neither PART-TYPE
+     nor NAME may be used with a `sun' partition table.
+
+     FS-TYPE must be one of these supported file systems:
+        * ext2
+
+        * fat16, fat32
+
+        * hfs, hfs+, hfsx
+
+        * linux-swap
+
+        * NTFS
+
+        * reiserfs
+
+        * ufs
+
+     Example:
+
+          (parted) mkpart logical 0.0 692.1
+
+     Create a logical partition that will contain an ext2 file system.
+     The partition will start at the beginning of the disk, and end
+     692.1 megabytes into the disk.
+
+
+\1f
+File: parted.info,  Node: name,  Next: print,  Prev: mkpart,  Up: Command explanations
+
+2.4.5 name
+----------
+
+ -- Command: name NUMBER NAME
+     Sets the name for the partition NUMBER (GPT, Mac, MIPS and PC98
+     only).  The name can be placed in quotes.
+
+     Example:
+
+          (parted) name 2 'Secret Documents'
+
+     Set the name of partition 2 to `Secret Documents'.
+
+\1f
+File: parted.info,  Node: print,  Next: quit,  Prev: name,  Up: Command explanations
+
+2.4.6 print
+-----------
+
+ -- Command: print [NUMBER]
+     Displays the partition table on the device parted is editing, or
+     detailed information about a particular partition.
+
+     Example:
+
+          (parted) print
+          Disk geometry for /dev/hda: 0.000-2445.679 megabytes
+          Disk label type: msdos
+          Minor    Start       End     Type      Filesystem  Flags
+          1          0.031    945.000  primary   fat32       boot, lba
+          2        945.000   2358.562  primary   ext2
+          3       2358.562   2445.187  primary   linux-swap
+          (parted) print 1
+          Minor: 1
+          Flags: boot, lba
+          File System: fat32
+          Size:            945.000Mb (0%)
+          Minimum size:     84.361Mb (0%)
+          Maximum size:   2445.679Mb (100%)
+
+\1f
+File: parted.info,  Node: quit,  Next: rescue,  Prev: print,  Up: Command explanations
+
+2.4.7 quit
+----------
+
+ -- Command: quit
+     Quits Parted.
+
+     It is only after Parted exits that the Linux kernel knows about
+     the changes Parted has made to the disks.  However, the changes
+     caused by typing your commands will _probably_ be made to the disk
+     immediately after typing a command.  However, the operating
+     system's cache and the disk's hardware cache may delay this.
+
+\1f
+File: parted.info,  Node: rescue,  Next: rm,  Prev: quit,  Up: Command explanations
+
+2.4.8 rescue
+------------
+
+ -- Command: rescue START END
+     Rescue a lost partition that used to be located approximately
+     between START and END.  If such a partition is found, Parted will
+     ask you if you want to create a partition for it.  This is useful
+     if you accidently deleted a partition with parted's rm command,
+     for example.
+
+     Example:
+
+          (parted) print
+          Disk geometry for /dev/hdc: 0.000-8063.507 megabytes
+          Disk label type: msdos
+          Minor    Start       End     Type      Filesystem  Flags
+          1          0.031   8056.032  primary   ext3
+          (parted) rm
+          Partition number? 1
+          (parted) print
+          Disk geometry for /dev/hdc: 0.000-8063.507 megabytes
+          Disk label type: msdos
+          Minor    Start       End     Type      Filesystem  Flags
+
+     OUCH!  We deleted our ext3 partition!!!  Parted comes to the
+     rescue...
+
+          (parted) rescue
+          Start? 0
+          End? 8056
+          Information: A ext3 primary partition was found at 0.031MB ->
+          8056.030MB.  Do you want to add it to the partition table?
+          Yes/No/Cancel? y
+          (parted) print
+          Disk geometry for /dev/hdc: 0.000-8063.507 megabytes
+          Disk label type: msdos
+          Minor    Start       End     Type      Filesystem  Flags
+          1          0.031   8056.032  primary   ext3
+
+     It's back!  :)
+
+
+\1f
+File: parted.info,  Node: rm,  Next: select,  Prev: rescue,  Up: Command explanations
+
+2.4.9 rm
+--------
+
+ -- Command: rm NUMBER
+     Removes the partition with number NUMBER.  If you accidently delete
+     a partition with this command, use mkpart to recover it.  Also,
+     you can use the gpart program (*note Related information::) to
+     recover damaged disk labels.
+
+     Note for msdos disk labels: if you delete a logical partition, all
+     logical partitions with a larger partition number will be
+     renumbered.  For example, if you delete a logical partition with a
+     partition number of 6, then logical partitions that were number 7,
+     8 and 9 would be renumbered to 6, 7 and 8 respectively.  This
+     means, for example, that you have to update `/etc/fstab' on
+     GNU/Linux systems.
+
+     Example:
+
+          (parted) rm 3
+
+     Remove partition 3.
+
+\1f
+File: parted.info,  Node: select,  Next: set,  Prev: rm,  Up: Command explanations
+
+2.4.10 select
+-------------
+
+ -- Command: select DEVICE
+     Selects the device, DEVICE, for Parted to edit.  The device can be
+     a Linux hard disk device, a partition, a software RAID device or
+     LVM logical volume.
+
+     Example:
+
+          (parted) select /dev/hdb
+
+     Select `/dev/hdb' (the slave device on the first ide controller on
+     Linux) as the device to edit.
+
+\1f
+File: parted.info,  Node: set,  Next: unit,  Prev: select,  Up: Command explanations
+
+2.4.11 set
+----------
+
+ -- Command: set NUMBER FLAG STATE
+     Changes a flag on the partition with number NUMBER.  A flag can be
+     either "on" or "off".  Some or all of these flags will be
+     available, depending on what disk label you are using:
+
+    `bios_grub'
+          (GPT) - Enable this to record that the selected partition is a
+          GRUB BIOS partition.
+
+    `legacy_boot'
+          (GPT) - this flag is used to tell special purpose software
+          that the GPT partition may be bootable.
+
+    `boot'
+          (Mac, MS-DOS, PC98) - should be enabled if you want to boot
+          off the partition.  The semantics vary between disk labels.
+          For MS-DOS disk labels, only one partition can be bootable.
+          If you are installing LILO on a partition that partition must
+          be bootable.  For PC98 disk labels, all ext2 partitions must
+          be bootable (this is enforced by Parted).
+
+    `lba'
+          (MS-DOS) - this flag can be enabled to tell MS DOS, MS
+          Windows 9x and MS Windows ME based operating systems to use
+          Linear (LBA) mode.
+
+    `root'
+          (Mac) - this flag should be enabled if the partition is the
+          root device to be used by Linux.
+
+    `swap'
+          (Mac) - this flag should be enabled if the partition is the
+          swap device to be used by Linux.
+
+    `hidden'
+          (MS-DOS, PC98) - this flag can be enabled to hide partitions
+          from Microsoft operating systems.
+
+    `raid'
+          (MS-DOS) - this flag can be enabled to tell linux the
+          partition is a software RAID partition.
+
+    `LVM'
+          (MS-DOS) - this flag can be enabled to tell linux the
+          partition is a physical volume.
+
+    `PALO'
+          (MS-DOS) - this flag can be enabled so that the partition can
+          be used by the Linux/PA-RISC boot loader, palo.
+
+    `PREP'
+          (MS-DOS) - this flag can be enabled so that the partition can
+          be used as a PReP boot partition on PowerPC PReP or IBM
+          RS6K/CHRP hardware.
+
+    `DIAG'
+          (MS-DOS) - Enable this to indicate that a partition can be
+          used as a diagnostics / recovery partition.
+
+
+     The print command displays all enabled flags for each partition.
+
+     Example:
+
+          (parted) set 1 boot on
+
+     Set the `boot' flag on partition 1.
+
+\1f
+File: parted.info,  Node: unit,  Prev: set,  Up: Command explanations
+
+2.4.12 unit
+-----------
+
+ -- Command: unit UNIT
+     Selects the current default unit that Parted will use to display
+     locations and capacities on the disk and to interpret those given
+     by the user if they are not suffixed by an UNIT.
+
+     UNIT may be one of:
+
+    `s'
+          sector (n bytes depending on the sector size, often 512)
+
+    `B'
+          byte
+
+    `KiB'
+          kibibyte (1024 bytes)
+
+    `MiB'
+          mebibyte (1048576 bytes)
+
+    `GiB'
+          gibibyte (1073741824 bytes)
+
+    `TiB'
+          tebibyte (1099511627776 bytes)
+
+    `kB'
+          kilobyte (1000 bytes)
+
+    `MB'
+          megabyte (1000000 bytes)
+
+    `GB'
+          gigabyte (1000000000 bytes)
+
+    `TB'
+          terabyte (1000000000000 bytes)
+
+    `%'
+          percentage of the device (between 0 and 100)
+
+    `cyl'
+          cylinders (related to the BIOS CHS geometry)
+
+    `chs'
+          cylinders, heads, sectors addressing (related to the BIOS CHS
+          geometry)
+
+    `compact'
+          This is a special unit that defaults to megabytes for input,
+          and picks a unit that gives a compact human readable
+          representation for output.
+
+     The default unit apply only for the output and when no unit is
+     specified after an input number.  Input numbers can be followed by
+     an unit (without any space or other character between them), in
+     which case this unit apply instead of the default unit for this
+     particular number, but CHS and cylinder units are not supported as
+     a suffix.  If no suffix is given, then the default unit is assumed.
+     Parted will compute sensible ranges for the locations you specify
+     (e.g. a range of +/- 500 MB when you specify the location in "G",
+     and a range of +/- 500 KB when you specify the location in "M")
+     and will select the nearest location in this range from the one you
+     wrote that satisfies constraints from both the operation, the
+     filesystem being worked on, the disk label, other partitions and so
+     on.  Use the sector unit "s" to specify exact locations (if they
+     do not satisfy all constraints, Parted will ask you for the nearest
+     solution).  Note that negative numbers count back from the end of
+     the disk, with "-1s" pointing to the last sector of the disk.
+
+     Note that as of parted-2.4, when you specify start and/or end
+     values using IEC binary units like "MiB", "GiB", "TiB", etc.,
+     parted treats those values as exact, and equivalent to the same
+     number specified in bytes (i.e., with the "B" suffix), in that it
+     provides _no_ "helpful" range of sloppiness.  Contrast that with a
+     partition start request of "4GB", which may actually resolve to
+     some sector up to 500MB before or after that point.  Thus, when
+     creating a partition, you should prefer to specify units of bytes
+     ("B"), sectors ("s"), or IEC binary units like "MiB", but not
+     "MB", "GB", etc.
+
+     Example:
+
+          (parted) unit compact
+          (parted) print
+          Disk geometry for /dev/hda: 0kB - 123GB
+          Disk label type: msdos
+          Number  Start   End     Size    Type      File system  Flags
+          1       32kB    1078MB  1077MB  primary   reiserfs     boot
+          2       1078MB  2155MB  1078MB  primary   linux-swap
+          3       2155MB  123GB   121GB   extended
+          5       2155MB  7452MB  5297MB  logical   reiserfs
+          (parted) unit chs print
+          Disk geometry for /dev/hda: 0,0,0 - 14946,225,62
+          BIOS cylinder,head,sector geometry: 14946,255,63.  Each cylinder
+          is 8225kB.
+          Disk label type: msdos
+          Number  Start       End         Type      File system  Flags
+          1       0,1,0       130,254,62  primary   reiserfs     boot
+          2       131,0,0     261,254,62  primary   linux-swap
+          3       262,0,0     14945,254,62 extended
+          5       262,2,0     905,254,62  logical   reiserfs
+          (parted) unit mb print
+          Disk geometry for /dev/hda: 0MB - 122942MB
+          Disk label type: msdos
+          Number  Start   End     Size    Type      File system  Flags
+          1       0MB     1078MB  1077MB  primary   reiserfs     boot
+          2       1078MB  2155MB  1078MB  primary   linux-swap
+          3       2155MB  122935MB 120780MB extended
+          5       2155MB  7452MB  5297MB  logical   reiserfs
+
+
+\1f
+File: parted.info,  Node: Related information,  Next: Copying This Manual,  Prev: Using Parted,  Up: Top
+
+3 Related information
+*********************
+
+If you want to find out more information, please see the GNU Parted web
+site.
+
+  These files in the Parted distribution contain further information:
+
+   * `ABOUT-NLS' - information about using Native Language Support, and
+     the Free Translation Project.
+
+   * `AUTHORS' - who wrote what.
+
+   * `ChangeLog' - record of changes made to Parted.
+
+   * `COPYING' - the GNU General Public License, the terms under which
+     GNU Parted may be distributed.
+
+   * `COPYING.DOC' - the GNU Free Documentation Licence, the term under
+     which Parted's documentation may be distributed.
+
+   * `INSTALL' -- how to compile and install Parted, and most other free
+     software
+
+
+\1f
+File: parted.info,  Node: Copying This Manual,  Next: History,  Prev: Related information,  Up: Top
+
+Appendix A Copying This Manual
+******************************
+
+* Menu:
+
+* GNU Free Documentation License::  License for copying this manual
+
+\1f
+File: parted.info,  Node: GNU Free Documentation License,  Up: Copying This Manual
+
+A.1 GNU Free Documentation License
+==================================
+
+                        Version 1.1, March 2000
+
+     Copyright (C) 2000, 2009-2011 Free Software Foundation, Inc.
+     51 Franklin St, 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.
+
+  0. PREAMBLE
+
+     The purpose of this License is to make a manual, textbook, or other
+     written document "free" in the sense of freedom: to assure everyone
+     the effective freedom to copy and redistribute it, with or without
+     modifying it, either commercially or noncommercially.  Secondarily,
+     this License preserves for the author and publisher a way to get
+     credit for their work, while not being considered responsible for
+     modifications made by others.
+
+     This License is a kind of "copyleft", which means that derivative
+     works of the document must themselves be free in the same sense.
+     It complements the GNU General Public License, which is a copyleft
+     license designed for free software.
+
+     We have designed this License in order to use it for manuals for
+     free software, because free software needs free documentation: a
+     free program should come with manuals providing the same freedoms
+     that the software does.  But this License is not limited to
+     software manuals; it can be used for any textual work, regardless
+     of subject matter or whether it is published as a printed book.
+     We recommend this License principally for works whose purpose is
+     instruction or reference.
+
+  1. APPLICABILITY AND DEFINITIONS
+
+     This License applies to any manual or other work that contains a
+     notice placed by the copyright holder saying it can be distributed
+     under the terms of this License.  The "Document", below, refers to
+     any such manual or work.  Any member of the public is a licensee,
+     and is addressed as "you".
+
+     A "Modified Version" of the Document means any work containing the
+     Document or a portion of it, either copied verbatim, or with
+     modifications and/or translated into another language.
+
+     A "Secondary Section" is a named appendix or a front-matter
+     section of the Document that deals exclusively with the
+     relationship of the publishers or authors of the Document to the
+     Document's overall subject (or to related matters) and contains
+     nothing that could fall directly within that overall subject.
+     (For example, if the Document is in part a textbook of
+     mathematics, a Secondary Section may not explain any mathematics.)
+     The relationship could be a matter of historical connection with
+     the subject or with related matters, or of legal, commercial,
+     philosophical, ethical or political position regarding them.
+
+     The "Invariant Sections" are certain Secondary Sections whose
+     titles are designated, as being those of Invariant Sections, in
+     the notice that says that the Document is released under this
+     License.
+
+     The "Cover Texts" are certain short passages of text that are
+     listed, as Front-Cover Texts or Back-Cover Texts, in the notice
+     that says that the Document is released under this License.
+
+     A "Transparent" copy of the Document means a machine-readable copy,
+     represented in a format whose specification is available to the
+     general public, whose contents can be viewed and edited directly
+     and straightforwardly with generic text editors or (for images
+     composed of pixels) generic paint programs or (for drawings) some
+     widely available drawing editor, and that is suitable for input to
+     text formatters or for automatic translation to a variety of
+     formats suitable for input to text formatters.  A copy made in an
+     otherwise Transparent file format whose markup has been designed
+     to thwart or discourage subsequent modification by readers is not
+     Transparent.  A copy that is not "Transparent" is called "Opaque".
+
+     Examples of suitable formats for Transparent copies include plain
+     ASCII without markup, Texinfo input format, LaTeX input format,
+     SGML or XML using a publicly available DTD, and
+     standard-conforming simple HTML designed for human modification.
+     Opaque formats include PostScript, PDF, proprietary formats that
+     can be read and edited only by proprietary word processors, SGML
+     or XML for which the DTD and/or processing tools are not generally
+     available, and the machine-generated HTML produced by some word
+     processors for output purposes only.
+
+     The "Title Page" means, for a printed book, the title page itself,
+     plus such following pages as are needed to hold, legibly, the
+     material this License requires to appear in the title page.  For
+     works in formats which do not have any title page as such, "Title
+     Page" means the text near the most prominent appearance of the
+     work's title, preceding the beginning of the body of the text.
+
+  2. VERBATIM COPYING
+
+     You may copy and distribute the Document in any medium, either
+     commercially or noncommercially, provided that this License, the
+     copyright notices, and the license notice saying this License
+     applies to the Document are reproduced in all copies, and that you
+     add no other conditions whatsoever to those of this License.  You
+     may not use technical measures to obstruct or control the reading
+     or further copying of the copies you make or distribute.  However,
+     you may accept compensation in exchange for copies.  If you
+     distribute a large enough number of copies you must also follow
+     the conditions in section 3.
+
+     You may also lend copies, under the same conditions stated above,
+     and you may publicly display copies.
+
+  3. COPYING IN QUANTITY
+
+     If you publish printed copies of the Document numbering more than
+     100, and the Document's license notice requires Cover Texts, you
+     must enclose the copies in covers that carry, clearly and legibly,
+     all these Cover Texts: Front-Cover Texts on the front cover, and
+     Back-Cover Texts on the back cover.  Both covers must also clearly
+     and legibly identify you as the publisher of these copies.  The
+     front cover must present the full title with all words of the
+     title equally prominent and visible.  You may add other material
+     on the covers in addition.  Copying with changes limited to the
+     covers, as long as they preserve the title of the Document and
+     satisfy these conditions, can be treated as verbatim copying in
+     other respects.
+
+     If the required texts for either cover are too voluminous to fit
+     legibly, you should put the first ones listed (as many as fit
+     reasonably) on the actual cover, and continue the rest onto
+     adjacent pages.
+
+     If you publish or distribute Opaque copies of the Document
+     numbering more than 100, you must either include a
+     machine-readable Transparent copy along with each Opaque copy, or
+     state in or with each Opaque copy a publicly-accessible
+     computer-network location containing a complete Transparent copy
+     of the Document, free of added material, which the general
+     network-using public has access to download anonymously at no
+     charge using public-standard network protocols.  If you use the
+     latter option, you must take reasonably prudent steps, when you
+     begin distribution of Opaque copies in quantity, to ensure that
+     this Transparent copy will remain thus accessible at the stated
+     location until at least one year after the last time you
+     distribute an Opaque copy (directly or through your agents or
+     retailers) of that edition to the public.
+
+     It is requested, but not required, that you contact the authors of
+     the Document well before redistributing any large number of
+     copies, to give them a chance to provide you with an updated
+     version of the Document.
+
+  4. MODIFICATIONS
+
+     You may copy and distribute a Modified Version of the Document
+     under the conditions of sections 2 and 3 above, provided that you
+     release the Modified Version under precisely this License, with
+     the Modified Version filling the role of the Document, thus
+     licensing distribution and modification of the Modified Version to
+     whoever possesses a copy of it.  In addition, you must do these
+     things in the Modified Version:
+
+       A. Use in the Title Page (and on the covers, if any) a title
+          distinct from that of the Document, and from those of
+          previous versions (which should, if there were any, be listed
+          in the History section of the Document).  You may use the
+          same title as a previous version if the original publisher of
+          that version gives permission.
+
+       B. List on the Title Page, as authors, one or more persons or
+          entities responsible for authorship of the modifications in
+          the Modified Version, together with at least five of the
+          principal authors of the Document (all of its principal
+          authors, if it has less than five).
+
+       C. State on the Title page the name of the publisher of the
+          Modified Version, as the publisher.
+
+       D. Preserve all the copyright notices of the Document.
+
+       E. Add an appropriate copyright notice for your modifications
+          adjacent to the other copyright notices.
+
+       F. Include, immediately after the copyright notices, a license
+          notice giving the public permission to use the Modified
+          Version under the terms of this License, in the form shown in
+          the Addendum below.
+
+       G. Preserve in that license notice the full lists of Invariant
+          Sections and required Cover Texts given in the Document's
+          license notice.
+
+       H. Include an unaltered copy of this License.
+
+       I. Preserve the section entitled "History", and its title, and
+          add to it an item stating at least the title, year, new
+          authors, and publisher of the Modified Version as given on
+          the Title Page.  If there is no section entitled "History" in
+          the Document, create one stating the title, year, authors,
+          and publisher of the Document as given on its Title Page,
+          then add an item describing the Modified Version as stated in
+          the previous sentence.
+
+       J. Preserve the network location, if any, given in the Document
+          for public access to a Transparent copy of the Document, and
+          likewise the network locations given in the Document for
+          previous versions it was based on.  These may be placed in
+          the "History" section.  You may omit a network location for a
+          work that was published at least four years before the
+          Document itself, or if the original publisher of the version
+          it refers to gives permission.
+
+       K. In any section entitled "Acknowledgments" or "Dedications",
+          preserve the section's title, and preserve in the section all
+          the substance and tone of each of the contributor
+          acknowledgments and/or dedications given therein.
+
+       L. Preserve all the Invariant Sections of the Document,
+          unaltered in their text and in their titles.  Section numbers
+          or the equivalent are not considered part of the section
+          titles.
+
+       M. Delete any section entitled "Endorsements".  Such a section
+          may not be included in the Modified Version.
+
+       N. Do not retitle any existing section as "Endorsements" or to
+          conflict in title with any Invariant Section.
+
+     If the Modified Version includes new front-matter sections or
+     appendices that qualify as Secondary Sections and contain no
+     material copied from the Document, you may at your option
+     designate some or all of these sections as invariant.  To do this,
+     add their titles to the list of Invariant Sections in the Modified
+     Version's license notice.  These titles must be distinct from any
+     other section titles.
+
+     You may add a section entitled "Endorsements", provided it contains
+     nothing but endorsements of your Modified Version by various
+     parties--for example, statements of peer review or that the text
+     has been approved by an organization as the authoritative
+     definition of a standard.
+
+     You may add a passage of up to five words as a Front-Cover Text,
+     and a passage of up to 25 words as a Back-Cover Text, to the end
+     of the list of Cover Texts in the Modified Version.  Only one
+     passage of Front-Cover Text and one of Back-Cover Text may be
+     added by (or through arrangements made by) any one entity.  If the
+     Document already includes a cover text for the same cover,
+     previously added by you or by arrangement made by the same entity
+     you are acting on behalf of, you may not add another; but you may
+     replace the old one, on explicit permission from the previous
+     publisher that added the old one.
+
+     The author(s) and publisher(s) of the Document do not by this
+     License give permission to use their names for publicity for or to
+     assert or imply endorsement of any Modified Version.
+
+  5. COMBINING DOCUMENTS
+
+     You may combine the Document with other documents released under
+     this License, under the terms defined in section 4 above for
+     modified versions, provided that you include in the combination
+     all of the Invariant Sections of all of the original documents,
+     unmodified, and list them all as Invariant Sections of your
+     combined work in its license notice.
+
+     The combined work need only contain one copy of this License, and
+     multiple identical Invariant Sections may be replaced with a single
+     copy.  If there are multiple Invariant Sections with the same name
+     but different contents, make the title of each such section unique
+     by adding at the end of it, in parentheses, the name of the
+     original author or publisher of that section if known, or else a
+     unique number.  Make the same adjustment to the section titles in
+     the list of Invariant Sections in the license notice of the
+     combined work.
+
+     In the combination, you must combine any sections entitled
+     "History" in the various original documents, forming one section
+     entitled "History"; likewise combine any sections entitled
+     "Acknowledgments", and any sections entitled "Dedications".  You
+     must delete all sections entitled "Endorsements."
+
+  6. COLLECTIONS OF DOCUMENTS
+
+     You may make a collection consisting of the Document and other
+     documents released under this License, and replace the individual
+     copies of this License in the various documents with a single copy
+     that is included in the collection, provided that you follow the
+     rules of this License for verbatim copying of each of the
+     documents in all other respects.
+
+     You may extract a single document from such a collection, and
+     distribute it individually under this License, provided you insert
+     a copy of this License into the extracted document, and follow
+     this License in all other respects regarding verbatim copying of
+     that document.
+
+  7. AGGREGATION WITH INDEPENDENT WORKS
+
+     A compilation of the Document or its derivatives with other
+     separate and independent documents or works, in or on a volume of
+     a storage or distribution medium, does not as a whole count as a
+     Modified Version of the Document, provided no compilation
+     copyright is claimed for the compilation.  Such a compilation is
+     called an "aggregate", and this License does not apply to the
+     other self-contained works thus compiled with the Document, on
+     account of their being thus compiled, if they are not themselves
+     derivative works of the Document.
+
+     If the Cover Text requirement of section 3 is applicable to these
+     copies of the Document, then if the Document is less than one
+     quarter of the entire aggregate, the Document's Cover Texts may be
+     placed on covers that surround only the Document within the
+     aggregate.  Otherwise they must appear on covers around the whole
+     aggregate.
+
+  8. TRANSLATION
+
+     Translation is considered a kind of modification, so you may
+     distribute translations of the Document under the terms of section
+     4.  Replacing Invariant Sections with translations requires special
+     permission from their copyright holders, but you may include
+     translations of some or all Invariant Sections in addition to the
+     original versions of these Invariant Sections.  You may include a
+     translation of this License provided that you also include the
+     original English version of this License.  In case of a
+     disagreement between the translation and the original English
+     version of this License, the original English version will prevail.
+
+  9. TERMINATION
+
+     You may not copy, modify, sublicense, or distribute the Document
+     except as expressly provided for under this License.  Any other
+     attempt to copy, modify, sublicense or distribute the Document 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.
+
+ 10. FUTURE REVISIONS OF THIS LICENSE
+
+     The Free Software Foundation may publish new, revised versions of
+     the GNU Free Documentation 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.  See
+     `http://www.gnu.org/copyleft/'.
+
+     Each version of the License is given a distinguishing version
+     number.  If the Document specifies that a particular numbered
+     version of this License "or any later version" applies to it, you
+     have the option of following the terms and conditions either of
+     that specified version or of any later version that has been
+     published (not as a draft) by the Free Software Foundation.  If
+     the Document does not specify a version number of this License,
+     you may choose any version ever published (not as a draft) by the
+     Free Software Foundation.
+
+A.1.1 ADDENDUM: How to use this License for your documents
+----------------------------------------------------------
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+       Copyright (C)  YEAR  YOUR NAME.
+       Permission is granted to copy, distribute and/or modify this document
+       under the terms of the GNU Free Documentation License, Version 1.3
+       or any later version published by the Free Software Foundation;
+       with the Invariant Sections being LIST THEIR TITLES, with the
+       Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+       A copy of the license is included in the section entitled ``GNU
+       Free Documentation License''.
+
+  If you have no Invariant Sections, write "with no Invariant Sections"
+instead of saying which ones are invariant.  If you have no Front-Cover
+Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being
+LIST"; likewise for Back-Cover Texts.
+
+  If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License, to
+permit their use in free software.
+
+\1f
+File: parted.info,  Node: History,  Next: Concept index,  Prev: Copying This Manual,  Up: Top
+
+Appendix B This manual's history
+********************************
+
+This manual was based on the file `USER' included in GNU Parted version
+1.4.22 source distribution.  The GNU Parted source distribution is
+available at `ftp.gnu.org/gnu/parted'.
+
+  Initial Texinfo formatting by Richard M. Kreuter, 2002.
+
+  Maintainance by Andrew Clausen from 2002 to 2005 and by Leslie P.
+Polzer from July 2005 onwards.
+
+  This manual is distributed under the GNU Free Documentation License,
+version 1.1 or later, at your discretion, any later version published
+by the Free Software Foundation; with no Invariant Sections, with no
+Front-Cover Texts, and with no Back-Cover Texts.  *Note Copying This
+Manual::, for details.
+
+\1f
+File: parted.info,  Node: Concept index,  Prev: History,  Up: Top
+
+Index
+*****
+
+\0\b[index\0\b]
+* Menu:
+
+* align-check, command description:      align-check.           (line 6)
+* bugs, reporting:                       Overview.              (line 6)
+* building parted:                       Compiling.             (line 6)
+* command description, align-check:      align-check.           (line 6)
+* command description, help:             help.                  (line 6)
+* command description, mkindex:          mklabel.               (line 6)
+* command description, mkpart:           mkpart.                (line 6)
+* command description, name:             name.                  (line 6)
+* command description, print:            print.                 (line 6)
+* command description, quit:             quit.                  (line 6)
+* command description, rescue:           rescue.                (line 6)
+* command description, rm:               rm.                    (line 6)
+* command description, select:           select.                (line 6)
+* command description, set:              set.                   (line 6)
+* command description, unit:             unit.                  (line 6)
+* command syntax:                        Command explanations.  (line 6)
+* commands:                              Using Parted.          (line 6)
+* commands, detailed listing:            Command explanations.  (line 6)
+* commands, overview:                    Invoking Parted.       (line 6)
+* compiling parted:                      Compiling.             (line 6)
+* contacting developers:                 Overview.              (line 6)
+* description of parted:                 Overview.              (line 6)
+* detailed command listing:              Command explanations.  (line 6)
+* e2fsprogs:                             Software Required.     (line 6)
+* FDL, GNU Free Documentation License:   GNU Free Documentation License.
+                                                                (line 6)
+* further reading:                       Related information.   (line 6)
+* gettext:                               Software Required.     (line 6)
+* gnu gpl:                               License.               (line 6)
+* gpl:                                   License.               (line 6)
+* help, command description:             help.                  (line 6)
+* history of this manual:                History.               (line 6)
+* invocation options:                    Invoking Parted.       (line 6)
+* libuuid:                               Software Required.     (line 6)
+* license terms:                         License.               (line 6)
+* mklabel, command description:          mklabel.               (line 6)
+* mkpart, command description:           mkpart.                (line 6)
+* modes of use:                          Running Parted.        (line 6)
+* name, command description:             name.                  (line 6)
+* options at invocation:                 Invoking Parted.       (line 6)
+* overview:                              Overview.              (line 6)
+* parted description:                    Overview.              (line 6)
+* partitioning overview:                 Partitioning.          (line 6)
+* platforms, supported:                  Supported Platforms.   (line 6)
+* print, command description:            print.                 (line 6)
+* quit, command description:             quit.                  (line 6)
+* readline:                              Software Required.     (line 6)
+* related documentation:                 Related information.   (line 6)
+* reporting bugs:                        Overview.              (line 6)
+* required software:                     Software Required.     (line 6)
+* rescue, command description:           rescue.                (line 6)
+* rm, command description:               rm.                    (line 6)
+* select, command description:           select.                (line 6)
+* set, command description:              set.                   (line 6)
+* software dependencies:                 Software Required.     (line 6)
+* supported platforms:                   Supported Platforms.   (line 6)
+* terms of distribution:                 License.               (line 6)
+* unit, command description:             unit.                  (line 6)
+
+
+\1f
+Tag Table:
+Node: Top\7f766
+Node: Introduction\7f1569
+Node: Overview\7f2025
+Node: Software Required\7f3552
+Node: Supported Platforms\7f4911
+Node: License\7f5365
+Node: Compiling\7f5996
+Node: Using Parted\7f7723
+Node: Partitioning\7f8142
+Node: Running Parted\7f8598
+Node: Invoking Parted\7f10980
+Node: Command explanations\7f11760
+Node: align-check\7f12197
+Node: help\7f12925
+Node: mklabel\7f13210
+Ref: mklabel-Footnote-1\7f14093
+Node: mkpart\7f14222
+Node: name\7f15631
+Node: print\7f16009
+Node: quit\7f16896
+Node: rescue\7f17389
+Node: rm\7f18908
+Node: select\7f19786
+Node: set\7f20255
+Node: unit\7f22690
+Ref: IEC binary units\7f25057
+Node: Related information\7f27151
+Node: Copying This Manual\7f27974
+Node: GNU Free Documentation License\7f28218
+Node: History\7f48106
+Node: Concept index\7f48911
+\1f
+End Tag Table
diff --git a/doc/parted.texi b/doc/parted.texi
new file mode 100644 (file)
index 0000000..f6c64f5
--- /dev/null
@@ -0,0 +1,1021 @@
+\input texinfo    @c -*-texinfo-*-
+@c %**start of header
+@setfilename parted.info
+@settitle Parted User's Manual
+@include version.texi
+@paragraphindent 2
+@c %**end of header
+
+@ifinfo
+This file documents the use of GNU Parted, a program for creating
+and manipulating partition tables.
+@end ifinfo
+
+@ifnottex @c texi2pdf don't understand copying and insertcopying ???
+@c modifications must also be done in the titlepage
+@copying
+Copyright @copyright{} 1999-2011 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts.  A copy of the license is included in the section entitled ``GNU
+Free Documentation License''.
+@end copying
+@c WTF does the info get the copying output and the plaintext output not ????
+@ifplaintext
+@insertcopying
+@end ifplaintext
+@end ifnottex
+
+@dircategory System administration
+@direntry
+* parted: (parted).                         GNU partitioning software
+@end direntry
+
+@titlepage
+@title GNU Parted User Manual
+@subtitle GNU Parted, version @value{VERSION}, @value{UPDATED}
+@author Andrew Clausen @email{clausen@@gnu.org}
+@author Richard M. Kreuter @email{kreuter@@anduril.rutgers.edu}
+@author Leslie Patrick Polzer @email{polzer@@gnu.org}
+
+
+@c @page
+@c @vskip 0pt plus 1filll
+
+@c modifications must also be done in the copying block
+Copyright @copyright{} 1999-2011 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts.  A copy of the license is included in the section entitled ``GNU
+Free Documentation License''.
+@end titlepage
+
+@ifnottex
+@node Top
+@top GNU Parted User Manual
+
+@c WTF doesn't texi2html include the titlepage?
+@ifhtml
+@insertcopying
+@end ifhtml
+
+This file documents the use of GNU Parted, a program for creating
+and manipulating partition tables.
+
+This document applies roughly to version @strong{@value{VERSION}} of GNU Parted.
+
+The original version was written by Andrew Clausen in text format.
+Richard M. Kreuter translated it into Texinfo format in 2002, to be heavily
+edited by Leslie P. Polzer in 2006.
+@end ifnottex
+
+@shortcontents
+
+@menu
+* Introduction::                Overview
+* Using Parted::                Partitioning a Hard Drive
+* Related information::         Further reading on related topics
+* Copying This Manual::         How to make copies of this manual
+* History::                     This manual's history
+* Concept index::               Concept index
+@end menu
+
+@node    Introduction
+@chapter Introduction
+
+@menu
+* Overview::                    GNU Parted and prerequisite knowledge
+* Software Required::           GNU Parted's software dependencies
+* Supported Platforms::         Where you can use GNU Parted
+* License::                     What you may and may not do with GNU Parted
+* Compiling::                   How to build GNU Parted
+@end menu
+
+@node Overview
+@section Overview of GNU Parted
+@cindex description of parted
+@cindex overview
+@cindex parted description
+@cindex bugs, reporting
+@cindex reporting bugs
+@cindex contacting developers
+
+GNU Parted is a program for creating and manipulating partition tables.
+
+This documentation is written with the assumption that the reader
+has some understanding of partitioning and file systems.
+
+GNU Parted was designed to minimize the chance of data loss.  For
+example, it was designed to avoid data loss during interruptions (like
+power failure) and performs many safety checks.  However, there could
+be bugs in GNU Parted, so you should back up your important files before
+running Parted.
+
+The GNU Parted homepage is @uref{http://www.gnu.org/software/parted}.  The
+library and frontend themselves can be downloaded from
+@uref{ftp://ftp.gnu.org/gnu/parted}.
+You can also find a listing of mailing lists, notes for contributing and
+more useful information on the web site.
+
+Please send bug reports to @email{bug-parted@@gnu.org}.  When sending bug
+reports, please include the version of GNU Parted.
+Please include the output from these commands (for disk @file{/dev/hda}):
+
+@example
+@group
+# @kbd{parted /dev/hda print unit s print unit chs print}
+@end group
+@end example
+
+Feel free to ask for help on this list --- just check that your question
+isn't answered here first.  If you don't understand the documentation,
+please tell us, so we can explain it better.  General philosophy is:
+if you need to ask for help, then something needs to be fixed so you
+(and others) don't need to ask for help.
+
+Also, we'd love to hear your ideas :-)
+
+@node Software Required
+@section Software Required for the use of Parted
+@cindex software dependencies
+@cindex required software
+@cindex libuuid
+@cindex e2fsprogs
+@cindex readline
+@cindex gettext
+
+If you're installing or compiling Parted yourself, you'll need to
+have some other programs installed.  If you are compiling Parted,
+you will need both the normal and devel packages of these programs
+installed:
+
+@itemize @bullet
+
+@item libuuid, part of the e2fsprogs package.  If you don't have this,
+you can get it from:
+
+       @uref{http://web.mit.edu/tytso/www/linux/e2fsprogs.html}
+
+If you want to compile Parted and e2fsprogs, note that you will need to
+@kbd{make install} and @kbd{make install-libs} e2fsprogs.
+
+@item GNU Readline (optional), available from
+
+       @uref{ftp://ftp.gnu.org/gnu/readline}
+
+If you are compiling Parted, and you don't have readline, you can
+disable Parted's readline support with the @kbd{--disable-readline}
+option for @command{configure}.
+
+@item GNU gettext (or compatible software) for compilation, if
+internationalisation support is desired.
+
+       @uref{ftp://ftp.gnu.org/gnu/gettext}
+
+@item libreiserfs, if you want reiserfs support:
+
+       @uref{http://reiserfs.osdn.org.ua}
+
+Note that parted will automatically detect libreiserfs at runtime, and enable
+reiserfs support.  libreiserfs is new, and hasn't been widely tested yet.
+
+@end itemize
+
+@node Supported Platforms
+@section Platforms on which GNU Parted runs
+@cindex supported platforms
+@cindex platforms, supported
+
+Hopefully, this list will grow a lot.  If you do not have one of these
+platforms, then you can use a rescue disk and a static binary of GNU Parted.
+
+@table @asis
+@item GNU/Linux
+Linux versions 2.0 and up, on Alpha, x86 PCs, PC98, Macintosh PowerPC, Sun hardware.
+
+@item GNU/Hurd
+@end table
+
+@node License
+@section Terms of distribution for GNU Parted
+@cindex license terms
+@cindex terms of distribution
+@cindex gnu gpl
+@cindex gpl
+
+GNU Parted is free software, covered by the GNU General Public License
+Version 2.  This should have been included with the Parted distribution,
+in the COPYING file.  If not, write to the Free Software Foundation,
+Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+
+Libparted is considered part of GNU Parted.  It is covered by the GNU
+General Public License.  It is NOT released under the GNU Lesser General
+Public License (LGPL).
+
+@node Compiling
+@section Building GNU Parted
+@cindex compiling parted
+@cindex building parted
+
+If you want to compile GNU Parted, this is generally done with:
+
+@example
+@group
+$ @kbd{./configure}
+$ @kbd{make}
+@end group
+@end example
+
+However, there are a few options for @command{configure}:
+
+@table @code
+@item --without-readline
+turns off use of readline.  This is useful for making rescue disks,
+etc., where few libraries are available.
+
+@item --disable-debug
+don't include assertions
+
+@item --disable-dynamic-loading
+disables dynamic loading of some libraries (only libreiserfs for now,
+although we hope to expand this).  Dynamic loading is useful because it
+allows you to reuse libparted shared libraries even when you don't know
+if some libraries will be available.  It has a small overhead (mainly
+linking with libdl), so it may be useful to disable it on bootdisks if
+you don't need the flexibility.
+
+@item --disable-nls
+turns off native language support.  This is useful for use with old
+versions of glibc, or a trimmed down version of glibc suitable for
+rescue disks.
+
+@item --disable-shared
+turns off shared libraries.  This may be necessary for use with old
+versions of GNU libc, if you get a compile error about a ``spilled
+register''.  Also useful for boot/rescue disks.
+
+@item --enable-discover-only
+support only reading/probing (reduces size considerably)
+
+@item --enable-mtrace
+enable malloc() debugging
+
+@item --enable-read-only
+disable writing (for debugging)
+
+@end table
+
+@subsection Introduction
+If you want to run GNU Parted on a machine without GNU/Linux installed,
+or you want to modify a root or boot partition, use GParted Live:
+@uref{http://gparted.sourceforge.net/livecd.php}.
+
+@node    Using Parted
+@chapter Using Parted
+@cindex commands
+
+@menu
+* Partitioning::                    Disk partitioning in context
+* Running Parted::                  Partitioning with Parted
+* Invoking Parted::                 Parted's invocation options and commands
+* Command explanations::            Full explanation of parted's commands
+@end menu
+
+@node Partitioning
+@section Introduction to Partitioning
+@cindex partitioning overview
+
+Unfortunately, partitioning your disk is rather complicated.  This is
+because there are interactions between many different systems that need
+to be taken into consideration.
+
+This manual used to introduce the reader to these systems and their
+working.  This content has moved to the GNU Storage Guide.
+
+@node Running Parted
+@section Using GNU Parted
+@cindex modes of use
+
+Parted has two modes: command line and interactive.  Parted should
+always be started with:
+
+@example
+# @kbd{parted @var{device}}
+@end example
+
+@noindent where @var{device} is the hard disk device to edit.  (If you're
+lazy and omit the DEVICE argument, Parted will attempt to guess which
+device you want.)
+
+In command line mode, this is followed by one or more commands.  For
+example:
+
+@example
+# @kbd{parted /dev/sda mklabel gpt mkpart P1 ext3 1MiB 8MiB }
+@end example
+
+@noindent Options (like @kbd{--help}) can only be specified on the
+command line.
+
+In interactive mode, commands are entered one at a time at a prompt, and
+modify the disk immediately.  For example:
+
+@example
+(parted) @kbd{mklabel gpt}
+(parted) @kbd{mkpart P1 ext3 1MiB 8MiB }
+@end example
+
+@noindent Unambiguous abbreviations are allowed.  For example, you can
+type ``p'' instead of ``print'', and ``u'' instead of ``units''.
+Commands can be typed either in English, or your native language (if
+your language has been translated).  This may create ambiguities.
+Commands are case-insensitive.
+
+Numbers indicating partition locations can be whole numbers or decimals.
+The suffix selects the unit, which may be one of those described in
+@ref{unit}, except CHS and compact.  If no suffix is given, then the default
+unit is assumed.  Negative numbers count back from the end of the disk,
+with ``-1s'' indicating the sector at the end of the disk.
+Parted will compute sensible
+ranges for the locations you specify (e.g. a range of +/- 500 MB when you
+specify the location in ``G''). Use the sector unit ``s'' to specify exact
+locations.  With parted-2.4 and newer,
+IEC binary units like ``MiB'', ``GiB'', ``TiB'', etc., specify
+exact locations as well.
+See @xref{IEC binary units}.
+
+If you don't give a parameter to a command, Parted will prompt you for it.
+For example:
+
+@example
+(parted) @kbd{mklabel}
+New disk label type? @kbd{gpt}
+@end example
+
+Parted will always warn you before doing something that is potentially
+dangerous, unless the command is one of those that is inherently
+dangerous (viz., rm, mklabel and mkpart).
+Since many partitioning systems have complicated constraints, Parted will
+usually do something slightly different to what you asked.  (For example,
+create a partition starting at 10.352Mb, not 10.4Mb)
+If the calculated values differ too much, Parted will ask you for
+confirmation.
+
+
+@node Invoking Parted
+@section Command Line Options
+@cindex options at invocation
+@cindex commands, overview
+@cindex invocation options
+
+When invoked from the command line, Parted supports the following syntax:
+
+@example
+# @kbd{parted [@var{option}] @var{device} [@var{command} [@var{argument}]]}
+@end example
+
+Available options and commands follow.  For detailed explanations of the
+use of Parted commands, see @ref{Command explanations}. Options begin
+with a hyphen, commands do not:
+
+Options:
+
+@table @samp
+@item -h
+@itemx --help
+display a help message
+
+@item -s
+@itemx --script
+never prompt the user
+
+@item -a alignment-type
+@itemx --align alignment-type
+Set alignment for newly created partitions, valid alignment types are:
+none, cylinder, minimal and optimal.
+
+@item -v
+@itemx --version
+display the version
+@end table
+
+@node Command explanations
+@section Parted Session Commands
+@cindex command syntax
+@cindex detailed command listing
+@cindex commands, detailed listing
+
+GNU Parted provides the following commands:
+
+@menu
+* align-check::
+* help::
+* mklabel::
+* mkpart::
+* name::
+* print::
+* quit::
+* rescue::
+* rm::
+* select::
+* set::
+* unit::
+@end menu
+
+Note that after version 2.4, the following commands were removed:
+check, cp, mkfs, mkpartfs, move, resize.
+
+@node align-check
+@subsection align-check
+@cindex align-check, command description
+@cindex command description, align-check
+
+@deffn Command align-check @var{align-type} @var{n}
+
+Determine whether the starting sector of partition @var{n}
+meets the disk's selected alignment criteria.
+@var{align-type} must be @samp{minimal}, @samp{optimal}
+or an abbreviation.
+When in script mode, if the partition does not meet the alignment
+requirement, exit with status 1;  otherwise (including on older
+kernels for which alignment data is not available), continue processing
+any remaining commands.
+Without @option{--script}, print either @samp{@var{N} aligned}
+or @samp{@var{N} not aligned}.
+
+Example:
+
+@example
+(parted) @kbd{align-check minimal 1}
+1 aligned
+@end example
+
+@end deffn
+
+@node help
+@subsection help
+@cindex help, command description
+@cindex command description, help
+
+@deffn Command help [@var{command}]
+
+Prints general help, or help on @var{command}.
+
+Example:
+
+@example
+(parted) @kbd{help mklabel}
+@end example
+
+Print help for the mklabel command.
+@end deffn
+
+@node mklabel
+@subsection mklabel
+@cindex mklabel, command description
+@cindex command description, mkindex
+
+@deffn Command mklabel @var{label-type}
+
+Creates a new disk label, of type @var{label-type}.  The new disk label
+will have no partitions.  This command (normally) won't technically
+destroy your data, but it will make it basically unusable,
+and you will need to use the rescue command (@pxref{Related information})
+to recover any partitions.
+Parted works on all partition tables.  @footnote{Everyone seems to
+have a different word for ``disk label'' --- these are all the same
+thing: partition table, partition map.}
+
+@var{label-type} must be one of these supported disk labels:
+@itemize @bullet
+@item bsd
+@item loop (raw disk access)
+@item gpt
+@item mac
+@item msdos
+@item pc98
+@item sun
+@end itemize
+
+Example:
+
+@example
+(parted) @kbd{mklabel msdos}
+@end example
+
+Create an MS-DOS disk label.  This is still the most common disk label for
+PCs.
+@end deffn
+
+@node mkpart
+@subsection mkpart
+@cindex mkpart, command description
+@cindex command description, mkpart
+
+@deffn Command mkpart [@var{part-type} @var{fs-type} @var{name}] @var{start} @var{end}
+
+Creates a new partition, @emph{without} creating a new file system on
+that partition.  This is useful for creating partitions for file systems
+(or LVM, etc.) that Parted doesn't support.  You may specify a file
+system type, to set the appropriate partition code in the partition
+table for the new partition.  @var{fs-type} is required for data
+partitions (i.e., non-extended partitions).  @var{start} and @var{end}
+are the offset from the beginning of the disk, that is, the ``distance''
+from the start of the disk.
+
+@var{part-type} is one of @samp{primary}, @samp{extended} or @samp{logical},
+and may be specified only with @samp{msdos} or @samp{dvh} partition tables.
+A @var{name} must be specified for a @samp{gpt} partition table.
+Neither @var{part-type} nor @var{name} may be used with a @samp{sun}
+partition table.
+
+@var{fs-type} must be one of these supported file systems:
+@itemize @bullet
+@item ext2
+@item fat16, fat32
+@item hfs, hfs+, hfsx
+@item linux-swap
+@item NTFS
+@item reiserfs
+@item ufs
+@end itemize
+
+Example:
+
+@example
+(parted) @kbd{mkpart logical 0.0 692.1}
+@end example
+
+Create a logical partition that will contain an ext2 file system.  The
+partition will start at the beginning of the disk, and end 692.1
+megabytes into the disk.
+
+@end deffn
+
+@node name
+@subsection name
+@cindex name, command description
+@cindex command description, name
+
+@deffn Command name @var{number} @var{name}
+
+Sets the name for the partition @var{number} (GPT, Mac, MIPS and PC98 only).
+The name can be placed in quotes.
+
+Example:
+
+@example
+(parted) @kbd{name 2 'Secret Documents'}
+@end example
+
+Set the name of partition 2 to `Secret Documents'.
+@end deffn
+
+@node print
+@subsection print
+@cindex print, command description
+@cindex command description, print
+
+@deffn Command print [@var{number}]
+
+Displays the partition table on the device parted is editing, or
+detailed information about a particular partition.
+
+Example:
+
+@example
+@group
+(parted) @kbd{print}
+Disk geometry for /dev/hda: 0.000-2445.679 megabytes
+Disk label type: msdos
+Minor    Start       End     Type      Filesystem  Flags
+1          0.031    945.000  primary   fat32       boot, lba
+2        945.000   2358.562  primary   ext2
+3       2358.562   2445.187  primary   linux-swap
+(parted) @kbd{print 1}
+Minor: 1
+Flags: boot, lba
+File System: fat32
+Size:            945.000Mb (0%)
+Minimum size:     84.361Mb (0%)
+Maximum size:   2445.679Mb (100%)
+@end group
+@end example
+@end deffn
+
+@node quit
+@subsection quit
+@cindex quit, command description
+@cindex command description, quit
+
+@deffn Command quit
+
+Quits Parted.
+
+@c RMK: generality: the following will apply to any operating system on
+@c which parted will run, not only Linux-based ones.
+@c clausen: yeah... just that the way hurd and linux work are totally
+@c different, and it's actually very hard to speak in general.  Need to
+@c discuss this more
+It is only after Parted exits that the Linux kernel knows about the changes
+Parted has made to the disks.  However, the changes caused by typing your
+commands will @emph{probably} be made to the disk immediately after typing a
+command.  However, the operating system's cache and the disk's hardware cache
+may delay this.
+@end deffn
+
+@node rescue
+@subsection rescue
+@cindex rescue, command description
+@cindex command description, rescue
+
+@deffn Command rescue @var{start} @var{end}
+Rescue a lost partition that used to be located approximately between
+@var{start} and @var{end}.  If such a partition is found, Parted will
+ask you if you want to create a partition for it.  This is useful if you
+accidently deleted a partition with parted's rm command, for example.
+
+Example:
+
+@example
+(parted) @kbd{print}
+@group
+Disk geometry for /dev/hdc: 0.000-8063.507 megabytes
+Disk label type: msdos
+Minor    Start       End     Type      Filesystem  Flags
+1          0.031   8056.032  primary   ext3
+@end group
+(parted) @kbd{rm}
+Partition number? 1
+(parted) @kbd{print}
+@group
+Disk geometry for /dev/hdc: 0.000-8063.507 megabytes
+Disk label type: msdos
+Minor    Start       End     Type      Filesystem  Flags
+@end group
+@end example
+
+OUCH!  We deleted our ext3 partition!!!  Parted comes to the rescue...
+
+@example
+(parted) @kbd{rescue}
+Start? 0
+End? 8056
+Information: A ext3 primary partition was found at 0.031MB ->
+8056.030MB.  Do you want to add it to the partition table?
+Yes/No/Cancel? @kbd{y}
+(parted) @kbd{print}
+@group
+Disk geometry for /dev/hdc: 0.000-8063.507 megabytes
+Disk label type: msdos
+Minor    Start       End     Type      Filesystem  Flags
+1          0.031   8056.032  primary   ext3
+@end group
+@end example
+
+It's back!  :)
+
+@end deffn
+
+@node rm
+@subsection rm
+@cindex rm, command description
+@cindex command description, rm
+
+
+@deffn Command rm @var{number}
+
+Removes the partition with number @var{number}.  If you accidently delete
+a partition with this command, use mkpart to
+recover it.  Also, you can use the gpart program (@pxref{Related information})
+to recover damaged disk labels.
+
+Note for msdos disk labels: if you delete a logical partition, all
+logical partitions with a larger partition number will be renumbered.  For
+example, if you delete a logical partition with a partition number of 6,
+then logical partitions that were number 7, 8 and 9 would be renumbered
+to 6, 7 and 8 respectively.  This means, for example, that you have to
+update @file{/etc/fstab} on GNU/Linux systems.
+
+Example:
+
+@example
+(parted) @kbd{rm 3}
+@end example
+
+Remove partition 3.
+@end deffn
+
+@node select
+@subsection select
+@cindex select, command description
+@cindex command description, select
+
+@deffn Command select @var{device}
+
+Selects the device, @var{device}, for Parted to edit.  The device can
+be a Linux hard disk device, a partition, a software RAID device or
+LVM logical volume.
+
+Example:
+
+@example
+(parted) @kbd{select /dev/hdb}
+@end example
+
+Select @file{/dev/hdb} (the slave device on the first ide controller on
+Linux) as the device to edit.
+@end deffn
+
+@node set
+@subsection set
+@cindex set, command description
+@cindex command description, set
+
+@deffn Command set @var{number} @var{flag} @var{state}
+
+Changes a flag on the partition with number @var{number}.  A flag can be
+either ``on'' or ``off''.  Some or all of these flags will be available,
+depending on what disk label you are using:
+
+@table @samp
+
+@item bios_grub
+(GPT) - Enable this to record that the selected partition is a
+GRUB BIOS partition.
+
+@item legacy_boot
+(GPT) - this flag is used to tell special purpose software that the GPT
+partition may be bootable.
+
+@item boot
+(Mac, MS-DOS, PC98) - should be enabled if you want to boot off the
+partition.  The semantics vary between disk labels.  For MS-DOS disk
+labels, only one partition can be bootable.  If you are installing LILO
+on a partition that partition must be bootable.
+For PC98 disk labels, all ext2 partitions must be bootable (this is
+enforced by Parted).
+
+@item lba
+(MS-DOS) - this flag can be enabled to tell MS DOS, MS Windows 9x and
+MS Windows ME based operating systems to use Linear (LBA) mode.
+
+@item root
+(Mac) - this flag should be enabled if the partition is the root device
+to be used by Linux.
+
+@item swap
+(Mac) - this flag should be enabled if the partition is the swap
+device to be used by Linux.
+
+@item hidden
+(MS-DOS, PC98) - this flag can be enabled to hide partitions from
+Microsoft operating systems.
+
+@item raid
+(MS-DOS) - this flag can be enabled to tell linux the partition is a
+software RAID partition.
+
+@item LVM
+(MS-DOS) - this flag can be enabled to tell linux the partition is a
+physical volume.
+
+@item PALO
+(MS-DOS) - this flag can be enabled so that the partition can be used
+by the Linux/PA-RISC boot loader, palo.
+
+@item PREP
+(MS-DOS) - this flag can be enabled so that the partition can be used
+as a PReP boot partition on PowerPC PReP or IBM RS6K/CHRP hardware.
+
+@item DIAG
+(MS-DOS) - Enable this to indicate that a partition can be used
+as a diagnostics / recovery partition.
+
+@end table
+
+The print command displays all enabled flags for each partition.
+
+Example:
+
+@example
+(parted) @kbd{set 1 boot on}
+@end example
+
+Set the @samp{boot} flag on partition 1.
+@end deffn
+
+@node unit
+@subsection unit
+@cindex unit, command description
+@cindex command description, unit
+
+@deffn Command unit @var{unit}
+
+Selects the current default unit that Parted will use to display
+locations and capacities on the disk and to interpret those given
+by the user if they are not suffixed by an @var{unit}.
+
+@var{unit} may be one of:
+
+@table @samp
+@item s
+sector (n bytes depending on the sector size, often 512)
+
+@item B
+byte
+
+@item KiB
+kibibyte (1024 bytes)
+
+@item MiB
+mebibyte (1048576 bytes)
+
+@item GiB
+gibibyte (1073741824 bytes)
+
+@item TiB
+tebibyte (1099511627776 bytes)
+
+@item kB
+kilobyte (1000 bytes)
+
+@item MB
+megabyte (1000000 bytes)
+
+@item GB
+gigabyte (1000000000 bytes)
+
+@item TB
+terabyte (1000000000000 bytes)
+
+@item %
+percentage of the device (between 0 and 100)
+
+@item cyl
+cylinders (related to the BIOS CHS geometry)
+
+@item chs
+cylinders, heads, sectors addressing (related to the BIOS CHS geometry)
+
+@item compact
+This is a special unit that defaults to megabytes for input, and picks a
+unit that gives a compact human readable representation for output.
+@end table
+
+The default unit apply only for the output and when no unit is
+specified after an input number.  Input numbers can be followed by
+an unit (without any space or other character between them), in
+which case this unit apply instead of the default unit for this
+particular number, but CHS and cylinder units are not supported as
+a suffix.  If no suffix is given, then the default unit is assumed.
+Parted will compute sensible ranges for the locations you specify
+(e.g. a range of +/- 500 MB when you specify the location in ``G'',
+and a range of +/- 500 KB when you specify the location in ``M'')
+and will select the nearest location in this range from the one you
+wrote that satisfies constraints from both the operation, the
+filesystem being worked on, the disk label, other partitions and so
+on.  Use the sector unit ``s'' to specify exact locations (if they
+do not satisfy all constraints, Parted will ask you for the nearest
+solution).  Note that negative numbers count back from the end of
+the disk, with ``-1s'' pointing to the last sector of the disk.
+
+@anchor{IEC binary units}
+Note that as of parted-2.4, when you specify start and/or end values
+using IEC binary units like ``MiB'', ``GiB'', ``TiB'', etc., parted
+treats those values as exact, and equivalent to the same number
+specified in bytes (i.e., with the ``B'' suffix), in that it provides
+@emph{no} ``helpful'' range of sloppiness.  Contrast that with
+a partition start request of ``4GB'', which may actually resolve to
+some sector up to 500MB before or after that point.
+Thus, when creating a partition, you should prefer to specify
+units of bytes (``B''), sectors (``s''), or IEC binary units like ``MiB'',
+but not ``MB'', ``GB'', etc.
+
+Example:
+
+@example
+@group
+(parted) unit compact
+(parted) print
+Disk geometry for /dev/hda: 0kB - 123GB
+Disk label type: msdos
+Number  Start   End     Size    Type      File system  Flags
+1       32kB    1078MB  1077MB  primary   reiserfs     boot
+2       1078MB  2155MB  1078MB  primary   linux-swap
+3       2155MB  123GB   121GB   extended
+5       2155MB  7452MB  5297MB  logical   reiserfs
+@end group
+@group
+(parted) unit chs print
+Disk geometry for /dev/hda: 0,0,0 - 14946,225,62
+BIOS cylinder,head,sector geometry: 14946,255,63.  Each cylinder
+is 8225kB.
+Disk label type: msdos
+Number  Start       End         Type      File system  Flags
+1       0,1,0       130,254,62  primary   reiserfs     boot
+2       131,0,0     261,254,62  primary   linux-swap
+3       262,0,0     14945,254,62 extended
+5       262,2,0     905,254,62  logical   reiserfs
+@end group
+@group
+(parted) unit mb print
+Disk geometry for /dev/hda: 0MB - 122942MB
+Disk label type: msdos
+Number  Start   End     Size    Type      File system  Flags
+1       0MB     1078MB  1077MB  primary   reiserfs     boot
+2       1078MB  2155MB  1078MB  primary   linux-swap
+3       2155MB  122935MB 120780MB extended
+5       2155MB  7452MB  5297MB  logical   reiserfs
+@end group
+@end example
+
+@end deffn
+
+@node Related information
+@chapter Related information
+@cindex further reading
+@cindex related documentation
+
+If you want to find out more information, please see the GNU Parted web site.
+
+These files in the Parted distribution contain further information:
+
+@itemize @bullet
+
+@item @kbd{ABOUT-NLS} - information about using Native Language Support, and the Free Translation Project.
+
+@item @kbd{AUTHORS} - who wrote what.
+
+@item @kbd{ChangeLog} - record of changes made to Parted.
+
+@item @kbd{COPYING} - the GNU General Public License, the terms under which GNU Parted may be distributed.
+
+@item @kbd{COPYING.DOC} - the GNU Free Documentation Licence, the term under
+which Parted's documentation may be distributed.
+
+@item @kbd{INSTALL} --- how to compile and install Parted, and most other free
+software
+
+@end itemize
+
+@node Copying This Manual
+@appendix Copying This Manual
+
+@menu
+* GNU Free Documentation License::  License for copying this manual
+@end menu
+
+@include fdl.texi
+
+@node History
+@appendix This manual's history
+@cindex  history of this manual
+
+This manual was based on the file @kbd{USER} included in GNU Parted version
+1.4.22 source distribution.  The GNU Parted source distribution is
+available at @uref{ftp.gnu.org/gnu/parted}.
+
+Initial Texinfo formatting by Richard M. Kreuter, 2002.
+
+Maintainance by Andrew Clausen from 2002 to 2005 and by Leslie P. Polzer
+from July 2005 onwards.
+
+This manual is distributed under the GNU Free Documentation License,
+version 1.1 or later, at your discretion, any later version published
+by the Free Software Foundation; with no Invariant Sections, with no
+Front-Cover Texts, and with no Back-Cover Texts.  @xref{Copying
+This Manual}, for details.
+
+@node Concept index
+@unnumbered Index
+@printindex cp
+
+@bye
+
+@ignore
+
+Notes by RMK:
+Notes on possible (unimplemented!) modifications:
+
+The output samples from parted's print command, fdisk's p command, etc.,
+might be made into tables (multi-column tables) to ensure spiffy formatting.
+
+I'd like to find a way to make *entry: see *synonym type references in
+the index, so, e.g., to refer people looking for Apple to Macintosh, and
+PowerPC to Macintosh, etc.  Probably texinfo does this already; I dunno.
+
+Notes by Leslie:
+
+TODO:
+     - add "version" command.
+     - read through and correct.
+     - role of FreeDOS?
+
+@end ignore
diff --git a/doc/po4a.mk b/doc/po4a.mk
new file mode 100644 (file)
index 0000000..1123c91
--- /dev/null
@@ -0,0 +1,91 @@
+#
+# You must set the $(lang) variable when you include this makefile.
+#
+# You can use the $(po4a_translate_options) variable to specify additional
+# options to po4a.
+# For example: po4a_translate_options=-L KOI8-R -A KOI8-R
+#
+#
+# This makefile deals with the manpages generated from POs with po4a, and
+# should be included in an automake Makefile.am.
+#
+# The po must be named:
+#   <man>.$(lang).po
+# If a man page require an addendum, you must name it:
+#   <man>.$(lang).po.addendum
+# Where <man> corresponds to a filename in the C directory (which contains
+# the English man pages).
+#
+# The POs suffix is $(lang).po to allow dl10n to detect the outdated POs.
+#
+#
+# If a man page cannot be generated (it is not sufficiently translated; the
+# threshold is 80%), it won't be distributed, and the build won't fail.
+#
+
+mandir = @mandir@/$(lang)
+
+# Inform automake that we want to install some man pages in section 1, 5
+# and 8.
+# We can't simply use:
+# dist_man_MANS = $(wildcard *.[1-9])
+# Because when Makefile.in is generated, dist_man_MANS is empty, and
+# automake do not generate the install-man targets.
+dist_man_MANS =
+
+# Override the automake's install-man target.
+# And set dist_man_MANS according to the pages that could be generated
+# when this target is called.
+install-man: dist_man_MANS = pt_BR-parted.8
+install-man: install-man1 install-man5 install-man8
+
+# For each .po, try to generate the man page
+all-local:
+       for po in `ls -1 $(srcdir)/*.$(lang).po 2>/dev/null`; do \
+               $(MAKE) $$(basename $${po%.$(lang).po}); \
+       done
+
+# Remove the man pages that were generated from a .po
+clean-local:
+       for po in `ls -1 $(srcdir)/*.$(lang).po 2>/dev/null`; do \
+               rm -f $$(basename $${po%.$(lang).po}); \
+       done
+
+.PHONY: updatepo
+# Update the PO in srcdir, according to the POT in C.
+# Based on the gettext po/Makefile.in.in
+updatepo:
+       tmpdir=`pwd`; \
+       cd $(srcdir); \
+       for po in *.$(lang).po; do \
+         case "$$po" in '*'*) continue;; esac; \
+         pot=../C/po/$${po%$(lang).po}pot; \
+         echo "$(MSGMERGE) $$po $$pot -o $${po%po}new.po"; \
+         if $(MSGMERGE) $$po $$pot -o $$tmpdir/$${po%po}new.po; then \
+           if cmp $$po $$tmpdir/$${po%po}new.po >/dev/null 2>&1; then \
+             rm -f $$tmpdir/$${po%po}new.po; \
+           else \
+             if mv -f $$tmpdir/$${po%po}new.po $$po; then \
+               :; \
+             else \
+               echo "msgmerge for $$po failed: cannot move $$tmpdir/$${po%po}new.po to $$po" 1>&2; \
+               exit 1; \
+             fi; \
+           fi; \
+         else \
+           echo "msgmerge for $$po failed!" 1>&2; \
+           rm -f $$tmpdir/$${po%po}new.po; \
+         fi; \
+         msgfmt -o /dev/null --statistics $$po; \
+       done
+
+dist-hook: updatepo
+
+# Build the pages
+partprobe.8:
+       for locale in pt_BR ; do \
+               po4a-translate -f man -m $(srcdir)/../C/$@ -p $@.$$locale.po -l $@ $(po4a_translate_options) ; \
+               if [ -f $(srcdir)/$@.$$locale.po.addendum ]; then \
+                       po4a-translate -f man -m $(srcdir)/../C/$@ -p $@.$$locale.po -l $@ -a $(srcdir)/$@.$$locale.po.addendum $(po4a_translate_options) ; \
+               fi ; \
+       done
diff --git a/doc/pt_BR/Makefile.am b/doc/pt_BR/Makefile.am
new file mode 100644 (file)
index 0000000..d478773
--- /dev/null
@@ -0,0 +1,7 @@
+## Process this file with automake to produce Makefile.in
+
+lang=pt_BR
+
+include ../po4a.mk
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/doc/pt_BR/Makefile.in b/doc/pt_BR/Makefile.in
new file mode 100644 (file)
index 0000000..6b5a9fc
--- /dev/null
@@ -0,0 +1,1217 @@
+# Makefile.in generated by automake 1.11a from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in 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.
+
+@SET_MAKE@
+
+#
+# You must set the $(lang) variable when you include this makefile.
+#
+# You can use the $(po4a_translate_options) variable to specify additional
+# options to po4a.
+# For example: po4a_translate_options=-L KOI8-R -A KOI8-R
+#
+#
+# This makefile deals with the manpages generated from POs with po4a, and
+# should be included in an automake Makefile.am.
+#
+# The po must be named:
+#   <man>.$(lang).po
+# If a man page require an addendum, you must name it:
+#   <man>.$(lang).po.addendum
+# Where <man> corresponds to a filename in the C directory (which contains
+# the English man pages).
+#
+# The POs suffix is $(lang).po to allow dl10n to detect the outdated POs.
+#
+#
+# If a man page cannot be generated (it is not sufficiently translated; the
+# threshold is 80%), it won't be distributed, and the build won't fail.
+#
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+DIST_COMMON = $(dist_man_MANS) $(srcdir)/../po4a.mk \
+       $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+subdir = doc/pt_BR
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+       $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argmatch.m4 \
+       $(top_srcdir)/m4/assert.m4 $(top_srcdir)/m4/btowc.m4 \
+       $(top_srcdir)/m4/calloc.m4 $(top_srcdir)/m4/canonicalize.m4 \
+       $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
+       $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/configmake.m4 \
+       $(top_srcdir)/m4/dirname.m4 \
+       $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+       $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/environ.m4 \
+       $(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
+       $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fclose.m4 \
+       $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/fcntl_h.m4 \
+       $(top_srcdir)/m4/fflush.m4 $(top_srcdir)/m4/fpending.m4 \
+       $(top_srcdir)/m4/fpurge.m4 $(top_srcdir)/m4/freading.m4 \
+       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/fsync.m4 \
+       $(top_srcdir)/m4/ftell.m4 $(top_srcdir)/m4/ftello.m4 \
+       $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
+       $(top_srcdir)/m4/langinfo_h.m4 $(top_srcdir)/m4/lcmessage.m4 \
+       $(top_srcdir)/m4/lib-ignore.m4 $(top_srcdir)/m4/lib-ld.m4 \
+       $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/localcharset.m4 \
+       $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \
+       $(top_srcdir)/m4/locale-tr.m4 $(top_srcdir)/m4/locale-zh.m4 \
+       $(top_srcdir)/m4/locale_h.m4 $(top_srcdir)/m4/localename.m4 \
+       $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/long-options.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
+       $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+       $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
+       $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+       $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbtowc.m4 \
+       $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+       $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/multiarch.m4 \
+       $(top_srcdir)/m4/nl_langinfo.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/nocrash.m4 $(top_srcdir)/m4/o-direct.m4 \
+       $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/priv-set.m4 \
+       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+       $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+       $(top_srcdir)/m4/read.m4 $(top_srcdir)/m4/readlink.m4 \
+       $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/regex.m4 \
+       $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+       $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/setlocale.m4 \
+       $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/ssize_t.m4 \
+       $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdarg.m4 \
+       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strdup.m4 \
+       $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/strerror_r.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+       $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtoll.m4 \
+       $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/symlink.m4 \
+       $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+       $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/thread.m4 \
+       $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/time_h.m4 \
+       $(top_srcdir)/m4/ungetc.m4 $(top_srcdir)/m4/unistd_h.m4 \
+       $(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkdir.m4 \
+       $(top_srcdir)/m4/usleep.m4 $(top_srcdir)/m4/version-etc.m4 \
+       $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \
+       $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
+       $(top_srcdir)/m4/wcrtomb.m4 $(top_srcdir)/m4/wctob.m4 \
+       $(top_srcdir)/m4/wctomb.m4 $(top_srcdir)/m4/wctype_h.m4 \
+       $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+       $(top_srcdir)/m4/xstrndup.m4 $(top_srcdir)/m4/xstrtol.m4 \
+       $(top_srcdir)/m4/yield.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+pkglibexecdir = @pkglibexecdir@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+BUILDINFO = @BUILDINFO@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHECK_CFLAGS = @CHECK_CFLAGS@
+CHECK_LIBS = @CHECK_LIBS@
+CONFIG_INCLUDE = @CONFIG_INCLUDE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DYNAMIC_LOADING = @DYNAMIC_LOADING@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENABLE_DEVICE_MAPPER = @ENABLE_DEVICE_MAPPER@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FACCESSAT = @GNULIB_FACCESSAT@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCHMODAT = @GNULIB_FCHMODAT@
+GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FCNTL = @GNULIB_FCNTL@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FGETC = @GNULIB_FGETC@
+GNULIB_FGETS = @GNULIB_FGETS@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREAD = @GNULIB_FREAD@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSCANF = @GNULIB_FSCANF@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSTATAT = @GNULIB_FSTATAT@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FUTIMENS = @GNULIB_FUTIMENS@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETC = @GNULIB_GETC@
+GNULIB_GETCHAR = @GNULIB_GETCHAR@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETGROUPS = @GNULIB_GETGROUPS@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETS = @GNULIB_GETS@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
+GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_ISWBLANK = @GNULIB_ISWBLANK@
+GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@
+GNULIB_LCHMOD = @GNULIB_LCHMOD@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LINKAT = @GNULIB_LINKAT@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_LSTAT = @GNULIB_LSTAT@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MBTOWC = @GNULIB_MBTOWC@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDIRAT = @GNULIB_MKDIRAT@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKFIFO = @GNULIB_MKFIFO@
+GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@
+GNULIB_MKNOD = @GNULIB_MKNOD@
+GNULIB_MKNODAT = @GNULIB_MKNODAT@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@
+GNULIB_MKTIME = @GNULIB_MKTIME@
+GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@
+GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@
+GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_OPEN = @GNULIB_OPEN@
+GNULIB_OPENAT = @GNULIB_OPENAT@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE = @GNULIB_PIPE@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_PREAD = @GNULIB_PREAD@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READ = @GNULIB_READ@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_READLINKAT = @GNULIB_READLINKAT@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_REALPATH = @GNULIB_REALPATH@
+GNULIB_REMOVE = @GNULIB_REMOVE@
+GNULIB_RENAME = @GNULIB_RENAME@
+GNULIB_RENAMEAT = @GNULIB_RENAMEAT@
+GNULIB_RMDIR = @GNULIB_RMDIR@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SETLOCALE = @GNULIB_SETLOCALE@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STAT = @GNULIB_STAT@
+GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRERROR_R = @GNULIB_STRERROR_R@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRPTIME = @GNULIB_STRPTIME@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_SYMLINK = @GNULIB_SYMLINK@
+GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
+GNULIB_TIMEGM = @GNULIB_TIMEGM@
+GNULIB_TIME_R = @GNULIB_TIME_R@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
+GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
+GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNLINK = @GNULIB_UNLINK@
+GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_USLEEP = @GNULIB_USLEEP@
+GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VFSCANF = @GNULIB_VFSCANF@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSCANF = @GNULIB_VSCANF@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCPCPY = @GNULIB_WCPCPY@
+GNULIB_WCPNCPY = @GNULIB_WCPNCPY@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@
+GNULIB_WCSCAT = @GNULIB_WCSCAT@
+GNULIB_WCSCHR = @GNULIB_WCSCHR@
+GNULIB_WCSCMP = @GNULIB_WCSCMP@
+GNULIB_WCSCOLL = @GNULIB_WCSCOLL@
+GNULIB_WCSCPY = @GNULIB_WCSCPY@
+GNULIB_WCSCSPN = @GNULIB_WCSCSPN@
+GNULIB_WCSDUP = @GNULIB_WCSDUP@
+GNULIB_WCSLEN = @GNULIB_WCSLEN@
+GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@
+GNULIB_WCSNCAT = @GNULIB_WCSNCAT@
+GNULIB_WCSNCMP = @GNULIB_WCSNCMP@
+GNULIB_WCSNCPY = @GNULIB_WCSNCPY@
+GNULIB_WCSNLEN = @GNULIB_WCSNLEN@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSPBRK = @GNULIB_WCSPBRK@
+GNULIB_WCSRCHR = @GNULIB_WCSRCHR@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCSSPN = @GNULIB_WCSSPN@
+GNULIB_WCSSTR = @GNULIB_WCSSTR@
+GNULIB_WCSTOK = @GNULIB_WCSTOK@
+GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@
+GNULIB_WCSXFRM = @GNULIB_WCSXFRM@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCTOMB = @GNULIB_WCTOMB@
+GNULIB_WCTRANS = @GNULIB_WCTRANS@
+GNULIB_WCTYPE = @GNULIB_WCTYPE@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WMEMCHR = @GNULIB_WMEMCHR@
+GNULIB_WMEMCMP = @GNULIB_WMEMCMP@
+GNULIB_WMEMCPY = @GNULIB_WMEMCPY@
+GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@
+GNULIB_WMEMSET = @GNULIB_WMEMSET@
+GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
+HAVE_CHOWN = @HAVE_CHOWN@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@
+HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SETENV = @HAVE_DECL_SETENV@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@
+HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_DUPLOCALE = @HAVE_DUPLOCALE@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
+HAVE_FCHMODAT = @HAVE_FCHMODAT@
+HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
+HAVE_FCNTL = @HAVE_FCNTL@
+HAVE_FEATURES_H = @HAVE_FEATURES_H@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSTATAT = @HAVE_FSTATAT@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_FUTIMENS = @HAVE_FUTIMENS@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETGROUPS = @HAVE_GETGROUPS@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETLOGIN = @HAVE_GETLOGIN@
+HAVE_GETOPT_H = @HAVE_GETOPT_H@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
+HAVE_GRANTPT = @HAVE_GRANTPT@
+HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWBLANK = @HAVE_ISWBLANK@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
+HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
+HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
+HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
+HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
+HAVE_LCHMOD = @HAVE_LCHMOD@
+HAVE_LCHOWN = @HAVE_LCHOWN@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_LSTAT = @HAVE_LSTAT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSLEN = @HAVE_MBSLEN@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMCHR = @HAVE_MEMCHR@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDIRAT = @HAVE_MKDIRAT@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKFIFO = @HAVE_MKFIFO@
+HAVE_MKFIFOAT = @HAVE_MKFIFOAT@
+HAVE_MKNOD = @HAVE_MKNOD@
+HAVE_MKNODAT = @HAVE_MKNODAT@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
+HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
+HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
+HAVE_OPENAT = @HAVE_OPENAT@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PIPE = @HAVE_PIPE@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PWRITE = @HAVE_PWRITE@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_READLINKAT = @HAVE_READLINKAT@
+HAVE_REALPATH = @HAVE_REALPATH@
+HAVE_RENAMEAT = @HAVE_RENAMEAT@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRPTIME = @HAVE_STRPTIME@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYMLINK = @HAVE_SYMLINK@
+HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_TIMEGM = @HAVE_TIMEGM@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_USLEEP = @HAVE_USLEEP@
+HAVE_UTIMENSAT = @HAVE_UTIMENSAT@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCPCPY = @HAVE_WCPCPY@
+HAVE_WCPNCPY = @HAVE_WCPNCPY@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSCASECMP = @HAVE_WCSCASECMP@
+HAVE_WCSCAT = @HAVE_WCSCAT@
+HAVE_WCSCHR = @HAVE_WCSCHR@
+HAVE_WCSCMP = @HAVE_WCSCMP@
+HAVE_WCSCOLL = @HAVE_WCSCOLL@
+HAVE_WCSCPY = @HAVE_WCSCPY@
+HAVE_WCSCSPN = @HAVE_WCSCSPN@
+HAVE_WCSDUP = @HAVE_WCSDUP@
+HAVE_WCSLEN = @HAVE_WCSLEN@
+HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@
+HAVE_WCSNCAT = @HAVE_WCSNCAT@
+HAVE_WCSNCMP = @HAVE_WCSNCMP@
+HAVE_WCSNCPY = @HAVE_WCSNCPY@
+HAVE_WCSNLEN = @HAVE_WCSNLEN@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSPBRK = @HAVE_WCSPBRK@
+HAVE_WCSRCHR = @HAVE_WCSRCHR@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCSSPN = @HAVE_WCSSPN@
+HAVE_WCSSTR = @HAVE_WCSSTR@
+HAVE_WCSTOK = @HAVE_WCSTOK@
+HAVE_WCSWIDTH = @HAVE_WCSWIDTH@
+HAVE_WCSXFRM = @HAVE_WCSXFRM@
+HAVE_WCTRANS_T = @HAVE_WCTRANS_T@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WCTYPE_T = @HAVE_WCTYPE_T@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WMEMCHR = @HAVE_WMEMCHR@
+HAVE_WMEMCMP = @HAVE_WMEMCMP@
+HAVE_WMEMCPY = @HAVE_WMEMCPY@
+HAVE_WMEMMOVE = @HAVE_WMEMMOVE@
+HAVE_WMEMSET = @HAVE_WMEMSET@
+HAVE_XLOCALE_H = @HAVE_XLOCALE_H@
+HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
+IGNORE_UNUSED_LIBRARIES_CFLAGS = @IGNORE_UNUSED_LIBRARIES_CFLAGS@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@
+INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMULTITHREAD = @LIBMULTITHREAD@
+LIBOBJS = @LIBOBJS@
+LIBPTH = @LIBPTH@
+LIBPTH_PREFIX = @LIBPTH_PREFIX@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTHREAD = @LIBTHREAD@
+LIBTOOL = @LIBTOOL@
+LIB_BLKID = @LIB_BLKID@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBMULTITHREAD = @LTLIBMULTITHREAD@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBPTH = @LTLIBPTH@
+LTLIBTHREAD = @LTLIBTHREAD@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
+NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@
+NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
+NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@
+NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FCNTL_H = @NEXT_FCNTL_H@
+NEXT_GETOPT_H = @NEXT_GETOPT_H@
+NEXT_INTTYPES_H = @NEXT_INTTYPES_H@
+NEXT_LANGINFO_H = @NEXT_LANGINFO_H@
+NEXT_LOCALE_H = @NEXT_LOCALE_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@
+NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@
+NEXT_TIME_H = @NEXT_TIME_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PARTED_USABLE_TEST_DIR = @PARTED_USABLE_TEST_DIR@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CALLOC = @REPLACE_CALLOC@
+REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP = @REPLACE_DUP@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@
+REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FCNTL = @REPLACE_FCNTL@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FSTAT = @REPLACE_FSTAT@
+REPLACE_FSTATAT = @REPLACE_FSTATAT@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_FUTIMENS = @REPLACE_FUTIMENS@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETDELIM = @REPLACE_GETDELIM@
+REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@
+REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LINK = @REPLACE_LINK@
+REPLACE_LINKAT = @REPLACE_LINKAT@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_LSTAT = @REPLACE_LSTAT@
+REPLACE_MALLOC = @REPLACE_MALLOC@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MBTOWC = @REPLACE_MBTOWC@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKDIR = @REPLACE_MKDIR@
+REPLACE_MKFIFO = @REPLACE_MKFIFO@
+REPLACE_MKNOD = @REPLACE_MKNOD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_MKTIME = @REPLACE_MKTIME@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_OPEN = @REPLACE_OPEN@
+REPLACE_OPENAT = @REPLACE_OPENAT@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PREAD = @REPLACE_PREAD@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
+REPLACE_READ = @REPLACE_READ@
+REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_REALLOC = @REPLACE_REALLOC@
+REPLACE_REALPATH = @REPLACE_REALPATH@
+REPLACE_REMOVE = @REPLACE_REMOVE@
+REPLACE_RENAME = @REPLACE_RENAME@
+REPLACE_RENAMEAT = @REPLACE_RENAMEAT@
+REPLACE_RMDIR = @REPLACE_RMDIR@
+REPLACE_SETENV = @REPLACE_SETENV@
+REPLACE_SETLOCALE = @REPLACE_SETLOCALE@
+REPLACE_SLEEP = @REPLACE_SLEEP@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STAT = @REPLACE_STAT@
+REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRERROR_R = @REPLACE_STRERROR_R@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
+REPLACE_STRNDUP = @REPLACE_STRNDUP@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
+REPLACE_SYMLINK = @REPLACE_SYMLINK@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
+REPLACE_UNLINK = @REPLACE_UNLINK@
+REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
+REPLACE_UNSETENV = @REPLACE_UNSETENV@
+REPLACE_USLEEP = @REPLACE_USLEEP@
+REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCTOMB = @REPLACE_WCTOMB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SELINUX_LIBS = @SELINUX_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
+UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
+UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+YIELD_LIB = @YIELD_LIB@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@/$(lang)
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+lang = pt_BR
+
+# Inform automake that we want to install some man pages in section 1, 5
+# and 8.
+# We can't simply use:
+# dist_man_MANS = $(wildcard *.[1-9])
+# Because when Makefile.in is generated, dist_man_MANS is empty, and
+# automake do not generate the install-man targets.
+dist_man_MANS = 
+MAINTAINERCLEANFILES = Makefile.in
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(srcdir)/../po4a.mk $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/pt_BR/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu doc/pt_BR/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+       $(MAKE) $(AM_MAKEFLAGS) \
+         top_distdir="$(top_distdir)" distdir="$(distdir)" \
+         dist-hook
+check-am: all-am
+check: check-am
+all-am: Makefile all-local
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-local mostlyclean-am
+
+distclean: distclean-am
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am all-local check check-am clean clean-generic \
+       clean-libtool clean-local dist-hook distclean \
+       distclean-generic distclean-libtool distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+
+
+# Override the automake's install-man target.
+# And set dist_man_MANS according to the pages that could be generated
+# when this target is called.
+install-man: dist_man_MANS = pt_BR-parted.8
+install-man: install-man1 install-man5 install-man8
+
+# For each .po, try to generate the man page
+all-local:
+       for po in `ls -1 $(srcdir)/*.$(lang).po 2>/dev/null`; do \
+               $(MAKE) $$(basename $${po%.$(lang).po}); \
+       done
+
+# Remove the man pages that were generated from a .po
+clean-local:
+       for po in `ls -1 $(srcdir)/*.$(lang).po 2>/dev/null`; do \
+               rm -f $$(basename $${po%.$(lang).po}); \
+       done
+
+.PHONY: updatepo
+# Update the PO in srcdir, according to the POT in C.
+# Based on the gettext po/Makefile.in.in
+updatepo:
+       tmpdir=`pwd`; \
+       cd $(srcdir); \
+       for po in *.$(lang).po; do \
+         case "$$po" in '*'*) continue;; esac; \
+         pot=../C/po/$${po%$(lang).po}pot; \
+         echo "$(MSGMERGE) $$po $$pot -o $${po%po}new.po"; \
+         if $(MSGMERGE) $$po $$pot -o $$tmpdir/$${po%po}new.po; then \
+           if cmp $$po $$tmpdir/$${po%po}new.po >/dev/null 2>&1; then \
+             rm -f $$tmpdir/$${po%po}new.po; \
+           else \
+             if mv -f $$tmpdir/$${po%po}new.po $$po; then \
+               :; \
+             else \
+               echo "msgmerge for $$po failed: cannot move $$tmpdir/$${po%po}new.po to $$po" 1>&2; \
+               exit 1; \
+             fi; \
+           fi; \
+         else \
+           echo "msgmerge for $$po failed!" 1>&2; \
+           rm -f $$tmpdir/$${po%po}new.po; \
+         fi; \
+         msgfmt -o /dev/null --statistics $$po; \
+       done
+
+dist-hook: updatepo
+
+# Build the pages
+partprobe.8:
+       for locale in pt_BR ; do \
+               po4a-translate -f man -m $(srcdir)/../C/$@ -p $@.$$locale.po -l $@ $(po4a_translate_options) ; \
+               if [ -f $(srcdir)/$@.$$locale.po.addendum ]; then \
+                       po4a-translate -f man -m $(srcdir)/../C/$@ -p $@.$$locale.po -l $@ -a $(srcdir)/$@.$$locale.po.addendum $(po4a_translate_options) ; \
+               fi ; \
+       done
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/doc/stamp-vti b/doc/stamp-vti
new file mode 100644 (file)
index 0000000..76f1867
--- /dev/null
@@ -0,0 +1,4 @@
+@set UPDATED 27 May 2011
+@set UPDATED-MONTH May 2011
+@set EDITION 3.0
+@set VERSION 3.0
diff --git a/doc/version.texi b/doc/version.texi
new file mode 100644 (file)
index 0000000..76f1867
--- /dev/null
@@ -0,0 +1,4 @@
+@set UPDATED 27 May 2011
+@set UPDATED-MONTH May 2011
+@set EDITION 3.0
+@set VERSION 3.0
diff --git a/include/Makefile.am b/include/Makefile.am
new file mode 100644 (file)
index 0000000..c5579ae
--- /dev/null
@@ -0,0 +1,3 @@
+SUBDIRS = parted
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/include/Makefile.in b/include/Makefile.in
new file mode 100644 (file)
index 0000000..abeb849
--- /dev/null
@@ -0,0 +1,1343 @@
+# Makefile.in generated by automake 1.11a from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in 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.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = include
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+       $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argmatch.m4 \
+       $(top_srcdir)/m4/assert.m4 $(top_srcdir)/m4/btowc.m4 \
+       $(top_srcdir)/m4/calloc.m4 $(top_srcdir)/m4/canonicalize.m4 \
+       $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
+       $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/configmake.m4 \
+       $(top_srcdir)/m4/dirname.m4 \
+       $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+       $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/environ.m4 \
+       $(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
+       $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fclose.m4 \
+       $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/fcntl_h.m4 \
+       $(top_srcdir)/m4/fflush.m4 $(top_srcdir)/m4/fpending.m4 \
+       $(top_srcdir)/m4/fpurge.m4 $(top_srcdir)/m4/freading.m4 \
+       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/fsync.m4 \
+       $(top_srcdir)/m4/ftell.m4 $(top_srcdir)/m4/ftello.m4 \
+       $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
+       $(top_srcdir)/m4/langinfo_h.m4 $(top_srcdir)/m4/lcmessage.m4 \
+       $(top_srcdir)/m4/lib-ignore.m4 $(top_srcdir)/m4/lib-ld.m4 \
+       $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/localcharset.m4 \
+       $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \
+       $(top_srcdir)/m4/locale-tr.m4 $(top_srcdir)/m4/locale-zh.m4 \
+       $(top_srcdir)/m4/locale_h.m4 $(top_srcdir)/m4/localename.m4 \
+       $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/long-options.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
+       $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+       $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
+       $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+       $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbtowc.m4 \
+       $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+       $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/multiarch.m4 \
+       $(top_srcdir)/m4/nl_langinfo.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/nocrash.m4 $(top_srcdir)/m4/o-direct.m4 \
+       $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/priv-set.m4 \
+       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+       $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+       $(top_srcdir)/m4/read.m4 $(top_srcdir)/m4/readlink.m4 \
+       $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/regex.m4 \
+       $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+       $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/setlocale.m4 \
+       $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/ssize_t.m4 \
+       $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdarg.m4 \
+       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strdup.m4 \
+       $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/strerror_r.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+       $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtoll.m4 \
+       $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/symlink.m4 \
+       $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+       $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/thread.m4 \
+       $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/time_h.m4 \
+       $(top_srcdir)/m4/ungetc.m4 $(top_srcdir)/m4/unistd_h.m4 \
+       $(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkdir.m4 \
+       $(top_srcdir)/m4/usleep.m4 $(top_srcdir)/m4/version-etc.m4 \
+       $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \
+       $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
+       $(top_srcdir)/m4/wcrtomb.m4 $(top_srcdir)/m4/wctob.m4 \
+       $(top_srcdir)/m4/wctomb.m4 $(top_srcdir)/m4/wctype_h.m4 \
+       $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+       $(top_srcdir)/m4/xstrndup.m4 $(top_srcdir)/m4/xstrtol.m4 \
+       $(top_srcdir)/m4/yield.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+       html-recursive info-recursive install-data-recursive \
+       install-dvi-recursive install-exec-recursive \
+       install-html-recursive install-info-recursive \
+       install-pdf-recursive install-ps-recursive install-recursive \
+       installcheck-recursive installdirs-recursive pdf-recursive \
+       ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
+  distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+       $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+       distdir
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+pkglibexecdir = @pkglibexecdir@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+BUILDINFO = @BUILDINFO@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHECK_CFLAGS = @CHECK_CFLAGS@
+CHECK_LIBS = @CHECK_LIBS@
+CONFIG_INCLUDE = @CONFIG_INCLUDE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DYNAMIC_LOADING = @DYNAMIC_LOADING@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENABLE_DEVICE_MAPPER = @ENABLE_DEVICE_MAPPER@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FACCESSAT = @GNULIB_FACCESSAT@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCHMODAT = @GNULIB_FCHMODAT@
+GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FCNTL = @GNULIB_FCNTL@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FGETC = @GNULIB_FGETC@
+GNULIB_FGETS = @GNULIB_FGETS@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREAD = @GNULIB_FREAD@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSCANF = @GNULIB_FSCANF@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSTATAT = @GNULIB_FSTATAT@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FUTIMENS = @GNULIB_FUTIMENS@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETC = @GNULIB_GETC@
+GNULIB_GETCHAR = @GNULIB_GETCHAR@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETGROUPS = @GNULIB_GETGROUPS@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETS = @GNULIB_GETS@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
+GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_ISWBLANK = @GNULIB_ISWBLANK@
+GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@
+GNULIB_LCHMOD = @GNULIB_LCHMOD@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LINKAT = @GNULIB_LINKAT@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_LSTAT = @GNULIB_LSTAT@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MBTOWC = @GNULIB_MBTOWC@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDIRAT = @GNULIB_MKDIRAT@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKFIFO = @GNULIB_MKFIFO@
+GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@
+GNULIB_MKNOD = @GNULIB_MKNOD@
+GNULIB_MKNODAT = @GNULIB_MKNODAT@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@
+GNULIB_MKTIME = @GNULIB_MKTIME@
+GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@
+GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@
+GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_OPEN = @GNULIB_OPEN@
+GNULIB_OPENAT = @GNULIB_OPENAT@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE = @GNULIB_PIPE@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_PREAD = @GNULIB_PREAD@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READ = @GNULIB_READ@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_READLINKAT = @GNULIB_READLINKAT@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_REALPATH = @GNULIB_REALPATH@
+GNULIB_REMOVE = @GNULIB_REMOVE@
+GNULIB_RENAME = @GNULIB_RENAME@
+GNULIB_RENAMEAT = @GNULIB_RENAMEAT@
+GNULIB_RMDIR = @GNULIB_RMDIR@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SETLOCALE = @GNULIB_SETLOCALE@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STAT = @GNULIB_STAT@
+GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRERROR_R = @GNULIB_STRERROR_R@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRPTIME = @GNULIB_STRPTIME@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_SYMLINK = @GNULIB_SYMLINK@
+GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
+GNULIB_TIMEGM = @GNULIB_TIMEGM@
+GNULIB_TIME_R = @GNULIB_TIME_R@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
+GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
+GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNLINK = @GNULIB_UNLINK@
+GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_USLEEP = @GNULIB_USLEEP@
+GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VFSCANF = @GNULIB_VFSCANF@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSCANF = @GNULIB_VSCANF@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCPCPY = @GNULIB_WCPCPY@
+GNULIB_WCPNCPY = @GNULIB_WCPNCPY@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@
+GNULIB_WCSCAT = @GNULIB_WCSCAT@
+GNULIB_WCSCHR = @GNULIB_WCSCHR@
+GNULIB_WCSCMP = @GNULIB_WCSCMP@
+GNULIB_WCSCOLL = @GNULIB_WCSCOLL@
+GNULIB_WCSCPY = @GNULIB_WCSCPY@
+GNULIB_WCSCSPN = @GNULIB_WCSCSPN@
+GNULIB_WCSDUP = @GNULIB_WCSDUP@
+GNULIB_WCSLEN = @GNULIB_WCSLEN@
+GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@
+GNULIB_WCSNCAT = @GNULIB_WCSNCAT@
+GNULIB_WCSNCMP = @GNULIB_WCSNCMP@
+GNULIB_WCSNCPY = @GNULIB_WCSNCPY@
+GNULIB_WCSNLEN = @GNULIB_WCSNLEN@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSPBRK = @GNULIB_WCSPBRK@
+GNULIB_WCSRCHR = @GNULIB_WCSRCHR@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCSSPN = @GNULIB_WCSSPN@
+GNULIB_WCSSTR = @GNULIB_WCSSTR@
+GNULIB_WCSTOK = @GNULIB_WCSTOK@
+GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@
+GNULIB_WCSXFRM = @GNULIB_WCSXFRM@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCTOMB = @GNULIB_WCTOMB@
+GNULIB_WCTRANS = @GNULIB_WCTRANS@
+GNULIB_WCTYPE = @GNULIB_WCTYPE@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WMEMCHR = @GNULIB_WMEMCHR@
+GNULIB_WMEMCMP = @GNULIB_WMEMCMP@
+GNULIB_WMEMCPY = @GNULIB_WMEMCPY@
+GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@
+GNULIB_WMEMSET = @GNULIB_WMEMSET@
+GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
+HAVE_CHOWN = @HAVE_CHOWN@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@
+HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SETENV = @HAVE_DECL_SETENV@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@
+HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_DUPLOCALE = @HAVE_DUPLOCALE@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
+HAVE_FCHMODAT = @HAVE_FCHMODAT@
+HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
+HAVE_FCNTL = @HAVE_FCNTL@
+HAVE_FEATURES_H = @HAVE_FEATURES_H@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSTATAT = @HAVE_FSTATAT@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_FUTIMENS = @HAVE_FUTIMENS@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETGROUPS = @HAVE_GETGROUPS@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETLOGIN = @HAVE_GETLOGIN@
+HAVE_GETOPT_H = @HAVE_GETOPT_H@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
+HAVE_GRANTPT = @HAVE_GRANTPT@
+HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWBLANK = @HAVE_ISWBLANK@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
+HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
+HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
+HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
+HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
+HAVE_LCHMOD = @HAVE_LCHMOD@
+HAVE_LCHOWN = @HAVE_LCHOWN@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_LSTAT = @HAVE_LSTAT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSLEN = @HAVE_MBSLEN@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMCHR = @HAVE_MEMCHR@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDIRAT = @HAVE_MKDIRAT@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKFIFO = @HAVE_MKFIFO@
+HAVE_MKFIFOAT = @HAVE_MKFIFOAT@
+HAVE_MKNOD = @HAVE_MKNOD@
+HAVE_MKNODAT = @HAVE_MKNODAT@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
+HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
+HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
+HAVE_OPENAT = @HAVE_OPENAT@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PIPE = @HAVE_PIPE@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PWRITE = @HAVE_PWRITE@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_READLINKAT = @HAVE_READLINKAT@
+HAVE_REALPATH = @HAVE_REALPATH@
+HAVE_RENAMEAT = @HAVE_RENAMEAT@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRPTIME = @HAVE_STRPTIME@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYMLINK = @HAVE_SYMLINK@
+HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_TIMEGM = @HAVE_TIMEGM@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_USLEEP = @HAVE_USLEEP@
+HAVE_UTIMENSAT = @HAVE_UTIMENSAT@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCPCPY = @HAVE_WCPCPY@
+HAVE_WCPNCPY = @HAVE_WCPNCPY@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSCASECMP = @HAVE_WCSCASECMP@
+HAVE_WCSCAT = @HAVE_WCSCAT@
+HAVE_WCSCHR = @HAVE_WCSCHR@
+HAVE_WCSCMP = @HAVE_WCSCMP@
+HAVE_WCSCOLL = @HAVE_WCSCOLL@
+HAVE_WCSCPY = @HAVE_WCSCPY@
+HAVE_WCSCSPN = @HAVE_WCSCSPN@
+HAVE_WCSDUP = @HAVE_WCSDUP@
+HAVE_WCSLEN = @HAVE_WCSLEN@
+HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@
+HAVE_WCSNCAT = @HAVE_WCSNCAT@
+HAVE_WCSNCMP = @HAVE_WCSNCMP@
+HAVE_WCSNCPY = @HAVE_WCSNCPY@
+HAVE_WCSNLEN = @HAVE_WCSNLEN@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSPBRK = @HAVE_WCSPBRK@
+HAVE_WCSRCHR = @HAVE_WCSRCHR@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCSSPN = @HAVE_WCSSPN@
+HAVE_WCSSTR = @HAVE_WCSSTR@
+HAVE_WCSTOK = @HAVE_WCSTOK@
+HAVE_WCSWIDTH = @HAVE_WCSWIDTH@
+HAVE_WCSXFRM = @HAVE_WCSXFRM@
+HAVE_WCTRANS_T = @HAVE_WCTRANS_T@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WCTYPE_T = @HAVE_WCTYPE_T@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WMEMCHR = @HAVE_WMEMCHR@
+HAVE_WMEMCMP = @HAVE_WMEMCMP@
+HAVE_WMEMCPY = @HAVE_WMEMCPY@
+HAVE_WMEMMOVE = @HAVE_WMEMMOVE@
+HAVE_WMEMSET = @HAVE_WMEMSET@
+HAVE_XLOCALE_H = @HAVE_XLOCALE_H@
+HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
+IGNORE_UNUSED_LIBRARIES_CFLAGS = @IGNORE_UNUSED_LIBRARIES_CFLAGS@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@
+INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMULTITHREAD = @LIBMULTITHREAD@
+LIBOBJS = @LIBOBJS@
+LIBPTH = @LIBPTH@
+LIBPTH_PREFIX = @LIBPTH_PREFIX@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTHREAD = @LIBTHREAD@
+LIBTOOL = @LIBTOOL@
+LIB_BLKID = @LIB_BLKID@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBMULTITHREAD = @LTLIBMULTITHREAD@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBPTH = @LTLIBPTH@
+LTLIBTHREAD = @LTLIBTHREAD@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
+NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@
+NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
+NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@
+NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FCNTL_H = @NEXT_FCNTL_H@
+NEXT_GETOPT_H = @NEXT_GETOPT_H@
+NEXT_INTTYPES_H = @NEXT_INTTYPES_H@
+NEXT_LANGINFO_H = @NEXT_LANGINFO_H@
+NEXT_LOCALE_H = @NEXT_LOCALE_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@
+NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@
+NEXT_TIME_H = @NEXT_TIME_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PARTED_USABLE_TEST_DIR = @PARTED_USABLE_TEST_DIR@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CALLOC = @REPLACE_CALLOC@
+REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP = @REPLACE_DUP@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@
+REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FCNTL = @REPLACE_FCNTL@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FSTAT = @REPLACE_FSTAT@
+REPLACE_FSTATAT = @REPLACE_FSTATAT@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_FUTIMENS = @REPLACE_FUTIMENS@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETDELIM = @REPLACE_GETDELIM@
+REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@
+REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LINK = @REPLACE_LINK@
+REPLACE_LINKAT = @REPLACE_LINKAT@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_LSTAT = @REPLACE_LSTAT@
+REPLACE_MALLOC = @REPLACE_MALLOC@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MBTOWC = @REPLACE_MBTOWC@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKDIR = @REPLACE_MKDIR@
+REPLACE_MKFIFO = @REPLACE_MKFIFO@
+REPLACE_MKNOD = @REPLACE_MKNOD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_MKTIME = @REPLACE_MKTIME@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_OPEN = @REPLACE_OPEN@
+REPLACE_OPENAT = @REPLACE_OPENAT@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PREAD = @REPLACE_PREAD@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
+REPLACE_READ = @REPLACE_READ@
+REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_REALLOC = @REPLACE_REALLOC@
+REPLACE_REALPATH = @REPLACE_REALPATH@
+REPLACE_REMOVE = @REPLACE_REMOVE@
+REPLACE_RENAME = @REPLACE_RENAME@
+REPLACE_RENAMEAT = @REPLACE_RENAMEAT@
+REPLACE_RMDIR = @REPLACE_RMDIR@
+REPLACE_SETENV = @REPLACE_SETENV@
+REPLACE_SETLOCALE = @REPLACE_SETLOCALE@
+REPLACE_SLEEP = @REPLACE_SLEEP@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STAT = @REPLACE_STAT@
+REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRERROR_R = @REPLACE_STRERROR_R@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
+REPLACE_STRNDUP = @REPLACE_STRNDUP@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
+REPLACE_SYMLINK = @REPLACE_SYMLINK@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
+REPLACE_UNLINK = @REPLACE_UNLINK@
+REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
+REPLACE_UNSETENV = @REPLACE_UNSETENV@
+REPLACE_USLEEP = @REPLACE_USLEEP@
+REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCTOMB = @REPLACE_WCTOMB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SELINUX_LIBS = @SELINUX_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
+UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
+UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+YIELD_LIB = @YIELD_LIB@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = parted
+MAINTAINERCLEANFILES = Makefile.in
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu include/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+       @fail= failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+       @fail= failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       rev=''; for subdir in $$list; do \
+         if test "$$subdir" = "."; then :; else \
+           rev="$$subdir $$rev"; \
+         fi; \
+       done; \
+       rev="$$rev ."; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+ctags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+       done
+cscopelist-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \
+       done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+         empty_fix=.; \
+       else \
+         include_option=--include; \
+         empty_fix=; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test ! -f $$subdir/TAGS || \
+             set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -d "$(distdir)/$$subdir" \
+           || $(MKDIR_P) "$(distdir)/$$subdir" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+           $(am__relativize); \
+           new_distdir=$$reldir; \
+           dir1=$$subdir; dir2="$(top_distdir)"; \
+           $(am__relativize); \
+           new_top_distdir=$$reldir; \
+           echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+           echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+           ($(am__cd) $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$$new_top_distdir" \
+               distdir="$$new_distdir" \
+               am__remove_distdir=: \
+               am__skip_length_check=: \
+               am__skip_mode_fix=: \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) \
+       cscopelist-recursive ctags-recursive install-am install-strip \
+       tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+       all all-am check check-am clean clean-generic clean-libtool \
+       cscopelist cscopelist-recursive ctags ctags-recursive \
+       distclean distclean-generic distclean-libtool distclean-tags \
+       distdir dvi dvi-am html html-am info info-am install \
+       install-am install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-ps install-ps-am \
+       install-strip installcheck installcheck-am installdirs \
+       installdirs-am maintainer-clean maintainer-clean-generic \
+       mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+       ps ps-am tags tags-recursive uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/include/parted/Makefile.am b/include/parted/Makefile.am
new file mode 100644 (file)
index 0000000..022373f
--- /dev/null
@@ -0,0 +1,25 @@
+if COMPILE_FOR_S390
+S390_HDRS = fdasd.h vtoc.h
+else
+S390_HDRS =
+endif
+
+partedincludedir      =        $(includedir)/parted
+
+partedinclude_HEADERS = constraint.h   \
+                       debug.h         \
+                       device.h        \
+                       disk.h          \
+                       exception.h     \
+                       filesys.h       \
+                       geom.h          \
+                       natmath.h       \
+                       timer.h         \
+                       unit.h          \
+                       parted.h
+
+noinst_HEADERS       = crc32.h         \
+                       endian.h        \
+                       $(S390_HDRS)
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/include/parted/Makefile.in b/include/parted/Makefile.in
new file mode 100644 (file)
index 0000000..eaae045
--- /dev/null
@@ -0,0 +1,1253 @@
+# Makefile.in generated by automake 1.11a from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in 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.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = include/parted
+DIST_COMMON = $(am__noinst_HEADERS_DIST) $(partedinclude_HEADERS) \
+       $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+       $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argmatch.m4 \
+       $(top_srcdir)/m4/assert.m4 $(top_srcdir)/m4/btowc.m4 \
+       $(top_srcdir)/m4/calloc.m4 $(top_srcdir)/m4/canonicalize.m4 \
+       $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
+       $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/configmake.m4 \
+       $(top_srcdir)/m4/dirname.m4 \
+       $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+       $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/environ.m4 \
+       $(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
+       $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fclose.m4 \
+       $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/fcntl_h.m4 \
+       $(top_srcdir)/m4/fflush.m4 $(top_srcdir)/m4/fpending.m4 \
+       $(top_srcdir)/m4/fpurge.m4 $(top_srcdir)/m4/freading.m4 \
+       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/fsync.m4 \
+       $(top_srcdir)/m4/ftell.m4 $(top_srcdir)/m4/ftello.m4 \
+       $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
+       $(top_srcdir)/m4/langinfo_h.m4 $(top_srcdir)/m4/lcmessage.m4 \
+       $(top_srcdir)/m4/lib-ignore.m4 $(top_srcdir)/m4/lib-ld.m4 \
+       $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/localcharset.m4 \
+       $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \
+       $(top_srcdir)/m4/locale-tr.m4 $(top_srcdir)/m4/locale-zh.m4 \
+       $(top_srcdir)/m4/locale_h.m4 $(top_srcdir)/m4/localename.m4 \
+       $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/long-options.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
+       $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+       $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
+       $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+       $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbtowc.m4 \
+       $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+       $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/multiarch.m4 \
+       $(top_srcdir)/m4/nl_langinfo.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/nocrash.m4 $(top_srcdir)/m4/o-direct.m4 \
+       $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/priv-set.m4 \
+       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+       $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+       $(top_srcdir)/m4/read.m4 $(top_srcdir)/m4/readlink.m4 \
+       $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/regex.m4 \
+       $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+       $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/setlocale.m4 \
+       $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/ssize_t.m4 \
+       $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdarg.m4 \
+       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strdup.m4 \
+       $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/strerror_r.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+       $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtoll.m4 \
+       $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/symlink.m4 \
+       $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+       $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/thread.m4 \
+       $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/time_h.m4 \
+       $(top_srcdir)/m4/ungetc.m4 $(top_srcdir)/m4/unistd_h.m4 \
+       $(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkdir.m4 \
+       $(top_srcdir)/m4/usleep.m4 $(top_srcdir)/m4/version-etc.m4 \
+       $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \
+       $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
+       $(top_srcdir)/m4/wcrtomb.m4 $(top_srcdir)/m4/wctob.m4 \
+       $(top_srcdir)/m4/wctomb.m4 $(top_srcdir)/m4/wctype_h.m4 \
+       $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+       $(top_srcdir)/m4/xstrndup.m4 $(top_srcdir)/m4/xstrtol.m4 \
+       $(top_srcdir)/m4/yield.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+am__noinst_HEADERS_DIST = crc32.h endian.h fdasd.h vtoc.h
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(partedincludedir)"
+HEADERS = $(noinst_HEADERS) $(partedinclude_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+pkglibexecdir = @pkglibexecdir@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+BUILDINFO = @BUILDINFO@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHECK_CFLAGS = @CHECK_CFLAGS@
+CHECK_LIBS = @CHECK_LIBS@
+CONFIG_INCLUDE = @CONFIG_INCLUDE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DYNAMIC_LOADING = @DYNAMIC_LOADING@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENABLE_DEVICE_MAPPER = @ENABLE_DEVICE_MAPPER@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FACCESSAT = @GNULIB_FACCESSAT@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCHMODAT = @GNULIB_FCHMODAT@
+GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FCNTL = @GNULIB_FCNTL@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FGETC = @GNULIB_FGETC@
+GNULIB_FGETS = @GNULIB_FGETS@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREAD = @GNULIB_FREAD@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSCANF = @GNULIB_FSCANF@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSTATAT = @GNULIB_FSTATAT@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FUTIMENS = @GNULIB_FUTIMENS@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETC = @GNULIB_GETC@
+GNULIB_GETCHAR = @GNULIB_GETCHAR@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETGROUPS = @GNULIB_GETGROUPS@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETS = @GNULIB_GETS@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
+GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_ISWBLANK = @GNULIB_ISWBLANK@
+GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@
+GNULIB_LCHMOD = @GNULIB_LCHMOD@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LINKAT = @GNULIB_LINKAT@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_LSTAT = @GNULIB_LSTAT@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MBTOWC = @GNULIB_MBTOWC@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDIRAT = @GNULIB_MKDIRAT@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKFIFO = @GNULIB_MKFIFO@
+GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@
+GNULIB_MKNOD = @GNULIB_MKNOD@
+GNULIB_MKNODAT = @GNULIB_MKNODAT@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@
+GNULIB_MKTIME = @GNULIB_MKTIME@
+GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@
+GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@
+GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_OPEN = @GNULIB_OPEN@
+GNULIB_OPENAT = @GNULIB_OPENAT@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE = @GNULIB_PIPE@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_PREAD = @GNULIB_PREAD@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READ = @GNULIB_READ@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_READLINKAT = @GNULIB_READLINKAT@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_REALPATH = @GNULIB_REALPATH@
+GNULIB_REMOVE = @GNULIB_REMOVE@
+GNULIB_RENAME = @GNULIB_RENAME@
+GNULIB_RENAMEAT = @GNULIB_RENAMEAT@
+GNULIB_RMDIR = @GNULIB_RMDIR@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SETLOCALE = @GNULIB_SETLOCALE@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STAT = @GNULIB_STAT@
+GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRERROR_R = @GNULIB_STRERROR_R@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRPTIME = @GNULIB_STRPTIME@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_SYMLINK = @GNULIB_SYMLINK@
+GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
+GNULIB_TIMEGM = @GNULIB_TIMEGM@
+GNULIB_TIME_R = @GNULIB_TIME_R@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
+GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
+GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNLINK = @GNULIB_UNLINK@
+GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_USLEEP = @GNULIB_USLEEP@
+GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VFSCANF = @GNULIB_VFSCANF@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSCANF = @GNULIB_VSCANF@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCPCPY = @GNULIB_WCPCPY@
+GNULIB_WCPNCPY = @GNULIB_WCPNCPY@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@
+GNULIB_WCSCAT = @GNULIB_WCSCAT@
+GNULIB_WCSCHR = @GNULIB_WCSCHR@
+GNULIB_WCSCMP = @GNULIB_WCSCMP@
+GNULIB_WCSCOLL = @GNULIB_WCSCOLL@
+GNULIB_WCSCPY = @GNULIB_WCSCPY@
+GNULIB_WCSCSPN = @GNULIB_WCSCSPN@
+GNULIB_WCSDUP = @GNULIB_WCSDUP@
+GNULIB_WCSLEN = @GNULIB_WCSLEN@
+GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@
+GNULIB_WCSNCAT = @GNULIB_WCSNCAT@
+GNULIB_WCSNCMP = @GNULIB_WCSNCMP@
+GNULIB_WCSNCPY = @GNULIB_WCSNCPY@
+GNULIB_WCSNLEN = @GNULIB_WCSNLEN@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSPBRK = @GNULIB_WCSPBRK@
+GNULIB_WCSRCHR = @GNULIB_WCSRCHR@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCSSPN = @GNULIB_WCSSPN@
+GNULIB_WCSSTR = @GNULIB_WCSSTR@
+GNULIB_WCSTOK = @GNULIB_WCSTOK@
+GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@
+GNULIB_WCSXFRM = @GNULIB_WCSXFRM@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCTOMB = @GNULIB_WCTOMB@
+GNULIB_WCTRANS = @GNULIB_WCTRANS@
+GNULIB_WCTYPE = @GNULIB_WCTYPE@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WMEMCHR = @GNULIB_WMEMCHR@
+GNULIB_WMEMCMP = @GNULIB_WMEMCMP@
+GNULIB_WMEMCPY = @GNULIB_WMEMCPY@
+GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@
+GNULIB_WMEMSET = @GNULIB_WMEMSET@
+GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
+HAVE_CHOWN = @HAVE_CHOWN@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@
+HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SETENV = @HAVE_DECL_SETENV@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@
+HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_DUPLOCALE = @HAVE_DUPLOCALE@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
+HAVE_FCHMODAT = @HAVE_FCHMODAT@
+HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
+HAVE_FCNTL = @HAVE_FCNTL@
+HAVE_FEATURES_H = @HAVE_FEATURES_H@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSTATAT = @HAVE_FSTATAT@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_FUTIMENS = @HAVE_FUTIMENS@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETGROUPS = @HAVE_GETGROUPS@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETLOGIN = @HAVE_GETLOGIN@
+HAVE_GETOPT_H = @HAVE_GETOPT_H@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
+HAVE_GRANTPT = @HAVE_GRANTPT@
+HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWBLANK = @HAVE_ISWBLANK@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
+HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
+HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
+HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
+HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
+HAVE_LCHMOD = @HAVE_LCHMOD@
+HAVE_LCHOWN = @HAVE_LCHOWN@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_LSTAT = @HAVE_LSTAT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSLEN = @HAVE_MBSLEN@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMCHR = @HAVE_MEMCHR@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDIRAT = @HAVE_MKDIRAT@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKFIFO = @HAVE_MKFIFO@
+HAVE_MKFIFOAT = @HAVE_MKFIFOAT@
+HAVE_MKNOD = @HAVE_MKNOD@
+HAVE_MKNODAT = @HAVE_MKNODAT@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
+HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
+HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
+HAVE_OPENAT = @HAVE_OPENAT@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PIPE = @HAVE_PIPE@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PWRITE = @HAVE_PWRITE@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_READLINKAT = @HAVE_READLINKAT@
+HAVE_REALPATH = @HAVE_REALPATH@
+HAVE_RENAMEAT = @HAVE_RENAMEAT@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRPTIME = @HAVE_STRPTIME@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYMLINK = @HAVE_SYMLINK@
+HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_TIMEGM = @HAVE_TIMEGM@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_USLEEP = @HAVE_USLEEP@
+HAVE_UTIMENSAT = @HAVE_UTIMENSAT@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCPCPY = @HAVE_WCPCPY@
+HAVE_WCPNCPY = @HAVE_WCPNCPY@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSCASECMP = @HAVE_WCSCASECMP@
+HAVE_WCSCAT = @HAVE_WCSCAT@
+HAVE_WCSCHR = @HAVE_WCSCHR@
+HAVE_WCSCMP = @HAVE_WCSCMP@
+HAVE_WCSCOLL = @HAVE_WCSCOLL@
+HAVE_WCSCPY = @HAVE_WCSCPY@
+HAVE_WCSCSPN = @HAVE_WCSCSPN@
+HAVE_WCSDUP = @HAVE_WCSDUP@
+HAVE_WCSLEN = @HAVE_WCSLEN@
+HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@
+HAVE_WCSNCAT = @HAVE_WCSNCAT@
+HAVE_WCSNCMP = @HAVE_WCSNCMP@
+HAVE_WCSNCPY = @HAVE_WCSNCPY@
+HAVE_WCSNLEN = @HAVE_WCSNLEN@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSPBRK = @HAVE_WCSPBRK@
+HAVE_WCSRCHR = @HAVE_WCSRCHR@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCSSPN = @HAVE_WCSSPN@
+HAVE_WCSSTR = @HAVE_WCSSTR@
+HAVE_WCSTOK = @HAVE_WCSTOK@
+HAVE_WCSWIDTH = @HAVE_WCSWIDTH@
+HAVE_WCSXFRM = @HAVE_WCSXFRM@
+HAVE_WCTRANS_T = @HAVE_WCTRANS_T@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WCTYPE_T = @HAVE_WCTYPE_T@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WMEMCHR = @HAVE_WMEMCHR@
+HAVE_WMEMCMP = @HAVE_WMEMCMP@
+HAVE_WMEMCPY = @HAVE_WMEMCPY@
+HAVE_WMEMMOVE = @HAVE_WMEMMOVE@
+HAVE_WMEMSET = @HAVE_WMEMSET@
+HAVE_XLOCALE_H = @HAVE_XLOCALE_H@
+HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
+IGNORE_UNUSED_LIBRARIES_CFLAGS = @IGNORE_UNUSED_LIBRARIES_CFLAGS@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@
+INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMULTITHREAD = @LIBMULTITHREAD@
+LIBOBJS = @LIBOBJS@
+LIBPTH = @LIBPTH@
+LIBPTH_PREFIX = @LIBPTH_PREFIX@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTHREAD = @LIBTHREAD@
+LIBTOOL = @LIBTOOL@
+LIB_BLKID = @LIB_BLKID@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBMULTITHREAD = @LTLIBMULTITHREAD@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBPTH = @LTLIBPTH@
+LTLIBTHREAD = @LTLIBTHREAD@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
+NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@
+NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
+NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@
+NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FCNTL_H = @NEXT_FCNTL_H@
+NEXT_GETOPT_H = @NEXT_GETOPT_H@
+NEXT_INTTYPES_H = @NEXT_INTTYPES_H@
+NEXT_LANGINFO_H = @NEXT_LANGINFO_H@
+NEXT_LOCALE_H = @NEXT_LOCALE_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@
+NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@
+NEXT_TIME_H = @NEXT_TIME_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PARTED_USABLE_TEST_DIR = @PARTED_USABLE_TEST_DIR@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CALLOC = @REPLACE_CALLOC@
+REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP = @REPLACE_DUP@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@
+REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FCNTL = @REPLACE_FCNTL@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FSTAT = @REPLACE_FSTAT@
+REPLACE_FSTATAT = @REPLACE_FSTATAT@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_FUTIMENS = @REPLACE_FUTIMENS@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETDELIM = @REPLACE_GETDELIM@
+REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@
+REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LINK = @REPLACE_LINK@
+REPLACE_LINKAT = @REPLACE_LINKAT@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_LSTAT = @REPLACE_LSTAT@
+REPLACE_MALLOC = @REPLACE_MALLOC@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MBTOWC = @REPLACE_MBTOWC@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKDIR = @REPLACE_MKDIR@
+REPLACE_MKFIFO = @REPLACE_MKFIFO@
+REPLACE_MKNOD = @REPLACE_MKNOD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_MKTIME = @REPLACE_MKTIME@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_OPEN = @REPLACE_OPEN@
+REPLACE_OPENAT = @REPLACE_OPENAT@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PREAD = @REPLACE_PREAD@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
+REPLACE_READ = @REPLACE_READ@
+REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_REALLOC = @REPLACE_REALLOC@
+REPLACE_REALPATH = @REPLACE_REALPATH@
+REPLACE_REMOVE = @REPLACE_REMOVE@
+REPLACE_RENAME = @REPLACE_RENAME@
+REPLACE_RENAMEAT = @REPLACE_RENAMEAT@
+REPLACE_RMDIR = @REPLACE_RMDIR@
+REPLACE_SETENV = @REPLACE_SETENV@
+REPLACE_SETLOCALE = @REPLACE_SETLOCALE@
+REPLACE_SLEEP = @REPLACE_SLEEP@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STAT = @REPLACE_STAT@
+REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRERROR_R = @REPLACE_STRERROR_R@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
+REPLACE_STRNDUP = @REPLACE_STRNDUP@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
+REPLACE_SYMLINK = @REPLACE_SYMLINK@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
+REPLACE_UNLINK = @REPLACE_UNLINK@
+REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
+REPLACE_UNSETENV = @REPLACE_UNSETENV@
+REPLACE_USLEEP = @REPLACE_USLEEP@
+REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCTOMB = @REPLACE_WCTOMB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SELINUX_LIBS = @SELINUX_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
+UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
+UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+YIELD_LIB = @YIELD_LIB@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+@COMPILE_FOR_S390_FALSE@S390_HDRS = 
+@COMPILE_FOR_S390_TRUE@S390_HDRS = fdasd.h vtoc.h
+partedincludedir = $(includedir)/parted
+partedinclude_HEADERS = constraint.h   \
+                       debug.h         \
+                       device.h        \
+                       disk.h          \
+                       exception.h     \
+                       filesys.h       \
+                       geom.h          \
+                       natmath.h       \
+                       timer.h         \
+                       unit.h          \
+                       parted.h
+
+noinst_HEADERS = crc32.h               \
+                       endian.h        \
+                       $(S390_HDRS)
+
+MAINTAINERCLEANFILES = Makefile.in
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/parted/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu include/parted/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+install-partedincludeHEADERS: $(partedinclude_HEADERS)
+       @$(NORMAL_INSTALL)
+       test -z "$(partedincludedir)" || $(MKDIR_P) "$(DESTDIR)$(partedincludedir)"
+       @list='$(partedinclude_HEADERS)'; test -n "$(partedincludedir)" || list=; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(partedincludedir)'"; \
+         $(INSTALL_HEADER) $$files "$(DESTDIR)$(partedincludedir)" || exit $$?; \
+       done
+
+uninstall-partedincludeHEADERS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(partedinclude_HEADERS)'; test -n "$(partedincludedir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       test -n "$$files" || exit 0; \
+       echo " ( cd '$(DESTDIR)$(partedincludedir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(partedincludedir)" && rm -f $$files
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile $(HEADERS)
+installdirs:
+       for dir in "$(DESTDIR)$(partedincludedir)"; do \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+       done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-partedincludeHEADERS
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-partedincludeHEADERS
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+       clean-libtool cscopelist ctags distclean distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-partedincludeHEADERS \
+       install-pdf install-pdf-am install-ps install-ps-am \
+       install-strip installcheck installcheck-am installdirs \
+       maintainer-clean maintainer-clean-generic mostlyclean \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       tags uninstall uninstall-am uninstall-partedincludeHEADERS
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/include/parted/constraint.h b/include/parted/constraint.h
new file mode 100644 (file)
index 0000000..4098835
--- /dev/null
@@ -0,0 +1,96 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 1998-2000, 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef PED_CONSTRAINT_H_INCLUDED
+#define PED_CONSTRAINT_H_INCLUDED
+
+typedef struct _PedConstraint  PedConstraint;
+
+#include <parted/device.h>
+#include <parted/geom.h>
+#include <parted/natmath.h>
+
+struct _PedConstraint {
+       PedAlignment*   start_align;
+       PedAlignment*   end_align;
+       PedGeometry*    start_range;
+       PedGeometry*    end_range;
+       PedSector       min_size;
+       PedSector       max_size;
+};
+
+extern int
+ped_constraint_init (
+       PedConstraint* constraint,
+       const PedAlignment* start_align,
+       const PedAlignment* end_align,
+       const PedGeometry* start_range,
+       const PedGeometry* end_range,
+       PedSector min_size,
+       PedSector max_size);
+
+extern PedConstraint*
+ped_constraint_new (
+       const PedAlignment* start_align,
+       const PedAlignment* end_align,
+       const PedGeometry* start_range,
+       const PedGeometry* end_range,
+       PedSector min_size,
+       PedSector max_size);
+
+extern PedConstraint*
+ped_constraint_new_from_min_max (
+       const PedGeometry* min,
+       const PedGeometry* max);
+
+extern PedConstraint*
+ped_constraint_new_from_min (const PedGeometry* min);
+
+extern PedConstraint*
+ped_constraint_new_from_max (const PedGeometry* max);
+
+extern PedConstraint*
+ped_constraint_duplicate (const PedConstraint* constraint);
+
+extern void
+ped_constraint_done (PedConstraint* constraint);
+
+extern void
+ped_constraint_destroy (PedConstraint* constraint);
+
+extern PedConstraint*
+ped_constraint_intersect (const PedConstraint* a, const PedConstraint* b);
+
+extern PedGeometry*
+ped_constraint_solve_max (const PedConstraint* constraint);
+
+extern PedGeometry*
+ped_constraint_solve_nearest (
+       const PedConstraint* constraint, const PedGeometry* geom);
+
+extern int
+ped_constraint_is_solution (const PedConstraint* constraint,
+                           const PedGeometry* geom);
+
+extern PedConstraint*
+ped_constraint_any (const PedDevice* dev);
+
+extern PedConstraint*
+ped_constraint_exact (const PedGeometry* geom);
+
+#endif /* PED_CONSTRAINT_H_INCLUDED */
diff --git a/include/parted/crc32.h b/include/parted/crc32.h
new file mode 100644 (file)
index 0000000..9d55723
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 1998-2000, 2007, 2009-2011 Free Software Foundation, Inc.
+
+    crc32.h
+
+    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 <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef _CRC32_H
+#define _CRC32_H
+
+#include <stdint.h>
+
+/*
+ * This computes a 32 bit CRC of the data in the buffer, and returns the CRC.
+ * The polynomial used is 0xedb88320.
+ */
+
+extern uint32_t __efi_crc32 (const void *buf, unsigned long len,
+                            uint32_t seed);
+
+#endif /* _CRC32_H */
diff --git a/include/parted/debug.h b/include/parted/debug.h
new file mode 100644 (file)
index 0000000..71372d4
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 1998-2000, 2002, 2007, 2009-2011 Free Software Foundation,
+    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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef PED_DEBUG_H_INCLUDED
+#define PED_DEBUG_H_INCLUDED
+
+#include <stdarg.h>
+
+#ifdef DEBUG
+
+typedef void (PedDebugHandler) ( const int level, const char* file, int line,
+                                 const char* function, const char* msg );
+
+extern void ped_debug_set_handler (PedDebugHandler* handler);
+extern void ped_debug ( const int level, const char* file, int line,
+                        const char* function, const char* msg, ... );
+
+extern void __attribute__((__noreturn__))
+ped_assert ( const char* cond_text,
+                         const char* file, int line, const char* function );
+
+#if defined __GNUC__ && !defined __JSFTRACE__
+
+#define PED_DEBUG(level, ...) \
+        ped_debug ( level, __FILE__, __LINE__, __PRETTY_FUNCTION__, \
+                    __VA_ARGS__ )
+
+#define PED_ASSERT(cond)                                       \
+       do {                                                    \
+               if (!(cond)) {                                  \
+                       ped_assert (                            \
+                         #cond,                                \
+                         __FILE__,                             \
+                         __LINE__,                             \
+                         __PRETTY_FUNCTION__ );                \
+               }                                               \
+       } while (0)
+
+#else /* !__GNUC__ */
+
+/* function because variadic macros are C99 */
+static void PED_DEBUG (int level, ...)
+{
+        va_list         va_args;
+
+        va_start (va_args, level);
+        ped_debug ( level, "unknown file", 0, "unknown function", va_args );
+        va_end (va_args);
+}
+
+#define PED_ASSERT(cond)                                       \
+       do {                                                    \
+               if (!(cond)) {                                  \
+                       ped_assert (                            \
+                         #cond,                                \
+                         "unknown",                            \
+                         0,                                    \
+                         "unknown");                           \
+               }                                               \
+       } while (0)
+
+#endif /* __GNUC__ */
+
+#else /* !DEBUG */
+
+#define PED_ASSERT(cond)               do {} while (0)
+#define PED_DEBUG(level, ...)           do {} while (0)
+
+
+#endif /* DEBUG */
+
+#endif /* PED_DEBUG_H_INCLUDED */
diff --git a/include/parted/device.h b/include/parted/device.h
new file mode 100644 (file)
index 0000000..0634465
--- /dev/null
@@ -0,0 +1,165 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 1998 - 2001, 2005, 2007-2008 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+/**
+ * \addtogroup PedDevice
+ * @{
+ */
+
+/** \file device.h */
+
+#ifndef PED_DEVICE_H_INCLUDED
+#define PED_DEVICE_H_INCLUDED
+
+/** We can address 2^63 sectors */
+typedef long long PedSector;
+
+/** \deprecated Removal from API planned */
+typedef enum {
+        PED_DEVICE_UNKNOWN      = 0,
+        PED_DEVICE_SCSI         = 1,
+        PED_DEVICE_IDE          = 2,
+        PED_DEVICE_DAC960       = 3,
+        PED_DEVICE_CPQARRAY     = 4,
+        PED_DEVICE_FILE         = 5,
+        PED_DEVICE_ATARAID      = 6,
+        PED_DEVICE_I2O          = 7,
+        PED_DEVICE_UBD          = 8,
+        PED_DEVICE_DASD         = 9,
+        PED_DEVICE_VIODASD      = 10,
+        PED_DEVICE_SX8          = 11,
+        PED_DEVICE_DM           = 12,
+        PED_DEVICE_XVD          = 13,
+        PED_DEVICE_SDMMC        = 14,
+        PED_DEVICE_VIRTBLK      = 15,
+        PED_DEVICE_AOE          = 16,
+        PED_DEVICE_MD           = 17
+} PedDeviceType;
+
+typedef struct _PedDevice PedDevice;
+typedef struct _PedDeviceArchOps PedDeviceArchOps;
+typedef struct _PedCHSGeometry PedCHSGeometry;
+
+/**
+ * A cylinder-head-sector "old-style" geometry.
+ *
+ * A device addressed in this way has C*H*S sectors.
+ */
+struct _PedCHSGeometry {
+        int             cylinders;
+        int             heads;
+        int             sectors;
+};
+
+/** A block device - for example, /dev/hda, not /dev/hda3 */
+struct _PedDevice {
+        PedDevice*      next;
+
+        char*           model;          /**< \brief description of hardware
+                                             (manufacturer, model) */
+        char*           path;           /**< device /dev entry */
+
+        PedDeviceType   type;           /**< SCSI, IDE, etc.
+                                             \deprecated \sa PedDeviceType */
+        long long       sector_size;            /**< logical sector size */
+        long long       phys_sector_size;       /**< physical sector size */
+        PedSector       length;                 /**< device length (LBA) */
+
+        int             open_count; /**< the number of times this device has
+                                         been opened with ped_device_open(). */
+        int             read_only;
+        int             external_mode;
+        int             dirty;
+        int             boot_dirty;
+
+        PedCHSGeometry  hw_geom;
+        PedCHSGeometry  bios_geom;
+        short           host, did;
+
+        void*           arch_specific;
+};
+
+#include <parted/natmath.h>
+
+/**
+ * List of functions implementing architecture-specific operations.
+ */
+struct _PedDeviceArchOps {
+        PedDevice* (*_new) (const char* path);
+        void (*destroy) (PedDevice* dev);
+        int (*is_busy) (PedDevice* dev);
+        int (*open) (PedDevice* dev);
+        int (*refresh_open) (PedDevice* dev);
+        int (*close) (PedDevice* dev);
+        int (*refresh_close) (PedDevice* dev);
+        int (*read) (const PedDevice* dev, void* buffer,
+                     PedSector start, PedSector count);
+        int (*write) (PedDevice* dev, const void* buffer,
+                      PedSector start, PedSector count);
+        int (*sync) (PedDevice* dev);
+        int (*sync_fast) (PedDevice* dev);
+        PedSector (*check) (PedDevice* dev, void* buffer,
+                            PedSector start, PedSector count);
+        void (*probe_all) ();
+        /* These functions are optional */
+        PedAlignment *(*get_minimum_alignment)(const PedDevice *dev);
+        PedAlignment *(*get_optimum_alignment)(const PedDevice *dev);
+};
+
+#include <parted/constraint.h>
+#include <parted/timer.h>
+
+extern void ped_device_probe_all ();
+extern void ped_device_free_all ();
+
+extern PedDevice* ped_device_get (const char* name);
+extern PedDevice* ped_device_get_next (const PedDevice* dev);
+extern int ped_device_is_busy (PedDevice* dev);
+extern int ped_device_open (PedDevice* dev);
+extern int ped_device_close (PedDevice* dev);
+extern void ped_device_destroy (PedDevice* dev);
+extern void ped_device_cache_remove (PedDevice* dev);
+
+extern int ped_device_begin_external_access (PedDevice* dev);
+extern int ped_device_end_external_access (PedDevice* dev);
+
+extern int ped_device_read (const PedDevice* dev, void* buffer,
+                            PedSector start, PedSector count);
+extern int ped_device_write (PedDevice* dev, const void* buffer,
+                             PedSector start, PedSector count);
+extern int ped_device_sync (PedDevice* dev);
+extern int ped_device_sync_fast (PedDevice* dev);
+extern PedSector ped_device_check (PedDevice* dev, void* buffer,
+                                   PedSector start, PedSector count);
+extern PedConstraint* ped_device_get_constraint (const PedDevice* dev);
+
+extern PedConstraint *ped_device_get_minimal_aligned_constraint(
+                                                         const PedDevice *dev);
+extern PedConstraint *ped_device_get_optimal_aligned_constraint(
+                                                         const PedDevice *dev);
+
+extern PedAlignment *ped_device_get_minimum_alignment(const PedDevice *dev);
+extern PedAlignment *ped_device_get_optimum_alignment(const PedDevice *dev);
+
+/* private stuff ;-) */
+
+extern void _ped_device_probe (const char* path);
+
+#endif /* PED_DEVICE_H_INCLUDED */
+
+/** @} */
diff --git a/include/parted/disk.h b/include/parted/disk.h
new file mode 100644 (file)
index 0000000..dd461fb
--- /dev/null
@@ -0,0 +1,395 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 1999-2002, 2007-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+/**
+ * \addtogroup PedDisk
+ * @{
+ */
+
+/** \file disk.h */
+
+#ifndef PED_DISK_H_INCLUDED
+#define PED_DISK_H_INCLUDED
+
+/**
+ * Disk flags
+ */
+enum _PedDiskFlag {
+        /* This flag (which defaults to true) controls if disk types for
+           which cylinder alignment is optional do cylinder alignment when a
+           new partition gets added.
+           This flag is available for msdos and sun disklabels (for sun labels
+           it only controls the aligning of the end of the partition) */
+        PED_DISK_CYLINDER_ALIGNMENT=1,
+};
+#define PED_DISK_FIRST_FLAG             PED_DISK_CYLINDER_ALIGNMENT
+#define PED_DISK_LAST_FLAG              PED_DISK_CYLINDER_ALIGNMENT
+
+/**
+ * Partition types
+ */
+enum _PedPartitionType {
+        PED_PARTITION_NORMAL            = 0x00,
+        PED_PARTITION_LOGICAL           = 0x01,
+        PED_PARTITION_EXTENDED          = 0x02,
+        PED_PARTITION_FREESPACE         = 0x04,
+        PED_PARTITION_METADATA          = 0x08,
+        PED_PARTITION_PROTECTED         = 0x10
+};
+
+/**
+ * Partition flags.
+ */
+enum _PedPartitionFlag {
+        PED_PARTITION_BOOT=1,
+        PED_PARTITION_ROOT=2,
+        PED_PARTITION_SWAP=3,
+        PED_PARTITION_HIDDEN=4,
+        PED_PARTITION_RAID=5,
+        PED_PARTITION_LVM=6,
+        PED_PARTITION_LBA=7,
+        PED_PARTITION_HPSERVICE=8,
+        PED_PARTITION_PALO=9,
+        PED_PARTITION_PREP=10,
+        PED_PARTITION_MSFT_RESERVED=11,
+        PED_PARTITION_BIOS_GRUB=12,
+        PED_PARTITION_APPLE_TV_RECOVERY=13,
+        PED_PARTITION_DIAG=14,
+        PED_PARTITION_LEGACY_BOOT=15
+};
+#define PED_PARTITION_FIRST_FLAG        PED_PARTITION_BOOT
+#define PED_PARTITION_LAST_FLAG         PED_PARTITION_LEGACY_BOOT
+
+enum _PedDiskTypeFeature {
+        PED_DISK_TYPE_EXTENDED=1,       /**< supports extended partitions */
+        PED_DISK_TYPE_PARTITION_NAME=2  /**< supports partition names */
+};
+#define PED_DISK_TYPE_FIRST_FEATURE    PED_DISK_TYPE_EXTENDED
+#define PED_DISK_TYPE_LAST_FEATURE     PED_DISK_TYPE_PARTITION_NAME
+
+struct _PedDisk;
+struct _PedPartition;
+struct _PedDiskOps;
+struct _PedDiskType;
+struct _PedDiskArchOps;
+
+typedef enum _PedDiskFlag               PedDiskFlag;
+typedef enum _PedPartitionType          PedPartitionType;
+typedef enum _PedPartitionFlag          PedPartitionFlag;
+typedef enum _PedDiskTypeFeature        PedDiskTypeFeature;
+typedef struct _PedDisk                 PedDisk;
+typedef struct _PedPartition            PedPartition;
+typedef const struct _PedDiskOps        PedDiskOps;
+typedef struct _PedDiskType             PedDiskType;
+typedef const struct _PedDiskArchOps    PedDiskArchOps;
+
+#include <parted/device.h>
+#include <parted/filesys.h>
+#include <parted/natmath.h>
+#include <parted/geom.h>
+#include <stdbool.h>
+
+/** @} */
+
+/**
+ * \addtogroup PedPartition
+ *
+ * @{
+ */
+
+/** \file disk.h */
+
+/**
+ * PedPartition structure represents a partition.
+ */
+struct _PedPartition {
+        PedPartition*           prev;
+        PedPartition*           next;
+
+        /**< the partition table of the partition */
+        PedDisk*                disk;
+        PedGeometry             geom;  /**< geometry of the partition */
+
+        /**< the partition number:  In Linux, this is the
+             same as the minor number. No assumption
+             should be made about "num" and "type"
+             - different disk labels have different rules. */
+
+        int                     num;
+        PedPartitionType        type;  /**< the type of partition: a bit field of
+                                               PED_PARTITION_LOGICAL, PED_PARTITION_EXTENDED,
+                                               PED_PARTITION_METADATA
+                                               and PED_PARTITION_FREESPACE.
+                                               Both the first two, and the last two are
+                                               mutually exclusive.
+                                                       An extended partition is a primary
+                                               partition that may contain logical partitions.
+                                               There is at most one extended partition on
+                                               a disk.
+                                                       A logical partition is like a primary
+                                               partition, except it's inside an extended
+                                               partition. Internally, pseudo partitions are
+                                               allocated to represent free space, or disk
+                                               label meta-data.  These have the
+                                               PED_PARTITION_FREESPACE or
+                                               PED_PARTITION_METADATA bit set. */
+
+        /**< The type of file system on the partition. NULL if unknown. */
+        const PedFileSystemType* fs_type;
+
+        /**< Only used for an extended partition.  The list of logical
+             partitions (and free space and metadata within the extended
+             partition). */
+        PedPartition*           part_list;
+
+        void*                   disk_specific;
+};
+
+/** @} */
+
+/**
+ * \addtogroup PedDisk
+ * @{
+ */
+
+/**
+ * Represents a disk label (partition table).
+ */
+struct _PedDisk {
+        PedDevice*          dev;         /**< the device where the
+                                              partition table lies */
+        const PedDiskType*  type;        /**< type of disk label */
+        const int*          block_sizes; /**< block sizes supported
+                                              by this label */
+        PedPartition*       part_list;   /**< list of partitions. Access with
+                                              ped_disk_next_partition() */
+
+        void*               disk_specific;
+
+/* office use only ;-) */
+        int                 needs_clobber;      /**< clobber before write? */
+        int                 update_mode;        /**< mode without free/metadata
+                                                   partitions, for easier
+                                                   update */
+};
+
+struct _PedDiskOps {
+        /* disk label operations */
+        int (*probe) (const PedDevice *dev);
+        int (*clobber) (PedDevice* dev);
+        PedDisk* (*alloc) (const PedDevice* dev);
+        PedDisk* (*duplicate) (const PedDisk* disk);
+        void (*free) (PedDisk* disk);
+        int (*read) (PedDisk* disk);
+        int (*write) (const PedDisk* disk);
+        int (*disk_set_flag) (
+                PedDisk *disk,
+                PedDiskFlag flag,
+                int state);
+        int (*disk_get_flag) (
+                const PedDisk *disk,
+                PedDiskFlag flag);
+        int (*disk_is_flag_available) (
+                const PedDisk *disk,
+                PedDiskFlag flag);
+        /** \todo add label guessing op here */
+
+        /* partition operations */
+        PedPartition* (*partition_new) (
+                const PedDisk* disk,
+                PedPartitionType part_type,
+                const PedFileSystemType* fs_type,
+                PedSector start,
+                PedSector end);
+        PedPartition* (*partition_duplicate) (const PedPartition* part);
+        void (*partition_destroy) (PedPartition* part);
+        int (*partition_set_system) (PedPartition* part,
+                                     const PedFileSystemType* fs_type);
+        int (*partition_set_flag) (
+                PedPartition* part,
+                PedPartitionFlag flag,
+                int state);
+        int (*partition_get_flag) (
+                const PedPartition* part,
+                PedPartitionFlag flag);
+        int (*partition_is_flag_available) (
+                const PedPartition* part,
+                PedPartitionFlag flag);
+        void (*partition_set_name) (PedPartition* part, const char* name);
+        const char* (*partition_get_name) (const PedPartition* part);
+        int (*partition_align) (PedPartition* part,
+                                const PedConstraint* constraint);
+        int (*partition_enumerate) (PedPartition* part);
+        bool (*partition_check) (const PedPartition* part);
+
+        /* other */
+        int (*alloc_metadata) (PedDisk* disk);
+        int (*get_max_primary_partition_count) (const PedDisk* disk);
+        bool (*get_max_supported_partition_count) (const PedDisk* disk,
+                                                   int* supported);
+        PedAlignment *(*get_partition_alignment)(const PedDisk *disk);
+        PedSector (*max_length) (void);
+        PedSector (*max_start_sector) (void);
+};
+
+struct _PedDiskType {
+        PedDiskType*            next;
+        const char*             name; /**< the name of the partition table type.
+                                           \todo not very intuitive name */
+        PedDiskOps* const       ops;
+
+        PedDiskTypeFeature      features;   /**< bitmap of supported features */
+};
+
+/**
+ * Architecture-specific operations.  i.e. communication with kernel (or
+ * whatever) about changes, etc.
+ */
+struct _PedDiskArchOps {
+        char* (*partition_get_path) (const PedPartition* part);
+        int (*partition_is_busy) (const PedPartition* part);
+        int (*disk_commit) (PedDisk* disk);
+};
+
+extern void ped_disk_type_register (PedDiskType* type);
+extern void ped_disk_type_unregister (PedDiskType* type);
+
+extern PedDiskType* ped_disk_type_get_next (PedDiskType const *type);
+extern PedDiskType* ped_disk_type_get (const char* name);
+extern int ped_disk_type_check_feature (const PedDiskType* disk_type,
+                                        PedDiskTypeFeature feature);
+
+extern PedDiskType* ped_disk_probe (PedDevice* dev);
+extern int ped_disk_clobber (PedDevice* dev);
+extern PedDisk* ped_disk_new (PedDevice* dev);
+extern PedDisk* ped_disk_new_fresh (PedDevice* dev,
+                                    const PedDiskType* disk_type);
+extern PedDisk* ped_disk_duplicate (const PedDisk* old_disk);
+extern void ped_disk_destroy (PedDisk* disk);
+extern int ped_disk_commit (PedDisk* disk);
+extern int ped_disk_commit_to_dev (PedDisk* disk);
+extern int ped_disk_commit_to_os (PedDisk* disk);
+extern int ped_disk_check (const PedDisk* disk);
+extern void ped_disk_print (const PedDisk* disk);
+
+extern int ped_disk_get_primary_partition_count (const PedDisk* disk);
+extern int ped_disk_get_last_partition_num (const PedDisk* disk);
+extern int ped_disk_get_max_primary_partition_count (const PedDisk* disk);
+extern bool ped_disk_get_max_supported_partition_count(const PedDisk* disk,
+                                                       int* supported);
+extern PedAlignment *ped_disk_get_partition_alignment(const PedDisk *disk);
+
+extern int ped_disk_set_flag(PedDisk *disk, PedDiskFlag flag, int state);
+extern int ped_disk_get_flag(const PedDisk *disk, PedDiskFlag flag);
+extern int ped_disk_is_flag_available(const PedDisk *disk, PedDiskFlag flag);
+
+extern const char *ped_disk_flag_get_name(PedDiskFlag flag);
+extern PedDiskFlag ped_disk_flag_get_by_name(const char *name);
+extern PedDiskFlag ped_disk_flag_next(PedDiskFlag flag);
+
+/** @} */
+
+/**
+ * \addtogroup PedPartition
+ *
+ * @{
+ */
+
+extern PedPartition* ped_partition_new (const PedDisk* disk,
+                                        PedPartitionType type,
+                                        const PedFileSystemType* fs_type,
+                                        PedSector start,
+                                        PedSector end);
+extern void ped_partition_destroy (PedPartition* part);
+extern int ped_partition_is_active (const PedPartition* part);
+extern int ped_partition_set_flag (PedPartition* part, PedPartitionFlag flag,
+                                   int state);
+extern int ped_partition_get_flag (const PedPartition* part,
+                                   PedPartitionFlag flag);
+extern int ped_partition_is_flag_available (const PedPartition* part,
+                                            PedPartitionFlag flag);
+extern int ped_partition_set_system (PedPartition* part,
+                                     const PedFileSystemType* fs_type);
+extern int ped_partition_set_name (PedPartition* part, const char* name);
+extern const char* ped_partition_get_name (const PedPartition* part);
+extern int ped_partition_is_busy (const PedPartition* part);
+extern char* ped_partition_get_path (const PedPartition* part);
+
+extern const char* ped_partition_type_get_name (PedPartitionType part_type);
+extern const char* ped_partition_flag_get_name (PedPartitionFlag flag);
+extern PedPartitionFlag ped_partition_flag_get_by_name (const char* name);
+extern PedPartitionFlag ped_partition_flag_next (PedPartitionFlag flag);
+
+/** @} */
+
+/**
+ * \addtogroup PedDisk
+ * @{
+ */
+
+extern int ped_disk_add_partition (PedDisk* disk, PedPartition* part,
+                                   const PedConstraint* constraint);
+extern int ped_disk_remove_partition (PedDisk* disk, PedPartition* part);
+extern int ped_disk_delete_partition (PedDisk* disk, PedPartition* part);
+extern int ped_disk_delete_all (PedDisk* disk);
+extern int ped_disk_set_partition_geom (PedDisk* disk, PedPartition* part,
+                                        const PedConstraint* constraint,
+                                        PedSector start, PedSector end);
+extern int ped_disk_maximize_partition (PedDisk* disk, PedPartition* part,
+                                        const PedConstraint* constraint);
+extern PedGeometry* ped_disk_get_max_partition_geometry (PedDisk* disk,
+                PedPartition* part, const PedConstraint* constraint);
+extern int ped_disk_minimize_extended_partition (PedDisk* disk);
+
+extern PedPartition* ped_disk_next_partition (const PedDisk* disk,
+                                              const PedPartition* part);
+extern PedPartition* ped_disk_get_partition (const PedDisk* disk, int num);
+extern PedPartition* ped_disk_get_partition_by_sector (const PedDisk* disk,
+                                                       PedSector sect);
+extern PedPartition* ped_disk_extended_partition (const PedDisk* disk);
+
+extern PedSector ped_disk_max_partition_length (const PedDisk *disk);
+extern PedSector ped_disk_max_partition_start_sector (const PedDisk *disk);
+
+/* internal functions */
+extern PedDisk* _ped_disk_alloc (const PedDevice* dev, const PedDiskType* type);
+extern void _ped_disk_free (PedDisk* disk);
+
+
+/** @} */
+
+/**
+ * \addtogroup PedPartition
+ *
+ * @{
+ */
+
+extern PedPartition* _ped_partition_alloc (const PedDisk* disk,
+                                           PedPartitionType type,
+                                           const PedFileSystemType* fs_type,
+                                           PedSector start,
+                                           PedSector end);
+extern void _ped_partition_free (PedPartition* part);
+
+extern int _ped_partition_attempt_align (
+                PedPartition* part, const PedConstraint* external,
+                PedConstraint* internal);
+
+#endif /* PED_DISK_H_INCLUDED */
+
+/** @} */
diff --git a/include/parted/endian.h b/include/parted/endian.h
new file mode 100644 (file)
index 0000000..1a6a267
--- /dev/null
@@ -0,0 +1,84 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 1998-2002, 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+/* should only be #included by files in libparted */
+
+#ifndef PED_ENDIAN_H_INCLUDED
+#define PED_ENDIAN_H_INCLUDED
+
+#include <stdint.h>
+
+/* returns the n'th least significant byte */
+#define _GET_BYTE(x, n)                ( ((x) >> (8 * (n))) & 0xff )
+
+#define _PED_SWAP16(x)         ( (_GET_BYTE(x, 0) << 8)        \
+                               + (_GET_BYTE(x, 1) << 0) )
+
+#define _PED_SWAP32(x)         ( (_GET_BYTE(x, 0) << 24)       \
+                               + (_GET_BYTE(x, 1) << 16)       \
+                               + (_GET_BYTE(x, 2) << 8)        \
+                               + (_GET_BYTE(x, 3) << 0) )
+
+#define _PED_SWAP64(x)         ( (_GET_BYTE(x, 0) << 56)       \
+                               + (_GET_BYTE(x, 1) << 48)       \
+                               + (_GET_BYTE(x, 2) << 40)       \
+                               + (_GET_BYTE(x, 3) << 32)       \
+                               + (_GET_BYTE(x, 4) << 24)       \
+                               + (_GET_BYTE(x, 5) << 16)       \
+                               + (_GET_BYTE(x, 6) << 8)        \
+                               + (_GET_BYTE(x, 7) << 0) )
+
+#define PED_SWAP16(x)          ((uint16_t) _PED_SWAP16( (uint16_t) (x) ))
+#define PED_SWAP32(x)          ((uint32_t) _PED_SWAP32( (uint32_t) (x) ))
+#define PED_SWAP64(x)          ((uint64_t) _PED_SWAP64( (uint64_t) (x) ))
+
+#ifdef WORDS_BIGENDIAN
+
+#define PED_CPU_TO_LE16(x)     PED_SWAP16(x)
+#define PED_CPU_TO_BE16(x)     (x)
+#define PED_CPU_TO_LE32(x)     PED_SWAP32(x)
+#define PED_CPU_TO_BE32(x)     (x)
+#define PED_CPU_TO_LE64(x)     PED_SWAP64(x)
+#define PED_CPU_TO_BE64(x)     (x)
+
+#define PED_LE16_TO_CPU(x)     PED_SWAP16(x)
+#define PED_BE16_TO_CPU(x)     (x)
+#define PED_LE32_TO_CPU(x)     PED_SWAP32(x)
+#define PED_BE32_TO_CPU(x)     (x)
+#define PED_LE64_TO_CPU(x)     PED_SWAP64(x)
+#define PED_BE64_TO_CPU(x)     (x)
+
+#else /* !WORDS_BIGENDIAN */
+
+#define PED_CPU_TO_LE16(x)     (x)
+#define PED_CPU_TO_BE16(x)     PED_SWAP16(x)
+#define PED_CPU_TO_LE32(x)     (x)
+#define PED_CPU_TO_BE32(x)     PED_SWAP32(x)
+#define PED_CPU_TO_LE64(x)     (x)
+#define PED_CPU_TO_BE64(x)     PED_SWAP64(x)
+
+#define PED_LE16_TO_CPU(x)     (x)
+#define PED_BE16_TO_CPU(x)     PED_SWAP16(x)
+#define PED_LE32_TO_CPU(x)     (x)
+#define PED_BE32_TO_CPU(x)     PED_SWAP32(x)
+#define PED_LE64_TO_CPU(x)     (x)
+#define PED_BE64_TO_CPU(x)     PED_SWAP64(x)
+
+#endif /* !WORDS_BIGENDIAN */
+
+#endif /* PED_ENDIAN_H_INCLUDED */
diff --git a/include/parted/exception.h b/include/parted/exception.h
new file mode 100644 (file)
index 0000000..bfa6eb1
--- /dev/null
@@ -0,0 +1,115 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 1999-2000, 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+/**
+ * \addtogroup PedException
+ * @{
+ */
+
+/** \file exception.h */
+
+#ifndef PED_EXCEPTION_H_INCLUDED
+#define PED_EXCEPTION_H_INCLUDED
+
+typedef struct _PedException PedException;
+
+/**
+ * Exception type
+ */
+enum _PedExceptionType {
+       PED_EXCEPTION_INFORMATION=1,
+       PED_EXCEPTION_WARNING=2,
+       PED_EXCEPTION_ERROR=3,
+       PED_EXCEPTION_FATAL=4,
+       PED_EXCEPTION_BUG=5,
+       PED_EXCEPTION_NO_FEATURE=6,
+};
+typedef enum _PedExceptionType PedExceptionType;
+
+/**
+ * Option for resolving the exception
+ */
+enum _PedExceptionOption {
+       PED_EXCEPTION_UNHANDLED=0,
+       PED_EXCEPTION_FIX=1,
+       PED_EXCEPTION_YES=2,
+       PED_EXCEPTION_NO=4,
+       PED_EXCEPTION_OK=8,
+       PED_EXCEPTION_RETRY=16,
+       PED_EXCEPTION_IGNORE=32,
+       PED_EXCEPTION_CANCEL=64,
+};
+typedef enum _PedExceptionOption PedExceptionOption;
+#define PED_EXCEPTION_OK_CANCEL            (PED_EXCEPTION_OK + PED_EXCEPTION_CANCEL)
+#define PED_EXCEPTION_YES_NO       (PED_EXCEPTION_YES + PED_EXCEPTION_NO)
+#define PED_EXCEPTION_YES_NO_CANCEL (PED_EXCEPTION_YES_NO \
+                                    + PED_EXCEPTION_CANCEL)
+#define PED_EXCEPTION_IGNORE_CANCEL (PED_EXCEPTION_IGNORE \
+                                    + PED_EXCEPTION_CANCEL)
+#define PED_EXCEPTION_RETRY_CANCEL  (PED_EXCEPTION_RETRY + PED_EXCEPTION_CANCEL)
+#define PED_EXCEPTION_RETRY_IGNORE_CANCEL (PED_EXCEPTION_RETRY \
+                                          + PED_EXCEPTION_IGNORE_CANCEL)
+#define PED_EXCEPTION_OPTION_FIRST PED_EXCEPTION_FIX
+#define PED_EXCEPTION_OPTION_LAST PED_EXCEPTION_CANCEL
+
+/**
+ * Structure with information about exception
+ */
+struct _PedException {
+       char*                   message;        /**< text describing what the event was */
+       PedExceptionType        type;           /**< type of exception */
+       PedExceptionOption      options;        /**< ORed list of options that
+                                                  the exception handler can
+                                                  return (the ways an exception
+                                                  can be resolved) */
+};
+
+typedef PedExceptionOption (PedExceptionHandler) (PedException* ex);
+
+extern int ped_exception;      /* set to true if there's an exception */
+
+extern char* ped_exception_get_type_string (PedExceptionType ex_type);
+extern char* ped_exception_get_option_string (PedExceptionOption ex_opt);
+
+extern void ped_exception_set_handler (PedExceptionHandler* handler);
+extern PedExceptionHandler *ped_exception_get_handler(void);
+
+extern PedExceptionOption ped_exception_default_handler (PedException* ex);
+
+extern PedExceptionOption      ped_exception_throw (PedExceptionType ex_type,
+                                                    PedExceptionOption ex_opt,
+                                                    const char* message,
+                                                    ...);
+/* rethrows an exception - i.e. calls the exception handler, (or returns a
+   code to return to pass up higher) */
+extern PedExceptionOption      ped_exception_rethrow ();
+
+/* frees an exception, indicating that the exception has been handled.
+   Calling an exception handler counts. */
+extern void                    ped_exception_catch ();
+
+/* indicate that exceptions should not go to the exception handler, but passed
+   up to the calling function(s) */
+extern void                    ped_exception_fetch_all ();
+
+/* indicate that exceptions should invoke the exception handler */
+extern void                    ped_exception_leave_all ();
+
+#endif /* PED_EXCEPTION_H_INCLUDED */
+
+/** @} */
diff --git a/include/parted/fdasd.h b/include/parted/fdasd.h
new file mode 100644 (file)
index 0000000..ac30134
--- /dev/null
@@ -0,0 +1,230 @@
+/*
+ * File...........: s390-tools/fdasd/fdasd.h
+ * Author(s)......: Volker Sameske <sameske@de.ibm.com>
+ *                  Horst Hummel   <Horst.Hummel@de.ibm.com>
+ * Bugreports.to..: <Linux390@de.ibm.com>
+ * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 2001-2002
+ *
+ * History of changes (starts March 2001)
+ * version 1.01 - menu entry 's' to show mapping devnode - DS name
+ *         1.02 - DS names count now from 0001 instead from 0000
+ *         1.03 - volser checks: 'AA AAA' to 'AAAAA '
+ *              - removed dependency to kernel headers.
+ *         1.04 - added -p option
+ *         1.05 - new API policy, set it back to 0
+ */
+#ifndef FDASD_H
+#define FDASD_H
+
+#include <parted/vtoc.h>
+
+/*****************************************************************************
+ * SECTION: Definitions needed for DASD-API (see dasd.h)                     *
+ *****************************************************************************/
+
+#define DASD_IOCTL_LETTER 'D'
+
+#define DASD_PARTN_BITS 2
+
+#define PARTITION_LINUX_SWAP    0x82
+#define PARTITION_LINUX         0x83
+#define PARTITION_LINUX_EXT     0x85
+#define PARTITION_LINUX_LVM     0x8e
+#define PARTITION_LINUX_RAID    0xfd
+#define PARTITION_LINUX_LVM_OLD 0xfe
+
+#define PART_TYPE_NATIVE "NATIVE"
+#define PART_TYPE_SWAP   "SWAP  "
+#define PART_TYPE_RAID   "RAID  "
+#define PART_TYPE_LVM    "LVM   "
+
+#ifdef DEBUG_DASD
+#define PDEBUG           fprintf(stderr, "%s:%d:%s\n", \
+                         __FILE__,                              \
+                         __LINE__,                              \
+                         __PRETTY_FUNCTION__);
+#else
+#define PDEBUG
+#endif
+
+/*
+ * struct dasd_information_t
+ * represents any data about the device, which is visible to userspace.
+ *  including foramt and featueres.
+ */
+typedef struct dasd_information_t {
+       unsigned int devno;           /* S/390 devno                         */
+       unsigned int real_devno;      /* for aliases                         */
+       unsigned int schid;           /* S/390 subchannel identifier         */
+       unsigned int cu_type  : 16;   /* from SenseID                        */
+       unsigned int cu_model :  8;   /* from SenseID                        */
+       unsigned int dev_type : 16;   /* from SenseID                        */
+       unsigned int dev_model : 8;   /* from SenseID                        */
+       unsigned int open_count;
+       unsigned int req_queue_len;
+       unsigned int chanq_len;       /* length of chanq                     */
+       char type[4];                 /* from discipline.name, 'none' for    */
+                                     /* unknown                             */
+       unsigned int status;          /* current device level                */
+       unsigned int label_block;     /* where to find the VOLSER            */
+       unsigned int FBA_layout;      /* fixed block size (like AIXVOL)      */
+       unsigned int characteristics_size;
+       unsigned int confdata_size;
+       char characteristics[64];     /* from read_device_characteristics    */
+       char configuration_data[256]; /* from read_configuration_data        */
+} dasd_information_t;
+
+/*
+ * struct format_data_t
+ * represents all data necessary to format a dasd
+ */
+typedef struct format_data_t {
+       int start_unit; /* from track */
+       int stop_unit;  /* to track */
+       int blksize;    /* sectorsize */
+       int intensity;
+} format_data_t;
+
+/*
+ * values to be used for format_data_t.intensity
+ * 0/8: normal format
+ * 1/9: also write record zero
+ * 3/11: also write home address
+ * 4/12: invalidate track
+ */
+#define DASD_FMT_INT_FMT_R0 1 /* write record zero */
+#define DASD_FMT_INT_FMT_HA 2 /* write home address, also set FMT_R0 ! */
+#define DASD_FMT_INT_INVAL  4 /* invalidate tracks */
+#define DASD_FMT_INT_COMPAT 8 /* use OS/390 compatible disk layout */
+
+
+/* Disable the volume (for Linux) */
+#define BIODASDDISABLE _IO(DASD_IOCTL_LETTER,0)
+/* Enable the volume (for Linux) */
+#define BIODASDENABLE  _IO(DASD_IOCTL_LETTER,1)
+
+/* retrieve API version number */
+#define DASDAPIVER     _IOR(DASD_IOCTL_LETTER,0,int)
+/* Get information on a dasd device (enhanced) */
+#define BIODASDINFO   _IOR(DASD_IOCTL_LETTER,1,dasd_information_t)
+
+
+/*****************************************************************************
+ * SECTION: Further IOCTL Definitions  (see fs.h)                            *
+ *****************************************************************************/
+/* re-read partition table */
+#define BLKRRPART  _IO(0x12,95)
+/* get block device sector size */
+#define BLKSSZGET  _IO(0x12,104)
+
+/*****************************************************************************
+ * SECTION: Definition from hdreq.h                                          *
+ *****************************************************************************/
+
+struct fdasd_hd_geometry {
+      unsigned char heads;
+      unsigned char sectors;
+      unsigned short cylinders;
+      unsigned long start;
+};
+
+/* get device geometry */
+#define HDIO_GETGEO            0x0301
+
+/*****************************************************************************
+ * SECTION: FDASD internal types                                             *
+ *****************************************************************************/
+
+#define DASD_MIN_API_VERSION 0
+
+#define DEFAULT_FDASD_CONF "/etc/fdasd.conf" /* default config file */
+
+#define PARTN_MASK ((1 << DASD_PARTN_BITS) - 1)
+#define USABLE_PARTITIONS ((1 << DASD_PARTN_BITS) - 1)
+
+#define FDASD_VERSION "1.05"
+#define DEVICE "device"
+#define DISC   "disc"
+#define PART   "part"
+
+#define ALTERNATE_CYLINDERS_USED 0x10
+
+typedef struct partition_info {
+       u_int8_t used;
+       unsigned long start_trk;
+       unsigned long end_trk;
+       unsigned long len_trk;
+       unsigned long fspace_trk;
+       format1_label_t *f1;
+       struct partition_info *next;
+       struct partition_info *prev;
+       u_int8_t type;
+} partition_info_t;
+
+typedef struct config_data {
+       unsigned long start;
+       unsigned long stop;
+} config_data_t;
+
+typedef struct fdasd_anchor {
+       int vlabel_changed;
+       int vtoc_changed;
+       int devname_specified;
+       int volid_specified;
+       int config_specified;
+       int auto_partition;
+       int print_table;
+       int big_disk;
+       int silent;
+       int verbose;
+       int devno;
+       int option_reuse;
+       int option_recreate;
+       int partno[USABLE_PARTITIONS];
+       u_int16_t dev_type;
+       unsigned int used_partitions;
+       unsigned long label_pos;
+       unsigned int  blksize;
+       unsigned long fspace_trk;
+       format4_label_t  *f4;
+       format5_label_t  *f5;
+       format7_label_t  *f7;
+       partition_info_t *first;
+       partition_info_t *last;
+       volume_label_t   *vlabel;
+       config_data_t confdata[USABLE_PARTITIONS];
+       struct fdasd_hd_geometry geo;
+} fdasd_anchor_t;
+
+enum offset {lower, upper};
+
+enum fdasd_failure {
+       unable_to_open_disk,
+       unable_to_seek_disk,
+       unable_to_read_disk,
+       read_only_disk,
+       unable_to_ioctl,
+       api_version_mismatch,
+       wrong_disk_type,
+       wrong_disk_format,
+       disk_in_use,
+       config_syntax_error,
+       vlabel_corrupted,
+       dsname_corrupted,
+       malloc_failed,
+       device_verification_failed
+};
+
+void fdasd_cleanup (fdasd_anchor_t *anchor);
+void fdasd_initialize_anchor (fdasd_anchor_t * anc);
+void fdasd_get_geometry (const PedDevice *dev, fdasd_anchor_t *anc, int fd);
+void fdasd_check_api_version (fdasd_anchor_t *anc, int fd);
+int fdasd_check_volume (fdasd_anchor_t *anc, int fd);
+int fdasd_write_labels (fdasd_anchor_t *anc, int fd);
+int fdasd_invalid_vtoc_pointer(fdasd_anchor_t *anc);
+void fdasd_recreate_vtoc(fdasd_anchor_t *anc);
+partition_info_t * fdasd_add_partition (fdasd_anchor_t *anc,
+                                        unsigned int start, unsigned int stop);
+int fdasd_prepare_labels (fdasd_anchor_t *anc, int fd) ;
+
+#endif /* FDASD_H */
diff --git a/include/parted/filesys.h b/include/parted/filesys.h
new file mode 100644 (file)
index 0000000..44258f5
--- /dev/null
@@ -0,0 +1,101 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 1999-2001, 2006-2007, 2009-2011 Free Software Foundation,
+    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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+/**
+ * \addtogroup PedFileSystem
+ * @{
+ */
+
+/** \file filesys.h */
+
+#ifndef PED_FILESYS_H_INCLUDED
+#define PED_FILESYS_H_INCLUDED
+
+typedef struct _PedFileSystem          PedFileSystem;
+typedef struct _PedFileSystemType      PedFileSystemType;
+typedef struct _PedFileSystemAlias     PedFileSystemAlias;
+typedef const struct _PedFileSystemOps PedFileSystemOps;
+
+#include <parted/geom.h>
+#include <parted/constraint.h>
+#include <parted/timer.h>
+
+struct _PedFileSystemOps {
+       PedGeometry* (*probe) (PedGeometry* geom);
+};
+
+/**
+ * Structure describing type of file system
+ */
+struct _PedFileSystemType {
+       PedFileSystemType*      next;
+       const char* const       name;           /**< name of the file system type */
+        const int*              block_sizes;
+       PedFileSystemOps* const ops;
+};
+
+/**
+ * Structure describing a file system alias. This is separate from
+ * PedFileSystemType because probing only looks through the list of types,
+ * and does not probe aliases separately.
+ */
+struct _PedFileSystemAlias {
+       PedFileSystemAlias*     next;
+       PedFileSystemType*      fs_type;
+       const char*             alias;
+       int                     deprecated;
+};
+
+
+/**
+ * Structure describing file system
+ */
+struct _PedFileSystem {
+       PedFileSystemType*      type;           /**< the file system type */
+       PedGeometry*            geom;           /**< where the file system actually is */
+       int                     checked;        /**< 1 if the file system has been checked.
+                                                     0 otherwise. */
+
+       void*                   type_specific;
+
+};
+
+extern void ped_file_system_type_register (PedFileSystemType* type);
+extern void ped_file_system_type_unregister (PedFileSystemType* type);
+
+extern void ped_file_system_alias_register (PedFileSystemType* type,
+                                           const char* alias, int deprecated);
+extern void ped_file_system_alias_unregister (PedFileSystemType* type,
+                                             const char* alias);
+
+extern PedFileSystemType* ped_file_system_type_get (const char* name);
+extern PedFileSystemType*
+ped_file_system_type_get_next (const PedFileSystemType* fs_type);
+
+extern PedFileSystemAlias*
+ped_file_system_alias_get_next (const PedFileSystemAlias* fs_alias);
+
+extern PedFileSystemType* ped_file_system_probe (PedGeometry* geom);
+extern PedGeometry* ped_file_system_probe_specific (
+                       const PedFileSystemType* fs_type,
+                       PedGeometry* geom);
+
+#endif /* PED_FILESYS_H_INCLUDED */
+
+/** @} */
diff --git a/include/parted/geom.h b/include/parted/geom.h
new file mode 100644 (file)
index 0000000..0aea2b5
--- /dev/null
@@ -0,0 +1,85 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 1998-2001, 2005, 2007, 2009-2011 Free Software Foundation,
+    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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+/**
+ * \addtogroup PedGeometry
+ * @{
+ */
+
+/** \file geom.h */
+
+#ifndef PED_GEOM_H_INCLUDED
+#define PED_GEOM_H_INCLUDED
+
+typedef struct _PedGeometry    PedGeometry;
+
+/**
+ * Geometry of the partition
+ */
+struct _PedGeometry {
+       PedDevice*              dev;
+       PedSector               start;
+       PedSector               length;
+       PedSector               end;
+};
+
+#include <parted/device.h>
+#include <parted/timer.h>
+
+extern int ped_geometry_init (PedGeometry* geom, const PedDevice* dev,
+                             PedSector start, PedSector length);
+extern PedGeometry* ped_geometry_new (const PedDevice* dev, PedSector start,
+                                     PedSector length);
+extern PedGeometry* ped_geometry_duplicate (const PedGeometry* geom);
+extern PedGeometry* ped_geometry_intersect (const PedGeometry* a,
+                                           const PedGeometry* b);
+extern void ped_geometry_destroy (PedGeometry* geom);
+extern int ped_geometry_set (PedGeometry* geom, PedSector start,
+                            PedSector length);
+extern int ped_geometry_set_start (PedGeometry* geom, PedSector start);
+extern int ped_geometry_set_end (PedGeometry* geom, PedSector end);
+extern int ped_geometry_test_overlap (const PedGeometry* a,
+                                     const PedGeometry* b);
+extern int ped_geometry_test_inside (const PedGeometry* a,
+                                    const PedGeometry* b);
+extern int ped_geometry_test_equal (const PedGeometry* a, const PedGeometry* b);
+extern int ped_geometry_test_sector_inside (const PedGeometry* geom,
+                                           PedSector sect);
+
+extern int ped_geometry_read (const PedGeometry* geom, void* buffer,
+                             PedSector offset, PedSector count);
+extern int ped_geometry_read_alloc (const PedGeometry* geom, void** buffer,
+                                    PedSector offset, PedSector count);
+extern int ped_geometry_write (PedGeometry* geom, const void* buffer,
+                              PedSector offset, PedSector count);
+extern PedSector ped_geometry_check (PedGeometry* geom, void* buffer,
+                                    PedSector buffer_size, PedSector offset,
+                                    PedSector granularity, PedSector count,
+                                    PedTimer* timer);
+extern int ped_geometry_sync (PedGeometry* geom);
+extern int ped_geometry_sync_fast (PedGeometry* geom);
+
+/* returns -1 if "sector" is not within dest's space. */
+extern PedSector ped_geometry_map (const PedGeometry* dst,
+                                  const PedGeometry* src,
+                                  PedSector sector);
+
+#endif /* PED_GEOM_H_INCLUDED */
+
+/** @} */
diff --git a/include/parted/natmath.h b/include/parted/natmath.h
new file mode 100644 (file)
index 0000000..02c5ee8
--- /dev/null
@@ -0,0 +1,108 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 2000, 2007-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+/**
+ * \addtogroup PedAlignment
+ * @{
+ */
+
+/** \file natmath.h */
+
+#ifndef PED_NATMATH_H_INCLUDED
+#define PED_NATMATH_H_INCLUDED
+
+
+typedef struct _PedAlignment   PedAlignment;
+
+#include <parted/disk.h>
+#include <parted/device.h>
+#include <parted/geom.h>
+
+#define PED_MIN(a, b)  ( ((a)<(b)) ? (a) : (b) )
+#define PED_MAX(a, b)  ( ((a)>(b)) ? (a) : (b) )
+
+/* this is weird (I'm still not sure I should be doing this!)
+ *
+ * For the functions: new, destroy, duplicate and merge: the following values
+ * for align are valid:
+ *     * align == NULL  (!)            represents no solution
+ *     * align->grain_size == 0        represents a single solution
+ *                                     (align->offset)
+ *     * align->grain_size > 0         represents a set of solutions
+ *
+ * These are invalid:
+ *     * align->offset < 0             Note: this gets "normalized"
+ *     * align->grain_size < 0
+ *
+ * For the align_* operations, there must be a solution.  i.e. align != NULL
+ * All solutions must be greater than zero.
+ */
+
+struct _PedAlignment {
+       PedSector       offset;
+       PedSector       grain_size;
+};
+
+extern PedSector ped_round_up_to (PedSector sector, PedSector grain_size);
+extern PedSector ped_round_down_to (PedSector sector, PedSector grain_size);
+extern PedSector ped_round_to_nearest (PedSector sector, PedSector grain_size);
+extern PedSector ped_greatest_common_divisor (PedSector a, PedSector b);
+
+extern int ped_alignment_init (PedAlignment* align, PedSector offset,
+                              PedSector grain_size);
+extern PedAlignment* ped_alignment_new (PedSector offset, PedSector grain_size);
+extern void ped_alignment_destroy (PedAlignment* align);
+extern PedAlignment* ped_alignment_duplicate (const PedAlignment* align);
+extern PedAlignment* ped_alignment_intersect (const PedAlignment* a,
+                                             const PedAlignment* b);
+
+extern PedSector
+ped_alignment_align_up (const PedAlignment* align, const PedGeometry* geom,
+                       PedSector sector);
+extern PedSector
+ped_alignment_align_down (const PedAlignment* align, const PedGeometry* geom,
+                         PedSector sector);
+extern PedSector
+ped_alignment_align_nearest (const PedAlignment* align, const PedGeometry* geom,
+                            PedSector sector);
+
+extern int
+ped_alignment_is_aligned (const PedAlignment* align, const PedGeometry* geom,
+                         PedSector sector);
+
+extern const PedAlignment* ped_alignment_any;
+extern const PedAlignment* ped_alignment_none;
+
+static inline PedSector
+ped_div_round_up (PedSector numerator, PedSector divisor)
+{
+       return (numerator + divisor - 1) / divisor;
+}
+
+
+static inline PedSector
+ped_div_round_to_nearest (PedSector numerator, PedSector divisor)
+{
+       return (numerator + divisor/2) / divisor;
+}
+
+#endif /* PED_NATMATH_H_INCLUDED */
+
+/**
+ * @}
+ */
diff --git a/include/parted/parted.h b/include/parted/parted.h
new file mode 100644 (file)
index 0000000..f0e8847
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 1999-2001, 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef PARTED_H_INCLUDED
+#define PARTED_H_INCLUDED
+
+#define PED_DEFAULT_ALIGNMENT (1024 * 1024)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <parted/constraint.h>
+#include <parted/device.h>
+#include <parted/disk.h>
+#include <parted/exception.h>
+#include <parted/filesys.h>
+#include <parted/natmath.h>
+#include <parted/unit.h>
+
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+extern const char* ped_get_version ();
+
+extern void* ped_malloc (size_t size);
+extern void* ped_calloc (size_t size);
+extern int ped_realloc (void** ptr, size_t size);
+extern void free (void* ptr);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* PARTED_H_INCLUDED */
diff --git a/include/parted/timer.h b/include/parted/timer.h
new file mode 100644 (file)
index 0000000..de3cef5
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 2001-2002, 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+/**
+ * \addtogroup PedTimer
+ * @{
+ */
+
+/** \file timer.h */
+
+#ifndef PED_TIMER_H_INCLUDED
+#define PED_TIMER_H_INCLUDED
+
+#include <time.h>
+
+typedef struct _PedTimer PedTimer;
+
+typedef void PedTimerHandler (PedTimer* timer, void* context);
+
+/*
+ * Structure keeping track of progress and time
+ */
+struct _PedTimer {
+       float                   frac;           /**< fraction of operation done */
+       time_t                  start;          /**< time of start of op */
+       time_t                  now;            /**< time of last update (now!) */
+       time_t                  predicted_end;  /**< expected finish time */
+       const char*             state_name;     /**< eg: "copying data" */
+       PedTimerHandler*        handler;        /**< who to notify on updates */
+       void*                   context;        /**< context to pass to handler */
+};
+
+extern PedTimer* ped_timer_new (PedTimerHandler* handler, void* context);
+extern void ped_timer_destroy (PedTimer* timer);
+
+/* a nested timer automatically notifies it's parent.  You should only
+ * create one when you are going to use it (not before)
+ */
+extern PedTimer* ped_timer_new_nested (PedTimer* parent, float nest_frac);
+extern void ped_timer_destroy_nested (PedTimer* timer);
+
+extern void ped_timer_touch (PedTimer* timer);
+extern void ped_timer_reset (PedTimer* timer);
+extern void ped_timer_update (PedTimer* timer, float new_frac);
+extern void ped_timer_set_state_name (PedTimer* timer, const char* state_name);
+
+#endif /* PED_TIMER_H_INCLUDED */
+
+
+/** @} */
diff --git a/include/parted/unit.h b/include/parted/unit.h
new file mode 100644 (file)
index 0000000..ceb53ac
--- /dev/null
@@ -0,0 +1,91 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 2005, 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+/**
+ * \addtogroup PedUnit
+ * @{
+ */
+
+/** \file unit.h */
+
+#ifndef PED_UNIT_H_INCLUDED
+#define PED_UNIT_H_INCLUDED
+
+#include <parted/device.h>
+
+#include <stdarg.h>
+#include <stdio.h>
+
+#define PED_SECTOR_SIZE_DEFAULT   512LL
+#define PED_KILOBYTE_SIZE 1000LL
+#define PED_MEGABYTE_SIZE 1000000LL
+#define PED_GIGABYTE_SIZE 1000000000LL
+#define PED_TERABYTE_SIZE 1000000000000LL
+#define PED_KIBIBYTE_SIZE 1024LL
+#define PED_MEBIBYTE_SIZE 1048576LL
+#define PED_GIBIBYTE_SIZE 1073741824LL
+#define PED_TEBIBYTE_SIZE 1099511627776LL
+
+/**
+ * Human-friendly unit for representation of a location within device
+ */
+typedef enum {
+       PED_UNIT_SECTOR,
+       PED_UNIT_BYTE,
+       PED_UNIT_KILOBYTE,
+       PED_UNIT_MEGABYTE,
+       PED_UNIT_GIGABYTE,
+       PED_UNIT_TERABYTE,
+       PED_UNIT_COMPACT,
+       PED_UNIT_CYLINDER,
+       PED_UNIT_CHS,
+       PED_UNIT_PERCENT,
+       PED_UNIT_KIBIBYTE,
+       PED_UNIT_MEBIBYTE,
+       PED_UNIT_GIBIBYTE,
+       PED_UNIT_TEBIBYTE
+} PedUnit;
+
+#define PED_UNIT_FIRST PED_UNIT_SECTOR
+#define PED_UNIT_LAST PED_UNIT_TEBIBYTE
+
+extern long long ped_unit_get_size (const PedDevice* dev, PedUnit unit);
+extern const char* ped_unit_get_name (PedUnit unit);
+extern PedUnit ped_unit_get_by_name (const char* unit_name);
+
+extern void ped_unit_set_default (PedUnit unit);
+extern PedUnit ped_unit_get_default ();
+
+extern char* ped_unit_format_byte (const PedDevice* dev, PedSector byte);
+extern char* ped_unit_format_custom_byte (const PedDevice* dev, PedSector byte,
+                                         PedUnit unit);
+
+extern char* ped_unit_format (const PedDevice* dev, PedSector sector);
+extern char* ped_unit_format_custom (const PedDevice* dev, PedSector sector,
+                                    PedUnit unit);
+
+extern int ped_unit_parse (const char* str, const PedDevice* dev,
+                           PedSector* sector,
+                          PedGeometry** range);
+extern int ped_unit_parse_custom (const char* str, const PedDevice* dev,
+                                 PedUnit unit, PedSector* sector,
+                                 PedGeometry** range);
+
+#endif /* PED_UNIT_H_INCLUDED */
+
+/** @} */
diff --git a/include/parted/vtoc.h b/include/parted/vtoc.h
new file mode 100644 (file)
index 0000000..d79ce39
--- /dev/null
@@ -0,0 +1,336 @@
+/*
+ * File...........: s390-tools/dasdview/vtoc.h
+ * Author(s)......: Horst Hummel <horst.hummel@de.ibm.com>
+ * Bugreports.to..: <Linux390@de.ibm.com>
+ *
+ * This is a user-space copy of the kernel vtoc,h.
+ *
+ * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 2002
+ *
+ * History of changes (starts March 2002)
+ * 2002-03-12 initial
+ */
+
+#ifndef VTOC_H
+#define VTOC_H
+
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <errno.h>
+#include <ctype.h>
+#include <time.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+#include <sys/stat.h>
+#include <sys/ioctl.h>
+
+#define LINE_LENGTH 80
+#define VTOC_START_CC 0x0
+#define VTOC_START_HH 0x1
+#define FIRST_USABLE_CYL 1
+#define FIRST_USABLE_TRK 2
+
+#define DASD_3380_TYPE 13148
+#define DASD_3390_TYPE 13200
+#define DASD_9345_TYPE 37701
+
+#define DASD_3380_VALUE 0xbb60
+#define DASD_3390_VALUE 0xe5a2
+#define DASD_9345_VALUE 0xbc98
+
+#define VOLSER_LENGTH 6
+#define BIG_DISK_SIZE 0x10000
+
+
+typedef struct ttr              ttr_t;
+typedef struct cchhb            cchhb_t;
+typedef struct cchh             cchh_t;
+typedef struct labeldate        labeldate_t;
+typedef struct volume_label     volume_label_t;
+typedef struct cms_volume_label cms_volume_label_t;
+typedef struct ldl_volume_label ldl_volume_label_t;
+typedef struct extent           extent_t;
+typedef struct dev_const        dev_const_t;
+typedef struct format1_label    format1_label_t;
+typedef struct format4_label    format4_label_t;
+typedef struct ds5ext           ds5ext_t;
+typedef struct format5_label    format5_label_t;
+typedef struct ds7ext           ds7ext_t;
+typedef struct format7_label    format7_label_t;
+
+struct __attribute__ ((packed)) ttr {
+        u_int16_t tt;
+        u_int8_t  r;
+};
+
+struct  __attribute__ ((packed)) cchhb {
+        u_int16_t cc;
+        u_int16_t hh;
+        u_int8_t b;
+};
+
+struct __attribute__ ((packed)) cchh {
+        u_int16_t cc;
+        u_int16_t hh;
+};
+
+struct __attribute__ ((packed)) labeldate {
+        u_int8_t  year;
+        u_int16_t day;
+};
+
+struct __attribute__ ((packed)) volume_label {
+       char volkey[4];         /* volume key = volume label                 */
+       char vollbl[4];         /* volume label ("VOL1" in EBCDIC)           */
+       char volid[6];          /* volume identifier                         */
+       u_int8_t security;      /* security byte                             */
+       cchhb_t vtoc;           /* VTOC address                              */
+       char res1[5];           /* reserved                                  */
+       char cisize[4];         /* CI-size for FBA,...                       */
+                                /* ...blanks for CKD                         */
+       char blkperci[4];       /* no of blocks per CI (FBA), blanks for CKD */
+       char labperci[4];       /* no of labels per CI (FBA), blanks for CKD */
+       char res2[4];           /* reserved                                  */
+       char lvtoc[14];         /* owner code for LVTOC                      */
+       char res3[29];          /* reserved                                  */
+        char fudge[4];          /* filler to match length of ldl label       */
+};
+
+struct __attribute__ ((packed)) ldl_volume_label {
+       char vollbl[4];         /* Label identifier ("LNX1" in EBCDIC)       */
+        char volid[6];          /* Volume identifier                         */
+        char res3[69];          /* Reserved field                            */
+        char ldl_version[1];    /* Version number, valid for ldl format      */
+        u_int64_t formatted_blocks;  /* valid when ldl_version >= "2" (in
+                                        EBCDIC)                              */
+};
+
+/*
+ * See:
+ *     z/VM V5R2.0 CMS Planning and Administration
+ *     SC24-6078-01
+ *     What CMS Does / Disk and File Management / Disk File Format
+ * http://publib.boulder.ibm.com/infocenter/zvm/v5r4/topic/com.ibm.zvm.v54.dmsd1/hcsg2b1018.htm
+ */
+struct __attribute__ ((packed)) cms_volume_label {
+       char label_id[4];       /* Label identifier ("CMS1" in EBCDIC)       */
+       char vol_id[6];         /* Volume identifier                         */
+       char version_id[2];     /* Version identifier ("\0\0")               */
+       u_int32_t block_size;   /* Disk block size (512, 1024, 2048 or 4096) */
+       u_int32_t origin_ptr;   /* Disk origin pointer (4 or 5)              */
+       u_int32_t usable_count; /* Number of usable cylinders/blocks         */
+       u_int32_t formatted_count; /* Max # of formatted cylinders/blocks    */
+       u_int32_t block_count;  /* Disk size in CMS blocks                   */
+       u_int32_t used_count;   /* Number of CMS blocks in use               */
+       u_int32_t fst_size;     /* File Status Table (FST) size (64)         */
+       u_int32_t fst_count;    /* Number of FSTs per CMS block              */
+       char format_date[6];    /* Disk FORMAT date (YYMMDDhhmmss)           */
+       char reserved1[2];      /* Reserved fields.
+                                  The low-order bit of the first byte is a
+                                  century flag.  0 = 1900s, 1 = 2000s.
+                                  It is used in conjunction with
+                                  "format_date" to determine the
+                                  four-digit year.                          */
+       u_int32_t disk_offset;  /* Offset in blocks to the start of the
+                                  reserved file when the disk is reserved.
+                                  This is the number of blocks to skip
+                                  before the partition starts.              */
+       u_int32_t map_block;    /* Allocation map block with next hole       */
+       u_int32_t hblk_disp;    /* Displacement in HBLK data of next hole    */
+       u_int32_t user_disp;    /* Disp into user part of allocation map     */
+       u_int32_t open_files;   /* Count of SFS open files for this ADT.
+                                  open_files is not really part of the
+                                  volume label.  It is not used for
+                                  minidisks.                                */
+       char segment_name[8];   /* Name of the shared segment.
+                                  segment_name is not really part of the
+                                  volume label.  It is not stored on disk.  */
+};
+
+struct __attribute__ ((packed)) extent {
+        u_int8_t  typeind;      /* extent type indicator */
+        u_int8_t  seqno;        /* extent sequence number */
+        cchh_t llimit;          /* starting point of this extent */
+        cchh_t ulimit;          /* ending point of this extent */
+};
+
+struct __attribute__ ((packed)) dev_const {
+        u_int16_t DS4DSCYL;     /* number of logical cyls */
+        u_int16_t DS4DSTRK;     /* number of tracks in a logical cylinder  */
+        u_int16_t DS4DEVTK;     /* device track length */
+        u_int8_t  DS4DEVI;      /* non-last keyed record overhead */
+        u_int8_t  DS4DEVL;      /* last keyed record overhead */
+        u_int8_t  DS4DEVK;      /* non-keyed record overhead differential */
+        u_int8_t  DS4DEVFG;     /* flag byte */
+        u_int16_t DS4DEVTL;     /* device tolerance */
+        u_int8_t  DS4DEVDT;     /* number of DSCB's per track */
+        u_int8_t  DS4DEVDB;     /* number of directory blocks per track */
+};
+
+struct __attribute__ ((packed)) format1_label {
+       char  DS1DSNAM[44];     /* data set name                           */
+       u_int8_t  DS1FMTID;     /* format identifier                       */
+       char  DS1DSSN[6];       /* data set serial number                  */
+       u_int16_t DS1VOLSQ;     /* volume sequence number                  */
+       labeldate_t DS1CREDT;   /* creation date: ydd                      */
+       labeldate_t DS1EXPDT;   /* expiration date                         */
+       u_int8_t  DS1NOEPV;     /* number of extents on volume             */
+       u_int8_t  DS1NOBDB;     /* no. of bytes used in last direction blk */
+       u_int8_t  DS1FLAG1;     /* flag 1                                  */
+       char  DS1SYSCD[13];     /* system code                             */
+       labeldate_t DS1REFD;    /* date last referenced                    */
+       u_int8_t  DS1SMSFG;     /* system managed storage indicators       */
+       u_int8_t  DS1SCXTF;     /* sec. space extension flag byte          */
+       u_int16_t DS1SCXTV;     /* secondary space extension value         */
+       u_int8_t  DS1DSRG1;     /* data set organisation byte 1            */
+       u_int8_t  DS1DSRG2;     /* data set organisation byte 2            */
+       u_int8_t  DS1RECFM;     /* record format                           */
+       u_int8_t  DS1OPTCD;     /* option code                             */
+       u_int16_t DS1BLKL;      /* block length                            */
+       u_int16_t DS1LRECL;     /* record length                           */
+       u_int8_t  DS1KEYL;      /* key length                              */
+       u_int16_t DS1RKP;       /* relative key position                   */
+       u_int8_t  DS1DSIND;     /* data set indicators                     */
+       u_int8_t  DS1SCAL1;     /* secondary allocation flag byte          */
+       char DS1SCAL3[3];       /* secondary allocation quantity           */
+       ttr_t DS1LSTAR;         /* last used track and block on track      */
+       u_int16_t DS1TRBAL;     /* space remaining on last used track      */
+       u_int16_t res1;         /* reserved                                */
+       extent_t DS1EXT1;       /* first extent description                */
+       extent_t DS1EXT2;       /* second extent description               */
+       extent_t DS1EXT3;       /* third extent description                */
+       cchhb_t DS1PTRDS;       /* possible pointer to f2 or f3 DSCB       */
+};
+
+struct __attribute__ ((packed)) format4_label {
+       char  DS4KEYCD[44];     /* key code for VTOC labels: 44 times 0x04 */
+       u_int8_t  DS4IDFMT;     /* format identifier                       */
+       cchhb_t DS4HPCHR;       /* highest address of a format 1 DSCB      */
+       u_int16_t DS4DSREC;     /* number of available DSCB's              */
+       cchh_t DS4HCCHH;        /* CCHH of next available alternate track  */
+       u_int16_t DS4NOATK;     /* number of remaining alternate tracks    */
+       u_int8_t  DS4VTOCI;     /* VTOC indicators                         */
+       u_int8_t  DS4NOEXT;     /* number of extents in VTOC               */
+       u_int8_t  DS4SMSFG;     /* system managed storage indicators       */
+       u_int8_t  DS4DEVAC;     /* number of alternate cylinders.
+                                   Subtract from first two bytes of
+                                   DS4DEVSZ to get number of usable
+                                  cylinders. can be zero. valid
+                                  only if DS4DEVAV on.                    */
+       dev_const_t DS4DEVCT;   /* device constants                        */
+       char DS4AMTIM[8];       /* VSAM time stamp                         */
+       char DS4AMCAT[3];       /* VSAM catalog indicator                  */
+       char DS4R2TIM[8];       /* VSAM volume/catalog match time stamp    */
+       char res1[5];           /* reserved                                */
+       char DS4F6PTR[5];       /* pointer to first format 6 DSCB          */
+       extent_t DS4VTOCE;      /* VTOC extent description                 */
+       char res2[10];          /* reserved                                */
+       u_int8_t DS4EFLVL;      /* extended free-space management level    */
+       cchhb_t DS4EFPTR;       /* pointer to extended free-space info     */
+       char res3[9];           /* reserved                                */
+};
+
+struct __attribute__ ((packed)) ds5ext {
+       u_int16_t t;            /* RTA of the first track of free extent   */
+       u_int16_t fc;           /* number of whole cylinders in free ext.  */
+       u_int8_t  ft;           /* number of remaining free tracks         */
+};
+
+struct __attribute__ ((packed)) format5_label {
+       char DS5KEYID[4];       /* key identifier                          */
+       ds5ext_t DS5AVEXT;      /* first available (free-space) extent.    */
+       ds5ext_t DS5EXTAV[7];   /* seven available extents                 */
+       u_int8_t DS5FMTID;      /* format identifier                       */
+       ds5ext_t DS5MAVET[18];  /* eighteen available extents              */
+       cchhb_t DS5PTRDS;       /* pointer to next format5 DSCB            */
+};
+
+struct __attribute__ ((packed)) ds7ext {
+       u_int32_t a;            /* starting RTA value                      */
+       u_int32_t b;            /* ending RTA value + 1                    */
+};
+
+struct __attribute__ ((packed)) format7_label {
+       char DS7KEYID[4];       /* key identifier                          */
+       ds7ext_t DS7EXTNT[5];   /* space for 5 extent descriptions         */
+       u_int8_t DS7FMTID;      /* format identifier                       */
+       ds7ext_t DS7ADEXT[11];  /* space for 11 extent descriptions        */
+       char res1[2];           /* reserved                                */
+       cchhb_t DS7PTRDS;       /* pointer to next FMT7 DSCB               */
+};
+
+char *vtoc_ebcdic_enc (char const *source, char *target, int l);
+char *vtoc_ebcdic_dec (char const *source, char *target, int l);
+void vtoc_set_extent (extent_t *ext, u_int8_t typeind, u_int8_t seqno,
+                      cchh_t *lower, cchh_t *upper);
+void vtoc_set_cchh (cchh_t *addr, u_int16_t cc, u_int16_t hh);
+void vtoc_set_cchhb (cchhb_t *addr, u_int16_t cc, u_int16_t hh, u_int8_t b);
+void vtoc_set_date (labeldate_t *d, u_int8_t year, u_int16_t day);
+
+void vtoc_volume_label_init (volume_label_t *vlabel);
+
+int vtoc_read_volume_label (int fd, unsigned long vlabel_start,
+                            volume_label_t *vlabel);
+
+int vtoc_write_volume_label (int fd, unsigned long vlabel_start,
+                             volume_label_t const *vlabel);
+
+void vtoc_volume_label_set_volser (volume_label_t *vlabel, char const *volser);
+
+char *vtoc_volume_label_get_volser (volume_label_t *vlabel, char *volser);
+
+void vtoc_volume_label_set_key (volume_label_t *vlabel, char const *key);
+
+void vtoc_volume_label_set_label (volume_label_t *vlabel, char const *lbl);
+
+char *vtoc_volume_label_get_label (volume_label_t *vlabel, char *lbl);
+
+void vtoc_read_label (int fd, unsigned long position, format1_label_t *f1,
+                      format4_label_t *f4, format5_label_t *f5,
+                      format7_label_t *f7);
+
+void vtoc_write_label (int fd, unsigned long position,
+                      format1_label_t const *f1,
+                       format4_label_t const *f4,
+                      format5_label_t const *f5,
+                       format7_label_t const *f7);
+
+void vtoc_init_format1_label (char *volid, unsigned int blksize,
+                              extent_t *part_extent, format1_label_t *f1);
+
+void vtoc_init_format4_label (format4_label_t *f4lbl,
+                              unsigned int usable_partitions,
+                              unsigned int cylinders,
+                              unsigned int tracks,
+                              unsigned int blocks,
+                              unsigned int blksize,
+                              u_int16_t dev_type);
+
+void vtoc_update_format4_label (format4_label_t *f4, cchhb_t *highest_f1,
+                                u_int16_t unused_update);
+
+void vtoc_init_format5_label (format5_label_t *f5);
+
+void vtoc_update_format5_label_add (format5_label_t *f5, int verbose, int cyl,
+                                    int trk, u_int16_t a, u_int16_t b,
+                                    u_int8_t c);
+
+void vtoc_update_format5_label_del (format5_label_t *f5, int verbose, int cyl,
+                                    int trk, u_int16_t a, u_int16_t b,
+                                    u_int8_t c);
+
+void vtoc_init_format7_label (format7_label_t *f7);
+
+void vtoc_update_format7_label_add (format7_label_t *f7, int verbose,
+                                    u_int32_t a, u_int32_t b);
+
+void vtoc_update_format7_label_del (format7_label_t *f7, int verbose,
+                                    u_int32_t a, u_int32_t b);
+
+void vtoc_set_freespace(format4_label_t *f4, format5_label_t *f5,
+                        format7_label_t *f7, char ch, int verbose,
+                        u_int32_t start, u_int32_t stop, int cyl, int trk);
+
+#endif /* VTOC_H */
diff --git a/lib/Makefile.am b/lib/Makefile.am
new file mode 100644 (file)
index 0000000..6635f70
--- /dev/null
@@ -0,0 +1 @@
+include gnulib.mk
diff --git a/lib/Makefile.in b/lib/Makefile.in
new file mode 100644 (file)
index 0000000..b27a848
--- /dev/null
@@ -0,0 +1,2655 @@
+# Makefile.in generated by automake 1.11a from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in 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.
+
+@SET_MAKE@
+
+# Copyright (C) 2002-2011 Free Software Foundation, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License.  As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+# Reproduce by: gnulib-tool --import --dir=. --local-dir=gl --lib=libgnulib --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=gnulib-tests --aux-dir=build-aux --with-tests --avoid=dummy --no-conditional-dependencies --libtool --macro-prefix=gl alloca announce-gen argmatch assert calloc-gnu canonicalize-lgpl close closeout config-h configmake dirname do-release-commit-and-tag fdl fsync gettext-h git-version-gen gitlog-to-changelog gnu-web-doc-update gnumakefile gnupload inttypes lib-ignore long-options lseek maintainer-makefile malloc-gnu manywarnings mkstemp mktempd progname realloc-gnu rpmatch safe-read stdbool strdup-posix unlink update-copyright useless-if-before-free usleep vc-list-files version-etc-fsf warnings xstrtol xstrtoll
+
+
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+       $(srcdir)/Makefile.in $(srcdir)/config.h.in \
+       $(srcdir)/gnulib.mk alloca.c
+subdir = lib
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+       $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argmatch.m4 \
+       $(top_srcdir)/m4/assert.m4 $(top_srcdir)/m4/btowc.m4 \
+       $(top_srcdir)/m4/calloc.m4 $(top_srcdir)/m4/canonicalize.m4 \
+       $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
+       $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/configmake.m4 \
+       $(top_srcdir)/m4/dirname.m4 \
+       $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+       $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/environ.m4 \
+       $(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
+       $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fclose.m4 \
+       $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/fcntl_h.m4 \
+       $(top_srcdir)/m4/fflush.m4 $(top_srcdir)/m4/fpending.m4 \
+       $(top_srcdir)/m4/fpurge.m4 $(top_srcdir)/m4/freading.m4 \
+       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/fsync.m4 \
+       $(top_srcdir)/m4/ftell.m4 $(top_srcdir)/m4/ftello.m4 \
+       $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
+       $(top_srcdir)/m4/langinfo_h.m4 $(top_srcdir)/m4/lcmessage.m4 \
+       $(top_srcdir)/m4/lib-ignore.m4 $(top_srcdir)/m4/lib-ld.m4 \
+       $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/localcharset.m4 \
+       $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \
+       $(top_srcdir)/m4/locale-tr.m4 $(top_srcdir)/m4/locale-zh.m4 \
+       $(top_srcdir)/m4/locale_h.m4 $(top_srcdir)/m4/localename.m4 \
+       $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/long-options.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
+       $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+       $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
+       $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+       $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbtowc.m4 \
+       $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+       $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/multiarch.m4 \
+       $(top_srcdir)/m4/nl_langinfo.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/nocrash.m4 $(top_srcdir)/m4/o-direct.m4 \
+       $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/priv-set.m4 \
+       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+       $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+       $(top_srcdir)/m4/read.m4 $(top_srcdir)/m4/readlink.m4 \
+       $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/regex.m4 \
+       $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+       $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/setlocale.m4 \
+       $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/ssize_t.m4 \
+       $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdarg.m4 \
+       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strdup.m4 \
+       $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/strerror_r.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+       $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtoll.m4 \
+       $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/symlink.m4 \
+       $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+       $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/thread.m4 \
+       $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/time_h.m4 \
+       $(top_srcdir)/m4/ungetc.m4 $(top_srcdir)/m4/unistd_h.m4 \
+       $(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkdir.m4 \
+       $(top_srcdir)/m4/usleep.m4 $(top_srcdir)/m4/version-etc.m4 \
+       $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \
+       $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
+       $(top_srcdir)/m4/wcrtomb.m4 $(top_srcdir)/m4/wctob.m4 \
+       $(top_srcdir)/m4/wctomb.m4 $(top_srcdir)/m4/wctype_h.m4 \
+       $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+       $(top_srcdir)/m4/xstrndup.m4 $(top_srcdir)/m4/xstrtol.m4 \
+       $(top_srcdir)/m4/yield.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+am__dirstamp = $(am__leading_dot)dirstamp
+am_libgnulib_la_OBJECTS = exitfail.lo fd-hook.lo freading.lo \
+       localcharset.lo glthread/lock.lo malloca.lo progname.lo \
+       glthread/threadlib.lo version-etc.lo version-etc-fsf.lo \
+       xalloc-die.lo xstrndup.lo
+libgnulib_la_OBJECTS = $(am_libgnulib_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+libgnulib_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(libgnulib_la_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+       $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo "  CC      " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+SOURCES = $(libgnulib_la_SOURCES) $(EXTRA_libgnulib_la_SOURCES)
+DIST_SOURCES = $(libgnulib_la_SOURCES) $(EXTRA_libgnulib_la_SOURCES)
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+       html-recursive info-recursive install-data-recursive \
+       install-dvi-recursive install-exec-recursive \
+       install-html-recursive install-info-recursive \
+       install-pdf-recursive install-ps-recursive install-recursive \
+       installcheck-recursive installdirs-recursive pdf-recursive \
+       ps-recursive uninstall-recursive
+HEADERS = $(noinst_HEADERS)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
+  distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+       $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+       distdir
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+pkglibexecdir = @pkglibexecdir@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+BUILDINFO = @BUILDINFO@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHECK_CFLAGS = @CHECK_CFLAGS@
+CHECK_LIBS = @CHECK_LIBS@
+CONFIG_INCLUDE = @CONFIG_INCLUDE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DYNAMIC_LOADING = @DYNAMIC_LOADING@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENABLE_DEVICE_MAPPER = @ENABLE_DEVICE_MAPPER@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FACCESSAT = @GNULIB_FACCESSAT@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCHMODAT = @GNULIB_FCHMODAT@
+GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FCNTL = @GNULIB_FCNTL@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FGETC = @GNULIB_FGETC@
+GNULIB_FGETS = @GNULIB_FGETS@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREAD = @GNULIB_FREAD@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSCANF = @GNULIB_FSCANF@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSTATAT = @GNULIB_FSTATAT@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FUTIMENS = @GNULIB_FUTIMENS@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETC = @GNULIB_GETC@
+GNULIB_GETCHAR = @GNULIB_GETCHAR@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETGROUPS = @GNULIB_GETGROUPS@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETS = @GNULIB_GETS@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
+GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_ISWBLANK = @GNULIB_ISWBLANK@
+GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@
+GNULIB_LCHMOD = @GNULIB_LCHMOD@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LINKAT = @GNULIB_LINKAT@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_LSTAT = @GNULIB_LSTAT@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MBTOWC = @GNULIB_MBTOWC@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDIRAT = @GNULIB_MKDIRAT@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKFIFO = @GNULIB_MKFIFO@
+GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@
+GNULIB_MKNOD = @GNULIB_MKNOD@
+GNULIB_MKNODAT = @GNULIB_MKNODAT@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@
+GNULIB_MKTIME = @GNULIB_MKTIME@
+GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@
+GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@
+GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_OPEN = @GNULIB_OPEN@
+GNULIB_OPENAT = @GNULIB_OPENAT@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE = @GNULIB_PIPE@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_PREAD = @GNULIB_PREAD@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READ = @GNULIB_READ@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_READLINKAT = @GNULIB_READLINKAT@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_REALPATH = @GNULIB_REALPATH@
+GNULIB_REMOVE = @GNULIB_REMOVE@
+GNULIB_RENAME = @GNULIB_RENAME@
+GNULIB_RENAMEAT = @GNULIB_RENAMEAT@
+GNULIB_RMDIR = @GNULIB_RMDIR@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SETLOCALE = @GNULIB_SETLOCALE@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STAT = @GNULIB_STAT@
+GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRERROR_R = @GNULIB_STRERROR_R@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRPTIME = @GNULIB_STRPTIME@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_SYMLINK = @GNULIB_SYMLINK@
+GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
+GNULIB_TIMEGM = @GNULIB_TIMEGM@
+GNULIB_TIME_R = @GNULIB_TIME_R@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
+GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
+GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNLINK = @GNULIB_UNLINK@
+GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_USLEEP = @GNULIB_USLEEP@
+GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VFSCANF = @GNULIB_VFSCANF@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSCANF = @GNULIB_VSCANF@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCPCPY = @GNULIB_WCPCPY@
+GNULIB_WCPNCPY = @GNULIB_WCPNCPY@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@
+GNULIB_WCSCAT = @GNULIB_WCSCAT@
+GNULIB_WCSCHR = @GNULIB_WCSCHR@
+GNULIB_WCSCMP = @GNULIB_WCSCMP@
+GNULIB_WCSCOLL = @GNULIB_WCSCOLL@
+GNULIB_WCSCPY = @GNULIB_WCSCPY@
+GNULIB_WCSCSPN = @GNULIB_WCSCSPN@
+GNULIB_WCSDUP = @GNULIB_WCSDUP@
+GNULIB_WCSLEN = @GNULIB_WCSLEN@
+GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@
+GNULIB_WCSNCAT = @GNULIB_WCSNCAT@
+GNULIB_WCSNCMP = @GNULIB_WCSNCMP@
+GNULIB_WCSNCPY = @GNULIB_WCSNCPY@
+GNULIB_WCSNLEN = @GNULIB_WCSNLEN@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSPBRK = @GNULIB_WCSPBRK@
+GNULIB_WCSRCHR = @GNULIB_WCSRCHR@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCSSPN = @GNULIB_WCSSPN@
+GNULIB_WCSSTR = @GNULIB_WCSSTR@
+GNULIB_WCSTOK = @GNULIB_WCSTOK@
+GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@
+GNULIB_WCSXFRM = @GNULIB_WCSXFRM@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCTOMB = @GNULIB_WCTOMB@
+GNULIB_WCTRANS = @GNULIB_WCTRANS@
+GNULIB_WCTYPE = @GNULIB_WCTYPE@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WMEMCHR = @GNULIB_WMEMCHR@
+GNULIB_WMEMCMP = @GNULIB_WMEMCMP@
+GNULIB_WMEMCPY = @GNULIB_WMEMCPY@
+GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@
+GNULIB_WMEMSET = @GNULIB_WMEMSET@
+GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
+HAVE_CHOWN = @HAVE_CHOWN@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@
+HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SETENV = @HAVE_DECL_SETENV@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@
+HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_DUPLOCALE = @HAVE_DUPLOCALE@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
+HAVE_FCHMODAT = @HAVE_FCHMODAT@
+HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
+HAVE_FCNTL = @HAVE_FCNTL@
+HAVE_FEATURES_H = @HAVE_FEATURES_H@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSTATAT = @HAVE_FSTATAT@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_FUTIMENS = @HAVE_FUTIMENS@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETGROUPS = @HAVE_GETGROUPS@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETLOGIN = @HAVE_GETLOGIN@
+HAVE_GETOPT_H = @HAVE_GETOPT_H@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
+HAVE_GRANTPT = @HAVE_GRANTPT@
+HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWBLANK = @HAVE_ISWBLANK@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
+HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
+HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
+HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
+HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
+HAVE_LCHMOD = @HAVE_LCHMOD@
+HAVE_LCHOWN = @HAVE_LCHOWN@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_LSTAT = @HAVE_LSTAT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSLEN = @HAVE_MBSLEN@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMCHR = @HAVE_MEMCHR@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDIRAT = @HAVE_MKDIRAT@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKFIFO = @HAVE_MKFIFO@
+HAVE_MKFIFOAT = @HAVE_MKFIFOAT@
+HAVE_MKNOD = @HAVE_MKNOD@
+HAVE_MKNODAT = @HAVE_MKNODAT@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
+HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
+HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
+HAVE_OPENAT = @HAVE_OPENAT@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PIPE = @HAVE_PIPE@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PWRITE = @HAVE_PWRITE@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_READLINKAT = @HAVE_READLINKAT@
+HAVE_REALPATH = @HAVE_REALPATH@
+HAVE_RENAMEAT = @HAVE_RENAMEAT@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRPTIME = @HAVE_STRPTIME@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYMLINK = @HAVE_SYMLINK@
+HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_TIMEGM = @HAVE_TIMEGM@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_USLEEP = @HAVE_USLEEP@
+HAVE_UTIMENSAT = @HAVE_UTIMENSAT@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCPCPY = @HAVE_WCPCPY@
+HAVE_WCPNCPY = @HAVE_WCPNCPY@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSCASECMP = @HAVE_WCSCASECMP@
+HAVE_WCSCAT = @HAVE_WCSCAT@
+HAVE_WCSCHR = @HAVE_WCSCHR@
+HAVE_WCSCMP = @HAVE_WCSCMP@
+HAVE_WCSCOLL = @HAVE_WCSCOLL@
+HAVE_WCSCPY = @HAVE_WCSCPY@
+HAVE_WCSCSPN = @HAVE_WCSCSPN@
+HAVE_WCSDUP = @HAVE_WCSDUP@
+HAVE_WCSLEN = @HAVE_WCSLEN@
+HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@
+HAVE_WCSNCAT = @HAVE_WCSNCAT@
+HAVE_WCSNCMP = @HAVE_WCSNCMP@
+HAVE_WCSNCPY = @HAVE_WCSNCPY@
+HAVE_WCSNLEN = @HAVE_WCSNLEN@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSPBRK = @HAVE_WCSPBRK@
+HAVE_WCSRCHR = @HAVE_WCSRCHR@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCSSPN = @HAVE_WCSSPN@
+HAVE_WCSSTR = @HAVE_WCSSTR@
+HAVE_WCSTOK = @HAVE_WCSTOK@
+HAVE_WCSWIDTH = @HAVE_WCSWIDTH@
+HAVE_WCSXFRM = @HAVE_WCSXFRM@
+HAVE_WCTRANS_T = @HAVE_WCTRANS_T@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WCTYPE_T = @HAVE_WCTYPE_T@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WMEMCHR = @HAVE_WMEMCHR@
+HAVE_WMEMCMP = @HAVE_WMEMCMP@
+HAVE_WMEMCPY = @HAVE_WMEMCPY@
+HAVE_WMEMMOVE = @HAVE_WMEMMOVE@
+HAVE_WMEMSET = @HAVE_WMEMSET@
+HAVE_XLOCALE_H = @HAVE_XLOCALE_H@
+HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
+IGNORE_UNUSED_LIBRARIES_CFLAGS = @IGNORE_UNUSED_LIBRARIES_CFLAGS@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@
+INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMULTITHREAD = @LIBMULTITHREAD@
+LIBOBJS = @LIBOBJS@
+LIBPTH = @LIBPTH@
+LIBPTH_PREFIX = @LIBPTH_PREFIX@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTHREAD = @LIBTHREAD@
+LIBTOOL = @LIBTOOL@
+LIB_BLKID = @LIB_BLKID@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBMULTITHREAD = @LTLIBMULTITHREAD@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBPTH = @LTLIBPTH@
+LTLIBTHREAD = @LTLIBTHREAD@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
+NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@
+NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
+NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@
+NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FCNTL_H = @NEXT_FCNTL_H@
+NEXT_GETOPT_H = @NEXT_GETOPT_H@
+NEXT_INTTYPES_H = @NEXT_INTTYPES_H@
+NEXT_LANGINFO_H = @NEXT_LANGINFO_H@
+NEXT_LOCALE_H = @NEXT_LOCALE_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@
+NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@
+NEXT_TIME_H = @NEXT_TIME_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PARTED_USABLE_TEST_DIR = @PARTED_USABLE_TEST_DIR@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CALLOC = @REPLACE_CALLOC@
+REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP = @REPLACE_DUP@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@
+REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FCNTL = @REPLACE_FCNTL@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FSTAT = @REPLACE_FSTAT@
+REPLACE_FSTATAT = @REPLACE_FSTATAT@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_FUTIMENS = @REPLACE_FUTIMENS@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETDELIM = @REPLACE_GETDELIM@
+REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@
+REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LINK = @REPLACE_LINK@
+REPLACE_LINKAT = @REPLACE_LINKAT@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_LSTAT = @REPLACE_LSTAT@
+REPLACE_MALLOC = @REPLACE_MALLOC@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MBTOWC = @REPLACE_MBTOWC@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKDIR = @REPLACE_MKDIR@
+REPLACE_MKFIFO = @REPLACE_MKFIFO@
+REPLACE_MKNOD = @REPLACE_MKNOD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_MKTIME = @REPLACE_MKTIME@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_OPEN = @REPLACE_OPEN@
+REPLACE_OPENAT = @REPLACE_OPENAT@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PREAD = @REPLACE_PREAD@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
+REPLACE_READ = @REPLACE_READ@
+REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_REALLOC = @REPLACE_REALLOC@
+REPLACE_REALPATH = @REPLACE_REALPATH@
+REPLACE_REMOVE = @REPLACE_REMOVE@
+REPLACE_RENAME = @REPLACE_RENAME@
+REPLACE_RENAMEAT = @REPLACE_RENAMEAT@
+REPLACE_RMDIR = @REPLACE_RMDIR@
+REPLACE_SETENV = @REPLACE_SETENV@
+REPLACE_SETLOCALE = @REPLACE_SETLOCALE@
+REPLACE_SLEEP = @REPLACE_SLEEP@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STAT = @REPLACE_STAT@
+REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRERROR_R = @REPLACE_STRERROR_R@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
+REPLACE_STRNDUP = @REPLACE_STRNDUP@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
+REPLACE_SYMLINK = @REPLACE_SYMLINK@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
+REPLACE_UNLINK = @REPLACE_UNLINK@
+REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
+REPLACE_UNSETENV = @REPLACE_UNSETENV@
+REPLACE_USLEEP = @REPLACE_USLEEP@
+REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCTOMB = @REPLACE_WCTOMB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SELINUX_LIBS = @SELINUX_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
+UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
+UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+YIELD_LIB = @YIELD_LIB@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = 1.5 gnits subdir-objects
+SUBDIRS = 
+noinst_HEADERS = 
+noinst_LIBRARIES = 
+noinst_LTLIBRARIES = libgnulib.la
+EXTRA_DIST = alloca.c alloca.in.h $(top_srcdir)/build-aux/announce-gen \
+       $(top_srcdir)/build-aux/arg-nonnull.h argmatch.c argmatch.h \
+       btowc.c $(top_srcdir)/build-aux/c++defs.h calloc.c calloc.c \
+       canonicalize-lgpl.c close.c close-stream.c close-stream.h \
+       closeout.c closeout.h basename.c dirname.c stripslash.c \
+       basename-lgpl.c dirname-lgpl.c dirname.h stripslash.c \
+       $(top_srcdir)/build-aux/do-release-commit-and-tag dosname.h \
+       errno.in.h error.c error.h exitfail.h fclose.c fd-hook.h \
+       fflush.c stdio-impl.h fpending.c fpending.h fpurge.c \
+       stdio-impl.h freading.h stdio-impl.h fseeko.c stdio-impl.h \
+       fsync.c ftello.c stdio-impl.h \
+       $(top_srcdir)/build-aux/gendocs.sh getopt.c getopt.in.h \
+       getopt1.c getopt_int.h gettimeofday.c \
+       $(top_srcdir)/build-aux/git-version-gen \
+       $(top_srcdir)/build-aux/gitlog-to-changelog \
+       $(top_srcdir)/build-aux/gnu-web-doc-update \
+       $(top_srcdir)/GNUmakefile $(top_srcdir)/build-aux/gnupload \
+       $(top_srcdir)/build-aux/config.rpath intprops.h inttypes.in.h \
+       langinfo.in.h config.charset ref-add.sin ref-del.sin \
+       long-options.c long-options.h lseek.c lstat.c \
+       $(top_srcdir)/maint.mk malloc.c malloc.c malloca.h \
+       malloca.valgrind mbrtowc.c mbsinit.c mbtowc-impl.h mbtowc.c \
+       mkstemp.c $(top_srcdir)/build-aux/mktempd nl_langinfo.c \
+       pathmax.h quote.c quote.h quotearg.c quotearg.h read.c \
+       readlink.c realloc.c realloc.c regcomp.c regex.c regex.h \
+       regex_internal.c regex_internal.h regexec.c rpmatch.c \
+       safe-read.c safe-read.h sleep.c stat.c stdarg.in.h \
+       stdbool.in.h stddef.in.h stdint.in.h stdio.in.h stdlib.in.h \
+       strdup.c streq.h strerror-impl.h strerror.c strerror_r.c \
+       string.in.h strndup.c strnlen.c strtol.c strtoll.c strtol.c \
+       strtoul.c strtoull.c sys_stat.in.h sys_time.in.h tempname.c \
+       tempname.h $(top_srcdir)/build-aux/config.rpath time.in.h \
+       unistd.in.h unlink.c $(top_srcdir)/build-aux/update-copyright \
+       $(top_srcdir)/build-aux/useless-if-before-free usleep.c \
+       $(top_srcdir)/build-aux/vc-list-files verify.h \
+       $(top_srcdir)/build-aux/warn-on-use.h wchar.in.h wcrtomb.c \
+       wctype.in.h xalloc.h xmalloc.c xalloc-oversized.h \
+       xstrtol-error.c xstrtol.c xstrtol.h xstrtoul.c xstrtoll.c \
+       xstrtoull.c
+
+# The BUILT_SOURCES created by this Makefile snippet are not used via #include
+# statements but through direct file reference. Therefore this snippet must be
+# present in all Makefile.am that need it. This is ensured by the applicability
+# 'all' defined above.
+
+# The BUILT_SOURCES created by this Makefile snippet are not used via #include
+# statements but through direct file reference. Therefore this snippet must be
+# present in all Makefile.am that need it. This is ensured by the applicability
+# 'all' defined above.
+BUILT_SOURCES = $(ALLOCA_H) arg-nonnull.h c++defs.h configmake.h \
+       $(ERRNO_H) $(GETOPT_H) inttypes.h langinfo.h $(STDARG_H) \
+       $(STDBOOL_H) $(STDDEF_H) $(STDINT_H) stdio.h stdlib.h string.h \
+       sys/stat.h sys/time.h time.h unistd.h warn-on-use.h wchar.h \
+       wctype.h
+SUFFIXES = .sed .sin
+MOSTLYCLEANFILES = core *.stackdump alloca.h alloca.h-t arg-nonnull.h \
+       arg-nonnull.h-t c++defs.h c++defs.h-t errno.h errno.h-t \
+       getopt.h getopt.h-t inttypes.h inttypes.h-t langinfo.h \
+       langinfo.h-t stdarg.h stdarg.h-t stdbool.h stdbool.h-t \
+       stddef.h stddef.h-t stdint.h stdint.h-t stdio.h stdio.h-t \
+       stdlib.h stdlib.h-t string.h string.h-t sys/stat.h \
+       sys/stat.h-t sys/time.h sys/time.h-t time.h time.h-t unistd.h \
+       unistd.h-t warn-on-use.h warn-on-use.h-t wchar.h wchar.h-t \
+       wctype.h wctype.h-t
+MOSTLYCLEANDIRS = sys
+CLEANFILES = configmake.h configmake.h-t charset.alias ref-add.sed \
+       ref-del.sed
+DISTCLEANFILES = 
+MAINTAINERCLEANFILES = 
+AM_CPPFLAGS = 
+AM_CFLAGS = 
+libgnulib_la_SOURCES = exitfail.c fd-hook.c freading.c gettext.h \
+       localcharset.h localcharset.c glthread/lock.h glthread/lock.c \
+       malloca.c progname.h progname.c glthread/threadlib.c \
+       version-etc.h version-etc.c version-etc-fsf.c xalloc-die.c \
+       xstrndup.h xstrndup.c
+libgnulib_la_LIBADD = $(gl_LTLIBOBJS) @LTALLOCA@
+libgnulib_la_DEPENDENCIES = $(gl_LTLIBOBJS) @LTALLOCA@
+EXTRA_libgnulib_la_SOURCES = alloca.c argmatch.c btowc.c calloc.c \
+       calloc.c canonicalize-lgpl.c close.c close-stream.c closeout.c \
+       basename.c dirname.c stripslash.c basename-lgpl.c \
+       dirname-lgpl.c stripslash.c error.c fclose.c fflush.c \
+       fpending.c fpurge.c fseeko.c fsync.c ftello.c getopt.c \
+       getopt1.c gettimeofday.c long-options.c lseek.c lstat.c \
+       malloc.c malloc.c mbrtowc.c mbsinit.c mbtowc.c mkstemp.c \
+       nl_langinfo.c quote.c quotearg.c read.c readlink.c realloc.c \
+       realloc.c regcomp.c regex.c regex_internal.c regexec.c \
+       rpmatch.c safe-read.c sleep.c stat.c strdup.c strerror.c \
+       strerror_r.c strndup.c strnlen.c strtol.c strtoll.c strtol.c \
+       strtoul.c strtoull.c tempname.c unlink.c usleep.c wcrtomb.c \
+       xmalloc.c xstrtol-error.c xstrtol.c xstrtoul.c xstrtoll.c \
+       xstrtoull.c
+libgnulib_la_LDFLAGS = $(AM_LDFLAGS) -no-undefined $(LTLIBINTL) \
+       $(LTLIBTHREAD)
+ARG_NONNULL_H = arg-nonnull.h
+CXXDEFS_H = c++defs.h
+charset_alias = $(DESTDIR)$(libdir)/charset.alias
+charset_tmp = $(DESTDIR)$(libdir)/charset.tmp
+WARN_ON_USE_H = warn-on-use.h
+all: $(BUILT_SOURCES) config.h
+       $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .sed .sin .c .lo .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(srcdir)/gnulib.mk $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits lib/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnits lib/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+config.h: stamp-h1
+       @if test ! -f $@; then rm -f stamp-h1; else :; fi
+       @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
+
+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+       @rm -f stamp-h1
+       cd $(top_builddir) && $(SHELL) ./config.status lib/config.h
+$(srcdir)/config.h.in:  $(am__configure_deps) 
+       ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
+       rm -f stamp-h1
+       touch $@
+
+distclean-hdr:
+       -rm -f config.h stamp-h1
+
+clean-noinstLIBRARIES:
+       -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+
+clean-noinstLTLIBRARIES:
+       -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+       @list='$(noinst_LTLIBRARIES)'; \
+       locs=`for p in $$list; do echo $$p; done | \
+             sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+             sort -u`; \
+       test -z "$$locs" || { \
+         echo rm -f $${locs}; \
+         rm -f $${locs}; \
+       }
+glthread/$(am__dirstamp):
+       @$(MKDIR_P) glthread
+       @: > glthread/$(am__dirstamp)
+glthread/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) glthread/$(DEPDIR)
+       @: > glthread/$(DEPDIR)/$(am__dirstamp)
+glthread/lock.lo: glthread/$(am__dirstamp) \
+       glthread/$(DEPDIR)/$(am__dirstamp)
+glthread/threadlib.lo: glthread/$(am__dirstamp) \
+       glthread/$(DEPDIR)/$(am__dirstamp)
+libgnulib.la: $(libgnulib_la_OBJECTS) $(libgnulib_la_DEPENDENCIES) $(EXTRA_libgnulib_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(libgnulib_la_LINK)  $(libgnulib_la_OBJECTS) $(libgnulib_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+       -rm -f glthread/lock.$(OBJEXT)
+       -rm -f glthread/lock.lo
+       -rm -f glthread/threadlib.$(OBJEXT)
+       -rm -f glthread/threadlib.lo
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/alloca.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alloca.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/argmatch.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basename-lgpl.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basename.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/btowc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/calloc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/canonicalize-lgpl.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/close-stream.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/close.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/closeout.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dirname-lgpl.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dirname.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/error.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exitfail.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fclose.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fd-hook.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fflush.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fpending.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fpurge.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/freading.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fseeko.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fsync.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftello.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt1.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettimeofday.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/localcharset.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/long-options.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lseek.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lstat.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/malloc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/malloca.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbrtowc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbsinit.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbtowc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mkstemp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nl_langinfo.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/progname.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quote.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quotearg.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/read.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readlink.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/realloc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/regcomp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/regex.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/regex_internal.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/regexec.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rpmatch.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/safe-read.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sleep.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stat.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strdup.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strerror.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strerror_r.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stripslash.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strndup.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strnlen.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtol.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtoll.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtoul.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtoull.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tempname.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unlink.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/usleep.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version-etc-fsf.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version-etc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wcrtomb.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xalloc-die.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmalloc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrndup.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrtol-error.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrtol.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrtoll.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrtoul.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrtoull.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@glthread/$(DEPDIR)/lock.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@glthread/$(DEPDIR)/threadlib.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+@am__fastdepCC_TRUE@   $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+       -rm -rf glthread/.libs glthread/_libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+       @fail= failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+       @fail= failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       rev=''; for subdir in $$list; do \
+         if test "$$subdir" = "."; then :; else \
+           rev="$$subdir $$rev"; \
+         fi; \
+       done; \
+       rev="$$rev ."; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+ctags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+       done
+cscopelist-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \
+       done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+         empty_fix=.; \
+       else \
+         include_option=--include; \
+         empty_fix=; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test ! -f $$subdir/TAGS || \
+             set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -d "$(distdir)/$$subdir" \
+           || $(MKDIR_P) "$(distdir)/$$subdir" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+           $(am__relativize); \
+           new_distdir=$$reldir; \
+           dir1=$$subdir; dir2="$(top_distdir)"; \
+           $(am__relativize); \
+           new_top_distdir=$$reldir; \
+           echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+           echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+           ($(am__cd) $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$$new_top_distdir" \
+               distdir="$$new_distdir" \
+               am__remove_distdir=: \
+               am__skip_length_check=: \
+               am__skip_mode_fix=: \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) check-recursive
+all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(HEADERS) config.h \
+               all-local
+installdirs: installdirs-recursive
+installdirs-am:
+install: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+       -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+
+clean-generic:
+       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+       -rm -f glthread/$(DEPDIR)/$(am__dirstamp)
+       -rm -f glthread/$(am__dirstamp)
+       -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \
+       clean-noinstLTLIBRARIES mostlyclean-am
+
+distclean: distclean-recursive
+       -rm -rf $(DEPDIR) ./$(DEPDIR) glthread/$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-hdr distclean-local distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am: install-exec-local
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+       -rm -rf $(DEPDIR) ./$(DEPDIR) glthread/$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool mostlyclean-local
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-local
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \
+       cscopelist-recursive ctags-recursive install install-am \
+       install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+       all all-am all-local check check-am clean clean-generic \
+       clean-libtool clean-noinstLIBRARIES clean-noinstLTLIBRARIES \
+       cscopelist cscopelist-recursive ctags ctags-recursive \
+       distclean distclean-compile distclean-generic distclean-hdr \
+       distclean-libtool distclean-local distclean-tags distdir dvi \
+       dvi-am html html-am info info-am install install-am \
+       install-data install-data-am install-dvi install-dvi-am \
+       install-exec install-exec-am install-exec-local install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-ps install-ps-am \
+       install-strip installcheck installcheck-am installdirs \
+       installdirs-am maintainer-clean maintainer-clean-generic \
+       mostlyclean mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool mostlyclean-local pdf pdf-am ps ps-am tags \
+       tags-recursive uninstall uninstall-am uninstall-local
+
+
+# We need the following in order to create <alloca.h> when the system
+# doesn't have one that works with the given compiler.
+@GL_GENERATE_ALLOCA_H_TRUE@alloca.h: alloca.in.h $(top_builddir)/config.status
+@GL_GENERATE_ALLOCA_H_TRUE@    $(AM_V_GEN)rm -f $@-t $@ && \
+@GL_GENERATE_ALLOCA_H_TRUE@    { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+@GL_GENERATE_ALLOCA_H_TRUE@      cat $(srcdir)/alloca.in.h; \
+@GL_GENERATE_ALLOCA_H_TRUE@    } > $@-t && \
+@GL_GENERATE_ALLOCA_H_TRUE@    mv -f $@-t $@
+@GL_GENERATE_ALLOCA_H_FALSE@alloca.h: $(top_builddir)/config.status
+@GL_GENERATE_ALLOCA_H_FALSE@   rm -f $@
+# The arg-nonnull.h that gets inserted into generated .h files is the same as
+# build-aux/arg-nonnull.h, except that it has the copyright header cut off.
+arg-nonnull.h: $(top_srcdir)/build-aux/arg-nonnull.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       sed -n -e '/GL_ARG_NONNULL/,$$p' \
+         < $(top_srcdir)/build-aux/arg-nonnull.h \
+         > $@-t && \
+       mv $@-t $@
+# The c++defs.h that gets inserted into generated .h files is the same as
+# build-aux/c++defs.h, except that it has the copyright header cut off.
+c++defs.h: $(top_srcdir)/build-aux/c++defs.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       sed -n -e '/_GL_CXXDEFS/,$$p' \
+         < $(top_srcdir)/build-aux/c++defs.h \
+         > $@-t && \
+       mv $@-t $@
+
+# Listed in the same order as the GNU makefile conventions, and
+# provided by autoconf 2.59c+.
+# The Automake-defined pkg* macros are appended, in the order
+# listed in the Automake 1.10a+ documentation.
+configmake.h: Makefile
+       $(AM_V_GEN)rm -f $@-t && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         echo '#define PREFIX "$(prefix)"'; \
+         echo '#define EXEC_PREFIX "$(exec_prefix)"'; \
+         echo '#define BINDIR "$(bindir)"'; \
+         echo '#define SBINDIR "$(sbindir)"'; \
+         echo '#define LIBEXECDIR "$(libexecdir)"'; \
+         echo '#define DATAROOTDIR "$(datarootdir)"'; \
+         echo '#define DATADIR "$(datadir)"'; \
+         echo '#define SYSCONFDIR "$(sysconfdir)"'; \
+         echo '#define SHAREDSTATEDIR "$(sharedstatedir)"'; \
+         echo '#define LOCALSTATEDIR "$(localstatedir)"'; \
+         echo '#define INCLUDEDIR "$(includedir)"'; \
+         echo '#define OLDINCLUDEDIR "$(oldincludedir)"'; \
+         echo '#define DOCDIR "$(docdir)"'; \
+         echo '#define INFODIR "$(infodir)"'; \
+         echo '#define HTMLDIR "$(htmldir)"'; \
+         echo '#define DVIDIR "$(dvidir)"'; \
+         echo '#define PDFDIR "$(pdfdir)"'; \
+         echo '#define PSDIR "$(psdir)"'; \
+         echo '#define LIBDIR "$(libdir)"'; \
+         echo '#define LISPDIR "$(lispdir)"'; \
+         echo '#define LOCALEDIR "$(localedir)"'; \
+         echo '#define MANDIR "$(mandir)"'; \
+         echo '#define MANEXT "$(manext)"'; \
+         echo '#define PKGDATADIR "$(pkgdatadir)"'; \
+         echo '#define PKGINCLUDEDIR "$(pkgincludedir)"'; \
+         echo '#define PKGLIBDIR "$(pkglibdir)"'; \
+         echo '#define PKGLIBEXECDIR "$(pkglibexecdir)"'; \
+       } | sed '/""/d' > $@-t && \
+       if test -f $@ && cmp $@-t $@ > /dev/null; then \
+         rm -f $@-t; \
+       else \
+         rm -f $@; mv $@-t $@; \
+       fi
+
+# We need the following in order to create <errno.h> when the system
+# doesn't have one that is POSIX compliant.
+@GL_GENERATE_ERRNO_H_TRUE@errno.h: errno.in.h $(top_builddir)/config.status
+@GL_GENERATE_ERRNO_H_TRUE@     $(AM_V_GEN)rm -f $@-t $@ && \
+@GL_GENERATE_ERRNO_H_TRUE@     { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+@GL_GENERATE_ERRNO_H_TRUE@       sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+@GL_GENERATE_ERRNO_H_TRUE@           -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+@GL_GENERATE_ERRNO_H_TRUE@           -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+@GL_GENERATE_ERRNO_H_TRUE@           -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+@GL_GENERATE_ERRNO_H_TRUE@           -e 's|@''NEXT_ERRNO_H''@|$(NEXT_ERRNO_H)|g' \
+@GL_GENERATE_ERRNO_H_TRUE@           -e 's|@''EMULTIHOP_HIDDEN''@|$(EMULTIHOP_HIDDEN)|g' \
+@GL_GENERATE_ERRNO_H_TRUE@           -e 's|@''EMULTIHOP_VALUE''@|$(EMULTIHOP_VALUE)|g' \
+@GL_GENERATE_ERRNO_H_TRUE@           -e 's|@''ENOLINK_HIDDEN''@|$(ENOLINK_HIDDEN)|g' \
+@GL_GENERATE_ERRNO_H_TRUE@           -e 's|@''ENOLINK_VALUE''@|$(ENOLINK_VALUE)|g' \
+@GL_GENERATE_ERRNO_H_TRUE@           -e 's|@''EOVERFLOW_HIDDEN''@|$(EOVERFLOW_HIDDEN)|g' \
+@GL_GENERATE_ERRNO_H_TRUE@           -e 's|@''EOVERFLOW_VALUE''@|$(EOVERFLOW_VALUE)|g' \
+@GL_GENERATE_ERRNO_H_TRUE@           < $(srcdir)/errno.in.h; \
+@GL_GENERATE_ERRNO_H_TRUE@     } > $@-t && \
+@GL_GENERATE_ERRNO_H_TRUE@     mv $@-t $@
+@GL_GENERATE_ERRNO_H_FALSE@errno.h: $(top_builddir)/config.status
+@GL_GENERATE_ERRNO_H_FALSE@    rm -f $@
+
+# We need the following in order to create <getopt.h> when the system
+# doesn't have one that works with the given compiler.
+getopt.h: getopt.in.h $(top_builddir)/config.status $(ARG_NONNULL_H)
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''HAVE_GETOPT_H''@|$(HAVE_GETOPT_H)|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_GETOPT_H''@|$(NEXT_GETOPT_H)|g' \
+             -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+             < $(srcdir)/getopt.in.h; \
+       } > $@-t && \
+       mv -f $@-t $@
+
+distclean-local: clean-GNUmakefile
+clean-GNUmakefile:
+       test x'$(VPATH)' != x && rm -f $(top_builddir)/GNUmakefile || :
+
+# We need the following in order to create <inttypes.h> when the system
+# doesn't have one that works with the given compiler.
+inttypes.h: inttypes.in.h $(top_builddir)/config.status $(WARN_ON_USE_H) $(ARG_NONNULL_H)
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_INTTYPES_H''@|$(NEXT_INTTYPES_H)|g' \
+             -e 's/@''PRI_MACROS_BROKEN''@/$(PRI_MACROS_BROKEN)/g' \
+             -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \
+             -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \
+             -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \
+             -e 's/@''PRIPTR_PREFIX''@/$(PRIPTR_PREFIX)/g' \
+             -e 's/@''GNULIB_IMAXABS''@/$(GNULIB_IMAXABS)/g' \
+             -e 's/@''GNULIB_IMAXDIV''@/$(GNULIB_IMAXDIV)/g' \
+             -e 's/@''GNULIB_STRTOIMAX''@/$(GNULIB_STRTOIMAX)/g' \
+             -e 's/@''GNULIB_STRTOUMAX''@/$(GNULIB_STRTOUMAX)/g' \
+             -e 's/@''HAVE_DECL_IMAXABS''@/$(HAVE_DECL_IMAXABS)/g' \
+             -e 's/@''HAVE_DECL_IMAXDIV''@/$(HAVE_DECL_IMAXDIV)/g' \
+             -e 's/@''HAVE_DECL_STRTOIMAX''@/$(HAVE_DECL_STRTOIMAX)/g' \
+             -e 's/@''HAVE_DECL_STRTOUMAX''@/$(HAVE_DECL_STRTOUMAX)/g' \
+             -e 's/@''INT32_MAX_LT_INTMAX_MAX''@/$(INT32_MAX_LT_INTMAX_MAX)/g' \
+             -e 's/@''INT64_MAX_EQ_LONG_MAX''@/$(INT64_MAX_EQ_LONG_MAX)/g' \
+             -e 's/@''UINT32_MAX_LT_UINTMAX_MAX''@/$(UINT32_MAX_LT_UINTMAX_MAX)/g' \
+             -e 's/@''UINT64_MAX_EQ_ULONG_MAX''@/$(UINT64_MAX_EQ_ULONG_MAX)/g' \
+             -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
+             < $(srcdir)/inttypes.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+
+# We need the following in order to create an empty placeholder for
+# <langinfo.h> when the system doesn't have one.
+langinfo.h: langinfo.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H)
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''HAVE_LANGINFO_H''@|$(HAVE_LANGINFO_H)|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_LANGINFO_H''@|$(NEXT_LANGINFO_H)|g' \
+             -e 's|@''GNULIB_NL_LANGINFO''@|$(GNULIB_NL_LANGINFO)|g' \
+             -e 's|@''HAVE_LANGINFO_CODESET''@|$(HAVE_LANGINFO_CODESET)|g' \
+             -e 's|@''HAVE_LANGINFO_T_FMT_AMPM''@|$(HAVE_LANGINFO_T_FMT_AMPM)|g' \
+             -e 's|@''HAVE_LANGINFO_ERA''@|$(HAVE_LANGINFO_ERA)|g' \
+             -e 's|@''HAVE_LANGINFO_YESEXPR''@|$(HAVE_LANGINFO_YESEXPR)|g' \
+             -e 's|@''HAVE_NL_LANGINFO''@|$(HAVE_NL_LANGINFO)|g' \
+             -e 's|@''REPLACE_NL_LANGINFO''@|$(REPLACE_NL_LANGINFO)|g' \
+             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
+             < $(srcdir)/langinfo.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+
+# We need the following in order to install a simple file in $(libdir)
+# which is shared with other installed packages. We use a list of referencing
+# packages so that "make uninstall" will remove the file if and only if it
+# is not used by another installed package.
+# On systems with glibc-2.1 or newer, the file is redundant, therefore we
+# avoid installing it.
+
+all-local: charset.alias ref-add.sed ref-del.sed
+install-exec-local: install-exec-localcharset
+install-exec-localcharset: all-local
+       if test $(GLIBC21) = no; then \
+         case '$(host_os)' in \
+           darwin[56]*) \
+             need_charset_alias=true ;; \
+           darwin* | cygwin* | mingw* | pw32* | cegcc*) \
+             need_charset_alias=false ;; \
+           *) \
+             need_charset_alias=true ;; \
+         esac ; \
+       else \
+         need_charset_alias=false ; \
+       fi ; \
+       if $$need_charset_alias; then \
+         $(mkinstalldirs) $(DESTDIR)$(libdir) ; \
+       fi ; \
+       if test -f $(charset_alias); then \
+         sed -f ref-add.sed $(charset_alias) > $(charset_tmp) ; \
+         $(INSTALL_DATA) $(charset_tmp) $(charset_alias) ; \
+         rm -f $(charset_tmp) ; \
+       else \
+         if $$need_charset_alias; then \
+           sed -f ref-add.sed charset.alias > $(charset_tmp) ; \
+           $(INSTALL_DATA) $(charset_tmp) $(charset_alias) ; \
+           rm -f $(charset_tmp) ; \
+         fi ; \
+       fi
+
+uninstall-local: uninstall-localcharset
+uninstall-localcharset: all-local
+       if test -f $(charset_alias); then \
+         sed -f ref-del.sed $(charset_alias) > $(charset_tmp); \
+         if grep '^# Packages using this file: $$' $(charset_tmp) \
+             > /dev/null; then \
+           rm -f $(charset_alias); \
+         else \
+           $(INSTALL_DATA) $(charset_tmp) $(charset_alias); \
+         fi; \
+         rm -f $(charset_tmp); \
+       fi
+
+charset.alias: config.charset
+       $(AM_V_GEN)rm -f t-$@ $@ && \
+       $(SHELL) $(srcdir)/config.charset '$(host)' > t-$@ && \
+       mv t-$@ $@
+.sin.sed:
+       $(AM_V_GEN)rm -f t-$@ $@ && \
+       sed -e '/^#/d' -e 's/@''PACKAGE''@/$(PACKAGE)/g' $< > t-$@ && \
+       mv t-$@ $@
+
+# We need the following in order to create <stdarg.h> when the system
+# doesn't have one that works with the given compiler.
+@GL_GENERATE_STDARG_H_TRUE@stdarg.h: stdarg.in.h $(top_builddir)/config.status
+@GL_GENERATE_STDARG_H_TRUE@    $(AM_V_GEN)rm -f $@-t $@ && \
+@GL_GENERATE_STDARG_H_TRUE@    { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+@GL_GENERATE_STDARG_H_TRUE@      sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+@GL_GENERATE_STDARG_H_TRUE@          -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+@GL_GENERATE_STDARG_H_TRUE@          -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+@GL_GENERATE_STDARG_H_TRUE@          -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+@GL_GENERATE_STDARG_H_TRUE@          -e 's|@''NEXT_STDARG_H''@|$(NEXT_STDARG_H)|g' \
+@GL_GENERATE_STDARG_H_TRUE@          < $(srcdir)/stdarg.in.h; \
+@GL_GENERATE_STDARG_H_TRUE@    } > $@-t && \
+@GL_GENERATE_STDARG_H_TRUE@    mv $@-t $@
+@GL_GENERATE_STDARG_H_FALSE@stdarg.h: $(top_builddir)/config.status
+@GL_GENERATE_STDARG_H_FALSE@   rm -f $@
+
+# We need the following in order to create <stdbool.h> when the system
+# doesn't have one that works.
+@GL_GENERATE_STDBOOL_H_TRUE@stdbool.h: stdbool.in.h $(top_builddir)/config.status
+@GL_GENERATE_STDBOOL_H_TRUE@   $(AM_V_GEN)rm -f $@-t $@ && \
+@GL_GENERATE_STDBOOL_H_TRUE@   { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+@GL_GENERATE_STDBOOL_H_TRUE@     sed -e 's/@''HAVE__BOOL''@/$(HAVE__BOOL)/g' < $(srcdir)/stdbool.in.h; \
+@GL_GENERATE_STDBOOL_H_TRUE@   } > $@-t && \
+@GL_GENERATE_STDBOOL_H_TRUE@   mv $@-t $@
+@GL_GENERATE_STDBOOL_H_FALSE@stdbool.h: $(top_builddir)/config.status
+@GL_GENERATE_STDBOOL_H_FALSE@  rm -f $@
+
+# We need the following in order to create <stddef.h> when the system
+# doesn't have one that works with the given compiler.
+@GL_GENERATE_STDDEF_H_TRUE@stddef.h: stddef.in.h $(top_builddir)/config.status
+@GL_GENERATE_STDDEF_H_TRUE@    $(AM_V_GEN)rm -f $@-t $@ && \
+@GL_GENERATE_STDDEF_H_TRUE@    { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+@GL_GENERATE_STDDEF_H_TRUE@      sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+@GL_GENERATE_STDDEF_H_TRUE@          -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+@GL_GENERATE_STDDEF_H_TRUE@          -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+@GL_GENERATE_STDDEF_H_TRUE@          -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+@GL_GENERATE_STDDEF_H_TRUE@          -e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \
+@GL_GENERATE_STDDEF_H_TRUE@          -e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \
+@GL_GENERATE_STDDEF_H_TRUE@          -e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \
+@GL_GENERATE_STDDEF_H_TRUE@          < $(srcdir)/stddef.in.h; \
+@GL_GENERATE_STDDEF_H_TRUE@    } > $@-t && \
+@GL_GENERATE_STDDEF_H_TRUE@    mv $@-t $@
+@GL_GENERATE_STDDEF_H_FALSE@stddef.h: $(top_builddir)/config.status
+@GL_GENERATE_STDDEF_H_FALSE@   rm -f $@
+
+# We need the following in order to create <stdint.h> when the system
+# doesn't have one that works with the given compiler.
+@GL_GENERATE_STDINT_H_TRUE@stdint.h: stdint.in.h $(top_builddir)/config.status
+@GL_GENERATE_STDINT_H_TRUE@    $(AM_V_GEN)rm -f $@-t $@ && \
+@GL_GENERATE_STDINT_H_TRUE@    { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+@GL_GENERATE_STDINT_H_TRUE@      sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''HAVE_WCHAR_H''@/$(HAVE_WCHAR_H)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          < $(srcdir)/stdint.in.h; \
+@GL_GENERATE_STDINT_H_TRUE@    } > $@-t && \
+@GL_GENERATE_STDINT_H_TRUE@    mv $@-t $@
+@GL_GENERATE_STDINT_H_FALSE@stdint.h: $(top_builddir)/config.status
+@GL_GENERATE_STDINT_H_FALSE@   rm -f $@
+
+# We need the following in order to create <stdio.h> when the system
+# doesn't have one that works with the given compiler.
+stdio.h: stdio.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_STDIO_H''@|$(NEXT_STDIO_H)|g' \
+             -e 's|@''GNULIB_DPRINTF''@|$(GNULIB_DPRINTF)|g' \
+             -e 's|@''GNULIB_FCLOSE''@|$(GNULIB_FCLOSE)|g' \
+             -e 's|@''GNULIB_FFLUSH''@|$(GNULIB_FFLUSH)|g' \
+             -e 's|@''GNULIB_FGETC''@|$(GNULIB_FGETC)|g' \
+             -e 's|@''GNULIB_FGETS''@|$(GNULIB_FGETS)|g' \
+             -e 's|@''GNULIB_FOPEN''@|$(GNULIB_FOPEN)|g' \
+             -e 's|@''GNULIB_FPRINTF''@|$(GNULIB_FPRINTF)|g' \
+             -e 's|@''GNULIB_FPRINTF_POSIX''@|$(GNULIB_FPRINTF_POSIX)|g' \
+             -e 's|@''GNULIB_FPURGE''@|$(GNULIB_FPURGE)|g' \
+             -e 's|@''GNULIB_FPUTC''@|$(GNULIB_FPUTC)|g' \
+             -e 's|@''GNULIB_FPUTS''@|$(GNULIB_FPUTS)|g' \
+             -e 's|@''GNULIB_FREAD''@|$(GNULIB_FREAD)|g' \
+             -e 's|@''GNULIB_FREOPEN''@|$(GNULIB_FREOPEN)|g' \
+             -e 's|@''GNULIB_FSCANF''@|$(GNULIB_FSCANF)|g' \
+             -e 's|@''GNULIB_FSEEK''@|$(GNULIB_FSEEK)|g' \
+             -e 's|@''GNULIB_FSEEKO''@|$(GNULIB_FSEEKO)|g' \
+             -e 's|@''GNULIB_FTELL''@|$(GNULIB_FTELL)|g' \
+             -e 's|@''GNULIB_FTELLO''@|$(GNULIB_FTELLO)|g' \
+             -e 's|@''GNULIB_FWRITE''@|$(GNULIB_FWRITE)|g' \
+             -e 's|@''GNULIB_GETC''@|$(GNULIB_GETC)|g' \
+             -e 's|@''GNULIB_GETCHAR''@|$(GNULIB_GETCHAR)|g' \
+             -e 's|@''GNULIB_GETDELIM''@|$(GNULIB_GETDELIM)|g' \
+             -e 's|@''GNULIB_GETLINE''@|$(GNULIB_GETLINE)|g' \
+             -e 's|@''GNULIB_GETS''@|$(GNULIB_GETS)|g' \
+             -e 's|@''GNULIB_OBSTACK_PRINTF''@|$(GNULIB_OBSTACK_PRINTF)|g' \
+             -e 's|@''GNULIB_OBSTACK_PRINTF_POSIX''@|$(GNULIB_OBSTACK_PRINTF_POSIX)|g' \
+             -e 's|@''GNULIB_PERROR''@|$(GNULIB_PERROR)|g' \
+             -e 's|@''GNULIB_POPEN''@|$(GNULIB_POPEN)|g' \
+             -e 's|@''GNULIB_PRINTF''@|$(GNULIB_PRINTF)|g' \
+             -e 's|@''GNULIB_PRINTF_POSIX''@|$(GNULIB_PRINTF_POSIX)|g' \
+             -e 's|@''GNULIB_PUTC''@|$(GNULIB_PUTC)|g' \
+             -e 's|@''GNULIB_PUTCHAR''@|$(GNULIB_PUTCHAR)|g' \
+             -e 's|@''GNULIB_PUTS''@|$(GNULIB_PUTS)|g' \
+             -e 's|@''GNULIB_REMOVE''@|$(GNULIB_REMOVE)|g' \
+             -e 's|@''GNULIB_RENAME''@|$(GNULIB_RENAME)|g' \
+             -e 's|@''GNULIB_RENAMEAT''@|$(GNULIB_RENAMEAT)|g' \
+             -e 's|@''GNULIB_SCANF''@|$(GNULIB_SCANF)|g' \
+             -e 's|@''GNULIB_SNPRINTF''@|$(GNULIB_SNPRINTF)|g' \
+             -e 's|@''GNULIB_SPRINTF_POSIX''@|$(GNULIB_SPRINTF_POSIX)|g' \
+             -e 's|@''GNULIB_STDIO_H_NONBLOCKING''@|$(GNULIB_STDIO_H_NONBLOCKING)|g' \
+             -e 's|@''GNULIB_STDIO_H_SIGPIPE''@|$(GNULIB_STDIO_H_SIGPIPE)|g' \
+             -e 's|@''GNULIB_TMPFILE''@|$(GNULIB_TMPFILE)|g' \
+             -e 's|@''GNULIB_VASPRINTF''@|$(GNULIB_VASPRINTF)|g' \
+             -e 's|@''GNULIB_VDPRINTF''@|$(GNULIB_VDPRINTF)|g' \
+             -e 's|@''GNULIB_VFPRINTF''@|$(GNULIB_VFPRINTF)|g' \
+             -e 's|@''GNULIB_VFPRINTF_POSIX''@|$(GNULIB_VFPRINTF_POSIX)|g' \
+             -e 's|@''GNULIB_VFSCANF''@|$(GNULIB_VFSCANF)|g' \
+             -e 's|@''GNULIB_VSCANF''@|$(GNULIB_VSCANF)|g' \
+             -e 's|@''GNULIB_VPRINTF''@|$(GNULIB_VPRINTF)|g' \
+             -e 's|@''GNULIB_VPRINTF_POSIX''@|$(GNULIB_VPRINTF_POSIX)|g' \
+             -e 's|@''GNULIB_VSNPRINTF''@|$(GNULIB_VSNPRINTF)|g' \
+             -e 's|@''GNULIB_VSPRINTF_POSIX''@|$(GNULIB_VSPRINTF_POSIX)|g' \
+             < $(srcdir)/stdio.in.h | \
+         sed -e 's|@''HAVE_DECL_FPURGE''@|$(HAVE_DECL_FPURGE)|g' \
+             -e 's|@''HAVE_DECL_FSEEKO''@|$(HAVE_DECL_FSEEKO)|g' \
+             -e 's|@''HAVE_DECL_FTELLO''@|$(HAVE_DECL_FTELLO)|g' \
+             -e 's|@''HAVE_DECL_GETDELIM''@|$(HAVE_DECL_GETDELIM)|g' \
+             -e 's|@''HAVE_DECL_GETLINE''@|$(HAVE_DECL_GETLINE)|g' \
+             -e 's|@''HAVE_DECL_OBSTACK_PRINTF''@|$(HAVE_DECL_OBSTACK_PRINTF)|g' \
+             -e 's|@''HAVE_DECL_SNPRINTF''@|$(HAVE_DECL_SNPRINTF)|g' \
+             -e 's|@''HAVE_DECL_VSNPRINTF''@|$(HAVE_DECL_VSNPRINTF)|g' \
+             -e 's|@''HAVE_DPRINTF''@|$(HAVE_DPRINTF)|g' \
+             -e 's|@''HAVE_FSEEKO''@|$(HAVE_FSEEKO)|g' \
+             -e 's|@''HAVE_FTELLO''@|$(HAVE_FTELLO)|g' \
+             -e 's|@''HAVE_RENAMEAT''@|$(HAVE_RENAMEAT)|g' \
+             -e 's|@''HAVE_VASPRINTF''@|$(HAVE_VASPRINTF)|g' \
+             -e 's|@''HAVE_VDPRINTF''@|$(HAVE_VDPRINTF)|g' \
+             -e 's|@''REPLACE_DPRINTF''@|$(REPLACE_DPRINTF)|g' \
+             -e 's|@''REPLACE_FCLOSE''@|$(REPLACE_FCLOSE)|g' \
+             -e 's|@''REPLACE_FFLUSH''@|$(REPLACE_FFLUSH)|g' \
+             -e 's|@''REPLACE_FOPEN''@|$(REPLACE_FOPEN)|g' \
+             -e 's|@''REPLACE_FPRINTF''@|$(REPLACE_FPRINTF)|g' \
+             -e 's|@''REPLACE_FPURGE''@|$(REPLACE_FPURGE)|g' \
+             -e 's|@''REPLACE_FREOPEN''@|$(REPLACE_FREOPEN)|g' \
+             -e 's|@''REPLACE_FSEEK''@|$(REPLACE_FSEEK)|g' \
+             -e 's|@''REPLACE_FSEEKO''@|$(REPLACE_FSEEKO)|g' \
+             -e 's|@''REPLACE_FTELL''@|$(REPLACE_FTELL)|g' \
+             -e 's|@''REPLACE_FTELLO''@|$(REPLACE_FTELLO)|g' \
+             -e 's|@''REPLACE_GETDELIM''@|$(REPLACE_GETDELIM)|g' \
+             -e 's|@''REPLACE_GETLINE''@|$(REPLACE_GETLINE)|g' \
+             -e 's|@''REPLACE_OBSTACK_PRINTF''@|$(REPLACE_OBSTACK_PRINTF)|g' \
+             -e 's|@''REPLACE_PERROR''@|$(REPLACE_PERROR)|g' \
+             -e 's|@''REPLACE_POPEN''@|$(REPLACE_POPEN)|g' \
+             -e 's|@''REPLACE_PRINTF''@|$(REPLACE_PRINTF)|g' \
+             -e 's|@''REPLACE_REMOVE''@|$(REPLACE_REMOVE)|g' \
+             -e 's|@''REPLACE_RENAME''@|$(REPLACE_RENAME)|g' \
+             -e 's|@''REPLACE_RENAMEAT''@|$(REPLACE_RENAMEAT)|g' \
+             -e 's|@''REPLACE_SNPRINTF''@|$(REPLACE_SNPRINTF)|g' \
+             -e 's|@''REPLACE_SPRINTF''@|$(REPLACE_SPRINTF)|g' \
+             -e 's|@''REPLACE_STDIO_READ_FUNCS''@|$(REPLACE_STDIO_READ_FUNCS)|g' \
+             -e 's|@''REPLACE_STDIO_WRITE_FUNCS''@|$(REPLACE_STDIO_WRITE_FUNCS)|g' \
+             -e 's|@''REPLACE_TMPFILE''@|$(REPLACE_TMPFILE)|g' \
+             -e 's|@''REPLACE_VASPRINTF''@|$(REPLACE_VASPRINTF)|g' \
+             -e 's|@''REPLACE_VDPRINTF''@|$(REPLACE_VDPRINTF)|g' \
+             -e 's|@''REPLACE_VFPRINTF''@|$(REPLACE_VFPRINTF)|g' \
+             -e 's|@''REPLACE_VPRINTF''@|$(REPLACE_VPRINTF)|g' \
+             -e 's|@''REPLACE_VSNPRINTF''@|$(REPLACE_VSNPRINTF)|g' \
+             -e 's|@''REPLACE_VSPRINTF''@|$(REPLACE_VSPRINTF)|g' \
+             -e 's|@''ASM_SYMBOL_PREFIX''@|$(ASM_SYMBOL_PREFIX)|g' \
+             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+             -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
+       } > $@-t && \
+       mv $@-t $@
+
+# We need the following in order to create <stdlib.h> when the system
+# doesn't have one that works with the given compiler.
+stdlib.h: stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_STDLIB_H''@|$(NEXT_STDLIB_H)|g' \
+             -e 's|@''GNULIB__EXIT''@|$(GNULIB__EXIT)|g' \
+             -e 's|@''GNULIB_ATOLL''@|$(GNULIB_ATOLL)|g' \
+             -e 's|@''GNULIB_CALLOC_POSIX''@|$(GNULIB_CALLOC_POSIX)|g' \
+             -e 's|@''GNULIB_CANONICALIZE_FILE_NAME''@|$(GNULIB_CANONICALIZE_FILE_NAME)|g' \
+             -e 's|@''GNULIB_GETLOADAVG''@|$(GNULIB_GETLOADAVG)|g' \
+             -e 's|@''GNULIB_GETSUBOPT''@|$(GNULIB_GETSUBOPT)|g' \
+             -e 's|@''GNULIB_GRANTPT''@|$(GNULIB_GRANTPT)|g' \
+             -e 's|@''GNULIB_MALLOC_POSIX''@|$(GNULIB_MALLOC_POSIX)|g' \
+             -e 's|@''GNULIB_MBTOWC''@|$(GNULIB_MBTOWC)|g' \
+             -e 's|@''GNULIB_MKDTEMP''@|$(GNULIB_MKDTEMP)|g' \
+             -e 's|@''GNULIB_MKOSTEMP''@|$(GNULIB_MKOSTEMP)|g' \
+             -e 's|@''GNULIB_MKOSTEMPS''@|$(GNULIB_MKOSTEMPS)|g' \
+             -e 's|@''GNULIB_MKSTEMP''@|$(GNULIB_MKSTEMP)|g' \
+             -e 's|@''GNULIB_MKSTEMPS''@|$(GNULIB_MKSTEMPS)|g' \
+             -e 's|@''GNULIB_PTSNAME''@|$(GNULIB_PTSNAME)|g' \
+             -e 's|@''GNULIB_PUTENV''@|$(GNULIB_PUTENV)|g' \
+             -e 's|@''GNULIB_RANDOM_R''@|$(GNULIB_RANDOM_R)|g' \
+             -e 's|@''GNULIB_REALLOC_POSIX''@|$(GNULIB_REALLOC_POSIX)|g' \
+             -e 's|@''GNULIB_REALPATH''@|$(GNULIB_REALPATH)|g' \
+             -e 's|@''GNULIB_RPMATCH''@|$(GNULIB_RPMATCH)|g' \
+             -e 's|@''GNULIB_SETENV''@|$(GNULIB_SETENV)|g' \
+             -e 's|@''GNULIB_STRTOD''@|$(GNULIB_STRTOD)|g' \
+             -e 's|@''GNULIB_STRTOLL''@|$(GNULIB_STRTOLL)|g' \
+             -e 's|@''GNULIB_STRTOULL''@|$(GNULIB_STRTOULL)|g' \
+             -e 's|@''GNULIB_SYSTEM_POSIX''@|$(GNULIB_SYSTEM_POSIX)|g' \
+             -e 's|@''GNULIB_UNLOCKPT''@|$(GNULIB_UNLOCKPT)|g' \
+             -e 's|@''GNULIB_UNSETENV''@|$(GNULIB_UNSETENV)|g' \
+             -e 's|@''GNULIB_WCTOMB''@|$(GNULIB_WCTOMB)|g' \
+             < $(srcdir)/stdlib.in.h | \
+         sed -e 's|@''HAVE__EXIT''@|$(HAVE__EXIT)|g' \
+             -e 's|@''HAVE_ATOLL''@|$(HAVE_ATOLL)|g' \
+             -e 's|@''HAVE_CANONICALIZE_FILE_NAME''@|$(HAVE_CANONICALIZE_FILE_NAME)|g' \
+             -e 's|@''HAVE_DECL_GETLOADAVG''@|$(HAVE_DECL_GETLOADAVG)|g' \
+             -e 's|@''HAVE_GETSUBOPT''@|$(HAVE_GETSUBOPT)|g' \
+             -e 's|@''HAVE_GRANTPT''@|$(HAVE_GRANTPT)|g' \
+             -e 's|@''HAVE_MKDTEMP''@|$(HAVE_MKDTEMP)|g' \
+             -e 's|@''HAVE_MKOSTEMP''@|$(HAVE_MKOSTEMP)|g' \
+             -e 's|@''HAVE_MKOSTEMPS''@|$(HAVE_MKOSTEMPS)|g' \
+             -e 's|@''HAVE_MKSTEMP''@|$(HAVE_MKSTEMP)|g' \
+             -e 's|@''HAVE_MKSTEMPS''@|$(HAVE_MKSTEMPS)|g' \
+             -e 's|@''HAVE_PTSNAME''@|$(HAVE_PTSNAME)|g' \
+             -e 's|@''HAVE_RANDOM_H''@|$(HAVE_RANDOM_H)|g' \
+             -e 's|@''HAVE_RANDOM_R''@|$(HAVE_RANDOM_R)|g' \
+             -e 's|@''HAVE_REALPATH''@|$(HAVE_REALPATH)|g' \
+             -e 's|@''HAVE_RPMATCH''@|$(HAVE_RPMATCH)|g' \
+             -e 's|@''HAVE_DECL_SETENV''@|$(HAVE_DECL_SETENV)|g' \
+             -e 's|@''HAVE_STRTOD''@|$(HAVE_STRTOD)|g' \
+             -e 's|@''HAVE_STRTOLL''@|$(HAVE_STRTOLL)|g' \
+             -e 's|@''HAVE_STRTOULL''@|$(HAVE_STRTOULL)|g' \
+             -e 's|@''HAVE_STRUCT_RANDOM_DATA''@|$(HAVE_STRUCT_RANDOM_DATA)|g' \
+             -e 's|@''HAVE_SYS_LOADAVG_H''@|$(HAVE_SYS_LOADAVG_H)|g' \
+             -e 's|@''HAVE_UNLOCKPT''@|$(HAVE_UNLOCKPT)|g' \
+             -e 's|@''HAVE_DECL_UNSETENV''@|$(HAVE_DECL_UNSETENV)|g' \
+             -e 's|@''REPLACE_CALLOC''@|$(REPLACE_CALLOC)|g' \
+             -e 's|@''REPLACE_CANONICALIZE_FILE_NAME''@|$(REPLACE_CANONICALIZE_FILE_NAME)|g' \
+             -e 's|@''REPLACE_MALLOC''@|$(REPLACE_MALLOC)|g' \
+             -e 's|@''REPLACE_MBTOWC''@|$(REPLACE_MBTOWC)|g' \
+             -e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \
+             -e 's|@''REPLACE_PUTENV''@|$(REPLACE_PUTENV)|g' \
+             -e 's|@''REPLACE_REALLOC''@|$(REPLACE_REALLOC)|g' \
+             -e 's|@''REPLACE_REALPATH''@|$(REPLACE_REALPATH)|g' \
+             -e 's|@''REPLACE_SETENV''@|$(REPLACE_SETENV)|g' \
+             -e 's|@''REPLACE_STRTOD''@|$(REPLACE_STRTOD)|g' \
+             -e 's|@''REPLACE_UNSETENV''@|$(REPLACE_UNSETENV)|g' \
+             -e 's|@''REPLACE_WCTOMB''@|$(REPLACE_WCTOMB)|g' \
+             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+             -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
+       } > $@-t && \
+       mv $@-t $@
+
+# We need the following in order to create <string.h> when the system
+# doesn't have one that works with the given compiler.
+string.h: string.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_STRING_H''@|$(NEXT_STRING_H)|g' \
+             -e 's|@''GNULIB_MBSLEN''@|$(GNULIB_MBSLEN)|g' \
+             -e 's|@''GNULIB_MBSNLEN''@|$(GNULIB_MBSNLEN)|g' \
+             -e 's|@''GNULIB_MBSCHR''@|$(GNULIB_MBSCHR)|g' \
+             -e 's|@''GNULIB_MBSRCHR''@|$(GNULIB_MBSRCHR)|g' \
+             -e 's|@''GNULIB_MBSSTR''@|$(GNULIB_MBSSTR)|g' \
+             -e 's|@''GNULIB_MBSCASECMP''@|$(GNULIB_MBSCASECMP)|g' \
+             -e 's|@''GNULIB_MBSNCASECMP''@|$(GNULIB_MBSNCASECMP)|g' \
+             -e 's|@''GNULIB_MBSPCASECMP''@|$(GNULIB_MBSPCASECMP)|g' \
+             -e 's|@''GNULIB_MBSCASESTR''@|$(GNULIB_MBSCASESTR)|g' \
+             -e 's|@''GNULIB_MBSCSPN''@|$(GNULIB_MBSCSPN)|g' \
+             -e 's|@''GNULIB_MBSPBRK''@|$(GNULIB_MBSPBRK)|g' \
+             -e 's|@''GNULIB_MBSSPN''@|$(GNULIB_MBSSPN)|g' \
+             -e 's|@''GNULIB_MBSSEP''@|$(GNULIB_MBSSEP)|g' \
+             -e 's|@''GNULIB_MBSTOK_R''@|$(GNULIB_MBSTOK_R)|g' \
+             -e 's|@''GNULIB_MEMCHR''@|$(GNULIB_MEMCHR)|g' \
+             -e 's|@''GNULIB_MEMMEM''@|$(GNULIB_MEMMEM)|g' \
+             -e 's|@''GNULIB_MEMPCPY''@|$(GNULIB_MEMPCPY)|g' \
+             -e 's|@''GNULIB_MEMRCHR''@|$(GNULIB_MEMRCHR)|g' \
+             -e 's|@''GNULIB_RAWMEMCHR''@|$(GNULIB_RAWMEMCHR)|g' \
+             -e 's|@''GNULIB_STPCPY''@|$(GNULIB_STPCPY)|g' \
+             -e 's|@''GNULIB_STPNCPY''@|$(GNULIB_STPNCPY)|g' \
+             -e 's|@''GNULIB_STRCHRNUL''@|$(GNULIB_STRCHRNUL)|g' \
+             -e 's|@''GNULIB_STRDUP''@|$(GNULIB_STRDUP)|g' \
+             -e 's|@''GNULIB_STRNCAT''@|$(GNULIB_STRNCAT)|g' \
+             -e 's|@''GNULIB_STRNDUP''@|$(GNULIB_STRNDUP)|g' \
+             -e 's|@''GNULIB_STRNLEN''@|$(GNULIB_STRNLEN)|g' \
+             -e 's|@''GNULIB_STRPBRK''@|$(GNULIB_STRPBRK)|g' \
+             -e 's|@''GNULIB_STRSEP''@|$(GNULIB_STRSEP)|g' \
+             -e 's|@''GNULIB_STRSTR''@|$(GNULIB_STRSTR)|g' \
+             -e 's|@''GNULIB_STRCASESTR''@|$(GNULIB_STRCASESTR)|g' \
+             -e 's|@''GNULIB_STRTOK_R''@|$(GNULIB_STRTOK_R)|g' \
+             -e 's|@''GNULIB_STRERROR''@|$(GNULIB_STRERROR)|g' \
+             -e 's|@''GNULIB_STRERROR_R''@|$(GNULIB_STRERROR_R)|g' \
+             -e 's|@''GNULIB_STRSIGNAL''@|$(GNULIB_STRSIGNAL)|g' \
+             -e 's|@''GNULIB_STRVERSCMP''@|$(GNULIB_STRVERSCMP)|g' \
+             < $(srcdir)/string.in.h | \
+         sed -e 's|@''HAVE_MBSLEN''@|$(HAVE_MBSLEN)|g' \
+             -e 's|@''HAVE_MEMCHR''@|$(HAVE_MEMCHR)|g' \
+             -e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \
+             -e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \
+             -e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \
+             -e 's|@''HAVE_RAWMEMCHR''@|$(HAVE_RAWMEMCHR)|g' \
+             -e 's|@''HAVE_STPCPY''@|$(HAVE_STPCPY)|g' \
+             -e 's|@''HAVE_STPNCPY''@|$(HAVE_STPNCPY)|g' \
+             -e 's|@''HAVE_STRCHRNUL''@|$(HAVE_STRCHRNUL)|g' \
+             -e 's|@''HAVE_DECL_STRDUP''@|$(HAVE_DECL_STRDUP)|g' \
+             -e 's|@''HAVE_DECL_STRNDUP''@|$(HAVE_DECL_STRNDUP)|g' \
+             -e 's|@''HAVE_DECL_STRNLEN''@|$(HAVE_DECL_STRNLEN)|g' \
+             -e 's|@''HAVE_STRPBRK''@|$(HAVE_STRPBRK)|g' \
+             -e 's|@''HAVE_STRSEP''@|$(HAVE_STRSEP)|g' \
+             -e 's|@''HAVE_STRCASESTR''@|$(HAVE_STRCASESTR)|g' \
+             -e 's|@''HAVE_DECL_STRTOK_R''@|$(HAVE_DECL_STRTOK_R)|g' \
+             -e 's|@''HAVE_DECL_STRERROR_R''@|$(HAVE_DECL_STRERROR_R)|g' \
+             -e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \
+             -e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \
+             -e 's|@''REPLACE_STPNCPY''@|$(REPLACE_STPNCPY)|g' \
+             -e 's|@''REPLACE_MEMCHR''@|$(REPLACE_MEMCHR)|g' \
+             -e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \
+             -e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \
+             -e 's|@''REPLACE_STRCHRNUL''@|$(REPLACE_STRCHRNUL)|g' \
+             -e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \
+             -e 's|@''REPLACE_STRSTR''@|$(REPLACE_STRSTR)|g' \
+             -e 's|@''REPLACE_STRERROR''@|$(REPLACE_STRERROR)|g' \
+             -e 's|@''REPLACE_STRERROR_R''@|$(REPLACE_STRERROR_R)|g' \
+             -e 's|@''REPLACE_STRNCAT''@|$(REPLACE_STRNCAT)|g' \
+             -e 's|@''REPLACE_STRNDUP''@|$(REPLACE_STRNDUP)|g' \
+             -e 's|@''REPLACE_STRNLEN''@|$(REPLACE_STRNLEN)|g' \
+             -e 's|@''REPLACE_STRSIGNAL''@|$(REPLACE_STRSIGNAL)|g' \
+             -e 's|@''REPLACE_STRTOK_R''@|$(REPLACE_STRTOK_R)|g' \
+             -e 's|@''UNDEFINE_STRTOK_R''@|$(UNDEFINE_STRTOK_R)|g' \
+             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+             -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
+             < $(srcdir)/string.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+
+# We need the following in order to create <sys/stat.h> when the system
+# has one that is incomplete.
+sys/stat.h: sys_stat.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+       $(AM_V_at)$(MKDIR_P) sys
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_SYS_STAT_H''@|$(NEXT_SYS_STAT_H)|g' \
+             -e 's|@''GNULIB_FCHMODAT''@|$(GNULIB_FCHMODAT)|g' \
+             -e 's|@''GNULIB_FSTATAT''@|$(GNULIB_FSTATAT)|g' \
+             -e 's|@''GNULIB_FUTIMENS''@|$(GNULIB_FUTIMENS)|g' \
+             -e 's|@''GNULIB_LCHMOD''@|$(GNULIB_LCHMOD)|g' \
+             -e 's|@''GNULIB_LSTAT''@|$(GNULIB_LSTAT)|g' \
+             -e 's|@''GNULIB_MKDIRAT''@|$(GNULIB_MKDIRAT)|g' \
+             -e 's|@''GNULIB_MKFIFO''@|$(GNULIB_MKFIFO)|g' \
+             -e 's|@''GNULIB_MKFIFOAT''@|$(GNULIB_MKFIFOAT)|g' \
+             -e 's|@''GNULIB_MKNOD''@|$(GNULIB_MKNOD)|g' \
+             -e 's|@''GNULIB_MKNODAT''@|$(GNULIB_MKNODAT)|g' \
+             -e 's|@''GNULIB_STAT''@|$(GNULIB_STAT)|g' \
+             -e 's|@''GNULIB_UTIMENSAT''@|$(GNULIB_UTIMENSAT)|g' \
+             -e 's|@''HAVE_FCHMODAT''@|$(HAVE_FCHMODAT)|g' \
+             -e 's|@''HAVE_FSTATAT''@|$(HAVE_FSTATAT)|g' \
+             -e 's|@''HAVE_FUTIMENS''@|$(HAVE_FUTIMENS)|g' \
+             -e 's|@''HAVE_LCHMOD''@|$(HAVE_LCHMOD)|g' \
+             -e 's|@''HAVE_LSTAT''@|$(HAVE_LSTAT)|g' \
+             -e 's|@''HAVE_MKDIRAT''@|$(HAVE_MKDIRAT)|g' \
+             -e 's|@''HAVE_MKFIFO''@|$(HAVE_MKFIFO)|g' \
+             -e 's|@''HAVE_MKFIFOAT''@|$(HAVE_MKFIFOAT)|g' \
+             -e 's|@''HAVE_MKNOD''@|$(HAVE_MKNOD)|g' \
+             -e 's|@''HAVE_MKNODAT''@|$(HAVE_MKNODAT)|g' \
+             -e 's|@''HAVE_UTIMENSAT''@|$(HAVE_UTIMENSAT)|g' \
+             -e 's|@''REPLACE_FSTAT''@|$(REPLACE_FSTAT)|g' \
+             -e 's|@''REPLACE_FSTATAT''@|$(REPLACE_FSTATAT)|g' \
+             -e 's|@''REPLACE_FUTIMENS''@|$(REPLACE_FUTIMENS)|g' \
+             -e 's|@''REPLACE_LSTAT''@|$(REPLACE_LSTAT)|g' \
+             -e 's|@''REPLACE_MKDIR''@|$(REPLACE_MKDIR)|g' \
+             -e 's|@''REPLACE_MKFIFO''@|$(REPLACE_MKFIFO)|g' \
+             -e 's|@''REPLACE_MKNOD''@|$(REPLACE_MKNOD)|g' \
+             -e 's|@''REPLACE_STAT''@|$(REPLACE_STAT)|g' \
+             -e 's|@''REPLACE_UTIMENSAT''@|$(REPLACE_UTIMENSAT)|g' \
+             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+             -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
+             < $(srcdir)/sys_stat.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+
+# We need the following in order to create <sys/time.h> when the system
+# doesn't have one that works with the given compiler.
+sys/time.h: sys_time.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+       $(AM_V_at)$(MKDIR_P) sys
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's/@''HAVE_SYS_TIME_H''@/$(HAVE_SYS_TIME_H)/g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_SYS_TIME_H''@|$(NEXT_SYS_TIME_H)|g' \
+             -e 's/@''GNULIB_GETTIMEOFDAY''@/$(GNULIB_GETTIMEOFDAY)/g' \
+             -e 's/@''HAVE_GETTIMEOFDAY''@/$(HAVE_GETTIMEOFDAY)/g' \
+             -e 's/@''HAVE_STRUCT_TIMEVAL''@/$(HAVE_STRUCT_TIMEVAL)/g' \
+             -e 's/@''REPLACE_GETTIMEOFDAY''@/$(REPLACE_GETTIMEOFDAY)/g' \
+             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+             -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
+             < $(srcdir)/sys_time.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+
+# We need the following in order to create <time.h> when the system
+# doesn't have one that works with the given compiler.
+time.h: time.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_TIME_H''@|$(NEXT_TIME_H)|g' \
+             -e 's|@''GNULIB_MKTIME''@|$(GNULIB_MKTIME)|g' \
+             -e 's|@''GNULIB_NANOSLEEP''@|$(GNULIB_NANOSLEEP)|g' \
+             -e 's|@''GNULIB_STRPTIME''@|$(GNULIB_STRPTIME)|g' \
+             -e 's|@''GNULIB_TIMEGM''@|$(GNULIB_TIMEGM)|g' \
+             -e 's|@''GNULIB_TIME_R''@|$(GNULIB_TIME_R)|g' \
+             -e 's|@''HAVE_DECL_LOCALTIME_R''@|$(HAVE_DECL_LOCALTIME_R)|g' \
+             -e 's|@''HAVE_NANOSLEEP''@|$(HAVE_NANOSLEEP)|g' \
+             -e 's|@''HAVE_STRPTIME''@|$(HAVE_STRPTIME)|g' \
+             -e 's|@''HAVE_TIMEGM''@|$(HAVE_TIMEGM)|g' \
+             -e 's|@''REPLACE_LOCALTIME_R''@|$(REPLACE_LOCALTIME_R)|g' \
+             -e 's|@''REPLACE_MKTIME''@|$(REPLACE_MKTIME)|g' \
+             -e 's|@''REPLACE_NANOSLEEP''@|$(REPLACE_NANOSLEEP)|g' \
+             -e 's|@''REPLACE_TIMEGM''@|$(REPLACE_TIMEGM)|g' \
+             -e 's|@''PTHREAD_H_DEFINES_STRUCT_TIMESPEC''@|$(PTHREAD_H_DEFINES_STRUCT_TIMESPEC)|g' \
+             -e 's|@''SYS_TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(SYS_TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \
+             -e 's|@''TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \
+             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+             -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
+             < $(srcdir)/time.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+
+# We need the following in order to create an empty placeholder for
+# <unistd.h> when the system doesn't have one.
+unistd.h: unistd.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''HAVE_UNISTD_H''@|$(HAVE_UNISTD_H)|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_UNISTD_H''@|$(NEXT_UNISTD_H)|g' \
+             -e 's|@''GNULIB_CHOWN''@|$(GNULIB_CHOWN)|g' \
+             -e 's|@''GNULIB_CLOSE''@|$(GNULIB_CLOSE)|g' \
+             -e 's|@''GNULIB_DUP2''@|$(GNULIB_DUP2)|g' \
+             -e 's|@''GNULIB_DUP3''@|$(GNULIB_DUP3)|g' \
+             -e 's|@''GNULIB_ENVIRON''@|$(GNULIB_ENVIRON)|g' \
+             -e 's|@''GNULIB_EUIDACCESS''@|$(GNULIB_EUIDACCESS)|g' \
+             -e 's|@''GNULIB_FACCESSAT''@|$(GNULIB_FACCESSAT)|g' \
+             -e 's|@''GNULIB_FCHDIR''@|$(GNULIB_FCHDIR)|g' \
+             -e 's|@''GNULIB_FCHOWNAT''@|$(GNULIB_FCHOWNAT)|g' \
+             -e 's|@''GNULIB_FSYNC''@|$(GNULIB_FSYNC)|g' \
+             -e 's|@''GNULIB_FTRUNCATE''@|$(GNULIB_FTRUNCATE)|g' \
+             -e 's|@''GNULIB_GETCWD''@|$(GNULIB_GETCWD)|g' \
+             -e 's|@''GNULIB_GETDOMAINNAME''@|$(GNULIB_GETDOMAINNAME)|g' \
+             -e 's|@''GNULIB_GETDTABLESIZE''@|$(GNULIB_GETDTABLESIZE)|g' \
+             -e 's|@''GNULIB_GETGROUPS''@|$(GNULIB_GETGROUPS)|g' \
+             -e 's|@''GNULIB_GETHOSTNAME''@|$(GNULIB_GETHOSTNAME)|g' \
+             -e 's|@''GNULIB_GETLOGIN''@|$(GNULIB_GETLOGIN)|g' \
+             -e 's|@''GNULIB_GETLOGIN_R''@|$(GNULIB_GETLOGIN_R)|g' \
+             -e 's|@''GNULIB_GETPAGESIZE''@|$(GNULIB_GETPAGESIZE)|g' \
+             -e 's|@''GNULIB_GETUSERSHELL''@|$(GNULIB_GETUSERSHELL)|g' \
+             -e 's|@''GNULIB_GROUP_MEMBER''@|$(GNULIB_GROUP_MEMBER)|g' \
+             -e 's|@''GNULIB_LCHOWN''@|$(GNULIB_LCHOWN)|g' \
+             -e 's|@''GNULIB_LINK''@|$(GNULIB_LINK)|g' \
+             -e 's|@''GNULIB_LINKAT''@|$(GNULIB_LINKAT)|g' \
+             -e 's|@''GNULIB_LSEEK''@|$(GNULIB_LSEEK)|g' \
+             -e 's|@''GNULIB_PIPE''@|$(GNULIB_PIPE)|g' \
+             -e 's|@''GNULIB_PIPE2''@|$(GNULIB_PIPE2)|g' \
+             -e 's|@''GNULIB_PREAD''@|$(GNULIB_PREAD)|g' \
+             -e 's|@''GNULIB_PWRITE''@|$(GNULIB_PWRITE)|g' \
+             -e 's|@''GNULIB_READ''@|$(GNULIB_READ)|g' \
+             -e 's|@''GNULIB_READLINK''@|$(GNULIB_READLINK)|g' \
+             -e 's|@''GNULIB_READLINKAT''@|$(GNULIB_READLINKAT)|g' \
+             -e 's|@''GNULIB_RMDIR''@|$(GNULIB_RMDIR)|g' \
+             -e 's|@''GNULIB_SLEEP''@|$(GNULIB_SLEEP)|g' \
+             -e 's|@''GNULIB_SYMLINK''@|$(GNULIB_SYMLINK)|g' \
+             -e 's|@''GNULIB_SYMLINKAT''@|$(GNULIB_SYMLINKAT)|g' \
+             -e 's|@''GNULIB_TTYNAME_R''@|$(GNULIB_TTYNAME_R)|g' \
+             -e 's|@''GNULIB_UNISTD_H_GETOPT''@|$(GNULIB_UNISTD_H_GETOPT)|g' \
+             -e 's|@''GNULIB_UNISTD_H_NONBLOCKING''@|$(GNULIB_UNISTD_H_NONBLOCKING)|g' \
+             -e 's|@''GNULIB_UNISTD_H_SIGPIPE''@|$(GNULIB_UNISTD_H_SIGPIPE)|g' \
+             -e 's|@''GNULIB_UNLINK''@|$(GNULIB_UNLINK)|g' \
+             -e 's|@''GNULIB_UNLINKAT''@|$(GNULIB_UNLINKAT)|g' \
+             -e 's|@''GNULIB_USLEEP''@|$(GNULIB_USLEEP)|g' \
+             -e 's|@''GNULIB_WRITE''@|$(GNULIB_WRITE)|g' \
+             < $(srcdir)/unistd.in.h | \
+         sed -e 's|@''HAVE_CHOWN''@|$(HAVE_CHOWN)|g' \
+             -e 's|@''HAVE_DUP2''@|$(HAVE_DUP2)|g' \
+             -e 's|@''HAVE_DUP3''@|$(HAVE_DUP3)|g' \
+             -e 's|@''HAVE_EUIDACCESS''@|$(HAVE_EUIDACCESS)|g' \
+             -e 's|@''HAVE_FACCESSAT''@|$(HAVE_FACCESSAT)|g' \
+             -e 's|@''HAVE_FCHDIR''@|$(HAVE_FCHDIR)|g' \
+             -e 's|@''HAVE_FCHOWNAT''@|$(HAVE_FCHOWNAT)|g' \
+             -e 's|@''HAVE_FSYNC''@|$(HAVE_FSYNC)|g' \
+             -e 's|@''HAVE_FTRUNCATE''@|$(HAVE_FTRUNCATE)|g' \
+             -e 's|@''HAVE_GETDTABLESIZE''@|$(HAVE_GETDTABLESIZE)|g' \
+             -e 's|@''HAVE_GETGROUPS''@|$(HAVE_GETGROUPS)|g' \
+             -e 's|@''HAVE_GETHOSTNAME''@|$(HAVE_GETHOSTNAME)|g' \
+             -e 's|@''HAVE_GETLOGIN''@|$(HAVE_GETLOGIN)|g' \
+             -e 's|@''HAVE_GETPAGESIZE''@|$(HAVE_GETPAGESIZE)|g' \
+             -e 's|@''HAVE_GROUP_MEMBER''@|$(HAVE_GROUP_MEMBER)|g' \
+             -e 's|@''HAVE_LCHOWN''@|$(HAVE_LCHOWN)|g' \
+             -e 's|@''HAVE_LINK''@|$(HAVE_LINK)|g' \
+             -e 's|@''HAVE_LINKAT''@|$(HAVE_LINKAT)|g' \
+             -e 's|@''HAVE_PIPE''@|$(HAVE_PIPE)|g' \
+             -e 's|@''HAVE_PIPE2''@|$(HAVE_PIPE2)|g' \
+             -e 's|@''HAVE_PREAD''@|$(HAVE_PREAD)|g' \
+             -e 's|@''HAVE_PWRITE''@|$(HAVE_PWRITE)|g' \
+             -e 's|@''HAVE_READLINK''@|$(HAVE_READLINK)|g' \
+             -e 's|@''HAVE_READLINKAT''@|$(HAVE_READLINKAT)|g' \
+             -e 's|@''HAVE_SLEEP''@|$(HAVE_SLEEP)|g' \
+             -e 's|@''HAVE_SYMLINK''@|$(HAVE_SYMLINK)|g' \
+             -e 's|@''HAVE_SYMLINKAT''@|$(HAVE_SYMLINKAT)|g' \
+             -e 's|@''HAVE_UNLINKAT''@|$(HAVE_UNLINKAT)|g' \
+             -e 's|@''HAVE_USLEEP''@|$(HAVE_USLEEP)|g' \
+             -e 's|@''HAVE_DECL_ENVIRON''@|$(HAVE_DECL_ENVIRON)|g' \
+             -e 's|@''HAVE_DECL_FCHDIR''@|$(HAVE_DECL_FCHDIR)|g' \
+             -e 's|@''HAVE_DECL_GETDOMAINNAME''@|$(HAVE_DECL_GETDOMAINNAME)|g' \
+             -e 's|@''HAVE_DECL_GETLOGIN_R''@|$(HAVE_DECL_GETLOGIN_R)|g' \
+             -e 's|@''HAVE_DECL_GETPAGESIZE''@|$(HAVE_DECL_GETPAGESIZE)|g' \
+             -e 's|@''HAVE_DECL_GETUSERSHELL''@|$(HAVE_DECL_GETUSERSHELL)|g' \
+             -e 's|@''HAVE_DECL_TTYNAME_R''@|$(HAVE_DECL_TTYNAME_R)|g' \
+             -e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \
+             -e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \
+         | \
+         sed -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \
+             -e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \
+             -e 's|@''REPLACE_DUP''@|$(REPLACE_DUP)|g' \
+             -e 's|@''REPLACE_DUP2''@|$(REPLACE_DUP2)|g' \
+             -e 's|@''REPLACE_FCHOWNAT''@|$(REPLACE_FCHOWNAT)|g' \
+             -e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \
+             -e 's|@''REPLACE_GETDOMAINNAME''@|$(REPLACE_GETDOMAINNAME)|g' \
+             -e 's|@''REPLACE_GETLOGIN_R''@|$(REPLACE_GETLOGIN_R)|g' \
+             -e 's|@''REPLACE_GETGROUPS''@|$(REPLACE_GETGROUPS)|g' \
+             -e 's|@''REPLACE_GETPAGESIZE''@|$(REPLACE_GETPAGESIZE)|g' \
+             -e 's|@''REPLACE_LCHOWN''@|$(REPLACE_LCHOWN)|g' \
+             -e 's|@''REPLACE_LINK''@|$(REPLACE_LINK)|g' \
+             -e 's|@''REPLACE_LINKAT''@|$(REPLACE_LINKAT)|g' \
+             -e 's|@''REPLACE_LSEEK''@|$(REPLACE_LSEEK)|g' \
+             -e 's|@''REPLACE_PREAD''@|$(REPLACE_PREAD)|g' \
+             -e 's|@''REPLACE_PWRITE''@|$(REPLACE_PWRITE)|g' \
+             -e 's|@''REPLACE_READ''@|$(REPLACE_READ)|g' \
+             -e 's|@''REPLACE_READLINK''@|$(REPLACE_READLINK)|g' \
+             -e 's|@''REPLACE_RMDIR''@|$(REPLACE_RMDIR)|g' \
+             -e 's|@''REPLACE_SLEEP''@|$(REPLACE_SLEEP)|g' \
+             -e 's|@''REPLACE_SYMLINK''@|$(REPLACE_SYMLINK)|g' \
+             -e 's|@''REPLACE_TTYNAME_R''@|$(REPLACE_TTYNAME_R)|g' \
+             -e 's|@''REPLACE_UNLINK''@|$(REPLACE_UNLINK)|g' \
+             -e 's|@''REPLACE_UNLINKAT''@|$(REPLACE_UNLINKAT)|g' \
+             -e 's|@''REPLACE_USLEEP''@|$(REPLACE_USLEEP)|g' \
+             -e 's|@''REPLACE_WRITE''@|$(REPLACE_WRITE)|g' \
+             -e 's|@''UNISTD_H_HAVE_WINSOCK2_H''@|$(UNISTD_H_HAVE_WINSOCK2_H)|g' \
+             -e 's|@''UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS''@|$(UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS)|g' \
+             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+             -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
+       } > $@-t && \
+       mv $@-t $@
+# The warn-on-use.h that gets inserted into generated .h files is the same as
+# build-aux/warn-on-use.h, except that it has the copyright header cut off.
+warn-on-use.h: $(top_srcdir)/build-aux/warn-on-use.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       sed -n -e '/^.ifndef/,$$p' \
+         < $(top_srcdir)/build-aux/warn-on-use.h \
+         > $@-t && \
+       mv $@-t $@
+
+# We need the following in order to create <wchar.h> when the system
+# version does not work standalone.
+wchar.h: wchar.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''HAVE_FEATURES_H''@|$(HAVE_FEATURES_H)|g' \
+             -e 's|@''NEXT_WCHAR_H''@|$(NEXT_WCHAR_H)|g' \
+             -e 's|@''HAVE_WCHAR_H''@|$(HAVE_WCHAR_H)|g' \
+             -e 's|@''GNULIB_BTOWC''@|$(GNULIB_BTOWC)|g' \
+             -e 's|@''GNULIB_WCTOB''@|$(GNULIB_WCTOB)|g' \
+             -e 's|@''GNULIB_MBSINIT''@|$(GNULIB_MBSINIT)|g' \
+             -e 's|@''GNULIB_MBRTOWC''@|$(GNULIB_MBRTOWC)|g' \
+             -e 's|@''GNULIB_MBRLEN''@|$(GNULIB_MBRLEN)|g' \
+             -e 's|@''GNULIB_MBSRTOWCS''@|$(GNULIB_MBSRTOWCS)|g' \
+             -e 's|@''GNULIB_MBSNRTOWCS''@|$(GNULIB_MBSNRTOWCS)|g' \
+             -e 's|@''GNULIB_WCRTOMB''@|$(GNULIB_WCRTOMB)|g' \
+             -e 's|@''GNULIB_WCSRTOMBS''@|$(GNULIB_WCSRTOMBS)|g' \
+             -e 's|@''GNULIB_WCSNRTOMBS''@|$(GNULIB_WCSNRTOMBS)|g' \
+             -e 's|@''GNULIB_WCWIDTH''@|$(GNULIB_WCWIDTH)|g' \
+             -e 's|@''GNULIB_WMEMCHR''@|$(GNULIB_WMEMCHR)|g' \
+             -e 's|@''GNULIB_WMEMCMP''@|$(GNULIB_WMEMCMP)|g' \
+             -e 's|@''GNULIB_WMEMCPY''@|$(GNULIB_WMEMCPY)|g' \
+             -e 's|@''GNULIB_WMEMMOVE''@|$(GNULIB_WMEMMOVE)|g' \
+             -e 's|@''GNULIB_WMEMSET''@|$(GNULIB_WMEMSET)|g' \
+             -e 's|@''GNULIB_WCSLEN''@|$(GNULIB_WCSLEN)|g' \
+             -e 's|@''GNULIB_WCSNLEN''@|$(GNULIB_WCSNLEN)|g' \
+             -e 's|@''GNULIB_WCSCPY''@|$(GNULIB_WCSCPY)|g' \
+             -e 's|@''GNULIB_WCPCPY''@|$(GNULIB_WCPCPY)|g' \
+             -e 's|@''GNULIB_WCSNCPY''@|$(GNULIB_WCSNCPY)|g' \
+             -e 's|@''GNULIB_WCPNCPY''@|$(GNULIB_WCPNCPY)|g' \
+             -e 's|@''GNULIB_WCSCAT''@|$(GNULIB_WCSCAT)|g' \
+             -e 's|@''GNULIB_WCSNCAT''@|$(GNULIB_WCSNCAT)|g' \
+             -e 's|@''GNULIB_WCSCMP''@|$(GNULIB_WCSCMP)|g' \
+             -e 's|@''GNULIB_WCSNCMP''@|$(GNULIB_WCSNCMP)|g' \
+             -e 's|@''GNULIB_WCSCASECMP''@|$(GNULIB_WCSCASECMP)|g' \
+             -e 's|@''GNULIB_WCSNCASECMP''@|$(GNULIB_WCSNCASECMP)|g' \
+             -e 's|@''GNULIB_WCSCOLL''@|$(GNULIB_WCSCOLL)|g' \
+             -e 's|@''GNULIB_WCSXFRM''@|$(GNULIB_WCSXFRM)|g' \
+             -e 's|@''GNULIB_WCSDUP''@|$(GNULIB_WCSDUP)|g' \
+             -e 's|@''GNULIB_WCSCHR''@|$(GNULIB_WCSCHR)|g' \
+             -e 's|@''GNULIB_WCSRCHR''@|$(GNULIB_WCSRCHR)|g' \
+             -e 's|@''GNULIB_WCSCSPN''@|$(GNULIB_WCSCSPN)|g' \
+             -e 's|@''GNULIB_WCSSPN''@|$(GNULIB_WCSSPN)|g' \
+             -e 's|@''GNULIB_WCSPBRK''@|$(GNULIB_WCSPBRK)|g' \
+             -e 's|@''GNULIB_WCSSTR''@|$(GNULIB_WCSSTR)|g' \
+             -e 's|@''GNULIB_WCSTOK''@|$(GNULIB_WCSTOK)|g' \
+             -e 's|@''GNULIB_WCSWIDTH''@|$(GNULIB_WCSWIDTH)|g' \
+             < $(srcdir)/wchar.in.h | \
+         sed -e 's|@''HAVE_WINT_T''@|$(HAVE_WINT_T)|g' \
+             -e 's|@''HAVE_BTOWC''@|$(HAVE_BTOWC)|g' \
+             -e 's|@''HAVE_MBSINIT''@|$(HAVE_MBSINIT)|g' \
+             -e 's|@''HAVE_MBRTOWC''@|$(HAVE_MBRTOWC)|g' \
+             -e 's|@''HAVE_MBRLEN''@|$(HAVE_MBRLEN)|g' \
+             -e 's|@''HAVE_MBSRTOWCS''@|$(HAVE_MBSRTOWCS)|g' \
+             -e 's|@''HAVE_MBSNRTOWCS''@|$(HAVE_MBSNRTOWCS)|g' \
+             -e 's|@''HAVE_WCRTOMB''@|$(HAVE_WCRTOMB)|g' \
+             -e 's|@''HAVE_WCSRTOMBS''@|$(HAVE_WCSRTOMBS)|g' \
+             -e 's|@''HAVE_WCSNRTOMBS''@|$(HAVE_WCSNRTOMBS)|g' \
+             -e 's|@''HAVE_WMEMCHR''@|$(HAVE_WMEMCHR)|g' \
+             -e 's|@''HAVE_WMEMCMP''@|$(HAVE_WMEMCMP)|g' \
+             -e 's|@''HAVE_WMEMCPY''@|$(HAVE_WMEMCPY)|g' \
+             -e 's|@''HAVE_WMEMMOVE''@|$(HAVE_WMEMMOVE)|g' \
+             -e 's|@''HAVE_WMEMSET''@|$(HAVE_WMEMSET)|g' \
+             -e 's|@''HAVE_WCSLEN''@|$(HAVE_WCSLEN)|g' \
+             -e 's|@''HAVE_WCSNLEN''@|$(HAVE_WCSNLEN)|g' \
+             -e 's|@''HAVE_WCSCPY''@|$(HAVE_WCSCPY)|g' \
+             -e 's|@''HAVE_WCPCPY''@|$(HAVE_WCPCPY)|g' \
+             -e 's|@''HAVE_WCSNCPY''@|$(HAVE_WCSNCPY)|g' \
+             -e 's|@''HAVE_WCPNCPY''@|$(HAVE_WCPNCPY)|g' \
+             -e 's|@''HAVE_WCSCAT''@|$(HAVE_WCSCAT)|g' \
+             -e 's|@''HAVE_WCSNCAT''@|$(HAVE_WCSNCAT)|g' \
+             -e 's|@''HAVE_WCSCMP''@|$(HAVE_WCSCMP)|g' \
+             -e 's|@''HAVE_WCSNCMP''@|$(HAVE_WCSNCMP)|g' \
+             -e 's|@''HAVE_WCSCASECMP''@|$(HAVE_WCSCASECMP)|g' \
+             -e 's|@''HAVE_WCSNCASECMP''@|$(HAVE_WCSNCASECMP)|g' \
+             -e 's|@''HAVE_WCSCOLL''@|$(HAVE_WCSCOLL)|g' \
+             -e 's|@''HAVE_WCSXFRM''@|$(HAVE_WCSXFRM)|g' \
+             -e 's|@''HAVE_WCSDUP''@|$(HAVE_WCSDUP)|g' \
+             -e 's|@''HAVE_WCSCHR''@|$(HAVE_WCSCHR)|g' \
+             -e 's|@''HAVE_WCSRCHR''@|$(HAVE_WCSRCHR)|g' \
+             -e 's|@''HAVE_WCSCSPN''@|$(HAVE_WCSCSPN)|g' \
+             -e 's|@''HAVE_WCSSPN''@|$(HAVE_WCSSPN)|g' \
+             -e 's|@''HAVE_WCSPBRK''@|$(HAVE_WCSPBRK)|g' \
+             -e 's|@''HAVE_WCSSTR''@|$(HAVE_WCSSTR)|g' \
+             -e 's|@''HAVE_WCSTOK''@|$(HAVE_WCSTOK)|g' \
+             -e 's|@''HAVE_WCSWIDTH''@|$(HAVE_WCSWIDTH)|g' \
+             -e 's|@''HAVE_DECL_WCTOB''@|$(HAVE_DECL_WCTOB)|g' \
+             -e 's|@''HAVE_DECL_WCWIDTH''@|$(HAVE_DECL_WCWIDTH)|g' \
+         | \
+         sed -e 's|@''REPLACE_MBSTATE_T''@|$(REPLACE_MBSTATE_T)|g' \
+             -e 's|@''REPLACE_BTOWC''@|$(REPLACE_BTOWC)|g' \
+             -e 's|@''REPLACE_WCTOB''@|$(REPLACE_WCTOB)|g' \
+             -e 's|@''REPLACE_MBSINIT''@|$(REPLACE_MBSINIT)|g' \
+             -e 's|@''REPLACE_MBRTOWC''@|$(REPLACE_MBRTOWC)|g' \
+             -e 's|@''REPLACE_MBRLEN''@|$(REPLACE_MBRLEN)|g' \
+             -e 's|@''REPLACE_MBSRTOWCS''@|$(REPLACE_MBSRTOWCS)|g' \
+             -e 's|@''REPLACE_MBSNRTOWCS''@|$(REPLACE_MBSNRTOWCS)|g' \
+             -e 's|@''REPLACE_WCRTOMB''@|$(REPLACE_WCRTOMB)|g' \
+             -e 's|@''REPLACE_WCSRTOMBS''@|$(REPLACE_WCSRTOMBS)|g' \
+             -e 's|@''REPLACE_WCSNRTOMBS''@|$(REPLACE_WCSNRTOMBS)|g' \
+             -e 's|@''REPLACE_WCWIDTH''@|$(REPLACE_WCWIDTH)|g' \
+             -e 's|@''REPLACE_WCSWIDTH''@|$(REPLACE_WCSWIDTH)|g' \
+             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+             -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
+       } > $@-t && \
+       mv $@-t $@
+
+# We need the following in order to create <wctype.h> when the system
+# doesn't have one that works with the given compiler.
+wctype.h: wctype.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H)
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's/@''HAVE_WCTYPE_H''@/$(HAVE_WCTYPE_H)/g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_WCTYPE_H''@|$(NEXT_WCTYPE_H)|g' \
+             -e 's/@''GNULIB_ISWBLANK''@/$(GNULIB_ISWBLANK)/g' \
+             -e 's/@''GNULIB_WCTYPE''@/$(GNULIB_WCTYPE)/g' \
+             -e 's/@''GNULIB_ISWCTYPE''@/$(GNULIB_ISWCTYPE)/g' \
+             -e 's/@''GNULIB_WCTRANS''@/$(GNULIB_WCTRANS)/g' \
+             -e 's/@''GNULIB_TOWCTRANS''@/$(GNULIB_TOWCTRANS)/g' \
+             -e 's/@''HAVE_ISWBLANK''@/$(HAVE_ISWBLANK)/g' \
+             -e 's/@''HAVE_ISWCNTRL''@/$(HAVE_ISWCNTRL)/g' \
+             -e 's/@''HAVE_WCTYPE_T''@/$(HAVE_WCTYPE_T)/g' \
+             -e 's/@''HAVE_WCTRANS_T''@/$(HAVE_WCTRANS_T)/g' \
+             -e 's/@''HAVE_WINT_T''@/$(HAVE_WINT_T)/g' \
+             -e 's/@''REPLACE_ISWBLANK''@/$(REPLACE_ISWBLANK)/g' \
+             -e 's/@''REPLACE_ISWCNTRL''@/$(REPLACE_ISWCNTRL)/g' \
+             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
+             < $(srcdir)/wctype.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+
+mostlyclean-local: mostlyclean-generic
+       @for dir in '' $(MOSTLYCLEANDIRS); do \
+         if test -n "$$dir" && test -d $$dir; then \
+           echo "rmdir $$dir"; rmdir $$dir; \
+         fi; \
+       done; \
+       :
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/lib/alloca.c b/lib/alloca.c
new file mode 100644 (file)
index 0000000..a16fa39
--- /dev/null
@@ -0,0 +1,493 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* alloca.c -- allocate automatically reclaimed memory
+   (Mostly) portable public-domain implementation -- D A Gwyn
+
+   This implementation of the PWB library alloca function,
+   which is used to allocate space off the run-time stack so
+   that it is automatically reclaimed upon procedure exit,
+   was inspired by discussions with J. Q. Johnson of Cornell.
+   J.Otto Tennant <jot@cray.com> contributed the Cray support.
+
+   There are some preprocessor constants that can
+   be defined when compiling for your specific system, for
+   improved efficiency; however, the defaults should be okay.
+
+   The general concept of this implementation is to keep
+   track of all alloca-allocated blocks, and reclaim any
+   that are found to be deeper in the stack than the current
+   invocation.  This heuristic does not reclaim storage as
+   soon as it becomes invalid, but it will do so eventually.
+
+   As a special case, alloca(0) reclaims storage without
+   allocating any.  It is a good idea to use alloca(0) in
+   your main control loop, etc. to force garbage collection.  */
+
+#include <config.h>
+
+#include <alloca.h>
+
+#include <string.h>
+#include <stdlib.h>
+
+#ifdef emacs
+# include "lisp.h"
+# include "blockinput.h"
+# ifdef EMACS_FREE
+#  undef free
+#  define free EMACS_FREE
+# endif
+#else
+# define memory_full() abort ()
+#endif
+
+/* If compiling with GCC 2, this file's not needed.  */
+#if !defined (__GNUC__) || __GNUC__ < 2
+
+/* If someone has defined alloca as a macro,
+   there must be some other way alloca is supposed to work.  */
+# ifndef alloca
+
+#  ifdef emacs
+#   ifdef static
+/* actually, only want this if static is defined as ""
+   -- this is for usg, in which emacs must undefine static
+   in order to make unexec workable
+   */
+#    ifndef STACK_DIRECTION
+you
+lose
+-- must know STACK_DIRECTION at compile-time
+/* Using #error here is not wise since this file should work for
+   old and obscure compilers.  */
+#    endif /* STACK_DIRECTION undefined */
+#   endif /* static */
+#  endif /* emacs */
+
+/* If your stack is a linked list of frames, you have to
+   provide an "address metric" ADDRESS_FUNCTION macro.  */
+
+#  if defined (CRAY) && defined (CRAY_STACKSEG_END)
+long i00afunc ();
+#   define ADDRESS_FUNCTION(arg) (char *) i00afunc (&(arg))
+#  else
+#   define ADDRESS_FUNCTION(arg) &(arg)
+#  endif
+
+/* Define STACK_DIRECTION if you know the direction of stack
+   growth for your system; otherwise it will be automatically
+   deduced at run-time.
+
+   STACK_DIRECTION > 0 => grows toward higher addresses
+   STACK_DIRECTION < 0 => grows toward lower addresses
+   STACK_DIRECTION = 0 => direction of growth unknown  */
+
+#  ifndef STACK_DIRECTION
+#   define STACK_DIRECTION      0       /* Direction unknown.  */
+#  endif
+
+#  if STACK_DIRECTION != 0
+
+#   define STACK_DIR    STACK_DIRECTION /* Known at compile-time.  */
+
+#  else /* STACK_DIRECTION == 0; need run-time code.  */
+
+static int stack_dir;           /* 1 or -1 once known.  */
+#   define STACK_DIR    stack_dir
+
+static void
+find_stack_direction (char **ptr)
+{
+  auto char dummy;              /* To get stack address.  */
+
+  if (*ptr == NULL)
+    {                           /* Initial entry.  */
+      *ptr = ADDRESS_FUNCTION (dummy);
+
+      find_stack_direction (ptr);  /* Recurse once.  */
+    }
+  else
+    {
+      /* Second entry.  */
+      if (ADDRESS_FUNCTION (dummy) > *ptr)
+        stack_dir = 1;          /* Stack grew upward.  */
+      else
+        stack_dir = -1;         /* Stack grew downward.  */
+    }
+}
+
+#  endif /* STACK_DIRECTION == 0 */
+
+/* An "alloca header" is used to:
+   (a) chain together all alloca'ed blocks;
+   (b) keep track of stack depth.
+
+   It is very important that sizeof(header) agree with malloc
+   alignment chunk size.  The following default should work okay.  */
+
+#  ifndef       ALIGN_SIZE
+#   define ALIGN_SIZE   sizeof(double)
+#  endif
+
+typedef union hdr
+{
+  char align[ALIGN_SIZE];       /* To force sizeof(header).  */
+  struct
+    {
+      union hdr *next;          /* For chaining headers.  */
+      char *deep;               /* For stack depth measure.  */
+    } h;
+} header;
+
+static header *last_alloca_header = NULL;       /* -> last alloca header.  */
+
+/* Return a pointer to at least SIZE bytes of storage,
+   which will be automatically reclaimed upon exit from
+   the procedure that called alloca.  Originally, this space
+   was supposed to be taken from the current stack frame of the
+   caller, but that method cannot be made to work for some
+   implementations of C, for example under Gould's UTX/32.  */
+
+void *
+alloca (size_t size)
+{
+  auto char probe;              /* Probes stack depth: */
+  register char *depth = ADDRESS_FUNCTION (probe);
+
+#  if STACK_DIRECTION == 0
+  if (STACK_DIR == 0)           /* Unknown growth direction.  */
+    {
+      char *addr = NULL;        /* Address of first `dummy', once known.  */
+      find_stack_direction (&addr);
+    }
+#  endif
+
+  /* Reclaim garbage, defined as all alloca'd storage that
+     was allocated from deeper in the stack than currently.  */
+
+  {
+    register header *hp;        /* Traverses linked list.  */
+
+#  ifdef emacs
+    BLOCK_INPUT;
+#  endif
+
+    for (hp = last_alloca_header; hp != NULL;)
+      if ((STACK_DIR > 0 && hp->h.deep > depth)
+          || (STACK_DIR < 0 && hp->h.deep < depth))
+        {
+          register header *np = hp->h.next;
+
+          free (hp);            /* Collect garbage.  */
+
+          hp = np;              /* -> next header.  */
+        }
+      else
+        break;                  /* Rest are not deeper.  */
+
+    last_alloca_header = hp;    /* -> last valid storage.  */
+
+#  ifdef emacs
+    UNBLOCK_INPUT;
+#  endif
+  }
+
+  if (size == 0)
+    return NULL;                /* No allocation required.  */
+
+  /* Allocate combined header + user data storage.  */
+
+  {
+    /* Address of header.  */
+    register header *new;
+
+    size_t combined_size = sizeof (header) + size;
+    if (combined_size < sizeof (header))
+      memory_full ();
+
+    new = malloc (combined_size);
+
+    if (! new)
+      memory_full ();
+
+    new->h.next = last_alloca_header;
+    new->h.deep = depth;
+
+    last_alloca_header = new;
+
+    /* User storage begins just after header.  */
+
+    return (void *) (new + 1);
+  }
+}
+
+#  if defined (CRAY) && defined (CRAY_STACKSEG_END)
+
+#   ifdef DEBUG_I00AFUNC
+#    include <stdio.h>
+#   endif
+
+#   ifndef CRAY_STACK
+#    define CRAY_STACK
+#    ifndef CRAY2
+/* Stack structures for CRAY-1, CRAY X-MP, and CRAY Y-MP */
+struct stack_control_header
+  {
+    long shgrow:32;             /* Number of times stack has grown.  */
+    long shaseg:32;             /* Size of increments to stack.  */
+    long shhwm:32;              /* High water mark of stack.  */
+    long shsize:32;             /* Current size of stack (all segments).  */
+  };
+
+/* The stack segment linkage control information occurs at
+   the high-address end of a stack segment.  (The stack
+   grows from low addresses to high addresses.)  The initial
+   part of the stack segment linkage control information is
+   0200 (octal) words.  This provides for register storage
+   for the routine which overflows the stack.  */
+
+struct stack_segment_linkage
+  {
+    long ss[0200];              /* 0200 overflow words.  */
+    long sssize:32;             /* Number of words in this segment.  */
+    long ssbase:32;             /* Offset to stack base.  */
+    long:32;
+    long sspseg:32;             /* Offset to linkage control of previous
+                                   segment of stack.  */
+    long:32;
+    long sstcpt:32;             /* Pointer to task common address block.  */
+    long sscsnm;                /* Private control structure number for
+                                   microtasking.  */
+    long ssusr1;                /* Reserved for user.  */
+    long ssusr2;                /* Reserved for user.  */
+    long sstpid;                /* Process ID for pid based multi-tasking.  */
+    long ssgvup;                /* Pointer to multitasking thread giveup.  */
+    long sscray[7];             /* Reserved for Cray Research.  */
+    long ssa0;
+    long ssa1;
+    long ssa2;
+    long ssa3;
+    long ssa4;
+    long ssa5;
+    long ssa6;
+    long ssa7;
+    long sss0;
+    long sss1;
+    long sss2;
+    long sss3;
+    long sss4;
+    long sss5;
+    long sss6;
+    long sss7;
+  };
+
+#    else /* CRAY2 */
+/* The following structure defines the vector of words
+   returned by the STKSTAT library routine.  */
+struct stk_stat
+  {
+    long now;                   /* Current total stack size.  */
+    long maxc;                  /* Amount of contiguous space which would
+                                   be required to satisfy the maximum
+                                   stack demand to date.  */
+    long high_water;            /* Stack high-water mark.  */
+    long overflows;             /* Number of stack overflow ($STKOFEN) calls.  */
+    long hits;                  /* Number of internal buffer hits.  */
+    long extends;               /* Number of block extensions.  */
+    long stko_mallocs;          /* Block allocations by $STKOFEN.  */
+    long underflows;            /* Number of stack underflow calls ($STKRETN).  */
+    long stko_free;             /* Number of deallocations by $STKRETN.  */
+    long stkm_free;             /* Number of deallocations by $STKMRET.  */
+    long segments;              /* Current number of stack segments.  */
+    long maxs;                  /* Maximum number of stack segments so far.  */
+    long pad_size;              /* Stack pad size.  */
+    long current_address;       /* Current stack segment address.  */
+    long current_size;          /* Current stack segment size.  This
+                                   number is actually corrupted by STKSTAT to
+                                   include the fifteen word trailer area.  */
+    long initial_address;       /* Address of initial segment.  */
+    long initial_size;          /* Size of initial segment.  */
+  };
+
+/* The following structure describes the data structure which trails
+   any stack segment.  I think that the description in 'asdef' is
+   out of date.  I only describe the parts that I am sure about.  */
+
+struct stk_trailer
+  {
+    long this_address;          /* Address of this block.  */
+    long this_size;             /* Size of this block (does not include
+                                   this trailer).  */
+    long unknown2;
+    long unknown3;
+    long link;                  /* Address of trailer block of previous
+                                   segment.  */
+    long unknown5;
+    long unknown6;
+    long unknown7;
+    long unknown8;
+    long unknown9;
+    long unknown10;
+    long unknown11;
+    long unknown12;
+    long unknown13;
+    long unknown14;
+  };
+
+#    endif /* CRAY2 */
+#   endif /* not CRAY_STACK */
+
+#   ifdef CRAY2
+/* Determine a "stack measure" for an arbitrary ADDRESS.
+   I doubt that "lint" will like this much.  */
+
+static long
+i00afunc (long *address)
+{
+  struct stk_stat status;
+  struct stk_trailer *trailer;
+  long *block, size;
+  long result = 0;
+
+  /* We want to iterate through all of the segments.  The first
+     step is to get the stack status structure.  We could do this
+     more quickly and more directly, perhaps, by referencing the
+     $LM00 common block, but I know that this works.  */
+
+  STKSTAT (&status);
+
+  /* Set up the iteration.  */
+
+  trailer = (struct stk_trailer *) (status.current_address
+                                    + status.current_size
+                                    - 15);
+
+  /* There must be at least one stack segment.  Therefore it is
+     a fatal error if "trailer" is null.  */
+
+  if (trailer == 0)
+    abort ();
+
+  /* Discard segments that do not contain our argument address.  */
+
+  while (trailer != 0)
+    {
+      block = (long *) trailer->this_address;
+      size = trailer->this_size;
+      if (block == 0 || size == 0)
+        abort ();
+      trailer = (struct stk_trailer *) trailer->link;
+      if ((block <= address) && (address < (block + size)))
+        break;
+    }
+
+  /* Set the result to the offset in this segment and add the sizes
+     of all predecessor segments.  */
+
+  result = address - block;
+
+  if (trailer == 0)
+    {
+      return result;
+    }
+
+  do
+    {
+      if (trailer->this_size <= 0)
+        abort ();
+      result += trailer->this_size;
+      trailer = (struct stk_trailer *) trailer->link;
+    }
+  while (trailer != 0);
+
+  /* We are done.  Note that if you present a bogus address (one
+     not in any segment), you will get a different number back, formed
+     from subtracting the address of the first block.  This is probably
+     not what you want.  */
+
+  return (result);
+}
+
+#   else /* not CRAY2 */
+/* Stack address function for a CRAY-1, CRAY X-MP, or CRAY Y-MP.
+   Determine the number of the cell within the stack,
+   given the address of the cell.  The purpose of this
+   routine is to linearize, in some sense, stack addresses
+   for alloca.  */
+
+static long
+i00afunc (long address)
+{
+  long stkl = 0;
+
+  long size, pseg, this_segment, stack;
+  long result = 0;
+
+  struct stack_segment_linkage *ssptr;
+
+  /* Register B67 contains the address of the end of the
+     current stack segment.  If you (as a subprogram) store
+     your registers on the stack and find that you are past
+     the contents of B67, you have overflowed the segment.
+
+     B67 also points to the stack segment linkage control
+     area, which is what we are really interested in.  */
+
+  stkl = CRAY_STACKSEG_END ();
+  ssptr = (struct stack_segment_linkage *) stkl;
+
+  /* If one subtracts 'size' from the end of the segment,
+     one has the address of the first word of the segment.
+
+     If this is not the first segment, 'pseg' will be
+     nonzero.  */
+
+  pseg = ssptr->sspseg;
+  size = ssptr->sssize;
+
+  this_segment = stkl - size;
+
+  /* It is possible that calling this routine itself caused
+     a stack overflow.  Discard stack segments which do not
+     contain the target address.  */
+
+  while (!(this_segment <= address && address <= stkl))
+    {
+#    ifdef DEBUG_I00AFUNC
+      fprintf (stderr, "%011o %011o %011o\n", this_segment, address, stkl);
+#    endif
+      if (pseg == 0)
+        break;
+      stkl = stkl - pseg;
+      ssptr = (struct stack_segment_linkage *) stkl;
+      size = ssptr->sssize;
+      pseg = ssptr->sspseg;
+      this_segment = stkl - size;
+    }
+
+  result = address - this_segment;
+
+  /* If you subtract pseg from the current end of the stack,
+     you get the address of the previous stack segment's end.
+     This seems a little convoluted to me, but I'll bet you save
+     a cycle somewhere.  */
+
+  while (pseg != 0)
+    {
+#    ifdef DEBUG_I00AFUNC
+      fprintf (stderr, "%011o %011o\n", pseg, size);
+#    endif
+      stkl = stkl - pseg;
+      ssptr = (struct stack_segment_linkage *) stkl;
+      size = ssptr->sssize;
+      pseg = ssptr->sspseg;
+      result += size;
+    }
+  return (result);
+}
+
+#   endif /* not CRAY2 */
+#  endif /* CRAY */
+
+# endif /* no alloca */
+#endif /* not GCC version 3 */
diff --git a/lib/alloca.in.h b/lib/alloca.in.h
new file mode 100644 (file)
index 0000000..1461669
--- /dev/null
@@ -0,0 +1,58 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Memory allocation on the stack.
+
+   Copyright (C) 1995, 1999, 2001-2004, 2006-2011 Free Software Foundation,
+   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; either version 3, 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.  */
+
+/* Avoid using the symbol _ALLOCA_H here, as Bison assumes _ALLOCA_H
+   means there is a real alloca function.  */
+#ifndef _GL_ALLOCA_H
+#define _GL_ALLOCA_H
+
+/* alloca (N) returns a pointer to N bytes of memory
+   allocated on the stack, which will last until the function returns.
+   Use of alloca should be avoided:
+     - inside arguments of function calls - undefined behaviour,
+     - in inline functions - the allocation may actually last until the
+       calling function returns,
+     - for huge N (say, N >= 65536) - you never know how large (or small)
+       the stack is, and when the stack cannot fulfill the memory allocation
+       request, the program just crashes.
+ */
+
+#ifndef alloca
+# ifdef __GNUC__
+#  define alloca __builtin_alloca
+# elif defined _AIX
+#  define alloca __alloca
+# elif defined _MSC_VER
+#  include <malloc.h>
+#  define alloca _alloca
+# elif defined __DECC && defined __VMS
+#  define alloca __ALLOCA
+# else
+#  include <stddef.h>
+#  ifdef  __cplusplus
+extern "C"
+#  endif
+void *alloca (size_t);
+# endif
+#endif
+
+#endif /* _GL_ALLOCA_H */
diff --git a/lib/argmatch.c b/lib/argmatch.c
new file mode 100644 (file)
index 0000000..9a3eca4
--- /dev/null
@@ -0,0 +1,277 @@
+/* argmatch.c -- find a match for a string in an array
+
+   Copyright (C) 1990, 1998-1999, 2001-2007, 2009-2011 Free Software
+   Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+/* Written by David MacKenzie <djm@ai.mit.edu>
+   Modified by Akim Demaille <demaille@inf.enst.fr> */
+
+#include <config.h>
+
+/* Specification.  */
+#include "argmatch.h"
+
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
+#include "error.h"
+#include "quotearg.h"
+#include "quote.h"
+
+#if USE_UNLOCKED_IO
+# include "unlocked-io.h"
+#endif
+
+/* When reporting an invalid argument, show nonprinting characters
+   by using the quoting style ARGMATCH_QUOTING_STYLE.  Do not use
+   literal_quoting_style.  */
+#ifndef ARGMATCH_QUOTING_STYLE
+# define ARGMATCH_QUOTING_STYLE locale_quoting_style
+#endif
+
+/* Non failing version of argmatch call this function after failing. */
+#ifndef ARGMATCH_DIE
+# include "exitfail.h"
+# define ARGMATCH_DIE exit (exit_failure)
+#endif
+
+#ifdef ARGMATCH_DIE_DECL
+ARGMATCH_DIE_DECL;
+#endif
+
+static void
+__argmatch_die (void)
+{
+  ARGMATCH_DIE;
+}
+
+/* Used by XARGMATCH and XARGCASEMATCH.  See description in argmatch.h.
+   Default to __argmatch_die, but allow caller to change this at run-time. */
+argmatch_exit_fn argmatch_die = __argmatch_die;
+
+\f
+/* If ARG is an unambiguous match for an element of the
+   NULL-terminated array ARGLIST, return the index in ARGLIST
+   of the matched element, else -1 if it does not match any element
+   or -2 if it is ambiguous (is a prefix of more than one element).
+
+   If VALLIST is none null, use it to resolve ambiguities limited to
+   synonyms, i.e., for
+     "yes", "yop" -> 0
+     "no", "nope" -> 1
+   "y" is a valid argument, for `0', and "n" for `1'.  */
+
+ptrdiff_t
+argmatch (const char *arg, const char *const *arglist,
+          const char *vallist, size_t valsize)
+{
+  size_t i;                     /* Temporary index in ARGLIST.  */
+  size_t arglen;                /* Length of ARG.  */
+  ptrdiff_t matchind = -1;      /* Index of first nonexact match.  */
+  bool ambiguous = false;       /* If true, multiple nonexact match(es).  */
+
+  arglen = strlen (arg);
+
+  /* Test all elements for either exact match or abbreviated matches.  */
+  for (i = 0; arglist[i]; i++)
+    {
+      if (!strncmp (arglist[i], arg, arglen))
+        {
+          if (strlen (arglist[i]) == arglen)
+            /* Exact match found.  */
+            return i;
+          else if (matchind == -1)
+            /* First nonexact match found.  */
+            matchind = i;
+          else
+            {
+              /* Second nonexact match found.  */
+              if (vallist == NULL
+                  || memcmp (vallist + valsize * matchind,
+                             vallist + valsize * i, valsize))
+                {
+                  /* There is a real ambiguity, or we could not
+                     disambiguate. */
+                  ambiguous = true;
+                }
+            }
+        }
+    }
+  if (ambiguous)
+    return -2;
+  else
+    return matchind;
+}
+
+/* Error reporting for argmatch.
+   CONTEXT is a description of the type of entity that was being matched.
+   VALUE is the invalid value that was given.
+   PROBLEM is the return value from argmatch.  */
+
+void
+argmatch_invalid (const char *context, const char *value, ptrdiff_t problem)
+{
+  char const *format = (problem == -1
+                        ? _("invalid argument %s for %s")
+                        : _("ambiguous argument %s for %s"));
+
+  error (0, 0, format, quotearg_n_style (0, ARGMATCH_QUOTING_STYLE, value),
+         quote_n (1, context));
+}
+
+/* List the valid arguments for argmatch.
+   ARGLIST is the same as in argmatch.
+   VALLIST is a pointer to an array of values.
+   VALSIZE is the size of the elements of VALLIST */
+void
+argmatch_valid (const char *const *arglist,
+                const char *vallist, size_t valsize)
+{
+  size_t i;
+  const char *last_val = NULL;
+
+  /* We try to put synonyms on the same line.  The assumption is that
+     synonyms follow each other */
+  fprintf (stderr, _("Valid arguments are:"));
+  for (i = 0; arglist[i]; i++)
+    if ((i == 0)
+        || memcmp (last_val, vallist + valsize * i, valsize))
+      {
+        fprintf (stderr, "\n  - `%s'", arglist[i]);
+        last_val = vallist + valsize * i;
+      }
+    else
+      {
+        fprintf (stderr, ", `%s'", arglist[i]);
+      }
+  putc ('\n', stderr);
+}
+
+/* Never failing versions of the previous functions.
+
+   CONTEXT is the context for which argmatch is called (e.g.,
+   "--version-control", or "$VERSION_CONTROL" etc.).  Upon failure,
+   calls the (supposed never to return) function EXIT_FN. */
+
+ptrdiff_t
+__xargmatch_internal (const char *context,
+                      const char *arg, const char *const *arglist,
+                      const char *vallist, size_t valsize,
+                      argmatch_exit_fn exit_fn)
+{
+  ptrdiff_t res = argmatch (arg, arglist, vallist, valsize);
+  if (res >= 0)
+    /* Success. */
+    return res;
+
+  /* We failed.  Explain why. */
+  argmatch_invalid (context, arg, res);
+  argmatch_valid (arglist, vallist, valsize);
+  (*exit_fn) ();
+
+  return -1; /* To please the compilers. */
+}
+
+/* Look for VALUE in VALLIST, an array of objects of size VALSIZE and
+   return the first corresponding argument in ARGLIST */
+const char *
+argmatch_to_argument (const char *value,
+                      const char *const *arglist,
+                      const char *vallist, size_t valsize)
+{
+  size_t i;
+
+  for (i = 0; arglist[i]; i++)
+    if (!memcmp (value, vallist + valsize * i, valsize))
+      return arglist[i];
+  return NULL;
+}
+
+#ifdef TEST
+/*
+ * Based on "getversion.c" by David MacKenzie <djm@gnu.ai.mit.edu>
+ */
+char *program_name;
+
+/* When to make backup files.  */
+enum backup_type
+{
+  /* Never make backups.  */
+  no_backups,
+
+  /* Make simple backups of every file.  */
+  simple_backups,
+
+  /* Make numbered backups of files that already have numbered backups,
+     and simple backups of the others.  */
+  numbered_existing_backups,
+
+  /* Make numbered backups of every file.  */
+  numbered_backups
+};
+
+/* Two tables describing arguments (keys) and their corresponding
+   values */
+static const char *const backup_args[] =
+{
+  "no", "none", "off",
+  "simple", "never",
+  "existing", "nil",
+  "numbered", "t",
+  0
+};
+
+static const enum backup_type backup_vals[] =
+{
+  no_backups, no_backups, no_backups,
+  simple_backups, simple_backups,
+  numbered_existing_backups, numbered_existing_backups,
+  numbered_backups, numbered_backups
+};
+
+int
+main (int argc, const char *const *argv)
+{
+  const char *cp;
+  enum backup_type backup_type = no_backups;
+
+  program_name = (char *) argv[0];
+
+  if (argc > 2)
+    {
+      fprintf (stderr, "Usage: %s [VERSION_CONTROL]\n", program_name);
+      exit (1);
+    }
+
+  if ((cp = getenv ("VERSION_CONTROL")))
+    backup_type = XARGMATCH ("$VERSION_CONTROL", cp,
+                             backup_args, backup_vals);
+
+  if (argc == 2)
+    backup_type = XARGMATCH (program_name, argv[1],
+                             backup_args, backup_vals);
+
+  printf ("The version control is `%s'\n",
+          ARGMATCH_TO_ARGUMENT (backup_type, backup_args, backup_vals));
+
+  return 0;
+}
+#endif
diff --git a/lib/argmatch.h b/lib/argmatch.h
new file mode 100644 (file)
index 0000000..f87729d
--- /dev/null
@@ -0,0 +1,102 @@
+/* argmatch.h -- definitions and prototypes for argmatch.c
+
+   Copyright (C) 1990, 1998-1999, 2001-2002, 2004-2005, 2009-2011 Free Software
+   Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+/* Written by David MacKenzie <djm@ai.mit.edu>
+   Modified by Akim Demaille <demaille@inf.enst.fr> */
+
+#ifndef ARGMATCH_H_
+# define ARGMATCH_H_ 1
+
+# include <stddef.h>
+
+# include "verify.h"
+
+# define ARRAY_CARDINALITY(Array) (sizeof (Array) / sizeof *(Array))
+
+/* Assert there are as many real arguments as there are values
+   (argument list ends with a NULL guard).  */
+
+# define ARGMATCH_VERIFY(Arglist, Vallist) \
+    verify (ARRAY_CARDINALITY (Arglist) == ARRAY_CARDINALITY (Vallist) + 1)
+
+/* Return the index of the element of ARGLIST (NULL terminated) that
+   matches with ARG.  If VALLIST is not NULL, then use it to resolve
+   false ambiguities (i.e., different matches of ARG but corresponding
+   to the same values in VALLIST).  */
+
+ptrdiff_t argmatch (char const *arg, char const *const *arglist,
+                    char const *vallist, size_t valsize);
+
+# define ARGMATCH(Arg, Arglist, Vallist) \
+  argmatch (Arg, Arglist, (char const *) (Vallist), sizeof *(Vallist))
+
+/* xargmatch calls this function when it fails.  This function should not
+   return.  By default, this is a function that calls ARGMATCH_DIE which
+   in turn defaults to `exit (exit_failure)'.  */
+typedef void (*argmatch_exit_fn) (void);
+extern argmatch_exit_fn argmatch_die;
+
+/* Report on stderr why argmatch failed.  Report correct values. */
+
+void argmatch_invalid (char const *context, char const *value,
+                       ptrdiff_t problem);
+
+/* Left for compatibility with the old name invalid_arg */
+
+# define invalid_arg(Context, Value, Problem) \
+  argmatch_invalid (Context, Value, Problem)
+
+
+
+/* Report on stderr the list of possible arguments.  */
+
+void argmatch_valid (char const *const *arglist,
+                     char const *vallist, size_t valsize);
+
+# define ARGMATCH_VALID(Arglist, Vallist) \
+  argmatch_valid (Arglist, (char const *) (Vallist), sizeof *(Vallist))
+
+
+
+/* Same as argmatch, but upon failure, report an explanation of the
+   failure, and exit using the function EXIT_FN. */
+
+ptrdiff_t __xargmatch_internal (char const *context,
+                                char const *arg, char const *const *arglist,
+                                char const *vallist, size_t valsize,
+                                argmatch_exit_fn exit_fn);
+
+/* Programmer friendly interface to __xargmatch_internal. */
+
+# define XARGMATCH(Context, Arg, Arglist, Vallist)              \
+  ((Vallist) [__xargmatch_internal (Context, Arg, Arglist,      \
+                                    (char const *) (Vallist),   \
+                                    sizeof *(Vallist),          \
+                                    argmatch_die)])
+
+/* Convert a value into a corresponding argument. */
+
+char const *argmatch_to_argument (char const *value,
+                                  char const *const *arglist,
+                                  char const *vallist, size_t valsize);
+
+# define ARGMATCH_TO_ARGUMENT(Value, Arglist, Vallist)                  \
+  argmatch_to_argument (Value, Arglist,                                 \
+                        (char const *) (Vallist), sizeof *(Vallist))
+
+#endif /* ARGMATCH_H_ */
diff --git a/lib/basename-lgpl.c b/lib/basename-lgpl.c
new file mode 100644 (file)
index 0000000..529bc35
--- /dev/null
@@ -0,0 +1,75 @@
+/* basename.c -- return the last element in a file name
+
+   Copyright (C) 1990, 1998-2001, 2003-2006, 2009-2011 Free Software
+   Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+#include "dirname.h"
+
+#include <string.h>
+
+/* Return the address of the last file name component of NAME.  If
+   NAME has no relative file name components because it is a file
+   system root, return the empty string.  */
+
+char *
+last_component (char const *name)
+{
+  char const *base = name + FILE_SYSTEM_PREFIX_LEN (name);
+  char const *p;
+  bool saw_slash = false;
+
+  while (ISSLASH (*base))
+    base++;
+
+  for (p = base; *p; p++)
+    {
+      if (ISSLASH (*p))
+        saw_slash = true;
+      else if (saw_slash)
+        {
+          base = p;
+          saw_slash = false;
+        }
+    }
+
+  return (char *) base;
+}
+
+/* Return the length of the basename NAME.  Typically NAME is the
+   value returned by base_name or last_component.  Act like strlen
+   (NAME), except omit all trailing slashes.  */
+
+size_t
+base_len (char const *name)
+{
+  size_t len;
+  size_t prefix_len = FILE_SYSTEM_PREFIX_LEN (name);
+
+  for (len = strlen (name);  1 < len && ISSLASH (name[len - 1]);  len--)
+    continue;
+
+  if (DOUBLE_SLASH_IS_DISTINCT_ROOT && len == 1
+      && ISSLASH (name[0]) && ISSLASH (name[1]) && ! name[2])
+    return 2;
+
+  if (FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE && prefix_len
+      && len == prefix_len && ISSLASH (name[prefix_len]))
+    return prefix_len + 1;
+
+  return len;
+}
diff --git a/lib/basename.c b/lib/basename.c
new file mode 100644 (file)
index 0000000..90ac501
--- /dev/null
@@ -0,0 +1,58 @@
+/* basename.c -- return the last element in a file name
+
+   Copyright (C) 1990, 1998-2001, 2003-2006, 2009-2011 Free Software
+   Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+#include "dirname.h"
+
+#include <string.h>
+#include "xalloc.h"
+#include "xstrndup.h"
+
+char *
+base_name (char const *name)
+{
+  char const *base = last_component (name);
+  size_t length;
+
+  /* If there is no last component, then name is a file system root or the
+     empty string.  */
+  if (! *base)
+    return xstrndup (name, base_len (name));
+
+  /* Collapse a sequence of trailing slashes into one.  */
+  length = base_len (base);
+  if (ISSLASH (base[length]))
+    length++;
+
+  /* On systems with drive letters, `a/b:c' must return `./b:c' rather
+     than `b:c' to avoid confusion with a drive letter.  On systems
+     with pure POSIX semantics, this is not an issue.  */
+  if (FILE_SYSTEM_PREFIX_LEN (base))
+    {
+      char *p = xmalloc (length + 3);
+      p[0] = '.';
+      p[1] = '/';
+      memcpy (p + 2, base, length);
+      p[length + 2] = '\0';
+      return p;
+    }
+
+  /* Finally, copy the basename.  */
+  return xstrndup (base, length);
+}
diff --git a/lib/btowc.c b/lib/btowc.c
new file mode 100644 (file)
index 0000000..9b3908d
--- /dev/null
@@ -0,0 +1,39 @@
+/* Convert unibyte character to wide character.
+   Copyright (C) 2008, 2010-2011 Free Software Foundation, Inc.
+   Written by Bruno Haible <bruno@clisp.org>, 2008.
+
+   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 <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include <wchar.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+
+wint_t
+btowc (int c)
+{
+  if (c != EOF)
+    {
+      char buf[1];
+      wchar_t wc;
+
+      buf[0] = c;
+      if (mbtowc (&wc, buf, 1) >= 0)
+        return wc;
+    }
+  return WEOF;
+}
diff --git a/lib/calloc.c b/lib/calloc.c
new file mode 100644 (file)
index 0000000..4ac06d2
--- /dev/null
@@ -0,0 +1,73 @@
+/* calloc() function that is glibc compatible.
+   This wrapper function is required at least on Tru64 UNIX 5.1 and mingw.
+   Copyright (C) 2004-2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+/* written by Jim Meyering and Bruno Haible */
+
+#include <config.h>
+/* Only the AC_FUNC_CALLOC macro defines 'calloc' already in config.h.  */
+#ifdef calloc
+# define NEED_CALLOC_GNU 1
+# undef calloc
+/* Whereas the gnulib module 'calloc-gnu' defines HAVE_CALLOC_GNU.  */
+#elif GNULIB_CALLOC_GNU && !HAVE_CALLOC_GNU
+# define NEED_CALLOC_GNU 1
+#endif
+
+/* Specification.  */
+#include <stdlib.h>
+
+#include <errno.h>
+
+/* Call the system's calloc below.  */
+#undef calloc
+
+/* Allocate and zero-fill an NxS-byte block of memory from the heap.
+   If N or S is zero, allocate and zero-fill a 1-byte block.  */
+
+void *
+rpl_calloc (size_t n, size_t s)
+{
+  void *result;
+
+#if NEED_CALLOC_GNU
+  if (n == 0 || s == 0)
+    {
+      n = 1;
+      s = 1;
+    }
+  else
+    {
+      /* Defend against buggy calloc implementations that mishandle
+         size_t overflow.  */
+      size_t bytes = n * s;
+      if (bytes / s != n)
+        {
+          errno = ENOMEM;
+          return NULL;
+        }
+    }
+#endif
+
+  result = calloc (n, s);
+
+#if !HAVE_CALLOC_POSIX
+  if (result == NULL)
+    errno = ENOMEM;
+#endif
+
+  return result;
+}
diff --git a/lib/canonicalize-lgpl.c b/lib/canonicalize-lgpl.c
new file mode 100644 (file)
index 0000000..1574ec1
--- /dev/null
@@ -0,0 +1,378 @@
+/* Return the canonical absolute name of a given file.
+   Copyright (C) 1996-2011 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   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 <http://www.gnu.org/licenses/>.  */
+
+#ifndef _LIBC
+# define _GL_USE_STDLIB_ALLOC 1
+# include <config.h>
+#endif
+
+#if !HAVE_CANONICALIZE_FILE_NAME || !FUNC_REALPATH_WORKS || defined _LIBC
+
+/* Don't use __attribute__ __nonnull__ in this compilation unit.  Otherwise gcc
+   optimizes away the name == NULL test below.  */
+#define _GL_ARG_NONNULL(params)
+
+/* Specification.  */
+#include <stdlib.h>
+
+#include <alloca.h>
+#include <string.h>
+#include <unistd.h>
+#include <limits.h>
+#if HAVE_SYS_PARAM_H || defined _LIBC
+# include <sys/param.h>
+#endif
+#include <sys/stat.h>
+#include <errno.h>
+#include <stddef.h>
+
+#ifdef _LIBC
+# include <shlib-compat.h>
+#else
+# define SHLIB_COMPAT(lib, introduced, obsoleted) 0
+# define versioned_symbol(lib, local, symbol, version) extern int dummy
+# define compat_symbol(lib, local, symbol, version)
+# define weak_alias(local, symbol)
+# define __canonicalize_file_name canonicalize_file_name
+# define __realpath realpath
+# include "pathmax.h"
+# include "malloca.h"
+# if HAVE_GETCWD
+#  if IN_RELOCWRAPPER
+    /* When building the relocatable program wrapper, use the system's getcwd
+       function, not the gnulib override, otherwise we would get a link error.
+     */
+#   undef getcwd
+#  endif
+#  ifdef VMS
+    /* We want the directory in Unix syntax, not in VMS syntax.  */
+#   define __getcwd(buf, max) getcwd (buf, max, 0)
+#  else
+#   define __getcwd getcwd
+#  endif
+# else
+#  define __getcwd(buf, max) getwd (buf)
+# endif
+# define __readlink readlink
+# define __set_errno(e) errno = (e)
+# ifndef MAXSYMLINKS
+#  ifdef SYMLOOP_MAX
+#   define MAXSYMLINKS SYMLOOP_MAX
+#  else
+#   define MAXSYMLINKS 20
+#  endif
+# endif
+#endif
+
+#ifndef DOUBLE_SLASH_IS_DISTINCT_ROOT
+# define DOUBLE_SLASH_IS_DISTINCT_ROOT 0
+#endif
+
+#if !FUNC_REALPATH_WORKS || defined _LIBC
+/* Return the canonical absolute name of file NAME.  A canonical name
+   does not contain any `.', `..' components nor any repeated path
+   separators ('/') or symlinks.  All path components must exist.  If
+   RESOLVED is null, the result is malloc'd; otherwise, if the
+   canonical name is PATH_MAX chars or more, returns null with `errno'
+   set to ENAMETOOLONG; if the name fits in fewer than PATH_MAX chars,
+   returns the name in RESOLVED.  If the name cannot be resolved and
+   RESOLVED is non-NULL, it contains the path of the first component
+   that cannot be resolved.  If the path can be resolved, RESOLVED
+   holds the same value as the value returned.  */
+
+char *
+__realpath (const char *name, char *resolved)
+{
+  char *rpath, *dest, *extra_buf = NULL;
+  const char *start, *end, *rpath_limit;
+  long int path_max;
+  int num_links = 0;
+
+  if (name == NULL)
+    {
+      /* As per Single Unix Specification V2 we must return an error if
+         either parameter is a null pointer.  We extend this to allow
+         the RESOLVED parameter to be NULL in case the we are expected to
+         allocate the room for the return value.  */
+      __set_errno (EINVAL);
+      return NULL;
+    }
+
+  if (name[0] == '\0')
+    {
+      /* As per Single Unix Specification V2 we must return an error if
+         the name argument points to an empty string.  */
+      __set_errno (ENOENT);
+      return NULL;
+    }
+
+#ifdef PATH_MAX
+  path_max = PATH_MAX;
+#else
+  path_max = pathconf (name, _PC_PATH_MAX);
+  if (path_max <= 0)
+    path_max = 1024;
+#endif
+
+  if (resolved == NULL)
+    {
+      rpath = malloc (path_max);
+      if (rpath == NULL)
+        {
+          /* It's easier to set errno to ENOMEM than to rely on the
+             'malloc-posix' gnulib module.  */
+          errno = ENOMEM;
+          return NULL;
+        }
+    }
+  else
+    rpath = resolved;
+  rpath_limit = rpath + path_max;
+
+  if (name[0] != '/')
+    {
+      if (!__getcwd (rpath, path_max))
+        {
+          rpath[0] = '\0';
+          goto error;
+        }
+      dest = strchr (rpath, '\0');
+    }
+  else
+    {
+      rpath[0] = '/';
+      dest = rpath + 1;
+      if (DOUBLE_SLASH_IS_DISTINCT_ROOT && name[1] == '/')
+        *dest++ = '/';
+    }
+
+  for (start = end = name; *start; start = end)
+    {
+#ifdef _LIBC
+      struct stat64 st;
+#else
+      struct stat st;
+#endif
+      int n;
+
+      /* Skip sequence of multiple path-separators.  */
+      while (*start == '/')
+        ++start;
+
+      /* Find end of path component.  */
+      for (end = start; *end && *end != '/'; ++end)
+        /* Nothing.  */;
+
+      if (end - start == 0)
+        break;
+      else if (end - start == 1 && start[0] == '.')
+        /* nothing */;
+      else if (end - start == 2 && start[0] == '.' && start[1] == '.')
+        {
+          /* Back up to previous component, ignore if at root already.  */
+          if (dest > rpath + 1)
+            while ((--dest)[-1] != '/');
+          if (DOUBLE_SLASH_IS_DISTINCT_ROOT && dest == rpath + 1
+              && *dest == '/')
+            dest++;
+        }
+      else
+        {
+          size_t new_size;
+
+          if (dest[-1] != '/')
+            *dest++ = '/';
+
+          if (dest + (end - start) >= rpath_limit)
+            {
+              ptrdiff_t dest_offset = dest - rpath;
+              char *new_rpath;
+
+              if (resolved)
+                {
+                  __set_errno (ENAMETOOLONG);
+                  if (dest > rpath + 1)
+                    dest--;
+                  *dest = '\0';
+                  goto error;
+                }
+              new_size = rpath_limit - rpath;
+              if (end - start + 1 > path_max)
+                new_size += end - start + 1;
+              else
+                new_size += path_max;
+              new_rpath = (char *) realloc (rpath, new_size);
+              if (new_rpath == NULL)
+                {
+                  /* It's easier to set errno to ENOMEM than to rely on the
+                     'realloc-posix' gnulib module.  */
+                  errno = ENOMEM;
+                  goto error;
+                }
+              rpath = new_rpath;
+              rpath_limit = rpath + new_size;
+
+              dest = rpath + dest_offset;
+            }
+
+#ifdef _LIBC
+          dest = __mempcpy (dest, start, end - start);
+#else
+          memcpy (dest, start, end - start);
+          dest += end - start;
+#endif
+          *dest = '\0';
+
+#ifdef _LIBC
+          if (__lxstat64 (_STAT_VER, rpath, &st) < 0)
+#else
+          if (lstat (rpath, &st) < 0)
+#endif
+            goto error;
+
+          if (S_ISLNK (st.st_mode))
+            {
+              char *buf;
+              size_t len;
+
+              if (++num_links > MAXSYMLINKS)
+                {
+                  __set_errno (ELOOP);
+                  goto error;
+                }
+
+              buf = malloca (path_max);
+              if (!buf)
+                {
+                  errno = ENOMEM;
+                  goto error;
+                }
+
+              n = __readlink (rpath, buf, path_max - 1);
+              if (n < 0)
+                {
+                  int saved_errno = errno;
+                  freea (buf);
+                  errno = saved_errno;
+                  goto error;
+                }
+              buf[n] = '\0';
+
+              if (!extra_buf)
+                {
+                  extra_buf = malloca (path_max);
+                  if (!extra_buf)
+                    {
+                      freea (buf);
+                      errno = ENOMEM;
+                      goto error;
+                    }
+                }
+
+              len = strlen (end);
+              if ((long int) (n + len) >= path_max)
+                {
+                  freea (buf);
+                  __set_errno (ENAMETOOLONG);
+                  goto error;
+                }
+
+              /* Careful here, end may be a pointer into extra_buf... */
+              memmove (&extra_buf[n], end, len + 1);
+              name = end = memcpy (extra_buf, buf, n);
+
+              if (buf[0] == '/')
+                {
+                  dest = rpath + 1;     /* It's an absolute symlink */
+                  if (DOUBLE_SLASH_IS_DISTINCT_ROOT && buf[1] == '/')
+                    *dest++ = '/';
+                }
+              else
+                {
+                  /* Back up to previous component, ignore if at root
+                     already: */
+                  if (dest > rpath + 1)
+                    while ((--dest)[-1] != '/');
+                  if (DOUBLE_SLASH_IS_DISTINCT_ROOT && dest == rpath + 1
+                      && *dest == '/')
+                    dest++;
+                }
+            }
+          else if (!S_ISDIR (st.st_mode) && *end != '\0')
+            {
+              __set_errno (ENOTDIR);
+              goto error;
+            }
+        }
+    }
+  if (dest > rpath + 1 && dest[-1] == '/')
+    --dest;
+  if (DOUBLE_SLASH_IS_DISTINCT_ROOT && dest == rpath + 1 && *dest == '/')
+    dest++;
+  *dest = '\0';
+
+  if (extra_buf)
+    freea (extra_buf);
+
+  return rpath;
+
+error:
+  {
+    int saved_errno = errno;
+    if (extra_buf)
+      freea (extra_buf);
+    if (resolved == NULL)
+      free (rpath);
+    errno = saved_errno;
+  }
+  return NULL;
+}
+versioned_symbol (libc, __realpath, realpath, GLIBC_2_3);
+#endif /* !FUNC_REALPATH_WORKS || defined _LIBC */
+
+
+#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_3)
+char *
+attribute_compat_text_section
+__old_realpath (const char *name, char *resolved)
+{
+  if (resolved == NULL)
+    {
+      __set_errno (EINVAL);
+      return NULL;
+    }
+
+  return __realpath (name, resolved);
+}
+compat_symbol (libc, __old_realpath, realpath, GLIBC_2_0);
+#endif
+
+
+char *
+__canonicalize_file_name (const char *name)
+{
+  return __realpath (name, NULL);
+}
+weak_alias (__canonicalize_file_name, canonicalize_file_name)
+
+#else
+
+/* This declaration is solely to ensure that after preprocessing
+   this file is never empty.  */
+typedef int dummy;
+
+#endif
diff --git a/lib/close-stream.c b/lib/close-stream.c
new file mode 100644 (file)
index 0000000..8819b58
--- /dev/null
@@ -0,0 +1,78 @@
+/* Close a stream, with nicer error checking than fclose's.
+
+   Copyright (C) 1998-2002, 2004, 2006-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+#include "close-stream.h"
+
+#include <errno.h>
+#include <stdbool.h>
+
+#include "fpending.h"
+
+#if USE_UNLOCKED_IO
+# include "unlocked-io.h"
+#endif
+
+/* Close STREAM.  Return 0 if successful, EOF (setting errno)
+   otherwise.  A failure might set errno to 0 if the error number
+   cannot be determined.
+
+   A failure with errno set to EPIPE may or may not indicate an error
+   situation worth signaling to the user.  See the documentation of the
+   close_stdout_set_ignore_EPIPE function for details.
+
+   If a program writes *anything* to STREAM, that program should close
+   STREAM and make sure that it succeeds before exiting.  Otherwise,
+   suppose that you go to the extreme of checking the return status
+   of every function that does an explicit write to STREAM.  The last
+   printf can succeed in writing to the internal stream buffer, and yet
+   the fclose(STREAM) could still fail (due e.g., to a disk full error)
+   when it tries to write out that buffered data.  Thus, you would be
+   left with an incomplete output file and the offending program would
+   exit successfully.  Even calling fflush is not always sufficient,
+   since some file systems (NFS and CODA) buffer written/flushed data
+   until an actual close call.
+
+   Besides, it's wasteful to check the return value from every call
+   that writes to STREAM -- just let the internal stream state record
+   the failure.  That's what the ferror test is checking below.  */
+
+int
+close_stream (FILE *stream)
+{
+  const bool some_pending = (__fpending (stream) != 0);
+  const bool prev_fail = (ferror (stream) != 0);
+  const bool fclose_fail = (fclose (stream) != 0);
+
+  /* Return an error indication if there was a previous failure or if
+     fclose failed, with one exception: ignore an fclose failure if
+     there was no previous error, no data remains to be flushed, and
+     fclose failed with EBADF.  That can happen when a program like cp
+     is invoked like this `cp a b >&-' (i.e., with standard output
+     closed) and doesn't generate any output (hence no previous error
+     and nothing to be flushed).  */
+
+  if (prev_fail || (fclose_fail && (some_pending || errno != EBADF)))
+    {
+      if (! fclose_fail)
+        errno = 0;
+      return EOF;
+    }
+
+  return 0;
+}
diff --git a/lib/close-stream.h b/lib/close-stream.h
new file mode 100644 (file)
index 0000000..be3d419
--- /dev/null
@@ -0,0 +1,2 @@
+#include <stdio.h>
+int close_stream (FILE *stream);
diff --git a/lib/close.c b/lib/close.c
new file mode 100644 (file)
index 0000000..2c41c75
--- /dev/null
@@ -0,0 +1,42 @@
+/* close replacement.
+   Copyright (C) 2008-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include <unistd.h>
+
+#include "fd-hook.h"
+
+/* Override close() to call into other gnulib modules.  */
+
+int
+rpl_close (int fd)
+#undef close
+{
+#if WINDOWS_SOCKETS
+  int retval = execute_all_close_hooks (close, fd);
+#else
+  int retval = close (fd);
+#endif
+
+#if REPLACE_FCHDIR
+  if (retval >= 0)
+    _gl_unregister_fd (fd);
+#endif
+
+  return retval;
+}
diff --git a/lib/closeout.c b/lib/closeout.c
new file mode 100644 (file)
index 0000000..f6cdd3f
--- /dev/null
@@ -0,0 +1,124 @@
+/* Close standard output and standard error, exiting with a diagnostic on error.
+
+   Copyright (C) 1998-2002, 2004, 2006, 2008-2011 Free Software Foundation,
+   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; 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 <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+#include "closeout.h"
+
+#include <errno.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <unistd.h>
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
+#include "close-stream.h"
+#include "error.h"
+#include "exitfail.h"
+#include "quotearg.h"
+
+static const char *file_name;
+
+/* Set the file name to be reported in the event an error is detected
+   by close_stdout.  */
+void
+close_stdout_set_file_name (const char *file)
+{
+  file_name = file;
+}
+
+static bool ignore_EPIPE /* = false */;
+
+/* Specify the reaction to an EPIPE error during the closing of stdout:
+     - If ignore = true, it shall be ignored.
+     - If ignore = false, it shall evoke a diagnostic, along with a nonzero
+       exit status.
+   The default is ignore = false.
+
+   This setting matters only if the SIGPIPE signal is ignored (i.e. its
+   handler set to SIG_IGN) or blocked.  Only particular programs need to
+   temporarily ignore SIGPIPE.  If SIGPIPE is ignored or blocked because
+   it was ignored or blocked in the parent process when it created the
+   child process, it usually is a bug in the parent process: It is bad
+   practice to have SIGPIPE ignored or blocked while creating a child
+   process.
+
+   EPIPE occurs when writing to a pipe or socket that has no readers now,
+   when SIGPIPE is ignored or blocked.
+
+   The ignore = false setting is suitable for a scenario where it is normally
+   guaranteed that the pipe writer terminates before the pipe reader.  In
+   this case, an EPIPE is an indication of a premature termination of the
+   pipe reader and should lead to a diagnostic and a nonzero exit status.
+
+   The ignore = true setting is suitable for a scenario where you don't know
+   ahead of time whether the pipe writer or the pipe reader will terminate
+   first.  In this case, an EPIPE is an indication that the pipe writer can
+   stop doing useless write() calls; this is what close_stdout does anyway.
+   EPIPE is part of the normal pipe/socket shutdown protocol in this case,
+   and should not lead to a diagnostic message.  */
+
+void
+close_stdout_set_ignore_EPIPE (bool ignore)
+{
+  ignore_EPIPE = ignore;
+}
+
+/* Close standard output.  On error, issue a diagnostic and _exit
+   with status 'exit_failure'.
+
+   Also close standard error.  On error, _exit with status 'exit_failure'.
+
+   Since close_stdout is commonly registered via 'atexit', POSIX
+   and the C standard both say that it should not call 'exit',
+   because the behavior is undefined if 'exit' is called more than
+   once.  So it calls '_exit' instead of 'exit'.  If close_stdout
+   is registered via atexit before other functions are registered,
+   the other functions can act before this _exit is invoked.
+
+   Applications that use close_stdout should flush any streams
+   other than stdout and stderr before exiting, since the call to
+   _exit will bypass other buffer flushing.  Applications should
+   be flushing and closing other streams anyway, to check for I/O
+   errors.  Also, applications should not use tmpfile, since _exit
+   can bypass the removal of these files.
+
+   It's important to detect such failures and exit nonzero because many
+   tools (most notably `make' and other build-management systems) depend
+   on being able to detect failure in other tools via their exit status.  */
+
+void
+close_stdout (void)
+{
+  if (close_stream (stdout) != 0
+      && !(ignore_EPIPE && errno == EPIPE))
+    {
+      char const *write_error = _("write error");
+      if (file_name)
+        error (0, errno, "%s: %s", quotearg_colon (file_name),
+               write_error);
+      else
+        error (0, errno, "%s", write_error);
+
+      _exit (exit_failure);
+    }
+
+   if (close_stream (stderr) != 0)
+     _exit (exit_failure);
+}
diff --git a/lib/closeout.h b/lib/closeout.h
new file mode 100644 (file)
index 0000000..ec8d7a6
--- /dev/null
@@ -0,0 +1,36 @@
+/* Close standard output and standard error.
+
+   Copyright (C) 1998, 2000, 2003-2004, 2006, 2008-2011 Free Software
+   Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+#ifndef CLOSEOUT_H
+# define CLOSEOUT_H 1
+
+# include <stdbool.h>
+
+# ifdef __cplusplus
+extern "C" {
+# endif
+
+void close_stdout_set_file_name (const char *file);
+void close_stdout_set_ignore_EPIPE (bool ignore);
+void close_stdout (void);
+
+# ifdef __cplusplus
+}
+# endif
+
+#endif
diff --git a/lib/config.charset b/lib/config.charset
new file mode 100644 (file)
index 0000000..93b5a5d
--- /dev/null
@@ -0,0 +1,683 @@
+#! /bin/sh
+# Output a system dependent table of character encoding aliases.
+#
+#   Copyright (C) 2000-2004, 2006-2011 Free Software Foundation, 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; either version 3, 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.
+#
+# The table consists of lines of the form
+#    ALIAS  CANONICAL
+#
+# ALIAS is the (system dependent) result of "nl_langinfo (CODESET)".
+# ALIAS is compared in a case sensitive way.
+#
+# CANONICAL is the GNU canonical name for this character encoding.
+# It must be an encoding supported by libiconv. Support by GNU libc is
+# also desirable. CANONICAL is case insensitive. Usually an upper case
+# MIME charset name is preferred.
+# The current list of GNU canonical charset names is as follows.
+#
+#       name              MIME?             used by which systems
+#   ASCII, ANSI_X3.4-1968       glibc solaris freebsd netbsd darwin cygwin
+#   ISO-8859-1              Y   glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin
+#   ISO-8859-2              Y   glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin
+#   ISO-8859-3              Y   glibc solaris cygwin
+#   ISO-8859-4              Y   osf solaris freebsd netbsd openbsd darwin
+#   ISO-8859-5              Y   glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin
+#   ISO-8859-6              Y   glibc aix hpux solaris cygwin
+#   ISO-8859-7              Y   glibc aix hpux irix osf solaris netbsd openbsd darwin cygwin
+#   ISO-8859-8              Y   glibc aix hpux osf solaris cygwin
+#   ISO-8859-9              Y   glibc aix hpux irix osf solaris darwin cygwin
+#   ISO-8859-13                 glibc netbsd openbsd darwin cygwin
+#   ISO-8859-14                 glibc cygwin
+#   ISO-8859-15                 glibc aix osf solaris freebsd netbsd openbsd darwin cygwin
+#   KOI8-R                  Y   glibc solaris freebsd netbsd openbsd darwin
+#   KOI8-U                  Y   glibc freebsd netbsd openbsd darwin cygwin
+#   KOI8-T                      glibc
+#   CP437                       dos
+#   CP775                       dos
+#   CP850                       aix osf dos
+#   CP852                       dos
+#   CP855                       dos
+#   CP856                       aix
+#   CP857                       dos
+#   CP861                       dos
+#   CP862                       dos
+#   CP864                       dos
+#   CP865                       dos
+#   CP866                       freebsd netbsd openbsd darwin dos
+#   CP869                       dos
+#   CP874                       woe32 dos
+#   CP922                       aix
+#   CP932                       aix cygwin woe32 dos
+#   CP943                       aix
+#   CP949                       osf darwin woe32 dos
+#   CP950                       woe32 dos
+#   CP1046                      aix
+#   CP1124                      aix
+#   CP1125                      dos
+#   CP1129                      aix
+#   CP1131                      darwin
+#   CP1250                      woe32
+#   CP1251                      glibc solaris netbsd openbsd darwin cygwin woe32
+#   CP1252                      aix woe32
+#   CP1253                      woe32
+#   CP1254                      woe32
+#   CP1255                      glibc woe32
+#   CP1256                      woe32
+#   CP1257                      woe32
+#   GB2312                  Y   glibc aix hpux irix solaris freebsd netbsd darwin
+#   EUC-JP                  Y   glibc aix hpux irix osf solaris freebsd netbsd darwin
+#   EUC-KR                  Y   glibc aix hpux irix osf solaris freebsd netbsd darwin cygwin
+#   EUC-TW                      glibc aix hpux irix osf solaris netbsd
+#   BIG5                    Y   glibc aix hpux osf solaris freebsd netbsd darwin cygwin
+#   BIG5-HKSCS                  glibc solaris darwin
+#   GBK                         glibc aix osf solaris darwin cygwin woe32 dos
+#   GB18030                     glibc solaris netbsd darwin
+#   SHIFT_JIS               Y   hpux osf solaris freebsd netbsd darwin
+#   JOHAB                       glibc solaris woe32
+#   TIS-620                     glibc aix hpux osf solaris cygwin
+#   VISCII                  Y   glibc
+#   TCVN5712-1                  glibc
+#   ARMSCII-8                   glibc darwin
+#   GEORGIAN-PS                 glibc cygwin
+#   PT154                       glibc
+#   HP-ROMAN8                   hpux
+#   HP-ARABIC8                  hpux
+#   HP-GREEK8                   hpux
+#   HP-HEBREW8                  hpux
+#   HP-TURKISH8                 hpux
+#   HP-KANA8                    hpux
+#   DEC-KANJI                   osf
+#   DEC-HANYU                   osf
+#   UTF-8                   Y   glibc aix hpux osf solaris netbsd darwin cygwin
+#
+# Note: Names which are not marked as being a MIME name should not be used in
+# Internet protocols for information interchange (mail, news, etc.).
+#
+# Note: ASCII and ANSI_X3.4-1968 are synonymous canonical names. Applications
+# must understand both names and treat them as equivalent.
+#
+# The first argument passed to this file is the canonical host specification,
+#    CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or
+#    CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+
+host="$1"
+os=`echo "$host" | sed -e 's/^[^-]*-[^-]*-\(.*\)$/\1/'`
+echo "# This file contains a table of character encoding aliases,"
+echo "# suitable for operating system '${os}'."
+echo "# It was automatically generated from config.charset."
+# List of references, updated during installation:
+echo "# Packages using this file: "
+case "$os" in
+  linux-gnulibc1*)
+    # Linux libc5 doesn't have nl_langinfo(CODESET); therefore
+    # localcharset.c falls back to using the full locale name
+    # from the environment variables.
+    echo "C ASCII"
+    echo "POSIX ASCII"
+    for l in af af_ZA ca ca_ES da da_DK de de_AT de_BE de_CH de_DE de_LU \
+             en en_AU en_BW en_CA en_DK en_GB en_IE en_NZ en_US en_ZA \
+             en_ZW es es_AR es_BO es_CL es_CO es_DO es_EC es_ES es_GT \
+             es_HN es_MX es_PA es_PE es_PY es_SV es_US es_UY es_VE et \
+             et_EE eu eu_ES fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR \
+             fr_LU ga ga_IE gl gl_ES id id_ID in in_ID is is_IS it it_CH \
+             it_IT kl kl_GL nl nl_BE nl_NL no no_NO pt pt_BR pt_PT sv \
+             sv_FI sv_SE; do
+      echo "$l ISO-8859-1"
+      echo "$l.iso-8859-1 ISO-8859-1"
+      echo "$l.iso-8859-15 ISO-8859-15"
+      echo "$l.iso-8859-15@euro ISO-8859-15"
+      echo "$l@euro ISO-8859-15"
+      echo "$l.cp-437 CP437"
+      echo "$l.cp-850 CP850"
+      echo "$l.cp-1252 CP1252"
+      echo "$l.cp-1252@euro CP1252"
+      #echo "$l.atari-st ATARI-ST" # not a commonly used encoding
+      echo "$l.utf-8 UTF-8"
+      echo "$l.utf-8@euro UTF-8"
+    done
+    for l in cs cs_CZ hr hr_HR hu hu_HU pl pl_PL ro ro_RO sk sk_SK sl \
+             sl_SI sr sr_CS sr_YU; do
+      echo "$l ISO-8859-2"
+      echo "$l.iso-8859-2 ISO-8859-2"
+      echo "$l.cp-852 CP852"
+      echo "$l.cp-1250 CP1250"
+      echo "$l.utf-8 UTF-8"
+    done
+    for l in mk mk_MK ru ru_RU; do
+      echo "$l ISO-8859-5"
+      echo "$l.iso-8859-5 ISO-8859-5"
+      echo "$l.koi8-r KOI8-R"
+      echo "$l.cp-866 CP866"
+      echo "$l.cp-1251 CP1251"
+      echo "$l.utf-8 UTF-8"
+    done
+    for l in ar ar_SA; do
+      echo "$l ISO-8859-6"
+      echo "$l.iso-8859-6 ISO-8859-6"
+      echo "$l.cp-864 CP864"
+      #echo "$l.cp-868 CP868" # not a commonly used encoding
+      echo "$l.cp-1256 CP1256"
+      echo "$l.utf-8 UTF-8"
+    done
+    for l in el el_GR gr gr_GR; do
+      echo "$l ISO-8859-7"
+      echo "$l.iso-8859-7 ISO-8859-7"
+      echo "$l.cp-869 CP869"
+      echo "$l.cp-1253 CP1253"
+      echo "$l.cp-1253@euro CP1253"
+      echo "$l.utf-8 UTF-8"
+      echo "$l.utf-8@euro UTF-8"
+    done
+    for l in he he_IL iw iw_IL; do
+      echo "$l ISO-8859-8"
+      echo "$l.iso-8859-8 ISO-8859-8"
+      echo "$l.cp-862 CP862"
+      echo "$l.cp-1255 CP1255"
+      echo "$l.utf-8 UTF-8"
+    done
+    for l in tr tr_TR; do
+      echo "$l ISO-8859-9"
+      echo "$l.iso-8859-9 ISO-8859-9"
+      echo "$l.cp-857 CP857"
+      echo "$l.cp-1254 CP1254"
+      echo "$l.utf-8 UTF-8"
+    done
+    for l in lt lt_LT lv lv_LV; do
+      #echo "$l BALTIC" # not a commonly used encoding, wrong encoding name
+      echo "$l ISO-8859-13"
+    done
+    for l in ru_UA uk uk_UA; do
+      echo "$l KOI8-U"
+    done
+    for l in zh zh_CN; do
+      #echo "$l GB_2312-80" # not a commonly used encoding, wrong encoding name
+      echo "$l GB2312"
+    done
+    for l in ja ja_JP ja_JP.EUC; do
+      echo "$l EUC-JP"
+    done
+    for l in ko ko_KR; do
+      echo "$l EUC-KR"
+    done
+    for l in th th_TH; do
+      echo "$l TIS-620"
+    done
+    for l in fa fa_IR; do
+      #echo "$l ISIRI-3342" # a broken encoding
+      echo "$l.utf-8 UTF-8"
+    done
+    ;;
+  linux* | *-gnu*)
+    # With glibc-2.1 or newer, we don't need any canonicalization,
+    # because glibc has iconv and both glibc and libiconv support all
+    # GNU canonical names directly. Therefore, the Makefile does not
+    # need to install the alias file at all.
+    # The following applies only to glibc-2.0.x and older libcs.
+    echo "ISO_646.IRV:1983 ASCII"
+    ;;
+  aix*)
+    echo "ISO8859-1 ISO-8859-1"
+    echo "ISO8859-2 ISO-8859-2"
+    echo "ISO8859-5 ISO-8859-5"
+    echo "ISO8859-6 ISO-8859-6"
+    echo "ISO8859-7 ISO-8859-7"
+    echo "ISO8859-8 ISO-8859-8"
+    echo "ISO8859-9 ISO-8859-9"
+    echo "ISO8859-15 ISO-8859-15"
+    echo "IBM-850 CP850"
+    echo "IBM-856 CP856"
+    echo "IBM-921 ISO-8859-13"
+    echo "IBM-922 CP922"
+    echo "IBM-932 CP932"
+    echo "IBM-943 CP943"
+    echo "IBM-1046 CP1046"
+    echo "IBM-1124 CP1124"
+    echo "IBM-1129 CP1129"
+    echo "IBM-1252 CP1252"
+    echo "IBM-eucCN GB2312"
+    echo "IBM-eucJP EUC-JP"
+    echo "IBM-eucKR EUC-KR"
+    echo "IBM-eucTW EUC-TW"
+    echo "big5 BIG5"
+    echo "GBK GBK"
+    echo "TIS-620 TIS-620"
+    echo "UTF-8 UTF-8"
+    ;;
+  hpux*)
+    echo "iso88591 ISO-8859-1"
+    echo "iso88592 ISO-8859-2"
+    echo "iso88595 ISO-8859-5"
+    echo "iso88596 ISO-8859-6"
+    echo "iso88597 ISO-8859-7"
+    echo "iso88598 ISO-8859-8"
+    echo "iso88599 ISO-8859-9"
+    echo "iso885915 ISO-8859-15"
+    echo "roman8 HP-ROMAN8"
+    echo "arabic8 HP-ARABIC8"
+    echo "greek8 HP-GREEK8"
+    echo "hebrew8 HP-HEBREW8"
+    echo "turkish8 HP-TURKISH8"
+    echo "kana8 HP-KANA8"
+    echo "tis620 TIS-620"
+    echo "big5 BIG5"
+    echo "eucJP EUC-JP"
+    echo "eucKR EUC-KR"
+    echo "eucTW EUC-TW"
+    echo "hp15CN GB2312"
+    #echo "ccdc ?" # what is this?
+    echo "SJIS SHIFT_JIS"
+    echo "utf8 UTF-8"
+    ;;
+  irix*)
+    echo "ISO8859-1 ISO-8859-1"
+    echo "ISO8859-2 ISO-8859-2"
+    echo "ISO8859-5 ISO-8859-5"
+    echo "ISO8859-7 ISO-8859-7"
+    echo "ISO8859-9 ISO-8859-9"
+    echo "eucCN GB2312"
+    echo "eucJP EUC-JP"
+    echo "eucKR EUC-KR"
+    echo "eucTW EUC-TW"
+    ;;
+  osf*)
+    echo "ISO8859-1 ISO-8859-1"
+    echo "ISO8859-2 ISO-8859-2"
+    echo "ISO8859-4 ISO-8859-4"
+    echo "ISO8859-5 ISO-8859-5"
+    echo "ISO8859-7 ISO-8859-7"
+    echo "ISO8859-8 ISO-8859-8"
+    echo "ISO8859-9 ISO-8859-9"
+    echo "ISO8859-15 ISO-8859-15"
+    echo "cp850 CP850"
+    echo "big5 BIG5"
+    echo "dechanyu DEC-HANYU"
+    echo "dechanzi GB2312"
+    echo "deckanji DEC-KANJI"
+    echo "deckorean EUC-KR"
+    echo "eucJP EUC-JP"
+    echo "eucKR EUC-KR"
+    echo "eucTW EUC-TW"
+    echo "GBK GBK"
+    echo "KSC5601 CP949"
+    echo "sdeckanji EUC-JP"
+    echo "SJIS SHIFT_JIS"
+    echo "TACTIS TIS-620"
+    echo "UTF-8 UTF-8"
+    ;;
+  solaris*)
+    echo "646 ASCII"
+    echo "ISO8859-1 ISO-8859-1"
+    echo "ISO8859-2 ISO-8859-2"
+    echo "ISO8859-3 ISO-8859-3"
+    echo "ISO8859-4 ISO-8859-4"
+    echo "ISO8859-5 ISO-8859-5"
+    echo "ISO8859-6 ISO-8859-6"
+    echo "ISO8859-7 ISO-8859-7"
+    echo "ISO8859-8 ISO-8859-8"
+    echo "ISO8859-9 ISO-8859-9"
+    echo "ISO8859-15 ISO-8859-15"
+    echo "koi8-r KOI8-R"
+    echo "ansi-1251 CP1251"
+    echo "BIG5 BIG5"
+    echo "Big5-HKSCS BIG5-HKSCS"
+    echo "gb2312 GB2312"
+    echo "GBK GBK"
+    echo "GB18030 GB18030"
+    echo "cns11643 EUC-TW"
+    echo "5601 EUC-KR"
+    echo "ko_KR.johap92 JOHAB"
+    echo "eucJP EUC-JP"
+    echo "PCK SHIFT_JIS"
+    echo "TIS620.2533 TIS-620"
+    #echo "sun_eu_greek ?" # what is this?
+    echo "UTF-8 UTF-8"
+    ;;
+  freebsd* | os2*)
+    # FreeBSD 4.2 doesn't have nl_langinfo(CODESET); therefore
+    # localcharset.c falls back to using the full locale name
+    # from the environment variables.
+    # Likewise for OS/2. OS/2 has XFree86 just like FreeBSD. Just
+    # reuse FreeBSD's locale data for OS/2.
+    echo "C ASCII"
+    echo "US-ASCII ASCII"
+    for l in la_LN lt_LN; do
+      echo "$l.ASCII ASCII"
+    done
+    for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \
+             fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT la_LN \
+             lt_LN nl_BE nl_NL no_NO pt_PT sv_SE; do
+      echo "$l.ISO_8859-1 ISO-8859-1"
+      echo "$l.DIS_8859-15 ISO-8859-15"
+    done
+    for l in cs_CZ hr_HR hu_HU la_LN lt_LN pl_PL sl_SI; do
+      echo "$l.ISO_8859-2 ISO-8859-2"
+    done
+    for l in la_LN lt_LT; do
+      echo "$l.ISO_8859-4 ISO-8859-4"
+    done
+    for l in ru_RU ru_SU; do
+      echo "$l.KOI8-R KOI8-R"
+      echo "$l.ISO_8859-5 ISO-8859-5"
+      echo "$l.CP866 CP866"
+    done
+    echo "uk_UA.KOI8-U KOI8-U"
+    echo "zh_TW.BIG5 BIG5"
+    echo "zh_TW.Big5 BIG5"
+    echo "zh_CN.EUC GB2312"
+    echo "ja_JP.EUC EUC-JP"
+    echo "ja_JP.SJIS SHIFT_JIS"
+    echo "ja_JP.Shift_JIS SHIFT_JIS"
+    echo "ko_KR.EUC EUC-KR"
+    ;;
+  netbsd*)
+    echo "646 ASCII"
+    echo "ISO8859-1 ISO-8859-1"
+    echo "ISO8859-2 ISO-8859-2"
+    echo "ISO8859-4 ISO-8859-4"
+    echo "ISO8859-5 ISO-8859-5"
+    echo "ISO8859-7 ISO-8859-7"
+    echo "ISO8859-13 ISO-8859-13"
+    echo "ISO8859-15 ISO-8859-15"
+    echo "eucCN GB2312"
+    echo "eucJP EUC-JP"
+    echo "eucKR EUC-KR"
+    echo "eucTW EUC-TW"
+    echo "BIG5 BIG5"
+    echo "SJIS SHIFT_JIS"
+    ;;
+  openbsd*)
+    echo "646 ASCII"
+    echo "ISO8859-1 ISO-8859-1"
+    echo "ISO8859-2 ISO-8859-2"
+    echo "ISO8859-4 ISO-8859-4"
+    echo "ISO8859-5 ISO-8859-5"
+    echo "ISO8859-7 ISO-8859-7"
+    echo "ISO8859-13 ISO-8859-13"
+    echo "ISO8859-15 ISO-8859-15"
+    ;;
+  darwin[56]*)
+    # Darwin 6.8 doesn't have nl_langinfo(CODESET); therefore
+    # localcharset.c falls back to using the full locale name
+    # from the environment variables.
+    echo "C ASCII"
+    for l in en_AU en_CA en_GB en_US la_LN; do
+      echo "$l.US-ASCII ASCII"
+    done
+    for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \
+             fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT nl_BE \
+             nl_NL no_NO pt_PT sv_SE; do
+      echo "$l ISO-8859-1"
+      echo "$l.ISO8859-1 ISO-8859-1"
+      echo "$l.ISO8859-15 ISO-8859-15"
+    done
+    for l in la_LN; do
+      echo "$l.ISO8859-1 ISO-8859-1"
+      echo "$l.ISO8859-15 ISO-8859-15"
+    done
+    for l in cs_CZ hr_HR hu_HU la_LN pl_PL sl_SI; do
+      echo "$l.ISO8859-2 ISO-8859-2"
+    done
+    for l in la_LN lt_LT; do
+      echo "$l.ISO8859-4 ISO-8859-4"
+    done
+    for l in ru_RU; do
+      echo "$l.KOI8-R KOI8-R"
+      echo "$l.ISO8859-5 ISO-8859-5"
+      echo "$l.CP866 CP866"
+    done
+    for l in bg_BG; do
+      echo "$l.CP1251 CP1251"
+    done
+    echo "uk_UA.KOI8-U KOI8-U"
+    echo "zh_TW.BIG5 BIG5"
+    echo "zh_TW.Big5 BIG5"
+    echo "zh_CN.EUC GB2312"
+    echo "ja_JP.EUC EUC-JP"
+    echo "ja_JP.SJIS SHIFT_JIS"
+    echo "ko_KR.EUC EUC-KR"
+    ;;
+  darwin*)
+    # Darwin 7.5 has nl_langinfo(CODESET), but sometimes its value is
+    # useless:
+    # - It returns the empty string when LANG is set to a locale of the
+    #   form ll_CC, although ll_CC/LC_CTYPE is a symlink to an UTF-8
+    #   LC_CTYPE file.
+    # - The environment variables LANG, LC_CTYPE, LC_ALL are not set by
+    #   the system; nl_langinfo(CODESET) returns "US-ASCII" in this case.
+    # - The documentation says:
+    #     "... all code that calls BSD system routines should ensure
+    #      that the const *char parameters of these routines are in UTF-8
+    #      encoding. All BSD system functions expect their string
+    #      parameters to be in UTF-8 encoding and nothing else."
+    #   It also says
+    #     "An additional caveat is that string parameters for files,
+    #      paths, and other file-system entities must be in canonical
+    #      UTF-8. In a canonical UTF-8 Unicode string, all decomposable
+    #      characters are decomposed ..."
+    #   but this is not true: You can pass non-decomposed UTF-8 strings
+    #   to file system functions, and it is the OS which will convert
+    #   them to decomposed UTF-8 before accessing the file system.
+    # - The Apple Terminal application displays UTF-8 by default.
+    # - However, other applications are free to use different encodings:
+    #   - xterm uses ISO-8859-1 by default.
+    #   - TextEdit uses MacRoman by default.
+    # We prefer UTF-8 over decomposed UTF-8-MAC because one should
+    # minimize the use of decomposed Unicode. Unfortunately, through the
+    # Darwin file system, decomposed UTF-8 strings are leaked into user
+    # space nevertheless.
+    # Then there are also the locales with encodings other than US-ASCII
+    # and UTF-8. These locales can be occasionally useful to users (e.g.
+    # when grepping through ISO-8859-1 encoded text files), when all their
+    # file names are in US-ASCII.
+    echo "ISO8859-1 ISO-8859-1"
+    echo "ISO8859-2 ISO-8859-2"
+    echo "ISO8859-4 ISO-8859-4"
+    echo "ISO8859-5 ISO-8859-5"
+    echo "ISO8859-7 ISO-8859-7"
+    echo "ISO8859-9 ISO-8859-9"
+    echo "ISO8859-13 ISO-8859-13"
+    echo "ISO8859-15 ISO-8859-15"
+    echo "KOI8-R KOI8-R"
+    echo "KOI8-U KOI8-U"
+    echo "CP866 CP866"
+    echo "CP949 CP949"
+    echo "CP1131 CP1131"
+    echo "CP1251 CP1251"
+    echo "eucCN GB2312"
+    echo "GB2312 GB2312"
+    echo "eucJP EUC-JP"
+    echo "eucKR EUC-KR"
+    echo "Big5 BIG5"
+    echo "Big5HKSCS BIG5-HKSCS"
+    echo "GBK GBK"
+    echo "GB18030 GB18030"
+    echo "SJIS SHIFT_JIS"
+    echo "ARMSCII-8 ARMSCII-8"
+    echo "PT154 PT154"
+    #echo "ISCII-DEV ?"
+    echo "* UTF-8"
+    ;;
+  beos* | haiku*)
+    # BeOS and Haiku have a single locale, and it has UTF-8 encoding.
+    echo "* UTF-8"
+    ;;
+  msdosdjgpp*)
+    # DJGPP 2.03 doesn't have nl_langinfo(CODESET); therefore
+    # localcharset.c falls back to using the full locale name
+    # from the environment variables.
+    echo "#"
+    echo "# The encodings given here may not all be correct."
+    echo "# If you find that the encoding given for your language and"
+    echo "# country is not the one your DOS machine actually uses, just"
+    echo "# correct it in this file, and send a mail to"
+    echo "# Juan Manuel Guerrero <juan.guerrero@gmx.de>"
+    echo "# and Bruno Haible <bruno@clisp.org>."
+    echo "#"
+    echo "C ASCII"
+    # ISO-8859-1 languages
+    echo "ca CP850"
+    echo "ca_ES CP850"
+    echo "da CP865"    # not CP850 ??
+    echo "da_DK CP865" # not CP850 ??
+    echo "de CP850"
+    echo "de_AT CP850"
+    echo "de_CH CP850"
+    echo "de_DE CP850"
+    echo "en CP850"
+    echo "en_AU CP850" # not CP437 ??
+    echo "en_CA CP850"
+    echo "en_GB CP850"
+    echo "en_NZ CP437"
+    echo "en_US CP437"
+    echo "en_ZA CP850" # not CP437 ??
+    echo "es CP850"
+    echo "es_AR CP850"
+    echo "es_BO CP850"
+    echo "es_CL CP850"
+    echo "es_CO CP850"
+    echo "es_CR CP850"
+    echo "es_CU CP850"
+    echo "es_DO CP850"
+    echo "es_EC CP850"
+    echo "es_ES CP850"
+    echo "es_GT CP850"
+    echo "es_HN CP850"
+    echo "es_MX CP850"
+    echo "es_NI CP850"
+    echo "es_PA CP850"
+    echo "es_PY CP850"
+    echo "es_PE CP850"
+    echo "es_SV CP850"
+    echo "es_UY CP850"
+    echo "es_VE CP850"
+    echo "et CP850"
+    echo "et_EE CP850"
+    echo "eu CP850"
+    echo "eu_ES CP850"
+    echo "fi CP850"
+    echo "fi_FI CP850"
+    echo "fr CP850"
+    echo "fr_BE CP850"
+    echo "fr_CA CP850"
+    echo "fr_CH CP850"
+    echo "fr_FR CP850"
+    echo "ga CP850"
+    echo "ga_IE CP850"
+    echo "gd CP850"
+    echo "gd_GB CP850"
+    echo "gl CP850"
+    echo "gl_ES CP850"
+    echo "id CP850"    # not CP437 ??
+    echo "id_ID CP850" # not CP437 ??
+    echo "is CP861"    # not CP850 ??
+    echo "is_IS CP861" # not CP850 ??
+    echo "it CP850"
+    echo "it_CH CP850"
+    echo "it_IT CP850"
+    echo "lt CP775"
+    echo "lt_LT CP775"
+    echo "lv CP775"
+    echo "lv_LV CP775"
+    echo "nb CP865"    # not CP850 ??
+    echo "nb_NO CP865" # not CP850 ??
+    echo "nl CP850"
+    echo "nl_BE CP850"
+    echo "nl_NL CP850"
+    echo "nn CP865"    # not CP850 ??
+    echo "nn_NO CP865" # not CP850 ??
+    echo "no CP865"    # not CP850 ??
+    echo "no_NO CP865" # not CP850 ??
+    echo "pt CP850"
+    echo "pt_BR CP850"
+    echo "pt_PT CP850"
+    echo "sv CP850"
+    echo "sv_SE CP850"
+    # ISO-8859-2 languages
+    echo "cs CP852"
+    echo "cs_CZ CP852"
+    echo "hr CP852"
+    echo "hr_HR CP852"
+    echo "hu CP852"
+    echo "hu_HU CP852"
+    echo "pl CP852"
+    echo "pl_PL CP852"
+    echo "ro CP852"
+    echo "ro_RO CP852"
+    echo "sk CP852"
+    echo "sk_SK CP852"
+    echo "sl CP852"
+    echo "sl_SI CP852"
+    echo "sq CP852"
+    echo "sq_AL CP852"
+    echo "sr CP852"    # CP852 or CP866 or CP855 ??
+    echo "sr_CS CP852" # CP852 or CP866 or CP855 ??
+    echo "sr_YU CP852" # CP852 or CP866 or CP855 ??
+    # ISO-8859-3 languages
+    echo "mt CP850"
+    echo "mt_MT CP850"
+    # ISO-8859-5 languages
+    echo "be CP866"
+    echo "be_BE CP866"
+    echo "bg CP866"    # not CP855 ??
+    echo "bg_BG CP866" # not CP855 ??
+    echo "mk CP866"    # not CP855 ??
+    echo "mk_MK CP866" # not CP855 ??
+    echo "ru CP866"
+    echo "ru_RU CP866"
+    echo "uk CP1125"
+    echo "uk_UA CP1125"
+    # ISO-8859-6 languages
+    echo "ar CP864"
+    echo "ar_AE CP864"
+    echo "ar_DZ CP864"
+    echo "ar_EG CP864"
+    echo "ar_IQ CP864"
+    echo "ar_IR CP864"
+    echo "ar_JO CP864"
+    echo "ar_KW CP864"
+    echo "ar_MA CP864"
+    echo "ar_OM CP864"
+    echo "ar_QA CP864"
+    echo "ar_SA CP864"
+    echo "ar_SY CP864"
+    # ISO-8859-7 languages
+    echo "el CP869"
+    echo "el_GR CP869"
+    # ISO-8859-8 languages
+    echo "he CP862"
+    echo "he_IL CP862"
+    # ISO-8859-9 languages
+    echo "tr CP857"
+    echo "tr_TR CP857"
+    # Japanese
+    echo "ja CP932"
+    echo "ja_JP CP932"
+    # Chinese
+    echo "zh_CN GBK"
+    echo "zh_TW CP950" # not CP938 ??
+    # Korean
+    echo "kr CP949"    # not CP934 ??
+    echo "kr_KR CP949" # not CP934 ??
+    # Thai
+    echo "th CP874"
+    echo "th_TH CP874"
+    # Other
+    echo "eo CP850"
+    echo "eo_EO CP850"
+    ;;
+esac
diff --git a/lib/config.h.in b/lib/config.h.in
new file mode 100644 (file)
index 0000000..d841a17
--- /dev/null
@@ -0,0 +1,1571 @@
+/* lib/config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* Define if building universal (internal helper macro) */
+#undef AC_APPLE_UNIVERSAL_BUILD
+
+/* Define to the number of bits in type 'ptrdiff_t'. */
+#undef BITSIZEOF_PTRDIFF_T
+
+/* Define to the number of bits in type 'sig_atomic_t'. */
+#undef BITSIZEOF_SIG_ATOMIC_T
+
+/* Define to the number of bits in type 'size_t'. */
+#undef BITSIZEOF_SIZE_T
+
+/* Define to the number of bits in type 'wchar_t'. */
+#undef BITSIZEOF_WCHAR_T
+
+/* Define to the number of bits in type 'wint_t'. */
+#undef BITSIZEOF_WINT_T
+
+/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
+   systems. This function is required for `alloca.c' support on those systems.
+   */
+#undef CRAY_STACKSEG_END
+
+/* Define to 1 if using `alloca.c'. */
+#undef C_ALLOCA
+
+/* Enable assertions, etc. */
+#undef DEBUG
+
+/* Probing functionality only */
+#undef DISCOVER_ONLY
+
+/* Define to 1 if // is a file system root distinct from /. */
+#undef DOUBLE_SLASH_IS_DISTINCT_ROOT
+
+/* Lazy linking to fs libs */
+#undef DYNAMIC_LOADING
+
+/* device mapper (libdevmapper) support */
+#undef ENABLE_DEVICE_MAPPER
+
+/* Mtrace malloc() debugging */
+#undef ENABLE_MTRACE
+
+/* Define to 1 if translation of program messages to the user's native
+   language is requested. */
+#undef ENABLE_NLS
+
+/* Include PC98 partition tables. (Sometimes excluded to avoid collisions with
+   msdos partition tables */
+#undef ENABLE_PC98
+
+/* Define to 1 if the system's ftello function has the Solaris bug. */
+#undef FTELLO_BROKEN_AFTER_SWITCHING_FROM_READ_TO_WRITE
+
+/* Define to 1 if nl_langinfo (YESEXPR) returns a non-empty string. */
+#undef FUNC_NL_LANGINFO_YESEXPR_WORKS
+
+/* Define to 1 if realpath() can malloc memory, always gives an absolute path,
+   and handles trailing slash correctly. */
+#undef FUNC_REALPATH_WORKS
+
+/* Define to 1 if ungetc is broken when used on arbitrary bytes. */
+#undef FUNC_UNGETC_BROKEN
+
+/* Define if gettimeofday clobbers the localtime buffer. */
+#undef GETTIMEOFDAY_CLOBBERS_LOCALTIME
+
+/* Define this to 'void' or 'struct timezone' to match the system's
+   declaration of the second argument to gettimeofday. */
+#undef GETTIMEOFDAY_TIMEZONE
+
+/* Define to make the limit macros in <stdint.h> visible. */
+#undef GL_TRIGGER_STDC_LIMIT_MACROS
+
+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
+   whether the gnulib module calloc-gnu shall be considered present. */
+#undef GNULIB_CALLOC_GNU
+
+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
+   whether the gnulib module canonicalize-lgpl shall be considered present. */
+#undef GNULIB_CANONICALIZE_LGPL
+
+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
+   whether the gnulib module close-stream shall be considered present. */
+#undef GNULIB_CLOSE_STREAM
+
+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
+   whether the gnulib module dirname shall be considered present. */
+#undef GNULIB_DIRNAME
+
+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
+   whether the gnulib module fflush shall be considered present. */
+#undef GNULIB_FFLUSH
+
+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
+   whether the gnulib module malloc-gnu shall be considered present. */
+#undef GNULIB_MALLOC_GNU
+
+/* enable some gnulib portability checks */
+#undef GNULIB_PORTCHECK
+
+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
+   whether the gnulib module realloc-gnu shall be considered present. */
+#undef GNULIB_REALLOC_GNU
+
+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
+   whether the gnulib module strerror shall be considered present. */
+#undef GNULIB_STRERROR
+
+/* Define to 1 when the gnulib module btowc should be tested. */
+#undef GNULIB_TEST_BTOWC
+
+/* Define to 1 when the gnulib module calloc-posix should be tested. */
+#undef GNULIB_TEST_CALLOC_POSIX
+
+/* Define to 1 when the gnulib module canonicalize_file_name should be tested.
+   */
+#undef GNULIB_TEST_CANONICALIZE_FILE_NAME
+
+/* Define to 1 when the gnulib module close should be tested. */
+#undef GNULIB_TEST_CLOSE
+
+/* Define to 1 when the gnulib module dup2 should be tested. */
+#undef GNULIB_TEST_DUP2
+
+/* Define to 1 when the gnulib module environ should be tested. */
+#undef GNULIB_TEST_ENVIRON
+
+/* Define to 1 when the gnulib module fclose should be tested. */
+#undef GNULIB_TEST_FCLOSE
+
+/* Define to 1 when the gnulib module fflush should be tested. */
+#undef GNULIB_TEST_FFLUSH
+
+/* Define to 1 when the gnulib module fpurge should be tested. */
+#undef GNULIB_TEST_FPURGE
+
+/* Define to 1 when the gnulib module fseeko should be tested. */
+#undef GNULIB_TEST_FSEEKO
+
+/* Define to 1 when the gnulib module fsync should be tested. */
+#undef GNULIB_TEST_FSYNC
+
+/* Define to 1 when the gnulib module ftell should be tested. */
+#undef GNULIB_TEST_FTELL
+
+/* Define to 1 when the gnulib module ftello should be tested. */
+#undef GNULIB_TEST_FTELLO
+
+/* Define to 1 when the gnulib module getopt-gnu should be tested. */
+#undef GNULIB_TEST_GETOPT_GNU
+
+/* Define to 1 when the gnulib module getpagesize should be tested. */
+#undef GNULIB_TEST_GETPAGESIZE
+
+/* Define to 1 when the gnulib module gettimeofday should be tested. */
+#undef GNULIB_TEST_GETTIMEOFDAY
+
+/* Define to 1 when the gnulib module lseek should be tested. */
+#undef GNULIB_TEST_LSEEK
+
+/* Define to 1 when the gnulib module lstat should be tested. */
+#undef GNULIB_TEST_LSTAT
+
+/* Define to 1 when the gnulib module malloc-posix should be tested. */
+#undef GNULIB_TEST_MALLOC_POSIX
+
+/* Define to 1 when the gnulib module mbrtowc should be tested. */
+#undef GNULIB_TEST_MBRTOWC
+
+/* Define to 1 when the gnulib module mbsinit should be tested. */
+#undef GNULIB_TEST_MBSINIT
+
+/* Define to 1 when the gnulib module mbtowc should be tested. */
+#undef GNULIB_TEST_MBTOWC
+
+/* Define to 1 when the gnulib module mkstemp should be tested. */
+#undef GNULIB_TEST_MKSTEMP
+
+/* Define to 1 when the gnulib module nl_langinfo should be tested. */
+#undef GNULIB_TEST_NL_LANGINFO
+
+/* Define to 1 when the gnulib module open should be tested. */
+#undef GNULIB_TEST_OPEN
+
+/* Define to 1 when the gnulib module putenv should be tested. */
+#undef GNULIB_TEST_PUTENV
+
+/* Define to 1 when the gnulib module read should be tested. */
+#undef GNULIB_TEST_READ
+
+/* Define to 1 when the gnulib module readlink should be tested. */
+#undef GNULIB_TEST_READLINK
+
+/* Define to 1 when the gnulib module realloc-posix should be tested. */
+#undef GNULIB_TEST_REALLOC_POSIX
+
+/* Define to 1 when the gnulib module realpath should be tested. */
+#undef GNULIB_TEST_REALPATH
+
+/* Define to 1 when the gnulib module rpmatch should be tested. */
+#undef GNULIB_TEST_RPMATCH
+
+/* Define to 1 when the gnulib module setenv should be tested. */
+#undef GNULIB_TEST_SETENV
+
+/* Define to 1 when the gnulib module setlocale should be tested. */
+#undef GNULIB_TEST_SETLOCALE
+
+/* Define to 1 when the gnulib module sleep should be tested. */
+#undef GNULIB_TEST_SLEEP
+
+/* Define to 1 when the gnulib module stat should be tested. */
+#undef GNULIB_TEST_STAT
+
+/* Define to 1 when the gnulib module strdup should be tested. */
+#undef GNULIB_TEST_STRDUP
+
+/* Define to 1 when the gnulib module strerror should be tested. */
+#undef GNULIB_TEST_STRERROR
+
+/* Define to 1 when the gnulib module strerror_r should be tested. */
+#undef GNULIB_TEST_STRERROR_R
+
+/* Define to 1 when the gnulib module strndup should be tested. */
+#undef GNULIB_TEST_STRNDUP
+
+/* Define to 1 when the gnulib module strnlen should be tested. */
+#undef GNULIB_TEST_STRNLEN
+
+/* Define to 1 when the gnulib module strtoll should be tested. */
+#undef GNULIB_TEST_STRTOLL
+
+/* Define to 1 when the gnulib module strtoull should be tested. */
+#undef GNULIB_TEST_STRTOULL
+
+/* Define to 1 when the gnulib module symlink should be tested. */
+#undef GNULIB_TEST_SYMLINK
+
+/* Define to 1 when the gnulib module unlink should be tested. */
+#undef GNULIB_TEST_UNLINK
+
+/* Define to 1 when the gnulib module unsetenv should be tested. */
+#undef GNULIB_TEST_UNSETENV
+
+/* Define to 1 when the gnulib module usleep should be tested. */
+#undef GNULIB_TEST_USLEEP
+
+/* Define to 1 when the gnulib module wcrtomb should be tested. */
+#undef GNULIB_TEST_WCRTOMB
+
+/* Define to 1 when the gnulib module wctob should be tested. */
+#undef GNULIB_TEST_WCTOB
+
+/* Define to 1 when the gnulib module wctomb should be tested. */
+#undef GNULIB_TEST_WCTOMB
+
+/* Define to 1 if you have 'alloca' after including <alloca.h>, a header that
+   may be supplied by this distribution. */
+#undef HAVE_ALLOCA
+
+/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
+   */
+#undef HAVE_ALLOCA_H
+
+/* Has backtrace support */
+#undef HAVE_BACKTRACE
+
+/* Define to 1 if you have the <blkid/blkid.h> header file. */
+#undef HAVE_BLKID_BLKID_H
+
+/* Define to 1 if you have the `btowc' function. */
+#undef HAVE_BTOWC
+
+/* Define to 1 if your system has a GNU libc compatible `calloc' function, and
+   to 0 otherwise. */
+#undef HAVE_CALLOC_GNU
+
+/* Define if the 'calloc' function is POSIX compliant. */
+#undef HAVE_CALLOC_POSIX
+
+/* Define to 1 if you have the `canonicalize_file_name' function. */
+#undef HAVE_CANONICALIZE_FILE_NAME
+
+/* Define to 1 if you have the `catgets' function. */
+#undef HAVE_CATGETS
+
+/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
+   CoreFoundation framework. */
+#undef HAVE_CFLOCALECOPYCURRENT
+
+/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in
+   the CoreFoundation framework. */
+#undef HAVE_CFPREFERENCESCOPYAPPVALUE
+
+/* Define if the GNU dcgettext() function is already present or preinstalled.
+   */
+#undef HAVE_DCGETTEXT
+
+/* Define to 1 if you have the declaration of `alarm', and to 0 if you don't.
+   */
+#undef HAVE_DECL_ALARM
+
+/* Define to 1 if you have the declaration of `fpurge', and to 0 if you don't.
+   */
+#undef HAVE_DECL_FPURGE
+
+/* Define to 1 if you have the declaration of `fseeko', and to 0 if you don't.
+   */
+#undef HAVE_DECL_FSEEKO
+
+/* Define to 1 if you have the declaration of `ftello', and to 0 if you don't.
+   */
+#undef HAVE_DECL_FTELLO
+
+/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you
+   don't. */
+#undef HAVE_DECL_GETC_UNLOCKED
+
+/* Define to 1 if you have the declaration of `getenv', and to 0 if you don't.
+   */
+#undef HAVE_DECL_GETENV
+
+/* Define to 1 if you have the declaration of `isblank', and to 0 if you
+   don't. */
+#undef HAVE_DECL_ISBLANK
+
+/* Define to 1 if you have the declaration of `program_invocation_name', and
+   to 0 if you don't. */
+#undef HAVE_DECL_PROGRAM_INVOCATION_NAME
+
+/* Define to 1 if you have the declaration of `program_invocation_short_name',
+   and to 0 if you don't. */
+#undef HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME
+
+/* Define to 1 if you have the declaration of `setenv', and to 0 if you don't.
+   */
+#undef HAVE_DECL_SETENV
+
+/* Define to 1 if you have the declaration of `sleep', and to 0 if you don't.
+   */
+#undef HAVE_DECL_SLEEP
+
+/* Define to 1 if you have the declaration of `strdup', and to 0 if you don't.
+   */
+#undef HAVE_DECL_STRDUP
+
+/* Define to 1 if you have the declaration of `strerror', and to 0 if you
+   don't. */
+#undef HAVE_DECL_STRERROR
+
+/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you
+   don't. */
+#undef HAVE_DECL_STRERROR_R
+
+/* Define to 1 if you have the declaration of `strndup', and to 0 if you
+   don't. */
+#undef HAVE_DECL_STRNDUP
+
+/* Define to 1 if you have the declaration of `strnlen', and to 0 if you
+   don't. */
+#undef HAVE_DECL_STRNLEN
+
+/* Define to 1 if you have the declaration of `unsetenv', and to 0 if you
+   don't. */
+#undef HAVE_DECL_UNSETENV
+
+/* Define to 1 if you have the declaration of `wctob', and to 0 if you don't.
+   */
+#undef HAVE_DECL_WCTOB
+
+/* Define to 1 if you have the declaration of `__fpending', and to 0 if you
+   don't. */
+#undef HAVE_DECL___FPENDING
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the `dup2' function. */
+#undef HAVE_DUP2
+
+/* Define if you have the declaration of environ. */
+#undef HAVE_ENVIRON_DECL
+
+/* Define to 1 if you have the `fcntl' function. */
+#undef HAVE_FCNTL
+
+/* Define to 1 if you have the <features.h> header file. */
+#undef HAVE_FEATURES_H
+
+/* Define to 1 if you have the `fpurge' function. */
+#undef HAVE_FPURGE
+
+/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
+#undef HAVE_FSEEKO
+
+/* Define to 1 if you have the `fsync' function. */
+#undef HAVE_FSYNC
+
+/* Define to 1 if you have the `getcwd' function. */
+#undef HAVE_GETCWD
+
+/* Define to 1 if you have the <getopt.h> header file. */
+#undef HAVE_GETOPT_H
+
+/* Define to 1 if you have the `getopt_long_only' function. */
+#undef HAVE_GETOPT_LONG_ONLY
+
+/* Define to 1 if you have the `getpagesize' function. */
+#undef HAVE_GETPAGESIZE
+
+/* Define to 1 if you have the `getppriv' function. */
+#undef HAVE_GETPPRIV
+
+/* Define if the GNU gettext() function is already present or preinstalled. */
+#undef HAVE_GETTEXT
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#undef HAVE_GETTIMEOFDAY
+
+/* Define to 1 if you have the `getuid' function. */
+#undef HAVE_GETUID
+
+/* Define if you have the iconv() function and it works. */
+#undef HAVE_ICONV
+
+/* Define to 1 if the compiler supports one of the keywords 'inline',
+   '__inline__', '__inline' and effectively inlines functions marked as such.
+   */
+#undef HAVE_INLINE
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the `isblank' function. */
+#undef HAVE_ISBLANK
+
+/* Define to 1 if you have the `iswcntrl' function. */
+#undef HAVE_ISWCNTRL
+
+/* Define to 1 if you have the `iswctype' function. */
+#undef HAVE_ISWCTYPE
+
+/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
+#undef HAVE_LANGINFO_CODESET
+
+/* Define to 1 if you have the <langinfo.h> header file. */
+#undef HAVE_LANGINFO_H
+
+/* Define if you have <langinfo.h> and nl_langinfo(YESEXPR). */
+#undef HAVE_LANGINFO_YESEXPR
+
+/* Define if your <locale.h> file defines LC_MESSAGES. */
+#undef HAVE_LC_MESSAGES
+
+/* Define to 1 if you have the <libintl.h> header file. */
+#undef HAVE_LIBINTL_H
+
+/* Define to 1 if you have the `parted' library (-lparted). */
+#undef HAVE_LIBPARTED
+
+/* have readline */
+#undef HAVE_LIBREADLINE
+
+/* Have libreiserfs */
+#undef HAVE_LIBREISERFS
+
+/* Define to 1 if you have the <linux/ext2_fs.h> header file. */
+#undef HAVE_LINUX_EXT2_FS_H
+
+/* Define to 1 if the system has the type `long long int'. */
+#undef HAVE_LONG_LONG_INT
+
+/* Define to 1 if you have the `lstat' function. */
+#undef HAVE_LSTAT
+
+/* Define to 1 if your system has a GNU libc compatible 'malloc' function, and
+   to 0 otherwise. */
+#undef HAVE_MALLOC_GNU
+
+/* Define if the 'malloc' function is POSIX compliant. */
+#undef HAVE_MALLOC_POSIX
+
+/* Define to 1 if mmap()'s MAP_ANONYMOUS flag is available after including
+   config.h and <sys/mman.h>. */
+#undef HAVE_MAP_ANONYMOUS
+
+/* Define to 1 if you have the `mbrtowc' function. */
+#undef HAVE_MBRTOWC
+
+/* Define to 1 if you have the `mbsinit' function. */
+#undef HAVE_MBSINIT
+
+/* Define to 1 if <wchar.h> declares mbstate_t. */
+#undef HAVE_MBSTATE_T
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the `mkstemp' function. */
+#undef HAVE_MKSTEMP
+
+/* Define to 1 if you have the `mprotect' function. */
+#undef HAVE_MPROTECT
+
+/* Define to 1 if you have the `newlocale' function. */
+#undef HAVE_NEWLOCALE
+
+/* Define to 1 if you have the `nl_langinfo' function. */
+#undef HAVE_NL_LANGINFO
+
+/* Define to 1 if you have the <OS.h> header file. */
+#undef HAVE_OS_H
+
+/* Define to 1 if you have the `pathconf' function. */
+#undef HAVE_PATHCONF
+
+/* Define to 1 if you have the <priv.h> header file. */
+#undef HAVE_PRIV_H
+
+/* Define to 1 if you have the `pthread_atfork' function. */
+#undef HAVE_PTHREAD_ATFORK
+
+/* Define if the <pthread.h> defines PTHREAD_MUTEX_RECURSIVE. */
+#undef HAVE_PTHREAD_MUTEX_RECURSIVE
+
+/* Define if the POSIX multithreading library has read/write locks. */
+#undef HAVE_PTHREAD_RWLOCK
+
+/* Define to 1 if atoll is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_ATOLL
+
+/* Define to 1 if btowc is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_BTOWC
+
+/* Define to 1 if canonicalize_file_name is declared even after undefining
+   macros. */
+#undef HAVE_RAW_DECL_CANONICALIZE_FILE_NAME
+
+/* Define to 1 if chown is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_CHOWN
+
+/* Define to 1 if dprintf is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_DPRINTF
+
+/* Define to 1 if dup2 is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_DUP2
+
+/* Define to 1 if dup3 is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_DUP3
+
+/* Define to 1 if duplocale is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_DUPLOCALE
+
+/* Define to 1 if endusershell is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_ENDUSERSHELL
+
+/* Define to 1 if environ is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_ENVIRON
+
+/* Define to 1 if euidaccess is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_EUIDACCESS
+
+/* Define to 1 if faccessat is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_FACCESSAT
+
+/* Define to 1 if fchdir is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_FCHDIR
+
+/* Define to 1 if fchmodat is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_FCHMODAT
+
+/* Define to 1 if fchownat is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_FCHOWNAT
+
+/* Define to 1 if fcntl is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_FCNTL
+
+/* Define to 1 if fpurge is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_FPURGE
+
+/* Define to 1 if fseeko is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_FSEEKO
+
+/* Define to 1 if fstatat is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_FSTATAT
+
+/* Define to 1 if fsync is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_FSYNC
+
+/* Define to 1 if ftello is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_FTELLO
+
+/* Define to 1 if ftruncate is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_FTRUNCATE
+
+/* Define to 1 if futimens is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_FUTIMENS
+
+/* Define to 1 if getcwd is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_GETCWD
+
+/* Define to 1 if getdelim is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_GETDELIM
+
+/* Define to 1 if getdomainname is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_GETDOMAINNAME
+
+/* Define to 1 if getdtablesize is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_GETDTABLESIZE
+
+/* Define to 1 if getgroups is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_GETGROUPS
+
+/* Define to 1 if gethostname is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_GETHOSTNAME
+
+/* Define to 1 if getline is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_GETLINE
+
+/* Define to 1 if getloadavg is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_GETLOADAVG
+
+/* Define to 1 if getlogin is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_GETLOGIN
+
+/* Define to 1 if getlogin_r is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_GETLOGIN_R
+
+/* Define to 1 if getpagesize is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_GETPAGESIZE
+
+/* Define to 1 if getsubopt is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_GETSUBOPT
+
+/* Define to 1 if gettimeofday is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_GETTIMEOFDAY
+
+/* Define to 1 if getusershell is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_GETUSERSHELL
+
+/* Define to 1 if grantpt is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_GRANTPT
+
+/* Define to 1 if group_member is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_GROUP_MEMBER
+
+/* Define to 1 if imaxabs is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_IMAXABS
+
+/* Define to 1 if imaxdiv is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_IMAXDIV
+
+/* Define to 1 if initstat_r is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_INITSTAT_R
+
+/* Define to 1 if iswctype is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_ISWCTYPE
+
+/* Define to 1 if lchmod is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_LCHMOD
+
+/* Define to 1 if lchown is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_LCHOWN
+
+/* Define to 1 if link is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_LINK
+
+/* Define to 1 if linkat is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_LINKAT
+
+/* Define to 1 if lseek is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_LSEEK
+
+/* Define to 1 if lstat is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_LSTAT
+
+/* Define to 1 if mbrlen is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_MBRLEN
+
+/* Define to 1 if mbrtowc is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_MBRTOWC
+
+/* Define to 1 if mbsinit is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_MBSINIT
+
+/* Define to 1 if mbsnrtowcs is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_MBSNRTOWCS
+
+/* Define to 1 if mbsrtowcs is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_MBSRTOWCS
+
+/* Define to 1 if memmem is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_MEMMEM
+
+/* Define to 1 if mempcpy is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_MEMPCPY
+
+/* Define to 1 if memrchr is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_MEMRCHR
+
+/* Define to 1 if mkdirat is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_MKDIRAT
+
+/* Define to 1 if mkdtemp is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_MKDTEMP
+
+/* Define to 1 if mkfifo is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_MKFIFO
+
+/* Define to 1 if mkfifoat is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_MKFIFOAT
+
+/* Define to 1 if mknod is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_MKNOD
+
+/* Define to 1 if mknodat is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_MKNODAT
+
+/* Define to 1 if mkostemp is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_MKOSTEMP
+
+/* Define to 1 if mkostemps is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_MKOSTEMPS
+
+/* Define to 1 if mkstemp is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_MKSTEMP
+
+/* Define to 1 if mkstemps is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_MKSTEMPS
+
+/* Define to 1 if nl_langinfo is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_NL_LANGINFO
+
+/* Define to 1 if openat is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_OPENAT
+
+/* Define to 1 if pipe is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_PIPE
+
+/* Define to 1 if pipe2 is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_PIPE2
+
+/* Define to 1 if popen is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_POPEN
+
+/* Define to 1 if pread is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_PREAD
+
+/* Define to 1 if ptsname is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_PTSNAME
+
+/* Define to 1 if pwrite is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_PWRITE
+
+/* Define to 1 if random_r is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_RANDOM_R
+
+/* Define to 1 if rawmemchr is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_RAWMEMCHR
+
+/* Define to 1 if readlink is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_READLINK
+
+/* Define to 1 if readlinkat is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_READLINKAT
+
+/* Define to 1 if realpath is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_REALPATH
+
+/* Define to 1 if renameat is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_RENAMEAT
+
+/* Define to 1 if rmdir is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_RMDIR
+
+/* Define to 1 if rpmatch is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_RPMATCH
+
+/* Define to 1 if setenv is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_SETENV
+
+/* Define to 1 if setlocale is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_SETLOCALE
+
+/* Define to 1 if setstate_r is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_SETSTATE_R
+
+/* Define to 1 if setusershell is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_SETUSERSHELL
+
+/* Define to 1 if sleep is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_SLEEP
+
+/* Define to 1 if snprintf is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_SNPRINTF
+
+/* Define to 1 if srandom_r is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_SRANDOM_R
+
+/* Define to 1 if stat is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_STAT
+
+/* Define to 1 if stpcpy is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_STPCPY
+
+/* Define to 1 if stpncpy is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_STPNCPY
+
+/* Define to 1 if strcasestr is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_STRCASESTR
+
+/* Define to 1 if strchrnul is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_STRCHRNUL
+
+/* Define to 1 if strdup is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_STRDUP
+
+/* Define to 1 if strerror_r is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_STRERROR_R
+
+/* Define to 1 if strncat is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_STRNCAT
+
+/* Define to 1 if strndup is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_STRNDUP
+
+/* Define to 1 if strnlen is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_STRNLEN
+
+/* Define to 1 if strpbrk is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_STRPBRK
+
+/* Define to 1 if strsep is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_STRSEP
+
+/* Define to 1 if strsignal is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_STRSIGNAL
+
+/* Define to 1 if strtod is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_STRTOD
+
+/* Define to 1 if strtoimax is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_STRTOIMAX
+
+/* Define to 1 if strtok_r is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_STRTOK_R
+
+/* Define to 1 if strtoll is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_STRTOLL
+
+/* Define to 1 if strtoull is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_STRTOULL
+
+/* Define to 1 if strtoumax is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_STRTOUMAX
+
+/* Define to 1 if strverscmp is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_STRVERSCMP
+
+/* Define to 1 if symlink is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_SYMLINK
+
+/* Define to 1 if symlinkat is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_SYMLINKAT
+
+/* Define to 1 if tmpfile is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_TMPFILE
+
+/* Define to 1 if towctrans is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_TOWCTRANS
+
+/* Define to 1 if ttyname_r is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_TTYNAME_R
+
+/* Define to 1 if unlink is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_UNLINK
+
+/* Define to 1 if unlinkat is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_UNLINKAT
+
+/* Define to 1 if unlockpt is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_UNLOCKPT
+
+/* Define to 1 if unsetenv is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_UNSETENV
+
+/* Define to 1 if usleep is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_USLEEP
+
+/* Define to 1 if utimensat is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_UTIMENSAT
+
+/* Define to 1 if vdprintf is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_VDPRINTF
+
+/* Define to 1 if vsnprintf is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_VSNPRINTF
+
+/* Define to 1 if wcpcpy is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCPCPY
+
+/* Define to 1 if wcpncpy is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCPNCPY
+
+/* Define to 1 if wcrtomb is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCRTOMB
+
+/* Define to 1 if wcscasecmp is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSCASECMP
+
+/* Define to 1 if wcscat is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSCAT
+
+/* Define to 1 if wcschr is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSCHR
+
+/* Define to 1 if wcscmp is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSCMP
+
+/* Define to 1 if wcscoll is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSCOLL
+
+/* Define to 1 if wcscpy is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSCPY
+
+/* Define to 1 if wcscspn is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSCSPN
+
+/* Define to 1 if wcsdup is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSDUP
+
+/* Define to 1 if wcslen is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSLEN
+
+/* Define to 1 if wcsncasecmp is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSNCASECMP
+
+/* Define to 1 if wcsncat is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSNCAT
+
+/* Define to 1 if wcsncmp is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSNCMP
+
+/* Define to 1 if wcsncpy is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSNCPY
+
+/* Define to 1 if wcsnlen is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSNLEN
+
+/* Define to 1 if wcsnrtombs is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSNRTOMBS
+
+/* Define to 1 if wcspbrk is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSPBRK
+
+/* Define to 1 if wcsrchr is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSRCHR
+
+/* Define to 1 if wcsrtombs is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSRTOMBS
+
+/* Define to 1 if wcsspn is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSSPN
+
+/* Define to 1 if wcsstr is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSSTR
+
+/* Define to 1 if wcstok is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSTOK
+
+/* Define to 1 if wcswidth is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSWIDTH
+
+/* Define to 1 if wcsxfrm is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSXFRM
+
+/* Define to 1 if wctob is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCTOB
+
+/* Define to 1 if wctrans is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCTRANS
+
+/* Define to 1 if wctype is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCTYPE
+
+/* Define to 1 if wcwidth is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCWIDTH
+
+/* Define to 1 if wmemchr is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WMEMCHR
+
+/* Define to 1 if wmemcmp is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WMEMCMP
+
+/* Define to 1 if wmemcpy is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WMEMCPY
+
+/* Define to 1 if wmemmove is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WMEMMOVE
+
+/* Define to 1 if wmemset is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WMEMSET
+
+/* Define to 1 if _Exit is declared even after undefining macros. */
+#undef HAVE_RAW_DECL__EXIT
+
+/* Define to 1 if you have the <readline/history.h> header file. */
+#undef HAVE_READLINE_HISTORY_H
+
+/* Define to 1 if you have the <readline/readline.h> header file. */
+#undef HAVE_READLINE_READLINE_H
+
+/* Define to 1 if you have the `readlink' function. */
+#undef HAVE_READLINK
+
+/* Define to 1 if your system has a GNU libc compatible 'realloc' function,
+   and to 0 otherwise. */
+#undef HAVE_REALLOC_GNU
+
+/* Define if the 'realloc' function is POSIX compliant. */
+#undef HAVE_REALLOC_POSIX
+
+/* Define to 1 if you have the `realpath' function. */
+#undef HAVE_REALPATH
+
+/* Have reiserfs_fs_check() */
+#undef HAVE_REISERFS_FS_CHECK
+
+/* Define to 1 if you have the `rl_completion_matches' function. */
+#undef HAVE_RL_COMPLETION_MATCHES
+
+/* Define to 1 if you have the `rpmatch' function. */
+#undef HAVE_RPMATCH
+
+/* Define to 1 if you have the <search.h> header file. */
+#undef HAVE_SEARCH_H
+
+/* Define to 1 if you have the `setenv' function. */
+#undef HAVE_SETENV
+
+/* Define to 1 if you have the `setlocale' function. */
+#undef HAVE_SETLOCALE
+
+/* Define to 1 if you have the `sigaction' function. */
+#undef HAVE_SIGACTION
+
+/* Define to 1 if 'sig_atomic_t' is a signed integer type. */
+#undef HAVE_SIGNED_SIG_ATOMIC_T
+
+/* Define to 1 if 'wchar_t' is a signed integer type. */
+#undef HAVE_SIGNED_WCHAR_T
+
+/* Define to 1 if 'wint_t' is a signed integer type. */
+#undef HAVE_SIGNED_WINT_T
+
+/* Define to 1 if you have the `sleep' function. */
+#undef HAVE_SLEEP
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdio_ext.h> header file. */
+#undef HAVE_STDIO_EXT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the `strdup' function. */
+#undef HAVE_STRDUP
+
+/* Define to 1 if you have the `strerror_r' function. */
+#undef HAVE_STRERROR_R
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the `strndup' function. */
+#undef HAVE_STRNDUP
+
+/* Define to 1 if you have the `strtoll' function. */
+#undef HAVE_STRTOLL
+
+/* Define to 1 if you have the `strtoull' function. */
+#undef HAVE_STRTOULL
+
+/* Define to 1 if you have the `symlink' function. */
+#undef HAVE_SYMLINK
+
+/* Define to 1 if you have the <sys/bitypes.h> header file. */
+#undef HAVE_SYS_BITYPES_H
+
+/* Define to 1 if you have the <sys/inttypes.h> header file. */
+#undef HAVE_SYS_INTTYPES_H
+
+/* Define to 1 if you have the <sys/mman.h> header file. */
+#undef HAVE_SYS_MMAN_H
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#undef HAVE_SYS_PARAM_H
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#undef HAVE_SYS_SOCKET_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/timeb.h> header file. */
+#undef HAVE_SYS_TIMEB_H
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#undef HAVE_SYS_TIME_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <termcap.h> header file. */
+#undef HAVE_TERMCAP_H
+
+/* Define to 1 if you have the `tsearch' function. */
+#undef HAVE_TSEARCH
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 if you have the `unsetenv' function. */
+#undef HAVE_UNSETENV
+
+/* Define to 1 if the system has the type `unsigned long long int'. */
+#undef HAVE_UNSIGNED_LONG_LONG_INT
+
+/* Define to 1 if you have the `uselocale' function. */
+#undef HAVE_USELOCALE
+
+/* Define to 1 if you have the `usleep' function. */
+#undef HAVE_USLEEP
+
+/* Define to 1 if you have the <wchar.h> header file. */
+#undef HAVE_WCHAR_H
+
+/* Define if you have the 'wchar_t' type. */
+#undef HAVE_WCHAR_T
+
+/* Define to 1 if you have the `wcrtomb' function. */
+#undef HAVE_WCRTOMB
+
+/* Define to 1 if you have the `wcscoll' function. */
+#undef HAVE_WCSCOLL
+
+/* Define to 1 if you have the `wctob' function. */
+#undef HAVE_WCTOB
+
+/* Define to 1 if you have the <wctype.h> header file. */
+#undef HAVE_WCTYPE_H
+
+/* Define to 1 if you have the <winsock2.h> header file. */
+#undef HAVE_WINSOCK2_H
+
+/* Define if you have the 'wint_t' type. */
+#undef HAVE_WINT_T
+
+/* Define to 1 if O_NOATIME works. */
+#undef HAVE_WORKING_O_NOATIME
+
+/* Define to 1 if O_NOFOLLOW works. */
+#undef HAVE_WORKING_O_NOFOLLOW
+
+/* Define to 1 if you have the <xlocale.h> header file. */
+#undef HAVE_XLOCALE_H
+
+/* Define to 1 if the system has the type `_Bool'. */
+#undef HAVE__BOOL
+
+/* Define to 1 if you have the `_ftime' function. */
+#undef HAVE__FTIME
+
+/* Define to 1 if you have the `__fpending' function. */
+#undef HAVE___FPENDING
+
+/* Define to 1 if you have the `__fpurge' function. */
+#undef HAVE___FPURGE
+
+/* Define to 1 if you have the `__freading' function. */
+#undef HAVE___FREADING
+
+/* Define to 1 if you have the `__xpg_strerror_r' function. */
+#undef HAVE___XPG_STRERROR_R
+
+/* Extract low level special HFS(+) files for debugging purposes when using
+   the "check" command (NOT FOR PACKAGING) */
+#undef HFS_EXTRACT_FS
+
+/* Define to 1 if lseek does not detect pipes. */
+#undef LSEEK_PIPE_BROKEN
+
+/* Define to 1 if `lstat' dereferences a symlink specified with a trailing
+   slash. */
+#undef LSTAT_FOLLOWS_SLASHED_SYMLINK
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+   */
+#undef LT_OBJDIR
+
+/* If malloc(0) is != NULL, define this to 1. Otherwise define this to 0. */
+#undef MALLOC_0_IS_NONNULL
+
+/* Define to a substitute value for mmap()'s MAP_ANONYMOUS flag. */
+#undef MAP_ANONYMOUS
+
+/* Define if the mbrtowc function has the NULL pwc argument bug. */
+#undef MBRTOWC_NULL_ARG1_BUG
+
+/* Define if the mbrtowc function has the NULL string argument bug. */
+#undef MBRTOWC_NULL_ARG2_BUG
+
+/* Define if the mbrtowc function does not return 0 for a NUL character. */
+#undef MBRTOWC_NUL_RETVAL_BUG
+
+/* Define if the mbrtowc function returns a wrong return value. */
+#undef MBRTOWC_RETVAL_BUG
+
+/* Define to 1 if assertions should be disabled. */
+#undef NDEBUG
+
+/* Define to 1 if your C compiler doesn't accept -c and -o together. */
+#undef NO_MINUS_C_MINUS_O
+
+/* Define to 1 if open() fails to recognize a trailing slash. */
+#undef OPEN_TRAILING_SLASH_BUG
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* String identifying the packager of this software */
+#undef PACKAGE_PACKAGER
+
+/* Packager info for bug reports (URL/e-mail/...) */
+#undef PACKAGE_PACKAGER_BUG_REPORTS
+
+/* Packager-specific version information */
+#undef PACKAGE_PACKAGER_VERSION
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* the number of pending output bytes on stream `fp' */
+#undef PENDING_OUTPUT_N_BYTES
+
+/* Define if <inttypes.h> exists and defines unusable PRI* macros. */
+#undef PRI_MACROS_BROKEN
+
+/* Define to the type that is the result of default argument promotions of
+   type mode_t. */
+#undef PROMOTED_MODE_T
+
+/* Define if the pthread_in_use() detection is hard. */
+#undef PTHREAD_IN_USE_DETECTION_HARD
+
+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
+   'ptrdiff_t'. */
+#undef PTRDIFF_T_SUFFIX
+
+/* Define to 1 if readlink fails to recognize a trailing slash. */
+#undef READLINK_TRAILING_SLASH_BUG
+
+/* Disable all writing code */
+#undef READ_ONLY
+
+/* Define to 1 if stat needs help when passed a directory name with a trailing
+   slash */
+#undef REPLACE_FUNC_STAT_DIR
+
+/* Define to 1 if stat needs help when passed a file name with a trailing
+   slash */
+#undef REPLACE_FUNC_STAT_FILE
+
+/* Define if nl_langinfo exists but is overridden by gnulib. */
+#undef REPLACE_NL_LANGINFO
+
+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
+   'sig_atomic_t'. */
+#undef SIG_ATOMIC_T_SUFFIX
+
+/* The size of `off_t', as computed by sizeof. */
+#undef SIZEOF_OFF_T
+
+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
+   'size_t'. */
+#undef SIZE_T_SUFFIX
+
+/* If using the C implementation of alloca, define if you know the
+   direction of stack growth for your system; otherwise it will be
+   automatically deduced at runtime.
+       STACK_DIRECTION > 0 => grows toward higher addresses
+       STACK_DIRECTION < 0 => grows toward lower addresses
+       STACK_DIRECTION = 0 => direction of growth unknown */
+#undef STACK_DIRECTION
+
+/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
+#undef STAT_MACROS_BROKEN
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define to 1 if strerror_r returns char *. */
+#undef STRERROR_R_CHAR_P
+
+/* Define to 1 if unlink (dir) cannot possibly succeed. */
+#undef UNLINK_CANNOT_UNLINK_DIR
+
+/* Define to 1 if unlink() on a parent directory may succeed */
+#undef UNLINK_PARENT_BUG
+
+/* Define if you have sufficient blkid support. */
+#undef USE_BLKID
+
+/* Define if the POSIX multithreading library can be used. */
+#undef USE_POSIX_THREADS
+
+/* Define if references to the POSIX multithreading library should be made
+   weak. */
+#undef USE_POSIX_THREADS_WEAK
+
+/* Define if the GNU Pth multithreading library can be used. */
+#undef USE_PTH_THREADS
+
+/* Define if references to the GNU Pth multithreading library should be made
+   weak. */
+#undef USE_PTH_THREADS_WEAK
+
+/* Define if the old Solaris multithreading library can be used. */
+#undef USE_SOLARIS_THREADS
+
+/* Define if references to the old Solaris multithreading library should be
+   made weak. */
+#undef USE_SOLARIS_THREADS_WEAK
+
+/* Define if the Win32 multithreading API can be used. */
+#undef USE_WIN32_THREADS
+
+/* Version number of package */
+#undef VERSION
+
+/* Define to 1 if unsetenv returns void instead of int. */
+#undef VOID_UNSETENV
+
+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
+   'wchar_t'. */
+#undef WCHAR_T_SUFFIX
+
+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
+   'wint_t'. */
+#undef WINT_T_SUFFIX
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+   significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+#  define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+#  undef WORDS_BIGENDIAN
+# endif
+#endif
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+#undef _FILE_OFFSET_BITS
+
+/* enable compile-time and run-time bounds-checking, and some warnings */
+#undef _FORTIFY_SOURCE
+
+/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
+#undef _LARGEFILE_SOURCE
+
+/* Define for large files, on AIX-style hosts. */
+#undef _LARGE_FILES
+
+/* Define to 1 if on MINIX. */
+#undef _MINIX
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+   this defined. */
+#undef _POSIX_1_SOURCE
+
+/* Define to 1 if you need to in order for `stat' and other things to work. */
+#undef _POSIX_SOURCE
+
+/* Define if you want regoff_t to be at least as wide POSIX requires. */
+#undef _REGEX_LARGE_OFFSETS
+
+/* Define to 500 only on HP-UX. */
+#undef _XOPEN_SOURCE
+
+/* Enable extensions on AIX 3, Interix.  */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif
+/* Enable GNU extensions on systems that have them.  */
+#ifndef _GNU_SOURCE
+# undef _GNU_SOURCE
+#endif
+/* Enable threading extensions on Solaris.  */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+/* Enable extensions on HP NonStop.  */
+#ifndef _TANDEM_SOURCE
+# undef _TANDEM_SOURCE
+#endif
+/* Enable general extensions on Solaris.  */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+
+
+/* Define to rpl_ if the getopt replacement functions and variables should be
+   used. */
+#undef __GETOPT_PREFIX
+
+/* Ensure that <stdint.h> defines the limit macros, since gnulib's
+   <inttypes.h> relies on them.  */
+#if defined __cplusplus && !defined __STDC_LIMIT_MACROS && GL_TRIGGER_STDC_LIMIT_MACROS
+# define __STDC_LIMIT_MACROS 1
+#endif
+
+
+/* Define to empty if `const' does not conform to ANSI C. */
+#undef const
+
+/* A replacement for va_copy, if needed.  */
+#define gl_va_copy(a,b) ((a) = (b))
+
+/* Define to rpl_gmtime if the replacement function should be used. */
+#undef gmtime
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+   calls it, or to nothing if 'inline' is not supported under any name.  */
+#ifndef __cplusplus
+#undef inline
+#endif
+
+/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports
+   the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of
+   earlier versions), but does not display it by setting __GNUC_STDC_INLINE__.
+   __APPLE__ && __MACH__ test for MacOS X.
+   __APPLE_CC__ tests for the Apple compiler and its version.
+   __STDC_VERSION__ tests for the C99 mode.  */
+#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__
+# define __GNUC_STDC_INLINE__ 1
+#endif
+
+/* Define to 1 if the compiler is checking for lint. */
+#undef lint
+
+/* Define to rpl_localtime if the replacement function should be used. */
+#undef localtime
+
+/* Define to a type if <wchar.h> does not define. */
+#undef mbstate_t
+
+/* Define to `int' if <sys/types.h> does not define. */
+#undef mode_t
+
+/* Define to the type of st_nlink in struct stat, or a supertype. */
+#undef nlink_t
+
+/* Define to rpl_re_comp if the replacement should be used. */
+#undef re_comp
+
+/* Define to rpl_re_compile_fastmap if the replacement should be used. */
+#undef re_compile_fastmap
+
+/* Define to rpl_re_compile_pattern if the replacement should be used. */
+#undef re_compile_pattern
+
+/* Define to rpl_re_exec if the replacement should be used. */
+#undef re_exec
+
+/* Define to rpl_re_match if the replacement should be used. */
+#undef re_match
+
+/* Define to rpl_re_match_2 if the replacement should be used. */
+#undef re_match_2
+
+/* Define to rpl_re_search if the replacement should be used. */
+#undef re_search
+
+/* Define to rpl_re_search_2 if the replacement should be used. */
+#undef re_search_2
+
+/* Define to rpl_re_set_registers if the replacement should be used. */
+#undef re_set_registers
+
+/* Define to rpl_re_set_syntax if the replacement should be used. */
+#undef re_set_syntax
+
+/* Define to rpl_re_syntax_options if the replacement should be used. */
+#undef re_syntax_options
+
+/* Define to rpl_regcomp if the replacement should be used. */
+#undef regcomp
+
+/* Define to rpl_regerror if the replacement should be used. */
+#undef regerror
+
+/* Define to rpl_regexec if the replacement should be used. */
+#undef regexec
+
+/* Define to rpl_regfree if the replacement should be used. */
+#undef regfree
+
+/* Define to the equivalent of the C99 'restrict' keyword, or to
+   nothing if this is not supported.  Do not define if restrict is
+   supported directly.  */
+#undef restrict
+/* Work around a bug in Sun C++: it does not support _Restrict or
+   __restrict__, even though the corresponding Sun C compiler ends up with
+   "#define restrict _Restrict" or "#define restrict __restrict__" in the
+   previous line.  Perhaps some future version of Sun C++ will work with
+   restrict; if so, hopefully it defines __RESTRICT like Sun C does.  */
+#if defined __SUNPRO_CC && !defined __RESTRICT
+# define _Restrict
+# define __restrict__
+#endif
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+#undef size_t
+
+/* Define as a signed type of the same size as size_t. */
+#undef ssize_t
+
+/* Define as a marker that can be attached to declarations that might not
+    be used.  This helps to reduce warnings, such as from
+    GCC -Wunused-parameter.  */
+#if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
+# define _GL_UNUSED __attribute__ ((__unused__))
+#else
+# define _GL_UNUSED
+#endif
+/* The name _UNUSED_PARAMETER_ is an earlier spelling, although the name
+   is a misnomer outside of parameter lists.  */
+#define _UNUSED_PARAMETER_ _GL_UNUSED
+
+
+/* Define to an unsigned 32-bit type if <sys/types.h> lacks this type. */
+#undef useconds_t
+
+/* Define as a macro for copying va_list variables. */
+#undef va_copy
diff --git a/lib/dirname-lgpl.c b/lib/dirname-lgpl.c
new file mode 100644 (file)
index 0000000..f5b0c0f
--- /dev/null
@@ -0,0 +1,86 @@
+/* dirname.c -- return all but the last element in a file name
+
+   Copyright (C) 1990, 1998, 2000-2001, 2003-2006, 2009-2011 Free Software
+   Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+#include "dirname.h"
+
+#include <stdlib.h>
+#include <string.h>
+
+/* Return the length of the prefix of FILE that will be used by
+   dir_name.  If FILE is in the working directory, this returns zero
+   even though `dir_name (FILE)' will return ".".  Works properly even
+   if there are trailing slashes (by effectively ignoring them).  */
+
+size_t
+dir_len (char const *file)
+{
+  size_t prefix_length = FILE_SYSTEM_PREFIX_LEN (file);
+  size_t length;
+
+  /* Advance prefix_length beyond important leading slashes.  */
+  prefix_length += (prefix_length != 0
+                    ? (FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE
+                       && ISSLASH (file[prefix_length]))
+                    : (ISSLASH (file[0])
+                       ? ((DOUBLE_SLASH_IS_DISTINCT_ROOT
+                           && ISSLASH (file[1]) && ! ISSLASH (file[2])
+                           ? 2 : 1))
+                       : 0));
+
+  /* Strip the basename and any redundant slashes before it.  */
+  for (length = last_component (file) - file;
+       prefix_length < length; length--)
+    if (! ISSLASH (file[length - 1]))
+      break;
+  return length;
+}
+
+
+/* In general, we can't use the builtin `dirname' function if available,
+   since it has different meanings in different environments.
+   In some environments the builtin `dirname' modifies its argument.
+
+   Return the leading directories part of FILE, allocated with malloc.
+   Works properly even if there are trailing slashes (by effectively
+   ignoring them).  Return NULL on failure.
+
+   If lstat (FILE) would succeed, then { chdir (dir_name (FILE));
+   lstat (base_name (FILE)); } will access the same file.  Likewise,
+   if the sequence { chdir (dir_name (FILE));
+   rename (base_name (FILE), "foo"); } succeeds, you have renamed FILE
+   to "foo" in the same directory FILE was in.  */
+
+char *
+mdir_name (char const *file)
+{
+  size_t length = dir_len (file);
+  bool append_dot = (length == 0
+                     || (FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE
+                         && length == FILE_SYSTEM_PREFIX_LEN (file)
+                         && file[2] != '\0' && ! ISSLASH (file[2])));
+  char *dir = malloc (length + append_dot + 1);
+  if (!dir)
+    return NULL;
+  memcpy (dir, file, length);
+  if (append_dot)
+    dir[length++] = '.';
+  dir[length] = '\0';
+  return dir;
+}
diff --git a/lib/dirname.c b/lib/dirname.c
new file mode 100644 (file)
index 0000000..411ded3
--- /dev/null
@@ -0,0 +1,38 @@
+/* dirname.c -- return all but the last element in a file name
+
+   Copyright (C) 1990, 1998, 2000-2001, 2003-2006, 2009-2011 Free Software
+   Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+#include "dirname.h"
+
+#include <stdlib.h>
+#include <string.h>
+#include "xalloc.h"
+
+/* Just like mdir_name (dirname-lgpl.c), except, rather than
+   returning NULL upon malloc failure, here, we report the
+   "memory exhausted" condition and exit.  */
+
+char *
+dir_name (char const *file)
+{
+  char *result = mdir_name (file);
+  if (!result)
+    xalloc_die ();
+  return result;
+}
diff --git a/lib/dirname.h b/lib/dirname.h
new file mode 100644 (file)
index 0000000..2ef9882
--- /dev/null
@@ -0,0 +1,46 @@
+/*  Take file names apart into directory and base names.
+
+    Copyright (C) 1998, 2001, 2003-2006, 2009-2011 Free Software Foundation,
+    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; 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 <http://www.gnu.org/licenses/>.  */
+
+#ifndef DIRNAME_H_
+# define DIRNAME_H_ 1
+
+# include <stdbool.h>
+# include <stddef.h>
+# include "dosname.h"
+
+# ifndef DIRECTORY_SEPARATOR
+#  define DIRECTORY_SEPARATOR '/'
+# endif
+
+# ifndef DOUBLE_SLASH_IS_DISTINCT_ROOT
+#  define DOUBLE_SLASH_IS_DISTINCT_ROOT 0
+# endif
+
+# if GNULIB_DIRNAME
+char *base_name (char const *file);
+char *dir_name (char const *file);
+# endif
+
+char *mdir_name (char const *file);
+size_t base_len (char const *file);
+size_t dir_len (char const *file);
+char *last_component (char const *file);
+
+bool strip_trailing_slashes (char *file);
+
+#endif /* not DIRNAME_H_ */
diff --git a/lib/dosname.h b/lib/dosname.h
new file mode 100644 (file)
index 0000000..acdd03b
--- /dev/null
@@ -0,0 +1,53 @@
+/* File names on MS-DOS/Windows systems.
+
+   Copyright (C) 2000-2001, 2004-2006, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+   From Paul Eggert and Jim Meyering.  */
+
+#ifndef _DOSNAME_H
+#define _DOSNAME_H
+
+#if (defined _WIN32 || defined __WIN32__ ||     \
+     defined __MSDOS__ || defined __CYGWIN__ || \
+     defined __EMX__ || defined __DJGPP__)
+   /* This internal macro assumes ASCII, but all hosts that support drive
+      letters use ASCII.  */
+# define _IS_DRIVE_LETTER(C) (((unsigned int) (C) | ('a' - 'A')) - 'a'  \
+                              <= 'z' - 'a')
+# define FILE_SYSTEM_PREFIX_LEN(Filename) \
+          (_IS_DRIVE_LETTER ((Filename)[0]) && (Filename)[1] == ':' ? 2 : 0)
+# ifndef __CYGWIN__
+#  define FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE 1
+# endif
+# define ISSLASH(C) ((C) == '/' || (C) == '\\')
+#else
+# define FILE_SYSTEM_PREFIX_LEN(Filename) 0
+# define ISSLASH(C) ((C) == '/')
+#endif
+
+#ifndef FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE
+# define FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE 0
+#endif
+
+#if FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE
+#  define IS_ABSOLUTE_FILE_NAME(F) ISSLASH ((F)[FILE_SYSTEM_PREFIX_LEN (F)])
+# else
+#  define IS_ABSOLUTE_FILE_NAME(F)                              \
+     (ISSLASH ((F)[0]) || FILE_SYSTEM_PREFIX_LEN (F) != 0)
+#endif
+#define IS_RELATIVE_FILE_NAME(F) (! IS_ABSOLUTE_FILE_NAME (F))
+
+#endif /* DOSNAME_H_ */
diff --git a/lib/errno.in.h b/lib/errno.in.h
new file mode 100644 (file)
index 0000000..94893d7
--- /dev/null
@@ -0,0 +1,169 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* A POSIX-like <errno.h>.
+
+   Copyright (C) 2008-2011 Free Software Foundation, 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; either version 3, 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.  */
+
+#ifndef _@GUARD_PREFIX@_ERRNO_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+/* The include_next requires a split double-inclusion guard.  */
+#@INCLUDE_NEXT@ @NEXT_ERRNO_H@
+
+#ifndef _@GUARD_PREFIX@_ERRNO_H
+#define _@GUARD_PREFIX@_ERRNO_H
+
+
+/* On native Windows platforms, many macros are not defined.  */
+# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+
+/* POSIX says that EAGAIN and EWOULDBLOCK may have the same value.  */
+#  define EWOULDBLOCK     EAGAIN
+
+/* Values >= 100 seem safe to use.  */
+#  define ETXTBSY   100
+#  define GNULIB_defined_ETXTBSY 1
+
+/* These are intentionally the same values as the WSA* error numbers, defined
+   in <winsock2.h>.  */
+#  define EINPROGRESS     10036
+#  define EALREADY        10037
+#  define ENOTSOCK        10038
+#  define EDESTADDRREQ    10039
+#  define EMSGSIZE        10040
+#  define EPROTOTYPE      10041
+#  define ENOPROTOOPT     10042
+#  define EPROTONOSUPPORT 10043
+#  define ESOCKTNOSUPPORT 10044  /* not required by POSIX */
+#  define EOPNOTSUPP      10045
+#  define EPFNOSUPPORT    10046  /* not required by POSIX */
+#  define EAFNOSUPPORT    10047
+#  define EADDRINUSE      10048
+#  define EADDRNOTAVAIL   10049
+#  define ENETDOWN        10050
+#  define ENETUNREACH     10051
+#  define ENETRESET       10052
+#  define ECONNABORTED    10053
+#  define ECONNRESET      10054
+#  define ENOBUFS         10055
+#  define EISCONN         10056
+#  define ENOTCONN        10057
+#  define ESHUTDOWN       10058  /* not required by POSIX */
+#  define ETOOMANYREFS    10059  /* not required by POSIX */
+#  define ETIMEDOUT       10060
+#  define ECONNREFUSED    10061
+#  define ELOOP           10062
+#  define EHOSTDOWN       10064  /* not required by POSIX */
+#  define EHOSTUNREACH    10065
+#  define EPROCLIM        10067  /* not required by POSIX */
+#  define EUSERS          10068  /* not required by POSIX */
+#  define EDQUOT          10069
+#  define ESTALE          10070
+#  define EREMOTE         10071  /* not required by POSIX */
+#  define GNULIB_defined_ESOCK 1
+
+# endif
+
+
+/* On OSF/1 5.1, when _XOPEN_SOURCE_EXTENDED is not defined, the macros
+   EMULTIHOP, ENOLINK, EOVERFLOW are not defined.  */
+# if @EMULTIHOP_HIDDEN@
+#  define EMULTIHOP @EMULTIHOP_VALUE@
+#  define GNULIB_defined_EMULTIHOP 1
+# endif
+# if @ENOLINK_HIDDEN@
+#  define ENOLINK   @ENOLINK_VALUE@
+#  define GNULIB_defined_ENOLINK 1
+# endif
+# if @EOVERFLOW_HIDDEN@
+#  define EOVERFLOW @EOVERFLOW_VALUE@
+#  define GNULIB_defined_EOVERFLOW 1
+# endif
+
+
+/* On OpenBSD 4.0 and on native Windows, the macros ENOMSG, EIDRM, ENOLINK,
+   EPROTO, EMULTIHOP, EBADMSG, EOVERFLOW, ENOTSUP, ECANCELED are not defined.
+   Likewise, on NonStop Kernel, EDQUOT is not defined.
+   Define them here.  Values >= 2000 seem safe to use: Solaris ESTALE = 151,
+   HP-UX EWOULDBLOCK = 246, IRIX EDQUOT = 1133.
+
+   Note: When one of these systems defines some of these macros some day,
+   binaries will have to be recompiled so that they recognizes the new
+   errno values from the system.  */
+
+# ifndef ENOMSG
+#  define ENOMSG    2000
+#  define GNULIB_defined_ENOMSG 1
+# endif
+
+# ifndef EIDRM
+#  define EIDRM     2001
+#  define GNULIB_defined_EIDRM 1
+# endif
+
+# ifndef ENOLINK
+#  define ENOLINK   2002
+#  define GNULIB_defined_ENOLINK 1
+# endif
+
+# ifndef EPROTO
+#  define EPROTO    2003
+#  define GNULIB_defined_EPROTO 1
+# endif
+
+# ifndef EMULTIHOP
+#  define EMULTIHOP 2004
+#  define GNULIB_defined_EMULTIHOP 1
+# endif
+
+# ifndef EBADMSG
+#  define EBADMSG   2005
+#  define GNULIB_defined_EBADMSG 1
+# endif
+
+# ifndef EOVERFLOW
+#  define EOVERFLOW 2006
+#  define GNULIB_defined_EOVERFLOW 1
+# endif
+
+# ifndef ENOTSUP
+#  define ENOTSUP   2007
+#  define GNULIB_defined_ENOTSUP 1
+# endif
+
+# ifndef ESTALE
+#  define ESTALE    2009
+#  define GNULIB_defined_ESTALE 1
+# endif
+
+# ifndef EDQUOT
+#  define EDQUOT 2010
+#  define GNULIB_defined_EDQUOT 1
+# endif
+
+# ifndef ECANCELED
+#  define ECANCELED 2008
+#  define GNULIB_defined_ECANCELED 1
+# endif
+
+
+#endif /* _@GUARD_PREFIX@_ERRNO_H */
+#endif /* _@GUARD_PREFIX@_ERRNO_H */
diff --git a/lib/error.c b/lib/error.c
new file mode 100644 (file)
index 0000000..a2d1c1b
--- /dev/null
@@ -0,0 +1,394 @@
+/* Error handler for noninteractive utilities
+   Copyright (C) 1990-1998, 2000-2007, 2009-2011 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   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 <http://www.gnu.org/licenses/>.  */
+
+/* Written by David MacKenzie <djm@gnu.ai.mit.edu>.  */
+
+#if !_LIBC
+# include <config.h>
+#endif
+
+#include "error.h"
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#if !_LIBC && ENABLE_NLS
+# include "gettext.h"
+# define _(msgid) gettext (msgid)
+#endif
+
+#ifdef _LIBC
+# include <libintl.h>
+# include <stdbool.h>
+# include <stdint.h>
+# include <wchar.h>
+# define mbsrtowcs __mbsrtowcs
+#endif
+
+#if USE_UNLOCKED_IO
+# include "unlocked-io.h"
+#endif
+
+#ifndef _
+# define _(String) String
+#endif
+
+/* If NULL, error will flush stdout, then print on stderr the program
+   name, a colon and a space.  Otherwise, error will call this
+   function without parameters instead.  */
+void (*error_print_progname) (void);
+
+/* This variable is incremented each time `error' is called.  */
+unsigned int error_message_count;
+
+#ifdef _LIBC
+/* In the GNU C library, there is a predefined variable for this.  */
+
+# define program_name program_invocation_name
+# include <errno.h>
+# include <limits.h>
+# include <libio/libioP.h>
+
+/* In GNU libc we want do not want to use the common name `error' directly.
+   Instead make it a weak alias.  */
+extern void __error (int status, int errnum, const char *message, ...)
+     __attribute__ ((__format__ (__printf__, 3, 4)));
+extern void __error_at_line (int status, int errnum, const char *file_name,
+                             unsigned int line_number, const char *message,
+                             ...)
+     __attribute__ ((__format__ (__printf__, 5, 6)));;
+# define error __error
+# define error_at_line __error_at_line
+
+# include <libio/iolibio.h>
+# define fflush(s) INTUSE(_IO_fflush) (s)
+# undef putc
+# define putc(c, fp) INTUSE(_IO_putc) (c, fp)
+
+# include <bits/libc-lock.h>
+
+#else /* not _LIBC */
+
+# include <fcntl.h>
+# include <unistd.h>
+
+# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+/* Get declarations of the Win32 API functions.  */
+#  define WIN32_LEAN_AND_MEAN
+#  include <windows.h>
+# endif
+
+/* The gnulib override of fcntl is not needed in this file.  */
+# undef fcntl
+
+# if !HAVE_DECL_STRERROR_R && STRERROR_R_CHAR_P
+#  ifndef HAVE_DECL_STRERROR_R
+"this configure-time declaration test was not run"
+#  endif
+char *strerror_r ();
+# endif
+
+/* The calling program should define program_name and set it to the
+   name of the executing program.  */
+extern char *program_name;
+
+# if HAVE_STRERROR_R || defined strerror_r
+#  define __strerror_r strerror_r
+# endif /* HAVE_STRERROR_R || defined strerror_r */
+#endif  /* not _LIBC */
+
+#if !_LIBC
+/* Return non-zero if FD is open.  */
+static inline int
+is_open (int fd)
+{
+# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+  /* On Win32: The initial state of unassigned standard file descriptors is
+     that they are open but point to an INVALID_HANDLE_VALUE.  There is no
+     fcntl, and the gnulib replacement fcntl does not support F_GETFL.  */
+  return (HANDLE) _get_osfhandle (fd) != INVALID_HANDLE_VALUE;
+# else
+#  ifndef F_GETFL
+#   error Please port fcntl to your platform
+#  endif
+  return 0 <= fcntl (fd, F_GETFL);
+# endif
+}
+#endif
+
+static inline void
+flush_stdout (void)
+{
+#if !_LIBC
+  int stdout_fd;
+
+# if GNULIB_FREOPEN_SAFER
+  /* Use of gnulib's freopen-safer module normally ensures that
+       fileno (stdout) == 1
+     whenever stdout is open.  */
+  stdout_fd = STDOUT_FILENO;
+# else
+  /* POSIX states that fileno (stdout) after fclose is unspecified.  But in
+     practice it is not a problem, because stdout is statically allocated and
+     the fd of a FILE stream is stored as a field in its allocated memory.  */
+  stdout_fd = fileno (stdout);
+# endif
+  /* POSIX states that fflush (stdout) after fclose is unspecified; it
+     is safe in glibc, but not on all other platforms.  fflush (NULL)
+     is always defined, but too draconian.  */
+  if (0 <= stdout_fd && is_open (stdout_fd))
+#endif
+    fflush (stdout);
+}
+
+static void
+print_errno_message (int errnum)
+{
+  char const *s;
+
+#if defined HAVE_STRERROR_R || _LIBC
+  char errbuf[1024];
+# if STRERROR_R_CHAR_P || _LIBC
+  s = __strerror_r (errnum, errbuf, sizeof errbuf);
+# else
+  if (__strerror_r (errnum, errbuf, sizeof errbuf) == 0)
+    s = errbuf;
+  else
+    s = 0;
+# endif
+#else
+  s = strerror (errnum);
+#endif
+
+#if !_LIBC
+  if (! s)
+    s = _("Unknown system error");
+#endif
+
+#if _LIBC
+  __fxprintf (NULL, ": %s", s);
+#else
+  fprintf (stderr, ": %s", s);
+#endif
+}
+
+static void
+error_tail (int status, int errnum, const char *message, va_list args)
+{
+#if _LIBC
+  if (_IO_fwide (stderr, 0) > 0)
+    {
+# define ALLOCA_LIMIT 2000
+      size_t len = strlen (message) + 1;
+      wchar_t *wmessage = NULL;
+      mbstate_t st;
+      size_t res;
+      const char *tmp;
+      bool use_malloc = false;
+
+      while (1)
+        {
+          if (__libc_use_alloca (len * sizeof (wchar_t)))
+            wmessage = (wchar_t *) alloca (len * sizeof (wchar_t));
+          else
+            {
+              if (!use_malloc)
+                wmessage = NULL;
+
+              wchar_t *p = (wchar_t *) realloc (wmessage,
+                                                len * sizeof (wchar_t));
+              if (p == NULL)
+                {
+                  free (wmessage);
+                  fputws_unlocked (L"out of memory\n", stderr);
+                  return;
+                }
+              wmessage = p;
+              use_malloc = true;
+            }
+
+          memset (&st, '\0', sizeof (st));
+          tmp = message;
+
+          res = mbsrtowcs (wmessage, &tmp, len, &st);
+          if (res != len)
+            break;
+
+          if (__builtin_expect (len >= SIZE_MAX / 2, 0))
+            {
+              /* This really should not happen if everything is fine.  */
+              res = (size_t) -1;
+              break;
+            }
+
+          len *= 2;
+        }
+
+      if (res == (size_t) -1)
+        {
+          /* The string cannot be converted.  */
+          if (use_malloc)
+            {
+              free (wmessage);
+              use_malloc = false;
+            }
+          wmessage = (wchar_t *) L"???";
+        }
+
+      __vfwprintf (stderr, wmessage, args);
+
+      if (use_malloc)
+        free (wmessage);
+    }
+  else
+#endif
+    vfprintf (stderr, message, args);
+  va_end (args);
+
+  ++error_message_count;
+  if (errnum)
+    print_errno_message (errnum);
+#if _LIBC
+  __fxprintf (NULL, "\n");
+#else
+  putc ('\n', stderr);
+#endif
+  fflush (stderr);
+  if (status)
+    exit (status);
+}
+
+
+/* Print the program name and error message MESSAGE, which is a printf-style
+   format string with optional args.
+   If ERRNUM is nonzero, print its corresponding system error message.
+   Exit with status STATUS if it is nonzero.  */
+void
+error (int status, int errnum, const char *message, ...)
+{
+  va_list args;
+
+#if defined _LIBC && defined __libc_ptf_call
+  /* We do not want this call to be cut short by a thread
+     cancellation.  Therefore disable cancellation for now.  */
+  int state = PTHREAD_CANCEL_ENABLE;
+  __libc_ptf_call (pthread_setcancelstate, (PTHREAD_CANCEL_DISABLE, &state),
+                   0);
+#endif
+
+  flush_stdout ();
+#ifdef _LIBC
+  _IO_flockfile (stderr);
+#endif
+  if (error_print_progname)
+    (*error_print_progname) ();
+  else
+    {
+#if _LIBC
+      __fxprintf (NULL, "%s: ", program_name);
+#else
+      fprintf (stderr, "%s: ", program_name);
+#endif
+    }
+
+  va_start (args, message);
+  error_tail (status, errnum, message, args);
+
+#ifdef _LIBC
+  _IO_funlockfile (stderr);
+# ifdef __libc_ptf_call
+  __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0);
+# endif
+#endif
+}
+\f
+/* Sometimes we want to have at most one error per line.  This
+   variable controls whether this mode is selected or not.  */
+int error_one_per_line;
+
+void
+error_at_line (int status, int errnum, const char *file_name,
+               unsigned int line_number, const char *message, ...)
+{
+  va_list args;
+
+  if (error_one_per_line)
+    {
+      static const char *old_file_name;
+      static unsigned int old_line_number;
+
+      if (old_line_number == line_number
+          && (file_name == old_file_name
+              || strcmp (old_file_name, file_name) == 0))
+        /* Simply return and print nothing.  */
+        return;
+
+      old_file_name = file_name;
+      old_line_number = line_number;
+    }
+
+#if defined _LIBC && defined __libc_ptf_call
+  /* We do not want this call to be cut short by a thread
+     cancellation.  Therefore disable cancellation for now.  */
+  int state = PTHREAD_CANCEL_ENABLE;
+  __libc_ptf_call (pthread_setcancelstate, (PTHREAD_CANCEL_DISABLE, &state),
+                   0);
+#endif
+
+  flush_stdout ();
+#ifdef _LIBC
+  _IO_flockfile (stderr);
+#endif
+  if (error_print_progname)
+    (*error_print_progname) ();
+  else
+    {
+#if _LIBC
+      __fxprintf (NULL, "%s:", program_name);
+#else
+      fprintf (stderr, "%s:", program_name);
+#endif
+    }
+
+#if _LIBC
+  __fxprintf (NULL, file_name != NULL ? "%s:%d: " : " ",
+              file_name, line_number);
+#else
+  fprintf (stderr, file_name != NULL ? "%s:%d: " : " ",
+           file_name, line_number);
+#endif
+
+  va_start (args, message);
+  error_tail (status, errnum, message, args);
+
+#ifdef _LIBC
+  _IO_funlockfile (stderr);
+# ifdef __libc_ptf_call
+  __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0);
+# endif
+#endif
+}
+
+#ifdef _LIBC
+/* Make the weak alias.  */
+# undef error
+# undef error_at_line
+weak_alias (__error, error)
+weak_alias (__error_at_line, error_at_line)
+#endif
diff --git a/lib/error.h b/lib/error.h
new file mode 100644 (file)
index 0000000..80f81bc
--- /dev/null
@@ -0,0 +1,65 @@
+/* Declaration for error-reporting function
+   Copyright (C) 1995-1997, 2003, 2006, 2008-2011 Free Software Foundation,
+   Inc.
+   This file is part of the GNU C Library.
+
+   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 <http://www.gnu.org/licenses/>.  */
+
+#ifndef _ERROR_H
+#define _ERROR_H 1
+
+/* The __attribute__ feature is available in gcc versions 2.5 and later.
+   The __-protected variants of the attributes 'format' and 'printf' are
+   accepted by gcc versions 2.6.4 (effectively 2.7) and later.
+   We enable _GL_ATTRIBUTE_FORMAT only if these are supported too, because
+   gnulib and libintl do '#define printf __printf__' when they override
+   the 'printf' function.  */
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
+# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec))
+#else
+# define _GL_ATTRIBUTE_FORMAT(spec) /* empty */
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Print a message with `fprintf (stderr, FORMAT, ...)';
+   if ERRNUM is nonzero, follow it with ": " and strerror (ERRNUM).
+   If STATUS is nonzero, terminate the program with `exit (STATUS)'.  */
+
+extern void error (int __status, int __errnum, const char *__format, ...)
+     _GL_ATTRIBUTE_FORMAT ((__printf__, 3, 4));
+
+extern void error_at_line (int __status, int __errnum, const char *__fname,
+                           unsigned int __lineno, const char *__format, ...)
+     _GL_ATTRIBUTE_FORMAT ((__printf__, 5, 6));
+
+/* If NULL, error will flush stdout, then print on stderr the program
+   name, a colon and a space.  Otherwise, error will call this
+   function without parameters instead.  */
+extern void (*error_print_progname) (void);
+
+/* This variable is incremented each time `error' is called.  */
+extern unsigned int error_message_count;
+
+/* Sometimes we want to have at most one error per line.  This
+   variable controls whether this mode is selected or not.  */
+extern int error_one_per_line;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* error.h */
diff --git a/lib/exitfail.c b/lib/exitfail.c
new file mode 100644 (file)
index 0000000..953aa02
--- /dev/null
@@ -0,0 +1,24 @@
+/* Failure exit status
+
+   Copyright (C) 2002-2003, 2005-2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+#include "exitfail.h"
+
+#include <stdlib.h>
+
+int volatile exit_failure = EXIT_FAILURE;
diff --git a/lib/exitfail.h b/lib/exitfail.h
new file mode 100644 (file)
index 0000000..6d01d4f
--- /dev/null
@@ -0,0 +1,18 @@
+/* Failure exit status
+
+   Copyright (C) 2002, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+extern int volatile exit_failure;
diff --git a/lib/fclose.c b/lib/fclose.c
new file mode 100644 (file)
index 0000000..27f6836
--- /dev/null
@@ -0,0 +1,84 @@
+/* fclose replacement.
+   Copyright (C) 2008-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include <stdio.h>
+
+#include <errno.h>
+#include <unistd.h>
+
+#include "freading.h"
+
+/* Override fclose() to call the overridden fflush() or close().  */
+
+int
+rpl_fclose (FILE *fp)
+#undef fclose
+{
+  int saved_errno = 0;
+  int fd;
+  int result = 0;
+
+  /* Don't change behavior on memstreams.  */
+  fd = fileno (fp);
+  if (fd < 0)
+    return fclose (fp);
+
+  /* We only need to flush the file if it is not reading or if it is
+     seekable.  This only guarantees the file position of input files
+     if the fflush module is also in use.  */
+  if ((!freading (fp) || lseek (fileno (fp), 0, SEEK_CUR) != -1)
+      && fflush (fp))
+    saved_errno = errno;
+
+  /* fclose() calls close(), but we need to also invoke all hooks that our
+     overridden close() function invokes.  See lib/close.c.  */
+#if WINDOWS_SOCKETS
+  /* Call the overridden close(), then the original fclose().
+     Note about multithread-safety: There is a race condition where some
+     other thread could open fd between our close and fclose.  */
+  if (close (fd) < 0 && saved_errno == 0)
+    saved_errno = errno;
+
+  fclose (fp); /* will fail with errno = EBADF, if we did not lose a race */
+
+#else /* !WINDOWS_SOCKETS */
+  /* Call fclose() and invoke all hooks of the overridden close().  */
+
+# if REPLACE_FCHDIR
+  /* Note about multithread-safety: There is a race condition here as well.
+     Some other thread could open fd between our calls to fclose and
+     _gl_unregister_fd.  */
+  result = fclose (fp);
+  if (result == 0)
+    _gl_unregister_fd (fd);
+# else
+  /* No race condition here.  */
+  result = fclose (fp);
+# endif
+
+#endif /* !WINDOWS_SOCKETS */
+
+  if (saved_errno != 0)
+    {
+      errno = saved_errno;
+      result = EOF;
+    }
+
+  return result;
+}
diff --git a/lib/fd-hook.c b/lib/fd-hook.c
new file mode 100644 (file)
index 0000000..6dba295
--- /dev/null
@@ -0,0 +1,118 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Hook for making making file descriptor functions close(), ioctl() extensible.
+   Copyright (C) 2009-2011 Free Software Foundation, Inc.
+   Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+   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 <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include "fd-hook.h"
+
+#include <stdlib.h>
+
+/* Currently, this entire code is only needed for the handling of sockets
+   on native Windows platforms.  */
+#if WINDOWS_SOCKETS
+
+/* The first and last link in the doubly linked list.
+   Initially the list is empty.  */
+static struct fd_hook anchor = { &anchor, &anchor, NULL, NULL };
+
+int
+execute_close_hooks (const struct fd_hook *remaining_list, gl_close_fn primary,
+                     int fd)
+{
+  if (remaining_list == &anchor)
+    /* End of list reached.  */
+    return primary (fd);
+  else
+    return remaining_list->private_close_fn (remaining_list->private_next,
+                                             primary, fd);
+}
+
+int
+execute_all_close_hooks (gl_close_fn primary, int fd)
+{
+  return execute_close_hooks (anchor.private_next, primary, fd);
+}
+
+int
+execute_ioctl_hooks (const struct fd_hook *remaining_list, gl_ioctl_fn primary,
+                     int fd, int request, void *arg)
+{
+  if (remaining_list == &anchor)
+    /* End of list reached.  */
+    return primary (fd, request, arg);
+  else
+    return remaining_list->private_ioctl_fn (remaining_list->private_next,
+                                             primary, fd, request, arg);
+}
+
+int
+execute_all_ioctl_hooks (gl_ioctl_fn primary,
+                         int fd, int request, void *arg)
+{
+  return execute_ioctl_hooks (anchor.private_next, primary, fd, request, arg);
+}
+
+void
+register_fd_hook (close_hook_fn close_hook, ioctl_hook_fn ioctl_hook, struct fd_hook *link)
+{
+  if (close_hook == NULL)
+    close_hook = execute_close_hooks;
+  if (ioctl_hook == NULL)
+    ioctl_hook = execute_ioctl_hooks;
+
+  if (link->private_next == NULL && link->private_prev == NULL)
+    {
+      /* Add the link to the doubly linked list.  */
+      link->private_next = anchor.private_next;
+      link->private_prev = &anchor;
+      link->private_close_fn = close_hook;
+      link->private_ioctl_fn = ioctl_hook;
+      anchor.private_next->private_prev = link;
+      anchor.private_next = link;
+    }
+  else
+    {
+      /* The link is already in use.  */
+      if (link->private_close_fn != close_hook
+          || link->private_ioctl_fn != ioctl_hook)
+        abort ();
+    }
+}
+
+void
+unregister_fd_hook (struct fd_hook *link)
+{
+  struct fd_hook *next = link->private_next;
+  struct fd_hook *prev = link->private_prev;
+
+  if (next != NULL && prev != NULL)
+    {
+      /* The link is in use.  Remove it from the doubly linked list.  */
+      prev->private_next = next;
+      next->private_prev = prev;
+      /* Clear the link, to mark it unused.  */
+      link->private_next = NULL;
+      link->private_prev = NULL;
+      link->private_close_fn = NULL;
+      link->private_ioctl_fn = NULL;
+    }
+}
+
+#endif
diff --git a/lib/fd-hook.h b/lib/fd-hook.h
new file mode 100644 (file)
index 0000000..5dc85c0
--- /dev/null
@@ -0,0 +1,121 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Hook for making making file descriptor functions close(), ioctl() extensible.
+   Copyright (C) 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+
+#ifndef FD_HOOK_H
+#define FD_HOOK_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Currently, this entire code is only needed for the handling of sockets
+   on native Windows platforms.  */
+#if WINDOWS_SOCKETS
+
+
+/* Type of function that closes FD.  */
+typedef int (*gl_close_fn) (int fd);
+
+/* Type of function that applies a control request to FD.  */
+typedef int (*gl_ioctl_fn) (int fd, int request, void *arg);
+
+/* An element of the list of file descriptor hooks.
+   In CLOS (Common Lisp Object System) speak, it consists of an "around"
+   method for the close() function and an "around" method for the ioctl()
+   function.
+   The fields of this structure are considered private.  */
+struct fd_hook
+{
+  /* Doubly linked list.  */
+  struct fd_hook *private_next;
+  struct fd_hook *private_prev;
+  /* Function that treats the types of FD that it knows about and calls
+     execute_close_hooks (REMAINING_LIST, PRIMARY, FD) as a fallback.  */
+  int (*private_close_fn) (const struct fd_hook *remaining_list,
+                           gl_close_fn primary,
+                           int fd);
+  /* Function that treats the types of FD that it knows about and calls
+     execute_ioctl_hooks (REMAINING_LIST, PRIMARY, FD, REQUEST, ARG) as a
+     fallback.  */
+  int (*private_ioctl_fn) (const struct fd_hook *remaining_list,
+                           gl_ioctl_fn primary,
+                           int fd, int request, void *arg);
+};
+
+/* This type of function closes FD, applying special knowledge for the FD
+   types it knows about, and calls
+   execute_close_hooks (REMAINING_LIST, PRIMARY, FD)
+   for the other FD types.
+   In CLOS speak, REMAINING_LIST is the remaining list of "around" methods,
+   and PRIMARY is the "primary" method for close().  */
+typedef int (*close_hook_fn) (const struct fd_hook *remaining_list,
+                              gl_close_fn primary,
+                              int fd);
+
+/* Execute the close hooks in REMAINING_LIST, with PRIMARY as "primary" method.
+   Return 0 or -1, like close() would do.  */
+extern int execute_close_hooks (const struct fd_hook *remaining_list,
+                                gl_close_fn primary,
+                                int fd);
+
+/* Execute all close hooks, with PRIMARY as "primary" method.
+   Return 0 or -1, like close() would do.  */
+extern int execute_all_close_hooks (gl_close_fn primary, int fd);
+
+/* This type of function applies a control request to FD, applying special
+   knowledge for the FD types it knows about, and calls
+   execute_ioctl_hooks (REMAINING_LIST, PRIMARY, FD, REQUEST, ARG)
+   for the other FD types.
+   In CLOS speak, REMAINING_LIST is the remaining list of "around" methods,
+   and PRIMARY is the "primary" method for ioctl().  */
+typedef int (*ioctl_hook_fn) (const struct fd_hook *remaining_list,
+                              gl_ioctl_fn primary,
+                              int fd, int request, void *arg);
+
+/* Execute the ioctl hooks in REMAINING_LIST, with PRIMARY as "primary" method.
+   Return 0 or -1, like ioctl() would do.  */
+extern int execute_ioctl_hooks (const struct fd_hook *remaining_list,
+                                gl_ioctl_fn primary,
+                                int fd, int request, void *arg);
+
+/* Execute all ioctl hooks, with PRIMARY as "primary" method.
+   Return 0 or -1, like ioctl() would do.  */
+extern int execute_all_ioctl_hooks (gl_ioctl_fn primary,
+                                    int fd, int request, void *arg);
+
+/* Add a function pair to the list of file descriptor hooks.
+   CLOSE_HOOK and IOCTL_HOOK may be NULL, indicating no change.
+   The LINK variable points to a piece of memory which is guaranteed to be
+   accessible until the corresponding call to unregister_fd_hook.  */
+extern void register_fd_hook (close_hook_fn close_hook, ioctl_hook_fn ioctl_hook,
+                              struct fd_hook *link);
+
+/* Removes a hook from the list of file descriptor hooks.  */
+extern void unregister_fd_hook (struct fd_hook *link);
+
+
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* FD_HOOK_H */
diff --git a/lib/fflush.c b/lib/fflush.c
new file mode 100644 (file)
index 0000000..437e310
--- /dev/null
@@ -0,0 +1,218 @@
+/* fflush.c -- allow flushing input streams
+   Copyright (C) 2007-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+/* Written by Eric Blake. */
+
+#include <config.h>
+
+/* Specification.  */
+#include <stdio.h>
+
+#include <errno.h>
+#include <unistd.h>
+
+#include "freading.h"
+
+#include "stdio-impl.h"
+
+#undef fflush
+
+
+#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
+
+/* Clear the stream's ungetc buffer, preserving the value of ftello (fp).  */
+static inline void
+clear_ungetc_buffer_preserving_position (FILE *fp)
+{
+  if (fp->_flags & _IO_IN_BACKUP)
+    /* _IO_free_backup_area is a bit complicated.  Simply call fseek.  */
+    fseeko (fp, 0, SEEK_CUR);
+}
+
+#else
+
+/* Clear the stream's ungetc buffer.  May modify the value of ftello (fp).  */
+static inline void
+clear_ungetc_buffer (FILE *fp)
+{
+# if defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */
+  if (HASUB (fp))
+    {
+      fp_->_p += fp_->_r;
+      fp_->_r = 0;
+    }
+# elif defined __EMX__              /* emx+gcc */
+  if (fp->_ungetc_count > 0)
+    {
+      fp->_ungetc_count = 0;
+      fp->_rcount = - fp->_rcount;
+    }
+# elif defined _IOERR               /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, NonStop Kernel */
+  /* Nothing to do.  */
+# else                              /* other implementations */
+  fseeko (fp, 0, SEEK_CUR);
+# endif
+}
+
+#endif
+
+#if (defined __sferror || defined __DragonFly__) && defined __SNPT /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */
+
+static inline int
+disable_seek_optimization (FILE *fp)
+{
+  int saved_flags = fp_->_flags & (__SOPT | __SNPT);
+  fp_->_flags = (fp_->_flags & ~__SOPT) | __SNPT;
+  return saved_flags;
+}
+
+static inline void
+restore_seek_optimization (FILE *fp, int saved_flags)
+{
+  fp_->_flags = (fp_->_flags & ~(__SOPT | __SNPT)) | saved_flags;
+}
+
+#endif
+
+static inline void
+update_fpos_cache (FILE *fp, off_t pos)
+{
+#if defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */
+# if defined __CYGWIN__
+  /* fp_->_offset is typed as an integer.  */
+  fp_->_offset = pos;
+# else
+  /* fp_->_offset is an fpos_t.  */
+  /* Use a union, since on NetBSD, the compilation flags determine
+     whether fpos_t is typedef'd to off_t or a struct containing a
+     single off_t member.  */
+  union
+    {
+      fpos_t f;
+      off_t o;
+    } u;
+  u.o = pos;
+  fp_->_offset = u.f;
+# endif
+  fp_->_flags |= __SOFF;
+#endif
+}
+
+/* Flush all pending data on STREAM according to POSIX rules.  Both
+   output and seekable input streams are supported.  */
+int
+rpl_fflush (FILE *stream)
+{
+  /* When stream is NULL, POSIX and C99 only require flushing of "output
+     streams and update streams in which the most recent operation was not
+     input", and all implementations do this.
+
+     When stream is "an output stream or an update stream in which the most
+     recent operation was not input", POSIX and C99 requires that fflush
+     writes out any buffered data, and all implementations do this.
+
+     When stream is, however, an input stream or an update stream in
+     which the most recent operation was input, C99 specifies nothing,
+     and POSIX only specifies behavior if the stream is seekable.
+     mingw, in particular, drops the input buffer, leaving the file
+     descriptor positioned at the end of the input buffer. I.e. ftell
+     (stream) is lost.  We don't want to call the implementation's
+     fflush in this case.
+
+     We test ! freading (stream) here, rather than fwriting (stream), because
+     what we need to know is whether the stream holds a "read buffer", and on
+     mingw this is indicated by _IOREAD, regardless of _IOWRT.  */
+  if (stream == NULL || ! freading (stream))
+    return fflush (stream);
+
+#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
+
+  clear_ungetc_buffer_preserving_position (stream);
+
+  return fflush (stream);
+
+#else
+  {
+    /* Notes about the file-position indicator:
+       1) The file position indicator is incremented by fgetc() and decremented
+          by ungetc():
+          <http://www.opengroup.org/susv3/functions/fgetc.html>
+            "... the fgetc() function shall ... advance the associated file
+             position indicator for the stream ..."
+          <http://www.opengroup.org/susv3/functions/ungetc.html>
+            "The file-position indicator is decremented by each successful
+             call to ungetc()..."
+       2) <http://www.opengroup.org/susv3/functions/ungetc.html> says:
+            "The value of the file-position indicator for the stream after
+             reading or discarding all pushed-back bytes shall be the same
+             as it was before the bytes were pushed back."
+          Here we are discarding all pushed-back bytes.  But more specifically,
+       3) <http://www.opengroup.org/austin/aardvark/latest/xshbug3.txt> says:
+            "[After fflush(),] the file offset of the underlying open file
+             description shall be set to the file position of the stream, and
+             any characters pushed back onto the stream by ungetc() ... shall
+             be discarded."  */
+
+    /* POSIX does not specify fflush behavior for non-seekable input
+       streams.  Some implementations purge unread data, some return
+       EBADF, some do nothing.  */
+    off_t pos = ftello (stream);
+    if (pos == -1)
+      {
+        errno = EBADF;
+        return EOF;
+      }
+
+    /* Clear the ungetc buffer.  */
+    clear_ungetc_buffer (stream);
+
+    /* To get here, we must be flushing a seekable input stream, so the
+       semantics of fpurge are now appropriate to clear the buffer.  To
+       avoid losing data, the lseek is also necessary.  */
+    {
+      int result = fpurge (stream);
+      if (result != 0)
+        return result;
+    }
+
+# if (defined __sferror || defined __DragonFly__) && defined __SNPT /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */
+
+    {
+      /* Disable seek optimization for the next fseeko call.  This tells the
+         following fseeko call to seek to the desired position directly, rather
+         than to seek to a block-aligned boundary.  */
+      int saved_flags = disable_seek_optimization (stream);
+      int result = fseeko (stream, pos, SEEK_SET);
+
+      restore_seek_optimization (stream, saved_flags);
+      return result;
+    }
+
+# else
+
+    pos = lseek (fileno (stream), pos, SEEK_SET);
+    if (pos == -1)
+      return EOF;
+    /* After a successful lseek, update the file descriptor's position cache
+       in the stream.  */
+    update_fpos_cache (stream, pos);
+
+    return 0;
+
+# endif
+  }
+#endif
+}
diff --git a/lib/fpending.c b/lib/fpending.c
new file mode 100644 (file)
index 0000000..5ec38cb
--- /dev/null
@@ -0,0 +1,30 @@
+/* fpending.c -- return the number of pending output bytes on a stream
+   Copyright (C) 2000, 2004, 2006-2007, 2009-2011 Free Software Foundation,
+   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; 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 <http://www.gnu.org/licenses/>.  */
+
+/* Written by Jim Meyering. */
+
+#include <config.h>
+
+#include "fpending.h"
+
+/* Return the number of pending (aka buffered, unflushed)
+   bytes on the stream, FP, that is open for writing.  */
+size_t
+__fpending (FILE *fp)
+{
+  return PENDING_OUTPUT_N_BYTES;
+}
diff --git a/lib/fpending.h b/lib/fpending.h
new file mode 100644 (file)
index 0000000..d7994f7
--- /dev/null
@@ -0,0 +1,34 @@
+/* Declare __fpending.
+
+   Copyright (C) 2000, 2003, 2005-2006, 2009-2011 Free Software Foundation,
+   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; 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 <http://www.gnu.org/licenses/>.
+
+   Written by Jim Meyering.  */
+
+#include <stddef.h>
+#include <stdio.h>
+
+#ifndef HAVE_DECL___FPENDING
+"this configure-time declaration test was not run"
+#endif
+
+#if HAVE_DECL___FPENDING
+# if HAVE_STDIO_EXT_H
+#  include <stdio_ext.h>
+# endif
+#else
+size_t __fpending (FILE *);
+#endif
diff --git a/lib/fpurge.c b/lib/fpurge.c
new file mode 100644 (file)
index 0000000..7e69fb4
--- /dev/null
@@ -0,0 +1,137 @@
+/* Flushing buffers of a FILE stream.
+   Copyright (C) 2007-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include <stdio.h>
+
+#if HAVE___FPURGE                   /* glibc >= 2.2, Haiku, Solaris >= 7 */
+# include <stdio_ext.h>
+#endif
+#include <stdlib.h>
+
+#include "stdio-impl.h"
+
+int
+fpurge (FILE *fp)
+{
+#if HAVE___FPURGE                   /* glibc >= 2.2, Haiku, Solaris >= 7 */
+
+  __fpurge (fp);
+  /* The __fpurge function does not have a return value.  */
+  return 0;
+
+#elif HAVE_FPURGE                   /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin 1.7 */
+
+  /* Call the system's fpurge function.  */
+# undef fpurge
+# if !HAVE_DECL_FPURGE
+  extern int fpurge (FILE *);
+# endif
+  int result = fpurge (fp);
+# if defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */
+  if (result == 0)
+    /* Correct the invariants that fpurge broke.
+       <stdio.h> on BSD systems says:
+         "The following always hold: if _flags & __SRD, _w is 0."
+       If this invariant is not fulfilled and the stream is read-write but
+       currently reading, subsequent putc or fputc calls will write directly
+       into the buffer, although they shouldn't be allowed to.  */
+    if ((fp_->_flags & __SRD) != 0)
+      fp_->_w = 0;
+# endif
+  return result;
+
+#else
+
+  /* Most systems provide FILE as a struct and the necessary bitmask in
+     <stdio.h>, because they need it for implementing getc() and putc() as
+     fast macros.  */
+# if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
+  fp->_IO_read_end = fp->_IO_read_ptr;
+  fp->_IO_write_ptr = fp->_IO_write_base;
+  /* Avoid memory leak when there is an active ungetc buffer.  */
+  if (fp->_IO_save_base != NULL)
+    {
+      free (fp->_IO_save_base);
+      fp->_IO_save_base = NULL;
+    }
+  return 0;
+# elif defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */
+  fp_->_p = fp_->_bf._base;
+  fp_->_r = 0;
+  fp_->_w = ((fp_->_flags & (__SLBF | __SNBF | __SRD)) == 0 /* fully buffered and not currently reading? */
+             ? fp_->_bf._size
+             : 0);
+  /* Avoid memory leak when there is an active ungetc buffer.  */
+  if (fp_ub._base != NULL)
+    {
+      if (fp_ub._base != fp_->_ubuf)
+        free (fp_ub._base);
+      fp_ub._base = NULL;
+    }
+  return 0;
+# elif defined __EMX__              /* emx+gcc */
+  fp->_ptr = fp->_buffer;
+  fp->_rcount = 0;
+  fp->_wcount = 0;
+  fp->_ungetc_count = 0;
+  return 0;
+# elif defined _IOERR               /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, NonStop Kernel */
+  fp->_ptr = fp->_base;
+  if (fp->_ptr != NULL)
+    fp->_cnt = 0;
+  return 0;
+# elif defined __UCLIBC__           /* uClibc */
+#  ifdef __STDIO_BUFFERS
+  if (fp->__modeflags & __FLAG_WRITING)
+    fp->__bufpos = fp->__bufstart;
+  else if (fp->__modeflags & (__FLAG_READONLY | __FLAG_READING))
+    fp->__bufpos = fp->__bufread;
+#  endif
+  return 0;
+# elif defined __QNX__              /* QNX */
+  fp->_Rback = fp->_Back + sizeof (fp->_Back);
+  fp->_Rsave = NULL;
+  if (fp->_Mode & 0x2000 /* _MWRITE */)
+    /* fp->_Buf <= fp->_Next <= fp->_Wend */
+    fp->_Next = fp->_Buf;
+  else
+    /* fp->_Buf <= fp->_Next <= fp->_Rend */
+    fp->_Rend = fp->_Next;
+  return 0;
+# elif defined __MINT__             /* Atari FreeMiNT */
+  if (fp->__pushed_back)
+    {
+      fp->__bufp = fp->__pushback_bufp;
+      fp->__pushed_back = 0;
+    }
+  /* Preserve the current file position.  */
+  if (fp->__target != -1)
+    fp->__target += fp->__bufp - fp->__buffer;
+  fp->__bufp = fp->__buffer;
+  /* Nothing in the buffer, next getc is nontrivial.  */
+  fp->__get_limit = fp->__bufp;
+  /* Nothing in the buffer, next putc is nontrivial.  */
+  fp->__put_limit = fp->__buffer;
+  return 0;
+# else
+#  error "Please port gnulib fpurge.c to your platform! Look at the definitions of fflush, setvbuf and ungetc on your system, then report this to bug-gnulib."
+# endif
+
+#endif
+}
diff --git a/lib/freading.c b/lib/freading.c
new file mode 100644 (file)
index 0000000..51aed0e
--- /dev/null
@@ -0,0 +1,68 @@
+/* Retrieve information about a FILE stream.
+   Copyright (C) 2007-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include "freading.h"
+
+#include "stdio-impl.h"
+
+/* Don't use glibc's __freading function in glibc < 2.7, see
+   <http://sourceware.org/bugzilla/show_bug.cgi?id=4359>  */
+#if !(HAVE___FREADING && (!defined __GLIBC__ || defined __UCLIBC__ || __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 7)))
+
+bool
+freading (FILE *fp)
+{
+  /* Most systems provide FILE as a struct and the necessary bitmask in
+     <stdio.h>, because they need it for implementing getc() and putc() as
+     fast macros.  */
+# if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
+  return ((fp->_flags & _IO_NO_WRITES) != 0
+          || ((fp->_flags & (_IO_NO_READS | _IO_CURRENTLY_PUTTING)) == 0
+              && fp->_IO_read_base != NULL));
+# elif defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */
+  return (fp_->_flags & __SRD) != 0;
+# elif defined __EMX__               /* emx+gcc */
+  return (fp->_flags & _IOREAD) != 0;
+# elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, NonStop Kernel */
+#  if defined __sun                  /* Solaris */
+  return (fp->_flag & _IOREAD) != 0 && (fp->_flag & _IOWRT) == 0;
+#  else
+  return (fp->_flag & _IOREAD) != 0;
+#  endif
+# elif defined __UCLIBC__            /* uClibc */
+  return (fp->__modeflags & (__FLAG_READONLY | __FLAG_READING)) != 0;
+# elif defined __QNX__               /* QNX */
+  return ((fp->_Mode & 0x2 /* _MOPENW */) == 0
+          || (fp->_Mode & 0x1000 /* _MREAD */) != 0);
+# elif defined __MINT__              /* Atari FreeMiNT */
+  if (!fp->__mode.__write)
+    return 1;
+  if (!fp->__mode.__read)
+    return 0;
+#  ifdef _IO_CURRENTLY_GETTING /* Flag added on 2009-02-28 */
+  return (fp->__flags & _IO_CURRENTLY_GETTING) != 0;
+#  else
+  return (fp->__buffer < fp->__get_limit /*|| fp->__bufp == fp->__put_limit ??*/);
+#  endif
+# else
+#  error "Please port gnulib freading.c to your platform!"
+# endif
+}
+
+#endif
diff --git a/lib/freading.h b/lib/freading.h
new file mode 100644 (file)
index 0000000..a19aea6
--- /dev/null
@@ -0,0 +1,53 @@
+/* Retrieve information about a FILE stream.
+   Copyright (C) 2007-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+#include <stdbool.h>
+#include <stdio.h>
+
+/* Return true if the stream STREAM is opened read-only, or if the
+   last operation on the stream was a read operation.  Return false if
+   the stream is opened write-only or append-only, or if it supports
+   writing and there is no current read operation (such as fgetc).
+
+   freading and fwriting will never both be true.  If STREAM supports
+   both reads and writes, then:
+     - both freading and fwriting might be false when the stream is first
+       opened, after read encounters EOF, or after fflush,
+     - freading might be false or true and fwriting might be false
+       after repositioning (such as fseek, fsetpos, or rewind),
+   depending on the underlying implementation.
+
+   STREAM must not be wide-character oriented.  */
+
+#if HAVE___FREADING && (!defined __GLIBC__ || defined __UCLIBC__ || __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 7))
+/* Solaris >= 7, not glibc >= 2.2, but glibc >= 2.7  */
+
+# include <stdio_ext.h>
+# define freading(stream) (__freading (stream) != 0)
+
+#else
+
+# ifdef __cplusplus
+extern "C" {
+# endif
+
+extern bool freading (FILE *stream);
+
+# ifdef __cplusplus
+}
+# endif
+
+#endif
diff --git a/lib/fseeko.c b/lib/fseeko.c
new file mode 100644 (file)
index 0000000..93e400d
--- /dev/null
@@ -0,0 +1,148 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* An fseeko() function that, together with fflush(), is POSIX compliant.
+   Copyright (C) 2007-2011 Free Software Foundation, 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; either version 3, 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.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include <stdio.h>
+
+/* Get off_t and lseek.  */
+#include <unistd.h>
+
+#include "stdio-impl.h"
+
+int
+fseeko (FILE *fp, off_t offset, int whence)
+#undef fseeko
+#if !HAVE_FSEEKO
+# undef fseek
+# define fseeko fseek
+#endif
+{
+#if LSEEK_PIPE_BROKEN
+  /* mingw gives bogus answers rather than failure on non-seekable files.  */
+  if (lseek (fileno (fp), 0, SEEK_CUR) == -1)
+    return EOF;
+#endif
+
+  /* These tests are based on fpurge.c.  */
+#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
+  if (fp->_IO_read_end == fp->_IO_read_ptr
+      && fp->_IO_write_ptr == fp->_IO_write_base
+      && fp->_IO_save_base == NULL)
+#elif defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */
+# if defined __SL64 && defined __SCLE /* Cygwin */
+  if ((fp->_flags & __SL64) == 0)
+    {
+      /* Cygwin 1.5.0 through 1.5.24 failed to open stdin in 64-bit
+         mode; but has an fseeko that requires 64-bit mode.  */
+      FILE *tmp = fopen ("/dev/null", "r");
+      if (!tmp)
+        return -1;
+      fp->_flags |= __SL64;
+      fp->_seek64 = tmp->_seek64;
+      fclose (tmp);
+    }
+# endif
+  if (fp_->_p == fp_->_bf._base
+      && fp_->_r == 0
+      && fp_->_w == ((fp_->_flags & (__SLBF | __SNBF | __SRD)) == 0 /* fully buffered and not currently reading? */
+                     ? fp_->_bf._size
+                     : 0)
+      && fp_ub._base == NULL)
+#elif defined __EMX__               /* emx+gcc */
+  if (fp->_ptr == fp->_buffer
+      && fp->_rcount == 0
+      && fp->_wcount == 0
+      && fp->_ungetc_count == 0)
+#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, NonStop Kernel */
+  if (fp_->_ptr == fp_->_base
+      && (fp_->_ptr == NULL || fp_->_cnt == 0))
+#elif defined __UCLIBC__            /* uClibc */
+  if (((fp->__modeflags & __FLAG_WRITING) == 0
+       || fp->__bufpos == fp->__bufstart)
+      && ((fp->__modeflags & (__FLAG_READONLY | __FLAG_READING)) == 0
+          || fp->__bufpos == fp->__bufread))
+#elif defined __QNX__               /* QNX */
+  if ((fp->_Mode & 0x2000 /* _MWRITE */ ? fp->_Next == fp->_Buf : fp->_Next == fp->_Rend)
+      && fp->_Rback == fp->_Back + sizeof (fp->_Back)
+      && fp->_Rsave == NULL)
+#elif defined __MINT__              /* Atari FreeMiNT */
+  if (fp->__bufp == fp->__buffer
+      && fp->__get_limit == fp->__bufp
+      && fp->__put_limit == fp->__bufp
+      && !fp->__pushed_back)
+#else
+  #error "Please port gnulib fseeko.c to your platform! Look at the code in fpurge.c, then report this to bug-gnulib."
+#endif
+    {
+      /* We get here when an fflush() call immediately preceded this one.  We
+         know there are no buffers.
+         POSIX requires us to modify the file descriptor's position.
+         But we cannot position beyond end of file here.  */
+      off_t pos =
+        lseek (fileno (fp),
+               whence == SEEK_END && offset > 0 ? 0 : offset,
+               whence);
+      if (pos == -1)
+        {
+#if defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */
+          fp_->_flags &= ~__SOFF;
+#endif
+          return -1;
+        }
+
+#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
+      fp->_flags &= ~_IO_EOF_SEEN;
+#elif defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */
+# if defined __CYGWIN__
+      /* fp_->_offset is typed as an integer.  */
+      fp_->_offset = pos;
+# else
+      /* fp_->_offset is an fpos_t.  */
+      {
+        /* Use a union, since on NetBSD, the compilation flags
+           determine whether fpos_t is typedef'd to off_t or a struct
+           containing a single off_t member.  */
+        union
+          {
+            fpos_t f;
+            off_t o;
+          } u;
+        u.o = pos;
+        fp_->_offset = u.f;
+      }
+# endif
+      fp_->_flags |= __SOFF;
+      fp_->_flags &= ~__SEOF;
+#elif defined __EMX__               /* emx+gcc */
+      fp->_flags &= ~_IOEOF;
+#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, NonStop Kernel */
+      fp->_flag &= ~_IOEOF;
+#elif defined __MINT__              /* Atari FreeMiNT */
+      fp->__offset = pos;
+      fp->__eof = 0;
+#endif
+      /* If we were not requested to position beyond end of file, we're
+         done.  */
+      if (!(whence == SEEK_END && offset > 0))
+        return 0;
+    }
+  return fseeko (fp, offset, whence);
+}
diff --git a/lib/fsync.c b/lib/fsync.c
new file mode 100644 (file)
index 0000000..2271778
--- /dev/null
@@ -0,0 +1,80 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Emulate fsync on platforms that lack it, primarily Windows and
+   cross-compilers like MinGW.
+
+   This is derived from sqlite3 sources.
+   http://www.sqlite.org/cvstrac/rlog?f=sqlite/src/os_win.c
+   http://www.sqlite.org/copyright.html
+
+   Written by Richard W.M. Jones <rjones.at.redhat.com>
+
+   Copyright (C) 2008-2011 Free Software Foundation, Inc.
+
+   This library 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 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
+   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 <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+#include <unistd.h>
+
+#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+
+/* _get_osfhandle */
+# include <io.h>
+
+/* FlushFileBuffers */
+# define WIN32_LEAN_AND_MEAN
+# include <windows.h>
+
+# include <errno.h>
+
+int
+fsync (int fd)
+{
+  HANDLE h = (HANDLE) _get_osfhandle (fd);
+  DWORD err;
+
+  if (h == INVALID_HANDLE_VALUE)
+    {
+      errno = EBADF;
+      return -1;
+    }
+
+  if (!FlushFileBuffers (h))
+    {
+      /* Translate some Windows errors into rough approximations of Unix
+       * errors.  MSDN is useless as usual - in this case it doesn't
+       * document the full range of errors.
+       */
+      err = GetLastError ();
+      switch (err)
+        {
+          /* eg. Trying to fsync a tty. */
+        case ERROR_INVALID_HANDLE:
+          errno = EINVAL;
+          break;
+
+        default:
+          errno = EIO;
+        }
+      return -1;
+    }
+
+  return 0;
+}
+
+#else /* !Windows */
+
+# error "This platform lacks fsync function, and Gnulib doesn't provide a replacement. This is a bug in Gnulib."
+
+#endif /* !Windows */
diff --git a/lib/ftello.c b/lib/ftello.c
new file mode 100644 (file)
index 0000000..fbdc44f
--- /dev/null
@@ -0,0 +1,77 @@
+/* An ftello() function that works around platform bugs.
+   Copyright (C) 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include <stdio.h>
+
+/* Get lseek.  */
+#include <unistd.h>
+
+#include "stdio-impl.h"
+
+off_t
+ftello (FILE *fp)
+#undef ftello
+#if !HAVE_FTELLO
+# undef ftell
+# define ftello ftell
+#endif
+{
+#if LSEEK_PIPE_BROKEN
+  /* mingw gives bogus answers rather than failure on non-seekable files.  */
+  if (lseek (fileno (fp), 0, SEEK_CUR) == -1)
+    return -1;
+#endif
+
+#if FTELLO_BROKEN_AFTER_SWITCHING_FROM_READ_TO_WRITE /* Solaris */
+  /* The Solaris stdio leaves the _IOREAD flag set after reading from a file
+     reaches EOF and the program then starts writing to the file.  ftello
+     gets confused by this.  */
+  if (fp_->_flag & _IOWRT)
+    {
+      off_t pos;
+
+      /* Call ftello nevertheless, for the side effects that it does on fp.  */
+      ftello (fp);
+
+      /* Compute the file position ourselves.  */
+      pos = lseek (fileno (fp), (off_t) 0, SEEK_CUR);
+      if (pos >= 0)
+        {
+          if ((fp_->_flag & _IONBF) == 0 && fp_->_base != NULL)
+            pos += fp_->_ptr - fp_->_base;
+        }
+      return pos;
+    }
+#endif
+
+#if defined __SL64 && defined __SCLE /* Cygwin */
+  if ((fp->_flags & __SL64) == 0)
+    {
+      /* Cygwin 1.5.0 through 1.5.24 failed to open stdin in 64-bit
+         mode; but has an ftello that requires 64-bit mode.  */
+      FILE *tmp = fopen ("/dev/null", "r");
+      if (!tmp)
+        return -1;
+      fp->_flags |= __SL64;
+      fp->_seek64 = tmp->_seek64;
+      fclose (tmp);
+    }
+#endif
+  return ftello (fp);
+}
diff --git a/lib/getopt.c b/lib/getopt.c
new file mode 100644 (file)
index 0000000..ee96d97
--- /dev/null
@@ -0,0 +1,1241 @@
+/* Getopt for GNU.
+   NOTE: getopt is part of the C library, so if you don't know what
+   "Keep this file name-space clean" means, talk to drepper@gnu.org
+   before changing it!
+   Copyright (C) 1987-1996, 1998-2004, 2006, 2008-2011 Free Software
+   Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   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 <http://www.gnu.org/licenses/>.  */
+\f
+#ifndef _LIBC
+# include <config.h>
+#endif
+
+#include "getopt.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#ifdef _LIBC
+# include <libintl.h>
+#else
+# include "gettext.h"
+# define _(msgid) gettext (msgid)
+#endif
+
+#if defined _LIBC && defined USE_IN_LIBIO
+# include <wchar.h>
+#endif
+
+/* This version of `getopt' appears to the caller like standard Unix `getopt'
+   but it behaves differently for the user, since it allows the user
+   to intersperse the options with the other arguments.
+
+   As `getopt_long' works, it permutes the elements of ARGV so that,
+   when it is done, all the options precede everything else.  Thus
+   all application programs are extended to handle flexible argument order.
+
+   Using `getopt' or setting the environment variable POSIXLY_CORRECT
+   disables permutation.
+   Then the behavior is completely standard.
+
+   GNU application programs can use a third alternative mode in which
+   they can distinguish the relative order of options and other arguments.  */
+
+#include "getopt_int.h"
+
+/* For communication from `getopt' to the caller.
+   When `getopt' finds an option that takes an argument,
+   the argument value is returned here.
+   Also, when `ordering' is RETURN_IN_ORDER,
+   each non-option ARGV-element is returned here.  */
+
+char *optarg;
+
+/* Index in ARGV of the next element to be scanned.
+   This is used for communication to and from the caller
+   and for communication between successive calls to `getopt'.
+
+   On entry to `getopt', zero means this is the first call; initialize.
+
+   When `getopt' returns -1, this is the index of the first of the
+   non-option elements that the caller should itself scan.
+
+   Otherwise, `optind' communicates from one call to the next
+   how much of ARGV has been scanned so far.  */
+
+/* 1003.2 says this must be 1 before any call.  */
+int optind = 1;
+
+/* Callers store zero here to inhibit the error message
+   for unrecognized options.  */
+
+int opterr = 1;
+
+/* Set to an option character which was unrecognized.
+   This must be initialized on some systems to avoid linking in the
+   system's own getopt implementation.  */
+
+int optopt = '?';
+
+/* Keep a global copy of all internal members of getopt_data.  */
+
+static struct _getopt_data getopt_data;
+
+\f
+#if defined HAVE_DECL_GETENV && !HAVE_DECL_GETENV
+extern char *getenv ();
+#endif
+\f
+#ifdef _LIBC
+/* Stored original parameters.
+   XXX This is no good solution.  We should rather copy the args so
+   that we can compare them later.  But we must not use malloc(3).  */
+extern int __libc_argc;
+extern char **__libc_argv;
+
+/* Bash 2.0 gives us an environment variable containing flags
+   indicating ARGV elements that should not be considered arguments.  */
+
+# ifdef USE_NONOPTION_FLAGS
+/* Defined in getopt_init.c  */
+extern char *__getopt_nonoption_flags;
+# endif
+
+# ifdef USE_NONOPTION_FLAGS
+#  define SWAP_FLAGS(ch1, ch2) \
+  if (d->__nonoption_flags_len > 0)                                           \
+    {                                                                         \
+      char __tmp = __getopt_nonoption_flags[ch1];                             \
+      __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2];          \
+      __getopt_nonoption_flags[ch2] = __tmp;                                  \
+    }
+# else
+#  define SWAP_FLAGS(ch1, ch2)
+# endif
+#else   /* !_LIBC */
+# define SWAP_FLAGS(ch1, ch2)
+#endif  /* _LIBC */
+
+/* Exchange two adjacent subsequences of ARGV.
+   One subsequence is elements [first_nonopt,last_nonopt)
+   which contains all the non-options that have been skipped so far.
+   The other is elements [last_nonopt,optind), which contains all
+   the options processed since those non-options were skipped.
+
+   `first_nonopt' and `last_nonopt' are relocated so that they describe
+   the new indices of the non-options in ARGV after they are moved.  */
+
+static void
+exchange (char **argv, struct _getopt_data *d)
+{
+  int bottom = d->__first_nonopt;
+  int middle = d->__last_nonopt;
+  int top = d->optind;
+  char *tem;
+
+  /* Exchange the shorter segment with the far end of the longer segment.
+     That puts the shorter segment into the right place.
+     It leaves the longer segment in the right place overall,
+     but it consists of two parts that need to be swapped next.  */
+
+#if defined _LIBC && defined USE_NONOPTION_FLAGS
+  /* First make sure the handling of the `__getopt_nonoption_flags'
+     string can work normally.  Our top argument must be in the range
+     of the string.  */
+  if (d->__nonoption_flags_len > 0 && top >= d->__nonoption_flags_max_len)
+    {
+      /* We must extend the array.  The user plays games with us and
+         presents new arguments.  */
+      char *new_str = malloc (top + 1);
+      if (new_str == NULL)
+        d->__nonoption_flags_len = d->__nonoption_flags_max_len = 0;
+      else
+        {
+          memset (__mempcpy (new_str, __getopt_nonoption_flags,
+                             d->__nonoption_flags_max_len),
+                  '\0', top + 1 - d->__nonoption_flags_max_len);
+          d->__nonoption_flags_max_len = top + 1;
+          __getopt_nonoption_flags = new_str;
+        }
+    }
+#endif
+
+  while (top > middle && middle > bottom)
+    {
+      if (top - middle > middle - bottom)
+        {
+          /* Bottom segment is the short one.  */
+          int len = middle - bottom;
+          register int i;
+
+          /* Swap it with the top part of the top segment.  */
+          for (i = 0; i < len; i++)
+            {
+              tem = argv[bottom + i];
+              argv[bottom + i] = argv[top - (middle - bottom) + i];
+              argv[top - (middle - bottom) + i] = tem;
+              SWAP_FLAGS (bottom + i, top - (middle - bottom) + i);
+            }
+          /* Exclude the moved bottom segment from further swapping.  */
+          top -= len;
+        }
+      else
+        {
+          /* Top segment is the short one.  */
+          int len = top - middle;
+          register int i;
+
+          /* Swap it with the bottom part of the bottom segment.  */
+          for (i = 0; i < len; i++)
+            {
+              tem = argv[bottom + i];
+              argv[bottom + i] = argv[middle + i];
+              argv[middle + i] = tem;
+              SWAP_FLAGS (bottom + i, middle + i);
+            }
+          /* Exclude the moved top segment from further swapping.  */
+          bottom += len;
+        }
+    }
+
+  /* Update records for the slots the non-options now occupy.  */
+
+  d->__first_nonopt += (d->optind - d->__last_nonopt);
+  d->__last_nonopt = d->optind;
+}
+
+/* Initialize the internal data when the first call is made.  */
+
+static const char *
+_getopt_initialize (int argc _GL_UNUSED,
+                    char **argv _GL_UNUSED, const char *optstring,
+                    struct _getopt_data *d, int posixly_correct)
+{
+  /* Start processing options with ARGV-element 1 (since ARGV-element 0
+     is the program name); the sequence of previously skipped
+     non-option ARGV-elements is empty.  */
+
+  d->__first_nonopt = d->__last_nonopt = d->optind;
+
+  d->__nextchar = NULL;
+
+  d->__posixly_correct = posixly_correct || !!getenv ("POSIXLY_CORRECT");
+
+  /* Determine how to handle the ordering of options and nonoptions.  */
+
+  if (optstring[0] == '-')
+    {
+      d->__ordering = RETURN_IN_ORDER;
+      ++optstring;
+    }
+  else if (optstring[0] == '+')
+    {
+      d->__ordering = REQUIRE_ORDER;
+      ++optstring;
+    }
+  else if (d->__posixly_correct)
+    d->__ordering = REQUIRE_ORDER;
+  else
+    d->__ordering = PERMUTE;
+
+#if defined _LIBC && defined USE_NONOPTION_FLAGS
+  if (!d->__posixly_correct
+      && argc == __libc_argc && argv == __libc_argv)
+    {
+      if (d->__nonoption_flags_max_len == 0)
+        {
+          if (__getopt_nonoption_flags == NULL
+              || __getopt_nonoption_flags[0] == '\0')
+            d->__nonoption_flags_max_len = -1;
+          else
+            {
+              const char *orig_str = __getopt_nonoption_flags;
+              int len = d->__nonoption_flags_max_len = strlen (orig_str);
+              if (d->__nonoption_flags_max_len < argc)
+                d->__nonoption_flags_max_len = argc;
+              __getopt_nonoption_flags =
+                (char *) malloc (d->__nonoption_flags_max_len);
+              if (__getopt_nonoption_flags == NULL)
+                d->__nonoption_flags_max_len = -1;
+              else
+                memset (__mempcpy (__getopt_nonoption_flags, orig_str, len),
+                        '\0', d->__nonoption_flags_max_len - len);
+            }
+        }
+      d->__nonoption_flags_len = d->__nonoption_flags_max_len;
+    }
+  else
+    d->__nonoption_flags_len = 0;
+#endif
+
+  return optstring;
+}
+\f
+/* Scan elements of ARGV (whose length is ARGC) for option characters
+   given in OPTSTRING.
+
+   If an element of ARGV starts with '-', and is not exactly "-" or "--",
+   then it is an option element.  The characters of this element
+   (aside from the initial '-') are option characters.  If `getopt'
+   is called repeatedly, it returns successively each of the option characters
+   from each of the option elements.
+
+   If `getopt' finds another option character, it returns that character,
+   updating `optind' and `nextchar' so that the next call to `getopt' can
+   resume the scan with the following option character or ARGV-element.
+
+   If there are no more option characters, `getopt' returns -1.
+   Then `optind' is the index in ARGV of the first ARGV-element
+   that is not an option.  (The ARGV-elements have been permuted
+   so that those that are not options now come last.)
+
+   OPTSTRING is a string containing the legitimate option characters.
+   If an option character is seen that is not listed in OPTSTRING,
+   return '?' after printing an error message.  If you set `opterr' to
+   zero, the error message is suppressed but we still return '?'.
+
+   If a char in OPTSTRING is followed by a colon, that means it wants an arg,
+   so the following text in the same ARGV-element, or the text of the following
+   ARGV-element, is returned in `optarg'.  Two colons mean an option that
+   wants an optional arg; if there is text in the current ARGV-element,
+   it is returned in `optarg', otherwise `optarg' is set to zero.
+
+   If OPTSTRING starts with `-' or `+', it requests different methods of
+   handling the non-option ARGV-elements.
+   See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above.
+
+   Long-named options begin with `--' instead of `-'.
+   Their names may be abbreviated as long as the abbreviation is unique
+   or is an exact match for some defined option.  If they have an
+   argument, it follows the option name in the same ARGV-element, separated
+   from the option name by a `=', or else the in next ARGV-element.
+   When `getopt' finds a long-named option, it returns 0 if that option's
+   `flag' field is nonzero, the value of the option's `val' field
+   if the `flag' field is zero.
+
+   The elements of ARGV aren't really const, because we permute them.
+   But we pretend they're const in the prototype to be compatible
+   with other systems.
+
+   LONGOPTS is a vector of `struct option' terminated by an
+   element containing a name which is zero.
+
+   LONGIND returns the index in LONGOPT of the long-named option found.
+   It is only valid when a long-named option has been found by the most
+   recent call.
+
+   If LONG_ONLY is nonzero, '-' as well as '--' can introduce
+   long-named options.  */
+
+int
+_getopt_internal_r (int argc, char **argv, const char *optstring,
+                    const struct option *longopts, int *longind,
+                    int long_only, struct _getopt_data *d, int posixly_correct)
+{
+  int print_errors = d->opterr;
+
+  if (argc < 1)
+    return -1;
+
+  d->optarg = NULL;
+
+  if (d->optind == 0 || !d->__initialized)
+    {
+      if (d->optind == 0)
+        d->optind = 1;  /* Don't scan ARGV[0], the program name.  */
+      optstring = _getopt_initialize (argc, argv, optstring, d,
+                                      posixly_correct);
+      d->__initialized = 1;
+    }
+  else if (optstring[0] == '-' || optstring[0] == '+')
+    optstring++;
+  if (optstring[0] == ':')
+    print_errors = 0;
+
+  /* Test whether ARGV[optind] points to a non-option argument.
+     Either it does not have option syntax, or there is an environment flag
+     from the shell indicating it is not an option.  The later information
+     is only used when the used in the GNU libc.  */
+#if defined _LIBC && defined USE_NONOPTION_FLAGS
+# define NONOPTION_P (argv[d->optind][0] != '-' || argv[d->optind][1] == '\0' \
+                      || (d->optind < d->__nonoption_flags_len                \
+                          && __getopt_nonoption_flags[d->optind] == '1'))
+#else
+# define NONOPTION_P (argv[d->optind][0] != '-' || argv[d->optind][1] == '\0')
+#endif
+
+  if (d->__nextchar == NULL || *d->__nextchar == '\0')
+    {
+      /* Advance to the next ARGV-element.  */
+
+      /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been
+         moved back by the user (who may also have changed the arguments).  */
+      if (d->__last_nonopt > d->optind)
+        d->__last_nonopt = d->optind;
+      if (d->__first_nonopt > d->optind)
+        d->__first_nonopt = d->optind;
+
+      if (d->__ordering == PERMUTE)
+        {
+          /* If we have just processed some options following some non-options,
+             exchange them so that the options come first.  */
+
+          if (d->__first_nonopt != d->__last_nonopt
+              && d->__last_nonopt != d->optind)
+            exchange ((char **) argv, d);
+          else if (d->__last_nonopt != d->optind)
+            d->__first_nonopt = d->optind;
+
+          /* Skip any additional non-options
+             and extend the range of non-options previously skipped.  */
+
+          while (d->optind < argc && NONOPTION_P)
+            d->optind++;
+          d->__last_nonopt = d->optind;
+        }
+
+      /* The special ARGV-element `--' means premature end of options.
+         Skip it like a null option,
+         then exchange with previous non-options as if it were an option,
+         then skip everything else like a non-option.  */
+
+      if (d->optind != argc && !strcmp (argv[d->optind], "--"))
+        {
+          d->optind++;
+
+          if (d->__first_nonopt != d->__last_nonopt
+              && d->__last_nonopt != d->optind)
+            exchange ((char **) argv, d);
+          else if (d->__first_nonopt == d->__last_nonopt)
+            d->__first_nonopt = d->optind;
+          d->__last_nonopt = argc;
+
+          d->optind = argc;
+        }
+
+      /* If we have done all the ARGV-elements, stop the scan
+         and back over any non-options that we skipped and permuted.  */
+
+      if (d->optind == argc)
+        {
+          /* Set the next-arg-index to point at the non-options
+             that we previously skipped, so the caller will digest them.  */
+          if (d->__first_nonopt != d->__last_nonopt)
+            d->optind = d->__first_nonopt;
+          return -1;
+        }
+
+      /* If we have come to a non-option and did not permute it,
+         either stop the scan or describe it to the caller and pass it by.  */
+
+      if (NONOPTION_P)
+        {
+          if (d->__ordering == REQUIRE_ORDER)
+            return -1;
+          d->optarg = argv[d->optind++];
+          return 1;
+        }
+
+      /* We have found another option-ARGV-element.
+         Skip the initial punctuation.  */
+
+      d->__nextchar = (argv[d->optind] + 1
+                  + (longopts != NULL && argv[d->optind][1] == '-'));
+    }
+
+  /* Decode the current option-ARGV-element.  */
+
+  /* Check whether the ARGV-element is a long option.
+
+     If long_only and the ARGV-element has the form "-f", where f is
+     a valid short option, don't consider it an abbreviated form of
+     a long option that starts with f.  Otherwise there would be no
+     way to give the -f short option.
+
+     On the other hand, if there's a long option "fubar" and
+     the ARGV-element is "-fu", do consider that an abbreviation of
+     the long option, just like "--fu", and not "-f" with arg "u".
+
+     This distinction seems to be the most useful approach.  */
+
+  if (longopts != NULL
+      && (argv[d->optind][1] == '-'
+          || (long_only && (argv[d->optind][2]
+                            || !strchr (optstring, argv[d->optind][1])))))
+    {
+      char *nameend;
+      unsigned int namelen;
+      const struct option *p;
+      const struct option *pfound = NULL;
+      struct option_list
+      {
+        const struct option *p;
+        struct option_list *next;
+      } *ambig_list = NULL;
+      int exact = 0;
+      int ambig = 0;
+      int indfound = -1;
+      int option_index;
+
+      for (nameend = d->__nextchar; *nameend && *nameend != '='; nameend++)
+        /* Do nothing.  */ ;
+      namelen = nameend - d->__nextchar;
+
+      /* Test all long options for either exact match
+         or abbreviated matches.  */
+      for (p = longopts, option_index = 0; p->name; p++, option_index++)
+        if (!strncmp (p->name, d->__nextchar, namelen))
+          {
+            if (namelen == (unsigned int) strlen (p->name))
+              {
+                /* Exact match found.  */
+                pfound = p;
+                indfound = option_index;
+                exact = 1;
+                break;
+              }
+            else if (pfound == NULL)
+              {
+                /* First nonexact match found.  */
+                pfound = p;
+                indfound = option_index;
+              }
+            else if (long_only
+                     || pfound->has_arg != p->has_arg
+                     || pfound->flag != p->flag
+                     || pfound->val != p->val)
+              {
+                /* Second or later nonexact match found.  */
+                struct option_list *newp = malloc (sizeof (*newp));
+                newp->p = p;
+                newp->next = ambig_list;
+                ambig_list = newp;
+              }
+          }
+
+      if (ambig_list != NULL && !exact)
+        {
+          if (print_errors)
+            {
+              struct option_list first;
+              first.p = pfound;
+              first.next = ambig_list;
+              ambig_list = &first;
+
+#if defined _LIBC && defined USE_IN_LIBIO
+              char *buf = NULL;
+              size_t buflen = 0;
+
+              FILE *fp = open_memstream (&buf, &buflen);
+              if (fp != NULL)
+                {
+                  fprintf (fp,
+                           _("%s: option '%s' is ambiguous; possibilities:"),
+                           argv[0], argv[d->optind]);
+
+                  do
+                    {
+                      fprintf (fp, " '--%s'", ambig_list->p->name);
+                      ambig_list = ambig_list->next;
+                    }
+                  while (ambig_list != NULL);
+
+                  fputc_unlocked ('\n', fp);
+
+                  if (__builtin_expect (fclose (fp) != EOF, 1))
+                    {
+                      _IO_flockfile (stderr);
+
+                      int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+                      ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+
+                      __fxprintf (NULL, "%s", buf);
+
+                      ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+                      _IO_funlockfile (stderr);
+
+                      free (buf);
+                    }
+                }
+#else
+              fprintf (stderr,
+                       _("%s: option '%s' is ambiguous; possibilities:"),
+                       argv[0], argv[d->optind]);
+              do
+                {
+                  fprintf (stderr, " '--%s'", ambig_list->p->name);
+                  ambig_list = ambig_list->next;
+                }
+              while (ambig_list != NULL);
+
+              fputc ('\n', stderr);
+#endif
+            }
+          d->__nextchar += strlen (d->__nextchar);
+          d->optind++;
+          d->optopt = 0;
+          return '?';
+        }
+
+      while (ambig_list != NULL)
+        {
+          struct option_list *pn = ambig_list->next;
+          free (ambig_list);
+          ambig_list = pn;
+        }
+
+      if (pfound != NULL)
+        {
+          option_index = indfound;
+          d->optind++;
+          if (*nameend)
+            {
+              /* Don't test has_arg with >, because some C compilers don't
+                 allow it to be used on enums.  */
+              if (pfound->has_arg)
+                d->optarg = nameend + 1;
+              else
+                {
+                  if (print_errors)
+                    {
+#if defined _LIBC && defined USE_IN_LIBIO
+                      char *buf;
+                      int n;
+#endif
+
+                      if (argv[d->optind - 1][1] == '-')
+                        {
+                          /* --option */
+#if defined _LIBC && defined USE_IN_LIBIO
+                          n = __asprintf (&buf, _("\
+%s: option '--%s' doesn't allow an argument\n"),
+                                          argv[0], pfound->name);
+#else
+                          fprintf (stderr, _("\
+%s: option '--%s' doesn't allow an argument\n"),
+                                   argv[0], pfound->name);
+#endif
+                        }
+                      else
+                        {
+                          /* +option or -option */
+#if defined _LIBC && defined USE_IN_LIBIO
+                          n = __asprintf (&buf, _("\
+%s: option '%c%s' doesn't allow an argument\n"),
+                                          argv[0], argv[d->optind - 1][0],
+                                          pfound->name);
+#else
+                          fprintf (stderr, _("\
+%s: option '%c%s' doesn't allow an argument\n"),
+                                   argv[0], argv[d->optind - 1][0],
+                                   pfound->name);
+#endif
+                        }
+
+#if defined _LIBC && defined USE_IN_LIBIO
+                      if (n >= 0)
+                        {
+                          _IO_flockfile (stderr);
+
+                          int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+                          ((_IO_FILE *) stderr)->_flags2
+                            |= _IO_FLAGS2_NOTCANCEL;
+
+                          __fxprintf (NULL, "%s", buf);
+
+                          ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+                          _IO_funlockfile (stderr);
+
+                          free (buf);
+                        }
+#endif
+                    }
+
+                  d->__nextchar += strlen (d->__nextchar);
+
+                  d->optopt = pfound->val;
+                  return '?';
+                }
+            }
+          else if (pfound->has_arg == 1)
+            {
+              if (d->optind < argc)
+                d->optarg = argv[d->optind++];
+              else
+                {
+                  if (print_errors)
+                    {
+#if defined _LIBC && defined USE_IN_LIBIO
+                      char *buf;
+
+                      if (__asprintf (&buf, _("\
+%s: option '--%s' requires an argument\n"),
+                                      argv[0], pfound->name) >= 0)
+                        {
+                          _IO_flockfile (stderr);
+
+                          int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+                          ((_IO_FILE *) stderr)->_flags2
+                            |= _IO_FLAGS2_NOTCANCEL;
+
+                          __fxprintf (NULL, "%s", buf);
+
+                          ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+                          _IO_funlockfile (stderr);
+
+                          free (buf);
+                        }
+#else
+                      fprintf (stderr,
+                               _("%s: option '--%s' requires an argument\n"),
+                               argv[0], pfound->name);
+#endif
+                    }
+                  d->__nextchar += strlen (d->__nextchar);
+                  d->optopt = pfound->val;
+                  return optstring[0] == ':' ? ':' : '?';
+                }
+            }
+          d->__nextchar += strlen (d->__nextchar);
+          if (longind != NULL)
+            *longind = option_index;
+          if (pfound->flag)
+            {
+              *(pfound->flag) = pfound->val;
+              return 0;
+            }
+          return pfound->val;
+        }
+
+      /* Can't find it as a long option.  If this is not getopt_long_only,
+         or the option starts with '--' or is not a valid short
+         option, then it's an error.
+         Otherwise interpret it as a short option.  */
+      if (!long_only || argv[d->optind][1] == '-'
+          || strchr (optstring, *d->__nextchar) == NULL)
+        {
+          if (print_errors)
+            {
+#if defined _LIBC && defined USE_IN_LIBIO
+              char *buf;
+              int n;
+#endif
+
+              if (argv[d->optind][1] == '-')
+                {
+                  /* --option */
+#if defined _LIBC && defined USE_IN_LIBIO
+                  n = __asprintf (&buf, _("%s: unrecognized option '--%s'\n"),
+                                  argv[0], d->__nextchar);
+#else
+                  fprintf (stderr, _("%s: unrecognized option '--%s'\n"),
+                           argv[0], d->__nextchar);
+#endif
+                }
+              else
+                {
+                  /* +option or -option */
+#if defined _LIBC && defined USE_IN_LIBIO
+                  n = __asprintf (&buf, _("%s: unrecognized option '%c%s'\n"),
+                                  argv[0], argv[d->optind][0], d->__nextchar);
+#else
+                  fprintf (stderr, _("%s: unrecognized option '%c%s'\n"),
+                           argv[0], argv[d->optind][0], d->__nextchar);
+#endif
+                }
+
+#if defined _LIBC && defined USE_IN_LIBIO
+              if (n >= 0)
+                {
+                  _IO_flockfile (stderr);
+
+                  int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+                  ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+
+                  __fxprintf (NULL, "%s", buf);
+
+                  ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+                  _IO_funlockfile (stderr);
+
+                  free (buf);
+                }
+#endif
+            }
+          d->__nextchar = (char *) "";
+          d->optind++;
+          d->optopt = 0;
+          return '?';
+        }
+    }
+
+  /* Look at and handle the next short option-character.  */
+
+  {
+    char c = *d->__nextchar++;
+    const char *temp = strchr (optstring, c);
+
+    /* Increment `optind' when we start to process its last character.  */
+    if (*d->__nextchar == '\0')
+      ++d->optind;
+
+    if (temp == NULL || c == ':' || c == ';')
+      {
+        if (print_errors)
+          {
+#if defined _LIBC && defined USE_IN_LIBIO
+              char *buf;
+              int n;
+#endif
+
+#if defined _LIBC && defined USE_IN_LIBIO
+              n = __asprintf (&buf, _("%s: invalid option -- '%c'\n"),
+                              argv[0], c);
+#else
+              fprintf (stderr, _("%s: invalid option -- '%c'\n"), argv[0], c);
+#endif
+
+#if defined _LIBC && defined USE_IN_LIBIO
+            if (n >= 0)
+              {
+                _IO_flockfile (stderr);
+
+                int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+                ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+
+                __fxprintf (NULL, "%s", buf);
+
+                ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+                _IO_funlockfile (stderr);
+
+                free (buf);
+              }
+#endif
+          }
+        d->optopt = c;
+        return '?';
+      }
+    /* Convenience. Treat POSIX -W foo same as long option --foo */
+    if (temp[0] == 'W' && temp[1] == ';')
+      {
+        char *nameend;
+        const struct option *p;
+        const struct option *pfound = NULL;
+        int exact = 0;
+        int ambig = 0;
+        int indfound = 0;
+        int option_index;
+
+        /* This is an option that requires an argument.  */
+        if (*d->__nextchar != '\0')
+          {
+            d->optarg = d->__nextchar;
+            /* If we end this ARGV-element by taking the rest as an arg,
+               we must advance to the next element now.  */
+            d->optind++;
+          }
+        else if (d->optind == argc)
+          {
+            if (print_errors)
+              {
+#if defined _LIBC && defined USE_IN_LIBIO
+                char *buf;
+
+                if (__asprintf (&buf,
+                                _("%s: option requires an argument -- '%c'\n"),
+                                argv[0], c) >= 0)
+                  {
+                    _IO_flockfile (stderr);
+
+                    int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+                    ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+
+                    __fxprintf (NULL, "%s", buf);
+
+                    ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+                    _IO_funlockfile (stderr);
+
+                    free (buf);
+                  }
+#else
+                fprintf (stderr,
+                         _("%s: option requires an argument -- '%c'\n"),
+                         argv[0], c);
+#endif
+              }
+            d->optopt = c;
+            if (optstring[0] == ':')
+              c = ':';
+            else
+              c = '?';
+            return c;
+          }
+        else
+          /* We already incremented `d->optind' once;
+             increment it again when taking next ARGV-elt as argument.  */
+          d->optarg = argv[d->optind++];
+
+        /* optarg is now the argument, see if it's in the
+           table of longopts.  */
+
+        for (d->__nextchar = nameend = d->optarg; *nameend && *nameend != '=';
+             nameend++)
+          /* Do nothing.  */ ;
+
+        /* Test all long options for either exact match
+           or abbreviated matches.  */
+        for (p = longopts, option_index = 0; p->name; p++, option_index++)
+          if (!strncmp (p->name, d->__nextchar, nameend - d->__nextchar))
+            {
+              if ((unsigned int) (nameend - d->__nextchar) == strlen (p->name))
+                {
+                  /* Exact match found.  */
+                  pfound = p;
+                  indfound = option_index;
+                  exact = 1;
+                  break;
+                }
+              else if (pfound == NULL)
+                {
+                  /* First nonexact match found.  */
+                  pfound = p;
+                  indfound = option_index;
+                }
+              else if (long_only
+                       || pfound->has_arg != p->has_arg
+                       || pfound->flag != p->flag
+                       || pfound->val != p->val)
+                /* Second or later nonexact match found.  */
+                ambig = 1;
+            }
+        if (ambig && !exact)
+          {
+            if (print_errors)
+              {
+#if defined _LIBC && defined USE_IN_LIBIO
+                char *buf;
+
+                if (__asprintf (&buf, _("%s: option '-W %s' is ambiguous\n"),
+                                argv[0], d->optarg) >= 0)
+                  {
+                    _IO_flockfile (stderr);
+
+                    int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+                    ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+
+                    __fxprintf (NULL, "%s", buf);
+
+                    ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+                    _IO_funlockfile (stderr);
+
+                    free (buf);
+                  }
+#else
+                fprintf (stderr, _("%s: option '-W %s' is ambiguous\n"),
+                         argv[0], d->optarg);
+#endif
+              }
+            d->__nextchar += strlen (d->__nextchar);
+            d->optind++;
+            return '?';
+          }
+        if (pfound != NULL)
+          {
+            option_index = indfound;
+            if (*nameend)
+              {
+                /* Don't test has_arg with >, because some C compilers don't
+                   allow it to be used on enums.  */
+                if (pfound->has_arg)
+                  d->optarg = nameend + 1;
+                else
+                  {
+                    if (print_errors)
+                      {
+#if defined _LIBC && defined USE_IN_LIBIO
+                        char *buf;
+
+                        if (__asprintf (&buf, _("\
+%s: option '-W %s' doesn't allow an argument\n"),
+                                        argv[0], pfound->name) >= 0)
+                          {
+                            _IO_flockfile (stderr);
+
+                            int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+                            ((_IO_FILE *) stderr)->_flags2
+                              |= _IO_FLAGS2_NOTCANCEL;
+
+                            __fxprintf (NULL, "%s", buf);
+
+                            ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+                            _IO_funlockfile (stderr);
+
+                            free (buf);
+                          }
+#else
+                        fprintf (stderr, _("\
+%s: option '-W %s' doesn't allow an argument\n"),
+                                 argv[0], pfound->name);
+#endif
+                      }
+
+                    d->__nextchar += strlen (d->__nextchar);
+                    return '?';
+                  }
+              }
+            else if (pfound->has_arg == 1)
+              {
+                if (d->optind < argc)
+                  d->optarg = argv[d->optind++];
+                else
+                  {
+                    if (print_errors)
+                      {
+#if defined _LIBC && defined USE_IN_LIBIO
+                        char *buf;
+
+                        if (__asprintf (&buf, _("\
+%s: option '-W %s' requires an argument\n"),
+                                        argv[0], pfound->name) >= 0)
+                          {
+                            _IO_flockfile (stderr);
+
+                            int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+                            ((_IO_FILE *) stderr)->_flags2
+                              |= _IO_FLAGS2_NOTCANCEL;
+
+                            __fxprintf (NULL, "%s", buf);
+
+                            ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+                            _IO_funlockfile (stderr);
+
+                            free (buf);
+                          }
+#else
+                        fprintf (stderr, _("\
+%s: option '-W %s' requires an argument\n"),
+                                 argv[0], pfound->name);
+#endif
+                      }
+                    d->__nextchar += strlen (d->__nextchar);
+                    return optstring[0] == ':' ? ':' : '?';
+                  }
+              }
+            else
+              d->optarg = NULL;
+            d->__nextchar += strlen (d->__nextchar);
+            if (longind != NULL)
+              *longind = option_index;
+            if (pfound->flag)
+              {
+                *(pfound->flag) = pfound->val;
+                return 0;
+              }
+            return pfound->val;
+          }
+          d->__nextchar = NULL;
+          return 'W';   /* Let the application handle it.   */
+      }
+    if (temp[1] == ':')
+      {
+        if (temp[2] == ':')
+          {
+            /* This is an option that accepts an argument optionally.  */
+            if (*d->__nextchar != '\0')
+              {
+                d->optarg = d->__nextchar;
+                d->optind++;
+              }
+            else
+              d->optarg = NULL;
+            d->__nextchar = NULL;
+          }
+        else
+          {
+            /* This is an option that requires an argument.  */
+            if (*d->__nextchar != '\0')
+              {
+                d->optarg = d->__nextchar;
+                /* If we end this ARGV-element by taking the rest as an arg,
+                   we must advance to the next element now.  */
+                d->optind++;
+              }
+            else if (d->optind == argc)
+              {
+                if (print_errors)
+                  {
+#if defined _LIBC && defined USE_IN_LIBIO
+                    char *buf;
+
+                    if (__asprintf (&buf, _("\
+%s: option requires an argument -- '%c'\n"),
+                                    argv[0], c) >= 0)
+                      {
+                        _IO_flockfile (stderr);
+
+                        int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+                        ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+
+                        __fxprintf (NULL, "%s", buf);
+
+                        ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+                        _IO_funlockfile (stderr);
+
+                        free (buf);
+                      }
+#else
+                    fprintf (stderr,
+                             _("%s: option requires an argument -- '%c'\n"),
+                             argv[0], c);
+#endif
+                  }
+                d->optopt = c;
+                if (optstring[0] == ':')
+                  c = ':';
+                else
+                  c = '?';
+              }
+            else
+              /* We already incremented `optind' once;
+                 increment it again when taking next ARGV-elt as argument.  */
+              d->optarg = argv[d->optind++];
+            d->__nextchar = NULL;
+          }
+      }
+    return c;
+  }
+}
+
+int
+_getopt_internal (int argc, char **argv, const char *optstring,
+                  const struct option *longopts, int *longind, int long_only,
+                  int posixly_correct)
+{
+  int result;
+
+  getopt_data.optind = optind;
+  getopt_data.opterr = opterr;
+
+  result = _getopt_internal_r (argc, argv, optstring, longopts,
+                               longind, long_only, &getopt_data,
+                               posixly_correct);
+
+  optind = getopt_data.optind;
+  optarg = getopt_data.optarg;
+  optopt = getopt_data.optopt;
+
+  return result;
+}
+
+/* glibc gets a LSB-compliant getopt.
+   Standalone applications get a POSIX-compliant getopt.  */
+#if _LIBC
+enum { POSIXLY_CORRECT = 0 };
+#else
+enum { POSIXLY_CORRECT = 1 };
+#endif
+
+int
+getopt (int argc, char *const *argv, const char *optstring)
+{
+  return _getopt_internal (argc, (char **) argv, optstring,
+                           (const struct option *) 0,
+                           (int *) 0,
+                           0, POSIXLY_CORRECT);
+}
+
+#ifdef _LIBC
+int
+__posix_getopt (int argc, char *const *argv, const char *optstring)
+{
+  return _getopt_internal (argc, argv, optstring,
+                           (const struct option *) 0,
+                           (int *) 0,
+                           0, 1);
+}
+#endif
+
+\f
+#ifdef TEST
+
+/* Compile with -DTEST to make an executable for use in testing
+   the above definition of `getopt'.  */
+
+int
+main (int argc, char **argv)
+{
+  int c;
+  int digit_optind = 0;
+
+  while (1)
+    {
+      int this_option_optind = optind ? optind : 1;
+
+      c = getopt (argc, argv, "abc:d:0123456789");
+      if (c == -1)
+        break;
+
+      switch (c)
+        {
+        case '0':
+        case '1':
+        case '2':
+        case '3':
+        case '4':
+        case '5':
+        case '6':
+        case '7':
+        case '8':
+        case '9':
+          if (digit_optind != 0 && digit_optind != this_option_optind)
+            printf ("digits occur in two different argv-elements.\n");
+          digit_optind = this_option_optind;
+          printf ("option %c\n", c);
+          break;
+
+        case 'a':
+          printf ("option a\n");
+          break;
+
+        case 'b':
+          printf ("option b\n");
+          break;
+
+        case 'c':
+          printf ("option c with value '%s'\n", optarg);
+          break;
+
+        case '?':
+          break;
+
+        default:
+          printf ("?? getopt returned character code 0%o ??\n", c);
+        }
+    }
+
+  if (optind < argc)
+    {
+      printf ("non-option ARGV-elements: ");
+      while (optind < argc)
+        printf ("%s ", argv[optind++]);
+      printf ("\n");
+    }
+
+  exit (0);
+}
+
+#endif /* TEST */
diff --git a/lib/getopt.in.h b/lib/getopt.in.h
new file mode 100644 (file)
index 0000000..0f3918a
--- /dev/null
@@ -0,0 +1,253 @@
+/* Declarations for getopt.
+   Copyright (C) 1989-1994, 1996-1999, 2001, 2003-2007, 2009-2011 Free Software
+   Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   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 <http://www.gnu.org/licenses/>.  */
+
+#ifndef _@GUARD_PREFIX@_GETOPT_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+/* The include_next requires a split double-inclusion guard.  We must
+   also inform the replacement unistd.h to not recursively use
+   <getopt.h>; our definitions will be present soon enough.  */
+#if @HAVE_GETOPT_H@
+# define _GL_SYSTEM_GETOPT
+# @INCLUDE_NEXT@ @NEXT_GETOPT_H@
+# undef _GL_SYSTEM_GETOPT
+#endif
+
+#ifndef _@GUARD_PREFIX@_GETOPT_H
+
+#ifndef __need_getopt
+# define _@GUARD_PREFIX@_GETOPT_H 1
+#endif
+
+/* Standalone applications should #define __GETOPT_PREFIX to an
+   identifier that prefixes the external functions and variables
+   defined in this header.  When this happens, include the
+   headers that might declare getopt so that they will not cause
+   confusion if included after this file (if the system had <getopt.h>,
+   we have already included it).  Then systematically rename
+   identifiers so that they do not collide with the system functions
+   and variables.  Renaming avoids problems with some compilers and
+   linkers.  */
+#if defined __GETOPT_PREFIX && !defined __need_getopt
+# if !@HAVE_GETOPT_H@
+#  include <stdlib.h>
+#  include <stdio.h>
+#  include <unistd.h>
+# endif
+# undef __need_getopt
+# undef getopt
+# undef getopt_long
+# undef getopt_long_only
+# undef optarg
+# undef opterr
+# undef optind
+# undef optopt
+# undef option
+# define __GETOPT_CONCAT(x, y) x ## y
+# define __GETOPT_XCONCAT(x, y) __GETOPT_CONCAT (x, y)
+# define __GETOPT_ID(y) __GETOPT_XCONCAT (__GETOPT_PREFIX, y)
+# define getopt __GETOPT_ID (getopt)
+# define getopt_long __GETOPT_ID (getopt_long)
+# define getopt_long_only __GETOPT_ID (getopt_long_only)
+# define optarg __GETOPT_ID (optarg)
+# define opterr __GETOPT_ID (opterr)
+# define optind __GETOPT_ID (optind)
+# define optopt __GETOPT_ID (optopt)
+# define option __GETOPT_ID (option)
+# define _getopt_internal __GETOPT_ID (getopt_internal)
+#endif
+
+/* Standalone applications get correct prototypes for getopt_long and
+   getopt_long_only; they declare "char **argv".  libc uses prototypes
+   with "char *const *argv" that are incorrect because getopt_long and
+   getopt_long_only can permute argv; this is required for backward
+   compatibility (e.g., for LSB 2.0.1).
+
+   This used to be `#if defined __GETOPT_PREFIX && !defined __need_getopt',
+   but it caused redefinition warnings if both unistd.h and getopt.h were
+   included, since unistd.h includes getopt.h having previously defined
+   __need_getopt.
+
+   The only place where __getopt_argv_const is used is in definitions
+   of getopt_long and getopt_long_only below, but these are visible
+   only if __need_getopt is not defined, so it is quite safe to rewrite
+   the conditional as follows:
+*/
+#if !defined __need_getopt
+# if defined __GETOPT_PREFIX
+#  define __getopt_argv_const /* empty */
+# else
+#  define __getopt_argv_const const
+# endif
+#endif
+
+/* If __GNU_LIBRARY__ is not already defined, either we are being used
+   standalone, or this is the first header included in the source file.
+   If we are being used with glibc, we need to include <features.h>, but
+   that does not exist if we are standalone.  So: if __GNU_LIBRARY__ is
+   not defined, include <ctype.h>, which will pull in <features.h> for us
+   if it's from glibc.  (Why ctype.h?  It's guaranteed to exist and it
+   doesn't flood the namespace with stuff the way some other headers do.)  */
+#if !defined __GNU_LIBRARY__
+# include <ctype.h>
+#endif
+
+#ifndef __THROW
+# ifndef __GNUC_PREREQ
+#  define __GNUC_PREREQ(maj, min) (0)
+# endif
+# if defined __cplusplus && __GNUC_PREREQ (2,8)
+#  define __THROW       throw ()
+# else
+#  define __THROW
+# endif
+#endif
+
+/* The definition of _GL_ARG_NONNULL is copied here.  */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* For communication from `getopt' to the caller.
+   When `getopt' finds an option that takes an argument,
+   the argument value is returned here.
+   Also, when `ordering' is RETURN_IN_ORDER,
+   each non-option ARGV-element is returned here.  */
+
+extern char *optarg;
+
+/* Index in ARGV of the next element to be scanned.
+   This is used for communication to and from the caller
+   and for communication between successive calls to `getopt'.
+
+   On entry to `getopt', zero means this is the first call; initialize.
+
+   When `getopt' returns -1, this is the index of the first of the
+   non-option elements that the caller should itself scan.
+
+   Otherwise, `optind' communicates from one call to the next
+   how much of ARGV has been scanned so far.  */
+
+extern int optind;
+
+/* Callers store zero here to inhibit the error message `getopt' prints
+   for unrecognized options.  */
+
+extern int opterr;
+
+/* Set to an option character which was unrecognized.  */
+
+extern int optopt;
+
+#ifndef __need_getopt
+/* Describe the long-named options requested by the application.
+   The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
+   of `struct option' terminated by an element containing a name which is
+   zero.
+
+   The field `has_arg' is:
+   no_argument          (or 0) if the option does not take an argument,
+   required_argument    (or 1) if the option requires an argument,
+   optional_argument    (or 2) if the option takes an optional argument.
+
+   If the field `flag' is not NULL, it points to a variable that is set
+   to the value given in the field `val' when the option is found, but
+   left unchanged if the option is not found.
+
+   To have a long-named option do something other than set an `int' to
+   a compiled-in constant, such as set a value from `optarg', set the
+   option's `flag' field to zero and its `val' field to a nonzero
+   value (the equivalent single-letter option character, if there is
+   one).  For long options that have a zero `flag' field, `getopt'
+   returns the contents of the `val' field.  */
+
+# if !GNULIB_defined_struct_option
+struct option
+{
+  const char *name;
+  /* has_arg can't be an enum because some compilers complain about
+     type mismatches in all the code that assumes it is an int.  */
+  int has_arg;
+  int *flag;
+  int val;
+};
+#  define GNULIB_defined_struct_option 1
+# endif
+
+/* Names for the values of the `has_arg' field of `struct option'.  */
+
+# define no_argument            0
+# define required_argument      1
+# define optional_argument      2
+#endif  /* need getopt */
+
+
+/* Get definitions and prototypes for functions to process the
+   arguments in ARGV (ARGC of them, minus the program name) for
+   options given in OPTS.
+
+   Return the option character from OPTS just read.  Return -1 when
+   there are no more options.  For unrecognized options, or options
+   missing arguments, `optopt' is set to the option letter, and '?' is
+   returned.
+
+   The OPTS string is a list of characters which are recognized option
+   letters, optionally followed by colons, specifying that that letter
+   takes an argument, to be placed in `optarg'.
+
+   If a letter in OPTS is followed by two colons, its argument is
+   optional.  This behavior is specific to the GNU `getopt'.
+
+   The argument `--' causes premature termination of argument
+   scanning, explicitly telling `getopt' that there are no more
+   options.
+
+   If OPTS begins with `-', then non-option arguments are treated as
+   arguments to the option '\1'.  This behavior is specific to the GNU
+   `getopt'.  If OPTS begins with `+', or POSIXLY_CORRECT is set in
+   the environment, then do not permute arguments.  */
+
+extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
+       __THROW _GL_ARG_NONNULL ((2, 3));
+
+#ifndef __need_getopt
+extern int getopt_long (int ___argc, char *__getopt_argv_const *___argv,
+                        const char *__shortopts,
+                        const struct option *__longopts, int *__longind)
+       __THROW _GL_ARG_NONNULL ((2, 3));
+extern int getopt_long_only (int ___argc, char *__getopt_argv_const *___argv,
+                             const char *__shortopts,
+                             const struct option *__longopts, int *__longind)
+       __THROW _GL_ARG_NONNULL ((2, 3));
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Make sure we later can get all the definitions and declarations.  */
+#undef __need_getopt
+
+#endif /* _@GUARD_PREFIX@_GETOPT_H */
+#endif /* _@GUARD_PREFIX@_GETOPT_H */
diff --git a/lib/getopt1.c b/lib/getopt1.c
new file mode 100644 (file)
index 0000000..3656802
--- /dev/null
@@ -0,0 +1,170 @@
+/* getopt_long and getopt_long_only entry points for GNU getopt.
+   Copyright (C) 1987-1994, 1996-1998, 2004, 2006, 2009-2011 Free Software
+   Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   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 <http://www.gnu.org/licenses/>.  */
+\f
+#ifdef _LIBC
+# include <getopt.h>
+#else
+# include <config.h>
+# include "getopt.h"
+#endif
+#include "getopt_int.h"
+
+#include <stdio.h>
+
+/* This needs to come after some library #include
+   to get __GNU_LIBRARY__ defined.  */
+#ifdef __GNU_LIBRARY__
+#include <stdlib.h>
+#endif
+
+#ifndef NULL
+#define NULL 0
+#endif
+
+int
+getopt_long (int argc, char *__getopt_argv_const *argv, const char *options,
+             const struct option *long_options, int *opt_index)
+{
+  return _getopt_internal (argc, (char **) argv, options, long_options,
+                           opt_index, 0, 0);
+}
+
+int
+_getopt_long_r (int argc, char **argv, const char *options,
+                const struct option *long_options, int *opt_index,
+                struct _getopt_data *d)
+{
+  return _getopt_internal_r (argc, argv, options, long_options, opt_index,
+                             0, d, 0);
+}
+
+/* Like getopt_long, but '-' as well as '--' can indicate a long option.
+   If an option that starts with '-' (not '--') doesn't match a long option,
+   but does match a short option, it is parsed as a short option
+   instead.  */
+
+int
+getopt_long_only (int argc, char *__getopt_argv_const *argv,
+                  const char *options,
+                  const struct option *long_options, int *opt_index)
+{
+  return _getopt_internal (argc, (char **) argv, options, long_options,
+                           opt_index, 1, 0);
+}
+
+int
+_getopt_long_only_r (int argc, char **argv, const char *options,
+                     const struct option *long_options, int *opt_index,
+                     struct _getopt_data *d)
+{
+  return _getopt_internal_r (argc, argv, options, long_options, opt_index,
+                             1, d, 0);
+}
+
+\f
+#ifdef TEST
+
+#include <stdio.h>
+
+int
+main (int argc, char **argv)
+{
+  int c;
+  int digit_optind = 0;
+
+  while (1)
+    {
+      int this_option_optind = optind ? optind : 1;
+      int option_index = 0;
+      static const struct option long_options[] =
+      {
+        {"add", 1, 0, 0},
+        {"append", 0, 0, 0},
+        {"delete", 1, 0, 0},
+        {"verbose", 0, 0, 0},
+        {"create", 0, 0, 0},
+        {"file", 1, 0, 0},
+        {0, 0, 0, 0}
+      };
+
+      c = getopt_long (argc, argv, "abc:d:0123456789",
+                       long_options, &option_index);
+      if (c == -1)
+        break;
+
+      switch (c)
+        {
+        case 0:
+          printf ("option %s", long_options[option_index].name);
+          if (optarg)
+            printf (" with arg %s", optarg);
+          printf ("\n");
+          break;
+
+        case '0':
+        case '1':
+        case '2':
+        case '3':
+        case '4':
+        case '5':
+        case '6':
+        case '7':
+        case '8':
+        case '9':
+          if (digit_optind != 0 && digit_optind != this_option_optind)
+            printf ("digits occur in two different argv-elements.\n");
+          digit_optind = this_option_optind;
+          printf ("option %c\n", c);
+          break;
+
+        case 'a':
+          printf ("option a\n");
+          break;
+
+        case 'b':
+          printf ("option b\n");
+          break;
+
+        case 'c':
+          printf ("option c with value `%s'\n", optarg);
+          break;
+
+        case 'd':
+          printf ("option d with value `%s'\n", optarg);
+          break;
+
+        case '?':
+          break;
+
+        default:
+          printf ("?? getopt returned character code 0%o ??\n", c);
+        }
+    }
+
+  if (optind < argc)
+    {
+      printf ("non-option ARGV-elements: ");
+      while (optind < argc)
+        printf ("%s ", argv[optind++]);
+      printf ("\n");
+    }
+
+  exit (0);
+}
+
+#endif /* TEST */
diff --git a/lib/getopt_int.h b/lib/getopt_int.h
new file mode 100644 (file)
index 0000000..9f0c713
--- /dev/null
@@ -0,0 +1,135 @@
+/* Internal declarations for getopt.
+   Copyright (C) 1989-1994, 1996-1999, 2001, 2003-2004, 2009-2011 Free Software
+   Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   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 <http://www.gnu.org/licenses/>.  */
+
+#ifndef _GETOPT_INT_H
+#define _GETOPT_INT_H   1
+
+#include <getopt.h>
+
+extern int _getopt_internal (int ___argc, char **___argv,
+                             const char *__shortopts,
+                             const struct option *__longopts, int *__longind,
+                             int __long_only, int __posixly_correct);
+
+\f
+/* Reentrant versions which can handle parsing multiple argument
+   vectors at the same time.  */
+
+/* Describe how to deal with options that follow non-option ARGV-elements.
+
+   If the caller did not specify anything,
+   the default is REQUIRE_ORDER if the environment variable
+   POSIXLY_CORRECT is defined, PERMUTE otherwise.
+
+   REQUIRE_ORDER means don't recognize them as options;
+   stop option processing when the first non-option is seen.
+   This is what Unix does.
+   This mode of operation is selected by either setting the environment
+   variable POSIXLY_CORRECT, or using `+' as the first character
+   of the list of option characters, or by calling getopt.
+
+   PERMUTE is the default.  We permute the contents of ARGV as we
+   scan, so that eventually all the non-options are at the end.
+   This allows options to be given in any order, even with programs
+   that were not written to expect this.
+
+   RETURN_IN_ORDER is an option available to programs that were
+   written to expect options and other ARGV-elements in any order
+   and that care about the ordering of the two.  We describe each
+   non-option ARGV-element as if it were the argument of an option
+   with character code 1.  Using `-' as the first character of the
+   list of option characters selects this mode of operation.
+
+   The special argument `--' forces an end of option-scanning regardless
+   of the value of `ordering'.  In the case of RETURN_IN_ORDER, only
+   `--' can cause `getopt' to return -1 with `optind' != ARGC.  */
+
+enum __ord
+  {
+    REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
+  };
+
+/* Data type for reentrant functions.  */
+struct _getopt_data
+{
+  /* These have exactly the same meaning as the corresponding global
+     variables, except that they are used for the reentrant
+     versions of getopt.  */
+  int optind;
+  int opterr;
+  int optopt;
+  char *optarg;
+
+  /* Internal members.  */
+
+  /* True if the internal members have been initialized.  */
+  int __initialized;
+
+  /* The next char to be scanned in the option-element
+     in which the last option character we returned was found.
+     This allows us to pick up the scan where we left off.
+
+     If this is zero, or a null string, it means resume the scan
+     by advancing to the next ARGV-element.  */
+  char *__nextchar;
+
+  /* See __ord above.  */
+  enum __ord __ordering;
+
+  /* If the POSIXLY_CORRECT environment variable is set
+     or getopt was called.  */
+  int __posixly_correct;
+
+
+  /* Handle permutation of arguments.  */
+
+  /* Describe the part of ARGV that contains non-options that have
+     been skipped.  `first_nonopt' is the index in ARGV of the first
+     of them; `last_nonopt' is the index after the last of them.  */
+
+  int __first_nonopt;
+  int __last_nonopt;
+
+#if defined _LIBC && defined USE_NONOPTION_FLAGS
+  int __nonoption_flags_max_len;
+  int __nonoption_flags_len;
+#endif
+};
+
+/* The initializer is necessary to set OPTIND and OPTERR to their
+   default values and to clear the initialization flag.  */
+#define _GETOPT_DATA_INITIALIZER        { 1, 1 }
+
+extern int _getopt_internal_r (int ___argc, char **___argv,
+                               const char *__shortopts,
+                               const struct option *__longopts, int *__longind,
+                               int __long_only, struct _getopt_data *__data,
+                               int __posixly_correct);
+
+extern int _getopt_long_r (int ___argc, char **___argv,
+                           const char *__shortopts,
+                           const struct option *__longopts, int *__longind,
+                           struct _getopt_data *__data);
+
+extern int _getopt_long_only_r (int ___argc, char **___argv,
+                                const char *__shortopts,
+                                const struct option *__longopts,
+                                int *__longind,
+                                struct _getopt_data *__data);
+
+#endif /* getopt_int.h */
diff --git a/lib/gettext.h b/lib/gettext.h
new file mode 100644 (file)
index 0000000..ef04443
--- /dev/null
@@ -0,0 +1,288 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Convenience header for conditional use of GNU <libintl.h>.
+   Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009-2011 Free Software
+   Foundation, 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; either version 3, 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.  */
+
+#ifndef _LIBGETTEXT_H
+#define _LIBGETTEXT_H 1
+
+/* NLS can be disabled through the configure --disable-nls option.  */
+#if ENABLE_NLS
+
+/* Get declarations of GNU message catalog functions.  */
+# include <libintl.h>
+
+/* You can set the DEFAULT_TEXT_DOMAIN macro to specify the domain used by
+   the gettext() and ngettext() macros.  This is an alternative to calling
+   textdomain(), and is useful for libraries.  */
+# ifdef DEFAULT_TEXT_DOMAIN
+#  undef gettext
+#  define gettext(Msgid) \
+     dgettext (DEFAULT_TEXT_DOMAIN, Msgid)
+#  undef ngettext
+#  define ngettext(Msgid1, Msgid2, N) \
+     dngettext (DEFAULT_TEXT_DOMAIN, Msgid1, Msgid2, N)
+# endif
+
+#else
+
+/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which
+   chokes if dcgettext is defined as a macro.  So include it now, to make
+   later inclusions of <locale.h> a NOP.  We don't include <libintl.h>
+   as well because people using "gettext.h" will not include <libintl.h>,
+   and also including <libintl.h> would fail on SunOS 4, whereas <locale.h>
+   is OK.  */
+#if defined(__sun)
+# include <locale.h>
+#endif
+
+/* Many header files from the libstdc++ coming with g++ 3.3 or newer include
+   <libintl.h>, which chokes if dcgettext is defined as a macro.  So include
+   it now, to make later inclusions of <libintl.h> a NOP.  */
+#if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3)
+# include <cstdlib>
+# if (__GLIBC__ >= 2 && !defined __UCLIBC__) || _GLIBCXX_HAVE_LIBINTL_H
+#  include <libintl.h>
+# endif
+#endif
+
+/* Disabled NLS.
+   The casts to 'const char *' serve the purpose of producing warnings
+   for invalid uses of the value returned from these functions.
+   On pre-ANSI systems without 'const', the config.h file is supposed to
+   contain "#define const".  */
+# undef gettext
+# define gettext(Msgid) ((const char *) (Msgid))
+# undef dgettext
+# define dgettext(Domainname, Msgid) ((void) (Domainname), gettext (Msgid))
+# undef dcgettext
+# define dcgettext(Domainname, Msgid, Category) \
+    ((void) (Category), dgettext (Domainname, Msgid))
+# undef ngettext
+# define ngettext(Msgid1, Msgid2, N) \
+    ((N) == 1 \
+     ? ((void) (Msgid2), (const char *) (Msgid1)) \
+     : ((void) (Msgid1), (const char *) (Msgid2)))
+# undef dngettext
+# define dngettext(Domainname, Msgid1, Msgid2, N) \
+    ((void) (Domainname), ngettext (Msgid1, Msgid2, N))
+# undef dcngettext
+# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \
+    ((void) (Category), dngettext (Domainname, Msgid1, Msgid2, N))
+# undef textdomain
+# define textdomain(Domainname) ((const char *) (Domainname))
+# undef bindtextdomain
+# define bindtextdomain(Domainname, Dirname) \
+    ((void) (Domainname), (const char *) (Dirname))
+# undef bind_textdomain_codeset
+# define bind_textdomain_codeset(Domainname, Codeset) \
+    ((void) (Domainname), (const char *) (Codeset))
+
+#endif
+
+/* Prefer gnulib's setlocale override over libintl's setlocale override.  */
+#ifdef GNULIB_defined_setlocale
+# undef setlocale
+# define setlocale rpl_setlocale
+#endif
+
+/* A pseudo function call that serves as a marker for the automated
+   extraction of messages, but does not call gettext().  The run-time
+   translation is done at a different place in the code.
+   The argument, String, should be a literal string.  Concatenated strings
+   and other string expressions won't work.
+   The macro's expansion is not parenthesized, so that it is suitable as
+   initializer for static 'char[]' or 'const char[]' variables.  */
+#define gettext_noop(String) String
+
+/* The separator between msgctxt and msgid in a .mo file.  */
+#define GETTEXT_CONTEXT_GLUE "\004"
+
+/* Pseudo function calls, taking a MSGCTXT and a MSGID instead of just a
+   MSGID.  MSGCTXT and MSGID must be string literals.  MSGCTXT should be
+   short and rarely need to change.
+   The letter 'p' stands for 'particular' or 'special'.  */
+#ifdef DEFAULT_TEXT_DOMAIN
+# define pgettext(Msgctxt, Msgid) \
+   pgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
+#else
+# define pgettext(Msgctxt, Msgid) \
+   pgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
+#endif
+#define dpgettext(Domainname, Msgctxt, Msgid) \
+  pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
+#define dcpgettext(Domainname, Msgctxt, Msgid, Category) \
+  pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, Category)
+#ifdef DEFAULT_TEXT_DOMAIN
+# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \
+   npgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)
+#else
+# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \
+   npgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)
+#endif
+#define dnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N) \
+  npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)
+#define dcnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N, Category) \
+  npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, Category)
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static const char *
+pgettext_aux (const char *domain,
+              const char *msg_ctxt_id, const char *msgid,
+              int category)
+{
+  const char *translation = dcgettext (domain, msg_ctxt_id, category);
+  if (translation == msg_ctxt_id)
+    return msgid;
+  else
+    return translation;
+}
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static const char *
+npgettext_aux (const char *domain,
+               const char *msg_ctxt_id, const char *msgid,
+               const char *msgid_plural, unsigned long int n,
+               int category)
+{
+  const char *translation =
+    dcngettext (domain, msg_ctxt_id, msgid_plural, n, category);
+  if (translation == msg_ctxt_id || translation == msgid_plural)
+    return (n == 1 ? msgid : msgid_plural);
+  else
+    return translation;
+}
+
+/* The same thing extended for non-constant arguments.  Here MSGCTXT and MSGID
+   can be arbitrary expressions.  But for string literals these macros are
+   less efficient than those above.  */
+
+#include <string.h>
+
+#define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS \
+  (((__GNUC__ >= 3 || __GNUG__ >= 2) && !__STRICT_ANSI__) \
+   /* || __STDC_VERSION__ >= 199901L */ )
+
+#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+#include <stdlib.h>
+#endif
+
+#define pgettext_expr(Msgctxt, Msgid) \
+  dcpgettext_expr (NULL, Msgctxt, Msgid, LC_MESSAGES)
+#define dpgettext_expr(Domainname, Msgctxt, Msgid) \
+  dcpgettext_expr (Domainname, Msgctxt, Msgid, LC_MESSAGES)
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static const char *
+dcpgettext_expr (const char *domain,
+                 const char *msgctxt, const char *msgid,
+                 int category)
+{
+  size_t msgctxt_len = strlen (msgctxt) + 1;
+  size_t msgid_len = strlen (msgid) + 1;
+  const char *translation;
+#if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+  char msg_ctxt_id[msgctxt_len + msgid_len];
+#else
+  char buf[1024];
+  char *msg_ctxt_id =
+    (msgctxt_len + msgid_len <= sizeof (buf)
+     ? buf
+     : (char *) malloc (msgctxt_len + msgid_len));
+  if (msg_ctxt_id != NULL)
+#endif
+    {
+      memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1);
+      msg_ctxt_id[msgctxt_len - 1] = '\004';
+      memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len);
+      translation = dcgettext (domain, msg_ctxt_id, category);
+#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+      if (msg_ctxt_id != buf)
+        free (msg_ctxt_id);
+#endif
+      if (translation != msg_ctxt_id)
+        return translation;
+    }
+  return msgid;
+}
+
+#define npgettext_expr(Msgctxt, Msgid, MsgidPlural, N) \
+  dcnpgettext_expr (NULL, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES)
+#define dnpgettext_expr(Domainname, Msgctxt, Msgid, MsgidPlural, N) \
+  dcnpgettext_expr (Domainname, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES)
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static const char *
+dcnpgettext_expr (const char *domain,
+                  const char *msgctxt, const char *msgid,
+                  const char *msgid_plural, unsigned long int n,
+                  int category)
+{
+  size_t msgctxt_len = strlen (msgctxt) + 1;
+  size_t msgid_len = strlen (msgid) + 1;
+  const char *translation;
+#if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+  char msg_ctxt_id[msgctxt_len + msgid_len];
+#else
+  char buf[1024];
+  char *msg_ctxt_id =
+    (msgctxt_len + msgid_len <= sizeof (buf)
+     ? buf
+     : (char *) malloc (msgctxt_len + msgid_len));
+  if (msg_ctxt_id != NULL)
+#endif
+    {
+      memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1);
+      msg_ctxt_id[msgctxt_len - 1] = '\004';
+      memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len);
+      translation = dcngettext (domain, msg_ctxt_id, msgid_plural, n, category);
+#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+      if (msg_ctxt_id != buf)
+        free (msg_ctxt_id);
+#endif
+      if (!(translation == msg_ctxt_id || translation == msgid_plural))
+        return translation;
+    }
+  return (n == 1 ? msgid : msgid_plural);
+}
+
+#endif /* _LIBGETTEXT_H */
diff --git a/lib/gettimeofday.c b/lib/gettimeofday.c
new file mode 100644 (file)
index 0000000..7532c0c
--- /dev/null
@@ -0,0 +1,146 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Provide gettimeofday for systems that don't have it or for which it's broken.
+
+   Copyright (C) 2001-2003, 2005-2007, 2009-2011 Free Software Foundation, 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; either version 3, 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.  */
+
+/* written by Jim Meyering */
+
+#include <config.h>
+
+/* Specification.  */
+#include <sys/time.h>
+
+#include <time.h>
+
+#if HAVE_SYS_TIMEB_H
+# include <sys/timeb.h>
+#endif
+
+#if GETTIMEOFDAY_CLOBBERS_LOCALTIME || TZSET_CLOBBERS_LOCALTIME
+
+/* Work around the bug in some systems whereby gettimeofday clobbers
+   the static buffer that localtime uses for its return value.  The
+   gettimeofday function from Mac OS X 10.0.4 (i.e., Darwin 1.3.7) has
+   this problem.  The tzset replacement is necessary for at least
+   Solaris 2.5, 2.5.1, and 2.6.  */
+
+static struct tm tm_zero_buffer;
+static struct tm *localtime_buffer_addr = &tm_zero_buffer;
+
+# undef localtime
+extern struct tm *localtime (time_t const *);
+
+# undef gmtime
+extern struct tm *gmtime (time_t const *);
+
+/* This is a wrapper for localtime.  It is used only on systems for which
+   gettimeofday clobbers the static buffer used for localtime's result.
+
+   On the first call, record the address of the static buffer that
+   localtime uses for its result.  */
+
+struct tm *
+rpl_localtime (time_t const *timep)
+{
+  struct tm *tm = localtime (timep);
+
+  if (localtime_buffer_addr == &tm_zero_buffer)
+    localtime_buffer_addr = tm;
+
+  return tm;
+}
+
+/* Same as above, since gmtime and localtime use the same buffer.  */
+struct tm *
+rpl_gmtime (time_t const *timep)
+{
+  struct tm *tm = gmtime (timep);
+
+  if (localtime_buffer_addr == &tm_zero_buffer)
+    localtime_buffer_addr = tm;
+
+  return tm;
+}
+
+#endif /* GETTIMEOFDAY_CLOBBERS_LOCALTIME || TZSET_CLOBBERS_LOCALTIME */
+
+#if TZSET_CLOBBERS_LOCALTIME
+
+# undef tzset
+extern void tzset (void);
+
+/* This is a wrapper for tzset, for systems on which tzset may clobber
+   the static buffer used for localtime's result.  */
+void
+rpl_tzset (void)
+{
+  /* Save and restore the contents of the buffer used for localtime's
+     result around the call to tzset.  */
+  struct tm save = *localtime_buffer_addr;
+  tzset ();
+  *localtime_buffer_addr = save;
+}
+#endif
+
+/* This is a wrapper for gettimeofday.  It is used only on systems
+   that lack this function, or whose implementation of this function
+   causes problems.  */
+
+int
+gettimeofday (struct timeval *restrict tv, void *restrict tz)
+{
+#undef gettimeofday
+#if HAVE_GETTIMEOFDAY
+# if GETTIMEOFDAY_CLOBBERS_LOCALTIME
+  /* Save and restore the contents of the buffer used for localtime's
+     result around the call to gettimeofday.  */
+  struct tm save = *localtime_buffer_addr;
+# endif
+
+  int result = gettimeofday (tv, (struct timezone *) tz);
+
+# if GETTIMEOFDAY_CLOBBERS_LOCALTIME
+  *localtime_buffer_addr = save;
+# endif
+
+  return result;
+
+#else
+
+# if HAVE__FTIME
+
+  struct _timeb timebuf;
+  _ftime (&timebuf);
+  tv->tv_sec = timebuf.time;
+  tv->tv_usec = timebuf.millitm * 1000;
+
+# else
+
+#  if !defined OK_TO_USE_1S_CLOCK
+#   error "Only 1-second nominal clock resolution found.  Is that intended?" \
+          "If so, compile with the -DOK_TO_USE_1S_CLOCK option."
+#  endif
+  tv->tv_sec = time (NULL);
+  tv->tv_usec = 0;
+
+# endif
+
+  return 0;
+
+#endif
+}
diff --git a/lib/glthread/lock.c b/lib/glthread/lock.c
new file mode 100644 (file)
index 0000000..27543ae
--- /dev/null
@@ -0,0 +1,1060 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Locking in multithreaded situations.
+   Copyright (C) 2005-2011 Free Software Foundation, 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; either version 3, 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.  */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2005.
+   Based on GCC's gthr-posix.h, gthr-posix95.h, gthr-solaris.h,
+   gthr-win32.h.  */
+
+#include <config.h>
+
+#include "glthread/lock.h"
+
+/* ========================================================================= */
+
+#if USE_POSIX_THREADS
+
+/* -------------------------- gl_lock_t datatype -------------------------- */
+
+/* ------------------------- gl_rwlock_t datatype ------------------------- */
+
+# if HAVE_PTHREAD_RWLOCK
+
+#  if !defined PTHREAD_RWLOCK_INITIALIZER
+
+int
+glthread_rwlock_init_multithreaded (gl_rwlock_t *lock)
+{
+  int err;
+
+  err = pthread_rwlock_init (&lock->rwlock, NULL);
+  if (err != 0)
+    return err;
+  lock->initialized = 1;
+  return 0;
+}
+
+int
+glthread_rwlock_rdlock_multithreaded (gl_rwlock_t *lock)
+{
+  if (!lock->initialized)
+    {
+      int err;
+
+      err = pthread_mutex_lock (&lock->guard);
+      if (err != 0)
+        return err;
+      if (!lock->initialized)
+        {
+          err = glthread_rwlock_init_multithreaded (lock);
+          if (err != 0)
+            {
+              pthread_mutex_unlock (&lock->guard);
+              return err;
+            }
+        }
+      err = pthread_mutex_unlock (&lock->guard);
+      if (err != 0)
+        return err;
+    }
+  return pthread_rwlock_rdlock (&lock->rwlock);
+}
+
+int
+glthread_rwlock_wrlock_multithreaded (gl_rwlock_t *lock)
+{
+  if (!lock->initialized)
+    {
+      int err;
+
+      err = pthread_mutex_lock (&lock->guard);
+      if (err != 0)
+        return err;
+      if (!lock->initialized)
+        {
+          err = glthread_rwlock_init_multithreaded (lock);
+          if (err != 0)
+            {
+              pthread_mutex_unlock (&lock->guard);
+              return err;
+            }
+        }
+      err = pthread_mutex_unlock (&lock->guard);
+      if (err != 0)
+        return err;
+    }
+  return pthread_rwlock_wrlock (&lock->rwlock);
+}
+
+int
+glthread_rwlock_unlock_multithreaded (gl_rwlock_t *lock)
+{
+  if (!lock->initialized)
+    return EINVAL;
+  return pthread_rwlock_unlock (&lock->rwlock);
+}
+
+int
+glthread_rwlock_destroy_multithreaded (gl_rwlock_t *lock)
+{
+  int err;
+
+  if (!lock->initialized)
+    return EINVAL;
+  err = pthread_rwlock_destroy (&lock->rwlock);
+  if (err != 0)
+    return err;
+  lock->initialized = 0;
+  return 0;
+}
+
+#  endif
+
+# else
+
+int
+glthread_rwlock_init_multithreaded (gl_rwlock_t *lock)
+{
+  int err;
+
+  err = pthread_mutex_init (&lock->lock, NULL);
+  if (err != 0)
+    return err;
+  err = pthread_cond_init (&lock->waiting_readers, NULL);
+  if (err != 0)
+    return err;
+  err = pthread_cond_init (&lock->waiting_writers, NULL);
+  if (err != 0)
+    return err;
+  lock->waiting_writers_count = 0;
+  lock->runcount = 0;
+  return 0;
+}
+
+int
+glthread_rwlock_rdlock_multithreaded (gl_rwlock_t *lock)
+{
+  int err;
+
+  err = pthread_mutex_lock (&lock->lock);
+  if (err != 0)
+    return err;
+  /* Test whether only readers are currently running, and whether the runcount
+     field will not overflow.  */
+  /* POSIX says: "It is implementation-defined whether the calling thread
+     acquires the lock when a writer does not hold the lock and there are
+     writers blocked on the lock."  Let's say, no: give the writers a higher
+     priority.  */
+  while (!(lock->runcount + 1 > 0 && lock->waiting_writers_count == 0))
+    {
+      /* This thread has to wait for a while.  Enqueue it among the
+         waiting_readers.  */
+      err = pthread_cond_wait (&lock->waiting_readers, &lock->lock);
+      if (err != 0)
+        {
+          pthread_mutex_unlock (&lock->lock);
+          return err;
+        }
+    }
+  lock->runcount++;
+  return pthread_mutex_unlock (&lock->lock);
+}
+
+int
+glthread_rwlock_wrlock_multithreaded (gl_rwlock_t *lock)
+{
+  int err;
+
+  err = pthread_mutex_lock (&lock->lock);
+  if (err != 0)
+    return err;
+  /* Test whether no readers or writers are currently running.  */
+  while (!(lock->runcount == 0))
+    {
+      /* This thread has to wait for a while.  Enqueue it among the
+         waiting_writers.  */
+      lock->waiting_writers_count++;
+      err = pthread_cond_wait (&lock->waiting_writers, &lock->lock);
+      if (err != 0)
+        {
+          lock->waiting_writers_count--;
+          pthread_mutex_unlock (&lock->lock);
+          return err;
+        }
+      lock->waiting_writers_count--;
+    }
+  lock->runcount--; /* runcount becomes -1 */
+  return pthread_mutex_unlock (&lock->lock);
+}
+
+int
+glthread_rwlock_unlock_multithreaded (gl_rwlock_t *lock)
+{
+  int err;
+
+  err = pthread_mutex_lock (&lock->lock);
+  if (err != 0)
+    return err;
+  if (lock->runcount < 0)
+    {
+      /* Drop a writer lock.  */
+      if (!(lock->runcount == -1))
+        {
+          pthread_mutex_unlock (&lock->lock);
+          return EINVAL;
+        }
+      lock->runcount = 0;
+    }
+  else
+    {
+      /* Drop a reader lock.  */
+      if (!(lock->runcount > 0))
+        {
+          pthread_mutex_unlock (&lock->lock);
+          return EINVAL;
+        }
+      lock->runcount--;
+    }
+  if (lock->runcount == 0)
+    {
+      /* POSIX recommends that "write locks shall take precedence over read
+         locks", to avoid "writer starvation".  */
+      if (lock->waiting_writers_count > 0)
+        {
+          /* Wake up one of the waiting writers.  */
+          err = pthread_cond_signal (&lock->waiting_writers);
+          if (err != 0)
+            {
+              pthread_mutex_unlock (&lock->lock);
+              return err;
+            }
+        }
+      else
+        {
+          /* Wake up all waiting readers.  */
+          err = pthread_cond_broadcast (&lock->waiting_readers);
+          if (err != 0)
+            {
+              pthread_mutex_unlock (&lock->lock);
+              return err;
+            }
+        }
+    }
+  return pthread_mutex_unlock (&lock->lock);
+}
+
+int
+glthread_rwlock_destroy_multithreaded (gl_rwlock_t *lock)
+{
+  int err;
+
+  err = pthread_mutex_destroy (&lock->lock);
+  if (err != 0)
+    return err;
+  err = pthread_cond_destroy (&lock->waiting_readers);
+  if (err != 0)
+    return err;
+  err = pthread_cond_destroy (&lock->waiting_writers);
+  if (err != 0)
+    return err;
+  return 0;
+}
+
+# endif
+
+/* --------------------- gl_recursive_lock_t datatype --------------------- */
+
+# if HAVE_PTHREAD_MUTEX_RECURSIVE
+
+#  if defined PTHREAD_RECURSIVE_MUTEX_INITIALIZER || defined PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
+
+int
+glthread_recursive_lock_init_multithreaded (gl_recursive_lock_t *lock)
+{
+  pthread_mutexattr_t attributes;
+  int err;
+
+  err = pthread_mutexattr_init (&attributes);
+  if (err != 0)
+    return err;
+  err = pthread_mutexattr_settype (&attributes, PTHREAD_MUTEX_RECURSIVE);
+  if (err != 0)
+    {
+      pthread_mutexattr_destroy (&attributes);
+      return err;
+    }
+  err = pthread_mutex_init (lock, &attributes);
+  if (err != 0)
+    {
+      pthread_mutexattr_destroy (&attributes);
+      return err;
+    }
+  err = pthread_mutexattr_destroy (&attributes);
+  if (err != 0)
+    return err;
+  return 0;
+}
+
+#  else
+
+int
+glthread_recursive_lock_init_multithreaded (gl_recursive_lock_t *lock)
+{
+  pthread_mutexattr_t attributes;
+  int err;
+
+  err = pthread_mutexattr_init (&attributes);
+  if (err != 0)
+    return err;
+  err = pthread_mutexattr_settype (&attributes, PTHREAD_MUTEX_RECURSIVE);
+  if (err != 0)
+    {
+      pthread_mutexattr_destroy (&attributes);
+      return err;
+    }
+  err = pthread_mutex_init (&lock->recmutex, &attributes);
+  if (err != 0)
+    {
+      pthread_mutexattr_destroy (&attributes);
+      return err;
+    }
+  err = pthread_mutexattr_destroy (&attributes);
+  if (err != 0)
+    return err;
+  lock->initialized = 1;
+  return 0;
+}
+
+int
+glthread_recursive_lock_lock_multithreaded (gl_recursive_lock_t *lock)
+{
+  if (!lock->initialized)
+    {
+      int err;
+
+      err = pthread_mutex_lock (&lock->guard);
+      if (err != 0)
+        return err;
+      if (!lock->initialized)
+        {
+          err = glthread_recursive_lock_init_multithreaded (lock);
+          if (err != 0)
+            {
+              pthread_mutex_unlock (&lock->guard);
+              return err;
+            }
+        }
+      err = pthread_mutex_unlock (&lock->guard);
+      if (err != 0)
+        return err;
+    }
+  return pthread_mutex_lock (&lock->recmutex);
+}
+
+int
+glthread_recursive_lock_unlock_multithreaded (gl_recursive_lock_t *lock)
+{
+  if (!lock->initialized)
+    return EINVAL;
+  return pthread_mutex_unlock (&lock->recmutex);
+}
+
+int
+glthread_recursive_lock_destroy_multithreaded (gl_recursive_lock_t *lock)
+{
+  int err;
+
+  if (!lock->initialized)
+    return EINVAL;
+  err = pthread_mutex_destroy (&lock->recmutex);
+  if (err != 0)
+    return err;
+  lock->initialized = 0;
+  return 0;
+}
+
+#  endif
+
+# else
+
+int
+glthread_recursive_lock_init_multithreaded (gl_recursive_lock_t *lock)
+{
+  int err;
+
+  err = pthread_mutex_init (&lock->mutex, NULL);
+  if (err != 0)
+    return err;
+  lock->owner = (pthread_t) 0;
+  lock->depth = 0;
+  return 0;
+}
+
+int
+glthread_recursive_lock_lock_multithreaded (gl_recursive_lock_t *lock)
+{
+  pthread_t self = pthread_self ();
+  if (lock->owner != self)
+    {
+      int err;
+
+      err = pthread_mutex_lock (&lock->mutex);
+      if (err != 0)
+        return err;
+      lock->owner = self;
+    }
+  if (++(lock->depth) == 0) /* wraparound? */
+    {
+      lock->depth--;
+      return EAGAIN;
+    }
+  return 0;
+}
+
+int
+glthread_recursive_lock_unlock_multithreaded (gl_recursive_lock_t *lock)
+{
+  if (lock->owner != pthread_self ())
+    return EPERM;
+  if (lock->depth == 0)
+    return EINVAL;
+  if (--(lock->depth) == 0)
+    {
+      lock->owner = (pthread_t) 0;
+      return pthread_mutex_unlock (&lock->mutex);
+    }
+  else
+    return 0;
+}
+
+int
+glthread_recursive_lock_destroy_multithreaded (gl_recursive_lock_t *lock)
+{
+  if (lock->owner != (pthread_t) 0)
+    return EBUSY;
+  return pthread_mutex_destroy (&lock->mutex);
+}
+
+# endif
+
+/* -------------------------- gl_once_t datatype -------------------------- */
+
+static const pthread_once_t fresh_once = PTHREAD_ONCE_INIT;
+
+int
+glthread_once_singlethreaded (pthread_once_t *once_control)
+{
+  /* We don't know whether pthread_once_t is an integer type, a floating-point
+     type, a pointer type, or a structure type.  */
+  char *firstbyte = (char *)once_control;
+  if (*firstbyte == *(const char *)&fresh_once)
+    {
+      /* First time use of once_control.  Invert the first byte.  */
+      *firstbyte = ~ *(const char *)&fresh_once;
+      return 1;
+    }
+  else
+    return 0;
+}
+
+#endif
+
+/* ========================================================================= */
+
+#if USE_PTH_THREADS
+
+/* Use the GNU Pth threads library.  */
+
+/* -------------------------- gl_lock_t datatype -------------------------- */
+
+/* ------------------------- gl_rwlock_t datatype ------------------------- */
+
+/* --------------------- gl_recursive_lock_t datatype --------------------- */
+
+/* -------------------------- gl_once_t datatype -------------------------- */
+
+static void
+glthread_once_call (void *arg)
+{
+  void (**gl_once_temp_addr) (void) = (void (**) (void)) arg;
+  void (*initfunction) (void) = *gl_once_temp_addr;
+  initfunction ();
+}
+
+int
+glthread_once_multithreaded (pth_once_t *once_control, void (*initfunction) (void))
+{
+  void (*temp) (void) = initfunction;
+  return (!pth_once (once_control, glthread_once_call, &temp) ? errno : 0);
+}
+
+int
+glthread_once_singlethreaded (pth_once_t *once_control)
+{
+  /* We know that pth_once_t is an integer type.  */
+  if (*once_control == PTH_ONCE_INIT)
+    {
+      /* First time use of once_control.  Invert the marker.  */
+      *once_control = ~ PTH_ONCE_INIT;
+      return 1;
+    }
+  else
+    return 0;
+}
+
+#endif
+
+/* ========================================================================= */
+
+#if USE_SOLARIS_THREADS
+
+/* Use the old Solaris threads library.  */
+
+/* -------------------------- gl_lock_t datatype -------------------------- */
+
+/* ------------------------- gl_rwlock_t datatype ------------------------- */
+
+/* --------------------- gl_recursive_lock_t datatype --------------------- */
+
+int
+glthread_recursive_lock_init_multithreaded (gl_recursive_lock_t *lock)
+{
+  int err;
+
+  err = mutex_init (&lock->mutex, USYNC_THREAD, NULL);
+  if (err != 0)
+    return err;
+  lock->owner = (thread_t) 0;
+  lock->depth = 0;
+  return 0;
+}
+
+int
+glthread_recursive_lock_lock_multithreaded (gl_recursive_lock_t *lock)
+{
+  thread_t self = thr_self ();
+  if (lock->owner != self)
+    {
+      int err;
+
+      err = mutex_lock (&lock->mutex);
+      if (err != 0)
+        return err;
+      lock->owner = self;
+    }
+  if (++(lock->depth) == 0) /* wraparound? */
+    {
+      lock->depth--;
+      return EAGAIN;
+    }
+  return 0;
+}
+
+int
+glthread_recursive_lock_unlock_multithreaded (gl_recursive_lock_t *lock)
+{
+  if (lock->owner != thr_self ())
+    return EPERM;
+  if (lock->depth == 0)
+    return EINVAL;
+  if (--(lock->depth) == 0)
+    {
+      lock->owner = (thread_t) 0;
+      return mutex_unlock (&lock->mutex);
+    }
+  else
+    return 0;
+}
+
+int
+glthread_recursive_lock_destroy_multithreaded (gl_recursive_lock_t *lock)
+{
+  if (lock->owner != (thread_t) 0)
+    return EBUSY;
+  return mutex_destroy (&lock->mutex);
+}
+
+/* -------------------------- gl_once_t datatype -------------------------- */
+
+int
+glthread_once_multithreaded (gl_once_t *once_control, void (*initfunction) (void))
+{
+  if (!once_control->inited)
+    {
+      int err;
+
+      /* Use the mutex to guarantee that if another thread is already calling
+         the initfunction, this thread waits until it's finished.  */
+      err = mutex_lock (&once_control->mutex);
+      if (err != 0)
+        return err;
+      if (!once_control->inited)
+        {
+          once_control->inited = 1;
+          initfunction ();
+        }
+      return mutex_unlock (&once_control->mutex);
+    }
+  else
+    return 0;
+}
+
+int
+glthread_once_singlethreaded (gl_once_t *once_control)
+{
+  /* We know that gl_once_t contains an integer type.  */
+  if (!once_control->inited)
+    {
+      /* First time use of once_control.  Invert the marker.  */
+      once_control->inited = ~ 0;
+      return 1;
+    }
+  else
+    return 0;
+}
+
+#endif
+
+/* ========================================================================= */
+
+#if USE_WIN32_THREADS
+
+/* -------------------------- gl_lock_t datatype -------------------------- */
+
+void
+glthread_lock_init_func (gl_lock_t *lock)
+{
+  InitializeCriticalSection (&lock->lock);
+  lock->guard.done = 1;
+}
+
+int
+glthread_lock_lock_func (gl_lock_t *lock)
+{
+  if (!lock->guard.done)
+    {
+      if (InterlockedIncrement (&lock->guard.started) == 0)
+        /* This thread is the first one to need this lock.  Initialize it.  */
+        glthread_lock_init (lock);
+      else
+        /* Yield the CPU while waiting for another thread to finish
+           initializing this lock.  */
+        while (!lock->guard.done)
+          Sleep (0);
+    }
+  EnterCriticalSection (&lock->lock);
+  return 0;
+}
+
+int
+glthread_lock_unlock_func (gl_lock_t *lock)
+{
+  if (!lock->guard.done)
+    return EINVAL;
+  LeaveCriticalSection (&lock->lock);
+  return 0;
+}
+
+int
+glthread_lock_destroy_func (gl_lock_t *lock)
+{
+  if (!lock->guard.done)
+    return EINVAL;
+  DeleteCriticalSection (&lock->lock);
+  lock->guard.done = 0;
+  return 0;
+}
+
+/* ------------------------- gl_rwlock_t datatype ------------------------- */
+
+/* In this file, the waitqueues are implemented as circular arrays.  */
+#define gl_waitqueue_t gl_carray_waitqueue_t
+
+static inline void
+gl_waitqueue_init (gl_waitqueue_t *wq)
+{
+  wq->array = NULL;
+  wq->count = 0;
+  wq->alloc = 0;
+  wq->offset = 0;
+}
+
+/* Enqueues the current thread, represented by an event, in a wait queue.
+   Returns INVALID_HANDLE_VALUE if an allocation failure occurs.  */
+static HANDLE
+gl_waitqueue_add (gl_waitqueue_t *wq)
+{
+  HANDLE event;
+  unsigned int index;
+
+  if (wq->count == wq->alloc)
+    {
+      unsigned int new_alloc = 2 * wq->alloc + 1;
+      HANDLE *new_array =
+        (HANDLE *) realloc (wq->array, new_alloc * sizeof (HANDLE));
+      if (new_array == NULL)
+        /* No more memory.  */
+        return INVALID_HANDLE_VALUE;
+      /* Now is a good opportunity to rotate the array so that its contents
+         starts at offset 0.  */
+      if (wq->offset > 0)
+        {
+          unsigned int old_count = wq->count;
+          unsigned int old_alloc = wq->alloc;
+          unsigned int old_offset = wq->offset;
+          unsigned int i;
+          if (old_offset + old_count > old_alloc)
+            {
+              unsigned int limit = old_offset + old_count - old_alloc;
+              for (i = 0; i < limit; i++)
+                new_array[old_alloc + i] = new_array[i];
+            }
+          for (i = 0; i < old_count; i++)
+            new_array[i] = new_array[old_offset + i];
+          wq->offset = 0;
+        }
+      wq->array = new_array;
+      wq->alloc = new_alloc;
+    }
+  /* Whether the created event is a manual-reset one or an auto-reset one,
+     does not matter, since we will wait on it only once.  */
+  event = CreateEvent (NULL, TRUE, FALSE, NULL);
+  if (event == INVALID_HANDLE_VALUE)
+    /* No way to allocate an event.  */
+    return INVALID_HANDLE_VALUE;
+  index = wq->offset + wq->count;
+  if (index >= wq->alloc)
+    index -= wq->alloc;
+  wq->array[index] = event;
+  wq->count++;
+  return event;
+}
+
+/* Notifies the first thread from a wait queue and dequeues it.  */
+static inline void
+gl_waitqueue_notify_first (gl_waitqueue_t *wq)
+{
+  SetEvent (wq->array[wq->offset + 0]);
+  wq->offset++;
+  wq->count--;
+  if (wq->count == 0 || wq->offset == wq->alloc)
+    wq->offset = 0;
+}
+
+/* Notifies all threads from a wait queue and dequeues them all.  */
+static inline void
+gl_waitqueue_notify_all (gl_waitqueue_t *wq)
+{
+  unsigned int i;
+
+  for (i = 0; i < wq->count; i++)
+    {
+      unsigned int index = wq->offset + i;
+      if (index >= wq->alloc)
+        index -= wq->alloc;
+      SetEvent (wq->array[index]);
+    }
+  wq->count = 0;
+  wq->offset = 0;
+}
+
+void
+glthread_rwlock_init_func (gl_rwlock_t *lock)
+{
+  InitializeCriticalSection (&lock->lock);
+  gl_waitqueue_init (&lock->waiting_readers);
+  gl_waitqueue_init (&lock->waiting_writers);
+  lock->runcount = 0;
+  lock->guard.done = 1;
+}
+
+int
+glthread_rwlock_rdlock_func (gl_rwlock_t *lock)
+{
+  if (!lock->guard.done)
+    {
+      if (InterlockedIncrement (&lock->guard.started) == 0)
+        /* This thread is the first one to need this lock.  Initialize it.  */
+        glthread_rwlock_init (lock);
+      else
+        /* Yield the CPU while waiting for another thread to finish
+           initializing this lock.  */
+        while (!lock->guard.done)
+          Sleep (0);
+    }
+  EnterCriticalSection (&lock->lock);
+  /* Test whether only readers are currently running, and whether the runcount
+     field will not overflow.  */
+  if (!(lock->runcount + 1 > 0))
+    {
+      /* This thread has to wait for a while.  Enqueue it among the
+         waiting_readers.  */
+      HANDLE event = gl_waitqueue_add (&lock->waiting_readers);
+      if (event != INVALID_HANDLE_VALUE)
+        {
+          DWORD result;
+          LeaveCriticalSection (&lock->lock);
+          /* Wait until another thread signals this event.  */
+          result = WaitForSingleObject (event, INFINITE);
+          if (result == WAIT_FAILED || result == WAIT_TIMEOUT)
+            abort ();
+          CloseHandle (event);
+          /* The thread which signalled the event already did the bookkeeping:
+             removed us from the waiting_readers, incremented lock->runcount.  */
+          if (!(lock->runcount > 0))
+            abort ();
+          return 0;
+        }
+      else
+        {
+          /* Allocation failure.  Weird.  */
+          do
+            {
+              LeaveCriticalSection (&lock->lock);
+              Sleep (1);
+              EnterCriticalSection (&lock->lock);
+            }
+          while (!(lock->runcount + 1 > 0));
+        }
+    }
+  lock->runcount++;
+  LeaveCriticalSection (&lock->lock);
+  return 0;
+}
+
+int
+glthread_rwlock_wrlock_func (gl_rwlock_t *lock)
+{
+  if (!lock->guard.done)
+    {
+      if (InterlockedIncrement (&lock->guard.started) == 0)
+        /* This thread is the first one to need this lock.  Initialize it.  */
+        glthread_rwlock_init (lock);
+      else
+        /* Yield the CPU while waiting for another thread to finish
+           initializing this lock.  */
+        while (!lock->guard.done)
+          Sleep (0);
+    }
+  EnterCriticalSection (&lock->lock);
+  /* Test whether no readers or writers are currently running.  */
+  if (!(lock->runcount == 0))
+    {
+      /* This thread has to wait for a while.  Enqueue it among the
+         waiting_writers.  */
+      HANDLE event = gl_waitqueue_add (&lock->waiting_writers);
+      if (event != INVALID_HANDLE_VALUE)
+        {
+          DWORD result;
+          LeaveCriticalSection (&lock->lock);
+          /* Wait until another thread signals this event.  */
+          result = WaitForSingleObject (event, INFINITE);
+          if (result == WAIT_FAILED || result == WAIT_TIMEOUT)
+            abort ();
+          CloseHandle (event);
+          /* The thread which signalled the event already did the bookkeeping:
+             removed us from the waiting_writers, set lock->runcount = -1.  */
+          if (!(lock->runcount == -1))
+            abort ();
+          return 0;
+        }
+      else
+        {
+          /* Allocation failure.  Weird.  */
+          do
+            {
+              LeaveCriticalSection (&lock->lock);
+              Sleep (1);
+              EnterCriticalSection (&lock->lock);
+            }
+          while (!(lock->runcount == 0));
+        }
+    }
+  lock->runcount--; /* runcount becomes -1 */
+  LeaveCriticalSection (&lock->lock);
+  return 0;
+}
+
+int
+glthread_rwlock_unlock_func (gl_rwlock_t *lock)
+{
+  if (!lock->guard.done)
+    return EINVAL;
+  EnterCriticalSection (&lock->lock);
+  if (lock->runcount < 0)
+    {
+      /* Drop a writer lock.  */
+      if (!(lock->runcount == -1))
+        abort ();
+      lock->runcount = 0;
+    }
+  else
+    {
+      /* Drop a reader lock.  */
+      if (!(lock->runcount > 0))
+        {
+          LeaveCriticalSection (&lock->lock);
+          return EPERM;
+        }
+      lock->runcount--;
+    }
+  if (lock->runcount == 0)
+    {
+      /* POSIX recommends that "write locks shall take precedence over read
+         locks", to avoid "writer starvation".  */
+      if (lock->waiting_writers.count > 0)
+        {
+          /* Wake up one of the waiting writers.  */
+          lock->runcount--;
+          gl_waitqueue_notify_first (&lock->waiting_writers);
+        }
+      else
+        {
+          /* Wake up all waiting readers.  */
+          lock->runcount += lock->waiting_readers.count;
+          gl_waitqueue_notify_all (&lock->waiting_readers);
+        }
+    }
+  LeaveCriticalSection (&lock->lock);
+  return 0;
+}
+
+int
+glthread_rwlock_destroy_func (gl_rwlock_t *lock)
+{
+  if (!lock->guard.done)
+    return EINVAL;
+  if (lock->runcount != 0)
+    return EBUSY;
+  DeleteCriticalSection (&lock->lock);
+  if (lock->waiting_readers.array != NULL)
+    free (lock->waiting_readers.array);
+  if (lock->waiting_writers.array != NULL)
+    free (lock->waiting_writers.array);
+  lock->guard.done = 0;
+  return 0;
+}
+
+/* --------------------- gl_recursive_lock_t datatype --------------------- */
+
+void
+glthread_recursive_lock_init_func (gl_recursive_lock_t *lock)
+{
+  lock->owner = 0;
+  lock->depth = 0;
+  InitializeCriticalSection (&lock->lock);
+  lock->guard.done = 1;
+}
+
+int
+glthread_recursive_lock_lock_func (gl_recursive_lock_t *lock)
+{
+  if (!lock->guard.done)
+    {
+      if (InterlockedIncrement (&lock->guard.started) == 0)
+        /* This thread is the first one to need this lock.  Initialize it.  */
+        glthread_recursive_lock_init (lock);
+      else
+        /* Yield the CPU while waiting for another thread to finish
+           initializing this lock.  */
+        while (!lock->guard.done)
+          Sleep (0);
+    }
+  {
+    DWORD self = GetCurrentThreadId ();
+    if (lock->owner != self)
+      {
+        EnterCriticalSection (&lock->lock);
+        lock->owner = self;
+      }
+    if (++(lock->depth) == 0) /* wraparound? */
+      {
+        lock->depth--;
+        return EAGAIN;
+      }
+  }
+  return 0;
+}
+
+int
+glthread_recursive_lock_unlock_func (gl_recursive_lock_t *lock)
+{
+  if (lock->owner != GetCurrentThreadId ())
+    return EPERM;
+  if (lock->depth == 0)
+    return EINVAL;
+  if (--(lock->depth) == 0)
+    {
+      lock->owner = 0;
+      LeaveCriticalSection (&lock->lock);
+    }
+  return 0;
+}
+
+int
+glthread_recursive_lock_destroy_func (gl_recursive_lock_t *lock)
+{
+  if (lock->owner != 0)
+    return EBUSY;
+  DeleteCriticalSection (&lock->lock);
+  lock->guard.done = 0;
+  return 0;
+}
+
+/* -------------------------- gl_once_t datatype -------------------------- */
+
+void
+glthread_once_func (gl_once_t *once_control, void (*initfunction) (void))
+{
+  if (once_control->inited <= 0)
+    {
+      if (InterlockedIncrement (&once_control->started) == 0)
+        {
+          /* This thread is the first one to come to this once_control.  */
+          InitializeCriticalSection (&once_control->lock);
+          EnterCriticalSection (&once_control->lock);
+          once_control->inited = 0;
+          initfunction ();
+          once_control->inited = 1;
+          LeaveCriticalSection (&once_control->lock);
+        }
+      else
+        {
+          /* Undo last operation.  */
+          InterlockedDecrement (&once_control->started);
+          /* Some other thread has already started the initialization.
+             Yield the CPU while waiting for the other thread to finish
+             initializing and taking the lock.  */
+          while (once_control->inited < 0)
+            Sleep (0);
+          if (once_control->inited <= 0)
+            {
+              /* Take the lock.  This blocks until the other thread has
+                 finished calling the initfunction.  */
+              EnterCriticalSection (&once_control->lock);
+              LeaveCriticalSection (&once_control->lock);
+              if (!(once_control->inited > 0))
+                abort ();
+            }
+        }
+    }
+}
+
+#endif
+
+/* ========================================================================= */
diff --git a/lib/glthread/lock.h b/lib/glthread/lock.h
new file mode 100644 (file)
index 0000000..66cb617
--- /dev/null
@@ -0,0 +1,929 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Locking in multithreaded situations.
+   Copyright (C) 2005-2011 Free Software Foundation, 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; either version 3, 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.  */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2005.
+   Based on GCC's gthr-posix.h, gthr-posix95.h, gthr-solaris.h,
+   gthr-win32.h.  */
+
+/* This file contains locking primitives for use with a given thread library.
+   It does not contain primitives for creating threads or for other
+   synchronization primitives.
+
+   Normal (non-recursive) locks:
+     Type:                gl_lock_t
+     Declaration:         gl_lock_define(extern, name)
+     Initializer:         gl_lock_define_initialized(, name)
+     Initialization:      gl_lock_init (name);
+     Taking the lock:     gl_lock_lock (name);
+     Releasing the lock:  gl_lock_unlock (name);
+     De-initialization:   gl_lock_destroy (name);
+   Equivalent functions with control of error handling:
+     Initialization:      err = glthread_lock_init (&name);
+     Taking the lock:     err = glthread_lock_lock (&name);
+     Releasing the lock:  err = glthread_lock_unlock (&name);
+     De-initialization:   err = glthread_lock_destroy (&name);
+
+   Read-Write (non-recursive) locks:
+     Type:                gl_rwlock_t
+     Declaration:         gl_rwlock_define(extern, name)
+     Initializer:         gl_rwlock_define_initialized(, name)
+     Initialization:      gl_rwlock_init (name);
+     Taking the lock:     gl_rwlock_rdlock (name);
+                          gl_rwlock_wrlock (name);
+     Releasing the lock:  gl_rwlock_unlock (name);
+     De-initialization:   gl_rwlock_destroy (name);
+   Equivalent functions with control of error handling:
+     Initialization:      err = glthread_rwlock_init (&name);
+     Taking the lock:     err = glthread_rwlock_rdlock (&name);
+                          err = glthread_rwlock_wrlock (&name);
+     Releasing the lock:  err = glthread_rwlock_unlock (&name);
+     De-initialization:   err = glthread_rwlock_destroy (&name);
+
+   Recursive locks:
+     Type:                gl_recursive_lock_t
+     Declaration:         gl_recursive_lock_define(extern, name)
+     Initializer:         gl_recursive_lock_define_initialized(, name)
+     Initialization:      gl_recursive_lock_init (name);
+     Taking the lock:     gl_recursive_lock_lock (name);
+     Releasing the lock:  gl_recursive_lock_unlock (name);
+     De-initialization:   gl_recursive_lock_destroy (name);
+   Equivalent functions with control of error handling:
+     Initialization:      err = glthread_recursive_lock_init (&name);
+     Taking the lock:     err = glthread_recursive_lock_lock (&name);
+     Releasing the lock:  err = glthread_recursive_lock_unlock (&name);
+     De-initialization:   err = glthread_recursive_lock_destroy (&name);
+
+  Once-only execution:
+     Type:                gl_once_t
+     Initializer:         gl_once_define(extern, name)
+     Execution:           gl_once (name, initfunction);
+   Equivalent functions with control of error handling:
+     Execution:           err = glthread_once (&name, initfunction);
+*/
+
+
+#ifndef _LOCK_H
+#define _LOCK_H
+
+#include <errno.h>
+#include <stdlib.h>
+
+/* ========================================================================= */
+
+#if USE_POSIX_THREADS
+
+/* Use the POSIX threads library.  */
+
+# include <pthread.h>
+
+# ifdef __cplusplus
+extern "C" {
+# endif
+
+# if PTHREAD_IN_USE_DETECTION_HARD
+
+/* The pthread_in_use() detection needs to be done at runtime.  */
+#  define pthread_in_use() \
+     glthread_in_use ()
+extern int glthread_in_use (void);
+
+# endif
+
+# if USE_POSIX_THREADS_WEAK
+
+/* Use weak references to the POSIX threads library.  */
+
+/* Weak references avoid dragging in external libraries if the other parts
+   of the program don't use them.  Here we use them, because we don't want
+   every program that uses libintl to depend on libpthread.  This assumes
+   that libpthread would not be loaded after libintl; i.e. if libintl is
+   loaded first, by an executable that does not depend on libpthread, and
+   then a module is dynamically loaded that depends on libpthread, libintl
+   will not be multithread-safe.  */
+
+/* The way to test at runtime whether libpthread is present is to test
+   whether a function pointer's value, such as &pthread_mutex_init, is
+   non-NULL.  However, some versions of GCC have a bug through which, in
+   PIC mode, &foo != NULL always evaluates to true if there is a direct
+   call to foo(...) in the same function.  To avoid this, we test the
+   address of a function in libpthread that we don't use.  */
+
+#  pragma weak pthread_mutex_init
+#  pragma weak pthread_mutex_lock
+#  pragma weak pthread_mutex_unlock
+#  pragma weak pthread_mutex_destroy
+#  pragma weak pthread_rwlock_init
+#  pragma weak pthread_rwlock_rdlock
+#  pragma weak pthread_rwlock_wrlock
+#  pragma weak pthread_rwlock_unlock
+#  pragma weak pthread_rwlock_destroy
+#  pragma weak pthread_once
+#  pragma weak pthread_cond_init
+#  pragma weak pthread_cond_wait
+#  pragma weak pthread_cond_signal
+#  pragma weak pthread_cond_broadcast
+#  pragma weak pthread_cond_destroy
+#  pragma weak pthread_mutexattr_init
+#  pragma weak pthread_mutexattr_settype
+#  pragma weak pthread_mutexattr_destroy
+#  ifndef pthread_self
+#   pragma weak pthread_self
+#  endif
+
+#  if !PTHREAD_IN_USE_DETECTION_HARD
+#   pragma weak pthread_cancel
+#   define pthread_in_use() (pthread_cancel != NULL)
+#  endif
+
+# else
+
+#  if !PTHREAD_IN_USE_DETECTION_HARD
+#   define pthread_in_use() 1
+#  endif
+
+# endif
+
+/* -------------------------- gl_lock_t datatype -------------------------- */
+
+typedef pthread_mutex_t gl_lock_t;
+# define gl_lock_define(STORAGECLASS, NAME) \
+    STORAGECLASS pthread_mutex_t NAME;
+# define gl_lock_define_initialized(STORAGECLASS, NAME) \
+    STORAGECLASS pthread_mutex_t NAME = gl_lock_initializer;
+# define gl_lock_initializer \
+    PTHREAD_MUTEX_INITIALIZER
+# define glthread_lock_init(LOCK) \
+    (pthread_in_use () ? pthread_mutex_init (LOCK, NULL) : 0)
+# define glthread_lock_lock(LOCK) \
+    (pthread_in_use () ? pthread_mutex_lock (LOCK) : 0)
+# define glthread_lock_unlock(LOCK) \
+    (pthread_in_use () ? pthread_mutex_unlock (LOCK) : 0)
+# define glthread_lock_destroy(LOCK) \
+    (pthread_in_use () ? pthread_mutex_destroy (LOCK) : 0)
+
+/* ------------------------- gl_rwlock_t datatype ------------------------- */
+
+# if HAVE_PTHREAD_RWLOCK
+
+#  ifdef PTHREAD_RWLOCK_INITIALIZER
+
+typedef pthread_rwlock_t gl_rwlock_t;
+#   define gl_rwlock_define(STORAGECLASS, NAME) \
+      STORAGECLASS pthread_rwlock_t NAME;
+#   define gl_rwlock_define_initialized(STORAGECLASS, NAME) \
+      STORAGECLASS pthread_rwlock_t NAME = gl_rwlock_initializer;
+#   define gl_rwlock_initializer \
+      PTHREAD_RWLOCK_INITIALIZER
+#   define glthread_rwlock_init(LOCK) \
+      (pthread_in_use () ? pthread_rwlock_init (LOCK, NULL) : 0)
+#   define glthread_rwlock_rdlock(LOCK) \
+      (pthread_in_use () ? pthread_rwlock_rdlock (LOCK) : 0)
+#   define glthread_rwlock_wrlock(LOCK) \
+      (pthread_in_use () ? pthread_rwlock_wrlock (LOCK) : 0)
+#   define glthread_rwlock_unlock(LOCK) \
+      (pthread_in_use () ? pthread_rwlock_unlock (LOCK) : 0)
+#   define glthread_rwlock_destroy(LOCK) \
+      (pthread_in_use () ? pthread_rwlock_destroy (LOCK) : 0)
+
+#  else
+
+typedef struct
+        {
+          int initialized;
+          pthread_mutex_t guard;   /* protects the initialization */
+          pthread_rwlock_t rwlock; /* read-write lock */
+        }
+        gl_rwlock_t;
+#   define gl_rwlock_define(STORAGECLASS, NAME) \
+      STORAGECLASS gl_rwlock_t NAME;
+#   define gl_rwlock_define_initialized(STORAGECLASS, NAME) \
+      STORAGECLASS gl_rwlock_t NAME = gl_rwlock_initializer;
+#   define gl_rwlock_initializer \
+      { 0, PTHREAD_MUTEX_INITIALIZER }
+#   define glthread_rwlock_init(LOCK) \
+      (pthread_in_use () ? glthread_rwlock_init_multithreaded (LOCK) : 0)
+#   define glthread_rwlock_rdlock(LOCK) \
+      (pthread_in_use () ? glthread_rwlock_rdlock_multithreaded (LOCK) : 0)
+#   define glthread_rwlock_wrlock(LOCK) \
+      (pthread_in_use () ? glthread_rwlock_wrlock_multithreaded (LOCK) : 0)
+#   define glthread_rwlock_unlock(LOCK) \
+      (pthread_in_use () ? glthread_rwlock_unlock_multithreaded (LOCK) : 0)
+#   define glthread_rwlock_destroy(LOCK) \
+      (pthread_in_use () ? glthread_rwlock_destroy_multithreaded (LOCK) : 0)
+extern int glthread_rwlock_init_multithreaded (gl_rwlock_t *lock);
+extern int glthread_rwlock_rdlock_multithreaded (gl_rwlock_t *lock);
+extern int glthread_rwlock_wrlock_multithreaded (gl_rwlock_t *lock);
+extern int glthread_rwlock_unlock_multithreaded (gl_rwlock_t *lock);
+extern int glthread_rwlock_destroy_multithreaded (gl_rwlock_t *lock);
+
+#  endif
+
+# else
+
+typedef struct
+        {
+          pthread_mutex_t lock; /* protects the remaining fields */
+          pthread_cond_t waiting_readers; /* waiting readers */
+          pthread_cond_t waiting_writers; /* waiting writers */
+          unsigned int waiting_writers_count; /* number of waiting writers */
+          int runcount; /* number of readers running, or -1 when a writer runs */
+        }
+        gl_rwlock_t;
+# define gl_rwlock_define(STORAGECLASS, NAME) \
+    STORAGECLASS gl_rwlock_t NAME;
+# define gl_rwlock_define_initialized(STORAGECLASS, NAME) \
+    STORAGECLASS gl_rwlock_t NAME = gl_rwlock_initializer;
+# define gl_rwlock_initializer \
+    { PTHREAD_MUTEX_INITIALIZER, PTHREAD_COND_INITIALIZER, PTHREAD_COND_INITIALIZER, 0, 0 }
+# define glthread_rwlock_init(LOCK) \
+    (pthread_in_use () ? glthread_rwlock_init_multithreaded (LOCK) : 0)
+# define glthread_rwlock_rdlock(LOCK) \
+    (pthread_in_use () ? glthread_rwlock_rdlock_multithreaded (LOCK) : 0)
+# define glthread_rwlock_wrlock(LOCK) \
+    (pthread_in_use () ? glthread_rwlock_wrlock_multithreaded (LOCK) : 0)
+# define glthread_rwlock_unlock(LOCK) \
+    (pthread_in_use () ? glthread_rwlock_unlock_multithreaded (LOCK) : 0)
+# define glthread_rwlock_destroy(LOCK) \
+    (pthread_in_use () ? glthread_rwlock_destroy_multithreaded (LOCK) : 0)
+extern int glthread_rwlock_init_multithreaded (gl_rwlock_t *lock);
+extern int glthread_rwlock_rdlock_multithreaded (gl_rwlock_t *lock);
+extern int glthread_rwlock_wrlock_multithreaded (gl_rwlock_t *lock);
+extern int glthread_rwlock_unlock_multithreaded (gl_rwlock_t *lock);
+extern int glthread_rwlock_destroy_multithreaded (gl_rwlock_t *lock);
+
+# endif
+
+/* --------------------- gl_recursive_lock_t datatype --------------------- */
+
+# if HAVE_PTHREAD_MUTEX_RECURSIVE
+
+#  if defined PTHREAD_RECURSIVE_MUTEX_INITIALIZER || defined PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
+
+typedef pthread_mutex_t gl_recursive_lock_t;
+#   define gl_recursive_lock_define(STORAGECLASS, NAME) \
+      STORAGECLASS pthread_mutex_t NAME;
+#   define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) \
+      STORAGECLASS pthread_mutex_t NAME = gl_recursive_lock_initializer;
+#   ifdef PTHREAD_RECURSIVE_MUTEX_INITIALIZER
+#    define gl_recursive_lock_initializer \
+       PTHREAD_RECURSIVE_MUTEX_INITIALIZER
+#   else
+#    define gl_recursive_lock_initializer \
+       PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
+#   endif
+#   define glthread_recursive_lock_init(LOCK) \
+      (pthread_in_use () ? glthread_recursive_lock_init_multithreaded (LOCK) : 0)
+#   define glthread_recursive_lock_lock(LOCK) \
+      (pthread_in_use () ? pthread_mutex_lock (LOCK) : 0)
+#   define glthread_recursive_lock_unlock(LOCK) \
+      (pthread_in_use () ? pthread_mutex_unlock (LOCK) : 0)
+#   define glthread_recursive_lock_destroy(LOCK) \
+      (pthread_in_use () ? pthread_mutex_destroy (LOCK) : 0)
+extern int glthread_recursive_lock_init_multithreaded (gl_recursive_lock_t *lock);
+
+#  else
+
+typedef struct
+        {
+          pthread_mutex_t recmutex; /* recursive mutex */
+          pthread_mutex_t guard;    /* protects the initialization */
+          int initialized;
+        }
+        gl_recursive_lock_t;
+#   define gl_recursive_lock_define(STORAGECLASS, NAME) \
+      STORAGECLASS gl_recursive_lock_t NAME;
+#   define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) \
+      STORAGECLASS gl_recursive_lock_t NAME = gl_recursive_lock_initializer;
+#   define gl_recursive_lock_initializer \
+      { PTHREAD_MUTEX_INITIALIZER, PTHREAD_MUTEX_INITIALIZER, 0 }
+#   define glthread_recursive_lock_init(LOCK) \
+      (pthread_in_use () ? glthread_recursive_lock_init_multithreaded (LOCK) : 0)
+#   define glthread_recursive_lock_lock(LOCK) \
+      (pthread_in_use () ? glthread_recursive_lock_lock_multithreaded (LOCK) : 0)
+#   define glthread_recursive_lock_unlock(LOCK) \
+      (pthread_in_use () ? glthread_recursive_lock_unlock_multithreaded (LOCK) : 0)
+#   define glthread_recursive_lock_destroy(LOCK) \
+      (pthread_in_use () ? glthread_recursive_lock_destroy_multithreaded (LOCK) : 0)
+extern int glthread_recursive_lock_init_multithreaded (gl_recursive_lock_t *lock);
+extern int glthread_recursive_lock_lock_multithreaded (gl_recursive_lock_t *lock);
+extern int glthread_recursive_lock_unlock_multithreaded (gl_recursive_lock_t *lock);
+extern int glthread_recursive_lock_destroy_multithreaded (gl_recursive_lock_t *lock);
+
+#  endif
+
+# else
+
+/* Old versions of POSIX threads on Solaris did not have recursive locks.
+   We have to implement them ourselves.  */
+
+typedef struct
+        {
+          pthread_mutex_t mutex;
+          pthread_t owner;
+          unsigned long depth;
+        }
+        gl_recursive_lock_t;
+#  define gl_recursive_lock_define(STORAGECLASS, NAME) \
+     STORAGECLASS gl_recursive_lock_t NAME;
+#  define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) \
+     STORAGECLASS gl_recursive_lock_t NAME = gl_recursive_lock_initializer;
+#  define gl_recursive_lock_initializer \
+     { PTHREAD_MUTEX_INITIALIZER, (pthread_t) 0, 0 }
+#  define glthread_recursive_lock_init(LOCK) \
+     (pthread_in_use () ? glthread_recursive_lock_init_multithreaded (LOCK) : 0)
+#  define glthread_recursive_lock_lock(LOCK) \
+     (pthread_in_use () ? glthread_recursive_lock_lock_multithreaded (LOCK) : 0)
+#  define glthread_recursive_lock_unlock(LOCK) \
+     (pthread_in_use () ? glthread_recursive_lock_unlock_multithreaded (LOCK) : 0)
+#  define glthread_recursive_lock_destroy(LOCK) \
+     (pthread_in_use () ? glthread_recursive_lock_destroy_multithreaded (LOCK) : 0)
+extern int glthread_recursive_lock_init_multithreaded (gl_recursive_lock_t *lock);
+extern int glthread_recursive_lock_lock_multithreaded (gl_recursive_lock_t *lock);
+extern int glthread_recursive_lock_unlock_multithreaded (gl_recursive_lock_t *lock);
+extern int glthread_recursive_lock_destroy_multithreaded (gl_recursive_lock_t *lock);
+
+# endif
+
+/* -------------------------- gl_once_t datatype -------------------------- */
+
+typedef pthread_once_t gl_once_t;
+# define gl_once_define(STORAGECLASS, NAME) \
+    STORAGECLASS pthread_once_t NAME = PTHREAD_ONCE_INIT;
+# define glthread_once(ONCE_CONTROL, INITFUNCTION) \
+    (pthread_in_use ()                                                         \
+     ? pthread_once (ONCE_CONTROL, INITFUNCTION)                               \
+     : (glthread_once_singlethreaded (ONCE_CONTROL) ? (INITFUNCTION (), 0) : 0))
+extern int glthread_once_singlethreaded (pthread_once_t *once_control);
+
+# ifdef __cplusplus
+}
+# endif
+
+#endif
+
+/* ========================================================================= */
+
+#if USE_PTH_THREADS
+
+/* Use the GNU Pth threads library.  */
+
+# include <pth.h>
+
+# ifdef __cplusplus
+extern "C" {
+# endif
+
+# if USE_PTH_THREADS_WEAK
+
+/* Use weak references to the GNU Pth threads library.  */
+
+#  pragma weak pth_mutex_init
+#  pragma weak pth_mutex_acquire
+#  pragma weak pth_mutex_release
+#  pragma weak pth_rwlock_init
+#  pragma weak pth_rwlock_acquire
+#  pragma weak pth_rwlock_release
+#  pragma weak pth_once
+
+#  pragma weak pth_cancel
+#  define pth_in_use() (pth_cancel != NULL)
+
+# else
+
+#  define pth_in_use() 1
+
+# endif
+
+/* -------------------------- gl_lock_t datatype -------------------------- */
+
+typedef pth_mutex_t gl_lock_t;
+# define gl_lock_define(STORAGECLASS, NAME) \
+    STORAGECLASS pth_mutex_t NAME;
+# define gl_lock_define_initialized(STORAGECLASS, NAME) \
+    STORAGECLASS pth_mutex_t NAME = gl_lock_initializer;
+# define gl_lock_initializer \
+    PTH_MUTEX_INIT
+# define glthread_lock_init(LOCK) \
+    (pth_in_use () && !pth_mutex_init (LOCK) ? errno : 0)
+# define glthread_lock_lock(LOCK) \
+    (pth_in_use () && !pth_mutex_acquire (LOCK, 0, NULL) ? errno : 0)
+# define glthread_lock_unlock(LOCK) \
+    (pth_in_use () && !pth_mutex_release (LOCK) ? errno : 0)
+# define glthread_lock_destroy(LOCK) \
+    ((void)(LOCK), 0)
+
+/* ------------------------- gl_rwlock_t datatype ------------------------- */
+
+typedef pth_rwlock_t gl_rwlock_t;
+#  define gl_rwlock_define(STORAGECLASS, NAME) \
+     STORAGECLASS pth_rwlock_t NAME;
+#  define gl_rwlock_define_initialized(STORAGECLASS, NAME) \
+     STORAGECLASS pth_rwlock_t NAME = gl_rwlock_initializer;
+#  define gl_rwlock_initializer \
+     PTH_RWLOCK_INIT
+#  define glthread_rwlock_init(LOCK) \
+     (pth_in_use () && !pth_rwlock_init (LOCK) ? errno : 0)
+#  define glthread_rwlock_rdlock(LOCK) \
+     (pth_in_use () && !pth_rwlock_acquire (LOCK, PTH_RWLOCK_RD, 0, NULL) ? errno : 0)
+#  define glthread_rwlock_wrlock(LOCK) \
+     (pth_in_use () && !pth_rwlock_acquire (LOCK, PTH_RWLOCK_RW, 0, NULL) ? errno : 0)
+#  define glthread_rwlock_unlock(LOCK) \
+     (pth_in_use () && !pth_rwlock_release (LOCK) ? errno : 0)
+#  define glthread_rwlock_destroy(LOCK) \
+     ((void)(LOCK), 0)
+
+/* --------------------- gl_recursive_lock_t datatype --------------------- */
+
+/* In Pth, mutexes are recursive by default.  */
+typedef pth_mutex_t gl_recursive_lock_t;
+#  define gl_recursive_lock_define(STORAGECLASS, NAME) \
+     STORAGECLASS pth_mutex_t NAME;
+#  define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) \
+     STORAGECLASS pth_mutex_t NAME = gl_recursive_lock_initializer;
+#  define gl_recursive_lock_initializer \
+     PTH_MUTEX_INIT
+#  define glthread_recursive_lock_init(LOCK) \
+     (pth_in_use () && !pth_mutex_init (LOCK) ? errno : 0)
+#  define glthread_recursive_lock_lock(LOCK) \
+     (pth_in_use () && !pth_mutex_acquire (LOCK, 0, NULL) ? errno : 0)
+#  define glthread_recursive_lock_unlock(LOCK) \
+     (pth_in_use () && !pth_mutex_release (LOCK) ? errno : 0)
+#  define glthread_recursive_lock_destroy(LOCK) \
+     ((void)(LOCK), 0)
+
+/* -------------------------- gl_once_t datatype -------------------------- */
+
+typedef pth_once_t gl_once_t;
+# define gl_once_define(STORAGECLASS, NAME) \
+    STORAGECLASS pth_once_t NAME = PTH_ONCE_INIT;
+# define glthread_once(ONCE_CONTROL, INITFUNCTION) \
+    (pth_in_use ()                                                             \
+     ? glthread_once_multithreaded (ONCE_CONTROL, INITFUNCTION)                \
+     : (glthread_once_singlethreaded (ONCE_CONTROL) ? (INITFUNCTION (), 0) : 0))
+extern int glthread_once_multithreaded (pth_once_t *once_control, void (*initfunction) (void));
+extern int glthread_once_singlethreaded (pth_once_t *once_control);
+
+# ifdef __cplusplus
+}
+# endif
+
+#endif
+
+/* ========================================================================= */
+
+#if USE_SOLARIS_THREADS
+
+/* Use the old Solaris threads library.  */
+
+# include <thread.h>
+# include <synch.h>
+
+# ifdef __cplusplus
+extern "C" {
+# endif
+
+# if USE_SOLARIS_THREADS_WEAK
+
+/* Use weak references to the old Solaris threads library.  */
+
+#  pragma weak mutex_init
+#  pragma weak mutex_lock
+#  pragma weak mutex_unlock
+#  pragma weak mutex_destroy
+#  pragma weak rwlock_init
+#  pragma weak rw_rdlock
+#  pragma weak rw_wrlock
+#  pragma weak rw_unlock
+#  pragma weak rwlock_destroy
+#  pragma weak thr_self
+
+#  pragma weak thr_suspend
+#  define thread_in_use() (thr_suspend != NULL)
+
+# else
+
+#  define thread_in_use() 1
+
+# endif
+
+/* -------------------------- gl_lock_t datatype -------------------------- */
+
+typedef mutex_t gl_lock_t;
+# define gl_lock_define(STORAGECLASS, NAME) \
+    STORAGECLASS mutex_t NAME;
+# define gl_lock_define_initialized(STORAGECLASS, NAME) \
+    STORAGECLASS mutex_t NAME = gl_lock_initializer;
+# define gl_lock_initializer \
+    DEFAULTMUTEX
+# define glthread_lock_init(LOCK) \
+    (thread_in_use () ? mutex_init (LOCK, USYNC_THREAD, NULL) : 0)
+# define glthread_lock_lock(LOCK) \
+    (thread_in_use () ? mutex_lock (LOCK) : 0)
+# define glthread_lock_unlock(LOCK) \
+    (thread_in_use () ? mutex_unlock (LOCK) : 0)
+# define glthread_lock_destroy(LOCK) \
+    (thread_in_use () ? mutex_destroy (LOCK) : 0)
+
+/* ------------------------- gl_rwlock_t datatype ------------------------- */
+
+typedef rwlock_t gl_rwlock_t;
+# define gl_rwlock_define(STORAGECLASS, NAME) \
+    STORAGECLASS rwlock_t NAME;
+# define gl_rwlock_define_initialized(STORAGECLASS, NAME) \
+    STORAGECLASS rwlock_t NAME = gl_rwlock_initializer;
+# define gl_rwlock_initializer \
+    DEFAULTRWLOCK
+# define glthread_rwlock_init(LOCK) \
+    (thread_in_use () ? rwlock_init (LOCK, USYNC_THREAD, NULL) : 0)
+# define glthread_rwlock_rdlock(LOCK) \
+    (thread_in_use () ? rw_rdlock (LOCK) : 0)
+# define glthread_rwlock_wrlock(LOCK) \
+    (thread_in_use () ? rw_wrlock (LOCK) : 0)
+# define glthread_rwlock_unlock(LOCK) \
+    (thread_in_use () ? rw_unlock (LOCK) : 0)
+# define glthread_rwlock_destroy(LOCK) \
+    (thread_in_use () ? rwlock_destroy (LOCK) : 0)
+
+/* --------------------- gl_recursive_lock_t datatype --------------------- */
+
+/* Old Solaris threads did not have recursive locks.
+   We have to implement them ourselves.  */
+
+typedef struct
+        {
+          mutex_t mutex;
+          thread_t owner;
+          unsigned long depth;
+        }
+        gl_recursive_lock_t;
+# define gl_recursive_lock_define(STORAGECLASS, NAME) \
+    STORAGECLASS gl_recursive_lock_t NAME;
+# define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) \
+    STORAGECLASS gl_recursive_lock_t NAME = gl_recursive_lock_initializer;
+# define gl_recursive_lock_initializer \
+    { DEFAULTMUTEX, (thread_t) 0, 0 }
+# define glthread_recursive_lock_init(LOCK) \
+    (thread_in_use () ? glthread_recursive_lock_init_multithreaded (LOCK) : 0)
+# define glthread_recursive_lock_lock(LOCK) \
+    (thread_in_use () ? glthread_recursive_lock_lock_multithreaded (LOCK) : 0)
+# define glthread_recursive_lock_unlock(LOCK) \
+    (thread_in_use () ? glthread_recursive_lock_unlock_multithreaded (LOCK) : 0)
+# define glthread_recursive_lock_destroy(LOCK) \
+    (thread_in_use () ? glthread_recursive_lock_destroy_multithreaded (LOCK) : 0)
+extern int glthread_recursive_lock_init_multithreaded (gl_recursive_lock_t *lock);
+extern int glthread_recursive_lock_lock_multithreaded (gl_recursive_lock_t *lock);
+extern int glthread_recursive_lock_unlock_multithreaded (gl_recursive_lock_t *lock);
+extern int glthread_recursive_lock_destroy_multithreaded (gl_recursive_lock_t *lock);
+
+/* -------------------------- gl_once_t datatype -------------------------- */
+
+typedef struct
+        {
+          volatile int inited;
+          mutex_t mutex;
+        }
+        gl_once_t;
+# define gl_once_define(STORAGECLASS, NAME) \
+    STORAGECLASS gl_once_t NAME = { 0, DEFAULTMUTEX };
+# define glthread_once(ONCE_CONTROL, INITFUNCTION) \
+    (thread_in_use ()                                                          \
+     ? glthread_once_multithreaded (ONCE_CONTROL, INITFUNCTION)                \
+     : (glthread_once_singlethreaded (ONCE_CONTROL) ? (INITFUNCTION (), 0) : 0))
+extern int glthread_once_multithreaded (gl_once_t *once_control, void (*initfunction) (void));
+extern int glthread_once_singlethreaded (gl_once_t *once_control);
+
+# ifdef __cplusplus
+}
+# endif
+
+#endif
+
+/* ========================================================================= */
+
+#if USE_WIN32_THREADS
+
+# include <windows.h>
+
+# ifdef __cplusplus
+extern "C" {
+# endif
+
+/* We can use CRITICAL_SECTION directly, rather than the Win32 Event, Mutex,
+   Semaphore types, because
+     - we need only to synchronize inside a single process (address space),
+       not inter-process locking,
+     - we don't need to support trylock operations.  (TryEnterCriticalSection
+       does not work on Windows 95/98/ME.  Packages that need trylock usually
+       define their own mutex type.)  */
+
+/* There is no way to statically initialize a CRITICAL_SECTION.  It needs
+   to be done lazily, once only.  For this we need spinlocks.  */
+
+typedef struct { volatile int done; volatile long started; } gl_spinlock_t;
+
+/* -------------------------- gl_lock_t datatype -------------------------- */
+
+typedef struct
+        {
+          gl_spinlock_t guard; /* protects the initialization */
+          CRITICAL_SECTION lock;
+        }
+        gl_lock_t;
+# define gl_lock_define(STORAGECLASS, NAME) \
+    STORAGECLASS gl_lock_t NAME;
+# define gl_lock_define_initialized(STORAGECLASS, NAME) \
+    STORAGECLASS gl_lock_t NAME = gl_lock_initializer;
+# define gl_lock_initializer \
+    { { 0, -1 } }
+# define glthread_lock_init(LOCK) \
+    (glthread_lock_init_func (LOCK), 0)
+# define glthread_lock_lock(LOCK) \
+    glthread_lock_lock_func (LOCK)
+# define glthread_lock_unlock(LOCK) \
+    glthread_lock_unlock_func (LOCK)
+# define glthread_lock_destroy(LOCK) \
+    glthread_lock_destroy_func (LOCK)
+extern void glthread_lock_init_func (gl_lock_t *lock);
+extern int glthread_lock_lock_func (gl_lock_t *lock);
+extern int glthread_lock_unlock_func (gl_lock_t *lock);
+extern int glthread_lock_destroy_func (gl_lock_t *lock);
+
+/* ------------------------- gl_rwlock_t datatype ------------------------- */
+
+/* It is impossible to implement read-write locks using plain locks, without
+   introducing an extra thread dedicated to managing read-write locks.
+   Therefore here we need to use the low-level Event type.  */
+
+typedef struct
+        {
+          HANDLE *array; /* array of waiting threads, each represented by an event */
+          unsigned int count; /* number of waiting threads */
+          unsigned int alloc; /* length of allocated array */
+          unsigned int offset; /* index of first waiting thread in array */
+        }
+        gl_carray_waitqueue_t;
+typedef struct
+        {
+          gl_spinlock_t guard; /* protects the initialization */
+          CRITICAL_SECTION lock; /* protects the remaining fields */
+          gl_carray_waitqueue_t waiting_readers; /* waiting readers */
+          gl_carray_waitqueue_t waiting_writers; /* waiting writers */
+          int runcount; /* number of readers running, or -1 when a writer runs */
+        }
+        gl_rwlock_t;
+# define gl_rwlock_define(STORAGECLASS, NAME) \
+    STORAGECLASS gl_rwlock_t NAME;
+# define gl_rwlock_define_initialized(STORAGECLASS, NAME) \
+    STORAGECLASS gl_rwlock_t NAME = gl_rwlock_initializer;
+# define gl_rwlock_initializer \
+    { { 0, -1 } }
+# define glthread_rwlock_init(LOCK) \
+    (glthread_rwlock_init_func (LOCK), 0)
+# define glthread_rwlock_rdlock(LOCK) \
+    glthread_rwlock_rdlock_func (LOCK)
+# define glthread_rwlock_wrlock(LOCK) \
+    glthread_rwlock_wrlock_func (LOCK)
+# define glthread_rwlock_unlock(LOCK) \
+    glthread_rwlock_unlock_func (LOCK)
+# define glthread_rwlock_destroy(LOCK) \
+    glthread_rwlock_destroy_func (LOCK)
+extern void glthread_rwlock_init_func (gl_rwlock_t *lock);
+extern int glthread_rwlock_rdlock_func (gl_rwlock_t *lock);
+extern int glthread_rwlock_wrlock_func (gl_rwlock_t *lock);
+extern int glthread_rwlock_unlock_func (gl_rwlock_t *lock);
+extern int glthread_rwlock_destroy_func (gl_rwlock_t *lock);
+
+/* --------------------- gl_recursive_lock_t datatype --------------------- */
+
+/* The Win32 documentation says that CRITICAL_SECTION already implements a
+   recursive lock.  But we need not rely on it: It's easy to implement a
+   recursive lock without this assumption.  */
+
+typedef struct
+        {
+          gl_spinlock_t guard; /* protects the initialization */
+          DWORD owner;
+          unsigned long depth;
+          CRITICAL_SECTION lock;
+        }
+        gl_recursive_lock_t;
+# define gl_recursive_lock_define(STORAGECLASS, NAME) \
+    STORAGECLASS gl_recursive_lock_t NAME;
+# define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) \
+    STORAGECLASS gl_recursive_lock_t NAME = gl_recursive_lock_initializer;
+# define gl_recursive_lock_initializer \
+    { { 0, -1 }, 0, 0 }
+# define glthread_recursive_lock_init(LOCK) \
+    (glthread_recursive_lock_init_func (LOCK), 0)
+# define glthread_recursive_lock_lock(LOCK) \
+    glthread_recursive_lock_lock_func (LOCK)
+# define glthread_recursive_lock_unlock(LOCK) \
+    glthread_recursive_lock_unlock_func (LOCK)
+# define glthread_recursive_lock_destroy(LOCK) \
+    glthread_recursive_lock_destroy_func (LOCK)
+extern void glthread_recursive_lock_init_func (gl_recursive_lock_t *lock);
+extern int glthread_recursive_lock_lock_func (gl_recursive_lock_t *lock);
+extern int glthread_recursive_lock_unlock_func (gl_recursive_lock_t *lock);
+extern int glthread_recursive_lock_destroy_func (gl_recursive_lock_t *lock);
+
+/* -------------------------- gl_once_t datatype -------------------------- */
+
+typedef struct
+        {
+          volatile int inited;
+          volatile long started;
+          CRITICAL_SECTION lock;
+        }
+        gl_once_t;
+# define gl_once_define(STORAGECLASS, NAME) \
+    STORAGECLASS gl_once_t NAME = { -1, -1 };
+# define glthread_once(ONCE_CONTROL, INITFUNCTION) \
+    (glthread_once_func (ONCE_CONTROL, INITFUNCTION), 0)
+extern void glthread_once_func (gl_once_t *once_control, void (*initfunction) (void));
+
+# ifdef __cplusplus
+}
+# endif
+
+#endif
+
+/* ========================================================================= */
+
+#if !(USE_POSIX_THREADS || USE_PTH_THREADS || USE_SOLARIS_THREADS || USE_WIN32_THREADS)
+
+/* Provide dummy implementation if threads are not supported.  */
+
+/* -------------------------- gl_lock_t datatype -------------------------- */
+
+typedef int gl_lock_t;
+# define gl_lock_define(STORAGECLASS, NAME)
+# define gl_lock_define_initialized(STORAGECLASS, NAME)
+# define glthread_lock_init(NAME) 0
+# define glthread_lock_lock(NAME) 0
+# define glthread_lock_unlock(NAME) 0
+# define glthread_lock_destroy(NAME) 0
+
+/* ------------------------- gl_rwlock_t datatype ------------------------- */
+
+typedef int gl_rwlock_t;
+# define gl_rwlock_define(STORAGECLASS, NAME)
+# define gl_rwlock_define_initialized(STORAGECLASS, NAME)
+# define glthread_rwlock_init(NAME) 0
+# define glthread_rwlock_rdlock(NAME) 0
+# define glthread_rwlock_wrlock(NAME) 0
+# define glthread_rwlock_unlock(NAME) 0
+# define glthread_rwlock_destroy(NAME) 0
+
+/* --------------------- gl_recursive_lock_t datatype --------------------- */
+
+typedef int gl_recursive_lock_t;
+# define gl_recursive_lock_define(STORAGECLASS, NAME)
+# define gl_recursive_lock_define_initialized(STORAGECLASS, NAME)
+# define glthread_recursive_lock_init(NAME) 0
+# define glthread_recursive_lock_lock(NAME) 0
+# define glthread_recursive_lock_unlock(NAME) 0
+# define glthread_recursive_lock_destroy(NAME) 0
+
+/* -------------------------- gl_once_t datatype -------------------------- */
+
+typedef int gl_once_t;
+# define gl_once_define(STORAGECLASS, NAME) \
+    STORAGECLASS gl_once_t NAME = 0;
+# define glthread_once(ONCE_CONTROL, INITFUNCTION) \
+    (*(ONCE_CONTROL) == 0 ? (*(ONCE_CONTROL) = ~ 0, INITFUNCTION (), 0) : 0)
+
+#endif
+
+/* ========================================================================= */
+
+/* Macros with built-in error handling.  */
+
+/* -------------------------- gl_lock_t datatype -------------------------- */
+
+#define gl_lock_init(NAME) \
+   do                                  \
+     {                                 \
+       if (glthread_lock_init (&NAME)) \
+         abort ();                     \
+     }                                 \
+   while (0)
+#define gl_lock_lock(NAME) \
+   do                                  \
+     {                                 \
+       if (glthread_lock_lock (&NAME)) \
+         abort ();                     \
+     }                                 \
+   while (0)
+#define gl_lock_unlock(NAME) \
+   do                                    \
+     {                                   \
+       if (glthread_lock_unlock (&NAME)) \
+         abort ();                       \
+     }                                   \
+   while (0)
+#define gl_lock_destroy(NAME) \
+   do                                     \
+     {                                    \
+       if (glthread_lock_destroy (&NAME)) \
+         abort ();                        \
+     }                                    \
+   while (0)
+
+/* ------------------------- gl_rwlock_t datatype ------------------------- */
+
+#define gl_rwlock_init(NAME) \
+   do                                    \
+     {                                   \
+       if (glthread_rwlock_init (&NAME)) \
+         abort ();                       \
+     }                                   \
+   while (0)
+#define gl_rwlock_rdlock(NAME) \
+   do                                      \
+     {                                     \
+       if (glthread_rwlock_rdlock (&NAME)) \
+         abort ();                         \
+     }                                     \
+   while (0)
+#define gl_rwlock_wrlock(NAME) \
+   do                                      \
+     {                                     \
+       if (glthread_rwlock_wrlock (&NAME)) \
+         abort ();                         \
+     }                                     \
+   while (0)
+#define gl_rwlock_unlock(NAME) \
+   do                                      \
+     {                                     \
+       if (glthread_rwlock_unlock (&NAME)) \
+         abort ();                         \
+     }                                     \
+   while (0)
+#define gl_rwlock_destroy(NAME) \
+   do                                       \
+     {                                      \
+       if (glthread_rwlock_destroy (&NAME)) \
+         abort ();                          \
+     }                                      \
+   while (0)
+
+/* --------------------- gl_recursive_lock_t datatype --------------------- */
+
+#define gl_recursive_lock_init(NAME) \
+   do                                            \
+     {                                           \
+       if (glthread_recursive_lock_init (&NAME)) \
+         abort ();                               \
+     }                                           \
+   while (0)
+#define gl_recursive_lock_lock(NAME) \
+   do                                            \
+     {                                           \
+       if (glthread_recursive_lock_lock (&NAME)) \
+         abort ();                               \
+     }                                           \
+   while (0)
+#define gl_recursive_lock_unlock(NAME) \
+   do                                              \
+     {                                             \
+       if (glthread_recursive_lock_unlock (&NAME)) \
+         abort ();                                 \
+     }                                             \
+   while (0)
+#define gl_recursive_lock_destroy(NAME) \
+   do                                               \
+     {                                              \
+       if (glthread_recursive_lock_destroy (&NAME)) \
+         abort ();                                  \
+     }                                              \
+   while (0)
+
+/* -------------------------- gl_once_t datatype -------------------------- */
+
+#define gl_once(NAME, INITFUNCTION) \
+   do                                           \
+     {                                          \
+       if (glthread_once (&NAME, INITFUNCTION)) \
+         abort ();                              \
+     }                                          \
+   while (0)
+
+/* ========================================================================= */
+
+#endif /* _LOCK_H */
diff --git a/lib/glthread/threadlib.c b/lib/glthread/threadlib.c
new file mode 100644 (file)
index 0000000..0140162
--- /dev/null
@@ -0,0 +1,76 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Multithreading primitives.
+   Copyright (C) 2005-2011 Free Software Foundation, 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; either version 3, 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.  */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2005.  */
+
+#include <config.h>
+
+/* ========================================================================= */
+
+#if USE_POSIX_THREADS
+
+/* Use the POSIX threads library.  */
+
+# include <pthread.h>
+# include <stdlib.h>
+
+# if PTHREAD_IN_USE_DETECTION_HARD
+
+/* The function to be executed by a dummy thread.  */
+static void *
+dummy_thread_func (void *arg)
+{
+  return arg;
+}
+
+int
+glthread_in_use (void)
+{
+  static int tested;
+  static int result; /* 1: linked with -lpthread, 0: only with libc */
+
+  if (!tested)
+    {
+      pthread_t thread;
+
+      if (pthread_create (&thread, NULL, dummy_thread_func, NULL) != 0)
+        /* Thread creation failed.  */
+        result = 0;
+      else
+        {
+          /* Thread creation works.  */
+          void *retval;
+          if (pthread_join (thread, &retval) != 0)
+            abort ();
+          result = 1;
+        }
+      tested = 1;
+    }
+  return result;
+}
+
+# endif
+
+#endif
+
+/* ========================================================================= */
+
+/* This declaration is solely to ensure that after preprocessing
+   this file is never empty.  */
+typedef int dummy;
diff --git a/lib/gnulib.mk b/lib/gnulib.mk
new file mode 100644 (file)
index 0000000..c71d84a
--- /dev/null
@@ -0,0 +1,1991 @@
+## DO NOT EDIT! GENERATED AUTOMATICALLY!
+## Process this file with automake to produce Makefile.in.
+# Copyright (C) 2002-2011 Free Software Foundation, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License.  As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+# Reproduce by: gnulib-tool --import --dir=. --local-dir=gl --lib=libgnulib --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=gnulib-tests --aux-dir=build-aux --with-tests --avoid=dummy --no-conditional-dependencies --libtool --macro-prefix=gl alloca announce-gen argmatch assert calloc-gnu canonicalize-lgpl close closeout config-h configmake dirname do-release-commit-and-tag fdl fsync gettext-h git-version-gen gitlog-to-changelog gnu-web-doc-update gnumakefile gnupload inttypes lib-ignore long-options lseek maintainer-makefile malloc-gnu manywarnings mkstemp mktempd progname realloc-gnu rpmatch safe-read stdbool strdup-posix unlink update-copyright useless-if-before-free usleep vc-list-files version-etc-fsf warnings xstrtol xstrtoll
+
+AUTOMAKE_OPTIONS = 1.5 gnits subdir-objects
+
+SUBDIRS =
+noinst_HEADERS =
+noinst_LIBRARIES =
+noinst_LTLIBRARIES =
+EXTRA_DIST =
+BUILT_SOURCES =
+SUFFIXES =
+MOSTLYCLEANFILES = core *.stackdump
+MOSTLYCLEANDIRS =
+CLEANFILES =
+DISTCLEANFILES =
+MAINTAINERCLEANFILES =
+
+AM_CPPFLAGS =
+AM_CFLAGS =
+
+noinst_LTLIBRARIES += libgnulib.la
+
+libgnulib_la_SOURCES =
+libgnulib_la_LIBADD = $(gl_LTLIBOBJS)
+libgnulib_la_DEPENDENCIES = $(gl_LTLIBOBJS)
+EXTRA_libgnulib_la_SOURCES =
+libgnulib_la_LDFLAGS = $(AM_LDFLAGS)
+libgnulib_la_LDFLAGS += -no-undefined
+libgnulib_la_LDFLAGS += $(LTLIBINTL)
+libgnulib_la_LDFLAGS += $(LTLIBTHREAD)
+
+## begin gnulib module alloca
+
+
+libgnulib_la_LIBADD += @LTALLOCA@
+libgnulib_la_DEPENDENCIES += @LTALLOCA@
+EXTRA_DIST += alloca.c
+
+EXTRA_libgnulib_la_SOURCES += alloca.c
+
+## end   gnulib module alloca
+
+## begin gnulib module alloca-opt
+
+BUILT_SOURCES += $(ALLOCA_H)
+
+# We need the following in order to create <alloca.h> when the system
+# doesn't have one that works with the given compiler.
+if GL_GENERATE_ALLOCA_H
+alloca.h: alloca.in.h $(top_builddir)/config.status
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         cat $(srcdir)/alloca.in.h; \
+       } > $@-t && \
+       mv -f $@-t $@
+else
+alloca.h: $(top_builddir)/config.status
+       rm -f $@
+endif
+MOSTLYCLEANFILES += alloca.h alloca.h-t
+
+EXTRA_DIST += alloca.in.h
+
+## end   gnulib module alloca-opt
+
+## begin gnulib module announce-gen
+
+
+EXTRA_DIST += $(top_srcdir)/build-aux/announce-gen
+
+## end   gnulib module announce-gen
+
+## begin gnulib module arg-nonnull
+
+# The BUILT_SOURCES created by this Makefile snippet are not used via #include
+# statements but through direct file reference. Therefore this snippet must be
+# present in all Makefile.am that need it. This is ensured by the applicability
+# 'all' defined above.
+
+BUILT_SOURCES += arg-nonnull.h
+# The arg-nonnull.h that gets inserted into generated .h files is the same as
+# build-aux/arg-nonnull.h, except that it has the copyright header cut off.
+arg-nonnull.h: $(top_srcdir)/build-aux/arg-nonnull.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       sed -n -e '/GL_ARG_NONNULL/,$$p' \
+         < $(top_srcdir)/build-aux/arg-nonnull.h \
+         > $@-t && \
+       mv $@-t $@
+MOSTLYCLEANFILES += arg-nonnull.h arg-nonnull.h-t
+
+ARG_NONNULL_H=arg-nonnull.h
+
+EXTRA_DIST += $(top_srcdir)/build-aux/arg-nonnull.h
+
+## end   gnulib module arg-nonnull
+
+## begin gnulib module argmatch
+
+
+EXTRA_DIST += argmatch.c argmatch.h
+
+EXTRA_libgnulib_la_SOURCES += argmatch.c
+
+## end   gnulib module argmatch
+
+## begin gnulib module btowc
+
+
+EXTRA_DIST += btowc.c
+
+EXTRA_libgnulib_la_SOURCES += btowc.c
+
+## end   gnulib module btowc
+
+## begin gnulib module c++defs
+
+# The BUILT_SOURCES created by this Makefile snippet are not used via #include
+# statements but through direct file reference. Therefore this snippet must be
+# present in all Makefile.am that need it. This is ensured by the applicability
+# 'all' defined above.
+
+BUILT_SOURCES += c++defs.h
+# The c++defs.h that gets inserted into generated .h files is the same as
+# build-aux/c++defs.h, except that it has the copyright header cut off.
+c++defs.h: $(top_srcdir)/build-aux/c++defs.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       sed -n -e '/_GL_CXXDEFS/,$$p' \
+         < $(top_srcdir)/build-aux/c++defs.h \
+         > $@-t && \
+       mv $@-t $@
+MOSTLYCLEANFILES += c++defs.h c++defs.h-t
+
+CXXDEFS_H=c++defs.h
+
+EXTRA_DIST += $(top_srcdir)/build-aux/c++defs.h
+
+## end   gnulib module c++defs
+
+## begin gnulib module calloc-gnu
+
+
+EXTRA_DIST += calloc.c
+
+EXTRA_libgnulib_la_SOURCES += calloc.c
+
+## end   gnulib module calloc-gnu
+
+## begin gnulib module calloc-posix
+
+
+EXTRA_DIST += calloc.c
+
+EXTRA_libgnulib_la_SOURCES += calloc.c
+
+## end   gnulib module calloc-posix
+
+## begin gnulib module canonicalize-lgpl
+
+
+EXTRA_DIST += canonicalize-lgpl.c
+
+EXTRA_libgnulib_la_SOURCES += canonicalize-lgpl.c
+
+## end   gnulib module canonicalize-lgpl
+
+## begin gnulib module close
+
+
+EXTRA_DIST += close.c
+
+EXTRA_libgnulib_la_SOURCES += close.c
+
+## end   gnulib module close
+
+## begin gnulib module close-stream
+
+
+EXTRA_DIST += close-stream.c close-stream.h
+
+EXTRA_libgnulib_la_SOURCES += close-stream.c
+
+## end   gnulib module close-stream
+
+## begin gnulib module closeout
+
+
+EXTRA_DIST += closeout.c closeout.h
+
+EXTRA_libgnulib_la_SOURCES += closeout.c
+
+## end   gnulib module closeout
+
+## begin gnulib module configmake
+
+# Listed in the same order as the GNU makefile conventions, and
+# provided by autoconf 2.59c+.
+# The Automake-defined pkg* macros are appended, in the order
+# listed in the Automake 1.10a+ documentation.
+configmake.h: Makefile
+       $(AM_V_GEN)rm -f $@-t && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         echo '#define PREFIX "$(prefix)"'; \
+         echo '#define EXEC_PREFIX "$(exec_prefix)"'; \
+         echo '#define BINDIR "$(bindir)"'; \
+         echo '#define SBINDIR "$(sbindir)"'; \
+         echo '#define LIBEXECDIR "$(libexecdir)"'; \
+         echo '#define DATAROOTDIR "$(datarootdir)"'; \
+         echo '#define DATADIR "$(datadir)"'; \
+         echo '#define SYSCONFDIR "$(sysconfdir)"'; \
+         echo '#define SHAREDSTATEDIR "$(sharedstatedir)"'; \
+         echo '#define LOCALSTATEDIR "$(localstatedir)"'; \
+         echo '#define INCLUDEDIR "$(includedir)"'; \
+         echo '#define OLDINCLUDEDIR "$(oldincludedir)"'; \
+         echo '#define DOCDIR "$(docdir)"'; \
+         echo '#define INFODIR "$(infodir)"'; \
+         echo '#define HTMLDIR "$(htmldir)"'; \
+         echo '#define DVIDIR "$(dvidir)"'; \
+         echo '#define PDFDIR "$(pdfdir)"'; \
+         echo '#define PSDIR "$(psdir)"'; \
+         echo '#define LIBDIR "$(libdir)"'; \
+         echo '#define LISPDIR "$(lispdir)"'; \
+         echo '#define LOCALEDIR "$(localedir)"'; \
+         echo '#define MANDIR "$(mandir)"'; \
+         echo '#define MANEXT "$(manext)"'; \
+         echo '#define PKGDATADIR "$(pkgdatadir)"'; \
+         echo '#define PKGINCLUDEDIR "$(pkgincludedir)"'; \
+         echo '#define PKGLIBDIR "$(pkglibdir)"'; \
+         echo '#define PKGLIBEXECDIR "$(pkglibexecdir)"'; \
+       } | sed '/""/d' > $@-t && \
+       if test -f $@ && cmp $@-t $@ > /dev/null; then \
+         rm -f $@-t; \
+       else \
+         rm -f $@; mv $@-t $@; \
+       fi
+
+BUILT_SOURCES += configmake.h
+CLEANFILES += configmake.h configmake.h-t
+
+## end   gnulib module configmake
+
+## begin gnulib module dirname
+
+
+EXTRA_DIST += basename.c dirname.c stripslash.c
+
+EXTRA_libgnulib_la_SOURCES += basename.c dirname.c stripslash.c
+
+## end   gnulib module dirname
+
+## begin gnulib module dirname-lgpl
+
+
+EXTRA_DIST += basename-lgpl.c dirname-lgpl.c dirname.h stripslash.c
+
+EXTRA_libgnulib_la_SOURCES += basename-lgpl.c dirname-lgpl.c stripslash.c
+
+## end   gnulib module dirname-lgpl
+
+## begin gnulib module do-release-commit-and-tag
+
+
+EXTRA_DIST += $(top_srcdir)/build-aux/do-release-commit-and-tag
+
+## end   gnulib module do-release-commit-and-tag
+
+## begin gnulib module dosname
+
+
+EXTRA_DIST += dosname.h
+
+## end   gnulib module dosname
+
+## begin gnulib module errno
+
+BUILT_SOURCES += $(ERRNO_H)
+
+# We need the following in order to create <errno.h> when the system
+# doesn't have one that is POSIX compliant.
+if GL_GENERATE_ERRNO_H
+errno.h: errno.in.h $(top_builddir)/config.status
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_ERRNO_H''@|$(NEXT_ERRNO_H)|g' \
+             -e 's|@''EMULTIHOP_HIDDEN''@|$(EMULTIHOP_HIDDEN)|g' \
+             -e 's|@''EMULTIHOP_VALUE''@|$(EMULTIHOP_VALUE)|g' \
+             -e 's|@''ENOLINK_HIDDEN''@|$(ENOLINK_HIDDEN)|g' \
+             -e 's|@''ENOLINK_VALUE''@|$(ENOLINK_VALUE)|g' \
+             -e 's|@''EOVERFLOW_HIDDEN''@|$(EOVERFLOW_HIDDEN)|g' \
+             -e 's|@''EOVERFLOW_VALUE''@|$(EOVERFLOW_VALUE)|g' \
+             < $(srcdir)/errno.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+else
+errno.h: $(top_builddir)/config.status
+       rm -f $@
+endif
+MOSTLYCLEANFILES += errno.h errno.h-t
+
+EXTRA_DIST += errno.in.h
+
+## end   gnulib module errno
+
+## begin gnulib module error
+
+
+EXTRA_DIST += error.c error.h
+
+EXTRA_libgnulib_la_SOURCES += error.c
+
+## end   gnulib module error
+
+## begin gnulib module exitfail
+
+libgnulib_la_SOURCES += exitfail.c
+
+EXTRA_DIST += exitfail.h
+
+## end   gnulib module exitfail
+
+## begin gnulib module fclose
+
+
+EXTRA_DIST += fclose.c
+
+EXTRA_libgnulib_la_SOURCES += fclose.c
+
+## end   gnulib module fclose
+
+## begin gnulib module fd-hook
+
+libgnulib_la_SOURCES += fd-hook.c
+
+EXTRA_DIST += fd-hook.h
+
+## end   gnulib module fd-hook
+
+## begin gnulib module fflush
+
+
+EXTRA_DIST += fflush.c stdio-impl.h
+
+EXTRA_libgnulib_la_SOURCES += fflush.c
+
+## end   gnulib module fflush
+
+## begin gnulib module fpending
+
+
+EXTRA_DIST += fpending.c fpending.h
+
+EXTRA_libgnulib_la_SOURCES += fpending.c
+
+## end   gnulib module fpending
+
+## begin gnulib module fpurge
+
+
+EXTRA_DIST += fpurge.c stdio-impl.h
+
+EXTRA_libgnulib_la_SOURCES += fpurge.c
+
+## end   gnulib module fpurge
+
+## begin gnulib module freading
+
+libgnulib_la_SOURCES += freading.c
+
+EXTRA_DIST += freading.h stdio-impl.h
+
+## end   gnulib module freading
+
+## begin gnulib module fseeko
+
+
+EXTRA_DIST += fseeko.c stdio-impl.h
+
+EXTRA_libgnulib_la_SOURCES += fseeko.c
+
+## end   gnulib module fseeko
+
+## begin gnulib module fsync
+
+
+EXTRA_DIST += fsync.c
+
+EXTRA_libgnulib_la_SOURCES += fsync.c
+
+## end   gnulib module fsync
+
+## begin gnulib module ftello
+
+
+EXTRA_DIST += ftello.c stdio-impl.h
+
+EXTRA_libgnulib_la_SOURCES += ftello.c
+
+## end   gnulib module ftello
+
+## begin gnulib module gendocs
+
+
+EXTRA_DIST += $(top_srcdir)/build-aux/gendocs.sh
+
+## end   gnulib module gendocs
+
+## begin gnulib module getopt-posix
+
+BUILT_SOURCES += $(GETOPT_H)
+
+# We need the following in order to create <getopt.h> when the system
+# doesn't have one that works with the given compiler.
+getopt.h: getopt.in.h $(top_builddir)/config.status $(ARG_NONNULL_H)
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''HAVE_GETOPT_H''@|$(HAVE_GETOPT_H)|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_GETOPT_H''@|$(NEXT_GETOPT_H)|g' \
+             -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+             < $(srcdir)/getopt.in.h; \
+       } > $@-t && \
+       mv -f $@-t $@
+MOSTLYCLEANFILES += getopt.h getopt.h-t
+
+EXTRA_DIST += getopt.c getopt.in.h getopt1.c getopt_int.h
+
+EXTRA_libgnulib_la_SOURCES += getopt.c getopt1.c
+
+## end   gnulib module getopt-posix
+
+## begin gnulib module gettext-h
+
+libgnulib_la_SOURCES += gettext.h
+
+## end   gnulib module gettext-h
+
+## begin gnulib module gettimeofday
+
+
+EXTRA_DIST += gettimeofday.c
+
+EXTRA_libgnulib_la_SOURCES += gettimeofday.c
+
+## end   gnulib module gettimeofday
+
+## begin gnulib module git-version-gen
+
+
+EXTRA_DIST += $(top_srcdir)/build-aux/git-version-gen
+
+## end   gnulib module git-version-gen
+
+## begin gnulib module gitlog-to-changelog
+
+
+EXTRA_DIST += $(top_srcdir)/build-aux/gitlog-to-changelog
+
+## end   gnulib module gitlog-to-changelog
+
+## begin gnulib module gnu-web-doc-update
+
+
+EXTRA_DIST += $(top_srcdir)/build-aux/gnu-web-doc-update
+
+## end   gnulib module gnu-web-doc-update
+
+## begin gnulib module gnumakefile
+
+distclean-local: clean-GNUmakefile
+clean-GNUmakefile:
+       test x'$(VPATH)' != x && rm -f $(top_builddir)/GNUmakefile || :
+
+EXTRA_DIST += $(top_srcdir)/GNUmakefile
+
+## end   gnulib module gnumakefile
+
+## begin gnulib module gnupload
+
+
+EXTRA_DIST += $(top_srcdir)/build-aux/gnupload
+
+## end   gnulib module gnupload
+
+## begin gnulib module havelib
+
+
+EXTRA_DIST += $(top_srcdir)/build-aux/config.rpath
+
+## end   gnulib module havelib
+
+## begin gnulib module intprops
+
+
+EXTRA_DIST += intprops.h
+
+## end   gnulib module intprops
+
+## begin gnulib module inttypes-incomplete
+
+BUILT_SOURCES += inttypes.h
+
+# We need the following in order to create <inttypes.h> when the system
+# doesn't have one that works with the given compiler.
+inttypes.h: inttypes.in.h $(top_builddir)/config.status $(WARN_ON_USE_H) $(ARG_NONNULL_H)
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_INTTYPES_H''@|$(NEXT_INTTYPES_H)|g' \
+             -e 's/@''PRI_MACROS_BROKEN''@/$(PRI_MACROS_BROKEN)/g' \
+             -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \
+             -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \
+             -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \
+             -e 's/@''PRIPTR_PREFIX''@/$(PRIPTR_PREFIX)/g' \
+             -e 's/@''GNULIB_IMAXABS''@/$(GNULIB_IMAXABS)/g' \
+             -e 's/@''GNULIB_IMAXDIV''@/$(GNULIB_IMAXDIV)/g' \
+             -e 's/@''GNULIB_STRTOIMAX''@/$(GNULIB_STRTOIMAX)/g' \
+             -e 's/@''GNULIB_STRTOUMAX''@/$(GNULIB_STRTOUMAX)/g' \
+             -e 's/@''HAVE_DECL_IMAXABS''@/$(HAVE_DECL_IMAXABS)/g' \
+             -e 's/@''HAVE_DECL_IMAXDIV''@/$(HAVE_DECL_IMAXDIV)/g' \
+             -e 's/@''HAVE_DECL_STRTOIMAX''@/$(HAVE_DECL_STRTOIMAX)/g' \
+             -e 's/@''HAVE_DECL_STRTOUMAX''@/$(HAVE_DECL_STRTOUMAX)/g' \
+             -e 's/@''INT32_MAX_LT_INTMAX_MAX''@/$(INT32_MAX_LT_INTMAX_MAX)/g' \
+             -e 's/@''INT64_MAX_EQ_LONG_MAX''@/$(INT64_MAX_EQ_LONG_MAX)/g' \
+             -e 's/@''UINT32_MAX_LT_UINTMAX_MAX''@/$(UINT32_MAX_LT_UINTMAX_MAX)/g' \
+             -e 's/@''UINT64_MAX_EQ_ULONG_MAX''@/$(UINT64_MAX_EQ_ULONG_MAX)/g' \
+             -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
+             < $(srcdir)/inttypes.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+MOSTLYCLEANFILES += inttypes.h inttypes.h-t
+
+EXTRA_DIST += inttypes.in.h
+
+## end   gnulib module inttypes-incomplete
+
+## begin gnulib module langinfo
+
+BUILT_SOURCES += langinfo.h
+
+# We need the following in order to create an empty placeholder for
+# <langinfo.h> when the system doesn't have one.
+langinfo.h: langinfo.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H)
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''HAVE_LANGINFO_H''@|$(HAVE_LANGINFO_H)|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_LANGINFO_H''@|$(NEXT_LANGINFO_H)|g' \
+             -e 's|@''GNULIB_NL_LANGINFO''@|$(GNULIB_NL_LANGINFO)|g' \
+             -e 's|@''HAVE_LANGINFO_CODESET''@|$(HAVE_LANGINFO_CODESET)|g' \
+             -e 's|@''HAVE_LANGINFO_T_FMT_AMPM''@|$(HAVE_LANGINFO_T_FMT_AMPM)|g' \
+             -e 's|@''HAVE_LANGINFO_ERA''@|$(HAVE_LANGINFO_ERA)|g' \
+             -e 's|@''HAVE_LANGINFO_YESEXPR''@|$(HAVE_LANGINFO_YESEXPR)|g' \
+             -e 's|@''HAVE_NL_LANGINFO''@|$(HAVE_NL_LANGINFO)|g' \
+             -e 's|@''REPLACE_NL_LANGINFO''@|$(REPLACE_NL_LANGINFO)|g' \
+             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
+             < $(srcdir)/langinfo.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+MOSTLYCLEANFILES += langinfo.h langinfo.h-t
+
+EXTRA_DIST += langinfo.in.h
+
+## end   gnulib module langinfo
+
+## begin gnulib module localcharset
+
+libgnulib_la_SOURCES += localcharset.h localcharset.c
+
+# We need the following in order to install a simple file in $(libdir)
+# which is shared with other installed packages. We use a list of referencing
+# packages so that "make uninstall" will remove the file if and only if it
+# is not used by another installed package.
+# On systems with glibc-2.1 or newer, the file is redundant, therefore we
+# avoid installing it.
+
+all-local: charset.alias ref-add.sed ref-del.sed
+
+charset_alias = $(DESTDIR)$(libdir)/charset.alias
+charset_tmp = $(DESTDIR)$(libdir)/charset.tmp
+install-exec-local: install-exec-localcharset
+install-exec-localcharset: all-local
+       if test $(GLIBC21) = no; then \
+         case '$(host_os)' in \
+           darwin[56]*) \
+             need_charset_alias=true ;; \
+           darwin* | cygwin* | mingw* | pw32* | cegcc*) \
+             need_charset_alias=false ;; \
+           *) \
+             need_charset_alias=true ;; \
+         esac ; \
+       else \
+         need_charset_alias=false ; \
+       fi ; \
+       if $$need_charset_alias; then \
+         $(mkinstalldirs) $(DESTDIR)$(libdir) ; \
+       fi ; \
+       if test -f $(charset_alias); then \
+         sed -f ref-add.sed $(charset_alias) > $(charset_tmp) ; \
+         $(INSTALL_DATA) $(charset_tmp) $(charset_alias) ; \
+         rm -f $(charset_tmp) ; \
+       else \
+         if $$need_charset_alias; then \
+           sed -f ref-add.sed charset.alias > $(charset_tmp) ; \
+           $(INSTALL_DATA) $(charset_tmp) $(charset_alias) ; \
+           rm -f $(charset_tmp) ; \
+         fi ; \
+       fi
+
+uninstall-local: uninstall-localcharset
+uninstall-localcharset: all-local
+       if test -f $(charset_alias); then \
+         sed -f ref-del.sed $(charset_alias) > $(charset_tmp); \
+         if grep '^# Packages using this file: $$' $(charset_tmp) \
+             > /dev/null; then \
+           rm -f $(charset_alias); \
+         else \
+           $(INSTALL_DATA) $(charset_tmp) $(charset_alias); \
+         fi; \
+         rm -f $(charset_tmp); \
+       fi
+
+charset.alias: config.charset
+       $(AM_V_GEN)rm -f t-$@ $@ && \
+       $(SHELL) $(srcdir)/config.charset '$(host)' > t-$@ && \
+       mv t-$@ $@
+
+SUFFIXES += .sed .sin
+.sin.sed:
+       $(AM_V_GEN)rm -f t-$@ $@ && \
+       sed -e '/^#/d' -e 's/@''PACKAGE''@/$(PACKAGE)/g' $< > t-$@ && \
+       mv t-$@ $@
+
+CLEANFILES += charset.alias ref-add.sed ref-del.sed
+
+EXTRA_DIST += config.charset ref-add.sin ref-del.sin
+
+## end   gnulib module localcharset
+
+## begin gnulib module lock
+
+libgnulib_la_SOURCES += glthread/lock.h glthread/lock.c
+
+## end   gnulib module lock
+
+## begin gnulib module long-options
+
+
+EXTRA_DIST += long-options.c long-options.h
+
+EXTRA_libgnulib_la_SOURCES += long-options.c
+
+## end   gnulib module long-options
+
+## begin gnulib module lseek
+
+
+EXTRA_DIST += lseek.c
+
+EXTRA_libgnulib_la_SOURCES += lseek.c
+
+## end   gnulib module lseek
+
+## begin gnulib module lstat
+
+
+EXTRA_DIST += lstat.c
+
+EXTRA_libgnulib_la_SOURCES += lstat.c
+
+## end   gnulib module lstat
+
+## begin gnulib module maintainer-makefile
+
+EXTRA_DIST += $(top_srcdir)/maint.mk
+
+## end   gnulib module maintainer-makefile
+
+## begin gnulib module malloc-gnu
+
+
+EXTRA_DIST += malloc.c
+
+EXTRA_libgnulib_la_SOURCES += malloc.c
+
+## end   gnulib module malloc-gnu
+
+## begin gnulib module malloc-posix
+
+
+EXTRA_DIST += malloc.c
+
+EXTRA_libgnulib_la_SOURCES += malloc.c
+
+## end   gnulib module malloc-posix
+
+## begin gnulib module malloca
+
+libgnulib_la_SOURCES += malloca.c
+
+EXTRA_DIST += malloca.h malloca.valgrind
+
+## end   gnulib module malloca
+
+## begin gnulib module mbrtowc
+
+
+EXTRA_DIST += mbrtowc.c
+
+EXTRA_libgnulib_la_SOURCES += mbrtowc.c
+
+## end   gnulib module mbrtowc
+
+## begin gnulib module mbsinit
+
+
+EXTRA_DIST += mbsinit.c
+
+EXTRA_libgnulib_la_SOURCES += mbsinit.c
+
+## end   gnulib module mbsinit
+
+## begin gnulib module mbtowc
+
+
+EXTRA_DIST += mbtowc-impl.h mbtowc.c
+
+EXTRA_libgnulib_la_SOURCES += mbtowc.c
+
+## end   gnulib module mbtowc
+
+## begin gnulib module mkstemp
+
+
+EXTRA_DIST += mkstemp.c
+
+EXTRA_libgnulib_la_SOURCES += mkstemp.c
+
+## end   gnulib module mkstemp
+
+## begin gnulib module mktempd
+
+
+EXTRA_DIST += $(top_srcdir)/build-aux/mktempd
+
+## end   gnulib module mktempd
+
+## begin gnulib module nl_langinfo
+
+
+EXTRA_DIST += nl_langinfo.c
+
+EXTRA_libgnulib_la_SOURCES += nl_langinfo.c
+
+## end   gnulib module nl_langinfo
+
+## begin gnulib module pathmax
+
+
+EXTRA_DIST += pathmax.h
+
+## end   gnulib module pathmax
+
+## begin gnulib module progname
+
+libgnulib_la_SOURCES += progname.h progname.c
+
+## end   gnulib module progname
+
+## begin gnulib module quote
+
+
+EXTRA_DIST += quote.c quote.h
+
+EXTRA_libgnulib_la_SOURCES += quote.c
+
+## end   gnulib module quote
+
+## begin gnulib module quotearg
+
+
+EXTRA_DIST += quotearg.c quotearg.h
+
+EXTRA_libgnulib_la_SOURCES += quotearg.c
+
+## end   gnulib module quotearg
+
+## begin gnulib module read
+
+
+EXTRA_DIST += read.c
+
+EXTRA_libgnulib_la_SOURCES += read.c
+
+## end   gnulib module read
+
+## begin gnulib module readlink
+
+
+EXTRA_DIST += readlink.c
+
+EXTRA_libgnulib_la_SOURCES += readlink.c
+
+## end   gnulib module readlink
+
+## begin gnulib module realloc-gnu
+
+
+EXTRA_DIST += realloc.c
+
+EXTRA_libgnulib_la_SOURCES += realloc.c
+
+## end   gnulib module realloc-gnu
+
+## begin gnulib module realloc-posix
+
+
+EXTRA_DIST += realloc.c
+
+EXTRA_libgnulib_la_SOURCES += realloc.c
+
+## end   gnulib module realloc-posix
+
+## begin gnulib module regex
+
+
+EXTRA_DIST += regcomp.c regex.c regex.h regex_internal.c regex_internal.h regexec.c
+
+EXTRA_libgnulib_la_SOURCES += regcomp.c regex.c regex_internal.c regexec.c
+
+## end   gnulib module regex
+
+## begin gnulib module rpmatch
+
+
+EXTRA_DIST += rpmatch.c
+
+EXTRA_libgnulib_la_SOURCES += rpmatch.c
+
+## end   gnulib module rpmatch
+
+## begin gnulib module safe-read
+
+
+EXTRA_DIST += safe-read.c safe-read.h
+
+EXTRA_libgnulib_la_SOURCES += safe-read.c
+
+## end   gnulib module safe-read
+
+## begin gnulib module sleep
+
+
+EXTRA_DIST += sleep.c
+
+EXTRA_libgnulib_la_SOURCES += sleep.c
+
+## end   gnulib module sleep
+
+## begin gnulib module stat
+
+
+EXTRA_DIST += stat.c
+
+EXTRA_libgnulib_la_SOURCES += stat.c
+
+## end   gnulib module stat
+
+## begin gnulib module stdarg
+
+BUILT_SOURCES += $(STDARG_H)
+
+# We need the following in order to create <stdarg.h> when the system
+# doesn't have one that works with the given compiler.
+if GL_GENERATE_STDARG_H
+stdarg.h: stdarg.in.h $(top_builddir)/config.status
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_STDARG_H''@|$(NEXT_STDARG_H)|g' \
+             < $(srcdir)/stdarg.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+else
+stdarg.h: $(top_builddir)/config.status
+       rm -f $@
+endif
+MOSTLYCLEANFILES += stdarg.h stdarg.h-t
+
+EXTRA_DIST += stdarg.in.h
+
+## end   gnulib module stdarg
+
+## begin gnulib module stdbool
+
+BUILT_SOURCES += $(STDBOOL_H)
+
+# We need the following in order to create <stdbool.h> when the system
+# doesn't have one that works.
+if GL_GENERATE_STDBOOL_H
+stdbool.h: stdbool.in.h $(top_builddir)/config.status
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's/@''HAVE__BOOL''@/$(HAVE__BOOL)/g' < $(srcdir)/stdbool.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+else
+stdbool.h: $(top_builddir)/config.status
+       rm -f $@
+endif
+MOSTLYCLEANFILES += stdbool.h stdbool.h-t
+
+EXTRA_DIST += stdbool.in.h
+
+## end   gnulib module stdbool
+
+## begin gnulib module stddef
+
+BUILT_SOURCES += $(STDDEF_H)
+
+# We need the following in order to create <stddef.h> when the system
+# doesn't have one that works with the given compiler.
+if GL_GENERATE_STDDEF_H
+stddef.h: stddef.in.h $(top_builddir)/config.status
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \
+             -e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \
+             -e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \
+             < $(srcdir)/stddef.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+else
+stddef.h: $(top_builddir)/config.status
+       rm -f $@
+endif
+MOSTLYCLEANFILES += stddef.h stddef.h-t
+
+EXTRA_DIST += stddef.in.h
+
+## end   gnulib module stddef
+
+## begin gnulib module stdint
+
+BUILT_SOURCES += $(STDINT_H)
+
+# We need the following in order to create <stdint.h> when the system
+# doesn't have one that works with the given compiler.
+if GL_GENERATE_STDINT_H
+stdint.h: stdint.in.h $(top_builddir)/config.status
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \
+             -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \
+             -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
+             -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \
+             -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \
+             -e 's/@''HAVE_WCHAR_H''@/$(HAVE_WCHAR_H)/g' \
+             -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \
+             -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \
+             -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \
+             -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \
+             -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \
+             -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \
+             -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \
+             -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \
+             -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \
+             -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \
+             -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \
+             -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \
+             -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \
+             -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \
+             -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \
+             -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \
+             < $(srcdir)/stdint.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+else
+stdint.h: $(top_builddir)/config.status
+       rm -f $@
+endif
+MOSTLYCLEANFILES += stdint.h stdint.h-t
+
+EXTRA_DIST += stdint.in.h
+
+## end   gnulib module stdint
+
+## begin gnulib module stdio
+
+BUILT_SOURCES += stdio.h
+
+# We need the following in order to create <stdio.h> when the system
+# doesn't have one that works with the given compiler.
+stdio.h: stdio.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_STDIO_H''@|$(NEXT_STDIO_H)|g' \
+             -e 's|@''GNULIB_DPRINTF''@|$(GNULIB_DPRINTF)|g' \
+             -e 's|@''GNULIB_FCLOSE''@|$(GNULIB_FCLOSE)|g' \
+             -e 's|@''GNULIB_FFLUSH''@|$(GNULIB_FFLUSH)|g' \
+             -e 's|@''GNULIB_FGETC''@|$(GNULIB_FGETC)|g' \
+             -e 's|@''GNULIB_FGETS''@|$(GNULIB_FGETS)|g' \
+             -e 's|@''GNULIB_FOPEN''@|$(GNULIB_FOPEN)|g' \
+             -e 's|@''GNULIB_FPRINTF''@|$(GNULIB_FPRINTF)|g' \
+             -e 's|@''GNULIB_FPRINTF_POSIX''@|$(GNULIB_FPRINTF_POSIX)|g' \
+             -e 's|@''GNULIB_FPURGE''@|$(GNULIB_FPURGE)|g' \
+             -e 's|@''GNULIB_FPUTC''@|$(GNULIB_FPUTC)|g' \
+             -e 's|@''GNULIB_FPUTS''@|$(GNULIB_FPUTS)|g' \
+             -e 's|@''GNULIB_FREAD''@|$(GNULIB_FREAD)|g' \
+             -e 's|@''GNULIB_FREOPEN''@|$(GNULIB_FREOPEN)|g' \
+             -e 's|@''GNULIB_FSCANF''@|$(GNULIB_FSCANF)|g' \
+             -e 's|@''GNULIB_FSEEK''@|$(GNULIB_FSEEK)|g' \
+             -e 's|@''GNULIB_FSEEKO''@|$(GNULIB_FSEEKO)|g' \
+             -e 's|@''GNULIB_FTELL''@|$(GNULIB_FTELL)|g' \
+             -e 's|@''GNULIB_FTELLO''@|$(GNULIB_FTELLO)|g' \
+             -e 's|@''GNULIB_FWRITE''@|$(GNULIB_FWRITE)|g' \
+             -e 's|@''GNULIB_GETC''@|$(GNULIB_GETC)|g' \
+             -e 's|@''GNULIB_GETCHAR''@|$(GNULIB_GETCHAR)|g' \
+             -e 's|@''GNULIB_GETDELIM''@|$(GNULIB_GETDELIM)|g' \
+             -e 's|@''GNULIB_GETLINE''@|$(GNULIB_GETLINE)|g' \
+             -e 's|@''GNULIB_GETS''@|$(GNULIB_GETS)|g' \
+             -e 's|@''GNULIB_OBSTACK_PRINTF''@|$(GNULIB_OBSTACK_PRINTF)|g' \
+             -e 's|@''GNULIB_OBSTACK_PRINTF_POSIX''@|$(GNULIB_OBSTACK_PRINTF_POSIX)|g' \
+             -e 's|@''GNULIB_PERROR''@|$(GNULIB_PERROR)|g' \
+             -e 's|@''GNULIB_POPEN''@|$(GNULIB_POPEN)|g' \
+             -e 's|@''GNULIB_PRINTF''@|$(GNULIB_PRINTF)|g' \
+             -e 's|@''GNULIB_PRINTF_POSIX''@|$(GNULIB_PRINTF_POSIX)|g' \
+             -e 's|@''GNULIB_PUTC''@|$(GNULIB_PUTC)|g' \
+             -e 's|@''GNULIB_PUTCHAR''@|$(GNULIB_PUTCHAR)|g' \
+             -e 's|@''GNULIB_PUTS''@|$(GNULIB_PUTS)|g' \
+             -e 's|@''GNULIB_REMOVE''@|$(GNULIB_REMOVE)|g' \
+             -e 's|@''GNULIB_RENAME''@|$(GNULIB_RENAME)|g' \
+             -e 's|@''GNULIB_RENAMEAT''@|$(GNULIB_RENAMEAT)|g' \
+             -e 's|@''GNULIB_SCANF''@|$(GNULIB_SCANF)|g' \
+             -e 's|@''GNULIB_SNPRINTF''@|$(GNULIB_SNPRINTF)|g' \
+             -e 's|@''GNULIB_SPRINTF_POSIX''@|$(GNULIB_SPRINTF_POSIX)|g' \
+             -e 's|@''GNULIB_STDIO_H_NONBLOCKING''@|$(GNULIB_STDIO_H_NONBLOCKING)|g' \
+             -e 's|@''GNULIB_STDIO_H_SIGPIPE''@|$(GNULIB_STDIO_H_SIGPIPE)|g' \
+             -e 's|@''GNULIB_TMPFILE''@|$(GNULIB_TMPFILE)|g' \
+             -e 's|@''GNULIB_VASPRINTF''@|$(GNULIB_VASPRINTF)|g' \
+             -e 's|@''GNULIB_VDPRINTF''@|$(GNULIB_VDPRINTF)|g' \
+             -e 's|@''GNULIB_VFPRINTF''@|$(GNULIB_VFPRINTF)|g' \
+             -e 's|@''GNULIB_VFPRINTF_POSIX''@|$(GNULIB_VFPRINTF_POSIX)|g' \
+             -e 's|@''GNULIB_VFSCANF''@|$(GNULIB_VFSCANF)|g' \
+             -e 's|@''GNULIB_VSCANF''@|$(GNULIB_VSCANF)|g' \
+             -e 's|@''GNULIB_VPRINTF''@|$(GNULIB_VPRINTF)|g' \
+             -e 's|@''GNULIB_VPRINTF_POSIX''@|$(GNULIB_VPRINTF_POSIX)|g' \
+             -e 's|@''GNULIB_VSNPRINTF''@|$(GNULIB_VSNPRINTF)|g' \
+             -e 's|@''GNULIB_VSPRINTF_POSIX''@|$(GNULIB_VSPRINTF_POSIX)|g' \
+             < $(srcdir)/stdio.in.h | \
+         sed -e 's|@''HAVE_DECL_FPURGE''@|$(HAVE_DECL_FPURGE)|g' \
+             -e 's|@''HAVE_DECL_FSEEKO''@|$(HAVE_DECL_FSEEKO)|g' \
+             -e 's|@''HAVE_DECL_FTELLO''@|$(HAVE_DECL_FTELLO)|g' \
+             -e 's|@''HAVE_DECL_GETDELIM''@|$(HAVE_DECL_GETDELIM)|g' \
+             -e 's|@''HAVE_DECL_GETLINE''@|$(HAVE_DECL_GETLINE)|g' \
+             -e 's|@''HAVE_DECL_OBSTACK_PRINTF''@|$(HAVE_DECL_OBSTACK_PRINTF)|g' \
+             -e 's|@''HAVE_DECL_SNPRINTF''@|$(HAVE_DECL_SNPRINTF)|g' \
+             -e 's|@''HAVE_DECL_VSNPRINTF''@|$(HAVE_DECL_VSNPRINTF)|g' \
+             -e 's|@''HAVE_DPRINTF''@|$(HAVE_DPRINTF)|g' \
+             -e 's|@''HAVE_FSEEKO''@|$(HAVE_FSEEKO)|g' \
+             -e 's|@''HAVE_FTELLO''@|$(HAVE_FTELLO)|g' \
+             -e 's|@''HAVE_RENAMEAT''@|$(HAVE_RENAMEAT)|g' \
+             -e 's|@''HAVE_VASPRINTF''@|$(HAVE_VASPRINTF)|g' \
+             -e 's|@''HAVE_VDPRINTF''@|$(HAVE_VDPRINTF)|g' \
+             -e 's|@''REPLACE_DPRINTF''@|$(REPLACE_DPRINTF)|g' \
+             -e 's|@''REPLACE_FCLOSE''@|$(REPLACE_FCLOSE)|g' \
+             -e 's|@''REPLACE_FFLUSH''@|$(REPLACE_FFLUSH)|g' \
+             -e 's|@''REPLACE_FOPEN''@|$(REPLACE_FOPEN)|g' \
+             -e 's|@''REPLACE_FPRINTF''@|$(REPLACE_FPRINTF)|g' \
+             -e 's|@''REPLACE_FPURGE''@|$(REPLACE_FPURGE)|g' \
+             -e 's|@''REPLACE_FREOPEN''@|$(REPLACE_FREOPEN)|g' \
+             -e 's|@''REPLACE_FSEEK''@|$(REPLACE_FSEEK)|g' \
+             -e 's|@''REPLACE_FSEEKO''@|$(REPLACE_FSEEKO)|g' \
+             -e 's|@''REPLACE_FTELL''@|$(REPLACE_FTELL)|g' \
+             -e 's|@''REPLACE_FTELLO''@|$(REPLACE_FTELLO)|g' \
+             -e 's|@''REPLACE_GETDELIM''@|$(REPLACE_GETDELIM)|g' \
+             -e 's|@''REPLACE_GETLINE''@|$(REPLACE_GETLINE)|g' \
+             -e 's|@''REPLACE_OBSTACK_PRINTF''@|$(REPLACE_OBSTACK_PRINTF)|g' \
+             -e 's|@''REPLACE_PERROR''@|$(REPLACE_PERROR)|g' \
+             -e 's|@''REPLACE_POPEN''@|$(REPLACE_POPEN)|g' \
+             -e 's|@''REPLACE_PRINTF''@|$(REPLACE_PRINTF)|g' \
+             -e 's|@''REPLACE_REMOVE''@|$(REPLACE_REMOVE)|g' \
+             -e 's|@''REPLACE_RENAME''@|$(REPLACE_RENAME)|g' \
+             -e 's|@''REPLACE_RENAMEAT''@|$(REPLACE_RENAMEAT)|g' \
+             -e 's|@''REPLACE_SNPRINTF''@|$(REPLACE_SNPRINTF)|g' \
+             -e 's|@''REPLACE_SPRINTF''@|$(REPLACE_SPRINTF)|g' \
+             -e 's|@''REPLACE_STDIO_READ_FUNCS''@|$(REPLACE_STDIO_READ_FUNCS)|g' \
+             -e 's|@''REPLACE_STDIO_WRITE_FUNCS''@|$(REPLACE_STDIO_WRITE_FUNCS)|g' \
+             -e 's|@''REPLACE_TMPFILE''@|$(REPLACE_TMPFILE)|g' \
+             -e 's|@''REPLACE_VASPRINTF''@|$(REPLACE_VASPRINTF)|g' \
+             -e 's|@''REPLACE_VDPRINTF''@|$(REPLACE_VDPRINTF)|g' \
+             -e 's|@''REPLACE_VFPRINTF''@|$(REPLACE_VFPRINTF)|g' \
+             -e 's|@''REPLACE_VPRINTF''@|$(REPLACE_VPRINTF)|g' \
+             -e 's|@''REPLACE_VSNPRINTF''@|$(REPLACE_VSNPRINTF)|g' \
+             -e 's|@''REPLACE_VSPRINTF''@|$(REPLACE_VSPRINTF)|g' \
+             -e 's|@''ASM_SYMBOL_PREFIX''@|$(ASM_SYMBOL_PREFIX)|g' \
+             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+             -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
+       } > $@-t && \
+       mv $@-t $@
+MOSTLYCLEANFILES += stdio.h stdio.h-t
+
+EXTRA_DIST += stdio.in.h
+
+## end   gnulib module stdio
+
+## begin gnulib module stdlib
+
+BUILT_SOURCES += stdlib.h
+
+# We need the following in order to create <stdlib.h> when the system
+# doesn't have one that works with the given compiler.
+stdlib.h: stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_STDLIB_H''@|$(NEXT_STDLIB_H)|g' \
+             -e 's|@''GNULIB__EXIT''@|$(GNULIB__EXIT)|g' \
+             -e 's|@''GNULIB_ATOLL''@|$(GNULIB_ATOLL)|g' \
+             -e 's|@''GNULIB_CALLOC_POSIX''@|$(GNULIB_CALLOC_POSIX)|g' \
+             -e 's|@''GNULIB_CANONICALIZE_FILE_NAME''@|$(GNULIB_CANONICALIZE_FILE_NAME)|g' \
+             -e 's|@''GNULIB_GETLOADAVG''@|$(GNULIB_GETLOADAVG)|g' \
+             -e 's|@''GNULIB_GETSUBOPT''@|$(GNULIB_GETSUBOPT)|g' \
+             -e 's|@''GNULIB_GRANTPT''@|$(GNULIB_GRANTPT)|g' \
+             -e 's|@''GNULIB_MALLOC_POSIX''@|$(GNULIB_MALLOC_POSIX)|g' \
+             -e 's|@''GNULIB_MBTOWC''@|$(GNULIB_MBTOWC)|g' \
+             -e 's|@''GNULIB_MKDTEMP''@|$(GNULIB_MKDTEMP)|g' \
+             -e 's|@''GNULIB_MKOSTEMP''@|$(GNULIB_MKOSTEMP)|g' \
+             -e 's|@''GNULIB_MKOSTEMPS''@|$(GNULIB_MKOSTEMPS)|g' \
+             -e 's|@''GNULIB_MKSTEMP''@|$(GNULIB_MKSTEMP)|g' \
+             -e 's|@''GNULIB_MKSTEMPS''@|$(GNULIB_MKSTEMPS)|g' \
+             -e 's|@''GNULIB_PTSNAME''@|$(GNULIB_PTSNAME)|g' \
+             -e 's|@''GNULIB_PUTENV''@|$(GNULIB_PUTENV)|g' \
+             -e 's|@''GNULIB_RANDOM_R''@|$(GNULIB_RANDOM_R)|g' \
+             -e 's|@''GNULIB_REALLOC_POSIX''@|$(GNULIB_REALLOC_POSIX)|g' \
+             -e 's|@''GNULIB_REALPATH''@|$(GNULIB_REALPATH)|g' \
+             -e 's|@''GNULIB_RPMATCH''@|$(GNULIB_RPMATCH)|g' \
+             -e 's|@''GNULIB_SETENV''@|$(GNULIB_SETENV)|g' \
+             -e 's|@''GNULIB_STRTOD''@|$(GNULIB_STRTOD)|g' \
+             -e 's|@''GNULIB_STRTOLL''@|$(GNULIB_STRTOLL)|g' \
+             -e 's|@''GNULIB_STRTOULL''@|$(GNULIB_STRTOULL)|g' \
+             -e 's|@''GNULIB_SYSTEM_POSIX''@|$(GNULIB_SYSTEM_POSIX)|g' \
+             -e 's|@''GNULIB_UNLOCKPT''@|$(GNULIB_UNLOCKPT)|g' \
+             -e 's|@''GNULIB_UNSETENV''@|$(GNULIB_UNSETENV)|g' \
+             -e 's|@''GNULIB_WCTOMB''@|$(GNULIB_WCTOMB)|g' \
+             < $(srcdir)/stdlib.in.h | \
+         sed -e 's|@''HAVE__EXIT''@|$(HAVE__EXIT)|g' \
+             -e 's|@''HAVE_ATOLL''@|$(HAVE_ATOLL)|g' \
+             -e 's|@''HAVE_CANONICALIZE_FILE_NAME''@|$(HAVE_CANONICALIZE_FILE_NAME)|g' \
+             -e 's|@''HAVE_DECL_GETLOADAVG''@|$(HAVE_DECL_GETLOADAVG)|g' \
+             -e 's|@''HAVE_GETSUBOPT''@|$(HAVE_GETSUBOPT)|g' \
+             -e 's|@''HAVE_GRANTPT''@|$(HAVE_GRANTPT)|g' \
+             -e 's|@''HAVE_MKDTEMP''@|$(HAVE_MKDTEMP)|g' \
+             -e 's|@''HAVE_MKOSTEMP''@|$(HAVE_MKOSTEMP)|g' \
+             -e 's|@''HAVE_MKOSTEMPS''@|$(HAVE_MKOSTEMPS)|g' \
+             -e 's|@''HAVE_MKSTEMP''@|$(HAVE_MKSTEMP)|g' \
+             -e 's|@''HAVE_MKSTEMPS''@|$(HAVE_MKSTEMPS)|g' \
+             -e 's|@''HAVE_PTSNAME''@|$(HAVE_PTSNAME)|g' \
+             -e 's|@''HAVE_RANDOM_H''@|$(HAVE_RANDOM_H)|g' \
+             -e 's|@''HAVE_RANDOM_R''@|$(HAVE_RANDOM_R)|g' \
+             -e 's|@''HAVE_REALPATH''@|$(HAVE_REALPATH)|g' \
+             -e 's|@''HAVE_RPMATCH''@|$(HAVE_RPMATCH)|g' \
+             -e 's|@''HAVE_DECL_SETENV''@|$(HAVE_DECL_SETENV)|g' \
+             -e 's|@''HAVE_STRTOD''@|$(HAVE_STRTOD)|g' \
+             -e 's|@''HAVE_STRTOLL''@|$(HAVE_STRTOLL)|g' \
+             -e 's|@''HAVE_STRTOULL''@|$(HAVE_STRTOULL)|g' \
+             -e 's|@''HAVE_STRUCT_RANDOM_DATA''@|$(HAVE_STRUCT_RANDOM_DATA)|g' \
+             -e 's|@''HAVE_SYS_LOADAVG_H''@|$(HAVE_SYS_LOADAVG_H)|g' \
+             -e 's|@''HAVE_UNLOCKPT''@|$(HAVE_UNLOCKPT)|g' \
+             -e 's|@''HAVE_DECL_UNSETENV''@|$(HAVE_DECL_UNSETENV)|g' \
+             -e 's|@''REPLACE_CALLOC''@|$(REPLACE_CALLOC)|g' \
+             -e 's|@''REPLACE_CANONICALIZE_FILE_NAME''@|$(REPLACE_CANONICALIZE_FILE_NAME)|g' \
+             -e 's|@''REPLACE_MALLOC''@|$(REPLACE_MALLOC)|g' \
+             -e 's|@''REPLACE_MBTOWC''@|$(REPLACE_MBTOWC)|g' \
+             -e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \
+             -e 's|@''REPLACE_PUTENV''@|$(REPLACE_PUTENV)|g' \
+             -e 's|@''REPLACE_REALLOC''@|$(REPLACE_REALLOC)|g' \
+             -e 's|@''REPLACE_REALPATH''@|$(REPLACE_REALPATH)|g' \
+             -e 's|@''REPLACE_SETENV''@|$(REPLACE_SETENV)|g' \
+             -e 's|@''REPLACE_STRTOD''@|$(REPLACE_STRTOD)|g' \
+             -e 's|@''REPLACE_UNSETENV''@|$(REPLACE_UNSETENV)|g' \
+             -e 's|@''REPLACE_WCTOMB''@|$(REPLACE_WCTOMB)|g' \
+             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+             -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
+       } > $@-t && \
+       mv $@-t $@
+MOSTLYCLEANFILES += stdlib.h stdlib.h-t
+
+EXTRA_DIST += stdlib.in.h
+
+## end   gnulib module stdlib
+
+## begin gnulib module strdup-posix
+
+
+EXTRA_DIST += strdup.c
+
+EXTRA_libgnulib_la_SOURCES += strdup.c
+
+## end   gnulib module strdup-posix
+
+## begin gnulib module streq
+
+
+EXTRA_DIST += streq.h
+
+## end   gnulib module streq
+
+## begin gnulib module strerror
+
+
+EXTRA_DIST += strerror-impl.h strerror.c
+
+EXTRA_libgnulib_la_SOURCES += strerror.c
+
+## end   gnulib module strerror
+
+## begin gnulib module strerror_r-posix
+
+
+EXTRA_DIST += strerror_r.c
+
+EXTRA_libgnulib_la_SOURCES += strerror_r.c
+
+## end   gnulib module strerror_r-posix
+
+## begin gnulib module string
+
+BUILT_SOURCES += string.h
+
+# We need the following in order to create <string.h> when the system
+# doesn't have one that works with the given compiler.
+string.h: string.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_STRING_H''@|$(NEXT_STRING_H)|g' \
+             -e 's|@''GNULIB_MBSLEN''@|$(GNULIB_MBSLEN)|g' \
+             -e 's|@''GNULIB_MBSNLEN''@|$(GNULIB_MBSNLEN)|g' \
+             -e 's|@''GNULIB_MBSCHR''@|$(GNULIB_MBSCHR)|g' \
+             -e 's|@''GNULIB_MBSRCHR''@|$(GNULIB_MBSRCHR)|g' \
+             -e 's|@''GNULIB_MBSSTR''@|$(GNULIB_MBSSTR)|g' \
+             -e 's|@''GNULIB_MBSCASECMP''@|$(GNULIB_MBSCASECMP)|g' \
+             -e 's|@''GNULIB_MBSNCASECMP''@|$(GNULIB_MBSNCASECMP)|g' \
+             -e 's|@''GNULIB_MBSPCASECMP''@|$(GNULIB_MBSPCASECMP)|g' \
+             -e 's|@''GNULIB_MBSCASESTR''@|$(GNULIB_MBSCASESTR)|g' \
+             -e 's|@''GNULIB_MBSCSPN''@|$(GNULIB_MBSCSPN)|g' \
+             -e 's|@''GNULIB_MBSPBRK''@|$(GNULIB_MBSPBRK)|g' \
+             -e 's|@''GNULIB_MBSSPN''@|$(GNULIB_MBSSPN)|g' \
+             -e 's|@''GNULIB_MBSSEP''@|$(GNULIB_MBSSEP)|g' \
+             -e 's|@''GNULIB_MBSTOK_R''@|$(GNULIB_MBSTOK_R)|g' \
+             -e 's|@''GNULIB_MEMCHR''@|$(GNULIB_MEMCHR)|g' \
+             -e 's|@''GNULIB_MEMMEM''@|$(GNULIB_MEMMEM)|g' \
+             -e 's|@''GNULIB_MEMPCPY''@|$(GNULIB_MEMPCPY)|g' \
+             -e 's|@''GNULIB_MEMRCHR''@|$(GNULIB_MEMRCHR)|g' \
+             -e 's|@''GNULIB_RAWMEMCHR''@|$(GNULIB_RAWMEMCHR)|g' \
+             -e 's|@''GNULIB_STPCPY''@|$(GNULIB_STPCPY)|g' \
+             -e 's|@''GNULIB_STPNCPY''@|$(GNULIB_STPNCPY)|g' \
+             -e 's|@''GNULIB_STRCHRNUL''@|$(GNULIB_STRCHRNUL)|g' \
+             -e 's|@''GNULIB_STRDUP''@|$(GNULIB_STRDUP)|g' \
+             -e 's|@''GNULIB_STRNCAT''@|$(GNULIB_STRNCAT)|g' \
+             -e 's|@''GNULIB_STRNDUP''@|$(GNULIB_STRNDUP)|g' \
+             -e 's|@''GNULIB_STRNLEN''@|$(GNULIB_STRNLEN)|g' \
+             -e 's|@''GNULIB_STRPBRK''@|$(GNULIB_STRPBRK)|g' \
+             -e 's|@''GNULIB_STRSEP''@|$(GNULIB_STRSEP)|g' \
+             -e 's|@''GNULIB_STRSTR''@|$(GNULIB_STRSTR)|g' \
+             -e 's|@''GNULIB_STRCASESTR''@|$(GNULIB_STRCASESTR)|g' \
+             -e 's|@''GNULIB_STRTOK_R''@|$(GNULIB_STRTOK_R)|g' \
+             -e 's|@''GNULIB_STRERROR''@|$(GNULIB_STRERROR)|g' \
+             -e 's|@''GNULIB_STRERROR_R''@|$(GNULIB_STRERROR_R)|g' \
+             -e 's|@''GNULIB_STRSIGNAL''@|$(GNULIB_STRSIGNAL)|g' \
+             -e 's|@''GNULIB_STRVERSCMP''@|$(GNULIB_STRVERSCMP)|g' \
+             < $(srcdir)/string.in.h | \
+         sed -e 's|@''HAVE_MBSLEN''@|$(HAVE_MBSLEN)|g' \
+             -e 's|@''HAVE_MEMCHR''@|$(HAVE_MEMCHR)|g' \
+             -e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \
+             -e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \
+             -e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \
+             -e 's|@''HAVE_RAWMEMCHR''@|$(HAVE_RAWMEMCHR)|g' \
+             -e 's|@''HAVE_STPCPY''@|$(HAVE_STPCPY)|g' \
+             -e 's|@''HAVE_STPNCPY''@|$(HAVE_STPNCPY)|g' \
+             -e 's|@''HAVE_STRCHRNUL''@|$(HAVE_STRCHRNUL)|g' \
+             -e 's|@''HAVE_DECL_STRDUP''@|$(HAVE_DECL_STRDUP)|g' \
+             -e 's|@''HAVE_DECL_STRNDUP''@|$(HAVE_DECL_STRNDUP)|g' \
+             -e 's|@''HAVE_DECL_STRNLEN''@|$(HAVE_DECL_STRNLEN)|g' \
+             -e 's|@''HAVE_STRPBRK''@|$(HAVE_STRPBRK)|g' \
+             -e 's|@''HAVE_STRSEP''@|$(HAVE_STRSEP)|g' \
+             -e 's|@''HAVE_STRCASESTR''@|$(HAVE_STRCASESTR)|g' \
+             -e 's|@''HAVE_DECL_STRTOK_R''@|$(HAVE_DECL_STRTOK_R)|g' \
+             -e 's|@''HAVE_DECL_STRERROR_R''@|$(HAVE_DECL_STRERROR_R)|g' \
+             -e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \
+             -e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \
+             -e 's|@''REPLACE_STPNCPY''@|$(REPLACE_STPNCPY)|g' \
+             -e 's|@''REPLACE_MEMCHR''@|$(REPLACE_MEMCHR)|g' \
+             -e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \
+             -e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \
+             -e 's|@''REPLACE_STRCHRNUL''@|$(REPLACE_STRCHRNUL)|g' \
+             -e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \
+             -e 's|@''REPLACE_STRSTR''@|$(REPLACE_STRSTR)|g' \
+             -e 's|@''REPLACE_STRERROR''@|$(REPLACE_STRERROR)|g' \
+             -e 's|@''REPLACE_STRERROR_R''@|$(REPLACE_STRERROR_R)|g' \
+             -e 's|@''REPLACE_STRNCAT''@|$(REPLACE_STRNCAT)|g' \
+             -e 's|@''REPLACE_STRNDUP''@|$(REPLACE_STRNDUP)|g' \
+             -e 's|@''REPLACE_STRNLEN''@|$(REPLACE_STRNLEN)|g' \
+             -e 's|@''REPLACE_STRSIGNAL''@|$(REPLACE_STRSIGNAL)|g' \
+             -e 's|@''REPLACE_STRTOK_R''@|$(REPLACE_STRTOK_R)|g' \
+             -e 's|@''UNDEFINE_STRTOK_R''@|$(UNDEFINE_STRTOK_R)|g' \
+             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+             -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
+             < $(srcdir)/string.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+MOSTLYCLEANFILES += string.h string.h-t
+
+EXTRA_DIST += string.in.h
+
+## end   gnulib module string
+
+## begin gnulib module strndup
+
+
+EXTRA_DIST += strndup.c
+
+EXTRA_libgnulib_la_SOURCES += strndup.c
+
+## end   gnulib module strndup
+
+## begin gnulib module strnlen
+
+
+EXTRA_DIST += strnlen.c
+
+EXTRA_libgnulib_la_SOURCES += strnlen.c
+
+## end   gnulib module strnlen
+
+## begin gnulib module strtoll
+
+
+EXTRA_DIST += strtol.c strtoll.c
+
+EXTRA_libgnulib_la_SOURCES += strtol.c strtoll.c
+
+## end   gnulib module strtoll
+
+## begin gnulib module strtoull
+
+
+EXTRA_DIST += strtol.c strtoul.c strtoull.c
+
+EXTRA_libgnulib_la_SOURCES += strtol.c strtoul.c strtoull.c
+
+## end   gnulib module strtoull
+
+## begin gnulib module sys_stat
+
+BUILT_SOURCES += sys/stat.h
+
+# We need the following in order to create <sys/stat.h> when the system
+# has one that is incomplete.
+sys/stat.h: sys_stat.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+       $(AM_V_at)$(MKDIR_P) sys
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_SYS_STAT_H''@|$(NEXT_SYS_STAT_H)|g' \
+             -e 's|@''GNULIB_FCHMODAT''@|$(GNULIB_FCHMODAT)|g' \
+             -e 's|@''GNULIB_FSTATAT''@|$(GNULIB_FSTATAT)|g' \
+             -e 's|@''GNULIB_FUTIMENS''@|$(GNULIB_FUTIMENS)|g' \
+             -e 's|@''GNULIB_LCHMOD''@|$(GNULIB_LCHMOD)|g' \
+             -e 's|@''GNULIB_LSTAT''@|$(GNULIB_LSTAT)|g' \
+             -e 's|@''GNULIB_MKDIRAT''@|$(GNULIB_MKDIRAT)|g' \
+             -e 's|@''GNULIB_MKFIFO''@|$(GNULIB_MKFIFO)|g' \
+             -e 's|@''GNULIB_MKFIFOAT''@|$(GNULIB_MKFIFOAT)|g' \
+             -e 's|@''GNULIB_MKNOD''@|$(GNULIB_MKNOD)|g' \
+             -e 's|@''GNULIB_MKNODAT''@|$(GNULIB_MKNODAT)|g' \
+             -e 's|@''GNULIB_STAT''@|$(GNULIB_STAT)|g' \
+             -e 's|@''GNULIB_UTIMENSAT''@|$(GNULIB_UTIMENSAT)|g' \
+             -e 's|@''HAVE_FCHMODAT''@|$(HAVE_FCHMODAT)|g' \
+             -e 's|@''HAVE_FSTATAT''@|$(HAVE_FSTATAT)|g' \
+             -e 's|@''HAVE_FUTIMENS''@|$(HAVE_FUTIMENS)|g' \
+             -e 's|@''HAVE_LCHMOD''@|$(HAVE_LCHMOD)|g' \
+             -e 's|@''HAVE_LSTAT''@|$(HAVE_LSTAT)|g' \
+             -e 's|@''HAVE_MKDIRAT''@|$(HAVE_MKDIRAT)|g' \
+             -e 's|@''HAVE_MKFIFO''@|$(HAVE_MKFIFO)|g' \
+             -e 's|@''HAVE_MKFIFOAT''@|$(HAVE_MKFIFOAT)|g' \
+             -e 's|@''HAVE_MKNOD''@|$(HAVE_MKNOD)|g' \
+             -e 's|@''HAVE_MKNODAT''@|$(HAVE_MKNODAT)|g' \
+             -e 's|@''HAVE_UTIMENSAT''@|$(HAVE_UTIMENSAT)|g' \
+             -e 's|@''REPLACE_FSTAT''@|$(REPLACE_FSTAT)|g' \
+             -e 's|@''REPLACE_FSTATAT''@|$(REPLACE_FSTATAT)|g' \
+             -e 's|@''REPLACE_FUTIMENS''@|$(REPLACE_FUTIMENS)|g' \
+             -e 's|@''REPLACE_LSTAT''@|$(REPLACE_LSTAT)|g' \
+             -e 's|@''REPLACE_MKDIR''@|$(REPLACE_MKDIR)|g' \
+             -e 's|@''REPLACE_MKFIFO''@|$(REPLACE_MKFIFO)|g' \
+             -e 's|@''REPLACE_MKNOD''@|$(REPLACE_MKNOD)|g' \
+             -e 's|@''REPLACE_STAT''@|$(REPLACE_STAT)|g' \
+             -e 's|@''REPLACE_UTIMENSAT''@|$(REPLACE_UTIMENSAT)|g' \
+             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+             -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
+             < $(srcdir)/sys_stat.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+MOSTLYCLEANFILES += sys/stat.h sys/stat.h-t
+MOSTLYCLEANDIRS += sys
+
+EXTRA_DIST += sys_stat.in.h
+
+## end   gnulib module sys_stat
+
+## begin gnulib module sys_time
+
+BUILT_SOURCES += sys/time.h
+
+# We need the following in order to create <sys/time.h> when the system
+# doesn't have one that works with the given compiler.
+sys/time.h: sys_time.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+       $(AM_V_at)$(MKDIR_P) sys
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's/@''HAVE_SYS_TIME_H''@/$(HAVE_SYS_TIME_H)/g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_SYS_TIME_H''@|$(NEXT_SYS_TIME_H)|g' \
+             -e 's/@''GNULIB_GETTIMEOFDAY''@/$(GNULIB_GETTIMEOFDAY)/g' \
+             -e 's/@''HAVE_GETTIMEOFDAY''@/$(HAVE_GETTIMEOFDAY)/g' \
+             -e 's/@''HAVE_STRUCT_TIMEVAL''@/$(HAVE_STRUCT_TIMEVAL)/g' \
+             -e 's/@''REPLACE_GETTIMEOFDAY''@/$(REPLACE_GETTIMEOFDAY)/g' \
+             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+             -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
+             < $(srcdir)/sys_time.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+MOSTLYCLEANFILES += sys/time.h sys/time.h-t
+
+EXTRA_DIST += sys_time.in.h
+
+## end   gnulib module sys_time
+
+## begin gnulib module tempname
+
+
+EXTRA_DIST += tempname.c tempname.h
+
+EXTRA_libgnulib_la_SOURCES += tempname.c
+
+## end   gnulib module tempname
+
+## begin gnulib module threadlib
+
+libgnulib_la_SOURCES += glthread/threadlib.c
+
+EXTRA_DIST += $(top_srcdir)/build-aux/config.rpath
+
+## end   gnulib module threadlib
+
+## begin gnulib module time
+
+BUILT_SOURCES += time.h
+
+# We need the following in order to create <time.h> when the system
+# doesn't have one that works with the given compiler.
+time.h: time.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_TIME_H''@|$(NEXT_TIME_H)|g' \
+             -e 's|@''GNULIB_MKTIME''@|$(GNULIB_MKTIME)|g' \
+             -e 's|@''GNULIB_NANOSLEEP''@|$(GNULIB_NANOSLEEP)|g' \
+             -e 's|@''GNULIB_STRPTIME''@|$(GNULIB_STRPTIME)|g' \
+             -e 's|@''GNULIB_TIMEGM''@|$(GNULIB_TIMEGM)|g' \
+             -e 's|@''GNULIB_TIME_R''@|$(GNULIB_TIME_R)|g' \
+             -e 's|@''HAVE_DECL_LOCALTIME_R''@|$(HAVE_DECL_LOCALTIME_R)|g' \
+             -e 's|@''HAVE_NANOSLEEP''@|$(HAVE_NANOSLEEP)|g' \
+             -e 's|@''HAVE_STRPTIME''@|$(HAVE_STRPTIME)|g' \
+             -e 's|@''HAVE_TIMEGM''@|$(HAVE_TIMEGM)|g' \
+             -e 's|@''REPLACE_LOCALTIME_R''@|$(REPLACE_LOCALTIME_R)|g' \
+             -e 's|@''REPLACE_MKTIME''@|$(REPLACE_MKTIME)|g' \
+             -e 's|@''REPLACE_NANOSLEEP''@|$(REPLACE_NANOSLEEP)|g' \
+             -e 's|@''REPLACE_TIMEGM''@|$(REPLACE_TIMEGM)|g' \
+             -e 's|@''PTHREAD_H_DEFINES_STRUCT_TIMESPEC''@|$(PTHREAD_H_DEFINES_STRUCT_TIMESPEC)|g' \
+             -e 's|@''SYS_TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(SYS_TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \
+             -e 's|@''TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \
+             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+             -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
+             < $(srcdir)/time.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+MOSTLYCLEANFILES += time.h time.h-t
+
+EXTRA_DIST += time.in.h
+
+## end   gnulib module time
+
+## begin gnulib module unistd
+
+BUILT_SOURCES += unistd.h
+
+# We need the following in order to create an empty placeholder for
+# <unistd.h> when the system doesn't have one.
+unistd.h: unistd.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''HAVE_UNISTD_H''@|$(HAVE_UNISTD_H)|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_UNISTD_H''@|$(NEXT_UNISTD_H)|g' \
+             -e 's|@''GNULIB_CHOWN''@|$(GNULIB_CHOWN)|g' \
+             -e 's|@''GNULIB_CLOSE''@|$(GNULIB_CLOSE)|g' \
+             -e 's|@''GNULIB_DUP2''@|$(GNULIB_DUP2)|g' \
+             -e 's|@''GNULIB_DUP3''@|$(GNULIB_DUP3)|g' \
+             -e 's|@''GNULIB_ENVIRON''@|$(GNULIB_ENVIRON)|g' \
+             -e 's|@''GNULIB_EUIDACCESS''@|$(GNULIB_EUIDACCESS)|g' \
+             -e 's|@''GNULIB_FACCESSAT''@|$(GNULIB_FACCESSAT)|g' \
+             -e 's|@''GNULIB_FCHDIR''@|$(GNULIB_FCHDIR)|g' \
+             -e 's|@''GNULIB_FCHOWNAT''@|$(GNULIB_FCHOWNAT)|g' \
+             -e 's|@''GNULIB_FSYNC''@|$(GNULIB_FSYNC)|g' \
+             -e 's|@''GNULIB_FTRUNCATE''@|$(GNULIB_FTRUNCATE)|g' \
+             -e 's|@''GNULIB_GETCWD''@|$(GNULIB_GETCWD)|g' \
+             -e 's|@''GNULIB_GETDOMAINNAME''@|$(GNULIB_GETDOMAINNAME)|g' \
+             -e 's|@''GNULIB_GETDTABLESIZE''@|$(GNULIB_GETDTABLESIZE)|g' \
+             -e 's|@''GNULIB_GETGROUPS''@|$(GNULIB_GETGROUPS)|g' \
+             -e 's|@''GNULIB_GETHOSTNAME''@|$(GNULIB_GETHOSTNAME)|g' \
+             -e 's|@''GNULIB_GETLOGIN''@|$(GNULIB_GETLOGIN)|g' \
+             -e 's|@''GNULIB_GETLOGIN_R''@|$(GNULIB_GETLOGIN_R)|g' \
+             -e 's|@''GNULIB_GETPAGESIZE''@|$(GNULIB_GETPAGESIZE)|g' \
+             -e 's|@''GNULIB_GETUSERSHELL''@|$(GNULIB_GETUSERSHELL)|g' \
+             -e 's|@''GNULIB_GROUP_MEMBER''@|$(GNULIB_GROUP_MEMBER)|g' \
+             -e 's|@''GNULIB_LCHOWN''@|$(GNULIB_LCHOWN)|g' \
+             -e 's|@''GNULIB_LINK''@|$(GNULIB_LINK)|g' \
+             -e 's|@''GNULIB_LINKAT''@|$(GNULIB_LINKAT)|g' \
+             -e 's|@''GNULIB_LSEEK''@|$(GNULIB_LSEEK)|g' \
+             -e 's|@''GNULIB_PIPE''@|$(GNULIB_PIPE)|g' \
+             -e 's|@''GNULIB_PIPE2''@|$(GNULIB_PIPE2)|g' \
+             -e 's|@''GNULIB_PREAD''@|$(GNULIB_PREAD)|g' \
+             -e 's|@''GNULIB_PWRITE''@|$(GNULIB_PWRITE)|g' \
+             -e 's|@''GNULIB_READ''@|$(GNULIB_READ)|g' \
+             -e 's|@''GNULIB_READLINK''@|$(GNULIB_READLINK)|g' \
+             -e 's|@''GNULIB_READLINKAT''@|$(GNULIB_READLINKAT)|g' \
+             -e 's|@''GNULIB_RMDIR''@|$(GNULIB_RMDIR)|g' \
+             -e 's|@''GNULIB_SLEEP''@|$(GNULIB_SLEEP)|g' \
+             -e 's|@''GNULIB_SYMLINK''@|$(GNULIB_SYMLINK)|g' \
+             -e 's|@''GNULIB_SYMLINKAT''@|$(GNULIB_SYMLINKAT)|g' \
+             -e 's|@''GNULIB_TTYNAME_R''@|$(GNULIB_TTYNAME_R)|g' \
+             -e 's|@''GNULIB_UNISTD_H_GETOPT''@|$(GNULIB_UNISTD_H_GETOPT)|g' \
+             -e 's|@''GNULIB_UNISTD_H_NONBLOCKING''@|$(GNULIB_UNISTD_H_NONBLOCKING)|g' \
+             -e 's|@''GNULIB_UNISTD_H_SIGPIPE''@|$(GNULIB_UNISTD_H_SIGPIPE)|g' \
+             -e 's|@''GNULIB_UNLINK''@|$(GNULIB_UNLINK)|g' \
+             -e 's|@''GNULIB_UNLINKAT''@|$(GNULIB_UNLINKAT)|g' \
+             -e 's|@''GNULIB_USLEEP''@|$(GNULIB_USLEEP)|g' \
+             -e 's|@''GNULIB_WRITE''@|$(GNULIB_WRITE)|g' \
+             < $(srcdir)/unistd.in.h | \
+         sed -e 's|@''HAVE_CHOWN''@|$(HAVE_CHOWN)|g' \
+             -e 's|@''HAVE_DUP2''@|$(HAVE_DUP2)|g' \
+             -e 's|@''HAVE_DUP3''@|$(HAVE_DUP3)|g' \
+             -e 's|@''HAVE_EUIDACCESS''@|$(HAVE_EUIDACCESS)|g' \
+             -e 's|@''HAVE_FACCESSAT''@|$(HAVE_FACCESSAT)|g' \
+             -e 's|@''HAVE_FCHDIR''@|$(HAVE_FCHDIR)|g' \
+             -e 's|@''HAVE_FCHOWNAT''@|$(HAVE_FCHOWNAT)|g' \
+             -e 's|@''HAVE_FSYNC''@|$(HAVE_FSYNC)|g' \
+             -e 's|@''HAVE_FTRUNCATE''@|$(HAVE_FTRUNCATE)|g' \
+             -e 's|@''HAVE_GETDTABLESIZE''@|$(HAVE_GETDTABLESIZE)|g' \
+             -e 's|@''HAVE_GETGROUPS''@|$(HAVE_GETGROUPS)|g' \
+             -e 's|@''HAVE_GETHOSTNAME''@|$(HAVE_GETHOSTNAME)|g' \
+             -e 's|@''HAVE_GETLOGIN''@|$(HAVE_GETLOGIN)|g' \
+             -e 's|@''HAVE_GETPAGESIZE''@|$(HAVE_GETPAGESIZE)|g' \
+             -e 's|@''HAVE_GROUP_MEMBER''@|$(HAVE_GROUP_MEMBER)|g' \
+             -e 's|@''HAVE_LCHOWN''@|$(HAVE_LCHOWN)|g' \
+             -e 's|@''HAVE_LINK''@|$(HAVE_LINK)|g' \
+             -e 's|@''HAVE_LINKAT''@|$(HAVE_LINKAT)|g' \
+             -e 's|@''HAVE_PIPE''@|$(HAVE_PIPE)|g' \
+             -e 's|@''HAVE_PIPE2''@|$(HAVE_PIPE2)|g' \
+             -e 's|@''HAVE_PREAD''@|$(HAVE_PREAD)|g' \
+             -e 's|@''HAVE_PWRITE''@|$(HAVE_PWRITE)|g' \
+             -e 's|@''HAVE_READLINK''@|$(HAVE_READLINK)|g' \
+             -e 's|@''HAVE_READLINKAT''@|$(HAVE_READLINKAT)|g' \
+             -e 's|@''HAVE_SLEEP''@|$(HAVE_SLEEP)|g' \
+             -e 's|@''HAVE_SYMLINK''@|$(HAVE_SYMLINK)|g' \
+             -e 's|@''HAVE_SYMLINKAT''@|$(HAVE_SYMLINKAT)|g' \
+             -e 's|@''HAVE_UNLINKAT''@|$(HAVE_UNLINKAT)|g' \
+             -e 's|@''HAVE_USLEEP''@|$(HAVE_USLEEP)|g' \
+             -e 's|@''HAVE_DECL_ENVIRON''@|$(HAVE_DECL_ENVIRON)|g' \
+             -e 's|@''HAVE_DECL_FCHDIR''@|$(HAVE_DECL_FCHDIR)|g' \
+             -e 's|@''HAVE_DECL_GETDOMAINNAME''@|$(HAVE_DECL_GETDOMAINNAME)|g' \
+             -e 's|@''HAVE_DECL_GETLOGIN_R''@|$(HAVE_DECL_GETLOGIN_R)|g' \
+             -e 's|@''HAVE_DECL_GETPAGESIZE''@|$(HAVE_DECL_GETPAGESIZE)|g' \
+             -e 's|@''HAVE_DECL_GETUSERSHELL''@|$(HAVE_DECL_GETUSERSHELL)|g' \
+             -e 's|@''HAVE_DECL_TTYNAME_R''@|$(HAVE_DECL_TTYNAME_R)|g' \
+             -e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \
+             -e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \
+         | \
+         sed -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \
+             -e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \
+             -e 's|@''REPLACE_DUP''@|$(REPLACE_DUP)|g' \
+             -e 's|@''REPLACE_DUP2''@|$(REPLACE_DUP2)|g' \
+             -e 's|@''REPLACE_FCHOWNAT''@|$(REPLACE_FCHOWNAT)|g' \
+             -e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \
+             -e 's|@''REPLACE_GETDOMAINNAME''@|$(REPLACE_GETDOMAINNAME)|g' \
+             -e 's|@''REPLACE_GETLOGIN_R''@|$(REPLACE_GETLOGIN_R)|g' \
+             -e 's|@''REPLACE_GETGROUPS''@|$(REPLACE_GETGROUPS)|g' \
+             -e 's|@''REPLACE_GETPAGESIZE''@|$(REPLACE_GETPAGESIZE)|g' \
+             -e 's|@''REPLACE_LCHOWN''@|$(REPLACE_LCHOWN)|g' \
+             -e 's|@''REPLACE_LINK''@|$(REPLACE_LINK)|g' \
+             -e 's|@''REPLACE_LINKAT''@|$(REPLACE_LINKAT)|g' \
+             -e 's|@''REPLACE_LSEEK''@|$(REPLACE_LSEEK)|g' \
+             -e 's|@''REPLACE_PREAD''@|$(REPLACE_PREAD)|g' \
+             -e 's|@''REPLACE_PWRITE''@|$(REPLACE_PWRITE)|g' \
+             -e 's|@''REPLACE_READ''@|$(REPLACE_READ)|g' \
+             -e 's|@''REPLACE_READLINK''@|$(REPLACE_READLINK)|g' \
+             -e 's|@''REPLACE_RMDIR''@|$(REPLACE_RMDIR)|g' \
+             -e 's|@''REPLACE_SLEEP''@|$(REPLACE_SLEEP)|g' \
+             -e 's|@''REPLACE_SYMLINK''@|$(REPLACE_SYMLINK)|g' \
+             -e 's|@''REPLACE_TTYNAME_R''@|$(REPLACE_TTYNAME_R)|g' \
+             -e 's|@''REPLACE_UNLINK''@|$(REPLACE_UNLINK)|g' \
+             -e 's|@''REPLACE_UNLINKAT''@|$(REPLACE_UNLINKAT)|g' \
+             -e 's|@''REPLACE_USLEEP''@|$(REPLACE_USLEEP)|g' \
+             -e 's|@''REPLACE_WRITE''@|$(REPLACE_WRITE)|g' \
+             -e 's|@''UNISTD_H_HAVE_WINSOCK2_H''@|$(UNISTD_H_HAVE_WINSOCK2_H)|g' \
+             -e 's|@''UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS''@|$(UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS)|g' \
+             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+             -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
+       } > $@-t && \
+       mv $@-t $@
+MOSTLYCLEANFILES += unistd.h unistd.h-t
+
+EXTRA_DIST += unistd.in.h
+
+## end   gnulib module unistd
+
+## begin gnulib module unlink
+
+
+EXTRA_DIST += unlink.c
+
+EXTRA_libgnulib_la_SOURCES += unlink.c
+
+## end   gnulib module unlink
+
+## begin gnulib module update-copyright
+
+
+EXTRA_DIST += $(top_srcdir)/build-aux/update-copyright
+
+## end   gnulib module update-copyright
+
+## begin gnulib module useless-if-before-free
+
+
+EXTRA_DIST += $(top_srcdir)/build-aux/useless-if-before-free
+
+## end   gnulib module useless-if-before-free
+
+## begin gnulib module usleep
+
+
+EXTRA_DIST += usleep.c
+
+EXTRA_libgnulib_la_SOURCES += usleep.c
+
+## end   gnulib module usleep
+
+## begin gnulib module vc-list-files
+
+
+EXTRA_DIST += $(top_srcdir)/build-aux/vc-list-files
+
+## end   gnulib module vc-list-files
+
+## begin gnulib module verify
+
+
+EXTRA_DIST += verify.h
+
+## end   gnulib module verify
+
+## begin gnulib module version-etc
+
+libgnulib_la_SOURCES += version-etc.h version-etc.c
+
+## end   gnulib module version-etc
+
+## begin gnulib module version-etc-fsf
+
+libgnulib_la_SOURCES += version-etc-fsf.c
+
+## end   gnulib module version-etc-fsf
+
+## begin gnulib module warn-on-use
+
+BUILT_SOURCES += warn-on-use.h
+# The warn-on-use.h that gets inserted into generated .h files is the same as
+# build-aux/warn-on-use.h, except that it has the copyright header cut off.
+warn-on-use.h: $(top_srcdir)/build-aux/warn-on-use.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       sed -n -e '/^.ifndef/,$$p' \
+         < $(top_srcdir)/build-aux/warn-on-use.h \
+         > $@-t && \
+       mv $@-t $@
+MOSTLYCLEANFILES += warn-on-use.h warn-on-use.h-t
+
+WARN_ON_USE_H=warn-on-use.h
+
+EXTRA_DIST += $(top_srcdir)/build-aux/warn-on-use.h
+
+## end   gnulib module warn-on-use
+
+## begin gnulib module wchar
+
+BUILT_SOURCES += wchar.h
+
+# We need the following in order to create <wchar.h> when the system
+# version does not work standalone.
+wchar.h: wchar.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''HAVE_FEATURES_H''@|$(HAVE_FEATURES_H)|g' \
+             -e 's|@''NEXT_WCHAR_H''@|$(NEXT_WCHAR_H)|g' \
+             -e 's|@''HAVE_WCHAR_H''@|$(HAVE_WCHAR_H)|g' \
+             -e 's|@''GNULIB_BTOWC''@|$(GNULIB_BTOWC)|g' \
+             -e 's|@''GNULIB_WCTOB''@|$(GNULIB_WCTOB)|g' \
+             -e 's|@''GNULIB_MBSINIT''@|$(GNULIB_MBSINIT)|g' \
+             -e 's|@''GNULIB_MBRTOWC''@|$(GNULIB_MBRTOWC)|g' \
+             -e 's|@''GNULIB_MBRLEN''@|$(GNULIB_MBRLEN)|g' \
+             -e 's|@''GNULIB_MBSRTOWCS''@|$(GNULIB_MBSRTOWCS)|g' \
+             -e 's|@''GNULIB_MBSNRTOWCS''@|$(GNULIB_MBSNRTOWCS)|g' \
+             -e 's|@''GNULIB_WCRTOMB''@|$(GNULIB_WCRTOMB)|g' \
+             -e 's|@''GNULIB_WCSRTOMBS''@|$(GNULIB_WCSRTOMBS)|g' \
+             -e 's|@''GNULIB_WCSNRTOMBS''@|$(GNULIB_WCSNRTOMBS)|g' \
+             -e 's|@''GNULIB_WCWIDTH''@|$(GNULIB_WCWIDTH)|g' \
+             -e 's|@''GNULIB_WMEMCHR''@|$(GNULIB_WMEMCHR)|g' \
+             -e 's|@''GNULIB_WMEMCMP''@|$(GNULIB_WMEMCMP)|g' \
+             -e 's|@''GNULIB_WMEMCPY''@|$(GNULIB_WMEMCPY)|g' \
+             -e 's|@''GNULIB_WMEMMOVE''@|$(GNULIB_WMEMMOVE)|g' \
+             -e 's|@''GNULIB_WMEMSET''@|$(GNULIB_WMEMSET)|g' \
+             -e 's|@''GNULIB_WCSLEN''@|$(GNULIB_WCSLEN)|g' \
+             -e 's|@''GNULIB_WCSNLEN''@|$(GNULIB_WCSNLEN)|g' \
+             -e 's|@''GNULIB_WCSCPY''@|$(GNULIB_WCSCPY)|g' \
+             -e 's|@''GNULIB_WCPCPY''@|$(GNULIB_WCPCPY)|g' \
+             -e 's|@''GNULIB_WCSNCPY''@|$(GNULIB_WCSNCPY)|g' \
+             -e 's|@''GNULIB_WCPNCPY''@|$(GNULIB_WCPNCPY)|g' \
+             -e 's|@''GNULIB_WCSCAT''@|$(GNULIB_WCSCAT)|g' \
+             -e 's|@''GNULIB_WCSNCAT''@|$(GNULIB_WCSNCAT)|g' \
+             -e 's|@''GNULIB_WCSCMP''@|$(GNULIB_WCSCMP)|g' \
+             -e 's|@''GNULIB_WCSNCMP''@|$(GNULIB_WCSNCMP)|g' \
+             -e 's|@''GNULIB_WCSCASECMP''@|$(GNULIB_WCSCASECMP)|g' \
+             -e 's|@''GNULIB_WCSNCASECMP''@|$(GNULIB_WCSNCASECMP)|g' \
+             -e 's|@''GNULIB_WCSCOLL''@|$(GNULIB_WCSCOLL)|g' \
+             -e 's|@''GNULIB_WCSXFRM''@|$(GNULIB_WCSXFRM)|g' \
+             -e 's|@''GNULIB_WCSDUP''@|$(GNULIB_WCSDUP)|g' \
+             -e 's|@''GNULIB_WCSCHR''@|$(GNULIB_WCSCHR)|g' \
+             -e 's|@''GNULIB_WCSRCHR''@|$(GNULIB_WCSRCHR)|g' \
+             -e 's|@''GNULIB_WCSCSPN''@|$(GNULIB_WCSCSPN)|g' \
+             -e 's|@''GNULIB_WCSSPN''@|$(GNULIB_WCSSPN)|g' \
+             -e 's|@''GNULIB_WCSPBRK''@|$(GNULIB_WCSPBRK)|g' \
+             -e 's|@''GNULIB_WCSSTR''@|$(GNULIB_WCSSTR)|g' \
+             -e 's|@''GNULIB_WCSTOK''@|$(GNULIB_WCSTOK)|g' \
+             -e 's|@''GNULIB_WCSWIDTH''@|$(GNULIB_WCSWIDTH)|g' \
+             < $(srcdir)/wchar.in.h | \
+         sed -e 's|@''HAVE_WINT_T''@|$(HAVE_WINT_T)|g' \
+             -e 's|@''HAVE_BTOWC''@|$(HAVE_BTOWC)|g' \
+             -e 's|@''HAVE_MBSINIT''@|$(HAVE_MBSINIT)|g' \
+             -e 's|@''HAVE_MBRTOWC''@|$(HAVE_MBRTOWC)|g' \
+             -e 's|@''HAVE_MBRLEN''@|$(HAVE_MBRLEN)|g' \
+             -e 's|@''HAVE_MBSRTOWCS''@|$(HAVE_MBSRTOWCS)|g' \
+             -e 's|@''HAVE_MBSNRTOWCS''@|$(HAVE_MBSNRTOWCS)|g' \
+             -e 's|@''HAVE_WCRTOMB''@|$(HAVE_WCRTOMB)|g' \
+             -e 's|@''HAVE_WCSRTOMBS''@|$(HAVE_WCSRTOMBS)|g' \
+             -e 's|@''HAVE_WCSNRTOMBS''@|$(HAVE_WCSNRTOMBS)|g' \
+             -e 's|@''HAVE_WMEMCHR''@|$(HAVE_WMEMCHR)|g' \
+             -e 's|@''HAVE_WMEMCMP''@|$(HAVE_WMEMCMP)|g' \
+             -e 's|@''HAVE_WMEMCPY''@|$(HAVE_WMEMCPY)|g' \
+             -e 's|@''HAVE_WMEMMOVE''@|$(HAVE_WMEMMOVE)|g' \
+             -e 's|@''HAVE_WMEMSET''@|$(HAVE_WMEMSET)|g' \
+             -e 's|@''HAVE_WCSLEN''@|$(HAVE_WCSLEN)|g' \
+             -e 's|@''HAVE_WCSNLEN''@|$(HAVE_WCSNLEN)|g' \
+             -e 's|@''HAVE_WCSCPY''@|$(HAVE_WCSCPY)|g' \
+             -e 's|@''HAVE_WCPCPY''@|$(HAVE_WCPCPY)|g' \
+             -e 's|@''HAVE_WCSNCPY''@|$(HAVE_WCSNCPY)|g' \
+             -e 's|@''HAVE_WCPNCPY''@|$(HAVE_WCPNCPY)|g' \
+             -e 's|@''HAVE_WCSCAT''@|$(HAVE_WCSCAT)|g' \
+             -e 's|@''HAVE_WCSNCAT''@|$(HAVE_WCSNCAT)|g' \
+             -e 's|@''HAVE_WCSCMP''@|$(HAVE_WCSCMP)|g' \
+             -e 's|@''HAVE_WCSNCMP''@|$(HAVE_WCSNCMP)|g' \
+             -e 's|@''HAVE_WCSCASECMP''@|$(HAVE_WCSCASECMP)|g' \
+             -e 's|@''HAVE_WCSNCASECMP''@|$(HAVE_WCSNCASECMP)|g' \
+             -e 's|@''HAVE_WCSCOLL''@|$(HAVE_WCSCOLL)|g' \
+             -e 's|@''HAVE_WCSXFRM''@|$(HAVE_WCSXFRM)|g' \
+             -e 's|@''HAVE_WCSDUP''@|$(HAVE_WCSDUP)|g' \
+             -e 's|@''HAVE_WCSCHR''@|$(HAVE_WCSCHR)|g' \
+             -e 's|@''HAVE_WCSRCHR''@|$(HAVE_WCSRCHR)|g' \
+             -e 's|@''HAVE_WCSCSPN''@|$(HAVE_WCSCSPN)|g' \
+             -e 's|@''HAVE_WCSSPN''@|$(HAVE_WCSSPN)|g' \
+             -e 's|@''HAVE_WCSPBRK''@|$(HAVE_WCSPBRK)|g' \
+             -e 's|@''HAVE_WCSSTR''@|$(HAVE_WCSSTR)|g' \
+             -e 's|@''HAVE_WCSTOK''@|$(HAVE_WCSTOK)|g' \
+             -e 's|@''HAVE_WCSWIDTH''@|$(HAVE_WCSWIDTH)|g' \
+             -e 's|@''HAVE_DECL_WCTOB''@|$(HAVE_DECL_WCTOB)|g' \
+             -e 's|@''HAVE_DECL_WCWIDTH''@|$(HAVE_DECL_WCWIDTH)|g' \
+         | \
+         sed -e 's|@''REPLACE_MBSTATE_T''@|$(REPLACE_MBSTATE_T)|g' \
+             -e 's|@''REPLACE_BTOWC''@|$(REPLACE_BTOWC)|g' \
+             -e 's|@''REPLACE_WCTOB''@|$(REPLACE_WCTOB)|g' \
+             -e 's|@''REPLACE_MBSINIT''@|$(REPLACE_MBSINIT)|g' \
+             -e 's|@''REPLACE_MBRTOWC''@|$(REPLACE_MBRTOWC)|g' \
+             -e 's|@''REPLACE_MBRLEN''@|$(REPLACE_MBRLEN)|g' \
+             -e 's|@''REPLACE_MBSRTOWCS''@|$(REPLACE_MBSRTOWCS)|g' \
+             -e 's|@''REPLACE_MBSNRTOWCS''@|$(REPLACE_MBSNRTOWCS)|g' \
+             -e 's|@''REPLACE_WCRTOMB''@|$(REPLACE_WCRTOMB)|g' \
+             -e 's|@''REPLACE_WCSRTOMBS''@|$(REPLACE_WCSRTOMBS)|g' \
+             -e 's|@''REPLACE_WCSNRTOMBS''@|$(REPLACE_WCSNRTOMBS)|g' \
+             -e 's|@''REPLACE_WCWIDTH''@|$(REPLACE_WCWIDTH)|g' \
+             -e 's|@''REPLACE_WCSWIDTH''@|$(REPLACE_WCSWIDTH)|g' \
+             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+             -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
+       } > $@-t && \
+       mv $@-t $@
+MOSTLYCLEANFILES += wchar.h wchar.h-t
+
+EXTRA_DIST += wchar.in.h
+
+## end   gnulib module wchar
+
+## begin gnulib module wcrtomb
+
+
+EXTRA_DIST += wcrtomb.c
+
+EXTRA_libgnulib_la_SOURCES += wcrtomb.c
+
+## end   gnulib module wcrtomb
+
+## begin gnulib module wctype-h
+
+BUILT_SOURCES += wctype.h
+
+# We need the following in order to create <wctype.h> when the system
+# doesn't have one that works with the given compiler.
+wctype.h: wctype.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H)
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's/@''HAVE_WCTYPE_H''@/$(HAVE_WCTYPE_H)/g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_WCTYPE_H''@|$(NEXT_WCTYPE_H)|g' \
+             -e 's/@''GNULIB_ISWBLANK''@/$(GNULIB_ISWBLANK)/g' \
+             -e 's/@''GNULIB_WCTYPE''@/$(GNULIB_WCTYPE)/g' \
+             -e 's/@''GNULIB_ISWCTYPE''@/$(GNULIB_ISWCTYPE)/g' \
+             -e 's/@''GNULIB_WCTRANS''@/$(GNULIB_WCTRANS)/g' \
+             -e 's/@''GNULIB_TOWCTRANS''@/$(GNULIB_TOWCTRANS)/g' \
+             -e 's/@''HAVE_ISWBLANK''@/$(HAVE_ISWBLANK)/g' \
+             -e 's/@''HAVE_ISWCNTRL''@/$(HAVE_ISWCNTRL)/g' \
+             -e 's/@''HAVE_WCTYPE_T''@/$(HAVE_WCTYPE_T)/g' \
+             -e 's/@''HAVE_WCTRANS_T''@/$(HAVE_WCTRANS_T)/g' \
+             -e 's/@''HAVE_WINT_T''@/$(HAVE_WINT_T)/g' \
+             -e 's/@''REPLACE_ISWBLANK''@/$(REPLACE_ISWBLANK)/g' \
+             -e 's/@''REPLACE_ISWCNTRL''@/$(REPLACE_ISWCNTRL)/g' \
+             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
+             < $(srcdir)/wctype.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+MOSTLYCLEANFILES += wctype.h wctype.h-t
+
+EXTRA_DIST += wctype.in.h
+
+## end   gnulib module wctype-h
+
+## begin gnulib module xalloc
+
+
+EXTRA_DIST += xalloc.h xmalloc.c
+
+EXTRA_libgnulib_la_SOURCES += xmalloc.c
+
+## end   gnulib module xalloc
+
+## begin gnulib module xalloc-die
+
+libgnulib_la_SOURCES += xalloc-die.c
+
+## end   gnulib module xalloc-die
+
+## begin gnulib module xalloc-oversized
+
+
+EXTRA_DIST += xalloc-oversized.h
+
+## end   gnulib module xalloc-oversized
+
+## begin gnulib module xstrndup
+
+libgnulib_la_SOURCES += xstrndup.h xstrndup.c
+
+## end   gnulib module xstrndup
+
+## begin gnulib module xstrtol
+
+
+EXTRA_DIST += xstrtol-error.c xstrtol.c xstrtol.h xstrtoul.c
+
+EXTRA_libgnulib_la_SOURCES += xstrtol-error.c xstrtol.c xstrtoul.c
+
+## end   gnulib module xstrtol
+
+## begin gnulib module xstrtoll
+
+
+EXTRA_DIST += xstrtoll.c xstrtoull.c
+
+EXTRA_libgnulib_la_SOURCES += xstrtoll.c xstrtoull.c
+
+## end   gnulib module xstrtoll
+
+
+mostlyclean-local: mostlyclean-generic
+       @for dir in '' $(MOSTLYCLEANDIRS); do \
+         if test -n "$$dir" && test -d $$dir; then \
+           echo "rmdir $$dir"; rmdir $$dir; \
+         fi; \
+       done; \
+       :
diff --git a/lib/intprops.h b/lib/intprops.h
new file mode 100644 (file)
index 0000000..1f6a539
--- /dev/null
@@ -0,0 +1,319 @@
+/* intprops.h -- properties of integer types
+
+   Copyright (C) 2001-2005, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+/* Written by Paul Eggert.  */
+
+#ifndef _GL_INTPROPS_H
+#define _GL_INTPROPS_H
+
+#include <limits.h>
+
+/* Return an integer value, converted to the same type as the integer
+   expression E after integer type promotion.  V is the unconverted value.  */
+#define _GL_INT_CONVERT(e, v) (0 * (e) + (v))
+
+/* Act like _GL_INT_CONVERT (E, -V) but work around a bug in IRIX 6.5 cc; see
+   <http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00406.html>.  */
+#define _GL_INT_NEGATE_CONVERT(e, v) (0 * (e) - (v))
+
+/* The extra casts in the following macros work around compiler bugs,
+   e.g., in Cray C 5.0.3.0.  */
+
+/* True if the arithmetic type T is an integer type.  bool counts as
+   an integer.  */
+#define TYPE_IS_INTEGER(t) ((t) 1.5 == 1)
+
+/* True if negative values of the signed integer type T use two's
+   complement, ones' complement, or signed magnitude representation,
+   respectively.  Much GNU code assumes two's complement, but some
+   people like to be portable to all possible C hosts.  */
+#define TYPE_TWOS_COMPLEMENT(t) ((t) ~ (t) 0 == (t) -1)
+#define TYPE_ONES_COMPLEMENT(t) ((t) ~ (t) 0 == 0)
+#define TYPE_SIGNED_MAGNITUDE(t) ((t) ~ (t) 0 < (t) -1)
+
+/* True if the signed integer expression E uses two's complement.  */
+#define _GL_INT_TWOS_COMPLEMENT(e) (~ _GL_INT_CONVERT (e, 0) == -1)
+
+/* True if the arithmetic type T is signed.  */
+#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
+
+/* Return 1 if the integer expression E, after integer promotion, has
+   a signed type.  */
+#define _GL_INT_SIGNED(e) (_GL_INT_NEGATE_CONVERT (e, 1) < 0)
+
+
+/* Minimum and maximum values for integer types and expressions.  These
+   macros have undefined behavior if T is signed and has padding bits.
+   If this is a problem for you, please let us know how to fix it for
+   your host.  */
+
+/* The maximum and minimum values for the integer type T.  */
+#define TYPE_MINIMUM(t)                                                 \
+  ((t) (! TYPE_SIGNED (t)                                               \
+        ? (t) 0                                                         \
+        : TYPE_SIGNED_MAGNITUDE (t)                                     \
+        ? ~ (t) 0                                                       \
+        : ~ TYPE_MAXIMUM (t)))
+#define TYPE_MAXIMUM(t)                                                 \
+  ((t) (! TYPE_SIGNED (t)                                               \
+        ? (t) -1                                                        \
+        : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1)))
+
+/* The maximum and minimum values for the type of the expression E,
+   after integer promotion.  E should not have side effects.  */
+#define _GL_INT_MINIMUM(e)                                              \
+  (_GL_INT_SIGNED (e)                                                   \
+   ? - _GL_INT_TWOS_COMPLEMENT (e) - _GL_SIGNED_INT_MAXIMUM (e)         \
+   : _GL_INT_CONVERT (e, 0))
+#define _GL_INT_MAXIMUM(e)                                              \
+  (_GL_INT_SIGNED (e)                                                   \
+   ? _GL_SIGNED_INT_MAXIMUM (e)                                         \
+   : _GL_INT_NEGATE_CONVERT (e, 1))
+#define _GL_SIGNED_INT_MAXIMUM(e)                                       \
+  (((_GL_INT_CONVERT (e, 1) << (sizeof ((e) + 0) * CHAR_BIT - 2)) - 1) * 2 + 1)
+
+
+/* Return 1 if the __typeof__ keyword works.  This could be done by
+   'configure', but for now it's easier to do it by hand.  */
+#if 2 <= __GNUC__ || 0x5110 <= __SUNPRO_C
+# define _GL_HAVE___TYPEOF__ 1
+#else
+# define _GL_HAVE___TYPEOF__ 0
+#endif
+
+/* Return 1 if the integer type or expression T might be signed.  Return 0
+   if it is definitely unsigned.  This macro does not evaluate its argument,
+   and expands to an integer constant expression.  */
+#if _GL_HAVE___TYPEOF__
+# define _GL_SIGNED_TYPE_OR_EXPR(t) TYPE_SIGNED (__typeof__ (t))
+#else
+# define _GL_SIGNED_TYPE_OR_EXPR(t) 1
+#endif
+
+/* Bound on length of the string representing an unsigned integer
+   value representable in B bits.  log10 (2.0) < 146/485.  The
+   smallest value of B where this bound is not tight is 2621.  */
+#define INT_BITS_STRLEN_BOUND(b) (((b) * 146 + 484) / 485)
+
+/* Bound on length of the string representing an integer type or expression T.
+   Subtract 1 for the sign bit if T is signed, and then add 1 more for
+   a minus sign if needed.
+
+   Because _GL_SIGNED_TYPE_OR_EXPR sometimes returns 0 when its argument is
+   signed, this macro may overestimate the true bound by one byte when
+   applied to unsigned types of size 2, 4, 16, ... bytes.  */
+#define INT_STRLEN_BOUND(t)                                     \
+  (INT_BITS_STRLEN_BOUND (sizeof (t) * CHAR_BIT                 \
+                          - _GL_SIGNED_TYPE_OR_EXPR (t))        \
+   + _GL_SIGNED_TYPE_OR_EXPR (t))
+
+/* Bound on buffer size needed to represent an integer type or expression T,
+   including the terminating null.  */
+#define INT_BUFSIZE_BOUND(t) (INT_STRLEN_BOUND (t) + 1)
+
+
+/* Range overflow checks.
+
+   The INT_<op>_RANGE_OVERFLOW macros return 1 if the corresponding C
+   operators might not yield numerically correct answers due to
+   arithmetic overflow.  They do not rely on undefined or
+   implementation-defined behavior.  Their implementations are simple
+   and straightforward, but they are a bit harder to use than the
+   INT_<op>_OVERFLOW macros described below.
+
+   Example usage:
+
+     long int i = ...;
+     long int j = ...;
+     if (INT_MULTIPLY_RANGE_OVERFLOW (i, j, LONG_MIN, LONG_MAX))
+       printf ("multiply would overflow");
+     else
+       printf ("product is %ld", i * j);
+
+   Restrictions on *_RANGE_OVERFLOW macros:
+
+   These macros do not check for all possible numerical problems or
+   undefined or unspecified behavior: they do not check for division
+   by zero, for bad shift counts, or for shifting negative numbers.
+
+   These macros may evaluate their arguments zero or multiple times,
+   so the arguments should not have side effects.  The arithmetic
+   arguments (including the MIN and MAX arguments) must be of the same
+   integer type after the usual arithmetic conversions, and the type
+   must have minimum value MIN and maximum MAX.  Unsigned types should
+   use a zero MIN of the proper type.
+
+   These macros are tuned for constant MIN and MAX.  For commutative
+   operations such as A + B, they are also tuned for constant B.  */
+
+/* Return 1 if A + B would overflow in [MIN,MAX] arithmetic.
+   See above for restrictions.  */
+#define INT_ADD_RANGE_OVERFLOW(a, b, min, max)          \
+  ((b) < 0                                              \
+   ? (a) < (min) - (b)                                  \
+   : (max) - (b) < (a))
+
+/* Return 1 if A - B would overflow in [MIN,MAX] arithmetic.
+   See above for restrictions.  */
+#define INT_SUBTRACT_RANGE_OVERFLOW(a, b, min, max)     \
+  ((b) < 0                                              \
+   ? (max) + (b) < (a)                                  \
+   : (a) < (min) + (b))
+
+/* Return 1 if - A would overflow in [MIN,MAX] arithmetic.
+   See above for restrictions.  */
+#define INT_NEGATE_RANGE_OVERFLOW(a, min, max)          \
+  ((min) < 0                                            \
+   ? (a) < - (max)                                      \
+   : 0 < (a))
+
+/* Return 1 if A * B would overflow in [MIN,MAX] arithmetic.
+   See above for restrictions.  Avoid && and || as they tickle
+   bugs in Sun C 5.11 2010/08/13 and other compilers; see
+   <http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00401.html>.  */
+#define INT_MULTIPLY_RANGE_OVERFLOW(a, b, min, max)     \
+  ((b) < 0                                              \
+   ? ((a) < 0                                           \
+      ? (a) < (max) / (b)                               \
+      : (b) == -1                                       \
+      ? 0                                               \
+      : (min) / (b) < (a))                              \
+   : (b) == 0                                           \
+   ? 0                                                  \
+   : ((a) < 0                                           \
+      ? (a) < (min) / (b)                               \
+      : (max) / (b) < (a)))
+
+/* Return 1 if A / B would overflow in [MIN,MAX] arithmetic.
+   See above for restrictions.  Do not check for division by zero.  */
+#define INT_DIVIDE_RANGE_OVERFLOW(a, b, min, max)       \
+  ((min) < 0 && (b) == -1 && (a) < - (max))
+
+/* Return 1 if A % B would overflow in [MIN,MAX] arithmetic.
+   See above for restrictions.  Do not check for division by zero.
+   Mathematically, % should never overflow, but on x86-like hosts
+   INT_MIN % -1 traps, and the C standard permits this, so treat this
+   as an overflow too.  */
+#define INT_REMAINDER_RANGE_OVERFLOW(a, b, min, max)    \
+  INT_DIVIDE_RANGE_OVERFLOW (a, b, min, max)
+
+/* Return 1 if A << B would overflow in [MIN,MAX] arithmetic.
+   See above for restrictions.  Here, MIN and MAX are for A only, and B need
+   not be of the same type as the other arguments.  The C standard says that
+   behavior is undefined for shifts unless 0 <= B < wordwidth, and that when
+   A is negative then A << B has undefined behavior and A >> B has
+   implementation-defined behavior, but do not check these other
+   restrictions.  */
+#define INT_LEFT_SHIFT_RANGE_OVERFLOW(a, b, min, max)   \
+  ((a) < 0                                              \
+   ? (a) < (min) >> (b)                                 \
+   : (max) >> (b) < (a))
+
+
+/* The _GL*_OVERFLOW macros have the same restrictions as the
+   *_RANGE_OVERFLOW macros, except that they do not assume that operands
+   (e.g., A and B) have the same type as MIN and MAX.  Instead, they assume
+   that the result (e.g., A + B) has that type.  */
+#define _GL_ADD_OVERFLOW(a, b, min, max)                                \
+  ((min) < 0 ? INT_ADD_RANGE_OVERFLOW (a, b, min, max)                  \
+   : (a) < 0 ? (b) <= (a) + (b)                                         \
+   : (b) < 0 ? (a) <= (a) + (b)                                         \
+   : (a) + (b) < (b))
+#define _GL_SUBTRACT_OVERFLOW(a, b, min, max)                           \
+  ((min) < 0 ? INT_SUBTRACT_RANGE_OVERFLOW (a, b, min, max)             \
+   : (a) < 0 ? 1                                                        \
+   : (b) < 0 ? (a) - (b) <= (a)                                         \
+   : (a) < (b))
+#define _GL_MULTIPLY_OVERFLOW(a, b, min, max)                           \
+  (((min) == 0 && (((a) < 0 && 0 < (b)) || ((b) < 0 && 0 < (a))))       \
+   || INT_MULTIPLY_RANGE_OVERFLOW (a, b, min, max))
+#define _GL_DIVIDE_OVERFLOW(a, b, min, max)                             \
+  ((min) < 0 ? (b) == _GL_INT_NEGATE_CONVERT (min, 1) && (a) < - (max)  \
+   : (a) < 0 ? (b) <= (a) + (b) - 1                                     \
+   : (b) < 0 && (a) + (b) <= (a))
+#define _GL_REMAINDER_OVERFLOW(a, b, min, max)                          \
+  ((min) < 0 ? (b) == _GL_INT_NEGATE_CONVERT (min, 1) && (a) < - (max)  \
+   : (a) < 0 ? (a) % (b) != ((max) - (b) + 1) % (b)                     \
+   : (b) < 0 && ! _GL_UNSIGNED_NEG_MULTIPLE (a, b, max))
+
+/* Return a nonzero value if A is a mathematical multiple of B, where
+   A is unsigned, B is negative, and MAX is the maximum value of A's
+   type.  A's type must be the same as (A % B)'s type.  Normally (A %
+   -B == 0) suffices, but things get tricky if -B would overflow.  */
+#define _GL_UNSIGNED_NEG_MULTIPLE(a, b, max)                            \
+  (((b) < -_GL_SIGNED_INT_MAXIMUM (b)                                   \
+    ? (_GL_SIGNED_INT_MAXIMUM (b) == (max)                              \
+       ? (a)                                                            \
+       : (a) % (_GL_INT_CONVERT (a, _GL_SIGNED_INT_MAXIMUM (b)) + 1))   \
+    : (a) % - (b))                                                      \
+   == 0)
+
+
+/* Integer overflow checks.
+
+   The INT_<op>_OVERFLOW macros return 1 if the corresponding C operators
+   might not yield numerically correct answers due to arithmetic overflow.
+   They work correctly on all known practical hosts, and do not rely
+   on undefined behavior due to signed arithmetic overflow.
+
+   Example usage:
+
+     long int i = ...;
+     long int j = ...;
+     if (INT_MULTIPLY_OVERFLOW (i, j))
+       printf ("multiply would overflow");
+     else
+       printf ("product is %ld", i * j);
+
+   These macros do not check for all possible numerical problems or
+   undefined or unspecified behavior: they do not check for division
+   by zero, for bad shift counts, or for shifting negative numbers.
+
+   These macros may evaluate their arguments zero or multiple times, so the
+   arguments should not have side effects.
+
+   These macros are tuned for their last argument being a constant.
+
+   Return 1 if the integer expressions A * B, A - B, -A, A * B, A / B,
+   A % B, and A << B would overflow, respectively.  */
+
+#define INT_ADD_OVERFLOW(a, b) \
+  _GL_BINARY_OP_OVERFLOW (a, b, _GL_ADD_OVERFLOW)
+#define INT_SUBTRACT_OVERFLOW(a, b) \
+  _GL_BINARY_OP_OVERFLOW (a, b, _GL_SUBTRACT_OVERFLOW)
+#define INT_NEGATE_OVERFLOW(a) \
+  INT_NEGATE_RANGE_OVERFLOW (a, _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a))
+#define INT_MULTIPLY_OVERFLOW(a, b) \
+  _GL_BINARY_OP_OVERFLOW (a, b, _GL_MULTIPLY_OVERFLOW)
+#define INT_DIVIDE_OVERFLOW(a, b) \
+  _GL_BINARY_OP_OVERFLOW (a, b, _GL_DIVIDE_OVERFLOW)
+#define INT_REMAINDER_OVERFLOW(a, b) \
+  _GL_BINARY_OP_OVERFLOW (a, b, _GL_REMAINDER_OVERFLOW)
+#define INT_LEFT_SHIFT_OVERFLOW(a, b) \
+  INT_LEFT_SHIFT_RANGE_OVERFLOW (a, b, \
+                                 _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a))
+
+/* Return 1 if the expression A <op> B would overflow,
+   where OP_RESULT_OVERFLOW (A, B, MIN, MAX) does the actual test,
+   assuming MIN and MAX are the minimum and maximum for the result type.
+   Arguments should be free of side effects.  */
+#define _GL_BINARY_OP_OVERFLOW(a, b, op_result_overflow)        \
+  op_result_overflow (a, b,                                     \
+                      _GL_INT_MINIMUM (0 * (b) + (a)),          \
+                      _GL_INT_MAXIMUM (0 * (b) + (a)))
+
+#endif /* _GL_INTPROPS_H */
diff --git a/lib/inttypes.in.h b/lib/inttypes.in.h
new file mode 100644 (file)
index 0000000..7abf394
--- /dev/null
@@ -0,0 +1,1110 @@
+/* Copyright (C) 2006-2011 Free Software Foundation, Inc.
+   Written by Paul Eggert, Bruno Haible, Derek Price.
+   This file is part of gnulib.
+
+   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 <http://www.gnu.org/licenses/>.  */
+
+/*
+ * ISO C 99 <inttypes.h> for platforms that lack it.
+ * <http://www.opengroup.org/susv3xbd/inttypes.h.html>
+ */
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+/* Include the original <inttypes.h> if it exists, and if this file
+   has not been included yet or if this file includes gnulib stdint.h
+   which in turn includes this file.
+   The include_next requires a split double-inclusion guard.  */
+#if ! defined INTTYPES_H || defined _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
+# if @HAVE_INTTYPES_H@
+#  @INCLUDE_NEXT@ @NEXT_INTTYPES_H@
+# endif
+#endif
+
+#if ! defined INTTYPES_H && ! defined _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
+#define INTTYPES_H
+
+/* Include <stdint.h> or the gnulib replacement.
+   But avoid namespace pollution on glibc systems.  */
+#ifndef __GLIBC__
+# include <stdint.h>
+#endif
+/* Get CHAR_BIT.  */
+#include <limits.h>
+
+#if !(INT_MIN == INT32_MIN && INT_MAX == INT32_MAX)
+# error "This file assumes that 'int' has exactly 32 bits. Please report your platform and compiler to <bug-gnulib@gnu.org>."
+#endif
+
+/* The definition of _GL_ARG_NONNULL is copied here.  */
+
+/* The definition of _GL_WARN_ON_USE is copied here.  */
+
+/* 7.8.1 Macros for format specifiers */
+
+#if ! defined __cplusplus || defined __STDC_FORMAT_MACROS
+
+# if defined _TNS_R_TARGET
+   /* Tandem NonStop R series and compatible platforms released before
+      July 2005 support %Ld but not %lld.  */
+#  define _LONG_LONG_FORMAT_PREFIX "L"
+# else
+#  define _LONG_LONG_FORMAT_PREFIX "ll"
+# endif
+
+# if !defined PRId8 || @PRI_MACROS_BROKEN@
+#  undef PRId8
+#  ifdef INT8_MAX
+#   define PRId8 "d"
+#  endif
+# endif
+# if !defined PRIi8 || @PRI_MACROS_BROKEN@
+#  undef PRIi8
+#  ifdef INT8_MAX
+#   define PRIi8 "i"
+#  endif
+# endif
+# if !defined PRIo8 || @PRI_MACROS_BROKEN@
+#  undef PRIo8
+#  ifdef UINT8_MAX
+#   define PRIo8 "o"
+#  endif
+# endif
+# if !defined PRIu8 || @PRI_MACROS_BROKEN@
+#  undef PRIu8
+#  ifdef UINT8_MAX
+#   define PRIu8 "u"
+#  endif
+# endif
+# if !defined PRIx8 || @PRI_MACROS_BROKEN@
+#  undef PRIx8
+#  ifdef UINT8_MAX
+#   define PRIx8 "x"
+#  endif
+# endif
+# if !defined PRIX8 || @PRI_MACROS_BROKEN@
+#  undef PRIX8
+#  ifdef UINT8_MAX
+#   define PRIX8 "X"
+#  endif
+# endif
+# if !defined PRId16 || @PRI_MACROS_BROKEN@
+#  undef PRId16
+#  ifdef INT16_MAX
+#   define PRId16 "d"
+#  endif
+# endif
+# if !defined PRIi16 || @PRI_MACROS_BROKEN@
+#  undef PRIi16
+#  ifdef INT16_MAX
+#   define PRIi16 "i"
+#  endif
+# endif
+# if !defined PRIo16 || @PRI_MACROS_BROKEN@
+#  undef PRIo16
+#  ifdef UINT16_MAX
+#   define PRIo16 "o"
+#  endif
+# endif
+# if !defined PRIu16 || @PRI_MACROS_BROKEN@
+#  undef PRIu16
+#  ifdef UINT16_MAX
+#   define PRIu16 "u"
+#  endif
+# endif
+# if !defined PRIx16 || @PRI_MACROS_BROKEN@
+#  undef PRIx16
+#  ifdef UINT16_MAX
+#   define PRIx16 "x"
+#  endif
+# endif
+# if !defined PRIX16 || @PRI_MACROS_BROKEN@
+#  undef PRIX16
+#  ifdef UINT16_MAX
+#   define PRIX16 "X"
+#  endif
+# endif
+# if !defined PRId32 || @PRI_MACROS_BROKEN@
+#  undef PRId32
+#  ifdef INT32_MAX
+#   define PRId32 "d"
+#  endif
+# endif
+# if !defined PRIi32 || @PRI_MACROS_BROKEN@
+#  undef PRIi32
+#  ifdef INT32_MAX
+#   define PRIi32 "i"
+#  endif
+# endif
+# if !defined PRIo32 || @PRI_MACROS_BROKEN@
+#  undef PRIo32
+#  ifdef UINT32_MAX
+#   define PRIo32 "o"
+#  endif
+# endif
+# if !defined PRIu32 || @PRI_MACROS_BROKEN@
+#  undef PRIu32
+#  ifdef UINT32_MAX
+#   define PRIu32 "u"
+#  endif
+# endif
+# if !defined PRIx32 || @PRI_MACROS_BROKEN@
+#  undef PRIx32
+#  ifdef UINT32_MAX
+#   define PRIx32 "x"
+#  endif
+# endif
+# if !defined PRIX32 || @PRI_MACROS_BROKEN@
+#  undef PRIX32
+#  ifdef UINT32_MAX
+#   define PRIX32 "X"
+#  endif
+# endif
+# ifdef INT64_MAX
+#  if (@APPLE_UNIVERSAL_BUILD@ ? defined _LP64 : @INT64_MAX_EQ_LONG_MAX@)
+#   define _PRI64_PREFIX "l"
+#  elif defined _MSC_VER || defined __MINGW32__
+#   define _PRI64_PREFIX "I64"
+#  elif @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
+#   define _PRI64_PREFIX _LONG_LONG_FORMAT_PREFIX
+#  endif
+#  if !defined PRId64 || @PRI_MACROS_BROKEN@
+#   undef PRId64
+#   define PRId64 _PRI64_PREFIX "d"
+#  endif
+#  if !defined PRIi64 || @PRI_MACROS_BROKEN@
+#   undef PRIi64
+#   define PRIi64 _PRI64_PREFIX "i"
+#  endif
+# endif
+# ifdef UINT64_MAX
+#  if (@APPLE_UNIVERSAL_BUILD@ ? defined _LP64 : @UINT64_MAX_EQ_ULONG_MAX@)
+#   define _PRIu64_PREFIX "l"
+#  elif defined _MSC_VER || defined __MINGW32__
+#   define _PRIu64_PREFIX "I64"
+#  elif @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
+#   define _PRIu64_PREFIX _LONG_LONG_FORMAT_PREFIX
+#  endif
+#  if !defined PRIo64 || @PRI_MACROS_BROKEN@
+#   undef PRIo64
+#   define PRIo64 _PRIu64_PREFIX "o"
+#  endif
+#  if !defined PRIu64 || @PRI_MACROS_BROKEN@
+#   undef PRIu64
+#   define PRIu64 _PRIu64_PREFIX "u"
+#  endif
+#  if !defined PRIx64 || @PRI_MACROS_BROKEN@
+#   undef PRIx64
+#   define PRIx64 _PRIu64_PREFIX "x"
+#  endif
+#  if !defined PRIX64 || @PRI_MACROS_BROKEN@
+#   undef PRIX64
+#   define PRIX64 _PRIu64_PREFIX "X"
+#  endif
+# endif
+
+# if !defined PRIdLEAST8 || @PRI_MACROS_BROKEN@
+#  undef PRIdLEAST8
+#  define PRIdLEAST8 "d"
+# endif
+# if !defined PRIiLEAST8 || @PRI_MACROS_BROKEN@
+#  undef PRIiLEAST8
+#  define PRIiLEAST8 "i"
+# endif
+# if !defined PRIoLEAST8 || @PRI_MACROS_BROKEN@
+#  undef PRIoLEAST8
+#  define PRIoLEAST8 "o"
+# endif
+# if !defined PRIuLEAST8 || @PRI_MACROS_BROKEN@
+#  undef PRIuLEAST8
+#  define PRIuLEAST8 "u"
+# endif
+# if !defined PRIxLEAST8 || @PRI_MACROS_BROKEN@
+#  undef PRIxLEAST8
+#  define PRIxLEAST8 "x"
+# endif
+# if !defined PRIXLEAST8 || @PRI_MACROS_BROKEN@
+#  undef PRIXLEAST8
+#  define PRIXLEAST8 "X"
+# endif
+# if !defined PRIdLEAST16 || @PRI_MACROS_BROKEN@
+#  undef PRIdLEAST16
+#  define PRIdLEAST16 "d"
+# endif
+# if !defined PRIiLEAST16 || @PRI_MACROS_BROKEN@
+#  undef PRIiLEAST16
+#  define PRIiLEAST16 "i"
+# endif
+# if !defined PRIoLEAST16 || @PRI_MACROS_BROKEN@
+#  undef PRIoLEAST16
+#  define PRIoLEAST16 "o"
+# endif
+# if !defined PRIuLEAST16 || @PRI_MACROS_BROKEN@
+#  undef PRIuLEAST16
+#  define PRIuLEAST16 "u"
+# endif
+# if !defined PRIxLEAST16 || @PRI_MACROS_BROKEN@
+#  undef PRIxLEAST16
+#  define PRIxLEAST16 "x"
+# endif
+# if !defined PRIXLEAST16 || @PRI_MACROS_BROKEN@
+#  undef PRIXLEAST16
+#  define PRIXLEAST16 "X"
+# endif
+# if !defined PRIdLEAST32 || @PRI_MACROS_BROKEN@
+#  undef PRIdLEAST32
+#  define PRIdLEAST32 "d"
+# endif
+# if !defined PRIiLEAST32 || @PRI_MACROS_BROKEN@
+#  undef PRIiLEAST32
+#  define PRIiLEAST32 "i"
+# endif
+# if !defined PRIoLEAST32 || @PRI_MACROS_BROKEN@
+#  undef PRIoLEAST32
+#  define PRIoLEAST32 "o"
+# endif
+# if !defined PRIuLEAST32 || @PRI_MACROS_BROKEN@
+#  undef PRIuLEAST32
+#  define PRIuLEAST32 "u"
+# endif
+# if !defined PRIxLEAST32 || @PRI_MACROS_BROKEN@
+#  undef PRIxLEAST32
+#  define PRIxLEAST32 "x"
+# endif
+# if !defined PRIXLEAST32 || @PRI_MACROS_BROKEN@
+#  undef PRIXLEAST32
+#  define PRIXLEAST32 "X"
+# endif
+# ifdef INT64_MAX
+#  if !defined PRIdLEAST64 || @PRI_MACROS_BROKEN@
+#   undef PRIdLEAST64
+#   define PRIdLEAST64 PRId64
+#  endif
+#  if !defined PRIiLEAST64 || @PRI_MACROS_BROKEN@
+#   undef PRIiLEAST64
+#   define PRIiLEAST64 PRIi64
+#  endif
+# endif
+# ifdef UINT64_MAX
+#  if !defined PRIoLEAST64 || @PRI_MACROS_BROKEN@
+#   undef PRIoLEAST64
+#   define PRIoLEAST64 PRIo64
+#  endif
+#  if !defined PRIuLEAST64 || @PRI_MACROS_BROKEN@
+#   undef PRIuLEAST64
+#   define PRIuLEAST64 PRIu64
+#  endif
+#  if !defined PRIxLEAST64 || @PRI_MACROS_BROKEN@
+#   undef PRIxLEAST64
+#   define PRIxLEAST64 PRIx64
+#  endif
+#  if !defined PRIXLEAST64 || @PRI_MACROS_BROKEN@
+#   undef PRIXLEAST64
+#   define PRIXLEAST64 PRIX64
+#  endif
+# endif
+
+# if !defined PRIdFAST8 || @PRI_MACROS_BROKEN@
+#  undef PRIdFAST8
+#  if INT_FAST8_MAX > INT32_MAX
+#   define PRIdFAST8 PRId64
+#  else
+#   define PRIdFAST8 "d"
+#  endif
+# endif
+# if !defined PRIiFAST8 || @PRI_MACROS_BROKEN@
+#  undef PRIiFAST8
+#  if INT_FAST8_MAX > INT32_MAX
+#   define PRIiFAST8 PRIi64
+#  else
+#   define PRIiFAST8 "i"
+#  endif
+# endif
+# if !defined PRIoFAST8 || @PRI_MACROS_BROKEN@
+#  undef PRIoFAST8
+#  if UINT_FAST8_MAX > UINT32_MAX
+#   define PRIoFAST8 PRIo64
+#  else
+#   define PRIoFAST8 "o"
+#  endif
+# endif
+# if !defined PRIuFAST8 || @PRI_MACROS_BROKEN@
+#  undef PRIuFAST8
+#  if UINT_FAST8_MAX > UINT32_MAX
+#   define PRIuFAST8 PRIu64
+#  else
+#   define PRIuFAST8 "u"
+#  endif
+# endif
+# if !defined PRIxFAST8 || @PRI_MACROS_BROKEN@
+#  undef PRIxFAST8
+#  if UINT_FAST8_MAX > UINT32_MAX
+#   define PRIxFAST8 PRIx64
+#  else
+#   define PRIxFAST8 "x"
+#  endif
+# endif
+# if !defined PRIXFAST8 || @PRI_MACROS_BROKEN@
+#  undef PRIXFAST8
+#  if UINT_FAST8_MAX > UINT32_MAX
+#   define PRIXFAST8 PRIX64
+#  else
+#   define PRIXFAST8 "X"
+#  endif
+# endif
+# if !defined PRIdFAST16 || @PRI_MACROS_BROKEN@
+#  undef PRIdFAST16
+#  if INT_FAST16_MAX > INT32_MAX
+#   define PRIdFAST16 PRId64
+#  else
+#   define PRIdFAST16 "d"
+#  endif
+# endif
+# if !defined PRIiFAST16 || @PRI_MACROS_BROKEN@
+#  undef PRIiFAST16
+#  if INT_FAST16_MAX > INT32_MAX
+#   define PRIiFAST16 PRIi64
+#  else
+#   define PRIiFAST16 "i"
+#  endif
+# endif
+# if !defined PRIoFAST16 || @PRI_MACROS_BROKEN@
+#  undef PRIoFAST16
+#  if UINT_FAST16_MAX > UINT32_MAX
+#   define PRIoFAST16 PRIo64
+#  else
+#   define PRIoFAST16 "o"
+#  endif
+# endif
+# if !defined PRIuFAST16 || @PRI_MACROS_BROKEN@
+#  undef PRIuFAST16
+#  if UINT_FAST16_MAX > UINT32_MAX
+#   define PRIuFAST16 PRIu64
+#  else
+#   define PRIuFAST16 "u"
+#  endif
+# endif
+# if !defined PRIxFAST16 || @PRI_MACROS_BROKEN@
+#  undef PRIxFAST16
+#  if UINT_FAST16_MAX > UINT32_MAX
+#   define PRIxFAST16 PRIx64
+#  else
+#   define PRIxFAST16 "x"
+#  endif
+# endif
+# if !defined PRIXFAST16 || @PRI_MACROS_BROKEN@
+#  undef PRIXFAST16
+#  if UINT_FAST16_MAX > UINT32_MAX
+#   define PRIXFAST16 PRIX64
+#  else
+#   define PRIXFAST16 "X"
+#  endif
+# endif
+# if !defined PRIdFAST32 || @PRI_MACROS_BROKEN@
+#  undef PRIdFAST32
+#  if INT_FAST32_MAX > INT32_MAX
+#   define PRIdFAST32 PRId64
+#  else
+#   define PRIdFAST32 "d"
+#  endif
+# endif
+# if !defined PRIiFAST32 || @PRI_MACROS_BROKEN@
+#  undef PRIiFAST32
+#  if INT_FAST32_MAX > INT32_MAX
+#   define PRIiFAST32 PRIi64
+#  else
+#   define PRIiFAST32 "i"
+#  endif
+# endif
+# if !defined PRIoFAST32 || @PRI_MACROS_BROKEN@
+#  undef PRIoFAST32
+#  if UINT_FAST32_MAX > UINT32_MAX
+#   define PRIoFAST32 PRIo64
+#  else
+#   define PRIoFAST32 "o"
+#  endif
+# endif
+# if !defined PRIuFAST32 || @PRI_MACROS_BROKEN@
+#  undef PRIuFAST32
+#  if UINT_FAST32_MAX > UINT32_MAX
+#   define PRIuFAST32 PRIu64
+#  else
+#   define PRIuFAST32 "u"
+#  endif
+# endif
+# if !defined PRIxFAST32 || @PRI_MACROS_BROKEN@
+#  undef PRIxFAST32
+#  if UINT_FAST32_MAX > UINT32_MAX
+#   define PRIxFAST32 PRIx64
+#  else
+#   define PRIxFAST32 "x"
+#  endif
+# endif
+# if !defined PRIXFAST32 || @PRI_MACROS_BROKEN@
+#  undef PRIXFAST32
+#  if UINT_FAST32_MAX > UINT32_MAX
+#   define PRIXFAST32 PRIX64
+#  else
+#   define PRIXFAST32 "X"
+#  endif
+# endif
+# ifdef INT64_MAX
+#  if !defined PRIdFAST64 || @PRI_MACROS_BROKEN@
+#   undef PRIdFAST64
+#   define PRIdFAST64 PRId64
+#  endif
+#  if !defined PRIiFAST64 || @PRI_MACROS_BROKEN@
+#   undef PRIiFAST64
+#   define PRIiFAST64 PRIi64
+#  endif
+# endif
+# ifdef UINT64_MAX
+#  if !defined PRIoFAST64 || @PRI_MACROS_BROKEN@
+#   undef PRIoFAST64
+#   define PRIoFAST64 PRIo64
+#  endif
+#  if !defined PRIuFAST64 || @PRI_MACROS_BROKEN@
+#   undef PRIuFAST64
+#   define PRIuFAST64 PRIu64
+#  endif
+#  if !defined PRIxFAST64 || @PRI_MACROS_BROKEN@
+#   undef PRIxFAST64
+#   define PRIxFAST64 PRIx64
+#  endif
+#  if !defined PRIXFAST64 || @PRI_MACROS_BROKEN@
+#   undef PRIXFAST64
+#   define PRIXFAST64 PRIX64
+#  endif
+# endif
+
+# if !defined PRIdMAX || @PRI_MACROS_BROKEN@
+#  undef PRIdMAX
+#  if @INT32_MAX_LT_INTMAX_MAX@
+#   define PRIdMAX PRId64
+#  else
+#   define PRIdMAX "ld"
+#  endif
+# endif
+# if !defined PRIiMAX || @PRI_MACROS_BROKEN@
+#  undef PRIiMAX
+#  if @INT32_MAX_LT_INTMAX_MAX@
+#   define PRIiMAX PRIi64
+#  else
+#   define PRIiMAX "li"
+#  endif
+# endif
+# if !defined PRIoMAX || @PRI_MACROS_BROKEN@
+#  undef PRIoMAX
+#  if @UINT32_MAX_LT_UINTMAX_MAX@
+#   define PRIoMAX PRIo64
+#  else
+#   define PRIoMAX "lo"
+#  endif
+# endif
+# if !defined PRIuMAX || @PRI_MACROS_BROKEN@
+#  undef PRIuMAX
+#  if @UINT32_MAX_LT_UINTMAX_MAX@
+#   define PRIuMAX PRIu64
+#  else
+#   define PRIuMAX "lu"
+#  endif
+# endif
+# if !defined PRIxMAX || @PRI_MACROS_BROKEN@
+#  undef PRIxMAX
+#  if @UINT32_MAX_LT_UINTMAX_MAX@
+#   define PRIxMAX PRIx64
+#  else
+#   define PRIxMAX "lx"
+#  endif
+# endif
+# if !defined PRIXMAX || @PRI_MACROS_BROKEN@
+#  undef PRIXMAX
+#  if @UINT32_MAX_LT_UINTMAX_MAX@
+#   define PRIXMAX PRIX64
+#  else
+#   define PRIXMAX "lX"
+#  endif
+# endif
+
+# if !defined PRIdPTR || @PRI_MACROS_BROKEN@
+#  undef PRIdPTR
+#  ifdef INTPTR_MAX
+#   define PRIdPTR @PRIPTR_PREFIX@ "d"
+#  endif
+# endif
+# if !defined PRIiPTR || @PRI_MACROS_BROKEN@
+#  undef PRIiPTR
+#  ifdef INTPTR_MAX
+#   define PRIiPTR @PRIPTR_PREFIX@ "i"
+#  endif
+# endif
+# if !defined PRIoPTR || @PRI_MACROS_BROKEN@
+#  undef PRIoPTR
+#  ifdef UINTPTR_MAX
+#   define PRIoPTR @PRIPTR_PREFIX@ "o"
+#  endif
+# endif
+# if !defined PRIuPTR || @PRI_MACROS_BROKEN@
+#  undef PRIuPTR
+#  ifdef UINTPTR_MAX
+#   define PRIuPTR @PRIPTR_PREFIX@ "u"
+#  endif
+# endif
+# if !defined PRIxPTR || @PRI_MACROS_BROKEN@
+#  undef PRIxPTR
+#  ifdef UINTPTR_MAX
+#   define PRIxPTR @PRIPTR_PREFIX@ "x"
+#  endif
+# endif
+# if !defined PRIXPTR || @PRI_MACROS_BROKEN@
+#  undef PRIXPTR
+#  ifdef UINTPTR_MAX
+#   define PRIXPTR @PRIPTR_PREFIX@ "X"
+#  endif
+# endif
+
+# if !defined SCNd8 || @PRI_MACROS_BROKEN@
+#  undef SCNd8
+#  ifdef INT8_MAX
+#   define SCNd8 "hhd"
+#  endif
+# endif
+# if !defined SCNi8 || @PRI_MACROS_BROKEN@
+#  undef SCNi8
+#  ifdef INT8_MAX
+#   define SCNi8 "hhi"
+#  endif
+# endif
+# if !defined SCNo8 || @PRI_MACROS_BROKEN@
+#  undef SCNo8
+#  ifdef UINT8_MAX
+#   define SCNo8 "hho"
+#  endif
+# endif
+# if !defined SCNu8 || @PRI_MACROS_BROKEN@
+#  undef SCNu8
+#  ifdef UINT8_MAX
+#   define SCNu8 "hhu"
+#  endif
+# endif
+# if !defined SCNx8 || @PRI_MACROS_BROKEN@
+#  undef SCNx8
+#  ifdef UINT8_MAX
+#   define SCNx8 "hhx"
+#  endif
+# endif
+# if !defined SCNd16 || @PRI_MACROS_BROKEN@
+#  undef SCNd16
+#  ifdef INT16_MAX
+#   define SCNd16 "hd"
+#  endif
+# endif
+# if !defined SCNi16 || @PRI_MACROS_BROKEN@
+#  undef SCNi16
+#  ifdef INT16_MAX
+#   define SCNi16 "hi"
+#  endif
+# endif
+# if !defined SCNo16 || @PRI_MACROS_BROKEN@
+#  undef SCNo16
+#  ifdef UINT16_MAX
+#   define SCNo16 "ho"
+#  endif
+# endif
+# if !defined SCNu16 || @PRI_MACROS_BROKEN@
+#  undef SCNu16
+#  ifdef UINT16_MAX
+#   define SCNu16 "hu"
+#  endif
+# endif
+# if !defined SCNx16 || @PRI_MACROS_BROKEN@
+#  undef SCNx16
+#  ifdef UINT16_MAX
+#   define SCNx16 "hx"
+#  endif
+# endif
+# if !defined SCNd32 || @PRI_MACROS_BROKEN@
+#  undef SCNd32
+#  ifdef INT32_MAX
+#   define SCNd32 "d"
+#  endif
+# endif
+# if !defined SCNi32 || @PRI_MACROS_BROKEN@
+#  undef SCNi32
+#  ifdef INT32_MAX
+#   define SCNi32 "i"
+#  endif
+# endif
+# if !defined SCNo32 || @PRI_MACROS_BROKEN@
+#  undef SCNo32
+#  ifdef UINT32_MAX
+#   define SCNo32 "o"
+#  endif
+# endif
+# if !defined SCNu32 || @PRI_MACROS_BROKEN@
+#  undef SCNu32
+#  ifdef UINT32_MAX
+#   define SCNu32 "u"
+#  endif
+# endif
+# if !defined SCNx32 || @PRI_MACROS_BROKEN@
+#  undef SCNx32
+#  ifdef UINT32_MAX
+#   define SCNx32 "x"
+#  endif
+# endif
+# ifdef INT64_MAX
+#  if (@APPLE_UNIVERSAL_BUILD@ ? defined _LP64 : @INT64_MAX_EQ_LONG_MAX@)
+#   define _SCN64_PREFIX "l"
+#  elif defined _MSC_VER || defined __MINGW32__
+#   define _SCN64_PREFIX "I64"
+#  elif @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
+#   define _SCN64_PREFIX _LONG_LONG_FORMAT_PREFIX
+#  endif
+#  if !defined SCNd64 || @PRI_MACROS_BROKEN@
+#   undef SCNd64
+#   define SCNd64 _SCN64_PREFIX "d"
+#  endif
+#  if !defined SCNi64 || @PRI_MACROS_BROKEN@
+#   undef SCNi64
+#   define SCNi64 _SCN64_PREFIX "i"
+#  endif
+# endif
+# ifdef UINT64_MAX
+#  if (@APPLE_UNIVERSAL_BUILD@ ? defined _LP64 : @UINT64_MAX_EQ_ULONG_MAX@)
+#   define _SCNu64_PREFIX "l"
+#  elif defined _MSC_VER || defined __MINGW32__
+#   define _SCNu64_PREFIX "I64"
+#  elif @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
+#   define _SCNu64_PREFIX _LONG_LONG_FORMAT_PREFIX
+#  endif
+#  if !defined SCNo64 || @PRI_MACROS_BROKEN@
+#   undef SCNo64
+#   define SCNo64 _SCNu64_PREFIX "o"
+#  endif
+#  if !defined SCNu64 || @PRI_MACROS_BROKEN@
+#   undef SCNu64
+#   define SCNu64 _SCNu64_PREFIX "u"
+#  endif
+#  if !defined SCNx64 || @PRI_MACROS_BROKEN@
+#   undef SCNx64
+#   define SCNx64 _SCNu64_PREFIX "x"
+#  endif
+# endif
+
+# if !defined SCNdLEAST8 || @PRI_MACROS_BROKEN@
+#  undef SCNdLEAST8
+#  define SCNdLEAST8 "hhd"
+# endif
+# if !defined SCNiLEAST8 || @PRI_MACROS_BROKEN@
+#  undef SCNiLEAST8
+#  define SCNiLEAST8 "hhi"
+# endif
+# if !defined SCNoLEAST8 || @PRI_MACROS_BROKEN@
+#  undef SCNoLEAST8
+#  define SCNoLEAST8 "hho"
+# endif
+# if !defined SCNuLEAST8 || @PRI_MACROS_BROKEN@
+#  undef SCNuLEAST8
+#  define SCNuLEAST8 "hhu"
+# endif
+# if !defined SCNxLEAST8 || @PRI_MACROS_BROKEN@
+#  undef SCNxLEAST8
+#  define SCNxLEAST8 "hhx"
+# endif
+# if !defined SCNdLEAST16 || @PRI_MACROS_BROKEN@
+#  undef SCNdLEAST16
+#  define SCNdLEAST16 "hd"
+# endif
+# if !defined SCNiLEAST16 || @PRI_MACROS_BROKEN@
+#  undef SCNiLEAST16
+#  define SCNiLEAST16 "hi"
+# endif
+# if !defined SCNoLEAST16 || @PRI_MACROS_BROKEN@
+#  undef SCNoLEAST16
+#  define SCNoLEAST16 "ho"
+# endif
+# if !defined SCNuLEAST16 || @PRI_MACROS_BROKEN@
+#  undef SCNuLEAST16
+#  define SCNuLEAST16 "hu"
+# endif
+# if !defined SCNxLEAST16 || @PRI_MACROS_BROKEN@
+#  undef SCNxLEAST16
+#  define SCNxLEAST16 "hx"
+# endif
+# if !defined SCNdLEAST32 || @PRI_MACROS_BROKEN@
+#  undef SCNdLEAST32
+#  define SCNdLEAST32 "d"
+# endif
+# if !defined SCNiLEAST32 || @PRI_MACROS_BROKEN@
+#  undef SCNiLEAST32
+#  define SCNiLEAST32 "i"
+# endif
+# if !defined SCNoLEAST32 || @PRI_MACROS_BROKEN@
+#  undef SCNoLEAST32
+#  define SCNoLEAST32 "o"
+# endif
+# if !defined SCNuLEAST32 || @PRI_MACROS_BROKEN@
+#  undef SCNuLEAST32
+#  define SCNuLEAST32 "u"
+# endif
+# if !defined SCNxLEAST32 || @PRI_MACROS_BROKEN@
+#  undef SCNxLEAST32
+#  define SCNxLEAST32 "x"
+# endif
+# ifdef INT64_MAX
+#  if !defined SCNdLEAST64 || @PRI_MACROS_BROKEN@
+#   undef SCNdLEAST64
+#   define SCNdLEAST64 SCNd64
+#  endif
+#  if !defined SCNiLEAST64 || @PRI_MACROS_BROKEN@
+#   undef SCNiLEAST64
+#   define SCNiLEAST64 SCNi64
+#  endif
+# endif
+# ifdef UINT64_MAX
+#  if !defined SCNoLEAST64 || @PRI_MACROS_BROKEN@
+#   undef SCNoLEAST64
+#   define SCNoLEAST64 SCNo64
+#  endif
+#  if !defined SCNuLEAST64 || @PRI_MACROS_BROKEN@
+#   undef SCNuLEAST64
+#   define SCNuLEAST64 SCNu64
+#  endif
+#  if !defined SCNxLEAST64 || @PRI_MACROS_BROKEN@
+#   undef SCNxLEAST64
+#   define SCNxLEAST64 SCNx64
+#  endif
+# endif
+
+# if !defined SCNdFAST8 || @PRI_MACROS_BROKEN@
+#  undef SCNdFAST8
+#  if INT_FAST8_MAX > INT32_MAX
+#   define SCNdFAST8 SCNd64
+#  elif INT_FAST8_MAX == 0x7fff
+#   define SCNdFAST8 "hd"
+#  elif INT_FAST8_MAX == 0x7f
+#   define SCNdFAST8 "hhd"
+#  else
+#   define SCNdFAST8 "d"
+#  endif
+# endif
+# if !defined SCNiFAST8 || @PRI_MACROS_BROKEN@
+#  undef SCNiFAST8
+#  if INT_FAST8_MAX > INT32_MAX
+#   define SCNiFAST8 SCNi64
+#  elif INT_FAST8_MAX == 0x7fff
+#   define SCNiFAST8 "hi"
+#  elif INT_FAST8_MAX == 0x7f
+#   define SCNiFAST8 "hhi"
+#  else
+#   define SCNiFAST8 "i"
+#  endif
+# endif
+# if !defined SCNoFAST8 || @PRI_MACROS_BROKEN@
+#  undef SCNoFAST8
+#  if UINT_FAST8_MAX > UINT32_MAX
+#   define SCNoFAST8 SCNo64
+#  elif UINT_FAST8_MAX == 0xffff
+#   define SCNoFAST8 "ho"
+#  elif UINT_FAST8_MAX == 0xff
+#   define SCNoFAST8 "hho"
+#  else
+#   define SCNoFAST8 "o"
+#  endif
+# endif
+# if !defined SCNuFAST8 || @PRI_MACROS_BROKEN@
+#  undef SCNuFAST8
+#  if UINT_FAST8_MAX > UINT32_MAX
+#   define SCNuFAST8 SCNu64
+#  elif UINT_FAST8_MAX == 0xffff
+#   define SCNuFAST8 "hu"
+#  elif UINT_FAST8_MAX == 0xff
+#   define SCNuFAST8 "hhu"
+#  else
+#   define SCNuFAST8 "u"
+#  endif
+# endif
+# if !defined SCNxFAST8 || @PRI_MACROS_BROKEN@
+#  undef SCNxFAST8
+#  if UINT_FAST8_MAX > UINT32_MAX
+#   define SCNxFAST8 SCNx64
+#  elif UINT_FAST8_MAX == 0xffff
+#   define SCNxFAST8 "hx"
+#  elif UINT_FAST8_MAX == 0xff
+#   define SCNxFAST8 "hhx"
+#  else
+#   define SCNxFAST8 "x"
+#  endif
+# endif
+# if !defined SCNdFAST16 || @PRI_MACROS_BROKEN@
+#  undef SCNdFAST16
+#  if INT_FAST16_MAX > INT32_MAX
+#   define SCNdFAST16 SCNd64
+#  elif INT_FAST16_MAX == 0x7fff
+#   define SCNdFAST16 "hd"
+#  else
+#   define SCNdFAST16 "d"
+#  endif
+# endif
+# if !defined SCNiFAST16 || @PRI_MACROS_BROKEN@
+#  undef SCNiFAST16
+#  if INT_FAST16_MAX > INT32_MAX
+#   define SCNiFAST16 SCNi64
+#  elif INT_FAST16_MAX == 0x7fff
+#   define SCNiFAST16 "hi"
+#  else
+#   define SCNiFAST16 "i"
+#  endif
+# endif
+# if !defined SCNoFAST16 || @PRI_MACROS_BROKEN@
+#  undef SCNoFAST16
+#  if UINT_FAST16_MAX > UINT32_MAX
+#   define SCNoFAST16 SCNo64
+#  elif UINT_FAST16_MAX == 0xffff
+#   define SCNoFAST16 "ho"
+#  else
+#   define SCNoFAST16 "o"
+#  endif
+# endif
+# if !defined SCNuFAST16 || @PRI_MACROS_BROKEN@
+#  undef SCNuFAST16
+#  if UINT_FAST16_MAX > UINT32_MAX
+#   define SCNuFAST16 SCNu64
+#  elif UINT_FAST16_MAX == 0xffff
+#   define SCNuFAST16 "hu"
+#  else
+#   define SCNuFAST16 "u"
+#  endif
+# endif
+# if !defined SCNxFAST16 || @PRI_MACROS_BROKEN@
+#  undef SCNxFAST16
+#  if UINT_FAST16_MAX > UINT32_MAX
+#   define SCNxFAST16 SCNx64
+#  elif UINT_FAST16_MAX == 0xffff
+#   define SCNxFAST16 "hx"
+#  else
+#   define SCNxFAST16 "x"
+#  endif
+# endif
+# if !defined SCNdFAST32 || @PRI_MACROS_BROKEN@
+#  undef SCNdFAST32
+#  if INT_FAST32_MAX > INT32_MAX
+#   define SCNdFAST32 SCNd64
+#  else
+#   define SCNdFAST32 "d"
+#  endif
+# endif
+# if !defined SCNiFAST32 || @PRI_MACROS_BROKEN@
+#  undef SCNiFAST32
+#  if INT_FAST32_MAX > INT32_MAX
+#   define SCNiFAST32 SCNi64
+#  else
+#   define SCNiFAST32 "i"
+#  endif
+# endif
+# if !defined SCNoFAST32 || @PRI_MACROS_BROKEN@
+#  undef SCNoFAST32
+#  if UINT_FAST32_MAX > UINT32_MAX
+#   define SCNoFAST32 SCNo64
+#  else
+#   define SCNoFAST32 "o"
+#  endif
+# endif
+# if !defined SCNuFAST32 || @PRI_MACROS_BROKEN@
+#  undef SCNuFAST32
+#  if UINT_FAST32_MAX > UINT32_MAX
+#   define SCNuFAST32 SCNu64
+#  else
+#   define SCNuFAST32 "u"
+#  endif
+# endif
+# if !defined SCNxFAST32 || @PRI_MACROS_BROKEN@
+#  undef SCNxFAST32
+#  if UINT_FAST32_MAX > UINT32_MAX
+#   define SCNxFAST32 SCNx64
+#  else
+#   define SCNxFAST32 "x"
+#  endif
+# endif
+# ifdef INT64_MAX
+#  if !defined SCNdFAST64 || @PRI_MACROS_BROKEN@
+#   undef SCNdFAST64
+#   define SCNdFAST64 SCNd64
+#  endif
+#  if !defined SCNiFAST64 || @PRI_MACROS_BROKEN@
+#   undef SCNiFAST64
+#   define SCNiFAST64 SCNi64
+#  endif
+# endif
+# ifdef UINT64_MAX
+#  if !defined SCNoFAST64 || @PRI_MACROS_BROKEN@
+#   undef SCNoFAST64
+#   define SCNoFAST64 SCNo64
+#  endif
+#  if !defined SCNuFAST64 || @PRI_MACROS_BROKEN@
+#   undef SCNuFAST64
+#   define SCNuFAST64 SCNu64
+#  endif
+#  if !defined SCNxFAST64 || @PRI_MACROS_BROKEN@
+#   undef SCNxFAST64
+#   define SCNxFAST64 SCNx64
+#  endif
+# endif
+
+# if !defined SCNdMAX || @PRI_MACROS_BROKEN@
+#  undef SCNdMAX
+#  if @INT32_MAX_LT_INTMAX_MAX@
+#   define SCNdMAX SCNd64
+#  else
+#   define SCNdMAX "ld"
+#  endif
+# endif
+# if !defined SCNiMAX || @PRI_MACROS_BROKEN@
+#  undef SCNiMAX
+#  if @INT32_MAX_LT_INTMAX_MAX@
+#   define SCNiMAX SCNi64
+#  else
+#   define SCNiMAX "li"
+#  endif
+# endif
+# if !defined SCNoMAX || @PRI_MACROS_BROKEN@
+#  undef SCNoMAX
+#  if @UINT32_MAX_LT_UINTMAX_MAX@
+#   define SCNoMAX SCNo64
+#  else
+#   define SCNoMAX "lo"
+#  endif
+# endif
+# if !defined SCNuMAX || @PRI_MACROS_BROKEN@
+#  undef SCNuMAX
+#  if @UINT32_MAX_LT_UINTMAX_MAX@
+#   define SCNuMAX SCNu64
+#  else
+#   define SCNuMAX "lu"
+#  endif
+# endif
+# if !defined SCNxMAX || @PRI_MACROS_BROKEN@
+#  undef SCNxMAX
+#  if @UINT32_MAX_LT_UINTMAX_MAX@
+#   define SCNxMAX SCNx64
+#  else
+#   define SCNxMAX "lx"
+#  endif
+# endif
+
+# if !defined SCNdPTR || @PRI_MACROS_BROKEN@
+#  undef SCNdPTR
+#  ifdef INTPTR_MAX
+#   define SCNdPTR @PRIPTR_PREFIX@ "d"
+#  endif
+# endif
+# if !defined SCNiPTR || @PRI_MACROS_BROKEN@
+#  undef SCNiPTR
+#  ifdef INTPTR_MAX
+#   define SCNiPTR @PRIPTR_PREFIX@ "i"
+#  endif
+# endif
+# if !defined SCNoPTR || @PRI_MACROS_BROKEN@
+#  undef SCNoPTR
+#  ifdef UINTPTR_MAX
+#   define SCNoPTR @PRIPTR_PREFIX@ "o"
+#  endif
+# endif
+# if !defined SCNuPTR || @PRI_MACROS_BROKEN@
+#  undef SCNuPTR
+#  ifdef UINTPTR_MAX
+#   define SCNuPTR @PRIPTR_PREFIX@ "u"
+#  endif
+# endif
+# if !defined SCNxPTR || @PRI_MACROS_BROKEN@
+#  undef SCNxPTR
+#  ifdef UINTPTR_MAX
+#   define SCNxPTR @PRIPTR_PREFIX@ "x"
+#  endif
+# endif
+
+#endif
+
+/* 7.8.2 Functions for greatest-width integer types */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if @GNULIB_IMAXABS@
+# if !@HAVE_DECL_IMAXABS@
+extern intmax_t imaxabs (intmax_t);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef imaxabs
+# if HAVE_RAW_DECL_IMAXABS
+_GL_WARN_ON_USE (imaxabs, "imaxabs is unportable - "
+                 "use gnulib module imaxabs for portability");
+# endif
+#endif
+
+#if @GNULIB_IMAXDIV@
+# if !@HAVE_DECL_IMAXDIV@
+#  if !GNULIB_defined_imaxdiv_t
+typedef struct { intmax_t quot; intmax_t rem; } imaxdiv_t;
+#   define GNULIB_defined_imaxdiv_t 1
+#  endif
+extern imaxdiv_t imaxdiv (intmax_t, intmax_t);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef imaxdiv
+# if HAVE_RAW_DECL_IMAXDIV
+_GL_WARN_ON_USE (imaxdiv, "imaxdiv is unportable - "
+                 "use gnulib module imaxdiv for portability");
+# endif
+#endif
+
+#if @GNULIB_STRTOIMAX@
+# if !@HAVE_DECL_STRTOIMAX@
+#  undef strtoimax
+extern intmax_t strtoimax (const char *, char **, int) _GL_ARG_NONNULL ((1));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strtoimax
+# if HAVE_RAW_DECL_STRTOIMAX
+_GL_WARN_ON_USE (strtoimax, "strtoimax is unportable - "
+                 "use gnulib module strtoimax for portability");
+# endif
+#endif
+
+#if @GNULIB_STRTOUMAX@
+# if !@HAVE_DECL_STRTOUMAX@
+#  undef strtoumax
+extern uintmax_t strtoumax (const char *, char **, int) _GL_ARG_NONNULL ((1));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strtoumax
+# if HAVE_RAW_DECL_STRTOUMAX
+_GL_WARN_ON_USE (strtoumax, "strtoumax is unportable - "
+                 "use gnulib module strtoumax for portability");
+# endif
+#endif
+
+/* Don't bother defining or declaring wcstoimax and wcstoumax, since
+   wide-character functions like this are hardly ever useful.  */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* !defined INTTYPES_H && !defined _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H */
diff --git a/lib/langinfo.in.h b/lib/langinfo.in.h
new file mode 100644 (file)
index 0000000..1d54e02
--- /dev/null
@@ -0,0 +1,179 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Substitute for and wrapper around <langinfo.h>.
+   Copyright (C) 2009-2011 Free Software Foundation, 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; either version 3, 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.  */
+
+/*
+ * POSIX <langinfo.h> for platforms that lack it or have an incomplete one.
+ * <http://www.opengroup.org/onlinepubs/9699919799/basedefs/langinfo.h.html>
+ */
+
+#ifndef _@GUARD_PREFIX@_LANGINFO_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+/* The include_next requires a split double-inclusion guard.  */
+#if @HAVE_LANGINFO_H@
+# @INCLUDE_NEXT@ @NEXT_LANGINFO_H@
+#endif
+
+#ifndef _@GUARD_PREFIX@_LANGINFO_H
+#define _@GUARD_PREFIX@_LANGINFO_H
+
+
+#if !@HAVE_LANGINFO_H@
+
+/* A platform that lacks <langinfo.h>.  */
+
+/* Assume that it also lacks <nl_types.h> and the nl_item type.  */
+# if !GNULIB_defined_nl_item
+typedef int nl_item;
+#  define GNULIB_defined_nl_item 1
+# endif
+
+/* nl_langinfo items of the LC_CTYPE category */
+# define CODESET     10000
+/* nl_langinfo items of the LC_NUMERIC category */
+# define RADIXCHAR   10001
+# define THOUSEP     10002
+/* nl_langinfo items of the LC_TIME category */
+# define D_T_FMT     10003
+# define D_FMT       10004
+# define T_FMT       10005
+# define T_FMT_AMPM  10006
+# define AM_STR      10007
+# define PM_STR      10008
+# define DAY_1       10009
+# define DAY_2       (DAY_1 + 1)
+# define DAY_3       (DAY_1 + 2)
+# define DAY_4       (DAY_1 + 3)
+# define DAY_5       (DAY_1 + 4)
+# define DAY_6       (DAY_1 + 5)
+# define DAY_7       (DAY_1 + 6)
+# define ABDAY_1     10016
+# define ABDAY_2     (ABDAY_1 + 1)
+# define ABDAY_3     (ABDAY_1 + 2)
+# define ABDAY_4     (ABDAY_1 + 3)
+# define ABDAY_5     (ABDAY_1 + 4)
+# define ABDAY_6     (ABDAY_1 + 5)
+# define ABDAY_7     (ABDAY_1 + 6)
+# define MON_1       10023
+# define MON_2       (MON_1 + 1)
+# define MON_3       (MON_1 + 2)
+# define MON_4       (MON_1 + 3)
+# define MON_5       (MON_1 + 4)
+# define MON_6       (MON_1 + 5)
+# define MON_7       (MON_1 + 6)
+# define MON_8       (MON_1 + 7)
+# define MON_9       (MON_1 + 8)
+# define MON_10      (MON_1 + 9)
+# define MON_11      (MON_1 + 10)
+# define MON_12      (MON_1 + 11)
+# define ABMON_1     10035
+# define ABMON_2     (ABMON_1 + 1)
+# define ABMON_3     (ABMON_1 + 2)
+# define ABMON_4     (ABMON_1 + 3)
+# define ABMON_5     (ABMON_1 + 4)
+# define ABMON_6     (ABMON_1 + 5)
+# define ABMON_7     (ABMON_1 + 6)
+# define ABMON_8     (ABMON_1 + 7)
+# define ABMON_9     (ABMON_1 + 8)
+# define ABMON_10    (ABMON_1 + 9)
+# define ABMON_11    (ABMON_1 + 10)
+# define ABMON_12    (ABMON_1 + 11)
+# define ERA         10047
+# define ERA_D_FMT   10048
+# define ERA_D_T_FMT 10049
+# define ERA_T_FMT   10050
+# define ALT_DIGITS  10051
+/* nl_langinfo items of the LC_MONETARY category */
+# define CRNCYSTR    10052
+/* nl_langinfo items of the LC_MESSAGES category */
+# define YESEXPR     10053
+# define NOEXPR      10054
+
+#else
+
+/* A platform that has <langinfo.h>.  */
+
+# if !@HAVE_LANGINFO_CODESET@
+#  define CODESET     10000
+#  define GNULIB_defined_CODESET 1
+# endif
+
+# if !@HAVE_LANGINFO_T_FMT_AMPM@
+#  define T_FMT_AMPM  10006
+#  define GNULIB_defined_T_FMT_AMPM 1
+# endif
+
+# if !@HAVE_LANGINFO_ERA@
+#  define ERA         10047
+#  define ERA_D_FMT   10048
+#  define ERA_D_T_FMT 10049
+#  define ERA_T_FMT   10050
+#  define ALT_DIGITS  10051
+#  define GNULIB_defined_ERA 1
+# endif
+
+# if !@HAVE_LANGINFO_YESEXPR@
+#  define YESEXPR     10053
+#  define NOEXPR      10054
+#  define GNULIB_defined_YESEXPR 1
+# endif
+
+#endif
+
+/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
+
+/* The definition of _GL_WARN_ON_USE is copied here.  */
+
+/* Declare overridden functions.  */
+
+
+/* Return a piece of locale dependent information.
+   Note: The difference between nl_langinfo (CODESET) and locale_charset ()
+   is that the latter normalizes the encoding names to GNU conventions.  */
+
+#if @GNULIB_NL_LANGINFO@
+# if @REPLACE_NL_LANGINFO@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef nl_langinfo
+#   define nl_langinfo rpl_nl_langinfo
+#  endif
+_GL_FUNCDECL_RPL (nl_langinfo, char *, (nl_item item));
+_GL_CXXALIAS_RPL (nl_langinfo, char *, (nl_item item));
+# else
+#  if !@HAVE_NL_LANGINFO@
+_GL_FUNCDECL_SYS (nl_langinfo, char *, (nl_item item));
+#  endif
+_GL_CXXALIAS_SYS (nl_langinfo, char *, (nl_item item));
+# endif
+_GL_CXXALIASWARN (nl_langinfo);
+#elif defined GNULIB_POSIXCHECK
+# undef nl_langinfo
+# if HAVE_RAW_DECL_NL_LANGINFO
+_GL_WARN_ON_USE (nl_langinfo, "nl_langinfo is not portable - "
+                 "use gnulib module nl_langinfo for portability");
+# endif
+#endif
+
+
+#endif /* _@GUARD_PREFIX@_LANGINFO_H */
+#endif /* _@GUARD_PREFIX@_LANGINFO_H */
diff --git a/lib/localcharset.c b/lib/localcharset.c
new file mode 100644 (file)
index 0000000..d8b5953
--- /dev/null
@@ -0,0 +1,549 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Determine a canonical name for the current locale's character encoding.
+
+   Copyright (C) 2000-2006, 2008-2011 Free Software Foundation, 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; either version 3, 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.  */
+
+/* Written by Bruno Haible <bruno@clisp.org>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include "localcharset.h"
+
+#include <fcntl.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+#if defined __APPLE__ && defined __MACH__ && HAVE_LANGINFO_CODESET
+# define DARWIN7 /* Darwin 7 or newer, i.e. MacOS X 10.3 or newer */
+#endif
+
+#if defined _WIN32 || defined __WIN32__
+# define WIN32_NATIVE
+#endif
+
+#if defined __EMX__
+/* Assume EMX program runs on OS/2, even if compiled under DOS.  */
+# ifndef OS2
+#  define OS2
+# endif
+#endif
+
+#if !defined WIN32_NATIVE
+# include <unistd.h>
+# if HAVE_LANGINFO_CODESET
+#  include <langinfo.h>
+# else
+#  if 0 /* see comment below */
+#   include <locale.h>
+#  endif
+# endif
+# ifdef __CYGWIN__
+#  define WIN32_LEAN_AND_MEAN
+#  include <windows.h>
+# endif
+#elif defined WIN32_NATIVE
+# define WIN32_LEAN_AND_MEAN
+# include <windows.h>
+#endif
+#if defined OS2
+# define INCL_DOS
+# include <os2.h>
+#endif
+
+#if ENABLE_RELOCATABLE
+# include "relocatable.h"
+#else
+# define relocate(pathname) (pathname)
+#endif
+
+/* Get LIBDIR.  */
+#ifndef LIBDIR
+# include "configmake.h"
+#endif
+
+/* Define O_NOFOLLOW to 0 on platforms where it does not exist.  */
+#ifndef O_NOFOLLOW
+# define O_NOFOLLOW 0
+#endif
+
+#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__
+  /* Win32, Cygwin, OS/2, DOS */
+# define ISSLASH(C) ((C) == '/' || (C) == '\\')
+#endif
+
+#ifndef DIRECTORY_SEPARATOR
+# define DIRECTORY_SEPARATOR '/'
+#endif
+
+#ifndef ISSLASH
+# define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR)
+#endif
+
+#if HAVE_DECL_GETC_UNLOCKED
+# undef getc
+# define getc getc_unlocked
+#endif
+
+/* The following static variable is declared 'volatile' to avoid a
+   possible multithread problem in the function get_charset_aliases. If we
+   are running in a threaded environment, and if two threads initialize
+   'charset_aliases' simultaneously, both will produce the same value,
+   and everything will be ok if the two assignments to 'charset_aliases'
+   are atomic. But I don't know what will happen if the two assignments mix.  */
+#if __STDC__ != 1
+# define volatile /* empty */
+#endif
+/* Pointer to the contents of the charset.alias file, if it has already been
+   read, else NULL.  Its format is:
+   ALIAS_1 '\0' CANONICAL_1 '\0' ... ALIAS_n '\0' CANONICAL_n '\0' '\0'  */
+static const char * volatile charset_aliases;
+
+/* Return a pointer to the contents of the charset.alias file.  */
+static const char *
+get_charset_aliases (void)
+{
+  const char *cp;
+
+  cp = charset_aliases;
+  if (cp == NULL)
+    {
+#if !(defined DARWIN7 || defined VMS || defined WIN32_NATIVE || defined __CYGWIN__)
+      const char *dir;
+      const char *base = "charset.alias";
+      char *file_name;
+
+      /* Make it possible to override the charset.alias location.  This is
+         necessary for running the testsuite before "make install".  */
+      dir = getenv ("CHARSETALIASDIR");
+      if (dir == NULL || dir[0] == '\0')
+        dir = relocate (LIBDIR);
+
+      /* Concatenate dir and base into freshly allocated file_name.  */
+      {
+        size_t dir_len = strlen (dir);
+        size_t base_len = strlen (base);
+        int add_slash = (dir_len > 0 && !ISSLASH (dir[dir_len - 1]));
+        file_name = (char *) malloc (dir_len + add_slash + base_len + 1);
+        if (file_name != NULL)
+          {
+            memcpy (file_name, dir, dir_len);
+            if (add_slash)
+              file_name[dir_len] = DIRECTORY_SEPARATOR;
+            memcpy (file_name + dir_len + add_slash, base, base_len + 1);
+          }
+      }
+
+      if (file_name == NULL)
+        /* Out of memory.  Treat the file as empty.  */
+        cp = "";
+      else
+        {
+          int fd;
+
+          /* Open the file.  Reject symbolic links on platforms that support
+             O_NOFOLLOW.  This is a security feature.  Without it, an attacker
+             could retrieve parts of the contents (namely, the tail of the
+             first line that starts with "* ") of an arbitrary file by placing
+             a symbolic link to that file under the name "charset.alias" in
+             some writable directory and defining the environment variable
+             CHARSETALIASDIR to point to that directory.  */
+          fd = open (file_name,
+                     O_RDONLY | (HAVE_WORKING_O_NOFOLLOW ? O_NOFOLLOW : 0));
+          if (fd < 0)
+            /* File not found.  Treat it as empty.  */
+            cp = "";
+          else
+            {
+              FILE *fp;
+
+              fp = fdopen (fd, "r");
+              if (fp == NULL)
+                {
+                  /* Out of memory.  Treat the file as empty.  */
+                  close (fd);
+                  cp = "";
+                }
+              else
+                {
+                  /* Parse the file's contents.  */
+                  char *res_ptr = NULL;
+                  size_t res_size = 0;
+
+                  for (;;)
+                    {
+                      int c;
+                      char buf1[50+1];
+                      char buf2[50+1];
+                      size_t l1, l2;
+                      char *old_res_ptr;
+
+                      c = getc (fp);
+                      if (c == EOF)
+                        break;
+                      if (c == '\n' || c == ' ' || c == '\t')
+                        continue;
+                      if (c == '#')
+                        {
+                          /* Skip comment, to end of line.  */
+                          do
+                            c = getc (fp);
+                          while (!(c == EOF || c == '\n'));
+                          if (c == EOF)
+                            break;
+                          continue;
+                        }
+                      ungetc (c, fp);
+                      if (fscanf (fp, "%50s %50s", buf1, buf2) < 2)
+                        break;
+                      l1 = strlen (buf1);
+                      l2 = strlen (buf2);
+                      old_res_ptr = res_ptr;
+                      if (res_size == 0)
+                        {
+                          res_size = l1 + 1 + l2 + 1;
+                          res_ptr = (char *) malloc (res_size + 1);
+                        }
+                      else
+                        {
+                          res_size += l1 + 1 + l2 + 1;
+                          res_ptr = (char *) realloc (res_ptr, res_size + 1);
+                        }
+                      if (res_ptr == NULL)
+                        {
+                          /* Out of memory. */
+                          res_size = 0;
+                          free (old_res_ptr);
+                          break;
+                        }
+                      strcpy (res_ptr + res_size - (l2 + 1) - (l1 + 1), buf1);
+                      strcpy (res_ptr + res_size - (l2 + 1), buf2);
+                    }
+                  fclose (fp);
+                  if (res_size == 0)
+                    cp = "";
+                  else
+                    {
+                      *(res_ptr + res_size) = '\0';
+                      cp = res_ptr;
+                    }
+                }
+            }
+
+          free (file_name);
+        }
+
+#else
+
+# if defined DARWIN7
+      /* To avoid the trouble of installing a file that is shared by many
+         GNU packages -- many packaging systems have problems with this --,
+         simply inline the aliases here.  */
+      cp = "ISO8859-1" "\0" "ISO-8859-1" "\0"
+           "ISO8859-2" "\0" "ISO-8859-2" "\0"
+           "ISO8859-4" "\0" "ISO-8859-4" "\0"
+           "ISO8859-5" "\0" "ISO-8859-5" "\0"
+           "ISO8859-7" "\0" "ISO-8859-7" "\0"
+           "ISO8859-9" "\0" "ISO-8859-9" "\0"
+           "ISO8859-13" "\0" "ISO-8859-13" "\0"
+           "ISO8859-15" "\0" "ISO-8859-15" "\0"
+           "KOI8-R" "\0" "KOI8-R" "\0"
+           "KOI8-U" "\0" "KOI8-U" "\0"
+           "CP866" "\0" "CP866" "\0"
+           "CP949" "\0" "CP949" "\0"
+           "CP1131" "\0" "CP1131" "\0"
+           "CP1251" "\0" "CP1251" "\0"
+           "eucCN" "\0" "GB2312" "\0"
+           "GB2312" "\0" "GB2312" "\0"
+           "eucJP" "\0" "EUC-JP" "\0"
+           "eucKR" "\0" "EUC-KR" "\0"
+           "Big5" "\0" "BIG5" "\0"
+           "Big5HKSCS" "\0" "BIG5-HKSCS" "\0"
+           "GBK" "\0" "GBK" "\0"
+           "GB18030" "\0" "GB18030" "\0"
+           "SJIS" "\0" "SHIFT_JIS" "\0"
+           "ARMSCII-8" "\0" "ARMSCII-8" "\0"
+           "PT154" "\0" "PT154" "\0"
+         /*"ISCII-DEV" "\0" "?" "\0"*/
+           "*" "\0" "UTF-8" "\0";
+# endif
+
+# if defined VMS
+      /* To avoid the troubles of an extra file charset.alias_vms in the
+         sources of many GNU packages, simply inline the aliases here.  */
+      /* The list of encodings is taken from the OpenVMS 7.3-1 documentation
+         "Compaq C Run-Time Library Reference Manual for OpenVMS systems"
+         section 10.7 "Handling Different Character Sets".  */
+      cp = "ISO8859-1" "\0" "ISO-8859-1" "\0"
+           "ISO8859-2" "\0" "ISO-8859-2" "\0"
+           "ISO8859-5" "\0" "ISO-8859-5" "\0"
+           "ISO8859-7" "\0" "ISO-8859-7" "\0"
+           "ISO8859-8" "\0" "ISO-8859-8" "\0"
+           "ISO8859-9" "\0" "ISO-8859-9" "\0"
+           /* Japanese */
+           "eucJP" "\0" "EUC-JP" "\0"
+           "SJIS" "\0" "SHIFT_JIS" "\0"
+           "DECKANJI" "\0" "DEC-KANJI" "\0"
+           "SDECKANJI" "\0" "EUC-JP" "\0"
+           /* Chinese */
+           "eucTW" "\0" "EUC-TW" "\0"
+           "DECHANYU" "\0" "DEC-HANYU" "\0"
+           "DECHANZI" "\0" "GB2312" "\0"
+           /* Korean */
+           "DECKOREAN" "\0" "EUC-KR" "\0";
+# endif
+
+# if defined WIN32_NATIVE || defined __CYGWIN__
+      /* To avoid the troubles of installing a separate file in the same
+         directory as the DLL and of retrieving the DLL's directory at
+         runtime, simply inline the aliases here.  */
+
+      cp = "CP936" "\0" "GBK" "\0"
+           "CP1361" "\0" "JOHAB" "\0"
+           "CP20127" "\0" "ASCII" "\0"
+           "CP20866" "\0" "KOI8-R" "\0"
+           "CP20936" "\0" "GB2312" "\0"
+           "CP21866" "\0" "KOI8-RU" "\0"
+           "CP28591" "\0" "ISO-8859-1" "\0"
+           "CP28592" "\0" "ISO-8859-2" "\0"
+           "CP28593" "\0" "ISO-8859-3" "\0"
+           "CP28594" "\0" "ISO-8859-4" "\0"
+           "CP28595" "\0" "ISO-8859-5" "\0"
+           "CP28596" "\0" "ISO-8859-6" "\0"
+           "CP28597" "\0" "ISO-8859-7" "\0"
+           "CP28598" "\0" "ISO-8859-8" "\0"
+           "CP28599" "\0" "ISO-8859-9" "\0"
+           "CP28605" "\0" "ISO-8859-15" "\0"
+           "CP38598" "\0" "ISO-8859-8" "\0"
+           "CP51932" "\0" "EUC-JP" "\0"
+           "CP51936" "\0" "GB2312" "\0"
+           "CP51949" "\0" "EUC-KR" "\0"
+           "CP51950" "\0" "EUC-TW" "\0"
+           "CP54936" "\0" "GB18030" "\0"
+           "CP65001" "\0" "UTF-8" "\0";
+# endif
+#endif
+
+      charset_aliases = cp;
+    }
+
+  return cp;
+}
+
+/* Determine the current locale's character encoding, and canonicalize it
+   into one of the canonical names listed in config.charset.
+   The result must not be freed; it is statically allocated.
+   If the canonical name cannot be determined, the result is a non-canonical
+   name.  */
+
+#ifdef STATIC
+STATIC
+#endif
+const char *
+locale_charset (void)
+{
+  const char *codeset;
+  const char *aliases;
+
+#if !(defined WIN32_NATIVE || defined OS2)
+
+# if HAVE_LANGINFO_CODESET
+
+  /* Most systems support nl_langinfo (CODESET) nowadays.  */
+  codeset = nl_langinfo (CODESET);
+
+#  ifdef __CYGWIN__
+  /* Cygwin < 1.7 does not have locales.  nl_langinfo (CODESET) always
+     returns "US-ASCII".  Return the suffix of the locale name from the
+     environment variables (if present) or the codepage as a number.  */
+  if (codeset != NULL && strcmp (codeset, "US-ASCII") == 0)
+    {
+      const char *locale;
+      static char buf[2 + 10 + 1];
+
+      locale = getenv ("LC_ALL");
+      if (locale == NULL || locale[0] == '\0')
+        {
+          locale = getenv ("LC_CTYPE");
+          if (locale == NULL || locale[0] == '\0')
+            locale = getenv ("LANG");
+        }
+      if (locale != NULL && locale[0] != '\0')
+        {
+          /* If the locale name contains an encoding after the dot, return
+             it.  */
+          const char *dot = strchr (locale, '.');
+
+          if (dot != NULL)
+            {
+              const char *modifier;
+
+              dot++;
+              /* Look for the possible @... trailer and remove it, if any.  */
+              modifier = strchr (dot, '@');
+              if (modifier == NULL)
+                return dot;
+              if (modifier - dot < sizeof (buf))
+                {
+                  memcpy (buf, dot, modifier - dot);
+                  buf [modifier - dot] = '\0';
+                  return buf;
+                }
+            }
+        }
+
+      /* Woe32 has a function returning the locale's codepage as a number:
+         GetACP().  This encoding is used by Cygwin, unless the user has set
+         the environment variable CYGWIN=codepage:oem (which very few people
+         do).
+         Output directed to console windows needs to be converted (to
+         GetOEMCP() if the console is using a raster font, or to
+         GetConsoleOutputCP() if it is using a TrueType font).  Cygwin does
+         this conversion transparently (see winsup/cygwin/fhandler_console.cc),
+         converting to GetConsoleOutputCP().  This leads to correct results,
+         except when SetConsoleOutputCP has been called and a raster font is
+         in use.  */
+      sprintf (buf, "CP%u", GetACP ());
+      codeset = buf;
+    }
+#  endif
+
+# else
+
+  /* On old systems which lack it, use setlocale or getenv.  */
+  const char *locale = NULL;
+
+  /* But most old systems don't have a complete set of locales.  Some
+     (like SunOS 4 or DJGPP) have only the C locale.  Therefore we don't
+     use setlocale here; it would return "C" when it doesn't support the
+     locale name the user has set.  */
+#  if 0
+  locale = setlocale (LC_CTYPE, NULL);
+#  endif
+  if (locale == NULL || locale[0] == '\0')
+    {
+      locale = getenv ("LC_ALL");
+      if (locale == NULL || locale[0] == '\0')
+        {
+          locale = getenv ("LC_CTYPE");
+          if (locale == NULL || locale[0] == '\0')
+            locale = getenv ("LANG");
+        }
+    }
+
+  /* On some old systems, one used to set locale = "iso8859_1". On others,
+     you set it to "language_COUNTRY.charset". In any case, we resolve it
+     through the charset.alias file.  */
+  codeset = locale;
+
+# endif
+
+#elif defined WIN32_NATIVE
+
+  static char buf[2 + 10 + 1];
+
+  /* Woe32 has a function returning the locale's codepage as a number:
+     GetACP().
+     When the output goes to a console window, it needs to be provided in
+     GetOEMCP() encoding if the console is using a raster font, or in
+     GetConsoleOutputCP() encoding if it is using a TrueType font.
+     But in GUI programs and for output sent to files and pipes, GetACP()
+     encoding is the best bet.  */
+  sprintf (buf, "CP%u", GetACP ());
+  codeset = buf;
+
+#elif defined OS2
+
+  const char *locale;
+  static char buf[2 + 10 + 1];
+  ULONG cp[3];
+  ULONG cplen;
+
+  /* Allow user to override the codeset, as set in the operating system,
+     with standard language environment variables.  */
+  locale = getenv ("LC_ALL");
+  if (locale == NULL || locale[0] == '\0')
+    {
+      locale = getenv ("LC_CTYPE");
+      if (locale == NULL || locale[0] == '\0')
+        locale = getenv ("LANG");
+    }
+  if (locale != NULL && locale[0] != '\0')
+    {
+      /* If the locale name contains an encoding after the dot, return it.  */
+      const char *dot = strchr (locale, '.');
+
+      if (dot != NULL)
+        {
+          const char *modifier;
+
+          dot++;
+          /* Look for the possible @... trailer and remove it, if any.  */
+          modifier = strchr (dot, '@');
+          if (modifier == NULL)
+            return dot;
+          if (modifier - dot < sizeof (buf))
+            {
+              memcpy (buf, dot, modifier - dot);
+              buf [modifier - dot] = '\0';
+              return buf;
+            }
+        }
+
+      /* Resolve through the charset.alias file.  */
+      codeset = locale;
+    }
+  else
+    {
+      /* OS/2 has a function returning the locale's codepage as a number.  */
+      if (DosQueryCp (sizeof (cp), cp, &cplen))
+        codeset = "";
+      else
+        {
+          sprintf (buf, "CP%u", cp[0]);
+          codeset = buf;
+        }
+    }
+
+#endif
+
+  if (codeset == NULL)
+    /* The canonical name cannot be determined.  */
+    codeset = "";
+
+  /* Resolve alias. */
+  for (aliases = get_charset_aliases ();
+       *aliases != '\0';
+       aliases += strlen (aliases) + 1, aliases += strlen (aliases) + 1)
+    if (strcmp (codeset, aliases) == 0
+        || (aliases[0] == '*' && aliases[1] == '\0'))
+      {
+        codeset = aliases + strlen (aliases) + 1;
+        break;
+      }
+
+  /* Don't return an empty string.  GNU libc and GNU libiconv interpret
+     the empty string as denoting "the locale's character encoding",
+     thus GNU libiconv would call this function a second time.  */
+  if (codeset[0] == '\0')
+    codeset = "ASCII";
+
+  return codeset;
+}
diff --git a/lib/localcharset.h b/lib/localcharset.h
new file mode 100644 (file)
index 0000000..53c8a94
--- /dev/null
@@ -0,0 +1,43 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Determine a canonical name for the current locale's character encoding.
+   Copyright (C) 2000-2003, 2009-2011 Free Software Foundation, Inc.
+   This file is part of the GNU CHARSET Library.
+
+   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, 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.  */
+
+#ifndef _LOCALCHARSET_H
+#define _LOCALCHARSET_H
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Determine the current locale's character encoding, and canonicalize it
+   into one of the canonical names listed in config.charset.
+   The result must not be freed; it is statically allocated.
+   If the canonical name cannot be determined, the result is a non-canonical
+   name.  */
+extern const char * locale_charset (void);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* _LOCALCHARSET_H */
diff --git a/lib/long-options.c b/lib/long-options.c
new file mode 100644 (file)
index 0000000..0b86276
--- /dev/null
@@ -0,0 +1,88 @@
+/* Utility to accept --help and --version options as unobtrusively as possible.
+
+   Copyright (C) 1993-1994, 1998-2000, 2002-2006, 2009-2011 Free Software
+   Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+/* Written by Jim Meyering.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include "long-options.h"
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <getopt.h>
+
+#include "version-etc.h"
+
+static struct option const long_options[] =
+{
+  {"help", no_argument, NULL, 'h'},
+  {"version", no_argument, NULL, 'v'},
+  {NULL, 0, NULL, 0}
+};
+
+/* Process long options --help and --version, but only if argc == 2.
+   Be careful not to gobble up `--'.  */
+
+void
+parse_long_options (int argc,
+                    char **argv,
+                    const char *command_name,
+                    const char *package,
+                    const char *version,
+                    void (*usage_func) (int),
+                    /* const char *author1, ...*/ ...)
+{
+  int c;
+  int saved_opterr;
+
+  saved_opterr = opterr;
+
+  /* Don't print an error message for unrecognized options.  */
+  opterr = 0;
+
+  if (argc == 2
+      && (c = getopt_long (argc, argv, "+", long_options, NULL)) != -1)
+    {
+      switch (c)
+        {
+        case 'h':
+          (*usage_func) (EXIT_SUCCESS);
+
+        case 'v':
+          {
+            va_list authors;
+            va_start (authors, usage_func);
+            version_etc_va (stdout, command_name, package, version, authors);
+            exit (0);
+          }
+
+        default:
+          /* Don't process any other long-named options.  */
+          break;
+        }
+    }
+
+  /* Restore previous value.  */
+  opterr = saved_opterr;
+
+  /* Reset this to zero so that getopt internals get initialized from
+     the probably-new parameters when/if getopt is called later.  */
+  optind = 0;
+}
diff --git a/lib/long-options.h b/lib/long-options.h
new file mode 100644 (file)
index 0000000..12d3e0e
--- /dev/null
@@ -0,0 +1,26 @@
+/* long-options.h -- declaration for --help- and --version-handling function.
+   Copyright (C) 1993-1994, 1998-1999, 2003, 2009-2011 Free Software
+   Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+/* Written by Jim Meyering.  */
+
+void parse_long_options (int _argc,
+                         char **_argv,
+                         const char *_command_name,
+                         const char *_package,
+                         const char *_version,
+                         void (*_usage) (int),
+                         /* const char *author1, ...*/ ...);
diff --git a/lib/lseek.c b/lib/lseek.c
new file mode 100644 (file)
index 0000000..b33a756
--- /dev/null
@@ -0,0 +1,64 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* An lseek() function that detects pipes.
+   Copyright (C) 2007, 2009-2011 Free Software Foundation, 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; either version 3, 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.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include <unistd.h>
+
+#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+/* Windows platforms.  */
+/* Get GetFileType.  */
+# include <windows.h>
+#else
+# include <sys/stat.h>
+#endif
+#include <errno.h>
+
+#undef lseek
+
+off_t
+rpl_lseek (int fd, off_t offset, int whence)
+{
+#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+  /* mingw lseek mistakenly succeeds on pipes, sockets, and terminals.  */
+  HANDLE h = (HANDLE) _get_osfhandle (fd);
+  if (h == INVALID_HANDLE_VALUE)
+    {
+      errno = EBADF;
+      return -1;
+    }
+  if (GetFileType (h) != FILE_TYPE_DISK)
+    {
+      errno = ESPIPE;
+      return -1;
+    }
+#else
+  /* BeOS lseek mistakenly succeeds on pipes...  */
+  struct stat statbuf;
+  if (fstat (fd, &statbuf) < 0)
+    return -1;
+  if (!S_ISREG (statbuf.st_mode))
+    {
+      errno = ESPIPE;
+      return -1;
+    }
+#endif
+  return lseek (fd, offset, whence);
+}
diff --git a/lib/lstat.c b/lib/lstat.c
new file mode 100644 (file)
index 0000000..b26065e
--- /dev/null
@@ -0,0 +1,91 @@
+/* Work around a bug of lstat on some systems
+
+   Copyright (C) 1997-2006, 2008-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+/* written by Jim Meyering */
+
+#include <config.h>
+
+#if !HAVE_LSTAT
+/* On systems that lack symlinks, our replacement <sys/stat.h> already
+   defined lstat as stat, so there is nothing further to do other than
+   avoid an empty file.  */
+typedef int dummy;
+#else /* HAVE_LSTAT */
+
+/* Get the original definition of lstat.  It might be defined as a macro.  */
+# define __need_system_sys_stat_h
+# include <sys/types.h>
+# include <sys/stat.h>
+# undef __need_system_sys_stat_h
+
+static inline int
+orig_lstat (const char *filename, struct stat *buf)
+{
+  return lstat (filename, buf);
+}
+
+/* Specification.  */
+# include <sys/stat.h>
+
+# include <string.h>
+# include <errno.h>
+
+/* lstat works differently on Linux and Solaris systems.  POSIX (see
+   `pathname resolution' in the glossary) requires that programs like
+   `ls' take into consideration the fact that FILE has a trailing slash
+   when FILE is a symbolic link.  On Linux and Solaris 10 systems, the
+   lstat function already has the desired semantics (in treating
+   `lstat ("symlink/", sbuf)' just like `lstat ("symlink/.", sbuf)',
+   but on Solaris 9 and earlier it does not.
+
+   If FILE has a trailing slash and specifies a symbolic link,
+   then use stat() to get more info on the referent of FILE.
+   If the referent is a non-directory, then set errno to ENOTDIR
+   and return -1.  Otherwise, return stat's result.  */
+
+int
+rpl_lstat (const char *file, struct stat *sbuf)
+{
+  size_t len;
+  int lstat_result = orig_lstat (file, sbuf);
+
+  if (lstat_result != 0)
+    return lstat_result;
+
+  /* This replacement file can blindly check against '/' rather than
+     using the ISSLASH macro, because all platforms with '\\' either
+     lack symlinks (mingw) or have working lstat (cygwin) and thus do
+     not compile this file.  0 len should have already been filtered
+     out above, with a failure return of ENOENT.  */
+  len = strlen (file);
+  if (file[len - 1] != '/' || S_ISDIR (sbuf->st_mode))
+    return 0;
+
+  /* At this point, a trailing slash is only permitted on
+     symlink-to-dir; but it should have found information on the
+     directory, not the symlink.  Call stat() to get info about the
+     link's referent.  Our replacement stat guarantees valid results,
+     even if the symlink is not pointing to a directory.  */
+  if (!S_ISLNK (sbuf->st_mode))
+    {
+      errno = ENOTDIR;
+      return -1;
+    }
+  return stat (file, sbuf);
+}
+
+#endif /* HAVE_LSTAT */
diff --git a/lib/malloc.c b/lib/malloc.c
new file mode 100644 (file)
index 0000000..7d2c090
--- /dev/null
@@ -0,0 +1,59 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* malloc() function that is glibc compatible.
+
+   Copyright (C) 1997-1998, 2006-2007, 2009-2011 Free Software Foundation, 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; either version 3, 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.  */
+
+/* written by Jim Meyering and Bruno Haible */
+
+#define _GL_USE_STDLIB_ALLOC 1
+#include <config.h>
+/* Only the AC_FUNC_MALLOC macro defines 'malloc' already in config.h.  */
+#ifdef malloc
+# define NEED_MALLOC_GNU 1
+# undef malloc
+/* Whereas the gnulib module 'malloc-gnu' defines HAVE_MALLOC_GNU.  */
+#elif GNULIB_MALLOC_GNU && !HAVE_MALLOC_GNU
+# define NEED_MALLOC_GNU 1
+#endif
+
+#include <stdlib.h>
+
+#include <errno.h>
+
+/* Allocate an N-byte block of memory from the heap.
+   If N is zero, allocate a 1-byte block.  */
+
+void *
+rpl_malloc (size_t n)
+{
+  void *result;
+
+#if NEED_MALLOC_GNU
+  if (n == 0)
+    n = 1;
+#endif
+
+  result = malloc (n);
+
+#if !HAVE_MALLOC_POSIX
+  if (result == NULL)
+    errno = ENOMEM;
+#endif
+
+  return result;
+}
diff --git a/lib/malloca.c b/lib/malloca.c
new file mode 100644 (file)
index 0000000..11482c5
--- /dev/null
@@ -0,0 +1,141 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Safe automatic memory allocation.
+   Copyright (C) 2003, 2006-2007, 2009-2011 Free Software Foundation, Inc.
+   Written by Bruno Haible <bruno@clisp.org>, 2003.
+
+   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, 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.  */
+
+#define _GL_USE_STDLIB_ALLOC 1
+#include <config.h>
+
+/* Specification.  */
+#include "malloca.h"
+
+#include "verify.h"
+
+/* The speed critical point in this file is freea() applied to an alloca()
+   result: it must be fast, to match the speed of alloca().  The speed of
+   mmalloca() and freea() in the other case are not critical, because they
+   are only invoked for big memory sizes.  */
+
+#if HAVE_ALLOCA
+
+/* Store the mmalloca() results in a hash table.  This is needed to reliably
+   distinguish a mmalloca() result and an alloca() result.
+
+   Although it is possible that the same pointer is returned by alloca() and
+   by mmalloca() at different times in the same application, it does not lead
+   to a bug in freea(), because:
+     - Before a pointer returned by alloca() can point into malloc()ed memory,
+       the function must return, and once this has happened the programmer must
+       not call freea() on it anyway.
+     - Before a pointer returned by mmalloca() can point into the stack, it
+       must be freed.  The only function that can free it is freea(), and
+       when freea() frees it, it also removes it from the hash table.  */
+
+#define MAGIC_NUMBER 0x1415fb4a
+#define MAGIC_SIZE sizeof (int)
+/* This is how the header info would look like without any alignment
+   considerations.  */
+struct preliminary_header { void *next; char room[MAGIC_SIZE]; };
+/* But the header's size must be a multiple of sa_alignment_max.  */
+#define HEADER_SIZE \
+  (((sizeof (struct preliminary_header) + sa_alignment_max - 1) / sa_alignment_max) * sa_alignment_max)
+struct header { void *next; char room[HEADER_SIZE - sizeof (struct preliminary_header) + MAGIC_SIZE]; };
+verify (HEADER_SIZE == sizeof (struct header));
+/* We make the hash table quite big, so that during lookups the probability
+   of empty hash buckets is quite high.  There is no need to make the hash
+   table resizable, because when the hash table gets filled so much that the
+   lookup becomes slow, it means that the application has memory leaks.  */
+#define HASH_TABLE_SIZE 257
+static void * mmalloca_results[HASH_TABLE_SIZE];
+
+#endif
+
+void *
+mmalloca (size_t n)
+{
+#if HAVE_ALLOCA
+  /* Allocate one more word, that serves as an indicator for malloc()ed
+     memory, so that freea() of an alloca() result is fast.  */
+  size_t nplus = n + HEADER_SIZE;
+
+  if (nplus >= n)
+    {
+      char *p = (char *) malloc (nplus);
+
+      if (p != NULL)
+        {
+          size_t slot;
+
+          p += HEADER_SIZE;
+
+          /* Put a magic number into the indicator word.  */
+          ((int *) p)[-1] = MAGIC_NUMBER;
+
+          /* Enter p into the hash table.  */
+          slot = (unsigned long) p % HASH_TABLE_SIZE;
+          ((struct header *) (p - HEADER_SIZE))->next = mmalloca_results[slot];
+          mmalloca_results[slot] = p;
+
+          return p;
+        }
+    }
+  /* Out of memory.  */
+  return NULL;
+#else
+# if !MALLOC_0_IS_NONNULL
+  if (n == 0)
+    n = 1;
+# endif
+  return malloc (n);
+#endif
+}
+
+#if HAVE_ALLOCA
+void
+freea (void *p)
+{
+  /* mmalloca() may have returned NULL.  */
+  if (p != NULL)
+    {
+      /* Attempt to quickly distinguish the mmalloca() result - which has
+         a magic indicator word - and the alloca() result - which has an
+         uninitialized indicator word.  It is for this test that sa_increment
+         additional bytes are allocated in the alloca() case.  */
+      if (((int *) p)[-1] == MAGIC_NUMBER)
+        {
+          /* Looks like a mmalloca() result.  To see whether it really is one,
+             perform a lookup in the hash table.  */
+          size_t slot = (unsigned long) p % HASH_TABLE_SIZE;
+          void **chain = &mmalloca_results[slot];
+          for (; *chain != NULL;)
+            {
+              if (*chain == p)
+                {
+                  /* Found it.  Remove it from the hash table and free it.  */
+                  char *p_begin = (char *) p - HEADER_SIZE;
+                  *chain = ((struct header *) p_begin)->next;
+                  free (p_begin);
+                  return;
+                }
+              chain = &((struct header *) ((char *) *chain - HEADER_SIZE))->next;
+            }
+        }
+      /* At this point, we know it was not a mmalloca() result.  */
+    }
+}
+#endif
diff --git a/lib/malloca.h b/lib/malloca.h
new file mode 100644 (file)
index 0000000..933fa7e
--- /dev/null
@@ -0,0 +1,136 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Safe automatic memory allocation.
+   Copyright (C) 2003-2007, 2009-2011 Free Software Foundation, Inc.
+   Written by Bruno Haible <bruno@clisp.org>, 2003.
+
+   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, 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.  */
+
+#ifndef _MALLOCA_H
+#define _MALLOCA_H
+
+#include <alloca.h>
+#include <stddef.h>
+#include <stdlib.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* safe_alloca(N) is equivalent to alloca(N) when it is safe to call
+   alloca(N); otherwise it returns NULL.  It either returns N bytes of
+   memory allocated on the stack, that lasts until the function returns,
+   or NULL.
+   Use of safe_alloca should be avoided:
+     - inside arguments of function calls - undefined behaviour,
+     - in inline functions - the allocation may actually last until the
+       calling function returns.
+*/
+#if HAVE_ALLOCA
+/* The OS usually guarantees only one guard page at the bottom of the stack,
+   and a page size can be as small as 4096 bytes.  So we cannot safely
+   allocate anything larger than 4096 bytes.  Also care for the possibility
+   of a few compiler-allocated temporary stack slots.
+   This must be a macro, not an inline function.  */
+# define safe_alloca(N) ((N) < 4032 ? alloca (N) : NULL)
+#else
+# define safe_alloca(N) ((void) (N), NULL)
+#endif
+
+/* malloca(N) is a safe variant of alloca(N).  It allocates N bytes of
+   memory allocated on the stack, that must be freed using freea() before
+   the function returns.  Upon failure, it returns NULL.  */
+#if HAVE_ALLOCA
+# define malloca(N) \
+  ((N) < 4032 - sa_increment                                        \
+   ? (void *) ((char *) alloca ((N) + sa_increment) + sa_increment) \
+   : mmalloca (N))
+#else
+# define malloca(N) \
+  mmalloca (N)
+#endif
+extern void * mmalloca (size_t n);
+
+/* Free a block of memory allocated through malloca().  */
+#if HAVE_ALLOCA
+extern void freea (void *p);
+#else
+# define freea free
+#endif
+
+/* nmalloca(N,S) is an overflow-safe variant of malloca (N * S).
+   It allocates an array of N objects, each with S bytes of memory,
+   on the stack.  S must be positive and N must be nonnegative.
+   The array must be freed using freea() before the function returns.  */
+#if 1
+/* Cf. the definition of xalloc_oversized.  */
+# define nmalloca(n, s) \
+    ((n) > (size_t) (sizeof (ptrdiff_t) <= sizeof (size_t) ? -1 : -2) / (s) \
+     ? NULL \
+     : malloca ((n) * (s)))
+#else
+extern void * nmalloca (size_t n, size_t s);
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+/* ------------------- Auxiliary, non-public definitions ------------------- */
+
+/* Determine the alignment of a type at compile time.  */
+#if defined __GNUC__
+# define sa_alignof __alignof__
+#elif defined __cplusplus
+  template <class type> struct sa_alignof_helper { char __slot1; type __slot2; };
+# define sa_alignof(type) offsetof (sa_alignof_helper<type>, __slot2)
+#elif defined __hpux
+  /* Work around a HP-UX 10.20 cc bug with enums constants defined as offsetof
+     values.  */
+# define sa_alignof(type) (sizeof (type) <= 4 ? 4 : 8)
+#elif defined _AIX
+  /* Work around an AIX 3.2.5 xlc bug with enums constants defined as offsetof
+     values.  */
+# define sa_alignof(type) (sizeof (type) <= 4 ? 4 : 8)
+#else
+# define sa_alignof(type) offsetof (struct { char __slot1; type __slot2; }, __slot2)
+#endif
+
+enum
+{
+/* The desired alignment of memory allocations is the maximum alignment
+   among all elementary types.  */
+  sa_alignment_long = sa_alignof (long),
+  sa_alignment_double = sa_alignof (double),
+#if HAVE_LONG_LONG_INT
+  sa_alignment_longlong = sa_alignof (long long),
+#endif
+  sa_alignment_longdouble = sa_alignof (long double),
+  sa_alignment_max = ((sa_alignment_long - 1) | (sa_alignment_double - 1)
+#if HAVE_LONG_LONG_INT
+                      | (sa_alignment_longlong - 1)
+#endif
+                      | (sa_alignment_longdouble - 1)
+                     ) + 1,
+/* The increment that guarantees room for a magic word must be >= sizeof (int)
+   and a multiple of sa_alignment_max.  */
+  sa_increment = ((sizeof (int) + sa_alignment_max - 1) / sa_alignment_max) * sa_alignment_max
+};
+
+#endif /* _MALLOCA_H */
diff --git a/lib/malloca.valgrind b/lib/malloca.valgrind
new file mode 100644 (file)
index 0000000..52f0a50
--- /dev/null
@@ -0,0 +1,7 @@
+# Suppress a valgrind message about use of uninitialized memory in freea().
+# This use is OK because it provides only a speedup.
+{
+    freea
+    Memcheck:Cond
+    fun:freea
+}
diff --git a/lib/mbrtowc.c b/lib/mbrtowc.c
new file mode 100644 (file)
index 0000000..7a8e599
--- /dev/null
@@ -0,0 +1,396 @@
+/* Convert multibyte character to wide character.
+   Copyright (C) 1999-2002, 2005-2011 Free Software Foundation, Inc.
+   Written by Bruno Haible <bruno@clisp.org>, 2008.
+
+   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 <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include <wchar.h>
+
+#if GNULIB_defined_mbstate_t
+/* Implement mbrtowc() on top of mbtowc().  */
+
+# include <errno.h>
+# include <stdlib.h>
+
+# include "localcharset.h"
+# include "streq.h"
+# include "verify.h"
+
+
+verify (sizeof (mbstate_t) >= 4);
+
+static char internal_state[4];
+
+size_t
+mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
+{
+  char *pstate = (char *)ps;
+
+  if (s == NULL)
+    {
+      pwc = NULL;
+      s = "";
+      n = 1;
+    }
+
+  if (n == 0)
+    return (size_t)(-2);
+
+  /* Here n > 0.  */
+
+  if (pstate == NULL)
+    pstate = internal_state;
+
+  {
+    size_t nstate = pstate[0];
+    char buf[4];
+    const char *p;
+    size_t m;
+
+    switch (nstate)
+      {
+      case 0:
+        p = s;
+        m = n;
+        break;
+      case 3:
+        buf[2] = pstate[3];
+        /*FALLTHROUGH*/
+      case 2:
+        buf[1] = pstate[2];
+        /*FALLTHROUGH*/
+      case 1:
+        buf[0] = pstate[1];
+        p = buf;
+        m = nstate;
+        buf[m++] = s[0];
+        if (n >= 2 && m < 4)
+          {
+            buf[m++] = s[1];
+            if (n >= 3 && m < 4)
+              buf[m++] = s[2];
+          }
+        break;
+      default:
+        errno = EINVAL;
+        return (size_t)(-1);
+      }
+
+    /* Here m > 0.  */
+
+# if __GLIBC__ || defined __UCLIBC__
+    /* Work around bug <http://sourceware.org/bugzilla/show_bug.cgi?id=9674> */
+    mbtowc (NULL, NULL, 0);
+# endif
+    {
+      int res = mbtowc (pwc, p, m);
+
+      if (res >= 0)
+        {
+          if (pwc != NULL && ((*pwc == 0) != (res == 0)))
+            abort ();
+          if (nstate >= (res > 0 ? res : 1))
+            abort ();
+          res -= nstate;
+          pstate[0] = 0;
+          return res;
+        }
+
+      /* mbtowc does not distinguish between invalid and incomplete multibyte
+         sequences.  But mbrtowc needs to make this distinction.
+         There are two possible approaches:
+           - Use iconv() and its return value.
+           - Use built-in knowledge about the possible encodings.
+         Given the low quality of implementation of iconv() on the systems that
+         lack mbrtowc(), we use the second approach.
+         The possible encodings are:
+           - 8-bit encodings,
+           - EUC-JP, EUC-KR, GB2312, EUC-TW, BIG5, GB18030, SJIS,
+           - UTF-8.
+         Use specialized code for each.  */
+      if (m >= 4 || m >= MB_CUR_MAX)
+        goto invalid;
+      /* Here MB_CUR_MAX > 1 and 0 < m < 4.  */
+      {
+        const char *encoding = locale_charset ();
+
+        if (STREQ (encoding, "UTF-8", 'U', 'T', 'F', '-', '8', 0, 0, 0, 0))
+          {
+            /* Cf. unistr/u8-mblen.c.  */
+            unsigned char c = (unsigned char) p[0];
+
+            if (c >= 0xc2)
+              {
+                if (c < 0xe0)
+                  {
+                    if (m == 1)
+                      goto incomplete;
+                  }
+                else if (c < 0xf0)
+                  {
+                    if (m == 1)
+                      goto incomplete;
+                    if (m == 2)
+                      {
+                        unsigned char c2 = (unsigned char) p[1];
+
+                        if ((c2 ^ 0x80) < 0x40
+                            && (c >= 0xe1 || c2 >= 0xa0)
+                            && (c != 0xed || c2 < 0xa0))
+                          goto incomplete;
+                      }
+                  }
+                else if (c <= 0xf4)
+                  {
+                    if (m == 1)
+                      goto incomplete;
+                    else /* m == 2 || m == 3 */
+                      {
+                        unsigned char c2 = (unsigned char) p[1];
+
+                        if ((c2 ^ 0x80) < 0x40
+                            && (c >= 0xf1 || c2 >= 0x90)
+                            && (c < 0xf4 || (c == 0xf4 && c2 < 0x90)))
+                          {
+                            if (m == 2)
+                              goto incomplete;
+                            else /* m == 3 */
+                              {
+                                unsigned char c3 = (unsigned char) p[2];
+
+                                if ((c3 ^ 0x80) < 0x40)
+                                  goto incomplete;
+                              }
+                          }
+                      }
+                  }
+              }
+            goto invalid;
+          }
+
+        /* As a reference for this code, you can use the GNU libiconv
+           implementation.  Look for uses of the RET_TOOFEW macro.  */
+
+        if (STREQ (encoding, "EUC-JP", 'E', 'U', 'C', '-', 'J', 'P', 0, 0, 0))
+          {
+            if (m == 1)
+              {
+                unsigned char c = (unsigned char) p[0];
+
+                if ((c >= 0xa1 && c < 0xff) || c == 0x8e || c == 0x8f)
+                  goto incomplete;
+              }
+            if (m == 2)
+              {
+                unsigned char c = (unsigned char) p[0];
+
+                if (c == 0x8f)
+                  {
+                    unsigned char c2 = (unsigned char) p[1];
+
+                    if (c2 >= 0xa1 && c2 < 0xff)
+                      goto incomplete;
+                  }
+              }
+            goto invalid;
+          }
+        if (STREQ (encoding, "EUC-KR", 'E', 'U', 'C', '-', 'K', 'R', 0, 0, 0)
+            || STREQ (encoding, "GB2312", 'G', 'B', '2', '3', '1', '2', 0, 0, 0)
+            || STREQ (encoding, "BIG5", 'B', 'I', 'G', '5', 0, 0, 0, 0, 0))
+          {
+            if (m == 1)
+              {
+                unsigned char c = (unsigned char) p[0];
+
+                if (c >= 0xa1 && c < 0xff)
+                  goto incomplete;
+              }
+            goto invalid;
+          }
+        if (STREQ (encoding, "EUC-TW", 'E', 'U', 'C', '-', 'T', 'W', 0, 0, 0))
+          {
+            if (m == 1)
+              {
+                unsigned char c = (unsigned char) p[0];
+
+                if ((c >= 0xa1 && c < 0xff) || c == 0x8e)
+                  goto incomplete;
+              }
+            else /* m == 2 || m == 3 */
+              {
+                unsigned char c = (unsigned char) p[0];
+
+                if (c == 0x8e)
+                  goto incomplete;
+              }
+            goto invalid;
+          }
+        if (STREQ (encoding, "GB18030", 'G', 'B', '1', '8', '0', '3', '0', 0, 0))
+          {
+            if (m == 1)
+              {
+                unsigned char c = (unsigned char) p[0];
+
+                if ((c >= 0x90 && c <= 0xe3) || (c >= 0xf8 && c <= 0xfe))
+                  goto incomplete;
+              }
+            else /* m == 2 || m == 3 */
+              {
+                unsigned char c = (unsigned char) p[0];
+
+                if (c >= 0x90 && c <= 0xe3)
+                  {
+                    unsigned char c2 = (unsigned char) p[1];
+
+                    if (c2 >= 0x30 && c2 <= 0x39)
+                      {
+                        if (m == 2)
+                          goto incomplete;
+                        else /* m == 3 */
+                          {
+                            unsigned char c3 = (unsigned char) p[2];
+
+                            if (c3 >= 0x81 && c3 <= 0xfe)
+                              goto incomplete;
+                          }
+                      }
+                  }
+              }
+            goto invalid;
+          }
+        if (STREQ (encoding, "SJIS", 'S', 'J', 'I', 'S', 0, 0, 0, 0, 0))
+          {
+            if (m == 1)
+              {
+                unsigned char c = (unsigned char) p[0];
+
+                if ((c >= 0x81 && c <= 0x9f) || (c >= 0xe0 && c <= 0xea)
+                    || (c >= 0xf0 && c <= 0xf9))
+                  goto incomplete;
+              }
+            goto invalid;
+          }
+
+        /* An unknown multibyte encoding.  */
+        goto incomplete;
+      }
+
+     incomplete:
+      {
+        size_t k = nstate;
+        /* Here 0 <= k < m < 4.  */
+        pstate[++k] = s[0];
+        if (k < m)
+          {
+            pstate[++k] = s[1];
+            if (k < m)
+              pstate[++k] = s[2];
+          }
+        if (k != m)
+          abort ();
+      }
+      pstate[0] = m;
+      return (size_t)(-2);
+
+     invalid:
+      errno = EILSEQ;
+      /* The conversion state is undefined, says POSIX.  */
+      return (size_t)(-1);
+    }
+  }
+}
+
+#else
+/* Override the system's mbrtowc() function.  */
+
+# undef mbrtowc
+
+size_t
+rpl_mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
+{
+# if MBRTOWC_NULL_ARG2_BUG || MBRTOWC_RETVAL_BUG
+  if (s == NULL)
+    {
+      pwc = NULL;
+      s = "";
+      n = 1;
+    }
+# endif
+
+# if MBRTOWC_RETVAL_BUG
+  {
+    static mbstate_t internal_state;
+
+    /* Override mbrtowc's internal state.  We cannot call mbsinit() on the
+       hidden internal state, but we can call it on our variable.  */
+    if (ps == NULL)
+      ps = &internal_state;
+
+    if (!mbsinit (ps))
+      {
+        /* Parse the rest of the multibyte character byte for byte.  */
+        size_t count = 0;
+        for (; n > 0; s++, n--)
+          {
+            wchar_t wc;
+            size_t ret = mbrtowc (&wc, s, 1, ps);
+
+            if (ret == (size_t)(-1))
+              return (size_t)(-1);
+            count++;
+            if (ret != (size_t)(-2))
+              {
+                /* The multibyte character has been completed.  */
+                if (pwc != NULL)
+                  *pwc = wc;
+                return (wc == 0 ? 0 : count);
+              }
+          }
+        return (size_t)(-2);
+      }
+  }
+# endif
+
+# if MBRTOWC_NUL_RETVAL_BUG
+  {
+    wchar_t wc;
+    size_t ret = mbrtowc (&wc, s, n, ps);
+
+    if (ret != (size_t)(-1) && ret != (size_t)(-2))
+      {
+        if (pwc != NULL)
+          *pwc = wc;
+        if (wc == 0)
+          ret = 0;
+      }
+    return ret;
+  }
+# else
+  {
+#   if MBRTOWC_NULL_ARG1_BUG
+    wchar_t dummy;
+
+    if (pwc == NULL)
+      pwc = &dummy;
+#   endif
+
+    return mbrtowc (pwc, s, n, ps);
+  }
+# endif
+}
+
+#endif
diff --git a/lib/mbsinit.c b/lib/mbsinit.c
new file mode 100644 (file)
index 0000000..8ac2137
--- /dev/null
@@ -0,0 +1,61 @@
+/* Test for initial conversion state.
+   Copyright (C) 2008-2011 Free Software Foundation, Inc.
+   Written by Bruno Haible <bruno@clisp.org>, 2008.
+
+   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 <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include <wchar.h>
+
+#include "verify.h"
+
+#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
+
+/* On native Windows, 'mbstate_t' is defined as 'int'.  */
+
+int
+mbsinit (const mbstate_t *ps)
+{
+  return ps == NULL || *ps == 0;
+}
+
+#else
+
+/* Platforms that lack mbsinit() also lack mbrlen(), mbrtowc(), mbsrtowcs()
+   and wcrtomb(), wcsrtombs().
+   We assume that
+     - sizeof (mbstate_t) >= 4,
+     - only stateless encodings are supported (such as UTF-8 and EUC-JP, but
+       not ISO-2022 variants),
+     - for each encoding, the number of bytes for a wide character is <= 4.
+       (This maximum is attained for UTF-8, GB18030, EUC-TW.)
+   We define the meaning of mbstate_t as follows:
+     - In mb -> wc direction, mbstate_t's first byte contains the number of
+       buffered bytes (in the range 0..3), followed by up to 3 buffered bytes.
+     - In wc -> mb direction, mbstate_t contains no information. In other
+       words, it is always in the initial state.  */
+
+verify (sizeof (mbstate_t) >= 4);
+
+int
+mbsinit (const mbstate_t *ps)
+{
+  const char *pstate = (const char *)ps;
+
+  return pstate == NULL || pstate[0] == 0;
+}
+
+#endif
diff --git a/lib/mbtowc-impl.h b/lib/mbtowc-impl.h
new file mode 100644 (file)
index 0000000..1645eb5
--- /dev/null
@@ -0,0 +1,44 @@
+/* Convert multibyte character to wide character.
+   Copyright (C) 2011 Free Software Foundation, Inc.
+   Written by Bruno Haible <bruno@clisp.org>, 2011.
+
+   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 <http://www.gnu.org/licenses/>.  */
+
+/* We don't need a static internal state, because the encoding is not state
+   dependent, and when mbrtowc returns (size_t)(-2). we throw the result
+   away. */
+
+int
+mbtowc (wchar_t *pwc, const char *s, size_t n)
+{
+  if (s == NULL)
+    return 0;
+  else
+    {
+      mbstate_t state;
+      wchar_t wc;
+      size_t result;
+
+      memset (&state, 0, sizeof (mbstate_t));
+      result = mbrtowc (&wc, s, n, &state);
+      if (result == (size_t)-1 || result == (size_t)-2)
+        {
+          errno = EILSEQ;
+          return -1;
+        }
+      if (pwc != NULL)
+        *pwc = wc;
+      return (wc == 0 ? 0 : result);
+    }
+}
diff --git a/lib/mbtowc.c b/lib/mbtowc.c
new file mode 100644 (file)
index 0000000..b3848a1
--- /dev/null
@@ -0,0 +1,26 @@
+/* Convert multibyte character to wide character.
+   Copyright (C) 2011 Free Software Foundation, Inc.
+   Written by Bruno Haible <bruno@clisp.org>, 2011.
+
+   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 <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+#include <stdlib.h>
+
+#include <errno.h>
+#include <string.h>
+#include <wchar.h>
+
+#include "mbtowc-impl.h"
diff --git a/lib/mkstemp.c b/lib/mkstemp.c
new file mode 100644 (file)
index 0000000..3c8437e
--- /dev/null
@@ -0,0 +1,50 @@
+/* Copyright (C) 1998-1999, 2001, 2005-2007, 2009-2011 Free Software
+   Foundation, Inc.
+   This file is derived from the one in the GNU C Library.
+
+   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 <http://www.gnu.org/licenses/>.  */
+
+#if !_LIBC
+# include <config.h>
+#endif
+
+#include <stdlib.h>
+
+#if !_LIBC
+# include "tempname.h"
+# define __gen_tempname gen_tempname
+# ifndef __GT_FILE
+#  define __GT_FILE GT_FILE
+# endif
+#endif
+
+#include <stdio.h>
+
+#ifndef __GT_FILE
+# define __GT_FILE 0
+#endif
+
+/* Generate a unique temporary file name from XTEMPLATE.
+   The last six characters of XTEMPLATE must be "XXXXXX";
+   they are replaced with a string that makes the file name unique.
+   Then open the file and return a fd.
+
+   If you are creating temporary files which will later be removed,
+   consider using the clean-temp module, which avoids several pitfalls
+   of using mkstemp directly. */
+int
+mkstemp (char *xtemplate)
+{
+  return __gen_tempname (xtemplate, 0, 0, __GT_FILE);
+}
diff --git a/lib/nl_langinfo.c b/lib/nl_langinfo.c
new file mode 100644 (file)
index 0000000..8406ff1
--- /dev/null
@@ -0,0 +1,270 @@
+/* nl_langinfo() replacement: query locale dependent information.
+
+   Copyright (C) 2007-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include <langinfo.h>
+
+#if REPLACE_NL_LANGINFO
+
+/* Override nl_langinfo with support for added nl_item values.  */
+
+# include <locale.h>
+# include <string.h>
+
+# undef nl_langinfo
+
+char *
+rpl_nl_langinfo (nl_item item)
+{
+  switch (item)
+    {
+# if GNULIB_defined_CODESET
+    case CODESET:
+      {
+        const char *locale;
+        static char buf[2 + 10 + 1];
+
+        locale = setlocale (LC_CTYPE, NULL);
+        if (locale != NULL && locale[0] != '\0')
+          {
+            /* If the locale name contains an encoding after the dot, return
+               it.  */
+            const char *dot = strchr (locale, '.');
+
+            if (dot != NULL)
+              {
+                const char *modifier;
+
+                dot++;
+                /* Look for the possible @... trailer and remove it, if any.  */
+                modifier = strchr (dot, '@');
+                if (modifier == NULL)
+                  return dot;
+                if (modifier - dot < sizeof (buf))
+                  {
+                    memcpy (buf, dot, modifier - dot);
+                    buf [modifier - dot] = '\0';
+                    return buf;
+                  }
+              }
+          }
+        return "";
+      }
+# endif
+# if GNULIB_defined_T_FMT_AMPM
+    case T_FMT_AMPM:
+      return "%I:%M:%S %p";
+# endif
+# if GNULIB_defined_ERA
+    case ERA:
+      /* The format is not standardized.  In glibc it is a sequence of strings
+         of the form "direction:offset:start_date:end_date:era_name:era_format"
+         with an empty string at the end.  */
+      return "";
+    case ERA_D_FMT:
+      /* The %Ex conversion in strftime behaves like %x if the locale does not
+         have an alternative time format.  */
+      item = D_FMT;
+      break;
+    case ERA_D_T_FMT:
+      /* The %Ec conversion in strftime behaves like %c if the locale does not
+         have an alternative time format.  */
+      item = D_T_FMT;
+      break;
+    case ERA_T_FMT:
+      /* The %EX conversion in strftime behaves like %X if the locale does not
+         have an alternative time format.  */
+      item = T_FMT;
+      break;
+    case ALT_DIGITS:
+      /* The format is not standardized.  In glibc it is a sequence of 10
+         strings, appended in memory.  */
+      return "\0\0\0\0\0\0\0\0\0\0";
+# endif
+# if GNULIB_defined_YESEXPR || !FUNC_NL_LANGINFO_YESEXPR_WORKS
+    case YESEXPR:
+      return "^[yY]";
+    case NOEXPR:
+      return "^[nN]";
+# endif
+    default:
+      break;
+    }
+  return nl_langinfo (item);
+}
+
+#else
+
+/* Provide nl_langinfo from scratch.  */
+
+# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+
+/* Native Windows platforms.  */
+
+#  define WIN32_LEAN_AND_MEAN  /* avoid including junk */
+#  include <windows.h>
+
+#  include <stdio.h>
+
+# else
+
+/* An old Unix platform without locales, such as Linux libc5 or BeOS.  */
+
+# endif
+
+# include <locale.h>
+
+char *
+nl_langinfo (nl_item item)
+{
+  switch (item)
+    {
+    /* nl_langinfo items of the LC_CTYPE category */
+    case CODESET:
+# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+      {
+        static char buf[2 + 10 + 1];
+
+        /* Woe32 has a function returning the locale's codepage as a number.  */
+        sprintf (buf, "CP%u", GetACP ());
+        return buf;
+      }
+# elif defined __BEOS__
+      return "UTF-8";
+# else
+      return "ISO-8859-1";
+# endif
+    /* nl_langinfo items of the LC_NUMERIC category */
+    case RADIXCHAR:
+      return localeconv () ->decimal_point;
+    case THOUSEP:
+      return localeconv () ->thousands_sep;
+    /* nl_langinfo items of the LC_TIME category.
+       TODO: Really use the locale.  */
+    case D_T_FMT:
+    case ERA_D_T_FMT:
+      return "%a %b %e %H:%M:%S %Y";
+    case D_FMT:
+    case ERA_D_FMT:
+      return "%m/%d/%y";
+    case T_FMT:
+    case ERA_T_FMT:
+      return "%H:%M:%S";
+    case T_FMT_AMPM:
+      return "%I:%M:%S %p";
+    case AM_STR:
+      return "AM";
+    case PM_STR:
+      return "PM";
+    case DAY_1:
+      return "Sunday";
+    case DAY_2:
+      return "Monday";
+    case DAY_3:
+      return "Tuesday";
+    case DAY_4:
+      return "Wednesday";
+    case DAY_5:
+      return "Thursday";
+    case DAY_6:
+      return "Friday";
+    case DAY_7:
+      return "Saturday";
+    case ABDAY_1:
+      return "Sun";
+    case ABDAY_2:
+      return "Mon";
+    case ABDAY_3:
+      return "Tue";
+    case ABDAY_4:
+      return "Wed";
+    case ABDAY_5:
+      return "Thu";
+    case ABDAY_6:
+      return "Fri";
+    case ABDAY_7:
+      return "Sat";
+    case MON_1:
+      return "January";
+    case MON_2:
+      return "February";
+    case MON_3:
+      return "March";
+    case MON_4:
+      return "April";
+    case MON_5:
+      return "May";
+    case MON_6:
+      return "June";
+    case MON_7:
+      return "July";
+    case MON_8:
+      return "August";
+    case MON_9:
+      return "September";
+    case MON_10:
+      return "October";
+    case MON_11:
+      return "November";
+    case MON_12:
+      return "December";
+    case ABMON_1:
+      return "Jan";
+    case ABMON_2:
+      return "Feb";
+    case ABMON_3:
+      return "Mar";
+    case ABMON_4:
+      return "Apr";
+    case ABMON_5:
+      return "May";
+    case ABMON_6:
+      return "Jun";
+    case ABMON_7:
+      return "Jul";
+    case ABMON_8:
+      return "Aug";
+    case ABMON_9:
+      return "Sep";
+    case ABMON_10:
+      return "Oct";
+    case ABMON_11:
+      return "Nov";
+    case ABMON_12:
+      return "Dec";
+    case ERA:
+      return "";
+    case ALT_DIGITS:
+      return "\0\0\0\0\0\0\0\0\0\0";
+    /* nl_langinfo items of the LC_MONETARY category
+       TODO: Really use the locale. */
+    case CRNCYSTR:
+      return "-";
+    /* nl_langinfo items of the LC_MESSAGES category
+       TODO: Really use the locale. */
+    case YESEXPR:
+      return "^[yY]";
+    case NOEXPR:
+      return "^[nN]";
+    default:
+      return "";
+    }
+}
+
+#endif
diff --git a/lib/pathmax.h b/lib/pathmax.h
new file mode 100644 (file)
index 0000000..0445cd9
--- /dev/null
@@ -0,0 +1,50 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Define PATH_MAX somehow.  Requires sys/types.h.
+   Copyright (C) 1992, 1999, 2001, 2003, 2005, 2009-2011 Free Software
+   Foundation, 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; either version 3, 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.  */
+
+#ifndef _PATHMAX_H
+# define _PATHMAX_H
+
+# include <unistd.h>
+
+# include <limits.h>
+
+# ifndef _POSIX_PATH_MAX
+#  define _POSIX_PATH_MAX 256
+# endif
+
+# if !defined PATH_MAX && defined _PC_PATH_MAX && defined HAVE_PATHCONF
+#  define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 \
+                    : pathconf ("/", _PC_PATH_MAX))
+# endif
+
+/* Don't include sys/param.h if it already has been.  */
+# if defined HAVE_SYS_PARAM_H && !defined PATH_MAX && !defined MAXPATHLEN
+#  include <sys/param.h>
+# endif
+
+# if !defined PATH_MAX && defined MAXPATHLEN
+#  define PATH_MAX MAXPATHLEN
+# endif
+
+# ifndef PATH_MAX
+#  define PATH_MAX _POSIX_PATH_MAX
+# endif
+
+#endif /* _PATHMAX_H */
diff --git a/lib/progname.c b/lib/progname.c
new file mode 100644 (file)
index 0000000..2465748
--- /dev/null
@@ -0,0 +1,92 @@
+/* Program name management.
+   Copyright (C) 2001-2003, 2005-2011 Free Software Foundation, Inc.
+   Written by Bruno Haible <bruno@clisp.org>, 2001.
+
+   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 <http://www.gnu.org/licenses/>.  */
+
+
+#include <config.h>
+
+/* Specification.  */
+#undef ENABLE_RELOCATABLE /* avoid defining set_program_name as a macro */
+#include "progname.h"
+
+#include <errno.h> /* get program_invocation_name declaration */
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+
+/* String containing name the program is called with.
+   To be initialized by main().  */
+const char *program_name = NULL;
+
+/* Set program_name, based on argv[0].
+   argv0 must be a string allocated with indefinite extent, and must not be
+   modified after this call.  */
+void
+set_program_name (const char *argv0)
+{
+  /* libtool creates a temporary executable whose name is sometimes prefixed
+     with "lt-" (depends on the platform).  It also makes argv[0] absolute.
+     But the name of the temporary executable is a detail that should not be
+     visible to the end user and to the test suite.
+     Remove this "<dirname>/.libs/" or "<dirname>/.libs/lt-" prefix here.  */
+  const char *slash;
+  const char *base;
+
+  /* Sanity check.  POSIX requires the invoking process to pass a non-NULL
+     argv[0].  */
+  if (argv0 == NULL)
+    {
+      /* It's a bug in the invoking program.  Help diagnosing it.  */
+      fputs ("A NULL argv[0] was passed through an exec system call.\n",
+             stderr);
+      abort ();
+    }
+
+  slash = strrchr (argv0, '/');
+  base = (slash != NULL ? slash + 1 : argv0);
+  if (base - argv0 >= 7 && strncmp (base - 7, "/.libs/", 7) == 0)
+    {
+      argv0 = base;
+      if (strncmp (base, "lt-", 3) == 0)
+        {
+          argv0 = base + 3;
+          /* On glibc systems, remove the "lt-" prefix from the variable
+             program_invocation_short_name.  */
+#if HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME
+          program_invocation_short_name = (char *) argv0;
+#endif
+        }
+    }
+
+  /* But don't strip off a leading <dirname>/ in general, because when the user
+     runs
+         /some/hidden/place/bin/cp foo foo
+     he should get the error message
+         /some/hidden/place/bin/cp: `foo' and `foo' are the same file
+     not
+         cp: `foo' and `foo' are the same file
+   */
+
+  program_name = argv0;
+
+  /* On glibc systems, the error() function comes from libc and uses the
+     variable program_invocation_name, not program_name.  So set this variable
+     as well.  */
+#if HAVE_DECL_PROGRAM_INVOCATION_NAME
+  program_invocation_name = (char *) argv0;
+#endif
+}
diff --git a/lib/progname.h b/lib/progname.h
new file mode 100644 (file)
index 0000000..0844066
--- /dev/null
@@ -0,0 +1,62 @@
+/* Program name management.
+   Copyright (C) 2001-2004, 2006, 2009-2011 Free Software Foundation, Inc.
+   Written by Bruno Haible <bruno@clisp.org>, 2001.
+
+   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 <http://www.gnu.org/licenses/>.  */
+
+#ifndef _PROGNAME_H
+#define _PROGNAME_H
+
+/* Programs using this file should do the following in main():
+     set_program_name (argv[0]);
+ */
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* String containing name the program is called with.  */
+extern const char *program_name;
+
+/* Set program_name, based on argv[0].
+   argv0 must be a string allocated with indefinite extent, and must not be
+   modified after this call.  */
+extern void set_program_name (const char *argv0);
+
+#if ENABLE_RELOCATABLE
+
+/* Set program_name, based on argv[0], and original installation prefix and
+   directory, for relocatability.  */
+extern void set_program_name_and_installdir (const char *argv0,
+                                             const char *orig_installprefix,
+                                             const char *orig_installdir);
+#undef set_program_name
+#define set_program_name(ARG0) \
+  set_program_name_and_installdir (ARG0, INSTALLPREFIX, INSTALLDIR)
+
+/* Return the full pathname of the current executable, based on the earlier
+   call to set_program_name_and_installdir.  Return NULL if unknown.  */
+extern char *get_full_program_name (void);
+
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* _PROGNAME_H */
diff --git a/lib/quote.c b/lib/quote.c
new file mode 100644 (file)
index 0000000..1989c8c
--- /dev/null
@@ -0,0 +1,40 @@
+/* quote.c - quote arguments for output
+
+   Copyright (C) 1998-2001, 2003, 2005-2006, 2009-2011 Free Software
+   Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+/* Written by Paul Eggert <eggert@twinsun.com> */
+
+#include <config.h>
+
+#include "quotearg.h"
+#include "quote.h"
+
+/* Return an unambiguous printable representation of NAME,
+   allocated in slot N, suitable for diagnostics.  */
+char const *
+quote_n (int n, char const *name)
+{
+  return quotearg_n_style (n, locale_quoting_style, name);
+}
+
+/* Return an unambiguous printable representation of NAME,
+   suitable for diagnostics.  */
+char const *
+quote (char const *name)
+{
+  return quote_n (0, name);
+}
diff --git a/lib/quote.h b/lib/quote.h
new file mode 100644 (file)
index 0000000..d0acb51
--- /dev/null
@@ -0,0 +1,20 @@
+/* quote.h - prototypes for quote.c
+
+   Copyright (C) 1998-2001, 2003, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+
+char const *quote_n (int n, char const *name);
+char const *quote (char const *name);
diff --git a/lib/quotearg.c b/lib/quotearg.c
new file mode 100644 (file)
index 0000000..da8ba1e
--- /dev/null
@@ -0,0 +1,888 @@
+/* quotearg.c - quote arguments for output
+
+   Copyright (C) 1998-2002, 2004-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+/* Written by Paul Eggert <eggert@twinsun.com> */
+
+#include <config.h>
+
+#include "quotearg.h"
+
+#include "xalloc.h"
+
+#include <ctype.h>
+#include <errno.h>
+#include <limits.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+#include <wctype.h>
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+#define N_(msgid) msgid
+
+#ifndef SIZE_MAX
+# define SIZE_MAX ((size_t) -1)
+#endif
+
+#define INT_BITS (sizeof (int) * CHAR_BIT)
+
+struct quoting_options
+{
+  /* Basic quoting style.  */
+  enum quoting_style style;
+
+  /* Additional flags.  Bitwise combination of enum quoting_flags.  */
+  int flags;
+
+  /* Quote the characters indicated by this bit vector even if the
+     quoting style would not normally require them to be quoted.  */
+  unsigned int quote_these_too[(UCHAR_MAX / INT_BITS) + 1];
+
+  /* The left quote for custom_quoting_style.  */
+  char const *left_quote;
+
+  /* The right quote for custom_quoting_style.  */
+  char const *right_quote;
+};
+
+/* Names of quoting styles.  */
+char const *const quoting_style_args[] =
+{
+  "literal",
+  "shell",
+  "shell-always",
+  "c",
+  "c-maybe",
+  "escape",
+  "locale",
+  "clocale",
+  0
+};
+
+/* Correspondences to quoting style names.  */
+enum quoting_style const quoting_style_vals[] =
+{
+  literal_quoting_style,
+  shell_quoting_style,
+  shell_always_quoting_style,
+  c_quoting_style,
+  c_maybe_quoting_style,
+  escape_quoting_style,
+  locale_quoting_style,
+  clocale_quoting_style
+};
+
+/* The default quoting options.  */
+static struct quoting_options default_quoting_options;
+
+/* Allocate a new set of quoting options, with contents initially identical
+   to O if O is not null, or to the default if O is null.
+   It is the caller's responsibility to free the result.  */
+struct quoting_options *
+clone_quoting_options (struct quoting_options *o)
+{
+  int e = errno;
+  struct quoting_options *p = xmemdup (o ? o : &default_quoting_options,
+                                       sizeof *o);
+  errno = e;
+  return p;
+}
+
+/* Get the value of O's quoting style.  If O is null, use the default.  */
+enum quoting_style
+get_quoting_style (struct quoting_options *o)
+{
+  return (o ? o : &default_quoting_options)->style;
+}
+
+/* In O (or in the default if O is null),
+   set the value of the quoting style to S.  */
+void
+set_quoting_style (struct quoting_options *o, enum quoting_style s)
+{
+  (o ? o : &default_quoting_options)->style = s;
+}
+
+/* In O (or in the default if O is null),
+   set the value of the quoting options for character C to I.
+   Return the old value.  Currently, the only values defined for I are
+   0 (the default) and 1 (which means to quote the character even if
+   it would not otherwise be quoted).  */
+int
+set_char_quoting (struct quoting_options *o, char c, int i)
+{
+  unsigned char uc = c;
+  unsigned int *p =
+    (o ? o : &default_quoting_options)->quote_these_too + uc / INT_BITS;
+  int shift = uc % INT_BITS;
+  int r = (*p >> shift) & 1;
+  *p ^= ((i & 1) ^ r) << shift;
+  return r;
+}
+
+/* In O (or in the default if O is null),
+   set the value of the quoting options flag to I, which can be a
+   bitwise combination of enum quoting_flags, or 0 for default
+   behavior.  Return the old value.  */
+int
+set_quoting_flags (struct quoting_options *o, int i)
+{
+  int r;
+  if (!o)
+    o = &default_quoting_options;
+  r = o->flags;
+  o->flags = i;
+  return r;
+}
+
+void
+set_custom_quoting (struct quoting_options *o,
+                    char const *left_quote, char const *right_quote)
+{
+  if (!o)
+    o = &default_quoting_options;
+  o->style = custom_quoting_style;
+  if (!left_quote || !right_quote)
+    abort ();
+  o->left_quote = left_quote;
+  o->right_quote = right_quote;
+}
+
+/* Return quoting options for STYLE, with no extra quoting.  */
+static struct quoting_options
+quoting_options_from_style (enum quoting_style style)
+{
+  struct quoting_options o = { 0 };
+  if (style == custom_quoting_style)
+    abort ();
+  o.style = style;
+  return o;
+}
+
+/* MSGID approximates a quotation mark.  Return its translation if it
+   has one; otherwise, return either it or "\"", depending on S.  */
+static char const *
+gettext_quote (char const *msgid, enum quoting_style s)
+{
+  char const *translation = _(msgid);
+  if (translation == msgid && s == clocale_quoting_style)
+    translation = "\"";
+  return translation;
+}
+
+/* Place into buffer BUFFER (of size BUFFERSIZE) a quoted version of
+   argument ARG (of size ARGSIZE), using QUOTING_STYLE, FLAGS, and
+   QUOTE_THESE_TOO to control quoting.
+   Terminate the output with a null character, and return the written
+   size of the output, not counting the terminating null.
+   If BUFFERSIZE is too small to store the output string, return the
+   value that would have been returned had BUFFERSIZE been large enough.
+   If ARGSIZE is SIZE_MAX, use the string length of the argument for ARGSIZE.
+
+   This function acts like quotearg_buffer (BUFFER, BUFFERSIZE, ARG,
+   ARGSIZE, O), except it breaks O into its component pieces and is
+   not careful about errno.  */
+
+static size_t
+quotearg_buffer_restyled (char *buffer, size_t buffersize,
+                          char const *arg, size_t argsize,
+                          enum quoting_style quoting_style, int flags,
+                          unsigned int const *quote_these_too,
+                          char const *left_quote,
+                          char const *right_quote)
+{
+  size_t i;
+  size_t len = 0;
+  char const *quote_string = 0;
+  size_t quote_string_len = 0;
+  bool backslash_escapes = false;
+  bool unibyte_locale = MB_CUR_MAX == 1;
+  bool elide_outer_quotes = (flags & QA_ELIDE_OUTER_QUOTES) != 0;
+
+#define STORE(c) \
+    do \
+      { \
+        if (len < buffersize) \
+          buffer[len] = (c); \
+        len++; \
+      } \
+    while (0)
+
+  switch (quoting_style)
+    {
+    case c_maybe_quoting_style:
+      quoting_style = c_quoting_style;
+      elide_outer_quotes = true;
+      /* Fall through.  */
+    case c_quoting_style:
+      if (!elide_outer_quotes)
+        STORE ('"');
+      backslash_escapes = true;
+      quote_string = "\"";
+      quote_string_len = 1;
+      break;
+
+    case escape_quoting_style:
+      backslash_escapes = true;
+      elide_outer_quotes = false;
+      break;
+
+    case locale_quoting_style:
+    case clocale_quoting_style:
+    case custom_quoting_style:
+      {
+        if (quoting_style != custom_quoting_style)
+          {
+            /* TRANSLATORS:
+               Get translations for open and closing quotation marks.
+
+               The message catalog should translate "`" to a left
+               quotation mark suitable for the locale, and similarly for
+               "'".  If the catalog has no translation,
+               locale_quoting_style quotes `like this', and
+               clocale_quoting_style quotes "like this".
+
+               For example, an American English Unicode locale should
+               translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+               should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+               MARK).  A British English Unicode locale should instead
+               translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+               and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+
+               If you don't know what to put here, please see
+               <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+               and use glyphs suitable for your language.  */
+            left_quote = gettext_quote (N_("`"), quoting_style);
+            right_quote = gettext_quote (N_("'"), quoting_style);
+          }
+        if (!elide_outer_quotes)
+          for (quote_string = left_quote; *quote_string; quote_string++)
+            STORE (*quote_string);
+        backslash_escapes = true;
+        quote_string = right_quote;
+        quote_string_len = strlen (quote_string);
+      }
+      break;
+
+    case shell_quoting_style:
+      quoting_style = shell_always_quoting_style;
+      elide_outer_quotes = true;
+      /* Fall through.  */
+    case shell_always_quoting_style:
+      if (!elide_outer_quotes)
+        STORE ('\'');
+      quote_string = "'";
+      quote_string_len = 1;
+      break;
+
+    case literal_quoting_style:
+      elide_outer_quotes = false;
+      break;
+
+    default:
+      abort ();
+    }
+
+  for (i = 0;  ! (argsize == SIZE_MAX ? arg[i] == '\0' : i == argsize);  i++)
+    {
+      unsigned char c;
+      unsigned char esc;
+      bool is_right_quote = false;
+
+      if (backslash_escapes
+          && quote_string_len
+          && i + quote_string_len <= argsize
+          && memcmp (arg + i, quote_string, quote_string_len) == 0)
+        {
+          if (elide_outer_quotes)
+            goto force_outer_quoting_style;
+          is_right_quote = true;
+        }
+
+      c = arg[i];
+      switch (c)
+        {
+        case '\0':
+          if (backslash_escapes)
+            {
+              if (elide_outer_quotes)
+                goto force_outer_quoting_style;
+              STORE ('\\');
+              /* If quote_string were to begin with digits, we'd need to
+                 test for the end of the arg as well.  However, it's
+                 hard to imagine any locale that would use digits in
+                 quotes, and set_custom_quoting is documented not to
+                 accept them.  */
+              if (i + 1 < argsize && '0' <= arg[i + 1] && arg[i + 1] <= '9')
+                {
+                  STORE ('0');
+                  STORE ('0');
+                }
+              c = '0';
+              /* We don't have to worry that this last '0' will be
+                 backslash-escaped because, again, quote_string should
+                 not start with it and because quote_these_too is
+                 documented as not accepting it.  */
+            }
+          else if (flags & QA_ELIDE_NULL_BYTES)
+            continue;
+          break;
+
+        case '?':
+          switch (quoting_style)
+            {
+            case shell_always_quoting_style:
+              if (elide_outer_quotes)
+                goto force_outer_quoting_style;
+              break;
+
+            case c_quoting_style:
+              if ((flags & QA_SPLIT_TRIGRAPHS)
+                  && i + 2 < argsize && arg[i + 1] == '?')
+                switch (arg[i + 2])
+                  {
+                  case '!': case '\'':
+                  case '(': case ')': case '-': case '/':
+                  case '<': case '=': case '>':
+                    /* Escape the second '?' in what would otherwise be
+                       a trigraph.  */
+                    if (elide_outer_quotes)
+                      goto force_outer_quoting_style;
+                    c = arg[i + 2];
+                    i += 2;
+                    STORE ('?');
+                    STORE ('"');
+                    STORE ('"');
+                    STORE ('?');
+                    break;
+
+                  default:
+                    break;
+                  }
+              break;
+
+            default:
+              break;
+            }
+          break;
+
+        case '\a': esc = 'a'; goto c_escape;
+        case '\b': esc = 'b'; goto c_escape;
+        case '\f': esc = 'f'; goto c_escape;
+        case '\n': esc = 'n'; goto c_and_shell_escape;
+        case '\r': esc = 'r'; goto c_and_shell_escape;
+        case '\t': esc = 't'; goto c_and_shell_escape;
+        case '\v': esc = 'v'; goto c_escape;
+        case '\\': esc = c;
+          /* No need to escape the escape if we are trying to elide
+             outer quotes and nothing else is problematic.  */
+          if (backslash_escapes && elide_outer_quotes && quote_string_len)
+            goto store_c;
+
+        c_and_shell_escape:
+          if (quoting_style == shell_always_quoting_style
+              && elide_outer_quotes)
+            goto force_outer_quoting_style;
+          /* Fall through.  */
+        c_escape:
+          if (backslash_escapes)
+            {
+              c = esc;
+              goto store_escape;
+            }
+          break;
+
+        case '{': case '}': /* sometimes special if isolated */
+          if (! (argsize == SIZE_MAX ? arg[1] == '\0' : argsize == 1))
+            break;
+          /* Fall through.  */
+        case '#': case '~':
+          if (i != 0)
+            break;
+          /* Fall through.  */
+        case ' ':
+        case '!': /* special in bash */
+        case '"': case '$': case '&':
+        case '(': case ')': case '*': case ';':
+        case '<':
+        case '=': /* sometimes special in 0th or (with "set -k") later args */
+        case '>': case '[':
+        case '^': /* special in old /bin/sh, e.g. SunOS 4.1.4 */
+        case '`': case '|':
+          /* A shell special character.  In theory, '$' and '`' could
+             be the first bytes of multibyte characters, which means
+             we should check them with mbrtowc, but in practice this
+             doesn't happen so it's not worth worrying about.  */
+          if (quoting_style == shell_always_quoting_style
+              && elide_outer_quotes)
+            goto force_outer_quoting_style;
+          break;
+
+        case '\'':
+          if (quoting_style == shell_always_quoting_style)
+            {
+              if (elide_outer_quotes)
+                goto force_outer_quoting_style;
+              STORE ('\'');
+              STORE ('\\');
+              STORE ('\'');
+            }
+          break;
+
+        case '%': case '+': case ',': case '-': case '.': case '/':
+        case '0': case '1': case '2': case '3': case '4': case '5':
+        case '6': case '7': case '8': case '9': case ':':
+        case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+        case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
+        case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
+        case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
+        case 'Y': case 'Z': case ']': case '_': case 'a': case 'b':
+        case 'c': case 'd': case 'e': case 'f': case 'g': case 'h':
+        case 'i': case 'j': case 'k': case 'l': case 'm': case 'n':
+        case 'o': case 'p': case 'q': case 'r': case 's': case 't':
+        case 'u': case 'v': case 'w': case 'x': case 'y': case 'z':
+          /* These characters don't cause problems, no matter what the
+             quoting style is.  They cannot start multibyte sequences.
+             A digit or a special letter would cause trouble if it
+             appeared at the beginning of quote_string because we'd then
+             escape by prepending a backslash.  However, it's hard to
+             imagine any locale that would use digits or letters as
+             quotes, and set_custom_quoting is documented not to accept
+             them.  Also, a digit or a special letter would cause
+             trouble if it appeared in quote_these_too, but that's also
+             documented as not accepting them.  */
+          break;
+
+        default:
+          /* If we have a multibyte sequence, copy it until we reach
+             its end, find an error, or come back to the initial shift
+             state.  For C-like styles, if the sequence has
+             unprintable characters, escape the whole sequence, since
+             we can't easily escape single characters within it.  */
+          {
+            /* Length of multibyte sequence found so far.  */
+            size_t m;
+
+            bool printable;
+
+            if (unibyte_locale)
+              {
+                m = 1;
+                printable = isprint (c) != 0;
+              }
+            else
+              {
+                mbstate_t mbstate;
+                memset (&mbstate, 0, sizeof mbstate);
+
+                m = 0;
+                printable = true;
+                if (argsize == SIZE_MAX)
+                  argsize = strlen (arg);
+
+                do
+                  {
+                    wchar_t w;
+                    size_t bytes = mbrtowc (&w, &arg[i + m],
+                                            argsize - (i + m), &mbstate);
+                    if (bytes == 0)
+                      break;
+                    else if (bytes == (size_t) -1)
+                      {
+                        printable = false;
+                        break;
+                      }
+                    else if (bytes == (size_t) -2)
+                      {
+                        printable = false;
+                        while (i + m < argsize && arg[i + m])
+                          m++;
+                        break;
+                      }
+                    else
+                      {
+                        /* Work around a bug with older shells that "see" a '\'
+                           that is really the 2nd byte of a multibyte character.
+                           In practice the problem is limited to ASCII
+                           chars >= '@' that are shell special chars.  */
+                        if ('[' == 0x5b && elide_outer_quotes
+                            && quoting_style == shell_always_quoting_style)
+                          {
+                            size_t j;
+                            for (j = 1; j < bytes; j++)
+                              switch (arg[i + m + j])
+                                {
+                                case '[': case '\\': case '^':
+                                case '`': case '|':
+                                  goto force_outer_quoting_style;
+
+                                default:
+                                  break;
+                                }
+                          }
+
+                        if (! iswprint (w))
+                          printable = false;
+                        m += bytes;
+                      }
+                  }
+                while (! mbsinit (&mbstate));
+              }
+
+            if (1 < m || (backslash_escapes && ! printable))
+              {
+                /* Output a multibyte sequence, or an escaped
+                   unprintable unibyte character.  */
+                size_t ilim = i + m;
+
+                for (;;)
+                  {
+                    if (backslash_escapes && ! printable)
+                      {
+                        if (elide_outer_quotes)
+                          goto force_outer_quoting_style;
+                        STORE ('\\');
+                        STORE ('0' + (c >> 6));
+                        STORE ('0' + ((c >> 3) & 7));
+                        c = '0' + (c & 7);
+                      }
+                    else if (is_right_quote)
+                      {
+                        STORE ('\\');
+                        is_right_quote = false;
+                      }
+                    if (ilim <= i + 1)
+                      break;
+                    STORE (c);
+                    c = arg[++i];
+                  }
+
+                goto store_c;
+              }
+          }
+        }
+
+      if (! ((backslash_escapes || elide_outer_quotes)
+             && quote_these_too
+             && quote_these_too[c / INT_BITS] & (1 << (c % INT_BITS)))
+          && !is_right_quote)
+        goto store_c;
+
+    store_escape:
+      if (elide_outer_quotes)
+        goto force_outer_quoting_style;
+      STORE ('\\');
+
+    store_c:
+      STORE (c);
+    }
+
+  if (len == 0 && quoting_style == shell_always_quoting_style
+      && elide_outer_quotes)
+    goto force_outer_quoting_style;
+
+  if (quote_string && !elide_outer_quotes)
+    for (; *quote_string; quote_string++)
+      STORE (*quote_string);
+
+  if (len < buffersize)
+    buffer[len] = '\0';
+  return len;
+
+ force_outer_quoting_style:
+  /* Don't reuse quote_these_too, since the addition of outer quotes
+     sufficiently quotes the specified characters.  */
+  return quotearg_buffer_restyled (buffer, buffersize, arg, argsize,
+                                   quoting_style,
+                                   flags & ~QA_ELIDE_OUTER_QUOTES, NULL,
+                                   left_quote, right_quote);
+}
+
+/* Place into buffer BUFFER (of size BUFFERSIZE) a quoted version of
+   argument ARG (of size ARGSIZE), using O to control quoting.
+   If O is null, use the default.
+   Terminate the output with a null character, and return the written
+   size of the output, not counting the terminating null.
+   If BUFFERSIZE is too small to store the output string, return the
+   value that would have been returned had BUFFERSIZE been large enough.
+   If ARGSIZE is SIZE_MAX, use the string length of the argument for
+   ARGSIZE.  */
+size_t
+quotearg_buffer (char *buffer, size_t buffersize,
+                 char const *arg, size_t argsize,
+                 struct quoting_options const *o)
+{
+  struct quoting_options const *p = o ? o : &default_quoting_options;
+  int e = errno;
+  size_t r = quotearg_buffer_restyled (buffer, buffersize, arg, argsize,
+                                       p->style, p->flags, p->quote_these_too,
+                                       p->left_quote, p->right_quote);
+  errno = e;
+  return r;
+}
+
+/* Equivalent to quotearg_alloc (ARG, ARGSIZE, NULL, O).  */
+char *
+quotearg_alloc (char const *arg, size_t argsize,
+                struct quoting_options const *o)
+{
+  return quotearg_alloc_mem (arg, argsize, NULL, o);
+}
+
+/* Like quotearg_buffer (..., ARG, ARGSIZE, O), except return newly
+   allocated storage containing the quoted string, and store the
+   resulting size into *SIZE, if non-NULL.  The result can contain
+   embedded null bytes only if ARGSIZE is not SIZE_MAX, SIZE is not
+   NULL, and set_quoting_flags has not set the null byte elision
+   flag.  */
+char *
+quotearg_alloc_mem (char const *arg, size_t argsize, size_t *size,
+                    struct quoting_options const *o)
+{
+  struct quoting_options const *p = o ? o : &default_quoting_options;
+  int e = errno;
+  /* Elide embedded null bytes if we can't return a size.  */
+  int flags = p->flags | (size ? 0 : QA_ELIDE_NULL_BYTES);
+  size_t bufsize = quotearg_buffer_restyled (0, 0, arg, argsize, p->style,
+                                             flags, p->quote_these_too,
+                                             p->left_quote,
+                                             p->right_quote) + 1;
+  char *buf = xcharalloc (bufsize);
+  quotearg_buffer_restyled (buf, bufsize, arg, argsize, p->style, flags,
+                            p->quote_these_too,
+                            p->left_quote, p->right_quote);
+  errno = e;
+  if (size)
+    *size = bufsize - 1;
+  return buf;
+}
+
+/* A storage slot with size and pointer to a value.  */
+struct slotvec
+{
+  size_t size;
+  char *val;
+};
+
+/* Preallocate a slot 0 buffer, so that the caller can always quote
+   one small component of a "memory exhausted" message in slot 0.  */
+static char slot0[256];
+static unsigned int nslots = 1;
+static struct slotvec slotvec0 = {sizeof slot0, slot0};
+static struct slotvec *slotvec = &slotvec0;
+
+void
+quotearg_free (void)
+{
+  struct slotvec *sv = slotvec;
+  unsigned int i;
+  for (i = 1; i < nslots; i++)
+    free (sv[i].val);
+  if (sv[0].val != slot0)
+    {
+      free (sv[0].val);
+      slotvec0.size = sizeof slot0;
+      slotvec0.val = slot0;
+    }
+  if (sv != &slotvec0)
+    {
+      free (sv);
+      slotvec = &slotvec0;
+    }
+  nslots = 1;
+}
+
+/* Use storage slot N to return a quoted version of argument ARG.
+   ARG is of size ARGSIZE, but if that is SIZE_MAX, ARG is a
+   null-terminated string.
+   OPTIONS specifies the quoting options.
+   The returned value points to static storage that can be
+   reused by the next call to this function with the same value of N.
+   N must be nonnegative.  N is deliberately declared with type "int"
+   to allow for future extensions (using negative values).  */
+static char *
+quotearg_n_options (int n, char const *arg, size_t argsize,
+                    struct quoting_options const *options)
+{
+  int e = errno;
+
+  unsigned int n0 = n;
+  struct slotvec *sv = slotvec;
+
+  if (n < 0)
+    abort ();
+
+  if (nslots <= n0)
+    {
+      /* FIXME: technically, the type of n1 should be `unsigned int',
+         but that evokes an unsuppressible warning from gcc-4.0.1 and
+         older.  If gcc ever provides an option to suppress that warning,
+         revert to the original type, so that the test in xalloc_oversized
+         is once again performed only at compile time.  */
+      size_t n1 = n0 + 1;
+      bool preallocated = (sv == &slotvec0);
+
+      if (xalloc_oversized (n1, sizeof *sv))
+        xalloc_die ();
+
+      slotvec = sv = xrealloc (preallocated ? NULL : sv, n1 * sizeof *sv);
+      if (preallocated)
+        *sv = slotvec0;
+      memset (sv + nslots, 0, (n1 - nslots) * sizeof *sv);
+      nslots = n1;
+    }
+
+  {
+    size_t size = sv[n].size;
+    char *val = sv[n].val;
+    /* Elide embedded null bytes since we don't return a size.  */
+    int flags = options->flags | QA_ELIDE_NULL_BYTES;
+    size_t qsize = quotearg_buffer_restyled (val, size, arg, argsize,
+                                             options->style, flags,
+                                             options->quote_these_too,
+                                             options->left_quote,
+                                             options->right_quote);
+
+    if (size <= qsize)
+      {
+        sv[n].size = size = qsize + 1;
+        if (val != slot0)
+          free (val);
+        sv[n].val = val = xcharalloc (size);
+        quotearg_buffer_restyled (val, size, arg, argsize, options->style,
+                                  flags, options->quote_these_too,
+                                  options->left_quote,
+                                  options->right_quote);
+      }
+
+    errno = e;
+    return val;
+  }
+}
+
+char *
+quotearg_n (int n, char const *arg)
+{
+  return quotearg_n_options (n, arg, SIZE_MAX, &default_quoting_options);
+}
+
+char *
+quotearg_n_mem (int n, char const *arg, size_t argsize)
+{
+  return quotearg_n_options (n, arg, argsize, &default_quoting_options);
+}
+
+char *
+quotearg (char const *arg)
+{
+  return quotearg_n (0, arg);
+}
+
+char *
+quotearg_mem (char const *arg, size_t argsize)
+{
+  return quotearg_n_mem (0, arg, argsize);
+}
+
+char *
+quotearg_n_style (int n, enum quoting_style s, char const *arg)
+{
+  struct quoting_options const o = quoting_options_from_style (s);
+  return quotearg_n_options (n, arg, SIZE_MAX, &o);
+}
+
+char *
+quotearg_n_style_mem (int n, enum quoting_style s,
+                      char const *arg, size_t argsize)
+{
+  struct quoting_options const o = quoting_options_from_style (s);
+  return quotearg_n_options (n, arg, argsize, &o);
+}
+
+char *
+quotearg_style (enum quoting_style s, char const *arg)
+{
+  return quotearg_n_style (0, s, arg);
+}
+
+char *
+quotearg_style_mem (enum quoting_style s, char const *arg, size_t argsize)
+{
+  return quotearg_n_style_mem (0, s, arg, argsize);
+}
+
+char *
+quotearg_char_mem (char const *arg, size_t argsize, char ch)
+{
+  struct quoting_options options;
+  options = default_quoting_options;
+  set_char_quoting (&options, ch, 1);
+  return quotearg_n_options (0, arg, argsize, &options);
+}
+
+char *
+quotearg_char (char const *arg, char ch)
+{
+  return quotearg_char_mem (arg, SIZE_MAX, ch);
+}
+
+char *
+quotearg_colon (char const *arg)
+{
+  return quotearg_char (arg, ':');
+}
+
+char *
+quotearg_colon_mem (char const *arg, size_t argsize)
+{
+  return quotearg_char_mem (arg, argsize, ':');
+}
+
+char *
+quotearg_n_custom (int n, char const *left_quote,
+                   char const *right_quote, char const *arg)
+{
+  return quotearg_n_custom_mem (n, left_quote, right_quote, arg,
+                                SIZE_MAX);
+}
+
+char *
+quotearg_n_custom_mem (int n, char const *left_quote,
+                       char const *right_quote,
+                       char const *arg, size_t argsize)
+{
+  struct quoting_options o = default_quoting_options;
+  set_custom_quoting (&o, left_quote, right_quote);
+  return quotearg_n_options (n, arg, argsize, &o);
+}
+
+char *
+quotearg_custom (char const *left_quote, char const *right_quote,
+                 char const *arg)
+{
+  return quotearg_n_custom (0, left_quote, right_quote, arg);
+}
+
+char *
+quotearg_custom_mem (char const *left_quote, char const *right_quote,
+                     char const *arg, size_t argsize)
+{
+  return quotearg_n_custom_mem (0, left_quote, right_quote, arg,
+                                argsize);
+}
diff --git a/lib/quotearg.h b/lib/quotearg.h
new file mode 100644 (file)
index 0000000..2756d76
--- /dev/null
@@ -0,0 +1,389 @@
+/* quotearg.h - quote arguments for output
+
+   Copyright (C) 1998-2002, 2004, 2006, 2008-2011 Free Software Foundation,
+   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; 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 <http://www.gnu.org/licenses/>.  */
+
+/* Written by Paul Eggert <eggert@twinsun.com> */
+
+#ifndef QUOTEARG_H_
+# define QUOTEARG_H_ 1
+
+# include <stddef.h>
+
+/* Basic quoting styles.  For each style, an example is given on the
+   input strings "simple", "\0 \t\n'\"\033?""?/\\", and "a:b", using
+   quotearg_buffer, quotearg_mem, and quotearg_colon_mem with that
+   style and the default flags and quoted characters.  Note that the
+   examples are shown here as valid C strings rather than what
+   displays on a terminal (with "??/" as a trigraph for "\\").  */
+enum quoting_style
+  {
+    /* Output names as-is (ls --quoting-style=literal).  Can result in
+       embedded null bytes if QA_ELIDE_NULL_BYTES is not in
+       effect.
+
+       quotearg_buffer:
+       "simple", "\0 \t\n'\"\033??/\\", "a:b"
+       quotearg:
+       "simple", " \t\n'\"\033??/\\", "a:b"
+       quotearg_colon:
+       "simple", " \t\n'\"\033??/\\", "a:b"
+    */
+    literal_quoting_style,
+
+    /* Quote names for the shell if they contain shell metacharacters
+       or would cause ambiguous output (ls --quoting-style=shell).
+       Can result in embedded null bytes if QA_ELIDE_NULL_BYTES is not
+       in effect.
+
+       quotearg_buffer:
+       "simple", "'\0 \t\n'\\''\"\033??/\\'", "a:b"
+       quotearg:
+       "simple", "' \t\n'\\''\"\033??/\\'", "a:b"
+       quotearg_colon:
+       "simple", "' \t\n'\\''\"\033??/\\'", "'a:b'"
+    */
+    shell_quoting_style,
+
+    /* Quote names for the shell, even if they would normally not
+       require quoting (ls --quoting-style=shell-always).  Can result
+       in embedded null bytes if QA_ELIDE_NULL_BYTES is not in effect.
+       Behaves like shell_quoting_style if QA_ELIDE_OUTER_QUOTES is in
+       effect.
+
+       quotearg_buffer:
+       "'simple'", "'\0 \t\n'\\''\"\033??/\\'", "'a:b'"
+       quotearg:
+       "'simple'", "' \t\n'\\''\"\033??/\\'", "'a:b'"
+       quotearg_colon:
+       "'simple'", "' \t\n'\\''\"\033??/\\'", "'a:b'"
+    */
+    shell_always_quoting_style,
+
+    /* Quote names as for a C language string (ls --quoting-style=c).
+       Behaves like c_maybe_quoting_style if QA_ELIDE_OUTER_QUOTES is
+       in effect.  Split into consecutive strings if
+       QA_SPLIT_TRIGRAPHS.
+
+       quotearg_buffer:
+       "\"simple\"", "\"\\0 \\t\\n'\\\"\\033??/\\\\\"", "\"a:b\""
+       quotearg:
+       "\"simple\"", "\"\\0 \\t\\n'\\\"\\033??/\\\\\"", "\"a:b\""
+       quotearg_colon:
+       "\"simple\"", "\"\\0 \\t\\n'\\\"\\033??/\\\\\"", "\"a\\:b\""
+    */
+    c_quoting_style,
+
+    /* Like c_quoting_style except omit the surrounding double-quote
+       characters if no quoted characters are encountered.
+
+       quotearg_buffer:
+       "simple", "\"\\0 \\t\\n'\\\"\\033??/\\\\\"", "a:b"
+       quotearg:
+       "simple", "\"\\0 \\t\\n'\\\"\\033??/\\\\\"", "a:b"
+       quotearg_colon:
+       "simple", "\"\\0 \\t\\n'\\\"\\033??/\\\\\"", "\"a:b\""
+    */
+    c_maybe_quoting_style,
+
+    /* Like c_quoting_style except always omit the surrounding
+       double-quote characters and ignore QA_SPLIT_TRIGRAPHS
+       (ls --quoting-style=escape).
+
+       quotearg_buffer:
+       "simple", "\\0 \\t\\n'\"\\033??/\\\\", "a:b"
+       quotearg:
+       "simple", "\\0 \\t\\n'\"\\033??/\\\\", "a:b"
+       quotearg_colon:
+       "simple", "\\0 \\t\\n'\"\\033??/\\\\", "a\\:b"
+    */
+    escape_quoting_style,
+
+    /* Like clocale_quoting_style, but quote `like this' instead of
+       "like this" in the default C locale (ls --quoting-style=locale).
+
+       LC_MESSAGES=C
+       quotearg_buffer:
+       "`simple'", "`\\0 \\t\\n\\'\"\\033??/\\\\'", "`a:b'"
+       quotearg:
+       "`simple'", "`\\0 \\t\\n\\'\"\\033??/\\\\'", "`a:b'"
+       quotearg_colon:
+       "`simple'", "`\\0 \\t\\n\\'\"\\033??/\\\\'", "`a\\:b'"
+
+       LC_MESSAGES=pt_PT.utf8
+       quotearg_buffer:
+       "\302\253simple\302\273",
+       "\302\253\\0 \\t\\n'\"\\033??/\\\\\302\253", "\302\253a:b\302\273"
+       quotearg:
+       "\302\253simple\302\273",
+       "\302\253\\0 \\t\\n'\"\\033??/\\\\\302\253", "\302\253a:b\302\273"
+       quotearg_colon:
+       "\302\253simple\302\273",
+       "\302\253\\0 \\t\\n'\"\\033??/\\\\\302\253", "\302\253a\\:b\302\273"
+    */
+    locale_quoting_style,
+
+    /* Like c_quoting_style except use quotation marks appropriate for
+       the locale and ignore QA_SPLIT_TRIGRAPHS
+       (ls --quoting-style=clocale).
+
+       LC_MESSAGES=C
+       quotearg_buffer:
+       "\"simple\"", "\"\\0 \\t\\n'\\\"\\033??/\\\\\"", "\"a:b\""
+       quotearg:
+       "\"simple\"", "\"\\0 \\t\\n'\\\"\\033??/\\\\\"", "\"a:b\""
+       quotearg_colon:
+       "\"simple\"", "\"\\0 \\t\\n'\\\"\\033??/\\\\\"", "\"a\\:b\""
+
+       LC_MESSAGES=pt_PT.utf8
+       quotearg_buffer:
+       "\302\253simple\302\273",
+       "\302\253\\0 \\t\\n'\"\\033??/\\\\\302\253", "\302\253a:b\302\273"
+       quotearg:
+       "\302\253simple\302\273",
+       "\302\253\\0 \\t\\n'\"\\033??/\\\\\302\253", "\302\253a:b\302\273"
+       quotearg_colon:
+       "\302\253simple\302\273",
+       "\302\253\\0 \\t\\n'\"\\033??/\\\\\302\253", "\302\253a\\:b\302\273"
+    */
+    clocale_quoting_style,
+
+    /* Like clocale_quoting_style except use the custom quotation marks
+       set by set_custom_quoting.  If custom quotation marks are not
+       set, the behavior is undefined.
+
+       left_quote = right_quote = "'"
+       quotearg_buffer:
+       "'simple'", "'\\0 \\t\\n\\'\"\\033??/\\\\'", "'a:b'"
+       quotearg:
+       "'simple'", "'\\0 \\t\\n\\'\"\\033??/\\\\'", "'a:b'"
+       quotearg_colon:
+       "'simple'", "'\\0 \\t\\n\\'\"\\033??/\\\\'", "'a\\:b'"
+
+       left_quote = "(" and right_quote = ")"
+       quotearg_buffer:
+       "(simple)", "(\\0 \\t\\n'\"\\033??/\\\\)", "(a:b)"
+       quotearg:
+       "(simple)", "(\\0 \\t\\n'\"\\033??/\\\\)", "(a:b)"
+       quotearg_colon:
+       "(simple)", "(\\0 \\t\\n'\"\\033??/\\\\)", "(a\\:b)"
+
+       left_quote = ":" and right_quote = " "
+       quotearg_buffer:
+       ":simple ", ":\\0\\ \\t\\n'\"\\033??/\\\\ ", ":a:b "
+       quotearg:
+       ":simple ", ":\\0\\ \\t\\n'\"\\033??/\\\\ ", ":a:b "
+       quotearg_colon:
+       ":simple ", ":\\0\\ \\t\\n'\"\\033??/\\\\ ", ":a\\:b "
+
+       left_quote = "\"'" and right_quote = "'\""
+       Notice that this is treated as a single level of quotes or two
+       levels where the outer quote need not be escaped within the inner
+       quotes.  For two levels where the outer quote must be escaped
+       within the inner quotes, you must use separate quotearg
+       invocations.
+       quotearg_buffer:
+       "\"'simple'\"", "\"'\\0 \\t\\n\\'\"\\033??/\\\\'\"", "\"'a:b'\""
+       quotearg:
+       "\"'simple'\"", "\"'\\0 \\t\\n\\'\"\\033??/\\\\'\"", "\"'a:b'\""
+       quotearg_colon:
+       "\"'simple'\"", "\"'\\0 \\t\\n\\'\"\\033??/\\\\'\"", "\"'a\\:b'\""
+    */
+    custom_quoting_style
+  };
+
+/* Flags for use in set_quoting_flags.  */
+enum quoting_flags
+  {
+    /* Always elide null bytes from styles that do not quote them,
+       even when the length of the result is available to the
+       caller.  */
+    QA_ELIDE_NULL_BYTES = 0x01,
+
+    /* Omit the surrounding quote characters if no escaped characters
+       are encountered.  Note that if no other character needs
+       escaping, then neither does the escape character.  */
+    QA_ELIDE_OUTER_QUOTES = 0x02,
+
+    /* In the c_quoting_style and c_maybe_quoting_style, split ANSI
+       trigraph sequences into concatenated strings (for example,
+       "?""?/" rather than "??/", which could be confused with
+       "\\").  */
+    QA_SPLIT_TRIGRAPHS = 0x04
+  };
+
+/* For now, --quoting-style=literal is the default, but this may change.  */
+# ifndef DEFAULT_QUOTING_STYLE
+#  define DEFAULT_QUOTING_STYLE literal_quoting_style
+# endif
+
+/* Names of quoting styles and their corresponding values.  */
+extern char const *const quoting_style_args[];
+extern enum quoting_style const quoting_style_vals[];
+
+struct quoting_options;
+
+/* The functions listed below set and use a hidden variable
+   that contains the default quoting style options.  */
+
+/* Allocate a new set of quoting options, with contents initially identical
+   to O if O is not null, or to the default if O is null.
+   It is the caller's responsibility to free the result.  */
+struct quoting_options *clone_quoting_options (struct quoting_options *o);
+
+/* Get the value of O's quoting style.  If O is null, use the default.  */
+enum quoting_style get_quoting_style (struct quoting_options *o);
+
+/* In O (or in the default if O is null),
+   set the value of the quoting style to S.  */
+void set_quoting_style (struct quoting_options *o, enum quoting_style s);
+
+/* In O (or in the default if O is null),
+   set the value of the quoting options for character C to I.
+   Return the old value.  Currently, the only values defined for I are
+   0 (the default) and 1 (which means to quote the character even if
+   it would not otherwise be quoted).  C must never be a digit or a
+   letter that has special meaning after a backslash (for example, "\t"
+   for tab).  */
+int set_char_quoting (struct quoting_options *o, char c, int i);
+
+/* In O (or in the default if O is null),
+   set the value of the quoting options flag to I, which can be a
+   bitwise combination of enum quoting_flags, or 0 for default
+   behavior.  Return the old value.  */
+int set_quoting_flags (struct quoting_options *o, int i);
+
+/* In O (or in the default if O is null),
+   set the value of the quoting style to custom_quoting_style,
+   set the left quote to LEFT_QUOTE, and set the right quote to
+   RIGHT_QUOTE.  Each of LEFT_QUOTE and RIGHT_QUOTE must be
+   null-terminated and can be the empty string.  Because backslashes are
+   used for escaping, it does not make sense for RIGHT_QUOTE to contain
+   a backslash.  RIGHT_QUOTE must not begin with a digit or a letter
+   that has special meaning after a backslash (for example, "\t" for
+   tab).  */
+void set_custom_quoting (struct quoting_options *o,
+                         char const *left_quote,
+                         char const *right_quote);
+
+/* Place into buffer BUFFER (of size BUFFERSIZE) a quoted version of
+   argument ARG (of size ARGSIZE), using O to control quoting.
+   If O is null, use the default.
+   Terminate the output with a null character, and return the written
+   size of the output, not counting the terminating null.
+   If BUFFERSIZE is too small to store the output string, return the
+   value that would have been returned had BUFFERSIZE been large enough.
+   If ARGSIZE is -1, use the string length of the argument for ARGSIZE.
+   On output, BUFFER might contain embedded null bytes if ARGSIZE was
+   not -1, the style of O does not use backslash escapes, and the
+   flags of O do not request elision of null bytes.*/
+size_t quotearg_buffer (char *buffer, size_t buffersize,
+                        char const *arg, size_t argsize,
+                        struct quoting_options const *o);
+
+/* Like quotearg_buffer, except return the result in a newly allocated
+   buffer.  It is the caller's responsibility to free the result.  The
+   result will not contain embedded null bytes.  */
+char *quotearg_alloc (char const *arg, size_t argsize,
+                      struct quoting_options const *o);
+
+/* Like quotearg_alloc, except that the length of the result,
+   excluding the terminating null byte, is stored into SIZE if it is
+   non-NULL.  The result might contain embedded null bytes if ARGSIZE
+   was not -1, SIZE was not NULL, the style of O does not use
+   backslash escapes, and the flags of O do not request elision of
+   null bytes.*/
+char *quotearg_alloc_mem (char const *arg, size_t argsize,
+                          size_t *size, struct quoting_options const *o);
+
+/* Use storage slot N to return a quoted version of the string ARG.
+   Use the default quoting options.
+   The returned value points to static storage that can be
+   reused by the next call to this function with the same value of N.
+   N must be nonnegative.  The output of all functions in the
+   quotearg_n family are guaranteed to not contain embedded null
+   bytes.*/
+char *quotearg_n (int n, char const *arg);
+
+/* Equivalent to quotearg_n (0, ARG).  */
+char *quotearg (char const *arg);
+
+/* Use storage slot N to return a quoted version of the argument ARG
+   of size ARGSIZE.  This is like quotearg_n (N, ARG), except it can
+   quote null bytes.  */
+char *quotearg_n_mem (int n, char const *arg, size_t argsize);
+
+/* Equivalent to quotearg_n_mem (0, ARG, ARGSIZE).  */
+char *quotearg_mem (char const *arg, size_t argsize);
+
+/* Use style S and storage slot N to return a quoted version of the string ARG.
+   This is like quotearg_n (N, ARG), except that it uses S with no other
+   options to specify the quoting method.  */
+char *quotearg_n_style (int n, enum quoting_style s, char const *arg);
+
+/* Use style S and storage slot N to return a quoted version of the
+   argument ARG of size ARGSIZE.  This is like quotearg_n_style
+   (N, S, ARG), except it can quote null bytes.  */
+char *quotearg_n_style_mem (int n, enum quoting_style s,
+                            char const *arg, size_t argsize);
+
+/* Equivalent to quotearg_n_style (0, S, ARG).  */
+char *quotearg_style (enum quoting_style s, char const *arg);
+
+/* Equivalent to quotearg_n_style_mem (0, S, ARG, ARGSIZE).  */
+char *quotearg_style_mem (enum quoting_style s,
+                          char const *arg, size_t argsize);
+
+/* Like quotearg (ARG), except also quote any instances of CH.
+   See set_char_quoting for a description of acceptable CH values.  */
+char *quotearg_char (char const *arg, char ch);
+
+/* Like quotearg_char (ARG, CH), except it can quote null bytes.  */
+char *quotearg_char_mem (char const *arg, size_t argsize, char ch);
+
+/* Equivalent to quotearg_char (ARG, ':').  */
+char *quotearg_colon (char const *arg);
+
+/* Like quotearg_colon (ARG), except it can quote null bytes.  */
+char *quotearg_colon_mem (char const *arg, size_t argsize);
+
+/* Like quotearg_n_style (N, S, ARG) but with S as custom_quoting_style
+   with left quote as LEFT_QUOTE and right quote as RIGHT_QUOTE.  See
+   set_custom_quoting for a description of acceptable LEFT_QUOTE and
+   RIGHT_QUOTE values.  */
+char *quotearg_n_custom (int n, char const *left_quote,
+                         char const *right_quote, char const *arg);
+
+/* Like quotearg_n_custom (N, LEFT_QUOTE, RIGHT_QUOTE, ARG) except it
+   can quote null bytes.  */
+char *quotearg_n_custom_mem (int n, char const *left_quote,
+                             char const *right_quote,
+                             char const *arg, size_t argsize);
+
+/* Equivalent to quotearg_n_custom (0, LEFT_QUOTE, RIGHT_QUOTE, ARG).  */
+char *quotearg_custom (char const *left_quote, char const *right_quote,
+                       char const *arg);
+
+/* Equivalent to quotearg_n_custom_mem (0, LEFT_QUOTE, RIGHT_QUOTE, ARG,
+                                        ARGSIZE).  */
+char *quotearg_custom_mem (char const *left_quote,
+                           char const *right_quote,
+                           char const *arg, size_t argsize);
+
+/* Free any dynamically allocated memory.  */
+void quotearg_free (void);
+
+#endif /* !QUOTEARG_H_ */
diff --git a/lib/read.c b/lib/read.c
new file mode 100644 (file)
index 0000000..21b90db
--- /dev/null
@@ -0,0 +1,59 @@
+/* POSIX compatible read() function.
+   Copyright (C) 2008-2011 Free Software Foundation, Inc.
+   Written by Bruno Haible <bruno@clisp.org>, 2011.
+
+   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 <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include <unistd.h>
+
+/* Replace this function only if module 'nonblocking' is requested.  */
+#if GNULIB_NONBLOCKING
+
+# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+
+#  include <errno.h>
+#  include <io.h>
+
+#  define WIN32_LEAN_AND_MEAN  /* avoid including junk */
+#  include <windows.h>
+
+ssize_t
+rpl_read (int fd, void *buf, size_t count)
+#undef read
+{
+  ssize_t ret = read (fd, buf, count);
+
+  if (ret < 0
+      && GetLastError () == ERROR_NO_DATA)
+    {
+      HANDLE h = (HANDLE) _get_osfhandle (fd);
+      if (GetFileType (h) == FILE_TYPE_PIPE)
+        {
+          /* h is a pipe or socket.  */
+          DWORD state;
+          if (GetNamedPipeHandleState (h, &state, NULL, NULL, NULL, NULL, 0)
+              && (state & PIPE_NOWAIT) != 0)
+            /* h is a pipe in non-blocking mode.
+               Change errno from EINVAL to EAGAIN.  */
+            errno = EAGAIN;
+        }
+    }
+  return ret;
+}
+
+# endif
+#endif
diff --git a/lib/readlink.c b/lib/readlink.c
new file mode 100644 (file)
index 0000000..35d045b
--- /dev/null
@@ -0,0 +1,74 @@
+/* Stub for readlink().
+   Copyright (C) 2003-2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include <unistd.h>
+
+#include <errno.h>
+#include <string.h>
+#include <sys/stat.h>
+
+#if !HAVE_READLINK
+
+/* readlink() substitute for systems that don't have a readlink() function,
+   such as DJGPP 2.03 and mingw32.  */
+
+ssize_t
+readlink (const char *name, char *buf _GL_UNUSED,
+          size_t bufsize _GL_UNUSED)
+{
+  struct stat statbuf;
+
+  /* In general we should use lstat() here, not stat().  But on platforms
+     without symbolic links, lstat() - if it exists - would be equivalent to
+     stat(), therefore we can use stat().  This saves us a configure check.  */
+  if (stat (name, &statbuf) >= 0)
+    errno = EINVAL;
+  return -1;
+}
+
+#else /* HAVE_READLINK */
+
+# undef readlink
+
+/* readlink() wrapper that uses correct types, for systems like cygwin
+   1.5.x where readlink returns int, and which rejects trailing slash,
+   for Solaris 9.  */
+
+ssize_t
+rpl_readlink (const char *name, char *buf, size_t bufsize)
+{
+# if READLINK_TRAILING_SLASH_BUG
+  size_t len = strlen (name);
+  if (len && name[len - 1] == '/')
+    {
+      /* Even if name without the slash is a symlink to a directory,
+         both lstat() and stat() must resolve the trailing slash to
+         the directory rather than the symlink.  We can therefore
+         safely use stat() to distinguish between EINVAL and
+         ENOTDIR/ENOENT, avoiding extra overhead of rpl_lstat().  */
+      struct stat st;
+      if (stat (name, &st) == 0)
+        errno = EINVAL;
+      return -1;
+    }
+# endif /* READLINK_TRAILING_SLASH_BUG */
+  return readlink (name, buf, bufsize);
+}
+
+#endif /* HAVE_READLINK */
diff --git a/lib/realloc.c b/lib/realloc.c
new file mode 100644 (file)
index 0000000..0c96ffa
--- /dev/null
@@ -0,0 +1,79 @@
+/* realloc() function that is glibc compatible.
+
+   Copyright (C) 1997, 2003-2004, 2006-2007, 2009-2011 Free Software
+   Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+/* written by Jim Meyering and Bruno Haible */
+
+#define _GL_USE_STDLIB_ALLOC 1
+#include <config.h>
+
+/* Only the AC_FUNC_REALLOC macro defines 'realloc' already in config.h.  */
+#ifdef realloc
+# define NEED_REALLOC_GNU 1
+/* Whereas the gnulib module 'realloc-gnu' defines HAVE_REALLOC_GNU.  */
+#elif GNULIB_REALLOC_GNU && !HAVE_REALLOC_GNU
+# define NEED_REALLOC_GNU 1
+#endif
+
+/* Infer the properties of the system's malloc function.
+   The gnulib module 'malloc-gnu' defines HAVE_MALLOC_GNU.  */
+#if GNULIB_MALLOC_GNU && HAVE_MALLOC_GNU
+# define SYSTEM_MALLOC_GLIBC_COMPATIBLE 1
+#endif
+
+#include <stdlib.h>
+
+#include <errno.h>
+
+/* Change the size of an allocated block of memory P to N bytes,
+   with error checking.  If N is zero, change it to 1.  If P is NULL,
+   use malloc.  */
+
+void *
+rpl_realloc (void *p, size_t n)
+{
+  void *result;
+
+#if NEED_REALLOC_GNU
+  if (n == 0)
+    {
+      n = 1;
+
+      /* In theory realloc might fail, so don't rely on it to free.  */
+      free (p);
+      p = NULL;
+    }
+#endif
+
+  if (p == NULL)
+    {
+#if GNULIB_REALLOC_GNU && !NEED_REALLOC_GNU && !SYSTEM_MALLOC_GLIBC_COMPATIBLE
+      if (n == 0)
+        n = 1;
+#endif
+      result = malloc (n);
+    }
+  else
+    result = realloc (p, n);
+
+#if !HAVE_REALLOC_POSIX
+  if (result == NULL)
+    errno = ENOMEM;
+#endif
+
+  return result;
+}
diff --git a/lib/ref-add.sin b/lib/ref-add.sin
new file mode 100644 (file)
index 0000000..a57eaef
--- /dev/null
@@ -0,0 +1,30 @@
+# Add this package to a list of references stored in a text file.
+#
+#   Copyright (C) 2000, 2009-2011 Free Software Foundation, 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; either version 3, 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.
+#
+# Written by Bruno Haible <haible@clisp.cons.org>.
+#
+/^# Packages using this file: / {
+  s/# Packages using this file://
+  ta
+  :a
+  s/ @PACKAGE@ / @PACKAGE@ /
+  tb
+  s/ $/ @PACKAGE@ /
+  :b
+  s/^/# Packages using this file:/
+}
diff --git a/lib/ref-del.sin b/lib/ref-del.sin
new file mode 100644 (file)
index 0000000..e23097d
--- /dev/null
@@ -0,0 +1,25 @@
+# Remove this package from a list of references stored in a text file.
+#
+#   Copyright (C) 2000, 2009-2011 Free Software Foundation, 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; either version 3, 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.
+#
+# Written by Bruno Haible <haible@clisp.cons.org>.
+#
+/^# Packages using this file: / {
+  s/# Packages using this file://
+  s/ @PACKAGE@ / /
+  s/^/# Packages using this file:/
+}
diff --git a/lib/regcomp.c b/lib/regcomp.c
new file mode 100644 (file)
index 0000000..f39d329
--- /dev/null
@@ -0,0 +1,3878 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Extended regular expression matching and search library.
+   Copyright (C) 2002-2011 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
+
+   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, 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. */
+
+static reg_errcode_t re_compile_internal (regex_t *preg, const char * pattern,
+                                         size_t length, reg_syntax_t syntax);
+static void re_compile_fastmap_iter (regex_t *bufp,
+                                    const re_dfastate_t *init_state,
+                                    char *fastmap);
+static reg_errcode_t init_dfa (re_dfa_t *dfa, size_t pat_len);
+#ifdef RE_ENABLE_I18N
+static void free_charset (re_charset_t *cset);
+#endif /* RE_ENABLE_I18N */
+static void free_workarea_compile (regex_t *preg);
+static reg_errcode_t create_initial_state (re_dfa_t *dfa);
+#ifdef RE_ENABLE_I18N
+static void optimize_utf8 (re_dfa_t *dfa);
+#endif
+static reg_errcode_t analyze (regex_t *preg);
+static reg_errcode_t preorder (bin_tree_t *root,
+                              reg_errcode_t (fn (void *, bin_tree_t *)),
+                              void *extra);
+static reg_errcode_t postorder (bin_tree_t *root,
+                               reg_errcode_t (fn (void *, bin_tree_t *)),
+                               void *extra);
+static reg_errcode_t optimize_subexps (void *extra, bin_tree_t *node);
+static reg_errcode_t lower_subexps (void *extra, bin_tree_t *node);
+static bin_tree_t *lower_subexp (reg_errcode_t *err, regex_t *preg,
+                                bin_tree_t *node);
+static reg_errcode_t calc_first (void *extra, bin_tree_t *node);
+static reg_errcode_t calc_next (void *extra, bin_tree_t *node);
+static reg_errcode_t link_nfa_nodes (void *extra, bin_tree_t *node);
+static Idx duplicate_node (re_dfa_t *dfa, Idx org_idx, unsigned int constraint);
+static Idx search_duplicated_node (const re_dfa_t *dfa, Idx org_node,
+                                  unsigned int constraint);
+static reg_errcode_t calc_eclosure (re_dfa_t *dfa);
+static reg_errcode_t calc_eclosure_iter (re_node_set *new_set, re_dfa_t *dfa,
+                                        Idx node, bool root);
+static reg_errcode_t calc_inveclosure (re_dfa_t *dfa);
+static Idx fetch_number (re_string_t *input, re_token_t *token,
+                        reg_syntax_t syntax);
+static int peek_token (re_token_t *token, re_string_t *input,
+                       reg_syntax_t syntax) internal_function;
+static bin_tree_t *parse (re_string_t *regexp, regex_t *preg,
+                         reg_syntax_t syntax, reg_errcode_t *err);
+static bin_tree_t *parse_reg_exp (re_string_t *regexp, regex_t *preg,
+                                 re_token_t *token, reg_syntax_t syntax,
+                                 Idx nest, reg_errcode_t *err);
+static bin_tree_t *parse_branch (re_string_t *regexp, regex_t *preg,
+                                re_token_t *token, reg_syntax_t syntax,
+                                Idx nest, reg_errcode_t *err);
+static bin_tree_t *parse_expression (re_string_t *regexp, regex_t *preg,
+                                    re_token_t *token, reg_syntax_t syntax,
+                                    Idx nest, reg_errcode_t *err);
+static bin_tree_t *parse_sub_exp (re_string_t *regexp, regex_t *preg,
+                                 re_token_t *token, reg_syntax_t syntax,
+                                 Idx nest, reg_errcode_t *err);
+static bin_tree_t *parse_dup_op (bin_tree_t *dup_elem, re_string_t *regexp,
+                                re_dfa_t *dfa, re_token_t *token,
+                                reg_syntax_t syntax, reg_errcode_t *err);
+static bin_tree_t *parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa,
+                                     re_token_t *token, reg_syntax_t syntax,
+                                     reg_errcode_t *err);
+static reg_errcode_t parse_bracket_element (bracket_elem_t *elem,
+                                           re_string_t *regexp,
+                                           re_token_t *token, int token_len,
+                                           re_dfa_t *dfa,
+                                           reg_syntax_t syntax,
+                                           bool accept_hyphen);
+static reg_errcode_t parse_bracket_symbol (bracket_elem_t *elem,
+                                         re_string_t *regexp,
+                                         re_token_t *token);
+#ifdef RE_ENABLE_I18N
+static reg_errcode_t build_equiv_class (bitset_t sbcset,
+                                       re_charset_t *mbcset,
+                                       Idx *equiv_class_alloc,
+                                       const unsigned char *name);
+static reg_errcode_t build_charclass (RE_TRANSLATE_TYPE trans,
+                                     bitset_t sbcset,
+                                     re_charset_t *mbcset,
+                                     Idx *char_class_alloc,
+                                     const unsigned char *class_name,
+                                     reg_syntax_t syntax);
+#else  /* not RE_ENABLE_I18N */
+static reg_errcode_t build_equiv_class (bitset_t sbcset,
+                                       const unsigned char *name);
+static reg_errcode_t build_charclass (RE_TRANSLATE_TYPE trans,
+                                     bitset_t sbcset,
+                                     const unsigned char *class_name,
+                                     reg_syntax_t syntax);
+#endif /* not RE_ENABLE_I18N */
+static bin_tree_t *build_charclass_op (re_dfa_t *dfa,
+                                      RE_TRANSLATE_TYPE trans,
+                                      const unsigned char *class_name,
+                                      const unsigned char *extra,
+                                      bool non_match, reg_errcode_t *err);
+static bin_tree_t *create_tree (re_dfa_t *dfa,
+                               bin_tree_t *left, bin_tree_t *right,
+                               re_token_type_t type);
+static bin_tree_t *create_token_tree (re_dfa_t *dfa,
+                                     bin_tree_t *left, bin_tree_t *right,
+                                     const re_token_t *token);
+static bin_tree_t *duplicate_tree (const bin_tree_t *src, re_dfa_t *dfa);
+static void free_token (re_token_t *node);
+static reg_errcode_t free_tree (void *extra, bin_tree_t *node);
+static reg_errcode_t mark_opt_subexp (void *extra, bin_tree_t *node);
+\f
+/* This table gives an error message for each of the error codes listed
+   in regex.h.  Obviously the order here has to be same as there.
+   POSIX doesn't require that we do anything for REG_NOERROR,
+   but why not be nice?  */
+
+static const char __re_error_msgid[] =
+  {
+#define REG_NOERROR_IDX        0
+    gettext_noop ("Success")   /* REG_NOERROR */
+    "\0"
+#define REG_NOMATCH_IDX (REG_NOERROR_IDX + sizeof "Success")
+    gettext_noop ("No match")  /* REG_NOMATCH */
+    "\0"
+#define REG_BADPAT_IDX (REG_NOMATCH_IDX + sizeof "No match")
+    gettext_noop ("Invalid regular expression") /* REG_BADPAT */
+    "\0"
+#define REG_ECOLLATE_IDX (REG_BADPAT_IDX + sizeof "Invalid regular expression")
+    gettext_noop ("Invalid collation character") /* REG_ECOLLATE */
+    "\0"
+#define REG_ECTYPE_IDX (REG_ECOLLATE_IDX + sizeof "Invalid collation character")
+    gettext_noop ("Invalid character class name") /* REG_ECTYPE */
+    "\0"
+#define REG_EESCAPE_IDX        (REG_ECTYPE_IDX + sizeof "Invalid character class name")
+    gettext_noop ("Trailing backslash") /* REG_EESCAPE */
+    "\0"
+#define REG_ESUBREG_IDX        (REG_EESCAPE_IDX + sizeof "Trailing backslash")
+    gettext_noop ("Invalid back reference") /* REG_ESUBREG */
+    "\0"
+#define REG_EBRACK_IDX (REG_ESUBREG_IDX + sizeof "Invalid back reference")
+    gettext_noop ("Unmatched [ or [^") /* REG_EBRACK */
+    "\0"
+#define REG_EPAREN_IDX (REG_EBRACK_IDX + sizeof "Unmatched [ or [^")
+    gettext_noop ("Unmatched ( or \\(") /* REG_EPAREN */
+    "\0"
+#define REG_EBRACE_IDX (REG_EPAREN_IDX + sizeof "Unmatched ( or \\(")
+    gettext_noop ("Unmatched \\{") /* REG_EBRACE */
+    "\0"
+#define REG_BADBR_IDX  (REG_EBRACE_IDX + sizeof "Unmatched \\{")
+    gettext_noop ("Invalid content of \\{\\}") /* REG_BADBR */
+    "\0"
+#define REG_ERANGE_IDX (REG_BADBR_IDX + sizeof "Invalid content of \\{\\}")
+    gettext_noop ("Invalid range end") /* REG_ERANGE */
+    "\0"
+#define REG_ESPACE_IDX (REG_ERANGE_IDX + sizeof "Invalid range end")
+    gettext_noop ("Memory exhausted") /* REG_ESPACE */
+    "\0"
+#define REG_BADRPT_IDX (REG_ESPACE_IDX + sizeof "Memory exhausted")
+    gettext_noop ("Invalid preceding regular expression") /* REG_BADRPT */
+    "\0"
+#define REG_EEND_IDX   (REG_BADRPT_IDX + sizeof "Invalid preceding regular expression")
+    gettext_noop ("Premature end of regular expression") /* REG_EEND */
+    "\0"
+#define REG_ESIZE_IDX  (REG_EEND_IDX + sizeof "Premature end of regular expression")
+    gettext_noop ("Regular expression too big") /* REG_ESIZE */
+    "\0"
+#define REG_ERPAREN_IDX        (REG_ESIZE_IDX + sizeof "Regular expression too big")
+    gettext_noop ("Unmatched ) or \\)") /* REG_ERPAREN */
+  };
+
+static const size_t __re_error_msgid_idx[] =
+  {
+    REG_NOERROR_IDX,
+    REG_NOMATCH_IDX,
+    REG_BADPAT_IDX,
+    REG_ECOLLATE_IDX,
+    REG_ECTYPE_IDX,
+    REG_EESCAPE_IDX,
+    REG_ESUBREG_IDX,
+    REG_EBRACK_IDX,
+    REG_EPAREN_IDX,
+    REG_EBRACE_IDX,
+    REG_BADBR_IDX,
+    REG_ERANGE_IDX,
+    REG_ESPACE_IDX,
+    REG_BADRPT_IDX,
+    REG_EEND_IDX,
+    REG_ESIZE_IDX,
+    REG_ERPAREN_IDX
+  };
+\f
+/* Entry points for GNU code.  */
+
+/* re_compile_pattern is the GNU regular expression compiler: it
+   compiles PATTERN (of length LENGTH) and puts the result in BUFP.
+   Returns 0 if the pattern was valid, otherwise an error string.
+
+   Assumes the `allocated' (and perhaps `buffer') and `translate' fields
+   are set in BUFP on entry.  */
+
+#ifdef _LIBC
+const char *
+re_compile_pattern (pattern, length, bufp)
+    const char *pattern;
+    size_t length;
+    struct re_pattern_buffer *bufp;
+#else /* size_t might promote */
+const char *
+re_compile_pattern (const char *pattern, size_t length,
+                   struct re_pattern_buffer *bufp)
+#endif
+{
+  reg_errcode_t ret;
+
+  /* And GNU code determines whether or not to get register information
+     by passing null for the REGS argument to re_match, etc., not by
+     setting no_sub, unless RE_NO_SUB is set.  */
+  bufp->no_sub = !!(re_syntax_options & RE_NO_SUB);
+
+  /* Match anchors at newline.  */
+  bufp->newline_anchor = 1;
+
+  ret = re_compile_internal (bufp, pattern, length, re_syntax_options);
+
+  if (!ret)
+    return NULL;
+  return gettext (__re_error_msgid + __re_error_msgid_idx[(int) ret]);
+}
+#ifdef _LIBC
+weak_alias (__re_compile_pattern, re_compile_pattern)
+#endif
+
+/* Set by `re_set_syntax' to the current regexp syntax to recognize.  Can
+   also be assigned to arbitrarily: each pattern buffer stores its own
+   syntax, so it can be changed between regex compilations.  */
+/* This has no initializer because initialized variables in Emacs
+   become read-only after dumping.  */
+reg_syntax_t re_syntax_options;
+
+
+/* Specify the precise syntax of regexps for compilation.  This provides
+   for compatibility for various utilities which historically have
+   different, incompatible syntaxes.
+
+   The argument SYNTAX is a bit mask comprised of the various bits
+   defined in regex.h.  We return the old syntax.  */
+
+reg_syntax_t
+re_set_syntax (syntax)
+    reg_syntax_t syntax;
+{
+  reg_syntax_t ret = re_syntax_options;
+
+  re_syntax_options = syntax;
+  return ret;
+}
+#ifdef _LIBC
+weak_alias (__re_set_syntax, re_set_syntax)
+#endif
+
+int
+re_compile_fastmap (bufp)
+    struct re_pattern_buffer *bufp;
+{
+  re_dfa_t *dfa = (re_dfa_t *) bufp->buffer;
+  char *fastmap = bufp->fastmap;
+
+  memset (fastmap, '\0', sizeof (char) * SBC_MAX);
+  re_compile_fastmap_iter (bufp, dfa->init_state, fastmap);
+  if (dfa->init_state != dfa->init_state_word)
+    re_compile_fastmap_iter (bufp, dfa->init_state_word, fastmap);
+  if (dfa->init_state != dfa->init_state_nl)
+    re_compile_fastmap_iter (bufp, dfa->init_state_nl, fastmap);
+  if (dfa->init_state != dfa->init_state_begbuf)
+    re_compile_fastmap_iter (bufp, dfa->init_state_begbuf, fastmap);
+  bufp->fastmap_accurate = 1;
+  return 0;
+}
+#ifdef _LIBC
+weak_alias (__re_compile_fastmap, re_compile_fastmap)
+#endif
+
+static inline void
+__attribute ((always_inline))
+re_set_fastmap (char *fastmap, bool icase, int ch)
+{
+  fastmap[ch] = 1;
+  if (icase)
+    fastmap[tolower (ch)] = 1;
+}
+
+/* Helper function for re_compile_fastmap.
+   Compile fastmap for the initial_state INIT_STATE.  */
+
+static void
+re_compile_fastmap_iter (regex_t *bufp, const re_dfastate_t *init_state,
+                        char *fastmap)
+{
+  re_dfa_t *dfa = (re_dfa_t *) bufp->buffer;
+  Idx node_cnt;
+  bool icase = (dfa->mb_cur_max == 1 && (bufp->syntax & RE_ICASE));
+  for (node_cnt = 0; node_cnt < init_state->nodes.nelem; ++node_cnt)
+    {
+      Idx node = init_state->nodes.elems[node_cnt];
+      re_token_type_t type = dfa->nodes[node].type;
+
+      if (type == CHARACTER)
+       {
+         re_set_fastmap (fastmap, icase, dfa->nodes[node].opr.c);
+#ifdef RE_ENABLE_I18N
+         if ((bufp->syntax & RE_ICASE) && dfa->mb_cur_max > 1)
+           {
+             unsigned char buf[MB_LEN_MAX];
+             unsigned char *p;
+             wchar_t wc;
+             mbstate_t state;
+
+             p = buf;
+             *p++ = dfa->nodes[node].opr.c;
+             while (++node < dfa->nodes_len
+                    && dfa->nodes[node].type == CHARACTER
+                    && dfa->nodes[node].mb_partial)
+               *p++ = dfa->nodes[node].opr.c;
+             memset (&state, '\0', sizeof (state));
+             if (__mbrtowc (&wc, (const char *) buf, p - buf,
+                            &state) == p - buf
+                 && (__wcrtomb ((char *) buf, towlower (wc), &state)
+                     != (size_t) -1))
+               re_set_fastmap (fastmap, false, buf[0]);
+           }
+#endif
+       }
+      else if (type == SIMPLE_BRACKET)
+       {
+         int i, ch;
+         for (i = 0, ch = 0; i < BITSET_WORDS; ++i)
+           {
+             int j;
+             bitset_word_t w = dfa->nodes[node].opr.sbcset[i];
+             for (j = 0; j < BITSET_WORD_BITS; ++j, ++ch)
+               if (w & ((bitset_word_t) 1 << j))
+                 re_set_fastmap (fastmap, icase, ch);
+           }
+       }
+#ifdef RE_ENABLE_I18N
+      else if (type == COMPLEX_BRACKET)
+       {
+         re_charset_t *cset = dfa->nodes[node].opr.mbcset;
+         Idx i;
+
+# ifdef _LIBC
+         /* See if we have to try all bytes which start multiple collation
+            elements.
+            e.g. In da_DK, we want to catch 'a' since "aa" is a valid
+                 collation element, and don't catch 'b' since 'b' is
+                 the only collation element which starts from 'b' (and
+                 it is caught by SIMPLE_BRACKET).  */
+             if (_NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES) != 0
+                 && (cset->ncoll_syms || cset->nranges))
+               {
+                 const int32_t *table = (const int32_t *)
+                   _NL_CURRENT (LC_COLLATE, _NL_COLLATE_TABLEMB);
+                 for (i = 0; i < SBC_MAX; ++i)
+                   if (table[i] < 0)
+                     re_set_fastmap (fastmap, icase, i);
+               }
+# endif /* _LIBC */
+
+         /* See if we have to start the match at all multibyte characters,
+            i.e. where we would not find an invalid sequence.  This only
+            applies to multibyte character sets; for single byte character
+            sets, the SIMPLE_BRACKET again suffices.  */
+         if (dfa->mb_cur_max > 1
+             && (cset->nchar_classes || cset->non_match || cset->nranges
+# ifdef _LIBC
+                 || cset->nequiv_classes
+# endif /* _LIBC */
+                ))
+           {
+             unsigned char c = 0;
+             do
+               {
+                 mbstate_t mbs;
+                 memset (&mbs, 0, sizeof (mbs));
+                 if (__mbrtowc (NULL, (char *) &c, 1, &mbs) == (size_t) -2)
+                   re_set_fastmap (fastmap, false, (int) c);
+               }
+             while (++c != 0);
+           }
+
+         else
+           {
+             /* ... Else catch all bytes which can start the mbchars.  */
+             for (i = 0; i < cset->nmbchars; ++i)
+               {
+                 char buf[256];
+                 mbstate_t state;
+                 memset (&state, '\0', sizeof (state));
+                 if (__wcrtomb (buf, cset->mbchars[i], &state) != (size_t) -1)
+                   re_set_fastmap (fastmap, icase, *(unsigned char *) buf);
+                 if ((bufp->syntax & RE_ICASE) && dfa->mb_cur_max > 1)
+                   {
+                     if (__wcrtomb (buf, towlower (cset->mbchars[i]), &state)
+                         != (size_t) -1)
+                       re_set_fastmap (fastmap, false, *(unsigned char *) buf);
+                   }
+               }
+           }
+       }
+#endif /* RE_ENABLE_I18N */
+      else if (type == OP_PERIOD
+#ifdef RE_ENABLE_I18N
+              || type == OP_UTF8_PERIOD
+#endif /* RE_ENABLE_I18N */
+              || type == END_OF_RE)
+       {
+         memset (fastmap, '\1', sizeof (char) * SBC_MAX);
+         if (type == END_OF_RE)
+           bufp->can_be_null = 1;
+         return;
+       }
+    }
+}
+\f
+/* Entry point for POSIX code.  */
+/* regcomp takes a regular expression as a string and compiles it.
+
+   PREG is a regex_t *.  We do not expect any fields to be initialized,
+   since POSIX says we shouldn't.  Thus, we set
+
+     `buffer' to the compiled pattern;
+     `used' to the length of the compiled pattern;
+     `syntax' to RE_SYNTAX_POSIX_EXTENDED if the
+       REG_EXTENDED bit in CFLAGS is set; otherwise, to
+       RE_SYNTAX_POSIX_BASIC;
+     `newline_anchor' to REG_NEWLINE being set in CFLAGS;
+     `fastmap' to an allocated space for the fastmap;
+     `fastmap_accurate' to zero;
+     `re_nsub' to the number of subexpressions in PATTERN.
+
+   PATTERN is the address of the pattern string.
+
+   CFLAGS is a series of bits which affect compilation.
+
+     If REG_EXTENDED is set, we use POSIX extended syntax; otherwise, we
+     use POSIX basic syntax.
+
+     If REG_NEWLINE is set, then . and [^...] don't match newline.
+     Also, regexec will try a match beginning after every newline.
+
+     If REG_ICASE is set, then we considers upper- and lowercase
+     versions of letters to be equivalent when matching.
+
+     If REG_NOSUB is set, then when PREG is passed to regexec, that
+     routine will report only success or failure, and nothing about the
+     registers.
+
+   It returns 0 if it succeeds, nonzero if it doesn't.  (See regex.h for
+   the return codes and their meanings.)  */
+
+int
+regcomp (preg, pattern, cflags)
+    regex_t *_Restrict_ preg;
+    const char *_Restrict_ pattern;
+    int cflags;
+{
+  reg_errcode_t ret;
+  reg_syntax_t syntax = ((cflags & REG_EXTENDED) ? RE_SYNTAX_POSIX_EXTENDED
+                        : RE_SYNTAX_POSIX_BASIC);
+
+  preg->buffer = NULL;
+  preg->allocated = 0;
+  preg->used = 0;
+
+  /* Try to allocate space for the fastmap.  */
+  preg->fastmap = re_malloc (char, SBC_MAX);
+  if (BE (preg->fastmap == NULL, 0))
+    return REG_ESPACE;
+
+  syntax |= (cflags & REG_ICASE) ? RE_ICASE : 0;
+
+  /* If REG_NEWLINE is set, newlines are treated differently.  */
+  if (cflags & REG_NEWLINE)
+    { /* REG_NEWLINE implies neither . nor [^...] match newline.  */
+      syntax &= ~RE_DOT_NEWLINE;
+      syntax |= RE_HAT_LISTS_NOT_NEWLINE;
+      /* It also changes the matching behavior.  */
+      preg->newline_anchor = 1;
+    }
+  else
+    preg->newline_anchor = 0;
+  preg->no_sub = !!(cflags & REG_NOSUB);
+  preg->translate = NULL;
+
+  ret = re_compile_internal (preg, pattern, strlen (pattern), syntax);
+
+  /* POSIX doesn't distinguish between an unmatched open-group and an
+     unmatched close-group: both are REG_EPAREN.  */
+  if (ret == REG_ERPAREN)
+    ret = REG_EPAREN;
+
+  /* We have already checked preg->fastmap != NULL.  */
+  if (BE (ret == REG_NOERROR, 1))
+    /* Compute the fastmap now, since regexec cannot modify the pattern
+       buffer.  This function never fails in this implementation.  */
+    (void) re_compile_fastmap (preg);
+  else
+    {
+      /* Some error occurred while compiling the expression.  */
+      re_free (preg->fastmap);
+      preg->fastmap = NULL;
+    }
+
+  return (int) ret;
+}
+#ifdef _LIBC
+weak_alias (__regcomp, regcomp)
+#endif
+
+/* Returns a message corresponding to an error code, ERRCODE, returned
+   from either regcomp or regexec.   We don't use PREG here.  */
+
+#ifdef _LIBC
+size_t
+regerror (errcode, preg, errbuf, errbuf_size)
+    int errcode;
+    const regex_t *_Restrict_ preg;
+    char *_Restrict_ errbuf;
+    size_t errbuf_size;
+#else /* size_t might promote */
+size_t
+regerror (int errcode, const regex_t *_Restrict_ preg,
+         char *_Restrict_ errbuf, size_t errbuf_size)
+#endif
+{
+  const char *msg;
+  size_t msg_size;
+
+  if (BE (errcode < 0
+         || errcode >= (int) (sizeof (__re_error_msgid_idx)
+                              / sizeof (__re_error_msgid_idx[0])), 0))
+    /* Only error codes returned by the rest of the code should be passed
+       to this routine.  If we are given anything else, or if other regex
+       code generates an invalid error code, then the program has a bug.
+       Dump core so we can fix it.  */
+    abort ();
+
+  msg = gettext (__re_error_msgid + __re_error_msgid_idx[errcode]);
+
+  msg_size = strlen (msg) + 1; /* Includes the null.  */
+
+  if (BE (errbuf_size != 0, 1))
+    {
+      size_t cpy_size = msg_size;
+      if (BE (msg_size > errbuf_size, 0))
+       {
+         cpy_size = errbuf_size - 1;
+         errbuf[cpy_size] = '\0';
+       }
+      memcpy (errbuf, msg, cpy_size);
+    }
+
+  return msg_size;
+}
+#ifdef _LIBC
+weak_alias (__regerror, regerror)
+#endif
+
+
+#ifdef RE_ENABLE_I18N
+/* This static array is used for the map to single-byte characters when
+   UTF-8 is used.  Otherwise we would allocate memory just to initialize
+   it the same all the time.  UTF-8 is the preferred encoding so this is
+   a worthwhile optimization.  */
+static const bitset_t utf8_sb_map =
+{
+  /* Set the first 128 bits.  */
+# if 4 * BITSET_WORD_BITS < ASCII_CHARS
+#  error "bitset_word_t is narrower than 32 bits"
+# elif 3 * BITSET_WORD_BITS < ASCII_CHARS
+  BITSET_WORD_MAX, BITSET_WORD_MAX, BITSET_WORD_MAX,
+# elif 2 * BITSET_WORD_BITS < ASCII_CHARS
+  BITSET_WORD_MAX, BITSET_WORD_MAX,
+# elif 1 * BITSET_WORD_BITS < ASCII_CHARS
+  BITSET_WORD_MAX,
+# endif
+  (BITSET_WORD_MAX
+   >> (SBC_MAX % BITSET_WORD_BITS == 0
+       ? 0
+       : BITSET_WORD_BITS - SBC_MAX % BITSET_WORD_BITS))
+};
+#endif
+
+
+static void
+free_dfa_content (re_dfa_t *dfa)
+{
+  Idx i, j;
+
+  if (dfa->nodes)
+    for (i = 0; i < dfa->nodes_len; ++i)
+      free_token (dfa->nodes + i);
+  re_free (dfa->nexts);
+  for (i = 0; i < dfa->nodes_len; ++i)
+    {
+      if (dfa->eclosures != NULL)
+       re_node_set_free (dfa->eclosures + i);
+      if (dfa->inveclosures != NULL)
+       re_node_set_free (dfa->inveclosures + i);
+      if (dfa->edests != NULL)
+       re_node_set_free (dfa->edests + i);
+    }
+  re_free (dfa->edests);
+  re_free (dfa->eclosures);
+  re_free (dfa->inveclosures);
+  re_free (dfa->nodes);
+
+  if (dfa->state_table)
+    for (i = 0; i <= dfa->state_hash_mask; ++i)
+      {
+       struct re_state_table_entry *entry = dfa->state_table + i;
+       for (j = 0; j < entry->num; ++j)
+         {
+           re_dfastate_t *state = entry->array[j];
+           free_state (state);
+         }
+       re_free (entry->array);
+      }
+  re_free (dfa->state_table);
+#ifdef RE_ENABLE_I18N
+  if (dfa->sb_char != utf8_sb_map)
+    re_free (dfa->sb_char);
+#endif
+  re_free (dfa->subexp_map);
+#ifdef DEBUG
+  re_free (dfa->re_str);
+#endif
+
+  re_free (dfa);
+}
+
+
+/* Free dynamically allocated space used by PREG.  */
+
+void
+regfree (preg)
+    regex_t *preg;
+{
+  re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
+  if (BE (dfa != NULL, 1))
+    free_dfa_content (dfa);
+  preg->buffer = NULL;
+  preg->allocated = 0;
+
+  re_free (preg->fastmap);
+  preg->fastmap = NULL;
+
+  re_free (preg->translate);
+  preg->translate = NULL;
+}
+#ifdef _LIBC
+weak_alias (__regfree, regfree)
+#endif
+\f
+/* Entry points compatible with 4.2 BSD regex library.  We don't define
+   them unless specifically requested.  */
+
+#if defined _REGEX_RE_COMP || defined _LIBC
+
+/* BSD has one and only one pattern buffer.  */
+static struct re_pattern_buffer re_comp_buf;
+
+char *
+# ifdef _LIBC
+/* Make these definitions weak in libc, so POSIX programs can redefine
+   these names if they don't use our functions, and still use
+   regcomp/regexec above without link errors.  */
+weak_function
+# endif
+re_comp (s)
+     const char *s;
+{
+  reg_errcode_t ret;
+  char *fastmap;
+
+  if (!s)
+    {
+      if (!re_comp_buf.buffer)
+       return gettext ("No previous regular expression");
+      return 0;
+    }
+
+  if (re_comp_buf.buffer)
+    {
+      fastmap = re_comp_buf.fastmap;
+      re_comp_buf.fastmap = NULL;
+      __regfree (&re_comp_buf);
+      memset (&re_comp_buf, '\0', sizeof (re_comp_buf));
+      re_comp_buf.fastmap = fastmap;
+    }
+
+  if (re_comp_buf.fastmap == NULL)
+    {
+      re_comp_buf.fastmap = (char *) malloc (SBC_MAX);
+      if (re_comp_buf.fastmap == NULL)
+       return (char *) gettext (__re_error_msgid
+                                + __re_error_msgid_idx[(int) REG_ESPACE]);
+    }
+
+  /* Since `re_exec' always passes NULL for the `regs' argument, we
+     don't need to initialize the pattern buffer fields which affect it.  */
+
+  /* Match anchors at newlines.  */
+  re_comp_buf.newline_anchor = 1;
+
+  ret = re_compile_internal (&re_comp_buf, s, strlen (s), re_syntax_options);
+
+  if (!ret)
+    return NULL;
+
+  /* Yes, we're discarding `const' here if !HAVE_LIBINTL.  */
+  return (char *) gettext (__re_error_msgid + __re_error_msgid_idx[(int) ret]);
+}
+
+#ifdef _LIBC
+libc_freeres_fn (free_mem)
+{
+  __regfree (&re_comp_buf);
+}
+#endif
+
+#endif /* _REGEX_RE_COMP */
+\f
+/* Internal entry point.
+   Compile the regular expression PATTERN, whose length is LENGTH.
+   SYNTAX indicate regular expression's syntax.  */
+
+static reg_errcode_t
+re_compile_internal (regex_t *preg, const char * pattern, size_t length,
+                    reg_syntax_t syntax)
+{
+  reg_errcode_t err = REG_NOERROR;
+  re_dfa_t *dfa;
+  re_string_t regexp;
+
+  /* Initialize the pattern buffer.  */
+  preg->fastmap_accurate = 0;
+  preg->syntax = syntax;
+  preg->not_bol = preg->not_eol = 0;
+  preg->used = 0;
+  preg->re_nsub = 0;
+  preg->can_be_null = 0;
+  preg->regs_allocated = REGS_UNALLOCATED;
+
+  /* Initialize the dfa.  */
+  dfa = (re_dfa_t *) preg->buffer;
+  if (BE (preg->allocated < sizeof (re_dfa_t), 0))
+    {
+      /* If zero allocated, but buffer is non-null, try to realloc
+        enough space.  This loses if buffer's address is bogus, but
+        that is the user's responsibility.  If ->buffer is NULL this
+        is a simple allocation.  */
+      dfa = re_realloc (preg->buffer, re_dfa_t, 1);
+      if (dfa == NULL)
+       return REG_ESPACE;
+      preg->allocated = sizeof (re_dfa_t);
+      preg->buffer = (unsigned char *) dfa;
+    }
+  preg->used = sizeof (re_dfa_t);
+
+  err = init_dfa (dfa, length);
+  if (BE (err != REG_NOERROR, 0))
+    {
+      free_dfa_content (dfa);
+      preg->buffer = NULL;
+      preg->allocated = 0;
+      return err;
+    }
+#ifdef DEBUG
+  /* Note: length+1 will not overflow since it is checked in init_dfa.  */
+  dfa->re_str = re_malloc (char, length + 1);
+  strncpy (dfa->re_str, pattern, length + 1);
+#endif
+
+  __libc_lock_init (dfa->lock);
+
+  err = re_string_construct (&regexp, pattern, length, preg->translate,
+                            (syntax & RE_ICASE) != 0, dfa);
+  if (BE (err != REG_NOERROR, 0))
+    {
+    re_compile_internal_free_return:
+      free_workarea_compile (preg);
+      re_string_destruct (&regexp);
+      free_dfa_content (dfa);
+      preg->buffer = NULL;
+      preg->allocated = 0;
+      return err;
+    }
+
+  /* Parse the regular expression, and build a structure tree.  */
+  preg->re_nsub = 0;
+  dfa->str_tree = parse (&regexp, preg, syntax, &err);
+  if (BE (dfa->str_tree == NULL, 0))
+    goto re_compile_internal_free_return;
+
+  /* Analyze the tree and create the nfa.  */
+  err = analyze (preg);
+  if (BE (err != REG_NOERROR, 0))
+    goto re_compile_internal_free_return;
+
+#ifdef RE_ENABLE_I18N
+  /* If possible, do searching in single byte encoding to speed things up.  */
+  if (dfa->is_utf8 && !(syntax & RE_ICASE) && preg->translate == NULL)
+    optimize_utf8 (dfa);
+#endif
+
+  /* Then create the initial state of the dfa.  */
+  err = create_initial_state (dfa);
+
+  /* Release work areas.  */
+  free_workarea_compile (preg);
+  re_string_destruct (&regexp);
+
+  if (BE (err != REG_NOERROR, 0))
+    {
+      free_dfa_content (dfa);
+      preg->buffer = NULL;
+      preg->allocated = 0;
+    }
+
+  return err;
+}
+
+/* Initialize DFA.  We use the length of the regular expression PAT_LEN
+   as the initial length of some arrays.  */
+
+static reg_errcode_t
+init_dfa (re_dfa_t *dfa, size_t pat_len)
+{
+  __re_size_t table_size;
+#ifndef _LIBC
+  char *codeset_name;
+#endif
+#ifdef RE_ENABLE_I18N
+  size_t max_i18n_object_size = MAX (sizeof (wchar_t), sizeof (wctype_t));
+#else
+  size_t max_i18n_object_size = 0;
+#endif
+  size_t max_object_size =
+    MAX (sizeof (struct re_state_table_entry),
+        MAX (sizeof (re_token_t),
+             MAX (sizeof (re_node_set),
+                  MAX (sizeof (regmatch_t),
+                       max_i18n_object_size))));
+
+  memset (dfa, '\0', sizeof (re_dfa_t));
+
+  /* Force allocation of str_tree_storage the first time.  */
+  dfa->str_tree_storage_idx = BIN_TREE_STORAGE_SIZE;
+
+  /* Avoid overflows.  The extra "/ 2" is for the table_size doubling
+     calculation below, and for similar doubling calculations
+     elsewhere.  And it's <= rather than <, because some of the
+     doubling calculations add 1 afterwards.  */
+  if (BE (SIZE_MAX / max_object_size / 2 <= pat_len, 0))
+    return REG_ESPACE;
+
+  dfa->nodes_alloc = pat_len + 1;
+  dfa->nodes = re_malloc (re_token_t, dfa->nodes_alloc);
+
+  /*  table_size = 2 ^ ceil(log pat_len) */
+  for (table_size = 1; ; table_size <<= 1)
+    if (table_size > pat_len)
+      break;
+
+  dfa->state_table = calloc (sizeof (struct re_state_table_entry), table_size);
+  dfa->state_hash_mask = table_size - 1;
+
+  dfa->mb_cur_max = MB_CUR_MAX;
+#ifdef _LIBC
+  if (dfa->mb_cur_max == 6
+      && strcmp (_NL_CURRENT (LC_CTYPE, _NL_CTYPE_CODESET_NAME), "UTF-8") == 0)
+    dfa->is_utf8 = 1;
+  dfa->map_notascii = (_NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_MAP_TO_NONASCII)
+                      != 0);
+#else
+  codeset_name = nl_langinfo (CODESET);
+  if (strcasecmp (codeset_name, "UTF-8") == 0
+      || strcasecmp (codeset_name, "UTF8") == 0)
+    dfa->is_utf8 = 1;
+
+  /* We check exhaustively in the loop below if this charset is a
+     superset of ASCII.  */
+  dfa->map_notascii = 0;
+#endif
+
+#ifdef RE_ENABLE_I18N
+  if (dfa->mb_cur_max > 1)
+    {
+      if (dfa->is_utf8)
+       dfa->sb_char = (re_bitset_ptr_t) utf8_sb_map;
+      else
+       {
+         int i, j, ch;
+
+         dfa->sb_char = (re_bitset_ptr_t) calloc (sizeof (bitset_t), 1);
+         if (BE (dfa->sb_char == NULL, 0))
+           return REG_ESPACE;
+
+         /* Set the bits corresponding to single byte chars.  */
+         for (i = 0, ch = 0; i < BITSET_WORDS; ++i)
+           for (j = 0; j < BITSET_WORD_BITS; ++j, ++ch)
+             {
+               wint_t wch = __btowc (ch);
+               if (wch != WEOF)
+                 dfa->sb_char[i] |= (bitset_word_t) 1 << j;
+# ifndef _LIBC
+               if (isascii (ch) && wch != ch)
+                 dfa->map_notascii = 1;
+# endif
+             }
+       }
+    }
+#endif
+
+  if (BE (dfa->nodes == NULL || dfa->state_table == NULL, 0))
+    return REG_ESPACE;
+  return REG_NOERROR;
+}
+
+/* Initialize WORD_CHAR table, which indicate which character is
+   "word".  In this case "word" means that it is the word construction
+   character used by some operators like "\<", "\>", etc.  */
+
+static void
+internal_function
+init_word_char (re_dfa_t *dfa)
+{
+  int i, j, ch;
+  dfa->word_ops_used = 1;
+  for (i = 0, ch = 0; i < BITSET_WORDS; ++i)
+    for (j = 0; j < BITSET_WORD_BITS; ++j, ++ch)
+      if (isalnum (ch) || ch == '_')
+       dfa->word_char[i] |= (bitset_word_t) 1 << j;
+}
+
+/* Free the work area which are only used while compiling.  */
+
+static void
+free_workarea_compile (regex_t *preg)
+{
+  re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
+  bin_tree_storage_t *storage, *next;
+  for (storage = dfa->str_tree_storage; storage; storage = next)
+    {
+      next = storage->next;
+      re_free (storage);
+    }
+  dfa->str_tree_storage = NULL;
+  dfa->str_tree_storage_idx = BIN_TREE_STORAGE_SIZE;
+  dfa->str_tree = NULL;
+  re_free (dfa->org_indices);
+  dfa->org_indices = NULL;
+}
+
+/* Create initial states for all contexts.  */
+
+static reg_errcode_t
+create_initial_state (re_dfa_t *dfa)
+{
+  Idx first, i;
+  reg_errcode_t err;
+  re_node_set init_nodes;
+
+  /* Initial states have the epsilon closure of the node which is
+     the first node of the regular expression.  */
+  first = dfa->str_tree->first->node_idx;
+  dfa->init_node = first;
+  err = re_node_set_init_copy (&init_nodes, dfa->eclosures + first);
+  if (BE (err != REG_NOERROR, 0))
+    return err;
+
+  /* The back-references which are in initial states can epsilon transit,
+     since in this case all of the subexpressions can be null.
+     Then we add epsilon closures of the nodes which are the next nodes of
+     the back-references.  */
+  if (dfa->nbackref > 0)
+    for (i = 0; i < init_nodes.nelem; ++i)
+      {
+       Idx node_idx = init_nodes.elems[i];
+       re_token_type_t type = dfa->nodes[node_idx].type;
+
+       Idx clexp_idx;
+       if (type != OP_BACK_REF)
+         continue;
+       for (clexp_idx = 0; clexp_idx < init_nodes.nelem; ++clexp_idx)
+         {
+           re_token_t *clexp_node;
+           clexp_node = dfa->nodes + init_nodes.elems[clexp_idx];
+           if (clexp_node->type == OP_CLOSE_SUBEXP
+               && clexp_node->opr.idx == dfa->nodes[node_idx].opr.idx)
+             break;
+         }
+       if (clexp_idx == init_nodes.nelem)
+         continue;
+
+       if (type == OP_BACK_REF)
+         {
+           Idx dest_idx = dfa->edests[node_idx].elems[0];
+           if (!re_node_set_contains (&init_nodes, dest_idx))
+             {
+               reg_errcode_t merge_err
+                  = re_node_set_merge (&init_nodes, dfa->eclosures + dest_idx);
+               if (merge_err != REG_NOERROR)
+                 return merge_err;
+               i = 0;
+             }
+         }
+      }
+
+  /* It must be the first time to invoke acquire_state.  */
+  dfa->init_state = re_acquire_state_context (&err, dfa, &init_nodes, 0);
+  /* We don't check ERR here, since the initial state must not be NULL.  */
+  if (BE (dfa->init_state == NULL, 0))
+    return err;
+  if (dfa->init_state->has_constraint)
+    {
+      dfa->init_state_word = re_acquire_state_context (&err, dfa, &init_nodes,
+                                                      CONTEXT_WORD);
+      dfa->init_state_nl = re_acquire_state_context (&err, dfa, &init_nodes,
+                                                    CONTEXT_NEWLINE);
+      dfa->init_state_begbuf = re_acquire_state_context (&err, dfa,
+                                                        &init_nodes,
+                                                        CONTEXT_NEWLINE
+                                                        | CONTEXT_BEGBUF);
+      if (BE (dfa->init_state_word == NULL || dfa->init_state_nl == NULL
+             || dfa->init_state_begbuf == NULL, 0))
+       return err;
+    }
+  else
+    dfa->init_state_word = dfa->init_state_nl
+      = dfa->init_state_begbuf = dfa->init_state;
+
+  re_node_set_free (&init_nodes);
+  return REG_NOERROR;
+}
+\f
+#ifdef RE_ENABLE_I18N
+/* If it is possible to do searching in single byte encoding instead of UTF-8
+   to speed things up, set dfa->mb_cur_max to 1, clear is_utf8 and change
+   DFA nodes where needed.  */
+
+static void
+optimize_utf8 (re_dfa_t *dfa)
+{
+  Idx node;
+  int i;
+  bool mb_chars = false;
+  bool has_period = false;
+
+  for (node = 0; node < dfa->nodes_len; ++node)
+    switch (dfa->nodes[node].type)
+      {
+      case CHARACTER:
+       if (dfa->nodes[node].opr.c >= ASCII_CHARS)
+         mb_chars = true;
+       break;
+      case ANCHOR:
+       switch (dfa->nodes[node].opr.ctx_type)
+         {
+         case LINE_FIRST:
+         case LINE_LAST:
+         case BUF_FIRST:
+         case BUF_LAST:
+           break;
+         default:
+           /* Word anchors etc. cannot be handled.  It's okay to test
+              opr.ctx_type since constraints (for all DFA nodes) are
+              created by ORing one or more opr.ctx_type values.  */
+           return;
+         }
+       break;
+      case OP_PERIOD:
+       has_period = true;
+       break;
+      case OP_BACK_REF:
+      case OP_ALT:
+      case END_OF_RE:
+      case OP_DUP_ASTERISK:
+      case OP_OPEN_SUBEXP:
+      case OP_CLOSE_SUBEXP:
+       break;
+      case COMPLEX_BRACKET:
+       return;
+      case SIMPLE_BRACKET:
+       /* Just double check.  */
+       {
+         int rshift = (ASCII_CHARS % BITSET_WORD_BITS == 0
+                       ? 0
+                       : BITSET_WORD_BITS - ASCII_CHARS % BITSET_WORD_BITS);
+         for (i = ASCII_CHARS / BITSET_WORD_BITS; i < BITSET_WORDS; ++i)
+           {
+             if (dfa->nodes[node].opr.sbcset[i] >> rshift != 0)
+               return;
+             rshift = 0;
+           }
+       }
+       break;
+      default:
+       abort ();
+      }
+
+  if (mb_chars || has_period)
+    for (node = 0; node < dfa->nodes_len; ++node)
+      {
+       if (dfa->nodes[node].type == CHARACTER
+           && dfa->nodes[node].opr.c >= ASCII_CHARS)
+         dfa->nodes[node].mb_partial = 0;
+       else if (dfa->nodes[node].type == OP_PERIOD)
+         dfa->nodes[node].type = OP_UTF8_PERIOD;
+      }
+
+  /* The search can be in single byte locale.  */
+  dfa->mb_cur_max = 1;
+  dfa->is_utf8 = 0;
+  dfa->has_mb_node = dfa->nbackref > 0 || has_period;
+}
+#endif
+\f
+/* Analyze the structure tree, and calculate "first", "next", "edest",
+   "eclosure", and "inveclosure".  */
+
+static reg_errcode_t
+analyze (regex_t *preg)
+{
+  re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
+  reg_errcode_t ret;
+
+  /* Allocate arrays.  */
+  dfa->nexts = re_malloc (Idx, dfa->nodes_alloc);
+  dfa->org_indices = re_malloc (Idx, dfa->nodes_alloc);
+  dfa->edests = re_malloc (re_node_set, dfa->nodes_alloc);
+  dfa->eclosures = re_malloc (re_node_set, dfa->nodes_alloc);
+  if (BE (dfa->nexts == NULL || dfa->org_indices == NULL || dfa->edests == NULL
+         || dfa->eclosures == NULL, 0))
+    return REG_ESPACE;
+
+  dfa->subexp_map = re_malloc (Idx, preg->re_nsub);
+  if (dfa->subexp_map != NULL)
+    {
+      Idx i;
+      for (i = 0; i < preg->re_nsub; i++)
+       dfa->subexp_map[i] = i;
+      preorder (dfa->str_tree, optimize_subexps, dfa);
+      for (i = 0; i < preg->re_nsub; i++)
+       if (dfa->subexp_map[i] != i)
+         break;
+      if (i == preg->re_nsub)
+       {
+         free (dfa->subexp_map);
+         dfa->subexp_map = NULL;
+       }
+    }
+
+  ret = postorder (dfa->str_tree, lower_subexps, preg);
+  if (BE (ret != REG_NOERROR, 0))
+    return ret;
+  ret = postorder (dfa->str_tree, calc_first, dfa);
+  if (BE (ret != REG_NOERROR, 0))
+    return ret;
+  preorder (dfa->str_tree, calc_next, dfa);
+  ret = preorder (dfa->str_tree, link_nfa_nodes, dfa);
+  if (BE (ret != REG_NOERROR, 0))
+    return ret;
+  ret = calc_eclosure (dfa);
+  if (BE (ret != REG_NOERROR, 0))
+    return ret;
+
+  /* We only need this during the prune_impossible_nodes pass in regexec.c;
+     skip it if p_i_n will not run, as calc_inveclosure can be quadratic.  */
+  if ((!preg->no_sub && preg->re_nsub > 0 && dfa->has_plural_match)
+      || dfa->nbackref)
+    {
+      dfa->inveclosures = re_malloc (re_node_set, dfa->nodes_len);
+      if (BE (dfa->inveclosures == NULL, 0))
+       return REG_ESPACE;
+      ret = calc_inveclosure (dfa);
+    }
+
+  return ret;
+}
+
+/* Our parse trees are very unbalanced, so we cannot use a stack to
+   implement parse tree visits.  Instead, we use parent pointers and
+   some hairy code in these two functions.  */
+static reg_errcode_t
+postorder (bin_tree_t *root, reg_errcode_t (fn (void *, bin_tree_t *)),
+          void *extra)
+{
+  bin_tree_t *node, *prev;
+
+  for (node = root; ; )
+    {
+      /* Descend down the tree, preferably to the left (or to the right
+        if that's the only child).  */
+      while (node->left || node->right)
+       if (node->left)
+         node = node->left;
+       else
+         node = node->right;
+
+      do
+       {
+         reg_errcode_t err = fn (extra, node);
+         if (BE (err != REG_NOERROR, 0))
+           return err;
+         if (node->parent == NULL)
+           return REG_NOERROR;
+         prev = node;
+         node = node->parent;
+       }
+      /* Go up while we have a node that is reached from the right.  */
+      while (node->right == prev || node->right == NULL);
+      node = node->right;
+    }
+}
+
+static reg_errcode_t
+preorder (bin_tree_t *root, reg_errcode_t (fn (void *, bin_tree_t *)),
+         void *extra)
+{
+  bin_tree_t *node;
+
+  for (node = root; ; )
+    {
+      reg_errcode_t err = fn (extra, node);
+      if (BE (err != REG_NOERROR, 0))
+       return err;
+
+      /* Go to the left node, or up and to the right.  */
+      if (node->left)
+       node = node->left;
+      else
+       {
+         bin_tree_t *prev = NULL;
+         while (node->right == prev || node->right == NULL)
+           {
+             prev = node;
+             node = node->parent;
+             if (!node)
+               return REG_NOERROR;
+           }
+         node = node->right;
+       }
+    }
+}
+
+/* Optimization pass: if a SUBEXP is entirely contained, strip it and tell
+   re_search_internal to map the inner one's opr.idx to this one's.  Adjust
+   backreferences as well.  Requires a preorder visit.  */
+static reg_errcode_t
+optimize_subexps (void *extra, bin_tree_t *node)
+{
+  re_dfa_t *dfa = (re_dfa_t *) extra;
+
+  if (node->token.type == OP_BACK_REF && dfa->subexp_map)
+    {
+      int idx = node->token.opr.idx;
+      node->token.opr.idx = dfa->subexp_map[idx];
+      dfa->used_bkref_map |= 1 << node->token.opr.idx;
+    }
+
+  else if (node->token.type == SUBEXP
+          && node->left && node->left->token.type == SUBEXP)
+    {
+      Idx other_idx = node->left->token.opr.idx;
+
+      node->left = node->left->left;
+      if (node->left)
+       node->left->parent = node;
+
+      dfa->subexp_map[other_idx] = dfa->subexp_map[node->token.opr.idx];
+      if (other_idx < BITSET_WORD_BITS)
+       dfa->used_bkref_map &= ~((bitset_word_t) 1 << other_idx);
+    }
+
+  return REG_NOERROR;
+}
+
+/* Lowering pass: Turn each SUBEXP node into the appropriate concatenation
+   of OP_OPEN_SUBEXP, the body of the SUBEXP (if any) and OP_CLOSE_SUBEXP.  */
+static reg_errcode_t
+lower_subexps (void *extra, bin_tree_t *node)
+{
+  regex_t *preg = (regex_t *) extra;
+  reg_errcode_t err = REG_NOERROR;
+
+  if (node->left && node->left->token.type == SUBEXP)
+    {
+      node->left = lower_subexp (&err, preg, node->left);
+      if (node->left)
+       node->left->parent = node;
+    }
+  if (node->right && node->right->token.type == SUBEXP)
+    {
+      node->right = lower_subexp (&err, preg, node->right);
+      if (node->right)
+       node->right->parent = node;
+    }
+
+  return err;
+}
+
+static bin_tree_t *
+lower_subexp (reg_errcode_t *err, regex_t *preg, bin_tree_t *node)
+{
+  re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
+  bin_tree_t *body = node->left;
+  bin_tree_t *op, *cls, *tree1, *tree;
+
+  if (preg->no_sub
+      /* We do not optimize empty subexpressions, because otherwise we may
+        have bad CONCAT nodes with NULL children.  This is obviously not
+        very common, so we do not lose much.  An example that triggers
+        this case is the sed "script" /\(\)/x.  */
+      && node->left != NULL
+      && (node->token.opr.idx >= BITSET_WORD_BITS
+         || !(dfa->used_bkref_map
+              & ((bitset_word_t) 1 << node->token.opr.idx))))
+    return node->left;
+
+  /* Convert the SUBEXP node to the concatenation of an
+     OP_OPEN_SUBEXP, the contents, and an OP_CLOSE_SUBEXP.  */
+  op = create_tree (dfa, NULL, NULL, OP_OPEN_SUBEXP);
+  cls = create_tree (dfa, NULL, NULL, OP_CLOSE_SUBEXP);
+  tree1 = body ? create_tree (dfa, body, cls, CONCAT) : cls;
+  tree = create_tree (dfa, op, tree1, CONCAT);
+  if (BE (tree == NULL || tree1 == NULL || op == NULL || cls == NULL, 0))
+    {
+      *err = REG_ESPACE;
+      return NULL;
+    }
+
+  op->token.opr.idx = cls->token.opr.idx = node->token.opr.idx;
+  op->token.opt_subexp = cls->token.opt_subexp = node->token.opt_subexp;
+  return tree;
+}
+
+/* Pass 1 in building the NFA: compute FIRST and create unlinked automaton
+   nodes.  Requires a postorder visit.  */
+static reg_errcode_t
+calc_first (void *extra, bin_tree_t *node)
+{
+  re_dfa_t *dfa = (re_dfa_t *) extra;
+  if (node->token.type == CONCAT)
+    {
+      node->first = node->left->first;
+      node->node_idx = node->left->node_idx;
+    }
+  else
+    {
+      node->first = node;
+      node->node_idx = re_dfa_add_node (dfa, node->token);
+      if (BE (node->node_idx == REG_MISSING, 0))
+       return REG_ESPACE;
+      if (node->token.type == ANCHOR)
+       dfa->nodes[node->node_idx].constraint = node->token.opr.ctx_type;
+    }
+  return REG_NOERROR;
+}
+
+/* Pass 2: compute NEXT on the tree.  Preorder visit.  */
+static reg_errcode_t
+calc_next (void *extra, bin_tree_t *node)
+{
+  switch (node->token.type)
+    {
+    case OP_DUP_ASTERISK:
+      node->left->next = node;
+      break;
+    case CONCAT:
+      node->left->next = node->right->first;
+      node->right->next = node->next;
+      break;
+    default:
+      if (node->left)
+       node->left->next = node->next;
+      if (node->right)
+       node->right->next = node->next;
+      break;
+    }
+  return REG_NOERROR;
+}
+
+/* Pass 3: link all DFA nodes to their NEXT node (any order will do).  */
+static reg_errcode_t
+link_nfa_nodes (void *extra, bin_tree_t *node)
+{
+  re_dfa_t *dfa = (re_dfa_t *) extra;
+  Idx idx = node->node_idx;
+  reg_errcode_t err = REG_NOERROR;
+
+  switch (node->token.type)
+    {
+    case CONCAT:
+      break;
+
+    case END_OF_RE:
+      assert (node->next == NULL);
+      break;
+
+    case OP_DUP_ASTERISK:
+    case OP_ALT:
+      {
+       Idx left, right;
+       dfa->has_plural_match = 1;
+       if (node->left != NULL)
+         left = node->left->first->node_idx;
+       else
+         left = node->next->node_idx;
+       if (node->right != NULL)
+         right = node->right->first->node_idx;
+       else
+         right = node->next->node_idx;
+       assert (REG_VALID_INDEX (left));
+       assert (REG_VALID_INDEX (right));
+       err = re_node_set_init_2 (dfa->edests + idx, left, right);
+      }
+      break;
+
+    case ANCHOR:
+    case OP_OPEN_SUBEXP:
+    case OP_CLOSE_SUBEXP:
+      err = re_node_set_init_1 (dfa->edests + idx, node->next->node_idx);
+      break;
+
+    case OP_BACK_REF:
+      dfa->nexts[idx] = node->next->node_idx;
+      if (node->token.type == OP_BACK_REF)
+       err = re_node_set_init_1 (dfa->edests + idx, dfa->nexts[idx]);
+      break;
+
+    default:
+      assert (!IS_EPSILON_NODE (node->token.type));
+      dfa->nexts[idx] = node->next->node_idx;
+      break;
+    }
+
+  return err;
+}
+
+/* Duplicate the epsilon closure of the node ROOT_NODE.
+   Note that duplicated nodes have constraint INIT_CONSTRAINT in addition
+   to their own constraint.  */
+
+static reg_errcode_t
+internal_function
+duplicate_node_closure (re_dfa_t *dfa, Idx top_org_node, Idx top_clone_node,
+                       Idx root_node, unsigned int init_constraint)
+{
+  Idx org_node, clone_node;
+  bool ok;
+  unsigned int constraint = init_constraint;
+  for (org_node = top_org_node, clone_node = top_clone_node;;)
+    {
+      Idx org_dest, clone_dest;
+      if (dfa->nodes[org_node].type == OP_BACK_REF)
+       {
+         /* If the back reference epsilon-transit, its destination must
+            also have the constraint.  Then duplicate the epsilon closure
+            of the destination of the back reference, and store it in
+            edests of the back reference.  */
+         org_dest = dfa->nexts[org_node];
+         re_node_set_empty (dfa->edests + clone_node);
+         clone_dest = duplicate_node (dfa, org_dest, constraint);
+         if (BE (clone_dest == REG_MISSING, 0))
+           return REG_ESPACE;
+         dfa->nexts[clone_node] = dfa->nexts[org_node];
+         ok = re_node_set_insert (dfa->edests + clone_node, clone_dest);
+         if (BE (! ok, 0))
+           return REG_ESPACE;
+       }
+      else if (dfa->edests[org_node].nelem == 0)
+       {
+         /* In case of the node can't epsilon-transit, don't duplicate the
+            destination and store the original destination as the
+            destination of the node.  */
+         dfa->nexts[clone_node] = dfa->nexts[org_node];
+         break;
+       }
+      else if (dfa->edests[org_node].nelem == 1)
+       {
+         /* In case of the node can epsilon-transit, and it has only one
+            destination.  */
+         org_dest = dfa->edests[org_node].elems[0];
+         re_node_set_empty (dfa->edests + clone_node);
+         /* If the node is root_node itself, it means the epsilon closure
+            has a loop.  Then tie it to the destination of the root_node.  */
+         if (org_node == root_node && clone_node != org_node)
+           {
+             ok = re_node_set_insert (dfa->edests + clone_node, org_dest);
+             if (BE (! ok, 0))
+               return REG_ESPACE;
+             break;
+           }
+         /* In case the node has another constraint, append it.  */
+         constraint |= dfa->nodes[org_node].constraint;
+         clone_dest = duplicate_node (dfa, org_dest, constraint);
+         if (BE (clone_dest == REG_MISSING, 0))
+           return REG_ESPACE;
+         ok = re_node_set_insert (dfa->edests + clone_node, clone_dest);
+         if (BE (! ok, 0))
+           return REG_ESPACE;
+       }
+      else /* dfa->edests[org_node].nelem == 2 */
+       {
+         /* In case of the node can epsilon-transit, and it has two
+            destinations. In the bin_tree_t and DFA, that's '|' and '*'.   */
+         org_dest = dfa->edests[org_node].elems[0];
+         re_node_set_empty (dfa->edests + clone_node);
+         /* Search for a duplicated node which satisfies the constraint.  */
+         clone_dest = search_duplicated_node (dfa, org_dest, constraint);
+         if (clone_dest == REG_MISSING)
+           {
+             /* There is no such duplicated node, create a new one.  */
+             reg_errcode_t err;
+             clone_dest = duplicate_node (dfa, org_dest, constraint);
+             if (BE (clone_dest == REG_MISSING, 0))
+               return REG_ESPACE;
+             ok = re_node_set_insert (dfa->edests + clone_node, clone_dest);
+             if (BE (! ok, 0))
+               return REG_ESPACE;
+             err = duplicate_node_closure (dfa, org_dest, clone_dest,
+                                           root_node, constraint);
+             if (BE (err != REG_NOERROR, 0))
+               return err;
+           }
+         else
+           {
+             /* There is a duplicated node which satisfies the constraint,
+                use it to avoid infinite loop.  */
+             ok = re_node_set_insert (dfa->edests + clone_node, clone_dest);
+             if (BE (! ok, 0))
+               return REG_ESPACE;
+           }
+
+         org_dest = dfa->edests[org_node].elems[1];
+         clone_dest = duplicate_node (dfa, org_dest, constraint);
+         if (BE (clone_dest == REG_MISSING, 0))
+           return REG_ESPACE;
+         ok = re_node_set_insert (dfa->edests + clone_node, clone_dest);
+         if (BE (! ok, 0))
+           return REG_ESPACE;
+       }
+      org_node = org_dest;
+      clone_node = clone_dest;
+    }
+  return REG_NOERROR;
+}
+
+/* Search for a node which is duplicated from the node ORG_NODE, and
+   satisfies the constraint CONSTRAINT.  */
+
+static Idx
+search_duplicated_node (const re_dfa_t *dfa, Idx org_node,
+                       unsigned int constraint)
+{
+  Idx idx;
+  for (idx = dfa->nodes_len - 1; dfa->nodes[idx].duplicated && idx > 0; --idx)
+    {
+      if (org_node == dfa->org_indices[idx]
+         && constraint == dfa->nodes[idx].constraint)
+       return idx; /* Found.  */
+    }
+  return REG_MISSING; /* Not found.  */
+}
+
+/* Duplicate the node whose index is ORG_IDX and set the constraint CONSTRAINT.
+   Return the index of the new node, or REG_MISSING if insufficient storage is
+   available.  */
+
+static Idx
+duplicate_node (re_dfa_t *dfa, Idx org_idx, unsigned int constraint)
+{
+  Idx dup_idx = re_dfa_add_node (dfa, dfa->nodes[org_idx]);
+  if (BE (dup_idx != REG_MISSING, 1))
+    {
+      dfa->nodes[dup_idx].constraint = constraint;
+      dfa->nodes[dup_idx].constraint |= dfa->nodes[org_idx].constraint;
+      dfa->nodes[dup_idx].duplicated = 1;
+
+      /* Store the index of the original node.  */
+      dfa->org_indices[dup_idx] = org_idx;
+    }
+  return dup_idx;
+}
+
+static reg_errcode_t
+calc_inveclosure (re_dfa_t *dfa)
+{
+  Idx src, idx;
+  bool ok;
+  for (idx = 0; idx < dfa->nodes_len; ++idx)
+    re_node_set_init_empty (dfa->inveclosures + idx);
+
+  for (src = 0; src < dfa->nodes_len; ++src)
+    {
+      Idx *elems = dfa->eclosures[src].elems;
+      for (idx = 0; idx < dfa->eclosures[src].nelem; ++idx)
+       {
+         ok = re_node_set_insert_last (dfa->inveclosures + elems[idx], src);
+         if (BE (! ok, 0))
+           return REG_ESPACE;
+       }
+    }
+
+  return REG_NOERROR;
+}
+
+/* Calculate "eclosure" for all the node in DFA.  */
+
+static reg_errcode_t
+calc_eclosure (re_dfa_t *dfa)
+{
+  Idx node_idx;
+  bool incomplete;
+#ifdef DEBUG
+  assert (dfa->nodes_len > 0);
+#endif
+  incomplete = false;
+  /* For each nodes, calculate epsilon closure.  */
+  for (node_idx = 0; ; ++node_idx)
+    {
+      reg_errcode_t err;
+      re_node_set eclosure_elem;
+      if (node_idx == dfa->nodes_len)
+       {
+         if (!incomplete)
+           break;
+         incomplete = false;
+         node_idx = 0;
+       }
+
+#ifdef DEBUG
+      assert (dfa->eclosures[node_idx].nelem != REG_MISSING);
+#endif
+
+      /* If we have already calculated, skip it.  */
+      if (dfa->eclosures[node_idx].nelem != 0)
+       continue;
+      /* Calculate epsilon closure of `node_idx'.  */
+      err = calc_eclosure_iter (&eclosure_elem, dfa, node_idx, true);
+      if (BE (err != REG_NOERROR, 0))
+       return err;
+
+      if (dfa->eclosures[node_idx].nelem == 0)
+       {
+         incomplete = true;
+         re_node_set_free (&eclosure_elem);
+       }
+    }
+  return REG_NOERROR;
+}
+
+/* Calculate epsilon closure of NODE.  */
+
+static reg_errcode_t
+calc_eclosure_iter (re_node_set *new_set, re_dfa_t *dfa, Idx node, bool root)
+{
+  reg_errcode_t err;
+  Idx i;
+  re_node_set eclosure;
+  bool ok;
+  bool incomplete = false;
+  err = re_node_set_alloc (&eclosure, dfa->edests[node].nelem + 1);
+  if (BE (err != REG_NOERROR, 0))
+    return err;
+
+  /* This indicates that we are calculating this node now.
+     We reference this value to avoid infinite loop.  */
+  dfa->eclosures[node].nelem = REG_MISSING;
+
+  /* If the current node has constraints, duplicate all nodes
+     since they must inherit the constraints.  */
+  if (dfa->nodes[node].constraint
+      && dfa->edests[node].nelem
+      && !dfa->nodes[dfa->edests[node].elems[0]].duplicated)
+    {
+      err = duplicate_node_closure (dfa, node, node, node,
+                                   dfa->nodes[node].constraint);
+      if (BE (err != REG_NOERROR, 0))
+       return err;
+    }
+
+  /* Expand each epsilon destination nodes.  */
+  if (IS_EPSILON_NODE(dfa->nodes[node].type))
+    for (i = 0; i < dfa->edests[node].nelem; ++i)
+      {
+       re_node_set eclosure_elem;
+       Idx edest = dfa->edests[node].elems[i];
+       /* If calculating the epsilon closure of `edest' is in progress,
+          return intermediate result.  */
+       if (dfa->eclosures[edest].nelem == REG_MISSING)
+         {
+           incomplete = true;
+           continue;
+         }
+       /* If we haven't calculated the epsilon closure of `edest' yet,
+          calculate now. Otherwise use calculated epsilon closure.  */
+       if (dfa->eclosures[edest].nelem == 0)
+         {
+           err = calc_eclosure_iter (&eclosure_elem, dfa, edest, false);
+           if (BE (err != REG_NOERROR, 0))
+             return err;
+         }
+       else
+         eclosure_elem = dfa->eclosures[edest];
+       /* Merge the epsilon closure of `edest'.  */
+       err = re_node_set_merge (&eclosure, &eclosure_elem);
+       if (BE (err != REG_NOERROR, 0))
+         return err;
+       /* If the epsilon closure of `edest' is incomplete,
+          the epsilon closure of this node is also incomplete.  */
+       if (dfa->eclosures[edest].nelem == 0)
+         {
+           incomplete = true;
+           re_node_set_free (&eclosure_elem);
+         }
+      }
+
+  /* An epsilon closure includes itself.  */
+  ok = re_node_set_insert (&eclosure, node);
+  if (BE (! ok, 0))
+    return REG_ESPACE;
+  if (incomplete && !root)
+    dfa->eclosures[node].nelem = 0;
+  else
+    dfa->eclosures[node] = eclosure;
+  *new_set = eclosure;
+  return REG_NOERROR;
+}
+\f
+/* Functions for token which are used in the parser.  */
+
+/* Fetch a token from INPUT.
+   We must not use this function inside bracket expressions.  */
+
+static void
+internal_function
+fetch_token (re_token_t *result, re_string_t *input, reg_syntax_t syntax)
+{
+  re_string_skip_bytes (input, peek_token (result, input, syntax));
+}
+
+/* Peek a token from INPUT, and return the length of the token.
+   We must not use this function inside bracket expressions.  */
+
+static int
+internal_function
+peek_token (re_token_t *token, re_string_t *input, reg_syntax_t syntax)
+{
+  unsigned char c;
+
+  if (re_string_eoi (input))
+    {
+      token->type = END_OF_RE;
+      return 0;
+    }
+
+  c = re_string_peek_byte (input, 0);
+  token->opr.c = c;
+
+  token->word_char = 0;
+#ifdef RE_ENABLE_I18N
+  token->mb_partial = 0;
+  if (input->mb_cur_max > 1 &&
+      !re_string_first_byte (input, re_string_cur_idx (input)))
+    {
+      token->type = CHARACTER;
+      token->mb_partial = 1;
+      return 1;
+    }
+#endif
+  if (c == '\\')
+    {
+      unsigned char c2;
+      if (re_string_cur_idx (input) + 1 >= re_string_length (input))
+       {
+         token->type = BACK_SLASH;
+         return 1;
+       }
+
+      c2 = re_string_peek_byte_case (input, 1);
+      token->opr.c = c2;
+      token->type = CHARACTER;
+#ifdef RE_ENABLE_I18N
+      if (input->mb_cur_max > 1)
+       {
+         wint_t wc = re_string_wchar_at (input,
+                                         re_string_cur_idx (input) + 1);
+         token->word_char = IS_WIDE_WORD_CHAR (wc) != 0;
+       }
+      else
+#endif
+       token->word_char = IS_WORD_CHAR (c2) != 0;
+
+      switch (c2)
+       {
+       case '|':
+         if (!(syntax & RE_LIMITED_OPS) && !(syntax & RE_NO_BK_VBAR))
+           token->type = OP_ALT;
+         break;
+       case '1': case '2': case '3': case '4': case '5':
+       case '6': case '7': case '8': case '9':
+         if (!(syntax & RE_NO_BK_REFS))
+           {
+             token->type = OP_BACK_REF;
+             token->opr.idx = c2 - '1';
+           }
+         break;
+       case '<':
+         if (!(syntax & RE_NO_GNU_OPS))
+           {
+             token->type = ANCHOR;
+             token->opr.ctx_type = WORD_FIRST;
+           }
+         break;
+       case '>':
+         if (!(syntax & RE_NO_GNU_OPS))
+           {
+             token->type = ANCHOR;
+             token->opr.ctx_type = WORD_LAST;
+           }
+         break;
+       case 'b':
+         if (!(syntax & RE_NO_GNU_OPS))
+           {
+             token->type = ANCHOR;
+             token->opr.ctx_type = WORD_DELIM;
+           }
+         break;
+       case 'B':
+         if (!(syntax & RE_NO_GNU_OPS))
+           {
+             token->type = ANCHOR;
+             token->opr.ctx_type = NOT_WORD_DELIM;
+           }
+         break;
+       case 'w':
+         if (!(syntax & RE_NO_GNU_OPS))
+           token->type = OP_WORD;
+         break;
+       case 'W':
+         if (!(syntax & RE_NO_GNU_OPS))
+           token->type = OP_NOTWORD;
+         break;
+       case 's':
+         if (!(syntax & RE_NO_GNU_OPS))
+           token->type = OP_SPACE;
+         break;
+       case 'S':
+         if (!(syntax & RE_NO_GNU_OPS))
+           token->type = OP_NOTSPACE;
+         break;
+       case '`':
+         if (!(syntax & RE_NO_GNU_OPS))
+           {
+             token->type = ANCHOR;
+             token->opr.ctx_type = BUF_FIRST;
+           }
+         break;
+       case '\'':
+         if (!(syntax & RE_NO_GNU_OPS))
+           {
+             token->type = ANCHOR;
+             token->opr.ctx_type = BUF_LAST;
+           }
+         break;
+       case '(':
+         if (!(syntax & RE_NO_BK_PARENS))
+           token->type = OP_OPEN_SUBEXP;
+         break;
+       case ')':
+         if (!(syntax & RE_NO_BK_PARENS))
+           token->type = OP_CLOSE_SUBEXP;
+         break;
+       case '+':
+         if (!(syntax & RE_LIMITED_OPS) && (syntax & RE_BK_PLUS_QM))
+           token->type = OP_DUP_PLUS;
+         break;
+       case '?':
+         if (!(syntax & RE_LIMITED_OPS) && (syntax & RE_BK_PLUS_QM))
+           token->type = OP_DUP_QUESTION;
+         break;
+       case '{':
+         if ((syntax & RE_INTERVALS) && (!(syntax & RE_NO_BK_BRACES)))
+           token->type = OP_OPEN_DUP_NUM;
+         break;
+       case '}':
+         if ((syntax & RE_INTERVALS) && (!(syntax & RE_NO_BK_BRACES)))
+           token->type = OP_CLOSE_DUP_NUM;
+         break;
+       default:
+         break;
+       }
+      return 2;
+    }
+
+  token->type = CHARACTER;
+#ifdef RE_ENABLE_I18N
+  if (input->mb_cur_max > 1)
+    {
+      wint_t wc = re_string_wchar_at (input, re_string_cur_idx (input));
+      token->word_char = IS_WIDE_WORD_CHAR (wc) != 0;
+    }
+  else
+#endif
+    token->word_char = IS_WORD_CHAR (token->opr.c);
+
+  switch (c)
+    {
+    case '\n':
+      if (syntax & RE_NEWLINE_ALT)
+       token->type = OP_ALT;
+      break;
+    case '|':
+      if (!(syntax & RE_LIMITED_OPS) && (syntax & RE_NO_BK_VBAR))
+       token->type = OP_ALT;
+      break;
+    case '*':
+      token->type = OP_DUP_ASTERISK;
+      break;
+    case '+':
+      if (!(syntax & RE_LIMITED_OPS) && !(syntax & RE_BK_PLUS_QM))
+       token->type = OP_DUP_PLUS;
+      break;
+    case '?':
+      if (!(syntax & RE_LIMITED_OPS) && !(syntax & RE_BK_PLUS_QM))
+       token->type = OP_DUP_QUESTION;
+      break;
+    case '{':
+      if ((syntax & RE_INTERVALS) && (syntax & RE_NO_BK_BRACES))
+       token->type = OP_OPEN_DUP_NUM;
+      break;
+    case '}':
+      if ((syntax & RE_INTERVALS) && (syntax & RE_NO_BK_BRACES))
+       token->type = OP_CLOSE_DUP_NUM;
+      break;
+    case '(':
+      if (syntax & RE_NO_BK_PARENS)
+       token->type = OP_OPEN_SUBEXP;
+      break;
+    case ')':
+      if (syntax & RE_NO_BK_PARENS)
+       token->type = OP_CLOSE_SUBEXP;
+      break;
+    case '[':
+      token->type = OP_OPEN_BRACKET;
+      break;
+    case '.':
+      token->type = OP_PERIOD;
+      break;
+    case '^':
+      if (!(syntax & (RE_CONTEXT_INDEP_ANCHORS | RE_CARET_ANCHORS_HERE)) &&
+         re_string_cur_idx (input) != 0)
+       {
+         char prev = re_string_peek_byte (input, -1);
+         if (!(syntax & RE_NEWLINE_ALT) || prev != '\n')
+           break;
+       }
+      token->type = ANCHOR;
+      token->opr.ctx_type = LINE_FIRST;
+      break;
+    case '$':
+      if (!(syntax & RE_CONTEXT_INDEP_ANCHORS) &&
+         re_string_cur_idx (input) + 1 != re_string_length (input))
+       {
+         re_token_t next;
+         re_string_skip_bytes (input, 1);
+         peek_token (&next, input, syntax);
+         re_string_skip_bytes (input, -1);
+         if (next.type != OP_ALT && next.type != OP_CLOSE_SUBEXP)
+           break;
+       }
+      token->type = ANCHOR;
+      token->opr.ctx_type = LINE_LAST;
+      break;
+    default:
+      break;
+    }
+  return 1;
+}
+
+/* Peek a token from INPUT, and return the length of the token.
+   We must not use this function out of bracket expressions.  */
+
+static int
+internal_function
+peek_token_bracket (re_token_t *token, re_string_t *input, reg_syntax_t syntax)
+{
+  unsigned char c;
+  if (re_string_eoi (input))
+    {
+      token->type = END_OF_RE;
+      return 0;
+    }
+  c = re_string_peek_byte (input, 0);
+  token->opr.c = c;
+
+#ifdef RE_ENABLE_I18N
+  if (input->mb_cur_max > 1 &&
+      !re_string_first_byte (input, re_string_cur_idx (input)))
+    {
+      token->type = CHARACTER;
+      return 1;
+    }
+#endif /* RE_ENABLE_I18N */
+
+  if (c == '\\' && (syntax & RE_BACKSLASH_ESCAPE_IN_LISTS)
+      && re_string_cur_idx (input) + 1 < re_string_length (input))
+    {
+      /* In this case, '\' escape a character.  */
+      unsigned char c2;
+      re_string_skip_bytes (input, 1);
+      c2 = re_string_peek_byte (input, 0);
+      token->opr.c = c2;
+      token->type = CHARACTER;
+      return 1;
+    }
+  if (c == '[') /* '[' is a special char in a bracket exps.  */
+    {
+      unsigned char c2;
+      int token_len;
+      if (re_string_cur_idx (input) + 1 < re_string_length (input))
+       c2 = re_string_peek_byte (input, 1);
+      else
+       c2 = 0;
+      token->opr.c = c2;
+      token_len = 2;
+      switch (c2)
+       {
+       case '.':
+         token->type = OP_OPEN_COLL_ELEM;
+         break;
+       case '=':
+         token->type = OP_OPEN_EQUIV_CLASS;
+         break;
+       case ':':
+         if (syntax & RE_CHAR_CLASSES)
+           {
+             token->type = OP_OPEN_CHAR_CLASS;
+             break;
+           }
+         /* else fall through.  */
+       default:
+         token->type = CHARACTER;
+         token->opr.c = c;
+         token_len = 1;
+         break;
+       }
+      return token_len;
+    }
+  switch (c)
+    {
+    case '-':
+      token->type = OP_CHARSET_RANGE;
+      break;
+    case ']':
+      token->type = OP_CLOSE_BRACKET;
+      break;
+    case '^':
+      token->type = OP_NON_MATCH_LIST;
+      break;
+    default:
+      token->type = CHARACTER;
+    }
+  return 1;
+}
+\f
+/* Functions for parser.  */
+
+/* Entry point of the parser.
+   Parse the regular expression REGEXP and return the structure tree.
+   If an error is occured, ERR is set by error code, and return NULL.
+   This function build the following tree, from regular expression <reg_exp>:
+          CAT
+          / \
+         /   \
+   <reg_exp>  EOR
+
+   CAT means concatenation.
+   EOR means end of regular expression.  */
+
+static bin_tree_t *
+parse (re_string_t *regexp, regex_t *preg, reg_syntax_t syntax,
+       reg_errcode_t *err)
+{
+  re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
+  bin_tree_t *tree, *eor, *root;
+  re_token_t current_token;
+  dfa->syntax = syntax;
+  fetch_token (&current_token, regexp, syntax | RE_CARET_ANCHORS_HERE);
+  tree = parse_reg_exp (regexp, preg, &current_token, syntax, 0, err);
+  if (BE (*err != REG_NOERROR && tree == NULL, 0))
+    return NULL;
+  eor = create_tree (dfa, NULL, NULL, END_OF_RE);
+  if (tree != NULL)
+    root = create_tree (dfa, tree, eor, CONCAT);
+  else
+    root = eor;
+  if (BE (eor == NULL || root == NULL, 0))
+    {
+      *err = REG_ESPACE;
+      return NULL;
+    }
+  return root;
+}
+
+/* This function build the following tree, from regular expression
+   <branch1>|<branch2>:
+          ALT
+          / \
+         /   \
+   <branch1> <branch2>
+
+   ALT means alternative, which represents the operator `|'.  */
+
+static bin_tree_t *
+parse_reg_exp (re_string_t *regexp, regex_t *preg, re_token_t *token,
+              reg_syntax_t syntax, Idx nest, reg_errcode_t *err)
+{
+  re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
+  bin_tree_t *tree, *branch = NULL;
+  tree = parse_branch (regexp, preg, token, syntax, nest, err);
+  if (BE (*err != REG_NOERROR && tree == NULL, 0))
+    return NULL;
+
+  while (token->type == OP_ALT)
+    {
+      fetch_token (token, regexp, syntax | RE_CARET_ANCHORS_HERE);
+      if (token->type != OP_ALT && token->type != END_OF_RE
+         && (nest == 0 || token->type != OP_CLOSE_SUBEXP))
+       {
+         branch = parse_branch (regexp, preg, token, syntax, nest, err);
+         if (BE (*err != REG_NOERROR && branch == NULL, 0))
+           return NULL;
+       }
+      else
+       branch = NULL;
+      tree = create_tree (dfa, tree, branch, OP_ALT);
+      if (BE (tree == NULL, 0))
+       {
+         *err = REG_ESPACE;
+         return NULL;
+       }
+    }
+  return tree;
+}
+
+/* This function build the following tree, from regular expression
+   <exp1><exp2>:
+       CAT
+       / \
+       /   \
+   <exp1> <exp2>
+
+   CAT means concatenation.  */
+
+static bin_tree_t *
+parse_branch (re_string_t *regexp, regex_t *preg, re_token_t *token,
+             reg_syntax_t syntax, Idx nest, reg_errcode_t *err)
+{
+  bin_tree_t *tree, *expr;
+  re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
+  tree = parse_expression (regexp, preg, token, syntax, nest, err);
+  if (BE (*err != REG_NOERROR && tree == NULL, 0))
+    return NULL;
+
+  while (token->type != OP_ALT && token->type != END_OF_RE
+        && (nest == 0 || token->type != OP_CLOSE_SUBEXP))
+    {
+      expr = parse_expression (regexp, preg, token, syntax, nest, err);
+      if (BE (*err != REG_NOERROR && expr == NULL, 0))
+       {
+         return NULL;
+       }
+      if (tree != NULL && expr != NULL)
+       {
+         tree = create_tree (dfa, tree, expr, CONCAT);
+         if (tree == NULL)
+           {
+             *err = REG_ESPACE;
+             return NULL;
+           }
+       }
+      else if (tree == NULL)
+       tree = expr;
+      /* Otherwise expr == NULL, we don't need to create new tree.  */
+    }
+  return tree;
+}
+
+/* This function build the following tree, from regular expression a*:
+        *
+        |
+        a
+*/
+
+static bin_tree_t *
+parse_expression (re_string_t *regexp, regex_t *preg, re_token_t *token,
+                 reg_syntax_t syntax, Idx nest, reg_errcode_t *err)
+{
+  re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
+  bin_tree_t *tree;
+  switch (token->type)
+    {
+    case CHARACTER:
+      tree = create_token_tree (dfa, NULL, NULL, token);
+      if (BE (tree == NULL, 0))
+       {
+         *err = REG_ESPACE;
+         return NULL;
+       }
+#ifdef RE_ENABLE_I18N
+      if (dfa->mb_cur_max > 1)
+       {
+         while (!re_string_eoi (regexp)
+                && !re_string_first_byte (regexp, re_string_cur_idx (regexp)))
+           {
+             bin_tree_t *mbc_remain;
+             fetch_token (token, regexp, syntax);
+             mbc_remain = create_token_tree (dfa, NULL, NULL, token);
+             tree = create_tree (dfa, tree, mbc_remain, CONCAT);
+             if (BE (mbc_remain == NULL || tree == NULL, 0))
+               {
+                 *err = REG_ESPACE;
+                 return NULL;
+               }
+           }
+       }
+#endif
+      break;
+    case OP_OPEN_SUBEXP:
+      tree = parse_sub_exp (regexp, preg, token, syntax, nest + 1, err);
+      if (BE (*err != REG_NOERROR && tree == NULL, 0))
+       return NULL;
+      break;
+    case OP_OPEN_BRACKET:
+      tree = parse_bracket_exp (regexp, dfa, token, syntax, err);
+      if (BE (*err != REG_NOERROR && tree == NULL, 0))
+       return NULL;
+      break;
+    case OP_BACK_REF:
+      if (!BE (dfa->completed_bkref_map & (1 << token->opr.idx), 1))
+       {
+         *err = REG_ESUBREG;
+         return NULL;
+       }
+      dfa->used_bkref_map |= 1 << token->opr.idx;
+      tree = create_token_tree (dfa, NULL, NULL, token);
+      if (BE (tree == NULL, 0))
+       {
+         *err = REG_ESPACE;
+         return NULL;
+       }
+      ++dfa->nbackref;
+      dfa->has_mb_node = 1;
+      break;
+    case OP_OPEN_DUP_NUM:
+      if (syntax & RE_CONTEXT_INVALID_DUP)
+       {
+         *err = REG_BADRPT;
+         return NULL;
+       }
+      /* FALLTHROUGH */
+    case OP_DUP_ASTERISK:
+    case OP_DUP_PLUS:
+    case OP_DUP_QUESTION:
+      if (syntax & RE_CONTEXT_INVALID_OPS)
+       {
+         *err = REG_BADRPT;
+         return NULL;
+       }
+      else if (syntax & RE_CONTEXT_INDEP_OPS)
+       {
+         fetch_token (token, regexp, syntax);
+         return parse_expression (regexp, preg, token, syntax, nest, err);
+       }
+      /* else fall through  */
+    case OP_CLOSE_SUBEXP:
+      if ((token->type == OP_CLOSE_SUBEXP) &&
+         !(syntax & RE_UNMATCHED_RIGHT_PAREN_ORD))
+       {
+         *err = REG_ERPAREN;
+         return NULL;
+       }
+      /* else fall through  */
+    case OP_CLOSE_DUP_NUM:
+      /* We treat it as a normal character.  */
+
+      /* Then we can these characters as normal characters.  */
+      token->type = CHARACTER;
+      /* mb_partial and word_char bits should be initialized already
+        by peek_token.  */
+      tree = create_token_tree (dfa, NULL, NULL, token);
+      if (BE (tree == NULL, 0))
+       {
+         *err = REG_ESPACE;
+         return NULL;
+       }
+      break;
+    case ANCHOR:
+      if ((token->opr.ctx_type
+          & (WORD_DELIM | NOT_WORD_DELIM | WORD_FIRST | WORD_LAST))
+         && dfa->word_ops_used == 0)
+       init_word_char (dfa);
+      if (token->opr.ctx_type == WORD_DELIM
+         || token->opr.ctx_type == NOT_WORD_DELIM)
+       {
+         bin_tree_t *tree_first, *tree_last;
+         if (token->opr.ctx_type == WORD_DELIM)
+           {
+             token->opr.ctx_type = WORD_FIRST;
+             tree_first = create_token_tree (dfa, NULL, NULL, token);
+             token->opr.ctx_type = WORD_LAST;
+           }
+         else
+           {
+             token->opr.ctx_type = INSIDE_WORD;
+             tree_first = create_token_tree (dfa, NULL, NULL, token);
+             token->opr.ctx_type = INSIDE_NOTWORD;
+           }
+         tree_last = create_token_tree (dfa, NULL, NULL, token);
+         tree = create_tree (dfa, tree_first, tree_last, OP_ALT);
+         if (BE (tree_first == NULL || tree_last == NULL || tree == NULL, 0))
+           {
+             *err = REG_ESPACE;
+             return NULL;
+           }
+       }
+      else
+       {
+         tree = create_token_tree (dfa, NULL, NULL, token);
+         if (BE (tree == NULL, 0))
+           {
+             *err = REG_ESPACE;
+             return NULL;
+           }
+       }
+      /* We must return here, since ANCHORs can't be followed
+        by repetition operators.
+        eg. RE"^*" is invalid or "<ANCHOR(^)><CHAR(*)>",
+            it must not be "<ANCHOR(^)><REPEAT(*)>".  */
+      fetch_token (token, regexp, syntax);
+      return tree;
+    case OP_PERIOD:
+      tree = create_token_tree (dfa, NULL, NULL, token);
+      if (BE (tree == NULL, 0))
+       {
+         *err = REG_ESPACE;
+         return NULL;
+       }
+      if (dfa->mb_cur_max > 1)
+       dfa->has_mb_node = 1;
+      break;
+    case OP_WORD:
+    case OP_NOTWORD:
+      tree = build_charclass_op (dfa, regexp->trans,
+                                (const unsigned char *) "alnum",
+                                (const unsigned char *) "_",
+                                token->type == OP_NOTWORD, err);
+      if (BE (*err != REG_NOERROR && tree == NULL, 0))
+       return NULL;
+      break;
+    case OP_SPACE:
+    case OP_NOTSPACE:
+      tree = build_charclass_op (dfa, regexp->trans,
+                                (const unsigned char *) "space",
+                                (const unsigned char *) "",
+                                token->type == OP_NOTSPACE, err);
+      if (BE (*err != REG_NOERROR && tree == NULL, 0))
+       return NULL;
+      break;
+    case OP_ALT:
+    case END_OF_RE:
+      return NULL;
+    case BACK_SLASH:
+      *err = REG_EESCAPE;
+      return NULL;
+    default:
+      /* Must not happen?  */
+#ifdef DEBUG
+      assert (0);
+#endif
+      return NULL;
+    }
+  fetch_token (token, regexp, syntax);
+
+  while (token->type == OP_DUP_ASTERISK || token->type == OP_DUP_PLUS
+        || token->type == OP_DUP_QUESTION || token->type == OP_OPEN_DUP_NUM)
+    {
+      tree = parse_dup_op (tree, regexp, dfa, token, syntax, err);
+      if (BE (*err != REG_NOERROR && tree == NULL, 0))
+       return NULL;
+      /* In BRE consecutive duplications are not allowed.  */
+      if ((syntax & RE_CONTEXT_INVALID_DUP)
+         && (token->type == OP_DUP_ASTERISK
+             || token->type == OP_OPEN_DUP_NUM))
+       {
+         *err = REG_BADRPT;
+         return NULL;
+       }
+    }
+
+  return tree;
+}
+
+/* This function build the following tree, from regular expression
+   (<reg_exp>):
+        SUBEXP
+           |
+       <reg_exp>
+*/
+
+static bin_tree_t *
+parse_sub_exp (re_string_t *regexp, regex_t *preg, re_token_t *token,
+              reg_syntax_t syntax, Idx nest, reg_errcode_t *err)
+{
+  re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
+  bin_tree_t *tree;
+  size_t cur_nsub;
+  cur_nsub = preg->re_nsub++;
+
+  fetch_token (token, regexp, syntax | RE_CARET_ANCHORS_HERE);
+
+  /* The subexpression may be a null string.  */
+  if (token->type == OP_CLOSE_SUBEXP)
+    tree = NULL;
+  else
+    {
+      tree = parse_reg_exp (regexp, preg, token, syntax, nest, err);
+      if (BE (*err == REG_NOERROR && token->type != OP_CLOSE_SUBEXP, 0))
+       *err = REG_EPAREN;
+      if (BE (*err != REG_NOERROR, 0))
+       return NULL;
+    }
+
+  if (cur_nsub <= '9' - '1')
+    dfa->completed_bkref_map |= 1 << cur_nsub;
+
+  tree = create_tree (dfa, tree, NULL, SUBEXP);
+  if (BE (tree == NULL, 0))
+    {
+      *err = REG_ESPACE;
+      return NULL;
+    }
+  tree->token.opr.idx = cur_nsub;
+  return tree;
+}
+
+/* This function parse repetition operators like "*", "+", "{1,3}" etc.  */
+
+static bin_tree_t *
+parse_dup_op (bin_tree_t *elem, re_string_t *regexp, re_dfa_t *dfa,
+             re_token_t *token, reg_syntax_t syntax, reg_errcode_t *err)
+{
+  bin_tree_t *tree = NULL, *old_tree = NULL;
+  Idx i, start, end, start_idx = re_string_cur_idx (regexp);
+  re_token_t start_token = *token;
+
+  if (token->type == OP_OPEN_DUP_NUM)
+    {
+      end = 0;
+      start = fetch_number (regexp, token, syntax);
+      if (start == REG_MISSING)
+       {
+         if (token->type == CHARACTER && token->opr.c == ',')
+           start = 0; /* We treat "{,m}" as "{0,m}".  */
+         else
+           {
+             *err = REG_BADBR; /* <re>{} is invalid.  */
+             return NULL;
+           }
+       }
+      if (BE (start != REG_ERROR, 1))
+       {
+         /* We treat "{n}" as "{n,n}".  */
+         end = ((token->type == OP_CLOSE_DUP_NUM) ? start
+                : ((token->type == CHARACTER && token->opr.c == ',')
+                   ? fetch_number (regexp, token, syntax) : REG_ERROR));
+       }
+      if (BE (start == REG_ERROR || end == REG_ERROR, 0))
+       {
+         /* Invalid sequence.  */
+         if (BE (!(syntax & RE_INVALID_INTERVAL_ORD), 0))
+           {
+             if (token->type == END_OF_RE)
+               *err = REG_EBRACE;
+             else
+               *err = REG_BADBR;
+
+             return NULL;
+           }
+
+         /* If the syntax bit is set, rollback.  */
+         re_string_set_index (regexp, start_idx);
+         *token = start_token;
+         token->type = CHARACTER;
+         /* mb_partial and word_char bits should be already initialized by
+            peek_token.  */
+         return elem;
+       }
+
+      if (BE ((end != REG_MISSING && start > end)
+             || token->type != OP_CLOSE_DUP_NUM, 0))
+       {
+         /* First number greater than second.  */
+         *err = REG_BADBR;
+         return NULL;
+       }
+    }
+  else
+    {
+      start = (token->type == OP_DUP_PLUS) ? 1 : 0;
+      end = (token->type == OP_DUP_QUESTION) ? 1 : REG_MISSING;
+    }
+
+  fetch_token (token, regexp, syntax);
+
+  if (BE (elem == NULL, 0))
+    return NULL;
+  if (BE (start == 0 && end == 0, 0))
+    {
+      postorder (elem, free_tree, NULL);
+      return NULL;
+    }
+
+  /* Extract "<re>{n,m}" to "<re><re>...<re><re>{0,<m-n>}".  */
+  if (BE (start > 0, 0))
+    {
+      tree = elem;
+      for (i = 2; i <= start; ++i)
+       {
+         elem = duplicate_tree (elem, dfa);
+         tree = create_tree (dfa, tree, elem, CONCAT);
+         if (BE (elem == NULL || tree == NULL, 0))
+           goto parse_dup_op_espace;
+       }
+
+      if (start == end)
+       return tree;
+
+      /* Duplicate ELEM before it is marked optional.  */
+      elem = duplicate_tree (elem, dfa);
+      old_tree = tree;
+    }
+  else
+    old_tree = NULL;
+
+  if (elem->token.type == SUBEXP)
+    postorder (elem, mark_opt_subexp, (void *) (long) elem->token.opr.idx);
+
+  tree = create_tree (dfa, elem, NULL,
+                     (end == REG_MISSING ? OP_DUP_ASTERISK : OP_ALT));
+  if (BE (tree == NULL, 0))
+    goto parse_dup_op_espace;
+
+/* From gnulib's "intprops.h":
+   True if the arithmetic type T is signed.  */
+#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
+
+  /* This loop is actually executed only when end != REG_MISSING,
+     to rewrite <re>{0,n} as (<re>(<re>...<re>?)?)?...  We have
+     already created the start+1-th copy.  */
+  if (TYPE_SIGNED (Idx) || end != REG_MISSING)
+    for (i = start + 2; i <= end; ++i)
+      {
+       elem = duplicate_tree (elem, dfa);
+       tree = create_tree (dfa, tree, elem, CONCAT);
+       if (BE (elem == NULL || tree == NULL, 0))
+         goto parse_dup_op_espace;
+
+       tree = create_tree (dfa, tree, NULL, OP_ALT);
+       if (BE (tree == NULL, 0))
+         goto parse_dup_op_espace;
+      }
+
+  if (old_tree)
+    tree = create_tree (dfa, old_tree, tree, CONCAT);
+
+  return tree;
+
+ parse_dup_op_espace:
+  *err = REG_ESPACE;
+  return NULL;
+}
+
+/* Size of the names for collating symbol/equivalence_class/character_class.
+   I'm not sure, but maybe enough.  */
+#define BRACKET_NAME_BUF_SIZE 32
+
+#ifndef _LIBC
+  /* Local function for parse_bracket_exp only used in case of NOT _LIBC.
+     Build the range expression which starts from START_ELEM, and ends
+     at END_ELEM.  The result are written to MBCSET and SBCSET.
+     RANGE_ALLOC is the allocated size of mbcset->range_starts, and
+     mbcset->range_ends, is a pointer argument sinse we may
+     update it.  */
+
+static reg_errcode_t
+internal_function
+# ifdef RE_ENABLE_I18N
+build_range_exp (const reg_syntax_t syntax,
+                 bitset_t sbcset,
+                 re_charset_t *mbcset,
+                 Idx *range_alloc,
+                 const bracket_elem_t *start_elem,
+                 const bracket_elem_t *end_elem)
+# else /* not RE_ENABLE_I18N */
+build_range_exp (const reg_syntax_t syntax,
+                 bitset_t sbcset,
+                 const bracket_elem_t *start_elem,
+                 const bracket_elem_t *end_elem)
+# endif /* not RE_ENABLE_I18N */
+{
+  unsigned int start_ch, end_ch;
+  /* Equivalence Classes and Character Classes can't be a range start/end.  */
+  if (BE (start_elem->type == EQUIV_CLASS || start_elem->type == CHAR_CLASS
+         || end_elem->type == EQUIV_CLASS || end_elem->type == CHAR_CLASS,
+         0))
+    return REG_ERANGE;
+
+  /* We can handle no multi character collating elements without libc
+     support.  */
+  if (BE ((start_elem->type == COLL_SYM
+          && strlen ((char *) start_elem->opr.name) > 1)
+         || (end_elem->type == COLL_SYM
+             && strlen ((char *) end_elem->opr.name) > 1), 0))
+    return REG_ECOLLATE;
+
+# ifdef RE_ENABLE_I18N
+  {
+    wchar_t wc;
+    wint_t start_wc;
+    wint_t end_wc;
+    wchar_t cmp_buf[6] = {L'\0', L'\0', L'\0', L'\0', L'\0', L'\0'};
+
+    start_ch = ((start_elem->type == SB_CHAR) ? start_elem->opr.ch
+               : ((start_elem->type == COLL_SYM) ? start_elem->opr.name[0]
+                  : 0));
+    end_ch = ((end_elem->type == SB_CHAR) ? end_elem->opr.ch
+             : ((end_elem->type == COLL_SYM) ? end_elem->opr.name[0]
+                : 0));
+    start_wc = ((start_elem->type == SB_CHAR || start_elem->type == COLL_SYM)
+               ? __btowc (start_ch) : start_elem->opr.wch);
+    end_wc = ((end_elem->type == SB_CHAR || end_elem->type == COLL_SYM)
+             ? __btowc (end_ch) : end_elem->opr.wch);
+    if (start_wc == WEOF || end_wc == WEOF)
+      return REG_ECOLLATE;
+    cmp_buf[0] = start_wc;
+    cmp_buf[4] = end_wc;
+
+    if (BE ((syntax & RE_NO_EMPTY_RANGES)
+            && wcscoll (cmp_buf, cmp_buf + 4) > 0, 0))
+      return REG_ERANGE;
+
+    /* Got valid collation sequence values, add them as a new entry.
+       However, for !_LIBC we have no collation elements: if the
+       character set is single byte, the single byte character set
+       that we build below suffices.  parse_bracket_exp passes
+       no MBCSET if dfa->mb_cur_max == 1.  */
+    if (mbcset)
+      {
+       /* Check the space of the arrays.  */
+       if (BE (*range_alloc == mbcset->nranges, 0))
+         {
+           /* There is not enough space, need realloc.  */
+           wchar_t *new_array_start, *new_array_end;
+           Idx new_nranges;
+
+           /* +1 in case of mbcset->nranges is 0.  */
+           new_nranges = 2 * mbcset->nranges + 1;
+           /* Use realloc since mbcset->range_starts and mbcset->range_ends
+              are NULL if *range_alloc == 0.  */
+           new_array_start = re_realloc (mbcset->range_starts, wchar_t,
+                                         new_nranges);
+           new_array_end = re_realloc (mbcset->range_ends, wchar_t,
+                                       new_nranges);
+
+           if (BE (new_array_start == NULL || new_array_end == NULL, 0))
+             return REG_ESPACE;
+
+           mbcset->range_starts = new_array_start;
+           mbcset->range_ends = new_array_end;
+           *range_alloc = new_nranges;
+         }
+
+       mbcset->range_starts[mbcset->nranges] = start_wc;
+       mbcset->range_ends[mbcset->nranges++] = end_wc;
+      }
+
+    /* Build the table for single byte characters.  */
+    for (wc = 0; wc < SBC_MAX; ++wc)
+      {
+       cmp_buf[2] = wc;
+       if (wcscoll (cmp_buf, cmp_buf + 2) <= 0
+           && wcscoll (cmp_buf + 2, cmp_buf + 4) <= 0)
+         bitset_set (sbcset, wc);
+      }
+  }
+# else /* not RE_ENABLE_I18N */
+  {
+    unsigned int ch;
+    start_ch = ((start_elem->type == SB_CHAR ) ? start_elem->opr.ch
+               : ((start_elem->type == COLL_SYM) ? start_elem->opr.name[0]
+                  : 0));
+    end_ch = ((end_elem->type == SB_CHAR ) ? end_elem->opr.ch
+             : ((end_elem->type == COLL_SYM) ? end_elem->opr.name[0]
+                : 0));
+    if (start_ch > end_ch)
+      return REG_ERANGE;
+    /* Build the table for single byte characters.  */
+    for (ch = 0; ch < SBC_MAX; ++ch)
+      if (start_ch <= ch  && ch <= end_ch)
+       bitset_set (sbcset, ch);
+  }
+# endif /* not RE_ENABLE_I18N */
+  return REG_NOERROR;
+}
+#endif /* not _LIBC */
+
+#ifndef _LIBC
+/* Helper function for parse_bracket_exp only used in case of NOT _LIBC..
+   Build the collating element which is represented by NAME.
+   The result are written to MBCSET and SBCSET.
+   COLL_SYM_ALLOC is the allocated size of mbcset->coll_sym, is a
+   pointer argument since we may update it.  */
+
+static reg_errcode_t
+internal_function
+build_collating_symbol (bitset_t sbcset,
+# ifdef RE_ENABLE_I18N
+                       re_charset_t *mbcset, Idx *coll_sym_alloc,
+# endif
+                       const unsigned char *name)
+{
+  size_t name_len = strlen ((const char *) name);
+  if (BE (name_len != 1, 0))
+    return REG_ECOLLATE;
+  else
+    {
+      bitset_set (sbcset, name[0]);
+      return REG_NOERROR;
+    }
+}
+#endif /* not _LIBC */
+
+/* This function parse bracket expression like "[abc]", "[a-c]",
+   "[[.a-a.]]" etc.  */
+
+static bin_tree_t *
+parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token,
+                  reg_syntax_t syntax, reg_errcode_t *err)
+{
+#ifdef _LIBC
+  const unsigned char *collseqmb;
+  const char *collseqwc;
+  uint32_t nrules;
+  int32_t table_size;
+  const int32_t *symb_table;
+  const unsigned char *extra;
+
+  /* Local function for parse_bracket_exp used in _LIBC environement.
+     Seek the collating symbol entry correspondings to NAME.
+     Return the index of the symbol in the SYMB_TABLE.  */
+
+  auto inline int32_t
+  __attribute ((always_inline))
+  seek_collating_symbol_entry (name, name_len)
+        const unsigned char *name;
+        size_t name_len;
+    {
+      int32_t hash = elem_hash ((const char *) name, name_len);
+      int32_t elem = hash % table_size;
+      if (symb_table[2 * elem] != 0)
+       {
+         int32_t second = hash % (table_size - 2) + 1;
+
+         do
+           {
+             /* First compare the hashing value.  */
+             if (symb_table[2 * elem] == hash
+                 /* Compare the length of the name.  */
+                 && name_len == extra[symb_table[2 * elem + 1]]
+                 /* Compare the name.  */
+                 && memcmp (name, &extra[symb_table[2 * elem + 1] + 1],
+                            name_len) == 0)
+               {
+                 /* Yep, this is the entry.  */
+                 break;
+               }
+
+             /* Next entry.  */
+             elem += second;
+           }
+         while (symb_table[2 * elem] != 0);
+       }
+      return elem;
+    }
+
+  /* Local function for parse_bracket_exp used in _LIBC environment.
+     Look up the collation sequence value of BR_ELEM.
+     Return the value if succeeded, UINT_MAX otherwise.  */
+
+  auto inline unsigned int
+  __attribute ((always_inline))
+  lookup_collation_sequence_value (br_elem)
+        bracket_elem_t *br_elem;
+    {
+      if (br_elem->type == SB_CHAR)
+       {
+         /*
+         if (MB_CUR_MAX == 1)
+         */
+         if (nrules == 0)
+           return collseqmb[br_elem->opr.ch];
+         else
+           {
+             wint_t wc = __btowc (br_elem->opr.ch);
+             return __collseq_table_lookup (collseqwc, wc);
+           }
+       }
+      else if (br_elem->type == MB_CHAR)
+       {
+         if (nrules != 0)
+           return __collseq_table_lookup (collseqwc, br_elem->opr.wch);
+       }
+      else if (br_elem->type == COLL_SYM)
+       {
+         size_t sym_name_len = strlen ((char *) br_elem->opr.name);
+         if (nrules != 0)
+           {
+             int32_t elem, idx;
+             elem = seek_collating_symbol_entry (br_elem->opr.name,
+                                                 sym_name_len);
+             if (symb_table[2 * elem] != 0)
+               {
+                 /* We found the entry.  */
+                 idx = symb_table[2 * elem + 1];
+                 /* Skip the name of collating element name.  */
+                 idx += 1 + extra[idx];
+                 /* Skip the byte sequence of the collating element.  */
+                 idx += 1 + extra[idx];
+                 /* Adjust for the alignment.  */
+                 idx = (idx + 3) & ~3;
+                 /* Skip the multibyte collation sequence value.  */
+                 idx += sizeof (unsigned int);
+                 /* Skip the wide char sequence of the collating element.  */
+                 idx += sizeof (unsigned int) *
+                   (1 + *(unsigned int *) (extra + idx));
+                 /* Return the collation sequence value.  */
+                 return *(unsigned int *) (extra + idx);
+               }
+             else if (symb_table[2 * elem] == 0 && sym_name_len == 1)
+               {
+                 /* No valid character.  Match it as a single byte
+                    character.  */
+                 return collseqmb[br_elem->opr.name[0]];
+               }
+           }
+         else if (sym_name_len == 1)
+           return collseqmb[br_elem->opr.name[0]];
+       }
+      return UINT_MAX;
+    }
+
+  /* Local function for parse_bracket_exp used in _LIBC environement.
+     Build the range expression which starts from START_ELEM, and ends
+     at END_ELEM.  The result are written to MBCSET and SBCSET.
+     RANGE_ALLOC is the allocated size of mbcset->range_starts, and
+     mbcset->range_ends, is a pointer argument sinse we may
+     update it.  */
+
+  auto inline reg_errcode_t
+  __attribute ((always_inline))
+  build_range_exp (sbcset, mbcset, range_alloc, start_elem, end_elem)
+        re_charset_t *mbcset;
+        Idx *range_alloc;
+        bitset_t sbcset;
+        bracket_elem_t *start_elem, *end_elem;
+    {
+      unsigned int ch;
+      uint32_t start_collseq;
+      uint32_t end_collseq;
+
+      /* Equivalence Classes and Character Classes can't be a range
+        start/end.  */
+      if (BE (start_elem->type == EQUIV_CLASS || start_elem->type == CHAR_CLASS
+             || end_elem->type == EQUIV_CLASS || end_elem->type == CHAR_CLASS,
+             0))
+       return REG_ERANGE;
+
+      start_collseq = lookup_collation_sequence_value (start_elem);
+      end_collseq = lookup_collation_sequence_value (end_elem);
+      /* Check start/end collation sequence values.  */
+      if (BE (start_collseq == UINT_MAX || end_collseq == UINT_MAX, 0))
+       return REG_ECOLLATE;
+      if (BE ((syntax & RE_NO_EMPTY_RANGES) && start_collseq > end_collseq, 0))
+       return REG_ERANGE;
+
+      /* Got valid collation sequence values, add them as a new entry.
+        However, if we have no collation elements, and the character set
+        is single byte, the single byte character set that we
+        build below suffices. */
+      if (nrules > 0 || dfa->mb_cur_max > 1)
+       {
+         /* Check the space of the arrays.  */
+         if (BE (*range_alloc == mbcset->nranges, 0))
+           {
+             /* There is not enough space, need realloc.  */
+             uint32_t *new_array_start;
+             uint32_t *new_array_end;
+             Idx new_nranges;
+
+             /* +1 in case of mbcset->nranges is 0.  */
+             new_nranges = 2 * mbcset->nranges + 1;
+             new_array_start = re_realloc (mbcset->range_starts, uint32_t,
+                                           new_nranges);
+             new_array_end = re_realloc (mbcset->range_ends, uint32_t,
+                                         new_nranges);
+
+             if (BE (new_array_start == NULL || new_array_end == NULL, 0))
+               return REG_ESPACE;
+
+             mbcset->range_starts = new_array_start;
+             mbcset->range_ends = new_array_end;
+             *range_alloc = new_nranges;
+           }
+
+         mbcset->range_starts[mbcset->nranges] = start_collseq;
+         mbcset->range_ends[mbcset->nranges++] = end_collseq;
+       }
+
+      /* Build the table for single byte characters.  */
+      for (ch = 0; ch < SBC_MAX; ch++)
+       {
+         uint32_t ch_collseq;
+         /*
+         if (MB_CUR_MAX == 1)
+         */
+         if (nrules == 0)
+           ch_collseq = collseqmb[ch];
+         else
+           ch_collseq = __collseq_table_lookup (collseqwc, __btowc (ch));
+         if (start_collseq <= ch_collseq && ch_collseq <= end_collseq)
+           bitset_set (sbcset, ch);
+       }
+      return REG_NOERROR;
+    }
+
+  /* Local function for parse_bracket_exp used in _LIBC environement.
+     Build the collating element which is represented by NAME.
+     The result are written to MBCSET and SBCSET.
+     COLL_SYM_ALLOC is the allocated size of mbcset->coll_sym, is a
+     pointer argument sinse we may update it.  */
+
+  auto inline reg_errcode_t
+  __attribute ((always_inline))
+  build_collating_symbol (sbcset, mbcset, coll_sym_alloc, name)
+        re_charset_t *mbcset;
+        Idx *coll_sym_alloc;
+        bitset_t sbcset;
+        const unsigned char *name;
+    {
+      int32_t elem, idx;
+      size_t name_len = strlen ((const char *) name);
+      if (nrules != 0)
+       {
+         elem = seek_collating_symbol_entry (name, name_len);
+         if (symb_table[2 * elem] != 0)
+           {
+             /* We found the entry.  */
+             idx = symb_table[2 * elem + 1];
+             /* Skip the name of collating element name.  */
+             idx += 1 + extra[idx];
+           }
+         else if (symb_table[2 * elem] == 0 && name_len == 1)
+           {
+             /* No valid character, treat it as a normal
+                character.  */
+             bitset_set (sbcset, name[0]);
+             return REG_NOERROR;
+           }
+         else
+           return REG_ECOLLATE;
+
+         /* Got valid collation sequence, add it as a new entry.  */
+         /* Check the space of the arrays.  */
+         if (BE (*coll_sym_alloc == mbcset->ncoll_syms, 0))
+           {
+             /* Not enough, realloc it.  */
+             /* +1 in case of mbcset->ncoll_syms is 0.  */
+             Idx new_coll_sym_alloc = 2 * mbcset->ncoll_syms + 1;
+             /* Use realloc since mbcset->coll_syms is NULL
+                if *alloc == 0.  */
+             int32_t *new_coll_syms = re_realloc (mbcset->coll_syms, int32_t,
+                                                  new_coll_sym_alloc);
+             if (BE (new_coll_syms == NULL, 0))
+               return REG_ESPACE;
+             mbcset->coll_syms = new_coll_syms;
+             *coll_sym_alloc = new_coll_sym_alloc;
+           }
+         mbcset->coll_syms[mbcset->ncoll_syms++] = idx;
+         return REG_NOERROR;
+       }
+      else
+       {
+         if (BE (name_len != 1, 0))
+           return REG_ECOLLATE;
+         else
+           {
+             bitset_set (sbcset, name[0]);
+             return REG_NOERROR;
+           }
+       }
+    }
+#endif
+
+  re_token_t br_token;
+  re_bitset_ptr_t sbcset;
+#ifdef RE_ENABLE_I18N
+  re_charset_t *mbcset;
+  Idx coll_sym_alloc = 0, range_alloc = 0, mbchar_alloc = 0;
+  Idx equiv_class_alloc = 0, char_class_alloc = 0;
+#endif /* not RE_ENABLE_I18N */
+  bool non_match = false;
+  bin_tree_t *work_tree;
+  int token_len;
+  bool first_round = true;
+#ifdef _LIBC
+  collseqmb = (const unsigned char *)
+    _NL_CURRENT (LC_COLLATE, _NL_COLLATE_COLLSEQMB);
+  nrules = _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES);
+  if (nrules)
+    {
+      /*
+      if (MB_CUR_MAX > 1)
+      */
+      collseqwc = _NL_CURRENT (LC_COLLATE, _NL_COLLATE_COLLSEQWC);
+      table_size = _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_SYMB_HASH_SIZEMB);
+      symb_table = (const int32_t *) _NL_CURRENT (LC_COLLATE,
+                                                 _NL_COLLATE_SYMB_TABLEMB);
+      extra = (const unsigned char *) _NL_CURRENT (LC_COLLATE,
+                                                  _NL_COLLATE_SYMB_EXTRAMB);
+    }
+#endif
+  sbcset = (re_bitset_ptr_t) calloc (sizeof (bitset_t), 1);
+#ifdef RE_ENABLE_I18N
+  mbcset = (re_charset_t *) calloc (sizeof (re_charset_t), 1);
+#endif /* RE_ENABLE_I18N */
+#ifdef RE_ENABLE_I18N
+  if (BE (sbcset == NULL || mbcset == NULL, 0))
+#else
+  if (BE (sbcset == NULL, 0))
+#endif /* RE_ENABLE_I18N */
+    {
+      *err = REG_ESPACE;
+      return NULL;
+    }
+
+  token_len = peek_token_bracket (token, regexp, syntax);
+  if (BE (token->type == END_OF_RE, 0))
+    {
+      *err = REG_BADPAT;
+      goto parse_bracket_exp_free_return;
+    }
+  if (token->type == OP_NON_MATCH_LIST)
+    {
+#ifdef RE_ENABLE_I18N
+      mbcset->non_match = 1;
+#endif /* not RE_ENABLE_I18N */
+      non_match = true;
+      if (syntax & RE_HAT_LISTS_NOT_NEWLINE)
+       bitset_set (sbcset, '\n');
+      re_string_skip_bytes (regexp, token_len); /* Skip a token.  */
+      token_len = peek_token_bracket (token, regexp, syntax);
+      if (BE (token->type == END_OF_RE, 0))
+       {
+         *err = REG_BADPAT;
+         goto parse_bracket_exp_free_return;
+       }
+    }
+
+  /* We treat the first ']' as a normal character.  */
+  if (token->type == OP_CLOSE_BRACKET)
+    token->type = CHARACTER;
+
+  while (1)
+    {
+      bracket_elem_t start_elem, end_elem;
+      unsigned char start_name_buf[BRACKET_NAME_BUF_SIZE];
+      unsigned char end_name_buf[BRACKET_NAME_BUF_SIZE];
+      reg_errcode_t ret;
+      int token_len2 = 0;
+      bool is_range_exp = false;
+      re_token_t token2;
+
+      start_elem.opr.name = start_name_buf;
+      ret = parse_bracket_element (&start_elem, regexp, token, token_len, dfa,
+                                  syntax, first_round);
+      if (BE (ret != REG_NOERROR, 0))
+       {
+         *err = ret;
+         goto parse_bracket_exp_free_return;
+       }
+      first_round = false;
+
+      /* Get information about the next token.  We need it in any case.  */
+      token_len = peek_token_bracket (token, regexp, syntax);
+
+      /* Do not check for ranges if we know they are not allowed.  */
+      if (start_elem.type != CHAR_CLASS && start_elem.type != EQUIV_CLASS)
+       {
+         if (BE (token->type == END_OF_RE, 0))
+           {
+             *err = REG_EBRACK;
+             goto parse_bracket_exp_free_return;
+           }
+         if (token->type == OP_CHARSET_RANGE)
+           {
+             re_string_skip_bytes (regexp, token_len); /* Skip '-'.  */
+             token_len2 = peek_token_bracket (&token2, regexp, syntax);
+             if (BE (token2.type == END_OF_RE, 0))
+               {
+                 *err = REG_EBRACK;
+                 goto parse_bracket_exp_free_return;
+               }
+             if (token2.type == OP_CLOSE_BRACKET)
+               {
+                 /* We treat the last '-' as a normal character.  */
+                 re_string_skip_bytes (regexp, -token_len);
+                 token->type = CHARACTER;
+               }
+             else
+               is_range_exp = true;
+           }
+       }
+
+      if (is_range_exp == true)
+       {
+         end_elem.opr.name = end_name_buf;
+         ret = parse_bracket_element (&end_elem, regexp, &token2, token_len2,
+                                      dfa, syntax, true);
+         if (BE (ret != REG_NOERROR, 0))
+           {
+             *err = ret;
+             goto parse_bracket_exp_free_return;
+           }
+
+         token_len = peek_token_bracket (token, regexp, syntax);
+
+#ifdef _LIBC
+         *err = build_range_exp (sbcset, mbcset, &range_alloc,
+                                 &start_elem, &end_elem);
+#else
+# ifdef RE_ENABLE_I18N
+         *err = build_range_exp (syntax, sbcset,
+                                 dfa->mb_cur_max > 1 ? mbcset : NULL,
+                                 &range_alloc, &start_elem, &end_elem);
+# else
+         *err = build_range_exp (syntax, sbcset, &start_elem, &end_elem);
+# endif
+#endif /* RE_ENABLE_I18N */
+         if (BE (*err != REG_NOERROR, 0))
+           goto parse_bracket_exp_free_return;
+       }
+      else
+       {
+         switch (start_elem.type)
+           {
+           case SB_CHAR:
+             bitset_set (sbcset, start_elem.opr.ch);
+             break;
+#ifdef RE_ENABLE_I18N
+           case MB_CHAR:
+             /* Check whether the array has enough space.  */
+             if (BE (mbchar_alloc == mbcset->nmbchars, 0))
+               {
+                 wchar_t *new_mbchars;
+                 /* Not enough, realloc it.  */
+                 /* +1 in case of mbcset->nmbchars is 0.  */
+                 mbchar_alloc = 2 * mbcset->nmbchars + 1;
+                 /* Use realloc since array is NULL if *alloc == 0.  */
+                 new_mbchars = re_realloc (mbcset->mbchars, wchar_t,
+                                           mbchar_alloc);
+                 if (BE (new_mbchars == NULL, 0))
+                   goto parse_bracket_exp_espace;
+                 mbcset->mbchars = new_mbchars;
+               }
+             mbcset->mbchars[mbcset->nmbchars++] = start_elem.opr.wch;
+             break;
+#endif /* RE_ENABLE_I18N */
+           case EQUIV_CLASS:
+             *err = build_equiv_class (sbcset,
+#ifdef RE_ENABLE_I18N
+                                       mbcset, &equiv_class_alloc,
+#endif /* RE_ENABLE_I18N */
+                                       start_elem.opr.name);
+             if (BE (*err != REG_NOERROR, 0))
+               goto parse_bracket_exp_free_return;
+             break;
+           case COLL_SYM:
+             *err = build_collating_symbol (sbcset,
+#ifdef RE_ENABLE_I18N
+                                            mbcset, &coll_sym_alloc,
+#endif /* RE_ENABLE_I18N */
+                                            start_elem.opr.name);
+             if (BE (*err != REG_NOERROR, 0))
+               goto parse_bracket_exp_free_return;
+             break;
+           case CHAR_CLASS:
+             *err = build_charclass (regexp->trans, sbcset,
+#ifdef RE_ENABLE_I18N
+                                     mbcset, &char_class_alloc,
+#endif /* RE_ENABLE_I18N */
+                                     start_elem.opr.name, syntax);
+             if (BE (*err != REG_NOERROR, 0))
+              goto parse_bracket_exp_free_return;
+             break;
+           default:
+             assert (0);
+             break;
+           }
+       }
+      if (BE (token->type == END_OF_RE, 0))
+       {
+         *err = REG_EBRACK;
+         goto parse_bracket_exp_free_return;
+       }
+      if (token->type == OP_CLOSE_BRACKET)
+       break;
+    }
+
+  re_string_skip_bytes (regexp, token_len); /* Skip a token.  */
+
+  /* If it is non-matching list.  */
+  if (non_match)
+    bitset_not (sbcset);
+
+#ifdef RE_ENABLE_I18N
+  /* Ensure only single byte characters are set.  */
+  if (dfa->mb_cur_max > 1)
+    bitset_mask (sbcset, dfa->sb_char);
+
+  if (mbcset->nmbchars || mbcset->ncoll_syms || mbcset->nequiv_classes
+      || mbcset->nranges || (dfa->mb_cur_max > 1 && (mbcset->nchar_classes
+                                                    || mbcset->non_match)))
+    {
+      bin_tree_t *mbc_tree;
+      int sbc_idx;
+      /* Build a tree for complex bracket.  */
+      dfa->has_mb_node = 1;
+      br_token.type = COMPLEX_BRACKET;
+      br_token.opr.mbcset = mbcset;
+      mbc_tree = create_token_tree (dfa, NULL, NULL, &br_token);
+      if (BE (mbc_tree == NULL, 0))
+       goto parse_bracket_exp_espace;
+      for (sbc_idx = 0; sbc_idx < BITSET_WORDS; ++sbc_idx)
+       if (sbcset[sbc_idx])
+         break;
+      /* If there are no bits set in sbcset, there is no point
+        of having both SIMPLE_BRACKET and COMPLEX_BRACKET.  */
+      if (sbc_idx < BITSET_WORDS)
+       {
+         /* Build a tree for simple bracket.  */
+         br_token.type = SIMPLE_BRACKET;
+         br_token.opr.sbcset = sbcset;
+         work_tree = create_token_tree (dfa, NULL, NULL, &br_token);
+         if (BE (work_tree == NULL, 0))
+           goto parse_bracket_exp_espace;
+
+         /* Then join them by ALT node.  */
+         work_tree = create_tree (dfa, work_tree, mbc_tree, OP_ALT);
+         if (BE (work_tree == NULL, 0))
+           goto parse_bracket_exp_espace;
+       }
+      else
+       {
+         re_free (sbcset);
+         work_tree = mbc_tree;
+       }
+    }
+  else
+#endif /* not RE_ENABLE_I18N */
+    {
+#ifdef RE_ENABLE_I18N
+      free_charset (mbcset);
+#endif
+      /* Build a tree for simple bracket.  */
+      br_token.type = SIMPLE_BRACKET;
+      br_token.opr.sbcset = sbcset;
+      work_tree = create_token_tree (dfa, NULL, NULL, &br_token);
+      if (BE (work_tree == NULL, 0))
+       goto parse_bracket_exp_espace;
+    }
+  return work_tree;
+
+ parse_bracket_exp_espace:
+  *err = REG_ESPACE;
+ parse_bracket_exp_free_return:
+  re_free (sbcset);
+#ifdef RE_ENABLE_I18N
+  free_charset (mbcset);
+#endif /* RE_ENABLE_I18N */
+  return NULL;
+}
+
+/* Parse an element in the bracket expression.  */
+
+static reg_errcode_t
+parse_bracket_element (bracket_elem_t *elem, re_string_t *regexp,
+                      re_token_t *token, int token_len, re_dfa_t *dfa,
+                      reg_syntax_t syntax, bool accept_hyphen)
+{
+#ifdef RE_ENABLE_I18N
+  int cur_char_size;
+  cur_char_size = re_string_char_size_at (regexp, re_string_cur_idx (regexp));
+  if (cur_char_size > 1)
+    {
+      elem->type = MB_CHAR;
+      elem->opr.wch = re_string_wchar_at (regexp, re_string_cur_idx (regexp));
+      re_string_skip_bytes (regexp, cur_char_size);
+      return REG_NOERROR;
+    }
+#endif /* RE_ENABLE_I18N */
+  re_string_skip_bytes (regexp, token_len); /* Skip a token.  */
+  if (token->type == OP_OPEN_COLL_ELEM || token->type == OP_OPEN_CHAR_CLASS
+      || token->type == OP_OPEN_EQUIV_CLASS)
+    return parse_bracket_symbol (elem, regexp, token);
+  if (BE (token->type == OP_CHARSET_RANGE, 0) && !accept_hyphen)
+    {
+      /* A '-' must only appear as anything but a range indicator before
+        the closing bracket.  Everything else is an error.  */
+      re_token_t token2;
+      (void) peek_token_bracket (&token2, regexp, syntax);
+      if (token2.type != OP_CLOSE_BRACKET)
+       /* The actual error value is not standardized since this whole
+          case is undefined.  But ERANGE makes good sense.  */
+       return REG_ERANGE;
+    }
+  elem->type = SB_CHAR;
+  elem->opr.ch = token->opr.c;
+  return REG_NOERROR;
+}
+
+/* Parse a bracket symbol in the bracket expression.  Bracket symbols are
+   such as [:<character_class>:], [.<collating_element>.], and
+   [=<equivalent_class>=].  */
+
+static reg_errcode_t
+parse_bracket_symbol (bracket_elem_t *elem, re_string_t *regexp,
+                     re_token_t *token)
+{
+  unsigned char ch, delim = token->opr.c;
+  int i = 0;
+  if (re_string_eoi(regexp))
+    return REG_EBRACK;
+  for (;; ++i)
+    {
+      if (i >= BRACKET_NAME_BUF_SIZE)
+       return REG_EBRACK;
+      if (token->type == OP_OPEN_CHAR_CLASS)
+       ch = re_string_fetch_byte_case (regexp);
+      else
+       ch = re_string_fetch_byte (regexp);
+      if (re_string_eoi(regexp))
+       return REG_EBRACK;
+      if (ch == delim && re_string_peek_byte (regexp, 0) == ']')
+       break;
+      elem->opr.name[i] = ch;
+    }
+  re_string_skip_bytes (regexp, 1);
+  elem->opr.name[i] = '\0';
+  switch (token->type)
+    {
+    case OP_OPEN_COLL_ELEM:
+      elem->type = COLL_SYM;
+      break;
+    case OP_OPEN_EQUIV_CLASS:
+      elem->type = EQUIV_CLASS;
+      break;
+    case OP_OPEN_CHAR_CLASS:
+      elem->type = CHAR_CLASS;
+      break;
+    default:
+      break;
+    }
+  return REG_NOERROR;
+}
+
+  /* Helper function for parse_bracket_exp.
+     Build the equivalence class which is represented by NAME.
+     The result are written to MBCSET and SBCSET.
+     EQUIV_CLASS_ALLOC is the allocated size of mbcset->equiv_classes,
+     is a pointer argument sinse we may update it.  */
+
+static reg_errcode_t
+#ifdef RE_ENABLE_I18N
+build_equiv_class (bitset_t sbcset, re_charset_t *mbcset,
+                  Idx *equiv_class_alloc, const unsigned char *name)
+#else /* not RE_ENABLE_I18N */
+build_equiv_class (bitset_t sbcset, const unsigned char *name)
+#endif /* not RE_ENABLE_I18N */
+{
+#ifdef _LIBC
+  uint32_t nrules = _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES);
+  if (nrules != 0)
+    {
+      const int32_t *table, *indirect;
+      const unsigned char *weights, *extra, *cp;
+      unsigned char char_buf[2];
+      int32_t idx1, idx2;
+      unsigned int ch;
+      size_t len;
+      /* This #include defines a local function!  */
+# include <locale/weight.h>
+      /* Calculate the index for equivalence class.  */
+      cp = name;
+      table = (const int32_t *) _NL_CURRENT (LC_COLLATE, _NL_COLLATE_TABLEMB);
+      weights = (const unsigned char *) _NL_CURRENT (LC_COLLATE,
+                                              _NL_COLLATE_WEIGHTMB);
+      extra = (const unsigned char *) _NL_CURRENT (LC_COLLATE,
+                                                  _NL_COLLATE_EXTRAMB);
+      indirect = (const int32_t *) _NL_CURRENT (LC_COLLATE,
+                                               _NL_COLLATE_INDIRECTMB);
+      idx1 = findidx (&cp);
+      if (BE (idx1 == 0 || cp < name + strlen ((const char *) name), 0))
+       /* This isn't a valid character.  */
+       return REG_ECOLLATE;
+
+      /* Build single byte matcing table for this equivalence class.  */
+      char_buf[1] = (unsigned char) '\0';
+      len = weights[idx1 & 0xffffff];
+      for (ch = 0; ch < SBC_MAX; ++ch)
+       {
+         char_buf[0] = ch;
+         cp = char_buf;
+         idx2 = findidx (&cp);
+/*
+         idx2 = table[ch];
+*/
+         if (idx2 == 0)
+           /* This isn't a valid character.  */
+           continue;
+         /* Compare only if the length matches and the collation rule
+            index is the same.  */
+         if (len == weights[idx2 & 0xffffff] && (idx1 >> 24) == (idx2 >> 24))
+           {
+             int cnt = 0;
+
+             while (cnt <= len &&
+                    weights[(idx1 & 0xffffff) + 1 + cnt]
+                    == weights[(idx2 & 0xffffff) + 1 + cnt])
+               ++cnt;
+
+             if (cnt > len)
+               bitset_set (sbcset, ch);
+           }
+       }
+      /* Check whether the array has enough space.  */
+      if (BE (*equiv_class_alloc == mbcset->nequiv_classes, 0))
+       {
+         /* Not enough, realloc it.  */
+         /* +1 in case of mbcset->nequiv_classes is 0.  */
+         Idx new_equiv_class_alloc = 2 * mbcset->nequiv_classes + 1;
+         /* Use realloc since the array is NULL if *alloc == 0.  */
+         int32_t *new_equiv_classes = re_realloc (mbcset->equiv_classes,
+                                                  int32_t,
+                                                  new_equiv_class_alloc);
+         if (BE (new_equiv_classes == NULL, 0))
+           return REG_ESPACE;
+         mbcset->equiv_classes = new_equiv_classes;
+         *equiv_class_alloc = new_equiv_class_alloc;
+       }
+      mbcset->equiv_classes[mbcset->nequiv_classes++] = idx1;
+    }
+  else
+#endif /* _LIBC */
+    {
+      if (BE (strlen ((const char *) name) != 1, 0))
+       return REG_ECOLLATE;
+      bitset_set (sbcset, *name);
+    }
+  return REG_NOERROR;
+}
+
+  /* Helper function for parse_bracket_exp.
+     Build the character class which is represented by NAME.
+     The result are written to MBCSET and SBCSET.
+     CHAR_CLASS_ALLOC is the allocated size of mbcset->char_classes,
+     is a pointer argument sinse we may update it.  */
+
+static reg_errcode_t
+#ifdef RE_ENABLE_I18N
+build_charclass (RE_TRANSLATE_TYPE trans, bitset_t sbcset,
+                re_charset_t *mbcset, Idx *char_class_alloc,
+                const unsigned char *class_name, reg_syntax_t syntax)
+#else /* not RE_ENABLE_I18N */
+build_charclass (RE_TRANSLATE_TYPE trans, bitset_t sbcset,
+                const unsigned char *class_name, reg_syntax_t syntax)
+#endif /* not RE_ENABLE_I18N */
+{
+  int i;
+  const char *name = (const char *) class_name;
+
+  /* In case of REG_ICASE "upper" and "lower" match the both of
+     upper and lower cases.  */
+  if ((syntax & RE_ICASE)
+      && (strcmp (name, "upper") == 0 || strcmp (name, "lower") == 0))
+    name = "alpha";
+
+#ifdef RE_ENABLE_I18N
+  /* Check the space of the arrays.  */
+  if (BE (*char_class_alloc == mbcset->nchar_classes, 0))
+    {
+      /* Not enough, realloc it.  */
+      /* +1 in case of mbcset->nchar_classes is 0.  */
+      Idx new_char_class_alloc = 2 * mbcset->nchar_classes + 1;
+      /* Use realloc since array is NULL if *alloc == 0.  */
+      wctype_t *new_char_classes = re_realloc (mbcset->char_classes, wctype_t,
+                                              new_char_class_alloc);
+      if (BE (new_char_classes == NULL, 0))
+       return REG_ESPACE;
+      mbcset->char_classes = new_char_classes;
+      *char_class_alloc = new_char_class_alloc;
+    }
+  mbcset->char_classes[mbcset->nchar_classes++] = __wctype (name);
+#endif /* RE_ENABLE_I18N */
+
+#define BUILD_CHARCLASS_LOOP(ctype_func)       \
+  do {                                         \
+    if (BE (trans != NULL, 0))                 \
+      {                                                \
+       for (i = 0; i < SBC_MAX; ++i)           \
+         if (ctype_func (i))                   \
+           bitset_set (sbcset, trans[i]);      \
+      }                                                \
+    else                                       \
+      {                                                \
+       for (i = 0; i < SBC_MAX; ++i)           \
+         if (ctype_func (i))                   \
+           bitset_set (sbcset, i);             \
+      }                                                \
+  } while (0)
+
+  if (strcmp (name, "alnum") == 0)
+    BUILD_CHARCLASS_LOOP (isalnum);
+  else if (strcmp (name, "cntrl") == 0)
+    BUILD_CHARCLASS_LOOP (iscntrl);
+  else if (strcmp (name, "lower") == 0)
+    BUILD_CHARCLASS_LOOP (islower);
+  else if (strcmp (name, "space") == 0)
+    BUILD_CHARCLASS_LOOP (isspace);
+  else if (strcmp (name, "alpha") == 0)
+    BUILD_CHARCLASS_LOOP (isalpha);
+  else if (strcmp (name, "digit") == 0)
+    BUILD_CHARCLASS_LOOP (isdigit);
+  else if (strcmp (name, "print") == 0)
+    BUILD_CHARCLASS_LOOP (isprint);
+  else if (strcmp (name, "upper") == 0)
+    BUILD_CHARCLASS_LOOP (isupper);
+  else if (strcmp (name, "blank") == 0)
+    BUILD_CHARCLASS_LOOP (isblank);
+  else if (strcmp (name, "graph") == 0)
+    BUILD_CHARCLASS_LOOP (isgraph);
+  else if (strcmp (name, "punct") == 0)
+    BUILD_CHARCLASS_LOOP (ispunct);
+  else if (strcmp (name, "xdigit") == 0)
+    BUILD_CHARCLASS_LOOP (isxdigit);
+  else
+    return REG_ECTYPE;
+
+  return REG_NOERROR;
+}
+
+static bin_tree_t *
+build_charclass_op (re_dfa_t *dfa, RE_TRANSLATE_TYPE trans,
+                   const unsigned char *class_name,
+                   const unsigned char *extra, bool non_match,
+                   reg_errcode_t *err)
+{
+  re_bitset_ptr_t sbcset;
+#ifdef RE_ENABLE_I18N
+  re_charset_t *mbcset;
+  Idx alloc = 0;
+#endif /* not RE_ENABLE_I18N */
+  reg_errcode_t ret;
+  re_token_t br_token;
+  bin_tree_t *tree;
+
+  sbcset = (re_bitset_ptr_t) calloc (sizeof (bitset_t), 1);
+#ifdef RE_ENABLE_I18N
+  mbcset = (re_charset_t *) calloc (sizeof (re_charset_t), 1);
+#endif /* RE_ENABLE_I18N */
+
+#ifdef RE_ENABLE_I18N
+  if (BE (sbcset == NULL || mbcset == NULL, 0))
+#else /* not RE_ENABLE_I18N */
+  if (BE (sbcset == NULL, 0))
+#endif /* not RE_ENABLE_I18N */
+    {
+      *err = REG_ESPACE;
+      return NULL;
+    }
+
+  if (non_match)
+    {
+#ifdef RE_ENABLE_I18N
+      mbcset->non_match = 1;
+#endif /* not RE_ENABLE_I18N */
+    }
+
+  /* We don't care the syntax in this case.  */
+  ret = build_charclass (trans, sbcset,
+#ifdef RE_ENABLE_I18N
+                        mbcset, &alloc,
+#endif /* RE_ENABLE_I18N */
+                        class_name, 0);
+
+  if (BE (ret != REG_NOERROR, 0))
+    {
+      re_free (sbcset);
+#ifdef RE_ENABLE_I18N
+      free_charset (mbcset);
+#endif /* RE_ENABLE_I18N */
+      *err = ret;
+      return NULL;
+    }
+  /* \w match '_' also.  */
+  for (; *extra; extra++)
+    bitset_set (sbcset, *extra);
+
+  /* If it is non-matching list.  */
+  if (non_match)
+    bitset_not (sbcset);
+
+#ifdef RE_ENABLE_I18N
+  /* Ensure only single byte characters are set.  */
+  if (dfa->mb_cur_max > 1)
+    bitset_mask (sbcset, dfa->sb_char);
+#endif
+
+  /* Build a tree for simple bracket.  */
+  br_token.type = SIMPLE_BRACKET;
+  br_token.opr.sbcset = sbcset;
+  tree = create_token_tree (dfa, NULL, NULL, &br_token);
+  if (BE (tree == NULL, 0))
+    goto build_word_op_espace;
+
+#ifdef RE_ENABLE_I18N
+  if (dfa->mb_cur_max > 1)
+    {
+      bin_tree_t *mbc_tree;
+      /* Build a tree for complex bracket.  */
+      br_token.type = COMPLEX_BRACKET;
+      br_token.opr.mbcset = mbcset;
+      dfa->has_mb_node = 1;
+      mbc_tree = create_token_tree (dfa, NULL, NULL, &br_token);
+      if (BE (mbc_tree == NULL, 0))
+       goto build_word_op_espace;
+      /* Then join them by ALT node.  */
+      tree = create_tree (dfa, tree, mbc_tree, OP_ALT);
+      if (BE (mbc_tree != NULL, 1))
+       return tree;
+    }
+  else
+    {
+      free_charset (mbcset);
+      return tree;
+    }
+#else /* not RE_ENABLE_I18N */
+  return tree;
+#endif /* not RE_ENABLE_I18N */
+
+ build_word_op_espace:
+  re_free (sbcset);
+#ifdef RE_ENABLE_I18N
+  free_charset (mbcset);
+#endif /* RE_ENABLE_I18N */
+  *err = REG_ESPACE;
+  return NULL;
+}
+
+/* This is intended for the expressions like "a{1,3}".
+   Fetch a number from `input', and return the number.
+   Return REG_MISSING if the number field is empty like "{,1}".
+   Return REG_ERROR if an error occurred.  */
+
+static Idx
+fetch_number (re_string_t *input, re_token_t *token, reg_syntax_t syntax)
+{
+  Idx num = REG_MISSING;
+  unsigned char c;
+  while (1)
+    {
+      fetch_token (token, input, syntax);
+      c = token->opr.c;
+      if (BE (token->type == END_OF_RE, 0))
+       return REG_ERROR;
+      if (token->type == OP_CLOSE_DUP_NUM || c == ',')
+       break;
+      num = ((token->type != CHARACTER || c < '0' || '9' < c
+             || num == REG_ERROR)
+            ? REG_ERROR
+            : ((num == REG_MISSING) ? c - '0' : num * 10 + c - '0'));
+      num = (num > RE_DUP_MAX) ? REG_ERROR : num;
+    }
+  return num;
+}
+\f
+#ifdef RE_ENABLE_I18N
+static void
+free_charset (re_charset_t *cset)
+{
+  re_free (cset->mbchars);
+# ifdef _LIBC
+  re_free (cset->coll_syms);
+  re_free (cset->equiv_classes);
+  re_free (cset->range_starts);
+  re_free (cset->range_ends);
+# endif
+  re_free (cset->char_classes);
+  re_free (cset);
+}
+#endif /* RE_ENABLE_I18N */
+\f
+/* Functions for binary tree operation.  */
+
+/* Create a tree node.  */
+
+static bin_tree_t *
+create_tree (re_dfa_t *dfa, bin_tree_t *left, bin_tree_t *right,
+            re_token_type_t type)
+{
+  re_token_t t;
+  t.type = type;
+  return create_token_tree (dfa, left, right, &t);
+}
+
+static bin_tree_t *
+create_token_tree (re_dfa_t *dfa, bin_tree_t *left, bin_tree_t *right,
+                  const re_token_t *token)
+{
+  bin_tree_t *tree;
+  if (BE (dfa->str_tree_storage_idx == BIN_TREE_STORAGE_SIZE, 0))
+    {
+      bin_tree_storage_t *storage = re_malloc (bin_tree_storage_t, 1);
+
+      if (storage == NULL)
+       return NULL;
+      storage->next = dfa->str_tree_storage;
+      dfa->str_tree_storage = storage;
+      dfa->str_tree_storage_idx = 0;
+    }
+  tree = &dfa->str_tree_storage->data[dfa->str_tree_storage_idx++];
+
+  tree->parent = NULL;
+  tree->left = left;
+  tree->right = right;
+  tree->token = *token;
+  tree->token.duplicated = 0;
+  tree->token.opt_subexp = 0;
+  tree->first = NULL;
+  tree->next = NULL;
+  tree->node_idx = REG_MISSING;
+
+  if (left != NULL)
+    left->parent = tree;
+  if (right != NULL)
+    right->parent = tree;
+  return tree;
+}
+
+/* Mark the tree SRC as an optional subexpression.
+   To be called from preorder or postorder.  */
+
+static reg_errcode_t
+mark_opt_subexp (void *extra, bin_tree_t *node)
+{
+  Idx idx = (Idx) (long) extra;
+  if (node->token.type == SUBEXP && node->token.opr.idx == idx)
+    node->token.opt_subexp = 1;
+
+  return REG_NOERROR;
+}
+
+/* Free the allocated memory inside NODE. */
+
+static void
+free_token (re_token_t *node)
+{
+#ifdef RE_ENABLE_I18N
+  if (node->type == COMPLEX_BRACKET && node->duplicated == 0)
+    free_charset (node->opr.mbcset);
+  else
+#endif /* RE_ENABLE_I18N */
+    if (node->type == SIMPLE_BRACKET && node->duplicated == 0)
+      re_free (node->opr.sbcset);
+}
+
+/* Worker function for tree walking.  Free the allocated memory inside NODE
+   and its children. */
+
+static reg_errcode_t
+free_tree (void *extra, bin_tree_t *node)
+{
+  free_token (&node->token);
+  return REG_NOERROR;
+}
+
+
+/* Duplicate the node SRC, and return new node.  This is a preorder
+   visit similar to the one implemented by the generic visitor, but
+   we need more infrastructure to maintain two parallel trees --- so,
+   it's easier to duplicate.  */
+
+static bin_tree_t *
+duplicate_tree (const bin_tree_t *root, re_dfa_t *dfa)
+{
+  const bin_tree_t *node;
+  bin_tree_t *dup_root;
+  bin_tree_t **p_new = &dup_root, *dup_node = root->parent;
+
+  for (node = root; ; )
+    {
+      /* Create a new tree and link it back to the current parent.  */
+      *p_new = create_token_tree (dfa, NULL, NULL, &node->token);
+      if (*p_new == NULL)
+       return NULL;
+      (*p_new)->parent = dup_node;
+      (*p_new)->token.duplicated = 1;
+      dup_node = *p_new;
+
+      /* Go to the left node, or up and to the right.  */
+      if (node->left)
+       {
+         node = node->left;
+         p_new = &dup_node->left;
+       }
+      else
+       {
+         const bin_tree_t *prev = NULL;
+         while (node->right == prev || node->right == NULL)
+           {
+             prev = node;
+             node = node->parent;
+             dup_node = dup_node->parent;
+             if (!node)
+               return dup_root;
+           }
+         node = node->right;
+         p_new = &dup_node->right;
+       }
+    }
+}
diff --git a/lib/regex.c b/lib/regex.c
new file mode 100644 (file)
index 0000000..fc46c0b
--- /dev/null
@@ -0,0 +1,73 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Extended regular expression matching and search library.
+   Copyright (C) 2002-2003, 2005-2006, 2009-2011 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
+
+   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, 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. */
+
+#include <config.h>
+
+/* Make sure noone compiles this code with a C++ compiler.  */
+#if defined __cplusplus && defined _LIBC
+# error "This is C code, use a C compiler"
+#endif
+
+#ifdef _LIBC
+/* We have to keep the namespace clean.  */
+# define regfree(preg) __regfree (preg)
+# define regexec(pr, st, nm, pm, ef) __regexec (pr, st, nm, pm, ef)
+# define regcomp(preg, pattern, cflags) __regcomp (preg, pattern, cflags)
+# define regerror(errcode, preg, errbuf, errbuf_size) \
+       __regerror(errcode, preg, errbuf, errbuf_size)
+# define re_set_registers(bu, re, nu, st, en) \
+       __re_set_registers (bu, re, nu, st, en)
+# define re_match_2(bufp, string1, size1, string2, size2, pos, regs, stop) \
+       __re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop)
+# define re_match(bufp, string, size, pos, regs) \
+       __re_match (bufp, string, size, pos, regs)
+# define re_search(bufp, string, size, startpos, range, regs) \
+       __re_search (bufp, string, size, startpos, range, regs)
+# define re_compile_pattern(pattern, length, bufp) \
+       __re_compile_pattern (pattern, length, bufp)
+# define re_set_syntax(syntax) __re_set_syntax (syntax)
+# define re_search_2(bufp, st1, s1, st2, s2, startpos, range, regs, stop) \
+       __re_search_2 (bufp, st1, s1, st2, s2, startpos, range, regs, stop)
+# define re_compile_fastmap(bufp) __re_compile_fastmap (bufp)
+
+# include "../locale/localeinfo.h"
+#endif
+
+/* On some systems, limits.h sets RE_DUP_MAX to a lower value than
+   GNU regex allows.  Include it before <regex.h>, which correctly
+   #undefs RE_DUP_MAX and sets it to the right value.  */
+#include <limits.h>
+
+#include <regex.h>
+#include "regex_internal.h"
+
+#include "regex_internal.c"
+#include "regcomp.c"
+#include "regexec.c"
+
+/* Binary backward compatibility.  */
+#if _LIBC
+# include <shlib-compat.h>
+# if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3)
+link_warning (re_max_failures, "the 're_max_failures' variable is obsolete and will go away.")
+int re_max_failures = 2000;
+# endif
+#endif
diff --git a/lib/regex.h b/lib/regex.h
new file mode 100644 (file)
index 0000000..52b8598
--- /dev/null
@@ -0,0 +1,677 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Definitions for data structures and routines for the regular
+   expression library.
+   Copyright (C) 1985, 1989-1993, 1995-1998, 2000-2003, 2005-2006, 2009-2011
+   Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   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, 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. */
+
+#ifndef _REGEX_H
+#define _REGEX_H 1
+
+#include <sys/types.h>
+
+/* Allow the use in C++ code.  */
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Define __USE_GNU_REGEX to declare GNU extensions that violate the
+   POSIX name space rules.  */
+#undef __USE_GNU_REGEX
+#if (defined _GNU_SOURCE                                       \
+     || (!defined _POSIX_C_SOURCE && !defined _POSIX_SOURCE    \
+        && !defined _XOPEN_SOURCE))
+# define __USE_GNU_REGEX 1
+#endif
+
+#ifdef _REGEX_LARGE_OFFSETS
+
+/* Use types and values that are wide enough to represent signed and
+   unsigned byte offsets in memory.  This currently works only when
+   the regex code is used outside of the GNU C library; it is not yet
+   supported within glibc itself, and glibc users should not define
+   _REGEX_LARGE_OFFSETS.  */
+
+/* The type of the offset of a byte within a string.
+   For historical reasons POSIX 1003.1-2004 requires that regoff_t be
+   at least as wide as off_t.  However, many common POSIX platforms set
+   regoff_t to the more-sensible ssize_t and the Open Group has
+   signalled its intention to change the requirement to be that
+   regoff_t be at least as wide as ptrdiff_t and ssize_t; see XBD ERN
+   60 (2005-08-25).  We don't know of any hosts where ssize_t or
+   ptrdiff_t is wider than ssize_t, so ssize_t is safe.  */
+typedef ssize_t regoff_t;
+
+/* The type of nonnegative object indexes.  Traditionally, GNU regex
+   uses 'int' for these.  Code that uses __re_idx_t should work
+   regardless of whether the type is signed.  */
+typedef size_t __re_idx_t;
+
+/* The type of object sizes.  */
+typedef size_t __re_size_t;
+
+/* The type of object sizes, in places where the traditional code
+   uses unsigned long int.  */
+typedef size_t __re_long_size_t;
+
+#else
+
+/* Use types that are binary-compatible with the traditional GNU regex
+   implementation, which mishandles strings longer than INT_MAX.  */
+
+typedef int regoff_t;
+typedef int __re_idx_t;
+typedef unsigned int __re_size_t;
+typedef unsigned long int __re_long_size_t;
+
+#endif
+
+/* The following two types have to be signed and unsigned integer type
+   wide enough to hold a value of a pointer.  For most ANSI compilers
+   ptrdiff_t and size_t should be likely OK.  Still size of these two
+   types is 2 for Microsoft C.  Ugh... */
+typedef long int s_reg_t;
+typedef unsigned long int active_reg_t;
+
+/* The following bits are used to determine the regexp syntax we
+   recognize.  The set/not-set meanings are chosen so that Emacs syntax
+   remains the value 0.  The bits are given in alphabetical order, and
+   the definitions shifted by one from the previous bit; thus, when we
+   add or remove a bit, only one other definition need change.  */
+typedef unsigned long int reg_syntax_t;
+
+#ifdef __USE_GNU_REGEX
+
+/* If this bit is not set, then \ inside a bracket expression is literal.
+   If set, then such a \ quotes the following character.  */
+# define RE_BACKSLASH_ESCAPE_IN_LISTS ((unsigned long int) 1)
+
+/* If this bit is not set, then + and ? are operators, and \+ and \? are
+     literals.
+   If set, then \+ and \? are operators and + and ? are literals.  */
+# define RE_BK_PLUS_QM (RE_BACKSLASH_ESCAPE_IN_LISTS << 1)
+
+/* If this bit is set, then character classes are supported.  They are:
+     [:alpha:], [:upper:], [:lower:],  [:digit:], [:alnum:], [:xdigit:],
+     [:space:], [:print:], [:punct:], [:graph:], and [:cntrl:].
+   If not set, then character classes are not supported.  */
+# define RE_CHAR_CLASSES (RE_BK_PLUS_QM << 1)
+
+/* If this bit is set, then ^ and $ are always anchors (outside bracket
+     expressions, of course).
+   If this bit is not set, then it depends:
+       ^  is an anchor if it is at the beginning of a regular
+          expression or after an open-group or an alternation operator;
+       $  is an anchor if it is at the end of a regular expression, or
+          before a close-group or an alternation operator.
+
+   This bit could be (re)combined with RE_CONTEXT_INDEP_OPS, because
+   POSIX draft 11.2 says that * etc. in leading positions is undefined.
+   We already implemented a previous draft which made those constructs
+   invalid, though, so we haven't changed the code back.  */
+# define RE_CONTEXT_INDEP_ANCHORS (RE_CHAR_CLASSES << 1)
+
+/* If this bit is set, then special characters are always special
+     regardless of where they are in the pattern.
+   If this bit is not set, then special characters are special only in
+     some contexts; otherwise they are ordinary.  Specifically,
+     * + ? and intervals are only special when not after the beginning,
+     open-group, or alternation operator.  */
+# define RE_CONTEXT_INDEP_OPS (RE_CONTEXT_INDEP_ANCHORS << 1)
+
+/* If this bit is set, then *, +, ?, and { cannot be first in an re or
+     immediately after an alternation or begin-group operator.  */
+# define RE_CONTEXT_INVALID_OPS (RE_CONTEXT_INDEP_OPS << 1)
+
+/* If this bit is set, then . matches newline.
+   If not set, then it doesn't.  */
+# define RE_DOT_NEWLINE (RE_CONTEXT_INVALID_OPS << 1)
+
+/* If this bit is set, then . doesn't match NUL.
+   If not set, then it does.  */
+# define RE_DOT_NOT_NULL (RE_DOT_NEWLINE << 1)
+
+/* If this bit is set, nonmatching lists [^...] do not match newline.
+   If not set, they do.  */
+# define RE_HAT_LISTS_NOT_NEWLINE (RE_DOT_NOT_NULL << 1)
+
+/* If this bit is set, either \{...\} or {...} defines an
+     interval, depending on RE_NO_BK_BRACES.
+   If not set, \{, \}, {, and } are literals.  */
+# define RE_INTERVALS (RE_HAT_LISTS_NOT_NEWLINE << 1)
+
+/* If this bit is set, +, ? and | aren't recognized as operators.
+   If not set, they are.  */
+# define RE_LIMITED_OPS (RE_INTERVALS << 1)
+
+/* If this bit is set, newline is an alternation operator.
+   If not set, newline is literal.  */
+# define RE_NEWLINE_ALT (RE_LIMITED_OPS << 1)
+
+/* If this bit is set, then `{...}' defines an interval, and \{ and \}
+     are literals.
+  If not set, then `\{...\}' defines an interval.  */
+# define RE_NO_BK_BRACES (RE_NEWLINE_ALT << 1)
+
+/* If this bit is set, (...) defines a group, and \( and \) are literals.
+   If not set, \(...\) defines a group, and ( and ) are literals.  */
+# define RE_NO_BK_PARENS (RE_NO_BK_BRACES << 1)
+
+/* If this bit is set, then \<digit> matches <digit>.
+   If not set, then \<digit> is a back-reference.  */
+# define RE_NO_BK_REFS (RE_NO_BK_PARENS << 1)
+
+/* If this bit is set, then | is an alternation operator, and \| is literal.
+   If not set, then \| is an alternation operator, and | is literal.  */
+# define RE_NO_BK_VBAR (RE_NO_BK_REFS << 1)
+
+/* If this bit is set, then an ending range point collating higher
+     than the starting range point, as in [z-a], is invalid.
+   If not set, then when ending range point collates higher than the
+     starting range point, the range is ignored.  */
+# define RE_NO_EMPTY_RANGES (RE_NO_BK_VBAR << 1)
+
+/* If this bit is set, then an unmatched ) is ordinary.
+   If not set, then an unmatched ) is invalid.  */
+# define RE_UNMATCHED_RIGHT_PAREN_ORD (RE_NO_EMPTY_RANGES << 1)
+
+/* If this bit is set, succeed as soon as we match the whole pattern,
+   without further backtracking.  */
+# define RE_NO_POSIX_BACKTRACKING (RE_UNMATCHED_RIGHT_PAREN_ORD << 1)
+
+/* If this bit is set, do not process the GNU regex operators.
+   If not set, then the GNU regex operators are recognized. */
+# define RE_NO_GNU_OPS (RE_NO_POSIX_BACKTRACKING << 1)
+
+/* If this bit is set, turn on internal regex debugging.
+   If not set, and debugging was on, turn it off.
+   This only works if regex.c is compiled -DDEBUG.
+   We define this bit always, so that all that's needed to turn on
+   debugging is to recompile regex.c; the calling code can always have
+   this bit set, and it won't affect anything in the normal case. */
+# define RE_DEBUG (RE_NO_GNU_OPS << 1)
+
+/* If this bit is set, a syntactically invalid interval is treated as
+   a string of ordinary characters.  For example, the ERE 'a{1' is
+   treated as 'a\{1'.  */
+# define RE_INVALID_INTERVAL_ORD (RE_DEBUG << 1)
+
+/* If this bit is set, then ignore case when matching.
+   If not set, then case is significant.  */
+# define RE_ICASE (RE_INVALID_INTERVAL_ORD << 1)
+
+/* This bit is used internally like RE_CONTEXT_INDEP_ANCHORS but only
+   for ^, because it is difficult to scan the regex backwards to find
+   whether ^ should be special.  */
+# define RE_CARET_ANCHORS_HERE (RE_ICASE << 1)
+
+/* If this bit is set, then \{ cannot be first in a regex or
+   immediately after an alternation, open-group or \} operator.  */
+# define RE_CONTEXT_INVALID_DUP (RE_CARET_ANCHORS_HERE << 1)
+
+/* If this bit is set, then no_sub will be set to 1 during
+   re_compile_pattern.  */
+# define RE_NO_SUB (RE_CONTEXT_INVALID_DUP << 1)
+
+#endif /* defined __USE_GNU_REGEX */
+
+/* This global variable defines the particular regexp syntax to use (for
+   some interfaces).  When a regexp is compiled, the syntax used is
+   stored in the pattern buffer, so changing this does not affect
+   already-compiled regexps.  */
+extern reg_syntax_t re_syntax_options;
+\f
+#ifdef __USE_GNU_REGEX
+/* Define combinations of the above bits for the standard possibilities.
+   (The [[[ comments delimit what gets put into the Texinfo file, so
+   don't delete them!)  */
+/* [[[begin syntaxes]]] */
+# define RE_SYNTAX_EMACS 0
+
+# define RE_SYNTAX_AWK                                                 \
+  (RE_BACKSLASH_ESCAPE_IN_LISTS   | RE_DOT_NOT_NULL                    \
+   | RE_NO_BK_PARENS              | RE_NO_BK_REFS                      \
+   | RE_NO_BK_VBAR                | RE_NO_EMPTY_RANGES                 \
+   | RE_DOT_NEWLINE              | RE_CONTEXT_INDEP_ANCHORS            \
+   | RE_UNMATCHED_RIGHT_PAREN_ORD | RE_NO_GNU_OPS)
+
+# define RE_SYNTAX_GNU_AWK                                             \
+  ((RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS | RE_DEBUG)        \
+   & ~(RE_DOT_NOT_NULL | RE_INTERVALS | RE_CONTEXT_INDEP_OPS           \
+       | RE_CONTEXT_INVALID_OPS ))
+
+# define RE_SYNTAX_POSIX_AWK                                           \
+  (RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS             \
+   | RE_INTERVALS          | RE_NO_GNU_OPS)
+
+# define RE_SYNTAX_GREP                                                        \
+  (RE_BK_PLUS_QM              | RE_CHAR_CLASSES                                \
+   | RE_HAT_LISTS_NOT_NEWLINE | RE_INTERVALS                           \
+   | RE_NEWLINE_ALT)
+
+# define RE_SYNTAX_EGREP                                               \
+  (RE_CHAR_CLASSES        | RE_CONTEXT_INDEP_ANCHORS                   \
+   | RE_CONTEXT_INDEP_OPS | RE_HAT_LISTS_NOT_NEWLINE                   \
+   | RE_NEWLINE_ALT       | RE_NO_BK_PARENS                            \
+   | RE_NO_BK_VBAR)
+
+# define RE_SYNTAX_POSIX_EGREP                                         \
+  (RE_SYNTAX_EGREP | RE_INTERVALS | RE_NO_BK_BRACES                    \
+   | RE_INVALID_INTERVAL_ORD)
+
+/* P1003.2/D11.2, section 4.20.7.1, lines 5078ff.  */
+# define RE_SYNTAX_ED RE_SYNTAX_POSIX_BASIC
+
+# define RE_SYNTAX_SED RE_SYNTAX_POSIX_BASIC
+
+/* Syntax bits common to both basic and extended POSIX regex syntax.  */
+# define _RE_SYNTAX_POSIX_COMMON                                       \
+  (RE_CHAR_CLASSES | RE_DOT_NEWLINE      | RE_DOT_NOT_NULL             \
+   | RE_INTERVALS  | RE_NO_EMPTY_RANGES)
+
+# define RE_SYNTAX_POSIX_BASIC                                         \
+  (_RE_SYNTAX_POSIX_COMMON | RE_BK_PLUS_QM | RE_CONTEXT_INVALID_DUP)
+
+/* Differs from ..._POSIX_BASIC only in that RE_BK_PLUS_QM becomes
+   RE_LIMITED_OPS, i.e., \? \+ \| are not recognized.  Actually, this
+   isn't minimal, since other operators, such as \`, aren't disabled.  */
+# define RE_SYNTAX_POSIX_MINIMAL_BASIC                                 \
+  (_RE_SYNTAX_POSIX_COMMON | RE_LIMITED_OPS)
+
+# define RE_SYNTAX_POSIX_EXTENDED                                      \
+  (_RE_SYNTAX_POSIX_COMMON  | RE_CONTEXT_INDEP_ANCHORS                 \
+   | RE_CONTEXT_INDEP_OPS   | RE_NO_BK_BRACES                          \
+   | RE_NO_BK_PARENS        | RE_NO_BK_VBAR                            \
+   | RE_CONTEXT_INVALID_OPS | RE_UNMATCHED_RIGHT_PAREN_ORD)
+
+/* Differs from ..._POSIX_EXTENDED in that RE_CONTEXT_INDEP_OPS is
+   removed and RE_NO_BK_REFS is added.  */
+# define RE_SYNTAX_POSIX_MINIMAL_EXTENDED                              \
+  (_RE_SYNTAX_POSIX_COMMON  | RE_CONTEXT_INDEP_ANCHORS                 \
+   | RE_CONTEXT_INVALID_OPS | RE_NO_BK_BRACES                          \
+   | RE_NO_BK_PARENS        | RE_NO_BK_REFS                            \
+   | RE_NO_BK_VBAR         | RE_UNMATCHED_RIGHT_PAREN_ORD)
+/* [[[end syntaxes]]] */
+
+#endif /* defined __USE_GNU_REGEX */
+\f
+#ifdef __USE_GNU_REGEX
+
+/* Maximum number of duplicates an interval can allow.  POSIX-conforming
+   systems might define this in <limits.h>, but we want our
+   value, so remove any previous define.  */
+# ifdef RE_DUP_MAX
+#  undef RE_DUP_MAX
+# endif
+
+/* RE_DUP_MAX is 2**15 - 1 because an earlier implementation stored
+   the counter as a 2-byte signed integer.  This is no longer true, so
+   RE_DUP_MAX could be increased to (INT_MAX / 10 - 1), or to
+   ((SIZE_MAX - 2) / 10 - 1) if _REGEX_LARGE_OFFSETS is defined.
+   However, there would be a huge performance problem if someone
+   actually used a pattern like a\{214748363\}, so RE_DUP_MAX retains
+   its historical value.  */
+# define RE_DUP_MAX (0x7fff)
+
+#endif /* defined __USE_GNU_REGEX */
+
+
+/* POSIX `cflags' bits (i.e., information for `regcomp').  */
+
+/* If this bit is set, then use extended regular expression syntax.
+   If not set, then use basic regular expression syntax.  */
+#define REG_EXTENDED 1
+
+/* If this bit is set, then ignore case when matching.
+   If not set, then case is significant.  */
+#define REG_ICASE (1 << 1)
+
+/* If this bit is set, then anchors do not match at newline
+     characters in the string.
+   If not set, then anchors do match at newlines.  */
+#define REG_NEWLINE (1 << 2)
+
+/* If this bit is set, then report only success or fail in regexec.
+   If not set, then returns differ between not matching and errors.  */
+#define REG_NOSUB (1 << 3)
+
+
+/* POSIX `eflags' bits (i.e., information for regexec).  */
+
+/* If this bit is set, then the beginning-of-line operator doesn't match
+     the beginning of the string (presumably because it's not the
+     beginning of a line).
+   If not set, then the beginning-of-line operator does match the
+     beginning of the string.  */
+#define REG_NOTBOL 1
+
+/* Like REG_NOTBOL, except for the end-of-line.  */
+#define REG_NOTEOL (1 << 1)
+
+/* Use PMATCH[0] to delimit the start and end of the search in the
+   buffer.  */
+#define REG_STARTEND (1 << 2)
+
+
+/* If any error codes are removed, changed, or added, update the
+   `__re_error_msgid' table in regcomp.c.  */
+
+typedef enum
+{
+  _REG_ENOSYS = -1,    /* This will never happen for this implementation.  */
+  _REG_NOERROR = 0,    /* Success.  */
+  _REG_NOMATCH,                /* Didn't find a match (for regexec).  */
+
+  /* POSIX regcomp return error codes.  (In the order listed in the
+     standard.)  */
+  _REG_BADPAT,         /* Invalid pattern.  */
+  _REG_ECOLLATE,       /* Invalid collating element.  */
+  _REG_ECTYPE,         /* Invalid character class name.  */
+  _REG_EESCAPE,                /* Trailing backslash.  */
+  _REG_ESUBREG,                /* Invalid back reference.  */
+  _REG_EBRACK,         /* Unmatched left bracket.  */
+  _REG_EPAREN,         /* Parenthesis imbalance.  */
+  _REG_EBRACE,         /* Unmatched \{.  */
+  _REG_BADBR,          /* Invalid contents of \{\}.  */
+  _REG_ERANGE,         /* Invalid range end.  */
+  _REG_ESPACE,         /* Ran out of memory.  */
+  _REG_BADRPT,         /* No preceding re for repetition op.  */
+
+  /* Error codes we've added.  */
+  _REG_EEND,           /* Premature end.  */
+  _REG_ESIZE,          /* Compiled pattern bigger than 2^16 bytes.  */
+  _REG_ERPAREN         /* Unmatched ) or \); not returned from regcomp.  */
+} reg_errcode_t;
+
+#ifdef _XOPEN_SOURCE
+# define REG_ENOSYS    _REG_ENOSYS
+#endif
+#define REG_NOERROR    _REG_NOERROR
+#define REG_NOMATCH    _REG_NOMATCH
+#define REG_BADPAT     _REG_BADPAT
+#define REG_ECOLLATE   _REG_ECOLLATE
+#define REG_ECTYPE     _REG_ECTYPE
+#define REG_EESCAPE    _REG_EESCAPE
+#define REG_ESUBREG    _REG_ESUBREG
+#define REG_EBRACK     _REG_EBRACK
+#define REG_EPAREN     _REG_EPAREN
+#define REG_EBRACE     _REG_EBRACE
+#define REG_BADBR      _REG_BADBR
+#define REG_ERANGE     _REG_ERANGE
+#define REG_ESPACE     _REG_ESPACE
+#define REG_BADRPT     _REG_BADRPT
+#define REG_EEND       _REG_EEND
+#define REG_ESIZE      _REG_ESIZE
+#define REG_ERPAREN    _REG_ERPAREN
+\f
+/* struct re_pattern_buffer normally uses member names like `buffer'
+   that POSIX does not allow.  In POSIX mode these members have names
+   with leading `re_' (e.g., `re_buffer').  */
+#ifdef __USE_GNU_REGEX
+# define _REG_RE_NAME(id) id
+# define _REG_RM_NAME(id) id
+#else
+# define _REG_RE_NAME(id) re_##id
+# define _REG_RM_NAME(id) rm_##id
+#endif
+
+/* The user can specify the type of the re_translate member by
+   defining the macro RE_TRANSLATE_TYPE, which defaults to unsigned
+   char *.  This pollutes the POSIX name space, so in POSIX mode just
+   use unsigned char *.  */
+#ifdef __USE_GNU_REGEX
+# ifndef RE_TRANSLATE_TYPE
+#  define RE_TRANSLATE_TYPE unsigned char *
+# endif
+# define REG_TRANSLATE_TYPE RE_TRANSLATE_TYPE
+#else
+# define REG_TRANSLATE_TYPE unsigned char *
+#endif
+
+/* This data structure represents a compiled pattern.  Before calling
+   the pattern compiler, the fields `buffer', `allocated', `fastmap',
+   `translate', and `no_sub' can be set.  After the pattern has been
+   compiled, the `re_nsub' field is available.  All other fields are
+   private to the regex routines.  */
+
+struct re_pattern_buffer
+{
+  /* Space that holds the compiled pattern.  It is declared as
+     `unsigned char *' because its elements are sometimes used as
+     array indexes.  */
+  unsigned char *_REG_RE_NAME (buffer);
+
+  /* Number of bytes to which `buffer' points.  */
+  __re_long_size_t _REG_RE_NAME (allocated);
+
+  /* Number of bytes actually used in `buffer'.  */
+  __re_long_size_t _REG_RE_NAME (used);
+
+  /* Syntax setting with which the pattern was compiled.  */
+  reg_syntax_t _REG_RE_NAME (syntax);
+
+  /* Pointer to a fastmap, if any, otherwise zero.  re_search uses the
+     fastmap, if there is one, to skip over impossible starting points
+     for matches.  */
+  char *_REG_RE_NAME (fastmap);
+
+  /* Either a translate table to apply to all characters before
+     comparing them, or zero for no translation.  The translation is
+     applied to a pattern when it is compiled and to a string when it
+     is matched.  */
+  REG_TRANSLATE_TYPE _REG_RE_NAME (translate);
+
+  /* Number of subexpressions found by the compiler.  */
+  size_t re_nsub;
+
+  /* Zero if this pattern cannot match the empty string, one else.
+     Well, in truth it's used only in `re_search_2', to see whether or
+     not we should use the fastmap, so we don't set this absolutely
+     perfectly; see `re_compile_fastmap' (the `duplicate' case).  */
+  unsigned int _REG_RE_NAME (can_be_null) : 1;
+
+  /* If REGS_UNALLOCATED, allocate space in the `regs' structure
+     for `max (RE_NREGS, re_nsub + 1)' groups.
+     If REGS_REALLOCATE, reallocate space if necessary.
+     If REGS_FIXED, use what's there.  */
+#ifdef __USE_GNU_REGEX
+# define REGS_UNALLOCATED 0
+# define REGS_REALLOCATE 1
+# define REGS_FIXED 2
+#endif
+  unsigned int _REG_RE_NAME (regs_allocated) : 2;
+
+  /* Set to zero when `re_compile_pattern' compiles a pattern; set to
+     one by `re_compile_fastmap' if it updates the fastmap.  */
+  unsigned int _REG_RE_NAME (fastmap_accurate) : 1;
+
+  /* If set, `re_match_2' does not return information about
+     subexpressions.  */
+  unsigned int _REG_RE_NAME (no_sub) : 1;
+
+  /* If set, a beginning-of-line anchor doesn't match at the beginning
+     of the string.  */
+  unsigned int _REG_RE_NAME (not_bol) : 1;
+
+  /* Similarly for an end-of-line anchor.  */
+  unsigned int _REG_RE_NAME (not_eol) : 1;
+
+  /* If true, an anchor at a newline matches.  */
+  unsigned int _REG_RE_NAME (newline_anchor) : 1;
+
+/* [[[end pattern_buffer]]] */
+};
+
+typedef struct re_pattern_buffer regex_t;
+\f
+/* This is the structure we store register match data in.  See
+   regex.texinfo for a full description of what registers match.  */
+struct re_registers
+{
+  __re_size_t _REG_RM_NAME (num_regs);
+  regoff_t *_REG_RM_NAME (start);
+  regoff_t *_REG_RM_NAME (end);
+};
+
+
+/* If `regs_allocated' is REGS_UNALLOCATED in the pattern buffer,
+   `re_match_2' returns information about at least this many registers
+   the first time a `regs' structure is passed.  */
+#if !defined RE_NREGS && defined __USE_GNU_REGEX
+# define RE_NREGS 30
+#endif
+
+
+/* POSIX specification for registers.  Aside from the different names than
+   `re_registers', POSIX uses an array of structures, instead of a
+   structure of arrays.  */
+typedef struct
+{
+  regoff_t rm_so;  /* Byte offset from string's start to substring's start.  */
+  regoff_t rm_eo;  /* Byte offset from string's start to substring's end.  */
+} regmatch_t;
+\f
+/* Declarations for routines.  */
+
+/* Sets the current default syntax to SYNTAX, and return the old syntax.
+   You can also simply assign to the `re_syntax_options' variable.  */
+extern reg_syntax_t re_set_syntax (reg_syntax_t __syntax);
+
+/* Compile the regular expression PATTERN, with length LENGTH
+   and syntax given by the global `re_syntax_options', into the buffer
+   BUFFER.  Return NULL if successful, and an error string if not.  */
+extern const char *re_compile_pattern (const char *__pattern, size_t __length,
+                                      struct re_pattern_buffer *__buffer);
+
+
+/* Compile a fastmap for the compiled pattern in BUFFER; used to
+   accelerate searches.  Return 0 if successful and -2 if was an
+   internal error.  */
+extern int re_compile_fastmap (struct re_pattern_buffer *__buffer);
+
+
+/* Search in the string STRING (with length LENGTH) for the pattern
+   compiled into BUFFER.  Start searching at position START, for RANGE
+   characters.  Return the starting position of the match, -1 for no
+   match, or -2 for an internal error.  Also return register
+   information in REGS (if REGS and BUFFER->no_sub are nonzero).  */
+extern regoff_t re_search (struct re_pattern_buffer *__buffer,
+                          const char *__string, __re_idx_t __length,
+                          __re_idx_t __start, regoff_t __range,
+                          struct re_registers *__regs);
+
+
+/* Like `re_search', but search in the concatenation of STRING1 and
+   STRING2.  Also, stop searching at index START + STOP.  */
+extern regoff_t re_search_2 (struct re_pattern_buffer *__buffer,
+                            const char *__string1, __re_idx_t __length1,
+                            const char *__string2, __re_idx_t __length2,
+                            __re_idx_t __start, regoff_t __range,
+                            struct re_registers *__regs,
+                            __re_idx_t __stop);
+
+
+/* Like `re_search', but return how many characters in STRING the regexp
+   in BUFFER matched, starting at position START.  */
+extern regoff_t re_match (struct re_pattern_buffer *__buffer,
+                         const char *__string, __re_idx_t __length,
+                         __re_idx_t __start, struct re_registers *__regs);
+
+
+/* Relates to `re_match' as `re_search_2' relates to `re_search'.  */
+extern regoff_t re_match_2 (struct re_pattern_buffer *__buffer,
+                           const char *__string1, __re_idx_t __length1,
+                           const char *__string2, __re_idx_t __length2,
+                           __re_idx_t __start, struct re_registers *__regs,
+                           __re_idx_t __stop);
+
+
+/* Set REGS to hold NUM_REGS registers, storing them in STARTS and
+   ENDS.  Subsequent matches using BUFFER and REGS will use this memory
+   for recording register information.  STARTS and ENDS must be
+   allocated with malloc, and must each be at least `NUM_REGS * sizeof
+   (regoff_t)' bytes long.
+
+   If NUM_REGS == 0, then subsequent matches should allocate their own
+   register data.
+
+   Unless this function is called, the first search or match using
+   BUFFER will allocate its own register data, without freeing the old
+   data.  */
+extern void re_set_registers (struct re_pattern_buffer *__buffer,
+                             struct re_registers *__regs,
+                             __re_size_t __num_regs,
+                             regoff_t *__starts, regoff_t *__ends);
+
+#if defined _REGEX_RE_COMP || defined _LIBC
+# ifndef _CRAY
+/* 4.2 bsd compatibility.  */
+extern char *re_comp (const char *);
+extern int re_exec (const char *);
+# endif
+#endif
+
+/* GCC 2.95 and later have "__restrict"; C99 compilers have
+   "restrict", and "configure" may have defined "restrict".
+   Other compilers use __restrict, __restrict__, and _Restrict, and
+   'configure' might #define 'restrict' to those words, so pick a
+   different name.  */
+#ifndef _Restrict_
+# if 199901L <= __STDC_VERSION__
+#  define _Restrict_ restrict
+# elif 2 < __GNUC__ || (2 == __GNUC__ && 95 <= __GNUC_MINOR__)
+#  define _Restrict_ __restrict
+# else
+#  define _Restrict_
+# endif
+#endif
+/* gcc 3.1 and up support the [restrict] syntax.  Don't trust
+   sys/cdefs.h's definition of __restrict_arr, though, as it
+   mishandles gcc -ansi -pedantic.  */
+#ifndef _Restrict_arr_
+# if ((199901L <= __STDC_VERSION__                                     \
+       || ((3 < __GNUC__ || (3 == __GNUC__ && 1 <= __GNUC_MINOR__))    \
+          && !__STRICT_ANSI__))                                        \
+      && !defined __GNUG__)
+#  define _Restrict_arr_ _Restrict_
+# else
+#  define _Restrict_arr_
+# endif
+#endif
+
+/* POSIX compatibility.  */
+extern int regcomp (regex_t *_Restrict_ __preg,
+                   const char *_Restrict_ __pattern,
+                   int __cflags);
+
+extern int regexec (const regex_t *_Restrict_ __preg,
+                   const char *_Restrict_ __string, size_t __nmatch,
+                   regmatch_t __pmatch[_Restrict_arr_],
+                   int __eflags);
+
+extern size_t regerror (int __errcode, const regex_t *_Restrict_ __preg,
+                       char *_Restrict_ __errbuf, size_t __errbuf_size);
+
+extern void regfree (regex_t *__preg);
+
+
+#ifdef __cplusplus
+}
+#endif /* C++ */
+
+#endif /* regex.h */
diff --git a/lib/regex_internal.c b/lib/regex_internal.c
new file mode 100644 (file)
index 0000000..b67ab3d
--- /dev/null
@@ -0,0 +1,1743 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Extended regular expression matching and search library.
+   Copyright (C) 2002-2011 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
+
+   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, 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. */
+
+static void re_string_construct_common (const char *str, Idx len,
+                                       re_string_t *pstr,
+                                       RE_TRANSLATE_TYPE trans, bool icase,
+                                       const re_dfa_t *dfa) internal_function;
+static re_dfastate_t *create_ci_newstate (const re_dfa_t *dfa,
+                                         const re_node_set *nodes,
+                                         re_hashval_t hash) internal_function;
+static re_dfastate_t *create_cd_newstate (const re_dfa_t *dfa,
+                                         const re_node_set *nodes,
+                                         unsigned int context,
+                                         re_hashval_t hash) internal_function;
+\f
+/* Functions for string operation.  */
+
+/* This function allocate the buffers.  It is necessary to call
+   re_string_reconstruct before using the object.  */
+
+static reg_errcode_t
+internal_function __attribute_warn_unused_result__
+re_string_allocate (re_string_t *pstr, const char *str, Idx len, Idx init_len,
+                   RE_TRANSLATE_TYPE trans, bool icase, const re_dfa_t *dfa)
+{
+  reg_errcode_t ret;
+  Idx init_buf_len;
+
+  /* Ensure at least one character fits into the buffers.  */
+  if (init_len < dfa->mb_cur_max)
+    init_len = dfa->mb_cur_max;
+  init_buf_len = (len + 1 < init_len) ? len + 1: init_len;
+  re_string_construct_common (str, len, pstr, trans, icase, dfa);
+
+  ret = re_string_realloc_buffers (pstr, init_buf_len);
+  if (BE (ret != REG_NOERROR, 0))
+    return ret;
+
+  pstr->word_char = dfa->word_char;
+  pstr->word_ops_used = dfa->word_ops_used;
+  pstr->mbs = pstr->mbs_allocated ? pstr->mbs : (unsigned char *) str;
+  pstr->valid_len = (pstr->mbs_allocated || dfa->mb_cur_max > 1) ? 0 : len;
+  pstr->valid_raw_len = pstr->valid_len;
+  return REG_NOERROR;
+}
+
+/* This function allocate the buffers, and initialize them.  */
+
+static reg_errcode_t
+internal_function __attribute_warn_unused_result__
+re_string_construct (re_string_t *pstr, const char *str, Idx len,
+                    RE_TRANSLATE_TYPE trans, bool icase, const re_dfa_t *dfa)
+{
+  reg_errcode_t ret;
+  memset (pstr, '\0', sizeof (re_string_t));
+  re_string_construct_common (str, len, pstr, trans, icase, dfa);
+
+  if (len > 0)
+    {
+      ret = re_string_realloc_buffers (pstr, len + 1);
+      if (BE (ret != REG_NOERROR, 0))
+       return ret;
+    }
+  pstr->mbs = pstr->mbs_allocated ? pstr->mbs : (unsigned char *) str;
+
+  if (icase)
+    {
+#ifdef RE_ENABLE_I18N
+      if (dfa->mb_cur_max > 1)
+       {
+         while (1)
+           {
+             ret = build_wcs_upper_buffer (pstr);
+             if (BE (ret != REG_NOERROR, 0))
+               return ret;
+             if (pstr->valid_raw_len >= len)
+               break;
+             if (pstr->bufs_len > pstr->valid_len + dfa->mb_cur_max)
+               break;
+             ret = re_string_realloc_buffers (pstr, pstr->bufs_len * 2);
+             if (BE (ret != REG_NOERROR, 0))
+               return ret;
+           }
+       }
+      else
+#endif /* RE_ENABLE_I18N  */
+       build_upper_buffer (pstr);
+    }
+  else
+    {
+#ifdef RE_ENABLE_I18N
+      if (dfa->mb_cur_max > 1)
+       build_wcs_buffer (pstr);
+      else
+#endif /* RE_ENABLE_I18N  */
+       {
+         if (trans != NULL)
+           re_string_translate_buffer (pstr);
+         else
+           {
+             pstr->valid_len = pstr->bufs_len;
+             pstr->valid_raw_len = pstr->bufs_len;
+           }
+       }
+    }
+
+  return REG_NOERROR;
+}
+
+/* Helper functions for re_string_allocate, and re_string_construct.  */
+
+static reg_errcode_t
+internal_function __attribute_warn_unused_result__
+re_string_realloc_buffers (re_string_t *pstr, Idx new_buf_len)
+{
+#ifdef RE_ENABLE_I18N
+  if (pstr->mb_cur_max > 1)
+    {
+      wint_t *new_wcs;
+
+      /* Avoid overflow.  */
+      size_t max_object_size = MAX (sizeof (wint_t), sizeof (Idx));
+      if (BE (SIZE_MAX / max_object_size < new_buf_len, 0))
+       return REG_ESPACE;
+
+      new_wcs = re_realloc (pstr->wcs, wint_t, new_buf_len);
+      if (BE (new_wcs == NULL, 0))
+       return REG_ESPACE;
+      pstr->wcs = new_wcs;
+      if (pstr->offsets != NULL)
+       {
+         Idx *new_offsets = re_realloc (pstr->offsets, Idx, new_buf_len);
+         if (BE (new_offsets == NULL, 0))
+           return REG_ESPACE;
+         pstr->offsets = new_offsets;
+       }
+    }
+#endif /* RE_ENABLE_I18N  */
+  if (pstr->mbs_allocated)
+    {
+      unsigned char *new_mbs = re_realloc (pstr->mbs, unsigned char,
+                                          new_buf_len);
+      if (BE (new_mbs == NULL, 0))
+       return REG_ESPACE;
+      pstr->mbs = new_mbs;
+    }
+  pstr->bufs_len = new_buf_len;
+  return REG_NOERROR;
+}
+
+
+static void
+internal_function
+re_string_construct_common (const char *str, Idx len, re_string_t *pstr,
+                           RE_TRANSLATE_TYPE trans, bool icase,
+                           const re_dfa_t *dfa)
+{
+  pstr->raw_mbs = (const unsigned char *) str;
+  pstr->len = len;
+  pstr->raw_len = len;
+  pstr->trans = trans;
+  pstr->icase = icase;
+  pstr->mbs_allocated = (trans != NULL || icase);
+  pstr->mb_cur_max = dfa->mb_cur_max;
+  pstr->is_utf8 = dfa->is_utf8;
+  pstr->map_notascii = dfa->map_notascii;
+  pstr->stop = pstr->len;
+  pstr->raw_stop = pstr->stop;
+}
+
+#ifdef RE_ENABLE_I18N
+
+/* Build wide character buffer PSTR->WCS.
+   If the byte sequence of the string are:
+     <mb1>(0), <mb1>(1), <mb2>(0), <mb2>(1), <sb3>
+   Then wide character buffer will be:
+     <wc1>   , WEOF    , <wc2>   , WEOF    , <wc3>
+   We use WEOF for padding, they indicate that the position isn't
+   a first byte of a multibyte character.
+
+   Note that this function assumes PSTR->VALID_LEN elements are already
+   built and starts from PSTR->VALID_LEN.  */
+
+static void
+internal_function
+build_wcs_buffer (re_string_t *pstr)
+{
+#ifdef _LIBC
+  unsigned char buf[MB_LEN_MAX];
+  assert (MB_LEN_MAX >= pstr->mb_cur_max);
+#else
+  unsigned char buf[64];
+#endif
+  mbstate_t prev_st;
+  Idx byte_idx, end_idx, remain_len;
+  size_t mbclen;
+
+  /* Build the buffers from pstr->valid_len to either pstr->len or
+     pstr->bufs_len.  */
+  end_idx = (pstr->bufs_len > pstr->len) ? pstr->len : pstr->bufs_len;
+  for (byte_idx = pstr->valid_len; byte_idx < end_idx;)
+    {
+      wchar_t wc;
+      const char *p;
+
+      remain_len = end_idx - byte_idx;
+      prev_st = pstr->cur_state;
+      /* Apply the translation if we need.  */
+      if (BE (pstr->trans != NULL, 0))
+       {
+         int i, ch;
+
+         for (i = 0; i < pstr->mb_cur_max && i < remain_len; ++i)
+           {
+             ch = pstr->raw_mbs [pstr->raw_mbs_idx + byte_idx + i];
+             buf[i] = pstr->mbs[byte_idx + i] = pstr->trans[ch];
+           }
+         p = (const char *) buf;
+       }
+      else
+       p = (const char *) pstr->raw_mbs + pstr->raw_mbs_idx + byte_idx;
+      mbclen = __mbrtowc (&wc, p, remain_len, &pstr->cur_state);
+      if (BE (mbclen == (size_t) -2, 0))
+       {
+         /* The buffer doesn't have enough space, finish to build.  */
+         pstr->cur_state = prev_st;
+         break;
+       }
+      else if (BE (mbclen == (size_t) -1 || mbclen == 0, 0))
+       {
+         /* We treat these cases as a singlebyte character.  */
+         mbclen = 1;
+         wc = (wchar_t) pstr->raw_mbs[pstr->raw_mbs_idx + byte_idx];
+         if (BE (pstr->trans != NULL, 0))
+           wc = pstr->trans[wc];
+         pstr->cur_state = prev_st;
+       }
+
+      /* Write wide character and padding.  */
+      pstr->wcs[byte_idx++] = wc;
+      /* Write paddings.  */
+      for (remain_len = byte_idx + mbclen - 1; byte_idx < remain_len ;)
+       pstr->wcs[byte_idx++] = WEOF;
+    }
+  pstr->valid_len = byte_idx;
+  pstr->valid_raw_len = byte_idx;
+}
+
+/* Build wide character buffer PSTR->WCS like build_wcs_buffer,
+   but for REG_ICASE.  */
+
+static reg_errcode_t
+internal_function __attribute_warn_unused_result__
+build_wcs_upper_buffer (re_string_t *pstr)
+{
+  mbstate_t prev_st;
+  Idx src_idx, byte_idx, end_idx, remain_len;
+  size_t mbclen;
+#ifdef _LIBC
+  char buf[MB_LEN_MAX];
+  assert (MB_LEN_MAX >= pstr->mb_cur_max);
+#else
+  char buf[64];
+#endif
+
+  byte_idx = pstr->valid_len;
+  end_idx = (pstr->bufs_len > pstr->len) ? pstr->len : pstr->bufs_len;
+
+  /* The following optimization assumes that ASCII characters can be
+     mapped to wide characters with a simple cast.  */
+  if (! pstr->map_notascii && pstr->trans == NULL && !pstr->offsets_needed)
+    {
+      while (byte_idx < end_idx)
+       {
+         wchar_t wc;
+
+         if (isascii (pstr->raw_mbs[pstr->raw_mbs_idx + byte_idx])
+             && mbsinit (&pstr->cur_state))
+           {
+             /* In case of a singlebyte character.  */
+             pstr->mbs[byte_idx]
+               = toupper (pstr->raw_mbs[pstr->raw_mbs_idx + byte_idx]);
+             /* The next step uses the assumption that wchar_t is encoded
+                ASCII-safe: all ASCII values can be converted like this.  */
+             pstr->wcs[byte_idx] = (wchar_t) pstr->mbs[byte_idx];
+             ++byte_idx;
+             continue;
+           }
+
+         remain_len = end_idx - byte_idx;
+         prev_st = pstr->cur_state;
+         mbclen = __mbrtowc (&wc,
+                             ((const char *) pstr->raw_mbs + pstr->raw_mbs_idx
+                              + byte_idx), remain_len, &pstr->cur_state);
+         if (BE (mbclen < (size_t) -2, 1))
+           {
+             wchar_t wcu = wc;
+             if (iswlower (wc))
+               {
+                 size_t mbcdlen;
+
+                 wcu = towupper (wc);
+                 mbcdlen = wcrtomb (buf, wcu, &prev_st);
+                 if (BE (mbclen == mbcdlen, 1))
+                   memcpy (pstr->mbs + byte_idx, buf, mbclen);
+                 else
+                   {
+                     src_idx = byte_idx;
+                     goto offsets_needed;
+                   }
+               }
+             else
+               memcpy (pstr->mbs + byte_idx,
+                       pstr->raw_mbs + pstr->raw_mbs_idx + byte_idx, mbclen);
+             pstr->wcs[byte_idx++] = wcu;
+             /* Write paddings.  */
+             for (remain_len = byte_idx + mbclen - 1; byte_idx < remain_len ;)
+               pstr->wcs[byte_idx++] = WEOF;
+           }
+         else if (mbclen == (size_t) -1 || mbclen == 0)
+           {
+             /* It is an invalid character or '\0'.  Just use the byte.  */
+             int ch = pstr->raw_mbs[pstr->raw_mbs_idx + byte_idx];
+             pstr->mbs[byte_idx] = ch;
+             /* And also cast it to wide char.  */
+             pstr->wcs[byte_idx++] = (wchar_t) ch;
+             if (BE (mbclen == (size_t) -1, 0))
+               pstr->cur_state = prev_st;
+           }
+         else
+           {
+             /* The buffer doesn't have enough space, finish to build.  */
+             pstr->cur_state = prev_st;
+             break;
+           }
+       }
+      pstr->valid_len = byte_idx;
+      pstr->valid_raw_len = byte_idx;
+      return REG_NOERROR;
+    }
+  else
+    for (src_idx = pstr->valid_raw_len; byte_idx < end_idx;)
+      {
+       wchar_t wc;
+       const char *p;
+      offsets_needed:
+       remain_len = end_idx - byte_idx;
+       prev_st = pstr->cur_state;
+       if (BE (pstr->trans != NULL, 0))
+         {
+           int i, ch;
+
+           for (i = 0; i < pstr->mb_cur_max && i < remain_len; ++i)
+             {
+               ch = pstr->raw_mbs [pstr->raw_mbs_idx + src_idx + i];
+               buf[i] = pstr->trans[ch];
+             }
+           p = (const char *) buf;
+         }
+       else
+         p = (const char *) pstr->raw_mbs + pstr->raw_mbs_idx + src_idx;
+       mbclen = __mbrtowc (&wc, p, remain_len, &pstr->cur_state);
+       if (BE (mbclen < (size_t) -2, 1))
+         {
+           wchar_t wcu = wc;
+           if (iswlower (wc))
+             {
+               size_t mbcdlen;
+
+               wcu = towupper (wc);
+               mbcdlen = wcrtomb ((char *) buf, wcu, &prev_st);
+               if (BE (mbclen == mbcdlen, 1))
+                 memcpy (pstr->mbs + byte_idx, buf, mbclen);
+               else if (mbcdlen != (size_t) -1)
+                 {
+                   size_t i;
+
+                   if (byte_idx + mbcdlen > pstr->bufs_len)
+                     {
+                       pstr->cur_state = prev_st;
+                       break;
+                     }
+
+                   if (pstr->offsets == NULL)
+                     {
+                       pstr->offsets = re_malloc (Idx, pstr->bufs_len);
+
+                       if (pstr->offsets == NULL)
+                         return REG_ESPACE;
+                     }
+                   if (!pstr->offsets_needed)
+                     {
+                       for (i = 0; i < (size_t) byte_idx; ++i)
+                         pstr->offsets[i] = i;
+                       pstr->offsets_needed = 1;
+                     }
+
+                   memcpy (pstr->mbs + byte_idx, buf, mbcdlen);
+                   pstr->wcs[byte_idx] = wcu;
+                   pstr->offsets[byte_idx] = src_idx;
+                   for (i = 1; i < mbcdlen; ++i)
+                     {
+                       pstr->offsets[byte_idx + i]
+                         = src_idx + (i < mbclen ? i : mbclen - 1);
+                       pstr->wcs[byte_idx + i] = WEOF;
+                     }
+                   pstr->len += mbcdlen - mbclen;
+                   if (pstr->raw_stop > src_idx)
+                     pstr->stop += mbcdlen - mbclen;
+                   end_idx = (pstr->bufs_len > pstr->len)
+                             ? pstr->len : pstr->bufs_len;
+                   byte_idx += mbcdlen;
+                   src_idx += mbclen;
+                   continue;
+                 }
+               else
+                 memcpy (pstr->mbs + byte_idx, p, mbclen);
+             }
+           else
+             memcpy (pstr->mbs + byte_idx, p, mbclen);
+
+           if (BE (pstr->offsets_needed != 0, 0))
+             {
+               size_t i;
+               for (i = 0; i < mbclen; ++i)
+                 pstr->offsets[byte_idx + i] = src_idx + i;
+             }
+           src_idx += mbclen;
+
+           pstr->wcs[byte_idx++] = wcu;
+           /* Write paddings.  */
+           for (remain_len = byte_idx + mbclen - 1; byte_idx < remain_len ;)
+             pstr->wcs[byte_idx++] = WEOF;
+         }
+       else if (mbclen == (size_t) -1 || mbclen == 0)
+         {
+           /* It is an invalid character or '\0'.  Just use the byte.  */
+           int ch = pstr->raw_mbs[pstr->raw_mbs_idx + src_idx];
+
+           if (BE (pstr->trans != NULL, 0))
+             ch = pstr->trans [ch];
+           pstr->mbs[byte_idx] = ch;
+
+           if (BE (pstr->offsets_needed != 0, 0))
+             pstr->offsets[byte_idx] = src_idx;
+           ++src_idx;
+
+           /* And also cast it to wide char.  */
+           pstr->wcs[byte_idx++] = (wchar_t) ch;
+           if (BE (mbclen == (size_t) -1, 0))
+             pstr->cur_state = prev_st;
+         }
+       else
+         {
+           /* The buffer doesn't have enough space, finish to build.  */
+           pstr->cur_state = prev_st;
+           break;
+         }
+      }
+  pstr->valid_len = byte_idx;
+  pstr->valid_raw_len = src_idx;
+  return REG_NOERROR;
+}
+
+/* Skip characters until the index becomes greater than NEW_RAW_IDX.
+   Return the index.  */
+
+static Idx
+internal_function
+re_string_skip_chars (re_string_t *pstr, Idx new_raw_idx, wint_t *last_wc)
+{
+  mbstate_t prev_st;
+  Idx rawbuf_idx;
+  size_t mbclen;
+  wint_t wc = WEOF;
+
+  /* Skip the characters which are not necessary to check.  */
+  for (rawbuf_idx = pstr->raw_mbs_idx + pstr->valid_raw_len;
+       rawbuf_idx < new_raw_idx;)
+    {
+      wchar_t wc2;
+      Idx remain_len;
+      remain_len = pstr->len - rawbuf_idx;
+      prev_st = pstr->cur_state;
+      mbclen = __mbrtowc (&wc2, (const char *) pstr->raw_mbs + rawbuf_idx,
+                         remain_len, &pstr->cur_state);
+      if (BE (mbclen == (size_t) -2 || mbclen == (size_t) -1 || mbclen == 0, 0))
+       {
+         /* We treat these cases as a single byte character.  */
+         if (mbclen == 0 || remain_len == 0)
+           wc = L'\0';
+         else
+           wc = *(unsigned char *) (pstr->raw_mbs + rawbuf_idx);
+         mbclen = 1;
+         pstr->cur_state = prev_st;
+       }
+      else
+       wc = wc2;
+      /* Then proceed the next character.  */
+      rawbuf_idx += mbclen;
+    }
+  *last_wc = wc;
+  return rawbuf_idx;
+}
+#endif /* RE_ENABLE_I18N  */
+
+/* Build the buffer PSTR->MBS, and apply the translation if we need.
+   This function is used in case of REG_ICASE.  */
+
+static void
+internal_function
+build_upper_buffer (re_string_t *pstr)
+{
+  Idx char_idx, end_idx;
+  end_idx = (pstr->bufs_len > pstr->len) ? pstr->len : pstr->bufs_len;
+
+  for (char_idx = pstr->valid_len; char_idx < end_idx; ++char_idx)
+    {
+      int ch = pstr->raw_mbs[pstr->raw_mbs_idx + char_idx];
+      if (BE (pstr->trans != NULL, 0))
+       ch = pstr->trans[ch];
+      if (islower (ch))
+       pstr->mbs[char_idx] = toupper (ch);
+      else
+       pstr->mbs[char_idx] = ch;
+    }
+  pstr->valid_len = char_idx;
+  pstr->valid_raw_len = char_idx;
+}
+
+/* Apply TRANS to the buffer in PSTR.  */
+
+static void
+internal_function
+re_string_translate_buffer (re_string_t *pstr)
+{
+  Idx buf_idx, end_idx;
+  end_idx = (pstr->bufs_len > pstr->len) ? pstr->len : pstr->bufs_len;
+
+  for (buf_idx = pstr->valid_len; buf_idx < end_idx; ++buf_idx)
+    {
+      int ch = pstr->raw_mbs[pstr->raw_mbs_idx + buf_idx];
+      pstr->mbs[buf_idx] = pstr->trans[ch];
+    }
+
+  pstr->valid_len = buf_idx;
+  pstr->valid_raw_len = buf_idx;
+}
+
+/* This function re-construct the buffers.
+   Concretely, convert to wide character in case of pstr->mb_cur_max > 1,
+   convert to upper case in case of REG_ICASE, apply translation.  */
+
+static reg_errcode_t
+internal_function __attribute_warn_unused_result__
+re_string_reconstruct (re_string_t *pstr, Idx idx, int eflags)
+{
+  Idx offset;
+
+  if (BE (pstr->raw_mbs_idx <= idx, 0))
+    offset = idx - pstr->raw_mbs_idx;
+  else
+    {
+      /* Reset buffer.  */
+#ifdef RE_ENABLE_I18N
+      if (pstr->mb_cur_max > 1)
+       memset (&pstr->cur_state, '\0', sizeof (mbstate_t));
+#endif /* RE_ENABLE_I18N */
+      pstr->len = pstr->raw_len;
+      pstr->stop = pstr->raw_stop;
+      pstr->valid_len = 0;
+      pstr->raw_mbs_idx = 0;
+      pstr->valid_raw_len = 0;
+      pstr->offsets_needed = 0;
+      pstr->tip_context = ((eflags & REG_NOTBOL) ? CONTEXT_BEGBUF
+                          : CONTEXT_NEWLINE | CONTEXT_BEGBUF);
+      if (!pstr->mbs_allocated)
+       pstr->mbs = (unsigned char *) pstr->raw_mbs;
+      offset = idx;
+    }
+
+  if (BE (offset != 0, 1))
+    {
+      /* Should the already checked characters be kept?  */
+      if (BE (offset < pstr->valid_raw_len, 1))
+       {
+         /* Yes, move them to the front of the buffer.  */
+#ifdef RE_ENABLE_I18N
+         if (BE (pstr->offsets_needed, 0))
+           {
+             Idx low = 0, high = pstr->valid_len, mid;
+             do
+               {
+                 mid = (high + low) / 2;
+                 if (pstr->offsets[mid] > offset)
+                   high = mid;
+                 else if (pstr->offsets[mid] < offset)
+                   low = mid + 1;
+                 else
+                   break;
+               }
+             while (low < high);
+             if (pstr->offsets[mid] < offset)
+               ++mid;
+             pstr->tip_context = re_string_context_at (pstr, mid - 1,
+                                                       eflags);
+             /* This can be quite complicated, so handle specially
+                only the common and easy case where the character with
+                different length representation of lower and upper
+                case is present at or after offset.  */
+             if (pstr->valid_len > offset
+                 && mid == offset && pstr->offsets[mid] == offset)
+               {
+                 memmove (pstr->wcs, pstr->wcs + offset,
+                          (pstr->valid_len - offset) * sizeof (wint_t));
+                 memmove (pstr->mbs, pstr->mbs + offset, pstr->valid_len - offset);
+                 pstr->valid_len -= offset;
+                 pstr->valid_raw_len -= offset;
+                 for (low = 0; low < pstr->valid_len; low++)
+                   pstr->offsets[low] = pstr->offsets[low + offset] - offset;
+               }
+             else
+               {
+                 /* Otherwise, just find out how long the partial multibyte
+                    character at offset is and fill it with WEOF/255.  */
+                 pstr->len = pstr->raw_len - idx + offset;
+                 pstr->stop = pstr->raw_stop - idx + offset;
+                 pstr->offsets_needed = 0;
+                 while (mid > 0 && pstr->offsets[mid - 1] == offset)
+                   --mid;
+                 while (mid < pstr->valid_len)
+                   if (pstr->wcs[mid] != WEOF)
+                     break;
+                   else
+                     ++mid;
+                 if (mid == pstr->valid_len)
+                   pstr->valid_len = 0;
+                 else
+                   {
+                     pstr->valid_len = pstr->offsets[mid] - offset;
+                     if (pstr->valid_len)
+                       {
+                         for (low = 0; low < pstr->valid_len; ++low)
+                           pstr->wcs[low] = WEOF;
+                         memset (pstr->mbs, 255, pstr->valid_len);
+                       }
+                   }
+                 pstr->valid_raw_len = pstr->valid_len;
+               }
+           }
+         else
+#endif
+           {
+             pstr->tip_context = re_string_context_at (pstr, offset - 1,
+                                                       eflags);
+#ifdef RE_ENABLE_I18N
+             if (pstr->mb_cur_max > 1)
+               memmove (pstr->wcs, pstr->wcs + offset,
+                        (pstr->valid_len - offset) * sizeof (wint_t));
+#endif /* RE_ENABLE_I18N */
+             if (BE (pstr->mbs_allocated, 0))
+               memmove (pstr->mbs, pstr->mbs + offset,
+                        pstr->valid_len - offset);
+             pstr->valid_len -= offset;
+             pstr->valid_raw_len -= offset;
+#if DEBUG
+             assert (pstr->valid_len > 0);
+#endif
+           }
+       }
+      else
+       {
+#ifdef RE_ENABLE_I18N
+         /* No, skip all characters until IDX.  */
+         Idx prev_valid_len = pstr->valid_len;
+
+         if (BE (pstr->offsets_needed, 0))
+           {
+             pstr->len = pstr->raw_len - idx + offset;
+             pstr->stop = pstr->raw_stop - idx + offset;
+             pstr->offsets_needed = 0;
+           }
+#endif
+         pstr->valid_len = 0;
+#ifdef RE_ENABLE_I18N
+         if (pstr->mb_cur_max > 1)
+           {
+             Idx wcs_idx;
+             wint_t wc = WEOF;
+
+             if (pstr->is_utf8)
+               {
+                 const unsigned char *raw, *p, *end;
+
+                 /* Special case UTF-8.  Multi-byte chars start with any
+                    byte other than 0x80 - 0xbf.  */
+                 raw = pstr->raw_mbs + pstr->raw_mbs_idx;
+                 end = raw + (offset - pstr->mb_cur_max);
+                 if (end < pstr->raw_mbs)
+                   end = pstr->raw_mbs;
+                 p = raw + offset - 1;
+#ifdef _LIBC
+                 /* We know the wchar_t encoding is UCS4, so for the simple
+                    case, ASCII characters, skip the conversion step.  */
+                 if (isascii (*p) && BE (pstr->trans == NULL, 1))
+                   {
+                     memset (&pstr->cur_state, '\0', sizeof (mbstate_t));
+                     /* pstr->valid_len = 0; */
+                     wc = (wchar_t) *p;
+                   }
+                 else
+#endif
+                   for (; p >= end; --p)
+                     if ((*p & 0xc0) != 0x80)
+                       {
+                         mbstate_t cur_state;
+                         wchar_t wc2;
+                         Idx mlen = raw + pstr->len - p;
+                         size_t mbclen;
+
+#if 0 /* dead code: buf is set but never used */
+                         unsigned char buf[6];
+                         if (BE (pstr->trans != NULL, 0))
+                           {
+                             int i = mlen < 6 ? mlen : 6;
+                             while (--i >= 0)
+                               buf[i] = pstr->trans[p[i]];
+                           }
+#endif
+                         /* XXX Don't use mbrtowc, we know which conversion
+                            to use (UTF-8 -> UCS4).  */
+                         memset (&cur_state, 0, sizeof (cur_state));
+                         mbclen = __mbrtowc (&wc2, (const char *) p, mlen,
+                                             &cur_state);
+                         if (raw + offset - p <= mbclen
+                             && mbclen < (size_t) -2)
+                           {
+                             memset (&pstr->cur_state, '\0',
+                                     sizeof (mbstate_t));
+                             pstr->valid_len = mbclen - (raw + offset - p);
+                             wc = wc2;
+                           }
+                         break;
+                       }
+               }
+
+             if (wc == WEOF)
+               pstr->valid_len = re_string_skip_chars (pstr, idx, &wc) - idx;
+             if (wc == WEOF)
+               pstr->tip_context
+                 = re_string_context_at (pstr, prev_valid_len - 1, eflags);
+             else
+               pstr->tip_context = ((BE (pstr->word_ops_used != 0, 0)
+                                     && IS_WIDE_WORD_CHAR (wc))
+                                    ? CONTEXT_WORD
+                                    : ((IS_WIDE_NEWLINE (wc)
+                                        && pstr->newline_anchor)
+                                       ? CONTEXT_NEWLINE : 0));
+             if (BE (pstr->valid_len, 0))
+               {
+                 for (wcs_idx = 0; wcs_idx < pstr->valid_len; ++wcs_idx)
+                   pstr->wcs[wcs_idx] = WEOF;
+                 if (pstr->mbs_allocated)
+                   memset (pstr->mbs, 255, pstr->valid_len);
+               }
+             pstr->valid_raw_len = pstr->valid_len;
+           }
+         else
+#endif /* RE_ENABLE_I18N */
+           {
+             int c = pstr->raw_mbs[pstr->raw_mbs_idx + offset - 1];
+             pstr->valid_raw_len = 0;
+             if (pstr->trans)
+               c = pstr->trans[c];
+             pstr->tip_context = (bitset_contain (pstr->word_char, c)
+                                  ? CONTEXT_WORD
+                                  : ((IS_NEWLINE (c) && pstr->newline_anchor)
+                                     ? CONTEXT_NEWLINE : 0));
+           }
+       }
+      if (!BE (pstr->mbs_allocated, 0))
+       pstr->mbs += offset;
+    }
+  pstr->raw_mbs_idx = idx;
+  pstr->len -= offset;
+  pstr->stop -= offset;
+
+  /* Then build the buffers.  */
+#ifdef RE_ENABLE_I18N
+  if (pstr->mb_cur_max > 1)
+    {
+      if (pstr->icase)
+       {
+         reg_errcode_t ret = build_wcs_upper_buffer (pstr);
+         if (BE (ret != REG_NOERROR, 0))
+           return ret;
+       }
+      else
+       build_wcs_buffer (pstr);
+    }
+  else
+#endif /* RE_ENABLE_I18N */
+    if (BE (pstr->mbs_allocated, 0))
+      {
+       if (pstr->icase)
+         build_upper_buffer (pstr);
+       else if (pstr->trans != NULL)
+         re_string_translate_buffer (pstr);
+      }
+    else
+      pstr->valid_len = pstr->len;
+
+  pstr->cur_idx = 0;
+  return REG_NOERROR;
+}
+
+static unsigned char
+internal_function __attribute ((pure))
+re_string_peek_byte_case (const re_string_t *pstr, Idx idx)
+{
+  int ch;
+  Idx off;
+
+  /* Handle the common (easiest) cases first.  */
+  if (BE (!pstr->mbs_allocated, 1))
+    return re_string_peek_byte (pstr, idx);
+
+#ifdef RE_ENABLE_I18N
+  if (pstr->mb_cur_max > 1
+      && ! re_string_is_single_byte_char (pstr, pstr->cur_idx + idx))
+    return re_string_peek_byte (pstr, idx);
+#endif
+
+  off = pstr->cur_idx + idx;
+#ifdef RE_ENABLE_I18N
+  if (pstr->offsets_needed)
+    off = pstr->offsets[off];
+#endif
+
+  ch = pstr->raw_mbs[pstr->raw_mbs_idx + off];
+
+#ifdef RE_ENABLE_I18N
+  /* Ensure that e.g. for tr_TR.UTF-8 BACKSLASH DOTLESS SMALL LETTER I
+     this function returns CAPITAL LETTER I instead of first byte of
+     DOTLESS SMALL LETTER I.  The latter would confuse the parser,
+     since peek_byte_case doesn't advance cur_idx in any way.  */
+  if (pstr->offsets_needed && !isascii (ch))
+    return re_string_peek_byte (pstr, idx);
+#endif
+
+  return ch;
+}
+
+static unsigned char
+internal_function __attribute ((pure))
+re_string_fetch_byte_case (re_string_t *pstr)
+{
+  if (BE (!pstr->mbs_allocated, 1))
+    return re_string_fetch_byte (pstr);
+
+#ifdef RE_ENABLE_I18N
+  if (pstr->offsets_needed)
+    {
+      Idx off;
+      int ch;
+
+      /* For tr_TR.UTF-8 [[:islower:]] there is
+        [[: CAPITAL LETTER I WITH DOT lower:]] in mbs.  Skip
+        in that case the whole multi-byte character and return
+        the original letter.  On the other side, with
+        [[: DOTLESS SMALL LETTER I return [[:I, as doing
+        anything else would complicate things too much.  */
+
+      if (!re_string_first_byte (pstr, pstr->cur_idx))
+       return re_string_fetch_byte (pstr);
+
+      off = pstr->offsets[pstr->cur_idx];
+      ch = pstr->raw_mbs[pstr->raw_mbs_idx + off];
+
+      if (! isascii (ch))
+       return re_string_fetch_byte (pstr);
+
+      re_string_skip_bytes (pstr,
+                           re_string_char_size_at (pstr, pstr->cur_idx));
+      return ch;
+    }
+#endif
+
+  return pstr->raw_mbs[pstr->raw_mbs_idx + pstr->cur_idx++];
+}
+
+static void
+internal_function
+re_string_destruct (re_string_t *pstr)
+{
+#ifdef RE_ENABLE_I18N
+  re_free (pstr->wcs);
+  re_free (pstr->offsets);
+#endif /* RE_ENABLE_I18N  */
+  if (pstr->mbs_allocated)
+    re_free (pstr->mbs);
+}
+
+/* Return the context at IDX in INPUT.  */
+
+static unsigned int
+internal_function
+re_string_context_at (const re_string_t *input, Idx idx, int eflags)
+{
+  int c;
+  if (BE (! REG_VALID_INDEX (idx), 0))
+    /* In this case, we use the value stored in input->tip_context,
+       since we can't know the character in input->mbs[-1] here.  */
+    return input->tip_context;
+  if (BE (idx == input->len, 0))
+    return ((eflags & REG_NOTEOL) ? CONTEXT_ENDBUF
+           : CONTEXT_NEWLINE | CONTEXT_ENDBUF);
+#ifdef RE_ENABLE_I18N
+  if (input->mb_cur_max > 1)
+    {
+      wint_t wc;
+      Idx wc_idx = idx;
+      while(input->wcs[wc_idx] == WEOF)
+       {
+#ifdef DEBUG
+         /* It must not happen.  */
+         assert (REG_VALID_INDEX (wc_idx));
+#endif
+         --wc_idx;
+         if (! REG_VALID_INDEX (wc_idx))
+           return input->tip_context;
+       }
+      wc = input->wcs[wc_idx];
+      if (BE (input->word_ops_used != 0, 0) && IS_WIDE_WORD_CHAR (wc))
+       return CONTEXT_WORD;
+      return (IS_WIDE_NEWLINE (wc) && input->newline_anchor
+             ? CONTEXT_NEWLINE : 0);
+    }
+  else
+#endif
+    {
+      c = re_string_byte_at (input, idx);
+      if (bitset_contain (input->word_char, c))
+       return CONTEXT_WORD;
+      return IS_NEWLINE (c) && input->newline_anchor ? CONTEXT_NEWLINE : 0;
+    }
+}
+\f
+/* Functions for set operation.  */
+
+static reg_errcode_t
+internal_function __attribute_warn_unused_result__
+re_node_set_alloc (re_node_set *set, Idx size)
+{
+  set->alloc = size;
+  set->nelem = 0;
+  set->elems = re_malloc (Idx, size);
+  if (BE (set->elems == NULL, 0))
+    return REG_ESPACE;
+  return REG_NOERROR;
+}
+
+static reg_errcode_t
+internal_function __attribute_warn_unused_result__
+re_node_set_init_1 (re_node_set *set, Idx elem)
+{
+  set->alloc = 1;
+  set->nelem = 1;
+  set->elems = re_malloc (Idx, 1);
+  if (BE (set->elems == NULL, 0))
+    {
+      set->alloc = set->nelem = 0;
+      return REG_ESPACE;
+    }
+  set->elems[0] = elem;
+  return REG_NOERROR;
+}
+
+static reg_errcode_t
+internal_function __attribute_warn_unused_result__
+re_node_set_init_2 (re_node_set *set, Idx elem1, Idx elem2)
+{
+  set->alloc = 2;
+  set->elems = re_malloc (Idx, 2);
+  if (BE (set->elems == NULL, 0))
+    return REG_ESPACE;
+  if (elem1 == elem2)
+    {
+      set->nelem = 1;
+      set->elems[0] = elem1;
+    }
+  else
+    {
+      set->nelem = 2;
+      if (elem1 < elem2)
+       {
+         set->elems[0] = elem1;
+         set->elems[1] = elem2;
+       }
+      else
+       {
+         set->elems[0] = elem2;
+         set->elems[1] = elem1;
+       }
+    }
+  return REG_NOERROR;
+}
+
+static reg_errcode_t
+internal_function __attribute_warn_unused_result__
+re_node_set_init_copy (re_node_set *dest, const re_node_set *src)
+{
+  dest->nelem = src->nelem;
+  if (src->nelem > 0)
+    {
+      dest->alloc = dest->nelem;
+      dest->elems = re_malloc (Idx, dest->alloc);
+      if (BE (dest->elems == NULL, 0))
+       {
+         dest->alloc = dest->nelem = 0;
+         return REG_ESPACE;
+       }
+      memcpy (dest->elems, src->elems, src->nelem * sizeof (Idx));
+    }
+  else
+    re_node_set_init_empty (dest);
+  return REG_NOERROR;
+}
+
+/* Calculate the intersection of the sets SRC1 and SRC2. And merge it to
+   DEST. Return value indicate the error code or REG_NOERROR if succeeded.
+   Note: We assume dest->elems is NULL, when dest->alloc is 0.  */
+
+static reg_errcode_t
+internal_function __attribute_warn_unused_result__
+re_node_set_add_intersect (re_node_set *dest, const re_node_set *src1,
+                          const re_node_set *src2)
+{
+  Idx i1, i2, is, id, delta, sbase;
+  if (src1->nelem == 0 || src2->nelem == 0)
+    return REG_NOERROR;
+
+  /* We need dest->nelem + 2 * elems_in_intersection; this is a
+     conservative estimate.  */
+  if (src1->nelem + src2->nelem + dest->nelem > dest->alloc)
+    {
+      Idx new_alloc = src1->nelem + src2->nelem + dest->alloc;
+      Idx *new_elems = re_realloc (dest->elems, Idx, new_alloc);
+      if (BE (new_elems == NULL, 0))
+       return REG_ESPACE;
+      dest->elems = new_elems;
+      dest->alloc = new_alloc;
+    }
+
+  /* Find the items in the intersection of SRC1 and SRC2, and copy
+     into the top of DEST those that are not already in DEST itself.  */
+  sbase = dest->nelem + src1->nelem + src2->nelem;
+  i1 = src1->nelem - 1;
+  i2 = src2->nelem - 1;
+  id = dest->nelem - 1;
+  for (;;)
+    {
+      if (src1->elems[i1] == src2->elems[i2])
+       {
+         /* Try to find the item in DEST.  Maybe we could binary search?  */
+         while (REG_VALID_INDEX (id) && dest->elems[id] > src1->elems[i1])
+           --id;
+
+          if (! REG_VALID_INDEX (id) || dest->elems[id] != src1->elems[i1])
+            dest->elems[--sbase] = src1->elems[i1];
+
+         if (! REG_VALID_INDEX (--i1) || ! REG_VALID_INDEX (--i2))
+           break;
+       }
+
+      /* Lower the highest of the two items.  */
+      else if (src1->elems[i1] < src2->elems[i2])
+       {
+         if (! REG_VALID_INDEX (--i2))
+           break;
+       }
+      else
+       {
+         if (! REG_VALID_INDEX (--i1))
+           break;
+       }
+    }
+
+  id = dest->nelem - 1;
+  is = dest->nelem + src1->nelem + src2->nelem - 1;
+  delta = is - sbase + 1;
+
+  /* Now copy.  When DELTA becomes zero, the remaining
+     DEST elements are already in place; this is more or
+     less the same loop that is in re_node_set_merge.  */
+  dest->nelem += delta;
+  if (delta > 0 && REG_VALID_INDEX (id))
+    for (;;)
+      {
+       if (dest->elems[is] > dest->elems[id])
+         {
+           /* Copy from the top.  */
+           dest->elems[id + delta--] = dest->elems[is--];
+           if (delta == 0)
+             break;
+         }
+       else
+         {
+           /* Slide from the bottom.  */
+           dest->elems[id + delta] = dest->elems[id];
+           if (! REG_VALID_INDEX (--id))
+             break;
+         }
+      }
+
+  /* Copy remaining SRC elements.  */
+  memcpy (dest->elems, dest->elems + sbase, delta * sizeof (Idx));
+
+  return REG_NOERROR;
+}
+
+/* Calculate the union set of the sets SRC1 and SRC2. And store it to
+   DEST. Return value indicate the error code or REG_NOERROR if succeeded.  */
+
+static reg_errcode_t
+internal_function __attribute_warn_unused_result__
+re_node_set_init_union (re_node_set *dest, const re_node_set *src1,
+                       const re_node_set *src2)
+{
+  Idx i1, i2, id;
+  if (src1 != NULL && src1->nelem > 0 && src2 != NULL && src2->nelem > 0)
+    {
+      dest->alloc = src1->nelem + src2->nelem;
+      dest->elems = re_malloc (Idx, dest->alloc);
+      if (BE (dest->elems == NULL, 0))
+       return REG_ESPACE;
+    }
+  else
+    {
+      if (src1 != NULL && src1->nelem > 0)
+       return re_node_set_init_copy (dest, src1);
+      else if (src2 != NULL && src2->nelem > 0)
+       return re_node_set_init_copy (dest, src2);
+      else
+       re_node_set_init_empty (dest);
+      return REG_NOERROR;
+    }
+  for (i1 = i2 = id = 0 ; i1 < src1->nelem && i2 < src2->nelem ;)
+    {
+      if (src1->elems[i1] > src2->elems[i2])
+       {
+         dest->elems[id++] = src2->elems[i2++];
+         continue;
+       }
+      if (src1->elems[i1] == src2->elems[i2])
+       ++i2;
+      dest->elems[id++] = src1->elems[i1++];
+    }
+  if (i1 < src1->nelem)
+    {
+      memcpy (dest->elems + id, src1->elems + i1,
+            (src1->nelem - i1) * sizeof (Idx));
+      id += src1->nelem - i1;
+    }
+  else if (i2 < src2->nelem)
+    {
+      memcpy (dest->elems + id, src2->elems + i2,
+            (src2->nelem - i2) * sizeof (Idx));
+      id += src2->nelem - i2;
+    }
+  dest->nelem = id;
+  return REG_NOERROR;
+}
+
+/* Calculate the union set of the sets DEST and SRC. And store it to
+   DEST. Return value indicate the error code or REG_NOERROR if succeeded.  */
+
+static reg_errcode_t
+internal_function __attribute_warn_unused_result__
+re_node_set_merge (re_node_set *dest, const re_node_set *src)
+{
+  Idx is, id, sbase, delta;
+  if (src == NULL || src->nelem == 0)
+    return REG_NOERROR;
+  if (dest->alloc < 2 * src->nelem + dest->nelem)
+    {
+      Idx new_alloc = 2 * (src->nelem + dest->alloc);
+      Idx *new_buffer = re_realloc (dest->elems, Idx, new_alloc);
+      if (BE (new_buffer == NULL, 0))
+       return REG_ESPACE;
+      dest->elems = new_buffer;
+      dest->alloc = new_alloc;
+    }
+
+  if (BE (dest->nelem == 0, 0))
+    {
+      dest->nelem = src->nelem;
+      memcpy (dest->elems, src->elems, src->nelem * sizeof (Idx));
+      return REG_NOERROR;
+    }
+
+  /* Copy into the top of DEST the items of SRC that are not
+     found in DEST.  Maybe we could binary search in DEST?  */
+  for (sbase = dest->nelem + 2 * src->nelem,
+       is = src->nelem - 1, id = dest->nelem - 1;
+       REG_VALID_INDEX (is) && REG_VALID_INDEX (id); )
+    {
+      if (dest->elems[id] == src->elems[is])
+       is--, id--;
+      else if (dest->elems[id] < src->elems[is])
+       dest->elems[--sbase] = src->elems[is--];
+      else /* if (dest->elems[id] > src->elems[is]) */
+       --id;
+    }
+
+  if (REG_VALID_INDEX (is))
+    {
+      /* If DEST is exhausted, the remaining items of SRC must be unique.  */
+      sbase -= is + 1;
+      memcpy (dest->elems + sbase, src->elems, (is + 1) * sizeof (Idx));
+    }
+
+  id = dest->nelem - 1;
+  is = dest->nelem + 2 * src->nelem - 1;
+  delta = is - sbase + 1;
+  if (delta == 0)
+    return REG_NOERROR;
+
+  /* Now copy.  When DELTA becomes zero, the remaining
+     DEST elements are already in place.  */
+  dest->nelem += delta;
+  for (;;)
+    {
+      if (dest->elems[is] > dest->elems[id])
+       {
+         /* Copy from the top.  */
+         dest->elems[id + delta--] = dest->elems[is--];
+         if (delta == 0)
+           break;
+       }
+      else
+       {
+         /* Slide from the bottom.  */
+         dest->elems[id + delta] = dest->elems[id];
+         if (! REG_VALID_INDEX (--id))
+           {
+             /* Copy remaining SRC elements.  */
+             memcpy (dest->elems, dest->elems + sbase,
+                     delta * sizeof (Idx));
+             break;
+           }
+       }
+    }
+
+  return REG_NOERROR;
+}
+
+/* Insert the new element ELEM to the re_node_set* SET.
+   SET should not already have ELEM.
+   Return true if successful.  */
+
+static bool
+internal_function __attribute_warn_unused_result__
+re_node_set_insert (re_node_set *set, Idx elem)
+{
+  Idx idx;
+  /* In case the set is empty.  */
+  if (set->alloc == 0)
+    return BE (re_node_set_init_1 (set, elem) == REG_NOERROR, 1);
+
+  if (BE (set->nelem, 0) == 0)
+    {
+      /* We already guaranteed above that set->alloc != 0.  */
+      set->elems[0] = elem;
+      ++set->nelem;
+      return true;
+    }
+
+  /* Realloc if we need.  */
+  if (set->alloc == set->nelem)
+    {
+      Idx *new_elems;
+      set->alloc = set->alloc * 2;
+      new_elems = re_realloc (set->elems, Idx, set->alloc);
+      if (BE (new_elems == NULL, 0))
+       return false;
+      set->elems = new_elems;
+    }
+
+  /* Move the elements which follows the new element.  Test the
+     first element separately to skip a check in the inner loop.  */
+  if (elem < set->elems[0])
+    {
+      idx = 0;
+      for (idx = set->nelem; idx > 0; idx--)
+       set->elems[idx] = set->elems[idx - 1];
+    }
+  else
+    {
+      for (idx = set->nelem; set->elems[idx - 1] > elem; idx--)
+       set->elems[idx] = set->elems[idx - 1];
+    }
+
+  /* Insert the new element.  */
+  set->elems[idx] = elem;
+  ++set->nelem;
+  return true;
+}
+
+/* Insert the new element ELEM to the re_node_set* SET.
+   SET should not already have any element greater than or equal to ELEM.
+   Return true if successful.  */
+
+static bool
+internal_function __attribute_warn_unused_result__
+re_node_set_insert_last (re_node_set *set, Idx elem)
+{
+  /* Realloc if we need.  */
+  if (set->alloc == set->nelem)
+    {
+      Idx *new_elems;
+      set->alloc = (set->alloc + 1) * 2;
+      new_elems = re_realloc (set->elems, Idx, set->alloc);
+      if (BE (new_elems == NULL, 0))
+       return false;
+      set->elems = new_elems;
+    }
+
+  /* Insert the new element.  */
+  set->elems[set->nelem++] = elem;
+  return true;
+}
+
+/* Compare two node sets SET1 and SET2.
+   Return true if SET1 and SET2 are equivalent.  */
+
+static bool
+internal_function __attribute ((pure))
+re_node_set_compare (const re_node_set *set1, const re_node_set *set2)
+{
+  Idx i;
+  if (set1 == NULL || set2 == NULL || set1->nelem != set2->nelem)
+    return false;
+  for (i = set1->nelem ; REG_VALID_INDEX (--i) ; )
+    if (set1->elems[i] != set2->elems[i])
+      return false;
+  return true;
+}
+
+/* Return (idx + 1) if SET contains the element ELEM, return 0 otherwise.  */
+
+static Idx
+internal_function __attribute ((pure))
+re_node_set_contains (const re_node_set *set, Idx elem)
+{
+  __re_size_t idx, right, mid;
+  if (! REG_VALID_NONZERO_INDEX (set->nelem))
+    return 0;
+
+  /* Binary search the element.  */
+  idx = 0;
+  right = set->nelem - 1;
+  while (idx < right)
+    {
+      mid = (idx + right) / 2;
+      if (set->elems[mid] < elem)
+       idx = mid + 1;
+      else
+       right = mid;
+    }
+  return set->elems[idx] == elem ? idx + 1 : 0;
+}
+
+static void
+internal_function
+re_node_set_remove_at (re_node_set *set, Idx idx)
+{
+  if (idx < 0 || idx >= set->nelem)
+    return;
+  --set->nelem;
+  for (; idx < set->nelem; idx++)
+    set->elems[idx] = set->elems[idx + 1];
+}
+\f
+
+/* Add the token TOKEN to dfa->nodes, and return the index of the token.
+   Or return REG_MISSING if an error occurred.  */
+
+static Idx
+internal_function
+re_dfa_add_node (re_dfa_t *dfa, re_token_t token)
+{
+  if (BE (dfa->nodes_len >= dfa->nodes_alloc, 0))
+    {
+      size_t new_nodes_alloc = dfa->nodes_alloc * 2;
+      Idx *new_nexts, *new_indices;
+      re_node_set *new_edests, *new_eclosures;
+      re_token_t *new_nodes;
+      size_t max_object_size =
+       MAX (sizeof (re_token_t),
+            MAX (sizeof (re_node_set),
+                 sizeof (Idx)));
+
+      /* Avoid overflows.  */
+      if (BE (SIZE_MAX / 2 / max_object_size < dfa->nodes_alloc, 0))
+       return REG_MISSING;
+
+      new_nodes = re_realloc (dfa->nodes, re_token_t, new_nodes_alloc);
+      if (BE (new_nodes == NULL, 0))
+       return REG_MISSING;
+      dfa->nodes = new_nodes;
+      new_nexts = re_realloc (dfa->nexts, Idx, new_nodes_alloc);
+      new_indices = re_realloc (dfa->org_indices, Idx, new_nodes_alloc);
+      new_edests = re_realloc (dfa->edests, re_node_set, new_nodes_alloc);
+      new_eclosures = re_realloc (dfa->eclosures, re_node_set, new_nodes_alloc);
+      if (BE (new_nexts == NULL || new_indices == NULL
+             || new_edests == NULL || new_eclosures == NULL, 0))
+       return REG_MISSING;
+      dfa->nexts = new_nexts;
+      dfa->org_indices = new_indices;
+      dfa->edests = new_edests;
+      dfa->eclosures = new_eclosures;
+      dfa->nodes_alloc = new_nodes_alloc;
+    }
+  dfa->nodes[dfa->nodes_len] = token;
+  dfa->nodes[dfa->nodes_len].constraint = 0;
+#ifdef RE_ENABLE_I18N
+  {
+  int type = token.type;
+  dfa->nodes[dfa->nodes_len].accept_mb =
+    (type == OP_PERIOD && dfa->mb_cur_max > 1) || type == COMPLEX_BRACKET;
+  }
+#endif
+  dfa->nexts[dfa->nodes_len] = REG_MISSING;
+  re_node_set_init_empty (dfa->edests + dfa->nodes_len);
+  re_node_set_init_empty (dfa->eclosures + dfa->nodes_len);
+  return dfa->nodes_len++;
+}
+
+static inline re_hashval_t
+internal_function
+calc_state_hash (const re_node_set *nodes, unsigned int context)
+{
+  re_hashval_t hash = nodes->nelem + context;
+  Idx i;
+  for (i = 0 ; i < nodes->nelem ; i++)
+    hash += nodes->elems[i];
+  return hash;
+}
+
+/* Search for the state whose node_set is equivalent to NODES.
+   Return the pointer to the state, if we found it in the DFA.
+   Otherwise create the new one and return it.  In case of an error
+   return NULL and set the error code in ERR.
+   Note: - We assume NULL as the invalid state, then it is possible that
+          return value is NULL and ERR is REG_NOERROR.
+        - We never return non-NULL value in case of any errors, it is for
+          optimization.  */
+
+static re_dfastate_t *
+internal_function __attribute_warn_unused_result__
+re_acquire_state (reg_errcode_t *err, const re_dfa_t *dfa,
+                 const re_node_set *nodes)
+{
+  re_hashval_t hash;
+  re_dfastate_t *new_state;
+  struct re_state_table_entry *spot;
+  Idx i;
+#ifdef lint
+  /* Suppress bogus uninitialized-variable warnings.  */
+  *err = REG_NOERROR;
+#endif
+  if (BE (nodes->nelem == 0, 0))
+    {
+      *err = REG_NOERROR;
+      return NULL;
+    }
+  hash = calc_state_hash (nodes, 0);
+  spot = dfa->state_table + (hash & dfa->state_hash_mask);
+
+  for (i = 0 ; i < spot->num ; i++)
+    {
+      re_dfastate_t *state = spot->array[i];
+      if (hash != state->hash)
+       continue;
+      if (re_node_set_compare (&state->nodes, nodes))
+       return state;
+    }
+
+  /* There are no appropriate state in the dfa, create the new one.  */
+  new_state = create_ci_newstate (dfa, nodes, hash);
+  if (BE (new_state == NULL, 0))
+    *err = REG_ESPACE;
+
+  return new_state;
+}
+
+/* Search for the state whose node_set is equivalent to NODES and
+   whose context is equivalent to CONTEXT.
+   Return the pointer to the state, if we found it in the DFA.
+   Otherwise create the new one and return it.  In case of an error
+   return NULL and set the error code in ERR.
+   Note: - We assume NULL as the invalid state, then it is possible that
+          return value is NULL and ERR is REG_NOERROR.
+        - We never return non-NULL value in case of any errors, it is for
+          optimization.  */
+
+static re_dfastate_t *
+internal_function __attribute_warn_unused_result__
+re_acquire_state_context (reg_errcode_t *err, const re_dfa_t *dfa,
+                         const re_node_set *nodes, unsigned int context)
+{
+  re_hashval_t hash;
+  re_dfastate_t *new_state;
+  struct re_state_table_entry *spot;
+  Idx i;
+#ifdef lint
+  /* Suppress bogus uninitialized-variable warnings.  */
+  *err = REG_NOERROR;
+#endif
+  if (nodes->nelem == 0)
+    {
+      *err = REG_NOERROR;
+      return NULL;
+    }
+  hash = calc_state_hash (nodes, context);
+  spot = dfa->state_table + (hash & dfa->state_hash_mask);
+
+  for (i = 0 ; i < spot->num ; i++)
+    {
+      re_dfastate_t *state = spot->array[i];
+      if (state->hash == hash
+         && state->context == context
+         && re_node_set_compare (state->entrance_nodes, nodes))
+       return state;
+    }
+  /* There are no appropriate state in `dfa', create the new one.  */
+  new_state = create_cd_newstate (dfa, nodes, context, hash);
+  if (BE (new_state == NULL, 0))
+    *err = REG_ESPACE;
+
+  return new_state;
+}
+
+/* Finish initialization of the new state NEWSTATE, and using its hash value
+   HASH put in the appropriate bucket of DFA's state table.  Return value
+   indicates the error code if failed.  */
+
+static reg_errcode_t
+__attribute_warn_unused_result__
+register_state (const re_dfa_t *dfa, re_dfastate_t *newstate,
+               re_hashval_t hash)
+{
+  struct re_state_table_entry *spot;
+  reg_errcode_t err;
+  Idx i;
+
+  newstate->hash = hash;
+  err = re_node_set_alloc (&newstate->non_eps_nodes, newstate->nodes.nelem);
+  if (BE (err != REG_NOERROR, 0))
+    return REG_ESPACE;
+  for (i = 0; i < newstate->nodes.nelem; i++)
+    {
+      Idx elem = newstate->nodes.elems[i];
+      if (!IS_EPSILON_NODE (dfa->nodes[elem].type))
+       if (BE (! re_node_set_insert_last (&newstate->non_eps_nodes, elem), 0))
+         return REG_ESPACE;
+    }
+
+  spot = dfa->state_table + (hash & dfa->state_hash_mask);
+  if (BE (spot->alloc <= spot->num, 0))
+    {
+      Idx new_alloc = 2 * spot->num + 2;
+      re_dfastate_t **new_array = re_realloc (spot->array, re_dfastate_t *,
+                                             new_alloc);
+      if (BE (new_array == NULL, 0))
+       return REG_ESPACE;
+      spot->array = new_array;
+      spot->alloc = new_alloc;
+    }
+  spot->array[spot->num++] = newstate;
+  return REG_NOERROR;
+}
+
+static void
+free_state (re_dfastate_t *state)
+{
+  re_node_set_free (&state->non_eps_nodes);
+  re_node_set_free (&state->inveclosure);
+  if (state->entrance_nodes != &state->nodes)
+    {
+      re_node_set_free (state->entrance_nodes);
+      re_free (state->entrance_nodes);
+    }
+  re_node_set_free (&state->nodes);
+  re_free (state->word_trtable);
+  re_free (state->trtable);
+  re_free (state);
+}
+
+/* Create the new state which is independ of contexts.
+   Return the new state if succeeded, otherwise return NULL.  */
+
+static re_dfastate_t *
+internal_function __attribute_warn_unused_result__
+create_ci_newstate (const re_dfa_t *dfa, const re_node_set *nodes,
+                   re_hashval_t hash)
+{
+  Idx i;
+  reg_errcode_t err;
+  re_dfastate_t *newstate;
+
+  newstate = (re_dfastate_t *) calloc (sizeof (re_dfastate_t), 1);
+  if (BE (newstate == NULL, 0))
+    return NULL;
+  err = re_node_set_init_copy (&newstate->nodes, nodes);
+  if (BE (err != REG_NOERROR, 0))
+    {
+      re_free (newstate);
+      return NULL;
+    }
+
+  newstate->entrance_nodes = &newstate->nodes;
+  for (i = 0 ; i < nodes->nelem ; i++)
+    {
+      re_token_t *node = dfa->nodes + nodes->elems[i];
+      re_token_type_t type = node->type;
+      if (type == CHARACTER && !node->constraint)
+       continue;
+#ifdef RE_ENABLE_I18N
+      newstate->accept_mb |= node->accept_mb;
+#endif /* RE_ENABLE_I18N */
+
+      /* If the state has the halt node, the state is a halt state.  */
+      if (type == END_OF_RE)
+       newstate->halt = 1;
+      else if (type == OP_BACK_REF)
+       newstate->has_backref = 1;
+      else if (type == ANCHOR || node->constraint)
+       newstate->has_constraint = 1;
+    }
+  err = register_state (dfa, newstate, hash);
+  if (BE (err != REG_NOERROR, 0))
+    {
+      free_state (newstate);
+      newstate = NULL;
+    }
+  return newstate;
+}
+
+/* Create the new state which is depend on the context CONTEXT.
+   Return the new state if succeeded, otherwise return NULL.  */
+
+static re_dfastate_t *
+internal_function __attribute_warn_unused_result__
+create_cd_newstate (const re_dfa_t *dfa, const re_node_set *nodes,
+                   unsigned int context, re_hashval_t hash)
+{
+  Idx i, nctx_nodes = 0;
+  reg_errcode_t err;
+  re_dfastate_t *newstate;
+
+  newstate = (re_dfastate_t *) calloc (sizeof (re_dfastate_t), 1);
+  if (BE (newstate == NULL, 0))
+    return NULL;
+  err = re_node_set_init_copy (&newstate->nodes, nodes);
+  if (BE (err != REG_NOERROR, 0))
+    {
+      re_free (newstate);
+      return NULL;
+    }
+
+  newstate->context = context;
+  newstate->entrance_nodes = &newstate->nodes;
+
+  for (i = 0 ; i < nodes->nelem ; i++)
+    {
+      re_token_t *node = dfa->nodes + nodes->elems[i];
+      re_token_type_t type = node->type;
+      unsigned int constraint = node->constraint;
+
+      if (type == CHARACTER && !constraint)
+       continue;
+#ifdef RE_ENABLE_I18N
+      newstate->accept_mb |= node->accept_mb;
+#endif /* RE_ENABLE_I18N */
+
+      /* If the state has the halt node, the state is a halt state.  */
+      if (type == END_OF_RE)
+       newstate->halt = 1;
+      else if (type == OP_BACK_REF)
+       newstate->has_backref = 1;
+
+      if (constraint)
+       {
+         if (newstate->entrance_nodes == &newstate->nodes)
+           {
+             newstate->entrance_nodes = re_malloc (re_node_set, 1);
+             if (BE (newstate->entrance_nodes == NULL, 0))
+               {
+                 free_state (newstate);
+                 return NULL;
+               }
+             if (re_node_set_init_copy (newstate->entrance_nodes, nodes)
+                 != REG_NOERROR)
+               return NULL;
+             nctx_nodes = 0;
+             newstate->has_constraint = 1;
+           }
+
+         if (NOT_SATISFY_PREV_CONSTRAINT (constraint,context))
+           {
+             re_node_set_remove_at (&newstate->nodes, i - nctx_nodes);
+             ++nctx_nodes;
+           }
+       }
+    }
+  err = register_state (dfa, newstate, hash);
+  if (BE (err != REG_NOERROR, 0))
+    {
+      free_state (newstate);
+      newstate = NULL;
+    }
+  return  newstate;
+}
diff --git a/lib/regex_internal.h b/lib/regex_internal.h
new file mode 100644 (file)
index 0000000..a15e8ac
--- /dev/null
@@ -0,0 +1,872 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Extended regular expression matching and search library.
+   Copyright (C) 2002-2011 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
+
+   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, 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. */
+
+#ifndef _REGEX_INTERNAL_H
+#define _REGEX_INTERNAL_H 1
+
+#include <assert.h>
+#include <ctype.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <langinfo.h>
+#ifndef _LIBC
+# include "localcharset.h"
+#endif
+#include <locale.h>
+
+#include <wchar.h>
+#include <wctype.h>
+#include <stdint.h>
+#if defined _LIBC
+# include <bits/libc-lock.h>
+#else
+# define __libc_lock_init(NAME) do { } while (0)
+# define __libc_lock_lock(NAME) do { } while (0)
+# define __libc_lock_unlock(NAME) do { } while (0)
+#endif
+
+/* In case that the system doesn't have isblank().  */
+#if !defined _LIBC && ! (defined isblank || (HAVE_ISBLANK && HAVE_DECL_ISBLANK))
+# define isblank(ch) ((ch) == ' ' || (ch) == '\t')
+#endif
+
+#ifdef _LIBC
+# ifndef _RE_DEFINE_LOCALE_FUNCTIONS
+#  define _RE_DEFINE_LOCALE_FUNCTIONS 1
+#   include <locale/localeinfo.h>
+#   include <locale/elem-hash.h>
+#   include <locale/coll-lookup.h>
+# endif
+#endif
+
+/* This is for other GNU distributions with internationalized messages.  */
+#if (HAVE_LIBINTL_H && ENABLE_NLS) || defined _LIBC
+# include <libintl.h>
+# ifdef _LIBC
+#  undef gettext
+#  define gettext(msgid) \
+  INTUSE(__dcgettext) (_libc_intl_domainname, msgid, LC_MESSAGES)
+# endif
+#else
+# define gettext(msgid) (msgid)
+#endif
+
+#ifndef gettext_noop
+/* This define is so xgettext can find the internationalizable
+   strings.  */
+# define gettext_noop(String) String
+#endif
+
+/* For loser systems without the definition.  */
+#ifndef SIZE_MAX
+# define SIZE_MAX ((size_t) -1)
+#endif
+
+#if (defined MB_CUR_MAX && HAVE_WCTYPE_H && HAVE_ISWCTYPE && HAVE_WCSCOLL) || _LIBC
+# define RE_ENABLE_I18N
+#endif
+
+#if __GNUC__ >= 3
+# define BE(expr, val) __builtin_expect (expr, val)
+#else
+# define BE(expr, val) (expr)
+# ifdef _LIBC
+#  define inline
+# endif
+#endif
+
+/* Number of ASCII characters.  */
+#define ASCII_CHARS 0x80
+
+/* Number of single byte characters.  */
+#define SBC_MAX (UCHAR_MAX + 1)
+
+#define COLL_ELEM_LEN_MAX 8
+
+/* The character which represents newline.  */
+#define NEWLINE_CHAR '\n'
+#define WIDE_NEWLINE_CHAR L'\n'
+
+/* Rename to standard API for using out of glibc.  */
+#ifndef _LIBC
+# define __wctype wctype
+# define __iswctype iswctype
+# define __btowc btowc
+# define __wcrtomb wcrtomb
+# define __mbrtowc mbrtowc
+# define __regfree regfree
+# define attribute_hidden
+#endif /* not _LIBC */
+
+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)
+# define __attribute(arg) __attribute__ (arg)
+#else
+# define __attribute(arg)
+#endif
+
+typedef __re_idx_t Idx;
+
+/* Special return value for failure to match.  */
+#define REG_MISSING ((Idx) -1)
+
+/* Special return value for internal error.  */
+#define REG_ERROR ((Idx) -2)
+
+/* Test whether N is a valid index, and is not one of the above.  */
+#ifdef _REGEX_LARGE_OFFSETS
+# define REG_VALID_INDEX(n) ((Idx) (n) < REG_ERROR)
+#else
+# define REG_VALID_INDEX(n) (0 <= (n))
+#endif
+
+/* Test whether N is a valid nonzero index.  */
+#ifdef _REGEX_LARGE_OFFSETS
+# define REG_VALID_NONZERO_INDEX(n) ((Idx) ((n) - 1) < (Idx) (REG_ERROR - 1))
+#else
+# define REG_VALID_NONZERO_INDEX(n) (0 < (n))
+#endif
+
+/* A hash value, suitable for computing hash tables.  */
+typedef __re_size_t re_hashval_t;
+
+/* An integer used to represent a set of bits.  It must be unsigned,
+   and must be at least as wide as unsigned int.  */
+typedef unsigned long int bitset_word_t;
+/* All bits set in a bitset_word_t.  */
+#define BITSET_WORD_MAX ULONG_MAX
+
+/* Number of bits in a bitset_word_t.  For portability to hosts with
+   padding bits, do not use '(sizeof (bitset_word_t) * CHAR_BIT)';
+   instead, deduce it directly from BITSET_WORD_MAX.  Avoid
+   greater-than-32-bit integers and unconditional shifts by more than
+   31 bits, as they're not portable.  */
+#if BITSET_WORD_MAX == 0xffffffffUL
+# define BITSET_WORD_BITS 32
+#elif BITSET_WORD_MAX >> 31 >> 4 == 1
+# define BITSET_WORD_BITS 36
+#elif BITSET_WORD_MAX >> 31 >> 16 == 1
+# define BITSET_WORD_BITS 48
+#elif BITSET_WORD_MAX >> 31 >> 28 == 1
+# define BITSET_WORD_BITS 60
+#elif BITSET_WORD_MAX >> 31 >> 31 >> 1 == 1
+# define BITSET_WORD_BITS 64
+#elif BITSET_WORD_MAX >> 31 >> 31 >> 9 == 1
+# define BITSET_WORD_BITS 72
+#elif BITSET_WORD_MAX >> 31 >> 31 >> 31 >> 31 >> 3 == 1
+# define BITSET_WORD_BITS 128
+#elif BITSET_WORD_MAX >> 31 >> 31 >> 31 >> 31 >> 31 >> 31 >> 31 >> 31 >> 7 == 1
+# define BITSET_WORD_BITS 256
+#elif BITSET_WORD_MAX >> 31 >> 31 >> 31 >> 31 >> 31 >> 31 >> 31 >> 31 >> 7 > 1
+# define BITSET_WORD_BITS 257 /* any value > SBC_MAX will do here */
+# if BITSET_WORD_BITS <= SBC_MAX
+#  error "Invalid SBC_MAX"
+# endif
+#else
+# error "Add case for new bitset_word_t size"
+#endif
+
+/* Number of bitset_word_t values in a bitset_t.  */
+#define BITSET_WORDS ((SBC_MAX + BITSET_WORD_BITS - 1) / BITSET_WORD_BITS)
+
+typedef bitset_word_t bitset_t[BITSET_WORDS];
+typedef bitset_word_t *re_bitset_ptr_t;
+typedef const bitset_word_t *re_const_bitset_ptr_t;
+
+#define PREV_WORD_CONSTRAINT 0x0001
+#define PREV_NOTWORD_CONSTRAINT 0x0002
+#define NEXT_WORD_CONSTRAINT 0x0004
+#define NEXT_NOTWORD_CONSTRAINT 0x0008
+#define PREV_NEWLINE_CONSTRAINT 0x0010
+#define NEXT_NEWLINE_CONSTRAINT 0x0020
+#define PREV_BEGBUF_CONSTRAINT 0x0040
+#define NEXT_ENDBUF_CONSTRAINT 0x0080
+#define WORD_DELIM_CONSTRAINT 0x0100
+#define NOT_WORD_DELIM_CONSTRAINT 0x0200
+
+typedef enum
+{
+  INSIDE_WORD = PREV_WORD_CONSTRAINT | NEXT_WORD_CONSTRAINT,
+  WORD_FIRST = PREV_NOTWORD_CONSTRAINT | NEXT_WORD_CONSTRAINT,
+  WORD_LAST = PREV_WORD_CONSTRAINT | NEXT_NOTWORD_CONSTRAINT,
+  INSIDE_NOTWORD = PREV_NOTWORD_CONSTRAINT | NEXT_NOTWORD_CONSTRAINT,
+  LINE_FIRST = PREV_NEWLINE_CONSTRAINT,
+  LINE_LAST = NEXT_NEWLINE_CONSTRAINT,
+  BUF_FIRST = PREV_BEGBUF_CONSTRAINT,
+  BUF_LAST = NEXT_ENDBUF_CONSTRAINT,
+  WORD_DELIM = WORD_DELIM_CONSTRAINT,
+  NOT_WORD_DELIM = NOT_WORD_DELIM_CONSTRAINT
+} re_context_type;
+
+typedef struct
+{
+  Idx alloc;
+  Idx nelem;
+  Idx *elems;
+} re_node_set;
+
+typedef enum
+{
+  NON_TYPE = 0,
+
+  /* Node type, These are used by token, node, tree.  */
+  CHARACTER = 1,
+  END_OF_RE = 2,
+  SIMPLE_BRACKET = 3,
+  OP_BACK_REF = 4,
+  OP_PERIOD = 5,
+#ifdef RE_ENABLE_I18N
+  COMPLEX_BRACKET = 6,
+  OP_UTF8_PERIOD = 7,
+#endif /* RE_ENABLE_I18N */
+
+  /* We define EPSILON_BIT as a macro so that OP_OPEN_SUBEXP is used
+     when the debugger shows values of this enum type.  */
+#define EPSILON_BIT 8
+  OP_OPEN_SUBEXP = EPSILON_BIT | 0,
+  OP_CLOSE_SUBEXP = EPSILON_BIT | 1,
+  OP_ALT = EPSILON_BIT | 2,
+  OP_DUP_ASTERISK = EPSILON_BIT | 3,
+  ANCHOR = EPSILON_BIT | 4,
+
+  /* Tree type, these are used only by tree. */
+  CONCAT = 16,
+  SUBEXP = 17,
+
+  /* Token type, these are used only by token.  */
+  OP_DUP_PLUS = 18,
+  OP_DUP_QUESTION,
+  OP_OPEN_BRACKET,
+  OP_CLOSE_BRACKET,
+  OP_CHARSET_RANGE,
+  OP_OPEN_DUP_NUM,
+  OP_CLOSE_DUP_NUM,
+  OP_NON_MATCH_LIST,
+  OP_OPEN_COLL_ELEM,
+  OP_CLOSE_COLL_ELEM,
+  OP_OPEN_EQUIV_CLASS,
+  OP_CLOSE_EQUIV_CLASS,
+  OP_OPEN_CHAR_CLASS,
+  OP_CLOSE_CHAR_CLASS,
+  OP_WORD,
+  OP_NOTWORD,
+  OP_SPACE,
+  OP_NOTSPACE,
+  BACK_SLASH
+
+} re_token_type_t;
+
+#ifdef RE_ENABLE_I18N
+typedef struct
+{
+  /* Multibyte characters.  */
+  wchar_t *mbchars;
+
+  /* Collating symbols.  */
+# ifdef _LIBC
+  int32_t *coll_syms;
+# endif
+
+  /* Equivalence classes. */
+# ifdef _LIBC
+  int32_t *equiv_classes;
+# endif
+
+  /* Range expressions. */
+# ifdef _LIBC
+  uint32_t *range_starts;
+  uint32_t *range_ends;
+# else /* not _LIBC */
+  wchar_t *range_starts;
+  wchar_t *range_ends;
+# endif /* not _LIBC */
+
+  /* Character classes. */
+  wctype_t *char_classes;
+
+  /* If this character set is the non-matching list.  */
+  unsigned int non_match : 1;
+
+  /* # of multibyte characters.  */
+  Idx nmbchars;
+
+  /* # of collating symbols.  */
+  Idx ncoll_syms;
+
+  /* # of equivalence classes. */
+  Idx nequiv_classes;
+
+  /* # of range expressions. */
+  Idx nranges;
+
+  /* # of character classes. */
+  Idx nchar_classes;
+} re_charset_t;
+#endif /* RE_ENABLE_I18N */
+
+typedef struct
+{
+  union
+  {
+    unsigned char c;           /* for CHARACTER */
+    re_bitset_ptr_t sbcset;    /* for SIMPLE_BRACKET */
+#ifdef RE_ENABLE_I18N
+    re_charset_t *mbcset;      /* for COMPLEX_BRACKET */
+#endif /* RE_ENABLE_I18N */
+    Idx idx;                   /* for BACK_REF */
+    re_context_type ctx_type;  /* for ANCHOR */
+  } opr;
+#if __GNUC__ >= 2 && !__STRICT_ANSI__
+  re_token_type_t type : 8;
+#else
+  re_token_type_t type;
+#endif
+  unsigned int constraint : 10;        /* context constraint */
+  unsigned int duplicated : 1;
+  unsigned int opt_subexp : 1;
+#ifdef RE_ENABLE_I18N
+  unsigned int accept_mb : 1;
+  /* These 2 bits can be moved into the union if needed (e.g. if running out
+     of bits; move opr.c to opr.c.c and move the flags to opr.c.flags).  */
+  unsigned int mb_partial : 1;
+#endif
+  unsigned int word_char : 1;
+} re_token_t;
+
+#define IS_EPSILON_NODE(type) ((type) & EPSILON_BIT)
+
+struct re_string_t
+{
+  /* Indicate the raw buffer which is the original string passed as an
+     argument of regexec(), re_search(), etc..  */
+  const unsigned char *raw_mbs;
+  /* Store the multibyte string.  In case of "case insensitive mode" like
+     REG_ICASE, upper cases of the string are stored, otherwise MBS points
+     the same address that RAW_MBS points.  */
+  unsigned char *mbs;
+#ifdef RE_ENABLE_I18N
+  /* Store the wide character string which is corresponding to MBS.  */
+  wint_t *wcs;
+  Idx *offsets;
+  mbstate_t cur_state;
+#endif
+  /* Index in RAW_MBS.  Each character mbs[i] corresponds to
+     raw_mbs[raw_mbs_idx + i].  */
+  Idx raw_mbs_idx;
+  /* The length of the valid characters in the buffers.  */
+  Idx valid_len;
+  /* The corresponding number of bytes in raw_mbs array.  */
+  Idx valid_raw_len;
+  /* The length of the buffers MBS and WCS.  */
+  Idx bufs_len;
+  /* The index in MBS, which is updated by re_string_fetch_byte.  */
+  Idx cur_idx;
+  /* length of RAW_MBS array.  */
+  Idx raw_len;
+  /* This is RAW_LEN - RAW_MBS_IDX + VALID_LEN - VALID_RAW_LEN.  */
+  Idx len;
+  /* End of the buffer may be shorter than its length in the cases such
+     as re_match_2, re_search_2.  Then, we use STOP for end of the buffer
+     instead of LEN.  */
+  Idx raw_stop;
+  /* This is RAW_STOP - RAW_MBS_IDX adjusted through OFFSETS.  */
+  Idx stop;
+
+  /* The context of mbs[0].  We store the context independently, since
+     the context of mbs[0] may be different from raw_mbs[0], which is
+     the beginning of the input string.  */
+  unsigned int tip_context;
+  /* The translation passed as a part of an argument of re_compile_pattern.  */
+  RE_TRANSLATE_TYPE trans;
+  /* Copy of re_dfa_t's word_char.  */
+  re_const_bitset_ptr_t word_char;
+  /* true if REG_ICASE.  */
+  unsigned char icase;
+  unsigned char is_utf8;
+  unsigned char map_notascii;
+  unsigned char mbs_allocated;
+  unsigned char offsets_needed;
+  unsigned char newline_anchor;
+  unsigned char word_ops_used;
+  int mb_cur_max;
+};
+typedef struct re_string_t re_string_t;
+
+
+struct re_dfa_t;
+typedef struct re_dfa_t re_dfa_t;
+
+#ifndef _LIBC
+# if defined __i386__ && !defined __EMX__
+#  define internal_function   __attribute ((regparm (3), stdcall))
+# else
+#  define internal_function
+# endif
+#endif
+
+static reg_errcode_t re_string_realloc_buffers (re_string_t *pstr,
+                                               Idx new_buf_len)
+     internal_function;
+#ifdef RE_ENABLE_I18N
+static void build_wcs_buffer (re_string_t *pstr) internal_function;
+static reg_errcode_t build_wcs_upper_buffer (re_string_t *pstr)
+     internal_function;
+#endif /* RE_ENABLE_I18N */
+static void build_upper_buffer (re_string_t *pstr) internal_function;
+static void re_string_translate_buffer (re_string_t *pstr) internal_function;
+static unsigned int re_string_context_at (const re_string_t *input, Idx idx,
+                                         int eflags)
+     internal_function __attribute ((pure));
+#define re_string_peek_byte(pstr, offset) \
+  ((pstr)->mbs[(pstr)->cur_idx + offset])
+#define re_string_fetch_byte(pstr) \
+  ((pstr)->mbs[(pstr)->cur_idx++])
+#define re_string_first_byte(pstr, idx) \
+  ((idx) == (pstr)->valid_len || (pstr)->wcs[idx] != WEOF)
+#define re_string_is_single_byte_char(pstr, idx) \
+  ((pstr)->wcs[idx] != WEOF && ((pstr)->valid_len == (idx) + 1 \
+                               || (pstr)->wcs[(idx) + 1] != WEOF))
+#define re_string_eoi(pstr) ((pstr)->stop <= (pstr)->cur_idx)
+#define re_string_cur_idx(pstr) ((pstr)->cur_idx)
+#define re_string_get_buffer(pstr) ((pstr)->mbs)
+#define re_string_length(pstr) ((pstr)->len)
+#define re_string_byte_at(pstr,idx) ((pstr)->mbs[idx])
+#define re_string_skip_bytes(pstr,idx) ((pstr)->cur_idx += (idx))
+#define re_string_set_index(pstr,idx) ((pstr)->cur_idx = (idx))
+
+#include <alloca.h>
+
+#ifndef _LIBC
+# if HAVE_ALLOCA
+/* The OS usually guarantees only one guard page at the bottom of the stack,
+   and a page size can be as small as 4096 bytes.  So we cannot safely
+   allocate anything larger than 4096 bytes.  Also care for the possibility
+   of a few compiler-allocated temporary stack slots.  */
+#  define __libc_use_alloca(n) ((n) < 4032)
+# else
+/* alloca is implemented with malloc, so just use malloc.  */
+#  define __libc_use_alloca(n) 0
+#  undef alloca
+#  define alloca(n) malloc (n)
+# endif
+#endif
+
+#ifndef MAX
+# define MAX(a,b) ((a) < (b) ? (b) : (a))
+#endif
+
+#define re_malloc(t,n) ((t *) malloc ((n) * sizeof (t)))
+#define re_realloc(p,t,n) ((t *) realloc (p, (n) * sizeof (t)))
+#define re_free(p) free (p)
+
+struct bin_tree_t
+{
+  struct bin_tree_t *parent;
+  struct bin_tree_t *left;
+  struct bin_tree_t *right;
+  struct bin_tree_t *first;
+  struct bin_tree_t *next;
+
+  re_token_t token;
+
+  /* `node_idx' is the index in dfa->nodes, if `type' == 0.
+     Otherwise `type' indicate the type of this node.  */
+  Idx node_idx;
+};
+typedef struct bin_tree_t bin_tree_t;
+
+#define BIN_TREE_STORAGE_SIZE \
+  ((1024 - sizeof (void *)) / sizeof (bin_tree_t))
+
+struct bin_tree_storage_t
+{
+  struct bin_tree_storage_t *next;
+  bin_tree_t data[BIN_TREE_STORAGE_SIZE];
+};
+typedef struct bin_tree_storage_t bin_tree_storage_t;
+
+#define CONTEXT_WORD 1
+#define CONTEXT_NEWLINE (CONTEXT_WORD << 1)
+#define CONTEXT_BEGBUF (CONTEXT_NEWLINE << 1)
+#define CONTEXT_ENDBUF (CONTEXT_BEGBUF << 1)
+
+#define IS_WORD_CONTEXT(c) ((c) & CONTEXT_WORD)
+#define IS_NEWLINE_CONTEXT(c) ((c) & CONTEXT_NEWLINE)
+#define IS_BEGBUF_CONTEXT(c) ((c) & CONTEXT_BEGBUF)
+#define IS_ENDBUF_CONTEXT(c) ((c) & CONTEXT_ENDBUF)
+#define IS_ORDINARY_CONTEXT(c) ((c) == 0)
+
+#define IS_WORD_CHAR(ch) (isalnum (ch) || (ch) == '_')
+#define IS_NEWLINE(ch) ((ch) == NEWLINE_CHAR)
+#define IS_WIDE_WORD_CHAR(ch) (iswalnum (ch) || (ch) == L'_')
+#define IS_WIDE_NEWLINE(ch) ((ch) == WIDE_NEWLINE_CHAR)
+
+#define NOT_SATISFY_PREV_CONSTRAINT(constraint,context) \
+ ((((constraint) & PREV_WORD_CONSTRAINT) && !IS_WORD_CONTEXT (context)) \
+  || ((constraint & PREV_NOTWORD_CONSTRAINT) && IS_WORD_CONTEXT (context)) \
+  || ((constraint & PREV_NEWLINE_CONSTRAINT) && !IS_NEWLINE_CONTEXT (context))\
+  || ((constraint & PREV_BEGBUF_CONSTRAINT) && !IS_BEGBUF_CONTEXT (context)))
+
+#define NOT_SATISFY_NEXT_CONSTRAINT(constraint,context) \
+ ((((constraint) & NEXT_WORD_CONSTRAINT) && !IS_WORD_CONTEXT (context)) \
+  || (((constraint) & NEXT_NOTWORD_CONSTRAINT) && IS_WORD_CONTEXT (context)) \
+  || (((constraint) & NEXT_NEWLINE_CONSTRAINT) && !IS_NEWLINE_CONTEXT (context)) \
+  || (((constraint) & NEXT_ENDBUF_CONSTRAINT) && !IS_ENDBUF_CONTEXT (context)))
+
+struct re_dfastate_t
+{
+  re_hashval_t hash;
+  re_node_set nodes;
+  re_node_set non_eps_nodes;
+  re_node_set inveclosure;
+  re_node_set *entrance_nodes;
+  struct re_dfastate_t **trtable, **word_trtable;
+  unsigned int context : 4;
+  unsigned int halt : 1;
+  /* If this state can accept `multi byte'.
+     Note that we refer to multibyte characters, and multi character
+     collating elements as `multi byte'.  */
+  unsigned int accept_mb : 1;
+  /* If this state has backreference node(s).  */
+  unsigned int has_backref : 1;
+  unsigned int has_constraint : 1;
+};
+typedef struct re_dfastate_t re_dfastate_t;
+
+struct re_state_table_entry
+{
+  Idx num;
+  Idx alloc;
+  re_dfastate_t **array;
+};
+
+/* Array type used in re_sub_match_last_t and re_sub_match_top_t.  */
+
+typedef struct
+{
+  Idx next_idx;
+  Idx alloc;
+  re_dfastate_t **array;
+} state_array_t;
+
+/* Store information about the node NODE whose type is OP_CLOSE_SUBEXP.  */
+
+typedef struct
+{
+  Idx node;
+  Idx str_idx; /* The position NODE match at.  */
+  state_array_t path;
+} re_sub_match_last_t;
+
+/* Store information about the node NODE whose type is OP_OPEN_SUBEXP.
+   And information about the node, whose type is OP_CLOSE_SUBEXP,
+   corresponding to NODE is stored in LASTS.  */
+
+typedef struct
+{
+  Idx str_idx;
+  Idx node;
+  state_array_t *path;
+  Idx alasts; /* Allocation size of LASTS.  */
+  Idx nlasts; /* The number of LASTS.  */
+  re_sub_match_last_t **lasts;
+} re_sub_match_top_t;
+
+struct re_backref_cache_entry
+{
+  Idx node;
+  Idx str_idx;
+  Idx subexp_from;
+  Idx subexp_to;
+  char more;
+  char unused;
+  unsigned short int eps_reachable_subexps_map;
+};
+
+typedef struct
+{
+  /* The string object corresponding to the input string.  */
+  re_string_t input;
+#if defined _LIBC || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L)
+  const re_dfa_t *const dfa;
+#else
+  const re_dfa_t *dfa;
+#endif
+  /* EFLAGS of the argument of regexec.  */
+  int eflags;
+  /* Where the matching ends.  */
+  Idx match_last;
+  Idx last_node;
+  /* The state log used by the matcher.  */
+  re_dfastate_t **state_log;
+  Idx state_log_top;
+  /* Back reference cache.  */
+  Idx nbkref_ents;
+  Idx abkref_ents;
+  struct re_backref_cache_entry *bkref_ents;
+  int max_mb_elem_len;
+  Idx nsub_tops;
+  Idx asub_tops;
+  re_sub_match_top_t **sub_tops;
+} re_match_context_t;
+
+typedef struct
+{
+  re_dfastate_t **sifted_states;
+  re_dfastate_t **limited_states;
+  Idx last_node;
+  Idx last_str_idx;
+  re_node_set limits;
+} re_sift_context_t;
+
+struct re_fail_stack_ent_t
+{
+  Idx idx;
+  Idx node;
+  regmatch_t *regs;
+  re_node_set eps_via_nodes;
+};
+
+struct re_fail_stack_t
+{
+  Idx num;
+  Idx alloc;
+  struct re_fail_stack_ent_t *stack;
+};
+
+struct re_dfa_t
+{
+  re_token_t *nodes;
+  size_t nodes_alloc;
+  size_t nodes_len;
+  Idx *nexts;
+  Idx *org_indices;
+  re_node_set *edests;
+  re_node_set *eclosures;
+  re_node_set *inveclosures;
+  struct re_state_table_entry *state_table;
+  re_dfastate_t *init_state;
+  re_dfastate_t *init_state_word;
+  re_dfastate_t *init_state_nl;
+  re_dfastate_t *init_state_begbuf;
+  bin_tree_t *str_tree;
+  bin_tree_storage_t *str_tree_storage;
+  re_bitset_ptr_t sb_char;
+  int str_tree_storage_idx;
+
+  /* number of subexpressions `re_nsub' is in regex_t.  */
+  re_hashval_t state_hash_mask;
+  Idx init_node;
+  Idx nbackref; /* The number of backreference in this dfa.  */
+
+  /* Bitmap expressing which backreference is used.  */
+  bitset_word_t used_bkref_map;
+  bitset_word_t completed_bkref_map;
+
+  unsigned int has_plural_match : 1;
+  /* If this dfa has "multibyte node", which is a backreference or
+     a node which can accept multibyte character or multi character
+     collating element.  */
+  unsigned int has_mb_node : 1;
+  unsigned int is_utf8 : 1;
+  unsigned int map_notascii : 1;
+  unsigned int word_ops_used : 1;
+  int mb_cur_max;
+  bitset_t word_char;
+  reg_syntax_t syntax;
+  Idx *subexp_map;
+#ifdef DEBUG
+  char* re_str;
+#endif
+#ifdef _LIBC
+  __libc_lock_define (, lock)
+#endif
+};
+
+#define re_node_set_init_empty(set) memset (set, '\0', sizeof (re_node_set))
+#define re_node_set_remove(set,id) \
+  (re_node_set_remove_at (set, re_node_set_contains (set, id) - 1))
+#define re_node_set_empty(p) ((p)->nelem = 0)
+#define re_node_set_free(set) re_free ((set)->elems)
+\f
+
+typedef enum
+{
+  SB_CHAR,
+  MB_CHAR,
+  EQUIV_CLASS,
+  COLL_SYM,
+  CHAR_CLASS
+} bracket_elem_type;
+
+typedef struct
+{
+  bracket_elem_type type;
+  union
+  {
+    unsigned char ch;
+    unsigned char *name;
+    wchar_t wch;
+  } opr;
+} bracket_elem_t;
+
+
+/* Inline functions for bitset_t operation.  */
+
+static inline void
+bitset_set (bitset_t set, Idx i)
+{
+  set[i / BITSET_WORD_BITS] |= (bitset_word_t) 1 << i % BITSET_WORD_BITS;
+}
+
+static inline void
+bitset_clear (bitset_t set, Idx i)
+{
+  set[i / BITSET_WORD_BITS] &= ~ ((bitset_word_t) 1 << i % BITSET_WORD_BITS);
+}
+
+static inline bool
+bitset_contain (const bitset_t set, Idx i)
+{
+  return (set[i / BITSET_WORD_BITS] >> i % BITSET_WORD_BITS) & 1;
+}
+
+static inline void
+bitset_empty (bitset_t set)
+{
+  memset (set, '\0', sizeof (bitset_t));
+}
+
+static inline void
+bitset_set_all (bitset_t set)
+{
+  memset (set, -1, sizeof (bitset_word_t) * (SBC_MAX / BITSET_WORD_BITS));
+  if (SBC_MAX % BITSET_WORD_BITS != 0)
+    set[BITSET_WORDS - 1] =
+      ((bitset_word_t) 1 << SBC_MAX % BITSET_WORD_BITS) - 1;
+}
+
+static inline void
+bitset_copy (bitset_t dest, const bitset_t src)
+{
+  memcpy (dest, src, sizeof (bitset_t));
+}
+
+static inline void
+bitset_not (bitset_t set)
+{
+  int bitset_i;
+  for (bitset_i = 0; bitset_i < SBC_MAX / BITSET_WORD_BITS; ++bitset_i)
+    set[bitset_i] = ~set[bitset_i];
+  if (SBC_MAX % BITSET_WORD_BITS != 0)
+    set[BITSET_WORDS - 1] =
+      ((((bitset_word_t) 1 << SBC_MAX % BITSET_WORD_BITS) - 1)
+       & ~set[BITSET_WORDS - 1]);
+}
+
+static inline void
+bitset_merge (bitset_t dest, const bitset_t src)
+{
+  int bitset_i;
+  for (bitset_i = 0; bitset_i < BITSET_WORDS; ++bitset_i)
+    dest[bitset_i] |= src[bitset_i];
+}
+
+static inline void
+bitset_mask (bitset_t dest, const bitset_t src)
+{
+  int bitset_i;
+  for (bitset_i = 0; bitset_i < BITSET_WORDS; ++bitset_i)
+    dest[bitset_i] &= src[bitset_i];
+}
+
+#ifdef RE_ENABLE_I18N
+/* Inline functions for re_string.  */
+static inline int
+internal_function __attribute ((pure))
+re_string_char_size_at (const re_string_t *pstr, Idx idx)
+{
+  int byte_idx;
+  if (pstr->mb_cur_max == 1)
+    return 1;
+  for (byte_idx = 1; idx + byte_idx < pstr->valid_len; ++byte_idx)
+    if (pstr->wcs[idx + byte_idx] != WEOF)
+      break;
+  return byte_idx;
+}
+
+static inline wint_t
+internal_function __attribute ((pure))
+re_string_wchar_at (const re_string_t *pstr, Idx idx)
+{
+  if (pstr->mb_cur_max == 1)
+    return (wint_t) pstr->mbs[idx];
+  return (wint_t) pstr->wcs[idx];
+}
+
+static int
+internal_function __attribute ((pure))
+re_string_elem_size_at (const re_string_t *pstr, Idx idx)
+{
+# ifdef _LIBC
+  const unsigned char *p, *extra;
+  const int32_t *table, *indirect;
+  int32_t tmp;
+#  include <locale/weight.h>
+  uint_fast32_t nrules = _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES);
+
+  if (nrules != 0)
+    {
+      table = (const int32_t *) _NL_CURRENT (LC_COLLATE, _NL_COLLATE_TABLEMB);
+      extra = (const unsigned char *)
+       _NL_CURRENT (LC_COLLATE, _NL_COLLATE_EXTRAMB);
+      indirect = (const int32_t *) _NL_CURRENT (LC_COLLATE,
+                                               _NL_COLLATE_INDIRECTMB);
+      p = pstr->mbs + idx;
+      tmp = findidx (&p);
+      return p - pstr->mbs - idx;
+    }
+  else
+# endif /* _LIBC */
+    return 1;
+}
+#endif /* RE_ENABLE_I18N */
+
+#ifndef __GNUC_PREREQ
+# if defined __GNUC__ && defined __GNUC_MINOR__
+#  define __GNUC_PREREQ(maj, min) \
+         ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
+# else
+#  define __GNUC_PREREQ(maj, min) 0
+# endif
+#endif
+
+#if __GNUC_PREREQ (3,4)
+# undef __attribute_warn_unused_result__
+# define __attribute_warn_unused_result__ \
+   __attribute__ ((__warn_unused_result__))
+#else
+# define __attribute_warn_unused_result__ /* empty */
+#endif
+
+#endif /*  _REGEX_INTERNAL_H */
diff --git a/lib/regexec.c b/lib/regexec.c
new file mode 100644 (file)
index 0000000..0f7b48c
--- /dev/null
@@ -0,0 +1,4419 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Extended regular expression matching and search library.
+   Copyright (C) 2002-2011 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
+
+   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, 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. */
+
+static reg_errcode_t match_ctx_init (re_match_context_t *cache, int eflags,
+                                    Idx n) internal_function;
+static void match_ctx_clean (re_match_context_t *mctx) internal_function;
+static void match_ctx_free (re_match_context_t *cache) internal_function;
+static reg_errcode_t match_ctx_add_entry (re_match_context_t *cache, Idx node,
+                                         Idx str_idx, Idx from, Idx to)
+     internal_function;
+static Idx search_cur_bkref_entry (const re_match_context_t *mctx, Idx str_idx)
+     internal_function;
+static reg_errcode_t match_ctx_add_subtop (re_match_context_t *mctx, Idx node,
+                                          Idx str_idx) internal_function;
+static re_sub_match_last_t * match_ctx_add_sublast (re_sub_match_top_t *subtop,
+                                                   Idx node, Idx str_idx)
+     internal_function;
+static void sift_ctx_init (re_sift_context_t *sctx, re_dfastate_t **sifted_sts,
+                          re_dfastate_t **limited_sts, Idx last_node,
+                          Idx last_str_idx)
+     internal_function;
+static reg_errcode_t re_search_internal (const regex_t *preg,
+                                        const char *string, Idx length,
+                                        Idx start, Idx last_start, Idx stop,
+                                        size_t nmatch, regmatch_t pmatch[],
+                                        int eflags) internal_function;
+static regoff_t re_search_2_stub (struct re_pattern_buffer *bufp,
+                                 const char *string1, Idx length1,
+                                 const char *string2, Idx length2,
+                                 Idx start, regoff_t range,
+                                 struct re_registers *regs,
+                                 Idx stop, bool ret_len) internal_function;
+static regoff_t re_search_stub (struct re_pattern_buffer *bufp,
+                               const char *string, Idx length, Idx start,
+                               regoff_t range, Idx stop,
+                               struct re_registers *regs,
+                               bool ret_len) internal_function;
+static unsigned int re_copy_regs (struct re_registers *regs, regmatch_t *pmatch,
+                                 Idx nregs, int regs_allocated)
+     internal_function;
+static reg_errcode_t prune_impossible_nodes (re_match_context_t *mctx)
+     internal_function;
+static Idx check_matching (re_match_context_t *mctx, bool fl_longest_match,
+                          Idx *p_match_first) internal_function;
+static Idx check_halt_state_context (const re_match_context_t *mctx,
+                                    const re_dfastate_t *state, Idx idx)
+     internal_function;
+static void update_regs (const re_dfa_t *dfa, regmatch_t *pmatch,
+                        regmatch_t *prev_idx_match, Idx cur_node,
+                        Idx cur_idx, Idx nmatch) internal_function;
+static reg_errcode_t push_fail_stack (struct re_fail_stack_t *fs,
+                                     Idx str_idx, Idx dest_node, Idx nregs,
+                                     regmatch_t *regs,
+                                     re_node_set *eps_via_nodes)
+     internal_function;
+static reg_errcode_t set_regs (const regex_t *preg,
+                              const re_match_context_t *mctx,
+                              size_t nmatch, regmatch_t *pmatch,
+                              bool fl_backtrack) internal_function;
+static reg_errcode_t free_fail_stack_return (struct re_fail_stack_t *fs)
+     internal_function;
+
+#ifdef RE_ENABLE_I18N
+static int sift_states_iter_mb (const re_match_context_t *mctx,
+                               re_sift_context_t *sctx,
+                               Idx node_idx, Idx str_idx, Idx max_str_idx)
+     internal_function;
+#endif /* RE_ENABLE_I18N */
+static reg_errcode_t sift_states_backward (const re_match_context_t *mctx,
+                                          re_sift_context_t *sctx)
+     internal_function;
+static reg_errcode_t build_sifted_states (const re_match_context_t *mctx,
+                                         re_sift_context_t *sctx, Idx str_idx,
+                                         re_node_set *cur_dest)
+     internal_function;
+static reg_errcode_t update_cur_sifted_state (const re_match_context_t *mctx,
+                                             re_sift_context_t *sctx,
+                                             Idx str_idx,
+                                             re_node_set *dest_nodes)
+     internal_function;
+static reg_errcode_t add_epsilon_src_nodes (const re_dfa_t *dfa,
+                                           re_node_set *dest_nodes,
+                                           const re_node_set *candidates)
+     internal_function;
+static bool check_dst_limits (const re_match_context_t *mctx,
+                             const re_node_set *limits,
+                             Idx dst_node, Idx dst_idx, Idx src_node,
+                             Idx src_idx) internal_function;
+static int check_dst_limits_calc_pos_1 (const re_match_context_t *mctx,
+                                       int boundaries, Idx subexp_idx,
+                                       Idx from_node, Idx bkref_idx)
+     internal_function;
+static int check_dst_limits_calc_pos (const re_match_context_t *mctx,
+                                     Idx limit, Idx subexp_idx,
+                                     Idx node, Idx str_idx,
+                                     Idx bkref_idx) internal_function;
+static reg_errcode_t check_subexp_limits (const re_dfa_t *dfa,
+                                         re_node_set *dest_nodes,
+                                         const re_node_set *candidates,
+                                         re_node_set *limits,
+                                         struct re_backref_cache_entry *bkref_ents,
+                                         Idx str_idx) internal_function;
+static reg_errcode_t sift_states_bkref (const re_match_context_t *mctx,
+                                       re_sift_context_t *sctx,
+                                       Idx str_idx, const re_node_set *candidates)
+     internal_function;
+static reg_errcode_t merge_state_array (const re_dfa_t *dfa,
+                                       re_dfastate_t **dst,
+                                       re_dfastate_t **src, Idx num)
+     internal_function;
+static re_dfastate_t *find_recover_state (reg_errcode_t *err,
+                                        re_match_context_t *mctx) internal_function;
+static re_dfastate_t *transit_state (reg_errcode_t *err,
+                                    re_match_context_t *mctx,
+                                    re_dfastate_t *state) internal_function;
+static re_dfastate_t *merge_state_with_log (reg_errcode_t *err,
+                                           re_match_context_t *mctx,
+                                           re_dfastate_t *next_state)
+     internal_function;
+static reg_errcode_t check_subexp_matching_top (re_match_context_t *mctx,
+                                               re_node_set *cur_nodes,
+                                               Idx str_idx) internal_function;
+#if 0
+static re_dfastate_t *transit_state_sb (reg_errcode_t *err,
+                                       re_match_context_t *mctx,
+                                       re_dfastate_t *pstate)
+     internal_function;
+#endif
+#ifdef RE_ENABLE_I18N
+static reg_errcode_t transit_state_mb (re_match_context_t *mctx,
+                                      re_dfastate_t *pstate)
+     internal_function;
+#endif /* RE_ENABLE_I18N */
+static reg_errcode_t transit_state_bkref (re_match_context_t *mctx,
+                                         const re_node_set *nodes)
+     internal_function;
+static reg_errcode_t get_subexp (re_match_context_t *mctx,
+                                Idx bkref_node, Idx bkref_str_idx)
+     internal_function;
+static reg_errcode_t get_subexp_sub (re_match_context_t *mctx,
+                                    const re_sub_match_top_t *sub_top,
+                                    re_sub_match_last_t *sub_last,
+                                    Idx bkref_node, Idx bkref_str)
+     internal_function;
+static Idx find_subexp_node (const re_dfa_t *dfa, const re_node_set *nodes,
+                            Idx subexp_idx, int type) internal_function;
+static reg_errcode_t check_arrival (re_match_context_t *mctx,
+                                   state_array_t *path, Idx top_node,
+                                   Idx top_str, Idx last_node, Idx last_str,
+                                   int type) internal_function;
+static reg_errcode_t check_arrival_add_next_nodes (re_match_context_t *mctx,
+                                                  Idx str_idx,
+                                                  re_node_set *cur_nodes,
+                                                  re_node_set *next_nodes)
+     internal_function;
+static reg_errcode_t check_arrival_expand_ecl (const re_dfa_t *dfa,
+                                              re_node_set *cur_nodes,
+                                              Idx ex_subexp, int type)
+     internal_function;
+static reg_errcode_t check_arrival_expand_ecl_sub (const re_dfa_t *dfa,
+                                                  re_node_set *dst_nodes,
+                                                  Idx target, Idx ex_subexp,
+                                                  int type) internal_function;
+static reg_errcode_t expand_bkref_cache (re_match_context_t *mctx,
+                                        re_node_set *cur_nodes, Idx cur_str,
+                                        Idx subexp_num, int type)
+     internal_function;
+static bool build_trtable (const re_dfa_t *dfa,
+                          re_dfastate_t *state) internal_function;
+#ifdef RE_ENABLE_I18N
+static int check_node_accept_bytes (const re_dfa_t *dfa, Idx node_idx,
+                                   const re_string_t *input, Idx idx)
+     internal_function;
+# ifdef _LIBC
+static unsigned int find_collation_sequence_value (const unsigned char *mbs,
+                                                  size_t name_len)
+     internal_function;
+# endif /* _LIBC */
+#endif /* RE_ENABLE_I18N */
+static Idx group_nodes_into_DFAstates (const re_dfa_t *dfa,
+                                      const re_dfastate_t *state,
+                                      re_node_set *states_node,
+                                      bitset_t *states_ch) internal_function;
+static bool check_node_accept (const re_match_context_t *mctx,
+                              const re_token_t *node, Idx idx)
+     internal_function;
+static reg_errcode_t extend_buffers (re_match_context_t *mctx)
+     internal_function;
+\f
+/* Entry point for POSIX code.  */
+
+/* regexec searches for a given pattern, specified by PREG, in the
+   string STRING.
+
+   If NMATCH is zero or REG_NOSUB was set in the cflags argument to
+   `regcomp', we ignore PMATCH.  Otherwise, we assume PMATCH has at
+   least NMATCH elements, and we set them to the offsets of the
+   corresponding matched substrings.
+
+   EFLAGS specifies `execution flags' which affect matching: if
+   REG_NOTBOL is set, then ^ does not match at the beginning of the
+   string; if REG_NOTEOL is set, then $ does not match at the end.
+
+   We return 0 if we find a match and REG_NOMATCH if not.  */
+
+int
+regexec (preg, string, nmatch, pmatch, eflags)
+    const regex_t *_Restrict_ preg;
+    const char *_Restrict_ string;
+    size_t nmatch;
+    regmatch_t pmatch[_Restrict_arr_];
+    int eflags;
+{
+  reg_errcode_t err;
+  Idx start, length;
+#ifdef _LIBC
+  re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
+#endif
+
+  if (eflags & ~(REG_NOTBOL | REG_NOTEOL | REG_STARTEND))
+    return REG_BADPAT;
+
+  if (eflags & REG_STARTEND)
+    {
+      start = pmatch[0].rm_so;
+      length = pmatch[0].rm_eo;
+    }
+  else
+    {
+      start = 0;
+      length = strlen (string);
+    }
+
+  __libc_lock_lock (dfa->lock);
+  if (preg->no_sub)
+    err = re_search_internal (preg, string, length, start, length,
+                             length, 0, NULL, eflags);
+  else
+    err = re_search_internal (preg, string, length, start, length,
+                             length, nmatch, pmatch, eflags);
+  __libc_lock_unlock (dfa->lock);
+  return err != REG_NOERROR;
+}
+
+#ifdef _LIBC
+# include <shlib-compat.h>
+versioned_symbol (libc, __regexec, regexec, GLIBC_2_3_4);
+
+# if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)
+__typeof__ (__regexec) __compat_regexec;
+
+int
+attribute_compat_text_section
+__compat_regexec (const regex_t *_Restrict_ preg,
+                 const char *_Restrict_ string, size_t nmatch,
+                 regmatch_t pmatch[], int eflags)
+{
+  return regexec (preg, string, nmatch, pmatch,
+                 eflags & (REG_NOTBOL | REG_NOTEOL));
+}
+compat_symbol (libc, __compat_regexec, regexec, GLIBC_2_0);
+# endif
+#endif
+
+/* Entry points for GNU code.  */
+
+/* re_match, re_search, re_match_2, re_search_2
+
+   The former two functions operate on STRING with length LENGTH,
+   while the later two operate on concatenation of STRING1 and STRING2
+   with lengths LENGTH1 and LENGTH2, respectively.
+
+   re_match() matches the compiled pattern in BUFP against the string,
+   starting at index START.
+
+   re_search() first tries matching at index START, then it tries to match
+   starting from index START + 1, and so on.  The last start position tried
+   is START + RANGE.  (Thus RANGE = 0 forces re_search to operate the same
+   way as re_match().)
+
+   The parameter STOP of re_{match,search}_2 specifies that no match exceeding
+   the first STOP characters of the concatenation of the strings should be
+   concerned.
+
+   If REGS is not NULL, and BUFP->no_sub is not set, the offsets of the match
+   and all groups is stored in REGS.  (For the "_2" variants, the offsets are
+   computed relative to the concatenation, not relative to the individual
+   strings.)
+
+   On success, re_match* functions return the length of the match, re_search*
+   return the position of the start of the match.  Return value -1 means no
+   match was found and -2 indicates an internal error.  */
+
+regoff_t
+re_match (bufp, string, length, start, regs)
+    struct re_pattern_buffer *bufp;
+    const char *string;
+    Idx length, start;
+    struct re_registers *regs;
+{
+  return re_search_stub (bufp, string, length, start, 0, length, regs, true);
+}
+#ifdef _LIBC
+weak_alias (__re_match, re_match)
+#endif
+
+regoff_t
+re_search (bufp, string, length, start, range, regs)
+    struct re_pattern_buffer *bufp;
+    const char *string;
+    Idx length, start;
+    regoff_t range;
+    struct re_registers *regs;
+{
+  return re_search_stub (bufp, string, length, start, range, length, regs,
+                        false);
+}
+#ifdef _LIBC
+weak_alias (__re_search, re_search)
+#endif
+
+regoff_t
+re_match_2 (bufp, string1, length1, string2, length2, start, regs, stop)
+    struct re_pattern_buffer *bufp;
+    const char *string1, *string2;
+    Idx length1, length2, start, stop;
+    struct re_registers *regs;
+{
+  return re_search_2_stub (bufp, string1, length1, string2, length2,
+                          start, 0, regs, stop, true);
+}
+#ifdef _LIBC
+weak_alias (__re_match_2, re_match_2)
+#endif
+
+regoff_t
+re_search_2 (bufp, string1, length1, string2, length2, start, range, regs, stop)
+    struct re_pattern_buffer *bufp;
+    const char *string1, *string2;
+    Idx length1, length2, start, stop;
+    regoff_t range;
+    struct re_registers *regs;
+{
+  return re_search_2_stub (bufp, string1, length1, string2, length2,
+                          start, range, regs, stop, false);
+}
+#ifdef _LIBC
+weak_alias (__re_search_2, re_search_2)
+#endif
+
+static regoff_t
+internal_function
+re_search_2_stub (struct re_pattern_buffer *bufp,
+                 const char *string1, Idx length1,
+                 const char *string2, Idx length2,
+                 Idx start, regoff_t range, struct re_registers *regs,
+                 Idx stop, bool ret_len)
+{
+  const char *str;
+  regoff_t rval;
+  Idx len = length1 + length2;
+  char *s = NULL;
+
+  if (BE (length1 < 0 || length2 < 0 || stop < 0 || len < length1, 0))
+    return -2;
+
+  /* Concatenate the strings.  */
+  if (length2 > 0)
+    if (length1 > 0)
+      {
+       s = re_malloc (char, len);
+
+       if (BE (s == NULL, 0))
+         return -2;
+#ifdef _LIBC
+       memcpy (__mempcpy (s, string1, length1), string2, length2);
+#else
+       memcpy (s, string1, length1);
+       memcpy (s + length1, string2, length2);
+#endif
+       str = s;
+      }
+    else
+      str = string2;
+  else
+    str = string1;
+
+  rval = re_search_stub (bufp, str, len, start, range, stop, regs,
+                        ret_len);
+  re_free (s);
+  return rval;
+}
+
+/* The parameters have the same meaning as those of re_search.
+   Additional parameters:
+   If RET_LEN is true the length of the match is returned (re_match style);
+   otherwise the position of the match is returned.  */
+
+static regoff_t
+internal_function
+re_search_stub (struct re_pattern_buffer *bufp,
+               const char *string, Idx length,
+               Idx start, regoff_t range, Idx stop, struct re_registers *regs,
+               bool ret_len)
+{
+  reg_errcode_t result;
+  regmatch_t *pmatch;
+  Idx nregs;
+  regoff_t rval;
+  int eflags = 0;
+#ifdef _LIBC
+  re_dfa_t *dfa = (re_dfa_t *) bufp->buffer;
+#endif
+  Idx last_start = start + range;
+
+  /* Check for out-of-range.  */
+  if (BE (start < 0 || start > length, 0))
+    return -1;
+  if (BE (length < last_start || (0 <= range && last_start < start), 0))
+    last_start = length;
+  else if (BE (last_start < 0 || (range < 0 && start <= last_start), 0))
+    last_start = 0;
+
+  __libc_lock_lock (dfa->lock);
+
+  eflags |= (bufp->not_bol) ? REG_NOTBOL : 0;
+  eflags |= (bufp->not_eol) ? REG_NOTEOL : 0;
+
+  /* Compile fastmap if we haven't yet.  */
+  if (start < last_start && bufp->fastmap != NULL && !bufp->fastmap_accurate)
+    re_compile_fastmap (bufp);
+
+  if (BE (bufp->no_sub, 0))
+    regs = NULL;
+
+  /* We need at least 1 register.  */
+  if (regs == NULL)
+    nregs = 1;
+  else if (BE (bufp->regs_allocated == REGS_FIXED
+              && regs->num_regs <= bufp->re_nsub, 0))
+    {
+      nregs = regs->num_regs;
+      if (BE (nregs < 1, 0))
+       {
+         /* Nothing can be copied to regs.  */
+         regs = NULL;
+         nregs = 1;
+       }
+    }
+  else
+    nregs = bufp->re_nsub + 1;
+  pmatch = re_malloc (regmatch_t, nregs);
+  if (BE (pmatch == NULL, 0))
+    {
+      rval = -2;
+      goto out;
+    }
+
+  result = re_search_internal (bufp, string, length, start, last_start, stop,
+                              nregs, pmatch, eflags);
+
+  rval = 0;
+
+  /* I hope we needn't fill ther regs with -1's when no match was found.  */
+  if (result != REG_NOERROR)
+    rval = -1;
+  else if (regs != NULL)
+    {
+      /* If caller wants register contents data back, copy them.  */
+      bufp->regs_allocated = re_copy_regs (regs, pmatch, nregs,
+                                          bufp->regs_allocated);
+      if (BE (bufp->regs_allocated == REGS_UNALLOCATED, 0))
+       rval = -2;
+    }
+
+  if (BE (rval == 0, 1))
+    {
+      if (ret_len)
+       {
+         assert (pmatch[0].rm_so == start);
+         rval = pmatch[0].rm_eo - start;
+       }
+      else
+       rval = pmatch[0].rm_so;
+    }
+  re_free (pmatch);
+ out:
+  __libc_lock_unlock (dfa->lock);
+  return rval;
+}
+
+static unsigned int
+internal_function
+re_copy_regs (struct re_registers *regs, regmatch_t *pmatch, Idx nregs,
+             int regs_allocated)
+{
+  int rval = REGS_REALLOCATE;
+  Idx i;
+  Idx need_regs = nregs + 1;
+  /* We need one extra element beyond `num_regs' for the `-1' marker GNU code
+     uses.  */
+
+  /* Have the register data arrays been allocated?  */
+  if (regs_allocated == REGS_UNALLOCATED)
+    { /* No.  So allocate them with malloc.  */
+      regs->start = re_malloc (regoff_t, need_regs);
+      if (BE (regs->start == NULL, 0))
+       return REGS_UNALLOCATED;
+      regs->end = re_malloc (regoff_t, need_regs);
+      if (BE (regs->end == NULL, 0))
+       {
+         re_free (regs->start);
+         return REGS_UNALLOCATED;
+       }
+      regs->num_regs = need_regs;
+    }
+  else if (regs_allocated == REGS_REALLOCATE)
+    { /* Yes.  If we need more elements than were already
+        allocated, reallocate them.  If we need fewer, just
+        leave it alone.  */
+      if (BE (need_regs > regs->num_regs, 0))
+       {
+         regoff_t *new_start = re_realloc (regs->start, regoff_t, need_regs);
+         regoff_t *new_end;
+         if (BE (new_start == NULL, 0))
+           return REGS_UNALLOCATED;
+         new_end = re_realloc (regs->end, regoff_t, need_regs);
+         if (BE (new_end == NULL, 0))
+           {
+             re_free (new_start);
+             return REGS_UNALLOCATED;
+           }
+         regs->start = new_start;
+         regs->end = new_end;
+         regs->num_regs = need_regs;
+       }
+    }
+  else
+    {
+      assert (regs_allocated == REGS_FIXED);
+      /* This function may not be called with REGS_FIXED and nregs too big.  */
+      assert (regs->num_regs >= nregs);
+      rval = REGS_FIXED;
+    }
+
+  /* Copy the regs.  */
+  for (i = 0; i < nregs; ++i)
+    {
+      regs->start[i] = pmatch[i].rm_so;
+      regs->end[i] = pmatch[i].rm_eo;
+    }
+  for ( ; i < regs->num_regs; ++i)
+    regs->start[i] = regs->end[i] = -1;
+
+  return rval;
+}
+
+/* Set REGS to hold NUM_REGS registers, storing them in STARTS and
+   ENDS.  Subsequent matches using PATTERN_BUFFER and REGS will use
+   this memory for recording register information.  STARTS and ENDS
+   must be allocated using the malloc library routine, and must each
+   be at least NUM_REGS * sizeof (regoff_t) bytes long.
+
+   If NUM_REGS == 0, then subsequent matches should allocate their own
+   register data.
+
+   Unless this function is called, the first search or match using
+   PATTERN_BUFFER will allocate its own register data, without
+   freeing the old data.  */
+
+void
+re_set_registers (bufp, regs, num_regs, starts, ends)
+    struct re_pattern_buffer *bufp;
+    struct re_registers *regs;
+    __re_size_t num_regs;
+    regoff_t *starts, *ends;
+{
+  if (num_regs)
+    {
+      bufp->regs_allocated = REGS_REALLOCATE;
+      regs->num_regs = num_regs;
+      regs->start = starts;
+      regs->end = ends;
+    }
+  else
+    {
+      bufp->regs_allocated = REGS_UNALLOCATED;
+      regs->num_regs = 0;
+      regs->start = regs->end = NULL;
+    }
+}
+#ifdef _LIBC
+weak_alias (__re_set_registers, re_set_registers)
+#endif
+\f
+/* Entry points compatible with 4.2 BSD regex library.  We don't define
+   them unless specifically requested.  */
+
+#if defined _REGEX_RE_COMP || defined _LIBC
+int
+# ifdef _LIBC
+weak_function
+# endif
+re_exec (s)
+     const char *s;
+{
+  return 0 == regexec (&re_comp_buf, s, 0, NULL, 0);
+}
+#endif /* _REGEX_RE_COMP */
+\f
+/* Internal entry point.  */
+
+/* Searches for a compiled pattern PREG in the string STRING, whose
+   length is LENGTH.  NMATCH, PMATCH, and EFLAGS have the same
+   meaning as with regexec.  LAST_START is START + RANGE, where
+   START and RANGE have the same meaning as with re_search.
+   Return REG_NOERROR if we find a match, and REG_NOMATCH if not,
+   otherwise return the error code.
+   Note: We assume front end functions already check ranges.
+   (0 <= LAST_START && LAST_START <= LENGTH)  */
+
+static reg_errcode_t
+internal_function __attribute_warn_unused_result__
+re_search_internal (const regex_t *preg,
+                   const char *string, Idx length,
+                   Idx start, Idx last_start, Idx stop,
+                   size_t nmatch, regmatch_t pmatch[],
+                   int eflags)
+{
+  reg_errcode_t err;
+  const re_dfa_t *dfa = (const re_dfa_t *) preg->buffer;
+  Idx left_lim, right_lim;
+  int incr;
+  bool fl_longest_match;
+  int match_kind;
+  Idx match_first;
+  Idx match_last = REG_MISSING;
+  Idx extra_nmatch;
+  bool sb;
+  int ch;
+#if defined _LIBC || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L)
+  re_match_context_t mctx = { .dfa = dfa };
+#else
+  re_match_context_t mctx;
+#endif
+  char *fastmap = ((preg->fastmap != NULL && preg->fastmap_accurate
+                   && start != last_start && !preg->can_be_null)
+                  ? preg->fastmap : NULL);
+  RE_TRANSLATE_TYPE t = preg->translate;
+
+#if !(defined _LIBC || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L))
+  memset (&mctx, '\0', sizeof (re_match_context_t));
+  mctx.dfa = dfa;
+#endif
+
+  extra_nmatch = (nmatch > preg->re_nsub) ? nmatch - (preg->re_nsub + 1) : 0;
+  nmatch -= extra_nmatch;
+
+  /* Check if the DFA haven't been compiled.  */
+  if (BE (preg->used == 0 || dfa->init_state == NULL
+         || dfa->init_state_word == NULL || dfa->init_state_nl == NULL
+         || dfa->init_state_begbuf == NULL, 0))
+    return REG_NOMATCH;
+
+#ifdef DEBUG
+  /* We assume front-end functions already check them.  */
+  assert (0 <= last_start && last_start <= length);
+#endif
+
+  /* If initial states with non-begbuf contexts have no elements,
+     the regex must be anchored.  If preg->newline_anchor is set,
+     we'll never use init_state_nl, so do not check it.  */
+  if (dfa->init_state->nodes.nelem == 0
+      && dfa->init_state_word->nodes.nelem == 0
+      && (dfa->init_state_nl->nodes.nelem == 0
+         || !preg->newline_anchor))
+    {
+      if (start != 0 && last_start != 0)
+        return REG_NOMATCH;
+      start = last_start = 0;
+    }
+
+  /* We must check the longest matching, if nmatch > 0.  */
+  fl_longest_match = (nmatch != 0 || dfa->nbackref);
+
+  err = re_string_allocate (&mctx.input, string, length, dfa->nodes_len + 1,
+                           preg->translate, (preg->syntax & RE_ICASE) != 0,
+                           dfa);
+  if (BE (err != REG_NOERROR, 0))
+    goto free_return;
+  mctx.input.stop = stop;
+  mctx.input.raw_stop = stop;
+  mctx.input.newline_anchor = preg->newline_anchor;
+
+  err = match_ctx_init (&mctx, eflags, dfa->nbackref * 2);
+  if (BE (err != REG_NOERROR, 0))
+    goto free_return;
+
+  /* We will log all the DFA states through which the dfa pass,
+     if nmatch > 1, or this dfa has "multibyte node", which is a
+     back-reference or a node which can accept multibyte character or
+     multi character collating element.  */
+  if (nmatch > 1 || dfa->has_mb_node)
+    {
+      /* Avoid overflow.  */
+      if (BE (SIZE_MAX / sizeof (re_dfastate_t *) <= mctx.input.bufs_len, 0))
+       {
+         err = REG_ESPACE;
+         goto free_return;
+       }
+
+      mctx.state_log = re_malloc (re_dfastate_t *, mctx.input.bufs_len + 1);
+      if (BE (mctx.state_log == NULL, 0))
+       {
+         err = REG_ESPACE;
+         goto free_return;
+       }
+    }
+  else
+    mctx.state_log = NULL;
+
+  match_first = start;
+  mctx.input.tip_context = (eflags & REG_NOTBOL) ? CONTEXT_BEGBUF
+                          : CONTEXT_NEWLINE | CONTEXT_BEGBUF;
+
+  /* Check incrementally whether of not the input string match.  */
+  incr = (last_start < start) ? -1 : 1;
+  left_lim = (last_start < start) ? last_start : start;
+  right_lim = (last_start < start) ? start : last_start;
+  sb = dfa->mb_cur_max == 1;
+  match_kind =
+    (fastmap
+     ? ((sb || !(preg->syntax & RE_ICASE || t) ? 4 : 0)
+       | (start <= last_start ? 2 : 0)
+       | (t != NULL ? 1 : 0))
+     : 8);
+
+  for (;; match_first += incr)
+    {
+      err = REG_NOMATCH;
+      if (match_first < left_lim || right_lim < match_first)
+       goto free_return;
+
+      /* Advance as rapidly as possible through the string, until we
+        find a plausible place to start matching.  This may be done
+        with varying efficiency, so there are various possibilities:
+        only the most common of them are specialized, in order to
+        save on code size.  We use a switch statement for speed.  */
+      switch (match_kind)
+       {
+       case 8:
+         /* No fastmap.  */
+         break;
+
+       case 7:
+         /* Fastmap with single-byte translation, match forward.  */
+         while (BE (match_first < right_lim, 1)
+                && !fastmap[t[(unsigned char) string[match_first]]])
+           ++match_first;
+         goto forward_match_found_start_or_reached_end;
+
+       case 6:
+         /* Fastmap without translation, match forward.  */
+         while (BE (match_first < right_lim, 1)
+                && !fastmap[(unsigned char) string[match_first]])
+           ++match_first;
+
+       forward_match_found_start_or_reached_end:
+         if (BE (match_first == right_lim, 0))
+           {
+             ch = match_first >= length
+                      ? 0 : (unsigned char) string[match_first];
+             if (!fastmap[t ? t[ch] : ch])
+               goto free_return;
+           }
+         break;
+
+       case 4:
+       case 5:
+         /* Fastmap without multi-byte translation, match backwards.  */
+         while (match_first >= left_lim)
+           {
+             ch = match_first >= length
+                      ? 0 : (unsigned char) string[match_first];
+             if (fastmap[t ? t[ch] : ch])
+               break;
+             --match_first;
+           }
+         if (match_first < left_lim)
+           goto free_return;
+         break;
+
+       default:
+         /* In this case, we can't determine easily the current byte,
+            since it might be a component byte of a multibyte
+            character.  Then we use the constructed buffer instead.  */
+         for (;;)
+           {
+             /* If MATCH_FIRST is out of the valid range, reconstruct the
+                buffers.  */
+             __re_size_t offset = match_first - mctx.input.raw_mbs_idx;
+             if (BE (offset >= (__re_size_t) mctx.input.valid_raw_len, 0))
+               {
+                 err = re_string_reconstruct (&mctx.input, match_first,
+                                              eflags);
+                 if (BE (err != REG_NOERROR, 0))
+                   goto free_return;
+
+                 offset = match_first - mctx.input.raw_mbs_idx;
+               }
+             /* If MATCH_FIRST is out of the buffer, leave it as '\0'.
+                Note that MATCH_FIRST must not be smaller than 0.  */
+             ch = (match_first >= length
+                   ? 0 : re_string_byte_at (&mctx.input, offset));
+             if (fastmap[ch])
+               break;
+             match_first += incr;
+             if (match_first < left_lim || match_first > right_lim)
+               {
+                 err = REG_NOMATCH;
+                 goto free_return;
+               }
+           }
+         break;
+       }
+
+      /* Reconstruct the buffers so that the matcher can assume that
+        the matching starts from the beginning of the buffer.  */
+      err = re_string_reconstruct (&mctx.input, match_first, eflags);
+      if (BE (err != REG_NOERROR, 0))
+       goto free_return;
+
+#ifdef RE_ENABLE_I18N
+     /* Don't consider this char as a possible match start if it part,
+       yet isn't the head, of a multibyte character.  */
+      if (!sb && !re_string_first_byte (&mctx.input, 0))
+       continue;
+#endif
+
+      /* It seems to be appropriate one, then use the matcher.  */
+      /* We assume that the matching starts from 0.  */
+      mctx.state_log_top = mctx.nbkref_ents = mctx.max_mb_elem_len = 0;
+      match_last = check_matching (&mctx, fl_longest_match,
+                                  start <= last_start ? &match_first : NULL);
+      if (match_last != REG_MISSING)
+       {
+         if (BE (match_last == REG_ERROR, 0))
+           {
+             err = REG_ESPACE;
+             goto free_return;
+           }
+         else
+           {
+             mctx.match_last = match_last;
+             if ((!preg->no_sub && nmatch > 1) || dfa->nbackref)
+               {
+                 re_dfastate_t *pstate = mctx.state_log[match_last];
+                 mctx.last_node = check_halt_state_context (&mctx, pstate,
+                                                            match_last);
+               }
+             if ((!preg->no_sub && nmatch > 1 && dfa->has_plural_match)
+                 || dfa->nbackref)
+               {
+                 err = prune_impossible_nodes (&mctx);
+                 if (err == REG_NOERROR)
+                   break;
+                 if (BE (err != REG_NOMATCH, 0))
+                   goto free_return;
+                 match_last = REG_MISSING;
+               }
+             else
+               break; /* We found a match.  */
+           }
+       }
+
+      match_ctx_clean (&mctx);
+    }
+
+#ifdef DEBUG
+  assert (match_last != REG_MISSING);
+  assert (err == REG_NOERROR);
+#endif
+
+  /* Set pmatch[] if we need.  */
+  if (nmatch > 0)
+    {
+      Idx reg_idx;
+
+      /* Initialize registers.  */
+      for (reg_idx = 1; reg_idx < nmatch; ++reg_idx)
+       pmatch[reg_idx].rm_so = pmatch[reg_idx].rm_eo = -1;
+
+      /* Set the points where matching start/end.  */
+      pmatch[0].rm_so = 0;
+      pmatch[0].rm_eo = mctx.match_last;
+      /* FIXME: This function should fail if mctx.match_last exceeds
+        the maximum possible regoff_t value.  We need a new error
+        code REG_OVERFLOW.  */
+
+      if (!preg->no_sub && nmatch > 1)
+       {
+         err = set_regs (preg, &mctx, nmatch, pmatch,
+                         dfa->has_plural_match && dfa->nbackref > 0);
+         if (BE (err != REG_NOERROR, 0))
+           goto free_return;
+       }
+
+      /* At last, add the offset to the each registers, since we slided
+        the buffers so that we could assume that the matching starts
+        from 0.  */
+      for (reg_idx = 0; reg_idx < nmatch; ++reg_idx)
+       if (pmatch[reg_idx].rm_so != -1)
+         {
+#ifdef RE_ENABLE_I18N
+           if (BE (mctx.input.offsets_needed != 0, 0))
+             {
+               pmatch[reg_idx].rm_so =
+                 (pmatch[reg_idx].rm_so == mctx.input.valid_len
+                  ? mctx.input.valid_raw_len
+                  : mctx.input.offsets[pmatch[reg_idx].rm_so]);
+               pmatch[reg_idx].rm_eo =
+                 (pmatch[reg_idx].rm_eo == mctx.input.valid_len
+                  ? mctx.input.valid_raw_len
+                  : mctx.input.offsets[pmatch[reg_idx].rm_eo]);
+             }
+#else
+           assert (mctx.input.offsets_needed == 0);
+#endif
+           pmatch[reg_idx].rm_so += match_first;
+           pmatch[reg_idx].rm_eo += match_first;
+         }
+      for (reg_idx = 0; reg_idx < extra_nmatch; ++reg_idx)
+       {
+         pmatch[nmatch + reg_idx].rm_so = -1;
+         pmatch[nmatch + reg_idx].rm_eo = -1;
+       }
+
+      if (dfa->subexp_map)
+       for (reg_idx = 0; reg_idx + 1 < nmatch; reg_idx++)
+         if (dfa->subexp_map[reg_idx] != reg_idx)
+           {
+             pmatch[reg_idx + 1].rm_so
+               = pmatch[dfa->subexp_map[reg_idx] + 1].rm_so;
+             pmatch[reg_idx + 1].rm_eo
+               = pmatch[dfa->subexp_map[reg_idx] + 1].rm_eo;
+           }
+    }
+
+ free_return:
+  re_free (mctx.state_log);
+  if (dfa->nbackref)
+    match_ctx_free (&mctx);
+  re_string_destruct (&mctx.input);
+  return err;
+}
+
+static reg_errcode_t
+internal_function __attribute_warn_unused_result__
+prune_impossible_nodes (re_match_context_t *mctx)
+{
+  const re_dfa_t *const dfa = mctx->dfa;
+  Idx halt_node, match_last;
+  reg_errcode_t ret;
+  re_dfastate_t **sifted_states;
+  re_dfastate_t **lim_states = NULL;
+  re_sift_context_t sctx;
+#ifdef DEBUG
+  assert (mctx->state_log != NULL);
+#endif
+  match_last = mctx->match_last;
+  halt_node = mctx->last_node;
+
+  /* Avoid overflow.  */
+  if (BE (SIZE_MAX / sizeof (re_dfastate_t *) <= match_last, 0))
+    return REG_ESPACE;
+
+  sifted_states = re_malloc (re_dfastate_t *, match_last + 1);
+  if (BE (sifted_states == NULL, 0))
+    {
+      ret = REG_ESPACE;
+      goto free_return;
+    }
+  if (dfa->nbackref)
+    {
+      lim_states = re_malloc (re_dfastate_t *, match_last + 1);
+      if (BE (lim_states == NULL, 0))
+       {
+         ret = REG_ESPACE;
+         goto free_return;
+       }
+      while (1)
+       {
+         memset (lim_states, '\0',
+                 sizeof (re_dfastate_t *) * (match_last + 1));
+         sift_ctx_init (&sctx, sifted_states, lim_states, halt_node,
+                        match_last);
+         ret = sift_states_backward (mctx, &sctx);
+         re_node_set_free (&sctx.limits);
+         if (BE (ret != REG_NOERROR, 0))
+             goto free_return;
+         if (sifted_states[0] != NULL || lim_states[0] != NULL)
+           break;
+         do
+           {
+             --match_last;
+             if (! REG_VALID_INDEX (match_last))
+               {
+                 ret = REG_NOMATCH;
+                 goto free_return;
+               }
+           } while (mctx->state_log[match_last] == NULL
+                    || !mctx->state_log[match_last]->halt);
+         halt_node = check_halt_state_context (mctx,
+                                               mctx->state_log[match_last],
+                                               match_last);
+       }
+      ret = merge_state_array (dfa, sifted_states, lim_states,
+                              match_last + 1);
+      re_free (lim_states);
+      lim_states = NULL;
+      if (BE (ret != REG_NOERROR, 0))
+       goto free_return;
+    }
+  else
+    {
+      sift_ctx_init (&sctx, sifted_states, lim_states, halt_node, match_last);
+      ret = sift_states_backward (mctx, &sctx);
+      re_node_set_free (&sctx.limits);
+      if (BE (ret != REG_NOERROR, 0))
+       goto free_return;
+      if (sifted_states[0] == NULL)
+       {
+         ret = REG_NOMATCH;
+         goto free_return;
+       }
+    }
+  re_free (mctx->state_log);
+  mctx->state_log = sifted_states;
+  sifted_states = NULL;
+  mctx->last_node = halt_node;
+  mctx->match_last = match_last;
+  ret = REG_NOERROR;
+ free_return:
+  re_free (sifted_states);
+  re_free (lim_states);
+  return ret;
+}
+
+/* Acquire an initial state and return it.
+   We must select appropriate initial state depending on the context,
+   since initial states may have constraints like "\<", "^", etc..  */
+
+static inline re_dfastate_t *
+__attribute ((always_inline)) internal_function
+acquire_init_state_context (reg_errcode_t *err, const re_match_context_t *mctx,
+                           Idx idx)
+{
+  const re_dfa_t *const dfa = mctx->dfa;
+  if (dfa->init_state->has_constraint)
+    {
+      unsigned int context;
+      context = re_string_context_at (&mctx->input, idx - 1, mctx->eflags);
+      if (IS_WORD_CONTEXT (context))
+       return dfa->init_state_word;
+      else if (IS_ORDINARY_CONTEXT (context))
+       return dfa->init_state;
+      else if (IS_BEGBUF_CONTEXT (context) && IS_NEWLINE_CONTEXT (context))
+       return dfa->init_state_begbuf;
+      else if (IS_NEWLINE_CONTEXT (context))
+       return dfa->init_state_nl;
+      else if (IS_BEGBUF_CONTEXT (context))
+       {
+         /* It is relatively rare case, then calculate on demand.  */
+         return re_acquire_state_context (err, dfa,
+                                          dfa->init_state->entrance_nodes,
+                                          context);
+       }
+      else
+       /* Must not happen?  */
+       return dfa->init_state;
+    }
+  else
+    return dfa->init_state;
+}
+
+/* Check whether the regular expression match input string INPUT or not,
+   and return the index where the matching end.  Return REG_MISSING if
+   there is no match, and return REG_ERROR in case of an error.
+   FL_LONGEST_MATCH means we want the POSIX longest matching.
+   If P_MATCH_FIRST is not NULL, and the match fails, it is set to the
+   next place where we may want to try matching.
+   Note that the matcher assume that the maching starts from the current
+   index of the buffer.  */
+
+static Idx
+internal_function __attribute_warn_unused_result__
+check_matching (re_match_context_t *mctx, bool fl_longest_match,
+               Idx *p_match_first)
+{
+  const re_dfa_t *const dfa = mctx->dfa;
+  reg_errcode_t err;
+  Idx match = 0;
+  Idx match_last = REG_MISSING;
+  Idx cur_str_idx = re_string_cur_idx (&mctx->input);
+  re_dfastate_t *cur_state;
+  bool at_init_state = p_match_first != NULL;
+  Idx next_start_idx = cur_str_idx;
+
+  err = REG_NOERROR;
+  cur_state = acquire_init_state_context (&err, mctx, cur_str_idx);
+  /* An initial state must not be NULL (invalid).  */
+  if (BE (cur_state == NULL, 0))
+    {
+      assert (err == REG_ESPACE);
+      return REG_ERROR;
+    }
+
+  if (mctx->state_log != NULL)
+    {
+      mctx->state_log[cur_str_idx] = cur_state;
+
+      /* Check OP_OPEN_SUBEXP in the initial state in case that we use them
+        later.  E.g. Processing back references.  */
+      if (BE (dfa->nbackref, 0))
+       {
+         at_init_state = false;
+         err = check_subexp_matching_top (mctx, &cur_state->nodes, 0);
+         if (BE (err != REG_NOERROR, 0))
+           return err;
+
+         if (cur_state->has_backref)
+           {
+             err = transit_state_bkref (mctx, &cur_state->nodes);
+             if (BE (err != REG_NOERROR, 0))
+               return err;
+           }
+       }
+    }
+
+  /* If the RE accepts NULL string.  */
+  if (BE (cur_state->halt, 0))
+    {
+      if (!cur_state->has_constraint
+         || check_halt_state_context (mctx, cur_state, cur_str_idx))
+       {
+         if (!fl_longest_match)
+           return cur_str_idx;
+         else
+           {
+             match_last = cur_str_idx;
+             match = 1;
+           }
+       }
+    }
+
+  while (!re_string_eoi (&mctx->input))
+    {
+      re_dfastate_t *old_state = cur_state;
+      Idx next_char_idx = re_string_cur_idx (&mctx->input) + 1;
+
+      if (BE (next_char_idx >= mctx->input.bufs_len, 0)
+         || (BE (next_char_idx >= mctx->input.valid_len, 0)
+             && mctx->input.valid_len < mctx->input.len))
+       {
+         err = extend_buffers (mctx);
+         if (BE (err != REG_NOERROR, 0))
+           {
+             assert (err == REG_ESPACE);
+             return REG_ERROR;
+           }
+       }
+
+      cur_state = transit_state (&err, mctx, cur_state);
+      if (mctx->state_log != NULL)
+       cur_state = merge_state_with_log (&err, mctx, cur_state);
+
+      if (cur_state == NULL)
+       {
+         /* Reached the invalid state or an error.  Try to recover a valid
+            state using the state log, if available and if we have not
+            already found a valid (even if not the longest) match.  */
+         if (BE (err != REG_NOERROR, 0))
+           return REG_ERROR;
+
+         if (mctx->state_log == NULL
+             || (match && !fl_longest_match)
+             || (cur_state = find_recover_state (&err, mctx)) == NULL)
+           break;
+       }
+
+      if (BE (at_init_state, 0))
+       {
+         if (old_state == cur_state)
+           next_start_idx = next_char_idx;
+         else
+           at_init_state = false;
+       }
+
+      if (cur_state->halt)
+       {
+         /* Reached a halt state.
+            Check the halt state can satisfy the current context.  */
+         if (!cur_state->has_constraint
+             || check_halt_state_context (mctx, cur_state,
+                                          re_string_cur_idx (&mctx->input)))
+           {
+             /* We found an appropriate halt state.  */
+             match_last = re_string_cur_idx (&mctx->input);
+             match = 1;
+
+             /* We found a match, do not modify match_first below.  */
+             p_match_first = NULL;
+             if (!fl_longest_match)
+               break;
+           }
+       }
+    }
+
+  if (p_match_first)
+    *p_match_first += next_start_idx;
+
+  return match_last;
+}
+
+/* Check NODE match the current context.  */
+
+static bool
+internal_function
+check_halt_node_context (const re_dfa_t *dfa, Idx node, unsigned int context)
+{
+  re_token_type_t type = dfa->nodes[node].type;
+  unsigned int constraint = dfa->nodes[node].constraint;
+  if (type != END_OF_RE)
+    return false;
+  if (!constraint)
+    return true;
+  if (NOT_SATISFY_NEXT_CONSTRAINT (constraint, context))
+    return false;
+  return true;
+}
+
+/* Check the halt state STATE match the current context.
+   Return 0 if not match, if the node, STATE has, is a halt node and
+   match the context, return the node.  */
+
+static Idx
+internal_function
+check_halt_state_context (const re_match_context_t *mctx,
+                         const re_dfastate_t *state, Idx idx)
+{
+  Idx i;
+  unsigned int context;
+#ifdef DEBUG
+  assert (state->halt);
+#endif
+  context = re_string_context_at (&mctx->input, idx, mctx->eflags);
+  for (i = 0; i < state->nodes.nelem; ++i)
+    if (check_halt_node_context (mctx->dfa, state->nodes.elems[i], context))
+      return state->nodes.elems[i];
+  return 0;
+}
+
+/* Compute the next node to which "NFA" transit from NODE("NFA" is a NFA
+   corresponding to the DFA).
+   Return the destination node, and update EPS_VIA_NODES;
+   return REG_MISSING in case of errors.  */
+
+static Idx
+internal_function
+proceed_next_node (const re_match_context_t *mctx, Idx nregs, regmatch_t *regs,
+                  Idx *pidx, Idx node, re_node_set *eps_via_nodes,
+                  struct re_fail_stack_t *fs)
+{
+  const re_dfa_t *const dfa = mctx->dfa;
+  Idx i;
+  bool ok;
+  if (IS_EPSILON_NODE (dfa->nodes[node].type))
+    {
+      re_node_set *cur_nodes = &mctx->state_log[*pidx]->nodes;
+      re_node_set *edests = &dfa->edests[node];
+      Idx dest_node;
+      ok = re_node_set_insert (eps_via_nodes, node);
+      if (BE (! ok, 0))
+       return REG_ERROR;
+      /* Pick up a valid destination, or return REG_MISSING if none
+        is found.  */
+      for (dest_node = REG_MISSING, i = 0; i < edests->nelem; ++i)
+       {
+         Idx candidate = edests->elems[i];
+         if (!re_node_set_contains (cur_nodes, candidate))
+           continue;
+          if (dest_node == REG_MISSING)
+           dest_node = candidate;
+
+         else
+           {
+             /* In order to avoid infinite loop like "(a*)*", return the second
+                epsilon-transition if the first was already considered.  */
+             if (re_node_set_contains (eps_via_nodes, dest_node))
+               return candidate;
+
+             /* Otherwise, push the second epsilon-transition on the fail stack.  */
+             else if (fs != NULL
+                      && push_fail_stack (fs, *pidx, candidate, nregs, regs,
+                                          eps_via_nodes))
+               return REG_ERROR;
+
+             /* We know we are going to exit.  */
+             break;
+           }
+       }
+      return dest_node;
+    }
+  else
+    {
+      Idx naccepted = 0;
+      re_token_type_t type = dfa->nodes[node].type;
+
+#ifdef RE_ENABLE_I18N
+      if (dfa->nodes[node].accept_mb)
+       naccepted = check_node_accept_bytes (dfa, node, &mctx->input, *pidx);
+      else
+#endif /* RE_ENABLE_I18N */
+      if (type == OP_BACK_REF)
+       {
+         Idx subexp_idx = dfa->nodes[node].opr.idx + 1;
+         naccepted = regs[subexp_idx].rm_eo - regs[subexp_idx].rm_so;
+         if (fs != NULL)
+           {
+             if (regs[subexp_idx].rm_so == -1 || regs[subexp_idx].rm_eo == -1)
+               return REG_MISSING;
+             else if (naccepted)
+               {
+                 char *buf = (char *) re_string_get_buffer (&mctx->input);
+                 if (memcmp (buf + regs[subexp_idx].rm_so, buf + *pidx,
+                             naccepted) != 0)
+                   return REG_MISSING;
+               }
+           }
+
+         if (naccepted == 0)
+           {
+             Idx dest_node;
+             ok = re_node_set_insert (eps_via_nodes, node);
+             if (BE (! ok, 0))
+               return REG_ERROR;
+             dest_node = dfa->edests[node].elems[0];
+             if (re_node_set_contains (&mctx->state_log[*pidx]->nodes,
+                                       dest_node))
+               return dest_node;
+           }
+       }
+
+      if (naccepted != 0
+         || check_node_accept (mctx, dfa->nodes + node, *pidx))
+       {
+         Idx dest_node = dfa->nexts[node];
+         *pidx = (naccepted == 0) ? *pidx + 1 : *pidx + naccepted;
+         if (fs && (*pidx > mctx->match_last || mctx->state_log[*pidx] == NULL
+                    || !re_node_set_contains (&mctx->state_log[*pidx]->nodes,
+                                              dest_node)))
+           return REG_MISSING;
+         re_node_set_empty (eps_via_nodes);
+         return dest_node;
+       }
+    }
+  return REG_MISSING;
+}
+
+static reg_errcode_t
+internal_function __attribute_warn_unused_result__
+push_fail_stack (struct re_fail_stack_t *fs, Idx str_idx, Idx dest_node,
+                Idx nregs, regmatch_t *regs, re_node_set *eps_via_nodes)
+{
+  reg_errcode_t err;
+  Idx num = fs->num++;
+  if (fs->num == fs->alloc)
+    {
+      struct re_fail_stack_ent_t *new_array;
+      new_array = realloc (fs->stack, (sizeof (struct re_fail_stack_ent_t)
+                                      * fs->alloc * 2));
+      if (new_array == NULL)
+       return REG_ESPACE;
+      fs->alloc *= 2;
+      fs->stack = new_array;
+    }
+  fs->stack[num].idx = str_idx;
+  fs->stack[num].node = dest_node;
+  fs->stack[num].regs = re_malloc (regmatch_t, nregs);
+  if (fs->stack[num].regs == NULL)
+    return REG_ESPACE;
+  memcpy (fs->stack[num].regs, regs, sizeof (regmatch_t) * nregs);
+  err = re_node_set_init_copy (&fs->stack[num].eps_via_nodes, eps_via_nodes);
+  return err;
+}
+
+static Idx
+internal_function
+pop_fail_stack (struct re_fail_stack_t *fs, Idx *pidx, Idx nregs,
+               regmatch_t *regs, re_node_set *eps_via_nodes)
+{
+  Idx num = --fs->num;
+  assert (REG_VALID_INDEX (num));
+  *pidx = fs->stack[num].idx;
+  memcpy (regs, fs->stack[num].regs, sizeof (regmatch_t) * nregs);
+  re_node_set_free (eps_via_nodes);
+  re_free (fs->stack[num].regs);
+  *eps_via_nodes = fs->stack[num].eps_via_nodes;
+  return fs->stack[num].node;
+}
+
+/* Set the positions where the subexpressions are starts/ends to registers
+   PMATCH.
+   Note: We assume that pmatch[0] is already set, and
+   pmatch[i].rm_so == pmatch[i].rm_eo == -1 for 0 < i < nmatch.  */
+
+static reg_errcode_t
+internal_function __attribute_warn_unused_result__
+set_regs (const regex_t *preg, const re_match_context_t *mctx, size_t nmatch,
+         regmatch_t *pmatch, bool fl_backtrack)
+{
+  const re_dfa_t *dfa = (const re_dfa_t *) preg->buffer;
+  Idx idx, cur_node;
+  re_node_set eps_via_nodes;
+  struct re_fail_stack_t *fs;
+  struct re_fail_stack_t fs_body = { 0, 2, NULL };
+  regmatch_t *prev_idx_match;
+  bool prev_idx_match_malloced = false;
+
+#ifdef DEBUG
+  assert (nmatch > 1);
+  assert (mctx->state_log != NULL);
+#endif
+  if (fl_backtrack)
+    {
+      fs = &fs_body;
+      fs->stack = re_malloc (struct re_fail_stack_ent_t, fs->alloc);
+      if (fs->stack == NULL)
+       return REG_ESPACE;
+    }
+  else
+    fs = NULL;
+
+  cur_node = dfa->init_node;
+  re_node_set_init_empty (&eps_via_nodes);
+
+  if (__libc_use_alloca (nmatch * sizeof (regmatch_t)))
+    prev_idx_match = (regmatch_t *) alloca (nmatch * sizeof (regmatch_t));
+  else
+    {
+      prev_idx_match = re_malloc (regmatch_t, nmatch);
+      if (prev_idx_match == NULL)
+       {
+         free_fail_stack_return (fs);
+         return REG_ESPACE;
+       }
+      prev_idx_match_malloced = true;
+    }
+  memcpy (prev_idx_match, pmatch, sizeof (regmatch_t) * nmatch);
+
+  for (idx = pmatch[0].rm_so; idx <= pmatch[0].rm_eo ;)
+    {
+      update_regs (dfa, pmatch, prev_idx_match, cur_node, idx, nmatch);
+
+      if (idx == pmatch[0].rm_eo && cur_node == mctx->last_node)
+       {
+         Idx reg_idx;
+         if (fs)
+           {
+             for (reg_idx = 0; reg_idx < nmatch; ++reg_idx)
+               if (pmatch[reg_idx].rm_so > -1 && pmatch[reg_idx].rm_eo == -1)
+                 break;
+             if (reg_idx == nmatch)
+               {
+                 re_node_set_free (&eps_via_nodes);
+                 if (prev_idx_match_malloced)
+                   re_free (prev_idx_match);
+                 return free_fail_stack_return (fs);
+               }
+             cur_node = pop_fail_stack (fs, &idx, nmatch, pmatch,
+                                        &eps_via_nodes);
+           }
+         else
+           {
+             re_node_set_free (&eps_via_nodes);
+             if (prev_idx_match_malloced)
+               re_free (prev_idx_match);
+             return REG_NOERROR;
+           }
+       }
+
+      /* Proceed to next node.  */
+      cur_node = proceed_next_node (mctx, nmatch, pmatch, &idx, cur_node,
+                                   &eps_via_nodes, fs);
+
+      if (BE (! REG_VALID_INDEX (cur_node), 0))
+       {
+         if (BE (cur_node == REG_ERROR, 0))
+           {
+             re_node_set_free (&eps_via_nodes);
+             if (prev_idx_match_malloced)
+               re_free (prev_idx_match);
+             free_fail_stack_return (fs);
+             return REG_ESPACE;
+           }
+         if (fs)
+           cur_node = pop_fail_stack (fs, &idx, nmatch, pmatch,
+                                      &eps_via_nodes);
+         else
+           {
+             re_node_set_free (&eps_via_nodes);
+             if (prev_idx_match_malloced)
+               re_free (prev_idx_match);
+             return REG_NOMATCH;
+           }
+       }
+    }
+  re_node_set_free (&eps_via_nodes);
+  if (prev_idx_match_malloced)
+    re_free (prev_idx_match);
+  return free_fail_stack_return (fs);
+}
+
+static reg_errcode_t
+internal_function
+free_fail_stack_return (struct re_fail_stack_t *fs)
+{
+  if (fs)
+    {
+      Idx fs_idx;
+      for (fs_idx = 0; fs_idx < fs->num; ++fs_idx)
+       {
+         re_node_set_free (&fs->stack[fs_idx].eps_via_nodes);
+         re_free (fs->stack[fs_idx].regs);
+       }
+      re_free (fs->stack);
+    }
+  return REG_NOERROR;
+}
+
+static void
+internal_function
+update_regs (const re_dfa_t *dfa, regmatch_t *pmatch,
+            regmatch_t *prev_idx_match, Idx cur_node, Idx cur_idx, Idx nmatch)
+{
+  int type = dfa->nodes[cur_node].type;
+  if (type == OP_OPEN_SUBEXP)
+    {
+      Idx reg_num = dfa->nodes[cur_node].opr.idx + 1;
+
+      /* We are at the first node of this sub expression.  */
+      if (reg_num < nmatch)
+       {
+         pmatch[reg_num].rm_so = cur_idx;
+         pmatch[reg_num].rm_eo = -1;
+       }
+    }
+  else if (type == OP_CLOSE_SUBEXP)
+    {
+      Idx reg_num = dfa->nodes[cur_node].opr.idx + 1;
+      if (reg_num < nmatch)
+       {
+         /* We are at the last node of this sub expression.  */
+         if (pmatch[reg_num].rm_so < cur_idx)
+           {
+             pmatch[reg_num].rm_eo = cur_idx;
+             /* This is a non-empty match or we are not inside an optional
+                subexpression.  Accept this right away.  */
+             memcpy (prev_idx_match, pmatch, sizeof (regmatch_t) * nmatch);
+           }
+         else
+           {
+             if (dfa->nodes[cur_node].opt_subexp
+                 && prev_idx_match[reg_num].rm_so != -1)
+               /* We transited through an empty match for an optional
+                  subexpression, like (a?)*, and this is not the subexp's
+                  first match.  Copy back the old content of the registers
+                  so that matches of an inner subexpression are undone as
+                  well, like in ((a?))*.  */
+               memcpy (pmatch, prev_idx_match, sizeof (regmatch_t) * nmatch);
+             else
+               /* We completed a subexpression, but it may be part of
+                  an optional one, so do not update PREV_IDX_MATCH.  */
+               pmatch[reg_num].rm_eo = cur_idx;
+           }
+       }
+    }
+}
+
+/* This function checks the STATE_LOG from the SCTX->last_str_idx to 0
+   and sift the nodes in each states according to the following rules.
+   Updated state_log will be wrote to STATE_LOG.
+
+   Rules: We throw away the Node `a' in the STATE_LOG[STR_IDX] if...
+     1. When STR_IDX == MATCH_LAST(the last index in the state_log):
+       If `a' isn't the LAST_NODE and `a' can't epsilon transit to
+       the LAST_NODE, we throw away the node `a'.
+     2. When 0 <= STR_IDX < MATCH_LAST and `a' accepts
+       string `s' and transit to `b':
+       i. If 'b' isn't in the STATE_LOG[STR_IDX+strlen('s')], we throw
+          away the node `a'.
+       ii. If 'b' is in the STATE_LOG[STR_IDX+strlen('s')] but 'b' is
+           thrown away, we throw away the node `a'.
+     3. When 0 <= STR_IDX < MATCH_LAST and 'a' epsilon transit to 'b':
+       i. If 'b' isn't in the STATE_LOG[STR_IDX], we throw away the
+          node `a'.
+       ii. If 'b' is in the STATE_LOG[STR_IDX] but 'b' is thrown away,
+           we throw away the node `a'.  */
+
+#define STATE_NODE_CONTAINS(state,node) \
+  ((state) != NULL && re_node_set_contains (&(state)->nodes, node))
+
+static reg_errcode_t
+internal_function
+sift_states_backward (const re_match_context_t *mctx, re_sift_context_t *sctx)
+{
+  reg_errcode_t err;
+  int null_cnt = 0;
+  Idx str_idx = sctx->last_str_idx;
+  re_node_set cur_dest;
+
+#ifdef DEBUG
+  assert (mctx->state_log != NULL && mctx->state_log[str_idx] != NULL);
+#endif
+
+  /* Build sifted state_log[str_idx].  It has the nodes which can epsilon
+     transit to the last_node and the last_node itself.  */
+  err = re_node_set_init_1 (&cur_dest, sctx->last_node);
+  if (BE (err != REG_NOERROR, 0))
+    return err;
+  err = update_cur_sifted_state (mctx, sctx, str_idx, &cur_dest);
+  if (BE (err != REG_NOERROR, 0))
+    goto free_return;
+
+  /* Then check each states in the state_log.  */
+  while (str_idx > 0)
+    {
+      /* Update counters.  */
+      null_cnt = (sctx->sifted_states[str_idx] == NULL) ? null_cnt + 1 : 0;
+      if (null_cnt > mctx->max_mb_elem_len)
+       {
+         memset (sctx->sifted_states, '\0',
+                 sizeof (re_dfastate_t *) * str_idx);
+         re_node_set_free (&cur_dest);
+         return REG_NOERROR;
+       }
+      re_node_set_empty (&cur_dest);
+      --str_idx;
+
+      if (mctx->state_log[str_idx])
+       {
+         err = build_sifted_states (mctx, sctx, str_idx, &cur_dest);
+         if (BE (err != REG_NOERROR, 0))
+           goto free_return;
+       }
+
+      /* Add all the nodes which satisfy the following conditions:
+        - It can epsilon transit to a node in CUR_DEST.
+        - It is in CUR_SRC.
+        And update state_log.  */
+      err = update_cur_sifted_state (mctx, sctx, str_idx, &cur_dest);
+      if (BE (err != REG_NOERROR, 0))
+       goto free_return;
+    }
+  err = REG_NOERROR;
+ free_return:
+  re_node_set_free (&cur_dest);
+  return err;
+}
+
+static reg_errcode_t
+internal_function __attribute_warn_unused_result__
+build_sifted_states (const re_match_context_t *mctx, re_sift_context_t *sctx,
+                    Idx str_idx, re_node_set *cur_dest)
+{
+  const re_dfa_t *const dfa = mctx->dfa;
+  const re_node_set *cur_src = &mctx->state_log[str_idx]->non_eps_nodes;
+  Idx i;
+
+  /* Then build the next sifted state.
+     We build the next sifted state on `cur_dest', and update
+     `sifted_states[str_idx]' with `cur_dest'.
+     Note:
+     `cur_dest' is the sifted state from `state_log[str_idx + 1]'.
+     `cur_src' points the node_set of the old `state_log[str_idx]'
+     (with the epsilon nodes pre-filtered out).  */
+  for (i = 0; i < cur_src->nelem; i++)
+    {
+      Idx prev_node = cur_src->elems[i];
+      int naccepted = 0;
+      bool ok;
+
+#ifdef DEBUG
+      re_token_type_t type = dfa->nodes[prev_node].type;
+      assert (!IS_EPSILON_NODE (type));
+#endif
+#ifdef RE_ENABLE_I18N
+      /* If the node may accept `multi byte'.  */
+      if (dfa->nodes[prev_node].accept_mb)
+       naccepted = sift_states_iter_mb (mctx, sctx, prev_node,
+                                        str_idx, sctx->last_str_idx);
+#endif /* RE_ENABLE_I18N */
+
+      /* We don't check backreferences here.
+        See update_cur_sifted_state().  */
+      if (!naccepted
+         && check_node_accept (mctx, dfa->nodes + prev_node, str_idx)
+         && STATE_NODE_CONTAINS (sctx->sifted_states[str_idx + 1],
+                                 dfa->nexts[prev_node]))
+       naccepted = 1;
+
+      if (naccepted == 0)
+       continue;
+
+      if (sctx->limits.nelem)
+       {
+         Idx to_idx = str_idx + naccepted;
+         if (check_dst_limits (mctx, &sctx->limits,
+                               dfa->nexts[prev_node], to_idx,
+                               prev_node, str_idx))
+           continue;
+       }
+      ok = re_node_set_insert (cur_dest, prev_node);
+      if (BE (! ok, 0))
+       return REG_ESPACE;
+    }
+
+  return REG_NOERROR;
+}
+
+/* Helper functions.  */
+
+static reg_errcode_t
+internal_function
+clean_state_log_if_needed (re_match_context_t *mctx, Idx next_state_log_idx)
+{
+  Idx top = mctx->state_log_top;
+
+  if (next_state_log_idx >= mctx->input.bufs_len
+      || (next_state_log_idx >= mctx->input.valid_len
+         && mctx->input.valid_len < mctx->input.len))
+    {
+      reg_errcode_t err;
+      err = extend_buffers (mctx);
+      if (BE (err != REG_NOERROR, 0))
+       return err;
+    }
+
+  if (top < next_state_log_idx)
+    {
+      memset (mctx->state_log + top + 1, '\0',
+             sizeof (re_dfastate_t *) * (next_state_log_idx - top));
+      mctx->state_log_top = next_state_log_idx;
+    }
+  return REG_NOERROR;
+}
+
+static reg_errcode_t
+internal_function
+merge_state_array (const re_dfa_t *dfa, re_dfastate_t **dst,
+                  re_dfastate_t **src, Idx num)
+{
+  Idx st_idx;
+  reg_errcode_t err;
+  for (st_idx = 0; st_idx < num; ++st_idx)
+    {
+      if (dst[st_idx] == NULL)
+       dst[st_idx] = src[st_idx];
+      else if (src[st_idx] != NULL)
+       {
+         re_node_set merged_set;
+         err = re_node_set_init_union (&merged_set, &dst[st_idx]->nodes,
+                                       &src[st_idx]->nodes);
+         if (BE (err != REG_NOERROR, 0))
+           return err;
+         dst[st_idx] = re_acquire_state (&err, dfa, &merged_set);
+         re_node_set_free (&merged_set);
+         if (BE (err != REG_NOERROR, 0))
+           return err;
+       }
+    }
+  return REG_NOERROR;
+}
+
+static reg_errcode_t
+internal_function
+update_cur_sifted_state (const re_match_context_t *mctx,
+                        re_sift_context_t *sctx, Idx str_idx,
+                        re_node_set *dest_nodes)
+{
+  const re_dfa_t *const dfa = mctx->dfa;
+  reg_errcode_t err = REG_NOERROR;
+  const re_node_set *candidates;
+  candidates = ((mctx->state_log[str_idx] == NULL) ? NULL
+               : &mctx->state_log[str_idx]->nodes);
+
+  if (dest_nodes->nelem == 0)
+    sctx->sifted_states[str_idx] = NULL;
+  else
+    {
+      if (candidates)
+       {
+         /* At first, add the nodes which can epsilon transit to a node in
+            DEST_NODE.  */
+         err = add_epsilon_src_nodes (dfa, dest_nodes, candidates);
+         if (BE (err != REG_NOERROR, 0))
+           return err;
+
+         /* Then, check the limitations in the current sift_context.  */
+         if (sctx->limits.nelem)
+           {
+             err = check_subexp_limits (dfa, dest_nodes, candidates, &sctx->limits,
+                                        mctx->bkref_ents, str_idx);
+             if (BE (err != REG_NOERROR, 0))
+               return err;
+           }
+       }
+
+      sctx->sifted_states[str_idx] = re_acquire_state (&err, dfa, dest_nodes);
+      if (BE (err != REG_NOERROR, 0))
+       return err;
+    }
+
+  if (candidates && mctx->state_log[str_idx]->has_backref)
+    {
+      err = sift_states_bkref (mctx, sctx, str_idx, candidates);
+      if (BE (err != REG_NOERROR, 0))
+       return err;
+    }
+  return REG_NOERROR;
+}
+
+static reg_errcode_t
+internal_function __attribute_warn_unused_result__
+add_epsilon_src_nodes (const re_dfa_t *dfa, re_node_set *dest_nodes,
+                      const re_node_set *candidates)
+{
+  reg_errcode_t err = REG_NOERROR;
+  Idx i;
+
+  re_dfastate_t *state = re_acquire_state (&err, dfa, dest_nodes);
+  if (BE (err != REG_NOERROR, 0))
+    return err;
+
+  if (!state->inveclosure.alloc)
+    {
+      err = re_node_set_alloc (&state->inveclosure, dest_nodes->nelem);
+      if (BE (err != REG_NOERROR, 0))
+       return REG_ESPACE;
+      for (i = 0; i < dest_nodes->nelem; i++)
+       {
+         err = re_node_set_merge (&state->inveclosure,
+                                  dfa->inveclosures + dest_nodes->elems[i]);
+         if (BE (err != REG_NOERROR, 0))
+           return REG_ESPACE;
+       }
+    }
+  return re_node_set_add_intersect (dest_nodes, candidates,
+                                   &state->inveclosure);
+}
+
+static reg_errcode_t
+internal_function
+sub_epsilon_src_nodes (const re_dfa_t *dfa, Idx node, re_node_set *dest_nodes,
+                      const re_node_set *candidates)
+{
+    Idx ecl_idx;
+    reg_errcode_t err;
+    re_node_set *inv_eclosure = dfa->inveclosures + node;
+    re_node_set except_nodes;
+    re_node_set_init_empty (&except_nodes);
+    for (ecl_idx = 0; ecl_idx < inv_eclosure->nelem; ++ecl_idx)
+      {
+       Idx cur_node = inv_eclosure->elems[ecl_idx];
+       if (cur_node == node)
+         continue;
+       if (IS_EPSILON_NODE (dfa->nodes[cur_node].type))
+         {
+           Idx edst1 = dfa->edests[cur_node].elems[0];
+           Idx edst2 = ((dfa->edests[cur_node].nelem > 1)
+                        ? dfa->edests[cur_node].elems[1] : REG_MISSING);
+           if ((!re_node_set_contains (inv_eclosure, edst1)
+                && re_node_set_contains (dest_nodes, edst1))
+               || (REG_VALID_NONZERO_INDEX (edst2)
+                   && !re_node_set_contains (inv_eclosure, edst2)
+                   && re_node_set_contains (dest_nodes, edst2)))
+             {
+               err = re_node_set_add_intersect (&except_nodes, candidates,
+                                                dfa->inveclosures + cur_node);
+               if (BE (err != REG_NOERROR, 0))
+                 {
+                   re_node_set_free (&except_nodes);
+                   return err;
+                 }
+             }
+         }
+      }
+    for (ecl_idx = 0; ecl_idx < inv_eclosure->nelem; ++ecl_idx)
+      {
+       Idx cur_node = inv_eclosure->elems[ecl_idx];
+       if (!re_node_set_contains (&except_nodes, cur_node))
+         {
+           Idx idx = re_node_set_contains (dest_nodes, cur_node) - 1;
+           re_node_set_remove_at (dest_nodes, idx);
+         }
+      }
+    re_node_set_free (&except_nodes);
+    return REG_NOERROR;
+}
+
+static bool
+internal_function
+check_dst_limits (const re_match_context_t *mctx, const re_node_set *limits,
+                 Idx dst_node, Idx dst_idx, Idx src_node, Idx src_idx)
+{
+  const re_dfa_t *const dfa = mctx->dfa;
+  Idx lim_idx, src_pos, dst_pos;
+
+  Idx dst_bkref_idx = search_cur_bkref_entry (mctx, dst_idx);
+  Idx src_bkref_idx = search_cur_bkref_entry (mctx, src_idx);
+  for (lim_idx = 0; lim_idx < limits->nelem; ++lim_idx)
+    {
+      Idx subexp_idx;
+      struct re_backref_cache_entry *ent;
+      ent = mctx->bkref_ents + limits->elems[lim_idx];
+      subexp_idx = dfa->nodes[ent->node].opr.idx;
+
+      dst_pos = check_dst_limits_calc_pos (mctx, limits->elems[lim_idx],
+                                          subexp_idx, dst_node, dst_idx,
+                                          dst_bkref_idx);
+      src_pos = check_dst_limits_calc_pos (mctx, limits->elems[lim_idx],
+                                          subexp_idx, src_node, src_idx,
+                                          src_bkref_idx);
+
+      /* In case of:
+        <src> <dst> ( <subexp> )
+        ( <subexp> ) <src> <dst>
+        ( <subexp1> <src> <subexp2> <dst> <subexp3> )  */
+      if (src_pos == dst_pos)
+       continue; /* This is unrelated limitation.  */
+      else
+       return true;
+    }
+  return false;
+}
+
+static int
+internal_function
+check_dst_limits_calc_pos_1 (const re_match_context_t *mctx, int boundaries,
+                            Idx subexp_idx, Idx from_node, Idx bkref_idx)
+{
+  const re_dfa_t *const dfa = mctx->dfa;
+  const re_node_set *eclosures = dfa->eclosures + from_node;
+  Idx node_idx;
+
+  /* Else, we are on the boundary: examine the nodes on the epsilon
+     closure.  */
+  for (node_idx = 0; node_idx < eclosures->nelem; ++node_idx)
+    {
+      Idx node = eclosures->elems[node_idx];
+      switch (dfa->nodes[node].type)
+       {
+       case OP_BACK_REF:
+         if (bkref_idx != REG_MISSING)
+           {
+             struct re_backref_cache_entry *ent = mctx->bkref_ents + bkref_idx;
+             do
+               {
+                 Idx dst;
+                 int cpos;
+
+                 if (ent->node != node)
+                   continue;
+
+                 if (subexp_idx < BITSET_WORD_BITS
+                     && !(ent->eps_reachable_subexps_map
+                          & ((bitset_word_t) 1 << subexp_idx)))
+                   continue;
+
+                 /* Recurse trying to reach the OP_OPEN_SUBEXP and
+                    OP_CLOSE_SUBEXP cases below.  But, if the
+                    destination node is the same node as the source
+                    node, don't recurse because it would cause an
+                    infinite loop: a regex that exhibits this behavior
+                    is ()\1*\1*  */
+                 dst = dfa->edests[node].elems[0];
+                 if (dst == from_node)
+                   {
+                     if (boundaries & 1)
+                       return -1;
+                     else /* if (boundaries & 2) */
+                       return 0;
+                   }
+
+                 cpos =
+                   check_dst_limits_calc_pos_1 (mctx, boundaries, subexp_idx,
+                                                dst, bkref_idx);
+                 if (cpos == -1 /* && (boundaries & 1) */)
+                   return -1;
+                 if (cpos == 0 && (boundaries & 2))
+                   return 0;
+
+                 if (subexp_idx < BITSET_WORD_BITS)
+                   ent->eps_reachable_subexps_map
+                     &= ~((bitset_word_t) 1 << subexp_idx);
+               }
+             while (ent++->more);
+           }
+         break;
+
+       case OP_OPEN_SUBEXP:
+         if ((boundaries & 1) && subexp_idx == dfa->nodes[node].opr.idx)
+           return -1;
+         break;
+
+       case OP_CLOSE_SUBEXP:
+         if ((boundaries & 2) && subexp_idx == dfa->nodes[node].opr.idx)
+           return 0;
+         break;
+
+       default:
+           break;
+       }
+    }
+
+  return (boundaries & 2) ? 1 : 0;
+}
+
+static int
+internal_function
+check_dst_limits_calc_pos (const re_match_context_t *mctx, Idx limit,
+                          Idx subexp_idx, Idx from_node, Idx str_idx,
+                          Idx bkref_idx)
+{
+  struct re_backref_cache_entry *lim = mctx->bkref_ents + limit;
+  int boundaries;
+
+  /* If we are outside the range of the subexpression, return -1 or 1.  */
+  if (str_idx < lim->subexp_from)
+    return -1;
+
+  if (lim->subexp_to < str_idx)
+    return 1;
+
+  /* If we are within the subexpression, return 0.  */
+  boundaries = (str_idx == lim->subexp_from);
+  boundaries |= (str_idx == lim->subexp_to) << 1;
+  if (boundaries == 0)
+    return 0;
+
+  /* Else, examine epsilon closure.  */
+  return check_dst_limits_calc_pos_1 (mctx, boundaries, subexp_idx,
+                                     from_node, bkref_idx);
+}
+
+/* Check the limitations of sub expressions LIMITS, and remove the nodes
+   which are against limitations from DEST_NODES. */
+
+static reg_errcode_t
+internal_function
+check_subexp_limits (const re_dfa_t *dfa, re_node_set *dest_nodes,
+                    const re_node_set *candidates, re_node_set *limits,
+                    struct re_backref_cache_entry *bkref_ents, Idx str_idx)
+{
+  reg_errcode_t err;
+  Idx node_idx, lim_idx;
+
+  for (lim_idx = 0; lim_idx < limits->nelem; ++lim_idx)
+    {
+      Idx subexp_idx;
+      struct re_backref_cache_entry *ent;
+      ent = bkref_ents + limits->elems[lim_idx];
+
+      if (str_idx <= ent->subexp_from || ent->str_idx < str_idx)
+       continue; /* This is unrelated limitation.  */
+
+      subexp_idx = dfa->nodes[ent->node].opr.idx;
+      if (ent->subexp_to == str_idx)
+       {
+         Idx ops_node = REG_MISSING;
+         Idx cls_node = REG_MISSING;
+         for (node_idx = 0; node_idx < dest_nodes->nelem; ++node_idx)
+           {
+             Idx node = dest_nodes->elems[node_idx];
+             re_token_type_t type = dfa->nodes[node].type;
+             if (type == OP_OPEN_SUBEXP
+                 && subexp_idx == dfa->nodes[node].opr.idx)
+               ops_node = node;
+             else if (type == OP_CLOSE_SUBEXP
+                      && subexp_idx == dfa->nodes[node].opr.idx)
+               cls_node = node;
+           }
+
+         /* Check the limitation of the open subexpression.  */
+         /* Note that (ent->subexp_to = str_idx != ent->subexp_from).  */
+         if (REG_VALID_INDEX (ops_node))
+           {
+             err = sub_epsilon_src_nodes (dfa, ops_node, dest_nodes,
+                                          candidates);
+             if (BE (err != REG_NOERROR, 0))
+               return err;
+           }
+
+         /* Check the limitation of the close subexpression.  */
+         if (REG_VALID_INDEX (cls_node))
+           for (node_idx = 0; node_idx < dest_nodes->nelem; ++node_idx)
+             {
+               Idx node = dest_nodes->elems[node_idx];
+               if (!re_node_set_contains (dfa->inveclosures + node,
+                                          cls_node)
+                   && !re_node_set_contains (dfa->eclosures + node,
+                                             cls_node))
+                 {
+                   /* It is against this limitation.
+                      Remove it form the current sifted state.  */
+                   err = sub_epsilon_src_nodes (dfa, node, dest_nodes,
+                                                candidates);
+                   if (BE (err != REG_NOERROR, 0))
+                     return err;
+                   --node_idx;
+                 }
+             }
+       }
+      else /* (ent->subexp_to != str_idx)  */
+       {
+         for (node_idx = 0; node_idx < dest_nodes->nelem; ++node_idx)
+           {
+             Idx node = dest_nodes->elems[node_idx];
+             re_token_type_t type = dfa->nodes[node].type;
+             if (type == OP_CLOSE_SUBEXP || type == OP_OPEN_SUBEXP)
+               {
+                 if (subexp_idx != dfa->nodes[node].opr.idx)
+                   continue;
+                 /* It is against this limitation.
+                    Remove it form the current sifted state.  */
+                 err = sub_epsilon_src_nodes (dfa, node, dest_nodes,
+                                              candidates);
+                 if (BE (err != REG_NOERROR, 0))
+                   return err;
+               }
+           }
+       }
+    }
+  return REG_NOERROR;
+}
+
+static reg_errcode_t
+internal_function __attribute_warn_unused_result__
+sift_states_bkref (const re_match_context_t *mctx, re_sift_context_t *sctx,
+                  Idx str_idx, const re_node_set *candidates)
+{
+  const re_dfa_t *const dfa = mctx->dfa;
+  reg_errcode_t err;
+  Idx node_idx, node;
+  re_sift_context_t local_sctx;
+  Idx first_idx = search_cur_bkref_entry (mctx, str_idx);
+
+  if (first_idx == REG_MISSING)
+    return REG_NOERROR;
+
+  local_sctx.sifted_states = NULL; /* Mark that it hasn't been initialized.  */
+
+  for (node_idx = 0; node_idx < candidates->nelem; ++node_idx)
+    {
+      Idx enabled_idx;
+      re_token_type_t type;
+      struct re_backref_cache_entry *entry;
+      node = candidates->elems[node_idx];
+      type = dfa->nodes[node].type;
+      /* Avoid infinite loop for the REs like "()\1+".  */
+      if (node == sctx->last_node && str_idx == sctx->last_str_idx)
+       continue;
+      if (type != OP_BACK_REF)
+       continue;
+
+      entry = mctx->bkref_ents + first_idx;
+      enabled_idx = first_idx;
+      do
+       {
+         Idx subexp_len;
+         Idx to_idx;
+         Idx dst_node;
+         bool ok;
+         re_dfastate_t *cur_state;
+
+         if (entry->node != node)
+           continue;
+         subexp_len = entry->subexp_to - entry->subexp_from;
+         to_idx = str_idx + subexp_len;
+         dst_node = (subexp_len ? dfa->nexts[node]
+                     : dfa->edests[node].elems[0]);
+
+         if (to_idx > sctx->last_str_idx
+             || sctx->sifted_states[to_idx] == NULL
+             || !STATE_NODE_CONTAINS (sctx->sifted_states[to_idx], dst_node)
+             || check_dst_limits (mctx, &sctx->limits, node,
+                                  str_idx, dst_node, to_idx))
+           continue;
+
+         if (local_sctx.sifted_states == NULL)
+           {
+             local_sctx = *sctx;
+             err = re_node_set_init_copy (&local_sctx.limits, &sctx->limits);
+             if (BE (err != REG_NOERROR, 0))
+               goto free_return;
+           }
+         local_sctx.last_node = node;
+         local_sctx.last_str_idx = str_idx;
+         ok = re_node_set_insert (&local_sctx.limits, enabled_idx);
+         if (BE (! ok, 0))
+           {
+             err = REG_ESPACE;
+             goto free_return;
+           }
+         cur_state = local_sctx.sifted_states[str_idx];
+         err = sift_states_backward (mctx, &local_sctx);
+         if (BE (err != REG_NOERROR, 0))
+           goto free_return;
+         if (sctx->limited_states != NULL)
+           {
+             err = merge_state_array (dfa, sctx->limited_states,
+                                      local_sctx.sifted_states,
+                                      str_idx + 1);
+             if (BE (err != REG_NOERROR, 0))
+               goto free_return;
+           }
+         local_sctx.sifted_states[str_idx] = cur_state;
+         re_node_set_remove (&local_sctx.limits, enabled_idx);
+
+         /* mctx->bkref_ents may have changed, reload the pointer.  */
+         entry = mctx->bkref_ents + enabled_idx;
+       }
+      while (enabled_idx++, entry++->more);
+    }
+  err = REG_NOERROR;
+ free_return:
+  if (local_sctx.sifted_states != NULL)
+    {
+      re_node_set_free (&local_sctx.limits);
+    }
+
+  return err;
+}
+
+
+#ifdef RE_ENABLE_I18N
+static int
+internal_function
+sift_states_iter_mb (const re_match_context_t *mctx, re_sift_context_t *sctx,
+                    Idx node_idx, Idx str_idx, Idx max_str_idx)
+{
+  const re_dfa_t *const dfa = mctx->dfa;
+  int naccepted;
+  /* Check the node can accept `multi byte'.  */
+  naccepted = check_node_accept_bytes (dfa, node_idx, &mctx->input, str_idx);
+  if (naccepted > 0 && str_idx + naccepted <= max_str_idx &&
+      !STATE_NODE_CONTAINS (sctx->sifted_states[str_idx + naccepted],
+                           dfa->nexts[node_idx]))
+    /* The node can't accept the `multi byte', or the
+       destination was already thrown away, then the node
+       could't accept the current input `multi byte'.   */
+    naccepted = 0;
+  /* Otherwise, it is sure that the node could accept
+     `naccepted' bytes input.  */
+  return naccepted;
+}
+#endif /* RE_ENABLE_I18N */
+
+\f
+/* Functions for state transition.  */
+
+/* Return the next state to which the current state STATE will transit by
+   accepting the current input byte, and update STATE_LOG if necessary.
+   If STATE can accept a multibyte char/collating element/back reference
+   update the destination of STATE_LOG.  */
+
+static re_dfastate_t *
+internal_function __attribute_warn_unused_result__
+transit_state (reg_errcode_t *err, re_match_context_t *mctx,
+              re_dfastate_t *state)
+{
+  re_dfastate_t **trtable;
+  unsigned char ch;
+
+#ifdef RE_ENABLE_I18N
+  /* If the current state can accept multibyte.  */
+  if (BE (state->accept_mb, 0))
+    {
+      *err = transit_state_mb (mctx, state);
+      if (BE (*err != REG_NOERROR, 0))
+       return NULL;
+    }
+#endif /* RE_ENABLE_I18N */
+
+  /* Then decide the next state with the single byte.  */
+#if 0
+  if (0)
+    /* don't use transition table  */
+    return transit_state_sb (err, mctx, state);
+#endif
+
+  /* Use transition table  */
+  ch = re_string_fetch_byte (&mctx->input);
+  for (;;)
+    {
+      trtable = state->trtable;
+      if (BE (trtable != NULL, 1))
+       return trtable[ch];
+
+      trtable = state->word_trtable;
+      if (BE (trtable != NULL, 1))
+       {
+         unsigned int context;
+         context
+           = re_string_context_at (&mctx->input,
+                                   re_string_cur_idx (&mctx->input) - 1,
+                                   mctx->eflags);
+         if (IS_WORD_CONTEXT (context))
+           return trtable[ch + SBC_MAX];
+         else
+           return trtable[ch];
+       }
+
+      if (!build_trtable (mctx->dfa, state))
+       {
+         *err = REG_ESPACE;
+         return NULL;
+       }
+
+      /* Retry, we now have a transition table.  */
+    }
+}
+
+/* Update the state_log if we need */
+static re_dfastate_t *
+internal_function
+merge_state_with_log (reg_errcode_t *err, re_match_context_t *mctx,
+                     re_dfastate_t *next_state)
+{
+  const re_dfa_t *const dfa = mctx->dfa;
+  Idx cur_idx = re_string_cur_idx (&mctx->input);
+
+  if (cur_idx > mctx->state_log_top)
+    {
+      mctx->state_log[cur_idx] = next_state;
+      mctx->state_log_top = cur_idx;
+    }
+  else if (mctx->state_log[cur_idx] == 0)
+    {
+      mctx->state_log[cur_idx] = next_state;
+    }
+  else
+    {
+      re_dfastate_t *pstate;
+      unsigned int context;
+      re_node_set next_nodes, *log_nodes, *table_nodes = NULL;
+      /* If (state_log[cur_idx] != 0), it implies that cur_idx is
+        the destination of a multibyte char/collating element/
+        back reference.  Then the next state is the union set of
+        these destinations and the results of the transition table.  */
+      pstate = mctx->state_log[cur_idx];
+      log_nodes = pstate->entrance_nodes;
+      if (next_state != NULL)
+       {
+         table_nodes = next_state->entrance_nodes;
+         *err = re_node_set_init_union (&next_nodes, table_nodes,
+                                            log_nodes);
+         if (BE (*err != REG_NOERROR, 0))
+           return NULL;
+       }
+      else
+       next_nodes = *log_nodes;
+      /* Note: We already add the nodes of the initial state,
+        then we don't need to add them here.  */
+
+      context = re_string_context_at (&mctx->input,
+                                     re_string_cur_idx (&mctx->input) - 1,
+                                     mctx->eflags);
+      next_state = mctx->state_log[cur_idx]
+       = re_acquire_state_context (err, dfa, &next_nodes, context);
+      /* We don't need to check errors here, since the return value of
+        this function is next_state and ERR is already set.  */
+
+      if (table_nodes != NULL)
+       re_node_set_free (&next_nodes);
+    }
+
+  if (BE (dfa->nbackref, 0) && next_state != NULL)
+    {
+      /* Check OP_OPEN_SUBEXP in the current state in case that we use them
+        later.  We must check them here, since the back references in the
+        next state might use them.  */
+      *err = check_subexp_matching_top (mctx, &next_state->nodes,
+                                       cur_idx);
+      if (BE (*err != REG_NOERROR, 0))
+       return NULL;
+
+      /* If the next state has back references.  */
+      if (next_state->has_backref)
+       {
+         *err = transit_state_bkref (mctx, &next_state->nodes);
+         if (BE (*err != REG_NOERROR, 0))
+           return NULL;
+         next_state = mctx->state_log[cur_idx];
+       }
+    }
+
+  return next_state;
+}
+
+/* Skip bytes in the input that correspond to part of a
+   multi-byte match, then look in the log for a state
+   from which to restart matching.  */
+static re_dfastate_t *
+internal_function
+find_recover_state (reg_errcode_t *err, re_match_context_t *mctx)
+{
+  re_dfastate_t *cur_state;
+  do
+    {
+      Idx max = mctx->state_log_top;
+      Idx cur_str_idx = re_string_cur_idx (&mctx->input);
+
+      do
+       {
+         if (++cur_str_idx > max)
+           return NULL;
+         re_string_skip_bytes (&mctx->input, 1);
+       }
+      while (mctx->state_log[cur_str_idx] == NULL);
+
+      cur_state = merge_state_with_log (err, mctx, NULL);
+    }
+  while (*err == REG_NOERROR && cur_state == NULL);
+  return cur_state;
+}
+
+/* Helper functions for transit_state.  */
+
+/* From the node set CUR_NODES, pick up the nodes whose types are
+   OP_OPEN_SUBEXP and which have corresponding back references in the regular
+   expression. And register them to use them later for evaluating the
+   correspoding back references.  */
+
+static reg_errcode_t
+internal_function
+check_subexp_matching_top (re_match_context_t *mctx, re_node_set *cur_nodes,
+                          Idx str_idx)
+{
+  const re_dfa_t *const dfa = mctx->dfa;
+  Idx node_idx;
+  reg_errcode_t err;
+
+  /* TODO: This isn't efficient.
+          Because there might be more than one nodes whose types are
+          OP_OPEN_SUBEXP and whose index is SUBEXP_IDX, we must check all
+          nodes.
+          E.g. RE: (a){2}  */
+  for (node_idx = 0; node_idx < cur_nodes->nelem; ++node_idx)
+    {
+      Idx node = cur_nodes->elems[node_idx];
+      if (dfa->nodes[node].type == OP_OPEN_SUBEXP
+         && dfa->nodes[node].opr.idx < BITSET_WORD_BITS
+         && (dfa->used_bkref_map
+             & ((bitset_word_t) 1 << dfa->nodes[node].opr.idx)))
+       {
+         err = match_ctx_add_subtop (mctx, node, str_idx);
+         if (BE (err != REG_NOERROR, 0))
+           return err;
+       }
+    }
+  return REG_NOERROR;
+}
+
+#if 0
+/* Return the next state to which the current state STATE will transit by
+   accepting the current input byte.  */
+
+static re_dfastate_t *
+transit_state_sb (reg_errcode_t *err, re_match_context_t *mctx,
+                 re_dfastate_t *state)
+{
+  const re_dfa_t *const dfa = mctx->dfa;
+  re_node_set next_nodes;
+  re_dfastate_t *next_state;
+  Idx node_cnt, cur_str_idx = re_string_cur_idx (&mctx->input);
+  unsigned int context;
+
+  *err = re_node_set_alloc (&next_nodes, state->nodes.nelem + 1);
+  if (BE (*err != REG_NOERROR, 0))
+    return NULL;
+  for (node_cnt = 0; node_cnt < state->nodes.nelem; ++node_cnt)
+    {
+      Idx cur_node = state->nodes.elems[node_cnt];
+      if (check_node_accept (mctx, dfa->nodes + cur_node, cur_str_idx))
+       {
+         *err = re_node_set_merge (&next_nodes,
+                                   dfa->eclosures + dfa->nexts[cur_node]);
+         if (BE (*err != REG_NOERROR, 0))
+           {
+             re_node_set_free (&next_nodes);
+             return NULL;
+           }
+       }
+    }
+  context = re_string_context_at (&mctx->input, cur_str_idx, mctx->eflags);
+  next_state = re_acquire_state_context (err, dfa, &next_nodes, context);
+  /* We don't need to check errors here, since the return value of
+     this function is next_state and ERR is already set.  */
+
+  re_node_set_free (&next_nodes);
+  re_string_skip_bytes (&mctx->input, 1);
+  return next_state;
+}
+#endif
+
+#ifdef RE_ENABLE_I18N
+static reg_errcode_t
+internal_function
+transit_state_mb (re_match_context_t *mctx, re_dfastate_t *pstate)
+{
+  const re_dfa_t *const dfa = mctx->dfa;
+  reg_errcode_t err;
+  Idx i;
+
+  for (i = 0; i < pstate->nodes.nelem; ++i)
+    {
+      re_node_set dest_nodes, *new_nodes;
+      Idx cur_node_idx = pstate->nodes.elems[i];
+      int naccepted;
+      Idx dest_idx;
+      unsigned int context;
+      re_dfastate_t *dest_state;
+
+      if (!dfa->nodes[cur_node_idx].accept_mb)
+       continue;
+
+      if (dfa->nodes[cur_node_idx].constraint)
+       {
+         context = re_string_context_at (&mctx->input,
+                                         re_string_cur_idx (&mctx->input),
+                                         mctx->eflags);
+         if (NOT_SATISFY_NEXT_CONSTRAINT (dfa->nodes[cur_node_idx].constraint,
+                                          context))
+           continue;
+       }
+
+      /* How many bytes the node can accept?  */
+      naccepted = check_node_accept_bytes (dfa, cur_node_idx, &mctx->input,
+                                          re_string_cur_idx (&mctx->input));
+      if (naccepted == 0)
+       continue;
+
+      /* The node can accepts `naccepted' bytes.  */
+      dest_idx = re_string_cur_idx (&mctx->input) + naccepted;
+      mctx->max_mb_elem_len = ((mctx->max_mb_elem_len < naccepted) ? naccepted
+                              : mctx->max_mb_elem_len);
+      err = clean_state_log_if_needed (mctx, dest_idx);
+      if (BE (err != REG_NOERROR, 0))
+       return err;
+#ifdef DEBUG
+      assert (dfa->nexts[cur_node_idx] != REG_MISSING);
+#endif
+      new_nodes = dfa->eclosures + dfa->nexts[cur_node_idx];
+
+      dest_state = mctx->state_log[dest_idx];
+      if (dest_state == NULL)
+       dest_nodes = *new_nodes;
+      else
+       {
+         err = re_node_set_init_union (&dest_nodes,
+                                       dest_state->entrance_nodes, new_nodes);
+         if (BE (err != REG_NOERROR, 0))
+           return err;
+       }
+      context = re_string_context_at (&mctx->input, dest_idx - 1,
+                                     mctx->eflags);
+      mctx->state_log[dest_idx]
+       = re_acquire_state_context (&err, dfa, &dest_nodes, context);
+      if (dest_state != NULL)
+       re_node_set_free (&dest_nodes);
+      if (BE (mctx->state_log[dest_idx] == NULL && err != REG_NOERROR, 0))
+       return err;
+    }
+  return REG_NOERROR;
+}
+#endif /* RE_ENABLE_I18N */
+
+static reg_errcode_t
+internal_function
+transit_state_bkref (re_match_context_t *mctx, const re_node_set *nodes)
+{
+  const re_dfa_t *const dfa = mctx->dfa;
+  reg_errcode_t err;
+  Idx i;
+  Idx cur_str_idx = re_string_cur_idx (&mctx->input);
+
+  for (i = 0; i < nodes->nelem; ++i)
+    {
+      Idx dest_str_idx, prev_nelem, bkc_idx;
+      Idx node_idx = nodes->elems[i];
+      unsigned int context;
+      const re_token_t *node = dfa->nodes + node_idx;
+      re_node_set *new_dest_nodes;
+
+      /* Check whether `node' is a backreference or not.  */
+      if (node->type != OP_BACK_REF)
+       continue;
+
+      if (node->constraint)
+       {
+         context = re_string_context_at (&mctx->input, cur_str_idx,
+                                         mctx->eflags);
+         if (NOT_SATISFY_NEXT_CONSTRAINT (node->constraint, context))
+           continue;
+       }
+
+      /* `node' is a backreference.
+        Check the substring which the substring matched.  */
+      bkc_idx = mctx->nbkref_ents;
+      err = get_subexp (mctx, node_idx, cur_str_idx);
+      if (BE (err != REG_NOERROR, 0))
+       goto free_return;
+
+      /* And add the epsilon closures (which is `new_dest_nodes') of
+        the backreference to appropriate state_log.  */
+#ifdef DEBUG
+      assert (dfa->nexts[node_idx] != REG_MISSING);
+#endif
+      for (; bkc_idx < mctx->nbkref_ents; ++bkc_idx)
+       {
+         Idx subexp_len;
+         re_dfastate_t *dest_state;
+         struct re_backref_cache_entry *bkref_ent;
+         bkref_ent = mctx->bkref_ents + bkc_idx;
+         if (bkref_ent->node != node_idx || bkref_ent->str_idx != cur_str_idx)
+           continue;
+         subexp_len = bkref_ent->subexp_to - bkref_ent->subexp_from;
+         new_dest_nodes = (subexp_len == 0
+                           ? dfa->eclosures + dfa->edests[node_idx].elems[0]
+                           : dfa->eclosures + dfa->nexts[node_idx]);
+         dest_str_idx = (cur_str_idx + bkref_ent->subexp_to
+                         - bkref_ent->subexp_from);
+         context = re_string_context_at (&mctx->input, dest_str_idx - 1,
+                                         mctx->eflags);
+         dest_state = mctx->state_log[dest_str_idx];
+         prev_nelem = ((mctx->state_log[cur_str_idx] == NULL) ? 0
+                       : mctx->state_log[cur_str_idx]->nodes.nelem);
+         /* Add `new_dest_node' to state_log.  */
+         if (dest_state == NULL)
+           {
+             mctx->state_log[dest_str_idx]
+               = re_acquire_state_context (&err, dfa, new_dest_nodes,
+                                           context);
+             if (BE (mctx->state_log[dest_str_idx] == NULL
+                     && err != REG_NOERROR, 0))
+               goto free_return;
+           }
+         else
+           {
+             re_node_set dest_nodes;
+             err = re_node_set_init_union (&dest_nodes,
+                                           dest_state->entrance_nodes,
+                                           new_dest_nodes);
+             if (BE (err != REG_NOERROR, 0))
+               {
+                 re_node_set_free (&dest_nodes);
+                 goto free_return;
+               }
+             mctx->state_log[dest_str_idx]
+               = re_acquire_state_context (&err, dfa, &dest_nodes, context);
+             re_node_set_free (&dest_nodes);
+             if (BE (mctx->state_log[dest_str_idx] == NULL
+                     && err != REG_NOERROR, 0))
+               goto free_return;
+           }
+         /* We need to check recursively if the backreference can epsilon
+            transit.  */
+         if (subexp_len == 0
+             && mctx->state_log[cur_str_idx]->nodes.nelem > prev_nelem)
+           {
+             err = check_subexp_matching_top (mctx, new_dest_nodes,
+                                              cur_str_idx);
+             if (BE (err != REG_NOERROR, 0))
+               goto free_return;
+             err = transit_state_bkref (mctx, new_dest_nodes);
+             if (BE (err != REG_NOERROR, 0))
+               goto free_return;
+           }
+       }
+    }
+  err = REG_NOERROR;
+ free_return:
+  return err;
+}
+
+/* Enumerate all the candidates which the backreference BKREF_NODE can match
+   at BKREF_STR_IDX, and register them by match_ctx_add_entry().
+   Note that we might collect inappropriate candidates here.
+   However, the cost of checking them strictly here is too high, then we
+   delay these checking for prune_impossible_nodes().  */
+
+static reg_errcode_t
+internal_function __attribute_warn_unused_result__
+get_subexp (re_match_context_t *mctx, Idx bkref_node, Idx bkref_str_idx)
+{
+  const re_dfa_t *const dfa = mctx->dfa;
+  Idx subexp_num, sub_top_idx;
+  const char *buf = (const char *) re_string_get_buffer (&mctx->input);
+  /* Return if we have already checked BKREF_NODE at BKREF_STR_IDX.  */
+  Idx cache_idx = search_cur_bkref_entry (mctx, bkref_str_idx);
+  if (cache_idx != REG_MISSING)
+    {
+      const struct re_backref_cache_entry *entry
+       = mctx->bkref_ents + cache_idx;
+      do
+       if (entry->node == bkref_node)
+         return REG_NOERROR; /* We already checked it.  */
+      while (entry++->more);
+    }
+
+  subexp_num = dfa->nodes[bkref_node].opr.idx;
+
+  /* For each sub expression  */
+  for (sub_top_idx = 0; sub_top_idx < mctx->nsub_tops; ++sub_top_idx)
+    {
+      reg_errcode_t err;
+      re_sub_match_top_t *sub_top = mctx->sub_tops[sub_top_idx];
+      re_sub_match_last_t *sub_last;
+      Idx sub_last_idx, sl_str, bkref_str_off;
+
+      if (dfa->nodes[sub_top->node].opr.idx != subexp_num)
+       continue; /* It isn't related.  */
+
+      sl_str = sub_top->str_idx;
+      bkref_str_off = bkref_str_idx;
+      /* At first, check the last node of sub expressions we already
+        evaluated.  */
+      for (sub_last_idx = 0; sub_last_idx < sub_top->nlasts; ++sub_last_idx)
+       {
+         regoff_t sl_str_diff;
+         sub_last = sub_top->lasts[sub_last_idx];
+         sl_str_diff = sub_last->str_idx - sl_str;
+         /* The matched string by the sub expression match with the substring
+            at the back reference?  */
+         if (sl_str_diff > 0)
+           {
+             if (BE (bkref_str_off + sl_str_diff > mctx->input.valid_len, 0))
+               {
+                 /* Not enough chars for a successful match.  */
+                 if (bkref_str_off + sl_str_diff > mctx->input.len)
+                   break;
+
+                 err = clean_state_log_if_needed (mctx,
+                                                  bkref_str_off
+                                                  + sl_str_diff);
+                 if (BE (err != REG_NOERROR, 0))
+                   return err;
+                 buf = (const char *) re_string_get_buffer (&mctx->input);
+               }
+             if (memcmp (buf + bkref_str_off, buf + sl_str, sl_str_diff) != 0)
+               /* We don't need to search this sub expression any more.  */
+               break;
+           }
+         bkref_str_off += sl_str_diff;
+         sl_str += sl_str_diff;
+         err = get_subexp_sub (mctx, sub_top, sub_last, bkref_node,
+                               bkref_str_idx);
+
+         /* Reload buf, since the preceding call might have reallocated
+            the buffer.  */
+         buf = (const char *) re_string_get_buffer (&mctx->input);
+
+         if (err == REG_NOMATCH)
+           continue;
+         if (BE (err != REG_NOERROR, 0))
+           return err;
+       }
+
+      if (sub_last_idx < sub_top->nlasts)
+       continue;
+      if (sub_last_idx > 0)
+       ++sl_str;
+      /* Then, search for the other last nodes of the sub expression.  */
+      for (; sl_str <= bkref_str_idx; ++sl_str)
+       {
+         Idx cls_node;
+         regoff_t sl_str_off;
+         const re_node_set *nodes;
+         sl_str_off = sl_str - sub_top->str_idx;
+         /* The matched string by the sub expression match with the substring
+            at the back reference?  */
+         if (sl_str_off > 0)
+           {
+             if (BE (bkref_str_off >= mctx->input.valid_len, 0))
+               {
+                 /* If we are at the end of the input, we cannot match.  */
+                 if (bkref_str_off >= mctx->input.len)
+                   break;
+
+                 err = extend_buffers (mctx);
+                 if (BE (err != REG_NOERROR, 0))
+                   return err;
+
+                 buf = (const char *) re_string_get_buffer (&mctx->input);
+               }
+             if (buf [bkref_str_off++] != buf[sl_str - 1])
+               break; /* We don't need to search this sub expression
+                         any more.  */
+           }
+         if (mctx->state_log[sl_str] == NULL)
+           continue;
+         /* Does this state have a ')' of the sub expression?  */
+         nodes = &mctx->state_log[sl_str]->nodes;
+         cls_node = find_subexp_node (dfa, nodes, subexp_num,
+                                      OP_CLOSE_SUBEXP);
+         if (cls_node == REG_MISSING)
+           continue; /* No.  */
+         if (sub_top->path == NULL)
+           {
+             sub_top->path = calloc (sizeof (state_array_t),
+                                     sl_str - sub_top->str_idx + 1);
+             if (sub_top->path == NULL)
+               return REG_ESPACE;
+           }
+         /* Can the OP_OPEN_SUBEXP node arrive the OP_CLOSE_SUBEXP node
+            in the current context?  */
+         err = check_arrival (mctx, sub_top->path, sub_top->node,
+                              sub_top->str_idx, cls_node, sl_str,
+                              OP_CLOSE_SUBEXP);
+         if (err == REG_NOMATCH)
+             continue;
+         if (BE (err != REG_NOERROR, 0))
+             return err;
+         sub_last = match_ctx_add_sublast (sub_top, cls_node, sl_str);
+         if (BE (sub_last == NULL, 0))
+           return REG_ESPACE;
+         err = get_subexp_sub (mctx, sub_top, sub_last, bkref_node,
+                               bkref_str_idx);
+         if (err == REG_NOMATCH)
+           continue;
+       }
+    }
+  return REG_NOERROR;
+}
+
+/* Helper functions for get_subexp().  */
+
+/* Check SUB_LAST can arrive to the back reference BKREF_NODE at BKREF_STR.
+   If it can arrive, register the sub expression expressed with SUB_TOP
+   and SUB_LAST.  */
+
+static reg_errcode_t
+internal_function
+get_subexp_sub (re_match_context_t *mctx, const re_sub_match_top_t *sub_top,
+               re_sub_match_last_t *sub_last, Idx bkref_node, Idx bkref_str)
+{
+  reg_errcode_t err;
+  Idx to_idx;
+  /* Can the subexpression arrive the back reference?  */
+  err = check_arrival (mctx, &sub_last->path, sub_last->node,
+                      sub_last->str_idx, bkref_node, bkref_str,
+                      OP_OPEN_SUBEXP);
+  if (err != REG_NOERROR)
+    return err;
+  err = match_ctx_add_entry (mctx, bkref_node, bkref_str, sub_top->str_idx,
+                            sub_last->str_idx);
+  if (BE (err != REG_NOERROR, 0))
+    return err;
+  to_idx = bkref_str + sub_last->str_idx - sub_top->str_idx;
+  return clean_state_log_if_needed (mctx, to_idx);
+}
+
+/* Find the first node which is '(' or ')' and whose index is SUBEXP_IDX.
+   Search '(' if FL_OPEN, or search ')' otherwise.
+   TODO: This function isn't efficient...
+        Because there might be more than one nodes whose types are
+        OP_OPEN_SUBEXP and whose index is SUBEXP_IDX, we must check all
+        nodes.
+        E.g. RE: (a){2}  */
+
+static Idx
+internal_function
+find_subexp_node (const re_dfa_t *dfa, const re_node_set *nodes,
+                 Idx subexp_idx, int type)
+{
+  Idx cls_idx;
+  for (cls_idx = 0; cls_idx < nodes->nelem; ++cls_idx)
+    {
+      Idx cls_node = nodes->elems[cls_idx];
+      const re_token_t *node = dfa->nodes + cls_node;
+      if (node->type == type
+         && node->opr.idx == subexp_idx)
+       return cls_node;
+    }
+  return REG_MISSING;
+}
+
+/* Check whether the node TOP_NODE at TOP_STR can arrive to the node
+   LAST_NODE at LAST_STR.  We record the path onto PATH since it will be
+   heavily reused.
+   Return REG_NOERROR if it can arrive, or REG_NOMATCH otherwise.  */
+
+static reg_errcode_t
+internal_function __attribute_warn_unused_result__
+check_arrival (re_match_context_t *mctx, state_array_t *path, Idx top_node,
+              Idx top_str, Idx last_node, Idx last_str, int type)
+{
+  const re_dfa_t *const dfa = mctx->dfa;
+  reg_errcode_t err = REG_NOERROR;
+  Idx subexp_num, backup_cur_idx, str_idx, null_cnt;
+  re_dfastate_t *cur_state = NULL;
+  re_node_set *cur_nodes, next_nodes;
+  re_dfastate_t **backup_state_log;
+  unsigned int context;
+
+  subexp_num = dfa->nodes[top_node].opr.idx;
+  /* Extend the buffer if we need.  */
+  if (BE (path->alloc < last_str + mctx->max_mb_elem_len + 1, 0))
+    {
+      re_dfastate_t **new_array;
+      Idx old_alloc = path->alloc;
+      Idx new_alloc = old_alloc + last_str + mctx->max_mb_elem_len + 1;
+      if (BE (new_alloc < old_alloc, 0)
+         || BE (SIZE_MAX / sizeof (re_dfastate_t *) < new_alloc, 0))
+       return REG_ESPACE;
+      new_array = re_realloc (path->array, re_dfastate_t *, new_alloc);
+      if (BE (new_array == NULL, 0))
+       return REG_ESPACE;
+      path->array = new_array;
+      path->alloc = new_alloc;
+      memset (new_array + old_alloc, '\0',
+             sizeof (re_dfastate_t *) * (path->alloc - old_alloc));
+    }
+
+  str_idx = path->next_idx ? path->next_idx : top_str;
+
+  /* Temporary modify MCTX.  */
+  backup_state_log = mctx->state_log;
+  backup_cur_idx = mctx->input.cur_idx;
+  mctx->state_log = path->array;
+  mctx->input.cur_idx = str_idx;
+
+  /* Setup initial node set.  */
+  context = re_string_context_at (&mctx->input, str_idx - 1, mctx->eflags);
+  if (str_idx == top_str)
+    {
+      err = re_node_set_init_1 (&next_nodes, top_node);
+      if (BE (err != REG_NOERROR, 0))
+       return err;
+      err = check_arrival_expand_ecl (dfa, &next_nodes, subexp_num, type);
+      if (BE (err != REG_NOERROR, 0))
+       {
+         re_node_set_free (&next_nodes);
+         return err;
+       }
+    }
+  else
+    {
+      cur_state = mctx->state_log[str_idx];
+      if (cur_state && cur_state->has_backref)
+       {
+         err = re_node_set_init_copy (&next_nodes, &cur_state->nodes);
+         if (BE (err != REG_NOERROR, 0))
+           return err;
+       }
+      else
+       re_node_set_init_empty (&next_nodes);
+    }
+  if (str_idx == top_str || (cur_state && cur_state->has_backref))
+    {
+      if (next_nodes.nelem)
+       {
+         err = expand_bkref_cache (mctx, &next_nodes, str_idx,
+                                   subexp_num, type);
+         if (BE (err != REG_NOERROR, 0))
+           {
+             re_node_set_free (&next_nodes);
+             return err;
+           }
+       }
+      cur_state = re_acquire_state_context (&err, dfa, &next_nodes, context);
+      if (BE (cur_state == NULL && err != REG_NOERROR, 0))
+       {
+         re_node_set_free (&next_nodes);
+         return err;
+       }
+      mctx->state_log[str_idx] = cur_state;
+    }
+
+  for (null_cnt = 0; str_idx < last_str && null_cnt <= mctx->max_mb_elem_len;)
+    {
+      re_node_set_empty (&next_nodes);
+      if (mctx->state_log[str_idx + 1])
+       {
+         err = re_node_set_merge (&next_nodes,
+                                  &mctx->state_log[str_idx + 1]->nodes);
+         if (BE (err != REG_NOERROR, 0))
+           {
+             re_node_set_free (&next_nodes);
+             return err;
+           }
+       }
+      if (cur_state)
+       {
+         err = check_arrival_add_next_nodes (mctx, str_idx,
+                                             &cur_state->non_eps_nodes,
+                                             &next_nodes);
+         if (BE (err != REG_NOERROR, 0))
+           {
+             re_node_set_free (&next_nodes);
+             return err;
+           }
+       }
+      ++str_idx;
+      if (next_nodes.nelem)
+       {
+         err = check_arrival_expand_ecl (dfa, &next_nodes, subexp_num, type);
+         if (BE (err != REG_NOERROR, 0))
+           {
+             re_node_set_free (&next_nodes);
+             return err;
+           }
+         err = expand_bkref_cache (mctx, &next_nodes, str_idx,
+                                   subexp_num, type);
+         if (BE (err != REG_NOERROR, 0))
+           {
+             re_node_set_free (&next_nodes);
+             return err;
+           }
+       }
+      context = re_string_context_at (&mctx->input, str_idx - 1, mctx->eflags);
+      cur_state = re_acquire_state_context (&err, dfa, &next_nodes, context);
+      if (BE (cur_state == NULL && err != REG_NOERROR, 0))
+       {
+         re_node_set_free (&next_nodes);
+         return err;
+       }
+      mctx->state_log[str_idx] = cur_state;
+      null_cnt = cur_state == NULL ? null_cnt + 1 : 0;
+    }
+  re_node_set_free (&next_nodes);
+  cur_nodes = (mctx->state_log[last_str] == NULL ? NULL
+              : &mctx->state_log[last_str]->nodes);
+  path->next_idx = str_idx;
+
+  /* Fix MCTX.  */
+  mctx->state_log = backup_state_log;
+  mctx->input.cur_idx = backup_cur_idx;
+
+  /* Then check the current node set has the node LAST_NODE.  */
+  if (cur_nodes != NULL && re_node_set_contains (cur_nodes, last_node))
+    return REG_NOERROR;
+
+  return REG_NOMATCH;
+}
+
+/* Helper functions for check_arrival.  */
+
+/* Calculate the destination nodes of CUR_NODES at STR_IDX, and append them
+   to NEXT_NODES.
+   TODO: This function is similar to the functions transit_state*(),
+        however this function has many additional works.
+        Can't we unify them?  */
+
+static reg_errcode_t
+internal_function __attribute_warn_unused_result__
+check_arrival_add_next_nodes (re_match_context_t *mctx, Idx str_idx,
+                             re_node_set *cur_nodes, re_node_set *next_nodes)
+{
+  const re_dfa_t *const dfa = mctx->dfa;
+  bool ok;
+  Idx cur_idx;
+#ifdef RE_ENABLE_I18N
+  reg_errcode_t err = REG_NOERROR;
+#endif
+  re_node_set union_set;
+  re_node_set_init_empty (&union_set);
+  for (cur_idx = 0; cur_idx < cur_nodes->nelem; ++cur_idx)
+    {
+      int naccepted = 0;
+      Idx cur_node = cur_nodes->elems[cur_idx];
+#ifdef DEBUG
+      re_token_type_t type = dfa->nodes[cur_node].type;
+      assert (!IS_EPSILON_NODE (type));
+#endif
+#ifdef RE_ENABLE_I18N
+      /* If the node may accept `multi byte'.  */
+      if (dfa->nodes[cur_node].accept_mb)
+       {
+         naccepted = check_node_accept_bytes (dfa, cur_node, &mctx->input,
+                                              str_idx);
+         if (naccepted > 1)
+           {
+             re_dfastate_t *dest_state;
+             Idx next_node = dfa->nexts[cur_node];
+             Idx next_idx = str_idx + naccepted;
+             dest_state = mctx->state_log[next_idx];
+             re_node_set_empty (&union_set);
+             if (dest_state)
+               {
+                 err = re_node_set_merge (&union_set, &dest_state->nodes);
+                 if (BE (err != REG_NOERROR, 0))
+                   {
+                     re_node_set_free (&union_set);
+                     return err;
+                   }
+               }
+             ok = re_node_set_insert (&union_set, next_node);
+             if (BE (! ok, 0))
+               {
+                 re_node_set_free (&union_set);
+                 return REG_ESPACE;
+               }
+             mctx->state_log[next_idx] = re_acquire_state (&err, dfa,
+                                                           &union_set);
+             if (BE (mctx->state_log[next_idx] == NULL
+                     && err != REG_NOERROR, 0))
+               {
+                 re_node_set_free (&union_set);
+                 return err;
+               }
+           }
+       }
+#endif /* RE_ENABLE_I18N */
+      if (naccepted
+         || check_node_accept (mctx, dfa->nodes + cur_node, str_idx))
+       {
+         ok = re_node_set_insert (next_nodes, dfa->nexts[cur_node]);
+         if (BE (! ok, 0))
+           {
+             re_node_set_free (&union_set);
+             return REG_ESPACE;
+           }
+       }
+    }
+  re_node_set_free (&union_set);
+  return REG_NOERROR;
+}
+
+/* For all the nodes in CUR_NODES, add the epsilon closures of them to
+   CUR_NODES, however exclude the nodes which are:
+    - inside the sub expression whose number is EX_SUBEXP, if FL_OPEN.
+    - out of the sub expression whose number is EX_SUBEXP, if !FL_OPEN.
+*/
+
+static reg_errcode_t
+internal_function
+check_arrival_expand_ecl (const re_dfa_t *dfa, re_node_set *cur_nodes,
+                         Idx ex_subexp, int type)
+{
+  reg_errcode_t err;
+  Idx idx, outside_node;
+  re_node_set new_nodes;
+#ifdef DEBUG
+  assert (cur_nodes->nelem);
+#endif
+  err = re_node_set_alloc (&new_nodes, cur_nodes->nelem);
+  if (BE (err != REG_NOERROR, 0))
+    return err;
+  /* Create a new node set NEW_NODES with the nodes which are epsilon
+     closures of the node in CUR_NODES.  */
+
+  for (idx = 0; idx < cur_nodes->nelem; ++idx)
+    {
+      Idx cur_node = cur_nodes->elems[idx];
+      const re_node_set *eclosure = dfa->eclosures + cur_node;
+      outside_node = find_subexp_node (dfa, eclosure, ex_subexp, type);
+      if (outside_node == REG_MISSING)
+       {
+         /* There are no problematic nodes, just merge them.  */
+         err = re_node_set_merge (&new_nodes, eclosure);
+         if (BE (err != REG_NOERROR, 0))
+           {
+             re_node_set_free (&new_nodes);
+             return err;
+           }
+       }
+      else
+       {
+         /* There are problematic nodes, re-calculate incrementally.  */
+         err = check_arrival_expand_ecl_sub (dfa, &new_nodes, cur_node,
+                                             ex_subexp, type);
+         if (BE (err != REG_NOERROR, 0))
+           {
+             re_node_set_free (&new_nodes);
+             return err;
+           }
+       }
+    }
+  re_node_set_free (cur_nodes);
+  *cur_nodes = new_nodes;
+  return REG_NOERROR;
+}
+
+/* Helper function for check_arrival_expand_ecl.
+   Check incrementally the epsilon closure of TARGET, and if it isn't
+   problematic append it to DST_NODES.  */
+
+static reg_errcode_t
+internal_function __attribute_warn_unused_result__
+check_arrival_expand_ecl_sub (const re_dfa_t *dfa, re_node_set *dst_nodes,
+                             Idx target, Idx ex_subexp, int type)
+{
+  Idx cur_node;
+  for (cur_node = target; !re_node_set_contains (dst_nodes, cur_node);)
+    {
+      bool ok;
+
+      if (dfa->nodes[cur_node].type == type
+         && dfa->nodes[cur_node].opr.idx == ex_subexp)
+       {
+         if (type == OP_CLOSE_SUBEXP)
+           {
+             ok = re_node_set_insert (dst_nodes, cur_node);
+             if (BE (! ok, 0))
+               return REG_ESPACE;
+           }
+         break;
+       }
+      ok = re_node_set_insert (dst_nodes, cur_node);
+      if (BE (! ok, 0))
+       return REG_ESPACE;
+      if (dfa->edests[cur_node].nelem == 0)
+       break;
+      if (dfa->edests[cur_node].nelem == 2)
+       {
+         reg_errcode_t err;
+         err = check_arrival_expand_ecl_sub (dfa, dst_nodes,
+                                             dfa->edests[cur_node].elems[1],
+                                             ex_subexp, type);
+         if (BE (err != REG_NOERROR, 0))
+           return err;
+       }
+      cur_node = dfa->edests[cur_node].elems[0];
+    }
+  return REG_NOERROR;
+}
+
+
+/* For all the back references in the current state, calculate the
+   destination of the back references by the appropriate entry
+   in MCTX->BKREF_ENTS.  */
+
+static reg_errcode_t
+internal_function __attribute_warn_unused_result__
+expand_bkref_cache (re_match_context_t *mctx, re_node_set *cur_nodes,
+                   Idx cur_str, Idx subexp_num, int type)
+{
+  const re_dfa_t *const dfa = mctx->dfa;
+  reg_errcode_t err;
+  Idx cache_idx_start = search_cur_bkref_entry (mctx, cur_str);
+  struct re_backref_cache_entry *ent;
+
+  if (cache_idx_start == REG_MISSING)
+    return REG_NOERROR;
+
+ restart:
+  ent = mctx->bkref_ents + cache_idx_start;
+  do
+    {
+      Idx to_idx, next_node;
+
+      /* Is this entry ENT is appropriate?  */
+      if (!re_node_set_contains (cur_nodes, ent->node))
+       continue; /* No.  */
+
+      to_idx = cur_str + ent->subexp_to - ent->subexp_from;
+      /* Calculate the destination of the back reference, and append it
+        to MCTX->STATE_LOG.  */
+      if (to_idx == cur_str)
+       {
+         /* The backreference did epsilon transit, we must re-check all the
+            node in the current state.  */
+         re_node_set new_dests;
+         reg_errcode_t err2, err3;
+         next_node = dfa->edests[ent->node].elems[0];
+         if (re_node_set_contains (cur_nodes, next_node))
+           continue;
+         err = re_node_set_init_1 (&new_dests, next_node);
+         err2 = check_arrival_expand_ecl (dfa, &new_dests, subexp_num, type);
+         err3 = re_node_set_merge (cur_nodes, &new_dests);
+         re_node_set_free (&new_dests);
+         if (BE (err != REG_NOERROR || err2 != REG_NOERROR
+                 || err3 != REG_NOERROR, 0))
+           {
+             err = (err != REG_NOERROR ? err
+                    : (err2 != REG_NOERROR ? err2 : err3));
+             return err;
+           }
+         /* TODO: It is still inefficient...  */
+         goto restart;
+       }
+      else
+       {
+         re_node_set union_set;
+         next_node = dfa->nexts[ent->node];
+         if (mctx->state_log[to_idx])
+           {
+             bool ok;
+             if (re_node_set_contains (&mctx->state_log[to_idx]->nodes,
+                                       next_node))
+               continue;
+             err = re_node_set_init_copy (&union_set,
+                                          &mctx->state_log[to_idx]->nodes);
+             ok = re_node_set_insert (&union_set, next_node);
+             if (BE (err != REG_NOERROR || ! ok, 0))
+               {
+                 re_node_set_free (&union_set);
+                 err = err != REG_NOERROR ? err : REG_ESPACE;
+                 return err;
+               }
+           }
+         else
+           {
+             err = re_node_set_init_1 (&union_set, next_node);
+             if (BE (err != REG_NOERROR, 0))
+               return err;
+           }
+         mctx->state_log[to_idx] = re_acquire_state (&err, dfa, &union_set);
+         re_node_set_free (&union_set);
+         if (BE (mctx->state_log[to_idx] == NULL
+                 && err != REG_NOERROR, 0))
+           return err;
+       }
+    }
+  while (ent++->more);
+  return REG_NOERROR;
+}
+
+/* Build transition table for the state.
+   Return true if successful.  */
+
+static bool
+internal_function
+build_trtable (const re_dfa_t *dfa, re_dfastate_t *state)
+{
+  reg_errcode_t err;
+  Idx i, j;
+  int ch;
+  bool need_word_trtable = false;
+  bitset_word_t elem, mask;
+  bool dests_node_malloced = false;
+  bool dest_states_malloced = false;
+  Idx ndests; /* Number of the destination states from `state'.  */
+  re_dfastate_t **trtable;
+  re_dfastate_t **dest_states = NULL, **dest_states_word, **dest_states_nl;
+  re_node_set follows, *dests_node;
+  bitset_t *dests_ch;
+  bitset_t acceptable;
+
+  struct dests_alloc
+  {
+    re_node_set dests_node[SBC_MAX];
+    bitset_t dests_ch[SBC_MAX];
+  } *dests_alloc;
+
+  /* We build DFA states which corresponds to the destination nodes
+     from `state'.  `dests_node[i]' represents the nodes which i-th
+     destination state contains, and `dests_ch[i]' represents the
+     characters which i-th destination state accepts.  */
+  if (__libc_use_alloca (sizeof (struct dests_alloc)))
+    dests_alloc = (struct dests_alloc *) alloca (sizeof (struct dests_alloc));
+  else
+    {
+      dests_alloc = re_malloc (struct dests_alloc, 1);
+      if (BE (dests_alloc == NULL, 0))
+       return false;
+      dests_node_malloced = true;
+    }
+  dests_node = dests_alloc->dests_node;
+  dests_ch = dests_alloc->dests_ch;
+
+  /* Initialize transiton table.  */
+  state->word_trtable = state->trtable = NULL;
+
+  /* At first, group all nodes belonging to `state' into several
+     destinations.  */
+  ndests = group_nodes_into_DFAstates (dfa, state, dests_node, dests_ch);
+  if (BE (! REG_VALID_NONZERO_INDEX (ndests), 0))
+    {
+      if (dests_node_malloced)
+       free (dests_alloc);
+      if (ndests == 0)
+       {
+         state->trtable = (re_dfastate_t **)
+           calloc (sizeof (re_dfastate_t *), SBC_MAX);
+          if (BE (state->trtable == NULL, 0))
+            return false;
+         return true;
+       }
+      return false;
+    }
+
+  err = re_node_set_alloc (&follows, ndests + 1);
+  if (BE (err != REG_NOERROR, 0))
+    goto out_free;
+
+  /* Avoid arithmetic overflow in size calculation.  */
+  if (BE ((((SIZE_MAX - (sizeof (re_node_set) + sizeof (bitset_t)) * SBC_MAX)
+           / (3 * sizeof (re_dfastate_t *)))
+          < ndests),
+         0))
+    goto out_free;
+
+  if (__libc_use_alloca ((sizeof (re_node_set) + sizeof (bitset_t)) * SBC_MAX
+                        + ndests * 3 * sizeof (re_dfastate_t *)))
+    dest_states = (re_dfastate_t **)
+      alloca (ndests * 3 * sizeof (re_dfastate_t *));
+  else
+    {
+      dest_states = (re_dfastate_t **)
+       malloc (ndests * 3 * sizeof (re_dfastate_t *));
+      if (BE (dest_states == NULL, 0))
+       {
+out_free:
+         if (dest_states_malloced)
+           free (dest_states);
+         re_node_set_free (&follows);
+         for (i = 0; i < ndests; ++i)
+           re_node_set_free (dests_node + i);
+         if (dests_node_malloced)
+           free (dests_alloc);
+         return false;
+       }
+      dest_states_malloced = true;
+    }
+  dest_states_word = dest_states + ndests;
+  dest_states_nl = dest_states_word + ndests;
+  bitset_empty (acceptable);
+
+  /* Then build the states for all destinations.  */
+  for (i = 0; i < ndests; ++i)
+    {
+      Idx next_node;
+      re_node_set_empty (&follows);
+      /* Merge the follows of this destination states.  */
+      for (j = 0; j < dests_node[i].nelem; ++j)
+       {
+         next_node = dfa->nexts[dests_node[i].elems[j]];
+         if (next_node != REG_MISSING)
+           {
+             err = re_node_set_merge (&follows, dfa->eclosures + next_node);
+             if (BE (err != REG_NOERROR, 0))
+               goto out_free;
+           }
+       }
+      dest_states[i] = re_acquire_state_context (&err, dfa, &follows, 0);
+      if (BE (dest_states[i] == NULL && err != REG_NOERROR, 0))
+       goto out_free;
+      /* If the new state has context constraint,
+        build appropriate states for these contexts.  */
+      if (dest_states[i]->has_constraint)
+       {
+         dest_states_word[i] = re_acquire_state_context (&err, dfa, &follows,
+                                                         CONTEXT_WORD);
+         if (BE (dest_states_word[i] == NULL && err != REG_NOERROR, 0))
+           goto out_free;
+
+         if (dest_states[i] != dest_states_word[i] && dfa->mb_cur_max > 1)
+           need_word_trtable = true;
+
+         dest_states_nl[i] = re_acquire_state_context (&err, dfa, &follows,
+                                                       CONTEXT_NEWLINE);
+         if (BE (dest_states_nl[i] == NULL && err != REG_NOERROR, 0))
+           goto out_free;
+       }
+      else
+       {
+         dest_states_word[i] = dest_states[i];
+         dest_states_nl[i] = dest_states[i];
+       }
+      bitset_merge (acceptable, dests_ch[i]);
+    }
+
+  if (!BE (need_word_trtable, 0))
+    {
+      /* We don't care about whether the following character is a word
+        character, or we are in a single-byte character set so we can
+        discern by looking at the character code: allocate a
+        256-entry transition table.  */
+      trtable = state->trtable =
+       (re_dfastate_t **) calloc (sizeof (re_dfastate_t *), SBC_MAX);
+      if (BE (trtable == NULL, 0))
+       goto out_free;
+
+      /* For all characters ch...:  */
+      for (i = 0; i < BITSET_WORDS; ++i)
+       for (ch = i * BITSET_WORD_BITS, elem = acceptable[i], mask = 1;
+            elem;
+            mask <<= 1, elem >>= 1, ++ch)
+         if (BE (elem & 1, 0))
+           {
+             /* There must be exactly one destination which accepts
+                character ch.  See group_nodes_into_DFAstates.  */
+             for (j = 0; (dests_ch[j][i] & mask) == 0; ++j)
+               ;
+
+             /* j-th destination accepts the word character ch.  */
+             if (dfa->word_char[i] & mask)
+               trtable[ch] = dest_states_word[j];
+             else
+               trtable[ch] = dest_states[j];
+           }
+    }
+  else
+    {
+      /* We care about whether the following character is a word
+        character, and we are in a multi-byte character set: discern
+        by looking at the character code: build two 256-entry
+        transition tables, one starting at trtable[0] and one
+        starting at trtable[SBC_MAX].  */
+      trtable = state->word_trtable =
+       (re_dfastate_t **) calloc (sizeof (re_dfastate_t *), 2 * SBC_MAX);
+      if (BE (trtable == NULL, 0))
+       goto out_free;
+
+      /* For all characters ch...:  */
+      for (i = 0; i < BITSET_WORDS; ++i)
+       for (ch = i * BITSET_WORD_BITS, elem = acceptable[i], mask = 1;
+            elem;
+            mask <<= 1, elem >>= 1, ++ch)
+         if (BE (elem & 1, 0))
+           {
+             /* There must be exactly one destination which accepts
+                character ch.  See group_nodes_into_DFAstates.  */
+             for (j = 0; (dests_ch[j][i] & mask) == 0; ++j)
+               ;
+
+             /* j-th destination accepts the word character ch.  */
+             trtable[ch] = dest_states[j];
+             trtable[ch + SBC_MAX] = dest_states_word[j];
+           }
+    }
+
+  /* new line */
+  if (bitset_contain (acceptable, NEWLINE_CHAR))
+    {
+      /* The current state accepts newline character.  */
+      for (j = 0; j < ndests; ++j)
+       if (bitset_contain (dests_ch[j], NEWLINE_CHAR))
+         {
+           /* k-th destination accepts newline character.  */
+           trtable[NEWLINE_CHAR] = dest_states_nl[j];
+           if (need_word_trtable)
+             trtable[NEWLINE_CHAR + SBC_MAX] = dest_states_nl[j];
+           /* There must be only one destination which accepts
+              newline.  See group_nodes_into_DFAstates.  */
+           break;
+         }
+    }
+
+  if (dest_states_malloced)
+    free (dest_states);
+
+  re_node_set_free (&follows);
+  for (i = 0; i < ndests; ++i)
+    re_node_set_free (dests_node + i);
+
+  if (dests_node_malloced)
+    free (dests_alloc);
+
+  return true;
+}
+
+/* Group all nodes belonging to STATE into several destinations.
+   Then for all destinations, set the nodes belonging to the destination
+   to DESTS_NODE[i] and set the characters accepted by the destination
+   to DEST_CH[i].  This function return the number of destinations.  */
+
+static Idx
+internal_function
+group_nodes_into_DFAstates (const re_dfa_t *dfa, const re_dfastate_t *state,
+                           re_node_set *dests_node, bitset_t *dests_ch)
+{
+  reg_errcode_t err;
+  bool ok;
+  Idx i, j, k;
+  Idx ndests; /* Number of the destinations from `state'.  */
+  bitset_t accepts; /* Characters a node can accept.  */
+  const re_node_set *cur_nodes = &state->nodes;
+  bitset_empty (accepts);
+  ndests = 0;
+
+  /* For all the nodes belonging to `state',  */
+  for (i = 0; i < cur_nodes->nelem; ++i)
+    {
+      re_token_t *node = &dfa->nodes[cur_nodes->elems[i]];
+      re_token_type_t type = node->type;
+      unsigned int constraint = node->constraint;
+
+      /* Enumerate all single byte character this node can accept.  */
+      if (type == CHARACTER)
+       bitset_set (accepts, node->opr.c);
+      else if (type == SIMPLE_BRACKET)
+       {
+         bitset_merge (accepts, node->opr.sbcset);
+       }
+      else if (type == OP_PERIOD)
+       {
+#ifdef RE_ENABLE_I18N
+         if (dfa->mb_cur_max > 1)
+           bitset_merge (accepts, dfa->sb_char);
+         else
+#endif
+           bitset_set_all (accepts);
+         if (!(dfa->syntax & RE_DOT_NEWLINE))
+           bitset_clear (accepts, '\n');
+         if (dfa->syntax & RE_DOT_NOT_NULL)
+           bitset_clear (accepts, '\0');
+       }
+#ifdef RE_ENABLE_I18N
+      else if (type == OP_UTF8_PERIOD)
+       {
+         if (ASCII_CHARS % BITSET_WORD_BITS == 0)
+           memset (accepts, -1, ASCII_CHARS / CHAR_BIT);
+         else
+           bitset_merge (accepts, utf8_sb_map);
+         if (!(dfa->syntax & RE_DOT_NEWLINE))
+           bitset_clear (accepts, '\n');
+         if (dfa->syntax & RE_DOT_NOT_NULL)
+           bitset_clear (accepts, '\0');
+       }
+#endif
+      else
+       continue;
+
+      /* Check the `accepts' and sift the characters which are not
+        match it the context.  */
+      if (constraint)
+       {
+         if (constraint & NEXT_NEWLINE_CONSTRAINT)
+           {
+             bool accepts_newline = bitset_contain (accepts, NEWLINE_CHAR);
+             bitset_empty (accepts);
+             if (accepts_newline)
+               bitset_set (accepts, NEWLINE_CHAR);
+             else
+               continue;
+           }
+         if (constraint & NEXT_ENDBUF_CONSTRAINT)
+           {
+             bitset_empty (accepts);
+             continue;
+           }
+
+         if (constraint & NEXT_WORD_CONSTRAINT)
+           {
+             bitset_word_t any_set = 0;
+             if (type == CHARACTER && !node->word_char)
+               {
+                 bitset_empty (accepts);
+                 continue;
+               }
+#ifdef RE_ENABLE_I18N
+             if (dfa->mb_cur_max > 1)
+               for (j = 0; j < BITSET_WORDS; ++j)
+                 any_set |= (accepts[j] &= (dfa->word_char[j] | ~dfa->sb_char[j]));
+             else
+#endif
+               for (j = 0; j < BITSET_WORDS; ++j)
+                 any_set |= (accepts[j] &= dfa->word_char[j]);
+             if (!any_set)
+               continue;
+           }
+         if (constraint & NEXT_NOTWORD_CONSTRAINT)
+           {
+             bitset_word_t any_set = 0;
+             if (type == CHARACTER && node->word_char)
+               {
+                 bitset_empty (accepts);
+                 continue;
+               }
+#ifdef RE_ENABLE_I18N
+             if (dfa->mb_cur_max > 1)
+               for (j = 0; j < BITSET_WORDS; ++j)
+                 any_set |= (accepts[j] &= ~(dfa->word_char[j] & dfa->sb_char[j]));
+             else
+#endif
+               for (j = 0; j < BITSET_WORDS; ++j)
+                 any_set |= (accepts[j] &= ~dfa->word_char[j]);
+             if (!any_set)
+               continue;
+           }
+       }
+
+      /* Then divide `accepts' into DFA states, or create a new
+        state.  Above, we make sure that accepts is not empty.  */
+      for (j = 0; j < ndests; ++j)
+       {
+         bitset_t intersec; /* Intersection sets, see below.  */
+         bitset_t remains;
+         /* Flags, see below.  */
+         bitset_word_t has_intersec, not_subset, not_consumed;
+
+         /* Optimization, skip if this state doesn't accept the character.  */
+         if (type == CHARACTER && !bitset_contain (dests_ch[j], node->opr.c))
+           continue;
+
+         /* Enumerate the intersection set of this state and `accepts'.  */
+         has_intersec = 0;
+         for (k = 0; k < BITSET_WORDS; ++k)
+           has_intersec |= intersec[k] = accepts[k] & dests_ch[j][k];
+         /* And skip if the intersection set is empty.  */
+         if (!has_intersec)
+           continue;
+
+         /* Then check if this state is a subset of `accepts'.  */
+         not_subset = not_consumed = 0;
+         for (k = 0; k < BITSET_WORDS; ++k)
+           {
+             not_subset |= remains[k] = ~accepts[k] & dests_ch[j][k];
+             not_consumed |= accepts[k] = accepts[k] & ~dests_ch[j][k];
+           }
+
+         /* If this state isn't a subset of `accepts', create a
+            new group state, which has the `remains'. */
+         if (not_subset)
+           {
+             bitset_copy (dests_ch[ndests], remains);
+             bitset_copy (dests_ch[j], intersec);
+             err = re_node_set_init_copy (dests_node + ndests, &dests_node[j]);
+             if (BE (err != REG_NOERROR, 0))
+               goto error_return;
+             ++ndests;
+           }
+
+         /* Put the position in the current group. */
+         ok = re_node_set_insert (&dests_node[j], cur_nodes->elems[i]);
+         if (BE (! ok, 0))
+           goto error_return;
+
+         /* If all characters are consumed, go to next node. */
+         if (!not_consumed)
+           break;
+       }
+      /* Some characters remain, create a new group. */
+      if (j == ndests)
+       {
+         bitset_copy (dests_ch[ndests], accepts);
+         err = re_node_set_init_1 (dests_node + ndests, cur_nodes->elems[i]);
+         if (BE (err != REG_NOERROR, 0))
+           goto error_return;
+         ++ndests;
+         bitset_empty (accepts);
+       }
+    }
+  return ndests;
+ error_return:
+  for (j = 0; j < ndests; ++j)
+    re_node_set_free (dests_node + j);
+  return REG_MISSING;
+}
+
+#ifdef RE_ENABLE_I18N
+/* Check how many bytes the node `dfa->nodes[node_idx]' accepts.
+   Return the number of the bytes the node accepts.
+   STR_IDX is the current index of the input string.
+
+   This function handles the nodes which can accept one character, or
+   one collating element like '.', '[a-z]', opposite to the other nodes
+   can only accept one byte.  */
+
+static int
+internal_function
+check_node_accept_bytes (const re_dfa_t *dfa, Idx node_idx,
+                        const re_string_t *input, Idx str_idx)
+{
+  const re_token_t *node = dfa->nodes + node_idx;
+  int char_len, elem_len;
+  Idx i;
+
+  if (BE (node->type == OP_UTF8_PERIOD, 0))
+    {
+      unsigned char c = re_string_byte_at (input, str_idx), d;
+      if (BE (c < 0xc2, 1))
+       return 0;
+
+      if (str_idx + 2 > input->len)
+       return 0;
+
+      d = re_string_byte_at (input, str_idx + 1);
+      if (c < 0xe0)
+       return (d < 0x80 || d > 0xbf) ? 0 : 2;
+      else if (c < 0xf0)
+       {
+         char_len = 3;
+         if (c == 0xe0 && d < 0xa0)
+           return 0;
+       }
+      else if (c < 0xf8)
+       {
+         char_len = 4;
+         if (c == 0xf0 && d < 0x90)
+           return 0;
+       }
+      else if (c < 0xfc)
+       {
+         char_len = 5;
+         if (c == 0xf8 && d < 0x88)
+           return 0;
+       }
+      else if (c < 0xfe)
+       {
+         char_len = 6;
+         if (c == 0xfc && d < 0x84)
+           return 0;
+       }
+      else
+       return 0;
+
+      if (str_idx + char_len > input->len)
+       return 0;
+
+      for (i = 1; i < char_len; ++i)
+       {
+         d = re_string_byte_at (input, str_idx + i);
+         if (d < 0x80 || d > 0xbf)
+           return 0;
+       }
+      return char_len;
+    }
+
+  char_len = re_string_char_size_at (input, str_idx);
+  if (node->type == OP_PERIOD)
+    {
+      if (char_len <= 1)
+       return 0;
+      /* FIXME: I don't think this if is needed, as both '\n'
+        and '\0' are char_len == 1.  */
+      /* '.' accepts any one character except the following two cases.  */
+      if ((!(dfa->syntax & RE_DOT_NEWLINE) &&
+          re_string_byte_at (input, str_idx) == '\n') ||
+         ((dfa->syntax & RE_DOT_NOT_NULL) &&
+          re_string_byte_at (input, str_idx) == '\0'))
+       return 0;
+      return char_len;
+    }
+
+  elem_len = re_string_elem_size_at (input, str_idx);
+  if ((elem_len <= 1 && char_len <= 1) || char_len == 0)
+    return 0;
+
+  if (node->type == COMPLEX_BRACKET)
+    {
+      const re_charset_t *cset = node->opr.mbcset;
+# ifdef _LIBC
+      const unsigned char *pin
+       = ((const unsigned char *) re_string_get_buffer (input) + str_idx);
+      Idx j;
+      uint32_t nrules;
+# endif /* _LIBC */
+      int match_len = 0;
+      wchar_t wc = ((cset->nranges || cset->nchar_classes || cset->nmbchars)
+                   ? re_string_wchar_at (input, str_idx) : 0);
+
+      /* match with multibyte character?  */
+      for (i = 0; i < cset->nmbchars; ++i)
+       if (wc == cset->mbchars[i])
+         {
+           match_len = char_len;
+           goto check_node_accept_bytes_match;
+         }
+      /* match with character_class?  */
+      for (i = 0; i < cset->nchar_classes; ++i)
+       {
+         wctype_t wt = cset->char_classes[i];
+         if (__iswctype (wc, wt))
+           {
+             match_len = char_len;
+             goto check_node_accept_bytes_match;
+           }
+       }
+
+# ifdef _LIBC
+      nrules = _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES);
+      if (nrules != 0)
+       {
+         unsigned int in_collseq = 0;
+         const int32_t *table, *indirect;
+         const unsigned char *weights, *extra;
+         const char *collseqwc;
+         int32_t idx;
+         /* This #include defines a local function!  */
+#  include <locale/weight.h>
+
+         /* match with collating_symbol?  */
+         if (cset->ncoll_syms)
+           extra = (const unsigned char *)
+             _NL_CURRENT (LC_COLLATE, _NL_COLLATE_SYMB_EXTRAMB);
+         for (i = 0; i < cset->ncoll_syms; ++i)
+           {
+             const unsigned char *coll_sym = extra + cset->coll_syms[i];
+             /* Compare the length of input collating element and
+                the length of current collating element.  */
+             if (*coll_sym != elem_len)
+               continue;
+             /* Compare each bytes.  */
+             for (j = 0; j < *coll_sym; j++)
+               if (pin[j] != coll_sym[1 + j])
+                 break;
+             if (j == *coll_sym)
+               {
+                 /* Match if every bytes is equal.  */
+                 match_len = j;
+                 goto check_node_accept_bytes_match;
+               }
+           }
+
+         if (cset->nranges)
+           {
+             if (elem_len <= char_len)
+               {
+                 collseqwc = _NL_CURRENT (LC_COLLATE, _NL_COLLATE_COLLSEQWC);
+                 in_collseq = __collseq_table_lookup (collseqwc, wc);
+               }
+             else
+               in_collseq = find_collation_sequence_value (pin, elem_len);
+           }
+         /* match with range expression?  */
+         for (i = 0; i < cset->nranges; ++i)
+           if (cset->range_starts[i] <= in_collseq
+               && in_collseq <= cset->range_ends[i])
+             {
+               match_len = elem_len;
+               goto check_node_accept_bytes_match;
+             }
+
+         /* match with equivalence_class?  */
+         if (cset->nequiv_classes)
+           {
+             const unsigned char *cp = pin;
+             table = (const int32_t *)
+               _NL_CURRENT (LC_COLLATE, _NL_COLLATE_TABLEMB);
+             weights = (const unsigned char *)
+               _NL_CURRENT (LC_COLLATE, _NL_COLLATE_WEIGHTMB);
+             extra = (const unsigned char *)
+               _NL_CURRENT (LC_COLLATE, _NL_COLLATE_EXTRAMB);
+             indirect = (const int32_t *)
+               _NL_CURRENT (LC_COLLATE, _NL_COLLATE_INDIRECTMB);
+             int32_t idx = findidx (&cp);
+             if (idx > 0)
+               for (i = 0; i < cset->nequiv_classes; ++i)
+                 {
+                   int32_t equiv_class_idx = cset->equiv_classes[i];
+                   size_t weight_len = weights[idx & 0xffffff];
+                   if (weight_len == weights[equiv_class_idx & 0xffffff]
+                       && (idx >> 24) == (equiv_class_idx >> 24))
+                     {
+                       Idx cnt = 0;
+
+                       idx &= 0xffffff;
+                       equiv_class_idx &= 0xffffff;
+
+                       while (cnt <= weight_len
+                              && (weights[equiv_class_idx + 1 + cnt]
+                                  == weights[idx + 1 + cnt]))
+                         ++cnt;
+                       if (cnt > weight_len)
+                         {
+                           match_len = elem_len;
+                           goto check_node_accept_bytes_match;
+                         }
+                     }
+                 }
+           }
+       }
+      else
+# endif /* _LIBC */
+       {
+         /* match with range expression?  */
+#if __GNUC__ >= 2 && ! (__STDC_VERSION__ < 199901L && __STRICT_ANSI__)
+         wchar_t cmp_buf[] = {L'\0', L'\0', wc, L'\0', L'\0', L'\0'};
+#else
+         wchar_t cmp_buf[] = {L'\0', L'\0', L'\0', L'\0', L'\0', L'\0'};
+         cmp_buf[2] = wc;
+#endif
+         for (i = 0; i < cset->nranges; ++i)
+           {
+             cmp_buf[0] = cset->range_starts[i];
+             cmp_buf[4] = cset->range_ends[i];
+             if (wcscoll (cmp_buf, cmp_buf + 2) <= 0
+                 && wcscoll (cmp_buf + 2, cmp_buf + 4) <= 0)
+               {
+                 match_len = char_len;
+                 goto check_node_accept_bytes_match;
+               }
+           }
+       }
+    check_node_accept_bytes_match:
+      if (!cset->non_match)
+       return match_len;
+      else
+       {
+         if (match_len > 0)
+           return 0;
+         else
+           return (elem_len > char_len) ? elem_len : char_len;
+       }
+    }
+  return 0;
+}
+
+# ifdef _LIBC
+static unsigned int
+internal_function
+find_collation_sequence_value (const unsigned char *mbs, size_t mbs_len)
+{
+  uint32_t nrules = _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES);
+  if (nrules == 0)
+    {
+      if (mbs_len == 1)
+       {
+         /* No valid character.  Match it as a single byte character.  */
+         const unsigned char *collseq = (const unsigned char *)
+           _NL_CURRENT (LC_COLLATE, _NL_COLLATE_COLLSEQMB);
+         return collseq[mbs[0]];
+       }
+      return UINT_MAX;
+    }
+  else
+    {
+      int32_t idx;
+      const unsigned char *extra = (const unsigned char *)
+       _NL_CURRENT (LC_COLLATE, _NL_COLLATE_SYMB_EXTRAMB);
+      int32_t extrasize = (const unsigned char *)
+       _NL_CURRENT (LC_COLLATE, _NL_COLLATE_SYMB_EXTRAMB + 1) - extra;
+
+      for (idx = 0; idx < extrasize;)
+       {
+         int mbs_cnt;
+         bool found = false;
+         int32_t elem_mbs_len;
+         /* Skip the name of collating element name.  */
+         idx = idx + extra[idx] + 1;
+         elem_mbs_len = extra[idx++];
+         if (mbs_len == elem_mbs_len)
+           {
+             for (mbs_cnt = 0; mbs_cnt < elem_mbs_len; ++mbs_cnt)
+               if (extra[idx + mbs_cnt] != mbs[mbs_cnt])
+                 break;
+             if (mbs_cnt == elem_mbs_len)
+               /* Found the entry.  */
+               found = true;
+           }
+         /* Skip the byte sequence of the collating element.  */
+         idx += elem_mbs_len;
+         /* Adjust for the alignment.  */
+         idx = (idx + 3) & ~3;
+         /* Skip the collation sequence value.  */
+         idx += sizeof (uint32_t);
+         /* Skip the wide char sequence of the collating element.  */
+         idx = idx + sizeof (uint32_t) * (extra[idx] + 1);
+         /* If we found the entry, return the sequence value.  */
+         if (found)
+           return *(uint32_t *) (extra + idx);
+         /* Skip the collation sequence value.  */
+         idx += sizeof (uint32_t);
+       }
+      return UINT_MAX;
+    }
+}
+# endif /* _LIBC */
+#endif /* RE_ENABLE_I18N */
+
+/* Check whether the node accepts the byte which is IDX-th
+   byte of the INPUT.  */
+
+static bool
+internal_function
+check_node_accept (const re_match_context_t *mctx, const re_token_t *node,
+                  Idx idx)
+{
+  unsigned char ch;
+  ch = re_string_byte_at (&mctx->input, idx);
+  switch (node->type)
+    {
+    case CHARACTER:
+      if (node->opr.c != ch)
+        return false;
+      break;
+
+    case SIMPLE_BRACKET:
+      if (!bitset_contain (node->opr.sbcset, ch))
+        return false;
+      break;
+
+#ifdef RE_ENABLE_I18N
+    case OP_UTF8_PERIOD:
+      if (ch >= ASCII_CHARS)
+        return false;
+      /* FALLTHROUGH */
+#endif
+    case OP_PERIOD:
+      if ((ch == '\n' && !(mctx->dfa->syntax & RE_DOT_NEWLINE))
+         || (ch == '\0' && (mctx->dfa->syntax & RE_DOT_NOT_NULL)))
+       return false;
+      break;
+
+    default:
+      return false;
+    }
+
+  if (node->constraint)
+    {
+      /* The node has constraints.  Check whether the current context
+        satisfies the constraints.  */
+      unsigned int context = re_string_context_at (&mctx->input, idx,
+                                                  mctx->eflags);
+      if (NOT_SATISFY_NEXT_CONSTRAINT (node->constraint, context))
+       return false;
+    }
+
+  return true;
+}
+
+/* Extend the buffers, if the buffers have run out.  */
+
+static reg_errcode_t
+internal_function __attribute_warn_unused_result__
+extend_buffers (re_match_context_t *mctx)
+{
+  reg_errcode_t ret;
+  re_string_t *pstr = &mctx->input;
+
+  /* Avoid overflow.  */
+  if (BE (SIZE_MAX / 2 / sizeof (re_dfastate_t *) <= pstr->bufs_len, 0))
+    return REG_ESPACE;
+
+  /* Double the lengthes of the buffers.  */
+  ret = re_string_realloc_buffers (pstr, pstr->bufs_len * 2);
+  if (BE (ret != REG_NOERROR, 0))
+    return ret;
+
+  if (mctx->state_log != NULL)
+    {
+      /* And double the length of state_log.  */
+      /* XXX We have no indication of the size of this buffer.  If this
+        allocation fail we have no indication that the state_log array
+        does not have the right size.  */
+      re_dfastate_t **new_array = re_realloc (mctx->state_log, re_dfastate_t *,
+                                             pstr->bufs_len + 1);
+      if (BE (new_array == NULL, 0))
+       return REG_ESPACE;
+      mctx->state_log = new_array;
+    }
+
+  /* Then reconstruct the buffers.  */
+  if (pstr->icase)
+    {
+#ifdef RE_ENABLE_I18N
+      if (pstr->mb_cur_max > 1)
+       {
+         ret = build_wcs_upper_buffer (pstr);
+         if (BE (ret != REG_NOERROR, 0))
+           return ret;
+       }
+      else
+#endif /* RE_ENABLE_I18N  */
+       build_upper_buffer (pstr);
+    }
+  else
+    {
+#ifdef RE_ENABLE_I18N
+      if (pstr->mb_cur_max > 1)
+       build_wcs_buffer (pstr);
+      else
+#endif /* RE_ENABLE_I18N  */
+       {
+         if (pstr->trans != NULL)
+           re_string_translate_buffer (pstr);
+       }
+    }
+  return REG_NOERROR;
+}
+
+\f
+/* Functions for matching context.  */
+
+/* Initialize MCTX.  */
+
+static reg_errcode_t
+internal_function __attribute_warn_unused_result__
+match_ctx_init (re_match_context_t *mctx, int eflags, Idx n)
+{
+  mctx->eflags = eflags;
+  mctx->match_last = REG_MISSING;
+  if (n > 0)
+    {
+      /* Avoid overflow.  */
+      size_t max_object_size =
+       MAX (sizeof (struct re_backref_cache_entry),
+            sizeof (re_sub_match_top_t *));
+      if (BE (SIZE_MAX / max_object_size < n, 0))
+       return REG_ESPACE;
+
+      mctx->bkref_ents = re_malloc (struct re_backref_cache_entry, n);
+      mctx->sub_tops = re_malloc (re_sub_match_top_t *, n);
+      if (BE (mctx->bkref_ents == NULL || mctx->sub_tops == NULL, 0))
+       return REG_ESPACE;
+    }
+  /* Already zero-ed by the caller.
+     else
+       mctx->bkref_ents = NULL;
+     mctx->nbkref_ents = 0;
+     mctx->nsub_tops = 0;  */
+  mctx->abkref_ents = n;
+  mctx->max_mb_elem_len = 1;
+  mctx->asub_tops = n;
+  return REG_NOERROR;
+}
+
+/* Clean the entries which depend on the current input in MCTX.
+   This function must be invoked when the matcher changes the start index
+   of the input, or changes the input string.  */
+
+static void
+internal_function
+match_ctx_clean (re_match_context_t *mctx)
+{
+  Idx st_idx;
+  for (st_idx = 0; st_idx < mctx->nsub_tops; ++st_idx)
+    {
+      Idx sl_idx;
+      re_sub_match_top_t *top = mctx->sub_tops[st_idx];
+      for (sl_idx = 0; sl_idx < top->nlasts; ++sl_idx)
+       {
+         re_sub_match_last_t *last = top->lasts[sl_idx];
+         re_free (last->path.array);
+         re_free (last);
+       }
+      re_free (top->lasts);
+      if (top->path)
+       {
+         re_free (top->path->array);
+         re_free (top->path);
+       }
+      free (top);
+    }
+
+  mctx->nsub_tops = 0;
+  mctx->nbkref_ents = 0;
+}
+
+/* Free all the memory associated with MCTX.  */
+
+static void
+internal_function
+match_ctx_free (re_match_context_t *mctx)
+{
+  /* First, free all the memory associated with MCTX->SUB_TOPS.  */
+  match_ctx_clean (mctx);
+  re_free (mctx->sub_tops);
+  re_free (mctx->bkref_ents);
+}
+
+/* Add a new backreference entry to MCTX.
+   Note that we assume that caller never call this function with duplicate
+   entry, and call with STR_IDX which isn't smaller than any existing entry.
+*/
+
+static reg_errcode_t
+internal_function __attribute_warn_unused_result__
+match_ctx_add_entry (re_match_context_t *mctx, Idx node, Idx str_idx, Idx from,
+                    Idx to)
+{
+  if (mctx->nbkref_ents >= mctx->abkref_ents)
+    {
+      struct re_backref_cache_entry* new_entry;
+      new_entry = re_realloc (mctx->bkref_ents, struct re_backref_cache_entry,
+                             mctx->abkref_ents * 2);
+      if (BE (new_entry == NULL, 0))
+       {
+         re_free (mctx->bkref_ents);
+         return REG_ESPACE;
+       }
+      mctx->bkref_ents = new_entry;
+      memset (mctx->bkref_ents + mctx->nbkref_ents, '\0',
+             sizeof (struct re_backref_cache_entry) * mctx->abkref_ents);
+      mctx->abkref_ents *= 2;
+    }
+  if (mctx->nbkref_ents > 0
+      && mctx->bkref_ents[mctx->nbkref_ents - 1].str_idx == str_idx)
+    mctx->bkref_ents[mctx->nbkref_ents - 1].more = 1;
+
+  mctx->bkref_ents[mctx->nbkref_ents].node = node;
+  mctx->bkref_ents[mctx->nbkref_ents].str_idx = str_idx;
+  mctx->bkref_ents[mctx->nbkref_ents].subexp_from = from;
+  mctx->bkref_ents[mctx->nbkref_ents].subexp_to = to;
+
+  /* This is a cache that saves negative results of check_dst_limits_calc_pos.
+     If bit N is clear, means that this entry won't epsilon-transition to
+     an OP_OPEN_SUBEXP or OP_CLOSE_SUBEXP for the N+1-th subexpression.  If
+     it is set, check_dst_limits_calc_pos_1 will recurse and try to find one
+     such node.
+
+     A backreference does not epsilon-transition unless it is empty, so set
+     to all zeros if FROM != TO.  */
+  mctx->bkref_ents[mctx->nbkref_ents].eps_reachable_subexps_map
+    = (from == to ? -1 : 0);
+
+  mctx->bkref_ents[mctx->nbkref_ents++].more = 0;
+  if (mctx->max_mb_elem_len < to - from)
+    mctx->max_mb_elem_len = to - from;
+  return REG_NOERROR;
+}
+
+/* Return the first entry with the same str_idx, or REG_MISSING if none is
+   found.  Note that MCTX->BKREF_ENTS is already sorted by MCTX->STR_IDX.  */
+
+static Idx
+internal_function
+search_cur_bkref_entry (const re_match_context_t *mctx, Idx str_idx)
+{
+  Idx left, right, mid, last;
+  last = right = mctx->nbkref_ents;
+  for (left = 0; left < right;)
+    {
+      mid = (left + right) / 2;
+      if (mctx->bkref_ents[mid].str_idx < str_idx)
+       left = mid + 1;
+      else
+       right = mid;
+    }
+  if (left < last && mctx->bkref_ents[left].str_idx == str_idx)
+    return left;
+  else
+    return REG_MISSING;
+}
+
+/* Register the node NODE, whose type is OP_OPEN_SUBEXP, and which matches
+   at STR_IDX.  */
+
+static reg_errcode_t
+internal_function __attribute_warn_unused_result__
+match_ctx_add_subtop (re_match_context_t *mctx, Idx node, Idx str_idx)
+{
+#ifdef DEBUG
+  assert (mctx->sub_tops != NULL);
+  assert (mctx->asub_tops > 0);
+#endif
+  if (BE (mctx->nsub_tops == mctx->asub_tops, 0))
+    {
+      Idx new_asub_tops = mctx->asub_tops * 2;
+      re_sub_match_top_t **new_array = re_realloc (mctx->sub_tops,
+                                                  re_sub_match_top_t *,
+                                                  new_asub_tops);
+      if (BE (new_array == NULL, 0))
+       return REG_ESPACE;
+      mctx->sub_tops = new_array;
+      mctx->asub_tops = new_asub_tops;
+    }
+  mctx->sub_tops[mctx->nsub_tops] = calloc (1, sizeof (re_sub_match_top_t));
+  if (BE (mctx->sub_tops[mctx->nsub_tops] == NULL, 0))
+    return REG_ESPACE;
+  mctx->sub_tops[mctx->nsub_tops]->node = node;
+  mctx->sub_tops[mctx->nsub_tops++]->str_idx = str_idx;
+  return REG_NOERROR;
+}
+
+/* Register the node NODE, whose type is OP_CLOSE_SUBEXP, and which matches
+   at STR_IDX, whose corresponding OP_OPEN_SUBEXP is SUB_TOP.  */
+
+static re_sub_match_last_t *
+internal_function
+match_ctx_add_sublast (re_sub_match_top_t *subtop, Idx node, Idx str_idx)
+{
+  re_sub_match_last_t *new_entry;
+  if (BE (subtop->nlasts == subtop->alasts, 0))
+    {
+      Idx new_alasts = 2 * subtop->alasts + 1;
+      re_sub_match_last_t **new_array = re_realloc (subtop->lasts,
+                                                   re_sub_match_last_t *,
+                                                   new_alasts);
+      if (BE (new_array == NULL, 0))
+       return NULL;
+      subtop->lasts = new_array;
+      subtop->alasts = new_alasts;
+    }
+  new_entry = calloc (1, sizeof (re_sub_match_last_t));
+  if (BE (new_entry != NULL, 1))
+    {
+      subtop->lasts[subtop->nlasts] = new_entry;
+      new_entry->node = node;
+      new_entry->str_idx = str_idx;
+      ++subtop->nlasts;
+    }
+  return new_entry;
+}
+
+static void
+internal_function
+sift_ctx_init (re_sift_context_t *sctx, re_dfastate_t **sifted_sts,
+              re_dfastate_t **limited_sts, Idx last_node, Idx last_str_idx)
+{
+  sctx->sifted_states = sifted_sts;
+  sctx->limited_states = limited_sts;
+  sctx->last_node = last_node;
+  sctx->last_str_idx = last_str_idx;
+  re_node_set_init_empty (&sctx->limits);
+}
diff --git a/lib/rpmatch.c b/lib/rpmatch.c
new file mode 100644 (file)
index 0000000..ecc7917
--- /dev/null
@@ -0,0 +1,173 @@
+/* Determine whether string value is affirmation or negative response
+   according to current locale's data.
+
+   Copyright (C) 1996, 1998, 2000, 2002-2003, 2006-2011 Free Software
+   Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include <stdlib.h>
+
+#include <stdbool.h>
+#include <stddef.h>
+
+#if ENABLE_NLS
+# include <sys/types.h>
+# include <limits.h>
+# include <string.h>
+# if HAVE_LANGINFO_YESEXPR
+#  include <langinfo.h>
+# endif
+# include <regex.h>
+# include "gettext.h"
+# define _(msgid) gettext (msgid)
+# define N_(msgid) gettext_noop (msgid)
+
+# if HAVE_LANGINFO_YESEXPR
+/* Return the localized regular expression pattern corresponding to
+   ENGLISH_PATTERN.  NL_INDEX can be used with nl_langinfo.
+   The resulting string may only be used until the next nl_langinfo call.  */
+static const char *
+localized_pattern (const char *english_pattern, nl_item nl_index,
+                   bool posixly_correct)
+{
+  const char *translated_pattern;
+
+  /* We prefer to get the patterns from a PO file.  It would be possible to
+     always use nl_langinfo (YESEXPR) instead of _("^[yY]"), and
+     nl_langinfo (NOEXPR) instead of _("^[nN]"), if we could assume that the
+     system's locale support is good.  But this is not the case e.g. on Cygwin.
+     The localizations of gnulib.pot are of better quality in general.
+     Also, if we use locale info from non-free systems that don't have a
+     'localedef' command, we deprive the users of the freedom to localize
+     this pattern for their preferred language.
+     But some programs, such as 'cp', 'mv', 'rm', 'find', 'xargs', are
+     specified by POSIX to use nl_langinfo (YESEXPR).  We implement this
+     behaviour if POSIXLY_CORRECT is set, for the sake of these programs.  */
+
+  /* If the user wants strict POSIX compliance, use nl_langinfo.  */
+  if (posixly_correct)
+    {
+      translated_pattern = nl_langinfo (nl_index);
+      /* Check against a broken system return value.  */
+      if (translated_pattern != NULL && translated_pattern[0] != '\0')
+        return translated_pattern;
+   }
+
+  /* Look in the gnulib message catalog.  */
+  translated_pattern = _(english_pattern);
+  if (translated_pattern == english_pattern)
+    {
+      /* The gnulib message catalog provides no translation.
+         Try the system's message catalog.  */
+      translated_pattern = nl_langinfo (nl_index);
+      /* Check against a broken system return value.  */
+      if (translated_pattern != NULL && translated_pattern[0] != '\0')
+        return translated_pattern;
+      /* Fall back to English.  */
+      translated_pattern = english_pattern;
+    }
+  return translated_pattern;
+}
+# else
+#  define localized_pattern(english_pattern,nl_index,posixly_correct) \
+     _(english_pattern)
+# endif
+
+static int
+try (const char *response, const char *pattern, char **lastp, regex_t *re)
+{
+  if (*lastp == NULL || strcmp (pattern, *lastp) != 0)
+    {
+      char *safe_pattern;
+
+      /* The pattern has changed.  */
+      if (*lastp != NULL)
+        {
+          /* Free the old compiled pattern.  */
+          regfree (re);
+          free (*lastp);
+          *lastp = NULL;
+        }
+      /* Put the PATTERN into safe memory before calling regcomp.
+         (regcomp may call nl_langinfo, overwriting PATTERN's storage.  */
+      safe_pattern = strdup (pattern);
+      if (safe_pattern == NULL)
+        return -1;
+      /* Compile the pattern and cache it for future runs.  */
+      if (regcomp (re, safe_pattern, REG_EXTENDED) != 0)
+        return -1;
+      *lastp = safe_pattern;
+    }
+
+  /* See if the regular expression matches RESPONSE.  */
+  return regexec (re, response, 0, NULL, 0) == 0;
+}
+#endif
+
+
+int
+rpmatch (const char *response)
+{
+#if ENABLE_NLS
+  /* Match against one of the response patterns, compiling the pattern
+     first if necessary.  */
+
+  /* We cache the response patterns and compiled regexps here.  */
+  static char *last_yesexpr, *last_noexpr;
+  static regex_t cached_yesre, cached_nore;
+
+# if HAVE_LANGINFO_YESEXPR
+  bool posixly_correct = (getenv ("POSIXLY_CORRECT") != NULL);
+# endif
+
+  const char *yesexpr, *noexpr;
+  int result;
+
+  /* TRANSLATORS: A regular expression testing for an affirmative answer
+     (english: "yes").  Testing the first character may be sufficient.
+     Take care to consider upper and lower case.
+     To enquire the regular expression that your system uses for this
+     purpose, you can use the command
+       locale -k LC_MESSAGES | grep '^yesexpr='  */
+  yesexpr = localized_pattern (N_("^[yY]"), YESEXPR, posixly_correct);
+  result = try (response, yesexpr, &last_yesexpr, &cached_yesre);
+  if (result < 0)
+    return -1;
+  if (result)
+    return 1;
+
+  /* TRANSLATORS: A regular expression testing for a negative answer
+     (english: "no").  Testing the first character may be sufficient.
+     Take care to consider upper and lower case.
+     To enquire the regular expression that your system uses for this
+     purpose, you can use the command
+       locale -k LC_MESSAGES | grep '^noexpr='  */
+  noexpr = localized_pattern (N_("^[nN]"), NOEXPR, posixly_correct);
+  result = try (response, noexpr, &last_noexpr, &cached_nore);
+  if (result < 0)
+    return -1;
+  if (result)
+    return 0;
+
+  return -1;
+#else
+  /* Test against "^[yY]" and "^[nN]", hardcoded to avoid requiring regex */
+  return (*response == 'y' || *response == 'Y' ? 1
+          : *response == 'n' || *response == 'N' ? 0 : -1);
+#endif
+}
diff --git a/lib/safe-read.c b/lib/safe-read.c
new file mode 100644 (file)
index 0000000..d9cb330
--- /dev/null
@@ -0,0 +1,77 @@
+/* An interface to read and write that retries after interrupts.
+
+   Copyright (C) 1993-1994, 1998, 2002-2006, 2009-2011 Free Software
+   Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#ifdef SAFE_WRITE
+# include "safe-write.h"
+#else
+# include "safe-read.h"
+#endif
+
+/* Get ssize_t.  */
+#include <sys/types.h>
+#include <unistd.h>
+
+#include <errno.h>
+
+#ifdef EINTR
+# define IS_EINTR(x) ((x) == EINTR)
+#else
+# define IS_EINTR(x) 0
+#endif
+
+#include <limits.h>
+
+#ifdef SAFE_WRITE
+# define safe_rw safe_write
+# define rw write
+#else
+# define safe_rw safe_read
+# define rw read
+# undef const
+# define const /* empty */
+#endif
+
+/* Read(write) up to COUNT bytes at BUF from(to) descriptor FD, retrying if
+   interrupted.  Return the actual number of bytes read(written), zero for EOF,
+   or SAFE_READ_ERROR(SAFE_WRITE_ERROR) upon error.  */
+size_t
+safe_rw (int fd, void const *buf, size_t count)
+{
+  /* Work around a bug in Tru64 5.1.  Attempting to read more than
+     INT_MAX bytes fails with errno == EINVAL.  See
+     <http://lists.gnu.org/archive/html/bug-gnu-utils/2002-04/msg00010.html>.
+     When decreasing COUNT, keep it block-aligned.  */
+  enum { BUGGY_READ_MAXIMUM = INT_MAX & ~8191 };
+
+  for (;;)
+    {
+      ssize_t result = rw (fd, buf, count);
+
+      if (0 <= result)
+        return result;
+      else if (IS_EINTR (errno))
+        continue;
+      else if (errno == EINVAL && BUGGY_READ_MAXIMUM < count)
+        count = BUGGY_READ_MAXIMUM;
+      else
+        return result;
+    }
+}
diff --git a/lib/safe-read.h b/lib/safe-read.h
new file mode 100644 (file)
index 0000000..1c49c8f
--- /dev/null
@@ -0,0 +1,34 @@
+/* An interface to read() that retries after interrupts.
+   Copyright (C) 2002, 2006, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+#include <stddef.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#define SAFE_READ_ERROR ((size_t) -1)
+
+/* Read up to COUNT bytes at BUF from descriptor FD, retrying if interrupted.
+   Return the actual number of bytes read, zero for EOF, or SAFE_READ_ERROR
+   upon error.  */
+extern size_t safe_read (int fd, void *buf, size_t count);
+
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/lib/sleep.c b/lib/sleep.c
new file mode 100644 (file)
index 0000000..45b9d80
--- /dev/null
@@ -0,0 +1,76 @@
+/* Pausing execution of the current thread.
+   Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc.
+   Written by Bruno Haible <bruno@clisp.org>, 2007.
+
+   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 <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include <unistd.h>
+
+#include <limits.h>
+
+#include "verify.h"
+
+#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+
+# define WIN32_LEAN_AND_MEAN  /* avoid including junk */
+# include <windows.h>
+
+unsigned int
+sleep (unsigned int seconds)
+{
+  unsigned int remaining;
+
+  /* Sleep for 1 second many times, because
+       1. Sleep is not interruptiple by Ctrl-C,
+       2. we want to avoid arithmetic overflow while multiplying with 1000.  */
+  for (remaining = seconds; remaining > 0; remaining--)
+    Sleep (1000);
+
+  return remaining;
+}
+
+#elif HAVE_SLEEP
+
+# undef sleep
+
+/* Guarantee unlimited sleep and a reasonable return value.  Cygwin
+   1.5.x rejects attempts to sleep more than 49.7 days (2**32
+   milliseconds), but uses uninitialized memory which results in a
+   garbage answer.  Similarly, Linux 2.6.9 with glibc 2.3.4 has a too
+   small return value when asked to sleep more than 24.85 days.  */
+unsigned int
+rpl_sleep (unsigned int seconds)
+{
+  /* This requires int larger than 16 bits.  */
+  verify (UINT_MAX / 24 / 24 / 60 / 60);
+  const unsigned int limit = 24 * 24 * 60 * 60;
+  while (limit < seconds)
+    {
+      unsigned int result;
+      seconds -= limit;
+      result = sleep (limit);
+      if (result)
+        return seconds + result;
+    }
+  return sleep (seconds);
+}
+
+#else /* !HAVE_SLEEP */
+
+ #error "Please port gnulib sleep.c to your platform, possibly using usleep() or select(), then report this to bug-gnulib."
+
+#endif
diff --git a/lib/stat.c b/lib/stat.c
new file mode 100644 (file)
index 0000000..cbc9100
--- /dev/null
@@ -0,0 +1,105 @@
+/* Work around platform bugs in stat.
+   Copyright (C) 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+/* written by Eric Blake */
+
+#include <config.h>
+
+/* Get the original definition of stat.  It might be defined as a macro.  */
+#define __need_system_sys_stat_h
+#include <sys/types.h>
+#include <sys/stat.h>
+#undef __need_system_sys_stat_h
+
+static inline int
+orig_stat (const char *filename, struct stat *buf)
+{
+  return stat (filename, buf);
+}
+
+/* Specification.  */
+#include <sys/stat.h>
+
+#include <errno.h>
+#include <limits.h>
+#include <stdbool.h>
+#include <string.h>
+#include "dosname.h"
+
+/* Store information about NAME into ST.  Work around bugs with
+   trailing slashes.  Mingw has other bugs (such as st_ino always
+   being 0 on success) which this wrapper does not work around.  But
+   at least this implementation provides the ability to emulate fchdir
+   correctly.  */
+
+int
+rpl_stat (char const *name, struct stat *st)
+{
+  int result = orig_stat (name, st);
+#if REPLACE_FUNC_STAT_FILE
+  /* Solaris 9 mistakenly succeeds when given a non-directory with a
+     trailing slash.  */
+  if (result == 0 && !S_ISDIR (st->st_mode))
+    {
+      size_t len = strlen (name);
+      if (ISSLASH (name[len - 1]))
+        {
+          errno = ENOTDIR;
+          return -1;
+        }
+    }
+#endif /* REPLACE_FUNC_STAT_FILE */
+#if REPLACE_FUNC_STAT_DIR
+  if (result == -1 && errno == ENOENT)
+    {
+      /* Due to mingw's oddities, there are some directories (like
+         c:\) where stat() only succeeds with a trailing slash, and
+         other directories (like c:\windows) where stat() only
+         succeeds without a trailing slash.  But we want the two to be
+         synonymous, since chdir() manages either style.  Likewise, Mingw also
+         reports ENOENT for names longer than PATH_MAX, when we want
+         ENAMETOOLONG, and for stat("file/"), when we want ENOTDIR.
+         Fortunately, mingw PATH_MAX is small enough for stack
+         allocation.  */
+      char fixed_name[PATH_MAX + 1] = {0};
+      size_t len = strlen (name);
+      bool check_dir = false;
+      if (PATH_MAX <= len)
+        errno = ENAMETOOLONG;
+      else if (len)
+        {
+          strcpy (fixed_name, name);
+          if (ISSLASH (fixed_name[len - 1]))
+            {
+              check_dir = true;
+              while (len && ISSLASH (fixed_name[len - 1]))
+                fixed_name[--len] = '\0';
+              if (!len)
+                fixed_name[0] = '/';
+            }
+          else
+            fixed_name[len++] = '/';
+          result = orig_stat (fixed_name, st);
+          if (result == 0 && check_dir && !S_ISDIR (st->st_mode))
+            {
+              result = -1;
+              errno = ENOTDIR;
+            }
+        }
+    }
+#endif /* REPLACE_FUNC_STAT_DIR */
+  return result;
+}
diff --git a/lib/stdarg.in.h b/lib/stdarg.in.h
new file mode 100644 (file)
index 0000000..e93d2b9
--- /dev/null
@@ -0,0 +1,38 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Substitute for and wrapper around <stdarg.h>.
+   Copyright (C) 2008-2011 Free Software Foundation, 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; either version 3, 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.  */
+
+#ifndef _@GUARD_PREFIX@_STDARG_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+/* The include_next requires a split double-inclusion guard.  */
+#@INCLUDE_NEXT@ @NEXT_STDARG_H@
+
+#ifndef _@GUARD_PREFIX@_STDARG_H
+#define _@GUARD_PREFIX@_STDARG_H
+
+#ifndef va_copy
+# define va_copy(a,b) ((a) = (b))
+#endif
+
+#endif /* _@GUARD_PREFIX@_STDARG_H */
+#endif /* _@GUARD_PREFIX@_STDARG_H */
diff --git a/lib/stdbool.in.h b/lib/stdbool.in.h
new file mode 100644 (file)
index 0000000..27a1516
--- /dev/null
@@ -0,0 +1,124 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Copyright (C) 2001-2003, 2006-2011 Free Software Foundation, Inc.
+   Written by Bruno Haible <haible@clisp.cons.org>, 2001.
+
+   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, 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.  */
+
+#ifndef _GL_STDBOOL_H
+#define _GL_STDBOOL_H
+
+/* ISO C 99 <stdbool.h> for platforms that lack it.  */
+
+/* Usage suggestions:
+
+   Programs that use <stdbool.h> should be aware of some limitations
+   and standards compliance issues.
+
+   Standards compliance:
+
+       - <stdbool.h> must be #included before 'bool', 'false', 'true'
+         can be used.
+
+       - You cannot assume that sizeof (bool) == 1.
+
+       - Programs should not undefine the macros bool, true, and false,
+         as C99 lists that as an "obsolescent feature".
+
+   Limitations of this substitute, when used in a C89 environment:
+
+       - <stdbool.h> must be #included before the '_Bool' type can be used.
+
+       - You cannot assume that _Bool is a typedef; it might be a macro.
+
+       - Bit-fields of type 'bool' are not supported.  Portable code
+         should use 'unsigned int foo : 1;' rather than 'bool foo : 1;'.
+
+       - In C99, casts and automatic conversions to '_Bool' or 'bool' are
+         performed in such a way that every nonzero value gets converted
+         to 'true', and zero gets converted to 'false'.  This doesn't work
+         with this substitute.  With this substitute, only the values 0 and 1
+         give the expected result when converted to _Bool' or 'bool'.
+
+       - C99 allows the use of (_Bool)0.0 in constant expressions, but
+         this substitute cannot always provide this property.
+
+   Also, it is suggested that programs use 'bool' rather than '_Bool';
+   this isn't required, but 'bool' is more common.  */
+
+
+/* 7.16. Boolean type and values */
+
+/* BeOS <sys/socket.h> already #defines false 0, true 1.  We use the same
+   definitions below, but temporarily we have to #undef them.  */
+#if defined __BEOS__ && !defined __HAIKU__
+# include <OS.h> /* defines bool but not _Bool */
+# undef false
+# undef true
+#endif
+
+/* For the sake of symbolic names in gdb, we define true and false as
+   enum constants, not only as macros.
+   It is tempting to write
+      typedef enum { false = 0, true = 1 } _Bool;
+   so that gdb prints values of type 'bool' symbolically. But if we do
+   this, values of type '_Bool' may promote to 'int' or 'unsigned int'
+   (see ISO C 99 6.7.2.2.(4)); however, '_Bool' must promote to 'int'
+   (see ISO C 99 6.3.1.1.(2)).  So we add a negative value to the
+   enum; this ensures that '_Bool' promotes to 'int'.  */
+#if defined __cplusplus || (defined __BEOS__ && !defined __HAIKU__)
+  /* A compiler known to have 'bool'.  */
+  /* If the compiler already has both 'bool' and '_Bool', we can assume they
+     are the same types.  */
+# if !@HAVE__BOOL@
+typedef bool _Bool;
+# endif
+#else
+# if !defined __GNUC__
+   /* If @HAVE__BOOL@:
+        Some HP-UX cc and AIX IBM C compiler versions have compiler bugs when
+        the built-in _Bool type is used.  See
+          http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+          http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+          http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html
+        Similar bugs are likely with other compilers as well; this file
+        wouldn't be used if <stdbool.h> was working.
+        So we override the _Bool type.
+      If !@HAVE__BOOL@:
+        Need to define _Bool ourselves. As 'signed char' or as an enum type?
+        Use of a typedef, with SunPRO C, leads to a stupid
+          "warning: _Bool is a keyword in ISO C99".
+        Use of an enum type, with IRIX cc, leads to a stupid
+          "warning(1185): enumerated type mixed with another type".
+        Even the existence of an enum type, without a typedef,
+          "Invalid enumerator. (badenum)" with HP-UX cc on Tru64.
+        The only benefit of the enum, debuggability, is not important
+        with these compilers.  So use 'signed char' and no enum.  */
+#  define _Bool signed char
+# else
+   /* With this compiler, trust the _Bool type if the compiler has it.  */
+#  if !@HAVE__BOOL@
+typedef enum { _Bool_must_promote_to_int = -1, false = 0, true = 1 } _Bool;
+#  endif
+# endif
+#endif
+#define bool _Bool
+
+/* The other macros must be usable in preprocessor directives.  */
+#define false 0
+#define true 1
+#define __bool_true_false_are_defined 1
+
+#endif /* _GL_STDBOOL_H */
diff --git a/lib/stddef.in.h b/lib/stddef.in.h
new file mode 100644 (file)
index 0000000..b330a8c
--- /dev/null
@@ -0,0 +1,89 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* A substitute for POSIX 2008 <stddef.h>, for platforms that have issues.
+
+   Copyright (C) 2009-2011 Free Software Foundation, 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; either version 3, 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.  */
+
+/* Written by Eric Blake.  */
+
+/*
+ * POSIX 2008 <stddef.h> for platforms that have issues.
+ * <http://www.opengroup.org/susv3xbd/stddef.h.html>
+ */
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+#if defined __need_wchar_t || defined __need_size_t  \
+  || defined __need_ptrdiff_t || defined __need_NULL \
+  || defined __need_wint_t
+/* Special invocation convention inside gcc header files.  In
+   particular, gcc provides a version of <stddef.h> that blindly
+   redefines NULL even when __need_wint_t was defined, even though
+   wint_t is not normally provided by <stddef.h>.  Hence, we must
+   remember if special invocation has ever been used to obtain wint_t,
+   in which case we need to clean up NULL yet again.  */
+
+# if !(defined _@GUARD_PREFIX@_STDDEF_H && defined _GL_STDDEF_WINT_T)
+#  ifdef __need_wint_t
+#   undef _@GUARD_PREFIX@_STDDEF_H
+#   define _GL_STDDEF_WINT_T
+#  endif
+#  @INCLUDE_NEXT@ @NEXT_STDDEF_H@
+# endif
+
+#else
+/* Normal invocation convention.  */
+
+# ifndef _@GUARD_PREFIX@_STDDEF_H
+
+/* The include_next requires a split double-inclusion guard.  */
+
+#  @INCLUDE_NEXT@ @NEXT_STDDEF_H@
+
+#  ifndef _@GUARD_PREFIX@_STDDEF_H
+#   define _@GUARD_PREFIX@_STDDEF_H
+
+/* On NetBSD 5.0, the definition of NULL lacks proper parentheses.  */
+#if @REPLACE_NULL@
+# undef NULL
+# ifdef __cplusplus
+   /* ISO C++ says that the macro NULL must expand to an integer constant
+      expression, hence '((void *) 0)' is not allowed in C++.  */
+#  if __GNUG__ >= 3
+    /* GNU C++ has a __null macro that behaves like an integer ('int' or
+       'long') but has the same size as a pointer.  Use that, to avoid
+       warnings.  */
+#   define NULL __null
+#  else
+#   define NULL 0L
+#  endif
+# else
+#  define NULL ((void *) 0)
+# endif
+#endif
+
+/* Some platforms lack wchar_t.  */
+#if !@HAVE_WCHAR_T@
+# define wchar_t int
+#endif
+
+#  endif /* _@GUARD_PREFIX@_STDDEF_H */
+# endif /* _@GUARD_PREFIX@_STDDEF_H */
+#endif /* __need_XXX */
diff --git a/lib/stdint.in.h b/lib/stdint.in.h
new file mode 100644 (file)
index 0000000..5ef43ad
--- /dev/null
@@ -0,0 +1,594 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Copyright (C) 2001-2002, 2004-2011 Free Software Foundation, Inc.
+   Written by Paul Eggert, Bruno Haible, Sam Steingold, Peter Burwood.
+   This file is part of gnulib.
+
+   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, 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.  */
+
+/*
+ * ISO C 99 <stdint.h> for platforms that lack it.
+ * <http://www.opengroup.org/susv3xbd/stdint.h.html>
+ */
+
+#ifndef _@GUARD_PREFIX@_STDINT_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+/* When including a system file that in turn includes <inttypes.h>,
+   use the system <inttypes.h>, not our substitute.  This avoids
+   problems with (for example) VMS, whose <sys/bitypes.h> includes
+   <inttypes.h>.  */
+#define _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
+
+/* Get those types that are already defined in other system include
+   files, so that we can "#define int8_t signed char" below without
+   worrying about a later system include file containing a "typedef
+   signed char int8_t;" that will get messed up by our macro.  Our
+   macros should all be consistent with the system versions, except
+   for the "fast" types and macros, which we recommend against using
+   in public interfaces due to compiler differences.  */
+
+#if @HAVE_STDINT_H@
+# if defined __sgi && ! defined __c99
+   /* Bypass IRIX's <stdint.h> if in C89 mode, since it merely annoys users
+      with "This header file is to be used only for c99 mode compilations"
+      diagnostics.  */
+#  define __STDINT_H__
+# endif
+  /* Other systems may have an incomplete or buggy <stdint.h>.
+     Include it before <inttypes.h>, since any "#include <stdint.h>"
+     in <inttypes.h> would reinclude us, skipping our contents because
+     _@GUARD_PREFIX@_STDINT_H is defined.
+     The include_next requires a split double-inclusion guard.  */
+# @INCLUDE_NEXT@ @NEXT_STDINT_H@
+#endif
+
+#if ! defined _@GUARD_PREFIX@_STDINT_H && ! defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H
+#define _@GUARD_PREFIX@_STDINT_H
+
+/* <sys/types.h> defines some of the stdint.h types as well, on glibc,
+   IRIX 6.5, and OpenBSD 3.8 (via <machine/types.h>).
+   AIX 5.2 <sys/types.h> isn't needed and causes troubles.
+   MacOS X 10.4.6 <sys/types.h> includes <stdint.h> (which is us), but
+   relies on the system <stdint.h> definitions, so include
+   <sys/types.h> after @NEXT_STDINT_H@.  */
+#if @HAVE_SYS_TYPES_H@ && ! defined _AIX
+# include <sys/types.h>
+#endif
+
+/* Get LONG_MIN, LONG_MAX, ULONG_MAX.  */
+#include <limits.h>
+
+#if @HAVE_INTTYPES_H@
+  /* In OpenBSD 3.8, <inttypes.h> includes <machine/types.h>, which defines
+     int{8,16,32,64}_t, uint{8,16,32,64}_t and __BIT_TYPES_DEFINED__.
+     <inttypes.h> also defines intptr_t and uintptr_t.  */
+# include <inttypes.h>
+#elif @HAVE_SYS_INTTYPES_H@
+  /* Solaris 7 <sys/inttypes.h> has the types except the *_fast*_t types, and
+     the macros except for *_FAST*_*, INTPTR_MIN, PTRDIFF_MIN, PTRDIFF_MAX.  */
+# include <sys/inttypes.h>
+#endif
+
+#if @HAVE_SYS_BITYPES_H@ && ! defined __BIT_TYPES_DEFINED__
+  /* Linux libc4 >= 4.6.7 and libc5 have a <sys/bitypes.h> that defines
+     int{8,16,32,64}_t and __BIT_TYPES_DEFINED__.  In libc5 >= 5.2.2 it is
+     included by <sys/types.h>.  */
+# include <sys/bitypes.h>
+#endif
+
+#undef _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
+
+/* Minimum and maximum values for an integer type under the usual assumption.
+   Return an unspecified value if BITS == 0, adding a check to pacify
+   picky compilers.  */
+
+#define _STDINT_MIN(signed, bits, zero) \
+  ((signed) ? (- ((zero) + 1) << ((bits) ? (bits) - 1 : 0)) : (zero))
+
+#define _STDINT_MAX(signed, bits, zero) \
+  ((signed) \
+   ? ~ _STDINT_MIN (signed, bits, zero) \
+   : /* The expression for the unsigned case.  The subtraction of (signed) \
+        is a nop in the unsigned case and avoids "signed integer overflow" \
+        warnings in the signed case.  */ \
+     ((((zero) + 1) << ((bits) ? (bits) - 1 - (signed) : 0)) - 1) * 2 + 1)
+
+#if !GNULIB_defined_stdint_types
+
+/* 7.18.1.1. Exact-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+   types have 8, 16, 32, optionally 64 bits.  */
+
+#undef int8_t
+#undef uint8_t
+typedef signed char gl_int8_t;
+typedef unsigned char gl_uint8_t;
+#define int8_t gl_int8_t
+#define uint8_t gl_uint8_t
+
+#undef int16_t
+#undef uint16_t
+typedef short int gl_int16_t;
+typedef unsigned short int gl_uint16_t;
+#define int16_t gl_int16_t
+#define uint16_t gl_uint16_t
+
+#undef int32_t
+#undef uint32_t
+typedef int gl_int32_t;
+typedef unsigned int gl_uint32_t;
+#define int32_t gl_int32_t
+#define uint32_t gl_uint32_t
+
+/* If the system defines INT64_MAX, assume int64_t works.  That way,
+   if the underlying platform defines int64_t to be a 64-bit long long
+   int, the code below won't mistakenly define it to be a 64-bit long
+   int, which would mess up C++ name mangling.  We must use #ifdef
+   rather than #if, to avoid an error with HP-UX 10.20 cc.  */
+
+#ifdef INT64_MAX
+# define GL_INT64_T
+#else
+/* Do not undefine int64_t if gnulib is not being used with 64-bit
+   types, since otherwise it breaks platforms like Tandem/NSK.  */
+# if LONG_MAX >> 31 >> 31 == 1
+#  undef int64_t
+typedef long int gl_int64_t;
+#  define int64_t gl_int64_t
+#  define GL_INT64_T
+# elif defined _MSC_VER
+#  undef int64_t
+typedef __int64 gl_int64_t;
+#  define int64_t gl_int64_t
+#  define GL_INT64_T
+# elif @HAVE_LONG_LONG_INT@
+#  undef int64_t
+typedef long long int gl_int64_t;
+#  define int64_t gl_int64_t
+#  define GL_INT64_T
+# endif
+#endif
+
+#ifdef UINT64_MAX
+# define GL_UINT64_T
+#else
+# if ULONG_MAX >> 31 >> 31 >> 1 == 1
+#  undef uint64_t
+typedef unsigned long int gl_uint64_t;
+#  define uint64_t gl_uint64_t
+#  define GL_UINT64_T
+# elif defined _MSC_VER
+#  undef uint64_t
+typedef unsigned __int64 gl_uint64_t;
+#  define uint64_t gl_uint64_t
+#  define GL_UINT64_T
+# elif @HAVE_UNSIGNED_LONG_LONG_INT@
+#  undef uint64_t
+typedef unsigned long long int gl_uint64_t;
+#  define uint64_t gl_uint64_t
+#  define GL_UINT64_T
+# endif
+#endif
+
+/* Avoid collision with Solaris 2.5.1 <pthread.h> etc.  */
+#define _UINT8_T
+#define _UINT32_T
+#define _UINT64_T
+
+
+/* 7.18.1.2. Minimum-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+   types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types
+   are the same as the corresponding N_t types.  */
+
+#undef int_least8_t
+#undef uint_least8_t
+#undef int_least16_t
+#undef uint_least16_t
+#undef int_least32_t
+#undef uint_least32_t
+#undef int_least64_t
+#undef uint_least64_t
+#define int_least8_t int8_t
+#define uint_least8_t uint8_t
+#define int_least16_t int16_t
+#define uint_least16_t uint16_t
+#define int_least32_t int32_t
+#define uint_least32_t uint32_t
+#ifdef GL_INT64_T
+# define int_least64_t int64_t
+#endif
+#ifdef GL_UINT64_T
+# define uint_least64_t uint64_t
+#endif
+
+/* 7.18.1.3. Fastest minimum-width integer types */
+
+/* Note: Other <stdint.h> substitutes may define these types differently.
+   It is not recommended to use these types in public header files. */
+
+/* Here we assume a standard architecture where the hardware integer
+   types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types
+   are taken from the same list of types.  Assume that 'long int'
+   is fast enough for all narrower integers.  */
+
+#undef int_fast8_t
+#undef uint_fast8_t
+#undef int_fast16_t
+#undef uint_fast16_t
+#undef int_fast32_t
+#undef uint_fast32_t
+#undef int_fast64_t
+#undef uint_fast64_t
+typedef long int gl_int_fast8_t;
+typedef unsigned long int gl_uint_fast8_t;
+typedef long int gl_int_fast16_t;
+typedef unsigned long int gl_uint_fast16_t;
+typedef long int gl_int_fast32_t;
+typedef unsigned long int gl_uint_fast32_t;
+#define int_fast8_t gl_int_fast8_t
+#define uint_fast8_t gl_uint_fast8_t
+#define int_fast16_t gl_int_fast16_t
+#define uint_fast16_t gl_uint_fast16_t
+#define int_fast32_t gl_int_fast32_t
+#define uint_fast32_t gl_uint_fast32_t
+#ifdef GL_INT64_T
+# define int_fast64_t int64_t
+#endif
+#ifdef GL_UINT64_T
+# define uint_fast64_t uint64_t
+#endif
+
+/* 7.18.1.4. Integer types capable of holding object pointers */
+
+#undef intptr_t
+#undef uintptr_t
+typedef long int gl_intptr_t;
+typedef unsigned long int gl_uintptr_t;
+#define intptr_t gl_intptr_t
+#define uintptr_t gl_uintptr_t
+
+/* 7.18.1.5. Greatest-width integer types */
+
+/* Note: These types are compiler dependent. It may be unwise to use them in
+   public header files. */
+
+#undef intmax_t
+#if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
+typedef long long int gl_intmax_t;
+# define intmax_t gl_intmax_t
+#elif defined GL_INT64_T
+# define intmax_t int64_t
+#else
+typedef long int gl_intmax_t;
+# define intmax_t gl_intmax_t
+#endif
+
+#undef uintmax_t
+#if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
+typedef unsigned long long int gl_uintmax_t;
+# define uintmax_t gl_uintmax_t
+#elif defined GL_UINT64_T
+# define uintmax_t uint64_t
+#else
+typedef unsigned long int gl_uintmax_t;
+# define uintmax_t gl_uintmax_t
+#endif
+
+/* Verify that intmax_t and uintmax_t have the same size.  Too much code
+   breaks if this is not the case.  If this check fails, the reason is likely
+   to be found in the autoconf macros.  */
+typedef int _verify_intmax_size[sizeof (intmax_t) == sizeof (uintmax_t)
+                                ? 1 : -1];
+
+#define GNULIB_defined_stdint_types 1
+#endif /* !GNULIB_defined_stdint_types */
+
+/* 7.18.2. Limits of specified-width integer types */
+
+#if ! defined __cplusplus || defined __STDC_LIMIT_MACROS
+
+/* 7.18.2.1. Limits of exact-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+   types have 8, 16, 32, optionally 64 bits.  */
+
+#undef INT8_MIN
+#undef INT8_MAX
+#undef UINT8_MAX
+#define INT8_MIN  (~ INT8_MAX)
+#define INT8_MAX  127
+#define UINT8_MAX  255
+
+#undef INT16_MIN
+#undef INT16_MAX
+#undef UINT16_MAX
+#define INT16_MIN  (~ INT16_MAX)
+#define INT16_MAX  32767
+#define UINT16_MAX  65535
+
+#undef INT32_MIN
+#undef INT32_MAX
+#undef UINT32_MAX
+#define INT32_MIN  (~ INT32_MAX)
+#define INT32_MAX  2147483647
+#define UINT32_MAX  4294967295U
+
+#if defined GL_INT64_T && ! defined INT64_MAX
+/* Prefer (- INTMAX_C (1) << 63) over (~ INT64_MAX) because SunPRO C 5.0
+   evaluates the latter incorrectly in preprocessor expressions.  */
+# define INT64_MIN  (- INTMAX_C (1) << 63)
+# define INT64_MAX  INTMAX_C (9223372036854775807)
+#endif
+
+#if defined GL_UINT64_T && ! defined UINT64_MAX
+# define UINT64_MAX  UINTMAX_C (18446744073709551615)
+#endif
+
+/* 7.18.2.2. Limits of minimum-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+   types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types
+   are the same as the corresponding N_t types.  */
+
+#undef INT_LEAST8_MIN
+#undef INT_LEAST8_MAX
+#undef UINT_LEAST8_MAX
+#define INT_LEAST8_MIN  INT8_MIN
+#define INT_LEAST8_MAX  INT8_MAX
+#define UINT_LEAST8_MAX  UINT8_MAX
+
+#undef INT_LEAST16_MIN
+#undef INT_LEAST16_MAX
+#undef UINT_LEAST16_MAX
+#define INT_LEAST16_MIN  INT16_MIN
+#define INT_LEAST16_MAX  INT16_MAX
+#define UINT_LEAST16_MAX  UINT16_MAX
+
+#undef INT_LEAST32_MIN
+#undef INT_LEAST32_MAX
+#undef UINT_LEAST32_MAX
+#define INT_LEAST32_MIN  INT32_MIN
+#define INT_LEAST32_MAX  INT32_MAX
+#define UINT_LEAST32_MAX  UINT32_MAX
+
+#undef INT_LEAST64_MIN
+#undef INT_LEAST64_MAX
+#ifdef GL_INT64_T
+# define INT_LEAST64_MIN  INT64_MIN
+# define INT_LEAST64_MAX  INT64_MAX
+#endif
+
+#undef UINT_LEAST64_MAX
+#ifdef GL_UINT64_T
+# define UINT_LEAST64_MAX  UINT64_MAX
+#endif
+
+/* 7.18.2.3. Limits of fastest minimum-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+   types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types
+   are taken from the same list of types.  */
+
+#undef INT_FAST8_MIN
+#undef INT_FAST8_MAX
+#undef UINT_FAST8_MAX
+#define INT_FAST8_MIN  LONG_MIN
+#define INT_FAST8_MAX  LONG_MAX
+#define UINT_FAST8_MAX  ULONG_MAX
+
+#undef INT_FAST16_MIN
+#undef INT_FAST16_MAX
+#undef UINT_FAST16_MAX
+#define INT_FAST16_MIN  LONG_MIN
+#define INT_FAST16_MAX  LONG_MAX
+#define UINT_FAST16_MAX  ULONG_MAX
+
+#undef INT_FAST32_MIN
+#undef INT_FAST32_MAX
+#undef UINT_FAST32_MAX
+#define INT_FAST32_MIN  LONG_MIN
+#define INT_FAST32_MAX  LONG_MAX
+#define UINT_FAST32_MAX  ULONG_MAX
+
+#undef INT_FAST64_MIN
+#undef INT_FAST64_MAX
+#ifdef GL_INT64_T
+# define INT_FAST64_MIN  INT64_MIN
+# define INT_FAST64_MAX  INT64_MAX
+#endif
+
+#undef UINT_FAST64_MAX
+#ifdef GL_UINT64_T
+# define UINT_FAST64_MAX  UINT64_MAX
+#endif
+
+/* 7.18.2.4. Limits of integer types capable of holding object pointers */
+
+#undef INTPTR_MIN
+#undef INTPTR_MAX
+#undef UINTPTR_MAX
+#define INTPTR_MIN  LONG_MIN
+#define INTPTR_MAX  LONG_MAX
+#define UINTPTR_MAX  ULONG_MAX
+
+/* 7.18.2.5. Limits of greatest-width integer types */
+
+#undef INTMAX_MIN
+#undef INTMAX_MAX
+#ifdef INT64_MAX
+# define INTMAX_MIN  INT64_MIN
+# define INTMAX_MAX  INT64_MAX
+#else
+# define INTMAX_MIN  INT32_MIN
+# define INTMAX_MAX  INT32_MAX
+#endif
+
+#undef UINTMAX_MAX
+#ifdef UINT64_MAX
+# define UINTMAX_MAX  UINT64_MAX
+#else
+# define UINTMAX_MAX  UINT32_MAX
+#endif
+
+/* 7.18.3. Limits of other integer types */
+
+/* ptrdiff_t limits */
+#undef PTRDIFF_MIN
+#undef PTRDIFF_MAX
+#if @APPLE_UNIVERSAL_BUILD@
+# ifdef _LP64
+#  define PTRDIFF_MIN  _STDINT_MIN (1, 64, 0l)
+#  define PTRDIFF_MAX  _STDINT_MAX (1, 64, 0l)
+# else
+#  define PTRDIFF_MIN  _STDINT_MIN (1, 32, 0)
+#  define PTRDIFF_MAX  _STDINT_MAX (1, 32, 0)
+# endif
+#else
+# define PTRDIFF_MIN  \
+    _STDINT_MIN (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@)
+# define PTRDIFF_MAX  \
+    _STDINT_MAX (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@)
+#endif
+
+/* sig_atomic_t limits */
+#undef SIG_ATOMIC_MIN
+#undef SIG_ATOMIC_MAX
+#define SIG_ATOMIC_MIN  \
+   _STDINT_MIN (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \
+                0@SIG_ATOMIC_T_SUFFIX@)
+#define SIG_ATOMIC_MAX  \
+   _STDINT_MAX (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \
+                0@SIG_ATOMIC_T_SUFFIX@)
+
+
+/* size_t limit */
+#undef SIZE_MAX
+#if @APPLE_UNIVERSAL_BUILD@
+# ifdef _LP64
+#  define SIZE_MAX  _STDINT_MAX (0, 64, 0ul)
+# else
+#  define SIZE_MAX  _STDINT_MAX (0, 32, 0ul)
+# endif
+#else
+# define SIZE_MAX  _STDINT_MAX (0, @BITSIZEOF_SIZE_T@, 0@SIZE_T_SUFFIX@)
+#endif
+
+/* wchar_t limits */
+/* Get WCHAR_MIN, WCHAR_MAX.
+   This include is not on the top, above, because on OSF/1 4.0 we have a
+   sequence of nested includes
+   <wchar.h> -> <stdio.h> -> <getopt.h> -> <stdlib.h>, and the latter includes
+   <stdint.h> and assumes its types are already defined.  */
+#if @HAVE_WCHAR_H@ && ! (defined WCHAR_MIN && defined WCHAR_MAX)
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+# include <stddef.h>
+# include <stdio.h>
+# include <time.h>
+# define _GL_JUST_INCLUDE_SYSTEM_WCHAR_H
+# include <wchar.h>
+# undef _GL_JUST_INCLUDE_SYSTEM_WCHAR_H
+#endif
+#undef WCHAR_MIN
+#undef WCHAR_MAX
+#define WCHAR_MIN  \
+   _STDINT_MIN (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@)
+#define WCHAR_MAX  \
+   _STDINT_MAX (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@)
+
+/* wint_t limits */
+#undef WINT_MIN
+#undef WINT_MAX
+#define WINT_MIN  \
+   _STDINT_MIN (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
+#define WINT_MAX  \
+   _STDINT_MAX (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
+
+#endif /* !defined __cplusplus || defined __STDC_LIMIT_MACROS */
+
+/* 7.18.4. Macros for integer constants */
+
+#if ! defined __cplusplus || defined __STDC_CONSTANT_MACROS
+
+/* 7.18.4.1. Macros for minimum-width integer constants */
+/* According to ISO C 99 Technical Corrigendum 1 */
+
+/* Here we assume a standard architecture where the hardware integer
+   types have 8, 16, 32, optionally 64 bits, and int is 32 bits.  */
+
+#undef INT8_C
+#undef UINT8_C
+#define INT8_C(x) x
+#define UINT8_C(x) x
+
+#undef INT16_C
+#undef UINT16_C
+#define INT16_C(x) x
+#define UINT16_C(x) x
+
+#undef INT32_C
+#undef UINT32_C
+#define INT32_C(x) x
+#define UINT32_C(x) x ## U
+
+#undef INT64_C
+#undef UINT64_C
+#if LONG_MAX >> 31 >> 31 == 1
+# define INT64_C(x) x##L
+#elif defined _MSC_VER
+# define INT64_C(x) x##i64
+#elif @HAVE_LONG_LONG_INT@
+# define INT64_C(x) x##LL
+#endif
+#if ULONG_MAX >> 31 >> 31 >> 1 == 1
+# define UINT64_C(x) x##UL
+#elif defined _MSC_VER
+# define UINT64_C(x) x##ui64
+#elif @HAVE_UNSIGNED_LONG_LONG_INT@
+# define UINT64_C(x) x##ULL
+#endif
+
+/* 7.18.4.2. Macros for greatest-width integer constants */
+
+#undef INTMAX_C
+#if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
+# define INTMAX_C(x)   x##LL
+#elif defined GL_INT64_T
+# define INTMAX_C(x)   INT64_C(x)
+#else
+# define INTMAX_C(x)   x##L
+#endif
+
+#undef UINTMAX_C
+#if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
+# define UINTMAX_C(x)  x##ULL
+#elif defined GL_UINT64_T
+# define UINTMAX_C(x)  UINT64_C(x)
+#else
+# define UINTMAX_C(x)  x##UL
+#endif
+
+#endif /* !defined __cplusplus || defined __STDC_CONSTANT_MACROS */
+
+#endif /* _@GUARD_PREFIX@_STDINT_H */
+#endif /* !defined _@GUARD_PREFIX@_STDINT_H && !defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H */
diff --git a/lib/stdio-impl.h b/lib/stdio-impl.h
new file mode 100644 (file)
index 0000000..d41c32f
--- /dev/null
@@ -0,0 +1,110 @@
+/* Implementation details of FILE streams.
+   Copyright (C) 2007-2008, 2010-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+/* Many stdio implementations have the same logic and therefore can share
+   the same implementation of stdio extension API, except that some fields
+   have different naming conventions, or their access requires some casts.  */
+
+
+/* BSD stdio derived implementations.  */
+
+#if defined __NetBSD__                         /* NetBSD */
+/* Get __NetBSD_Version__.  */
+# include <sys/param.h>
+#endif
+
+#if defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */
+
+# if defined __DragonFly__          /* DragonFly */
+  /* See <http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/priv_stdio.h?rev=HEAD&content-type=text/x-cvsweb-markup>.  */
+#  define fp_ ((struct { struct __FILE_public pub; \
+                         struct { unsigned char *_base; int _size; } _bf; \
+                         void *cookie; \
+                         void *_close; \
+                         void *_read; \
+                         void *_seek; \
+                         void *_write; \
+                         struct { unsigned char *_base; int _size; } _ub; \
+                         int _ur; \
+                         unsigned char _ubuf[3]; \
+                         unsigned char _nbuf[1]; \
+                         struct { unsigned char *_base; int _size; } _lb; \
+                         int _blksize; \
+                         fpos_t _offset; \
+                         /* More fields, not relevant here.  */ \
+                       } *) fp)
+  /* See <http://www.dragonflybsd.org/cvsweb/src/include/stdio.h?rev=HEAD&content-type=text/x-cvsweb-markup>.  */
+#  define _p pub._p
+#  define _flags pub._flags
+#  define _r pub._r
+#  define _w pub._w
+# else
+#  define fp_ fp
+# endif
+
+# if (defined __NetBSD__ && __NetBSD_Version__ >= 105270000) || defined __OpenBSD__ /* NetBSD >= 1.5ZA, OpenBSD */
+  /* See <http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libc/stdio/fileext.h?rev=HEAD&content-type=text/x-cvsweb-markup>
+     and <http://www.openbsd.org/cgi-bin/cvsweb/src/lib/libc/stdio/fileext.h?rev=HEAD&content-type=text/x-cvsweb-markup> */
+  struct __sfileext
+    {
+      struct  __sbuf _ub; /* ungetc buffer */
+      /* More fields, not relevant here.  */
+    };
+#  define fp_ub ((struct __sfileext *) fp->_ext._base)->_ub
+# else                                         /* FreeBSD, NetBSD <= 1.5Z, DragonFly, MacOS X, Cygwin */
+#  define fp_ub fp_->_ub
+# endif
+
+# define HASUB(fp) (fp_ub._base != NULL)
+
+#endif
+
+
+/* SystemV derived implementations.  */
+
+#ifdef __TANDEM                     /* NonStop Kernel */
+# ifndef _IOERR
+/* These values were determined by the program 'stdioext-flags' at
+   <http://lists.gnu.org/archive/html/bug-gnulib/2010-12/msg00165.html>.  */
+#  define _IOERR   0x40
+#  define _IOREAD  0x80
+#  define _IOWRT    0x4
+#  define _IORW   0x100
+# endif
+#endif
+
+#if defined _IOERR
+
+# if defined __sun && defined _LP64 /* Solaris/{SPARC,AMD64} 64-bit */
+#  define fp_ ((struct { unsigned char *_ptr; \
+                         unsigned char *_base; \
+                         unsigned char *_end; \
+                         long _cnt; \
+                         int _file; \
+                         unsigned int _flag; \
+                       } *) fp)
+# else
+#  define fp_ fp
+# endif
+
+# if defined _SCO_DS                /* OpenServer */
+#  define _cnt __cnt
+#  define _ptr __ptr
+#  define _base __base
+#  define _flag __flag
+# endif
+
+#endif
diff --git a/lib/stdio.in.h b/lib/stdio.in.h
new file mode 100644 (file)
index 0000000..76c244a
--- /dev/null
@@ -0,0 +1,1352 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* A GNU-like <stdio.h>.
+
+   Copyright (C) 2004, 2007-2011 Free Software Foundation, 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; either version 3, 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.  */
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+#if defined __need_FILE || defined __need___FILE || defined _GL_ALREADY_INCLUDING_STDIO_H
+/* Special invocation convention:
+   - Inside glibc header files.
+   - On OSF/1 5.1 we have a sequence of nested includes
+     <stdio.h> -> <getopt.h> -> <ctype.h> -> <sys/localedef.h> ->
+     <sys/lc_core.h> -> <nl_types.h> -> <mesg.h> -> <stdio.h>.
+     In this situation, the functions are not yet declared, therefore we cannot
+     provide the C++ aliases.  */
+
+#@INCLUDE_NEXT@ @NEXT_STDIO_H@
+
+#else
+/* Normal invocation convention.  */
+
+#ifndef _@GUARD_PREFIX@_STDIO_H
+
+#define _GL_ALREADY_INCLUDING_STDIO_H
+
+/* The include_next requires a split double-inclusion guard.  */
+#@INCLUDE_NEXT@ @NEXT_STDIO_H@
+
+#undef _GL_ALREADY_INCLUDING_STDIO_H
+
+#ifndef _@GUARD_PREFIX@_STDIO_H
+#define _@GUARD_PREFIX@_STDIO_H
+
+/* Get va_list.  Needed on many systems, including glibc 2.8.  */
+#include <stdarg.h>
+
+#include <stddef.h>
+
+/* Get off_t and ssize_t.  Needed on many systems, including glibc 2.8
+   and eglibc 2.11.2.  */
+#include <sys/types.h>
+
+/* The __attribute__ feature is available in gcc versions 2.5 and later.
+   The __-protected variants of the attributes 'format' and 'printf' are
+   accepted by gcc versions 2.6.4 (effectively 2.7) and later.
+   We enable _GL_ATTRIBUTE_FORMAT only if these are supported too, because
+   gnulib and libintl do '#define printf __printf__' when they override
+   the 'printf' function.  */
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
+# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec))
+#else
+# define _GL_ATTRIBUTE_FORMAT(spec) /* empty */
+#endif
+
+/* _GL_ATTRIBUTE_FORMAT_PRINTF
+   indicates to GCC that the function takes a format string and arguments,
+   where the format string directives are the ones standardized by ISO C99
+   and POSIX.  */
+#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)
+# define _GL_ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \
+   _GL_ATTRIBUTE_FORMAT ((__gnu_printf__, formatstring_parameter, first_argument))
+#else
+# define _GL_ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \
+   _GL_ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument))
+#endif
+
+/* _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM is like _GL_ATTRIBUTE_FORMAT_PRINTF,
+   except that it indicates to GCC that the supported format string directives
+   are the ones of the system printf(), rather than the ones standardized by
+   ISO C99 and POSIX.  */
+#define _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM(formatstring_parameter, first_argument) \
+  _GL_ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument))
+
+/* _GL_ATTRIBUTE_FORMAT_SCANF
+   indicates to GCC that the function takes a format string and arguments,
+   where the format string directives are the ones standardized by ISO C99
+   and POSIX.  */
+#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)
+# define _GL_ATTRIBUTE_FORMAT_SCANF(formatstring_parameter, first_argument) \
+   _GL_ATTRIBUTE_FORMAT ((__gnu_scanf__, formatstring_parameter, first_argument))
+#else
+# define _GL_ATTRIBUTE_FORMAT_SCANF(formatstring_parameter, first_argument) \
+   _GL_ATTRIBUTE_FORMAT ((__scanf__, formatstring_parameter, first_argument))
+#endif
+
+/* _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM is like _GL_ATTRIBUTE_FORMAT_SCANF,
+   except that it indicates to GCC that the supported format string directives
+   are the ones of the system scanf(), rather than the ones standardized by
+   ISO C99 and POSIX.  */
+#define _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM(formatstring_parameter, first_argument) \
+  _GL_ATTRIBUTE_FORMAT ((__scanf__, formatstring_parameter, first_argument))
+
+/* Solaris 10 declares renameat in <unistd.h>, not in <stdio.h>.  */
+/* But in any case avoid namespace pollution on glibc systems.  */
+#if (@GNULIB_RENAMEAT@ || defined GNULIB_POSIXCHECK) && defined __sun \
+    && ! defined __GLIBC__
+# include <unistd.h>
+#endif
+
+
+/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
+
+/* The definition of _GL_ARG_NONNULL is copied here.  */
+
+/* The definition of _GL_WARN_ON_USE is copied here.  */
+
+/* Macros for stringification.  */
+#define _GL_STDIO_STRINGIZE(token) #token
+#define _GL_STDIO_MACROEXPAND_AND_STRINGIZE(token) _GL_STDIO_STRINGIZE(token)
+
+
+#if @GNULIB_DPRINTF@
+# if @REPLACE_DPRINTF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define dprintf rpl_dprintf
+#  endif
+_GL_FUNCDECL_RPL (dprintf, int, (int fd, const char *format, ...)
+                                _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
+                                _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (dprintf, int, (int fd, const char *format, ...));
+# else
+#  if !@HAVE_DPRINTF@
+_GL_FUNCDECL_SYS (dprintf, int, (int fd, const char *format, ...)
+                                _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
+                                _GL_ARG_NONNULL ((2)));
+#  endif
+_GL_CXXALIAS_SYS (dprintf, int, (int fd, const char *format, ...));
+# endif
+_GL_CXXALIASWARN (dprintf);
+#elif defined GNULIB_POSIXCHECK
+# undef dprintf
+# if HAVE_RAW_DECL_DPRINTF
+_GL_WARN_ON_USE (dprintf, "dprintf is unportable - "
+                 "use gnulib module dprintf for portability");
+# endif
+#endif
+
+#if @GNULIB_FCLOSE@
+/* Close STREAM and its underlying file descriptor.  */
+# if @REPLACE_FCLOSE@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define fclose rpl_fclose
+#  endif
+_GL_FUNCDECL_RPL (fclose, int, (FILE *stream) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (fclose, int, (FILE *stream));
+# else
+_GL_CXXALIAS_SYS (fclose, int, (FILE *stream));
+# endif
+_GL_CXXALIASWARN (fclose);
+#elif defined GNULIB_POSIXCHECK
+# undef fclose
+/* Assume fclose is always declared.  */
+_GL_WARN_ON_USE (fclose, "fclose is not always POSIX compliant - "
+                 "use gnulib module fclose for portable POSIX compliance");
+#endif
+
+#if @GNULIB_FFLUSH@
+/* Flush all pending data on STREAM according to POSIX rules.  Both
+   output and seekable input streams are supported.
+   Note! LOSS OF DATA can occur if fflush is applied on an input stream
+   that is _not_seekable_ or on an update stream that is _not_seekable_
+   and in which the most recent operation was input.  Seekability can
+   be tested with lseek(fileno(fp),0,SEEK_CUR).  */
+# if @REPLACE_FFLUSH@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define fflush rpl_fflush
+#  endif
+_GL_FUNCDECL_RPL (fflush, int, (FILE *gl_stream));
+_GL_CXXALIAS_RPL (fflush, int, (FILE *gl_stream));
+# else
+_GL_CXXALIAS_SYS (fflush, int, (FILE *gl_stream));
+# endif
+_GL_CXXALIASWARN (fflush);
+#elif defined GNULIB_POSIXCHECK
+# undef fflush
+/* Assume fflush is always declared.  */
+_GL_WARN_ON_USE (fflush, "fflush is not always POSIX compliant - "
+                 "use gnulib module fflush for portable POSIX compliance");
+#endif
+
+#if @GNULIB_FGETC@
+# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef fgetc
+#   define fgetc rpl_fgetc
+#  endif
+_GL_FUNCDECL_RPL (fgetc, int, (FILE *stream) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (fgetc, int, (FILE *stream));
+# else
+_GL_CXXALIAS_SYS (fgetc, int, (FILE *stream));
+# endif
+_GL_CXXALIASWARN (fgetc);
+#endif
+
+#if @GNULIB_FGETS@
+# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef fgets
+#   define fgets rpl_fgets
+#  endif
+_GL_FUNCDECL_RPL (fgets, char *, (char *s, int n, FILE *stream)
+                                 _GL_ARG_NONNULL ((1, 3)));
+_GL_CXXALIAS_RPL (fgets, char *, (char *s, int n, FILE *stream));
+# else
+_GL_CXXALIAS_SYS (fgets, char *, (char *s, int n, FILE *stream));
+# endif
+_GL_CXXALIASWARN (fgets);
+#endif
+
+#if @GNULIB_FOPEN@
+# if @REPLACE_FOPEN@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef fopen
+#   define fopen rpl_fopen
+#  endif
+_GL_FUNCDECL_RPL (fopen, FILE *, (const char *filename, const char *mode)
+                                 _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (fopen, FILE *, (const char *filename, const char *mode));
+# else
+_GL_CXXALIAS_SYS (fopen, FILE *, (const char *filename, const char *mode));
+# endif
+_GL_CXXALIASWARN (fopen);
+#elif defined GNULIB_POSIXCHECK
+# undef fopen
+/* Assume fopen is always declared.  */
+_GL_WARN_ON_USE (fopen, "fopen on Win32 platforms is not POSIX compatible - "
+                 "use gnulib module fopen for portability");
+#endif
+
+#if @GNULIB_FPRINTF_POSIX@ || @GNULIB_FPRINTF@
+# if (@GNULIB_FPRINTF_POSIX@ && @REPLACE_FPRINTF@) \
+     || (@GNULIB_FPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@))
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define fprintf rpl_fprintf
+#  endif
+#  define GNULIB_overrides_fprintf 1
+#  if @GNULIB_FPRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@
+_GL_FUNCDECL_RPL (fprintf, int, (FILE *fp, const char *format, ...)
+                                _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
+                                _GL_ARG_NONNULL ((1, 2)));
+#  else
+_GL_FUNCDECL_RPL (fprintf, int, (FILE *fp, const char *format, ...)
+                                _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 3)
+                                _GL_ARG_NONNULL ((1, 2)));
+#  endif
+_GL_CXXALIAS_RPL (fprintf, int, (FILE *fp, const char *format, ...));
+# else
+_GL_CXXALIAS_SYS (fprintf, int, (FILE *fp, const char *format, ...));
+# endif
+_GL_CXXALIASWARN (fprintf);
+#endif
+#if !@GNULIB_FPRINTF_POSIX@ && defined GNULIB_POSIXCHECK
+# if !GNULIB_overrides_fprintf
+#  undef fprintf
+# endif
+/* Assume fprintf is always declared.  */
+_GL_WARN_ON_USE (fprintf, "fprintf is not always POSIX compliant - "
+                 "use gnulib module fprintf-posix for portable "
+                 "POSIX compliance");
+#endif
+
+#if @GNULIB_FPURGE@
+/* Discard all pending buffered I/O data on STREAM.
+   STREAM must not be wide-character oriented.
+   When discarding pending output, the file position is set back to where it
+   was before the write calls.  When discarding pending input, the file
+   position is advanced to match the end of the previously read input.
+   Return 0 if successful.  Upon error, return -1 and set errno.  */
+# if @REPLACE_FPURGE@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define fpurge rpl_fpurge
+#  endif
+_GL_FUNCDECL_RPL (fpurge, int, (FILE *gl_stream) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (fpurge, int, (FILE *gl_stream));
+# else
+#  if !@HAVE_DECL_FPURGE@
+_GL_FUNCDECL_SYS (fpurge, int, (FILE *gl_stream) _GL_ARG_NONNULL ((1)));
+#  endif
+_GL_CXXALIAS_SYS (fpurge, int, (FILE *gl_stream));
+# endif
+_GL_CXXALIASWARN (fpurge);
+#elif defined GNULIB_POSIXCHECK
+# undef fpurge
+# if HAVE_RAW_DECL_FPURGE
+_GL_WARN_ON_USE (fpurge, "fpurge is not always present - "
+                 "use gnulib module fpurge for portability");
+# endif
+#endif
+
+#if @GNULIB_FPUTC@
+# if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef fputc
+#   define fputc rpl_fputc
+#  endif
+_GL_FUNCDECL_RPL (fputc, int, (int c, FILE *stream) _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (fputc, int, (int c, FILE *stream));
+# else
+_GL_CXXALIAS_SYS (fputc, int, (int c, FILE *stream));
+# endif
+_GL_CXXALIASWARN (fputc);
+#endif
+
+#if @GNULIB_FPUTS@
+# if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef fputs
+#   define fputs rpl_fputs
+#  endif
+_GL_FUNCDECL_RPL (fputs, int, (const char *string, FILE *stream)
+                              _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (fputs, int, (const char *string, FILE *stream));
+# else
+_GL_CXXALIAS_SYS (fputs, int, (const char *string, FILE *stream));
+# endif
+_GL_CXXALIASWARN (fputs);
+#endif
+
+#if @GNULIB_FREAD@
+# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef fread
+#   define fread rpl_fread
+#  endif
+_GL_FUNCDECL_RPL (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream)
+                                 _GL_ARG_NONNULL ((4)));
+_GL_CXXALIAS_RPL (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream));
+# else
+_GL_CXXALIAS_SYS (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream));
+# endif
+_GL_CXXALIASWARN (fread);
+#endif
+
+#if @GNULIB_FREOPEN@
+# if @REPLACE_FREOPEN@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef freopen
+#   define freopen rpl_freopen
+#  endif
+_GL_FUNCDECL_RPL (freopen, FILE *,
+                  (const char *filename, const char *mode, FILE *stream)
+                  _GL_ARG_NONNULL ((2, 3)));
+_GL_CXXALIAS_RPL (freopen, FILE *,
+                  (const char *filename, const char *mode, FILE *stream));
+# else
+_GL_CXXALIAS_SYS (freopen, FILE *,
+                  (const char *filename, const char *mode, FILE *stream));
+# endif
+_GL_CXXALIASWARN (freopen);
+#elif defined GNULIB_POSIXCHECK
+# undef freopen
+/* Assume freopen is always declared.  */
+_GL_WARN_ON_USE (freopen,
+                 "freopen on Win32 platforms is not POSIX compatible - "
+                 "use gnulib module freopen for portability");
+#endif
+
+#if @GNULIB_FSCANF@
+# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef fscanf
+#   define fscanf rpl_fscanf
+#  endif
+_GL_FUNCDECL_RPL (fscanf, int, (FILE *stream, const char *format, ...)
+                               _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 3)
+                               _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (fscanf, int, (FILE *stream, const char *format, ...));
+# else
+_GL_CXXALIAS_SYS (fscanf, int, (FILE *stream, const char *format, ...));
+# endif
+_GL_CXXALIASWARN (fscanf);
+#endif
+
+
+/* Set up the following warnings, based on which modules are in use.
+   GNU Coding Standards discourage the use of fseek, since it imposes
+   an arbitrary limitation on some 32-bit hosts.  Remember that the
+   fseek module depends on the fseeko module, so we only have three
+   cases to consider:
+
+   1. The developer is not using either module.  Issue a warning under
+   GNULIB_POSIXCHECK for both functions, to remind them that both
+   functions have bugs on some systems.  _GL_NO_LARGE_FILES has no
+   impact on this warning.
+
+   2. The developer is using both modules.  They may be unaware of the
+   arbitrary limitations of fseek, so issue a warning under
+   GNULIB_POSIXCHECK.  On the other hand, they may be using both
+   modules intentionally, so the developer can define
+   _GL_NO_LARGE_FILES in the compilation units where the use of fseek
+   is safe, to silence the warning.
+
+   3. The developer is using the fseeko module, but not fseek.  Gnulib
+   guarantees that fseek will still work around platform bugs in that
+   case, but we presume that the developer is aware of the pitfalls of
+   fseek and was trying to avoid it, so issue a warning even when
+   GNULIB_POSIXCHECK is undefined.  Again, _GL_NO_LARGE_FILES can be
+   defined to silence the warning in particular compilation units.
+   In C++ compilations with GNULIB_NAMESPACE, in order to avoid that
+   fseek gets defined as a macro, it is recommended that the developer
+   uses the fseek module, even if he is not calling the fseek function.
+
+   Most gnulib clients that perform stream operations should fall into
+   category 3.  */
+
+#if @GNULIB_FSEEK@
+# if defined GNULIB_POSIXCHECK && !defined _GL_NO_LARGE_FILES
+#  define _GL_FSEEK_WARN /* Category 2, above.  */
+#  undef fseek
+# endif
+# if @REPLACE_FSEEK@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef fseek
+#   define fseek rpl_fseek
+#  endif
+_GL_FUNCDECL_RPL (fseek, int, (FILE *fp, long offset, int whence)
+                              _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (fseek, int, (FILE *fp, long offset, int whence));
+# else
+_GL_CXXALIAS_SYS (fseek, int, (FILE *fp, long offset, int whence));
+# endif
+_GL_CXXALIASWARN (fseek);
+#endif
+
+#if @GNULIB_FSEEKO@
+# if !@GNULIB_FSEEK@ && !defined _GL_NO_LARGE_FILES
+#  define _GL_FSEEK_WARN /* Category 3, above.  */
+#  undef fseek
+# endif
+# if @REPLACE_FSEEKO@
+/* Provide an fseeko function that is aware of a preceding fflush(), and which
+   detects pipes.  */
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef fseeko
+#   define fseeko rpl_fseeko
+#  endif
+_GL_FUNCDECL_RPL (fseeko, int, (FILE *fp, off_t offset, int whence)
+                               _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (fseeko, int, (FILE *fp, off_t offset, int whence));
+# else
+#  if ! @HAVE_DECL_FSEEKO@
+_GL_FUNCDECL_SYS (fseeko, int, (FILE *fp, off_t offset, int whence)
+                               _GL_ARG_NONNULL ((1)));
+#  endif
+_GL_CXXALIAS_SYS (fseeko, int, (FILE *fp, off_t offset, int whence));
+# endif
+_GL_CXXALIASWARN (fseeko);
+# if (@REPLACE_FSEEKO@ || !@HAVE_FSEEKO@) && !@GNULIB_FSEEK@
+   /* Provide an fseek function that is consistent with fseeko.  */
+   /* In order to avoid that fseek gets defined as a macro here, the
+      developer can request the 'fseek' module.  */
+#  if !GNULIB_defined_fseek_function
+#   undef fseek
+#   define fseek rpl_fseek
+static inline int _GL_ARG_NONNULL ((1))
+rpl_fseek (FILE *fp, long offset, int whence)
+{
+#   if @REPLACE_FSEEKO@
+  return rpl_fseeko (fp, offset, whence);
+#   else
+  return fseeko (fp, offset, whence);
+#   endif
+}
+#   define GNULIB_defined_fseek_function 1
+#  endif
+# endif
+#elif defined GNULIB_POSIXCHECK
+# define _GL_FSEEK_WARN /* Category 1, above.  */
+# undef fseek
+# undef fseeko
+# if HAVE_RAW_DECL_FSEEKO
+_GL_WARN_ON_USE (fseeko, "fseeko is unportable - "
+                 "use gnulib module fseeko for portability");
+# endif
+#endif
+
+#ifdef _GL_FSEEK_WARN
+# undef _GL_FSEEK_WARN
+/* Here, either fseek is undefined (but C89 guarantees that it is
+   declared), or it is defined as rpl_fseek (declared above).  */
+_GL_WARN_ON_USE (fseek, "fseek cannot handle files larger than 4 GB "
+                 "on 32-bit platforms - "
+                 "use fseeko function for handling of large files");
+#endif
+
+
+/* ftell, ftello.  See the comments on fseek/fseeko.  */
+
+#if @GNULIB_FTELL@
+# if defined GNULIB_POSIXCHECK && !defined _GL_NO_LARGE_FILES
+#  define _GL_FTELL_WARN /* Category 2, above.  */
+#  undef ftell
+# endif
+# if @REPLACE_FTELL@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef ftell
+#   define ftell rpl_ftell
+#  endif
+_GL_FUNCDECL_RPL (ftell, long, (FILE *fp) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (ftell, long, (FILE *fp));
+# else
+_GL_CXXALIAS_SYS (ftell, long, (FILE *fp));
+# endif
+_GL_CXXALIASWARN (ftell);
+#endif
+
+#if @GNULIB_FTELLO@
+# if !@GNULIB_FTELL@ && !defined _GL_NO_LARGE_FILES
+#  define _GL_FTELL_WARN /* Category 3, above.  */
+#  undef ftell
+# endif
+# if @REPLACE_FTELLO@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef ftello
+#   define ftello rpl_ftello
+#  endif
+_GL_FUNCDECL_RPL (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (ftello, off_t, (FILE *fp));
+# else
+#  if ! @HAVE_DECL_FTELLO@
+_GL_FUNCDECL_SYS (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1)));
+#  endif
+_GL_CXXALIAS_SYS (ftello, off_t, (FILE *fp));
+# endif
+_GL_CXXALIASWARN (ftello);
+# if (@REPLACE_FTELLO@ || !@HAVE_FTELLO@) && !@GNULIB_FTELL@
+   /* Provide an ftell function that is consistent with ftello.  */
+   /* In order to avoid that ftell gets defined as a macro here, the
+      developer can request the 'ftell' module.  */
+#  if !GNULIB_defined_ftell_function
+#   undef ftell
+#   define ftell rpl_ftell
+static inline long _GL_ARG_NONNULL ((1))
+rpl_ftell (FILE *f)
+{
+#   if @REPLACE_FTELLO@
+  return rpl_ftello (f);
+#   else
+  return ftello (f);
+#   endif
+}
+#   define GNULIB_defined_ftell_function 1
+#  endif
+# endif
+#elif defined GNULIB_POSIXCHECK
+# define _GL_FTELL_WARN /* Category 1, above.  */
+# undef ftell
+# undef ftello
+# if HAVE_RAW_DECL_FTELLO
+_GL_WARN_ON_USE (ftello, "ftello is unportable - "
+                 "use gnulib module ftello for portability");
+# endif
+#endif
+
+#ifdef _GL_FTELL_WARN
+# undef _GL_FTELL_WARN
+/* Here, either ftell is undefined (but C89 guarantees that it is
+   declared), or it is defined as rpl_ftell (declared above).  */
+_GL_WARN_ON_USE (ftell, "ftell cannot handle files larger than 4 GB "
+                 "on 32-bit platforms - "
+                 "use ftello function for handling of large files");
+#endif
+
+
+#if @GNULIB_FWRITE@
+# if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef fwrite
+#   define fwrite rpl_fwrite
+#  endif
+_GL_FUNCDECL_RPL (fwrite, size_t,
+                  (const void *ptr, size_t s, size_t n, FILE *stream)
+                  _GL_ARG_NONNULL ((1, 4)));
+_GL_CXXALIAS_RPL (fwrite, size_t,
+                  (const void *ptr, size_t s, size_t n, FILE *stream));
+# else
+_GL_CXXALIAS_SYS (fwrite, size_t,
+                  (const void *ptr, size_t s, size_t n, FILE *stream));
+
+/* Work around glibc bug 11959
+   <http://sources.redhat.com/bugzilla/show_bug.cgi?id=11959>,
+   which sometimes causes an unwanted diagnostic for fwrite calls.
+   This affects only function declaration attributes, so it's not
+   needed for C++.  */
+#  if !defined __cplusplus && 0 < __USE_FORTIFY_LEVEL
+static inline size_t _GL_ARG_NONNULL ((1, 4))
+rpl_fwrite (const void *ptr, size_t s, size_t n, FILE *stream)
+{
+  size_t r = fwrite (ptr, s, n, stream);
+  (void) r;
+  return r;
+}
+#   undef fwrite
+#   define fwrite rpl_fwrite
+#  endif
+# endif
+_GL_CXXALIASWARN (fwrite);
+#endif
+
+#if @GNULIB_GETC@
+# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef getc
+#   define getc rpl_fgetc
+#  endif
+_GL_FUNCDECL_RPL (fgetc, int, (FILE *stream) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL_1 (getc, rpl_fgetc, int, (FILE *stream));
+# else
+_GL_CXXALIAS_SYS (getc, int, (FILE *stream));
+# endif
+_GL_CXXALIASWARN (getc);
+#endif
+
+#if @GNULIB_GETCHAR@
+# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef getchar
+#   define getchar rpl_getchar
+#  endif
+_GL_FUNCDECL_RPL (getchar, int, (void));
+_GL_CXXALIAS_RPL (getchar, int, (void));
+# else
+_GL_CXXALIAS_SYS (getchar, int, (void));
+# endif
+_GL_CXXALIASWARN (getchar);
+#endif
+
+#if @GNULIB_GETDELIM@
+/* Read input, up to (and including) the next occurrence of DELIMITER, from
+   STREAM, store it in *LINEPTR (and NUL-terminate it).
+   *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE
+   bytes of space.  It is realloc'd as necessary.
+   Return the number of bytes read and stored at *LINEPTR (not including the
+   NUL terminator), or -1 on error or EOF.  */
+# if @REPLACE_GETDELIM@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef getdelim
+#   define getdelim rpl_getdelim
+#  endif
+_GL_FUNCDECL_RPL (getdelim, ssize_t,
+                  (char **lineptr, size_t *linesize, int delimiter,
+                   FILE *stream)
+                  _GL_ARG_NONNULL ((1, 2, 4)));
+_GL_CXXALIAS_RPL (getdelim, ssize_t,
+                  (char **lineptr, size_t *linesize, int delimiter,
+                   FILE *stream));
+# else
+#  if !@HAVE_DECL_GETDELIM@
+_GL_FUNCDECL_SYS (getdelim, ssize_t,
+                  (char **lineptr, size_t *linesize, int delimiter,
+                   FILE *stream)
+                  _GL_ARG_NONNULL ((1, 2, 4)));
+#  endif
+_GL_CXXALIAS_SYS (getdelim, ssize_t,
+                  (char **lineptr, size_t *linesize, int delimiter,
+                   FILE *stream));
+# endif
+_GL_CXXALIASWARN (getdelim);
+#elif defined GNULIB_POSIXCHECK
+# undef getdelim
+# if HAVE_RAW_DECL_GETDELIM
+_GL_WARN_ON_USE (getdelim, "getdelim is unportable - "
+                 "use gnulib module getdelim for portability");
+# endif
+#endif
+
+#if @GNULIB_GETLINE@
+/* Read a line, up to (and including) the next newline, from STREAM, store it
+   in *LINEPTR (and NUL-terminate it).
+   *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE
+   bytes of space.  It is realloc'd as necessary.
+   Return the number of bytes read and stored at *LINEPTR (not including the
+   NUL terminator), or -1 on error or EOF.  */
+# if @REPLACE_GETLINE@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef getline
+#   define getline rpl_getline
+#  endif
+_GL_FUNCDECL_RPL (getline, ssize_t,
+                  (char **lineptr, size_t *linesize, FILE *stream)
+                  _GL_ARG_NONNULL ((1, 2, 3)));
+_GL_CXXALIAS_RPL (getline, ssize_t,
+                  (char **lineptr, size_t *linesize, FILE *stream));
+# else
+#  if !@HAVE_DECL_GETLINE@
+_GL_FUNCDECL_SYS (getline, ssize_t,
+                  (char **lineptr, size_t *linesize, FILE *stream)
+                  _GL_ARG_NONNULL ((1, 2, 3)));
+#  endif
+_GL_CXXALIAS_SYS (getline, ssize_t,
+                  (char **lineptr, size_t *linesize, FILE *stream));
+# endif
+# if @HAVE_DECL_GETLINE@
+_GL_CXXALIASWARN (getline);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef getline
+# if HAVE_RAW_DECL_GETLINE
+_GL_WARN_ON_USE (getline, "getline is unportable - "
+                 "use gnulib module getline for portability");
+# endif
+#endif
+
+#if @GNULIB_GETS@
+# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef gets
+#   define gets rpl_gets
+#  endif
+_GL_FUNCDECL_RPL (gets, char *, (char *s) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (gets, char *, (char *s));
+# else
+_GL_CXXALIAS_SYS (gets, char *, (char *s));
+#  undef gets
+# endif
+_GL_CXXALIASWARN (gets);
+/* It is very rare that the developer ever has full control of stdin,
+   so any use of gets warrants an unconditional warning.  Assume it is
+   always declared, since it is required by C89.  */
+_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
+#endif
+
+
+#if @GNULIB_OBSTACK_PRINTF@ || @GNULIB_OBSTACK_PRINTF_POSIX@
+struct obstack;
+/* Grow an obstack with formatted output.  Return the number of
+   bytes added to OBS.  No trailing nul byte is added, and the
+   object should be closed with obstack_finish before use.  Upon
+   memory allocation error, call obstack_alloc_failed_handler.  Upon
+   other error, return -1.  */
+# if @REPLACE_OBSTACK_PRINTF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define obstack_printf rpl_obstack_printf
+#  endif
+_GL_FUNCDECL_RPL (obstack_printf, int,
+                  (struct obstack *obs, const char *format, ...)
+                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
+                  _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (obstack_printf, int,
+                  (struct obstack *obs, const char *format, ...));
+# else
+#  if !@HAVE_DECL_OBSTACK_PRINTF@
+_GL_FUNCDECL_SYS (obstack_printf, int,
+                  (struct obstack *obs, const char *format, ...)
+                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
+                  _GL_ARG_NONNULL ((1, 2)));
+#  endif
+_GL_CXXALIAS_SYS (obstack_printf, int,
+                  (struct obstack *obs, const char *format, ...));
+# endif
+_GL_CXXALIASWARN (obstack_printf);
+# if @REPLACE_OBSTACK_PRINTF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define obstack_vprintf rpl_obstack_vprintf
+#  endif
+_GL_FUNCDECL_RPL (obstack_vprintf, int,
+                  (struct obstack *obs, const char *format, va_list args)
+                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
+                  _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (obstack_vprintf, int,
+                  (struct obstack *obs, const char *format, va_list args));
+# else
+#  if !@HAVE_DECL_OBSTACK_PRINTF@
+_GL_FUNCDECL_SYS (obstack_vprintf, int,
+                  (struct obstack *obs, const char *format, va_list args)
+                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
+                  _GL_ARG_NONNULL ((1, 2)));
+#  endif
+_GL_CXXALIAS_SYS (obstack_vprintf, int,
+                  (struct obstack *obs, const char *format, va_list args));
+# endif
+_GL_CXXALIASWARN (obstack_vprintf);
+#endif
+
+#if @GNULIB_PERROR@
+/* Print a message to standard error, describing the value of ERRNO,
+   (if STRING is not NULL and not empty) prefixed with STRING and ": ",
+   and terminated with a newline.  */
+# if @REPLACE_PERROR@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define perror rpl_perror
+#  endif
+_GL_FUNCDECL_RPL (perror, void, (const char *string));
+_GL_CXXALIAS_RPL (perror, void, (const char *string));
+# else
+_GL_CXXALIAS_SYS (perror, void, (const char *string));
+# endif
+_GL_CXXALIASWARN (perror);
+#elif defined GNULIB_POSIXCHECK
+# undef perror
+/* Assume perror is always declared.  */
+_GL_WARN_ON_USE (perror, "perror is not always POSIX compliant - "
+                 "use gnulib module perror for portability");
+#endif
+
+#if @GNULIB_POPEN@
+# if @REPLACE_POPEN@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef popen
+#   define popen rpl_popen
+#  endif
+_GL_FUNCDECL_RPL (popen, FILE *, (const char *cmd, const char *mode)
+                                 _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (popen, FILE *, (const char *cmd, const char *mode));
+# else
+_GL_CXXALIAS_SYS (popen, FILE *, (const char *cmd, const char *mode));
+# endif
+_GL_CXXALIASWARN (popen);
+#elif defined GNULIB_POSIXCHECK
+# undef popen
+# if HAVE_RAW_DECL_POPEN
+_GL_WARN_ON_USE (popen, "popen is buggy on some platforms - "
+                 "use gnulib module popen or pipe for more portability");
+# endif
+#endif
+
+#if @GNULIB_PRINTF_POSIX@ || @GNULIB_PRINTF@
+# if (@GNULIB_PRINTF_POSIX@ && @REPLACE_PRINTF@) \
+     || (@GNULIB_PRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@))
+#  if defined __GNUC__
+#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+/* Don't break __attribute__((format(printf,M,N))).  */
+#    define printf __printf__
+#   endif
+#   if @GNULIB_PRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@
+_GL_FUNCDECL_RPL_1 (__printf__, int,
+                    (const char *format, ...)
+                    __asm__ (@ASM_SYMBOL_PREFIX@
+                             _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf))
+                    _GL_ATTRIBUTE_FORMAT_PRINTF (1, 2)
+                    _GL_ARG_NONNULL ((1)));
+#   else
+_GL_FUNCDECL_RPL_1 (__printf__, int,
+                    (const char *format, ...)
+                    __asm__ (@ASM_SYMBOL_PREFIX@
+                             _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf))
+                    _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 2)
+                    _GL_ARG_NONNULL ((1)));
+#   endif
+_GL_CXXALIAS_RPL_1 (printf, __printf__, int, (const char *format, ...));
+#  else
+#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#    define printf rpl_printf
+#   endif
+_GL_FUNCDECL_RPL (printf, int,
+                  (const char *format, ...)
+                  _GL_ATTRIBUTE_FORMAT_PRINTF (1, 2)
+                  _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (printf, int, (const char *format, ...));
+#  endif
+#  define GNULIB_overrides_printf 1
+# else
+_GL_CXXALIAS_SYS (printf, int, (const char *format, ...));
+# endif
+_GL_CXXALIASWARN (printf);
+#endif
+#if !@GNULIB_PRINTF_POSIX@ && defined GNULIB_POSIXCHECK
+# if !GNULIB_overrides_printf
+#  undef printf
+# endif
+/* Assume printf is always declared.  */
+_GL_WARN_ON_USE (printf, "printf is not always POSIX compliant - "
+                 "use gnulib module printf-posix for portable "
+                 "POSIX compliance");
+#endif
+
+#if @GNULIB_PUTC@
+# if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef putc
+#   define putc rpl_fputc
+#  endif
+_GL_FUNCDECL_RPL (fputc, int, (int c, FILE *stream) _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL_1 (putc, rpl_fputc, int, (int c, FILE *stream));
+# else
+_GL_CXXALIAS_SYS (putc, int, (int c, FILE *stream));
+# endif
+_GL_CXXALIASWARN (putc);
+#endif
+
+#if @GNULIB_PUTCHAR@
+# if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef putchar
+#   define putchar rpl_putchar
+#  endif
+_GL_FUNCDECL_RPL (putchar, int, (int c));
+_GL_CXXALIAS_RPL (putchar, int, (int c));
+# else
+_GL_CXXALIAS_SYS (putchar, int, (int c));
+# endif
+_GL_CXXALIASWARN (putchar);
+#endif
+
+#if @GNULIB_PUTS@
+# if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef puts
+#   define puts rpl_puts
+#  endif
+_GL_FUNCDECL_RPL (puts, int, (const char *string) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (puts, int, (const char *string));
+# else
+_GL_CXXALIAS_SYS (puts, int, (const char *string));
+# endif
+_GL_CXXALIASWARN (puts);
+#endif
+
+#if @GNULIB_REMOVE@
+# if @REPLACE_REMOVE@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef remove
+#   define remove rpl_remove
+#  endif
+_GL_FUNCDECL_RPL (remove, int, (const char *name) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (remove, int, (const char *name));
+# else
+_GL_CXXALIAS_SYS (remove, int, (const char *name));
+# endif
+_GL_CXXALIASWARN (remove);
+#elif defined GNULIB_POSIXCHECK
+# undef remove
+/* Assume remove is always declared.  */
+_GL_WARN_ON_USE (remove, "remove cannot handle directories on some platforms - "
+                 "use gnulib module remove for more portability");
+#endif
+
+#if @GNULIB_RENAME@
+# if @REPLACE_RENAME@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef rename
+#   define rename rpl_rename
+#  endif
+_GL_FUNCDECL_RPL (rename, int,
+                  (const char *old_filename, const char *new_filename)
+                  _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (rename, int,
+                  (const char *old_filename, const char *new_filename));
+# else
+_GL_CXXALIAS_SYS (rename, int,
+                  (const char *old_filename, const char *new_filename));
+# endif
+_GL_CXXALIASWARN (rename);
+#elif defined GNULIB_POSIXCHECK
+# undef rename
+/* Assume rename is always declared.  */
+_GL_WARN_ON_USE (rename, "rename is buggy on some platforms - "
+                 "use gnulib module rename for more portability");
+#endif
+
+#if @GNULIB_RENAMEAT@
+# if @REPLACE_RENAMEAT@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef renameat
+#   define renameat rpl_renameat
+#  endif
+_GL_FUNCDECL_RPL (renameat, int,
+                  (int fd1, char const *file1, int fd2, char const *file2)
+                  _GL_ARG_NONNULL ((2, 4)));
+_GL_CXXALIAS_RPL (renameat, int,
+                  (int fd1, char const *file1, int fd2, char const *file2));
+# else
+#  if !@HAVE_RENAMEAT@
+_GL_FUNCDECL_SYS (renameat, int,
+                  (int fd1, char const *file1, int fd2, char const *file2)
+                  _GL_ARG_NONNULL ((2, 4)));
+#  endif
+_GL_CXXALIAS_SYS (renameat, int,
+                  (int fd1, char const *file1, int fd2, char const *file2));
+# endif
+_GL_CXXALIASWARN (renameat);
+#elif defined GNULIB_POSIXCHECK
+# undef renameat
+# if HAVE_RAW_DECL_RENAMEAT
+_GL_WARN_ON_USE (renameat, "renameat is not portable - "
+                 "use gnulib module renameat for portability");
+# endif
+#endif
+
+#if @GNULIB_SCANF@
+# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
+#  if defined __GNUC__
+#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#    undef scanf
+/* Don't break __attribute__((format(scanf,M,N))).  */
+#    define scanf __scanf__
+#   endif
+_GL_FUNCDECL_RPL_1 (__scanf__, int,
+                    (const char *format, ...)
+                    __asm__ (@ASM_SYMBOL_PREFIX@
+                             _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_scanf))
+                    _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2)
+                    _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL_1 (scanf, __scanf__, int, (const char *format, ...));
+#  else
+#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#    undef scanf
+#    define scanf rpl_scanf
+#   endif
+_GL_FUNCDECL_RPL (scanf, int, (const char *format, ...)
+                              _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2)
+                              _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (scanf, int, (const char *format, ...));
+#  endif
+# else
+_GL_CXXALIAS_SYS (scanf, int, (const char *format, ...));
+# endif
+_GL_CXXALIASWARN (scanf);
+#endif
+
+#if @GNULIB_SNPRINTF@
+# if @REPLACE_SNPRINTF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define snprintf rpl_snprintf
+#  endif
+_GL_FUNCDECL_RPL (snprintf, int,
+                  (char *str, size_t size, const char *format, ...)
+                  _GL_ATTRIBUTE_FORMAT_PRINTF (3, 4)
+                  _GL_ARG_NONNULL ((3)));
+_GL_CXXALIAS_RPL (snprintf, int,
+                  (char *str, size_t size, const char *format, ...));
+# else
+#  if !@HAVE_DECL_SNPRINTF@
+_GL_FUNCDECL_SYS (snprintf, int,
+                  (char *str, size_t size, const char *format, ...)
+                  _GL_ATTRIBUTE_FORMAT_PRINTF (3, 4)
+                  _GL_ARG_NONNULL ((3)));
+#  endif
+_GL_CXXALIAS_SYS (snprintf, int,
+                  (char *str, size_t size, const char *format, ...));
+# endif
+_GL_CXXALIASWARN (snprintf);
+#elif defined GNULIB_POSIXCHECK
+# undef snprintf
+# if HAVE_RAW_DECL_SNPRINTF
+_GL_WARN_ON_USE (snprintf, "snprintf is unportable - "
+                 "use gnulib module snprintf for portability");
+# endif
+#endif
+
+/* Some people would argue that sprintf should be handled like gets
+   (for example, OpenBSD issues a link warning for both functions),
+   since both can cause security holes due to buffer overruns.
+   However, we believe that sprintf can be used safely, and is more
+   efficient than snprintf in those safe cases; and as proof of our
+   belief, we use sprintf in several gnulib modules.  So this header
+   intentionally avoids adding a warning to sprintf except when
+   GNULIB_POSIXCHECK is defined.  */
+
+#if @GNULIB_SPRINTF_POSIX@
+# if @REPLACE_SPRINTF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define sprintf rpl_sprintf
+#  endif
+_GL_FUNCDECL_RPL (sprintf, int, (char *str, const char *format, ...)
+                                _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
+                                _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (sprintf, int, (char *str, const char *format, ...));
+# else
+_GL_CXXALIAS_SYS (sprintf, int, (char *str, const char *format, ...));
+# endif
+_GL_CXXALIASWARN (sprintf);
+#elif defined GNULIB_POSIXCHECK
+# undef sprintf
+/* Assume sprintf is always declared.  */
+_GL_WARN_ON_USE (sprintf, "sprintf is not always POSIX compliant - "
+                 "use gnulib module sprintf-posix for portable "
+                 "POSIX compliance");
+#endif
+
+#if @GNULIB_TMPFILE@
+# if @REPLACE_TMPFILE@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define tmpfile rpl_tmpfile
+#  endif
+_GL_FUNCDECL_RPL (tmpfile, FILE *, (void));
+_GL_CXXALIAS_RPL (tmpfile, FILE *, (void));
+# else
+_GL_CXXALIAS_SYS (tmpfile, FILE *, (void));
+# endif
+_GL_CXXALIASWARN (tmpfile);
+#elif defined GNULIB_POSIXCHECK
+# undef tmpfile
+# if HAVE_RAW_DECL_TMPFILE
+_GL_WARN_ON_USE (tmpfile, "tmpfile is not usable on mingw - "
+                 "use gnulib module tmpfile for portability");
+# endif
+#endif
+
+#if @GNULIB_VASPRINTF@
+/* Write formatted output to a string dynamically allocated with malloc().
+   If the memory allocation succeeds, store the address of the string in
+   *RESULT and return the number of resulting bytes, excluding the trailing
+   NUL.  Upon memory allocation error, or some other error, return -1.  */
+# if @REPLACE_VASPRINTF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define asprintf rpl_asprintf
+#  endif
+_GL_FUNCDECL_RPL (asprintf, int,
+                  (char **result, const char *format, ...)
+                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
+                  _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (asprintf, int,
+                  (char **result, const char *format, ...));
+# else
+#  if !@HAVE_VASPRINTF@
+_GL_FUNCDECL_SYS (asprintf, int,
+                  (char **result, const char *format, ...)
+                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
+                  _GL_ARG_NONNULL ((1, 2)));
+#  endif
+_GL_CXXALIAS_SYS (asprintf, int,
+                  (char **result, const char *format, ...));
+# endif
+_GL_CXXALIASWARN (asprintf);
+# if @REPLACE_VASPRINTF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define vasprintf rpl_vasprintf
+#  endif
+_GL_FUNCDECL_RPL (vasprintf, int,
+                  (char **result, const char *format, va_list args)
+                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
+                  _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (vasprintf, int,
+                  (char **result, const char *format, va_list args));
+# else
+#  if !@HAVE_VASPRINTF@
+_GL_FUNCDECL_SYS (vasprintf, int,
+                  (char **result, const char *format, va_list args)
+                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
+                  _GL_ARG_NONNULL ((1, 2)));
+#  endif
+_GL_CXXALIAS_SYS (vasprintf, int,
+                  (char **result, const char *format, va_list args));
+# endif
+_GL_CXXALIASWARN (vasprintf);
+#endif
+
+#if @GNULIB_VDPRINTF@
+# if @REPLACE_VDPRINTF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define vdprintf rpl_vdprintf
+#  endif
+_GL_FUNCDECL_RPL (vdprintf, int, (int fd, const char *format, va_list args)
+                                 _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
+                                 _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (vdprintf, int, (int fd, const char *format, va_list args));
+# else
+#  if !@HAVE_VDPRINTF@
+_GL_FUNCDECL_SYS (vdprintf, int, (int fd, const char *format, va_list args)
+                                 _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
+                                 _GL_ARG_NONNULL ((2)));
+#  endif
+/* Need to cast, because on Solaris, the third parameter will likely be
+                                                    __va_list args.  */
+_GL_CXXALIAS_SYS_CAST (vdprintf, int,
+                       (int fd, const char *format, va_list args));
+# endif
+_GL_CXXALIASWARN (vdprintf);
+#elif defined GNULIB_POSIXCHECK
+# undef vdprintf
+# if HAVE_RAW_DECL_VDPRINTF
+_GL_WARN_ON_USE (vdprintf, "vdprintf is unportable - "
+                 "use gnulib module vdprintf for portability");
+# endif
+#endif
+
+#if @GNULIB_VFPRINTF_POSIX@ || @GNULIB_VFPRINTF@
+# if (@GNULIB_VFPRINTF_POSIX@ && @REPLACE_VFPRINTF@) \
+     || (@GNULIB_VFPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@))
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define vfprintf rpl_vfprintf
+#  endif
+#  define GNULIB_overrides_vfprintf 1
+#  if @GNULIB_VFPRINTF_POSIX@
+_GL_FUNCDECL_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args)
+                                 _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
+                                 _GL_ARG_NONNULL ((1, 2)));
+#  else
+_GL_FUNCDECL_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args)
+                                 _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 0)
+                                 _GL_ARG_NONNULL ((1, 2)));
+#  endif
+_GL_CXXALIAS_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args));
+# else
+/* Need to cast, because on Solaris, the third parameter is
+                                                      __va_list args
+   and GCC's fixincludes did not change this to __gnuc_va_list.  */
+_GL_CXXALIAS_SYS_CAST (vfprintf, int,
+                       (FILE *fp, const char *format, va_list args));
+# endif
+_GL_CXXALIASWARN (vfprintf);
+#endif
+#if !@GNULIB_VFPRINTF_POSIX@ && defined GNULIB_POSIXCHECK
+# if !GNULIB_overrides_vfprintf
+#  undef vfprintf
+# endif
+/* Assume vfprintf is always declared.  */
+_GL_WARN_ON_USE (vfprintf, "vfprintf is not always POSIX compliant - "
+                 "use gnulib module vfprintf-posix for portable "
+                      "POSIX compliance");
+#endif
+
+#if @GNULIB_VFSCANF@
+# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef vfscanf
+#   define vfscanf rpl_vfscanf
+#  endif
+_GL_FUNCDECL_RPL (vfscanf, int,
+                  (FILE *stream, const char *format, va_list args)
+                  _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 0)
+                  _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (vfscanf, int,
+                  (FILE *stream, const char *format, va_list args));
+# else
+_GL_CXXALIAS_SYS (vfscanf, int,
+                  (FILE *stream, const char *format, va_list args));
+# endif
+_GL_CXXALIASWARN (vfscanf);
+#endif
+
+#if @GNULIB_VPRINTF_POSIX@ || @GNULIB_VPRINTF@
+# if (@GNULIB_VPRINTF_POSIX@ && @REPLACE_VPRINTF@) \
+     || (@GNULIB_VPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@))
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define vprintf rpl_vprintf
+#  endif
+#  define GNULIB_overrides_vprintf 1
+#  if @GNULIB_VPRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@
+_GL_FUNCDECL_RPL (vprintf, int, (const char *format, va_list args)
+                                _GL_ATTRIBUTE_FORMAT_PRINTF (1, 0)
+                                _GL_ARG_NONNULL ((1)));
+#  else
+_GL_FUNCDECL_RPL (vprintf, int, (const char *format, va_list args)
+                                _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 0)
+                                _GL_ARG_NONNULL ((1)));
+#  endif
+_GL_CXXALIAS_RPL (vprintf, int, (const char *format, va_list args));
+# else
+/* Need to cast, because on Solaris, the second parameter is
+                                                          __va_list args
+   and GCC's fixincludes did not change this to __gnuc_va_list.  */
+_GL_CXXALIAS_SYS_CAST (vprintf, int, (const char *format, va_list args));
+# endif
+_GL_CXXALIASWARN (vprintf);
+#endif
+#if !@GNULIB_VPRINTF_POSIX@ && defined GNULIB_POSIXCHECK
+# if !GNULIB_overrides_vprintf
+#  undef vprintf
+# endif
+/* Assume vprintf is always declared.  */
+_GL_WARN_ON_USE (vprintf, "vprintf is not always POSIX compliant - "
+                 "use gnulib module vprintf-posix for portable "
+                 "POSIX compliance");
+#endif
+
+#if @GNULIB_VSCANF@
+# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef vscanf
+#   define vscanf rpl_vscanf
+#  endif
+_GL_FUNCDECL_RPL (vscanf, int, (const char *format, va_list args)
+                               _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 0)
+                               _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (vscanf, int, (const char *format, va_list args));
+# else
+_GL_CXXALIAS_SYS (vscanf, int, (const char *format, va_list args));
+# endif
+_GL_CXXALIASWARN (vscanf);
+#endif
+
+#if @GNULIB_VSNPRINTF@
+# if @REPLACE_VSNPRINTF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define vsnprintf rpl_vsnprintf
+#  endif
+_GL_FUNCDECL_RPL (vsnprintf, int,
+                  (char *str, size_t size, const char *format, va_list args)
+                  _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0)
+                  _GL_ARG_NONNULL ((3)));
+_GL_CXXALIAS_RPL (vsnprintf, int,
+                  (char *str, size_t size, const char *format, va_list args));
+# else
+#  if !@HAVE_DECL_VSNPRINTF@
+_GL_FUNCDECL_SYS (vsnprintf, int,
+                  (char *str, size_t size, const char *format, va_list args)
+                  _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0)
+                  _GL_ARG_NONNULL ((3)));
+#  endif
+_GL_CXXALIAS_SYS (vsnprintf, int,
+                  (char *str, size_t size, const char *format, va_list args));
+# endif
+_GL_CXXALIASWARN (vsnprintf);
+#elif defined GNULIB_POSIXCHECK
+# undef vsnprintf
+# if HAVE_RAW_DECL_VSNPRINTF
+_GL_WARN_ON_USE (vsnprintf, "vsnprintf is unportable - "
+                 "use gnulib module vsnprintf for portability");
+# endif
+#endif
+
+#if @GNULIB_VSPRINTF_POSIX@
+# if @REPLACE_VSPRINTF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define vsprintf rpl_vsprintf
+#  endif
+_GL_FUNCDECL_RPL (vsprintf, int,
+                  (char *str, const char *format, va_list args)
+                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
+                  _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (vsprintf, int,
+                  (char *str, const char *format, va_list args));
+# else
+/* Need to cast, because on Solaris, the third parameter is
+                                                       __va_list args
+   and GCC's fixincludes did not change this to __gnuc_va_list.  */
+_GL_CXXALIAS_SYS_CAST (vsprintf, int,
+                       (char *str, const char *format, va_list args));
+# endif
+_GL_CXXALIASWARN (vsprintf);
+#elif defined GNULIB_POSIXCHECK
+# undef vsprintf
+/* Assume vsprintf is always declared.  */
+_GL_WARN_ON_USE (vsprintf, "vsprintf is not always POSIX compliant - "
+                 "use gnulib module vsprintf-posix for portable "
+                      "POSIX compliance");
+#endif
+
+
+#endif /* _@GUARD_PREFIX@_STDIO_H */
+#endif /* _@GUARD_PREFIX@_STDIO_H */
+#endif
diff --git a/lib/stdlib.in.h b/lib/stdlib.in.h
new file mode 100644 (file)
index 0000000..62a2ce9
--- /dev/null
@@ -0,0 +1,766 @@
+/* A GNU-like <stdlib.h>.
+
+   Copyright (C) 1995, 2001-2004, 2006-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+#if defined __need_malloc_and_calloc
+/* Special invocation convention inside glibc header files.  */
+
+#@INCLUDE_NEXT@ @NEXT_STDLIB_H@
+
+#else
+/* Normal invocation convention.  */
+
+#ifndef _@GUARD_PREFIX@_STDLIB_H
+
+/* The include_next requires a split double-inclusion guard.  */
+#@INCLUDE_NEXT@ @NEXT_STDLIB_H@
+
+#ifndef _@GUARD_PREFIX@_STDLIB_H
+#define _@GUARD_PREFIX@_STDLIB_H
+
+/* NetBSD 5.0 mis-defines NULL.  */
+#include <stddef.h>
+
+/* MirBSD 10 defines WEXITSTATUS in <sys/wait.h>, not in <stdlib.h>.  */
+#if @GNULIB_SYSTEM_POSIX@ && !defined WEXITSTATUS
+# include <sys/wait.h>
+#endif
+
+/* Solaris declares getloadavg() in <sys/loadavg.h>.  */
+#if (@GNULIB_GETLOADAVG@ || defined GNULIB_POSIXCHECK) && @HAVE_SYS_LOADAVG_H@
+# include <sys/loadavg.h>
+#endif
+
+#if @GNULIB_RANDOM_R@
+
+/* OSF/1 5.1 declares 'struct random_data' in <random.h>, which is included
+   from <stdlib.h> if _REENTRANT is defined.  Include it whenever we need
+   'struct random_data'.  */
+# if @HAVE_RANDOM_H@
+#  include <random.h>
+# endif
+
+# if !@HAVE_STRUCT_RANDOM_DATA@ || !@HAVE_RANDOM_R@
+#  include <stdint.h>
+# endif
+
+# if !@HAVE_STRUCT_RANDOM_DATA@
+/* Define 'struct random_data'.
+   But allow multiple gnulib generated <stdlib.h> replacements to coexist.  */
+#  if !GNULIB_defined_struct_random_data
+struct random_data
+{
+  int32_t *fptr;                /* Front pointer.  */
+  int32_t *rptr;                /* Rear pointer.  */
+  int32_t *state;               /* Array of state values.  */
+  int rand_type;                /* Type of random number generator.  */
+  int rand_deg;                 /* Degree of random number generator.  */
+  int rand_sep;                 /* Distance between front and rear.  */
+  int32_t *end_ptr;             /* Pointer behind state table.  */
+};
+#   define GNULIB_defined_struct_random_data 1
+#  endif
+# endif
+#endif
+
+#if (@GNULIB_MKSTEMP@ || @GNULIB_MKSTEMPS@ || @GNULIB_GETSUBOPT@ || defined GNULIB_POSIXCHECK) && ! defined __GLIBC__ && !((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__)
+/* On MacOS X 10.3, only <unistd.h> declares mkstemp.  */
+/* On MacOS X 10.5, only <unistd.h> declares mkstemps.  */
+/* On Cygwin 1.7.1, only <unistd.h> declares getsubopt.  */
+/* But avoid namespace pollution on glibc systems and native Windows.  */
+# include <unistd.h>
+#endif
+
+#if 3 <= __GNUC__ || __GNUC__ == 2 && 8 <= __GNUC_MINOR__
+# define _GL_ATTRIBUTE_NORETURN __attribute__ ((__noreturn__))
+#else
+# define _GL_ATTRIBUTE_NORETURN
+#endif
+
+/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
+
+/* The definition of _GL_ARG_NONNULL is copied here.  */
+
+/* The definition of _GL_WARN_ON_USE is copied here.  */
+
+
+/* Some systems do not define EXIT_*, despite otherwise supporting C89.  */
+#ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
+#endif
+/* Tandem/NSK and other platforms that define EXIT_FAILURE as -1 interfere
+   with proper operation of xargs.  */
+#ifndef EXIT_FAILURE
+# define EXIT_FAILURE 1
+#elif EXIT_FAILURE != 1
+# undef EXIT_FAILURE
+# define EXIT_FAILURE 1
+#endif
+
+
+#if @GNULIB__EXIT@
+/* Terminate the current process with the given return code, without running
+   the 'atexit' handlers.  */
+# if !@HAVE__EXIT@
+_GL_FUNCDECL_SYS (_Exit, void, (int status) _GL_ATTRIBUTE_NORETURN);
+# endif
+_GL_CXXALIAS_SYS (_Exit, void, (int status));
+_GL_CXXALIASWARN (_Exit);
+#elif defined GNULIB_POSIXCHECK
+# undef _Exit
+# if HAVE_RAW_DECL__EXIT
+_GL_WARN_ON_USE (_Exit, "_Exit is unportable - "
+                 "use gnulib module _Exit for portability");
+# endif
+#endif
+
+
+#if @GNULIB_ATOLL@
+/* Parse a signed decimal integer.
+   Returns the value of the integer.  Errors are not detected.  */
+# if !@HAVE_ATOLL@
+_GL_FUNCDECL_SYS (atoll, long long, (const char *string) _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (atoll, long long, (const char *string));
+_GL_CXXALIASWARN (atoll);
+#elif defined GNULIB_POSIXCHECK
+# undef atoll
+# if HAVE_RAW_DECL_ATOLL
+_GL_WARN_ON_USE (atoll, "atoll is unportable - "
+                 "use gnulib module atoll for portability");
+# endif
+#endif
+
+#if @GNULIB_CALLOC_POSIX@
+# if @REPLACE_CALLOC@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef calloc
+#   define calloc rpl_calloc
+#  endif
+_GL_FUNCDECL_RPL (calloc, void *, (size_t nmemb, size_t size));
+_GL_CXXALIAS_RPL (calloc, void *, (size_t nmemb, size_t size));
+# else
+_GL_CXXALIAS_SYS (calloc, void *, (size_t nmemb, size_t size));
+# endif
+_GL_CXXALIASWARN (calloc);
+#elif defined GNULIB_POSIXCHECK
+# undef calloc
+/* Assume calloc is always declared.  */
+_GL_WARN_ON_USE (calloc, "calloc is not POSIX compliant everywhere - "
+                 "use gnulib module calloc-posix for portability");
+#endif
+
+#if @GNULIB_CANONICALIZE_FILE_NAME@
+# if @REPLACE_CANONICALIZE_FILE_NAME@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define canonicalize_file_name rpl_canonicalize_file_name
+#  endif
+_GL_FUNCDECL_RPL (canonicalize_file_name, char *, (const char *name)
+                                                  _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (canonicalize_file_name, char *, (const char *name));
+# else
+#  if !@HAVE_CANONICALIZE_FILE_NAME@
+_GL_FUNCDECL_SYS (canonicalize_file_name, char *, (const char *name)
+                                                  _GL_ARG_NONNULL ((1)));
+#  endif
+_GL_CXXALIAS_SYS (canonicalize_file_name, char *, (const char *name));
+# endif
+_GL_CXXALIASWARN (canonicalize_file_name);
+#elif defined GNULIB_POSIXCHECK
+# undef canonicalize_file_name
+# if HAVE_RAW_DECL_CANONICALIZE_FILE_NAME
+_GL_WARN_ON_USE (canonicalize_file_name,
+                 "canonicalize_file_name is unportable - "
+                 "use gnulib module canonicalize-lgpl for portability");
+# endif
+#endif
+
+#if @GNULIB_GETLOADAVG@
+/* Store max(NELEM,3) load average numbers in LOADAVG[].
+   The three numbers are the load average of the last 1 minute, the last 5
+   minutes, and the last 15 minutes, respectively.
+   LOADAVG is an array of NELEM numbers.  */
+# if !@HAVE_DECL_GETLOADAVG@
+_GL_FUNCDECL_SYS (getloadavg, int, (double loadavg[], int nelem)
+                                   _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (getloadavg, int, (double loadavg[], int nelem));
+_GL_CXXALIASWARN (getloadavg);
+#elif defined GNULIB_POSIXCHECK
+# undef getloadavg
+# if HAVE_RAW_DECL_GETLOADAVG
+_GL_WARN_ON_USE (getloadavg, "getloadavg is not portable - "
+                 "use gnulib module getloadavg for portability");
+# endif
+#endif
+
+#if @GNULIB_GETSUBOPT@
+/* Assuming *OPTIONP is a comma separated list of elements of the form
+   "token" or "token=value", getsubopt parses the first of these elements.
+   If the first element refers to a "token" that is member of the given
+   NULL-terminated array of tokens:
+     - It replaces the comma with a NUL byte, updates *OPTIONP to point past
+       the first option and the comma, sets *VALUEP to the value of the
+       element (or NULL if it doesn't contain an "=" sign),
+     - It returns the index of the "token" in the given array of tokens.
+   Otherwise it returns -1, and *OPTIONP and *VALUEP are undefined.
+   For more details see the POSIX:2001 specification.
+   http://www.opengroup.org/susv3xsh/getsubopt.html */
+# if !@HAVE_GETSUBOPT@
+_GL_FUNCDECL_SYS (getsubopt, int,
+                  (char **optionp, char *const *tokens, char **valuep)
+                  _GL_ARG_NONNULL ((1, 2, 3)));
+# endif
+_GL_CXXALIAS_SYS (getsubopt, int,
+                  (char **optionp, char *const *tokens, char **valuep));
+_GL_CXXALIASWARN (getsubopt);
+#elif defined GNULIB_POSIXCHECK
+# undef getsubopt
+# if HAVE_RAW_DECL_GETSUBOPT
+_GL_WARN_ON_USE (getsubopt, "getsubopt is unportable - "
+                 "use gnulib module getsubopt for portability");
+# endif
+#endif
+
+#if @GNULIB_GRANTPT@
+/* Change the ownership and access permission of the slave side of the
+   pseudo-terminal whose master side is specified by FD.  */
+# if !@HAVE_GRANTPT@
+_GL_FUNCDECL_SYS (grantpt, int, (int fd));
+# endif
+_GL_CXXALIAS_SYS (grantpt, int, (int fd));
+_GL_CXXALIASWARN (grantpt);
+#elif defined GNULIB_POSIXCHECK
+# undef grantpt
+# if HAVE_RAW_DECL_GRANTPT
+_GL_WARN_ON_USE (ptsname, "grantpt is not portable - "
+                 "use gnulib module grantpt for portability");
+# endif
+#endif
+
+/* If _GL_USE_STDLIB_ALLOC is nonzero, the including module does not
+   rely on GNU or POSIX semantics for malloc and realloc (for example,
+   by never specifying a zero size), so it does not need malloc or
+   realloc to be redefined.  */
+#if @GNULIB_MALLOC_POSIX@
+# if @REPLACE_MALLOC@
+#  if !((defined __cplusplus && defined GNULIB_NAMESPACE) \
+        || _GL_USE_STDLIB_ALLOC)
+#   undef malloc
+#   define malloc rpl_malloc
+#  endif
+_GL_FUNCDECL_RPL (malloc, void *, (size_t size));
+_GL_CXXALIAS_RPL (malloc, void *, (size_t size));
+# else
+_GL_CXXALIAS_SYS (malloc, void *, (size_t size));
+# endif
+_GL_CXXALIASWARN (malloc);
+#elif defined GNULIB_POSIXCHECK && !_GL_USE_STDLIB_ALLOC
+# undef malloc
+/* Assume malloc is always declared.  */
+_GL_WARN_ON_USE (malloc, "malloc is not POSIX compliant everywhere - "
+                 "use gnulib module malloc-posix for portability");
+#endif
+
+/* Convert a multibyte character to a wide character.  */
+#if @GNULIB_MBTOWC@
+# if @REPLACE_MBTOWC@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef mbtowc
+#   define mbtowc rpl_mbtowc
+#  endif
+_GL_FUNCDECL_RPL (mbtowc, int, (wchar_t *pwc, const char *s, size_t n));
+_GL_CXXALIAS_RPL (mbtowc, int, (wchar_t *pwc, const char *s, size_t n));
+# else
+_GL_CXXALIAS_SYS (mbtowc, int, (wchar_t *pwc, const char *s, size_t n));
+# endif
+_GL_CXXALIASWARN (mbtowc);
+#endif
+
+#if @GNULIB_MKDTEMP@
+/* Create a unique temporary directory from TEMPLATE.
+   The last six characters of TEMPLATE must be "XXXXXX";
+   they are replaced with a string that makes the directory name unique.
+   Returns TEMPLATE, or a null pointer if it cannot get a unique name.
+   The directory is created mode 700.  */
+# if !@HAVE_MKDTEMP@
+_GL_FUNCDECL_SYS (mkdtemp, char *, (char * /*template*/) _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (mkdtemp, char *, (char * /*template*/));
+_GL_CXXALIASWARN (mkdtemp);
+#elif defined GNULIB_POSIXCHECK
+# undef mkdtemp
+# if HAVE_RAW_DECL_MKDTEMP
+_GL_WARN_ON_USE (mkdtemp, "mkdtemp is unportable - "
+                 "use gnulib module mkdtemp for portability");
+# endif
+#endif
+
+#if @GNULIB_MKOSTEMP@
+/* Create a unique temporary file from TEMPLATE.
+   The last six characters of TEMPLATE must be "XXXXXX";
+   they are replaced with a string that makes the file name unique.
+   The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>)
+   and O_TEXT, O_BINARY (defined in "binary-io.h").
+   The file is then created, with the specified flags, ensuring it didn't exist
+   before.
+   The file is created read-write (mask at least 0600 & ~umask), but it may be
+   world-readable and world-writable (mask 0666 & ~umask), depending on the
+   implementation.
+   Returns the open file descriptor if successful, otherwise -1 and errno
+   set.  */
+# if !@HAVE_MKOSTEMP@
+_GL_FUNCDECL_SYS (mkostemp, int, (char * /*template*/, int /*flags*/)
+                                 _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (mkostemp, int, (char * /*template*/, int /*flags*/));
+_GL_CXXALIASWARN (mkostemp);
+#elif defined GNULIB_POSIXCHECK
+# undef mkostemp
+# if HAVE_RAW_DECL_MKOSTEMP
+_GL_WARN_ON_USE (mkostemp, "mkostemp is unportable - "
+                 "use gnulib module mkostemp for portability");
+# endif
+#endif
+
+#if @GNULIB_MKOSTEMPS@
+/* Create a unique temporary file from TEMPLATE.
+   The last six characters of TEMPLATE before a suffix of length
+   SUFFIXLEN must be "XXXXXX";
+   they are replaced with a string that makes the file name unique.
+   The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>)
+   and O_TEXT, O_BINARY (defined in "binary-io.h").
+   The file is then created, with the specified flags, ensuring it didn't exist
+   before.
+   The file is created read-write (mask at least 0600 & ~umask), but it may be
+   world-readable and world-writable (mask 0666 & ~umask), depending on the
+   implementation.
+   Returns the open file descriptor if successful, otherwise -1 and errno
+   set.  */
+# if !@HAVE_MKOSTEMPS@
+_GL_FUNCDECL_SYS (mkostemps, int,
+                  (char * /*template*/, int /*suffixlen*/, int /*flags*/)
+                  _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (mkostemps, int,
+                  (char * /*template*/, int /*suffixlen*/, int /*flags*/));
+_GL_CXXALIASWARN (mkostemps);
+#elif defined GNULIB_POSIXCHECK
+# undef mkostemps
+# if HAVE_RAW_DECL_MKOSTEMPS
+_GL_WARN_ON_USE (mkostemps, "mkostemps is unportable - "
+                 "use gnulib module mkostemps for portability");
+# endif
+#endif
+
+#if @GNULIB_MKSTEMP@
+/* Create a unique temporary file from TEMPLATE.
+   The last six characters of TEMPLATE must be "XXXXXX";
+   they are replaced with a string that makes the file name unique.
+   The file is then created, ensuring it didn't exist before.
+   The file is created read-write (mask at least 0600 & ~umask), but it may be
+   world-readable and world-writable (mask 0666 & ~umask), depending on the
+   implementation.
+   Returns the open file descriptor if successful, otherwise -1 and errno
+   set.  */
+# if @REPLACE_MKSTEMP@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define mkstemp rpl_mkstemp
+#  endif
+_GL_FUNCDECL_RPL (mkstemp, int, (char * /*template*/) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (mkstemp, int, (char * /*template*/));
+# else
+#  if ! @HAVE_MKSTEMP@
+_GL_FUNCDECL_SYS (mkstemp, int, (char * /*template*/) _GL_ARG_NONNULL ((1)));
+#  endif
+_GL_CXXALIAS_SYS (mkstemp, int, (char * /*template*/));
+# endif
+_GL_CXXALIASWARN (mkstemp);
+#elif defined GNULIB_POSIXCHECK
+# undef mkstemp
+# if HAVE_RAW_DECL_MKSTEMP
+_GL_WARN_ON_USE (mkstemp, "mkstemp is unportable - "
+                 "use gnulib module mkstemp for portability");
+# endif
+#endif
+
+#if @GNULIB_MKSTEMPS@
+/* Create a unique temporary file from TEMPLATE.
+   The last six characters of TEMPLATE prior to a suffix of length
+   SUFFIXLEN must be "XXXXXX";
+   they are replaced with a string that makes the file name unique.
+   The file is then created, ensuring it didn't exist before.
+   The file is created read-write (mask at least 0600 & ~umask), but it may be
+   world-readable and world-writable (mask 0666 & ~umask), depending on the
+   implementation.
+   Returns the open file descriptor if successful, otherwise -1 and errno
+   set.  */
+# if !@HAVE_MKSTEMPS@
+_GL_FUNCDECL_SYS (mkstemps, int, (char * /*template*/, int /*suffixlen*/)
+                                 _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (mkstemps, int, (char * /*template*/, int /*suffixlen*/));
+_GL_CXXALIASWARN (mkstemps);
+#elif defined GNULIB_POSIXCHECK
+# undef mkstemps
+# if HAVE_RAW_DECL_MKSTEMPS
+_GL_WARN_ON_USE (mkstemps, "mkstemps is unportable - "
+                 "use gnulib module mkstemps for portability");
+# endif
+#endif
+
+#if @GNULIB_PTSNAME@
+/* Return the pathname of the pseudo-terminal slave associated with
+   the master FD is open on, or NULL on errors.  */
+# if !@HAVE_PTSNAME@
+_GL_FUNCDECL_SYS (ptsname, char *, (int fd));
+# endif
+_GL_CXXALIAS_SYS (ptsname, char *, (int fd));
+_GL_CXXALIASWARN (ptsname);
+#elif defined GNULIB_POSIXCHECK
+# undef ptsname
+# if HAVE_RAW_DECL_PTSNAME
+_GL_WARN_ON_USE (ptsname, "ptsname is not portable - "
+                 "use gnulib module ptsname for portability");
+# endif
+#endif
+
+#if @GNULIB_PUTENV@
+# if @REPLACE_PUTENV@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef putenv
+#   define putenv rpl_putenv
+#  endif
+_GL_FUNCDECL_RPL (putenv, int, (char *string) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (putenv, int, (char *string));
+# else
+_GL_CXXALIAS_SYS (putenv, int, (char *string));
+# endif
+_GL_CXXALIASWARN (putenv);
+#endif
+
+
+#if @GNULIB_RANDOM_R@
+# if !@HAVE_RANDOM_R@
+#  ifndef RAND_MAX
+#   define RAND_MAX 2147483647
+#  endif
+# endif
+#endif
+
+#if @GNULIB_RANDOM_R@
+# if !@HAVE_RANDOM_R@
+_GL_FUNCDECL_SYS (random_r, int, (struct random_data *buf, int32_t *result)
+                                 _GL_ARG_NONNULL ((1, 2)));
+# endif
+_GL_CXXALIAS_SYS (random_r, int, (struct random_data *buf, int32_t *result));
+_GL_CXXALIASWARN (random_r);
+#elif defined GNULIB_POSIXCHECK
+# undef random_r
+# if HAVE_RAW_DECL_RANDOM_R
+_GL_WARN_ON_USE (random_r, "random_r is unportable - "
+                 "use gnulib module random_r for portability");
+# endif
+#endif
+
+#if @GNULIB_RANDOM_R@
+# if !@HAVE_RANDOM_R@
+_GL_FUNCDECL_SYS (srandom_r, int,
+                  (unsigned int seed, struct random_data *rand_state)
+                  _GL_ARG_NONNULL ((2)));
+# endif
+_GL_CXXALIAS_SYS (srandom_r, int,
+                  (unsigned int seed, struct random_data *rand_state));
+_GL_CXXALIASWARN (srandom_r);
+#elif defined GNULIB_POSIXCHECK
+# undef srandom_r
+# if HAVE_RAW_DECL_SRANDOM_R
+_GL_WARN_ON_USE (srandom_r, "srandom_r is unportable - "
+                 "use gnulib module random_r for portability");
+# endif
+#endif
+
+#if @GNULIB_RANDOM_R@
+# if !@HAVE_RANDOM_R@
+_GL_FUNCDECL_SYS (initstate_r, int,
+                  (unsigned int seed, char *buf, size_t buf_size,
+                   struct random_data *rand_state)
+                  _GL_ARG_NONNULL ((2, 4)));
+# endif
+_GL_CXXALIAS_SYS (initstate_r, int,
+                  (unsigned int seed, char *buf, size_t buf_size,
+                   struct random_data *rand_state));
+_GL_CXXALIASWARN (initstate_r);
+#elif defined GNULIB_POSIXCHECK
+# undef initstate_r
+# if HAVE_RAW_DECL_INITSTATE_R
+_GL_WARN_ON_USE (initstate_r, "initstate_r is unportable - "
+                 "use gnulib module random_r for portability");
+# endif
+#endif
+
+#if @GNULIB_RANDOM_R@
+# if !@HAVE_RANDOM_R@
+_GL_FUNCDECL_SYS (setstate_r, int,
+                  (char *arg_state, struct random_data *rand_state)
+                  _GL_ARG_NONNULL ((1, 2)));
+# endif
+_GL_CXXALIAS_SYS (setstate_r, int,
+                  (char *arg_state, struct random_data *rand_state));
+_GL_CXXALIASWARN (setstate_r);
+#elif defined GNULIB_POSIXCHECK
+# undef setstate_r
+# if HAVE_RAW_DECL_SETSTATE_R
+_GL_WARN_ON_USE (setstate_r, "setstate_r is unportable - "
+                 "use gnulib module random_r for portability");
+# endif
+#endif
+
+
+#if @GNULIB_REALLOC_POSIX@
+# if @REPLACE_REALLOC@
+#  if !((defined __cplusplus && defined GNULIB_NAMESPACE) \
+        || _GL_USE_STDLIB_ALLOC)
+#   undef realloc
+#   define realloc rpl_realloc
+#  endif
+_GL_FUNCDECL_RPL (realloc, void *, (void *ptr, size_t size));
+_GL_CXXALIAS_RPL (realloc, void *, (void *ptr, size_t size));
+# else
+_GL_CXXALIAS_SYS (realloc, void *, (void *ptr, size_t size));
+# endif
+_GL_CXXALIASWARN (realloc);
+#elif defined GNULIB_POSIXCHECK && !_GL_USE_STDLIB_ALLOC
+# undef realloc
+/* Assume realloc is always declared.  */
+_GL_WARN_ON_USE (realloc, "realloc is not POSIX compliant everywhere - "
+                 "use gnulib module realloc-posix for portability");
+#endif
+
+#if @GNULIB_REALPATH@
+# if @REPLACE_REALPATH@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define realpath rpl_realpath
+#  endif
+_GL_FUNCDECL_RPL (realpath, char *, (const char *name, char *resolved)
+                                    _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (realpath, char *, (const char *name, char *resolved));
+# else
+#  if !@HAVE_REALPATH@
+_GL_FUNCDECL_SYS (realpath, char *, (const char *name, char *resolved)
+                                    _GL_ARG_NONNULL ((1)));
+#  endif
+_GL_CXXALIAS_SYS (realpath, char *, (const char *name, char *resolved));
+# endif
+_GL_CXXALIASWARN (realpath);
+#elif defined GNULIB_POSIXCHECK
+# undef realpath
+# if HAVE_RAW_DECL_REALPATH
+_GL_WARN_ON_USE (realpath, "realpath is unportable - use gnulib module "
+                 "canonicalize or canonicalize-lgpl for portability");
+# endif
+#endif
+
+#if @GNULIB_RPMATCH@
+/* Test a user response to a question.
+   Return 1 if it is affirmative, 0 if it is negative, or -1 if not clear.  */
+# if !@HAVE_RPMATCH@
+_GL_FUNCDECL_SYS (rpmatch, int, (const char *response) _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (rpmatch, int, (const char *response));
+_GL_CXXALIASWARN (rpmatch);
+#elif defined GNULIB_POSIXCHECK
+# undef rpmatch
+# if HAVE_RAW_DECL_RPMATCH
+_GL_WARN_ON_USE (rpmatch, "rpmatch is unportable - "
+                 "use gnulib module rpmatch for portability");
+# endif
+#endif
+
+#if @GNULIB_SETENV@
+/* Set NAME to VALUE in the environment.
+   If REPLACE is nonzero, overwrite an existing value.  */
+# if @REPLACE_SETENV@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef setenv
+#   define setenv rpl_setenv
+#  endif
+_GL_FUNCDECL_RPL (setenv, int,
+                  (const char *name, const char *value, int replace)
+                  _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (setenv, int,
+                  (const char *name, const char *value, int replace));
+# else
+#  if !@HAVE_DECL_SETENV@
+_GL_FUNCDECL_SYS (setenv, int,
+                  (const char *name, const char *value, int replace)
+                  _GL_ARG_NONNULL ((1)));
+#  endif
+_GL_CXXALIAS_SYS (setenv, int,
+                  (const char *name, const char *value, int replace));
+# endif
+# if !(@REPLACE_SETENV@ && !@HAVE_DECL_SETENV@)
+_GL_CXXALIASWARN (setenv);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef setenv
+# if HAVE_RAW_DECL_SETENV
+_GL_WARN_ON_USE (setenv, "setenv is unportable - "
+                 "use gnulib module setenv for portability");
+# endif
+#endif
+
+#if @GNULIB_STRTOD@
+ /* Parse a double from STRING, updating ENDP if appropriate.  */
+# if @REPLACE_STRTOD@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define strtod rpl_strtod
+#  endif
+_GL_FUNCDECL_RPL (strtod, double, (const char *str, char **endp)
+                                  _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (strtod, double, (const char *str, char **endp));
+# else
+#  if !@HAVE_STRTOD@
+_GL_FUNCDECL_SYS (strtod, double, (const char *str, char **endp)
+                                  _GL_ARG_NONNULL ((1)));
+#  endif
+_GL_CXXALIAS_SYS (strtod, double, (const char *str, char **endp));
+# endif
+_GL_CXXALIASWARN (strtod);
+#elif defined GNULIB_POSIXCHECK
+# undef strtod
+# if HAVE_RAW_DECL_STRTOD
+_GL_WARN_ON_USE (strtod, "strtod is unportable - "
+                 "use gnulib module strtod for portability");
+# endif
+#endif
+
+#if @GNULIB_STRTOLL@
+/* Parse a signed integer whose textual representation starts at STRING.
+   The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0,
+   it may be decimal or octal (with prefix "0") or hexadecimal (with prefix
+   "0x").
+   If ENDPTR is not NULL, the address of the first byte after the integer is
+   stored in *ENDPTR.
+   Upon overflow, the return value is LLONG_MAX or LLONG_MIN, and errno is set
+   to ERANGE.  */
+# if !@HAVE_STRTOLL@
+_GL_FUNCDECL_SYS (strtoll, long long,
+                  (const char *string, char **endptr, int base)
+                  _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (strtoll, long long,
+                  (const char *string, char **endptr, int base));
+_GL_CXXALIASWARN (strtoll);
+#elif defined GNULIB_POSIXCHECK
+# undef strtoll
+# if HAVE_RAW_DECL_STRTOLL
+_GL_WARN_ON_USE (strtoll, "strtoll is unportable - "
+                 "use gnulib module strtoll for portability");
+# endif
+#endif
+
+#if @GNULIB_STRTOULL@
+/* Parse an unsigned integer whose textual representation starts at STRING.
+   The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0,
+   it may be decimal or octal (with prefix "0") or hexadecimal (with prefix
+   "0x").
+   If ENDPTR is not NULL, the address of the first byte after the integer is
+   stored in *ENDPTR.
+   Upon overflow, the return value is ULLONG_MAX, and errno is set to
+   ERANGE.  */
+# if !@HAVE_STRTOULL@
+_GL_FUNCDECL_SYS (strtoull, unsigned long long,
+                  (const char *string, char **endptr, int base)
+                  _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (strtoull, unsigned long long,
+                  (const char *string, char **endptr, int base));
+_GL_CXXALIASWARN (strtoull);
+#elif defined GNULIB_POSIXCHECK
+# undef strtoull
+# if HAVE_RAW_DECL_STRTOULL
+_GL_WARN_ON_USE (strtoull, "strtoull is unportable - "
+                 "use gnulib module strtoull for portability");
+# endif
+#endif
+
+#if @GNULIB_UNLOCKPT@
+/* Unlock the slave side of the pseudo-terminal whose master side is specified
+   by FD, so that it can be opened.  */
+# if !@HAVE_UNLOCKPT@
+_GL_FUNCDECL_SYS (unlockpt, int, (int fd));
+# endif
+_GL_CXXALIAS_SYS (unlockpt, int, (int fd));
+_GL_CXXALIASWARN (unlockpt);
+#elif defined GNULIB_POSIXCHECK
+# undef unlockpt
+# if HAVE_RAW_DECL_UNLOCKPT
+_GL_WARN_ON_USE (unlockpt, "unlockpt is not portable - "
+                 "use gnulib module unlockpt for portability");
+# endif
+#endif
+
+#if @GNULIB_UNSETENV@
+/* Remove the variable NAME from the environment.  */
+# if @REPLACE_UNSETENV@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef unsetenv
+#   define unsetenv rpl_unsetenv
+#  endif
+_GL_FUNCDECL_RPL (unsetenv, int, (const char *name) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (unsetenv, int, (const char *name));
+# else
+#  if !@HAVE_DECL_UNSETENV@
+_GL_FUNCDECL_SYS (unsetenv, int, (const char *name) _GL_ARG_NONNULL ((1)));
+#  endif
+_GL_CXXALIAS_SYS (unsetenv, int, (const char *name));
+# endif
+# if !(@REPLACE_UNSETENV@ && !@HAVE_DECL_UNSETENV@)
+_GL_CXXALIASWARN (unsetenv);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef unsetenv
+# if HAVE_RAW_DECL_UNSETENV
+_GL_WARN_ON_USE (unsetenv, "unsetenv is unportable - "
+                 "use gnulib module unsetenv for portability");
+# endif
+#endif
+
+/* Convert a wide character to a multibyte character.  */
+#if @GNULIB_WCTOMB@
+# if @REPLACE_WCTOMB@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef wctomb
+#   define wctomb rpl_wctomb
+#  endif
+_GL_FUNCDECL_RPL (wctomb, int, (char *s, wchar_t wc));
+_GL_CXXALIAS_RPL (wctomb, int, (char *s, wchar_t wc));
+# else
+_GL_CXXALIAS_SYS (wctomb, int, (char *s, wchar_t wc));
+# endif
+_GL_CXXALIASWARN (wctomb);
+#endif
+
+
+#endif /* _@GUARD_PREFIX@_STDLIB_H */
+#endif /* _@GUARD_PREFIX@_STDLIB_H */
+#endif
diff --git a/lib/strdup.c b/lib/strdup.c
new file mode 100644 (file)
index 0000000..3395e6c
--- /dev/null
@@ -0,0 +1,57 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Copyright (C) 1991, 1996-1998, 2002-2004, 2006-2007, 2009-2011 Free Software
+   Foundation, Inc.
+
+   This file is part of the GNU C Library.
+
+   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, 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.  */
+
+#ifndef _LIBC
+# include <config.h>
+#endif
+
+/* Get specification.  */
+#include <string.h>
+
+#include <stdlib.h>
+
+#undef __strdup
+#ifdef _LIBC
+# undef strdup
+#endif
+
+#ifndef weak_alias
+# define __strdup strdup
+#endif
+
+/* Duplicate S, returning an identical malloc'd string.  */
+char *
+__strdup (const char *s)
+{
+  size_t len = strlen (s) + 1;
+  void *new = malloc (len);
+
+  if (new == NULL)
+    return NULL;
+
+  return (char *) memcpy (new, s, len);
+}
+#ifdef libc_hidden_def
+libc_hidden_def (__strdup)
+#endif
+#ifdef weak_alias
+weak_alias (__strdup, strdup)
+#endif
diff --git a/lib/streq.h b/lib/streq.h
new file mode 100644 (file)
index 0000000..067732d
--- /dev/null
@@ -0,0 +1,178 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Optimized string comparison.
+   Copyright (C) 2001-2002, 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+/* Written by Bruno Haible <bruno@clisp.org>.  */
+
+#ifndef _GL_STREQ_H
+#define _GL_STREQ_H
+
+#include <string.h>
+
+/* STREQ allows to optimize string comparison with a small literal string.
+     STREQ (s, "EUC-KR", 'E', 'U', 'C', '-', 'K', 'R', 0, 0, 0)
+   is semantically equivalent to
+     strcmp (s, "EUC-KR") == 0
+   just faster.  */
+
+/* Help GCC to generate good code for string comparisons with
+   immediate strings. */
+#if defined (__GNUC__) && defined (__OPTIMIZE__)
+
+static inline int
+streq9 (const char *s1, const char *s2)
+{
+  return strcmp (s1 + 9, s2 + 9) == 0;
+}
+
+static inline int
+streq8 (const char *s1, const char *s2, char s28)
+{
+  if (s1[8] == s28)
+    {
+      if (s28 == 0)
+        return 1;
+      else
+        return streq9 (s1, s2);
+    }
+  else
+    return 0;
+}
+
+static inline int
+streq7 (const char *s1, const char *s2, char s27, char s28)
+{
+  if (s1[7] == s27)
+    {
+      if (s27 == 0)
+        return 1;
+      else
+        return streq8 (s1, s2, s28);
+    }
+  else
+    return 0;
+}
+
+static inline int
+streq6 (const char *s1, const char *s2, char s26, char s27, char s28)
+{
+  if (s1[6] == s26)
+    {
+      if (s26 == 0)
+        return 1;
+      else
+        return streq7 (s1, s2, s27, s28);
+    }
+  else
+    return 0;
+}
+
+static inline int
+streq5 (const char *s1, const char *s2, char s25, char s26, char s27, char s28)
+{
+  if (s1[5] == s25)
+    {
+      if (s25 == 0)
+        return 1;
+      else
+        return streq6 (s1, s2, s26, s27, s28);
+    }
+  else
+    return 0;
+}
+
+static inline int
+streq4 (const char *s1, const char *s2, char s24, char s25, char s26, char s27, char s28)
+{
+  if (s1[4] == s24)
+    {
+      if (s24 == 0)
+        return 1;
+      else
+        return streq5 (s1, s2, s25, s26, s27, s28);
+    }
+  else
+    return 0;
+}
+
+static inline int
+streq3 (const char *s1, const char *s2, char s23, char s24, char s25, char s26, char s27, char s28)
+{
+  if (s1[3] == s23)
+    {
+      if (s23 == 0)
+        return 1;
+      else
+        return streq4 (s1, s2, s24, s25, s26, s27, s28);
+    }
+  else
+    return 0;
+}
+
+static inline int
+streq2 (const char *s1, const char *s2, char s22, char s23, char s24, char s25, char s26, char s27, char s28)
+{
+  if (s1[2] == s22)
+    {
+      if (s22 == 0)
+        return 1;
+      else
+        return streq3 (s1, s2, s23, s24, s25, s26, s27, s28);
+    }
+  else
+    return 0;
+}
+
+static inline int
+streq1 (const char *s1, const char *s2, char s21, char s22, char s23, char s24, char s25, char s26, char s27, char s28)
+{
+  if (s1[1] == s21)
+    {
+      if (s21 == 0)
+        return 1;
+      else
+        return streq2 (s1, s2, s22, s23, s24, s25, s26, s27, s28);
+    }
+  else
+    return 0;
+}
+
+static inline int
+streq0 (const char *s1, const char *s2, char s20, char s21, char s22, char s23, char s24, char s25, char s26, char s27, char s28)
+{
+  if (s1[0] == s20)
+    {
+      if (s20 == 0)
+        return 1;
+      else
+        return streq1 (s1, s2, s21, s22, s23, s24, s25, s26, s27, s28);
+    }
+  else
+    return 0;
+}
+
+#define STREQ(s1,s2,s20,s21,s22,s23,s24,s25,s26,s27,s28) \
+  streq0 (s1, s2, s20, s21, s22, s23, s24, s25, s26, s27, s28)
+
+#else
+
+#define STREQ(s1,s2,s20,s21,s22,s23,s24,s25,s26,s27,s28) \
+  (strcmp (s1, s2) == 0)
+
+#endif
+
+#endif /* _GL_STREQ_H */
diff --git a/lib/strerror-impl.h b/lib/strerror-impl.h
new file mode 100644 (file)
index 0000000..a204243
--- /dev/null
@@ -0,0 +1,42 @@
+/* strerror-impl.h --- Implementation of POSIX compatible strerror() function.
+
+   Copyright (C) 2007-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+#ifdef STATIC
+STATIC
+#endif
+char *
+strerror (int n)
+{
+  static char buf[256];
+
+  int ret = strerror_r (n, buf, sizeof (buf));
+
+  if (ret == 0)
+    return buf;
+
+  if (ret == ERANGE)
+    /* If this happens, increase the size of buf.  */
+    abort ();
+
+  {
+    static char const fmt[] = "Unknown error (%d)";
+    verify (sizeof (buf) >= sizeof (fmt) + INT_STRLEN_BOUND (n));
+    sprintf (buf, fmt, n);
+    errno = ret;
+    return buf;
+  }
+}
diff --git a/lib/strerror.c b/lib/strerror.c
new file mode 100644 (file)
index 0000000..9d1f165
--- /dev/null
@@ -0,0 +1,33 @@
+/* strerror.c --- POSIX compatible system error routine
+
+   Copyright (C) 2007-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include <string.h>
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "intprops.h"
+#include "verify.h"
+
+/* Use the system functions, not the gnulib overrides in this file.  */
+#undef sprintf
+
+#include "strerror-impl.h"
diff --git a/lib/strerror_r.c b/lib/strerror_r.c
new file mode 100644 (file)
index 0000000..494b1f0
--- /dev/null
@@ -0,0 +1,619 @@
+/* strerror_r.c --- POSIX compatible system error routine
+
+   Copyright (C) 2010-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2010.  */
+
+#include <config.h>
+
+/* Enable declaration of sys_nerr and sys_errlist in <errno.h> on NetBSD.  */
+#define _NETBSD_SOURCE 1
+
+/* Specification.  */
+#include <string.h>
+
+#include <errno.h>
+#include <stdio.h>
+
+#if GNULIB_defined_ESOCK /* native Windows platforms */
+# if HAVE_WINSOCK2_H
+#  include <winsock2.h>
+# endif
+#endif
+
+/* Reasonable buffer size that should never trigger ERANGE; if this
+   proves too small, we intentionally abort(), to remind us to fix
+   this value as well as strerror-impl.h.  */
+#define STACKBUF_LEN 256
+
+#if (__GLIBC__ >= 2 || defined __UCLIBC__ || defined __CYGWIN__) && HAVE___XPG_STRERROR_R /* glibc >= 2.3.4, cygwin >= 1.7.9 */
+
+# define USE_XPG_STRERROR_R 1
+
+#elif HAVE_DECL_STRERROR_R && !(__GLIBC__ >= 2 || defined __UCLIBC__ || defined __CYGWIN__)
+
+/* The system's strerror_r function is OK, except that its third argument
+   is 'int', not 'size_t', or its return type is wrong.  */
+
+# include <limits.h>
+
+# define USE_SYSTEM_STRERROR_R 1
+
+#else /* (__GLIBC__ >= 2 || defined __UCLIBC__ || defined __CYGWIN__ ? !HAVE___XPG_STRERROR_R : !HAVE_DECL_STRERROR_R) */
+
+/* Use the system's strerror().  Exclude glibc and cygwin because the
+   system strerror_r has the wrong return type, and cygwin 1.7.9
+   strerror_r clobbers strerror.  */
+# undef strerror
+
+# define USE_SYSTEM_STRERROR 1
+
+# if defined __NetBSD__ || defined __hpux || ((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__) || defined __sgi || (defined __sun && !defined _LP64) || defined __CYGWIN__
+
+/* No locking needed.  */
+
+/* Get catgets internationalization functions.  */
+#  if HAVE_CATGETS
+#   include <nl_types.h>
+#  endif
+
+/* Get sys_nerr, sys_errlist on HP-UX (otherwise only declared in C++ mode).
+   Get sys_nerr, sys_errlist on IRIX (otherwise only declared with _SGIAPI).  */
+#  if defined __hpux || defined __sgi
+extern int sys_nerr;
+extern char *sys_errlist[];
+#  endif
+
+/* Get sys_nerr on Solaris.  */
+#  if defined __sun && !defined _LP64
+extern int sys_nerr;
+#  endif
+
+/* Get sys_nerr, sys_errlist on native Windows.  */
+#  include <stdlib.h>
+
+# else
+
+#  include "glthread/lock.h"
+
+/* This lock protects the buffer returned by strerror().  We assume that
+   no other uses of strerror() exist in the program.  */
+gl_lock_define_initialized(static, strerror_lock)
+
+# endif
+
+#endif
+
+/* Copy as much of MSG into BUF as possible, without corrupting errno.
+   Return 0 if MSG fit in BUFLEN, otherwise return ERANGE.  */
+static int
+safe_copy (char *buf, size_t buflen, const char *msg)
+{
+  size_t len = strlen (msg);
+  int ret;
+
+  if (len < buflen)
+    {
+      /* Although POSIX allows memcpy() to corrupt errno, we don't
+         know of any implementation where this is a real problem.  */
+      memcpy (buf, msg, len + 1);
+      ret = 0;
+    }
+  else
+    {
+      memcpy (buf, msg, buflen - 1);
+      buf[buflen - 1] = '\0';
+      ret = ERANGE;
+    }
+  return ret;
+}
+
+
+int
+strerror_r (int errnum, char *buf, size_t buflen)
+#undef strerror_r
+{
+  /* Filter this out now, so that rest of this replacement knows that
+     there is room for a non-empty message and trailing NUL.  */
+  if (buflen <= 1)
+    {
+      if (buflen)
+        *buf = '\0';
+      return ERANGE;
+    }
+  *buf = '\0';
+
+#if GNULIB_defined_ETXTBSY \
+    || GNULIB_defined_ESOCK \
+    || GNULIB_defined_ENOMSG \
+    || GNULIB_defined_EIDRM \
+    || GNULIB_defined_ENOLINK \
+    || GNULIB_defined_EPROTO \
+    || GNULIB_defined_EMULTIHOP \
+    || GNULIB_defined_EBADMSG \
+    || GNULIB_defined_EOVERFLOW \
+    || GNULIB_defined_ENOTSUP \
+    || GNULIB_defined_ESTALE \
+    || GNULIB_defined_EDQUOT \
+    || GNULIB_defined_ECANCELED
+  {
+    char const *msg = NULL;
+    /* These error messages are taken from glibc/sysdeps/gnu/errlist.c.  */
+    switch (errnum)
+      {
+# if GNULIB_defined_ETXTBSY
+      case ETXTBSY:
+        msg = "Text file busy";
+        break;
+# endif
+
+# if GNULIB_defined_ESOCK /* native Windows platforms */
+      /* EWOULDBLOCK is the same as EAGAIN.  */
+      case EINPROGRESS:
+        msg = "Operation now in progress";
+        break;
+      case EALREADY:
+        msg = "Operation already in progress";
+        break;
+      case ENOTSOCK:
+        msg = "Socket operation on non-socket";
+        break;
+      case EDESTADDRREQ:
+        msg = "Destination address required";
+        break;
+      case EMSGSIZE:
+        msg = "Message too long";
+        break;
+      case EPROTOTYPE:
+        msg = "Protocol wrong type for socket";
+        break;
+      case ENOPROTOOPT:
+        msg = "Protocol not available";
+        break;
+      case EPROTONOSUPPORT:
+        msg = "Protocol not supported";
+        break;
+      case ESOCKTNOSUPPORT:
+        msg = "Socket type not supported";
+        break;
+      case EOPNOTSUPP:
+        msg = "Operation not supported";
+        break;
+      case EPFNOSUPPORT:
+        msg = "Protocol family not supported";
+        break;
+      case EAFNOSUPPORT:
+        msg = "Address family not supported by protocol";
+        break;
+      case EADDRINUSE:
+        msg = "Address already in use";
+        break;
+      case EADDRNOTAVAIL:
+        msg = "Cannot assign requested address";
+        break;
+      case ENETDOWN:
+        msg = "Network is down";
+        break;
+      case ENETUNREACH:
+        msg = "Network is unreachable";
+        break;
+      case ENETRESET:
+        msg = "Network dropped connection on reset";
+        break;
+      case ECONNABORTED:
+        msg = "Software caused connection abort";
+        break;
+      case ECONNRESET:
+        msg = "Connection reset by peer";
+        break;
+      case ENOBUFS:
+        msg = "No buffer space available";
+        break;
+      case EISCONN:
+        msg = "Transport endpoint is already connected";
+        break;
+      case ENOTCONN:
+        msg = "Transport endpoint is not connected";
+        break;
+      case ESHUTDOWN:
+        msg = "Cannot send after transport endpoint shutdown";
+        break;
+      case ETOOMANYREFS:
+        msg = "Too many references: cannot splice";
+        break;
+      case ETIMEDOUT:
+        msg = "Connection timed out";
+        break;
+      case ECONNREFUSED:
+        msg = "Connection refused";
+        break;
+      case ELOOP:
+        msg = "Too many levels of symbolic links";
+        break;
+      case EHOSTDOWN:
+        msg = "Host is down";
+        break;
+      case EHOSTUNREACH:
+        msg = "No route to host";
+        break;
+      case EPROCLIM:
+        msg = "Too many processes";
+        break;
+      case EUSERS:
+        msg = "Too many users";
+        break;
+      case EDQUOT:
+        msg = "Disk quota exceeded";
+        break;
+      case ESTALE:
+        msg = "Stale NFS file handle";
+        break;
+      case EREMOTE:
+        msg = "Object is remote";
+        break;
+#  if HAVE_WINSOCK2_H
+      /* WSA_INVALID_HANDLE maps to EBADF */
+      /* WSA_NOT_ENOUGH_MEMORY maps to ENOMEM */
+      /* WSA_INVALID_PARAMETER maps to EINVAL */
+      case WSA_OPERATION_ABORTED:
+        msg = "Overlapped operation aborted";
+        break;
+      case WSA_IO_INCOMPLETE:
+        msg = "Overlapped I/O event object not in signaled state";
+        break;
+      case WSA_IO_PENDING:
+        msg = "Overlapped operations will complete later";
+        break;
+      /* WSAEINTR maps to EINTR */
+      /* WSAEBADF maps to EBADF */
+      /* WSAEACCES maps to EACCES */
+      /* WSAEFAULT maps to EFAULT */
+      /* WSAEINVAL maps to EINVAL */
+      /* WSAEMFILE maps to EMFILE */
+      /* WSAEWOULDBLOCK maps to EWOULDBLOCK */
+      /* WSAEINPROGRESS is EINPROGRESS */
+      /* WSAEALREADY is EALREADY */
+      /* WSAENOTSOCK is ENOTSOCK */
+      /* WSAEDESTADDRREQ is EDESTADDRREQ */
+      /* WSAEMSGSIZE is EMSGSIZE */
+      /* WSAEPROTOTYPE is EPROTOTYPE */
+      /* WSAENOPROTOOPT is ENOPROTOOPT */
+      /* WSAEPROTONOSUPPORT is EPROTONOSUPPORT */
+      /* WSAESOCKTNOSUPPORT is ESOCKTNOSUPPORT */
+      /* WSAEOPNOTSUPP is EOPNOTSUPP */
+      /* WSAEPFNOSUPPORT is EPFNOSUPPORT */
+      /* WSAEAFNOSUPPORT is EAFNOSUPPORT */
+      /* WSAEADDRINUSE is EADDRINUSE */
+      /* WSAEADDRNOTAVAIL is EADDRNOTAVAIL */
+      /* WSAENETDOWN is ENETDOWN */
+      /* WSAENETUNREACH is ENETUNREACH */
+      /* WSAENETRESET is ENETRESET */
+      /* WSAECONNABORTED is ECONNABORTED */
+      /* WSAECONNRESET is ECONNRESET */
+      /* WSAENOBUFS is ENOBUFS */
+      /* WSAEISCONN is EISCONN */
+      /* WSAENOTCONN is ENOTCONN */
+      /* WSAESHUTDOWN is ESHUTDOWN */
+      /* WSAETOOMANYREFS is ETOOMANYREFS */
+      /* WSAETIMEDOUT is ETIMEDOUT */
+      /* WSAECONNREFUSED is ECONNREFUSED */
+      /* WSAELOOP is ELOOP */
+      /* WSAENAMETOOLONG maps to ENAMETOOLONG */
+      /* WSAEHOSTDOWN is EHOSTDOWN */
+      /* WSAEHOSTUNREACH is EHOSTUNREACH */
+      /* WSAENOTEMPTY maps to ENOTEMPTY */
+      /* WSAEPROCLIM is EPROCLIM */
+      /* WSAEUSERS is EUSERS */
+      /* WSAEDQUOT is EDQUOT */
+      /* WSAESTALE is ESTALE */
+      /* WSAEREMOTE is EREMOTE */
+      case WSASYSNOTREADY:
+        msg = "Network subsystem is unavailable";
+        break;
+      case WSAVERNOTSUPPORTED:
+        msg = "Winsock.dll version out of range";
+        break;
+      case WSANOTINITIALISED:
+        msg = "Successful WSAStartup not yet performed";
+        break;
+      case WSAEDISCON:
+        msg = "Graceful shutdown in progress";
+        break;
+      case WSAENOMORE: case WSA_E_NO_MORE:
+        msg = "No more results";
+        break;
+      case WSAECANCELLED: case WSA_E_CANCELLED:
+        msg = "Call was canceled";
+        break;
+      case WSAEINVALIDPROCTABLE:
+        msg = "Procedure call table is invalid";
+        break;
+      case WSAEINVALIDPROVIDER:
+        msg = "Service provider is invalid";
+        break;
+      case WSAEPROVIDERFAILEDINIT:
+        msg = "Service provider failed to initialize";
+        break;
+      case WSASYSCALLFAILURE:
+        msg = "System call failure";
+        break;
+      case WSASERVICE_NOT_FOUND:
+        msg = "Service not found";
+        break;
+      case WSATYPE_NOT_FOUND:
+        msg = "Class type not found";
+        break;
+      case WSAEREFUSED:
+        msg = "Database query was refused";
+        break;
+      case WSAHOST_NOT_FOUND:
+        msg = "Host not found";
+        break;
+      case WSATRY_AGAIN:
+        msg = "Nonauthoritative host not found";
+        break;
+      case WSANO_RECOVERY:
+        msg = "Nonrecoverable error";
+        break;
+      case WSANO_DATA:
+        msg = "Valid name, no data record of requested type";
+        break;
+      /* WSA_QOS_* omitted */
+#  endif
+# endif
+
+# if GNULIB_defined_ENOMSG
+      case ENOMSG:
+        msg = "No message of desired type";
+        break;
+# endif
+
+# if GNULIB_defined_EIDRM
+      case EIDRM:
+        msg = "Identifier removed";
+        break;
+# endif
+
+# if GNULIB_defined_ENOLINK
+      case ENOLINK:
+        msg = "Link has been severed";
+        break;
+# endif
+
+# if GNULIB_defined_EPROTO
+      case EPROTO:
+        msg = "Protocol error";
+        break;
+# endif
+
+# if GNULIB_defined_EMULTIHOP
+      case EMULTIHOP:
+        msg = "Multihop attempted";
+        break;
+# endif
+
+# if GNULIB_defined_EBADMSG
+      case EBADMSG:
+        msg = "Bad message";
+        break;
+# endif
+
+# if GNULIB_defined_EOVERFLOW
+      case EOVERFLOW:
+        msg = "Value too large for defined data type";
+        break;
+# endif
+
+# if GNULIB_defined_ENOTSUP
+      case ENOTSUP:
+        msg = "Not supported";
+        break;
+# endif
+
+# if GNULIB_defined_ESTALE
+      case ESTALE:
+        msg = "Stale NFS file handle";
+        break;
+# endif
+
+# if GNULIB_defined_EDQUOT
+      case EDQUOT:
+        msg = "Disk quota exceeded";
+        break;
+# endif
+
+# if GNULIB_defined_ECANCELED
+      case ECANCELED:
+        msg = "Operation canceled";
+        break;
+# endif
+      }
+
+    if (msg)
+      return safe_copy (buf, buflen, msg);
+  }
+#endif
+
+  {
+    int ret;
+    int saved_errno = errno;
+
+#if USE_XPG_STRERROR_R
+
+    {
+      extern int __xpg_strerror_r (int errnum, char *buf, size_t buflen);
+
+      ret = __xpg_strerror_r (errnum, buf, buflen);
+      if (ret < 0)
+        ret = errno;
+      if (!*buf)
+        {
+          /* glibc 2.13 would not touch buf on err, so we have to fall
+             back to GNU strerror_r which always returns a thread-safe
+             untruncated string to (partially) copy into our buf.  */
+          safe_copy (buf, buflen, strerror_r (errnum, buf, buflen));
+        }
+    }
+
+#elif USE_SYSTEM_STRERROR_R
+
+    if (buflen > INT_MAX)
+      buflen = INT_MAX;
+
+# ifdef __hpux
+    /* On HP-UX 11.31, strerror_r always fails when buflen < 80; it
+       also fails to change buf on EINVAL.  */
+    {
+      char stackbuf[80];
+
+      if (buflen < sizeof stackbuf)
+        {
+          ret = strerror_r (errnum, stackbuf, sizeof stackbuf);
+          if (ret == 0)
+            ret = safe_copy (buf, buflen, stackbuf);
+        }
+      else
+        ret = strerror_r (errnum, buf, buflen);
+    }
+# else
+    /* Solaris 10 does not populate buf on ERANGE.  */
+    ret = strerror_r (errnum, buf, buflen);
+    if (ret == ERANGE && !*buf)
+      {
+        char stackbuf[STACKBUF_LEN];
+
+        /* strerror-impl.h is also affected if our choice of stackbuf
+           size is not large enough.  */
+        if (strerror_r (errnum, stackbuf, sizeof stackbuf) == ERANGE)
+          abort ();
+        safe_copy (buf, buflen, stackbuf);
+      }
+# endif
+
+# ifdef _AIX
+    /* AIX returns 0 rather than ERANGE when truncating strings; try
+       again until we are sure we got the entire string.  */
+    if (!ret && strlen (buf) == buflen - 1)
+      {
+        char stackbuf[STACKBUF_LEN];
+        size_t len;
+        strerror_r (errnum, stackbuf, sizeof stackbuf);
+        len = strlen (stackbuf);
+        /* stackbuf should have been large enough.  */
+        if (len + 1 == sizeof stackbuf)
+          abort ();
+        if (buflen <= len)
+          ret = ERANGE;
+      }
+# endif
+
+    /* Some old implementations may return (-1, EINVAL) instead of EINVAL.  */
+    if (ret < 0)
+      ret = errno;
+
+    /* FreeBSD rejects 0; see http://austingroupbugs.net/view.php?id=382.  */
+    if (errnum == 0 && ret == EINVAL)
+      ret = safe_copy (buf, buflen, "Success");
+
+#else /* USE_SYSTEM_STRERROR */
+
+    /* Try to do what strerror (errnum) does, but without clobbering the
+       buffer used by strerror().  */
+
+# if defined __NetBSD__ || defined __hpux || ((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__) || defined __CYGWIN__ /* NetBSD, HP-UX, native Win32, Cygwin */
+
+    /* NetBSD:        sys_nerr, sys_errlist are declared through _NETBSD_SOURCE
+                      and <errno.h> above.
+       HP-UX:         sys_nerr, sys_errlist are declared explicitly above.
+       native Win32:  sys_nerr, sys_errlist are declared in <stdlib.h>.
+       Cygwin:        sys_nerr, sys_errlist are declared in <errno.h>.  */
+    if (errnum >= 0 && errnum < sys_nerr)
+      {
+#  if HAVE_CATGETS && (defined __NetBSD__ || defined __hpux)
+#   if defined __NetBSD__
+        nl_catd catd = catopen ("libc", NL_CAT_LOCALE);
+        const char *errmsg =
+          (catd != (nl_catd)-1
+           ? catgets (catd, 1, errnum, sys_errlist[errnum])
+           : sys_errlist[errnum]);
+#   endif
+#   if defined __hpux
+        nl_catd catd = catopen ("perror", NL_CAT_LOCALE);
+        const char *errmsg =
+          (catd != (nl_catd)-1
+           ? catgets (catd, 1, 1 + errnum, sys_errlist[errnum])
+           : sys_errlist[errnum]);
+#   endif
+#  else
+        const char *errmsg = sys_errlist[errnum];
+#  endif
+        if (errmsg == NULL || *errmsg == '\0')
+          ret = EINVAL;
+        else
+          ret = safe_copy (buf, buflen, errmsg);
+#  if HAVE_CATGETS && (defined __NetBSD__ || defined __hpux)
+        if (catd != (nl_catd)-1)
+          catclose (catd);
+#  endif
+      }
+    else
+      ret = EINVAL;
+
+# elif defined __sgi || (defined __sun && !defined _LP64) /* IRIX, Solaris <= 9 32-bit */
+
+    /* For a valid error number, the system's strerror() function returns
+       a pointer to a not copied string, not to a buffer.  */
+    if (errnum >= 0 && errnum < sys_nerr)
+      {
+        char *errmsg = strerror (errnum);
+
+        if (errmsg == NULL || *errmsg == '\0')
+          ret = EINVAL;
+        else
+          ret = safe_copy (buf, buflen, errmsg);
+      }
+    else
+      ret = EINVAL;
+
+# else
+
+    gl_lock_lock (strerror_lock);
+
+    {
+      char *errmsg = strerror (errnum);
+
+      /* For invalid error numbers, strerror() on
+           - IRIX 6.5 returns NULL,
+           - HP-UX 11 returns an empty string.  */
+      if (errmsg == NULL || *errmsg == '\0')
+        ret = EINVAL;
+      else
+        ret = safe_copy (buf, buflen, errmsg);
+    }
+
+    gl_lock_unlock (strerror_lock);
+
+# endif
+
+#endif
+
+    if (ret == EINVAL && !*buf)
+      snprintf (buf, buflen, "Unknown error %d", errnum);
+
+    errno = saved_errno;
+    return ret;
+  }
+}
diff --git a/lib/string.in.h b/lib/string.in.h
new file mode 100644 (file)
index 0000000..84cb59c
--- /dev/null
@@ -0,0 +1,983 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* A GNU-like <string.h>.
+
+   Copyright (C) 1995-1996, 2001-2011 Free Software Foundation, 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; either version 3, 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.  */
+
+#ifndef _@GUARD_PREFIX@_STRING_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+/* The include_next requires a split double-inclusion guard.  */
+#@INCLUDE_NEXT@ @NEXT_STRING_H@
+
+#ifndef _@GUARD_PREFIX@_STRING_H
+#define _@GUARD_PREFIX@_STRING_H
+
+/* NetBSD 5.0 mis-defines NULL.  */
+#include <stddef.h>
+
+/* MirBSD defines mbslen as a macro.  */
+#if @GNULIB_MBSLEN@ && defined __MirBSD__
+# include <wchar.h>
+#endif
+
+/* The __attribute__ feature is available in gcc versions 2.5 and later.
+   The attribute __pure__ was added in gcc 2.96.  */
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
+# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
+#else
+# define _GL_ATTRIBUTE_PURE /* empty */
+#endif
+
+/* NetBSD 5.0 declares strsignal in <unistd.h>, not in <string.h>.  */
+/* But in any case avoid namespace pollution on glibc systems.  */
+#if (@GNULIB_STRSIGNAL@ || defined GNULIB_POSIXCHECK) && defined __NetBSD__ \
+    && ! defined __GLIBC__
+# include <unistd.h>
+#endif
+
+/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
+
+/* The definition of _GL_ARG_NONNULL is copied here.  */
+
+/* The definition of _GL_WARN_ON_USE is copied here.  */
+
+
+/* Return the first instance of C within N bytes of S, or NULL.  */
+#if @GNULIB_MEMCHR@
+# if @REPLACE_MEMCHR@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define memchr rpl_memchr
+#  endif
+_GL_FUNCDECL_RPL (memchr, void *, (void const *__s, int __c, size_t __n)
+                                  _GL_ATTRIBUTE_PURE
+                                  _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (memchr, void *, (void const *__s, int __c, size_t __n));
+# else
+#  if ! @HAVE_MEMCHR@
+_GL_FUNCDECL_SYS (memchr, void *, (void const *__s, int __c, size_t __n)
+                                  _GL_ATTRIBUTE_PURE
+                                  _GL_ARG_NONNULL ((1)));
+#  endif
+  /* On some systems, this function is defined as an overloaded function:
+       extern "C" { const void * std::memchr (const void *, int, size_t); }
+       extern "C++" { void * std::memchr (void *, int, size_t); }  */
+_GL_CXXALIAS_SYS_CAST2 (memchr,
+                        void *, (void const *__s, int __c, size_t __n),
+                        void const *, (void const *__s, int __c, size_t __n));
+# endif
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
+     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (memchr, void *, (void *__s, int __c, size_t __n));
+_GL_CXXALIASWARN1 (memchr, void const *,
+                   (void const *__s, int __c, size_t __n));
+# else
+_GL_CXXALIASWARN (memchr);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef memchr
+/* Assume memchr is always declared.  */
+_GL_WARN_ON_USE (memchr, "memchr has platform-specific bugs - "
+                 "use gnulib module memchr for portability" );
+#endif
+
+/* Return the first occurrence of NEEDLE in HAYSTACK.  */
+#if @GNULIB_MEMMEM@
+# if @REPLACE_MEMMEM@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define memmem rpl_memmem
+#  endif
+_GL_FUNCDECL_RPL (memmem, void *,
+                  (void const *__haystack, size_t __haystack_len,
+                   void const *__needle, size_t __needle_len)
+                  _GL_ATTRIBUTE_PURE
+                  _GL_ARG_NONNULL ((1, 3)));
+_GL_CXXALIAS_RPL (memmem, void *,
+                  (void const *__haystack, size_t __haystack_len,
+                   void const *__needle, size_t __needle_len));
+# else
+#  if ! @HAVE_DECL_MEMMEM@
+_GL_FUNCDECL_SYS (memmem, void *,
+                  (void const *__haystack, size_t __haystack_len,
+                   void const *__needle, size_t __needle_len)
+                  _GL_ATTRIBUTE_PURE
+                  _GL_ARG_NONNULL ((1, 3)));
+#  endif
+_GL_CXXALIAS_SYS (memmem, void *,
+                  (void const *__haystack, size_t __haystack_len,
+                   void const *__needle, size_t __needle_len));
+# endif
+_GL_CXXALIASWARN (memmem);
+#elif defined GNULIB_POSIXCHECK
+# undef memmem
+# if HAVE_RAW_DECL_MEMMEM
+_GL_WARN_ON_USE (memmem, "memmem is unportable and often quadratic - "
+                 "use gnulib module memmem-simple for portability, "
+                 "and module memmem for speed" );
+# endif
+#endif
+
+/* Copy N bytes of SRC to DEST, return pointer to bytes after the
+   last written byte.  */
+#if @GNULIB_MEMPCPY@
+# if ! @HAVE_MEMPCPY@
+_GL_FUNCDECL_SYS (mempcpy, void *,
+                  (void *restrict __dest, void const *restrict __src,
+                   size_t __n)
+                  _GL_ARG_NONNULL ((1, 2)));
+# endif
+_GL_CXXALIAS_SYS (mempcpy, void *,
+                  (void *restrict __dest, void const *restrict __src,
+                   size_t __n));
+_GL_CXXALIASWARN (mempcpy);
+#elif defined GNULIB_POSIXCHECK
+# undef mempcpy
+# if HAVE_RAW_DECL_MEMPCPY
+_GL_WARN_ON_USE (mempcpy, "mempcpy is unportable - "
+                 "use gnulib module mempcpy for portability");
+# endif
+#endif
+
+/* Search backwards through a block for a byte (specified as an int).  */
+#if @GNULIB_MEMRCHR@
+# if ! @HAVE_DECL_MEMRCHR@
+_GL_FUNCDECL_SYS (memrchr, void *, (void const *, int, size_t)
+                                   _GL_ATTRIBUTE_PURE
+                                   _GL_ARG_NONNULL ((1)));
+# endif
+  /* On some systems, this function is defined as an overloaded function:
+       extern "C++" { const void * std::memrchr (const void *, int, size_t); }
+       extern "C++" { void * std::memrchr (void *, int, size_t); }  */
+_GL_CXXALIAS_SYS_CAST2 (memrchr,
+                        void *, (void const *, int, size_t),
+                        void const *, (void const *, int, size_t));
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
+     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (memrchr, void *, (void *, int, size_t));
+_GL_CXXALIASWARN1 (memrchr, void const *, (void const *, int, size_t));
+# else
+_GL_CXXALIASWARN (memrchr);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef memrchr
+# if HAVE_RAW_DECL_MEMRCHR
+_GL_WARN_ON_USE (memrchr, "memrchr is unportable - "
+                 "use gnulib module memrchr for portability");
+# endif
+#endif
+
+/* Find the first occurrence of C in S.  More efficient than
+   memchr(S,C,N), at the expense of undefined behavior if C does not
+   occur within N bytes.  */
+#if @GNULIB_RAWMEMCHR@
+# if ! @HAVE_RAWMEMCHR@
+_GL_FUNCDECL_SYS (rawmemchr, void *, (void const *__s, int __c_in)
+                                     _GL_ATTRIBUTE_PURE
+                                     _GL_ARG_NONNULL ((1)));
+# endif
+  /* On some systems, this function is defined as an overloaded function:
+       extern "C++" { const void * std::rawmemchr (const void *, int); }
+       extern "C++" { void * std::rawmemchr (void *, int); }  */
+_GL_CXXALIAS_SYS_CAST2 (rawmemchr,
+                        void *, (void const *__s, int __c_in),
+                        void const *, (void const *__s, int __c_in));
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
+     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (rawmemchr, void *, (void *__s, int __c_in));
+_GL_CXXALIASWARN1 (rawmemchr, void const *, (void const *__s, int __c_in));
+# else
+_GL_CXXALIASWARN (rawmemchr);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef rawmemchr
+# if HAVE_RAW_DECL_RAWMEMCHR
+_GL_WARN_ON_USE (rawmemchr, "rawmemchr is unportable - "
+                 "use gnulib module rawmemchr for portability");
+# endif
+#endif
+
+/* Copy SRC to DST, returning the address of the terminating '\0' in DST.  */
+#if @GNULIB_STPCPY@
+# if ! @HAVE_STPCPY@
+_GL_FUNCDECL_SYS (stpcpy, char *,
+                  (char *restrict __dst, char const *restrict __src)
+                  _GL_ARG_NONNULL ((1, 2)));
+# endif
+_GL_CXXALIAS_SYS (stpcpy, char *,
+                  (char *restrict __dst, char const *restrict __src));
+_GL_CXXALIASWARN (stpcpy);
+#elif defined GNULIB_POSIXCHECK
+# undef stpcpy
+# if HAVE_RAW_DECL_STPCPY
+_GL_WARN_ON_USE (stpcpy, "stpcpy is unportable - "
+                 "use gnulib module stpcpy for portability");
+# endif
+#endif
+
+/* Copy no more than N bytes of SRC to DST, returning a pointer past the
+   last non-NUL byte written into DST.  */
+#if @GNULIB_STPNCPY@
+# if @REPLACE_STPNCPY@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef stpncpy
+#   define stpncpy rpl_stpncpy
+#  endif
+_GL_FUNCDECL_RPL (stpncpy, char *,
+                  (char *restrict __dst, char const *restrict __src,
+                   size_t __n)
+                  _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (stpncpy, char *,
+                  (char *restrict __dst, char const *restrict __src,
+                   size_t __n));
+# else
+#  if ! @HAVE_STPNCPY@
+_GL_FUNCDECL_SYS (stpncpy, char *,
+                  (char *restrict __dst, char const *restrict __src,
+                   size_t __n)
+                  _GL_ARG_NONNULL ((1, 2)));
+#  endif
+_GL_CXXALIAS_SYS (stpncpy, char *,
+                  (char *restrict __dst, char const *restrict __src,
+                   size_t __n));
+# endif
+_GL_CXXALIASWARN (stpncpy);
+#elif defined GNULIB_POSIXCHECK
+# undef stpncpy
+# if HAVE_RAW_DECL_STPNCPY
+_GL_WARN_ON_USE (stpncpy, "stpncpy is unportable - "
+                 "use gnulib module stpncpy for portability");
+# endif
+#endif
+
+#if defined GNULIB_POSIXCHECK
+/* strchr() does not work with multibyte strings if the locale encoding is
+   GB18030 and the character to be searched is a digit.  */
+# undef strchr
+/* Assume strchr is always declared.  */
+_GL_WARN_ON_USE (strchr, "strchr cannot work correctly on character strings "
+                 "in some multibyte locales - "
+                 "use mbschr if you care about internationalization");
+#endif
+
+/* Find the first occurrence of C in S or the final NUL byte.  */
+#if @GNULIB_STRCHRNUL@
+# if @REPLACE_STRCHRNUL@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define strchrnul rpl_strchrnul
+#  endif
+_GL_FUNCDECL_RPL (strchrnul, char *, (const char *__s, int __c_in)
+                                     _GL_ATTRIBUTE_PURE
+                                     _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (strchrnul, char *,
+                  (const char *str, int ch));
+# else
+#  if ! @HAVE_STRCHRNUL@
+_GL_FUNCDECL_SYS (strchrnul, char *, (char const *__s, int __c_in)
+                                     _GL_ATTRIBUTE_PURE
+                                     _GL_ARG_NONNULL ((1)));
+#  endif
+  /* On some systems, this function is defined as an overloaded function:
+       extern "C++" { const char * std::strchrnul (const char *, int); }
+       extern "C++" { char * std::strchrnul (char *, int); }  */
+_GL_CXXALIAS_SYS_CAST2 (strchrnul,
+                        char *, (char const *__s, int __c_in),
+                        char const *, (char const *__s, int __c_in));
+# endif
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
+     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (strchrnul, char *, (char *__s, int __c_in));
+_GL_CXXALIASWARN1 (strchrnul, char const *, (char const *__s, int __c_in));
+# else
+_GL_CXXALIASWARN (strchrnul);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strchrnul
+# if HAVE_RAW_DECL_STRCHRNUL
+_GL_WARN_ON_USE (strchrnul, "strchrnul is unportable - "
+                 "use gnulib module strchrnul for portability");
+# endif
+#endif
+
+/* Duplicate S, returning an identical malloc'd string.  */
+#if @GNULIB_STRDUP@
+# if @REPLACE_STRDUP@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef strdup
+#   define strdup rpl_strdup
+#  endif
+_GL_FUNCDECL_RPL (strdup, char *, (char const *__s) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (strdup, char *, (char const *__s));
+# else
+#  if defined __cplusplus && defined GNULIB_NAMESPACE && defined strdup
+    /* strdup exists as a function and as a macro.  Get rid of the macro.  */
+#   undef strdup
+#  endif
+#  if !(@HAVE_DECL_STRDUP@ || defined strdup)
+_GL_FUNCDECL_SYS (strdup, char *, (char const *__s) _GL_ARG_NONNULL ((1)));
+#  endif
+_GL_CXXALIAS_SYS (strdup, char *, (char const *__s));
+# endif
+_GL_CXXALIASWARN (strdup);
+#elif defined GNULIB_POSIXCHECK
+# undef strdup
+# if HAVE_RAW_DECL_STRDUP
+_GL_WARN_ON_USE (strdup, "strdup is unportable - "
+                 "use gnulib module strdup for portability");
+# endif
+#endif
+
+/* Append no more than N characters from SRC onto DEST.  */
+#if @GNULIB_STRNCAT@
+# if @REPLACE_STRNCAT@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef strncat
+#   define strncat rpl_strncat
+#  endif
+_GL_FUNCDECL_RPL (strncat, char *, (char *dest, const char *src, size_t n)
+                                   _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (strncat, char *, (char *dest, const char *src, size_t n));
+# else
+_GL_CXXALIAS_SYS (strncat, char *, (char *dest, const char *src, size_t n));
+# endif
+_GL_CXXALIASWARN (strncat);
+#elif defined GNULIB_POSIXCHECK
+# undef strncat
+# if HAVE_RAW_DECL_STRNCAT
+_GL_WARN_ON_USE (strncat, "strncat is unportable - "
+                 "use gnulib module strncat for portability");
+# endif
+#endif
+
+/* Return a newly allocated copy of at most N bytes of STRING.  */
+#if @GNULIB_STRNDUP@
+# if @REPLACE_STRNDUP@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef strndup
+#   define strndup rpl_strndup
+#  endif
+_GL_FUNCDECL_RPL (strndup, char *, (char const *__string, size_t __n)
+                                   _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (strndup, char *, (char const *__string, size_t __n));
+# else
+#  if ! @HAVE_DECL_STRNDUP@
+_GL_FUNCDECL_SYS (strndup, char *, (char const *__string, size_t __n)
+                                   _GL_ARG_NONNULL ((1)));
+#  endif
+_GL_CXXALIAS_SYS (strndup, char *, (char const *__string, size_t __n));
+# endif
+_GL_CXXALIASWARN (strndup);
+#elif defined GNULIB_POSIXCHECK
+# undef strndup
+# if HAVE_RAW_DECL_STRNDUP
+_GL_WARN_ON_USE (strndup, "strndup is unportable - "
+                 "use gnulib module strndup for portability");
+# endif
+#endif
+
+/* Find the length (number of bytes) of STRING, but scan at most
+   MAXLEN bytes.  If no '\0' terminator is found in that many bytes,
+   return MAXLEN.  */
+#if @GNULIB_STRNLEN@
+# if @REPLACE_STRNLEN@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef strnlen
+#   define strnlen rpl_strnlen
+#  endif
+_GL_FUNCDECL_RPL (strnlen, size_t, (char const *__string, size_t __maxlen)
+                                   _GL_ATTRIBUTE_PURE
+                                   _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (strnlen, size_t, (char const *__string, size_t __maxlen));
+# else
+#  if ! @HAVE_DECL_STRNLEN@
+_GL_FUNCDECL_SYS (strnlen, size_t, (char const *__string, size_t __maxlen)
+                                   _GL_ATTRIBUTE_PURE
+                                   _GL_ARG_NONNULL ((1)));
+#  endif
+_GL_CXXALIAS_SYS (strnlen, size_t, (char const *__string, size_t __maxlen));
+# endif
+_GL_CXXALIASWARN (strnlen);
+#elif defined GNULIB_POSIXCHECK
+# undef strnlen
+# if HAVE_RAW_DECL_STRNLEN
+_GL_WARN_ON_USE (strnlen, "strnlen is unportable - "
+                 "use gnulib module strnlen for portability");
+# endif
+#endif
+
+#if defined GNULIB_POSIXCHECK
+/* strcspn() assumes the second argument is a list of single-byte characters.
+   Even in this simple case, it does not work with multibyte strings if the
+   locale encoding is GB18030 and one of the characters to be searched is a
+   digit.  */
+# undef strcspn
+/* Assume strcspn is always declared.  */
+_GL_WARN_ON_USE (strcspn, "strcspn cannot work correctly on character strings "
+                 "in multibyte locales - "
+                 "use mbscspn if you care about internationalization");
+#endif
+
+/* Find the first occurrence in S of any character in ACCEPT.  */
+#if @GNULIB_STRPBRK@
+# if ! @HAVE_STRPBRK@
+_GL_FUNCDECL_SYS (strpbrk, char *, (char const *__s, char const *__accept)
+                                   _GL_ATTRIBUTE_PURE
+                                   _GL_ARG_NONNULL ((1, 2)));
+# endif
+  /* On some systems, this function is defined as an overloaded function:
+       extern "C" { const char * strpbrk (const char *, const char *); }
+       extern "C++" { char * strpbrk (char *, const char *); }  */
+_GL_CXXALIAS_SYS_CAST2 (strpbrk,
+                        char *, (char const *__s, char const *__accept),
+                        const char *, (char const *__s, char const *__accept));
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
+     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (strpbrk, char *, (char *__s, char const *__accept));
+_GL_CXXALIASWARN1 (strpbrk, char const *,
+                   (char const *__s, char const *__accept));
+# else
+_GL_CXXALIASWARN (strpbrk);
+# endif
+# if defined GNULIB_POSIXCHECK
+/* strpbrk() assumes the second argument is a list of single-byte characters.
+   Even in this simple case, it does not work with multibyte strings if the
+   locale encoding is GB18030 and one of the characters to be searched is a
+   digit.  */
+#  undef strpbrk
+_GL_WARN_ON_USE (strpbrk, "strpbrk cannot work correctly on character strings "
+                 "in multibyte locales - "
+                 "use mbspbrk if you care about internationalization");
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strpbrk
+# if HAVE_RAW_DECL_STRPBRK
+_GL_WARN_ON_USE (strpbrk, "strpbrk is unportable - "
+                 "use gnulib module strpbrk for portability");
+# endif
+#endif
+
+#if defined GNULIB_POSIXCHECK
+/* strspn() assumes the second argument is a list of single-byte characters.
+   Even in this simple case, it cannot work with multibyte strings.  */
+# undef strspn
+/* Assume strspn is always declared.  */
+_GL_WARN_ON_USE (strspn, "strspn cannot work correctly on character strings "
+                 "in multibyte locales - "
+                 "use mbsspn if you care about internationalization");
+#endif
+
+#if defined GNULIB_POSIXCHECK
+/* strrchr() does not work with multibyte strings if the locale encoding is
+   GB18030 and the character to be searched is a digit.  */
+# undef strrchr
+/* Assume strrchr is always declared.  */
+_GL_WARN_ON_USE (strrchr, "strrchr cannot work correctly on character strings "
+                 "in some multibyte locales - "
+                 "use mbsrchr if you care about internationalization");
+#endif
+
+/* Search the next delimiter (char listed in DELIM) starting at *STRINGP.
+   If one is found, overwrite it with a NUL, and advance *STRINGP
+   to point to the next char after it.  Otherwise, set *STRINGP to NULL.
+   If *STRINGP was already NULL, nothing happens.
+   Return the old value of *STRINGP.
+
+   This is a variant of strtok() that is multithread-safe and supports
+   empty fields.
+
+   Caveat: It modifies the original string.
+   Caveat: These functions cannot be used on constant strings.
+   Caveat: The identity of the delimiting character is lost.
+   Caveat: It doesn't work with multibyte strings unless all of the delimiter
+           characters are ASCII characters < 0x30.
+
+   See also strtok_r().  */
+#if @GNULIB_STRSEP@
+# if ! @HAVE_STRSEP@
+_GL_FUNCDECL_SYS (strsep, char *,
+                  (char **restrict __stringp, char const *restrict __delim)
+                  _GL_ARG_NONNULL ((1, 2)));
+# endif
+_GL_CXXALIAS_SYS (strsep, char *,
+                  (char **restrict __stringp, char const *restrict __delim));
+_GL_CXXALIASWARN (strsep);
+# if defined GNULIB_POSIXCHECK
+#  undef strsep
+_GL_WARN_ON_USE (strsep, "strsep cannot work correctly on character strings "
+                 "in multibyte locales - "
+                 "use mbssep if you care about internationalization");
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strsep
+# if HAVE_RAW_DECL_STRSEP
+_GL_WARN_ON_USE (strsep, "strsep is unportable - "
+                 "use gnulib module strsep for portability");
+# endif
+#endif
+
+#if @GNULIB_STRSTR@
+# if @REPLACE_STRSTR@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define strstr rpl_strstr
+#  endif
+_GL_FUNCDECL_RPL (strstr, char *, (const char *haystack, const char *needle)
+                                  _GL_ATTRIBUTE_PURE
+                                  _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (strstr, char *, (const char *haystack, const char *needle));
+# else
+  /* On some systems, this function is defined as an overloaded function:
+       extern "C++" { const char * strstr (const char *, const char *); }
+       extern "C++" { char * strstr (char *, const char *); }  */
+_GL_CXXALIAS_SYS_CAST2 (strstr,
+                        char *, (const char *haystack, const char *needle),
+                        const char *, (const char *haystack, const char *needle));
+# endif
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
+     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (strstr, char *, (char *haystack, const char *needle));
+_GL_CXXALIASWARN1 (strstr, const char *,
+                   (const char *haystack, const char *needle));
+# else
+_GL_CXXALIASWARN (strstr);
+# endif
+#elif defined GNULIB_POSIXCHECK
+/* strstr() does not work with multibyte strings if the locale encoding is
+   different from UTF-8:
+   POSIX says that it operates on "strings", and "string" in POSIX is defined
+   as a sequence of bytes, not of characters.  */
+# undef strstr
+/* Assume strstr is always declared.  */
+_GL_WARN_ON_USE (strstr, "strstr is quadratic on many systems, and cannot "
+                 "work correctly on character strings in most "
+                 "multibyte locales - "
+                 "use mbsstr if you care about internationalization, "
+                 "or use strstr if you care about speed");
+#endif
+
+/* Find the first occurrence of NEEDLE in HAYSTACK, using case-insensitive
+   comparison.  */
+#if @GNULIB_STRCASESTR@
+# if @REPLACE_STRCASESTR@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define strcasestr rpl_strcasestr
+#  endif
+_GL_FUNCDECL_RPL (strcasestr, char *,
+                  (const char *haystack, const char *needle)
+                  _GL_ATTRIBUTE_PURE
+                  _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (strcasestr, char *,
+                  (const char *haystack, const char *needle));
+# else
+#  if ! @HAVE_STRCASESTR@
+_GL_FUNCDECL_SYS (strcasestr, char *,
+                  (const char *haystack, const char *needle)
+                  _GL_ATTRIBUTE_PURE
+                  _GL_ARG_NONNULL ((1, 2)));
+#  endif
+  /* On some systems, this function is defined as an overloaded function:
+       extern "C++" { const char * strcasestr (const char *, const char *); }
+       extern "C++" { char * strcasestr (char *, const char *); }  */
+_GL_CXXALIAS_SYS_CAST2 (strcasestr,
+                        char *, (const char *haystack, const char *needle),
+                        const char *, (const char *haystack, const char *needle));
+# endif
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
+     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (strcasestr, char *, (char *haystack, const char *needle));
+_GL_CXXALIASWARN1 (strcasestr, const char *,
+                   (const char *haystack, const char *needle));
+# else
+_GL_CXXALIASWARN (strcasestr);
+# endif
+#elif defined GNULIB_POSIXCHECK
+/* strcasestr() does not work with multibyte strings:
+   It is a glibc extension, and glibc implements it only for unibyte
+   locales.  */
+# undef strcasestr
+# if HAVE_RAW_DECL_STRCASESTR
+_GL_WARN_ON_USE (strcasestr, "strcasestr does work correctly on character "
+                 "strings in multibyte locales - "
+                 "use mbscasestr if you care about "
+                 "internationalization, or use c-strcasestr if you want "
+                 "a locale independent function");
+# endif
+#endif
+
+/* Parse S into tokens separated by characters in DELIM.
+   If S is NULL, the saved pointer in SAVE_PTR is used as
+   the next starting point.  For example:
+        char s[] = "-abc-=-def";
+        char *sp;
+        x = strtok_r(s, "-", &sp);      // x = "abc", sp = "=-def"
+        x = strtok_r(NULL, "-=", &sp);  // x = "def", sp = NULL
+        x = strtok_r(NULL, "=", &sp);   // x = NULL
+                // s = "abc\0-def\0"
+
+   This is a variant of strtok() that is multithread-safe.
+
+   For the POSIX documentation for this function, see:
+   http://www.opengroup.org/susv3xsh/strtok.html
+
+   Caveat: It modifies the original string.
+   Caveat: These functions cannot be used on constant strings.
+   Caveat: The identity of the delimiting character is lost.
+   Caveat: It doesn't work with multibyte strings unless all of the delimiter
+           characters are ASCII characters < 0x30.
+
+   See also strsep().  */
+#if @GNULIB_STRTOK_R@
+# if @REPLACE_STRTOK_R@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef strtok_r
+#   define strtok_r rpl_strtok_r
+#  endif
+_GL_FUNCDECL_RPL (strtok_r, char *,
+                  (char *restrict s, char const *restrict delim,
+                   char **restrict save_ptr)
+                  _GL_ARG_NONNULL ((2, 3)));
+_GL_CXXALIAS_RPL (strtok_r, char *,
+                  (char *restrict s, char const *restrict delim,
+                   char **restrict save_ptr));
+# else
+#  if @UNDEFINE_STRTOK_R@ || defined GNULIB_POSIXCHECK
+#   undef strtok_r
+#  endif
+#  if ! @HAVE_DECL_STRTOK_R@
+_GL_FUNCDECL_SYS (strtok_r, char *,
+                  (char *restrict s, char const *restrict delim,
+                   char **restrict save_ptr)
+                  _GL_ARG_NONNULL ((2, 3)));
+#  endif
+_GL_CXXALIAS_SYS (strtok_r, char *,
+                  (char *restrict s, char const *restrict delim,
+                   char **restrict save_ptr));
+# endif
+_GL_CXXALIASWARN (strtok_r);
+# if defined GNULIB_POSIXCHECK
+_GL_WARN_ON_USE (strtok_r, "strtok_r cannot work correctly on character "
+                 "strings in multibyte locales - "
+                 "use mbstok_r if you care about internationalization");
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strtok_r
+# if HAVE_RAW_DECL_STRTOK_R
+_GL_WARN_ON_USE (strtok_r, "strtok_r is unportable - "
+                 "use gnulib module strtok_r for portability");
+# endif
+#endif
+
+
+/* The following functions are not specified by POSIX.  They are gnulib
+   extensions.  */
+
+#if @GNULIB_MBSLEN@
+/* Return the number of multibyte characters in the character string STRING.
+   This considers multibyte characters, unlike strlen, which counts bytes.  */
+# ifdef __MirBSD__  /* MirBSD defines mbslen as a macro.  Override it.  */
+#  undef mbslen
+# endif
+# if @HAVE_MBSLEN@  /* AIX, OSF/1, MirBSD define mbslen already in libc.  */
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define mbslen rpl_mbslen
+#  endif
+_GL_FUNCDECL_RPL (mbslen, size_t, (const char *string) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (mbslen, size_t, (const char *string));
+# else
+_GL_FUNCDECL_SYS (mbslen, size_t, (const char *string) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_SYS (mbslen, size_t, (const char *string));
+# endif
+_GL_CXXALIASWARN (mbslen);
+#endif
+
+#if @GNULIB_MBSNLEN@
+/* Return the number of multibyte characters in the character string starting
+   at STRING and ending at STRING + LEN.  */
+_GL_EXTERN_C size_t mbsnlen (const char *string, size_t len)
+     _GL_ARG_NONNULL ((1));
+#endif
+
+#if @GNULIB_MBSCHR@
+/* Locate the first single-byte character C in the character string STRING,
+   and return a pointer to it.  Return NULL if C is not found in STRING.
+   Unlike strchr(), this function works correctly in multibyte locales with
+   encodings such as GB18030.  */
+# if defined __hpux
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define mbschr rpl_mbschr /* avoid collision with HP-UX function */
+#  endif
+_GL_FUNCDECL_RPL (mbschr, char *, (const char *string, int c)
+                                  _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (mbschr, char *, (const char *string, int c));
+# else
+_GL_FUNCDECL_SYS (mbschr, char *, (const char *string, int c)
+                                  _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_SYS (mbschr, char *, (const char *string, int c));
+# endif
+_GL_CXXALIASWARN (mbschr);
+#endif
+
+#if @GNULIB_MBSRCHR@
+/* Locate the last single-byte character C in the character string STRING,
+   and return a pointer to it.  Return NULL if C is not found in STRING.
+   Unlike strrchr(), this function works correctly in multibyte locales with
+   encodings such as GB18030.  */
+# if defined __hpux || defined __INTERIX
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define mbsrchr rpl_mbsrchr /* avoid collision with system function */
+#  endif
+_GL_FUNCDECL_RPL (mbsrchr, char *, (const char *string, int c)
+                                   _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (mbsrchr, char *, (const char *string, int c));
+# else
+_GL_FUNCDECL_SYS (mbsrchr, char *, (const char *string, int c)
+                                   _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_SYS (mbsrchr, char *, (const char *string, int c));
+# endif
+_GL_CXXALIASWARN (mbsrchr);
+#endif
+
+#if @GNULIB_MBSSTR@
+/* Find the first occurrence of the character string NEEDLE in the character
+   string HAYSTACK.  Return NULL if NEEDLE is not found in HAYSTACK.
+   Unlike strstr(), this function works correctly in multibyte locales with
+   encodings different from UTF-8.  */
+_GL_EXTERN_C char * mbsstr (const char *haystack, const char *needle)
+     _GL_ARG_NONNULL ((1, 2));
+#endif
+
+#if @GNULIB_MBSCASECMP@
+/* Compare the character strings S1 and S2, ignoring case, returning less than,
+   equal to or greater than zero if S1 is lexicographically less than, equal to
+   or greater than S2.
+   Note: This function may, in multibyte locales, return 0 for strings of
+   different lengths!
+   Unlike strcasecmp(), this function works correctly in multibyte locales.  */
+_GL_EXTERN_C int mbscasecmp (const char *s1, const char *s2)
+     _GL_ARG_NONNULL ((1, 2));
+#endif
+
+#if @GNULIB_MBSNCASECMP@
+/* Compare the initial segment of the character string S1 consisting of at most
+   N characters with the initial segment of the character string S2 consisting
+   of at most N characters, ignoring case, returning less than, equal to or
+   greater than zero if the initial segment of S1 is lexicographically less
+   than, equal to or greater than the initial segment of S2.
+   Note: This function may, in multibyte locales, return 0 for initial segments
+   of different lengths!
+   Unlike strncasecmp(), this function works correctly in multibyte locales.
+   But beware that N is not a byte count but a character count!  */
+_GL_EXTERN_C int mbsncasecmp (const char *s1, const char *s2, size_t n)
+     _GL_ARG_NONNULL ((1, 2));
+#endif
+
+#if @GNULIB_MBSPCASECMP@
+/* Compare the initial segment of the character string STRING consisting of
+   at most mbslen (PREFIX) characters with the character string PREFIX,
+   ignoring case.  If the two match, return a pointer to the first byte
+   after this prefix in STRING.  Otherwise, return NULL.
+   Note: This function may, in multibyte locales, return non-NULL if STRING
+   is of smaller length than PREFIX!
+   Unlike strncasecmp(), this function works correctly in multibyte
+   locales.  */
+_GL_EXTERN_C char * mbspcasecmp (const char *string, const char *prefix)
+     _GL_ARG_NONNULL ((1, 2));
+#endif
+
+#if @GNULIB_MBSCASESTR@
+/* Find the first occurrence of the character string NEEDLE in the character
+   string HAYSTACK, using case-insensitive comparison.
+   Note: This function may, in multibyte locales, return success even if
+   strlen (haystack) < strlen (needle) !
+   Unlike strcasestr(), this function works correctly in multibyte locales.  */
+_GL_EXTERN_C char * mbscasestr (const char *haystack, const char *needle)
+     _GL_ARG_NONNULL ((1, 2));
+#endif
+
+#if @GNULIB_MBSCSPN@
+/* Find the first occurrence in the character string STRING of any character
+   in the character string ACCEPT.  Return the number of bytes from the
+   beginning of the string to this occurrence, or to the end of the string
+   if none exists.
+   Unlike strcspn(), this function works correctly in multibyte locales.  */
+_GL_EXTERN_C size_t mbscspn (const char *string, const char *accept)
+     _GL_ARG_NONNULL ((1, 2));
+#endif
+
+#if @GNULIB_MBSPBRK@
+/* Find the first occurrence in the character string STRING of any character
+   in the character string ACCEPT.  Return the pointer to it, or NULL if none
+   exists.
+   Unlike strpbrk(), this function works correctly in multibyte locales.  */
+# if defined __hpux
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define mbspbrk rpl_mbspbrk /* avoid collision with HP-UX function */
+#  endif
+_GL_FUNCDECL_RPL (mbspbrk, char *, (const char *string, const char *accept)
+                                   _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (mbspbrk, char *, (const char *string, const char *accept));
+# else
+_GL_FUNCDECL_SYS (mbspbrk, char *, (const char *string, const char *accept)
+                                   _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_SYS (mbspbrk, char *, (const char *string, const char *accept));
+# endif
+_GL_CXXALIASWARN (mbspbrk);
+#endif
+
+#if @GNULIB_MBSSPN@
+/* Find the first occurrence in the character string STRING of any character
+   not in the character string REJECT.  Return the number of bytes from the
+   beginning of the string to this occurrence, or to the end of the string
+   if none exists.
+   Unlike strspn(), this function works correctly in multibyte locales.  */
+_GL_EXTERN_C size_t mbsspn (const char *string, const char *reject)
+     _GL_ARG_NONNULL ((1, 2));
+#endif
+
+#if @GNULIB_MBSSEP@
+/* Search the next delimiter (multibyte character listed in the character
+   string DELIM) starting at the character string *STRINGP.
+   If one is found, overwrite it with a NUL, and advance *STRINGP to point
+   to the next multibyte character after it.  Otherwise, set *STRINGP to NULL.
+   If *STRINGP was already NULL, nothing happens.
+   Return the old value of *STRINGP.
+
+   This is a variant of mbstok_r() that supports empty fields.
+
+   Caveat: It modifies the original string.
+   Caveat: These functions cannot be used on constant strings.
+   Caveat: The identity of the delimiting character is lost.
+
+   See also mbstok_r().  */
+_GL_EXTERN_C char * mbssep (char **stringp, const char *delim)
+     _GL_ARG_NONNULL ((1, 2));
+#endif
+
+#if @GNULIB_MBSTOK_R@
+/* Parse the character string STRING into tokens separated by characters in
+   the character string DELIM.
+   If STRING is NULL, the saved pointer in SAVE_PTR is used as
+   the next starting point.  For example:
+        char s[] = "-abc-=-def";
+        char *sp;
+        x = mbstok_r(s, "-", &sp);      // x = "abc", sp = "=-def"
+        x = mbstok_r(NULL, "-=", &sp);  // x = "def", sp = NULL
+        x = mbstok_r(NULL, "=", &sp);   // x = NULL
+                // s = "abc\0-def\0"
+
+   Caveat: It modifies the original string.
+   Caveat: These functions cannot be used on constant strings.
+   Caveat: The identity of the delimiting character is lost.
+
+   See also mbssep().  */
+_GL_EXTERN_C char * mbstok_r (char *string, const char *delim, char **save_ptr)
+     _GL_ARG_NONNULL ((2, 3));
+#endif
+
+/* Map any int, typically from errno, into an error message.  */
+#if @GNULIB_STRERROR@
+# if @REPLACE_STRERROR@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef strerror
+#   define strerror rpl_strerror
+#  endif
+_GL_FUNCDECL_RPL (strerror, char *, (int));
+_GL_CXXALIAS_RPL (strerror, char *, (int));
+# else
+_GL_CXXALIAS_SYS (strerror, char *, (int));
+# endif
+_GL_CXXALIASWARN (strerror);
+#elif defined GNULIB_POSIXCHECK
+# undef strerror
+/* Assume strerror is always declared.  */
+_GL_WARN_ON_USE (strerror, "strerror is unportable - "
+                 "use gnulib module strerror to guarantee non-NULL result");
+#endif
+
+/* Map any int, typically from errno, into an error message.  Multithread-safe.
+   Uses the POSIX declaration, not the glibc declaration.  */
+#if @GNULIB_STRERROR_R@
+# if @REPLACE_STRERROR_R@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef strerror_r
+#   define strerror_r rpl_strerror_r
+#  endif
+_GL_FUNCDECL_RPL (strerror_r, int, (int errnum, char *buf, size_t buflen)
+                                   _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (strerror_r, int, (int errnum, char *buf, size_t buflen));
+# else
+#  if !@HAVE_DECL_STRERROR_R@
+_GL_FUNCDECL_SYS (strerror_r, int, (int errnum, char *buf, size_t buflen)
+                                   _GL_ARG_NONNULL ((2)));
+#  endif
+_GL_CXXALIAS_SYS (strerror_r, int, (int errnum, char *buf, size_t buflen));
+# endif
+# if @HAVE_DECL_STRERROR_R@
+_GL_CXXALIASWARN (strerror_r);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strerror_r
+# if HAVE_RAW_DECL_STRERROR_R
+_GL_WARN_ON_USE (strerror_r, "strerror_r is unportable - "
+                 "use gnulib module strerror_r-posix for portability");
+# endif
+#endif
+
+#if @GNULIB_STRSIGNAL@
+# if @REPLACE_STRSIGNAL@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define strsignal rpl_strsignal
+#  endif
+_GL_FUNCDECL_RPL (strsignal, char *, (int __sig));
+_GL_CXXALIAS_RPL (strsignal, char *, (int __sig));
+# else
+#  if ! @HAVE_DECL_STRSIGNAL@
+_GL_FUNCDECL_SYS (strsignal, char *, (int __sig));
+#  endif
+/* Need to cast, because on Cygwin 1.5.x systems, the return type is
+   'const char *'.  */
+_GL_CXXALIAS_SYS_CAST (strsignal, char *, (int __sig));
+# endif
+_GL_CXXALIASWARN (strsignal);
+#elif defined GNULIB_POSIXCHECK
+# undef strsignal
+# if HAVE_RAW_DECL_STRSIGNAL
+_GL_WARN_ON_USE (strsignal, "strsignal is unportable - "
+                 "use gnulib module strsignal for portability");
+# endif
+#endif
+
+#if @GNULIB_STRVERSCMP@
+# if !@HAVE_STRVERSCMP@
+_GL_FUNCDECL_SYS (strverscmp, int, (const char *, const char *)
+                                   _GL_ARG_NONNULL ((1, 2)));
+# endif
+_GL_CXXALIAS_SYS (strverscmp, int, (const char *, const char *));
+_GL_CXXALIASWARN (strverscmp);
+#elif defined GNULIB_POSIXCHECK
+# undef strverscmp
+# if HAVE_RAW_DECL_STRVERSCMP
+_GL_WARN_ON_USE (strverscmp, "strverscmp is unportable - "
+                 "use gnulib module strverscmp for portability");
+# endif
+#endif
+
+
+#endif /* _@GUARD_PREFIX@_STRING_H */
+#endif /* _@GUARD_PREFIX@_STRING_H */
diff --git a/lib/stripslash.c b/lib/stripslash.c
new file mode 100644 (file)
index 0000000..1212440
--- /dev/null
@@ -0,0 +1,45 @@
+/* stripslash.c -- remove redundant trailing slashes from a file name
+
+   Copyright (C) 1990, 2001, 2003-2006, 2009-2011 Free Software Foundation,
+   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; 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 <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+#include "dirname.h"
+
+/* Remove trailing slashes from FILE.  Return true if a trailing slash
+   was removed.  This is useful when using file name completion from a
+   shell that adds a "/" after directory names (such as tcsh and
+   bash), because on symlinks to directories, several system calls
+   have different semantics according to whether a trailing slash is
+   present.  */
+
+bool
+strip_trailing_slashes (char *file)
+{
+  char *base = last_component (file);
+  char *base_lim;
+  bool had_slash;
+
+  /* last_component returns "" for file system roots, but we need to turn
+     `///' into `/'.  */
+  if (! *base)
+    base = file;
+  base_lim = base + base_len (base);
+  had_slash = (*base_lim != '\0');
+  *base_lim = '\0';
+  return had_slash;
+}
diff --git a/lib/strndup.c b/lib/strndup.c
new file mode 100644 (file)
index 0000000..c5aca3e
--- /dev/null
@@ -0,0 +1,39 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* A replacement function, for systems that lack strndup.
+
+   Copyright (C) 1996-1998, 2001-2003, 2005-2007, 2009-2011 Free Software
+   Foundation, 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; either version 3, 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.  */
+
+#include <config.h>
+
+#include <string.h>
+
+#include <stdlib.h>
+
+char *
+strndup (char const *s, size_t n)
+{
+  size_t len = strnlen (s, n);
+  char *new = malloc (len + 1);
+
+  if (new == NULL)
+    return NULL;
+
+  new[len] = '\0';
+  return memcpy (new, s, len);
+}
diff --git a/lib/strnlen.c b/lib/strnlen.c
new file mode 100644 (file)
index 0000000..241bb59
--- /dev/null
@@ -0,0 +1,33 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Find the length of STRING, but scan at most MAXLEN characters.
+   Copyright (C) 2005-2007, 2009-2011 Free Software Foundation, Inc.
+   Written by Simon Josefsson.
+
+   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, 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.  */
+
+#include <config.h>
+
+#include <string.h>
+
+/* Find the length of STRING, but scan at most MAXLEN characters.
+   If no '\0' terminator is found in that many characters, return MAXLEN.  */
+
+size_t
+strnlen (const char *string, size_t maxlen)
+{
+  const char *end = memchr (string, '\0', maxlen);
+  return end ? (size_t) (end - string) : maxlen;
+}
diff --git a/lib/strtol.c b/lib/strtol.c
new file mode 100644 (file)
index 0000000..6c15d11
--- /dev/null
@@ -0,0 +1,433 @@
+/* Convert string representation of a number into an integer value.
+
+   Copyright (C) 1991-1992, 1994-1999, 2003, 2005-2007, 2009-2011 Free Software
+   Foundation, Inc.
+
+   NOTE: The canonical source of this file is maintained with the GNU C
+   Library.  Bugs can be reported to bug-glibc@gnu.org.
+
+   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 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 <http://www.gnu.org/licenses/>.  */
+
+#ifdef _LIBC
+# define USE_NUMBER_GROUPING
+#else
+# include <config.h>
+#endif
+
+#include <ctype.h>
+#include <errno.h>
+#ifndef __set_errno
+# define __set_errno(Val) errno = (Val)
+#endif
+
+#include <limits.h>
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+
+#ifdef USE_NUMBER_GROUPING
+# include "../locale/localeinfo.h"
+#endif
+
+/* Nonzero if we are defining `strtoul' or `strtoull', operating on
+   unsigned integers.  */
+#ifndef UNSIGNED
+# define UNSIGNED 0
+# define INT LONG int
+#else
+# define INT unsigned LONG int
+#endif
+
+/* Determine the name.  */
+#ifdef USE_IN_EXTENDED_LOCALE_MODEL
+# if UNSIGNED
+#  ifdef USE_WIDE_CHAR
+#   ifdef QUAD
+#    define strtol __wcstoull_l
+#   else
+#    define strtol __wcstoul_l
+#   endif
+#  else
+#   ifdef QUAD
+#    define strtol __strtoull_l
+#   else
+#    define strtol __strtoul_l
+#   endif
+#  endif
+# else
+#  ifdef USE_WIDE_CHAR
+#   ifdef QUAD
+#    define strtol __wcstoll_l
+#   else
+#    define strtol __wcstol_l
+#   endif
+#  else
+#   ifdef QUAD
+#    define strtol __strtoll_l
+#   else
+#    define strtol __strtol_l
+#   endif
+#  endif
+# endif
+#else
+# if UNSIGNED
+#  ifdef USE_WIDE_CHAR
+#   ifdef QUAD
+#    define strtol wcstoull
+#   else
+#    define strtol wcstoul
+#   endif
+#  else
+#   ifdef QUAD
+#    define strtol strtoull
+#   else
+#    define strtol strtoul
+#   endif
+#  endif
+# else
+#  ifdef USE_WIDE_CHAR
+#   ifdef QUAD
+#    define strtol wcstoll
+#   else
+#    define strtol wcstol
+#   endif
+#  else
+#   ifdef QUAD
+#    define strtol strtoll
+#   endif
+#  endif
+# endif
+#endif
+
+/* If QUAD is defined, we are defining `strtoll' or `strtoull',
+   operating on `long long int's.  */
+#ifdef QUAD
+# define LONG long long
+# define STRTOL_LONG_MIN LLONG_MIN
+# define STRTOL_LONG_MAX LLONG_MAX
+# define STRTOL_ULONG_MAX ULLONG_MAX
+
+/* The extra casts in the following macros work around compiler bugs,
+   e.g., in Cray C 5.0.3.0.  */
+
+/* True if negative values of the signed integer type T use two's
+   complement, ones' complement, or signed magnitude representation,
+   respectively.  Much GNU code assumes two's complement, but some
+   people like to be portable to all possible C hosts.  */
+# define TYPE_TWOS_COMPLEMENT(t) ((t) ~ (t) 0 == (t) -1)
+# define TYPE_ONES_COMPLEMENT(t) ((t) ~ (t) 0 == 0)
+# define TYPE_SIGNED_MAGNITUDE(t) ((t) ~ (t) 0 < (t) -1)
+
+/* True if the arithmetic type T is signed.  */
+# define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
+
+/* The maximum and minimum values for the integer type T.  These
+   macros have undefined behavior if T is signed and has padding bits.
+   If this is a problem for you, please let us know how to fix it for
+   your host.  */
+# define TYPE_MINIMUM(t) \
+   ((t) (! TYPE_SIGNED (t) \
+         ? (t) 0 \
+         : TYPE_SIGNED_MAGNITUDE (t) \
+         ? ~ (t) 0 \
+         : ~ TYPE_MAXIMUM (t)))
+# define TYPE_MAXIMUM(t) \
+   ((t) (! TYPE_SIGNED (t) \
+         ? (t) -1 \
+         : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1)))
+
+# ifndef ULLONG_MAX
+#  define ULLONG_MAX TYPE_MAXIMUM (unsigned long long)
+# endif
+# ifndef LLONG_MAX
+#  define LLONG_MAX TYPE_MAXIMUM (long long int)
+# endif
+# ifndef LLONG_MIN
+#  define LLONG_MIN TYPE_MINIMUM (long long int)
+# endif
+
+# if __GNUC__ == 2 && __GNUC_MINOR__ < 7
+   /* Work around gcc bug with using this constant.  */
+   static const unsigned long long int maxquad = ULLONG_MAX;
+#  undef STRTOL_ULONG_MAX
+#  define STRTOL_ULONG_MAX maxquad
+# endif
+#else
+# define LONG long
+# define STRTOL_LONG_MIN LONG_MIN
+# define STRTOL_LONG_MAX LONG_MAX
+# define STRTOL_ULONG_MAX ULONG_MAX
+#endif
+
+
+/* We use this code also for the extended locale handling where the
+   function gets as an additional argument the locale which has to be
+   used.  To access the values we have to redefine the _NL_CURRENT
+   macro.  */
+#ifdef USE_IN_EXTENDED_LOCALE_MODEL
+# undef _NL_CURRENT
+# define _NL_CURRENT(category, item) \
+  (current->values[_NL_ITEM_INDEX (item)].string)
+# define LOCALE_PARAM , loc
+# define LOCALE_PARAM_PROTO , __locale_t loc
+#else
+# define LOCALE_PARAM
+# define LOCALE_PARAM_PROTO
+#endif
+
+#ifdef USE_WIDE_CHAR
+# include <wchar.h>
+# include <wctype.h>
+# define L_(Ch) L##Ch
+# define UCHAR_TYPE wint_t
+# define STRING_TYPE wchar_t
+# ifdef USE_IN_EXTENDED_LOCALE_MODEL
+#  define ISSPACE(Ch) __iswspace_l ((Ch), loc)
+#  define ISALPHA(Ch) __iswalpha_l ((Ch), loc)
+#  define TOUPPER(Ch) __towupper_l ((Ch), loc)
+# else
+#  define ISSPACE(Ch) iswspace (Ch)
+#  define ISALPHA(Ch) iswalpha (Ch)
+#  define TOUPPER(Ch) towupper (Ch)
+# endif
+#else
+# define L_(Ch) Ch
+# define UCHAR_TYPE unsigned char
+# define STRING_TYPE char
+# ifdef USE_IN_EXTENDED_LOCALE_MODEL
+#  define ISSPACE(Ch) __isspace_l ((Ch), loc)
+#  define ISALPHA(Ch) __isalpha_l ((Ch), loc)
+#  define TOUPPER(Ch) __toupper_l ((Ch), loc)
+# else
+#  define ISSPACE(Ch) isspace (Ch)
+#  define ISALPHA(Ch) isalpha (Ch)
+#  define TOUPPER(Ch) toupper (Ch)
+# endif
+#endif
+
+#define INTERNAL(X) INTERNAL1(X)
+#define INTERNAL1(X) __##X##_internal
+#define WEAKNAME(X) WEAKNAME1(X)
+
+#ifdef USE_NUMBER_GROUPING
+/* This file defines a function to check for correct grouping.  */
+# include "grouping.h"
+#endif
+
+
+
+/* Convert NPTR to an `unsigned long int' or `long int' in base BASE.
+   If BASE is 0 the base is determined by the presence of a leading
+   zero, indicating octal or a leading "0x" or "0X", indicating hexadecimal.
+   If BASE is < 2 or > 36, it is reset to 10.
+   If ENDPTR is not NULL, a pointer to the character after the last
+   one converted is stored in *ENDPTR.  */
+
+INT
+INTERNAL (strtol) (const STRING_TYPE *nptr, STRING_TYPE **endptr,
+                   int base, int group LOCALE_PARAM_PROTO)
+{
+  int negative;
+  register unsigned LONG int cutoff;
+  register unsigned int cutlim;
+  register unsigned LONG int i;
+  register const STRING_TYPE *s;
+  register UCHAR_TYPE c;
+  const STRING_TYPE *save, *end;
+  int overflow;
+
+#ifdef USE_NUMBER_GROUPING
+# ifdef USE_IN_EXTENDED_LOCALE_MODEL
+  struct locale_data *current = loc->__locales[LC_NUMERIC];
+# endif
+  /* The thousands character of the current locale.  */
+  wchar_t thousands = L'\0';
+  /* The numeric grouping specification of the current locale,
+     in the format described in <locale.h>.  */
+  const char *grouping;
+
+  if (group)
+    {
+      grouping = _NL_CURRENT (LC_NUMERIC, GROUPING);
+      if (*grouping <= 0 || *grouping == CHAR_MAX)
+        grouping = NULL;
+      else
+        {
+          /* Figure out the thousands separator character.  */
+# if defined _LIBC || defined _HAVE_BTOWC
+          thousands = __btowc (*_NL_CURRENT (LC_NUMERIC, THOUSANDS_SEP));
+          if (thousands == WEOF)
+            thousands = L'\0';
+# endif
+          if (thousands == L'\0')
+            grouping = NULL;
+        }
+    }
+  else
+    grouping = NULL;
+#endif
+
+  if (base < 0 || base == 1 || base > 36)
+    {
+      __set_errno (EINVAL);
+      return 0;
+    }
+
+  save = s = nptr;
+
+  /* Skip white space.  */
+  while (ISSPACE (*s))
+    ++s;
+  if (*s == L_('\0'))
+    goto noconv;
+
+  /* Check for a sign.  */
+  if (*s == L_('-'))
+    {
+      negative = 1;
+      ++s;
+    }
+  else if (*s == L_('+'))
+    {
+      negative = 0;
+      ++s;
+    }
+  else
+    negative = 0;
+
+  /* Recognize number prefix and if BASE is zero, figure it out ourselves.  */
+  if (*s == L_('0'))
+    {
+      if ((base == 0 || base == 16) && TOUPPER (s[1]) == L_('X'))
+        {
+          s += 2;
+          base = 16;
+        }
+      else if (base == 0)
+        base = 8;
+    }
+  else if (base == 0)
+    base = 10;
+
+  /* Save the pointer so we can check later if anything happened.  */
+  save = s;
+
+#ifdef USE_NUMBER_GROUPING
+  if (group)
+    {
+      /* Find the end of the digit string and check its grouping.  */
+      end = s;
+      for (c = *end; c != L_('\0'); c = *++end)
+        if ((wchar_t) c != thousands
+            && ((wchar_t) c < L_('0') || (wchar_t) c > L_('9'))
+            && (!ISALPHA (c) || (int) (TOUPPER (c) - L_('A') + 10) >= base))
+          break;
+      if (*s == thousands)
+        end = s;
+      else
+        end = correctly_grouped_prefix (s, end, thousands, grouping);
+    }
+  else
+#endif
+    end = NULL;
+
+  cutoff = STRTOL_ULONG_MAX / (unsigned LONG int) base;
+  cutlim = STRTOL_ULONG_MAX % (unsigned LONG int) base;
+
+  overflow = 0;
+  i = 0;
+  for (c = *s; c != L_('\0'); c = *++s)
+    {
+      if (s == end)
+        break;
+      if (c >= L_('0') && c <= L_('9'))
+        c -= L_('0');
+      else if (ISALPHA (c))
+        c = TOUPPER (c) - L_('A') + 10;
+      else
+        break;
+      if ((int) c >= base)
+        break;
+      /* Check for overflow.  */
+      if (i > cutoff || (i == cutoff && c > cutlim))
+        overflow = 1;
+      else
+        {
+          i *= (unsigned LONG int) base;
+          i += c;
+        }
+    }
+
+  /* Check if anything actually happened.  */
+  if (s == save)
+    goto noconv;
+
+  /* Store in ENDPTR the address of one character
+     past the last character we converted.  */
+  if (endptr != NULL)
+    *endptr = (STRING_TYPE *) s;
+
+#if !UNSIGNED
+  /* Check for a value that is within the range of
+     `unsigned LONG int', but outside the range of `LONG int'.  */
+  if (overflow == 0
+      && i > (negative
+              ? -((unsigned LONG int) (STRTOL_LONG_MIN + 1)) + 1
+              : (unsigned LONG int) STRTOL_LONG_MAX))
+    overflow = 1;
+#endif
+
+  if (overflow)
+    {
+      __set_errno (ERANGE);
+#if UNSIGNED
+      return STRTOL_ULONG_MAX;
+#else
+      return negative ? STRTOL_LONG_MIN : STRTOL_LONG_MAX;
+#endif
+    }
+
+  /* Return the result of the appropriate sign.  */
+  return negative ? -i : i;
+
+noconv:
+  /* We must handle a special case here: the base is 0 or 16 and the
+     first two characters are '0' and 'x', but the rest are no
+     hexadecimal digits.  This is no error case.  We return 0 and
+     ENDPTR points to the `x`.  */
+  if (endptr != NULL)
+    {
+      if (save - nptr >= 2 && TOUPPER (save[-1]) == L_('X')
+          && save[-2] == L_('0'))
+        *endptr = (STRING_TYPE *) &save[-1];
+      else
+        /*  There was no number to convert.  */
+        *endptr = (STRING_TYPE *) nptr;
+    }
+
+  return 0L;
+}
+\f
+/* External user entry point.  */
+
+
+INT
+#ifdef weak_function
+weak_function
+#endif
+strtol (const STRING_TYPE *nptr, STRING_TYPE **endptr,
+        int base LOCALE_PARAM_PROTO)
+{
+  return INTERNAL (strtol) (nptr, endptr, base, 0 LOCALE_PARAM);
+}
diff --git a/lib/strtoll.c b/lib/strtoll.c
new file mode 100644 (file)
index 0000000..75afa4d
--- /dev/null
@@ -0,0 +1,33 @@
+/* Function to parse a `long long int' from text.
+   Copyright (C) 1995-1997, 1999, 2001, 2009-2011 Free Software Foundation,
+   Inc.
+   This file is part of the GNU C Library.
+
+   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 <http://www.gnu.org/licenses/>.  */
+
+#define QUAD    1
+
+#include <strtol.c>
+
+#ifdef _LIBC
+# ifdef SHARED
+#  include <shlib-compat.h>
+
+#  if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
+compat_symbol (libc, __strtoll_internal, __strtoq_internal, GLIBC_2_0);
+#  endif
+
+# endif
+weak_alias (strtoll, strtoq)
+#endif
diff --git a/lib/strtoul.c b/lib/strtoul.c
new file mode 100644 (file)
index 0000000..6fa6d0c
--- /dev/null
@@ -0,0 +1,19 @@
+/* Copyright (C) 1991, 1997, 2009-2011 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   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 <http://www.gnu.org/licenses/>.  */
+
+#define UNSIGNED        1
+
+#include "strtol.c"
diff --git a/lib/strtoull.c b/lib/strtoull.c
new file mode 100644 (file)
index 0000000..bf25995
--- /dev/null
@@ -0,0 +1,26 @@
+/* Function to parse an `unsigned long long int' from text.
+   Copyright (C) 1995-1997, 1999, 2009-2011 Free Software Foundation, Inc.
+   NOTE: The canonical source of this file is maintained with the GNU C
+   Library.  Bugs can be reported to bug-glibc@gnu.org.
+
+   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 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 <http://www.gnu.org/licenses/>.  */
+
+#define QUAD 1
+
+#include "strtoul.c"
+
+#ifdef _LIBC
+strong_alias (__strtoull_internal, __strtouq_internal)
+weak_alias (strtoull, strtouq)
+#endif
diff --git a/lib/sys_stat.in.h b/lib/sys_stat.in.h
new file mode 100644 (file)
index 0000000..db8caf5
--- /dev/null
@@ -0,0 +1,660 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Provide a more complete sys/stat header file.
+   Copyright (C) 2005-2011 Free Software Foundation, 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; either version 3, 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.  */
+
+/* Written by Eric Blake, Paul Eggert, and Jim Meyering.  */
+
+/* This file is supposed to be used on platforms where <sys/stat.h> is
+   incomplete.  It is intended to provide definitions and prototypes
+   needed by an application.  Start with what the system provides.  */
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+#if defined __need_system_sys_stat_h
+/* Special invocation convention.  */
+
+#@INCLUDE_NEXT@ @NEXT_SYS_STAT_H@
+
+#else
+/* Normal invocation convention.  */
+
+#ifndef _@GUARD_PREFIX@_SYS_STAT_H
+
+/* Get nlink_t.  */
+#include <sys/types.h>
+
+/* Get struct timespec.  */
+#include <time.h>
+
+/* The include_next requires a split double-inclusion guard.  */
+#@INCLUDE_NEXT@ @NEXT_SYS_STAT_H@
+
+#ifndef _@GUARD_PREFIX@_SYS_STAT_H
+#define _@GUARD_PREFIX@_SYS_STAT_H
+
+/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
+
+/* The definition of _GL_ARG_NONNULL is copied here.  */
+
+/* The definition of _GL_WARN_ON_USE is copied here.  */
+
+/* Before doing "#define mkdir rpl_mkdir" below, we need to include all
+   headers that may declare mkdir().  */
+#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+# include <io.h>     /* mingw32, mingw64 */
+# include <direct.h> /* mingw64 */
+#endif
+
+#ifndef S_IFMT
+# define S_IFMT 0170000
+#endif
+
+#if STAT_MACROS_BROKEN
+# undef S_ISBLK
+# undef S_ISCHR
+# undef S_ISDIR
+# undef S_ISFIFO
+# undef S_ISLNK
+# undef S_ISNAM
+# undef S_ISMPB
+# undef S_ISMPC
+# undef S_ISNWK
+# undef S_ISREG
+# undef S_ISSOCK
+#endif
+
+#ifndef S_ISBLK
+# ifdef S_IFBLK
+#  define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
+# else
+#  define S_ISBLK(m) 0
+# endif
+#endif
+
+#ifndef S_ISCHR
+# ifdef S_IFCHR
+#  define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
+# else
+#  define S_ISCHR(m) 0
+# endif
+#endif
+
+#ifndef S_ISDIR
+# ifdef S_IFDIR
+#  define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
+# else
+#  define S_ISDIR(m) 0
+# endif
+#endif
+
+#ifndef S_ISDOOR /* Solaris 2.5 and up */
+# define S_ISDOOR(m) 0
+#endif
+
+#ifndef S_ISFIFO
+# ifdef S_IFIFO
+#  define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
+# else
+#  define S_ISFIFO(m) 0
+# endif
+#endif
+
+#ifndef S_ISLNK
+# ifdef S_IFLNK
+#  define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
+# else
+#  define S_ISLNK(m) 0
+# endif
+#endif
+
+#ifndef S_ISMPB /* V7 */
+# ifdef S_IFMPB
+#  define S_ISMPB(m) (((m) & S_IFMT) == S_IFMPB)
+#  define S_ISMPC(m) (((m) & S_IFMT) == S_IFMPC)
+# else
+#  define S_ISMPB(m) 0
+#  define S_ISMPC(m) 0
+# endif
+#endif
+
+#ifndef S_ISNAM /* Xenix */
+# ifdef S_IFNAM
+#  define S_ISNAM(m) (((m) & S_IFMT) == S_IFNAM)
+# else
+#  define S_ISNAM(m) 0
+# endif
+#endif
+
+#ifndef S_ISNWK /* HP/UX */
+# ifdef S_IFNWK
+#  define S_ISNWK(m) (((m) & S_IFMT) == S_IFNWK)
+# else
+#  define S_ISNWK(m) 0
+# endif
+#endif
+
+#ifndef S_ISPORT /* Solaris 10 and up */
+# define S_ISPORT(m) 0
+#endif
+
+#ifndef S_ISREG
+# ifdef S_IFREG
+#  define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
+# else
+#  define S_ISREG(m) 0
+# endif
+#endif
+
+#ifndef S_ISSOCK
+# ifdef S_IFSOCK
+#  define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
+# else
+#  define S_ISSOCK(m) 0
+# endif
+#endif
+
+
+#ifndef S_TYPEISMQ
+# define S_TYPEISMQ(p) 0
+#endif
+
+#ifndef S_TYPEISTMO
+# define S_TYPEISTMO(p) 0
+#endif
+
+
+#ifndef S_TYPEISSEM
+# ifdef S_INSEM
+#  define S_TYPEISSEM(p) (S_ISNAM ((p)->st_mode) && (p)->st_rdev == S_INSEM)
+# else
+#  define S_TYPEISSEM(p) 0
+# endif
+#endif
+
+#ifndef S_TYPEISSHM
+# ifdef S_INSHD
+#  define S_TYPEISSHM(p) (S_ISNAM ((p)->st_mode) && (p)->st_rdev == S_INSHD)
+# else
+#  define S_TYPEISSHM(p) 0
+# endif
+#endif
+
+/* high performance ("contiguous data") */
+#ifndef S_ISCTG
+# define S_ISCTG(p) 0
+#endif
+
+/* Cray DMF (data migration facility): off line, with data  */
+#ifndef S_ISOFD
+# define S_ISOFD(p) 0
+#endif
+
+/* Cray DMF (data migration facility): off line, with no data  */
+#ifndef S_ISOFL
+# define S_ISOFL(p) 0
+#endif
+
+/* 4.4BSD whiteout */
+#ifndef S_ISWHT
+# define S_ISWHT(m) 0
+#endif
+
+/* If any of the following are undefined,
+   define them to their de facto standard values.  */
+#if !S_ISUID
+# define S_ISUID 04000
+#endif
+#if !S_ISGID
+# define S_ISGID 02000
+#endif
+
+/* S_ISVTX is a common extension to POSIX.  */
+#ifndef S_ISVTX
+# define S_ISVTX 01000
+#endif
+
+#if !S_IRUSR && S_IREAD
+# define S_IRUSR S_IREAD
+#endif
+#if !S_IRUSR
+# define S_IRUSR 00400
+#endif
+#if !S_IRGRP
+# define S_IRGRP (S_IRUSR >> 3)
+#endif
+#if !S_IROTH
+# define S_IROTH (S_IRUSR >> 6)
+#endif
+
+#if !S_IWUSR && S_IWRITE
+# define S_IWUSR S_IWRITE
+#endif
+#if !S_IWUSR
+# define S_IWUSR 00200
+#endif
+#if !S_IWGRP
+# define S_IWGRP (S_IWUSR >> 3)
+#endif
+#if !S_IWOTH
+# define S_IWOTH (S_IWUSR >> 6)
+#endif
+
+#if !S_IXUSR && S_IEXEC
+# define S_IXUSR S_IEXEC
+#endif
+#if !S_IXUSR
+# define S_IXUSR 00100
+#endif
+#if !S_IXGRP
+# define S_IXGRP (S_IXUSR >> 3)
+#endif
+#if !S_IXOTH
+# define S_IXOTH (S_IXUSR >> 6)
+#endif
+
+#if !S_IRWXU
+# define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR)
+#endif
+#if !S_IRWXG
+# define S_IRWXG (S_IRGRP | S_IWGRP | S_IXGRP)
+#endif
+#if !S_IRWXO
+# define S_IRWXO (S_IROTH | S_IWOTH | S_IXOTH)
+#endif
+
+/* S_IXUGO is a common extension to POSIX.  */
+#if !S_IXUGO
+# define S_IXUGO (S_IXUSR | S_IXGRP | S_IXOTH)
+#endif
+
+#ifndef S_IRWXUGO
+# define S_IRWXUGO (S_IRWXU | S_IRWXG | S_IRWXO)
+#endif
+
+/* Macros for futimens and utimensat.  */
+#ifndef UTIME_NOW
+# define UTIME_NOW (-1)
+# define UTIME_OMIT (-2)
+#endif
+
+
+#if @GNULIB_FCHMODAT@
+# if !@HAVE_FCHMODAT@
+_GL_FUNCDECL_SYS (fchmodat, int,
+                  (int fd, char const *file, mode_t mode, int flag)
+                  _GL_ARG_NONNULL ((2)));
+# endif
+_GL_CXXALIAS_SYS (fchmodat, int,
+                  (int fd, char const *file, mode_t mode, int flag));
+_GL_CXXALIASWARN (fchmodat);
+#elif defined GNULIB_POSIXCHECK
+# undef fchmodat
+# if HAVE_RAW_DECL_FCHMODAT
+_GL_WARN_ON_USE (fchmodat, "fchmodat is not portable - "
+                 "use gnulib module openat for portability");
+# endif
+#endif
+
+
+#if @REPLACE_FSTAT@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#  define fstat rpl_fstat
+# endif
+_GL_FUNCDECL_RPL (fstat, int, (int fd, struct stat *buf) _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (fstat, int, (int fd, struct stat *buf));
+#else
+_GL_CXXALIAS_SYS (fstat, int, (int fd, struct stat *buf));
+#endif
+_GL_CXXALIASWARN (fstat);
+
+
+#if @GNULIB_FSTATAT@
+# if @REPLACE_FSTATAT@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef fstatat
+#   define fstatat rpl_fstatat
+#  endif
+_GL_FUNCDECL_RPL (fstatat, int,
+                  (int fd, char const *name, struct stat *st, int flags)
+                  _GL_ARG_NONNULL ((2, 3)));
+_GL_CXXALIAS_RPL (fstatat, int,
+                  (int fd, char const *name, struct stat *st, int flags));
+# else
+#  if !@HAVE_FSTATAT@
+_GL_FUNCDECL_SYS (fstatat, int,
+                  (int fd, char const *name, struct stat *st, int flags)
+                  _GL_ARG_NONNULL ((2, 3)));
+#  endif
+_GL_CXXALIAS_SYS (fstatat, int,
+                  (int fd, char const *name, struct stat *st, int flags));
+# endif
+_GL_CXXALIASWARN (fstatat);
+#elif defined GNULIB_POSIXCHECK
+# undef fstatat
+# if HAVE_RAW_DECL_FSTATAT
+_GL_WARN_ON_USE (fstatat, "fstatat is not portable - "
+                 "use gnulib module openat for portability");
+# endif
+#endif
+
+
+#if @GNULIB_FUTIMENS@
+/* Use the rpl_ prefix also on Solaris <= 9, because on Solaris 9 our futimens
+   implementation relies on futimesat, which on Solaris 10 makes an invocation
+   to futimens that is meant to invoke the libc's futimens(), not gnulib's
+   futimens().  */
+# if @REPLACE_FUTIMENS@ || (!@HAVE_FUTIMENS@ && defined __sun)
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef futimens
+#   define futimens rpl_futimens
+#  endif
+_GL_FUNCDECL_RPL (futimens, int, (int fd, struct timespec const times[2]));
+_GL_CXXALIAS_RPL (futimens, int, (int fd, struct timespec const times[2]));
+# else
+#  if !@HAVE_FUTIMENS@
+_GL_FUNCDECL_SYS (futimens, int, (int fd, struct timespec const times[2]));
+#  endif
+_GL_CXXALIAS_SYS (futimens, int, (int fd, struct timespec const times[2]));
+# endif
+# if @HAVE_FUTIMENS@
+_GL_CXXALIASWARN (futimens);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef futimens
+# if HAVE_RAW_DECL_FUTIMENS
+_GL_WARN_ON_USE (futimens, "futimens is not portable - "
+                 "use gnulib module futimens for portability");
+# endif
+#endif
+
+
+#if @GNULIB_LCHMOD@
+/* Change the mode of FILENAME to MODE, without dereferencing it if FILENAME
+   denotes a symbolic link.  */
+# if !@HAVE_LCHMOD@
+/* The lchmod replacement follows symbolic links.  Callers should take
+   this into account; lchmod should be applied only to arguments that
+   are known to not be symbolic links.  On hosts that lack lchmod,
+   this can lead to race conditions between the check and the
+   invocation of lchmod, but we know of no workarounds that are
+   reliable in general.  You might try requesting support for lchmod
+   from your operating system supplier.  */
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define lchmod chmod
+#  endif
+/* Need to cast, because on mingw, the second parameter of chmod is
+                                                int mode.  */
+_GL_CXXALIAS_RPL_CAST_1 (lchmod, chmod, int,
+                         (const char *filename, mode_t mode));
+# else
+#  if 0 /* assume already declared */
+_GL_FUNCDECL_SYS (lchmod, int, (const char *filename, mode_t mode)
+                               _GL_ARG_NONNULL ((1)));
+#  endif
+_GL_CXXALIAS_SYS (lchmod, int, (const char *filename, mode_t mode));
+# endif
+# if @HAVE_LCHMOD@
+_GL_CXXALIASWARN (lchmod);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef lchmod
+# if HAVE_RAW_DECL_LCHMOD
+_GL_WARN_ON_USE (lchmod, "lchmod is unportable - "
+                 "use gnulib module lchmod for portability");
+# endif
+#endif
+
+
+#if @GNULIB_LSTAT@
+# if ! @HAVE_LSTAT@
+/* mingw does not support symlinks, therefore it does not have lstat.  But
+   without links, stat does just fine.  */
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define lstat stat
+#  endif
+_GL_CXXALIAS_RPL_1 (lstat, stat, int, (const char *name, struct stat *buf));
+# elif @REPLACE_LSTAT@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef lstat
+#   define lstat rpl_lstat
+#  endif
+_GL_FUNCDECL_RPL (lstat, int, (const char *name, struct stat *buf)
+                              _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (lstat, int, (const char *name, struct stat *buf));
+# else
+_GL_CXXALIAS_SYS (lstat, int, (const char *name, struct stat *buf));
+# endif
+# if @HAVE_LSTAT@
+_GL_CXXALIASWARN (lstat);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef lstat
+# if HAVE_RAW_DECL_LSTAT
+_GL_WARN_ON_USE (lstat, "lstat is unportable - "
+                 "use gnulib module lstat for portability");
+# endif
+#endif
+
+
+#if @REPLACE_MKDIR@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#  undef mkdir
+#  define mkdir rpl_mkdir
+# endif
+_GL_FUNCDECL_RPL (mkdir, int, (char const *name, mode_t mode)
+                              _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (mkdir, int, (char const *name, mode_t mode));
+#else
+/* mingw's _mkdir() function has 1 argument, but we pass 2 arguments.
+   Additionally, it declares _mkdir (and depending on compile flags, an
+   alias mkdir), only in the nonstandard includes <direct.h> and <io.h>,
+   which are included above.  */
+# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+
+#  if !GNULIB_defined_rpl_mkdir
+static inline int
+rpl_mkdir (char const *name, mode_t mode)
+{
+  return _mkdir (name);
+}
+#   define GNULIB_defined_rpl_mkdir 1
+#  endif
+
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define mkdir rpl_mkdir
+#  endif
+_GL_CXXALIAS_RPL (mkdir, int, (char const *name, mode_t mode));
+# else
+_GL_CXXALIAS_SYS (mkdir, int, (char const *name, mode_t mode));
+# endif
+#endif
+_GL_CXXALIASWARN (mkdir);
+
+
+#if @GNULIB_MKDIRAT@
+# if !@HAVE_MKDIRAT@
+_GL_FUNCDECL_SYS (mkdirat, int, (int fd, char const *file, mode_t mode)
+                                _GL_ARG_NONNULL ((2)));
+# endif
+_GL_CXXALIAS_SYS (mkdirat, int, (int fd, char const *file, mode_t mode));
+_GL_CXXALIASWARN (mkdirat);
+#elif defined GNULIB_POSIXCHECK
+# undef mkdirat
+# if HAVE_RAW_DECL_MKDIRAT
+_GL_WARN_ON_USE (mkdirat, "mkdirat is not portable - "
+                 "use gnulib module openat for portability");
+# endif
+#endif
+
+
+#if @GNULIB_MKFIFO@
+# if @REPLACE_MKFIFO@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef mkfifo
+#   define mkfifo rpl_mkfifo
+#  endif
+_GL_FUNCDECL_RPL (mkfifo, int, (char const *file, mode_t mode)
+                               _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (mkfifo, int, (char const *file, mode_t mode));
+# else
+#  if !@HAVE_MKFIFO@
+_GL_FUNCDECL_SYS (mkfifo, int, (char const *file, mode_t mode)
+                               _GL_ARG_NONNULL ((1)));
+#  endif
+_GL_CXXALIAS_SYS (mkfifo, int, (char const *file, mode_t mode));
+# endif
+_GL_CXXALIASWARN (mkfifo);
+#elif defined GNULIB_POSIXCHECK
+# undef mkfifo
+# if HAVE_RAW_DECL_MKFIFO
+_GL_WARN_ON_USE (mkfifo, "mkfifo is not portable - "
+                 "use gnulib module mkfifo for portability");
+# endif
+#endif
+
+
+#if @GNULIB_MKFIFOAT@
+# if !@HAVE_MKFIFOAT@
+_GL_FUNCDECL_SYS (mkfifoat, int, (int fd, char const *file, mode_t mode)
+                                 _GL_ARG_NONNULL ((2)));
+# endif
+_GL_CXXALIAS_SYS (mkfifoat, int, (int fd, char const *file, mode_t mode));
+_GL_CXXALIASWARN (mkfifoat);
+#elif defined GNULIB_POSIXCHECK
+# undef mkfifoat
+# if HAVE_RAW_DECL_MKFIFOAT
+_GL_WARN_ON_USE (mkfifoat, "mkfifoat is not portable - "
+                 "use gnulib module mkfifoat for portability");
+# endif
+#endif
+
+
+#if @GNULIB_MKNOD@
+# if @REPLACE_MKNOD@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef mknod
+#   define mknod rpl_mknod
+#  endif
+_GL_FUNCDECL_RPL (mknod, int, (char const *file, mode_t mode, dev_t dev)
+                              _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (mknod, int, (char const *file, mode_t mode, dev_t dev));
+# else
+#  if !@HAVE_MKNOD@
+_GL_FUNCDECL_SYS (mknod, int, (char const *file, mode_t mode, dev_t dev)
+                              _GL_ARG_NONNULL ((1)));
+#  endif
+/* Need to cast, because on OSF/1 5.1, the third parameter is '...'.  */
+_GL_CXXALIAS_SYS_CAST (mknod, int, (char const *file, mode_t mode, dev_t dev));
+# endif
+_GL_CXXALIASWARN (mknod);
+#elif defined GNULIB_POSIXCHECK
+# undef mknod
+# if HAVE_RAW_DECL_MKNOD
+_GL_WARN_ON_USE (mknod, "mknod is not portable - "
+                 "use gnulib module mknod for portability");
+# endif
+#endif
+
+
+#if @GNULIB_MKNODAT@
+# if !@HAVE_MKNODAT@
+_GL_FUNCDECL_SYS (mknodat, int,
+                  (int fd, char const *file, mode_t mode, dev_t dev)
+                  _GL_ARG_NONNULL ((2)));
+# endif
+_GL_CXXALIAS_SYS (mknodat, int,
+                  (int fd, char const *file, mode_t mode, dev_t dev));
+_GL_CXXALIASWARN (mknodat);
+#elif defined GNULIB_POSIXCHECK
+# undef mknodat
+# if HAVE_RAW_DECL_MKNODAT
+_GL_WARN_ON_USE (mknodat, "mknodat is not portable - "
+                 "use gnulib module mkfifoat for portability");
+# endif
+#endif
+
+
+#if @GNULIB_STAT@
+# if @REPLACE_STAT@
+/* We can't use the object-like #define stat rpl_stat, because of
+   struct stat.  This means that rpl_stat will not be used if the user
+   does (stat)(a,b).  Oh well.  */
+#  undef stat
+#  ifdef _LARGE_FILES
+    /* With _LARGE_FILES defined, AIX (only) defines stat to stat64,
+       so we have to replace stat64() instead of stat(). */
+#   define stat stat64
+#   undef stat64
+#   define stat64(name, st) rpl_stat (name, st)
+#  else /* !_LARGE_FILES */
+#   define stat(name, st) rpl_stat (name, st)
+#  endif /* !_LARGE_FILES */
+_GL_EXTERN_C int stat (const char *name, struct stat *buf)
+                      _GL_ARG_NONNULL ((1, 2));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef stat
+# if HAVE_RAW_DECL_STAT
+_GL_WARN_ON_USE (stat, "stat is unportable - "
+                 "use gnulib module stat for portability");
+# endif
+#endif
+
+
+#if @GNULIB_UTIMENSAT@
+/* Use the rpl_ prefix also on Solaris <= 9, because on Solaris 9 our utimensat
+   implementation relies on futimesat, which on Solaris 10 makes an invocation
+   to utimensat that is meant to invoke the libc's utimensat(), not gnulib's
+   utimensat().  */
+# if @REPLACE_UTIMENSAT@ || (!@HAVE_UTIMENSAT@ && defined __sun)
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef utimensat
+#   define utimensat rpl_utimensat
+#  endif
+_GL_FUNCDECL_RPL (utimensat, int, (int fd, char const *name,
+                                   struct timespec const times[2], int flag)
+                                  _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (utimensat, int, (int fd, char const *name,
+                                   struct timespec const times[2], int flag));
+# else
+#  if !@HAVE_UTIMENSAT@
+_GL_FUNCDECL_SYS (utimensat, int, (int fd, char const *name,
+                                   struct timespec const times[2], int flag)
+                                  _GL_ARG_NONNULL ((2)));
+#  endif
+_GL_CXXALIAS_SYS (utimensat, int, (int fd, char const *name,
+                                   struct timespec const times[2], int flag));
+# endif
+# if @HAVE_UTIMENSAT@
+_GL_CXXALIASWARN (utimensat);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef utimensat
+# if HAVE_RAW_DECL_UTIMENSAT
+_GL_WARN_ON_USE (utimensat, "utimensat is not portable - "
+                 "use gnulib module utimensat for portability");
+# endif
+#endif
+
+
+#endif /* _@GUARD_PREFIX@_SYS_STAT_H */
+#endif /* _@GUARD_PREFIX@_SYS_STAT_H */
+#endif
diff --git a/lib/sys_time.in.h b/lib/sys_time.in.h
new file mode 100644 (file)
index 0000000..fabe65d
--- /dev/null
@@ -0,0 +1,103 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Provide a more complete sys/time.h.
+
+   Copyright (C) 2007-2011 Free Software Foundation, 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; either version 3, 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.  */
+
+/* Written by Paul Eggert.  */
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+#if defined _@GUARD_PREFIX@_SYS_TIME_H
+
+/* Simply delegate to the system's header, without adding anything.  */
+# if @HAVE_SYS_TIME_H@
+#  @INCLUDE_NEXT@ @NEXT_SYS_TIME_H@
+# endif
+
+#else
+
+# define _@GUARD_PREFIX@_SYS_TIME_H
+
+# if @HAVE_SYS_TIME_H@
+#  @INCLUDE_NEXT@ @NEXT_SYS_TIME_H@
+# else
+#  include <time.h>
+# endif
+
+/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
+
+/* The definition of _GL_ARG_NONNULL is copied here.  */
+
+/* The definition of _GL_WARN_ON_USE is copied here.  */
+
+# ifdef __cplusplus
+extern "C" {
+# endif
+
+# if ! @HAVE_STRUCT_TIMEVAL@
+
+#  if !GNULIB_defined_struct_timeval
+struct timeval
+{
+  time_t tv_sec;
+  long int tv_usec;
+};
+#   define GNULIB_defined_struct_timeval 1
+#  endif
+
+# endif
+
+# ifdef __cplusplus
+}
+# endif
+
+# if @GNULIB_GETTIMEOFDAY@
+#  if @REPLACE_GETTIMEOFDAY@
+#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#    undef gettimeofday
+#    define gettimeofday rpl_gettimeofday
+#   endif
+_GL_FUNCDECL_RPL (gettimeofday, int,
+                  (struct timeval *restrict, void *restrict)
+                  _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (gettimeofday, int,
+                  (struct timeval *restrict, void *restrict));
+#  else
+#   if !@HAVE_GETTIMEOFDAY@
+_GL_FUNCDECL_SYS (gettimeofday, int,
+                  (struct timeval *restrict, void *restrict)
+                  _GL_ARG_NONNULL ((1)));
+#   endif
+/* Need to cast, because on glibc systems, by default, the second argument is
+                                                  struct timezone *.  */
+_GL_CXXALIAS_SYS_CAST (gettimeofday, int,
+                       (struct timeval *restrict, void *restrict));
+#  endif
+_GL_CXXALIASWARN (gettimeofday);
+# elif defined GNULIB_POSIXCHECK
+#  undef gettimeofday
+#  if HAVE_RAW_DECL_GETTIMEOFDAY
+_GL_WARN_ON_USE (gettimeofday, "gettimeofday is unportable - "
+                 "use gnulib module gettimeofday for portability");
+#  endif
+# endif
+
+#endif /* _@GUARD_PREFIX@_SYS_TIME_H */
diff --git a/lib/tempname.c b/lib/tempname.c
new file mode 100644 (file)
index 0000000..139e0c3
--- /dev/null
@@ -0,0 +1,311 @@
+/* tempname.c - generate the name of a temporary file.
+
+   Copyright (C) 1991-2003, 2005-2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+/* Extracted from glibc sysdeps/posix/tempname.c.  See also tmpdir.c.  */
+
+#if !_LIBC
+# include <config.h>
+# include "tempname.h"
+#endif
+
+#include <sys/types.h>
+#include <assert.h>
+
+#include <errno.h>
+#ifndef __set_errno
+# define __set_errno(Val) errno = (Val)
+#endif
+
+#include <stdio.h>
+#ifndef P_tmpdir
+# define P_tmpdir "/tmp"
+#endif
+#ifndef TMP_MAX
+# define TMP_MAX 238328
+#endif
+#ifndef __GT_FILE
+# define __GT_FILE      0
+# define __GT_DIR       1
+# define __GT_NOCREATE  2
+#endif
+#if !_LIBC && (GT_FILE != __GT_FILE || GT_DIR != __GT_DIR       \
+               || GT_NOCREATE != __GT_NOCREATE)
+# error report this to bug-gnulib@gnu.org
+#endif
+
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <fcntl.h>
+#include <sys/time.h>
+#include <stdint.h>
+#include <unistd.h>
+
+#include <sys/stat.h>
+
+#if _LIBC
+# define struct_stat64 struct stat64
+#else
+# define struct_stat64 struct stat
+# define __gen_tempname gen_tempname
+# define __getpid getpid
+# define __gettimeofday gettimeofday
+# define __mkdir mkdir
+# define __open open
+# define __open64 open
+# define __lxstat64(version, file, buf) lstat (file, buf)
+# define __xstat64(version, file, buf) stat (file, buf)
+#endif
+
+#if ! (HAVE___SECURE_GETENV || _LIBC)
+# define __secure_getenv getenv
+#endif
+
+#ifdef _LIBC
+# include <hp-timing.h>
+# if HP_TIMING_AVAIL
+#  define RANDOM_BITS(Var) \
+  if (__builtin_expect (value == UINT64_C (0), 0))                            \
+    {                                                                         \
+      /* If this is the first time this function is used initialize           \
+         the variable we accumulate the value in to some somewhat             \
+         random value.  If we'd not do this programs at startup time          \
+         might have a reduced set of possible names, at least on slow         \
+         machines.  */                                                        \
+      struct timeval tv;                                                      \
+      __gettimeofday (&tv, NULL);                                             \
+      value = ((uint64_t) tv.tv_usec << 16) ^ tv.tv_sec;                      \
+    }                                                                         \
+  HP_TIMING_NOW (Var)
+# endif
+#endif
+
+/* Use the widest available unsigned type if uint64_t is not
+   available.  The algorithm below extracts a number less than 62**6
+   (approximately 2**35.725) from uint64_t, so ancient hosts where
+   uintmax_t is only 32 bits lose about 3.725 bits of randomness,
+   which is better than not having mkstemp at all.  */
+#if !defined UINT64_MAX && !defined uint64_t
+# define uint64_t uintmax_t
+#endif
+
+#if _LIBC
+/* Return nonzero if DIR is an existent directory.  */
+static int
+direxists (const char *dir)
+{
+  struct_stat64 buf;
+  return __xstat64 (_STAT_VER, dir, &buf) == 0 && S_ISDIR (buf.st_mode);
+}
+
+/* Path search algorithm, for tmpnam, tmpfile, etc.  If DIR is
+   non-null and exists, uses it; otherwise uses the first of $TMPDIR,
+   P_tmpdir, /tmp that exists.  Copies into TMPL a template suitable
+   for use with mk[s]temp.  Will fail (-1) if DIR is non-null and
+   doesn't exist, none of the searched dirs exists, or there's not
+   enough space in TMPL. */
+int
+__path_search (char *tmpl, size_t tmpl_len, const char *dir, const char *pfx,
+               int try_tmpdir)
+{
+  const char *d;
+  size_t dlen, plen;
+
+  if (!pfx || !pfx[0])
+    {
+      pfx = "file";
+      plen = 4;
+    }
+  else
+    {
+      plen = strlen (pfx);
+      if (plen > 5)
+        plen = 5;
+    }
+
+  if (try_tmpdir)
+    {
+      d = __secure_getenv ("TMPDIR");
+      if (d != NULL && direxists (d))
+        dir = d;
+      else if (dir != NULL && direxists (dir))
+        /* nothing */ ;
+      else
+        dir = NULL;
+    }
+  if (dir == NULL)
+    {
+      if (direxists (P_tmpdir))
+        dir = P_tmpdir;
+      else if (strcmp (P_tmpdir, "/tmp") != 0 && direxists ("/tmp"))
+        dir = "/tmp";
+      else
+        {
+          __set_errno (ENOENT);
+          return -1;
+        }
+    }
+
+  dlen = strlen (dir);
+  while (dlen > 1 && dir[dlen - 1] == '/')
+    dlen--;                     /* remove trailing slashes */
+
+  /* check we have room for "${dir}/${pfx}XXXXXX\0" */
+  if (tmpl_len < dlen + 1 + plen + 6 + 1)
+    {
+      __set_errno (EINVAL);
+      return -1;
+    }
+
+  sprintf (tmpl, "%.*s/%.*sXXXXXX", (int) dlen, dir, (int) plen, pfx);
+  return 0;
+}
+#endif /* _LIBC */
+
+/* These are the characters used in temporary file names.  */
+static const char letters[] =
+"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
+
+/* Generate a temporary file name based on TMPL.  TMPL must match the
+   rules for mk[s]temp (i.e. end in "XXXXXX", possibly with a suffix).
+   The name constructed does not exist at the time of the call to
+   __gen_tempname.  TMPL is overwritten with the result.
+
+   KIND may be one of:
+   __GT_NOCREATE:       simply verify that the name does not exist
+                        at the time of the call.
+   __GT_FILE:           create the file using open(O_CREAT|O_EXCL)
+                        and return a read-write fd.  The file is mode 0600.
+   __GT_DIR:            create a directory, which will be mode 0700.
+
+   We use a clever algorithm to get hard-to-predict names. */
+int
+__gen_tempname (char *tmpl, int suffixlen, int flags, int kind)
+{
+  int len;
+  char *XXXXXX;
+  static uint64_t value;
+  uint64_t random_time_bits;
+  unsigned int count;
+  int fd = -1;
+  int save_errno = errno;
+  struct_stat64 st;
+
+  /* A lower bound on the number of temporary files to attempt to
+     generate.  The maximum total number of temporary file names that
+     can exist for a given template is 62**6.  It should never be
+     necessary to try all these combinations.  Instead if a reasonable
+     number of names is tried (we define reasonable as 62**3) fail to
+     give the system administrator the chance to remove the problems.  */
+#define ATTEMPTS_MIN (62 * 62 * 62)
+
+  /* The number of times to attempt to generate a temporary file.  To
+     conform to POSIX, this must be no smaller than TMP_MAX.  */
+#if ATTEMPTS_MIN < TMP_MAX
+  unsigned int attempts = TMP_MAX;
+#else
+  unsigned int attempts = ATTEMPTS_MIN;
+#endif
+
+  len = strlen (tmpl);
+  if (len < 6 + suffixlen || memcmp (&tmpl[len - 6 - suffixlen], "XXXXXX", 6))
+    {
+      __set_errno (EINVAL);
+      return -1;
+    }
+
+  /* This is where the Xs start.  */
+  XXXXXX = &tmpl[len - 6 - suffixlen];
+
+  /* Get some more or less random data.  */
+#ifdef RANDOM_BITS
+  RANDOM_BITS (random_time_bits);
+#else
+  {
+    struct timeval tv;
+    __gettimeofday (&tv, NULL);
+    random_time_bits = ((uint64_t) tv.tv_usec << 16) ^ tv.tv_sec;
+  }
+#endif
+  value += random_time_bits ^ __getpid ();
+
+  for (count = 0; count < attempts; value += 7777, ++count)
+    {
+      uint64_t v = value;
+
+      /* Fill in the random bits.  */
+      XXXXXX[0] = letters[v % 62];
+      v /= 62;
+      XXXXXX[1] = letters[v % 62];
+      v /= 62;
+      XXXXXX[2] = letters[v % 62];
+      v /= 62;
+      XXXXXX[3] = letters[v % 62];
+      v /= 62;
+      XXXXXX[4] = letters[v % 62];
+      v /= 62;
+      XXXXXX[5] = letters[v % 62];
+
+      switch (kind)
+        {
+        case __GT_FILE:
+          fd = __open (tmpl,
+                       (flags & ~O_ACCMODE)
+                       | O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR);
+          break;
+
+        case __GT_DIR:
+          fd = __mkdir (tmpl, S_IRUSR | S_IWUSR | S_IXUSR);
+          break;
+
+        case __GT_NOCREATE:
+          /* This case is backward from the other three.  __gen_tempname
+             succeeds if __xstat fails because the name does not exist.
+             Note the continue to bypass the common logic at the bottom
+             of the loop.  */
+          if (__lxstat64 (_STAT_VER, tmpl, &st) < 0)
+            {
+              if (errno == ENOENT)
+                {
+                  __set_errno (save_errno);
+                  return 0;
+                }
+              else
+                /* Give up now. */
+                return -1;
+            }
+          continue;
+
+        default:
+          assert (! "invalid KIND in __gen_tempname");
+          abort ();
+        }
+
+      if (fd >= 0)
+        {
+          __set_errno (save_errno);
+          return fd;
+        }
+      else if (errno != EEXIST)
+        return -1;
+    }
+
+  /* We got out of the loop because we ran out of combinations to try.  */
+  __set_errno (EEXIST);
+  return -1;
+}
diff --git a/lib/tempname.h b/lib/tempname.h
new file mode 100644 (file)
index 0000000..f27b9ba
--- /dev/null
@@ -0,0 +1,50 @@
+/* Create a temporary file or directory.
+
+   Copyright (C) 2006, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+/* header written by Eric Blake */
+
+#ifndef GL_TEMPNAME_H
+# define GL_TEMPNAME_H
+
+# include <stdio.h>
+
+# ifdef __GT_FILE
+#  define GT_FILE     __GT_FILE
+#  define GT_DIR      __GT_DIR
+#  define GT_NOCREATE __GT_NOCREATE
+# else
+#  define GT_FILE     0
+#  define GT_DIR      1
+#  define GT_NOCREATE 2
+# endif
+
+/* Generate a temporary file name based on TMPL.  TMPL must match the
+   rules for mk[s]temp (i.e. end in "XXXXXX", possibly with a suffix).
+   The name constructed does not exist at the time of the call to
+   gen_tempname.  TMPL is overwritten with the result.
+
+   KIND may be one of:
+   GT_NOCREATE:         simply verify that the name does not exist
+                        at the time of the call.
+   GT_FILE:             create a large file using open(O_CREAT|O_EXCL)
+                        and return a read-write fd.  The file is mode 0600.
+   GT_DIR:              create a directory, which will be mode 0700.
+
+   We use a clever algorithm to get hard-to-predict names. */
+extern int gen_tempname (char *tmpl, int suffixlen, int flags, int kind);
+
+#endif /* GL_TEMPNAME_H */
diff --git a/lib/time.in.h b/lib/time.in.h
new file mode 100644 (file)
index 0000000..c7625e5
--- /dev/null
@@ -0,0 +1,251 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* A more-standard <time.h>.
+
+   Copyright (C) 2007-2011 Free Software Foundation, 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; either version 3, 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.  */
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+/* Don't get in the way of glibc when it includes time.h merely to
+   declare a few standard symbols, rather than to declare all the
+   symbols.  Also, Solaris 8 <time.h> eventually includes itself
+   recursively; if that is happening, just include the system <time.h>
+   without adding our own declarations.  */
+#if (defined __need_time_t || defined __need_clock_t \
+     || defined __need_timespec \
+     || defined _@GUARD_PREFIX@_TIME_H)
+
+# @INCLUDE_NEXT@ @NEXT_TIME_H@
+
+#else
+
+# define _@GUARD_PREFIX@_TIME_H
+
+# @INCLUDE_NEXT@ @NEXT_TIME_H@
+
+/* NetBSD 5.0 mis-defines NULL.  */
+# include <stddef.h>
+
+/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
+
+/* The definition of _GL_ARG_NONNULL is copied here.  */
+
+/* The definition of _GL_WARN_ON_USE is copied here.  */
+
+/* Some systems don't define struct timespec (e.g., AIX 4.1, Ultrix 4.3).
+   Or they define it with the wrong member names or define it in <sys/time.h>
+   (e.g., FreeBSD circa 1997).  Stock Mingw does not define it, but the
+   pthreads-win32 library defines it in <pthread.h>.  */
+# if ! @TIME_H_DEFINES_STRUCT_TIMESPEC@
+#  if @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+#   include <sys/time.h>
+#  elif @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
+#   include <pthread.h>
+/* The pthreads-win32 <pthread.h> also defines a couple of broken macros.  */
+#   undef asctime_r
+#   undef ctime_r
+#   undef gmtime_r
+#   undef localtime_r
+#   undef rand_r
+#   undef strtok_r
+#  else
+
+#   ifdef __cplusplus
+extern "C" {
+#   endif
+
+#   if !GNULIB_defined_struct_timespec
+#    undef timespec
+#    define timespec rpl_timespec
+struct timespec
+{
+  time_t tv_sec;
+  long int tv_nsec;
+};
+#    define GNULIB_defined_struct_timespec 1
+#   endif
+
+#   ifdef __cplusplus
+}
+#   endif
+
+#  endif
+# endif
+
+# if !GNULIB_defined_struct_time_t_must_be_integral
+/* Per http://austingroupbugs.net/view.php?id=327, POSIX requires
+   time_t to be an integer type, even though C99 permits floating
+   point.  We don't know of any implementation that uses floating
+   point, and it is much easier to write code that doesn't have to
+   worry about that corner case, so we force the issue.  */
+struct __time_t_must_be_integral {
+  unsigned int __floating_time_t_unsupported : (time_t) 1;
+};
+#  define GNULIB_defined_struct_time_t_must_be_integral 1
+# endif
+
+/* Sleep for at least RQTP seconds unless interrupted,  If interrupted,
+   return -1 and store the remaining time into RMTP.  See
+   <http://www.opengroup.org/susv3xsh/nanosleep.html>.  */
+# if @GNULIB_NANOSLEEP@
+#  if @REPLACE_NANOSLEEP@
+#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#    define nanosleep rpl_nanosleep
+#   endif
+_GL_FUNCDECL_RPL (nanosleep, int,
+                  (struct timespec const *__rqtp, struct timespec *__rmtp)
+                  _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (nanosleep, int,
+                  (struct timespec const *__rqtp, struct timespec *__rmtp));
+#  else
+#   if ! @HAVE_NANOSLEEP@
+_GL_FUNCDECL_SYS (nanosleep, int,
+                  (struct timespec const *__rqtp, struct timespec *__rmtp)
+                  _GL_ARG_NONNULL ((1)));
+#   endif
+_GL_CXXALIAS_SYS (nanosleep, int,
+                  (struct timespec const *__rqtp, struct timespec *__rmtp));
+#  endif
+_GL_CXXALIASWARN (nanosleep);
+# endif
+
+/* Return the 'time_t' representation of TP and normalize TP.  */
+# if @GNULIB_MKTIME@
+#  if @REPLACE_MKTIME@
+#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#    define mktime rpl_mktime
+#   endif
+_GL_FUNCDECL_RPL (mktime, time_t, (struct tm *__tp) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (mktime, time_t, (struct tm *__tp));
+#  else
+_GL_CXXALIAS_SYS (mktime, time_t, (struct tm *__tp));
+#  endif
+_GL_CXXALIASWARN (mktime);
+# endif
+
+/* Convert TIMER to RESULT, assuming local time and UTC respectively.  See
+   <http://www.opengroup.org/susv3xsh/localtime_r.html> and
+   <http://www.opengroup.org/susv3xsh/gmtime_r.html>.  */
+# if @GNULIB_TIME_R@
+#  if @REPLACE_LOCALTIME_R@
+#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#    undef localtime_r
+#    define localtime_r rpl_localtime_r
+#   endif
+_GL_FUNCDECL_RPL (localtime_r, struct tm *, (time_t const *restrict __timer,
+                                             struct tm *restrict __result)
+                                            _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (localtime_r, struct tm *, (time_t const *restrict __timer,
+                                             struct tm *restrict __result));
+#  else
+#   if ! @HAVE_DECL_LOCALTIME_R@
+_GL_FUNCDECL_SYS (localtime_r, struct tm *, (time_t const *restrict __timer,
+                                             struct tm *restrict __result)
+                                            _GL_ARG_NONNULL ((1, 2)));
+#   endif
+_GL_CXXALIAS_SYS (localtime_r, struct tm *, (time_t const *restrict __timer,
+                                             struct tm *restrict __result));
+#  endif
+#  if @HAVE_DECL_LOCALTIME_R@
+_GL_CXXALIASWARN (localtime_r);
+#  endif
+#  if @REPLACE_LOCALTIME_R@
+#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#    undef gmtime_r
+#    define gmtime_r rpl_gmtime_r
+#   endif
+_GL_FUNCDECL_RPL (gmtime_r, struct tm *, (time_t const *restrict __timer,
+                                          struct tm *restrict __result)
+                                         _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (gmtime_r, struct tm *, (time_t const *restrict __timer,
+                                          struct tm *restrict __result));
+#  else
+#   if ! @HAVE_DECL_LOCALTIME_R@
+_GL_FUNCDECL_SYS (gmtime_r, struct tm *, (time_t const *restrict __timer,
+                                          struct tm *restrict __result)
+                                         _GL_ARG_NONNULL ((1, 2)));
+#   endif
+_GL_CXXALIAS_SYS (gmtime_r, struct tm *, (time_t const *restrict __timer,
+                                          struct tm *restrict __result));
+#  endif
+#  if @HAVE_DECL_LOCALTIME_R@
+_GL_CXXALIASWARN (gmtime_r);
+#  endif
+# endif
+
+/* Parse BUF as a time stamp, assuming FORMAT specifies its layout, and store
+   the resulting broken-down time into TM.  See
+   <http://www.opengroup.org/susv3xsh/strptime.html>.  */
+# if @GNULIB_STRPTIME@
+#  if ! @HAVE_STRPTIME@
+_GL_FUNCDECL_SYS (strptime, char *, (char const *restrict __buf,
+                                     char const *restrict __format,
+                                     struct tm *restrict __tm)
+                                    _GL_ARG_NONNULL ((1, 2, 3)));
+#  endif
+_GL_CXXALIAS_SYS (strptime, char *, (char const *restrict __buf,
+                                     char const *restrict __format,
+                                     struct tm *restrict __tm));
+_GL_CXXALIASWARN (strptime);
+# endif
+
+/* Convert TM to a time_t value, assuming UTC.  */
+# if @GNULIB_TIMEGM@
+#  if @REPLACE_TIMEGM@
+#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#    undef timegm
+#    define timegm rpl_timegm
+#   endif
+_GL_FUNCDECL_RPL (timegm, time_t, (struct tm *__tm) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (timegm, time_t, (struct tm *__tm));
+#  else
+#   if ! @HAVE_TIMEGM@
+_GL_FUNCDECL_SYS (timegm, time_t, (struct tm *__tm) _GL_ARG_NONNULL ((1)));
+#   endif
+_GL_CXXALIAS_SYS (timegm, time_t, (struct tm *__tm));
+#  endif
+_GL_CXXALIASWARN (timegm);
+# endif
+
+/* Encourage applications to avoid unsafe functions that can overrun
+   buffers when given outlandish struct tm values.  Portable
+   applications should use strftime (or even sprintf) instead.  */
+# if defined GNULIB_POSIXCHECK
+#  undef asctime
+_GL_WARN_ON_USE (asctime, "asctime can overrun buffers in some cases - "
+                 "better use strftime (or even sprintf) instead");
+# endif
+# if defined GNULIB_POSIXCHECK
+#  undef asctime_r
+_GL_WARN_ON_USE (asctime, "asctime_r can overrun buffers in some cases - "
+                 "better use strftime (or even sprintf) instead");
+# endif
+# if defined GNULIB_POSIXCHECK
+#  undef ctime
+_GL_WARN_ON_USE (asctime, "ctime can overrun buffers in some cases - "
+                 "better use strftime (or even sprintf) instead");
+# endif
+# if defined GNULIB_POSIXCHECK
+#  undef ctime_r
+_GL_WARN_ON_USE (asctime, "ctime_r can overrun buffers in some cases - "
+                 "better use strftime (or even sprintf) instead");
+# endif
+
+#endif
diff --git a/lib/unistd.in.h b/lib/unistd.in.h
new file mode 100644 (file)
index 0000000..9aa5a64
--- /dev/null
@@ -0,0 +1,1422 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Substitute for and wrapper around <unistd.h>.
+   Copyright (C) 2003-2011 Free Software Foundation, 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; either version 3, 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.  */
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+/* Special invocation convention:
+   - On mingw, several headers, including <winsock2.h>, include <unistd.h>,
+     but we need to ensure that both the system <unistd.h> and <winsock2.h>
+     are completely included before we replace gethostname.  */
+#if @GNULIB_GETHOSTNAME@ && @UNISTD_H_HAVE_WINSOCK2_H@ \
+  && !defined _GL_WINSOCK2_H_WITNESS && defined _WINSOCK2_H
+/* <unistd.h> is being indirectly included for the first time from
+   <winsock2.h>; avoid declaring any overrides.  */
+# if @HAVE_UNISTD_H@
+#  @INCLUDE_NEXT@ @NEXT_UNISTD_H@
+# else
+#  error unexpected; report this to bug-gnulib@gnu.org
+# endif
+# define _GL_WINSOCK2_H_WITNESS
+
+/* Normal invocation.  */
+#elif !defined _@GUARD_PREFIX@_UNISTD_H
+
+/* The include_next requires a split double-inclusion guard.  */
+#if @HAVE_UNISTD_H@
+# @INCLUDE_NEXT@ @NEXT_UNISTD_H@
+#endif
+
+/* Get all possible declarations of gethostname().  */
+#if @GNULIB_GETHOSTNAME@ && @UNISTD_H_HAVE_WINSOCK2_H@ \
+  && !defined _GL_INCLUDING_WINSOCK2_H
+# define _GL_INCLUDING_WINSOCK2_H
+# include <winsock2.h>
+# undef _GL_INCLUDING_WINSOCK2_H
+#endif
+
+#if !defined _@GUARD_PREFIX@_UNISTD_H && !defined _GL_INCLUDING_WINSOCK2_H
+#define _@GUARD_PREFIX@_UNISTD_H
+
+/* NetBSD 5.0 mis-defines NULL.  Also get size_t.  */
+#include <stddef.h>
+
+/* mingw doesn't define the SEEK_* or *_FILENO macros in <unistd.h>.  */
+/* Cygwin 1.7.1 declares symlinkat in <stdio.h>, not in <unistd.h>.  */
+/* But avoid namespace pollution on glibc systems.  */
+#if (!(defined SEEK_CUR && defined SEEK_END && defined SEEK_SET) \
+     || ((@GNULIB_SYMLINKAT@ || defined GNULIB_POSIXCHECK) \
+         && defined __CYGWIN__)) \
+    && ! defined __GLIBC__
+# include <stdio.h>
+#endif
+
+/* Cygwin 1.7.1 declares unlinkat in <fcntl.h>, not in <unistd.h>.  */
+/* But avoid namespace pollution on glibc systems.  */
+#if (@GNULIB_UNLINKAT@ || defined GNULIB_POSIXCHECK) && defined __CYGWIN__ \
+    && ! defined __GLIBC__
+# include <fcntl.h>
+#endif
+
+/* mingw fails to declare _exit in <unistd.h>.  */
+/* mingw, BeOS, Haiku declare environ in <stdlib.h>, not in <unistd.h>.  */
+/* Solaris declares getcwd not only in <unistd.h> but also in <stdlib.h>.  */
+/* But avoid namespace pollution on glibc systems.  */
+#ifndef __GLIBC__
+# include <stdlib.h>
+#endif
+
+/* mingw declares getcwd in <io.h>, not in <unistd.h>.  */
+#if ((@GNULIB_GETCWD@ || defined GNULIB_POSIXCHECK) \
+     && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__))
+# include <io.h>
+#endif
+
+/* AIX and OSF/1 5.1 declare getdomainname in <netdb.h>, not in <unistd.h>.
+   NonStop Kernel declares gethostname in <netdb.h>, not in <unistd.h>.  */
+/* But avoid namespace pollution on glibc systems.  */
+#if ((@GNULIB_GETDOMAINNAME@ && (defined _AIX || defined __osf__)) \
+     || (@GNULIB_GETHOSTNAME@ && defined __TANDEM)) \
+    && !defined __GLIBC__
+# include <netdb.h>
+#endif
+
+#if (@GNULIB_READ@ || @GNULIB_WRITE@ \
+     || @GNULIB_READLINK@ || @GNULIB_READLINKAT@ \
+     || @GNULIB_PREAD@ || @GNULIB_PWRITE@ || defined GNULIB_POSIXCHECK)
+/* Get ssize_t.  */
+# include <sys/types.h>
+#endif
+
+/* Get getopt(), optarg, optind, opterr, optopt.
+   But avoid namespace pollution on glibc systems.  */
+#if @GNULIB_UNISTD_H_GETOPT@ && !defined __GLIBC__ && !defined _GL_SYSTEM_GETOPT
+# include <getopt.h>
+#endif
+
+/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
+
+/* The definition of _GL_ARG_NONNULL is copied here.  */
+
+/* The definition of _GL_WARN_ON_USE is copied here.  */
+
+
+#if @GNULIB_GETHOSTNAME@
+/* Get all possible declarations of gethostname().  */
+# if @UNISTD_H_HAVE_WINSOCK2_H@
+#  if !defined _@GUARD_PREFIX@_SYS_SOCKET_H
+#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#    undef socket
+#    define socket              socket_used_without_including_sys_socket_h
+#    undef connect
+#    define connect             connect_used_without_including_sys_socket_h
+#    undef accept
+#    define accept              accept_used_without_including_sys_socket_h
+#    undef bind
+#    define bind                bind_used_without_including_sys_socket_h
+#    undef getpeername
+#    define getpeername         getpeername_used_without_including_sys_socket_h
+#    undef getsockname
+#    define getsockname         getsockname_used_without_including_sys_socket_h
+#    undef getsockopt
+#    define getsockopt          getsockopt_used_without_including_sys_socket_h
+#    undef listen
+#    define listen              listen_used_without_including_sys_socket_h
+#    undef recv
+#    define recv                recv_used_without_including_sys_socket_h
+#    undef send
+#    define send                send_used_without_including_sys_socket_h
+#    undef recvfrom
+#    define recvfrom            recvfrom_used_without_including_sys_socket_h
+#    undef sendto
+#    define sendto              sendto_used_without_including_sys_socket_h
+#    undef setsockopt
+#    define setsockopt          setsockopt_used_without_including_sys_socket_h
+#    undef shutdown
+#    define shutdown            shutdown_used_without_including_sys_socket_h
+#   else
+     _GL_WARN_ON_USE (socket,
+                      "socket() used without including <sys/socket.h>");
+     _GL_WARN_ON_USE (connect,
+                      "connect() used without including <sys/socket.h>");
+     _GL_WARN_ON_USE (accept,
+                      "accept() used without including <sys/socket.h>");
+     _GL_WARN_ON_USE (bind,
+                      "bind() used without including <sys/socket.h>");
+     _GL_WARN_ON_USE (getpeername,
+                      "getpeername() used without including <sys/socket.h>");
+     _GL_WARN_ON_USE (getsockname,
+                      "getsockname() used without including <sys/socket.h>");
+     _GL_WARN_ON_USE (getsockopt,
+                      "getsockopt() used without including <sys/socket.h>");
+     _GL_WARN_ON_USE (listen,
+                      "listen() used without including <sys/socket.h>");
+     _GL_WARN_ON_USE (recv,
+                      "recv() used without including <sys/socket.h>");
+     _GL_WARN_ON_USE (send,
+                      "send() used without including <sys/socket.h>");
+     _GL_WARN_ON_USE (recvfrom,
+                      "recvfrom() used without including <sys/socket.h>");
+     _GL_WARN_ON_USE (sendto,
+                      "sendto() used without including <sys/socket.h>");
+     _GL_WARN_ON_USE (setsockopt,
+                      "setsockopt() used without including <sys/socket.h>");
+     _GL_WARN_ON_USE (shutdown,
+                      "shutdown() used without including <sys/socket.h>");
+#   endif
+#  endif
+#  if !defined _@GUARD_PREFIX@_SYS_SELECT_H
+#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#    undef select
+#    define select              select_used_without_including_sys_select_h
+#   else
+     _GL_WARN_ON_USE (select,
+                      "select() used without including <sys/select.h>");
+#   endif
+#  endif
+# endif
+#endif
+
+
+/* OS/2 EMX lacks these macros.  */
+#ifndef STDIN_FILENO
+# define STDIN_FILENO 0
+#endif
+#ifndef STDOUT_FILENO
+# define STDOUT_FILENO 1
+#endif
+#ifndef STDERR_FILENO
+# define STDERR_FILENO 2
+#endif
+
+/* Ensure *_OK macros exist.  */
+#ifndef F_OK
+# define F_OK 0
+# define X_OK 1
+# define W_OK 2
+# define R_OK 4
+#endif
+
+
+/* Declare overridden functions.  */
+
+
+#if defined GNULIB_POSIXCHECK
+/* The access() function is a security risk.  */
+_GL_WARN_ON_USE (access, "the access function is a security risk - "
+                 "use the gnulib module faccessat instead");
+#endif
+
+
+#if @GNULIB_CHOWN@
+/* Change the owner of FILE to UID (if UID is not -1) and the group of FILE
+   to GID (if GID is not -1).  Follow symbolic links.
+   Return 0 if successful, otherwise -1 and errno set.
+   See the POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/chown.html>.  */
+# if @REPLACE_CHOWN@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef chown
+#   define chown rpl_chown
+#  endif
+_GL_FUNCDECL_RPL (chown, int, (const char *file, uid_t uid, gid_t gid)
+                              _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (chown, int, (const char *file, uid_t uid, gid_t gid));
+# else
+#  if !@HAVE_CHOWN@
+_GL_FUNCDECL_SYS (chown, int, (const char *file, uid_t uid, gid_t gid)
+                              _GL_ARG_NONNULL ((1)));
+#  endif
+_GL_CXXALIAS_SYS (chown, int, (const char *file, uid_t uid, gid_t gid));
+# endif
+_GL_CXXALIASWARN (chown);
+#elif defined GNULIB_POSIXCHECK
+# undef chown
+# if HAVE_RAW_DECL_CHOWN
+_GL_WARN_ON_USE (chown, "chown fails to follow symlinks on some systems and "
+                 "doesn't treat a uid or gid of -1 on some systems - "
+                 "use gnulib module chown for portability");
+# endif
+#endif
+
+
+#if @GNULIB_CLOSE@
+# if @REPLACE_CLOSE@
+/* Automatically included by modules that need a replacement for close.  */
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef close
+#   define close rpl_close
+#  endif
+_GL_FUNCDECL_RPL (close, int, (int fd));
+_GL_CXXALIAS_RPL (close, int, (int fd));
+# else
+_GL_CXXALIAS_SYS (close, int, (int fd));
+# endif
+_GL_CXXALIASWARN (close);
+#elif @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+# undef close
+# define close close_used_without_requesting_gnulib_module_close
+#elif defined GNULIB_POSIXCHECK
+# undef close
+/* Assume close is always declared.  */
+_GL_WARN_ON_USE (close, "close does not portably work on sockets - "
+                 "use gnulib module close for portability");
+#endif
+
+
+#if @REPLACE_DUP@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#  define dup rpl_dup
+# endif
+_GL_FUNCDECL_RPL (dup, int, (int oldfd));
+_GL_CXXALIAS_RPL (dup, int, (int oldfd));
+#else
+_GL_CXXALIAS_SYS (dup, int, (int oldfd));
+#endif
+_GL_CXXALIASWARN (dup);
+
+
+#if @GNULIB_DUP2@
+/* Copy the file descriptor OLDFD into file descriptor NEWFD.  Do nothing if
+   NEWFD = OLDFD, otherwise close NEWFD first if it is open.
+   Return newfd if successful, otherwise -1 and errno set.
+   See the POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/dup2.html>.  */
+# if @REPLACE_DUP2@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define dup2 rpl_dup2
+#  endif
+_GL_FUNCDECL_RPL (dup2, int, (int oldfd, int newfd));
+_GL_CXXALIAS_RPL (dup2, int, (int oldfd, int newfd));
+# else
+#  if !@HAVE_DUP2@
+_GL_FUNCDECL_SYS (dup2, int, (int oldfd, int newfd));
+#  endif
+_GL_CXXALIAS_SYS (dup2, int, (int oldfd, int newfd));
+# endif
+_GL_CXXALIASWARN (dup2);
+#elif defined GNULIB_POSIXCHECK
+# undef dup2
+# if HAVE_RAW_DECL_DUP2
+_GL_WARN_ON_USE (dup2, "dup2 is unportable - "
+                 "use gnulib module dup2 for portability");
+# endif
+#endif
+
+
+#if @GNULIB_DUP3@
+/* Copy the file descriptor OLDFD into file descriptor NEWFD, with the
+   specified flags.
+   The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>)
+   and O_TEXT, O_BINARY (defined in "binary-io.h").
+   Close NEWFD first if it is open.
+   Return newfd if successful, otherwise -1 and errno set.
+   See the Linux man page at
+   <http://www.kernel.org/doc/man-pages/online/pages/man2/dup3.2.html>.  */
+# if @HAVE_DUP3@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define dup3 rpl_dup3
+#  endif
+_GL_FUNCDECL_RPL (dup3, int, (int oldfd, int newfd, int flags));
+_GL_CXXALIAS_RPL (dup3, int, (int oldfd, int newfd, int flags));
+# else
+_GL_FUNCDECL_SYS (dup3, int, (int oldfd, int newfd, int flags));
+_GL_CXXALIAS_SYS (dup3, int, (int oldfd, int newfd, int flags));
+# endif
+_GL_CXXALIASWARN (dup3);
+#elif defined GNULIB_POSIXCHECK
+# undef dup3
+# if HAVE_RAW_DECL_DUP3
+_GL_WARN_ON_USE (dup3, "dup3 is unportable - "
+                 "use gnulib module dup3 for portability");
+# endif
+#endif
+
+
+#if @GNULIB_ENVIRON@
+# if !@HAVE_DECL_ENVIRON@
+/* Set of environment variables and values.  An array of strings of the form
+   "VARIABLE=VALUE", terminated with a NULL.  */
+#  if defined __APPLE__ && defined __MACH__
+#   include <crt_externs.h>
+#   define environ (*_NSGetEnviron ())
+#  else
+#   ifdef __cplusplus
+extern "C" {
+#   endif
+extern char **environ;
+#   ifdef __cplusplus
+}
+#   endif
+#  endif
+# endif
+#elif defined GNULIB_POSIXCHECK
+# if HAVE_RAW_DECL_ENVIRON
+static inline char ***
+rpl_environ (void)
+{
+  return &environ;
+}
+_GL_WARN_ON_USE (rpl_environ, "environ is unportable - "
+                 "use gnulib module environ for portability");
+#  undef environ
+#  define environ (*rpl_environ ())
+# endif
+#endif
+
+
+#if @GNULIB_EUIDACCESS@
+/* Like access(), except that it uses the effective user id and group id of
+   the current process.  */
+# if !@HAVE_EUIDACCESS@
+_GL_FUNCDECL_SYS (euidaccess, int, (const char *filename, int mode)
+                                   _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (euidaccess, int, (const char *filename, int mode));
+_GL_CXXALIASWARN (euidaccess);
+# if defined GNULIB_POSIXCHECK
+/* Like access(), this function is a security risk.  */
+_GL_WARN_ON_USE (euidaccess, "the euidaccess function is a security risk - "
+                 "use the gnulib module faccessat instead");
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef euidaccess
+# if HAVE_RAW_DECL_EUIDACCESS
+_GL_WARN_ON_USE (euidaccess, "euidaccess is unportable - "
+                 "use gnulib module euidaccess for portability");
+# endif
+#endif
+
+
+#if @GNULIB_FACCESSAT@
+# if !@HAVE_FACCESSAT@
+_GL_FUNCDECL_SYS (faccessat, int,
+                  (int fd, char const *file, int mode, int flag)
+                  _GL_ARG_NONNULL ((2)));
+# endif
+_GL_CXXALIAS_SYS (faccessat, int,
+                  (int fd, char const *file, int mode, int flag));
+_GL_CXXALIASWARN (faccessat);
+#elif defined GNULIB_POSIXCHECK
+# undef faccessat
+# if HAVE_RAW_DECL_FACCESSAT
+_GL_WARN_ON_USE (faccessat, "faccessat is not portable - "
+                 "use gnulib module faccessat for portability");
+# endif
+#endif
+
+
+#if @GNULIB_FCHDIR@
+/* Change the process' current working directory to the directory on which
+   the given file descriptor is open.
+   Return 0 if successful, otherwise -1 and errno set.
+   See the POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/fchdir.html>.  */
+# if ! @HAVE_FCHDIR@
+_GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/));
+
+/* Gnulib internal hooks needed to maintain the fchdir metadata.  */
+_GL_EXTERN_C int _gl_register_fd (int fd, const char *filename)
+     _GL_ARG_NONNULL ((2));
+_GL_EXTERN_C void _gl_unregister_fd (int fd);
+_GL_EXTERN_C int _gl_register_dup (int oldfd, int newfd);
+_GL_EXTERN_C const char *_gl_directory_name (int fd);
+
+# else
+#  if !@HAVE_DECL_FCHDIR@
+_GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/));
+#  endif
+# endif
+_GL_CXXALIAS_SYS (fchdir, int, (int /*fd*/));
+_GL_CXXALIASWARN (fchdir);
+#elif defined GNULIB_POSIXCHECK
+# undef fchdir
+# if HAVE_RAW_DECL_FCHDIR
+_GL_WARN_ON_USE (fchdir, "fchdir is unportable - "
+                 "use gnulib module fchdir for portability");
+# endif
+#endif
+
+
+#if @GNULIB_FCHOWNAT@
+# if @REPLACE_FCHOWNAT@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef fchownat
+#   define fchownat rpl_fchownat
+#  endif
+_GL_FUNCDECL_RPL (fchownat, int, (int fd, char const *file,
+                                  uid_t owner, gid_t group, int flag)
+                                 _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (fchownat, int, (int fd, char const *file,
+                                  uid_t owner, gid_t group, int flag));
+# else
+#  if !@HAVE_FCHOWNAT@
+_GL_FUNCDECL_SYS (fchownat, int, (int fd, char const *file,
+                                  uid_t owner, gid_t group, int flag)
+                                 _GL_ARG_NONNULL ((2)));
+#  endif
+_GL_CXXALIAS_SYS (fchownat, int, (int fd, char const *file,
+                                  uid_t owner, gid_t group, int flag));
+# endif
+_GL_CXXALIASWARN (fchownat);
+#elif defined GNULIB_POSIXCHECK
+# undef fchownat
+# if HAVE_RAW_DECL_FCHOWNAT
+_GL_WARN_ON_USE (fchownat, "fchownat is not portable - "
+                 "use gnulib module openat for portability");
+# endif
+#endif
+
+
+#if @GNULIB_FSYNC@
+/* Synchronize changes to a file.
+   Return 0 if successful, otherwise -1 and errno set.
+   See POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/fsync.html>.  */
+# if !@HAVE_FSYNC@
+_GL_FUNCDECL_SYS (fsync, int, (int fd));
+# endif
+_GL_CXXALIAS_SYS (fsync, int, (int fd));
+_GL_CXXALIASWARN (fsync);
+#elif defined GNULIB_POSIXCHECK
+# undef fsync
+# if HAVE_RAW_DECL_FSYNC
+_GL_WARN_ON_USE (fsync, "fsync is unportable - "
+                 "use gnulib module fsync for portability");
+# endif
+#endif
+
+
+#if @GNULIB_FTRUNCATE@
+/* Change the size of the file to which FD is opened to become equal to LENGTH.
+   Return 0 if successful, otherwise -1 and errno set.
+   See the POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/ftruncate.html>.  */
+# if !@HAVE_FTRUNCATE@
+_GL_FUNCDECL_SYS (ftruncate, int, (int fd, off_t length));
+# endif
+_GL_CXXALIAS_SYS (ftruncate, int, (int fd, off_t length));
+_GL_CXXALIASWARN (ftruncate);
+#elif defined GNULIB_POSIXCHECK
+# undef ftruncate
+# if HAVE_RAW_DECL_FTRUNCATE
+_GL_WARN_ON_USE (ftruncate, "ftruncate is unportable - "
+                 "use gnulib module ftruncate for portability");
+# endif
+#endif
+
+
+#if @GNULIB_GETCWD@
+/* Get the name of the current working directory, and put it in SIZE bytes
+   of BUF.
+   Return BUF if successful, or NULL if the directory couldn't be determined
+   or SIZE was too small.
+   See the POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/getcwd.html>.
+   Additionally, the gnulib module 'getcwd' guarantees the following GNU
+   extension: If BUF is NULL, an array is allocated with 'malloc'; the array
+   is SIZE bytes long, unless SIZE == 0, in which case it is as big as
+   necessary.  */
+# if @REPLACE_GETCWD@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define getcwd rpl_getcwd
+#  endif
+_GL_FUNCDECL_RPL (getcwd, char *, (char *buf, size_t size));
+_GL_CXXALIAS_RPL (getcwd, char *, (char *buf, size_t size));
+# else
+/* Need to cast, because on mingw, the second parameter is
+                                                   int size.  */
+_GL_CXXALIAS_SYS_CAST (getcwd, char *, (char *buf, size_t size));
+# endif
+_GL_CXXALIASWARN (getcwd);
+#elif defined GNULIB_POSIXCHECK
+# undef getcwd
+# if HAVE_RAW_DECL_GETCWD
+_GL_WARN_ON_USE (getcwd, "getcwd is unportable - "
+                 "use gnulib module getcwd for portability");
+# endif
+#endif
+
+
+#if @GNULIB_GETDOMAINNAME@
+/* Return the NIS domain name of the machine.
+   WARNING! The NIS domain name is unrelated to the fully qualified host name
+            of the machine.  It is also unrelated to email addresses.
+   WARNING! The NIS domain name is usually the empty string or "(none)" when
+            not using NIS.
+
+   Put up to LEN bytes of the NIS domain name into NAME.
+   Null terminate it if the name is shorter than LEN.
+   If the NIS domain name is longer than LEN, set errno = EINVAL and return -1.
+   Return 0 if successful, otherwise set errno and return -1.  */
+# if @REPLACE_GETDOMAINNAME@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef getdomainname
+#   define getdomainname rpl_getdomainname
+#  endif
+_GL_FUNCDECL_RPL (getdomainname, int, (char *name, size_t len)
+                                      _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (getdomainname, int, (char *name, size_t len));
+# else
+#  if !@HAVE_DECL_GETDOMAINNAME@
+_GL_FUNCDECL_SYS (getdomainname, int, (char *name, size_t len)
+                                      _GL_ARG_NONNULL ((1)));
+#  endif
+_GL_CXXALIAS_SYS (getdomainname, int, (char *name, size_t len));
+# endif
+_GL_CXXALIASWARN (getdomainname);
+#elif defined GNULIB_POSIXCHECK
+# undef getdomainname
+# if HAVE_RAW_DECL_GETDOMAINNAME
+_GL_WARN_ON_USE (getdomainname, "getdomainname is unportable - "
+                 "use gnulib module getdomainname for portability");
+# endif
+#endif
+
+
+#if @GNULIB_GETDTABLESIZE@
+/* Return the maximum number of file descriptors in the current process.
+   In POSIX, this is same as sysconf (_SC_OPEN_MAX).  */
+# if !@HAVE_GETDTABLESIZE@
+_GL_FUNCDECL_SYS (getdtablesize, int, (void));
+# endif
+_GL_CXXALIAS_SYS (getdtablesize, int, (void));
+_GL_CXXALIASWARN (getdtablesize);
+#elif defined GNULIB_POSIXCHECK
+# undef getdtablesize
+# if HAVE_RAW_DECL_GETDTABLESIZE
+_GL_WARN_ON_USE (getdtablesize, "getdtablesize is unportable - "
+                 "use gnulib module getdtablesize for portability");
+# endif
+#endif
+
+
+#if @GNULIB_GETGROUPS@
+/* Return the supplemental groups that the current process belongs to.
+   It is unspecified whether the effective group id is in the list.
+   If N is 0, return the group count; otherwise, N describes how many
+   entries are available in GROUPS.  Return -1 and set errno if N is
+   not 0 and not large enough.  Fails with ENOSYS on some systems.  */
+# if @REPLACE_GETGROUPS@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef getgroups
+#   define getgroups rpl_getgroups
+#  endif
+_GL_FUNCDECL_RPL (getgroups, int, (int n, gid_t *groups));
+_GL_CXXALIAS_RPL (getgroups, int, (int n, gid_t *groups));
+# else
+#  if !@HAVE_GETGROUPS@
+_GL_FUNCDECL_SYS (getgroups, int, (int n, gid_t *groups));
+#  endif
+_GL_CXXALIAS_SYS (getgroups, int, (int n, gid_t *groups));
+# endif
+_GL_CXXALIASWARN (getgroups);
+#elif defined GNULIB_POSIXCHECK
+# undef getgroups
+# if HAVE_RAW_DECL_GETGROUPS
+_GL_WARN_ON_USE (getgroups, "getgroups is unportable - "
+                 "use gnulib module getgroups for portability");
+# endif
+#endif
+
+
+#if @GNULIB_GETHOSTNAME@
+/* Return the standard host name of the machine.
+   WARNING! The host name may or may not be fully qualified.
+
+   Put up to LEN bytes of the host name into NAME.
+   Null terminate it if the name is shorter than LEN.
+   If the host name is longer than LEN, set errno = EINVAL and return -1.
+   Return 0 if successful, otherwise set errno and return -1.  */
+# if @UNISTD_H_HAVE_WINSOCK2_H@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef gethostname
+#   define gethostname rpl_gethostname
+#  endif
+_GL_FUNCDECL_RPL (gethostname, int, (char *name, size_t len)
+                                    _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (gethostname, int, (char *name, size_t len));
+# else
+#  if !@HAVE_GETHOSTNAME@
+_GL_FUNCDECL_SYS (gethostname, int, (char *name, size_t len)
+                                    _GL_ARG_NONNULL ((1)));
+#  endif
+/* Need to cast, because on Solaris 10 and OSF/1 5.1 systems, the second
+   parameter is
+                                                      int len.  */
+_GL_CXXALIAS_SYS_CAST (gethostname, int, (char *name, size_t len));
+# endif
+_GL_CXXALIASWARN (gethostname);
+#elif @UNISTD_H_HAVE_WINSOCK2_H@
+# undef gethostname
+# define gethostname gethostname_used_without_requesting_gnulib_module_gethostname
+#elif defined GNULIB_POSIXCHECK
+# undef gethostname
+# if HAVE_RAW_DECL_GETHOSTNAME
+_GL_WARN_ON_USE (gethostname, "gethostname is unportable - "
+                 "use gnulib module gethostname for portability");
+# endif
+#endif
+
+
+#if @GNULIB_GETLOGIN@
+/* Returns the user's login name, or NULL if it cannot be found.  Upon error,
+   returns NULL with errno set.
+
+   See <http://www.opengroup.org/susv3xsh/getlogin.html>.
+
+   Most programs don't need to use this function, because the information is
+   available through environment variables:
+     ${LOGNAME-$USER}        on Unix platforms,
+     $USERNAME               on native Windows platforms.
+ */
+# if !@HAVE_GETLOGIN@
+_GL_FUNCDECL_SYS (getlogin, char *, (void));
+# endif
+_GL_CXXALIAS_SYS (getlogin, char *, (void));
+_GL_CXXALIASWARN (getlogin);
+#elif defined GNULIB_POSIXCHECK
+# undef getlogin
+# if HAVE_RAW_DECL_GETLOGIN
+_GL_WARN_ON_USE (getlogin, "getlogin is unportable - "
+                 "use gnulib module getlogin for portability");
+# endif
+#endif
+
+
+#if @GNULIB_GETLOGIN_R@
+/* Copies the user's login name to NAME.
+   The array pointed to by NAME has room for SIZE bytes.
+
+   Returns 0 if successful.  Upon error, an error number is returned, or -1 in
+   the case that the login name cannot be found but no specific error is
+   provided (this case is hopefully rare but is left open by the POSIX spec).
+
+   See <http://www.opengroup.org/susv3xsh/getlogin.html>.
+
+   Most programs don't need to use this function, because the information is
+   available through environment variables:
+     ${LOGNAME-$USER}        on Unix platforms,
+     $USERNAME               on native Windows platforms.
+ */
+# if @REPLACE_GETLOGIN_R@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define getlogin_r rpl_getlogin_r
+#  endif
+_GL_FUNCDECL_RPL (getlogin_r, int, (char *name, size_t size)
+                                   _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (getlogin_r, int, (char *name, size_t size));
+# else
+#  if !@HAVE_DECL_GETLOGIN_R@
+_GL_FUNCDECL_SYS (getlogin_r, int, (char *name, size_t size)
+                                   _GL_ARG_NONNULL ((1)));
+#  endif
+/* Need to cast, because on Solaris 10 systems, the second argument is
+                                                     int size.  */
+_GL_CXXALIAS_SYS_CAST (getlogin_r, int, (char *name, size_t size));
+# endif
+_GL_CXXALIASWARN (getlogin_r);
+#elif defined GNULIB_POSIXCHECK
+# undef getlogin_r
+# if HAVE_RAW_DECL_GETLOGIN_R
+_GL_WARN_ON_USE (getlogin_r, "getlogin_r is unportable - "
+                 "use gnulib module getlogin_r for portability");
+# endif
+#endif
+
+
+#if @GNULIB_GETPAGESIZE@
+# if @REPLACE_GETPAGESIZE@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define getpagesize rpl_getpagesize
+#  endif
+_GL_FUNCDECL_RPL (getpagesize, int, (void));
+_GL_CXXALIAS_RPL (getpagesize, int, (void));
+# else
+#  if !@HAVE_GETPAGESIZE@
+#   if !defined getpagesize
+/* This is for POSIX systems.  */
+#    if !defined _gl_getpagesize && defined _SC_PAGESIZE
+#     if ! (defined __VMS && __VMS_VER < 70000000)
+#      define _gl_getpagesize() sysconf (_SC_PAGESIZE)
+#     endif
+#    endif
+/* This is for older VMS.  */
+#    if !defined _gl_getpagesize && defined __VMS
+#     ifdef __ALPHA
+#      define _gl_getpagesize() 8192
+#     else
+#      define _gl_getpagesize() 512
+#     endif
+#    endif
+/* This is for BeOS.  */
+#    if !defined _gl_getpagesize && @HAVE_OS_H@
+#     include <OS.h>
+#     if defined B_PAGE_SIZE
+#      define _gl_getpagesize() B_PAGE_SIZE
+#     endif
+#    endif
+/* This is for AmigaOS4.0.  */
+#    if !defined _gl_getpagesize && defined __amigaos4__
+#     define _gl_getpagesize() 2048
+#    endif
+/* This is for older Unix systems.  */
+#    if !defined _gl_getpagesize && @HAVE_SYS_PARAM_H@
+#     include <sys/param.h>
+#     ifdef EXEC_PAGESIZE
+#      define _gl_getpagesize() EXEC_PAGESIZE
+#     else
+#      ifdef NBPG
+#       ifndef CLSIZE
+#        define CLSIZE 1
+#       endif
+#       define _gl_getpagesize() (NBPG * CLSIZE)
+#      else
+#       ifdef NBPC
+#        define _gl_getpagesize() NBPC
+#       endif
+#      endif
+#     endif
+#    endif
+#    if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#     define getpagesize() _gl_getpagesize ()
+#    else
+#     if !GNULIB_defined_getpagesize_function
+static inline int
+getpagesize ()
+{
+  return _gl_getpagesize ();
+}
+#      define GNULIB_defined_getpagesize_function 1
+#     endif
+#    endif
+#   endif
+#  endif
+/* Need to cast, because on Cygwin 1.5.x systems, the return type is size_t.  */
+_GL_CXXALIAS_SYS_CAST (getpagesize, int, (void));
+# endif
+# if @HAVE_DECL_GETPAGESIZE@
+_GL_CXXALIASWARN (getpagesize);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef getpagesize
+# if HAVE_RAW_DECL_GETPAGESIZE
+_GL_WARN_ON_USE (getpagesize, "getpagesize is unportable - "
+                 "use gnulib module getpagesize for portability");
+# endif
+#endif
+
+
+#if @GNULIB_GETUSERSHELL@
+/* Return the next valid login shell on the system, or NULL when the end of
+   the list has been reached.  */
+# if !@HAVE_DECL_GETUSERSHELL@
+_GL_FUNCDECL_SYS (getusershell, char *, (void));
+# endif
+_GL_CXXALIAS_SYS (getusershell, char *, (void));
+_GL_CXXALIASWARN (getusershell);
+#elif defined GNULIB_POSIXCHECK
+# undef getusershell
+# if HAVE_RAW_DECL_GETUSERSHELL
+_GL_WARN_ON_USE (getusershell, "getusershell is unportable - "
+                 "use gnulib module getusershell for portability");
+# endif
+#endif
+
+#if @GNULIB_GETUSERSHELL@
+/* Rewind to pointer that is advanced at each getusershell() call.  */
+# if !@HAVE_DECL_GETUSERSHELL@
+_GL_FUNCDECL_SYS (setusershell, void, (void));
+# endif
+_GL_CXXALIAS_SYS (setusershell, void, (void));
+_GL_CXXALIASWARN (setusershell);
+#elif defined GNULIB_POSIXCHECK
+# undef setusershell
+# if HAVE_RAW_DECL_SETUSERSHELL
+_GL_WARN_ON_USE (setusershell, "setusershell is unportable - "
+                 "use gnulib module getusershell for portability");
+# endif
+#endif
+
+#if @GNULIB_GETUSERSHELL@
+/* Free the pointer that is advanced at each getusershell() call and
+   associated resources.  */
+# if !@HAVE_DECL_GETUSERSHELL@
+_GL_FUNCDECL_SYS (endusershell, void, (void));
+# endif
+_GL_CXXALIAS_SYS (endusershell, void, (void));
+_GL_CXXALIASWARN (endusershell);
+#elif defined GNULIB_POSIXCHECK
+# undef endusershell
+# if HAVE_RAW_DECL_ENDUSERSHELL
+_GL_WARN_ON_USE (endusershell, "endusershell is unportable - "
+                 "use gnulib module getusershell for portability");
+# endif
+#endif
+
+
+#if @GNULIB_GROUP_MEMBER@
+/* Determine whether group id is in calling user's group list.  */
+# if !@HAVE_GROUP_MEMBER@
+_GL_FUNCDECL_SYS (group_member, int, (gid_t gid));
+# endif
+_GL_CXXALIAS_SYS (group_member, int, (gid_t gid));
+_GL_CXXALIASWARN (group_member);
+#elif defined GNULIB_POSIXCHECK
+# undef group_member
+# if HAVE_RAW_DECL_GROUP_MEMBER
+_GL_WARN_ON_USE (group_member, "group_member is unportable - "
+                 "use gnulib module group-member for portability");
+# endif
+#endif
+
+
+#if @GNULIB_LCHOWN@
+/* Change the owner of FILE to UID (if UID is not -1) and the group of FILE
+   to GID (if GID is not -1).  Do not follow symbolic links.
+   Return 0 if successful, otherwise -1 and errno set.
+   See the POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/lchown.html>.  */
+# if @REPLACE_LCHOWN@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef lchown
+#   define lchown rpl_lchown
+#  endif
+_GL_FUNCDECL_RPL (lchown, int, (char const *file, uid_t owner, gid_t group)
+                               _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (lchown, int, (char const *file, uid_t owner, gid_t group));
+# else
+#  if !@HAVE_LCHOWN@
+_GL_FUNCDECL_SYS (lchown, int, (char const *file, uid_t owner, gid_t group)
+                               _GL_ARG_NONNULL ((1)));
+#  endif
+_GL_CXXALIAS_SYS (lchown, int, (char const *file, uid_t owner, gid_t group));
+# endif
+_GL_CXXALIASWARN (lchown);
+#elif defined GNULIB_POSIXCHECK
+# undef lchown
+# if HAVE_RAW_DECL_LCHOWN
+_GL_WARN_ON_USE (lchown, "lchown is unportable to pre-POSIX.1-2001 systems - "
+                 "use gnulib module lchown for portability");
+# endif
+#endif
+
+
+#if @GNULIB_LINK@
+/* Create a new hard link for an existing file.
+   Return 0 if successful, otherwise -1 and errno set.
+   See POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/link.html>.  */
+# if @REPLACE_LINK@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define link rpl_link
+#  endif
+_GL_FUNCDECL_RPL (link, int, (const char *path1, const char *path2)
+                             _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (link, int, (const char *path1, const char *path2));
+# else
+#  if !@HAVE_LINK@
+_GL_FUNCDECL_SYS (link, int, (const char *path1, const char *path2)
+                             _GL_ARG_NONNULL ((1, 2)));
+#  endif
+_GL_CXXALIAS_SYS (link, int, (const char *path1, const char *path2));
+# endif
+_GL_CXXALIASWARN (link);
+#elif defined GNULIB_POSIXCHECK
+# undef link
+# if HAVE_RAW_DECL_LINK
+_GL_WARN_ON_USE (link, "link is unportable - "
+                 "use gnulib module link for portability");
+# endif
+#endif
+
+
+#if @GNULIB_LINKAT@
+/* Create a new hard link for an existing file, relative to two
+   directories.  FLAG controls whether symlinks are followed.
+   Return 0 if successful, otherwise -1 and errno set.  */
+# if @REPLACE_LINKAT@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef linkat
+#   define linkat rpl_linkat
+#  endif
+_GL_FUNCDECL_RPL (linkat, int,
+                  (int fd1, const char *path1, int fd2, const char *path2,
+                   int flag)
+                  _GL_ARG_NONNULL ((2, 4)));
+_GL_CXXALIAS_RPL (linkat, int,
+                  (int fd1, const char *path1, int fd2, const char *path2,
+                   int flag));
+# else
+#  if !@HAVE_LINKAT@
+_GL_FUNCDECL_SYS (linkat, int,
+                  (int fd1, const char *path1, int fd2, const char *path2,
+                   int flag)
+                  _GL_ARG_NONNULL ((2, 4)));
+#  endif
+_GL_CXXALIAS_SYS (linkat, int,
+                  (int fd1, const char *path1, int fd2, const char *path2,
+                   int flag));
+# endif
+_GL_CXXALIASWARN (linkat);
+#elif defined GNULIB_POSIXCHECK
+# undef linkat
+# if HAVE_RAW_DECL_LINKAT
+_GL_WARN_ON_USE (linkat, "linkat is unportable - "
+                 "use gnulib module linkat for portability");
+# endif
+#endif
+
+
+#if @GNULIB_LSEEK@
+/* Set the offset of FD relative to SEEK_SET, SEEK_CUR, or SEEK_END.
+   Return the new offset if successful, otherwise -1 and errno set.
+   See the POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/lseek.html>.  */
+# if @REPLACE_LSEEK@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define lseek rpl_lseek
+#  endif
+_GL_FUNCDECL_RPL (lseek, off_t, (int fd, off_t offset, int whence));
+_GL_CXXALIAS_RPL (lseek, off_t, (int fd, off_t offset, int whence));
+# else
+_GL_CXXALIAS_SYS (lseek, off_t, (int fd, off_t offset, int whence));
+# endif
+_GL_CXXALIASWARN (lseek);
+#elif defined GNULIB_POSIXCHECK
+# undef lseek
+# if HAVE_RAW_DECL_LSEEK
+_GL_WARN_ON_USE (lseek, "lseek does not fail with ESPIPE on pipes on some "
+                 "systems - use gnulib module lseek for portability");
+# endif
+#endif
+
+
+#if @GNULIB_PIPE@
+/* Create a pipe, defaulting to O_BINARY mode.
+   Store the read-end as fd[0] and the write-end as fd[1].
+   Return 0 upon success, or -1 with errno set upon failure.  */
+# if !@HAVE_PIPE@
+_GL_FUNCDECL_SYS (pipe, int, (int fd[2]) _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pipe, int, (int fd[2]));
+_GL_CXXALIASWARN (pipe);
+#elif defined GNULIB_POSIXCHECK
+# undef pipe
+# if HAVE_RAW_DECL_PIPE
+_GL_WARN_ON_USE (pipe, "pipe is unportable - "
+                 "use gnulib module pipe-posix for portability");
+# endif
+#endif
+
+
+#if @GNULIB_PIPE2@
+/* Create a pipe, applying the given flags when opening the read-end of the
+   pipe and the write-end of the pipe.
+   The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>)
+   and O_TEXT, O_BINARY (defined in "binary-io.h").
+   Store the read-end as fd[0] and the write-end as fd[1].
+   Return 0 upon success, or -1 with errno set upon failure.
+   See also the Linux man page at
+   <http://www.kernel.org/doc/man-pages/online/pages/man2/pipe2.2.html>.  */
+# if @HAVE_PIPE2@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define pipe2 rpl_pipe2
+#  endif
+_GL_FUNCDECL_RPL (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (pipe2, int, (int fd[2], int flags));
+# else
+_GL_FUNCDECL_SYS (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_SYS (pipe2, int, (int fd[2], int flags));
+# endif
+_GL_CXXALIASWARN (pipe2);
+#elif defined GNULIB_POSIXCHECK
+# undef pipe2
+# if HAVE_RAW_DECL_PIPE2
+_GL_WARN_ON_USE (pipe2, "pipe2 is unportable - "
+                 "use gnulib module pipe2 for portability");
+# endif
+#endif
+
+
+#if @GNULIB_PREAD@
+/* Read at most BUFSIZE bytes from FD into BUF, starting at OFFSET.
+   Return the number of bytes placed into BUF if successful, otherwise
+   set errno and return -1.  0 indicates EOF.  See the POSIX:2001
+   specification <http://www.opengroup.org/susv3xsh/pread.html>.  */
+# if @REPLACE_PREAD@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define pread rpl_pread
+#  endif
+_GL_FUNCDECL_RPL (pread, ssize_t,
+                  (int fd, void *buf, size_t bufsize, off_t offset)
+                  _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (pread, ssize_t,
+                  (int fd, void *buf, size_t bufsize, off_t offset));
+# else
+#  if !@HAVE_PREAD@
+_GL_FUNCDECL_SYS (pread, ssize_t,
+                  (int fd, void *buf, size_t bufsize, off_t offset)
+                  _GL_ARG_NONNULL ((2)));
+#  endif
+_GL_CXXALIAS_SYS (pread, ssize_t,
+                  (int fd, void *buf, size_t bufsize, off_t offset));
+# endif
+_GL_CXXALIASWARN (pread);
+#elif defined GNULIB_POSIXCHECK
+# undef pread
+# if HAVE_RAW_DECL_PREAD
+_GL_WARN_ON_USE (pread, "pread is unportable - "
+                 "use gnulib module pread for portability");
+# endif
+#endif
+
+
+#if @GNULIB_PWRITE@
+/* Write at most BUFSIZE bytes from BUF into FD, starting at OFFSET.
+   Return the number of bytes written if successful, otherwise
+   set errno and return -1.  0 indicates nothing written.  See the
+   POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/pwrite.html>.  */
+# if @REPLACE_PWRITE@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define pwrite rpl_pwrite
+#  endif
+_GL_FUNCDECL_RPL (pwrite, ssize_t,
+                  (int fd, const void *buf, size_t bufsize, off_t offset)
+                  _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (pwrite, ssize_t,
+                  (int fd, const void *buf, size_t bufsize, off_t offset));
+# else
+#  if !@HAVE_PWRITE@
+_GL_FUNCDECL_SYS (pwrite, ssize_t,
+                  (int fd, const void *buf, size_t bufsize, off_t offset)
+                  _GL_ARG_NONNULL ((2)));
+#  endif
+_GL_CXXALIAS_SYS (pwrite, ssize_t,
+                  (int fd, const void *buf, size_t bufsize, off_t offset));
+# endif
+_GL_CXXALIASWARN (pwrite);
+#elif defined GNULIB_POSIXCHECK
+# undef pwrite
+# if HAVE_RAW_DECL_PWRITE
+_GL_WARN_ON_USE (pwrite, "pwrite is unportable - "
+                 "use gnulib module pwrite for portability");
+# endif
+#endif
+
+
+#if @GNULIB_READ@
+/* Read up to COUNT bytes from file descriptor FD into the buffer starting
+   at BUF.  See the POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/read.html>.  */
+# if @REPLACE_READ@ && @GNULIB_UNISTD_H_NONBLOCKING@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef read
+#   define read rpl_read
+#  endif
+_GL_FUNCDECL_RPL (read, ssize_t, (int fd, void *buf, size_t count)
+                                 _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (read, ssize_t, (int fd, void *buf, size_t count));
+# else
+/* Need to cast, because on mingw, the third parameter is
+                                                          unsigned int count
+   and the return type is 'int'.  */
+_GL_CXXALIAS_SYS_CAST (read, ssize_t, (int fd, void *buf, size_t count));
+# endif
+_GL_CXXALIASWARN (read);
+#endif
+
+
+#if @GNULIB_READLINK@
+/* Read the contents of the symbolic link FILE and place the first BUFSIZE
+   bytes of it into BUF.  Return the number of bytes placed into BUF if
+   successful, otherwise -1 and errno set.
+   See the POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/readlink.html>.  */
+# if @REPLACE_READLINK@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define readlink rpl_readlink
+#  endif
+_GL_FUNCDECL_RPL (readlink, ssize_t,
+                  (const char *file, char *buf, size_t bufsize)
+                  _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (readlink, ssize_t,
+                  (const char *file, char *buf, size_t bufsize));
+# else
+#  if !@HAVE_READLINK@
+_GL_FUNCDECL_SYS (readlink, ssize_t,
+                  (const char *file, char *buf, size_t bufsize)
+                  _GL_ARG_NONNULL ((1, 2)));
+#  endif
+_GL_CXXALIAS_SYS (readlink, ssize_t,
+                  (const char *file, char *buf, size_t bufsize));
+# endif
+_GL_CXXALIASWARN (readlink);
+#elif defined GNULIB_POSIXCHECK
+# undef readlink
+# if HAVE_RAW_DECL_READLINK
+_GL_WARN_ON_USE (readlink, "readlink is unportable - "
+                 "use gnulib module readlink for portability");
+# endif
+#endif
+
+
+#if @GNULIB_READLINKAT@
+# if !@HAVE_READLINKAT@
+_GL_FUNCDECL_SYS (readlinkat, ssize_t,
+                  (int fd, char const *file, char *buf, size_t len)
+                  _GL_ARG_NONNULL ((2, 3)));
+# endif
+_GL_CXXALIAS_SYS (readlinkat, ssize_t,
+                  (int fd, char const *file, char *buf, size_t len));
+_GL_CXXALIASWARN (readlinkat);
+#elif defined GNULIB_POSIXCHECK
+# undef readlinkat
+# if HAVE_RAW_DECL_READLINKAT
+_GL_WARN_ON_USE (readlinkat, "readlinkat is not portable - "
+                 "use gnulib module readlinkat for portability");
+# endif
+#endif
+
+
+#if @GNULIB_RMDIR@
+/* Remove the directory DIR.  */
+# if @REPLACE_RMDIR@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define rmdir rpl_rmdir
+#  endif
+_GL_FUNCDECL_RPL (rmdir, int, (char const *name) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (rmdir, int, (char const *name));
+# else
+_GL_CXXALIAS_SYS (rmdir, int, (char const *name));
+# endif
+_GL_CXXALIASWARN (rmdir);
+#elif defined GNULIB_POSIXCHECK
+# undef rmdir
+# if HAVE_RAW_DECL_RMDIR
+_GL_WARN_ON_USE (rmdir, "rmdir is unportable - "
+                 "use gnulib module rmdir for portability");
+# endif
+#endif
+
+
+#if @GNULIB_SLEEP@
+/* Pause the execution of the current thread for N seconds.
+   Returns the number of seconds left to sleep.
+   See the POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/sleep.html>.  */
+# if @REPLACE_SLEEP@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef sleep
+#   define sleep rpl_sleep
+#  endif
+_GL_FUNCDECL_RPL (sleep, unsigned int, (unsigned int n));
+_GL_CXXALIAS_RPL (sleep, unsigned int, (unsigned int n));
+# else
+#  if !@HAVE_SLEEP@
+_GL_FUNCDECL_SYS (sleep, unsigned int, (unsigned int n));
+#  endif
+_GL_CXXALIAS_SYS (sleep, unsigned int, (unsigned int n));
+# endif
+_GL_CXXALIASWARN (sleep);
+#elif defined GNULIB_POSIXCHECK
+# undef sleep
+# if HAVE_RAW_DECL_SLEEP
+_GL_WARN_ON_USE (sleep, "sleep is unportable - "
+                 "use gnulib module sleep for portability");
+# endif
+#endif
+
+
+#if @GNULIB_SYMLINK@
+# if @REPLACE_SYMLINK@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef symlink
+#   define symlink rpl_symlink
+#  endif
+_GL_FUNCDECL_RPL (symlink, int, (char const *contents, char const *file)
+                                _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (symlink, int, (char const *contents, char const *file));
+# else
+#  if !@HAVE_SYMLINK@
+_GL_FUNCDECL_SYS (symlink, int, (char const *contents, char const *file)
+                                _GL_ARG_NONNULL ((1, 2)));
+#  endif
+_GL_CXXALIAS_SYS (symlink, int, (char const *contents, char const *file));
+# endif
+_GL_CXXALIASWARN (symlink);
+#elif defined GNULIB_POSIXCHECK
+# undef symlink
+# if HAVE_RAW_DECL_SYMLINK
+_GL_WARN_ON_USE (symlink, "symlink is not portable - "
+                 "use gnulib module symlink for portability");
+# endif
+#endif
+
+
+#if @GNULIB_SYMLINKAT@
+# if !@HAVE_SYMLINKAT@
+_GL_FUNCDECL_SYS (symlinkat, int,
+                  (char const *contents, int fd, char const *file)
+                  _GL_ARG_NONNULL ((1, 3)));
+# endif
+_GL_CXXALIAS_SYS (symlinkat, int,
+                  (char const *contents, int fd, char const *file));
+_GL_CXXALIASWARN (symlinkat);
+#elif defined GNULIB_POSIXCHECK
+# undef symlinkat
+# if HAVE_RAW_DECL_SYMLINKAT
+_GL_WARN_ON_USE (symlinkat, "symlinkat is not portable - "
+                 "use gnulib module symlinkat for portability");
+# endif
+#endif
+
+
+#if @GNULIB_TTYNAME_R@
+/* Store at most BUFLEN characters of the pathname of the terminal FD is
+   open on in BUF.  Return 0 on success, otherwise an error number.  */
+# if @REPLACE_TTYNAME_R@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef ttyname_r
+#   define ttyname_r rpl_ttyname_r
+#  endif
+_GL_FUNCDECL_RPL (ttyname_r, int,
+                  (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (ttyname_r, int,
+                  (int fd, char *buf, size_t buflen));
+# else
+#  if !@HAVE_DECL_TTYNAME_R@
+_GL_FUNCDECL_SYS (ttyname_r, int,
+                  (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2)));
+#  endif
+_GL_CXXALIAS_SYS (ttyname_r, int,
+                  (int fd, char *buf, size_t buflen));
+# endif
+_GL_CXXALIASWARN (ttyname_r);
+#elif defined GNULIB_POSIXCHECK
+# undef ttyname_r
+# if HAVE_RAW_DECL_TTYNAME_R
+_GL_WARN_ON_USE (ttyname_r, "ttyname_r is not portable - "
+                 "use gnulib module ttyname_r for portability");
+# endif
+#endif
+
+
+#if @GNULIB_UNLINK@
+# if @REPLACE_UNLINK@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef unlink
+#   define unlink rpl_unlink
+#  endif
+_GL_FUNCDECL_RPL (unlink, int, (char const *file) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (unlink, int, (char const *file));
+# else
+_GL_CXXALIAS_SYS (unlink, int, (char const *file));
+# endif
+_GL_CXXALIASWARN (unlink);
+#elif defined GNULIB_POSIXCHECK
+# undef unlink
+# if HAVE_RAW_DECL_UNLINK
+_GL_WARN_ON_USE (unlink, "unlink is not portable - "
+                 "use gnulib module unlink for portability");
+# endif
+#endif
+
+
+#if @GNULIB_UNLINKAT@
+# if @REPLACE_UNLINKAT@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef unlinkat
+#   define unlinkat rpl_unlinkat
+#  endif
+_GL_FUNCDECL_RPL (unlinkat, int, (int fd, char const *file, int flag)
+                                 _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (unlinkat, int, (int fd, char const *file, int flag));
+# else
+#  if !@HAVE_UNLINKAT@
+_GL_FUNCDECL_SYS (unlinkat, int, (int fd, char const *file, int flag)
+                                 _GL_ARG_NONNULL ((2)));
+#  endif
+_GL_CXXALIAS_SYS (unlinkat, int, (int fd, char const *file, int flag));
+# endif
+_GL_CXXALIASWARN (unlinkat);
+#elif defined GNULIB_POSIXCHECK
+# undef unlinkat
+# if HAVE_RAW_DECL_UNLINKAT
+_GL_WARN_ON_USE (unlinkat, "unlinkat is not portable - "
+                 "use gnulib module openat for portability");
+# endif
+#endif
+
+
+#if @GNULIB_USLEEP@
+/* Pause the execution of the current thread for N microseconds.
+   Returns 0 on completion, or -1 on range error.
+   See the POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/sleep.html>.  */
+# if @REPLACE_USLEEP@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef usleep
+#   define usleep rpl_usleep
+#  endif
+_GL_FUNCDECL_RPL (usleep, int, (useconds_t n));
+_GL_CXXALIAS_RPL (usleep, int, (useconds_t n));
+# else
+#  if !@HAVE_USLEEP@
+_GL_FUNCDECL_SYS (usleep, int, (useconds_t n));
+#  endif
+_GL_CXXALIAS_SYS (usleep, int, (useconds_t n));
+# endif
+_GL_CXXALIASWARN (usleep);
+#elif defined GNULIB_POSIXCHECK
+# undef usleep
+# if HAVE_RAW_DECL_USLEEP
+_GL_WARN_ON_USE (usleep, "usleep is unportable - "
+                 "use gnulib module usleep for portability");
+# endif
+#endif
+
+
+#if @GNULIB_WRITE@
+/* Write up to COUNT bytes starting at BUF to file descriptor FD.
+   See the POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/write.html>.  */
+# if @REPLACE_WRITE@ && (@GNULIB_UNISTD_H_NONBLOCKING@ || @GNULIB_UNISTD_H_SIGPIPE@)
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef write
+#   define write rpl_write
+#  endif
+_GL_FUNCDECL_RPL (write, ssize_t, (int fd, const void *buf, size_t count)
+                                  _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (write, ssize_t, (int fd, const void *buf, size_t count));
+# else
+/* Need to cast, because on mingw, the third parameter is
+                                                             unsigned int count
+   and the return type is 'int'.  */
+_GL_CXXALIAS_SYS_CAST (write, ssize_t, (int fd, const void *buf, size_t count));
+# endif
+_GL_CXXALIASWARN (write);
+#endif
+
+
+#endif /* _@GUARD_PREFIX@_UNISTD_H */
+#endif /* _@GUARD_PREFIX@_UNISTD_H */
diff --git a/lib/unlink.c b/lib/unlink.c
new file mode 100644 (file)
index 0000000..677d584
--- /dev/null
@@ -0,0 +1,97 @@
+/* Work around unlink bugs.
+
+   Copyright (C) 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+#include <unistd.h>
+
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/stat.h>
+
+#include "dosname.h"
+
+#undef unlink
+
+/* Remove file NAME.
+   Return 0 if successful, -1 if not.  */
+
+int
+rpl_unlink (char const *name)
+{
+  /* Work around Solaris 9 bug where unlink("file/") succeeds.  */
+  size_t len = strlen (name);
+  int result = 0;
+  if (len && ISSLASH (name[len - 1]))
+    {
+      /* We can't unlink(2) something if it doesn't exist.  If it does
+         exist, then it resolved to a directory, due to the trailing
+         slash, and POSIX requires that the unlink attempt to remove
+         that directory (which would leave the symlink dangling).
+         Unfortunately, Solaris 9 is one of the platforms where the
+         root user can unlink directories, and we don't want to
+         cripple this behavior on real directories, even if it is
+         seldom needed (at any rate, it's nicer to let coreutils'
+         unlink(1) give the correct errno for non-root users).  But we
+         don't know whether name was an actual directory, or a symlink
+         to a directory; and due to the bug of ignoring trailing
+         slash, Solaris 9 would end up successfully unlinking the
+         symlink instead of the directory.  Technically, we could use
+         realpath to find the canonical directory name to attempt
+         deletion on.  But that is a lot of work for a corner case; so
+         we instead just use an lstat on the shortened name, and
+         reject symlinks with trailing slashes.  The root user of
+         unlink(1) will just have to live with the rule that they
+         can't delete a directory via a symlink.  */
+      struct stat st;
+      result = lstat (name, &st);
+      if (result == 0)
+        {
+          /* Trailing NUL will overwrite the trailing slash.  */
+          char *short_name = malloc (len);
+          if (!short_name)
+            {
+              errno = EPERM;
+              return -1;
+            }
+          memcpy (short_name, name, len);
+          while (len && ISSLASH (short_name[len - 1]))
+            short_name[--len] = '\0';
+          if (len && (lstat (short_name, &st) || S_ISLNK (st.st_mode)))
+            {
+              free (short_name);
+              errno = EPERM;
+              return -1;
+            }
+          free (short_name);
+        }
+    }
+  if (!result)
+    {
+#if UNLINK_PARENT_BUG
+      if (len >= 2 && name[len - 1] == '.' && name[len - 2] == '.'
+          && (len == 2 || ISSLASH (name[len - 3])))
+        {
+          errno = EISDIR; /* could also use EPERM */
+          return -1;
+        }
+#endif
+      result = unlink (name);
+    }
+  return result;
+}
diff --git a/lib/usleep.c b/lib/usleep.c
new file mode 100644 (file)
index 0000000..4ebefe0
--- /dev/null
@@ -0,0 +1,58 @@
+/* Pausing execution of the current thread.
+   Copyright (C) 2009-2011 Free Software Foundation, Inc.
+   Written by Eric Blake <ebb9@byu.net>, 2009.
+
+   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 <http://www.gnu.org/licenses/>.  */
+
+/* This file is _intentionally_ light-weight.  Rather than using
+   select or nanosleep, both of which drag in external libraries on
+   some platforms, this merely rounds up to the nearest second if
+   usleep() does not exist.  If sub-second resolution is important,
+   then use a more powerful interface to begin with.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include <unistd.h>
+
+#include <errno.h>
+
+#ifndef HAVE_USLEEP
+# define HAVE_USLEEP 0
+#endif
+
+/* Sleep for MICRO microseconds, which can be greater than 1 second.
+   Return -1 and set errno to EINVAL on range error (about 4295
+   seconds), or 0 on success.  Interaction with SIGALARM is
+   unspecified.  */
+
+int
+usleep (useconds_t micro)
+{
+  unsigned int seconds = micro / 1000000;
+  if (sizeof seconds < sizeof micro && micro / 1000000 != seconds)
+    {
+      errno = EINVAL;
+      return -1;
+    }
+  if (!HAVE_USLEEP && micro % 1000000)
+    seconds++;
+  while ((seconds = sleep (seconds)) != 0);
+
+#undef usleep
+#if !HAVE_USLEEP
+# define usleep(x) 0
+#endif
+  return usleep (micro % 1000000);
+}
diff --git a/lib/verify.h b/lib/verify.h
new file mode 100644 (file)
index 0000000..c6d30a3
--- /dev/null
@@ -0,0 +1,235 @@
+/* Compile-time assert-like macros.
+
+   Copyright (C) 2005-2006, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+/* Written by Paul Eggert, Bruno Haible, and Jim Meyering.  */
+
+#ifndef _GL_VERIFY_H
+# define _GL_VERIFY_H
+
+
+/* Define _GL_HAVE__STATIC_ASSERT to 1 if _Static_assert works as per the
+   C1X draft N1548 section 6.7.10.  This is supported by GCC 4.6.0 and
+   later, in C mode, and its use here generates easier-to-read diagnostics
+   when verify (R) fails.
+
+   Define _GL_HAVE_STATIC_ASSERT to 1 if static_assert works as per the
+   C++0X draft N3242 section 7.(4).
+   This will likely be supported by future GCC versions, in C++ mode.
+
+   Use this only with GCC.  If we were willing to slow 'configure'
+   down we could also use it with other compilers, but since this
+   affects only the quality of diagnostics, why bother?  */
+# if (4 < __GNUC__ || (__GNUC__ == 4 && 6 <= __GNUC_MINOR__)) && !defined __cplusplus
+#  define _GL_HAVE__STATIC_ASSERT 1
+# endif
+/* The condition (99 < __GNUC__) is temporary, until we know about the
+   first G++ release that supports static_assert.  */
+# if (99 < __GNUC__) && defined __cplusplus
+#  define _GL_HAVE_STATIC_ASSERT 1
+# endif
+
+/* Each of these macros verifies that its argument R is nonzero.  To
+   be portable, R should be an integer constant expression.  Unlike
+   assert (R), there is no run-time overhead.
+
+   If _Static_assert works, verify (R) uses it directly.  Similarly,
+   _GL_VERIFY_TRUE works by packaging a _Static_assert inside a struct
+   that is an operand of sizeof.
+
+   The code below uses several ideas for C++ compilers, and for C
+   compilers that do not support _Static_assert:
+
+   * The first step is ((R) ? 1 : -1).  Given an expression R, of
+     integral or boolean or floating-point type, this yields an
+     expression of integral type, whose value is later verified to be
+     constant and nonnegative.
+
+   * Next this expression W is wrapped in a type
+     struct _gl_verify_type {
+       unsigned int _gl_verify_error_if_negative: W;
+     }.
+     If W is negative, this yields a compile-time error.  No compiler can
+     deal with a bit-field of negative size.
+
+     One might think that an array size check would have the same
+     effect, that is, that the type struct { unsigned int dummy[W]; }
+     would work as well.  However, inside a function, some compilers
+     (such as C++ compilers and GNU C) allow local parameters and
+     variables inside array size expressions.  With these compilers,
+     an array size check would not properly diagnose this misuse of
+     the verify macro:
+
+       void function (int n) { verify (n < 0); }
+
+   * For the verify macro, the struct _gl_verify_type will need to
+     somehow be embedded into a declaration.  To be portable, this
+     declaration must declare an object, a constant, a function, or a
+     typedef name.  If the declared entity uses the type directly,
+     such as in
+
+       struct dummy {...};
+       typedef struct {...} dummy;
+       extern struct {...} *dummy;
+       extern void dummy (struct {...} *);
+       extern struct {...} *dummy (void);
+
+     two uses of the verify macro would yield colliding declarations
+     if the entity names are not disambiguated.  A workaround is to
+     attach the current line number to the entity name:
+
+       #define _GL_CONCAT0(x, y) x##y
+       #define _GL_CONCAT(x, y) _GL_CONCAT0 (x, y)
+       extern struct {...} * _GL_CONCAT (dummy, __LINE__);
+
+     But this has the problem that two invocations of verify from
+     within the same macro would collide, since the __LINE__ value
+     would be the same for both invocations.  (The GCC __COUNTER__
+     macro solves this problem, but is not portable.)
+
+     A solution is to use the sizeof operator.  It yields a number,
+     getting rid of the identity of the type.  Declarations like
+
+       extern int dummy [sizeof (struct {...})];
+       extern void dummy (int [sizeof (struct {...})]);
+       extern int (*dummy (void)) [sizeof (struct {...})];
+
+     can be repeated.
+
+   * Should the implementation use a named struct or an unnamed struct?
+     Which of the following alternatives can be used?
+
+       extern int dummy [sizeof (struct {...})];
+       extern int dummy [sizeof (struct _gl_verify_type {...})];
+       extern void dummy (int [sizeof (struct {...})]);
+       extern void dummy (int [sizeof (struct _gl_verify_type {...})]);
+       extern int (*dummy (void)) [sizeof (struct {...})];
+       extern int (*dummy (void)) [sizeof (struct _gl_verify_type {...})];
+
+     In the second and sixth case, the struct type is exported to the
+     outer scope; two such declarations therefore collide.  GCC warns
+     about the first, third, and fourth cases.  So the only remaining
+     possibility is the fifth case:
+
+       extern int (*dummy (void)) [sizeof (struct {...})];
+
+   * GCC warns about duplicate declarations of the dummy function if
+     -Wredundant_decls is used.  GCC 4.3 and later have a builtin
+     __COUNTER__ macro that can let us generate unique identifiers for
+     each dummy function, to suppress this warning.
+
+   * This implementation exploits the fact that older versions of GCC,
+     which do not support _Static_assert, also do not warn about the
+     last declaration mentioned above.
+
+   * In C++, any struct definition inside sizeof is invalid.
+     Use a template type to work around the problem.  */
+
+/* Concatenate two preprocessor tokens.  */
+# define _GL_CONCAT(x, y) _GL_CONCAT0 (x, y)
+# define _GL_CONCAT0(x, y) x##y
+
+/* _GL_COUNTER is an integer, preferably one that changes each time we
+   use it.  Use __COUNTER__ if it works, falling back on __LINE__
+   otherwise.  __LINE__ isn't perfect, but it's better than a
+   constant.  */
+# if defined __COUNTER__ && __COUNTER__ != __COUNTER__
+#  define _GL_COUNTER __COUNTER__
+# else
+#  define _GL_COUNTER __LINE__
+# endif
+
+/* Generate a symbol with the given prefix, making it unique if
+   possible.  */
+# define _GL_GENSYM(prefix) _GL_CONCAT (prefix, _GL_COUNTER)
+
+/* Verify requirement R at compile-time, as an integer constant expression
+   that returns 1.  If R is false, fail at compile-time, preferably
+   with a diagnostic that includes the string-literal DIAGNOSTIC.  */
+
+# define _GL_VERIFY_TRUE(R, DIAGNOSTIC) \
+    (!!sizeof (_GL_VERIFY_TYPE (R, DIAGNOSTIC)))
+
+# ifdef __cplusplus
+#  if !GNULIB_defined_struct__gl_verify_type
+template <int w>
+  struct _gl_verify_type {
+    unsigned int _gl_verify_error_if_negative: w;
+  };
+#   define GNULIB_defined_struct__gl_verify_type 1
+#  endif
+#  define _GL_VERIFY_TYPE(R, DIAGNOSTIC) \
+    _gl_verify_type<(R) ? 1 : -1>
+# elif defined _GL_HAVE__STATIC_ASSERT
+#  define _GL_VERIFY_TYPE(R, DIAGNOSTIC) \
+     struct {                                   \
+       _Static_assert (R, DIAGNOSTIC);          \
+       int _gl_dummy;                          \
+     }
+# else
+#  define _GL_VERIFY_TYPE(R, DIAGNOSTIC) \
+     struct { unsigned int _gl_verify_error_if_negative: (R) ? 1 : -1; }
+# endif
+
+/* Verify requirement R at compile-time, as a declaration without a
+   trailing ';'.  If R is false, fail at compile-time, preferably
+   with a diagnostic that includes the string-literal DIAGNOSTIC.
+
+   Unfortunately, unlike C1X, this implementation must appear as an
+   ordinary declaration, and cannot appear inside struct { ... }.  */
+
+# ifdef _GL_HAVE__STATIC_ASSERT
+#  define _GL_VERIFY _Static_assert
+# else
+#  define _GL_VERIFY(R, DIAGNOSTIC)                                   \
+     extern int (*_GL_GENSYM (_gl_verify_function) (void))            \
+       [_GL_VERIFY_TRUE (R, DIAGNOSTIC)]
+# endif
+
+/* _GL_STATIC_ASSERT_H is defined if this code is copied into assert.h.  */
+# ifdef _GL_STATIC_ASSERT_H
+#  if !defined _GL_HAVE__STATIC_ASSERT && !defined _Static_assert
+#   define _Static_assert(R, DIAGNOSTIC) _GL_VERIFY (R, DIAGNOSTIC)
+#  endif
+#  if !defined _GL_HAVE_STATIC_ASSERT && !defined static_assert
+#   define static_assert _Static_assert /* Draft C1X requires this #define.  */
+#  endif
+# endif
+
+/* @assert.h omit start@  */
+
+/* Each of these macros verifies that its argument R is nonzero.  To
+   be portable, R should be an integer constant expression.  Unlike
+   assert (R), there is no run-time overhead.
+
+   There are two macros, since no single macro can be used in all
+   contexts in C.  verify_true (R) is for scalar contexts, including
+   integer constant expression contexts.  verify (R) is for declaration
+   contexts, e.g., the top level.  */
+
+/* Verify requirement R at compile-time, as an integer constant expression.
+   Return 1.  */
+
+# define verify_true(R) _GL_VERIFY_TRUE (R, "verify_true (" #R ")")
+
+/* Verify requirement R at compile-time, as a declaration without a
+   trailing ';'.  */
+
+# define verify(R) _GL_VERIFY (R, "verify (" #R ")")
+
+/* @assert.h omit end@  */
+
+#endif
diff --git a/lib/version-etc-fsf.c b/lib/version-etc-fsf.c
new file mode 100644 (file)
index 0000000..c821583
--- /dev/null
@@ -0,0 +1,30 @@
+/* Variable with FSF copyright information, for version-etc.
+   Copyright (C) 1999-2006, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+/* Written by Jim Meyering. */
+
+#include <config.h>
+
+/* Specification.  */
+#include "version-etc.h"
+
+/* Default copyright goes to the FSF. */
+
+const char version_etc_copyright[] =
+  /* Do *not* mark this string for translation.  %s is a copyright
+     symbol suitable for this locale, and %d is the copyright
+     year.  */
+  "Copyright %s %d Free Software Foundation, Inc.";
diff --git a/lib/version-etc.c b/lib/version-etc.c
new file mode 100644 (file)
index 0000000..b8d4724
--- /dev/null
@@ -0,0 +1,258 @@
+/* Print --version and bug-reporting information in a consistent format.
+   Copyright (C) 1999-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+/* Written by Jim Meyering. */
+
+#include <config.h>
+
+/* Specification.  */
+#include "version-etc.h"
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#if USE_UNLOCKED_IO
+# include "unlocked-io.h"
+#endif
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
+/* If you use AM_INIT_AUTOMAKE's no-define option,
+   PACKAGE is not defined.  Use PACKAGE_TARNAME instead.  */
+#if ! defined PACKAGE && defined PACKAGE_TARNAME
+# define PACKAGE PACKAGE_TARNAME
+#endif
+
+enum { COPYRIGHT_YEAR = 2011 };
+
+/* The three functions below display the --version information the
+   standard way.
+
+   If COMMAND_NAME is NULL, the PACKAGE is assumed to be the name of
+   the program.  The formats are therefore:
+
+   PACKAGE VERSION
+
+   or
+
+   COMMAND_NAME (PACKAGE) VERSION.
+
+   The functions differ in the way they are passed author names. */
+
+/* Display the --version information the standard way.
+
+   Author names are given in the array AUTHORS. N_AUTHORS is the
+   number of elements in the array. */
+void
+version_etc_arn (FILE *stream,
+                 const char *command_name, const char *package,
+                 const char *version,
+                 const char * const * authors, size_t n_authors)
+{
+  if (command_name)
+    fprintf (stream, "%s (%s) %s\n", command_name, package, version);
+  else
+    fprintf (stream, "%s %s\n", package, version);
+
+#ifdef PACKAGE_PACKAGER
+# ifdef PACKAGE_PACKAGER_VERSION
+  fprintf (stream, _("Packaged by %s (%s)\n"), PACKAGE_PACKAGER,
+           PACKAGE_PACKAGER_VERSION);
+# else
+  fprintf (stream, _("Packaged by %s\n"), PACKAGE_PACKAGER);
+# endif
+#endif
+
+  /* TRANSLATORS: Translate "(C)" to the copyright symbol
+     (C-in-a-circle), if this symbol is available in the user's
+     locale.  Otherwise, do not translate "(C)"; leave it as-is.  */
+  fprintf (stream, version_etc_copyright, _("(C)"), COPYRIGHT_YEAR);
+
+  fputs (_("\
+\n\
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.\n\
+This is free software: you are free to change and redistribute it.\n\
+There is NO WARRANTY, to the extent permitted by law.\n\
+\n\
+"),
+         stream);
+
+  switch (n_authors)
+    {
+    case 0:
+      /* The caller must provide at least one author name.  */
+      abort ();
+    case 1:
+      /* TRANSLATORS: %s denotes an author name.  */
+      fprintf (stream, _("Written by %s.\n"), authors[0]);
+      break;
+    case 2:
+      /* TRANSLATORS: Each %s denotes an author name.  */
+      fprintf (stream, _("Written by %s and %s.\n"), authors[0], authors[1]);
+      break;
+    case 3:
+      /* TRANSLATORS: Each %s denotes an author name.  */
+      fprintf (stream, _("Written by %s, %s, and %s.\n"),
+               authors[0], authors[1], authors[2]);
+      break;
+    case 4:
+      /* TRANSLATORS: Each %s denotes an author name.
+         You can use line breaks, estimating that each author name occupies
+         ca. 16 screen columns and that a screen line has ca. 80 columns.  */
+      fprintf (stream, _("Written by %s, %s, %s,\nand %s.\n"),
+               authors[0], authors[1], authors[2], authors[3]);
+      break;
+    case 5:
+      /* TRANSLATORS: Each %s denotes an author name.
+         You can use line breaks, estimating that each author name occupies
+         ca. 16 screen columns and that a screen line has ca. 80 columns.  */
+      fprintf (stream, _("Written by %s, %s, %s,\n%s, and %s.\n"),
+               authors[0], authors[1], authors[2], authors[3], authors[4]);
+      break;
+    case 6:
+      /* TRANSLATORS: Each %s denotes an author name.
+         You can use line breaks, estimating that each author name occupies
+         ca. 16 screen columns and that a screen line has ca. 80 columns.  */
+      fprintf (stream, _("Written by %s, %s, %s,\n%s, %s, and %s.\n"),
+               authors[0], authors[1], authors[2], authors[3], authors[4],
+               authors[5]);
+      break;
+    case 7:
+      /* TRANSLATORS: Each %s denotes an author name.
+         You can use line breaks, estimating that each author name occupies
+         ca. 16 screen columns and that a screen line has ca. 80 columns.  */
+      fprintf (stream, _("Written by %s, %s, %s,\n%s, %s, %s, and %s.\n"),
+               authors[0], authors[1], authors[2], authors[3], authors[4],
+               authors[5], authors[6]);
+      break;
+    case 8:
+      /* TRANSLATORS: Each %s denotes an author name.
+         You can use line breaks, estimating that each author name occupies
+         ca. 16 screen columns and that a screen line has ca. 80 columns.  */
+      fprintf (stream, _("\
+Written by %s, %s, %s,\n%s, %s, %s, %s,\nand %s.\n"),
+                authors[0], authors[1], authors[2], authors[3], authors[4],
+                authors[5], authors[6], authors[7]);
+      break;
+    case 9:
+      /* TRANSLATORS: Each %s denotes an author name.
+         You can use line breaks, estimating that each author name occupies
+         ca. 16 screen columns and that a screen line has ca. 80 columns.  */
+      fprintf (stream, _("\
+Written by %s, %s, %s,\n%s, %s, %s, %s,\n%s, and %s.\n"),
+               authors[0], authors[1], authors[2], authors[3], authors[4],
+               authors[5], authors[6], authors[7], authors[8]);
+      break;
+    default:
+      /* 10 or more authors.  Use an abbreviation, since the human reader
+         will probably not want to read the entire list anyway.  */
+      /* TRANSLATORS: Each %s denotes an author name.
+         You can use line breaks, estimating that each author name occupies
+         ca. 16 screen columns and that a screen line has ca. 80 columns.  */
+      fprintf (stream, _("\
+Written by %s, %s, %s,\n%s, %s, %s, %s,\n%s, %s, and others.\n"),
+                authors[0], authors[1], authors[2], authors[3], authors[4],
+                authors[5], authors[6], authors[7], authors[8]);
+      break;
+    }
+}
+
+/* Display the --version information the standard way.  See the initial
+   comment to this module, for more information.
+
+   Author names are given in the NULL-terminated array AUTHORS. */
+void
+version_etc_ar (FILE *stream,
+                const char *command_name, const char *package,
+                const char *version, const char * const * authors)
+{
+  size_t n_authors;
+
+  for (n_authors = 0; authors[n_authors]; n_authors++)
+    ;
+  version_etc_arn (stream, command_name, package, version, authors, n_authors);
+}
+
+/* Display the --version information the standard way.  See the initial
+   comment to this module, for more information.
+
+   Author names are given in the NULL-terminated va_list AUTHORS. */
+void
+version_etc_va (FILE *stream,
+                const char *command_name, const char *package,
+                const char *version, va_list authors)
+{
+  size_t n_authors;
+  const char *authtab[10];
+
+  for (n_authors = 0;
+       n_authors < 10
+         && (authtab[n_authors] = va_arg (authors, const char *)) != NULL;
+       n_authors++)
+    ;
+  version_etc_arn (stream, command_name, package, version,
+                   authtab, n_authors);
+}
+
+
+/* Display the --version information the standard way.
+
+   If COMMAND_NAME is NULL, the PACKAGE is assumed to be the name of
+   the program.  The formats are therefore:
+
+   PACKAGE VERSION
+
+   or
+
+   COMMAND_NAME (PACKAGE) VERSION.
+
+   The authors names are passed as separate arguments, with an additional
+   NULL argument at the end.  */
+void
+version_etc (FILE *stream,
+             const char *command_name, const char *package,
+             const char *version, /* const char *author1, ...*/ ...)
+{
+  va_list authors;
+
+  va_start (authors, version);
+  version_etc_va (stream, command_name, package, version, authors);
+  va_end (authors);
+}
+
+void
+emit_bug_reporting_address (void)
+{
+  /* TRANSLATORS: The placeholder indicates the bug-reporting address
+     for this package.  Please add _another line_ saying
+     "Report translation bugs to <...>\n" with the address for translation
+     bugs (typically your translation team's web or email address).  */
+  printf (_("\nReport bugs to: %s\n"), PACKAGE_BUGREPORT);
+#ifdef PACKAGE_PACKAGER_BUG_REPORTS
+  printf (_("Report %s bugs to: %s\n"), PACKAGE_PACKAGER,
+          PACKAGE_PACKAGER_BUG_REPORTS);
+#endif
+#ifdef PACKAGE_URL
+  printf (_("%s home page: <%s>\n"), PACKAGE_NAME, PACKAGE_URL);
+#else
+  printf (_("%s home page: <http://www.gnu.org/software/%s/>\n"),
+          PACKAGE_NAME, PACKAGE);
+#endif
+  fputs (_("General help using GNU software: <http://www.gnu.org/gethelp/>\n"),
+         stdout);
+}
diff --git a/lib/version-etc.h b/lib/version-etc.h
new file mode 100644 (file)
index 0000000..a9b313d
--- /dev/null
@@ -0,0 +1,78 @@
+/* Print --version and bug-reporting information in a consistent format.
+   Copyright (C) 1999, 2003, 2005, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+/* Written by Jim Meyering. */
+
+#ifndef VERSION_ETC_H
+# define VERSION_ETC_H 1
+
+# include <stdarg.h>
+# include <stdio.h>
+
+/* The `sentinel' attribute was added in gcc 4.0.  */
+#ifndef _GL_ATTRIBUTE_SENTINEL
+# if 4 <= __GNUC__
+#  define _GL_ATTRIBUTE_SENTINEL __attribute__ ((__sentinel__))
+# else
+#  define _GL_ATTRIBUTE_SENTINEL /* empty */
+# endif
+#endif
+
+extern const char version_etc_copyright[];
+
+/* The three functions below display the --version information in the
+   standard way: command and package names, package version, followed
+   by a short GPLv3+ notice and a list of up to 10 author names.
+
+   If COMMAND_NAME is NULL, the PACKAGE is asumed to be the name of
+   the program.  The formats are therefore:
+
+   PACKAGE VERSION
+
+   or
+
+   COMMAND_NAME (PACKAGE) VERSION.
+
+   The functions differ in the way they are passed author names: */
+
+/* N_AUTHORS names are supplied in array AUTHORS.  */
+extern void version_etc_arn (FILE *stream,
+                             const char *command_name, const char *package,
+                             const char *version,
+                             const char * const * authors, size_t n_authors);
+
+/* Names are passed in the NULL-terminated array AUTHORS.  */
+extern void version_etc_ar (FILE *stream,
+                            const char *command_name, const char *package,
+                            const char *version, const char * const * authors);
+
+/* Names are passed in the NULL-terminated va_list.  */
+extern void version_etc_va (FILE *stream,
+                            const char *command_name, const char *package,
+                            const char *version, va_list authors);
+
+/* Names are passed as separate arguments, with an additional
+   NULL argument at the end.  */
+extern void version_etc (FILE *stream,
+                         const char *command_name, const char *package,
+                         const char *version,
+                         /* const char *author1, ..., NULL */ ...)
+  _GL_ATTRIBUTE_SENTINEL;
+
+/* Display the usual `Report bugs to' stanza */
+extern void emit_bug_reporting_address (void);
+
+#endif /* VERSION_ETC_H */
diff --git a/lib/wchar.in.h b/lib/wchar.in.h
new file mode 100644 (file)
index 0000000..363dddb
--- /dev/null
@@ -0,0 +1,996 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* A substitute for ISO C99 <wchar.h>, for platforms that have issues.
+
+   Copyright (C) 2007-2011 Free Software Foundation, 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; either version 3, 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.  */
+
+/* Written by Eric Blake.  */
+
+/*
+ * ISO C 99 <wchar.h> for platforms that have issues.
+ * <http://www.opengroup.org/susv3xbd/wchar.h.html>
+ *
+ * For now, this just ensures proper prerequisite inclusion order and
+ * the declaration of wcwidth().
+ */
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+#if defined __need_mbstate_t || defined __need_wint_t || (defined __hpux && ((defined _INTTYPES_INCLUDED && !defined strtoimax) || defined _GL_JUST_INCLUDE_SYSTEM_WCHAR_H)) || defined _GL_ALREADY_INCLUDING_WCHAR_H
+/* Special invocation convention:
+   - Inside glibc and uClibc header files.
+   - On HP-UX 11.00 we have a sequence of nested includes
+     <wchar.h> -> <stdlib.h> -> <stdint.h>, and the latter includes <wchar.h>,
+     once indirectly <stdint.h> -> <sys/types.h> -> <inttypes.h> -> <wchar.h>
+     and once directly.  In both situations 'wint_t' is not yet defined,
+     therefore we cannot provide the function overrides; instead include only
+     the system's <wchar.h>.
+   - On IRIX 6.5, similarly, we have an include <wchar.h> -> <wctype.h>, and
+     the latter includes <wchar.h>.  But here, we have no way to detect whether
+     <wctype.h> is completely included or is still being included.  */
+
+#@INCLUDE_NEXT@ @NEXT_WCHAR_H@
+
+#else
+/* Normal invocation convention.  */
+
+#ifndef _@GUARD_PREFIX@_WCHAR_H
+
+#define _GL_ALREADY_INCLUDING_WCHAR_H
+
+#if @HAVE_FEATURES_H@
+# include <features.h> /* for __GLIBC__ */
+#endif
+
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.
+   In some builds of uClibc, <wchar.h> is nonexistent and wchar_t is defined
+   by <stddef.h>.
+   But avoid namespace pollution on glibc systems.  */
+#if !(defined __GLIBC__ && !defined __UCLIBC__)
+# include <stddef.h>
+#endif
+#ifndef __GLIBC__
+# include <stdio.h>
+# include <time.h>
+#endif
+
+/* Include the original <wchar.h> if it exists.
+   Some builds of uClibc lack it.  */
+/* The include_next requires a split double-inclusion guard.  */
+#if @HAVE_WCHAR_H@
+# @INCLUDE_NEXT@ @NEXT_WCHAR_H@
+#endif
+
+#undef _GL_ALREADY_INCLUDING_WCHAR_H
+
+#ifndef _@GUARD_PREFIX@_WCHAR_H
+#define _@GUARD_PREFIX@_WCHAR_H
+
+/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
+
+/* The definition of _GL_ARG_NONNULL is copied here.  */
+
+/* The definition of _GL_WARN_ON_USE is copied here.  */
+
+
+/* Define wint_t and WEOF.  (Also done in wctype.in.h.)  */
+#if !@HAVE_WINT_T@ && !defined wint_t
+# define wint_t int
+# ifndef WEOF
+#  define WEOF -1
+# endif
+#else
+# ifndef WEOF
+#  define WEOF ((wint_t) -1)
+# endif
+#endif
+
+
+/* Override mbstate_t if it is too small.
+   On IRIX 6.5, sizeof (mbstate_t) == 1, which is not sufficient for
+   implementing mbrtowc for encodings like UTF-8.  */
+#if !(@HAVE_MBSINIT@ && @HAVE_MBRTOWC@) || @REPLACE_MBSTATE_T@
+# if !GNULIB_defined_mbstate_t
+typedef int rpl_mbstate_t;
+#  undef mbstate_t
+#  define mbstate_t rpl_mbstate_t
+#  define GNULIB_defined_mbstate_t 1
+# endif
+#endif
+
+
+/* Convert a single-byte character to a wide character.  */
+#if @GNULIB_BTOWC@
+# if @REPLACE_BTOWC@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef btowc
+#   define btowc rpl_btowc
+#  endif
+_GL_FUNCDECL_RPL (btowc, wint_t, (int c));
+_GL_CXXALIAS_RPL (btowc, wint_t, (int c));
+# else
+#  if !@HAVE_BTOWC@
+_GL_FUNCDECL_SYS (btowc, wint_t, (int c));
+#  endif
+_GL_CXXALIAS_SYS (btowc, wint_t, (int c));
+# endif
+_GL_CXXALIASWARN (btowc);
+#elif defined GNULIB_POSIXCHECK
+# undef btowc
+# if HAVE_RAW_DECL_BTOWC
+_GL_WARN_ON_USE (btowc, "btowc is unportable - "
+                 "use gnulib module btowc for portability");
+# endif
+#endif
+
+
+/* Convert a wide character to a single-byte character.  */
+#if @GNULIB_WCTOB@
+# if @REPLACE_WCTOB@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef wctob
+#   define wctob rpl_wctob
+#  endif
+_GL_FUNCDECL_RPL (wctob, int, (wint_t wc));
+_GL_CXXALIAS_RPL (wctob, int, (wint_t wc));
+# else
+#  if !defined wctob && !@HAVE_DECL_WCTOB@
+/* wctob is provided by gnulib, or wctob exists but is not declared.  */
+_GL_FUNCDECL_SYS (wctob, int, (wint_t wc));
+#  endif
+_GL_CXXALIAS_SYS (wctob, int, (wint_t wc));
+# endif
+_GL_CXXALIASWARN (wctob);
+#elif defined GNULIB_POSIXCHECK
+# undef wctob
+# if HAVE_RAW_DECL_WCTOB
+_GL_WARN_ON_USE (wctob, "wctob is unportable - "
+                 "use gnulib module wctob for portability");
+# endif
+#endif
+
+
+/* Test whether *PS is in the initial state.  */
+#if @GNULIB_MBSINIT@
+# if @REPLACE_MBSINIT@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef mbsinit
+#   define mbsinit rpl_mbsinit
+#  endif
+_GL_FUNCDECL_RPL (mbsinit, int, (const mbstate_t *ps));
+_GL_CXXALIAS_RPL (mbsinit, int, (const mbstate_t *ps));
+# else
+#  if !@HAVE_MBSINIT@
+_GL_FUNCDECL_SYS (mbsinit, int, (const mbstate_t *ps));
+#  endif
+_GL_CXXALIAS_SYS (mbsinit, int, (const mbstate_t *ps));
+# endif
+_GL_CXXALIASWARN (mbsinit);
+#elif defined GNULIB_POSIXCHECK
+# undef mbsinit
+# if HAVE_RAW_DECL_MBSINIT
+_GL_WARN_ON_USE (mbsinit, "mbsinit is unportable - "
+                 "use gnulib module mbsinit for portability");
+# endif
+#endif
+
+
+/* Convert a multibyte character to a wide character.  */
+#if @GNULIB_MBRTOWC@
+# if @REPLACE_MBRTOWC@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef mbrtowc
+#   define mbrtowc rpl_mbrtowc
+#  endif
+_GL_FUNCDECL_RPL (mbrtowc, size_t,
+                  (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps));
+_GL_CXXALIAS_RPL (mbrtowc, size_t,
+                  (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps));
+# else
+#  if !@HAVE_MBRTOWC@
+_GL_FUNCDECL_SYS (mbrtowc, size_t,
+                  (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps));
+#  endif
+_GL_CXXALIAS_SYS (mbrtowc, size_t,
+                  (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps));
+# endif
+_GL_CXXALIASWARN (mbrtowc);
+#elif defined GNULIB_POSIXCHECK
+# undef mbrtowc
+# if HAVE_RAW_DECL_MBRTOWC
+_GL_WARN_ON_USE (mbrtowc, "mbrtowc is unportable - "
+                 "use gnulib module mbrtowc for portability");
+# endif
+#endif
+
+
+/* Recognize a multibyte character.  */
+#if @GNULIB_MBRLEN@
+# if @REPLACE_MBRLEN@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef mbrlen
+#   define mbrlen rpl_mbrlen
+#  endif
+_GL_FUNCDECL_RPL (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps));
+_GL_CXXALIAS_RPL (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps));
+# else
+#  if !@HAVE_MBRLEN@
+_GL_FUNCDECL_SYS (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps));
+#  endif
+_GL_CXXALIAS_SYS (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps));
+# endif
+_GL_CXXALIASWARN (mbrlen);
+#elif defined GNULIB_POSIXCHECK
+# undef mbrlen
+# if HAVE_RAW_DECL_MBRLEN
+_GL_WARN_ON_USE (mbrlen, "mbrlen is unportable - "
+                 "use gnulib module mbrlen for portability");
+# endif
+#endif
+
+
+/* Convert a string to a wide string.  */
+#if @GNULIB_MBSRTOWCS@
+# if @REPLACE_MBSRTOWCS@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef mbsrtowcs
+#   define mbsrtowcs rpl_mbsrtowcs
+#  endif
+_GL_FUNCDECL_RPL (mbsrtowcs, size_t,
+                  (wchar_t *dest, const char **srcp, size_t len, mbstate_t *ps)
+                  _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (mbsrtowcs, size_t,
+                  (wchar_t *dest, const char **srcp, size_t len,
+                   mbstate_t *ps));
+# else
+#  if !@HAVE_MBSRTOWCS@
+_GL_FUNCDECL_SYS (mbsrtowcs, size_t,
+                  (wchar_t *dest, const char **srcp, size_t len, mbstate_t *ps)
+                  _GL_ARG_NONNULL ((2)));
+#  endif
+_GL_CXXALIAS_SYS (mbsrtowcs, size_t,
+                  (wchar_t *dest, const char **srcp, size_t len,
+                   mbstate_t *ps));
+# endif
+_GL_CXXALIASWARN (mbsrtowcs);
+#elif defined GNULIB_POSIXCHECK
+# undef mbsrtowcs
+# if HAVE_RAW_DECL_MBSRTOWCS
+_GL_WARN_ON_USE (mbsrtowcs, "mbsrtowcs is unportable - "
+                 "use gnulib module mbsrtowcs for portability");
+# endif
+#endif
+
+
+/* Convert a string to a wide string.  */
+#if @GNULIB_MBSNRTOWCS@
+# if @REPLACE_MBSNRTOWCS@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef mbsnrtowcs
+#   define mbsnrtowcs rpl_mbsnrtowcs
+#  endif
+_GL_FUNCDECL_RPL (mbsnrtowcs, size_t,
+                  (wchar_t *dest, const char **srcp, size_t srclen, size_t len,
+                   mbstate_t *ps)
+                  _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (mbsnrtowcs, size_t,
+                  (wchar_t *dest, const char **srcp, size_t srclen, size_t len,
+                   mbstate_t *ps));
+# else
+#  if !@HAVE_MBSNRTOWCS@
+_GL_FUNCDECL_SYS (mbsnrtowcs, size_t,
+                  (wchar_t *dest, const char **srcp, size_t srclen, size_t len,
+                   mbstate_t *ps)
+                  _GL_ARG_NONNULL ((2)));
+#  endif
+_GL_CXXALIAS_SYS (mbsnrtowcs, size_t,
+                  (wchar_t *dest, const char **srcp, size_t srclen, size_t len,
+                   mbstate_t *ps));
+# endif
+_GL_CXXALIASWARN (mbsnrtowcs);
+#elif defined GNULIB_POSIXCHECK
+# undef mbsnrtowcs
+# if HAVE_RAW_DECL_MBSNRTOWCS
+_GL_WARN_ON_USE (mbsnrtowcs, "mbsnrtowcs is unportable - "
+                 "use gnulib module mbsnrtowcs for portability");
+# endif
+#endif
+
+
+/* Convert a wide character to a multibyte character.  */
+#if @GNULIB_WCRTOMB@
+# if @REPLACE_WCRTOMB@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef wcrtomb
+#   define wcrtomb rpl_wcrtomb
+#  endif
+_GL_FUNCDECL_RPL (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps));
+_GL_CXXALIAS_RPL (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps));
+# else
+#  if !@HAVE_WCRTOMB@
+_GL_FUNCDECL_SYS (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps));
+#  endif
+_GL_CXXALIAS_SYS (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps));
+# endif
+_GL_CXXALIASWARN (wcrtomb);
+#elif defined GNULIB_POSIXCHECK
+# undef wcrtomb
+# if HAVE_RAW_DECL_WCRTOMB
+_GL_WARN_ON_USE (wcrtomb, "wcrtomb is unportable - "
+                 "use gnulib module wcrtomb for portability");
+# endif
+#endif
+
+
+/* Convert a wide string to a string.  */
+#if @GNULIB_WCSRTOMBS@
+# if @REPLACE_WCSRTOMBS@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef wcsrtombs
+#   define wcsrtombs rpl_wcsrtombs
+#  endif
+_GL_FUNCDECL_RPL (wcsrtombs, size_t,
+                  (char *dest, const wchar_t **srcp, size_t len, mbstate_t *ps)
+                  _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (wcsrtombs, size_t,
+                  (char *dest, const wchar_t **srcp, size_t len,
+                   mbstate_t *ps));
+# else
+#  if !@HAVE_WCSRTOMBS@
+_GL_FUNCDECL_SYS (wcsrtombs, size_t,
+                  (char *dest, const wchar_t **srcp, size_t len, mbstate_t *ps)
+                  _GL_ARG_NONNULL ((2)));
+#  endif
+_GL_CXXALIAS_SYS (wcsrtombs, size_t,
+                  (char *dest, const wchar_t **srcp, size_t len,
+                   mbstate_t *ps));
+# endif
+_GL_CXXALIASWARN (wcsrtombs);
+#elif defined GNULIB_POSIXCHECK
+# undef wcsrtombs
+# if HAVE_RAW_DECL_WCSRTOMBS
+_GL_WARN_ON_USE (wcsrtombs, "wcsrtombs is unportable - "
+                 "use gnulib module wcsrtombs for portability");
+# endif
+#endif
+
+
+/* Convert a wide string to a string.  */
+#if @GNULIB_WCSNRTOMBS@
+# if @REPLACE_WCSNRTOMBS@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef wcsnrtombs
+#   define wcsnrtombs rpl_wcsnrtombs
+#  endif
+_GL_FUNCDECL_RPL (wcsnrtombs, size_t,
+                  (char *dest, const wchar_t **srcp, size_t srclen, size_t len,
+                   mbstate_t *ps)
+                  _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (wcsnrtombs, size_t,
+                  (char *dest, const wchar_t **srcp, size_t srclen, size_t len,
+                   mbstate_t *ps));
+# else
+#  if !@HAVE_WCSNRTOMBS@
+_GL_FUNCDECL_SYS (wcsnrtombs, size_t,
+                  (char *dest, const wchar_t **srcp, size_t srclen, size_t len,
+                   mbstate_t *ps)
+                  _GL_ARG_NONNULL ((2)));
+#  endif
+_GL_CXXALIAS_SYS (wcsnrtombs, size_t,
+                  (char *dest, const wchar_t **srcp, size_t srclen, size_t len,
+                   mbstate_t *ps));
+# endif
+_GL_CXXALIASWARN (wcsnrtombs);
+#elif defined GNULIB_POSIXCHECK
+# undef wcsnrtombs
+# if HAVE_RAW_DECL_WCSNRTOMBS
+_GL_WARN_ON_USE (wcsnrtombs, "wcsnrtombs is unportable - "
+                 "use gnulib module wcsnrtombs for portability");
+# endif
+#endif
+
+
+/* Return the number of screen columns needed for WC.  */
+#if @GNULIB_WCWIDTH@
+# if @REPLACE_WCWIDTH@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef wcwidth
+#   define wcwidth rpl_wcwidth
+#  endif
+_GL_FUNCDECL_RPL (wcwidth, int, (wchar_t));
+_GL_CXXALIAS_RPL (wcwidth, int, (wchar_t));
+# else
+#  if !@HAVE_DECL_WCWIDTH@
+/* wcwidth exists but is not declared.  */
+_GL_FUNCDECL_SYS (wcwidth, int, (wchar_t));
+#  endif
+_GL_CXXALIAS_SYS (wcwidth, int, (wchar_t));
+# endif
+_GL_CXXALIASWARN (wcwidth);
+#elif defined GNULIB_POSIXCHECK
+# undef wcwidth
+# if HAVE_RAW_DECL_WCWIDTH
+_GL_WARN_ON_USE (wcwidth, "wcwidth is unportable - "
+                 "use gnulib module wcwidth for portability");
+# endif
+#endif
+
+
+/* Search N wide characters of S for C.  */
+#if @GNULIB_WMEMCHR@
+# if !@HAVE_WMEMCHR@
+_GL_FUNCDECL_SYS (wmemchr, wchar_t *, (const wchar_t *s, wchar_t c, size_t n));
+# endif
+  /* On some systems, this function is defined as an overloaded function:
+       extern "C++" {
+         const wchar_t * std::wmemchr (const wchar_t *, wchar_t, size_t);
+         wchar_t * std::wmemchr (wchar_t *, wchar_t, size_t);
+       }  */
+_GL_CXXALIAS_SYS_CAST2 (wmemchr,
+                        wchar_t *, (const wchar_t *, wchar_t, size_t),
+                        const wchar_t *, (const wchar_t *, wchar_t, size_t));
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
+     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (wmemchr, wchar_t *, (wchar_t *s, wchar_t c, size_t n));
+_GL_CXXALIASWARN1 (wmemchr, const wchar_t *,
+                   (const wchar_t *s, wchar_t c, size_t n));
+# else
+_GL_CXXALIASWARN (wmemchr);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef wmemchr
+# if HAVE_RAW_DECL_WMEMCHR
+_GL_WARN_ON_USE (wmemchr, "wmemchr is unportable - "
+                 "use gnulib module wmemchr for portability");
+# endif
+#endif
+
+
+/* Compare N wide characters of S1 and S2.  */
+#if @GNULIB_WMEMCMP@
+# if !@HAVE_WMEMCMP@
+_GL_FUNCDECL_SYS (wmemcmp, int,
+                  (const wchar_t *s1, const wchar_t *s2, size_t n));
+# endif
+_GL_CXXALIAS_SYS (wmemcmp, int,
+                  (const wchar_t *s1, const wchar_t *s2, size_t n));
+_GL_CXXALIASWARN (wmemcmp);
+#elif defined GNULIB_POSIXCHECK
+# undef wmemcmp
+# if HAVE_RAW_DECL_WMEMCMP
+_GL_WARN_ON_USE (wmemcmp, "wmemcmp is unportable - "
+                 "use gnulib module wmemcmp for portability");
+# endif
+#endif
+
+
+/* Copy N wide characters of SRC to DEST.  */
+#if @GNULIB_WMEMCPY@
+# if !@HAVE_WMEMCPY@
+_GL_FUNCDECL_SYS (wmemcpy, wchar_t *,
+                  (wchar_t *dest, const wchar_t *src, size_t n));
+# endif
+_GL_CXXALIAS_SYS (wmemcpy, wchar_t *,
+                  (wchar_t *dest, const wchar_t *src, size_t n));
+_GL_CXXALIASWARN (wmemcpy);
+#elif defined GNULIB_POSIXCHECK
+# undef wmemcpy
+# if HAVE_RAW_DECL_WMEMCPY
+_GL_WARN_ON_USE (wmemcpy, "wmemcpy is unportable - "
+                 "use gnulib module wmemcpy for portability");
+# endif
+#endif
+
+
+/* Copy N wide characters of SRC to DEST, guaranteeing correct behavior for
+   overlapping memory areas.  */
+#if @GNULIB_WMEMMOVE@
+# if !@HAVE_WMEMMOVE@
+_GL_FUNCDECL_SYS (wmemmove, wchar_t *,
+                  (wchar_t *dest, const wchar_t *src, size_t n));
+# endif
+_GL_CXXALIAS_SYS (wmemmove, wchar_t *,
+                  (wchar_t *dest, const wchar_t *src, size_t n));
+_GL_CXXALIASWARN (wmemmove);
+#elif defined GNULIB_POSIXCHECK
+# undef wmemmove
+# if HAVE_RAW_DECL_WMEMMOVE
+_GL_WARN_ON_USE (wmemmove, "wmemmove is unportable - "
+                 "use gnulib module wmemmove for portability");
+# endif
+#endif
+
+
+/* Set N wide characters of S to C.  */
+#if @GNULIB_WMEMSET@
+# if !@HAVE_WMEMSET@
+_GL_FUNCDECL_SYS (wmemset, wchar_t *, (wchar_t *s, wchar_t c, size_t n));
+# endif
+_GL_CXXALIAS_SYS (wmemset, wchar_t *, (wchar_t *s, wchar_t c, size_t n));
+_GL_CXXALIASWARN (wmemset);
+#elif defined GNULIB_POSIXCHECK
+# undef wmemset
+# if HAVE_RAW_DECL_WMEMSET
+_GL_WARN_ON_USE (wmemset, "wmemset is unportable - "
+                 "use gnulib module wmemset for portability");
+# endif
+#endif
+
+
+/* Return the number of wide characters in S.  */
+#if @GNULIB_WCSLEN@
+# if !@HAVE_WCSLEN@
+_GL_FUNCDECL_SYS (wcslen, size_t, (const wchar_t *s));
+# endif
+_GL_CXXALIAS_SYS (wcslen, size_t, (const wchar_t *s));
+_GL_CXXALIASWARN (wcslen);
+#elif defined GNULIB_POSIXCHECK
+# undef wcslen
+# if HAVE_RAW_DECL_WCSLEN
+_GL_WARN_ON_USE (wcslen, "wcslen is unportable - "
+                 "use gnulib module wcslen for portability");
+# endif
+#endif
+
+
+/* Return the number of wide characters in S, but at most MAXLEN.  */
+#if @GNULIB_WCSNLEN@
+# if !@HAVE_WCSNLEN@
+_GL_FUNCDECL_SYS (wcsnlen, size_t, (const wchar_t *s, size_t maxlen));
+# endif
+_GL_CXXALIAS_SYS (wcsnlen, size_t, (const wchar_t *s, size_t maxlen));
+_GL_CXXALIASWARN (wcsnlen);
+#elif defined GNULIB_POSIXCHECK
+# undef wcsnlen
+# if HAVE_RAW_DECL_WCSNLEN
+_GL_WARN_ON_USE (wcsnlen, "wcsnlen is unportable - "
+                 "use gnulib module wcsnlen for portability");
+# endif
+#endif
+
+
+/* Copy SRC to DEST.  */
+#if @GNULIB_WCSCPY@
+# if !@HAVE_WCSCPY@
+_GL_FUNCDECL_SYS (wcscpy, wchar_t *, (wchar_t *dest, const wchar_t *src));
+# endif
+_GL_CXXALIAS_SYS (wcscpy, wchar_t *, (wchar_t *dest, const wchar_t *src));
+_GL_CXXALIASWARN (wcscpy);
+#elif defined GNULIB_POSIXCHECK
+# undef wcscpy
+# if HAVE_RAW_DECL_WCSCPY
+_GL_WARN_ON_USE (wcscpy, "wcscpy is unportable - "
+                 "use gnulib module wcscpy for portability");
+# endif
+#endif
+
+
+/* Copy SRC to DEST, returning the address of the terminating L'\0' in DEST.  */
+#if @GNULIB_WCPCPY@
+# if !@HAVE_WCPCPY@
+_GL_FUNCDECL_SYS (wcpcpy, wchar_t *, (wchar_t *dest, const wchar_t *src));
+# endif
+_GL_CXXALIAS_SYS (wcpcpy, wchar_t *, (wchar_t *dest, const wchar_t *src));
+_GL_CXXALIASWARN (wcpcpy);
+#elif defined GNULIB_POSIXCHECK
+# undef wcpcpy
+# if HAVE_RAW_DECL_WCPCPY
+_GL_WARN_ON_USE (wcpcpy, "wcpcpy is unportable - "
+                 "use gnulib module wcpcpy for portability");
+# endif
+#endif
+
+
+/* Copy no more than N wide characters of SRC to DEST.  */
+#if @GNULIB_WCSNCPY@
+# if !@HAVE_WCSNCPY@
+_GL_FUNCDECL_SYS (wcsncpy, wchar_t *,
+                  (wchar_t *dest, const wchar_t *src, size_t n));
+# endif
+_GL_CXXALIAS_SYS (wcsncpy, wchar_t *,
+                  (wchar_t *dest, const wchar_t *src, size_t n));
+_GL_CXXALIASWARN (wcsncpy);
+#elif defined GNULIB_POSIXCHECK
+# undef wcsncpy
+# if HAVE_RAW_DECL_WCSNCPY
+_GL_WARN_ON_USE (wcsncpy, "wcsncpy is unportable - "
+                 "use gnulib module wcsncpy for portability");
+# endif
+#endif
+
+
+/* Copy no more than N characters of SRC to DEST, returning the address of
+   the last character written into DEST.  */
+#if @GNULIB_WCPNCPY@
+# if !@HAVE_WCPNCPY@
+_GL_FUNCDECL_SYS (wcpncpy, wchar_t *,
+                  (wchar_t *dest, const wchar_t *src, size_t n));
+# endif
+_GL_CXXALIAS_SYS (wcpncpy, wchar_t *,
+                  (wchar_t *dest, const wchar_t *src, size_t n));
+_GL_CXXALIASWARN (wcpncpy);
+#elif defined GNULIB_POSIXCHECK
+# undef wcpncpy
+# if HAVE_RAW_DECL_WCPNCPY
+_GL_WARN_ON_USE (wcpncpy, "wcpncpy is unportable - "
+                 "use gnulib module wcpncpy for portability");
+# endif
+#endif
+
+
+/* Append SRC onto DEST.  */
+#if @GNULIB_WCSCAT@
+# if !@HAVE_WCSCAT@
+_GL_FUNCDECL_SYS (wcscat, wchar_t *, (wchar_t *dest, const wchar_t *src));
+# endif
+_GL_CXXALIAS_SYS (wcscat, wchar_t *, (wchar_t *dest, const wchar_t *src));
+_GL_CXXALIASWARN (wcscat);
+#elif defined GNULIB_POSIXCHECK
+# undef wcscat
+# if HAVE_RAW_DECL_WCSCAT
+_GL_WARN_ON_USE (wcscat, "wcscat is unportable - "
+                 "use gnulib module wcscat for portability");
+# endif
+#endif
+
+
+/* Append no more than N wide characters of SRC onto DEST.  */
+#if @GNULIB_WCSNCAT@
+# if !@HAVE_WCSNCAT@
+_GL_FUNCDECL_SYS (wcsncat, wchar_t *,
+                  (wchar_t *dest, const wchar_t *src, size_t n));
+# endif
+_GL_CXXALIAS_SYS (wcsncat, wchar_t *,
+                  (wchar_t *dest, const wchar_t *src, size_t n));
+_GL_CXXALIASWARN (wcsncat);
+#elif defined GNULIB_POSIXCHECK
+# undef wcsncat
+# if HAVE_RAW_DECL_WCSNCAT
+_GL_WARN_ON_USE (wcsncat, "wcsncat is unportable - "
+                 "use gnulib module wcsncat for portability");
+# endif
+#endif
+
+
+/* Compare S1 and S2.  */
+#if @GNULIB_WCSCMP@
+# if !@HAVE_WCSCMP@
+_GL_FUNCDECL_SYS (wcscmp, int, (const wchar_t *s1, const wchar_t *s2));
+# endif
+_GL_CXXALIAS_SYS (wcscmp, int, (const wchar_t *s1, const wchar_t *s2));
+_GL_CXXALIASWARN (wcscmp);
+#elif defined GNULIB_POSIXCHECK
+# undef wcscmp
+# if HAVE_RAW_DECL_WCSCMP
+_GL_WARN_ON_USE (wcscmp, "wcscmp is unportable - "
+                 "use gnulib module wcscmp for portability");
+# endif
+#endif
+
+
+/* Compare no more than N wide characters of S1 and S2.  */
+#if @GNULIB_WCSNCMP@
+# if !@HAVE_WCSNCMP@
+_GL_FUNCDECL_SYS (wcsncmp, int,
+                  (const wchar_t *s1, const wchar_t *s2, size_t n));
+# endif
+_GL_CXXALIAS_SYS (wcsncmp, int,
+                  (const wchar_t *s1, const wchar_t *s2, size_t n));
+_GL_CXXALIASWARN (wcsncmp);
+#elif defined GNULIB_POSIXCHECK
+# undef wcsncmp
+# if HAVE_RAW_DECL_WCSNCMP
+_GL_WARN_ON_USE (wcsncmp, "wcsncmp is unportable - "
+                 "use gnulib module wcsncmp for portability");
+# endif
+#endif
+
+
+/* Compare S1 and S2, ignoring case.  */
+#if @GNULIB_WCSCASECMP@
+# if !@HAVE_WCSCASECMP@
+_GL_FUNCDECL_SYS (wcscasecmp, int, (const wchar_t *s1, const wchar_t *s2));
+# endif
+_GL_CXXALIAS_SYS (wcscasecmp, int, (const wchar_t *s1, const wchar_t *s2));
+_GL_CXXALIASWARN (wcscasecmp);
+#elif defined GNULIB_POSIXCHECK
+# undef wcscasecmp
+# if HAVE_RAW_DECL_WCSCASECMP
+_GL_WARN_ON_USE (wcscasecmp, "wcscasecmp is unportable - "
+                 "use gnulib module wcscasecmp for portability");
+# endif
+#endif
+
+
+/* Compare no more than N chars of S1 and S2, ignoring case.  */
+#if @GNULIB_WCSNCASECMP@
+# if !@HAVE_WCSNCASECMP@
+_GL_FUNCDECL_SYS (wcsncasecmp, int,
+                  (const wchar_t *s1, const wchar_t *s2, size_t n));
+# endif
+_GL_CXXALIAS_SYS (wcsncasecmp, int,
+                  (const wchar_t *s1, const wchar_t *s2, size_t n));
+_GL_CXXALIASWARN (wcsncasecmp);
+#elif defined GNULIB_POSIXCHECK
+# undef wcsncasecmp
+# if HAVE_RAW_DECL_WCSNCASECMP
+_GL_WARN_ON_USE (wcsncasecmp, "wcsncasecmp is unportable - "
+                 "use gnulib module wcsncasecmp for portability");
+# endif
+#endif
+
+
+/* Compare S1 and S2, both interpreted as appropriate to the LC_COLLATE
+   category of the current locale.  */
+#if @GNULIB_WCSCOLL@
+# if !@HAVE_WCSCOLL@
+_GL_FUNCDECL_SYS (wcscoll, int, (const wchar_t *s1, const wchar_t *s2));
+# endif
+_GL_CXXALIAS_SYS (wcscoll, int, (const wchar_t *s1, const wchar_t *s2));
+_GL_CXXALIASWARN (wcscoll);
+#elif defined GNULIB_POSIXCHECK
+# undef wcscoll
+# if HAVE_RAW_DECL_WCSCOLL
+_GL_WARN_ON_USE (wcscoll, "wcscoll is unportable - "
+                 "use gnulib module wcscoll for portability");
+# endif
+#endif
+
+
+/* Transform S2 into array pointed to by S1 such that if wcscmp is applied
+   to two transformed strings the result is the as applying 'wcscoll' to the
+   original strings.  */
+#if @GNULIB_WCSXFRM@
+# if !@HAVE_WCSXFRM@
+_GL_FUNCDECL_SYS (wcsxfrm, size_t, (wchar_t *s1, const wchar_t *s2, size_t n));
+# endif
+_GL_CXXALIAS_SYS (wcsxfrm, size_t, (wchar_t *s1, const wchar_t *s2, size_t n));
+_GL_CXXALIASWARN (wcsxfrm);
+#elif defined GNULIB_POSIXCHECK
+# undef wcsxfrm
+# if HAVE_RAW_DECL_WCSXFRM
+_GL_WARN_ON_USE (wcsxfrm, "wcsxfrm is unportable - "
+                 "use gnulib module wcsxfrm for portability");
+# endif
+#endif
+
+
+/* Duplicate S, returning an identical malloc'd string.  */
+#if @GNULIB_WCSDUP@
+# if !@HAVE_WCSDUP@
+_GL_FUNCDECL_SYS (wcsdup, wchar_t *, (const wchar_t *s));
+# endif
+_GL_CXXALIAS_SYS (wcsdup, wchar_t *, (const wchar_t *s));
+_GL_CXXALIASWARN (wcsdup);
+#elif defined GNULIB_POSIXCHECK
+# undef wcsdup
+# if HAVE_RAW_DECL_WCSDUP
+_GL_WARN_ON_USE (wcsdup, "wcsdup is unportable - "
+                 "use gnulib module wcsdup for portability");
+# endif
+#endif
+
+
+/* Find the first occurrence of WC in WCS.  */
+#if @GNULIB_WCSCHR@
+# if !@HAVE_WCSCHR@
+_GL_FUNCDECL_SYS (wcschr, wchar_t *, (const wchar_t *wcs, wchar_t wc));
+# endif
+  /* On some systems, this function is defined as an overloaded function:
+       extern "C++" {
+         const wchar_t * std::wcschr (const wchar_t *, wchar_t);
+         wchar_t * std::wcschr (wchar_t *, wchar_t);
+       }  */
+_GL_CXXALIAS_SYS_CAST2 (wcschr,
+                        wchar_t *, (const wchar_t *, wchar_t),
+                        const wchar_t *, (const wchar_t *, wchar_t));
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
+     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (wcschr, wchar_t *, (wchar_t *wcs, wchar_t wc));
+_GL_CXXALIASWARN1 (wcschr, const wchar_t *, (const wchar_t *wcs, wchar_t wc));
+# else
+_GL_CXXALIASWARN (wcschr);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef wcschr
+# if HAVE_RAW_DECL_WCSCHR
+_GL_WARN_ON_USE (wcschr, "wcschr is unportable - "
+                 "use gnulib module wcschr for portability");
+# endif
+#endif
+
+
+/* Find the last occurrence of WC in WCS.  */
+#if @GNULIB_WCSRCHR@
+# if !@HAVE_WCSRCHR@
+_GL_FUNCDECL_SYS (wcsrchr, wchar_t *, (const wchar_t *wcs, wchar_t wc));
+# endif
+  /* On some systems, this function is defined as an overloaded function:
+       extern "C++" {
+         const wchar_t * std::wcsrchr (const wchar_t *, wchar_t);
+         wchar_t * std::wcsrchr (wchar_t *, wchar_t);
+       }  */
+_GL_CXXALIAS_SYS_CAST2 (wcsrchr,
+                        wchar_t *, (const wchar_t *, wchar_t),
+                        const wchar_t *, (const wchar_t *, wchar_t));
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
+     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (wcsrchr, wchar_t *, (wchar_t *wcs, wchar_t wc));
+_GL_CXXALIASWARN1 (wcsrchr, const wchar_t *, (const wchar_t *wcs, wchar_t wc));
+# else
+_GL_CXXALIASWARN (wcsrchr);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef wcsrchr
+# if HAVE_RAW_DECL_WCSRCHR
+_GL_WARN_ON_USE (wcsrchr, "wcsrchr is unportable - "
+                 "use gnulib module wcsrchr for portability");
+# endif
+#endif
+
+
+/* Return the length of the initial segmet of WCS which consists entirely
+   of wide characters not in REJECT.  */
+#if @GNULIB_WCSCSPN@
+# if !@HAVE_WCSCSPN@
+_GL_FUNCDECL_SYS (wcscspn, size_t, (const wchar_t *wcs, const wchar_t *reject));
+# endif
+_GL_CXXALIAS_SYS (wcscspn, size_t, (const wchar_t *wcs, const wchar_t *reject));
+_GL_CXXALIASWARN (wcscspn);
+#elif defined GNULIB_POSIXCHECK
+# undef wcscspn
+# if HAVE_RAW_DECL_WCSCSPN
+_GL_WARN_ON_USE (wcscspn, "wcscspn is unportable - "
+                 "use gnulib module wcscspn for portability");
+# endif
+#endif
+
+
+/* Return the length of the initial segmet of WCS which consists entirely
+   of wide characters in ACCEPT.  */
+#if @GNULIB_WCSSPN@
+# if !@HAVE_WCSSPN@
+_GL_FUNCDECL_SYS (wcsspn, size_t, (const wchar_t *wcs, const wchar_t *accept));
+# endif
+_GL_CXXALIAS_SYS (wcsspn, size_t, (const wchar_t *wcs, const wchar_t *accept));
+_GL_CXXALIASWARN (wcsspn);
+#elif defined GNULIB_POSIXCHECK
+# undef wcsspn
+# if HAVE_RAW_DECL_WCSSPN
+_GL_WARN_ON_USE (wcsspn, "wcsspn is unportable - "
+                 "use gnulib module wcsspn for portability");
+# endif
+#endif
+
+
+/* Find the first occurrence in WCS of any character in ACCEPT.  */
+#if @GNULIB_WCSPBRK@
+# if !@HAVE_WCSPBRK@
+_GL_FUNCDECL_SYS (wcspbrk, wchar_t *,
+                  (const wchar_t *wcs, const wchar_t *accept));
+# endif
+  /* On some systems, this function is defined as an overloaded function:
+       extern "C++" {
+         const wchar_t * std::wcspbrk (const wchar_t *, const wchar_t *);
+         wchar_t * std::wcspbrk (wchar_t *, const wchar_t *);
+       }  */
+_GL_CXXALIAS_SYS_CAST2 (wcspbrk,
+                        wchar_t *, (const wchar_t *, const wchar_t *),
+                        const wchar_t *, (const wchar_t *, const wchar_t *));
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
+     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (wcspbrk, wchar_t *,
+                   (wchar_t *wcs, const wchar_t *accept));
+_GL_CXXALIASWARN1 (wcspbrk, const wchar_t *,
+                   (const wchar_t *wcs, const wchar_t *accept));
+# else
+_GL_CXXALIASWARN (wcspbrk);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef wcspbrk
+# if HAVE_RAW_DECL_WCSPBRK
+_GL_WARN_ON_USE (wcspbrk, "wcspbrk is unportable - "
+                 "use gnulib module wcspbrk for portability");
+# endif
+#endif
+
+
+/* Find the first occurrence of NEEDLE in HAYSTACK.  */
+#if @GNULIB_WCSSTR@
+# if !@HAVE_WCSSTR@
+_GL_FUNCDECL_SYS (wcsstr, wchar_t *,
+                  (const wchar_t *haystack, const wchar_t *needle));
+# endif
+  /* On some systems, this function is defined as an overloaded function:
+       extern "C++" {
+         const wchar_t * std::wcsstr (const wchar_t *, const wchar_t *);
+         wchar_t * std::wcsstr (wchar_t *, const wchar_t *);
+       }  */
+_GL_CXXALIAS_SYS_CAST2 (wcsstr,
+                        wchar_t *, (const wchar_t *, const wchar_t *),
+                        const wchar_t *, (const wchar_t *, const wchar_t *));
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
+     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (wcsstr, wchar_t *,
+                   (wchar_t *haystack, const wchar_t *needle));
+_GL_CXXALIASWARN1 (wcsstr, const wchar_t *,
+                   (const wchar_t *haystack, const wchar_t *needle));
+# else
+_GL_CXXALIASWARN (wcsstr);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef wcsstr
+# if HAVE_RAW_DECL_WCSSTR
+_GL_WARN_ON_USE (wcsstr, "wcsstr is unportable - "
+                 "use gnulib module wcsstr for portability");
+# endif
+#endif
+
+
+/* Divide WCS into tokens separated by characters in DELIM.  */
+#if @GNULIB_WCSTOK@
+# if !@HAVE_WCSTOK@
+_GL_FUNCDECL_SYS (wcstok, wchar_t *,
+                  (wchar_t *wcs, const wchar_t *delim, wchar_t **ptr));
+# endif
+_GL_CXXALIAS_SYS (wcstok, wchar_t *,
+                  (wchar_t *wcs, const wchar_t *delim, wchar_t **ptr));
+_GL_CXXALIASWARN (wcstok);
+#elif defined GNULIB_POSIXCHECK
+# undef wcstok
+# if HAVE_RAW_DECL_WCSTOK
+_GL_WARN_ON_USE (wcstok, "wcstok is unportable - "
+                 "use gnulib module wcstok for portability");
+# endif
+#endif
+
+
+/* Determine number of column positions required for first N wide
+   characters (or fewer if S ends before this) in S.  */
+#if @GNULIB_WCSWIDTH@
+# if @REPLACE_WCSWIDTH@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef wcswidth
+#   define wcswidth rpl_wcswidth
+#  endif
+_GL_FUNCDECL_RPL (wcswidth, int, (const wchar_t *s, size_t n));
+_GL_CXXALIAS_RPL (wcswidth, int, (const wchar_t *s, size_t n));
+# else
+#  if !@HAVE_WCSWIDTH@
+_GL_FUNCDECL_SYS (wcswidth, int, (const wchar_t *s, size_t n));
+#  endif
+_GL_CXXALIAS_SYS (wcswidth, int, (const wchar_t *s, size_t n));
+# endif
+_GL_CXXALIASWARN (wcswidth);
+#elif defined GNULIB_POSIXCHECK
+# undef wcswidth
+# if HAVE_RAW_DECL_WCSWIDTH
+_GL_WARN_ON_USE (wcswidth, "wcswidth is unportable - "
+                 "use gnulib module wcswidth for portability");
+# endif
+#endif
+
+
+#endif /* _@GUARD_PREFIX@_WCHAR_H */
+#endif /* _@GUARD_PREFIX@_WCHAR_H */
+#endif
diff --git a/lib/wcrtomb.c b/lib/wcrtomb.c
new file mode 100644 (file)
index 0000000..6632589
--- /dev/null
@@ -0,0 +1,53 @@
+/* Convert wide character to multibyte character.
+   Copyright (C) 2008-2011 Free Software Foundation, Inc.
+   Written by Bruno Haible <bruno@clisp.org>, 2008.
+
+   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 <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include <wchar.h>
+
+#include <errno.h>
+#include <stdlib.h>
+
+
+size_t
+wcrtomb (char *s, wchar_t wc, mbstate_t *ps)
+{
+  /* This implementation of wcrtomb on top of wctomb() supports only
+     stateless encodings.  ps must be in the initial state.  */
+  if (ps != NULL && !mbsinit (ps))
+    {
+      errno = EINVAL;
+      return (size_t)(-1);
+    }
+
+  if (s == NULL)
+    /* We know the NUL wide character corresponds to the NUL character.  */
+    return 1;
+  else
+    {
+      int ret = wctomb (s, wc);
+
+      if (ret >= 0)
+        return ret;
+      else
+        {
+          errno = EILSEQ;
+          return (size_t)(-1);
+        }
+    }
+}
diff --git a/lib/wctype.in.h b/lib/wctype.in.h
new file mode 100644 (file)
index 0000000..2daca19
--- /dev/null
@@ -0,0 +1,485 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* A substitute for ISO C99 <wctype.h>, for platforms that lack it.
+
+   Copyright (C) 2006-2011 Free Software Foundation, 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; either version 3, 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.  */
+
+/* Written by Bruno Haible and Paul Eggert.  */
+
+/*
+ * ISO C 99 <wctype.h> for platforms that lack it.
+ * <http://www.opengroup.org/susv3xbd/wctype.h.html>
+ *
+ * iswctype, towctrans, towlower, towupper, wctrans, wctype,
+ * wctrans_t, and wctype_t are not yet implemented.
+ */
+
+#ifndef _@GUARD_PREFIX@_WCTYPE_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+#if @HAVE_WINT_T@
+/* Solaris 2.5 has a bug: <wchar.h> must be included before <wctype.h>.
+   Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+# include <stddef.h>
+# include <stdio.h>
+# include <time.h>
+# include <wchar.h>
+#endif
+
+/* Include the original <wctype.h> if it exists.
+   BeOS 5 has the functions but no <wctype.h>.  */
+/* The include_next requires a split double-inclusion guard.  */
+#if @HAVE_WCTYPE_H@
+# @INCLUDE_NEXT@ @NEXT_WCTYPE_H@
+#endif
+
+#ifndef _@GUARD_PREFIX@_WCTYPE_H
+#define _@GUARD_PREFIX@_WCTYPE_H
+
+/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
+
+/* The definition of _GL_WARN_ON_USE is copied here.  */
+
+/* Solaris 2.6 <wctype.h> includes <widec.h> which includes <euc.h> which
+   #defines a number of identifiers in the application namespace.  Revert
+   these #defines.  */
+#ifdef __sun
+# undef multibyte
+# undef eucw1
+# undef eucw2
+# undef eucw3
+# undef scrw1
+# undef scrw2
+# undef scrw3
+#endif
+
+/* Define wint_t and WEOF.  (Also done in wchar.in.h.)  */
+#if !@HAVE_WINT_T@ && !defined wint_t
+# define wint_t int
+# ifndef WEOF
+#  define WEOF -1
+# endif
+#else
+# ifndef WEOF
+#  define WEOF ((wint_t) -1)
+# endif
+#endif
+
+
+#if !GNULIB_defined_wctype_functions
+
+/* FreeBSD 4.4 to 4.11 has <wctype.h> but lacks the functions.
+   Linux libc5 has <wctype.h> and the functions but they are broken.
+   Assume all 11 functions (all isw* except iswblank) are implemented the
+   same way, or not at all.  */
+# if ! @HAVE_ISWCNTRL@ || @REPLACE_ISWCNTRL@
+
+/* IRIX 5.3 has macros but no functions, its isw* macros refer to an
+   undefined variable _ctmp_ and to <ctype.h> macros like _P, and they
+   refer to system functions like _iswctype that are not in the
+   standard C library.  Rather than try to get ancient buggy
+   implementations like this to work, just disable them.  */
+#  undef iswalnum
+#  undef iswalpha
+#  undef iswblank
+#  undef iswcntrl
+#  undef iswdigit
+#  undef iswgraph
+#  undef iswlower
+#  undef iswprint
+#  undef iswpunct
+#  undef iswspace
+#  undef iswupper
+#  undef iswxdigit
+#  undef towlower
+#  undef towupper
+
+/* Linux libc5 has <wctype.h> and the functions but they are broken.  */
+#  if @REPLACE_ISWCNTRL@
+#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#    define iswalnum rpl_iswalnum
+#    define iswalpha rpl_iswalpha
+#    define iswblank rpl_iswblank
+#    define iswcntrl rpl_iswcntrl
+#    define iswdigit rpl_iswdigit
+#    define iswgraph rpl_iswgraph
+#    define iswlower rpl_iswlower
+#    define iswprint rpl_iswprint
+#    define iswpunct rpl_iswpunct
+#    define iswspace rpl_iswspace
+#    define iswupper rpl_iswupper
+#    define iswxdigit rpl_iswxdigit
+#    define towlower rpl_towlower
+#    define towupper rpl_towupper
+#   endif
+#  endif
+
+static inline int
+#  if @REPLACE_ISWCNTRL@
+rpl_iswalnum
+#  else
+iswalnum
+#  endif
+         (wint_t wc)
+{
+  return ((wc >= '0' && wc <= '9')
+          || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z'));
+}
+
+static inline int
+#  if @REPLACE_ISWCNTRL@
+rpl_iswalpha
+#  else
+iswalpha
+#  endif
+         (wint_t wc)
+{
+  return (wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z';
+}
+
+static inline int
+#  if @REPLACE_ISWCNTRL@
+rpl_iswblank
+#  else
+iswblank
+#  endif
+         (wint_t wc)
+{
+  return wc == ' ' || wc == '\t';
+}
+
+static inline int
+#  if @REPLACE_ISWCNTRL@
+rpl_iswcntrl
+#  else
+iswcntrl
+#  endif
+        (wint_t wc)
+{
+  return (wc & ~0x1f) == 0 || wc == 0x7f;
+}
+
+static inline int
+#  if @REPLACE_ISWCNTRL@
+rpl_iswdigit
+#  else
+iswdigit
+#  endif
+         (wint_t wc)
+{
+  return wc >= '0' && wc <= '9';
+}
+
+static inline int
+#  if @REPLACE_ISWCNTRL@
+rpl_iswgraph
+#  else
+iswgraph
+#  endif
+         (wint_t wc)
+{
+  return wc >= '!' && wc <= '~';
+}
+
+static inline int
+#  if @REPLACE_ISWCNTRL@
+rpl_iswlower
+#  else
+iswlower
+#  endif
+         (wint_t wc)
+{
+  return wc >= 'a' && wc <= 'z';
+}
+
+static inline int
+#  if @REPLACE_ISWCNTRL@
+rpl_iswprint
+#  else
+iswprint
+#  endif
+         (wint_t wc)
+{
+  return wc >= ' ' && wc <= '~';
+}
+
+static inline int
+#  if @REPLACE_ISWCNTRL@
+rpl_iswpunct
+#  else
+iswpunct
+#  endif
+         (wint_t wc)
+{
+  return (wc >= '!' && wc <= '~'
+          && !((wc >= '0' && wc <= '9')
+               || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z')));
+}
+
+static inline int
+#  if @REPLACE_ISWCNTRL@
+rpl_iswspace
+#  else
+iswspace
+#  endif
+         (wint_t wc)
+{
+  return (wc == ' ' || wc == '\t'
+          || wc == '\n' || wc == '\v' || wc == '\f' || wc == '\r');
+}
+
+static inline int
+#  if @REPLACE_ISWCNTRL@
+rpl_iswupper
+#  else
+iswupper
+#  endif
+         (wint_t wc)
+{
+  return wc >= 'A' && wc <= 'Z';
+}
+
+static inline int
+#  if @REPLACE_ISWCNTRL@
+rpl_iswxdigit
+#  else
+iswxdigit
+#  endif
+          (wint_t wc)
+{
+  return ((wc >= '0' && wc <= '9')
+          || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'F'));
+}
+
+static inline wint_t
+#  if @REPLACE_ISWCNTRL@
+rpl_towlower
+#  else
+towlower
+#  endif
+         (wint_t wc)
+{
+  return (wc >= 'A' && wc <= 'Z' ? wc - 'A' + 'a' : wc);
+}
+
+static inline wint_t
+#  if @REPLACE_ISWCNTRL@
+rpl_towupper
+#  else
+towupper
+#  endif
+         (wint_t wc)
+{
+  return (wc >= 'a' && wc <= 'z' ? wc - 'a' + 'A' : wc);
+}
+
+# elif @GNULIB_ISWBLANK@ && (! @HAVE_ISWBLANK@ || @REPLACE_ISWBLANK@)
+/* Only the iswblank function is missing.  */
+
+#  if @REPLACE_ISWBLANK@
+#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#    define iswblank rpl_iswblank
+#   endif
+_GL_FUNCDECL_RPL (iswblank, int, (wint_t wc));
+#  else
+_GL_FUNCDECL_SYS (iswblank, int, (wint_t wc));
+#  endif
+
+# endif
+
+# if defined __MINGW32__
+
+/* On native Windows, wchar_t is uint16_t, and wint_t is uint32_t.
+   The functions towlower and towupper are implemented in the MSVCRT library
+   to take a wchar_t argument and return a wchar_t result.  mingw declares
+   these functions to take a wint_t argument and return a wint_t result.
+   This means that:
+   1. When the user passes an argument outside the range 0x0000..0xFFFF, the
+      function will look only at the lower 16 bits.  This is allowed according
+      to POSIX.
+   2. The return value is returned in the lower 16 bits of the result register.
+      The upper 16 bits are random: whatever happened to be in that part of the
+      result register.  We need to fix this by adding a zero-extend from
+      wchar_t to wint_t after the call.  */
+
+static inline wint_t
+rpl_towlower (wint_t wc)
+{
+  return (wint_t) (wchar_t) towlower (wc);
+}
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define towlower rpl_towlower
+#  endif
+
+static inline wint_t
+rpl_towupper (wint_t wc)
+{
+  return (wint_t) (wchar_t) towupper (wc);
+}
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define towupper rpl_towupper
+#  endif
+
+# endif /* __MINGW32__ */
+
+# define GNULIB_defined_wctype_functions 1
+#endif
+
+#if @REPLACE_ISWCNTRL@
+_GL_CXXALIAS_RPL (iswalnum, int, (wint_t wc));
+_GL_CXXALIAS_RPL (iswalpha, int, (wint_t wc));
+_GL_CXXALIAS_RPL (iswcntrl, int, (wint_t wc));
+_GL_CXXALIAS_RPL (iswdigit, int, (wint_t wc));
+_GL_CXXALIAS_RPL (iswgraph, int, (wint_t wc));
+_GL_CXXALIAS_RPL (iswlower, int, (wint_t wc));
+_GL_CXXALIAS_RPL (iswprint, int, (wint_t wc));
+_GL_CXXALIAS_RPL (iswpunct, int, (wint_t wc));
+_GL_CXXALIAS_RPL (iswspace, int, (wint_t wc));
+_GL_CXXALIAS_RPL (iswupper, int, (wint_t wc));
+_GL_CXXALIAS_RPL (iswxdigit, int, (wint_t wc));
+#else
+_GL_CXXALIAS_SYS (iswalnum, int, (wint_t wc));
+_GL_CXXALIAS_SYS (iswalpha, int, (wint_t wc));
+_GL_CXXALIAS_SYS (iswcntrl, int, (wint_t wc));
+_GL_CXXALIAS_SYS (iswdigit, int, (wint_t wc));
+_GL_CXXALIAS_SYS (iswgraph, int, (wint_t wc));
+_GL_CXXALIAS_SYS (iswlower, int, (wint_t wc));
+_GL_CXXALIAS_SYS (iswprint, int, (wint_t wc));
+_GL_CXXALIAS_SYS (iswpunct, int, (wint_t wc));
+_GL_CXXALIAS_SYS (iswspace, int, (wint_t wc));
+_GL_CXXALIAS_SYS (iswupper, int, (wint_t wc));
+_GL_CXXALIAS_SYS (iswxdigit, int, (wint_t wc));
+#endif
+_GL_CXXALIASWARN (iswalnum);
+_GL_CXXALIASWARN (iswalpha);
+_GL_CXXALIASWARN (iswcntrl);
+_GL_CXXALIASWARN (iswdigit);
+_GL_CXXALIASWARN (iswgraph);
+_GL_CXXALIASWARN (iswlower);
+_GL_CXXALIASWARN (iswprint);
+_GL_CXXALIASWARN (iswpunct);
+_GL_CXXALIASWARN (iswspace);
+_GL_CXXALIASWARN (iswupper);
+_GL_CXXALIASWARN (iswxdigit);
+
+#if @GNULIB_ISWBLANK@
+# if @REPLACE_ISWCNTRL@ || @REPLACE_ISWBLANK@
+_GL_CXXALIAS_RPL (iswblank, int, (wint_t wc));
+# else
+_GL_CXXALIAS_SYS (iswblank, int, (wint_t wc));
+# endif
+_GL_CXXALIASWARN (iswblank);
+#endif
+
+#if !@HAVE_WCTYPE_T@
+# if !GNULIB_defined_wctype_t
+typedef void * wctype_t;
+#  define GNULIB_defined_wctype_t 1
+# endif
+#endif
+
+/* Get a descriptor for a wide character property.  */
+#if @GNULIB_WCTYPE@
+# if !@HAVE_WCTYPE_T@
+_GL_FUNCDECL_SYS (wctype, wctype_t, (const char *name));
+# endif
+_GL_CXXALIAS_SYS (wctype, wctype_t, (const char *name));
+_GL_CXXALIASWARN (wctype);
+#elif defined GNULIB_POSIXCHECK
+# undef wctype
+# if HAVE_RAW_DECL_WCTYPE
+_GL_WARN_ON_USE (wctype, "wctype is unportable - "
+                 "use gnulib module wctype for portability");
+# endif
+#endif
+
+/* Test whether a wide character has a given property.
+   The argument WC must be either a wchar_t value or WEOF.
+   The argument DESC must have been returned by the wctype() function.  */
+#if @GNULIB_ISWCTYPE@
+# if !@HAVE_WCTYPE_T@
+_GL_FUNCDECL_SYS (iswctype, int, (wint_t wc, wctype_t desc));
+# endif
+_GL_CXXALIAS_SYS (iswctype, int, (wint_t wc, wctype_t desc));
+_GL_CXXALIASWARN (iswctype);
+#elif defined GNULIB_POSIXCHECK
+# undef iswctype
+# if HAVE_RAW_DECL_ISWCTYPE
+_GL_WARN_ON_USE (iswctype, "iswctype is unportable - "
+                 "use gnulib module iswctype for portability");
+# endif
+#endif
+
+#if @REPLACE_ISWCNTRL@ || defined __MINGW32__
+_GL_CXXALIAS_RPL (towlower, wint_t, (wint_t wc));
+_GL_CXXALIAS_RPL (towupper, wint_t, (wint_t wc));
+#else
+_GL_CXXALIAS_SYS (towlower, wint_t, (wint_t wc));
+_GL_CXXALIAS_SYS (towupper, wint_t, (wint_t wc));
+#endif
+_GL_CXXALIASWARN (towlower);
+_GL_CXXALIASWARN (towupper);
+
+#if !@HAVE_WCTRANS_T@
+# if !GNULIB_defined_wctrans_t
+typedef void * wctrans_t;
+#  define GNULIB_defined_wctrans_t 1
+# endif
+#endif
+
+/* Get a descriptor for a wide character case conversion.  */
+#if @GNULIB_WCTRANS@
+# if !@HAVE_WCTRANS_T@
+_GL_FUNCDECL_SYS (wctrans, wctrans_t, (const char *name));
+# endif
+_GL_CXXALIAS_SYS (wctrans, wctrans_t, (const char *name));
+_GL_CXXALIASWARN (wctrans);
+#elif defined GNULIB_POSIXCHECK
+# undef wctrans
+# if HAVE_RAW_DECL_WCTRANS
+_GL_WARN_ON_USE (wctrans, "wctrans is unportable - "
+                 "use gnulib module wctrans for portability");
+# endif
+#endif
+
+/* Perform a given case conversion on a wide character.
+   The argument WC must be either a wchar_t value or WEOF.
+   The argument DESC must have been returned by the wctrans() function.  */
+#if @GNULIB_TOWCTRANS@
+# if !@HAVE_WCTRANS_T@
+_GL_FUNCDECL_SYS (towctrans, wint_t, (wint_t wc, wctrans_t desc));
+# endif
+_GL_CXXALIAS_SYS (towctrans, wint_t, (wint_t wc, wctrans_t desc));
+_GL_CXXALIASWARN (towctrans);
+#elif defined GNULIB_POSIXCHECK
+# undef towctrans
+# if HAVE_RAW_DECL_TOWCTRANS
+_GL_WARN_ON_USE (towctrans, "towctrans is unportable - "
+                 "use gnulib module towctrans for portability");
+# endif
+#endif
+
+
+#endif /* _@GUARD_PREFIX@_WCTYPE_H */
+#endif /* _@GUARD_PREFIX@_WCTYPE_H */
diff --git a/lib/xalloc-die.c b/lib/xalloc-die.c
new file mode 100644 (file)
index 0000000..aba4a06
--- /dev/null
@@ -0,0 +1,41 @@
+/* Report a memory allocation failure and exit.
+
+   Copyright (C) 1997-2000, 2002-2004, 2006, 2009-2011 Free Software
+   Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+#include "xalloc.h"
+
+#include <stdlib.h>
+
+#include "error.h"
+#include "exitfail.h"
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
+void
+xalloc_die (void)
+{
+  error (exit_failure, 0, "%s", _("memory exhausted"));
+
+  /* The `noreturn' cannot be given to error, since it may return if
+     its first argument is 0.  To help compilers understand the
+     xalloc_die does not return, call abort.  Also, the abort is a
+     safety feature if exit_failure is 0 (which shouldn't happen).  */
+  abort ();
+}
diff --git a/lib/xalloc-oversized.h b/lib/xalloc-oversized.h
new file mode 100644 (file)
index 0000000..ab19bcf
--- /dev/null
@@ -0,0 +1,38 @@
+/* xalloc-oversized.h -- memory allocation size checking
+
+   Copyright (C) 1990-2000, 2003-2004, 2006-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+#ifndef XALLOC_OVERSIZED_H_
+# define XALLOC_OVERSIZED_H_
+
+# include <stddef.h>
+
+/* Return 1 if an array of N objects, each of size S, cannot exist due
+   to size arithmetic overflow.  S must be positive and N must be
+   nonnegative.  This is a macro, not an inline function, so that it
+   works correctly even when SIZE_MAX < N.
+
+   By gnulib convention, SIZE_MAX represents overflow in size
+   calculations, so the conservative dividend to use here is
+   SIZE_MAX - 1, since SIZE_MAX might represent an overflowed value.
+   However, malloc (SIZE_MAX) fails on all known hosts where
+   sizeof (ptrdiff_t) <= sizeof (size_t), so do not bother to test for
+   exactly-SIZE_MAX allocations on such hosts; this avoids a test and
+   branch when S is known to be 1.  */
+# define xalloc_oversized(n, s) \
+    ((size_t) (sizeof (ptrdiff_t) <= sizeof (size_t) ? -1 : -2) / (s) < (n))
+
+#endif /* !XALLOC_OVERSIZED_H_ */
diff --git a/lib/xalloc.h b/lib/xalloc.h
new file mode 100644 (file)
index 0000000..c1bbe7e
--- /dev/null
@@ -0,0 +1,277 @@
+/* xalloc.h -- malloc with out-of-memory checking
+
+   Copyright (C) 1990-2000, 2003-2004, 2006-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+#ifndef XALLOC_H_
+# define XALLOC_H_
+
+# include <stddef.h>
+
+# include "xalloc-oversized.h"
+
+# ifdef __cplusplus
+extern "C" {
+# endif
+
+
+# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 8)
+#  define _GL_ATTRIBUTE_NORETURN __attribute__ ((__noreturn__))
+# else
+#  define _GL_ATTRIBUTE_NORETURN /* empty */
+# endif
+
+# if __GNUC__ >= 3
+#  define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__))
+# else
+#  define _GL_ATTRIBUTE_MALLOC
+# endif
+
+# if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
+#  define _GL_ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args))
+# else
+#  define _GL_ATTRIBUTE_ALLOC_SIZE(args)
+# endif
+
+/* This function is always triggered when memory is exhausted.
+   It must be defined by the application, either explicitly
+   or by using gnulib's xalloc-die module.  This is the
+   function to call when one wants the program to die because of a
+   memory allocation failure.  */
+extern void xalloc_die (void) _GL_ATTRIBUTE_NORETURN;
+
+void *xmalloc (size_t s)
+      _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1));
+void *xzalloc (size_t s)
+      _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1));
+void *xcalloc (size_t n, size_t s)
+      _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1, 2));
+void *xrealloc (void *p, size_t s)
+      _GL_ATTRIBUTE_ALLOC_SIZE ((2));
+void *x2realloc (void *p, size_t *pn);
+void *xmemdup (void const *p, size_t s)
+      _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((2));
+char *xstrdup (char const *str)
+      _GL_ATTRIBUTE_MALLOC;
+
+/* In the following macros, T must be an elementary or structure/union or
+   typedef'ed type, or a pointer to such a type.  To apply one of the
+   following macros to a function pointer or array type, you need to typedef
+   it first and use the typedef name.  */
+
+/* Allocate an object of type T dynamically, with error checking.  */
+/* extern t *XMALLOC (typename t); */
+# define XMALLOC(t) ((t *) xmalloc (sizeof (t)))
+
+/* Allocate memory for N elements of type T, with error checking.  */
+/* extern t *XNMALLOC (size_t n, typename t); */
+# define XNMALLOC(n, t) \
+    ((t *) (sizeof (t) == 1 ? xmalloc (n) : xnmalloc (n, sizeof (t))))
+
+/* Allocate an object of type T dynamically, with error checking,
+   and zero it.  */
+/* extern t *XZALLOC (typename t); */
+# define XZALLOC(t) ((t *) xzalloc (sizeof (t)))
+
+/* Allocate memory for N elements of type T, with error checking,
+   and zero it.  */
+/* extern t *XCALLOC (size_t n, typename t); */
+# define XCALLOC(n, t) \
+    ((t *) (sizeof (t) == 1 ? xzalloc (n) : xcalloc (n, sizeof (t))))
+
+
+# if HAVE_INLINE
+#  define static_inline static inline
+# else
+void *xnmalloc (size_t n, size_t s)
+      _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1, 2));
+void *xnrealloc (void *p, size_t n, size_t s)
+      _GL_ATTRIBUTE_ALLOC_SIZE ((2, 3));
+void *x2nrealloc (void *p, size_t *pn, size_t s);
+char *xcharalloc (size_t n)
+      _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1));
+# endif
+
+# ifdef static_inline
+
+/* Allocate an array of N objects, each with S bytes of memory,
+   dynamically, with error checking.  S must be nonzero.  */
+
+static_inline void *xnmalloc (size_t n, size_t s)
+                    _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1, 2));
+static_inline void *
+xnmalloc (size_t n, size_t s)
+{
+  if (xalloc_oversized (n, s))
+    xalloc_die ();
+  return xmalloc (n * s);
+}
+
+/* Change the size of an allocated block of memory P to an array of N
+   objects each of S bytes, with error checking.  S must be nonzero.  */
+
+static_inline void *xnrealloc (void *p, size_t n, size_t s)
+                    _GL_ATTRIBUTE_ALLOC_SIZE ((2, 3));
+static_inline void *
+xnrealloc (void *p, size_t n, size_t s)
+{
+  if (xalloc_oversized (n, s))
+    xalloc_die ();
+  return xrealloc (p, n * s);
+}
+
+/* If P is null, allocate a block of at least *PN such objects;
+   otherwise, reallocate P so that it contains more than *PN objects
+   each of S bytes.  *PN must be nonzero unless P is null, and S must
+   be nonzero.  Set *PN to the new number of objects, and return the
+   pointer to the new block.  *PN is never set to zero, and the
+   returned pointer is never null.
+
+   Repeated reallocations are guaranteed to make progress, either by
+   allocating an initial block with a nonzero size, or by allocating a
+   larger block.
+
+   In the following implementation, nonzero sizes are increased by a
+   factor of approximately 1.5 so that repeated reallocations have
+   O(N) overall cost rather than O(N**2) cost, but the
+   specification for this function does not guarantee that rate.
+
+   Here is an example of use:
+
+     int *p = NULL;
+     size_t used = 0;
+     size_t allocated = 0;
+
+     void
+     append_int (int value)
+       {
+         if (used == allocated)
+           p = x2nrealloc (p, &allocated, sizeof *p);
+         p[used++] = value;
+       }
+
+   This causes x2nrealloc to allocate a block of some nonzero size the
+   first time it is called.
+
+   To have finer-grained control over the initial size, set *PN to a
+   nonzero value before calling this function with P == NULL.  For
+   example:
+
+     int *p = NULL;
+     size_t used = 0;
+     size_t allocated = 0;
+     size_t allocated1 = 1000;
+
+     void
+     append_int (int value)
+       {
+         if (used == allocated)
+           {
+             p = x2nrealloc (p, &allocated1, sizeof *p);
+             allocated = allocated1;
+           }
+         p[used++] = value;
+       }
+
+   */
+
+static_inline void *
+x2nrealloc (void *p, size_t *pn, size_t s)
+{
+  size_t n = *pn;
+
+  if (! p)
+    {
+      if (! n)
+        {
+          /* The approximate size to use for initial small allocation
+             requests, when the invoking code specifies an old size of
+             zero.  64 bytes is the largest "small" request for the
+             GNU C library malloc.  */
+          enum { DEFAULT_MXFAST = 64 };
+
+          n = DEFAULT_MXFAST / s;
+          n += !n;
+        }
+    }
+  else
+    {
+      /* Set N = ceil (1.5 * N) so that progress is made if N == 1.
+         Check for overflow, so that N * S stays in size_t range.
+         The check is slightly conservative, but an exact check isn't
+         worth the trouble.  */
+      if ((size_t) -1 / 3 * 2 / s <= n)
+        xalloc_die ();
+      n += (n + 1) / 2;
+    }
+
+  *pn = n;
+  return xrealloc (p, n * s);
+}
+
+/* Return a pointer to a new buffer of N bytes.  This is like xmalloc,
+   except it returns char *.  */
+
+static_inline char *xcharalloc (size_t n)
+                    _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1));
+static_inline char *
+xcharalloc (size_t n)
+{
+  return XNMALLOC (n, char);
+}
+
+# endif
+
+# ifdef __cplusplus
+}
+
+/* C++ does not allow conversions from void * to other pointer types
+   without a cast.  Use templates to work around the problem when
+   possible.  */
+
+template <typename T> inline T *
+xrealloc (T *p, size_t s)
+{
+  return (T *) xrealloc ((void *) p, s);
+}
+
+template <typename T> inline T *
+xnrealloc (T *p, size_t n, size_t s)
+{
+  return (T *) xnrealloc ((void *) p, n, s);
+}
+
+template <typename T> inline T *
+x2realloc (T *p, size_t *pn)
+{
+  return (T *) x2realloc ((void *) p, pn);
+}
+
+template <typename T> inline T *
+x2nrealloc (T *p, size_t *pn, size_t s)
+{
+  return (T *) x2nrealloc ((void *) p, pn, s);
+}
+
+template <typename T> inline T *
+xmemdup (T const *p, size_t s)
+{
+  return (T *) xmemdup ((void const *) p, s);
+}
+
+# endif
+
+
+#endif /* !XALLOC_H_ */
diff --git a/lib/xmalloc.c b/lib/xmalloc.c
new file mode 100644 (file)
index 0000000..08c30fb
--- /dev/null
@@ -0,0 +1,124 @@
+/* xmalloc.c -- malloc with out of memory checking
+
+   Copyright (C) 1990-2000, 2002-2006, 2008-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+#if ! HAVE_INLINE
+# define static_inline
+#endif
+#include "xalloc.h"
+#undef static_inline
+
+#include <stdlib.h>
+#include <string.h>
+
+/* 1 if calloc is known to be compatible with GNU calloc.  This
+   matters if we are not also using the calloc module, which defines
+   HAVE_CALLOC_GNU and supports the GNU API even on non-GNU platforms.  */
+#if defined HAVE_CALLOC_GNU || (defined __GLIBC__ && !defined __UCLIBC__)
+enum { HAVE_GNU_CALLOC = 1 };
+#else
+enum { HAVE_GNU_CALLOC = 0 };
+#endif
+
+/* Allocate N bytes of memory dynamically, with error checking.  */
+
+void *
+xmalloc (size_t n)
+{
+  void *p = malloc (n);
+  if (!p && n != 0)
+    xalloc_die ();
+  return p;
+}
+
+/* Change the size of an allocated block of memory P to N bytes,
+   with error checking.  */
+
+void *
+xrealloc (void *p, size_t n)
+{
+  if (!n && p)
+    {
+      /* The GNU and C99 realloc behaviors disagree here.  Act like
+         GNU, even if the underlying realloc is C99.  */
+      free (p);
+      return NULL;
+    }
+
+  p = realloc (p, n);
+  if (!p && n)
+    xalloc_die ();
+  return p;
+}
+
+/* If P is null, allocate a block of at least *PN bytes; otherwise,
+   reallocate P so that it contains more than *PN bytes.  *PN must be
+   nonzero unless P is null.  Set *PN to the new block's size, and
+   return the pointer to the new block.  *PN is never set to zero, and
+   the returned pointer is never null.  */
+
+void *
+x2realloc (void *p, size_t *pn)
+{
+  return x2nrealloc (p, pn, 1);
+}
+
+/* Allocate S bytes of zeroed memory dynamically, with error checking.
+   There's no need for xnzalloc (N, S), since it would be equivalent
+   to xcalloc (N, S).  */
+
+void *
+xzalloc (size_t s)
+{
+  return memset (xmalloc (s), 0, s);
+}
+
+/* Allocate zeroed memory for N elements of S bytes, with error
+   checking.  S must be nonzero.  */
+
+void *
+xcalloc (size_t n, size_t s)
+{
+  void *p;
+  /* Test for overflow, since some calloc implementations don't have
+     proper overflow checks.  But omit overflow and size-zero tests if
+     HAVE_GNU_CALLOC, since GNU calloc catches overflow and never
+     returns NULL if successful.  */
+  if ((! HAVE_GNU_CALLOC && xalloc_oversized (n, s))
+      || (! (p = calloc (n, s)) && (HAVE_GNU_CALLOC || n != 0)))
+    xalloc_die ();
+  return p;
+}
+
+/* Clone an object P of size S, with error checking.  There's no need
+   for xnmemdup (P, N, S), since xmemdup (P, N * S) works without any
+   need for an arithmetic overflow check.  */
+
+void *
+xmemdup (void const *p, size_t s)
+{
+  return memcpy (xmalloc (s), p, s);
+}
+
+/* Clone STRING.  */
+
+char *
+xstrdup (char const *string)
+{
+  return xmemdup (string, strlen (string) + 1);
+}
diff --git a/lib/xstrndup.c b/lib/xstrndup.c
new file mode 100644 (file)
index 0000000..d58302a
--- /dev/null
@@ -0,0 +1,36 @@
+/* Duplicate a bounded initial segment of a string, with out-of-memory
+   checking.
+   Copyright (C) 2003, 2006-2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include "xstrndup.h"
+
+#include <string.h>
+#include "xalloc.h"
+
+/* Return a newly allocated copy of at most N bytes of STRING.
+   In other words, return a copy of the initial segment of length N of
+   STRING.  */
+char *
+xstrndup (const char *string, size_t n)
+{
+  char *s = strndup (string, n);
+  if (! s)
+    xalloc_die ();
+  return s;
+}
diff --git a/lib/xstrndup.h b/lib/xstrndup.h
new file mode 100644 (file)
index 0000000..f96a538
--- /dev/null
@@ -0,0 +1,23 @@
+/* Duplicate a bounded initial segment of a string, with out-of-memory
+   checking.
+   Copyright (C) 2003, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+#include <stddef.h>
+
+/* Return a newly allocated copy of at most N bytes of STRING.
+   In other words, return a copy of the initial segment of length N of
+   STRING.  */
+extern char *xstrndup (const char *string, size_t n);
diff --git a/lib/xstrtol-error.c b/lib/xstrtol-error.c
new file mode 100644 (file)
index 0000000..52e712c
--- /dev/null
@@ -0,0 +1,98 @@
+/* A more useful interface to strtol.
+
+   Copyright (C) 1995-1996, 1998-1999, 2001-2004, 2006-2011 Free Software
+   Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+#include "xstrtol.h"
+
+#include <stdlib.h>
+
+#include "error.h"
+#include "exitfail.h"
+#include "gettext.h"
+
+#define N_(msgid) msgid
+
+/* Report an error for an invalid integer in an option argument.
+
+   ERR is the error code returned by one of the xstrto* functions.
+
+   Use OPT_IDX to decide whether to print the short option string "C"
+   or "-C" or a long option string derived from LONG_OPTION.  OPT_IDX
+   is -2 if the short option "C" was used, without any leading "-"; it
+   is -1 if the short option "-C" was used; otherwise it is an index
+   into LONG_OPTIONS, which should have a name preceded by two '-'
+   characters.
+
+   ARG is the option-argument containing the integer.
+
+   After reporting an error, exit with status EXIT_STATUS if it is
+   nonzero.  */
+
+static void
+xstrtol_error (enum strtol_error err,
+               int opt_idx, char c, struct option const *long_options,
+               char const *arg,
+               int exit_status)
+{
+  char const *hyphens = "--";
+  char const *msgid;
+  char const *option;
+  char option_buffer[2];
+
+  switch (err)
+    {
+    default:
+      abort ();
+
+    case LONGINT_INVALID:
+      msgid = N_("invalid %s%s argument `%s'");
+      break;
+
+    case LONGINT_INVALID_SUFFIX_CHAR:
+    case LONGINT_INVALID_SUFFIX_CHAR_WITH_OVERFLOW:
+      msgid = N_("invalid suffix in %s%s argument `%s'");
+      break;
+
+    case LONGINT_OVERFLOW:
+      msgid = N_("%s%s argument `%s' too large");
+      break;
+    }
+
+  if (opt_idx < 0)
+    {
+      hyphens -= opt_idx;
+      option_buffer[0] = c;
+      option_buffer[1] = '\0';
+      option = option_buffer;
+    }
+  else
+    option = long_options[opt_idx].name;
+
+  error (exit_status, 0, gettext (msgid), hyphens, option, arg);
+}
+
+/* Like xstrtol_error, except exit with a failure status.  */
+
+void
+xstrtol_fatal (enum strtol_error err,
+               int opt_idx, char c, struct option const *long_options,
+               char const *arg)
+{
+  xstrtol_error (err, opt_idx, c, long_options, arg, exit_failure);
+  abort ();
+}
diff --git a/lib/xstrtol.c b/lib/xstrtol.c
new file mode 100644 (file)
index 0000000..97ebd90
--- /dev/null
@@ -0,0 +1,228 @@
+/* A more useful interface to strtol.
+
+   Copyright (C) 1995-1996, 1998-2001, 2003-2007, 2009-2011 Free Software
+   Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+/* Written by Jim Meyering. */
+
+#ifndef __strtol
+# define __strtol strtol
+# define __strtol_t long int
+# define __xstrtol xstrtol
+# define STRTOL_T_MINIMUM LONG_MIN
+# define STRTOL_T_MAXIMUM LONG_MAX
+#endif
+
+#include <config.h>
+
+#include "xstrtol.h"
+
+/* Some pre-ANSI implementations (e.g. SunOS 4)
+   need stderr defined if assertion checking is enabled.  */
+#include <stdio.h>
+
+#include <assert.h>
+#include <ctype.h>
+#include <errno.h>
+#include <limits.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "intprops.h"
+
+static strtol_error
+bkm_scale (__strtol_t *x, int scale_factor)
+{
+  if (TYPE_SIGNED (__strtol_t) && *x < STRTOL_T_MINIMUM / scale_factor)
+    {
+      *x = STRTOL_T_MINIMUM;
+      return LONGINT_OVERFLOW;
+    }
+  if (STRTOL_T_MAXIMUM / scale_factor < *x)
+    {
+      *x = STRTOL_T_MAXIMUM;
+      return LONGINT_OVERFLOW;
+    }
+  *x *= scale_factor;
+  return LONGINT_OK;
+}
+
+static strtol_error
+bkm_scale_by_power (__strtol_t *x, int base, int power)
+{
+  strtol_error err = LONGINT_OK;
+  while (power--)
+    err |= bkm_scale (x, base);
+  return err;
+}
+
+/* FIXME: comment.  */
+
+strtol_error
+__xstrtol (const char *s, char **ptr, int strtol_base,
+           __strtol_t *val, const char *valid_suffixes)
+{
+  char *t_ptr;
+  char **p;
+  __strtol_t tmp;
+  strtol_error err = LONGINT_OK;
+
+  assert (0 <= strtol_base && strtol_base <= 36);
+
+  p = (ptr ? ptr : &t_ptr);
+
+  if (! TYPE_SIGNED (__strtol_t))
+    {
+      const char *q = s;
+      unsigned char ch = *q;
+      while (isspace (ch))
+        ch = *++q;
+      if (ch == '-')
+        return LONGINT_INVALID;
+    }
+
+  errno = 0;
+  tmp = __strtol (s, p, strtol_base);
+
+  if (*p == s)
+    {
+      /* If there is no number but there is a valid suffix, assume the
+         number is 1.  The string is invalid otherwise.  */
+      if (valid_suffixes && **p && strchr (valid_suffixes, **p))
+        tmp = 1;
+      else
+        return LONGINT_INVALID;
+    }
+  else if (errno != 0)
+    {
+      if (errno != ERANGE)
+        return LONGINT_INVALID;
+      err = LONGINT_OVERFLOW;
+    }
+
+  /* Let valid_suffixes == NULL mean `allow any suffix'.  */
+  /* FIXME: update all callers except the ones that allow suffixes
+     after the number, changing last parameter NULL to `""'.  */
+  if (!valid_suffixes)
+    {
+      *val = tmp;
+      return err;
+    }
+
+  if (**p != '\0')
+    {
+      int base = 1024;
+      int suffixes = 1;
+      strtol_error overflow;
+
+      if (!strchr (valid_suffixes, **p))
+        {
+          *val = tmp;
+          return err | LONGINT_INVALID_SUFFIX_CHAR;
+        }
+
+      if (strchr (valid_suffixes, '0'))
+        {
+          /* The ``valid suffix'' '0' is a special flag meaning that
+             an optional second suffix is allowed, which can change
+             the base.  A suffix "B" (e.g. "100MB") stands for a power
+             of 1000, whereas a suffix "iB" (e.g. "100MiB") stands for
+             a power of 1024.  If no suffix (e.g. "100M"), assume
+             power-of-1024.  */
+
+          switch (p[0][1])
+            {
+            case 'i':
+              if (p[0][2] == 'B')
+                suffixes += 2;
+              break;
+
+            case 'B':
+            case 'D': /* 'D' is obsolescent */
+              base = 1000;
+              suffixes++;
+              break;
+            }
+        }
+
+      switch (**p)
+        {
+        case 'b':
+          overflow = bkm_scale (&tmp, 512);
+          break;
+
+        case 'B':
+          overflow = bkm_scale (&tmp, 1024);
+          break;
+
+        case 'c':
+          overflow = 0;
+          break;
+
+        case 'E': /* exa or exbi */
+          overflow = bkm_scale_by_power (&tmp, base, 6);
+          break;
+
+        case 'G': /* giga or gibi */
+        case 'g': /* 'g' is undocumented; for compatibility only */
+          overflow = bkm_scale_by_power (&tmp, base, 3);
+          break;
+
+        case 'k': /* kilo */
+        case 'K': /* kibi */
+          overflow = bkm_scale_by_power (&tmp, base, 1);
+          break;
+
+        case 'M': /* mega or mebi */
+        case 'm': /* 'm' is undocumented; for compatibility only */
+          overflow = bkm_scale_by_power (&tmp, base, 2);
+          break;
+
+        case 'P': /* peta or pebi */
+          overflow = bkm_scale_by_power (&tmp, base, 5);
+          break;
+
+        case 'T': /* tera or tebi */
+        case 't': /* 't' is undocumented; for compatibility only */
+          overflow = bkm_scale_by_power (&tmp, base, 4);
+          break;
+
+        case 'w':
+          overflow = bkm_scale (&tmp, 2);
+          break;
+
+        case 'Y': /* yotta or 2**80 */
+          overflow = bkm_scale_by_power (&tmp, base, 8);
+          break;
+
+        case 'Z': /* zetta or 2**70 */
+          overflow = bkm_scale_by_power (&tmp, base, 7);
+          break;
+
+        default:
+          *val = tmp;
+          return err | LONGINT_INVALID_SUFFIX_CHAR;
+        }
+
+      err |= overflow;
+      *p += suffixes;
+      if (**p)
+        err |= LONGINT_INVALID_SUFFIX_CHAR;
+    }
+
+  *val = tmp;
+  return err;
+}
diff --git a/lib/xstrtol.h b/lib/xstrtol.h
new file mode 100644 (file)
index 0000000..716a94f
--- /dev/null
@@ -0,0 +1,79 @@
+/* A more useful interface to strtol.
+
+   Copyright (C) 1995-1996, 1998-1999, 2001-2004, 2006-2011 Free Software
+   Foundation, 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; 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 <http://www.gnu.org/licenses/>.  */
+
+#ifndef XSTRTOL_H_
+# define XSTRTOL_H_ 1
+
+# include <getopt.h>
+# include <inttypes.h>
+
+# ifndef _STRTOL_ERROR
+enum strtol_error
+  {
+    LONGINT_OK = 0,
+
+    /* These two values can be ORed together, to indicate that both
+       errors occurred.  */
+    LONGINT_OVERFLOW = 1,
+    LONGINT_INVALID_SUFFIX_CHAR = 2,
+
+    LONGINT_INVALID_SUFFIX_CHAR_WITH_OVERFLOW = (LONGINT_INVALID_SUFFIX_CHAR
+                                                 | LONGINT_OVERFLOW),
+    LONGINT_INVALID = 4
+  };
+typedef enum strtol_error strtol_error;
+# endif
+
+# define _DECLARE_XSTRTOL(name, type) \
+  strtol_error name (const char *, char **, int, type *, const char *);
+_DECLARE_XSTRTOL (xstrtol, long int)
+_DECLARE_XSTRTOL (xstrtoul, unsigned long int)
+_DECLARE_XSTRTOL (xstrtoimax, intmax_t)
+_DECLARE_XSTRTOL (xstrtoumax, uintmax_t)
+
+#if HAVE_LONG_LONG_INT
+_DECLARE_XSTRTOL (xstrtoll, long long int)
+_DECLARE_XSTRTOL (xstrtoull, unsigned long long int)
+#endif
+
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 8)
+# define _GL_ATTRIBUTE_NORETURN __attribute__ ((__noreturn__))
+#else
+# define _GL_ATTRIBUTE_NORETURN /* empty */
+#endif
+
+/* Report an error for an invalid integer in an option argument.
+
+   ERR is the error code returned by one of the xstrto* functions.
+
+   Use OPT_IDX to decide whether to print the short option string "C"
+   or "-C" or a long option string derived from LONG_OPTION.  OPT_IDX
+   is -2 if the short option "C" was used, without any leading "-"; it
+   is -1 if the short option "-C" was used; otherwise it is an index
+   into LONG_OPTIONS, which should have a name preceded by two '-'
+   characters.
+
+   ARG is the option-argument containing the integer.
+
+   After reporting an error, exit with a failure status.  */
+
+void xstrtol_fatal (enum strtol_error,
+                    int, char, struct option const *,
+                    char const *) _GL_ATTRIBUTE_NORETURN;
+
+#endif /* not XSTRTOL_H_ */
diff --git a/lib/xstrtoll.c b/lib/xstrtoll.c
new file mode 100644 (file)
index 0000000..db26e87
--- /dev/null
@@ -0,0 +1,6 @@
+#define __strtol strtoll
+#define __strtol_t long long int
+#define __xstrtol xstrtoll
+#define STRTOL_T_MINIMUM LLONG_MIN
+#define STRTOL_T_MAXIMUM LLONG_MAX
+#include "xstrtol.c"
diff --git a/lib/xstrtoul.c b/lib/xstrtoul.c
new file mode 100644 (file)
index 0000000..285f7b9
--- /dev/null
@@ -0,0 +1,6 @@
+#define __strtol strtoul
+#define __strtol_t unsigned long int
+#define __xstrtol xstrtoul
+#define STRTOL_T_MINIMUM 0
+#define STRTOL_T_MAXIMUM ULONG_MAX
+#include "xstrtol.c"
diff --git a/lib/xstrtoull.c b/lib/xstrtoull.c
new file mode 100644 (file)
index 0000000..10dda50
--- /dev/null
@@ -0,0 +1,6 @@
+#define __strtol strtoull
+#define __strtol_t unsigned long long int
+#define __xstrtol xstrtoull
+#define STRTOL_T_MINIMUM 0
+#define STRTOL_T_MAXIMUM ULLONG_MAX
+#include "xstrtol.c"
diff --git a/libparted.pc.in b/libparted.pc.in
new file mode 100644 (file)
index 0000000..3603926
--- /dev/null
@@ -0,0 +1,10 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: libparted
+Description: The GNU Parted disk partitioning shared library
+Version: @VERSION@
+Libs: -L${libdir} -lparted
+Cflags: -I${includedir}
diff --git a/libparted/Makefile.am b/libparted/Makefile.am
new file mode 100644 (file)
index 0000000..0a8923e
--- /dev/null
@@ -0,0 +1,69 @@
+# This file is part of GNU Parted
+# Copyright (C) 1999-2001, 2007, 2009-2011 Free Software Foundation, Inc.
+#
+# This file may be modified and/or distributed without restriction.
+
+SUBDIRS_CHECK =
+if HAVE_CHECK
+SUBDIRS_CHECK += tests
+endif
+
+ARCH_SOURCE = arch/$(OS).c
+if BUILD_LINUX
+ARCH_SOURCE += arch/$(OS).h
+endif
+
+AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
+
+SUBDIRS       = labels fs . $(SUBDIRS_CHECK)
+
+
+partedincludedir      = -I$(top_srcdir)/lib -I$(top_srcdir)/include
+lib_LTLIBRARIES              = libparted.la
+
+# Set the shared library version, per Libtool's guidelines.
+# For details, see the "Updating library version information" section of
+# "info libtool".
+CURRENT = 1
+REVISION = 0
+AGE = 0
+
+libparted_la_LDFLAGS  = -version-info $(CURRENT):$(REVISION):$(AGE)
+
+libparted_la_SOURCES  = debug.c                        \
+                       architecture.c          \
+                       architecture.h          \
+                       device.c                \
+                       exception.c             \
+                       filesys.c               \
+                       libparted.c             \
+                       timer.c                 \
+                       unit.c                  \
+                       disk.c                  \
+                       cs/geom.c               \
+                       cs/constraint.c         \
+                       cs/natmath.c            \
+                       $(ARCH_SOURCE)
+
+
+EXTRA_libparted_la_SOURCES    = arch/linux.c   \
+                               arch/linux.h    \
+                               arch/gnu.c      \
+                               arch/beos.c
+
+libparted_la_LIBADD =  \
+  fs/libfs.la          \
+  labels/liblabels.la  \
+  $(top_builddir)/lib/libgnulib.la \
+  $(OS_LIBS)           \
+  $(DL_LIBS)           \
+  $(DM_LIBS)           \
+  $(SELINUX_LIBS)      \
+  $(LIB_BLKID)         \
+  $(INTLLIBS)
+
+EXTRA_DIST           = mbr.s
+
+INCLUDES = $(partedincludedir) $(INTLINCS)
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/libparted/Makefile.in b/libparted/Makefile.in
new file mode 100644 (file)
index 0000000..01b272c
--- /dev/null
@@ -0,0 +1,1603 @@
+# Makefile.in generated by automake 1.11a from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in 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.
+
+@SET_MAKE@
+
+# This file is part of GNU Parted
+# Copyright (C) 1999-2001, 2007, 2009-2011 Free Software Foundation, Inc.
+#
+# This file may be modified and/or distributed without restriction.
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+@HAVE_CHECK_TRUE@am__append_1 = tests
+@BUILD_LINUX_TRUE@am__append_2 = arch/$(OS).h
+subdir = libparted
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+       $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argmatch.m4 \
+       $(top_srcdir)/m4/assert.m4 $(top_srcdir)/m4/btowc.m4 \
+       $(top_srcdir)/m4/calloc.m4 $(top_srcdir)/m4/canonicalize.m4 \
+       $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
+       $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/configmake.m4 \
+       $(top_srcdir)/m4/dirname.m4 \
+       $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+       $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/environ.m4 \
+       $(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
+       $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fclose.m4 \
+       $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/fcntl_h.m4 \
+       $(top_srcdir)/m4/fflush.m4 $(top_srcdir)/m4/fpending.m4 \
+       $(top_srcdir)/m4/fpurge.m4 $(top_srcdir)/m4/freading.m4 \
+       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/fsync.m4 \
+       $(top_srcdir)/m4/ftell.m4 $(top_srcdir)/m4/ftello.m4 \
+       $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
+       $(top_srcdir)/m4/langinfo_h.m4 $(top_srcdir)/m4/lcmessage.m4 \
+       $(top_srcdir)/m4/lib-ignore.m4 $(top_srcdir)/m4/lib-ld.m4 \
+       $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/localcharset.m4 \
+       $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \
+       $(top_srcdir)/m4/locale-tr.m4 $(top_srcdir)/m4/locale-zh.m4 \
+       $(top_srcdir)/m4/locale_h.m4 $(top_srcdir)/m4/localename.m4 \
+       $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/long-options.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
+       $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+       $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
+       $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+       $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbtowc.m4 \
+       $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+       $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/multiarch.m4 \
+       $(top_srcdir)/m4/nl_langinfo.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/nocrash.m4 $(top_srcdir)/m4/o-direct.m4 \
+       $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/priv-set.m4 \
+       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+       $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+       $(top_srcdir)/m4/read.m4 $(top_srcdir)/m4/readlink.m4 \
+       $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/regex.m4 \
+       $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+       $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/setlocale.m4 \
+       $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/ssize_t.m4 \
+       $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdarg.m4 \
+       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strdup.m4 \
+       $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/strerror_r.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+       $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtoll.m4 \
+       $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/symlink.m4 \
+       $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+       $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/thread.m4 \
+       $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/time_h.m4 \
+       $(top_srcdir)/m4/ungetc.m4 $(top_srcdir)/m4/unistd_h.m4 \
+       $(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkdir.m4 \
+       $(top_srcdir)/m4/usleep.m4 $(top_srcdir)/m4/version-etc.m4 \
+       $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \
+       $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
+       $(top_srcdir)/m4/wcrtomb.m4 $(top_srcdir)/m4/wctob.m4 \
+       $(top_srcdir)/m4/wctomb.m4 $(top_srcdir)/m4/wctype_h.m4 \
+       $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+       $(top_srcdir)/m4/xstrndup.m4 $(top_srcdir)/m4/xstrtol.m4 \
+       $(top_srcdir)/m4/yield.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(libdir)"
+LTLIBRARIES = $(lib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libparted_la_DEPENDENCIES = fs/libfs.la labels/liblabels.la \
+       $(top_builddir)/lib/libgnulib.la $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1)
+am__libparted_la_SOURCES_DIST = debug.c architecture.c architecture.h \
+       device.c exception.c filesys.c libparted.c timer.c unit.c \
+       disk.c cs/geom.c cs/constraint.c cs/natmath.c arch/$(OS).c \
+       arch/$(OS).h
+am__objects_1 =
+am__objects_2 = $(OS).lo $(am__objects_1)
+am_libparted_la_OBJECTS = debug.lo architecture.lo device.lo \
+       exception.lo filesys.lo libparted.lo timer.lo unit.lo disk.lo \
+       geom.lo constraint.lo natmath.lo $(am__objects_2)
+libparted_la_OBJECTS = $(am_libparted_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+libparted_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(libparted_la_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/lib
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+       $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo "  CC      " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+SOURCES = $(libparted_la_SOURCES) $(EXTRA_libparted_la_SOURCES)
+DIST_SOURCES = $(am__libparted_la_SOURCES_DIST) \
+       $(EXTRA_libparted_la_SOURCES)
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+       html-recursive info-recursive install-data-recursive \
+       install-dvi-recursive install-exec-recursive \
+       install-html-recursive install-info-recursive \
+       install-pdf-recursive install-ps-recursive install-recursive \
+       installcheck-recursive installdirs-recursive pdf-recursive \
+       ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
+  distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+       $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+       distdir
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = labels fs . tests
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+pkglibexecdir = @pkglibexecdir@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+BUILDINFO = @BUILDINFO@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHECK_CFLAGS = @CHECK_CFLAGS@
+CHECK_LIBS = @CHECK_LIBS@
+CONFIG_INCLUDE = @CONFIG_INCLUDE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DYNAMIC_LOADING = @DYNAMIC_LOADING@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENABLE_DEVICE_MAPPER = @ENABLE_DEVICE_MAPPER@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FACCESSAT = @GNULIB_FACCESSAT@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCHMODAT = @GNULIB_FCHMODAT@
+GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FCNTL = @GNULIB_FCNTL@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FGETC = @GNULIB_FGETC@
+GNULIB_FGETS = @GNULIB_FGETS@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREAD = @GNULIB_FREAD@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSCANF = @GNULIB_FSCANF@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSTATAT = @GNULIB_FSTATAT@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FUTIMENS = @GNULIB_FUTIMENS@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETC = @GNULIB_GETC@
+GNULIB_GETCHAR = @GNULIB_GETCHAR@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETGROUPS = @GNULIB_GETGROUPS@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETS = @GNULIB_GETS@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
+GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_ISWBLANK = @GNULIB_ISWBLANK@
+GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@
+GNULIB_LCHMOD = @GNULIB_LCHMOD@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LINKAT = @GNULIB_LINKAT@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_LSTAT = @GNULIB_LSTAT@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MBTOWC = @GNULIB_MBTOWC@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDIRAT = @GNULIB_MKDIRAT@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKFIFO = @GNULIB_MKFIFO@
+GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@
+GNULIB_MKNOD = @GNULIB_MKNOD@
+GNULIB_MKNODAT = @GNULIB_MKNODAT@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@
+GNULIB_MKTIME = @GNULIB_MKTIME@
+GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@
+GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@
+GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_OPEN = @GNULIB_OPEN@
+GNULIB_OPENAT = @GNULIB_OPENAT@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE = @GNULIB_PIPE@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_PREAD = @GNULIB_PREAD@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READ = @GNULIB_READ@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_READLINKAT = @GNULIB_READLINKAT@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_REALPATH = @GNULIB_REALPATH@
+GNULIB_REMOVE = @GNULIB_REMOVE@
+GNULIB_RENAME = @GNULIB_RENAME@
+GNULIB_RENAMEAT = @GNULIB_RENAMEAT@
+GNULIB_RMDIR = @GNULIB_RMDIR@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SETLOCALE = @GNULIB_SETLOCALE@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STAT = @GNULIB_STAT@
+GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRERROR_R = @GNULIB_STRERROR_R@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRPTIME = @GNULIB_STRPTIME@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_SYMLINK = @GNULIB_SYMLINK@
+GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
+GNULIB_TIMEGM = @GNULIB_TIMEGM@
+GNULIB_TIME_R = @GNULIB_TIME_R@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
+GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
+GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNLINK = @GNULIB_UNLINK@
+GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_USLEEP = @GNULIB_USLEEP@
+GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VFSCANF = @GNULIB_VFSCANF@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSCANF = @GNULIB_VSCANF@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCPCPY = @GNULIB_WCPCPY@
+GNULIB_WCPNCPY = @GNULIB_WCPNCPY@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@
+GNULIB_WCSCAT = @GNULIB_WCSCAT@
+GNULIB_WCSCHR = @GNULIB_WCSCHR@
+GNULIB_WCSCMP = @GNULIB_WCSCMP@
+GNULIB_WCSCOLL = @GNULIB_WCSCOLL@
+GNULIB_WCSCPY = @GNULIB_WCSCPY@
+GNULIB_WCSCSPN = @GNULIB_WCSCSPN@
+GNULIB_WCSDUP = @GNULIB_WCSDUP@
+GNULIB_WCSLEN = @GNULIB_WCSLEN@
+GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@
+GNULIB_WCSNCAT = @GNULIB_WCSNCAT@
+GNULIB_WCSNCMP = @GNULIB_WCSNCMP@
+GNULIB_WCSNCPY = @GNULIB_WCSNCPY@
+GNULIB_WCSNLEN = @GNULIB_WCSNLEN@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSPBRK = @GNULIB_WCSPBRK@
+GNULIB_WCSRCHR = @GNULIB_WCSRCHR@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCSSPN = @GNULIB_WCSSPN@
+GNULIB_WCSSTR = @GNULIB_WCSSTR@
+GNULIB_WCSTOK = @GNULIB_WCSTOK@
+GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@
+GNULIB_WCSXFRM = @GNULIB_WCSXFRM@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCTOMB = @GNULIB_WCTOMB@
+GNULIB_WCTRANS = @GNULIB_WCTRANS@
+GNULIB_WCTYPE = @GNULIB_WCTYPE@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WMEMCHR = @GNULIB_WMEMCHR@
+GNULIB_WMEMCMP = @GNULIB_WMEMCMP@
+GNULIB_WMEMCPY = @GNULIB_WMEMCPY@
+GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@
+GNULIB_WMEMSET = @GNULIB_WMEMSET@
+GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
+HAVE_CHOWN = @HAVE_CHOWN@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@
+HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SETENV = @HAVE_DECL_SETENV@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@
+HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_DUPLOCALE = @HAVE_DUPLOCALE@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
+HAVE_FCHMODAT = @HAVE_FCHMODAT@
+HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
+HAVE_FCNTL = @HAVE_FCNTL@
+HAVE_FEATURES_H = @HAVE_FEATURES_H@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSTATAT = @HAVE_FSTATAT@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_FUTIMENS = @HAVE_FUTIMENS@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETGROUPS = @HAVE_GETGROUPS@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETLOGIN = @HAVE_GETLOGIN@
+HAVE_GETOPT_H = @HAVE_GETOPT_H@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
+HAVE_GRANTPT = @HAVE_GRANTPT@
+HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWBLANK = @HAVE_ISWBLANK@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
+HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
+HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
+HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
+HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
+HAVE_LCHMOD = @HAVE_LCHMOD@
+HAVE_LCHOWN = @HAVE_LCHOWN@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_LSTAT = @HAVE_LSTAT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSLEN = @HAVE_MBSLEN@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMCHR = @HAVE_MEMCHR@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDIRAT = @HAVE_MKDIRAT@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKFIFO = @HAVE_MKFIFO@
+HAVE_MKFIFOAT = @HAVE_MKFIFOAT@
+HAVE_MKNOD = @HAVE_MKNOD@
+HAVE_MKNODAT = @HAVE_MKNODAT@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
+HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
+HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
+HAVE_OPENAT = @HAVE_OPENAT@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PIPE = @HAVE_PIPE@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PWRITE = @HAVE_PWRITE@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_READLINKAT = @HAVE_READLINKAT@
+HAVE_REALPATH = @HAVE_REALPATH@
+HAVE_RENAMEAT = @HAVE_RENAMEAT@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRPTIME = @HAVE_STRPTIME@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYMLINK = @HAVE_SYMLINK@
+HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_TIMEGM = @HAVE_TIMEGM@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_USLEEP = @HAVE_USLEEP@
+HAVE_UTIMENSAT = @HAVE_UTIMENSAT@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCPCPY = @HAVE_WCPCPY@
+HAVE_WCPNCPY = @HAVE_WCPNCPY@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSCASECMP = @HAVE_WCSCASECMP@
+HAVE_WCSCAT = @HAVE_WCSCAT@
+HAVE_WCSCHR = @HAVE_WCSCHR@
+HAVE_WCSCMP = @HAVE_WCSCMP@
+HAVE_WCSCOLL = @HAVE_WCSCOLL@
+HAVE_WCSCPY = @HAVE_WCSCPY@
+HAVE_WCSCSPN = @HAVE_WCSCSPN@
+HAVE_WCSDUP = @HAVE_WCSDUP@
+HAVE_WCSLEN = @HAVE_WCSLEN@
+HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@
+HAVE_WCSNCAT = @HAVE_WCSNCAT@
+HAVE_WCSNCMP = @HAVE_WCSNCMP@
+HAVE_WCSNCPY = @HAVE_WCSNCPY@
+HAVE_WCSNLEN = @HAVE_WCSNLEN@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSPBRK = @HAVE_WCSPBRK@
+HAVE_WCSRCHR = @HAVE_WCSRCHR@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCSSPN = @HAVE_WCSSPN@
+HAVE_WCSSTR = @HAVE_WCSSTR@
+HAVE_WCSTOK = @HAVE_WCSTOK@
+HAVE_WCSWIDTH = @HAVE_WCSWIDTH@
+HAVE_WCSXFRM = @HAVE_WCSXFRM@
+HAVE_WCTRANS_T = @HAVE_WCTRANS_T@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WCTYPE_T = @HAVE_WCTYPE_T@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WMEMCHR = @HAVE_WMEMCHR@
+HAVE_WMEMCMP = @HAVE_WMEMCMP@
+HAVE_WMEMCPY = @HAVE_WMEMCPY@
+HAVE_WMEMMOVE = @HAVE_WMEMMOVE@
+HAVE_WMEMSET = @HAVE_WMEMSET@
+HAVE_XLOCALE_H = @HAVE_XLOCALE_H@
+HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
+IGNORE_UNUSED_LIBRARIES_CFLAGS = @IGNORE_UNUSED_LIBRARIES_CFLAGS@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@
+INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMULTITHREAD = @LIBMULTITHREAD@
+LIBOBJS = @LIBOBJS@
+LIBPTH = @LIBPTH@
+LIBPTH_PREFIX = @LIBPTH_PREFIX@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTHREAD = @LIBTHREAD@
+LIBTOOL = @LIBTOOL@
+LIB_BLKID = @LIB_BLKID@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBMULTITHREAD = @LTLIBMULTITHREAD@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBPTH = @LTLIBPTH@
+LTLIBTHREAD = @LTLIBTHREAD@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
+NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@
+NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
+NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@
+NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FCNTL_H = @NEXT_FCNTL_H@
+NEXT_GETOPT_H = @NEXT_GETOPT_H@
+NEXT_INTTYPES_H = @NEXT_INTTYPES_H@
+NEXT_LANGINFO_H = @NEXT_LANGINFO_H@
+NEXT_LOCALE_H = @NEXT_LOCALE_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@
+NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@
+NEXT_TIME_H = @NEXT_TIME_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PARTED_USABLE_TEST_DIR = @PARTED_USABLE_TEST_DIR@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CALLOC = @REPLACE_CALLOC@
+REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP = @REPLACE_DUP@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@
+REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FCNTL = @REPLACE_FCNTL@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FSTAT = @REPLACE_FSTAT@
+REPLACE_FSTATAT = @REPLACE_FSTATAT@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_FUTIMENS = @REPLACE_FUTIMENS@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETDELIM = @REPLACE_GETDELIM@
+REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@
+REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LINK = @REPLACE_LINK@
+REPLACE_LINKAT = @REPLACE_LINKAT@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_LSTAT = @REPLACE_LSTAT@
+REPLACE_MALLOC = @REPLACE_MALLOC@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MBTOWC = @REPLACE_MBTOWC@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKDIR = @REPLACE_MKDIR@
+REPLACE_MKFIFO = @REPLACE_MKFIFO@
+REPLACE_MKNOD = @REPLACE_MKNOD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_MKTIME = @REPLACE_MKTIME@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_OPEN = @REPLACE_OPEN@
+REPLACE_OPENAT = @REPLACE_OPENAT@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PREAD = @REPLACE_PREAD@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
+REPLACE_READ = @REPLACE_READ@
+REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_REALLOC = @REPLACE_REALLOC@
+REPLACE_REALPATH = @REPLACE_REALPATH@
+REPLACE_REMOVE = @REPLACE_REMOVE@
+REPLACE_RENAME = @REPLACE_RENAME@
+REPLACE_RENAMEAT = @REPLACE_RENAMEAT@
+REPLACE_RMDIR = @REPLACE_RMDIR@
+REPLACE_SETENV = @REPLACE_SETENV@
+REPLACE_SETLOCALE = @REPLACE_SETLOCALE@
+REPLACE_SLEEP = @REPLACE_SLEEP@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STAT = @REPLACE_STAT@
+REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRERROR_R = @REPLACE_STRERROR_R@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
+REPLACE_STRNDUP = @REPLACE_STRNDUP@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
+REPLACE_SYMLINK = @REPLACE_SYMLINK@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
+REPLACE_UNLINK = @REPLACE_UNLINK@
+REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
+REPLACE_UNSETENV = @REPLACE_UNSETENV@
+REPLACE_USLEEP = @REPLACE_USLEEP@
+REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCTOMB = @REPLACE_WCTOMB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SELINUX_LIBS = @SELINUX_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
+UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
+UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+YIELD_LIB = @YIELD_LIB@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS_CHECK = $(am__append_1)
+ARCH_SOURCE = arch/$(OS).c $(am__append_2)
+AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
+SUBDIRS = labels fs . $(SUBDIRS_CHECK)
+partedincludedir = -I$(top_srcdir)/lib -I$(top_srcdir)/include
+lib_LTLIBRARIES = libparted.la
+
+# Set the shared library version, per Libtool's guidelines.
+# For details, see the "Updating library version information" section of
+# "info libtool".
+CURRENT = 1
+REVISION = 0
+AGE = 0
+libparted_la_LDFLAGS = -version-info $(CURRENT):$(REVISION):$(AGE)
+libparted_la_SOURCES = debug.c                 \
+                       architecture.c          \
+                       architecture.h          \
+                       device.c                \
+                       exception.c             \
+                       filesys.c               \
+                       libparted.c             \
+                       timer.c                 \
+                       unit.c                  \
+                       disk.c                  \
+                       cs/geom.c               \
+                       cs/constraint.c         \
+                       cs/natmath.c            \
+                       $(ARCH_SOURCE)
+
+EXTRA_libparted_la_SOURCES = arch/linux.c      \
+                               arch/linux.h    \
+                               arch/gnu.c      \
+                               arch/beos.c
+
+libparted_la_LIBADD = \
+  fs/libfs.la          \
+  labels/liblabels.la  \
+  $(top_builddir)/lib/libgnulib.la \
+  $(OS_LIBS)           \
+  $(DL_LIBS)           \
+  $(DM_LIBS)           \
+  $(SELINUX_LIBS)      \
+  $(LIB_BLKID)         \
+  $(INTLLIBS)
+
+EXTRA_DIST = mbr.s
+INCLUDES = $(partedincludedir) $(INTLINCS)
+MAINTAINERCLEANFILES = Makefile.in
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libparted/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu libparted/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+       @$(NORMAL_INSTALL)
+       test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
+       @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+       list2=; for p in $$list; do \
+         if test -f $$p; then \
+           list2="$$list2 $$p"; \
+         else :; fi; \
+       done; \
+       test -z "$$list2" || { \
+         echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
+         $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
+       }
+
+uninstall-libLTLIBRARIES:
+       @$(NORMAL_UNINSTALL)
+       @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+       for p in $$list; do \
+         $(am__strip_dir) \
+         echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
+         $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
+       done
+
+clean-libLTLIBRARIES:
+       -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+       @list='$(lib_LTLIBRARIES)'; \
+       locs=`for p in $$list; do echo $$p; done | \
+             sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+             sort -u`; \
+       test -z "$$locs" || { \
+         echo rm -f $${locs}; \
+         rm -f $${locs}; \
+       }
+libparted.la: $(libparted_la_OBJECTS) $(libparted_la_DEPENDENCIES) $(EXTRA_libparted_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(libparted_la_LINK) -rpath $(libdir) $(libparted_la_OBJECTS) $(libparted_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/$(OS).Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/architecture.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/beos.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/constraint.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/debug.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/device.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/disk.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exception.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filesys.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/geom.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnu.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libparted.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linux.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/natmath.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+geom.lo: cs/geom.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT geom.lo -MD -MP -MF $(DEPDIR)/geom.Tpo -c -o geom.lo `test -f 'cs/geom.c' || echo '$(srcdir)/'`cs/geom.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/geom.Tpo $(DEPDIR)/geom.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cs/geom.c' object='geom.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o geom.lo `test -f 'cs/geom.c' || echo '$(srcdir)/'`cs/geom.c
+
+constraint.lo: cs/constraint.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT constraint.lo -MD -MP -MF $(DEPDIR)/constraint.Tpo -c -o constraint.lo `test -f 'cs/constraint.c' || echo '$(srcdir)/'`cs/constraint.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/constraint.Tpo $(DEPDIR)/constraint.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cs/constraint.c' object='constraint.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o constraint.lo `test -f 'cs/constraint.c' || echo '$(srcdir)/'`cs/constraint.c
+
+natmath.lo: cs/natmath.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT natmath.lo -MD -MP -MF $(DEPDIR)/natmath.Tpo -c -o natmath.lo `test -f 'cs/natmath.c' || echo '$(srcdir)/'`cs/natmath.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/natmath.Tpo $(DEPDIR)/natmath.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cs/natmath.c' object='natmath.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o natmath.lo `test -f 'cs/natmath.c' || echo '$(srcdir)/'`cs/natmath.c
+
+$(OS).lo: arch/$(OS).c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT $(OS).lo -MD -MP -MF $(DEPDIR)/$(OS).Tpo -c -o $(OS).lo `test -f 'arch/$(OS).c' || echo '$(srcdir)/'`arch/$(OS).c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$(OS).Tpo $(DEPDIR)/$(OS).Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='arch/$(OS).c' object='$(OS).lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o $(OS).lo `test -f 'arch/$(OS).c' || echo '$(srcdir)/'`arch/$(OS).c
+
+linux.lo: arch/linux.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT linux.lo -MD -MP -MF $(DEPDIR)/linux.Tpo -c -o linux.lo `test -f 'arch/linux.c' || echo '$(srcdir)/'`arch/linux.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/linux.Tpo $(DEPDIR)/linux.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='arch/linux.c' object='linux.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o linux.lo `test -f 'arch/linux.c' || echo '$(srcdir)/'`arch/linux.c
+
+gnu.lo: arch/gnu.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gnu.lo -MD -MP -MF $(DEPDIR)/gnu.Tpo -c -o gnu.lo `test -f 'arch/gnu.c' || echo '$(srcdir)/'`arch/gnu.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/gnu.Tpo $(DEPDIR)/gnu.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='arch/gnu.c' object='gnu.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gnu.lo `test -f 'arch/gnu.c' || echo '$(srcdir)/'`arch/gnu.c
+
+beos.lo: arch/beos.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT beos.lo -MD -MP -MF $(DEPDIR)/beos.Tpo -c -o beos.lo `test -f 'arch/beos.c' || echo '$(srcdir)/'`arch/beos.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/beos.Tpo $(DEPDIR)/beos.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='arch/beos.c' object='beos.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o beos.lo `test -f 'arch/beos.c' || echo '$(srcdir)/'`arch/beos.c
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+       @fail= failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+       @fail= failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       rev=''; for subdir in $$list; do \
+         if test "$$subdir" = "."; then :; else \
+           rev="$$subdir $$rev"; \
+         fi; \
+       done; \
+       rev="$$rev ."; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+ctags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+       done
+cscopelist-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \
+       done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+         empty_fix=.; \
+       else \
+         include_option=--include; \
+         empty_fix=; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test ! -f $$subdir/TAGS || \
+             set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -d "$(distdir)/$$subdir" \
+           || $(MKDIR_P) "$(distdir)/$$subdir" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+           $(am__relativize); \
+           new_distdir=$$reldir; \
+           dir1=$$subdir; dir2="$(top_distdir)"; \
+           $(am__relativize); \
+           new_top_distdir=$$reldir; \
+           echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+           echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+           ($(am__cd) $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$$new_top_distdir" \
+               distdir="$$new_distdir" \
+               am__remove_distdir=: \
+               am__skip_length_check=: \
+               am__skip_mode_fix=: \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(LTLIBRARIES)
+installdirs: installdirs-recursive
+installdirs-am:
+       for dir in "$(DESTDIR)$(libdir)"; do \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+       done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-recursive
+
+clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
+       mostlyclean-am
+
+distclean: distclean-recursive
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am: install-libLTLIBRARIES
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-libLTLIBRARIES
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) \
+       cscopelist-recursive ctags-recursive install-am install-strip \
+       tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+       all all-am check check-am clean clean-generic \
+       clean-libLTLIBRARIES clean-libtool cscopelist \
+       cscopelist-recursive ctags ctags-recursive distclean \
+       distclean-compile distclean-generic distclean-libtool \
+       distclean-tags distdir dvi dvi-am html html-am info info-am \
+       install install-am install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am \
+       install-libLTLIBRARIES install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs installdirs-am maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       tags tags-recursive uninstall uninstall-am \
+       uninstall-libLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libparted/arch/beos.c b/libparted/arch/beos.c
new file mode 100644 (file)
index 0000000..41f67d6
--- /dev/null
@@ -0,0 +1,648 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 2006-2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#include <config.h>
+
+#include <parted/parted.h>
+#include <parted/debug.h>
+
+/* POSIX headers */
+#include <sys/stat.h>
+#include <dirent.h>
+#include <limits.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <errno.h>
+
+/* BeOS APIs */
+#include <drivers/Drivers.h>
+
+/* ZETA R1+ APIs */
+#if B_ZETA_VERSION >= B_ZETA_VERSION_1_0_0
+#  include <device/ata_info.h>
+#endif
+
+#if ENABLE_NLS
+#  include <libintl.h>
+#  define _(String) dgettext (PACKAGE, String)
+#else
+#  define _(String) (String)
+#endif /* ENABLE_NLS */
+
+#include "../architecture.h"
+
+#define BEOS_SPECIFIC(dev)     ((BEOSSpecific*) (dev)->arch_specific)
+
+typedef        struct _BEOSSpecific    BEOSSpecific;
+
+struct _BEOSSpecific {
+       int     fd;
+};
+
+static void
+_scan_for_disks(const char* path)
+{
+       char subdir[PATH_MAX];
+       dirent_t* entp;
+       size_t pos;
+       DIR* dirp;
+
+       if ((dirp=opendir(path)) != NULL)
+       {
+               /* Build first part of path */
+               strcpy(subdir, path);
+               strcat(subdir, "/");
+               pos = strlen(subdir);
+
+               /* Check all directory entries.. */
+               while((entp=readdir(dirp)) != NULL)
+               {
+                       /* If they start with '.' just skip */
+                       if (entp->d_name[0] == '.')
+                               continue;
+
+                       strcpy(subdir+pos, entp->d_name);
+
+                       /* /dev/disk/.../raw are the complete disks
+                               we're interested in */
+                       if (strcmp(entp->d_name, "raw") == 0)
+                               _ped_device_probe(subdir);
+                       else    /* If not 'raw', it most often will
+                                               be another subdir */
+                               _scan_for_disks(subdir);
+               }
+
+               closedir(dirp);
+       }
+}
+
+static void
+_flush_cache(PedDevice* dev)
+{
+       int fd;
+       if ((fd=open(dev->path, O_RDONLY)) < 0)
+       {
+               ioctl(fd, B_FLUSH_DRIVE_CACHE);
+               close(fd);
+       }
+}
+
+#if B_ZETA_VERSION >= B_ZETA_VERSION_1_0_0
+static int
+_device_init_ata(PedDevice* dev)
+{
+       ata_device_infoblock ide_info;
+       int maxlen, len, idx, fd;
+       char buf[256];
+
+       /* Try and get information about device from ATA(PI) driver */
+       if ((fd=open(dev->path, O_RDONLY)) < 0)
+               goto ata_error;
+
+       if (ioctl(fd, B_ATA_GET_DEVICE_INFO, &ide_info, sizeof(ide_info)) < 0)
+               goto ata_error_close;
+
+       close(fd);
+
+       /* Copy 'logical' dimensions */
+       dev->bios_geom.cylinders = ide_info.cylinders;
+       dev->bios_geom.heads = ide_info.heads;
+       dev->bios_geom.sectors = ide_info.sectors;
+
+       /* Copy used dimensions */
+       dev->hw_geom.cylinders = ide_info.current_cylinders;
+       dev->hw_geom.heads = ide_info.current_heads;
+       dev->hw_geom.sectors = ide_info.current_sectors;
+
+       /* Copy total number of sectors */
+       if (ide_info._48_bit_addresses_supported)
+               dev->length = ide_info.LBA48_total_sectors;
+       else if (ide_info.LBA_supported)
+               dev->length = ide_info.LBA_total_sectors;
+       else
+               dev->length = ide_info.cylinders *
+                               ide_info.heads *
+                               ide_info.sectors;
+
+       dev->sector_size =
+       dev->phys_sector_size = PED_SECTOR_SIZE_DEFAULT;
+
+       /* Use sensible model */
+       maxlen=sizeof(ide_info.model_number);
+       strncpy(buf, ide_info.model_number, maxlen);
+       buf[maxlen] = '\0';
+
+       for (len=-1, idx=maxlen-1; idx > 0 && len < 0; idx--)
+               if (buf[idx] > 0x20)
+                       len = idx;
+
+       buf[(len == -1) ? 0 : len+1] = '\0';
+
+       dev->model = strdup(buf);
+
+       return PED_DEVICE_IDE;
+
+ata_error_close:
+       close(fd);
+
+ata_error:
+       return 0;
+}
+#endif
+
+static int
+_device_init_generic_blkdev(PedDevice* dev)
+{
+       device_geometry bios, os;
+       int got_bios_info = 0;
+       int fd;
+
+       /* Try and get information about device from ATA(PI) driver */
+       if ((fd=open(dev->path, O_RDONLY)) < 0)
+               goto blkdev_error;
+
+       /* B_GET_GEOMETRY is mandatory */
+       if (ioctl(fd, B_GET_GEOMETRY, &os, sizeof(os)) < 0)
+               goto blkdev_error_close;
+
+       /* B_GET_BIOS_GEOMETRY is optional */
+       if (!ioctl(fd, B_GET_BIOS_GEOMETRY, &bios, sizeof(bios)))
+               got_bios_info = 1;
+
+       close(fd);
+
+       dev->hw_geom.cylinders = os.cylinder_count;
+       dev->hw_geom.heads = os.head_count;
+       dev->hw_geom.sectors = os.sectors_per_track;
+
+       dev->sector_size =
+       dev->phys_sector_size = os.bytes_per_sector;
+
+       if (got_bios_info)
+       {
+               dev->bios_geom.cylinders = bios.cylinder_count;
+               dev->bios_geom.heads = bios.head_count;
+               dev->bios_geom.sectors = bios.sectors_per_track;
+       }
+       else
+               dev->bios_geom = dev->hw_geom;
+
+       dev->model = strdup("");
+
+       return PED_DEVICE_IDE;
+
+blkdev_error_close:
+       close(fd);
+
+blkdev_error:
+       return 0;
+}
+
+static int
+_device_init_blkdev(PedDevice* dev)
+{
+       int type;
+
+#if B_ZETA_VERSION >= B_ZETA_VERSION_1_0_0
+       if (!(type=_device_init_ata(dev)))
+#endif
+       type = _device_init_generic_blkdev(dev);
+
+       return type;
+}
+
+static int
+_device_init_file(PedDevice* dev, struct stat* dev_statp)
+{
+       if (!dev_statp->st_size)
+               return 0;
+
+       dev->sector_size =
+       dev->phys_sector_size = PED_SECTOR_SIZE_DEFAULT;
+
+       dev->length = dev_statp->st_size / PED_SECTOR_SIZE_DEFAULT;
+
+       dev->bios_geom.cylinders = dev->length / (4 * 32);
+       dev->bios_geom.heads = 4;
+       dev->bios_geom.sectors = 32;
+       dev->hw_geom = dev->bios_geom;
+
+       dev->model = strdup(_("Disk Image"));
+
+       return PED_DEVICE_FILE;
+}
+
+static int
+_device_init(PedDevice* dev)
+{
+       struct stat dev_stat;
+       int type = 0;
+
+       /* Check if we're a regular file */
+       if (stat(dev->path, &dev_stat) < 0)
+               goto done;
+
+       if (S_ISBLK(dev_stat.st_mode) || S_ISCHR(dev_stat.st_mode))
+               type = _device_init_blkdev(dev);
+       else if (S_ISREG(dev_stat.st_mode))
+               type = _device_init_file(dev,&dev_stat);
+
+done:
+       return type;
+}
+
+
+static PedDevice*
+beos_new (const char* path)
+{
+       struct stat stat_info;
+       PedDevice* dev;
+
+       PED_ASSERT(path != NULL);
+
+       dev = (PedDevice*) ped_malloc (sizeof (PedDevice));
+       if (!dev)
+               goto error;
+
+       dev->path = strdup(path);
+       if (!dev->path)
+               goto error_free_dev;
+
+       dev->arch_specific
+               = (BEOSSpecific*) ped_malloc(sizeof(BEOSSpecific));
+       if (dev->arch_specific == NULL)
+               goto error_free_path;
+
+       dev->open_count = 0;
+       dev->read_only = 0;
+       dev->external_mode = 0;
+       dev->dirty = 0;
+       dev->boot_dirty = 0;
+
+       if ((dev->type=_device_init(dev)) <= 0)
+               goto error_free_arch_specific;
+
+       /* All OK! */
+       return dev;
+
+error_free_arch_specific:
+       free (dev->arch_specific);
+
+error_free_path:
+       free (dev->path);
+
+error_free_dev:
+       free (dev);
+
+error:
+       return NULL;
+}
+
+static void
+beos_destroy (PedDevice* dev)
+{
+       free (dev->arch_specific);
+       free (dev->path);
+       free (dev->model);
+       free (dev);
+}
+
+static int
+beos_is_busy (PedDevice* dev)
+{
+       return 1;
+}
+
+static int
+beos_open (PedDevice* dev)
+{
+       BEOSSpecific* arch_specific = BEOS_SPECIFIC(dev);
+
+retry:
+       arch_specific->fd = open(dev->path, O_RDWR);
+       if (arch_specific->fd == -1) {
+               char* rw_error_msg = strerror(errno);
+
+               arch_specific->fd = open (dev->path, O_RDONLY);
+               if (arch_specific->fd == -1) {
+                       if (ped_exception_throw (
+                                       PED_EXCEPTION_ERROR,
+                                       PED_EXCEPTION_RETRY_CANCEL,
+                                       _("Error opening %s: %s"),
+                                       dev->path, strerror (errno))
+                                       != PED_EXCEPTION_RETRY) {
+                                               return 0;
+                                       } else {
+                                               goto retry;
+                                       }
+               } else {
+                       ped_exception_throw (
+                               PED_EXCEPTION_WARNING,
+                               PED_EXCEPTION_OK,
+                               _("Unable to open %s read-write (%s).  %s has "
+                                       "been opened read-only."),
+                               dev->path, rw_error_msg, dev->path);
+                       dev->read_only = 1;
+               }
+       } else {
+               dev->read_only = 0;
+       }
+
+       _flush_cache (dev);
+
+       return 1;
+}
+
+static int
+beos_refresh_open (PedDevice* dev)
+{
+       return 1;
+}
+
+static int
+beos_close (PedDevice* dev)
+{
+       BEOSSpecific* arch_specific = BEOS_SPECIFIC(dev);
+
+       if (dev->dirty)
+               _flush_cache (dev);
+
+       close (arch_specific->fd);
+
+       return 1;
+}
+
+static int
+beos_refresh_close (PedDevice* dev)
+{
+       if (dev->dirty)
+               _flush_cache (dev);
+
+       return 1;
+}
+
+static int
+beos_read (const PedDevice* dev, void* buffer, PedSector start, PedSector count)
+{
+       BEOSSpecific* arch_specific = BEOS_SPECIFIC(dev);
+       int status;
+       PedExceptionOption ex_status;
+       size_t read_length = count * dev->sector_size;
+
+       PED_ASSERT(dev->sector_size % PED_SECTOR_SIZE_DEFAULT == 0);
+
+       /* First, try to seek */
+       while(1)
+       {
+               if (lseek(arch_specific->fd, start * dev->sector_size, SEEK_SET)
+                       == start * dev->sector_size)
+                       break;
+
+               ex_status = ped_exception_throw (
+                       PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_RETRY_IGNORE_CANCEL,
+                       _("%s during seek for read on %s"),
+                       strerror (errno), dev->path);
+
+               switch (ex_status)
+               {
+                       case PED_EXCEPTION_IGNORE:
+                               return 1;
+                       case PED_EXCEPTION_RETRY:
+                               break /* out of switch */;
+                       case PED_EXCEPTION_UNHANDLED:
+                               ped_exception_catch ();
+                       case PED_EXCEPTION_CANCEL:
+                               return 0;
+               }
+       }
+
+       /* If we seeked ok, now is the time to read */
+       while (1)
+       {
+               status = read(arch_specific->fd, buffer, read_length);
+               if (status == count * dev->sector_size)
+                       break;
+
+               if (status > 0)
+               {
+                       read_length -= status;
+                       buffer += status;
+                       continue;
+               }
+
+               ex_status = ped_exception_throw (
+                       PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_RETRY_IGNORE_CANCEL,
+                       _("%s during read on %s"),
+                       strerror (errno),
+                       dev->path);
+
+               switch (ex_status)
+               {
+                       case PED_EXCEPTION_IGNORE:
+                               return 1;
+                       case PED_EXCEPTION_RETRY:
+                               break;
+                       case PED_EXCEPTION_UNHANDLED:
+                               ped_exception_catch ();
+                       case PED_EXCEPTION_CANCEL:
+                               return 0;
+               }
+       }
+
+       return 1;
+}
+
+static int
+beos_write (PedDevice* dev, const void* buffer, PedSector start,
+       PedSector count)
+{
+       BEOSSpecific* arch_specific = BEOS_SPECIFIC(dev);
+       int                     status;
+       PedExceptionOption      ex_status;
+       size_t                  write_length = count * dev->sector_size;
+
+       PED_ASSERT(dev->sector_size % PED_SECTOR_SIZE_DEFAULT == 0);
+
+       if (dev->read_only)
+       {
+               if (ped_exception_throw (
+                       PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_IGNORE_CANCEL,
+                       _("Can't write to %s, because it is opened read-only."),
+                       dev->path)
+                       != PED_EXCEPTION_IGNORE)
+                       return 0;
+               else
+                       return 1;
+       }
+
+       while(1)
+       {
+               if (lseek(arch_specific->fd,start * dev->sector_size,SEEK_SET)
+                       == start * dev->sector_size)
+                       break;
+
+               ex_status = ped_exception_throw (
+                       PED_EXCEPTION_ERROR, PED_EXCEPTION_RETRY_IGNORE_CANCEL,
+                       _("%s during seek for write on %s"),
+                       strerror (errno), dev->path);
+
+               switch (ex_status)
+               {
+                       case PED_EXCEPTION_IGNORE:
+                               return 1;
+                       case PED_EXCEPTION_RETRY:
+                               break;
+                       case PED_EXCEPTION_UNHANDLED:
+                               ped_exception_catch ();
+                       case PED_EXCEPTION_CANCEL:
+                               return 0;
+               }
+       }
+
+#ifdef READ_ONLY
+       printf ("ped_device_write (\"%s\", %p, %d, %d)\n",
+               dev->path, buffer, (int) start, (int) count);
+#else
+       dev->dirty = 1;
+       while(1)
+       {
+               status = write (arch_specific->fd, buffer, write_length);
+               if (status == count * dev->sector_size)
+                       break;
+
+               if (status > 0)
+               {
+                       write_length -= status;
+                       buffer += status;
+                       continue;
+               }
+
+               ex_status = ped_exception_throw (
+                       PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_RETRY_IGNORE_CANCEL,
+                       _("%s during write on %s"),
+                       strerror (errno), dev->path);
+
+               switch (ex_status)
+               {
+                       case PED_EXCEPTION_IGNORE:
+                               return 1;
+                       case PED_EXCEPTION_RETRY:
+                               break;
+                       case PED_EXCEPTION_UNHANDLED:
+                               ped_exception_catch ();
+                       case PED_EXCEPTION_CANCEL:
+                               return 0;
+               }
+       }
+#endif /* !READ_ONLY */
+
+       return 1;
+}
+
+static PedSector
+beos_check (PedDevice* dev, void* buffer, PedSector start, PedSector count)
+{
+       BEOSSpecific*   arch_specific = BEOS_SPECIFIC(dev);
+       PedSector               done = 0;
+       int                             status;
+
+       PED_ASSERT(dev != NULL);
+
+       if (lseek(arch_specific->fd, start * dev->sector_size, SEEK_SET)
+               != start * dev->sector_size)
+               return 0;
+
+       for (done = 0; done < count; done += status / dev->sector_size)
+       {
+               status = read (arch_specific->fd, buffer,
+                               (size_t) ((count-done) * dev->sector_size));
+               if (status < 0)
+                       break;
+       }
+
+       return done;
+}
+
+static int
+beos_sync (PedDevice* dev)
+{
+       return 1;
+}
+
+static int
+beos_sync_fast (PedDevice* dev)
+{
+       return 1;
+}
+
+/* Probe for all available disks */
+static void
+beos_probe_all ()
+{
+       /* For BeOS/ZETA/Haiku, all disks are published under /dev/disk */
+       _scan_for_disks("/dev/disk");
+}
+
+static char*
+beos_partition_get_path (const PedPartition* part)
+{
+       return NULL;
+}
+
+static int
+beos_partition_is_busy (const PedPartition* part)
+{
+       return 0;
+}
+
+static int
+beos_disk_commit (PedDisk* disk)
+{
+       return 0;
+}
+
+static PedDeviceArchOps beos_dev_ops = {
+        _new:           beos_new,
+        destroy:        beos_destroy,
+        is_busy:        beos_is_busy,
+        open:           beos_open,
+        refresh_open:   beos_refresh_open,
+        close:          beos_close,
+        refresh_close:  beos_refresh_close,
+        read:           beos_read,
+        write:          beos_write,
+        check:          beos_check,
+        sync:           beos_sync,
+        sync_fast:      beos_sync_fast,
+        probe_all:      beos_probe_all
+};
+
+static PedDiskArchOps beos_disk_ops =  {
+        partition_get_path:     beos_partition_get_path,
+        partition_is_busy:      beos_partition_is_busy,
+        disk_commit:            beos_disk_commit
+};
+
+PedArchitecture ped_beos_arch = {
+        dev_ops:        &beos_dev_ops,
+        disk_ops:       &beos_disk_ops
+};
diff --git a/libparted/arch/gnu.c b/libparted/arch/gnu.c
new file mode 100644 (file)
index 0000000..664f300
--- /dev/null
@@ -0,0 +1,889 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 1999-2001, 2005, 2007, 2009-2011 Free Software Foundation,
+    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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#include <config.h>
+
+#include <parted/parted.h>
+#include <parted/debug.h>
+
+#include <errno.h>
+#include <hurd.h>
+#include <hurd/fs.h>
+#include <hurd/store.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#if ENABLE_NLS
+#  include <libintl.h>
+#  define _(String) dgettext (PACKAGE, String)
+#else
+#  define _(String) (String)
+#endif /* ENABLE_NLS */
+
+#include "../architecture.h"
+
+#define GNU_SPECIFIC(dev)      ((GNUSpecific*) (dev)->arch_specific)
+
+typedef        struct _GNUSpecific     GNUSpecific;
+
+struct _GNUSpecific {
+       struct store*   store;
+       int consume;
+};
+
+/* Initialize a PedDevice using SOURCE.  The SOURCE will NOT be destroyed;
+   the caller created it, it is the caller's responsilbility to free it
+   after it calls ped_device_destory.  SOURCE is not registered in Parted's
+   list of devices.  */
+PedDevice* ped_device_new_from_store (struct store *source);
+
+static int
+_device_get_sector_size (PedDevice* dev)
+{
+       GNUSpecific*    arch_specific = GNU_SPECIFIC (dev);
+       size_t          store_block_size = arch_specific->store->block_size;
+
+       return PED_SECTOR_SIZE_DEFAULT;
+}
+
+static PedSector
+_device_get_length (PedDevice* dev)
+{
+       GNUSpecific*    arch_specific = GNU_SPECIFIC (dev);
+       size_t          store_blocks = arch_specific->store->blocks;
+       size_t          store_block_size = arch_specific->store->block_size;
+
+       return ((long long) store_blocks * store_block_size) / PED_SECTOR_SIZE_DEFAULT;
+}
+
+static int
+_device_probe_geometry (PedDevice* dev)
+{
+       PedSector cyl_size;
+
+       dev->length = _device_get_length (dev);
+       if (!dev->length)
+               return 0;
+
+       dev->sector_size = _device_get_sector_size (dev);
+       if (!dev->sector_size)
+               return 0;
+
+       /* XXX: We have no way to get this!  */
+       dev->bios_geom.sectors = 63;
+       dev->bios_geom.heads = 255;
+       cyl_size = dev->bios_geom.sectors * dev->bios_geom.heads;
+       dev->bios_geom.cylinders = dev->length / cyl_size
+                                       * (dev->sector_size / PED_SECTOR_SIZE_DEFAULT);
+       dev->hw_geom = dev->bios_geom;
+
+       return 1;
+}
+
+static int
+init_file (PedDevice* dev)
+{
+       PedExceptionOption      ex_status;
+
+retry_open:
+       if (!ped_device_open (dev)) {
+               ex_status = ped_exception_throw (
+                               PED_EXCEPTION_WARNING,
+                               PED_EXCEPTION_RETRY_CANCEL,
+                               _("Unable to open %s."),
+                               dev->path);
+               switch (ex_status) {
+                       case PED_EXCEPTION_RETRY:
+                               goto retry_open;
+
+                       case PED_EXCEPTION_UNHANDLED:
+                               ped_exception_catch ();
+                       case PED_EXCEPTION_CANCEL:
+                               goto error;
+               }
+
+               return 0;
+       }
+
+retry_probe:
+       if (!_device_probe_geometry (dev)) {
+               ex_status = ped_exception_throw (
+                               PED_EXCEPTION_WARNING,
+                               PED_EXCEPTION_RETRY_CANCEL,
+                               _("Unable to probe store."));
+               switch (ex_status) {
+                       case PED_EXCEPTION_RETRY:
+                               goto retry_probe;
+
+                       case PED_EXCEPTION_UNHANDLED:
+                               ped_exception_catch ();
+                       case PED_EXCEPTION_CANCEL:
+                               goto error_close_dev;
+               }
+
+               return 0;
+       }
+
+       dev->model = "";
+
+       ped_device_close (dev);
+       return 1;
+
+error_close_dev:
+       ped_device_close (dev);
+error:
+       return 0;
+}
+
+static void
+_flush_cache (PedDevice* dev)
+{
+       GNUSpecific*    arch_specific = GNU_SPECIFIC (dev);
+
+       if (dev->read_only)
+               return;
+
+       /* Wait for a complete sync to finish.  */
+       file_sync (arch_specific->store->source, 1, 0);
+}
+
+/* Initialize by allocating memory and filling in a few defaults, a
+   PedDevice structure.  */
+static PedDevice*
+_init_device (const char *path)
+{
+       PedDevice *dev;
+       GNUSpecific*    arch_specific;
+
+       dev = (PedDevice*) ped_malloc (sizeof (PedDevice));
+       if (!dev)
+               goto error;
+
+       dev->path = strdup (path);
+       if (!dev->path)
+               goto error_free_dev;
+
+       dev->arch_specific
+               = (GNUSpecific*) ped_malloc (sizeof (GNUSpecific));
+       if (!dev->arch_specific)
+               goto error_free_path;
+
+       dev->type = PED_DEVICE_FILE;    /* FIXME? */
+       dev->open_count = 0;
+       dev->read_only = 0;
+       dev->external_mode = 0;
+       dev->dirty = 0;
+       dev->boot_dirty = 0;
+
+       return dev;
+
+error_free_arch_specific:
+       free (dev->arch_specific);
+error_free_path:
+       free (dev->path);
+error_free_dev:
+       free (dev);
+error:
+       return NULL;
+}
+
+static int
+_kernel_reread_part_table (PedDevice* dev)
+{
+       /* XXX: We must wait for partfs to be finished.  */
+       return 1;
+}
+
+/* Free the memory associated with a PedDevice structure.  */
+static void
+_done_device (PedDevice *dev)
+{
+        free (dev->arch_specific);
+       free (dev->path);
+       free (dev);
+}
+
+/* Release all resources that libparted owns in DEV.  */
+static void
+gnu_destroy (PedDevice* dev)
+{
+       GNUSpecific*    arch_specific = GNU_SPECIFIC (dev);
+
+       if (arch_specific->consume)
+               store_free (arch_specific->store);
+
+       _done_device (dev);
+}
+
+static PedDevice*
+gnu_new (const char* path)
+{
+       PedDevice*      dev;
+       GNUSpecific*    arch_specific;
+       error_t         ro_err, rw_err;
+       int             ispath;
+
+       PED_ASSERT (path != NULL);
+
+       dev = _init_device (path);
+       if (!dev)
+               return NULL;
+
+       arch_specific = GNU_SPECIFIC (dev);
+       arch_specific->consume = 1;
+
+ retry_open:
+       /* Try read-write. */
+       if (strchr (dev->path, '/') != NULL) {
+               /* We set this to prevent having to use strchr more then once. */
+               ispath = 1;
+
+               rw_err = store_open (dev->path, 0, NULL, &arch_specific->store);
+       } else {
+               rw_err = store_typed_open (dev->path, 0, NULL, &arch_specific->store);
+       }
+
+       /* Try readonly. */
+       if (rw_err) {
+         if (ispath) {
+               ro_err = store_open (dev->path, STORE_READONLY, NULL,
+                                &arch_specific->store);
+         } else {
+               ro_err = store_typed_open (dev->path, STORE_READONLY, NULL,
+                                      &arch_specific->store);
+         }
+
+       if (ro_err) {
+               if (ped_exception_throw (
+                               PED_EXCEPTION_ERROR,
+                               PED_EXCEPTION_RETRY_CANCEL,
+                               _("Error opening %s: %s"),
+                               dev->path, strerror (ro_err))
+                                       != PED_EXCEPTION_RETRY) {
+                               return NULL;
+                       } else
+                               goto retry_open;
+               } else {
+                       ped_exception_throw (
+                               PED_EXCEPTION_WARNING,
+                               PED_EXCEPTION_OK,
+                               _("Unable to open %s read-write (%s).  %s has "
+                                 "been opened read-only."),
+                               dev->path, strerror (rw_err), dev->path);
+                       dev->read_only = 1;
+               }
+       } else {
+               dev->read_only = 0;
+       }
+
+       _flush_cache (dev);
+
+       if (!init_file (dev)) {
+               gnu_destroy(dev);
+               return NULL;
+       }
+
+       return dev;
+}
+
+PedDevice*
+ped_device_new_from_store (struct store *source)
+{
+        PedDevice*      dev;
+       GNUSpecific*    arch_specific;
+
+       PED_ASSERT (source != NULL);
+
+       dev = _init_device (source->name ?: "(unknown)");
+       if (!dev)
+               return NULL;
+
+       arch_specific = GNU_SPECIFIC (dev);
+       arch_specific->store = source;
+       arch_specific->consume = 0;
+
+       dev->read_only = source->flags & (STORE_READONLY|STORE_HARD_READONLY);
+
+       if (!init_file (dev)) {
+               _done_device (dev);
+               return NULL;
+       }
+
+       return dev;
+}
+
+static int
+gnu_is_busy (PedDevice* dev)
+{
+       return 0;
+}
+
+static int
+gnu_open (PedDevice* dev)
+{
+        return 1;
+}
+
+static int
+gnu_refresh_open (PedDevice* dev)
+{
+       return 1;
+}
+
+static int
+gnu_close (PedDevice* dev)
+{
+       GNUSpecific*    arch_specific = GNU_SPECIFIC (dev);
+
+       _flush_cache (dev);
+
+       if (dev->dirty && dev->type != PED_DEVICE_FILE) {
+               if (_kernel_reread_part_table (dev))
+                       dev->dirty = 0;
+       }
+
+#if 0
+       if (dev->dirty && dev->boot_dirty && dev->type != PED_DEVICE_FILE) {
+               /* ouch! */
+               ped_exception_throw (
+                       PED_EXCEPTION_WARNING,
+                       PED_EXCEPTION_OK,
+                       _("The partition table cannot be re-read.  This means "
+                         "you need to reboot before mounting any "
+                         "modified partitions.  You also need to reinstall "
+                         "your boot loader before you reboot (which may "
+                         "require mounting modified partitions).  It is "
+                         "impossible do both things!  So you'll need to "
+                         "boot off a rescue disk, and reinstall your boot "
+                         "loader from the rescue disk.  Read section 4 of "
+                         "the Parted User documentation for more "
+                         "information."));
+               return 1;
+       }
+
+       if (dev->dirty && dev->type != PED_DEVICE_FILE) {
+               ped_exception_throw (
+                       PED_EXCEPTION_WARNING,
+                       PED_EXCEPTION_IGNORE,
+                       _("The partition table on %s cannot be re-read "
+                         "(%s).  This means the Hurd knows nothing about any "
+                         "modifications you made.  You should reboot your "
+                         "computer before doing anything with %s."),
+                       dev->path, strerror (errno), dev->path);
+       }
+
+       if (dev->boot_dirty && dev->type != PED_DEVICE_FILE) {
+               ped_exception_throw (
+                       PED_EXCEPTION_WARNING,
+                       PED_EXCEPTION_OK,
+                       _("You should reinstall your boot loader before "
+                         "rebooting.  Read section 4 of the Parted User "
+                         "documentation for more information."));
+       }
+#endif
+
+       return 1;
+}
+
+static int
+gnu_refresh_close (PedDevice* dev)
+{
+       _flush_cache (dev);
+       return 1;
+}
+
+static int
+gnu_read (const PedDevice* dev, void* user_buffer, PedSector device_start,
+          PedSector count)
+{
+       GNUSpecific*            arch_specific = GNU_SPECIFIC (dev);
+       error_t                 err;
+       PedExceptionOption      ex_status;
+       size_t                  start;
+       size_t                  store_start_block;
+       /* In bytes.  This can be larger than COUNT when store pages are
+          larger than PED_SECTOR_SIZE_DEFAULT.  */
+       size_t                  store_read_length;
+       char                    local_buffer[PED_SECTOR_SIZE_DEFAULT];
+       void *                  store_read_buffer;
+       size_t                  have_read;
+       size_t                  read_offset;
+       size_t                  device_read_length = count * PED_SECTOR_SIZE_DEFAULT;
+
+       start = device_start * PED_SECTOR_SIZE_DEFAULT;
+       if (PED_SECTOR_SIZE_DEFAULT != arch_specific->store->block_size) {
+               store_start_block = start / arch_specific->store->block_size;
+               store_read_length = (device_read_length
+                                    + arch_specific->store->block_size - 1)
+                                   / arch_specific->store->block_size;
+       } else {
+               store_start_block = device_start;
+               store_read_length = device_read_length;
+       }
+
+       read_offset = start
+                     - store_start_block * arch_specific->store->block_size;
+
+       if (store_read_length % arch_specific->store->block_size != 0)
+               store_read_length = store_read_length
+                                   + arch_specific->store->block_size
+                                   - store_read_length % arch_specific->store->block_size;
+
+retry:
+       have_read = 0;
+       while (1) {
+               size_t  did_read;
+               size_t  offset;
+
+               store_read_buffer = local_buffer;
+               did_read = sizeof (local_buffer);
+
+               err = store_read (arch_specific->store, store_start_block,
+                                 store_read_length - have_read,
+                                 &store_read_buffer, &did_read);
+               if (err) {
+                       ex_status = ped_exception_throw (
+                               PED_EXCEPTION_ERROR,
+                               PED_EXCEPTION_RETRY_IGNORE_CANCEL,
+                               _("%s during read on %s"),
+                               strerror (err),
+                               dev->path);
+
+                       switch (ex_status) {
+                               case PED_EXCEPTION_IGNORE:
+                                       return 1;
+
+                               case PED_EXCEPTION_RETRY:
+                                       goto retry;
+
+                               case PED_EXCEPTION_UNHANDLED:
+                                       ped_exception_catch ();
+                               case PED_EXCEPTION_CANCEL:
+                                       return 0;
+                       }
+               }
+
+               memcpy (user_buffer + have_read - read_offset,
+                       store_read_buffer
+                       + (have_read >= read_offset
+                               ? 0 : read_offset - have_read),
+                       have_read + did_read > device_read_length + read_offset
+                               ? device_read_length + read_offset - have_read
+                               : did_read);
+
+               if (store_read_buffer != local_buffer)
+                       vm_deallocate (mach_task_self (),
+                                      (long) store_read_buffer, did_read);
+
+               have_read += did_read;
+               store_start_block += did_read
+                                       / arch_specific->store->block_size;
+
+               if (have_read >= device_read_length)
+                       break;
+       }
+
+       return 1;
+}
+
+static int
+gnu_write (PedDevice* dev, const void* buffer, PedSector start, PedSector count)
+{
+       GNUSpecific*            arch_specific = GNU_SPECIFIC (dev);
+       error_t                 err;
+       PedExceptionOption      ex_status;
+       void *                  temp;
+       char                    local_buffer[PED_SECTOR_SIZE_DEFAULT];
+       size_t                  did_read;
+       size_t                  did_write;
+
+       /* Map a disk sector to a store sector.  */
+       #define PED_TO_STORE(store, sector) (((sector) * PED_SECTOR_SIZE_DEFAULT) \
+                                       / (store)->block_size)
+
+       if (dev->read_only) {
+               if (ped_exception_throw (
+                       PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_IGNORE_CANCEL,
+                       _("Can't write to %s, because it is opened read-only."),
+                       dev->path)
+                               != PED_EXCEPTION_IGNORE)
+                       return 0;
+               else
+                       return 1;
+       }
+
+#ifdef READ_ONLY
+       printf ("ped_device_write (\"%s\", %p, %d, %d)\n",
+               dev->path, buffer, (int) start, (int) count);
+#else
+       dev->dirty = 1;
+
+       /* If the first ``device'' block (PedSector) is not aligned on a
+          store block, then we need to fetch the old block, copy in the
+          overlaping area and finally, write the modified data out to the
+          store.  */
+       if ((PED_SECTOR_SIZE_DEFAULT * start) % arch_specific->store->block_size
+           != 0) {
+               size_t          write_offset;
+               size_t          flushing;
+
+doggy_first_block_read:
+               /* We do not bother looping as we are only reading a
+                  single block.  */
+               temp = local_buffer;
+               did_read = sizeof (local_buffer);
+               err = store_read (arch_specific->store,
+                                 PED_TO_STORE (arch_specific->store, start),
+                                 arch_specific->store->block_size, &temp,
+                                 &did_read);
+               if (! err && did_read != arch_specific->store->block_size)
+                       err = EIO;
+
+               if (err) {
+                       ex_status = ped_exception_throw (
+                               PED_EXCEPTION_ERROR,
+                               PED_EXCEPTION_RETRY_IGNORE_CANCEL,
+                               _("%s during read on %s"),
+                               strerror (err), dev->path);
+
+                       switch (ex_status) {
+                               case PED_EXCEPTION_IGNORE:
+                                       break;
+
+                               case PED_EXCEPTION_RETRY:
+                                       goto doggy_first_block_read;
+
+                               case PED_EXCEPTION_UNHANDLED:
+                                       ped_exception_catch ();
+                               case PED_EXCEPTION_CANCEL:
+                                       return 0;
+                       }
+               }
+
+               write_offset = (start * PED_SECTOR_SIZE_DEFAULT)
+                              % arch_specific->store->block_size;
+               flushing = arch_specific->store->block_size - write_offset;
+               if (flushing > count * PED_SECTOR_SIZE_DEFAULT)
+                       flushing = count * PED_SECTOR_SIZE_DEFAULT;
+
+               memcpy (temp + write_offset, buffer, flushing);
+
+doggy_first_block_write:
+               err = store_write (arch_specific->store,
+                                  PED_TO_STORE (arch_specific->store, start),
+                                  temp, arch_specific->store->block_size,
+                                  &did_write);
+               if (! err && did_write != arch_specific->store->block_size)
+                       err = EIO;
+
+               if (err) {
+                       ex_status = ped_exception_throw (
+                               PED_EXCEPTION_ERROR,
+                               PED_EXCEPTION_RETRY_IGNORE_CANCEL,
+                               _("%s during write on %s"),
+                               strerror (err), dev->path);
+
+                       switch (ex_status) {
+                               case PED_EXCEPTION_IGNORE:
+                                       break;
+
+                               case PED_EXCEPTION_RETRY:
+                                       goto doggy_first_block_write;
+
+                               case PED_EXCEPTION_UNHANDLED:
+                                       ped_exception_catch ();
+                               case PED_EXCEPTION_CANCEL:
+                                       if (temp != local_buffer)
+                                               vm_deallocate (
+                                                       mach_task_self (),
+                                                       (long) temp,
+                                                       did_read);
+                                       return 0;
+                       }
+               }
+
+               start += flushing / PED_SECTOR_SIZE_DEFAULT;
+               count -= flushing / PED_SECTOR_SIZE_DEFAULT;
+               buffer += write_offset;
+
+               if (temp != local_buffer)
+                       vm_deallocate (mach_task_self (), (long) temp,
+                                      did_read);
+
+               if (count == 0)
+                       return 1;
+       }
+
+       while (count > 0
+          && count >= arch_specific->store->block_size / PED_SECTOR_SIZE_DEFAULT) {
+               err = store_write (arch_specific->store,
+                                  PED_TO_STORE (arch_specific->store, start),
+                                  buffer, count * PED_SECTOR_SIZE_DEFAULT,
+                                  &did_write);
+
+               if (err) {
+                       ex_status = ped_exception_throw (
+                               PED_EXCEPTION_ERROR,
+                               PED_EXCEPTION_RETRY_IGNORE_CANCEL,
+                               _("%s during write on %s"),
+                               strerror (err), dev->path);
+
+                       switch (ex_status) {
+                               case PED_EXCEPTION_IGNORE:
+                                       break;
+
+                               case PED_EXCEPTION_RETRY:
+                                       continue;
+
+                               case PED_EXCEPTION_UNHANDLED:
+                                       ped_exception_catch ();
+                               case PED_EXCEPTION_CANCEL:
+                                       return 0;
+                       }
+               }
+
+               start += did_write / PED_SECTOR_SIZE_DEFAULT;
+               count -= did_write / PED_SECTOR_SIZE_DEFAULT;
+               buffer += did_write;
+       }
+
+       if (count == 0)
+               return 1;
+
+       /* We are now left with (strictly) less then a store block to write
+          to disk.  Thus, we read the block, overlay the buffer and flush.  */
+       PED_ASSERT (count * PED_SECTOR_SIZE_DEFAULT
+                   < arch_specific->store->block_size);
+
+doggy_last_block_read:
+       /* We do not bother looping as we are only reading a
+          single block.  */
+       temp = local_buffer;
+       did_read = sizeof (local_buffer);
+       err = store_read (arch_specific->store,
+                         PED_TO_STORE (arch_specific->store, start),
+                         arch_specific->store->block_size, &temp,
+                         &did_read);
+       if (! err && did_read != arch_specific->store->block_size)
+               err = EIO;
+
+       if (err) {
+               ex_status = ped_exception_throw (
+                       PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_RETRY_IGNORE_CANCEL,
+                       _("%s during read on %s"),
+                       strerror (err), dev->path);
+
+               switch (ex_status) {
+                       case PED_EXCEPTION_IGNORE:
+                               break;
+
+                       case PED_EXCEPTION_RETRY:
+                               goto doggy_last_block_read;
+
+                       case PED_EXCEPTION_UNHANDLED:
+                               ped_exception_catch ();
+                       case PED_EXCEPTION_CANCEL:
+                               return 0;
+               }
+       }
+
+       memcpy (temp, buffer, count * PED_SECTOR_SIZE_DEFAULT);
+
+doggy_last_block_write:
+       err = store_write (arch_specific->store,
+                          PED_TO_STORE (arch_specific->store, start),
+                          temp, arch_specific->store->block_size,
+                          &did_write);
+       if (! err && did_write != arch_specific->store->block_size)
+               err = EIO;
+
+       if (err) {
+               ex_status = ped_exception_throw (
+                       PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_RETRY_IGNORE_CANCEL,
+                       _("%s during write on %s"),
+                       strerror (err), dev->path);
+
+               switch (ex_status) {
+                       case PED_EXCEPTION_IGNORE:
+                               break;
+
+                       case PED_EXCEPTION_RETRY:
+                               goto doggy_last_block_write;
+
+                       case PED_EXCEPTION_UNHANDLED:
+                               ped_exception_catch ();
+                       case PED_EXCEPTION_CANCEL:
+                               if (temp != local_buffer)
+                                       vm_deallocate (mach_task_self (),
+                                                      (long) temp,
+                                                      did_read);
+                               return 0;
+               }
+       }
+
+#endif /* !READ_ONLY */
+       return 1;
+}
+
+/* TODO: returns the number of sectors that are ok.
+ */
+static PedSector
+gnu_check (PedDevice* dev, void* buffer, PedSector start, PedSector count)
+{
+       int                     status;
+       int                     done = 0;
+
+       PED_ASSERT (dev != NULL);
+       PED_ASSERT (!dev->external_mode);
+       PED_ASSERT (buffer != NULL);
+
+       return count;
+}
+
+static int
+gnu_sync (PedDevice* dev)
+{
+       GNUSpecific*            arch_specific;
+       error_t                 err;
+       PedExceptionOption      ex_status;
+       static char *last_failure = NULL;
+
+       PED_ASSERT (dev != NULL);
+       PED_ASSERT (!dev->external_mode);
+
+       arch_specific = GNU_SPECIFIC (dev);
+
+       if (dev->read_only || ! dev->dirty)
+               return 1;
+
+       while (1) {
+               err = file_sync (arch_specific->store->source, 1, 0);
+               if (! err || err == EOPNOTSUPP || err == EPERM
+                   || (last_failure && strcmp (last_failure, dev->path) == 0))
+                 break;
+
+               ex_status = ped_exception_throw (
+                       PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_RETRY_IGNORE_CANCEL,
+                       _("%s trying to sync %s to disk"),
+                       strerror (errno), dev->path);
+
+               switch (ex_status) {
+                       case PED_EXCEPTION_IGNORE:
+                               free (last_failure);
+                               last_failure = strdup (dev->path);
+                               return 1;
+
+                       case PED_EXCEPTION_RETRY:
+                               break;
+
+                       case PED_EXCEPTION_UNHANDLED:
+                               ped_exception_catch ();
+                       case PED_EXCEPTION_CANCEL:
+                               return 0;
+               }
+       }
+
+       return 1;
+}
+
+static int
+probe_standard_devices ()
+{
+       _ped_device_probe ("/dev/sd0");
+       _ped_device_probe ("/dev/sd1");
+       _ped_device_probe ("/dev/sd2");
+       _ped_device_probe ("/dev/sd3");
+       _ped_device_probe ("/dev/sd4");
+       _ped_device_probe ("/dev/sd5");
+
+       _ped_device_probe ("/dev/hd0");
+       _ped_device_probe ("/dev/hd1");
+       _ped_device_probe ("/dev/hd2");
+       _ped_device_probe ("/dev/hd3");
+       _ped_device_probe ("/dev/hd4");
+       _ped_device_probe ("/dev/hd5");
+       _ped_device_probe ("/dev/hd6");
+       _ped_device_probe ("/dev/hd7");
+
+       return 1;
+}
+
+static void
+gnu_probe_all ()
+{
+       probe_standard_devices ();
+}
+
+static char*
+gnu_partition_get_path (const PedPartition* part)
+{
+       const char*     dev_path = part->disk->dev->path;
+       int             result_len = strlen (dev_path) + 16;
+       char*           result;
+
+       result = (char*) ped_malloc (result_len);
+       if (!result)
+               return NULL;
+       snprintf (result, result_len, "%s%d", dev_path, part->num);
+       return result;
+}
+
+static int
+gnu_partition_is_busy (const PedPartition* part)
+{
+       return 0;
+}
+
+static int
+gnu_disk_commit (PedDisk* disk)
+{
+       return 1;
+}
+
+static PedDeviceArchOps gnu_dev_ops = {
+       _new:           gnu_new,
+       destroy:        gnu_destroy,
+       is_busy:        gnu_is_busy,
+       open:           gnu_open,
+       refresh_open:   gnu_refresh_open,
+       close:          gnu_close,
+       refresh_close:  gnu_refresh_close,
+       read:           gnu_read,
+       write:          gnu_write,
+       check:          gnu_check,
+       sync:           gnu_sync,
+       sync_fast:      gnu_sync,
+       probe_all:      gnu_probe_all
+};
+
+static PedDiskArchOps gnu_disk_ops = {
+       partition_get_path:     gnu_partition_get_path,
+       partition_is_busy:      gnu_partition_is_busy,
+       disk_commit:            gnu_disk_commit
+};
+
+PedArchitecture ped_gnu_arch = {
+       dev_ops:        &gnu_dev_ops,
+       disk_ops:       &gnu_disk_ops
+};
diff --git a/libparted/arch/linux.c b/libparted/arch/linux.c
new file mode 100644 (file)
index 0000000..aeaf98f
--- /dev/null
@@ -0,0 +1,2933 @@
+/* libparted - a library for manipulating disk partitions
+    Copyright (C) 1999-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#define PROC_DEVICES_BUFSIZ 16384
+
+#include <config.h>
+#include <arch/linux.h>
+#include <linux/blkpg.h>
+#include <parted/parted.h>
+#include <parted/debug.h>
+#if defined __s390__ || defined __s390x__
+#include <parted/fdasd.h>
+#endif
+
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <libgen.h>
+#include <stdio.h>
+#include <syscall.h>
+#include <unistd.h>
+#include <stdbool.h>
+#include <dirent.h>
+#include <sys/ioctl.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <sys/utsname.h>        /* for uname() */
+#include <scsi/scsi.h>
+#include <assert.h>
+#ifdef ENABLE_DEVICE_MAPPER
+#include <libdevmapper.h>
+#endif
+
+#include "../architecture.h"
+#include "dirname.h"
+#include "xstrtol.h"
+
+#if ENABLE_NLS
+#  include <libintl.h>
+#  define _(String) dgettext (PACKAGE, String)
+#else
+#  define _(String) (String)
+#endif /* ENABLE_NLS */
+
+#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
+
+#ifndef __NR__llseek
+#define __NR__llseek 140
+#endif
+
+#ifndef SCSI_IOCTL_SEND_COMMAND
+#define SCSI_IOCTL_SEND_COMMAND 1
+#endif
+
+/* from <linux/hdreg.h> */
+#define HDIO_GETGEO             0x0301  /* get device geometry */
+#define HDIO_GET_IDENTITY       0x030d  /* get IDE identification info */
+
+#define RD_MODE (O_RDONLY)
+#define WR_MODE (O_WRONLY)
+#define RW_MODE (O_RDWR)
+
+struct hd_geometry {
+        unsigned char heads;
+        unsigned char sectors;
+        unsigned short cylinders;
+        unsigned long start;
+};
+
+struct ata7_sectinfo {
+        int valid1:1;
+        int valid2:1;
+        int rsv:26;
+        int multiplier:4;
+};
+
+/* structure returned by HDIO_GET_IDENTITY, as per ANSI ATA2 rev.2f spec */
+struct hd_driveid {
+        unsigned short  config;         /* lots of obsolete bit flags */
+        unsigned short  cyls;           /* "physical" cyls */
+        unsigned short  reserved2;      /* reserved (word 2) */
+        unsigned short  heads;          /* "physical" heads */
+        unsigned short  track_bytes;    /* unformatted bytes per track */
+        unsigned short  sector_bytes;   /* unformatted bytes per sector */
+        unsigned short  sectors;        /* "physical" sectors per track */
+        unsigned short  vendor0;        /* vendor unique */
+        unsigned short  vendor1;        /* vendor unique */
+        unsigned short  vendor2;        /* vendor unique */
+        unsigned char   serial_no[20];  /* 0 = not_specified */
+        unsigned short  buf_type;
+        unsigned short  buf_size;       /* 512 byte increments;
+                                                         0 = not_specified */
+        unsigned short  ecc_bytes;      /* for r/w long cmds;
+                                                         0 = not_specified */
+        unsigned char   fw_rev[8];      /* 0 = not_specified */
+        char            model[40];      /* 0 = not_specified */
+        unsigned char   max_multsect;   /* 0=not_implemented */
+        unsigned char   vendor3;        /* vendor unique */
+        unsigned short  dword_io;       /* 0=not_implemented; 1=implemented */
+        unsigned char   vendor4;        /* vendor unique */
+        unsigned char   capability;     /* bits 0:DMA 1:LBA 2:IORDYsw
+                                                3:IORDYsup*/
+        unsigned short  reserved50;     /* reserved (word 50) */
+        unsigned char   vendor5;        /* vendor unique */
+        unsigned char   tPIO;           /* 0=slow, 1=medium, 2=fast */
+        unsigned char   vendor6;        /* vendor unique */
+        unsigned char   tDMA;           /* 0=slow, 1=medium, 2=fast */
+        unsigned short  field_valid;    /* bits 0:cur_ok 1:eide_ok */
+        unsigned short  cur_cyls;       /* logical cylinders */
+        unsigned short  cur_heads;      /* logical heads */
+        unsigned short  cur_sectors;    /* logical sectors per track */
+        unsigned short  cur_capacity0;  /* logical total sectors on drive */
+        unsigned short  cur_capacity1;  /*  (2 words, misaligned int)     */
+        unsigned char   multsect;       /* current multiple sector count */
+        unsigned char   multsect_valid; /* when (bit0==1) multsect is ok */
+        unsigned int    lba_capacity;   /* total number of sectors */
+        unsigned short  dma_1word;      /* single-word dma info */
+        unsigned short  dma_mword;      /* multiple-word dma info */
+        unsigned short  eide_pio_modes; /* bits 0:mode3 1:mode4 */
+        unsigned short  eide_dma_min;   /* min mword dma cycle time (ns) */
+        unsigned short  eide_dma_time;  /* recommended mword dma cycle
+                                           time (ns) */
+        unsigned short  eide_pio;       /* min cycle time (ns), no IORDY  */
+        unsigned short  eide_pio_iordy; /* min cycle time (ns), with IORDY */
+        unsigned short  words69_70[2];  /* reserved words 69-70 */
+        /* HDIO_GET_IDENTITY currently returns only words 0 through 70 */
+        unsigned short  words71_74[4];  /* reserved words 71-74 */
+        unsigned short  queue_depth;    /*  */
+        unsigned short  words76_79[4];  /* reserved words 76-79 */
+        unsigned short  major_rev_num;  /*  */
+        unsigned short  minor_rev_num;  /*  */
+        unsigned short  command_set_1;  /* bits 0:Smart 1:Security 2:Removable
+                                                3:PM */
+        unsigned short  command_set_2;  /* bits 14:Smart Enabled 13:0 zero */
+        unsigned short  cfsse;          /* command set-feature supported
+                                           extensions */
+        unsigned short  cfs_enable_1;   /* command set-feature enabled */
+        unsigned short  cfs_enable_2;   /* command set-feature enabled */
+        unsigned short  csf_default;    /* command set-feature default */
+        unsigned short  dma_ultra;      /*  */
+        unsigned short  word89;         /* reserved (word 89) */
+        unsigned short  word90;         /* reserved (word 90) */
+        unsigned short  CurAPMvalues;   /* current APM values */
+        unsigned short  word92;         /* reserved (word 92) */
+        unsigned short  hw_config;      /* hardware config */
+        unsigned short  words94_105[12];/* reserved words 94-105 */
+        struct ata7_sectinfo ata7_sectinfo; /* ATAPI/ATA7 physical and logical
+                                               sector size */
+        unsigned short  words107_116[10];/* reserved words 107-116 */
+        unsigned int    logical_sectsize;/* ATAPI/ATA7 logical sector size */
+        unsigned short  words119_125[7];/* reserved words 119-125 */
+        unsigned short  last_lun;       /* reserved (word 126) */
+        unsigned short  word127;        /* reserved (word 127) */
+        unsigned short  dlf;            /* device lock function
+                                         * 15:9 reserved
+                                         * 8    security level 1:max 0:high
+                                         * 7:6  reserved
+                                         * 5    enhanced erase
+                                         * 4    expire
+                                         * 3    frozen
+                                         * 2    locked
+                                         * 1    en/disabled
+                                         * 0    capability
+                                         */
+        unsigned short  csfo;           /* current set features options
+                                         * 15:4 reserved
+                                         * 3    auto reassign
+                                         * 2    reverting
+                                         * 1    read-look-ahead
+                                         * 0    write cache
+                                         */
+        unsigned short  words130_155[26];/* reserved vendor words 130-155 */
+        unsigned short  word156;
+        unsigned short  words157_159[3]; /* reserved vendor words 157-159 */
+        unsigned short  words160_255[95];/* reserved words 160-255 */
+};
+
+/* from <linux/fs.h> */
+#define BLKRRPART  _IO(0x12,95) /* re-read partition table */
+#define BLKGETSIZE _IO(0x12,96) /* return device size */
+#define BLKFLSBUF  _IO(0x12,97) /* flush buffer cache */
+#define BLKSSZGET  _IO(0x12,104) /* get block device sector size */
+#define BLKGETLASTSECT  _IO(0x12,108) /* get last sector of block device */
+#define BLKSETLASTSECT  _IO(0x12,109) /* set last sector of block device */
+
+/* return device size in bytes (u64 *arg) */
+#define BLKGETSIZE64 _IOR(0x12,114,size_t)
+
+struct blkdev_ioctl_param {
+        unsigned int block;
+        size_t content_length;
+        char * block_contents;
+};
+
+/* from <linux/major.h> */
+#define IDE0_MAJOR              3
+#define IDE1_MAJOR              22
+#define IDE2_MAJOR              33
+#define IDE3_MAJOR              34
+#define IDE4_MAJOR              56
+#define IDE5_MAJOR              57
+#define SCSI_CDROM_MAJOR        11
+#define SCSI_DISK0_MAJOR        8
+#define SCSI_DISK1_MAJOR        65
+#define SCSI_DISK2_MAJOR        66
+#define SCSI_DISK3_MAJOR        67
+#define SCSI_DISK4_MAJOR        68
+#define SCSI_DISK5_MAJOR        69
+#define SCSI_DISK6_MAJOR        70
+#define SCSI_DISK7_MAJOR        71
+#define SCSI_DISK8_MAJOR        128
+#define SCSI_DISK9_MAJOR        129
+#define SCSI_DISK10_MAJOR       130
+#define SCSI_DISK11_MAJOR       131
+#define SCSI_DISK12_MAJOR       132
+#define SCSI_DISK13_MAJOR       133
+#define SCSI_DISK14_MAJOR       134
+#define SCSI_DISK15_MAJOR       135
+#define COMPAQ_SMART2_MAJOR     72
+#define COMPAQ_SMART2_MAJOR1    73
+#define COMPAQ_SMART2_MAJOR2    74
+#define COMPAQ_SMART2_MAJOR3    75
+#define COMPAQ_SMART2_MAJOR4    76
+#define COMPAQ_SMART2_MAJOR5    77
+#define COMPAQ_SMART2_MAJOR6    78
+#define COMPAQ_SMART2_MAJOR7    79
+#define COMPAQ_SMART_MAJOR      104
+#define COMPAQ_SMART_MAJOR1     105
+#define COMPAQ_SMART_MAJOR2     106
+#define COMPAQ_SMART_MAJOR3     107
+#define COMPAQ_SMART_MAJOR4     108
+#define COMPAQ_SMART_MAJOR5     109
+#define COMPAQ_SMART_MAJOR6     110
+#define COMPAQ_SMART_MAJOR7     111
+#define DAC960_MAJOR            48
+#define ATARAID_MAJOR           114
+#define I2O_MAJOR1              80
+#define I2O_MAJOR2              81
+#define I2O_MAJOR3              82
+#define I2O_MAJOR4              83
+#define I2O_MAJOR5              84
+#define I2O_MAJOR6              85
+#define I2O_MAJOR7              86
+#define I2O_MAJOR8              87
+#define UBD_MAJOR               98
+#define DASD_MAJOR              94
+#define VIODASD_MAJOR           112
+#define AOE_MAJOR               152
+#define SX8_MAJOR1              160
+#define SX8_MAJOR2              161
+#define XVD_MAJOR               202
+#define SDMMC_MAJOR             179
+#define LOOP_MAJOR              7
+#define MD_MAJOR                9
+
+#define SCSI_BLK_MAJOR(M) (                                             \
+                (M) == SCSI_DISK0_MAJOR                                 \
+                || (M) == SCSI_CDROM_MAJOR                              \
+                || ((M) >= SCSI_DISK1_MAJOR && (M) <= SCSI_DISK7_MAJOR) \
+                || ((M) >= SCSI_DISK8_MAJOR && (M) <= SCSI_DISK15_MAJOR))
+
+/* Maximum number of partitions supported by linux. */
+#define MAX_NUM_PARTS          64
+
+static char* _device_get_part_path (PedDevice* dev, int num);
+static int _partition_is_mounted_by_path (const char* path);
+
+static int
+_read_fd (int fd, char **buf)
+{
+        char* p;
+        size_t size = PROC_DEVICES_BUFSIZ;
+        int s, filesize = 0;
+
+        *buf = malloc (size * sizeof (char));
+        if (*buf == 0) {
+                return -1;
+        }
+
+        do {
+                p = &(*buf) [filesize];
+                s = read (fd, p, PROC_DEVICES_BUFSIZ);
+                /* exit if there is an error or EOF is reached */
+                if (s <= 0)
+                        break;
+                filesize += s;
+                size += s;
+                char *new_buf = realloc (*buf, size);
+                if (new_buf == NULL) {
+                        int saved_errno = errno;
+                        free (*buf);
+                        errno = saved_errno;
+                        return -1;
+                }
+                *buf = new_buf;
+        } while (1);
+
+        if (filesize == 0 && s < 0) {
+                free (*buf);
+                *buf = NULL;
+                return -1;
+        } else {
+                char *new_buf = realloc (*buf, filesize + 1);
+                if (new_buf == NULL) {
+                        int saved_errno = errno;
+                        free (*buf);
+                        errno = saved_errno;
+                        return -1;
+                }
+                *buf = new_buf;
+                (*buf)[filesize] = '\0';
+        }
+
+        return filesize;
+}
+
+static int
+_major_type_in_devices (int major, const char* type)
+{
+        int fd;
+        char* buf = NULL;
+        char* line;
+        char* end;
+        int bd = 0;
+        char c;
+
+        fd = open ("/proc/devices", O_RDONLY);
+        if (fd < 0)
+                return 0;
+
+        if (_read_fd(fd, &buf) < 0) {
+                close(fd);
+                return 0;
+        }
+
+        line = buf;
+        end = strchr(line, '\n');
+        while (end) {
+                char *name;
+                int maj;
+
+                c = *end;
+                *end = '\0';
+
+                if (!bd) {
+                        if (!strncmp(line, "Block devices:", 14))
+                                bd = 1;
+                        goto next;
+                }
+
+                name = strrchr(line, ' ');
+                if (!name || strcmp(name+1, type))
+                        goto next;
+
+                maj = strtol(line, &name, 10);
+                if (maj == major) {
+                        free(buf);
+                        close(fd);
+                        return 1;
+                }
+
+next:
+                *end = c;
+                line = end+1;
+                end = strchr(line, '\n');
+        }
+        free(buf);
+        close(fd);
+        return 0;
+}
+
+static int
+_is_ide_major (int major)
+{
+        switch (major) {
+                case IDE0_MAJOR:
+                case IDE1_MAJOR:
+                case IDE2_MAJOR:
+                case IDE3_MAJOR:
+                case IDE4_MAJOR:
+                case IDE5_MAJOR:
+                        return 1;
+
+                default:
+                        return 0;
+        }
+}
+
+static int
+_is_cpqarray_major (int major)
+{
+        return ((COMPAQ_SMART2_MAJOR <= major && major <= COMPAQ_SMART2_MAJOR7)
+             || (COMPAQ_SMART_MAJOR <= major && major <= COMPAQ_SMART_MAJOR7));
+}
+
+static int
+_is_i2o_major (int major)
+{
+        return (I2O_MAJOR1 <= major && major <= I2O_MAJOR8);
+}
+
+static int
+_is_sx8_major (int major)
+{
+        return (SX8_MAJOR1 <= major && major <= SX8_MAJOR2);
+}
+
+static int
+_is_virtblk_major (int major)
+{
+        return _major_type_in_devices (major, "virtblk");
+}
+
+#ifdef ENABLE_DEVICE_MAPPER
+static int
+_is_dm_major (int major)
+{
+        return _major_type_in_devices (major, "device-mapper");
+}
+
+static int
+_dm_maptype (PedDevice *dev)
+{
+        LinuxSpecific*  arch_specific = LINUX_SPECIFIC (dev);
+        struct dm_task *dmt;
+        uint64_t start, length;
+        char *target_type = NULL;
+        char *params;
+        int r = -1;
+        const char* dev_dir = getenv ("DM_DEV_DIR");
+
+        if (dev_dir && *dev_dir && !dm_set_dev_dir(dev_dir))
+                return r;
+
+        if (!(dmt = dm_task_create(DM_DEVICE_TABLE)))
+                return r;
+
+        if (!dm_task_set_major_minor(dmt, arch_specific->major,
+                                     arch_specific->minor, 0))
+                goto bad;
+
+        dm_task_no_open_count(dmt);
+
+        if (!dm_task_run(dmt))
+                goto bad;
+
+        dm_get_next_target(dmt, NULL, &start, &length, &target_type, &params);
+
+        arch_specific->dmtype = strdup(target_type ? target_type : "NO-TARGET");
+        if (arch_specific->dmtype == NULL)
+                goto bad;
+        r = 0;
+bad:
+        dm_task_destroy(dmt);
+        return r;
+}
+
+
+static int
+_probe_dm_devices ()
+{
+       DIR*            mapper_dir;
+       struct dirent*  dent;
+       char            buf [512];      /* readdir(3) claims d_name[256] */
+       struct stat     st;
+
+       mapper_dir = opendir ("/dev/mapper");
+       if (!mapper_dir)
+               return 0;
+
+       /* Search the /dev/mapper directory for devices w/ the same major
+        * number that was returned from _probe_lvm_major().
+        */
+       while ((dent = readdir (mapper_dir))) {
+               if (strcmp (dent->d_name, ".")  == 0 ||
+                   strcmp (dent->d_name, "..") == 0)
+                       continue;
+
+               snprintf (buf, sizeof (buf), "/dev/mapper/%s", dent->d_name);
+
+               if (stat (buf, &st) != 0)
+                       continue;
+
+               if (_is_dm_major(major(st.st_rdev)))
+                       _ped_device_probe (buf);
+       }
+       closedir (mapper_dir);
+
+       return 1;
+}
+#endif
+
+static int
+_device_stat (PedDevice* dev, struct stat * dev_stat)
+{
+        PED_ASSERT (dev != NULL);
+        PED_ASSERT (!dev->external_mode);
+
+        while (1) {
+                if (!stat (dev->path, dev_stat)) {
+                        return 1;
+                } else {
+                        if (ped_exception_throw (
+                                PED_EXCEPTION_ERROR,
+                                PED_EXCEPTION_RETRY_CANCEL,
+                                _("Could not stat device %s - %s."),
+                                dev->path,
+                                strerror (errno))
+                                        != PED_EXCEPTION_RETRY)
+                                return 0;
+                }
+        }
+}
+
+static int
+_device_probe_type (PedDevice* dev)
+{
+        struct stat             dev_stat;
+        int                     dev_major;
+        int                     dev_minor;
+        LinuxSpecific*          arch_specific = LINUX_SPECIFIC (dev);
+
+        if (!_device_stat (dev, &dev_stat))
+                return 0;
+
+        if (!S_ISBLK(dev_stat.st_mode)) {
+                dev->type = PED_DEVICE_FILE;
+                return 1;
+        }
+
+        arch_specific->major = dev_major = major (dev_stat.st_rdev);
+        arch_specific->minor = dev_minor = minor (dev_stat.st_rdev);
+
+        if (SCSI_BLK_MAJOR (dev_major) && (dev_minor % 0x10 == 0)) {
+                dev->type = PED_DEVICE_SCSI;
+        } else if (_is_ide_major (dev_major) && (dev_minor % 0x40 == 0)) {
+                dev->type = PED_DEVICE_IDE;
+        } else if (dev_major == DAC960_MAJOR && (dev_minor % 0x8 == 0)) {
+                dev->type = PED_DEVICE_DAC960;
+        } else if (dev_major == ATARAID_MAJOR && (dev_minor % 0x10 == 0)) {
+                dev->type = PED_DEVICE_ATARAID;
+        } else if (dev_major == AOE_MAJOR && (dev_minor % 0x10 == 0)) {
+                dev->type = PED_DEVICE_AOE;
+        } else if (dev_major == DASD_MAJOR && (dev_minor % 0x4 == 0)) {
+                dev->type = PED_DEVICE_DASD;
+        } else if (dev_major == VIODASD_MAJOR && (dev_minor % 0x8 == 0)) {
+                dev->type = PED_DEVICE_VIODASD;
+        } else if (_is_sx8_major(dev_major) && (dev_minor % 0x20 == 0)) {
+                dev->type = PED_DEVICE_SX8;
+        } else if (_is_i2o_major (dev_major) && (dev_minor % 0x10 == 0)) {
+                dev->type = PED_DEVICE_I2O;
+        } else if (_is_cpqarray_major (dev_major) && (dev_minor % 0x10 == 0)) {
+                dev->type = PED_DEVICE_CPQARRAY;
+        } else if (dev_major == UBD_MAJOR && (dev_minor % 0x10 == 0)) {
+                dev->type = PED_DEVICE_UBD;
+#ifdef ENABLE_DEVICE_MAPPER
+        } else if (_is_dm_major(dev_major)) {
+                dev->type = PED_DEVICE_DM;
+                if (_dm_maptype(dev)) {
+                        ped_exception_throw (
+                                PED_EXCEPTION_BUG,
+                                PED_EXCEPTION_CANCEL,
+                                _("Unable to determine the dm type of %s."),
+                                dev->path);
+                }
+#endif
+        } else if (dev_major == XVD_MAJOR && (dev_minor % 0x10 == 0)) {
+                dev->type = PED_DEVICE_XVD;
+        } else if (dev_major == SDMMC_MAJOR && (dev_minor % 0x08 == 0)) {
+                dev->type = PED_DEVICE_SDMMC;
+        } else if (_is_virtblk_major(dev_major)) {
+                dev->type = PED_DEVICE_VIRTBLK;
+        } else if (dev_major == LOOP_MAJOR) {
+                dev->type = PED_DEVICE_FILE;
+        } else if (dev_major == MD_MAJOR) {
+                dev->type = PED_DEVICE_MD;
+        } else {
+                dev->type = PED_DEVICE_UNKNOWN;
+        }
+
+        return 1;
+}
+
+static int
+_get_linux_version ()
+{
+        static int kver = -1;
+
+        struct utsname uts;
+        int major;
+        int minor;
+        int teeny;
+
+        if (kver != -1)
+                return kver;
+
+        if (uname (&uts))
+                return kver = 0;
+        if (sscanf (uts.release, "%u.%u.%u", &major, &minor, &teeny) != 3)
+                return kver = 0;
+
+        return kver = KERNEL_VERSION (major, minor, teeny);
+}
+
+static int
+_have_kern26 ()
+{
+        static int have_kern26 = -1;
+        int kver;
+
+        if (have_kern26 != -1)
+                return have_kern26;
+
+        kver = _get_linux_version();
+        return have_kern26 = kver >= KERNEL_VERSION (2,6,0) ? 1 : 0;
+}
+
+#if USE_BLKID
+static void
+get_blkid_topology (LinuxSpecific *arch_specific)
+{
+        arch_specific->probe = blkid_new_probe ();
+        if (!arch_specific->probe)
+                return;
+
+        if (blkid_probe_set_device(arch_specific->probe,
+                                   arch_specific->fd, 0, 0))
+                return;
+
+        arch_specific->topology =
+                blkid_probe_get_topology(arch_specific->probe);
+}
+#endif
+
+static void
+_device_set_sector_size (PedDevice* dev)
+{
+        LinuxSpecific*  arch_specific = LINUX_SPECIFIC (dev);
+        int sector_size;
+
+        dev->sector_size = PED_SECTOR_SIZE_DEFAULT;
+        dev->phys_sector_size = PED_SECTOR_SIZE_DEFAULT;
+
+        PED_ASSERT (dev->open_count);
+
+        if (_get_linux_version() < KERNEL_VERSION (2,3,0)) {
+                dev->sector_size = PED_SECTOR_SIZE_DEFAULT;
+                return;
+        }
+
+        if (ioctl (arch_specific->fd, BLKSSZGET, &sector_size)) {
+                ped_exception_throw (
+                        PED_EXCEPTION_WARNING,
+                        PED_EXCEPTION_OK,
+                        _("Could not determine sector size for %s: %s.\n"
+                          "Using the default sector size (%lld)."),
+                        dev->path, strerror (errno), PED_SECTOR_SIZE_DEFAULT);
+        } else {
+                dev->sector_size = (long long)sector_size;
+                dev->phys_sector_size = dev->sector_size;
+        }
+
+#if USE_BLKID
+        get_blkid_topology(arch_specific);
+        if (!arch_specific->topology) {
+                dev->phys_sector_size = 0;
+        } else {
+                dev->phys_sector_size =
+                        blkid_topology_get_physical_sector_size(
+                                arch_specific->topology);
+        }
+        if (dev->phys_sector_size == 0) {
+                ped_exception_throw (
+                        PED_EXCEPTION_WARNING,
+                        PED_EXCEPTION_OK,
+                        _("Could not determine physical sector size for %s.\n"
+                          "Using the logical sector size (%lld)."),
+                        dev->path, dev->sector_size);
+                dev->phys_sector_size = dev->sector_size;
+        }
+#endif
+
+#if defined __s390__ || defined __s390x__
+        /* Return PED_SECTOR_SIZE_DEFAULT for DASDs. */
+        if (dev->type == PED_DEVICE_DASD) {
+                arch_specific->real_sector_size = dev->sector_size;
+                dev->sector_size = PED_SECTOR_SIZE_DEFAULT;
+        }
+#endif
+}
+
+static int
+_kernel_has_blkgetsize64(void)
+{
+        int version = _get_linux_version();
+
+        if (version >= KERNEL_VERSION (2,5,4)) return 1;
+        if (version <  KERNEL_VERSION (2,5,0) &&
+            version >= KERNEL_VERSION (2,4,18)) return 1;
+        return 0;
+}
+
+/* TODO: do a binary search if BLKGETSIZE doesn't work?! */
+static PedSector
+_device_get_length (PedDevice* dev)
+{
+        unsigned long           size;
+        LinuxSpecific*          arch_specific = LINUX_SPECIFIC (dev);
+        uint64_t bytes=0;
+        const char*             test_str;
+        PedSector               test_size;
+
+
+        PED_ASSERT (dev->open_count > 0);
+        PED_ASSERT (dev->sector_size % PED_SECTOR_SIZE_DEFAULT == 0);
+
+        test_str = getenv ("PARTED_TEST_DEVICE_LENGTH");
+        if (test_str
+            && xstrtoll (test_str, NULL, 10, &test_size, NULL) == LONGINT_OK)
+                return test_size;
+
+        if (_kernel_has_blkgetsize64()) {
+                if (ioctl(arch_specific->fd, BLKGETSIZE64, &bytes) == 0) {
+                        return bytes / dev->sector_size;
+                }
+        }
+
+        if (ioctl (arch_specific->fd, BLKGETSIZE, &size)) {
+                ped_exception_throw (
+                        PED_EXCEPTION_BUG,
+                        PED_EXCEPTION_CANCEL,
+                        _("Unable to determine the size of %s (%s)."),
+                        dev->path,
+                        strerror (errno));
+                return 0;
+        }
+
+        return size;
+}
+
+static int
+_device_probe_geometry (PedDevice* dev)
+{
+        LinuxSpecific*          arch_specific = LINUX_SPECIFIC (dev);
+        struct stat             dev_stat;
+        struct hd_geometry      geometry;
+
+        if (!_device_stat (dev, &dev_stat))
+                return 0;
+        PED_ASSERT (S_ISBLK (dev_stat.st_mode));
+
+        _device_set_sector_size (dev);
+
+        dev->length = _device_get_length (dev);
+        if (!dev->length)
+                return 0;
+
+        /* The GETGEO ioctl is no longer useful (as of linux 2.6.x).  We could
+         * still use it in 2.4.x, but this is contentious.  Perhaps we should
+         * move to EDD. */
+        dev->bios_geom.sectors = 63;
+        dev->bios_geom.heads = 255;
+        dev->bios_geom.cylinders
+                = dev->length / (63 * 255);
+
+        /* FIXME: what should we put here?  (TODO: discuss on linux-kernel) */
+        if (!ioctl (arch_specific->fd, HDIO_GETGEO, &geometry)
+                        && geometry.sectors && geometry.heads) {
+                dev->hw_geom.sectors = geometry.sectors;
+                dev->hw_geom.heads = geometry.heads;
+                dev->hw_geom.cylinders
+                        = dev->length / (dev->hw_geom.heads
+                                         * dev->hw_geom.sectors);
+        } else {
+                dev->hw_geom = dev->bios_geom;
+        }
+
+        return 1;
+}
+
+static char*
+strip_name(char* str)
+{
+        int     i;
+        int     end = 0;
+
+        for (i = 0; str[i] != 0; i++) {
+                if (!isspace (str[i])
+                    || (isspace (str[i]) && !isspace (str[i+1]) && str[i+1])) {
+                        str [end] = str[i];
+                        end++;
+                }
+        }
+        str[end] = 0;
+        return strdup (str);
+}
+
+static int
+init_ide (PedDevice* dev)
+{
+        LinuxSpecific*          arch_specific = LINUX_SPECIFIC (dev);
+        struct stat             dev_stat;
+        struct hd_driveid       hdi;
+        PedExceptionOption      ex_status;
+        char                    hdi_buf[41];
+        int                     sector_multiplier = 0;
+
+        if (!_device_stat (dev, &dev_stat))
+                goto error;
+
+        if (!ped_device_open (dev))
+                goto error;
+
+        if (ioctl (arch_specific->fd, HDIO_GET_IDENTITY, &hdi)) {
+                ex_status = ped_exception_throw (
+                                PED_EXCEPTION_WARNING,
+                                PED_EXCEPTION_IGNORE_CANCEL,
+                                _("Could not get identity of device %s - %s"),
+                                dev->path, strerror (errno));
+                switch (ex_status) {
+                        case PED_EXCEPTION_CANCEL:
+                                goto error_close_dev;
+
+                        case PED_EXCEPTION_UNHANDLED:
+                                ped_exception_catch ();
+                        case PED_EXCEPTION_IGNORE:
+                                dev->model = strdup(_("Generic IDE"));
+                                break;
+                        default:
+                                PED_ASSERT (0);
+                                break;
+                }
+        } else {
+                /* hdi.model is not guaranteed to be NULL terminated */
+                memcpy (hdi_buf, hdi.model, 40);
+                hdi_buf[40] = '\0';
+                dev->model = strip_name (hdi_buf);
+
+                if (!hdi.ata7_sectinfo.valid1 && hdi.ata7_sectinfo.valid2)
+                        sector_multiplier = hdi.ata7_sectinfo.multiplier;
+                else
+                        sector_multiplier = 1;
+
+                if (sector_multiplier != 1) {
+                        ex_status = ped_exception_throw (
+                                PED_EXCEPTION_WARNING,
+                                PED_EXCEPTION_IGNORE_CANCEL,
+                                _("Device %s has multiple (%d) logical sectors "
+                                  "per physical sector.\n"
+                                  "GNU Parted supports this EXPERIMENTALLY for "
+                                  "some special disk label/file system "
+                                  "combinations, e.g. GPT and ext2/3.\n"
+                                  "Please consult the web site for up-to-date "
+                                  "information."),
+                                dev->path, sector_multiplier);
+
+                        switch (ex_status) {
+                                case PED_EXCEPTION_CANCEL:
+                                        goto error_close_dev;
+
+                                case PED_EXCEPTION_UNHANDLED:
+                                        ped_exception_catch ();
+                                case PED_EXCEPTION_IGNORE:
+                                        break;
+                                default:
+                                        PED_ASSERT (0);
+                                        break;
+                        }
+                }
+
+                /* XXX sector_size has not been set yet! */
+                /* dev->phys_sector_size = dev->sector_size
+                   * sector_multiplier;*/
+                dev->phys_sector_size = PED_SECTOR_SIZE_DEFAULT;
+        }
+
+        if (!_device_probe_geometry (dev))
+                goto error_close_dev;
+
+        ped_device_close (dev);
+        return 1;
+
+error_close_dev:
+        ped_device_close (dev);
+error:
+        return 0;
+}
+
+/* This function reads the /sys entry named "file" for device "dev". */
+static char *
+read_device_sysfs_file (PedDevice *dev, const char *file)
+{
+        FILE *f;
+        char name_buf[128];
+        char buf[256];
+
+        snprintf (name_buf, 127, "/sys/block/%s/device/%s",
+                  last_component (dev->path), file);
+
+        if ((f = fopen (name_buf, "r")) == NULL)
+                return NULL;
+
+        if (fgets (buf, 255, f) == NULL) {
+                fclose (f);
+                return NULL;
+        }
+
+        fclose (f);
+        return strip_name (buf);
+}
+
+/* This function sends a query to a SCSI device for vendor and product
+ * information.  It uses the deprecated SCSI_IOCTL_SEND_COMMAND to
+ * issue this query.
+ */
+static int
+scsi_query_product_info (PedDevice* dev, char **vendor, char **product)
+{
+        /* The following are defined by the SCSI-2 specification. */
+        typedef struct _scsi_inquiry_cmd
+        {
+                uint8_t op;
+                uint8_t lun;          /* bits 5-7 denote the LUN */
+                uint8_t page_code;
+                uint8_t reserved;
+                uint8_t alloc_length;
+                uint8_t control;
+        } __attribute__((packed)) scsi_inquiry_cmd_t;
+
+        typedef struct _scsi_inquiry_data
+        {
+                uint8_t peripheral_info;
+                uint8_t device_info;
+                uint8_t version_info;
+                uint8_t _field1;
+                uint8_t additional_length;
+                uint8_t _reserved1;
+                uint8_t _reserved2;
+                uint8_t _field2;
+                uint8_t vendor_id[8];
+                uint8_t product_id[16];
+                uint8_t product_revision[4];
+                uint8_t vendor_specific[20];
+                uint8_t _reserved3[40];
+        } __attribute__((packed)) scsi_inquiry_data_t;
+
+        struct scsi_arg
+        {
+                unsigned int inlen;
+                unsigned int outlen;
+
+                union arg_data
+                {
+                        scsi_inquiry_data_t out;
+                        scsi_inquiry_cmd_t  in;
+                } data;
+        } arg;
+
+        LinuxSpecific* arch_specific = LINUX_SPECIFIC (dev);
+        char    buf[32];
+
+        *vendor = NULL;
+        *product = NULL;
+
+        memset (&arg, 0x00, sizeof(struct scsi_arg));
+        arg.inlen  = 0;
+        arg.outlen = sizeof(scsi_inquiry_data_t);
+        arg.data.in.op  = INQUIRY;
+        arg.data.in.lun = dev->host << 5;
+        arg.data.in.alloc_length = sizeof(scsi_inquiry_data_t);
+        arg.data.in.page_code = 0;
+        arg.data.in.reserved = 0;
+        arg.data.in.control = 0;
+
+        if (ioctl (arch_specific->fd, SCSI_IOCTL_SEND_COMMAND, &arg) < 0)
+                return 0;
+
+        memcpy (buf, arg.data.out.vendor_id, 8);
+        buf[8] = '\0';
+        *vendor = strip_name (buf);
+
+        memcpy (buf, arg.data.out.product_id, 16);
+        buf[16] = '\0';
+        *product = strip_name (buf);
+
+        return 1;
+}
+
+/* This function provides the vendor and product name for a SCSI device.
+ * It supports both the modern /sys interface and direct queries
+ * via the deprecated ioctl, SCSI_IOCTL_SEND_COMMAND.
+ */
+static int
+scsi_get_product_info (PedDevice* dev, char **vendor, char **product)
+{
+        *vendor = read_device_sysfs_file (dev, "vendor");
+        *product = read_device_sysfs_file (dev, "model");
+        if (*vendor && *product)
+                return 1;
+
+        return scsi_query_product_info (dev, vendor, product);
+}
+
+static int
+init_scsi (PedDevice* dev)
+{
+        struct scsi_idlun
+        {
+                uint32_t dev_id;
+                uint32_t host_unique_id;
+        } idlun;
+
+        LinuxSpecific* arch_specific = LINUX_SPECIFIC (dev);
+        char* vendor;
+        char* product;
+
+        if (!ped_device_open (dev))
+                goto error;
+
+        if (ioctl (arch_specific->fd, SCSI_IOCTL_GET_IDLUN, &idlun) < 0) {
+                dev->host = 0;
+                dev->did = 0;
+                if (ped_exception_throw (
+                        PED_EXCEPTION_ERROR, PED_EXCEPTION_IGNORE_CANCEL,
+                        _("Error initialising SCSI device %s - %s"),
+                        dev->path, strerror (errno))
+                                != PED_EXCEPTION_IGNORE)
+                        goto error_close_dev;
+                if (!_device_probe_geometry (dev))
+                        goto error_close_dev;
+                ped_device_close (dev);
+                return 1;
+        }
+
+        dev->host = idlun.host_unique_id;
+        dev->did  = idlun.dev_id;
+
+        dev->model = (char*) ped_malloc (8 + 16 + 2);
+        if (!dev->model)
+                goto error_close_dev;
+
+        if (scsi_get_product_info (dev, &vendor, &product)) {
+                sprintf (dev->model, "%.8s %.16s", vendor, product);
+                free (vendor);
+                free (product);
+        } else {
+                strcpy (dev->model, "Generic SCSI");
+        }
+
+        if (!_device_probe_geometry (dev))
+                goto error_close_dev;
+
+        ped_device_close (dev);
+        return 1;
+
+error_close_dev:
+        ped_device_close (dev);
+error:
+        return 0;
+}
+
+static int
+init_file (PedDevice* dev)
+{
+        struct stat     dev_stat;
+
+        if (!_device_stat (dev, &dev_stat))
+                goto error;
+        if (!ped_device_open (dev))
+                goto error;
+
+        dev->sector_size = PED_SECTOR_SIZE_DEFAULT;
+        char *p = getenv ("PARTED_SECTOR_SIZE");
+        if (p) {
+                int s = atoi (p);
+                if (0 < s && s % 512 == 0)
+                        dev->sector_size = s;
+        }
+        dev->phys_sector_size = dev->sector_size;
+
+        if (S_ISBLK(dev_stat.st_mode))
+                dev->length = _device_get_length (dev);
+        else
+                dev->length = dev_stat.st_size / dev->sector_size;
+        if (dev->length <= 0) {
+                ped_exception_throw (
+                        PED_EXCEPTION_ERROR,
+                        PED_EXCEPTION_CANCEL,
+                        _("The device %s is so small that it cannot possibly "
+                          "store a file system or partition table.  Perhaps "
+                          "you selected the wrong device?"),
+                        dev->path);
+                goto error_close_dev;
+        }
+
+        ped_device_close (dev);
+
+        dev->bios_geom.cylinders = dev->length / 4 / 32;
+        dev->bios_geom.heads = 4;
+        dev->bios_geom.sectors = 32;
+        dev->hw_geom = dev->bios_geom;
+        dev->model = strdup ("");
+
+        return 1;
+
+error_close_dev:
+        ped_device_close (dev);
+error:
+        return 0;
+}
+
+#if defined __s390__ || defined __s390x__
+static int
+init_dasd (PedDevice* dev, const char* model_name)
+{
+        struct stat             dev_stat;
+        struct hd_geometry      geo;
+        dasd_information_t dasd_info;
+
+        if (!_device_stat (dev, &dev_stat))
+                goto error;
+
+        if (!ped_device_open (dev))
+                goto error;
+
+        LinuxSpecific* arch_specific = LINUX_SPECIFIC (dev);
+
+        PED_ASSERT (S_ISBLK (dev_stat.st_mode));
+
+        _device_set_sector_size (dev);
+        if (!dev->sector_size)
+                goto error_close_dev;
+
+        dev->length = _device_get_length (dev);
+        if (!dev->length)
+                goto error_close_dev;
+
+        if (!ioctl (arch_specific->fd, HDIO_GETGEO, &geo)) {
+                dev->hw_geom.sectors = geo.sectors;
+                dev->hw_geom.heads = geo.heads;
+                dev->hw_geom.cylinders = dev->length
+                        / (dev->hw_geom.heads * dev->hw_geom.sectors)
+                        / (dev->sector_size / PED_SECTOR_SIZE_DEFAULT);
+                dev->bios_geom = dev->hw_geom;
+        } else {
+                dev->bios_geom.sectors = 12;
+                dev->bios_geom.heads = 15;
+                dev->bios_geom.cylinders = dev->length
+                        / (dev->hw_geom.heads * dev->hw_geom.sectors)
+                        / (dev->sector_size / PED_SECTOR_SIZE_DEFAULT);
+                dev->hw_geom = dev->bios_geom;
+        }
+
+        if (!ioctl(arch_specific->fd, BIODASDINFO, &dasd_info)) {
+                arch_specific->devno = dasd_info.devno;
+        } else {
+                arch_specific->devno = arch_specific->major * 256 +
+                                       arch_specific->minor;
+        }
+
+        dev->model = strdup (model_name);
+
+        ped_device_close (dev);
+        return 1;
+
+error_close_dev:
+        ped_device_close (dev);
+error:
+        return 0;
+}
+#endif
+
+static int
+init_generic (PedDevice* dev, const char* model_name)
+{
+        struct stat             dev_stat;
+        PedExceptionOption      ex_status;
+
+        if (!_device_stat (dev, &dev_stat))
+                goto error;
+
+        if (!ped_device_open (dev))
+                goto error;
+
+        ped_exception_fetch_all ();
+        if (_device_probe_geometry (dev)) {
+                ped_exception_leave_all ();
+        } else {
+               if (!_device_get_length (dev)) {
+                       ped_exception_catch ();
+                       ped_exception_leave_all ();
+                       goto error_close_dev;
+               }
+
+                /* hack to allow use of files, for testing */
+                ped_exception_catch ();
+                ped_exception_leave_all ();
+
+                ex_status = ped_exception_throw (
+                                PED_EXCEPTION_WARNING,
+                                PED_EXCEPTION_IGNORE_CANCEL,
+                                _("Unable to determine geometry of "
+                                "file/device %s.  You should not use Parted "
+                                "unless you REALLY know what you're doing!"),
+                                dev->path);
+                switch (ex_status) {
+                        case PED_EXCEPTION_CANCEL:
+                                goto error_close_dev;
+
+                        case PED_EXCEPTION_UNHANDLED:
+                                ped_exception_catch ();
+                        case PED_EXCEPTION_IGNORE:
+                                break;
+                        default:
+                                PED_ASSERT (0);
+                                break;
+                }
+
+                /* what should we stick in here? */
+                dev->length = dev_stat.st_size / PED_SECTOR_SIZE_DEFAULT;
+                dev->bios_geom.cylinders = dev->length / 4 / 32;
+                dev->bios_geom.heads = 4;
+                dev->bios_geom.sectors = 32;
+                dev->sector_size = PED_SECTOR_SIZE_DEFAULT;
+                dev->phys_sector_size = PED_SECTOR_SIZE_DEFAULT;
+        }
+
+        dev->model = strdup (model_name);
+
+        ped_device_close (dev);
+        return 1;
+
+error_close_dev:
+        ped_device_close (dev);
+error:
+        return 0;
+}
+
+static int
+sdmmc_get_product_info (PedDevice* dev, char **type, char **name)
+{
+        *type = read_device_sysfs_file (dev, "type");
+        *name = read_device_sysfs_file (dev, "name");
+        if (*type && *name)
+                return 1;
+
+        return 0;
+}
+
+static int
+init_sdmmc (PedDevice* dev)
+{
+        char id[128];
+        char *type, *name;
+
+        if (sdmmc_get_product_info (dev, &type, &name)) {
+                snprintf (id, sizeof(id) - 1, "%s %s", type, name);
+                free (type);
+                free (name);
+        } else {
+                snprintf (id, sizeof(id) - 1, "%s",
+                          _("Generic SD/MMC Storage Card"));
+        }
+        return init_generic(dev, id);
+}
+
+static PedDevice*
+linux_new (const char* path)
+{
+        PedDevice*      dev;
+        LinuxSpecific*  arch_specific;
+
+        PED_ASSERT (path != NULL);
+
+        dev = (PedDevice*) ped_malloc (sizeof (PedDevice));
+        if (!dev)
+                goto error;
+
+        dev->path = strdup (path);
+        if (!dev->path)
+                goto error_free_dev;
+
+        dev->arch_specific
+                = (LinuxSpecific*) ped_malloc (sizeof (LinuxSpecific));
+        if (!dev->arch_specific)
+                goto error_free_path;
+        arch_specific = LINUX_SPECIFIC (dev);
+        arch_specific->dmtype = NULL;
+#if USE_BLKID
+        arch_specific->probe = NULL;
+        arch_specific->topology = NULL;
+#endif
+
+        dev->open_count = 0;
+        dev->read_only = 0;
+        dev->external_mode = 0;
+        dev->dirty = 0;
+        dev->boot_dirty = 0;
+
+        if (!_device_probe_type (dev))
+                goto error_free_arch_specific;
+
+        switch (dev->type) {
+        case PED_DEVICE_IDE:
+                if (!init_ide (dev))
+                        goto error_free_arch_specific;
+                break;
+
+        case PED_DEVICE_SCSI:
+                if (!init_scsi (dev))
+                        goto error_free_arch_specific;
+                break;
+
+        case PED_DEVICE_DAC960:
+                if (!init_generic (dev, _("DAC960 RAID controller")))
+                        goto error_free_arch_specific;
+                break;
+
+        case PED_DEVICE_SX8:
+                if (!init_generic (dev, _("Promise SX8 SATA Device")))
+                        goto error_free_arch_specific;
+                break;
+
+        case PED_DEVICE_AOE:
+                if (!init_generic (dev, _("ATA over Ethernet Device")))
+                    goto error_free_arch_specific;
+                break;
+
+#if defined __s390__ || defined __s390x__
+        case PED_DEVICE_DASD:
+                if (!init_dasd (dev, _("IBM S390 DASD drive")))
+                        goto error_free_arch_specific;
+                break;
+#endif
+
+        case PED_DEVICE_VIODASD:
+                if (!init_generic (dev, _("IBM iSeries Virtual DASD")))
+                        goto error_free_arch_specific;
+                break;
+
+        case PED_DEVICE_CPQARRAY:
+                if (!init_generic (dev, _("Compaq Smart Array")))
+                        goto error_free_arch_specific;
+                break;
+
+        case PED_DEVICE_ATARAID:
+                if (!init_generic (dev, _("ATARAID Controller")))
+                        goto error_free_arch_specific;
+                break;
+
+        case PED_DEVICE_I2O:
+                if (!init_generic (dev, _("I2O Controller")))
+                        goto error_free_arch_specific;
+                break;
+
+        case PED_DEVICE_UBD:
+                if (!init_generic (dev, _("User-Mode Linux UBD")))
+                        goto error_free_arch_specific;
+                break;
+
+        case PED_DEVICE_FILE:
+                if (!init_file (dev))
+                        goto error_free_arch_specific;
+                break;
+
+        case PED_DEVICE_DM:
+                {
+                  char* type;
+                  if (arch_specific->dmtype == NULL
+                      || asprintf(&type, _("Linux device-mapper (%s)"),
+                                  arch_specific->dmtype) == -1)
+                        goto error_free_arch_specific;
+                  bool ok = init_generic (dev, type);
+                  free (type);
+                  if (!ok)
+                    goto error_free_arch_specific;
+                  break;
+                }
+
+        case PED_DEVICE_XVD:
+                if (!init_generic (dev, _("Xen Virtual Block Device")))
+                        goto error_free_arch_specific;
+                break;
+
+        case PED_DEVICE_UNKNOWN:
+                if (!init_generic (dev, _("Unknown")))
+                        goto error_free_arch_specific;
+                break;
+
+        case PED_DEVICE_SDMMC:
+                if (!init_sdmmc (dev))
+                        goto error_free_arch_specific;
+                break;
+        case PED_DEVICE_VIRTBLK:
+                if (!init_generic(dev, _("Virtio Block Device")))
+                        goto error_free_arch_specific;
+                break;
+
+        case PED_DEVICE_MD:
+                if (!init_generic(dev, _("Linux Software RAID Array")))
+                        goto error_free_arch_specific;
+                break;
+
+        default:
+                ped_exception_throw (PED_EXCEPTION_NO_FEATURE,
+                                PED_EXCEPTION_CANCEL,
+                                _("ped_device_new()  Unsupported device type"));
+                goto error_free_arch_specific;
+        }
+        return dev;
+
+error_free_arch_specific:
+        free (dev->arch_specific);
+error_free_path:
+        free (dev->path);
+error_free_dev:
+        free (dev);
+error:
+        return NULL;
+}
+
+static void
+linux_destroy (PedDevice* dev)
+{
+        LinuxSpecific *arch_specific = LINUX_SPECIFIC(dev);
+        void *p = arch_specific->dmtype;
+
+#if USE_BLKID
+        if (arch_specific->probe)
+                blkid_free_probe(arch_specific->probe);
+#endif
+        free (p);
+        free (dev->arch_specific);
+        free (dev->path);
+        free (dev->model);
+        free (dev);
+}
+
+static int
+linux_is_busy (PedDevice* dev)
+{
+        int     i;
+        char*   part_name;
+
+        if (_partition_is_mounted_by_path (dev->path))
+                return 1;
+
+        for (i = 0; i < 32; i++) {
+                int status;
+
+                part_name = _device_get_part_path (dev, i);
+                if (!part_name)
+                        return 1;
+                status = _partition_is_mounted_by_path (part_name);
+                free (part_name);
+
+                if (status)
+                        return 1;
+        }
+
+        return 0;
+}
+
+/* we need to flush the master device, and with kernel < 2.6 all the partition
+ * devices, because there is no coherency between the caches with old kernels.
+ * We should only flush unmounted partition devices, because:
+ *  - there is never a need to flush them (we're not doing IO there)
+ *  - flushing a device that is mounted causes unnecessary IO, and can
+ * even screw journaling & friends up.  Even cause oopsen!
+ */
+static void
+_flush_cache (PedDevice* dev)
+{
+        LinuxSpecific*  arch_specific = LINUX_SPECIFIC (dev);
+        int             i;
+
+        if (dev->read_only)
+                return;
+        dev->dirty = 0;
+
+        ioctl (arch_specific->fd, BLKFLSBUF);
+
+        /* With linux-2.6.0 and newer, we're done.  */
+        if (_have_kern26())
+                return;
+
+        for (i = 1; i < 16; i++) {
+                char*           name;
+                int             fd;
+
+                name = _device_get_part_path (dev, i);
+                if (!name)
+                        break;
+                if (!_partition_is_mounted_by_path (name)) {
+                        fd = open (name, WR_MODE, 0);
+                        if (fd > 0) {
+                                ioctl (fd, BLKFLSBUF);
+retry:
+                                if (fsync (fd) < 0 || close (fd) < 0)
+                                       if (ped_exception_throw (
+                                               PED_EXCEPTION_WARNING,
+                                               PED_EXCEPTION_RETRY +
+                                                       PED_EXCEPTION_IGNORE,
+                                               _("Error fsyncing/closing %s: %s"),
+                                               name, strerror (errno))
+                                                       == PED_EXCEPTION_RETRY)
+                                               goto retry;
+                        }
+                }
+                free (name);
+        }
+}
+
+static int
+linux_open (PedDevice* dev)
+{
+        LinuxSpecific*  arch_specific = LINUX_SPECIFIC (dev);
+
+retry:
+        arch_specific->fd = open (dev->path, RW_MODE);
+
+        if (arch_specific->fd == -1) {
+                char*   rw_error_msg = strerror (errno);
+
+                arch_specific->fd = open (dev->path, RD_MODE);
+
+                if (arch_specific->fd == -1) {
+                        if (ped_exception_throw (
+                                PED_EXCEPTION_ERROR,
+                                PED_EXCEPTION_RETRY_CANCEL,
+                                _("Error opening %s: %s"),
+                                dev->path, strerror (errno))
+                                        != PED_EXCEPTION_RETRY) {
+                                return 0;
+                        } else {
+                                goto retry;
+                        }
+                } else {
+                        ped_exception_throw (
+                                PED_EXCEPTION_WARNING,
+                                PED_EXCEPTION_OK,
+                                _("Unable to open %s read-write (%s).  %s has "
+                                  "been opened read-only."),
+                                dev->path, rw_error_msg, dev->path);
+                        dev->read_only = 1;
+                }
+        } else {
+                dev->read_only = 0;
+        }
+
+        /* With kernels < 2.6 flush cache for cache coherence issues */
+        if (!_have_kern26())
+                _flush_cache (dev);
+
+        return 1;
+}
+
+static int
+linux_refresh_open (PedDevice* dev)
+{
+        return 1;
+}
+
+static int
+linux_close (PedDevice* dev)
+{
+        LinuxSpecific*          arch_specific = LINUX_SPECIFIC (dev);
+
+        if (dev->dirty)
+                _flush_cache (dev);
+retry:
+        if (fsync (arch_specific->fd) < 0 || close (arch_specific->fd) < 0)
+               if (ped_exception_throw (
+                       PED_EXCEPTION_WARNING,
+                       PED_EXCEPTION_RETRY + PED_EXCEPTION_IGNORE,
+                       _("Error fsyncing/closing %s: %s"),
+                       dev->path, strerror (errno))
+                               == PED_EXCEPTION_RETRY)
+                       goto retry;
+        return 1;
+}
+
+static int
+linux_refresh_close (PedDevice* dev)
+{
+        if (dev->dirty)
+                _flush_cache (dev);
+        return 1;
+}
+
+#if SIZEOF_OFF_T < 8
+
+static _syscall5(int,_llseek,
+                 unsigned int, fd,
+                 unsigned long, offset_high,
+                 unsigned long, offset_low,
+                 loff_t*, result,
+                 unsigned int, origin)
+
+loff_t
+llseek (unsigned int fd, loff_t offset, unsigned int whence)
+{
+        loff_t result;
+        int retval;
+
+        retval = _llseek(fd,
+                         ((unsigned long long)offset) >> 32,
+                         ((unsigned long long)offset) & 0xffffffff,
+                         &result,
+                         whence);
+        return (retval==-1 ? (loff_t) retval : result);
+}
+
+#endif /* SIZEOF_OFF_T < 8 */
+
+static int
+_device_seek (const PedDevice* dev, PedSector sector)
+{
+        LinuxSpecific*  arch_specific;
+
+        PED_ASSERT (dev->sector_size % PED_SECTOR_SIZE_DEFAULT == 0);
+        PED_ASSERT (dev != NULL);
+        PED_ASSERT (!dev->external_mode);
+
+        arch_specific = LINUX_SPECIFIC (dev);
+
+#if SIZEOF_OFF_T < 8
+        if (sizeof (off_t) < 8) {
+                loff_t  pos = (loff_t)(sector * dev->sector_size);
+                return llseek (arch_specific->fd, pos, SEEK_SET) == pos;
+        } else
+#endif
+        {
+                off_t   pos = sector * dev->sector_size;
+                return lseek (arch_specific->fd, pos, SEEK_SET) == pos;
+        }
+}
+
+static int
+_read_lastoddsector (const PedDevice* dev, void* buffer)
+{
+        LinuxSpecific*                  arch_specific;
+        struct blkdev_ioctl_param       ioctl_param;
+
+        PED_ASSERT(dev != NULL);
+        PED_ASSERT(buffer != NULL);
+
+        arch_specific = LINUX_SPECIFIC (dev);
+
+retry:
+        ioctl_param.block = 0; /* read the last sector */
+        ioctl_param.content_length = dev->sector_size;
+        ioctl_param.block_contents = buffer;
+
+        if (ioctl(arch_specific->fd, BLKGETLASTSECT, &ioctl_param) == -1) {
+                PedExceptionOption      opt;
+                opt = ped_exception_throw (
+                        PED_EXCEPTION_ERROR,
+                        PED_EXCEPTION_RETRY_IGNORE_CANCEL,
+                        _("%s during read on %s"),
+                        strerror (errno), dev->path);
+
+                if (opt == PED_EXCEPTION_CANCEL)
+                        return 0;
+                if (opt == PED_EXCEPTION_RETRY)
+                        goto retry;
+        }
+
+        return 1;
+}
+
+static int
+linux_read (const PedDevice* dev, void* buffer, PedSector start,
+            PedSector count)
+{
+        LinuxSpecific*          arch_specific = LINUX_SPECIFIC (dev);
+        PedExceptionOption      ex_status;
+        void*                   diobuf = NULL;
+
+        PED_ASSERT (dev != NULL);
+        PED_ASSERT (dev->sector_size % PED_SECTOR_SIZE_DEFAULT == 0);
+
+        if (_get_linux_version() < KERNEL_VERSION (2,6,0)) {
+                /* Kludge.  This is necessary to read/write the last
+                   block of an odd-sized disk, until Linux 2.5.x kernel fixes.
+                */
+                if (dev->type != PED_DEVICE_FILE && (dev->length & 1)
+                    && start + count - 1 == dev->length - 1)
+                        return ped_device_read (dev, buffer, start, count - 1)
+                                && _read_lastoddsector (
+                                        dev, (char *) buffer + (count-1) * 512);
+        }
+        while (1) {
+                if (_device_seek (dev, start))
+                        break;
+
+                ex_status = ped_exception_throw (
+                        PED_EXCEPTION_ERROR,
+                        PED_EXCEPTION_RETRY_IGNORE_CANCEL,
+                        _("%s during seek for read on %s"),
+                        strerror (errno), dev->path);
+
+                switch (ex_status) {
+                        case PED_EXCEPTION_IGNORE:
+                                return 1;
+
+                        case PED_EXCEPTION_RETRY:
+                                break;
+
+                        case PED_EXCEPTION_UNHANDLED:
+                                ped_exception_catch ();
+                        case PED_EXCEPTION_CANCEL:
+                                return 0;
+                        default:
+                                PED_ASSERT (0);
+                                break;
+                }
+        }
+
+        size_t read_length = count * dev->sector_size;
+        if (posix_memalign (&diobuf, dev->sector_size, read_length) != 0)
+                return 0;
+
+        while (1) {
+                ssize_t status = read (arch_specific->fd, diobuf, read_length);
+                if (status > 0)
+                        memcpy(buffer, diobuf, status);
+                if (status == (ssize_t) read_length)
+                        break;
+                if (status > 0) {
+                        read_length -= status;
+                        buffer = (char *) buffer + status;
+                        continue;
+                }
+
+                ex_status = ped_exception_throw (
+                        PED_EXCEPTION_ERROR,
+                        PED_EXCEPTION_RETRY_IGNORE_CANCEL,
+                        (status == 0
+                         ? _("end of file while reading %s")
+                         : _("%s during read on %s")),
+                        strerror (errno),
+                        dev->path);
+
+                switch (ex_status) {
+                        case PED_EXCEPTION_IGNORE:
+                                free(diobuf);
+                                return 1;
+
+                        case PED_EXCEPTION_RETRY:
+                                break;
+
+                        case PED_EXCEPTION_UNHANDLED:
+                                ped_exception_catch ();
+                        case PED_EXCEPTION_CANCEL:
+                                free(diobuf);
+                                return 0;
+                        default:
+                                PED_ASSERT (0);
+                                break;
+                }
+        }
+
+        free (diobuf);
+
+        return 1;
+}
+
+static int
+_write_lastoddsector (PedDevice* dev, const void* buffer)
+{
+        LinuxSpecific*                  arch_specific;
+        struct blkdev_ioctl_param       ioctl_param;
+
+        PED_ASSERT(dev != NULL);
+        PED_ASSERT(buffer != NULL);
+
+        arch_specific = LINUX_SPECIFIC (dev);
+
+retry:
+        ioctl_param.block = 0; /* write the last sector */
+        ioctl_param.content_length = dev->sector_size;
+        ioctl_param.block_contents = (void*) buffer;
+
+        if (ioctl(arch_specific->fd, BLKSETLASTSECT, &ioctl_param) == -1) {
+                PedExceptionOption      opt;
+                opt = ped_exception_throw (
+                        PED_EXCEPTION_ERROR,
+                        PED_EXCEPTION_RETRY_IGNORE_CANCEL,
+                        _("%s during write on %s"),
+                        strerror (errno), dev->path);
+
+                if (opt == PED_EXCEPTION_CANCEL)
+                        return 0;
+                if (opt == PED_EXCEPTION_RETRY)
+                        goto retry;
+        }
+
+        return 1;
+}
+
+static int
+linux_write (PedDevice* dev, const void* buffer, PedSector start,
+             PedSector count)
+{
+        LinuxSpecific*          arch_specific = LINUX_SPECIFIC (dev);
+        PedExceptionOption      ex_status;
+        void*                   diobuf;
+        void*                   diobuf_start;
+
+        PED_ASSERT(dev->sector_size % PED_SECTOR_SIZE_DEFAULT == 0);
+
+        if (dev->read_only) {
+                if (ped_exception_throw (
+                        PED_EXCEPTION_ERROR,
+                        PED_EXCEPTION_IGNORE_CANCEL,
+                        _("Can't write to %s, because it is opened read-only."),
+                        dev->path)
+                                != PED_EXCEPTION_IGNORE)
+                        return 0;
+                else
+                        return 1;
+        }
+
+        if (_get_linux_version() < KERNEL_VERSION (2,6,0)) {
+                /* Kludge.  This is necessary to read/write the last
+                   block of an odd-sized disk, until Linux 2.5.x kernel fixes.
+                */
+                if (dev->type != PED_DEVICE_FILE && (dev->length & 1)
+                    && start + count - 1 == dev->length - 1)
+                        return ped_device_write (dev, buffer, start, count - 1)
+                                && _write_lastoddsector (
+                                        dev, ((char*) buffer
+                                              + (count-1) * dev->sector_size));
+        }
+        while (1) {
+                if (_device_seek (dev, start))
+                        break;
+
+                ex_status = ped_exception_throw (
+                        PED_EXCEPTION_ERROR, PED_EXCEPTION_RETRY_IGNORE_CANCEL,
+                        _("%s during seek for write on %s"),
+                        strerror (errno), dev->path);
+
+                switch (ex_status) {
+                        case PED_EXCEPTION_IGNORE:
+                                return 1;
+
+                        case PED_EXCEPTION_RETRY:
+                                break;
+
+                        case PED_EXCEPTION_UNHANDLED:
+                                ped_exception_catch ();
+                        case PED_EXCEPTION_CANCEL:
+                                return 0;
+                        default:
+                                PED_ASSERT (0);
+                                break;
+                }
+        }
+
+#ifdef READ_ONLY
+        printf ("ped_device_write (\"%s\", %p, %d, %d)\n",
+                dev->path, buffer, (int) start, (int) count);
+#else
+        size_t write_length = count * dev->sector_size;
+        dev->dirty = 1;
+        if (posix_memalign(&diobuf, dev->sector_size, write_length) != 0)
+                return 0;
+        memcpy(diobuf, buffer, write_length);
+        diobuf_start = diobuf;
+        while (1) {
+                ssize_t status = write (arch_specific->fd, diobuf, write_length);
+                if (status == write_length) break;
+                if (status > 0) {
+                        write_length -= status;
+                        diobuf = (char *) diobuf + status;
+                        continue;
+                }
+
+                ex_status = ped_exception_throw (
+                        PED_EXCEPTION_ERROR,
+                        PED_EXCEPTION_RETRY_IGNORE_CANCEL,
+                        _("%s during write on %s"),
+                        strerror (errno), dev->path);
+
+                switch (ex_status) {
+                        case PED_EXCEPTION_IGNORE:
+                                free(diobuf_start);
+                                return 1;
+
+                        case PED_EXCEPTION_RETRY:
+                                break;
+
+                        case PED_EXCEPTION_UNHANDLED:
+                                ped_exception_catch ();
+                        case PED_EXCEPTION_CANCEL:
+                                free(diobuf_start);
+                                return 0;
+                        default:
+                                PED_ASSERT (0);
+                                break;
+                }
+        }
+        free(diobuf_start);
+#endif /* !READ_ONLY */
+        return 1;
+}
+
+/* returns the number of sectors that are ok.
+ */
+static PedSector
+linux_check (PedDevice* dev, void* buffer, PedSector start, PedSector count)
+{
+        LinuxSpecific*  arch_specific = LINUX_SPECIFIC (dev);
+        PedSector       done = 0;
+        int             status;
+        void*           diobuf;
+
+        PED_ASSERT(dev != NULL);
+
+        if (!_device_seek (dev, start))
+                return 0;
+
+        if (posix_memalign(&diobuf, PED_SECTOR_SIZE_DEFAULT,
+                           count * PED_SECTOR_SIZE_DEFAULT) != 0)
+                return 0;
+
+        for (done = 0; done < count; done += status / dev->sector_size) {
+                status = read (arch_specific->fd, diobuf,
+                               (size_t) ((count-done) * dev->sector_size));
+                if (status > 0)
+                        memcpy(buffer, diobuf, status);
+                if (status < 0)
+                        break;
+        }
+        free(diobuf);
+
+        return done;
+}
+
+static int
+_do_fsync (PedDevice* dev)
+{
+        LinuxSpecific*          arch_specific = LINUX_SPECIFIC (dev);
+        int                     status;
+        PedExceptionOption      ex_status;
+
+        while (1) {
+                status = fsync (arch_specific->fd);
+                if (status >= 0) break;
+
+                ex_status = ped_exception_throw (
+                        PED_EXCEPTION_ERROR,
+                        PED_EXCEPTION_RETRY_IGNORE_CANCEL,
+                        _("%s during write on %s"),
+                        strerror (errno), dev->path);
+
+                switch (ex_status) {
+                        case PED_EXCEPTION_IGNORE:
+                                return 1;
+
+                        case PED_EXCEPTION_RETRY:
+                                break;
+
+                        case PED_EXCEPTION_UNHANDLED:
+                                ped_exception_catch ();
+                        case PED_EXCEPTION_CANCEL:
+                                return 0;
+                        default:
+                                PED_ASSERT (0);
+                                break;
+                }
+        }
+        return 1;
+}
+
+static int
+linux_sync (PedDevice* dev)
+{
+        PED_ASSERT (dev != NULL);
+        PED_ASSERT (!dev->external_mode);
+
+        if (dev->read_only)
+                return 1;
+        if (!_do_fsync (dev))
+                return 0;
+        _flush_cache (dev);
+        return 1;
+}
+
+static int
+linux_sync_fast (PedDevice* dev)
+{
+        PED_ASSERT (dev != NULL);
+        PED_ASSERT (!dev->external_mode);
+
+        if (dev->read_only)
+                return 1;
+        if (!_do_fsync (dev))
+                return 0;
+        /* no cache flush... */
+        return 1;
+}
+
+static inline int
+_compare_digit_state (char ch, int need_digit)
+{
+        return !!isdigit (ch) == need_digit;
+}
+
+/* matches the regexp "[^0-9]+[0-9]+[^0-9]+[0-9]+$".
+ * Motivation: accept devices looking like /dev/rd/c0d0, but
+ * not looking like /dev/hda1 and /dev/rd/c0d0p1
+ */
+static int
+_match_rd_device (const char* name)
+{
+        const char* pos;
+        int state;
+
+        /* exclude directory names from test */
+        pos = strrchr(name, '/') ?: name;
+
+        /* states:
+         *      0       non-digits
+         *      1       digits
+         *      2       non-digits
+         *      3       digits
+         */
+        for (state = 0; state < 4; state++) {
+                int want_digits = (state % 2 == 1);
+                do {
+                        if (!*pos)
+                                return 0;
+                        if (!_compare_digit_state (*pos, want_digits))
+                                return 0;
+                        pos++;
+                } while (_compare_digit_state (*pos, want_digits));
+        }
+
+        return *pos == 0;
+}
+
+static int
+_probe_proc_partitions ()
+{
+        FILE*           proc_part_file;
+        int             major, minor, size;
+        char            buf [512];
+        char            part_name [256];
+        char            dev_name [256];
+        int ok = 0;
+
+        proc_part_file = fopen ("/proc/partitions", "r");
+        if (!proc_part_file)
+                return 0;
+
+        if (fgets (buf, 256, proc_part_file) == NULL)
+                goto done;
+
+        if (fgets (buf, 256, proc_part_file) == NULL)
+                goto done;
+
+        while (fgets (buf, 512, proc_part_file)
+               && sscanf (buf, "%d %d %d %255s", &major, &minor, &size,
+                          part_name) == 4) {
+                /* Heuristic for telling partitions and devices apart
+                 * Probably needs to be improved
+                 */
+                if (!_match_rd_device (part_name)
+                    && isdigit (part_name [strlen (part_name) - 1]))
+                        continue;
+
+                strcpy (dev_name, "/dev/");
+                strcat (dev_name, part_name);
+                _ped_device_probe (dev_name);
+        }
+
+        ok = 1;
+ done:
+        fclose (proc_part_file);
+        return ok;
+}
+
+struct _entry {
+       const char *name;
+       size_t len;
+};
+
+static int
+_skip_entry (const char *name)
+{
+       struct _entry *i;
+       static struct _entry entries[] = {
+               { ".",          sizeof (".") - 1        },
+               { "..",         sizeof ("..") - 1       },
+               { "dm-",        sizeof ("dm-") - 1      },
+               { "loop",       sizeof ("loop") - 1     },
+               { "ram",        sizeof ("ram") - 1      },
+               { 0, 0 },
+       };
+
+       for (i = entries; i->name != 0; i++) {
+               if (strncmp (name, i->name, i->len) == 0)
+                       return 1;
+       }
+
+       return 0;
+}
+
+static int
+_probe_sys_block ()
+{
+       DIR *blockdir;
+       struct dirent *dirent;
+       char dev_name [256];
+       char *ptr;
+
+       if (!(blockdir = opendir ("/sys/block")))
+               return 0;
+       while ((dirent = readdir (blockdir))) {
+               if (_skip_entry (dirent->d_name))
+                       continue;
+
+               if (strlen (dirent->d_name) > sizeof (dev_name) - 6)
+                       continue; /* device name too long! */
+
+               strcpy (dev_name, "/dev/");
+               strcat (dev_name, dirent->d_name);
+               /* in /sys/block, '/'s are replaced with '!' or '.' */
+               for (ptr = dev_name; *ptr != '\0'; ptr++) {
+                       if (*ptr == '!' || *ptr == '.')
+                               *ptr = '/';
+               }
+               _ped_device_probe (dev_name);
+       }
+
+       closedir (blockdir);
+       return 1;
+}
+
+static int
+_probe_standard_devices ()
+{
+        _ped_device_probe ("/dev/hda");
+        _ped_device_probe ("/dev/hdb");
+        _ped_device_probe ("/dev/hdc");
+        _ped_device_probe ("/dev/hdd");
+        _ped_device_probe ("/dev/hde");
+        _ped_device_probe ("/dev/hdf");
+        _ped_device_probe ("/dev/hdg");
+        _ped_device_probe ("/dev/hdh");
+
+        _ped_device_probe ("/dev/sda");
+        _ped_device_probe ("/dev/sdb");
+        _ped_device_probe ("/dev/sdc");
+        _ped_device_probe ("/dev/sdd");
+        _ped_device_probe ("/dev/sde");
+        _ped_device_probe ("/dev/sdf");
+
+        return 1;
+}
+
+static void
+linux_probe_all ()
+{
+        /* we should probe the standard devs too, even with /proc/partitions,
+         * because /proc/partitions might return devfs stuff, and we might not
+         * have devfs available
+         */
+        _probe_standard_devices ();
+
+#ifdef ENABLE_DEVICE_MAPPER
+        /* device-mapper devices aren't listed in /proc/partitions; or, if
+         * they are, they're listed as dm-X.  So, instead of relying on that,
+         * we do our own checks.
+         */
+        _probe_dm_devices ();
+#endif
+
+        /* /sys/block is more reliable and consistent; fall back to using
+         * /proc/partitions if the former is unavailable, however.
+         */
+        if (!_probe_sys_block ())
+                _probe_proc_partitions ();
+}
+
+static char * _GL_ATTRIBUTE_FORMAT ((__printf__, 1, 2))
+zasprintf (const char *format, ...)
+{
+  va_list args;
+  char *resultp;
+  va_start (args, format);
+  int r = vasprintf (&resultp, format, args);
+  va_end (args);
+  return r < 0 ? NULL : resultp;
+}
+
+static char*
+_device_get_part_path (PedDevice *dev, int num)
+{
+        size_t path_len = strlen (dev->path);
+
+        char *result;
+        /* Check for devfs-style /disc => /partN transformation
+           unconditionally; the system might be using udev with devfs rules,
+           and if not the test is harmless. */
+        if (5 < path_len && !strcmp (dev->path + path_len - 5, "/disc")) {
+                /* replace /disc with /part%d */
+                result = zasprintf ("%.*s/part%d",
+                                    (int) (path_len - 5), dev->path, num);
+        } else {
+                char const *p = (dev->type == PED_DEVICE_DAC960
+                                 || dev->type == PED_DEVICE_CPQARRAY
+                                 || dev->type == PED_DEVICE_ATARAID
+                                 || dev->type == PED_DEVICE_DM
+                                 || isdigit (dev->path[path_len - 1])
+                                 ? "p" : "");
+                result = zasprintf ("%s%s%d", dev->path, p, num);
+        }
+
+        return result;
+}
+
+static char*
+linux_partition_get_path (const PedPartition* part)
+{
+        return _device_get_part_path (part->disk->dev, part->num);
+}
+
+static int
+_mount_table_search (const char* file_name, dev_t dev)
+{
+        struct stat part_stat;
+        char line[512];
+        char part_name[512];
+        FILE* file;
+
+        file = fopen (file_name, "r");
+        if (!file)
+                return 0;
+        while (fgets (line, 512, file)) {
+                if (sscanf (line, "%s", part_name) == 1
+                    && stat (part_name, &part_stat) == 0) {
+                        if (part_stat.st_rdev == dev) {
+                                fclose (file);
+                                return 1;
+                        }
+                }
+        }
+        fclose (file);
+        return 0;
+}
+
+static int
+_partition_is_mounted_by_dev (dev_t dev)
+{
+        return  _mount_table_search( "/proc/mounts", dev)
+                || _mount_table_search( "/proc/swaps", dev)
+                || _mount_table_search( "/etc/mtab", dev);
+}
+
+static int
+_partition_is_mounted_by_path (const char *path)
+{
+        struct stat part_stat;
+        if (stat (path, &part_stat) != 0)
+                return 0;
+        if (!S_ISBLK(part_stat.st_mode))
+                return 0;
+        return _partition_is_mounted_by_dev (part_stat.st_rdev);
+}
+
+/* If partition PART is mounted, or if we encounter an out-of-memory error
+   while trying to determine its status, return 1.  Otherwise, return 0.  */
+static int
+_partition_is_mounted (const PedPartition *part)
+{
+       if (!ped_partition_is_active (part))
+               return 0;
+       char *part_name = _device_get_part_path (part->disk->dev, part->num);
+       if (!part_name)
+               return 1;
+       int status = _partition_is_mounted_by_path (part_name);
+       free (part_name);
+       return !!status;
+}
+
+static int
+_has_partitions (const PedDisk* disk)
+{
+        PED_ASSERT(disk != NULL);
+
+        /* Some devices can't be partitioned. */
+        if (!strcmp (disk->type->name, "loop"))
+                return 0;
+
+        return 1;
+}
+
+static int
+linux_partition_is_busy (const PedPartition* part)
+{
+        PedPartition*   walk;
+
+        PED_ASSERT (part != NULL);
+
+        if (_partition_is_mounted (part))
+                return 1;
+        if (part->type == PED_PARTITION_EXTENDED) {
+                for (walk = part->part_list; walk; walk = walk->next) {
+                        if (linux_partition_is_busy (walk))
+                                return 1;
+                }
+        }
+        return 0;
+}
+
+static int
+_blkpg_part_command (PedDevice* dev, struct blkpg_partition* part, int op)
+{
+        LinuxSpecific*          arch_specific = LINUX_SPECIFIC (dev);
+        struct blkpg_ioctl_arg  ioctl_arg;
+
+        ioctl_arg.op = op;
+        ioctl_arg.flags = 0;
+        ioctl_arg.datalen = sizeof (struct blkpg_partition);
+        ioctl_arg.data = (void*) part;
+
+        return ioctl (arch_specific->fd, BLKPG, &ioctl_arg) == 0;
+}
+
+static int
+_blkpg_add_partition (PedDisk* disk, const PedPartition *part)
+{
+        struct blkpg_partition  linux_part;
+        const char*             vol_name;
+        char*                   dev_name;
+
+        PED_ASSERT(disk != NULL);
+        PED_ASSERT(disk->dev->sector_size % PED_SECTOR_SIZE_DEFAULT == 0);
+
+        if (!_has_partitions (disk))
+                return 0;
+
+        if (ped_disk_type_check_feature (disk->type,
+                                         PED_DISK_TYPE_PARTITION_NAME))
+                vol_name = ped_partition_get_name (part);
+        else
+                vol_name = NULL;
+
+        dev_name = _device_get_part_path (disk->dev, part->num);
+        if (!dev_name)
+                return 0;
+
+        memset (&linux_part, 0, sizeof (linux_part));
+        linux_part.start = part->geom.start * disk->dev->sector_size;
+        /* see fs/partitions/msdos.c:msdos_partition(): "leave room for LILO" */
+        if (part->type & PED_PARTITION_EXTENDED)
+                linux_part.length = part->geom.length == 1 ? 512 : 1024;
+        else
+                linux_part.length = part->geom.length * disk->dev->sector_size;
+        linux_part.pno = part->num;
+        strncpy (linux_part.devname, dev_name, BLKPG_DEVNAMELTH);
+        if (vol_name)
+                strncpy (linux_part.volname, vol_name, BLKPG_VOLNAMELTH);
+
+        free (dev_name);
+
+        if (!_blkpg_part_command (disk->dev, &linux_part,
+                                  BLKPG_ADD_PARTITION)) {
+                return ped_exception_throw (
+                        PED_EXCEPTION_ERROR,
+                        PED_EXCEPTION_IGNORE_CANCEL,
+                        _("Error informing the kernel about modifications to "
+                          "partition %s -- %s.  This means Linux won't know "
+                          "about any changes you made to %s until you reboot "
+                          "-- so you shouldn't mount it or use it in any way "
+                          "before rebooting."),
+                        linux_part.devname,
+                        strerror (errno),
+                        linux_part.devname)
+                                == PED_EXCEPTION_IGNORE;
+        }
+
+        return 1;
+}
+
+static int
+_blkpg_remove_partition (PedDisk* disk, int n)
+{
+        struct blkpg_partition  linux_part;
+
+        if (!_has_partitions (disk))
+                return 0;
+
+        memset (&linux_part, 0, sizeof (linux_part));
+        linux_part.pno = n;
+        return _blkpg_part_command (disk->dev, &linux_part,
+                                    BLKPG_DEL_PARTITION);
+}
+
+/*
+ * The number of partitions that a device can have depends on the kernel.
+ * If we don't find this value in /sys/block/DEV/range, we will use our own
+ * value.
+ */
+static unsigned int
+_device_get_partition_range(PedDevice* dev)
+{
+        int         range, r;
+        char        path[128];
+        FILE*       fp;
+        bool        ok;
+
+        r = snprintf(path, sizeof(path), "/sys/block/%s/range",
+                     last_component(dev->path));
+        if (r < 0 || r >= sizeof(path))
+                return MAX_NUM_PARTS;
+
+        fp = fopen(path, "r");
+        if (!fp)
+                return MAX_NUM_PARTS;
+
+        ok = fscanf(fp, "%d", &range) == 1;
+        fclose(fp);
+
+        /* (range <= 0) is none sense.*/
+        return ok && range > 0 ? range : MAX_NUM_PARTS;
+}
+
+/*
+ * Sync the partition table in two step process:
+ * 1. Remove all of the partitions from the kernel's tables, but do not attempt
+ *    removal of any partition for which the corresponding ioctl call fails.
+ * 2. Add all the partitions that we hold in disk, throwing a warning
+ *    if we cannot because step 1 failed to remove it and it is not being
+ *    added back with the same start and length.
+ *
+ * To achieve this two step process we must calculate the minimum number of
+ * maximum possible partitions between what linux supports and what the label
+ * type supports. EX:
+ *
+ * number=MIN(max_parts_supported_in_linux,max_parts_supported_in_msdos_tables)
+ */
+static int
+_disk_sync_part_table (PedDisk* disk)
+{
+        PED_ASSERT(disk != NULL);
+        PED_ASSERT(disk->dev != NULL);
+        int lpn;
+
+        /* lpn = largest partition number. */
+        if (ped_disk_get_max_supported_partition_count(disk, &lpn))
+                lpn = PED_MIN(lpn, _device_get_partition_range(disk->dev));
+        else
+                lpn = _device_get_partition_range(disk->dev);
+
+        /* Its not possible to support largest_partnum < 0.
+         * largest_partnum == 0 would mean does not support partitions.
+         * */
+        if (lpn < 0)
+                return 0;
+        int ret = 0;
+        int *ok = calloc (lpn, sizeof *ok);
+        if (!ok)
+                return 0;
+        int *errnums = ped_malloc(sizeof(int) * lpn);
+        if (!errnums)
+                goto cleanup;
+
+        /* Attempt to remove each and every partition, retrying for
+           up to max_sleep_seconds upon any failure due to EBUSY. */
+        unsigned int sleep_microseconds = 10000;
+        unsigned int max_sleep_seconds = 1;
+        unsigned int n_sleep = (max_sleep_seconds
+                                * 1000000 / sleep_microseconds);
+        int i;
+        for (i = 0; i < n_sleep; i++) {
+           if (i)
+               usleep (sleep_microseconds);
+            bool busy = false;
+            int j;
+            for (j = 0; j < lpn; j++) {
+                if (!ok[j]) {
+                    ok[j] = _blkpg_remove_partition (disk, j + 1);
+                    errnums[j] = errno;
+                    if (!ok[j] && errnums[j] == EBUSY)
+                        busy = true;
+                }
+            }
+            if (!busy)
+                break;
+        }
+
+        for (i = 1; i <= lpn; i++) {
+                const PedPartition *part = ped_disk_get_partition (disk, i);
+                if (part) {
+                        if (!ok[i - 1] && errnums[i - 1] == EBUSY) {
+                                struct hd_geometry geom;
+                                unsigned long long length = 0;
+                                /* get start and length of existing partition */
+                                char *dev_name = _device_get_part_path (disk->dev, i);
+                                if (!dev_name)
+                                        goto cleanup;
+                                int fd = open (dev_name, O_RDONLY);
+                                if (fd == -1
+                                   || ioctl (fd, HDIO_GETGEO, &geom)
+                                   || ioctl (fd, BLKGETSIZE64, &length)) {
+                                        ped_exception_throw (
+                                                             PED_EXCEPTION_BUG,
+                                                             PED_EXCEPTION_CANCEL,
+                           _("Unable to determine the size and length of %s."),
+                                                             dev_name);
+                                        if (fd != -1)
+                                                close (fd);
+                                        free (dev_name);
+                                        goto cleanup;
+                                }
+                                free (dev_name);
+                                length /= disk->dev->sector_size;
+                                close (fd);
+                                if (geom.start == part->geom.start
+                                   && length == part->geom.length)
+                                        ok[i - 1] = 1;
+                                /* If the new partition is unchanged and the
+                                  existing one was not removed because it was
+                                  in use, then reset the error flag and do not
+                                  try to add it since it is already there.  */
+                                continue;
+                        }
+
+                        /* add the (possibly modified or new) partition */
+                        if (!_blkpg_add_partition (disk, part)) {
+                                ped_exception_throw (
+                                        PED_EXCEPTION_ERROR,
+                                        PED_EXCEPTION_RETRY_CANCEL,
+                                        _("Failed to add partition %d (%s)"),
+                                        i, strerror (errno));
+                                goto cleanup;
+                        }
+                }
+        }
+
+        char *bad_part_list = NULL;
+        /* now warn about any errors */
+        for (i = 1; i <= lpn; i++) {
+               if (ok[i - 1] || errnums[i - 1] == ENXIO)
+                       continue;
+               if (bad_part_list == NULL) {
+                         bad_part_list = malloc (lpn * 5);
+                         if (!bad_part_list)
+                                 goto cleanup;
+                         bad_part_list[0] = 0;
+               }
+               sprintf (bad_part_list + strlen (bad_part_list), "%d, ", i);
+       }
+        if (bad_part_list == NULL)
+               ret = 1;
+       else {
+                bad_part_list[strlen (bad_part_list) - 2] = 0;
+                if (ped_exception_throw (
+                        PED_EXCEPTION_ERROR,
+                        PED_EXCEPTION_IGNORE_CANCEL,
+                        _("Partition(s) %s on %s have been written, but we have "
+                         "been unable to inform the kernel of the change, "
+                         "probably because it/they are in use.  As a result, "
+                          "the old partition(s) will remain in use.  You "
+                          "should reboot now before making further changes."),
+                        bad_part_list, disk->dev->path) == PED_EXCEPTION_IGNORE)
+                        ret = 1;
+               free (bad_part_list);
+        }
+ cleanup:
+        free (errnums);
+        free (ok);
+        return ret;
+}
+
+#ifdef ENABLE_DEVICE_MAPPER
+static int
+_dm_remove_map_name(char *name)
+{
+        struct dm_task  *task = NULL;
+        int             rc;
+
+        task = dm_task_create(DM_DEVICE_REMOVE);
+        if (!task)
+                return 1;
+
+        dm_task_set_name (task, name);
+
+        rc = dm_task_run(task);
+        dm_task_update_nodes();
+        dm_task_destroy(task);
+        if (!rc)
+                return 1;
+
+        return 0;
+}
+
+static int
+_dm_is_part (struct dm_info *this, char *name)
+{
+        struct dm_task* task = NULL;
+        struct dm_info* info = alloca(sizeof *info);
+        struct dm_deps* deps = NULL;
+        int             rc = 0;
+        unsigned int    i;
+
+        task = dm_task_create(DM_DEVICE_DEPS);
+        if (!task)
+                return 0;
+
+        dm_task_set_name(task, name);
+        if (!dm_task_run(task))
+                goto err;
+
+        memset(info, '\0', sizeof *info);
+        dm_task_get_info(task, info);
+        if (!info->exists)
+                goto err;
+
+        deps = dm_task_get_deps(task);
+        if (!deps)
+                goto err;
+
+        for (i = 0; i < deps->count; i++) {
+                unsigned int ma = major(deps->device[i]),
+                             mi = minor(deps->device[i]);
+
+                if (ma == this->major && mi == this->minor)
+                        rc = 1;
+        }
+
+err:
+        dm_task_destroy(task);
+        return rc;
+}
+
+static int
+_dm_remove_parts (PedDevice* dev)
+{
+        struct dm_task*         task = NULL;
+        struct dm_info*         info = alloca(sizeof *info);
+        struct dm_names*        names = NULL;
+        unsigned int            next = 0;
+        int                     rc;
+        LinuxSpecific*          arch_specific = LINUX_SPECIFIC (dev);
+
+        task = dm_task_create(DM_DEVICE_LIST);
+        if (!task)
+                goto err;
+
+        if (!dm_task_set_major_minor (task, arch_specific->major,
+                                      arch_specific->minor, 0))
+                goto err;
+
+        if (!dm_task_run(task))
+                goto err;
+
+        memset(info, '\0', sizeof *info);
+        dm_task_get_info(task, info);
+        if (!info->exists)
+                goto err;
+
+        names = dm_task_get_names(task);
+        if (!names)
+                goto err;
+
+        rc = 0;
+        do {
+                names = (void *) ((char *) names + next);
+
+                if (_dm_is_part(info, names->name))
+                        rc += _dm_remove_map_name(names->name);
+
+                next = names->next;
+        } while (next);
+
+        dm_task_update_nodes();
+        dm_task_destroy(task);
+        task = NULL;
+
+        if (!rc)
+                return 1;
+err:
+        if (task)
+                dm_task_destroy(task);
+        ped_exception_throw (PED_EXCEPTION_WARNING, PED_EXCEPTION_IGNORE,
+                _("parted was unable to re-read the partition "
+                  "table on %s (%s).  This means Linux won't know "
+                  "anything about the modifications you made. "),
+                dev->path, strerror (errno));
+        return 0;
+}
+
+static int
+_dm_add_partition (PedDisk* disk, PedPartition* part)
+{
+        char*           vol_name = NULL;
+        const char*     dev_name = NULL;
+        char*           params = NULL;
+        LinuxSpecific*  arch_specific = LINUX_SPECIFIC (disk->dev);
+
+        if (!_has_partitions(disk))
+                return 0;
+
+        /* Get map name from devicemapper */
+        struct dm_task *task = dm_task_create (DM_DEVICE_INFO);
+        if (!task)
+                goto err;
+
+        if (!dm_task_set_major_minor (task, arch_specific->major,
+                                      arch_specific->minor, 0))
+                goto err;
+
+        if (!dm_task_run(task))
+                goto err;
+
+        dev_name = dm_task_get_name (task);
+
+        if ( ! (vol_name = zasprintf ("%sp%d", dev_name, part->num)))
+                goto err;
+
+        /* Caution: dm_task_destroy frees dev_name.  */
+        dm_task_destroy (task);
+        task = NULL;
+
+        if ( ! (params = zasprintf ("%d:%d %lld", arch_specific->major,
+                                    arch_specific->minor, part->geom.start)))
+                goto err;
+
+        task = dm_task_create (DM_DEVICE_CREATE);
+        if (!task)
+                goto err;
+
+        dm_task_set_name (task, vol_name);
+        dm_task_add_target (task, 0, part->geom.length,
+                "linear", params);
+        if (dm_task_run (task)) {
+                //printf("0 %ld linear %s\n", part->geom.length, params);
+                dm_task_update_nodes();
+                dm_task_destroy(task);
+                free(params);
+                free(vol_name);
+                return 1;
+        } else {
+                _dm_remove_map_name(vol_name);
+        }
+err:
+        dm_task_update_nodes();
+        if (task)
+                dm_task_destroy (task);
+        free (params);
+        free (vol_name);
+        return 0;
+}
+
+static int
+_dm_reread_part_table (PedDisk* disk)
+{
+        int largest_partnum = ped_disk_get_last_partition_num (disk);
+        if (largest_partnum <= 0)
+          return 1;
+
+        int     rc = 1;
+        int     last = PED_MIN (largest_partnum, 16);
+        int     i;
+
+        sync();
+        if (!_dm_remove_parts(disk->dev))
+                rc = 0;
+
+        for (i = 1; i <= last; i++) {
+                PedPartition*      part;
+
+                part = ped_disk_get_partition (disk, i);
+                if (!part)
+                        continue;
+
+                if (!_dm_add_partition (disk, part))
+                        rc = 0;
+        }
+        return rc;
+}
+#endif
+
+static int
+_have_blkpg ()
+{
+        static int have_blkpg = -1;
+        int kver;
+
+        if (have_blkpg != -1)
+                return have_blkpg;
+
+        kver = _get_linux_version();
+        return have_blkpg = kver >= KERNEL_VERSION (2,4,0) ? 1 : 0;
+}
+
+/* Return nonzero upon success, 0 if something fails.  */
+static int
+linux_disk_commit (PedDisk* disk)
+{
+        if (!_has_partitions (disk))
+                return 1;
+
+#ifdef ENABLE_DEVICE_MAPPER
+        if (disk->dev->type == PED_DEVICE_DM)
+                return _dm_reread_part_table (disk);
+#endif
+        if (disk->dev->type != PED_DEVICE_FILE) {
+
+               /* We now require BLKPG support.  If this assertion fails,
+                  please write to the mailing list describing your system.
+                  Assuming it's never triggered, ...
+                  FIXME: remove this assertion in 2012.  */
+               assert (_have_blkpg ());
+
+               if (!_disk_sync_part_table (disk))
+                       return 0;
+        }
+
+        return 1;
+}
+
+#if USE_BLKID
+static PedAlignment*
+linux_get_minimum_alignment(const PedDevice *dev)
+{
+        blkid_topology tp = LINUX_SPECIFIC(dev)->topology;
+        if (!tp)
+                return NULL;
+
+        if (blkid_topology_get_minimum_io_size(tp) == 0)
+                return ped_alignment_new(
+                        blkid_topology_get_alignment_offset(tp) /
+                                dev->sector_size,
+                        dev->phys_sector_size / dev->sector_size);
+
+        return ped_alignment_new(
+                blkid_topology_get_alignment_offset(tp) / dev->sector_size,
+                blkid_topology_get_minimum_io_size(tp) / dev->sector_size);
+}
+
+static PedAlignment*
+linux_get_optimum_alignment(const PedDevice *dev)
+{
+        blkid_topology tp = LINUX_SPECIFIC(dev)->topology;
+        if (!tp)
+                return NULL;
+
+        /* When PED_DEFAULT_ALIGNMENT is divisible by the *_io_size or
+          there are no *_io_size values, use the PED_DEFAULT_ALIGNMENT
+           If one or the other will not divide evenly, fall through to
+           previous logic. */
+        unsigned long optimal_io = blkid_topology_get_optimal_io_size(tp);
+        unsigned long minimum_io = blkid_topology_get_minimum_io_size(tp);
+        if (
+            (!optimal_io && !minimum_io)
+           || (optimal_io && PED_DEFAULT_ALIGNMENT % optimal_io == 0
+               && minimum_io && PED_DEFAULT_ALIGNMENT % minimum_io == 0)
+           || (!minimum_io && optimal_io
+               && PED_DEFAULT_ALIGNMENT % optimal_io == 0)
+           || (!optimal_io && minimum_io
+               && PED_DEFAULT_ALIGNMENT % minimum_io == 0)
+           ) {
+            /* DASD needs to use minimum alignment */
+            if (dev->type == PED_DEVICE_DASD)
+                return linux_get_minimum_alignment(dev);
+
+            return ped_alignment_new(
+                    blkid_topology_get_alignment_offset(tp) / dev->sector_size,
+                    PED_DEFAULT_ALIGNMENT / dev->sector_size);
+        }
+
+        /* If optimal_io_size is 0 and we don't meet the other criteria
+           for using the device.c default, return the minimum alignment. */
+        if (blkid_topology_get_optimal_io_size(tp) == 0)
+                return linux_get_minimum_alignment(dev);
+
+        return ped_alignment_new(
+                blkid_topology_get_alignment_offset(tp) / dev->sector_size,
+                blkid_topology_get_optimal_io_size(tp) / dev->sector_size);
+}
+#endif
+
+static PedDeviceArchOps linux_dev_ops = {
+        _new:           linux_new,
+        destroy:        linux_destroy,
+        is_busy:        linux_is_busy,
+        open:           linux_open,
+        refresh_open:   linux_refresh_open,
+        close:          linux_close,
+        refresh_close:  linux_refresh_close,
+        read:           linux_read,
+        write:          linux_write,
+        check:          linux_check,
+        sync:           linux_sync,
+        sync_fast:      linux_sync_fast,
+        probe_all:      linux_probe_all,
+#if USE_BLKID
+        get_minimum_alignment: linux_get_minimum_alignment,
+        get_optimum_alignment: linux_get_optimum_alignment,
+#endif
+};
+
+PedDiskArchOps linux_disk_ops =  {
+        partition_get_path:     linux_partition_get_path,
+        partition_is_busy:      linux_partition_is_busy,
+        disk_commit:            linux_disk_commit
+};
+
+PedArchitecture ped_linux_arch = {
+        dev_ops:        &linux_dev_ops,
+        disk_ops:       &linux_disk_ops
+};
diff --git a/libparted/arch/linux.h b/libparted/arch/linux.h
new file mode 100644 (file)
index 0000000..ca57361
--- /dev/null
@@ -0,0 +1,44 @@
+/* libparted - a library for manipulating disk partitions
+    Copyright (C) 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef PED_ARCH_LINUX_H_INCLUDED
+#define PED_ARCH_LINUX_H_INCLUDED
+
+#if HAVE_BLKID_BLKID_H
+#  include <blkid/blkid.h>
+#endif
+
+#define LINUX_SPECIFIC(dev)    ((LinuxSpecific*) (dev)->arch_specific)
+
+typedef        struct _LinuxSpecific   LinuxSpecific;
+
+struct _LinuxSpecific {
+       int     fd;
+       int     major;
+       int     minor;
+       char*   dmtype;         /**< device map target type */
+#if defined __s390__ || defined __s390x__
+       unsigned int real_sector_size;
+       unsigned int devno;
+#endif
+#if USE_BLKID
+        blkid_probe probe;
+        blkid_topology topology;
+#endif
+};
+
+#endif /* PED_ARCH_LINUX_H_INCLUDED */
diff --git a/libparted/architecture.c b/libparted/architecture.c
new file mode 100644 (file)
index 0000000..7af13d5
--- /dev/null
@@ -0,0 +1,43 @@
+ /*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#include <config.h>
+#include "architecture.h"
+
+const PedArchitecture* ped_architecture;
+
+void
+ped_set_architecture ()
+{
+       /* Set just once */
+       if (ped_architecture)
+               return;
+
+#ifdef linux
+       extern PedArchitecture ped_linux_arch;
+       const PedArchitecture* arch = &ped_linux_arch;
+#elif defined(__BEOS__)
+       extern PedArchitecture ped_beos_arch;
+       const PedArchitecture* arch = &ped_beos_arch;
+#else
+       extern PedArchitecture ped_gnu_arch;
+       const PedArchitecture* arch = &ped_gnu_arch;
+#endif
+
+       ped_architecture = arch;
+}
diff --git a/libparted/architecture.h b/libparted/architecture.h
new file mode 100644 (file)
index 0000000..eee6c04
--- /dev/null
@@ -0,0 +1,38 @@
+ /*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+/*
+ * WARNING: This shouldn't be exported to the API
+ */
+
+#ifndef _LIBPARTED_ARCH_H_INCLUDED
+#define _LIBPARTED_ARCH_H_INCLUDED
+
+#include <parted/disk.h>
+
+struct _PedArchitecture {
+       PedDiskArchOps*         disk_ops;
+       PedDeviceArchOps*       dev_ops;
+};
+typedef struct _PedArchitecture PedArchitecture;
+
+extern const PedArchitecture*  ped_architecture;
+
+extern void ped_set_architecture ();
+
+#endif /* _LIBPARTED_ARCH_H_INCLUDED */
diff --git a/libparted/cs/constraint.c b/libparted/cs/constraint.c
new file mode 100644 (file)
index 0000000..e0f4c4d
--- /dev/null
@@ -0,0 +1,537 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 2000-2001, 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+/**
+ * \addtogroup PedConstraint
+ *
+ * \brief Constraint solver interface.
+ *
+ * Constraints are used to communicate restrictions on operations Constraints
+ * are restrictions on the location and alignment of the start and end of a
+ * partition, and the minimum and maximum size.
+ *
+ * Constraints are closed under intersection (for the proof see the source
+ * code).  For background information see the Chinese Remainder Theorem.
+ *
+ * This interface consists of construction constraints, finding the intersection
+ * of constraints, and finding solutions to constraints.
+ *
+ * The constraint solver allows you to specify constraints on where a partition
+ * or file system (or any PedGeometry) may be placed/resized/etc. For example,
+ * you might want to make sure that a file system is at least 10 Gb, or that it
+ * starts at the beginning of new cylinder.
+ *
+ * The constraint solver in this file unifies solver in geom.c (which allows you
+ * to specify constraints on ranges) and natmath.c (which allows you to specify
+ * alignment constraints).
+ *
+ * @{
+ */
+
+#include <config.h>
+#include <parted/parted.h>
+#include <parted/debug.h>
+#include <assert.h>
+
+/**
+ * Initializes a pre-allocated piece of memory to contain a constraint
+ * with the supplied default values.
+ *
+ * \return \c 0 on failure.
+ */
+int
+ped_constraint_init (
+       PedConstraint* constraint,
+       const PedAlignment* start_align,
+       const PedAlignment* end_align,
+       const PedGeometry* start_range,
+       const PedGeometry* end_range,
+       PedSector min_size,
+       PedSector max_size)
+{
+       PED_ASSERT (constraint != NULL);
+       PED_ASSERT (start_range != NULL);
+       PED_ASSERT (end_range != NULL);
+       PED_ASSERT (min_size > 0);
+       PED_ASSERT (max_size > 0);
+
+       constraint->start_align = ped_alignment_duplicate (start_align);
+       constraint->end_align = ped_alignment_duplicate (end_align);
+       constraint->start_range = ped_geometry_duplicate (start_range);
+       constraint->end_range = ped_geometry_duplicate (end_range);
+       constraint->min_size = min_size;
+       constraint->max_size = max_size;
+
+       return 1;
+}
+
+/**
+ * Convenience wrapper for ped_constraint_init().
+ *
+ * Allocates a new piece of memory and initializes the constraint.
+ *
+ * \return \c NULL on failure.
+ */
+PedConstraint*
+ped_constraint_new (
+       const PedAlignment* start_align,
+       const PedAlignment* end_align,
+       const PedGeometry* start_range,
+       const PedGeometry* end_range,
+       PedSector min_size,
+       PedSector max_size)
+{
+       PedConstraint*  constraint;
+
+       constraint = (PedConstraint*) ped_malloc (sizeof (PedConstraint));
+       if (!constraint)
+               goto error;
+       if (!ped_constraint_init (constraint, start_align, end_align,
+                                 start_range, end_range, min_size, max_size))
+               goto error_free_constraint;
+       return constraint;
+
+error_free_constraint:
+       free (constraint);
+error:
+       return NULL;
+}
+
+/**
+ * Return a constraint that requires a region to be entirely contained inside
+ * \p max, and to entirely contain \p min.
+ *
+ * \return \c NULL on failure.
+ */
+PedConstraint*
+ped_constraint_new_from_min_max (
+       const PedGeometry* min,
+       const PedGeometry* max)
+{
+       PedGeometry     start_range;
+       PedGeometry     end_range;
+
+       PED_ASSERT (min != NULL);
+       PED_ASSERT (max != NULL);
+       PED_ASSERT (ped_geometry_test_inside (max, min));
+
+       ped_geometry_init (&start_range, min->dev, max->start,
+                          min->start - max->start + 1);
+       ped_geometry_init (&end_range, min->dev, min->end,
+                          max->end - min->end + 1);
+
+       return ped_constraint_new (
+                       ped_alignment_any, ped_alignment_any,
+                       &start_range, &end_range,
+                       min->length, max->length);
+}
+
+/**
+ * Return a constraint that requires a region to entirely contain \p min.
+ *
+ * \return \c NULL on failure.
+ */
+PedConstraint*
+ped_constraint_new_from_min (const PedGeometry* min)
+{
+       PedGeometry     full_dev;
+
+       PED_ASSERT (min != NULL);
+
+       ped_geometry_init (&full_dev, min->dev, 0, min->dev->length);
+       return ped_constraint_new_from_min_max (min, &full_dev);
+}
+
+/**
+ * Return a constraint that requires a region to be entirely contained inside
+ * \p max.
+ *
+ * \return \c NULL on failure.
+ */
+PedConstraint*
+ped_constraint_new_from_max (const PedGeometry* max)
+{
+       PED_ASSERT (max != NULL);
+
+       return ped_constraint_new (
+                       ped_alignment_any, ped_alignment_any,
+                       max, max, 1, max->length);
+}
+
+/**
+ * Duplicate a constraint.
+ *
+ * \return \c NULL on failure.
+ */
+PedConstraint*
+ped_constraint_duplicate (const PedConstraint* constraint)
+{
+       PED_ASSERT (constraint != NULL);
+
+       return ped_constraint_new (
+               constraint->start_align,
+               constraint->end_align,
+               constraint->start_range,
+               constraint->end_range,
+               constraint->min_size,
+               constraint->max_size);
+}
+
+/**
+ * Return a constraint that requires a region to satisfy both \p a and \p b.
+ *
+ * Moreover, any region satisfying \p a and \p b will also satisfy the returned
+ * constraint.
+ *
+ * \return \c NULL if no solution could be found (note that \c NULL is a valid
+ *         PedConstraint).
+ */
+PedConstraint*
+ped_constraint_intersect (const PedConstraint* a, const PedConstraint* b)
+{
+       PedAlignment*   start_align;
+       PedAlignment*   end_align;
+       PedGeometry*    start_range;
+       PedGeometry*    end_range;
+       PedSector       min_size;
+       PedSector       max_size;
+       PedConstraint*  constraint;
+
+       if (!a || !b)
+               return NULL;
+
+       start_align = ped_alignment_intersect (a->start_align, b->start_align);
+       if (!start_align)
+               goto empty;
+       end_align = ped_alignment_intersect (a->end_align, b->end_align);
+       if (!end_align)
+               goto empty_destroy_start_align;
+       start_range = ped_geometry_intersect (a->start_range, b->start_range);
+       if (!start_range)
+               goto empty_destroy_end_align;
+       end_range = ped_geometry_intersect (a->end_range, b->end_range);
+       if (!end_range)
+               goto empty_destroy_start_range;
+       min_size = PED_MAX (a->min_size, b->min_size);
+       max_size = PED_MIN (a->max_size, b->max_size);
+
+       constraint = ped_constraint_new (
+                       start_align, end_align, start_range, end_range,
+                       min_size, max_size);
+       if (!constraint)
+               goto empty_destroy_end_range;
+
+       ped_alignment_destroy (start_align);
+       ped_alignment_destroy (end_align);
+       ped_geometry_destroy (start_range);
+       ped_geometry_destroy (end_range);
+       return constraint;
+
+empty_destroy_end_range:
+       ped_geometry_destroy (end_range);
+empty_destroy_start_range:
+       ped_geometry_destroy (start_range);
+empty_destroy_end_align:
+       ped_alignment_destroy (end_align);
+empty_destroy_start_align:
+       ped_alignment_destroy (start_align);
+empty:
+       return NULL;
+}
+
+/**
+ * Release the memory allocated for a PedConstraint constructed with
+ * ped_constraint_init().
+ */
+void
+ped_constraint_done (PedConstraint* constraint)
+{
+       PED_ASSERT (constraint != NULL);
+
+       ped_alignment_destroy (constraint->start_align);
+       ped_alignment_destroy (constraint->end_align);
+       ped_geometry_destroy (constraint->start_range);
+       ped_geometry_destroy (constraint->end_range);
+}
+
+/**
+ * Release the memory allocated for a PedConstraint constructed with
+ * ped_constraint_new().
+ */
+void
+ped_constraint_destroy (PedConstraint* constraint)
+{
+       if (constraint) {
+               ped_constraint_done (constraint);
+               free (constraint);
+       }
+}
+
+/*
+ * Return the region within which the start must lie
+ * in order to satisfy a constriant.  It takes into account
+ * constraint->start_range, constraint->min_size and constraint->max_size.
+ * All sectors in this range that also satisfy alignment requirements have
+ * an end, such that the (start, end) satisfy the constraint.
+ */
+static PedGeometry*
+_constraint_get_canonical_start_range (const PedConstraint* constraint)
+{
+       PedSector       first_end_soln;
+       PedSector       last_end_soln;
+       PedSector       min_start;
+       PedSector       max_start;
+       PedGeometry     start_min_max_range;
+
+       if (constraint->min_size > constraint->max_size)
+               return NULL;
+
+       first_end_soln = ped_alignment_align_down (
+                       constraint->end_align, constraint->end_range,
+                       constraint->end_range->start);
+       last_end_soln = ped_alignment_align_up (
+                       constraint->end_align, constraint->end_range,
+                       constraint->end_range->end);
+       if (first_end_soln == -1 || last_end_soln == -1
+           || first_end_soln > last_end_soln
+           || last_end_soln < constraint->min_size)
+               return NULL;
+
+       min_start = first_end_soln - constraint->max_size + 1;
+       if (min_start < 0)
+               min_start = 0;
+       max_start = last_end_soln - constraint->min_size + 1;
+       if (max_start < 0)
+               return NULL;
+
+       ped_geometry_init (
+               &start_min_max_range, constraint->start_range->dev,
+               min_start, max_start - min_start + 1);
+
+       return ped_geometry_intersect (&start_min_max_range,
+                                      constraint->start_range);
+}
+
+/*
+ * Return the nearest start that will have at least one other end that
+ * together satisfy the constraint.
+ */
+static PedSector
+_constraint_get_nearest_start_soln (const PedConstraint* constraint,
+                                   PedSector start)
+{
+       PedGeometry*    start_range;
+       PedSector       result;
+
+       start_range = _constraint_get_canonical_start_range (constraint);
+       if (!start_range)
+               return -1;
+       result = ped_alignment_align_nearest (
+                       constraint->start_align, start_range, start);
+       ped_geometry_destroy (start_range);
+       return result;
+}
+
+/*
+ * Given a constraint and a start ("half of the solution"), find the
+ * range of all possible ends, such that all (start, end) are solutions
+ * to constraint (subject to additional alignment requirements).
+ */
+static PedGeometry*
+_constraint_get_end_range (const PedConstraint* constraint, PedSector start)
+{
+       PedDevice*      dev = constraint->end_range->dev;
+       PedSector       first_min_max_end;
+       PedSector       last_min_max_end;
+       PedGeometry     end_min_max_range;
+
+       if (start + constraint->min_size - 1 > dev->length - 1)
+               return NULL;
+
+       first_min_max_end = start + constraint->min_size - 1;
+       last_min_max_end = start + constraint->max_size - 1;
+       if (last_min_max_end > dev->length - 1)
+               last_min_max_end = dev->length - 1;
+
+       ped_geometry_init (&end_min_max_range, dev,
+                          first_min_max_end,
+                          last_min_max_end - first_min_max_end + 1);
+
+       return ped_geometry_intersect (&end_min_max_range,
+                                      constraint->end_range);
+}
+
+/*
+ * Given "constraint" and "start", find the end that is nearest to
+ * "end", such that ("start", the end) together form a solution to
+ * "constraint".
+ */
+static PedSector
+_constraint_get_nearest_end_soln (const PedConstraint* constraint,
+                                 PedSector start, PedSector end)
+{
+       PedGeometry*    end_range;
+       PedSector       result;
+
+       end_range = _constraint_get_end_range (constraint, start);
+       if (!end_range)
+               return -1;
+
+       result = ped_alignment_align_nearest (constraint->end_align, end_range,
+                                             end);
+       ped_geometry_destroy (end_range);
+       return result;
+}
+
+/**
+ * Return the nearest region to \p geom that satisfy a \p constraint.
+ *
+ * Note that "nearest" is somewhat ambiguous.  This function makes
+ * no guarantees about how this ambiguity is resovled.
+ *
+ * \return PedGeometry, or NULL when a \p constrain cannot be satisfied
+ */
+PedGeometry*
+ped_constraint_solve_nearest (
+       const PedConstraint* constraint, const PedGeometry* geom)
+{
+       PedSector       start;
+       PedSector       end;
+       PedGeometry*    result;
+
+       if (constraint == NULL)
+               return NULL;
+
+       PED_ASSERT (geom != NULL);
+       PED_ASSERT (constraint->start_range->dev == geom->dev);
+
+       start = _constraint_get_nearest_start_soln (constraint, geom->start);
+       if (start == -1)
+               return NULL;
+       end = _constraint_get_nearest_end_soln (constraint, start, geom->end);
+       if (end == -1)
+               return NULL;
+
+       result = ped_geometry_new (geom->dev, start, end - start + 1);
+       if (!result)
+               return NULL;
+       PED_ASSERT (ped_constraint_is_solution (constraint, result));
+       return result;
+}
+
+/**
+ * Find the largest region that satisfies a constraint.
+ *
+ * There might be more than one solution.  This function makes no
+ * guarantees about which solution it will choose in this case.
+ */
+PedGeometry*
+ped_constraint_solve_max (const PedConstraint* constraint)
+{
+       PedDevice*      dev;
+       PedGeometry     full_dev;
+
+       if (!constraint)
+               return NULL;
+       dev = constraint->start_range->dev;
+       ped_geometry_init (&full_dev, dev, 0, dev->length - 1);
+       return ped_constraint_solve_nearest (constraint, &full_dev);
+}
+
+/**
+ * Check whether \p geom satisfies the given constraint.
+ *
+ * \return \c 1 if it does.
+ **/
+int
+ped_constraint_is_solution (const PedConstraint* constraint,
+                           const PedGeometry* geom)
+{
+       PED_ASSERT (constraint != NULL);
+       PED_ASSERT (geom != NULL);
+
+       if (!ped_alignment_is_aligned (constraint->start_align, NULL,
+                                      geom->start))
+               return 0;
+       if (!ped_alignment_is_aligned (constraint->end_align, NULL, geom->end))
+               return 0;
+       if (!ped_geometry_test_sector_inside (constraint->start_range,
+                                             geom->start))
+               return 0;
+       if (!ped_geometry_test_sector_inside (constraint->end_range, geom->end))
+               return 0;
+       if (geom->length < constraint->min_size)
+               return 0;
+       if (geom->length > constraint->max_size)
+               return 0;
+       return 1;
+}
+
+/**
+ * Return a constraint that any region on the given device will satisfy.
+ */
+PedConstraint*
+ped_constraint_any (const PedDevice* dev)
+{
+       PedGeometry     full_dev;
+
+       if (!ped_geometry_init (&full_dev, dev, 0, dev->length))
+               return NULL;
+
+       return ped_constraint_new (
+                       ped_alignment_any,
+                       ped_alignment_any,
+                       &full_dev,
+                       &full_dev,
+                       1,
+                       dev->length);
+}
+
+/**
+ * Return a constraint that only the given region will satisfy.
+ */
+PedConstraint*
+ped_constraint_exact (const PedGeometry* geom)
+{
+       PedAlignment    start_align;
+       PedAlignment    end_align;
+       PedGeometry     start_sector;
+       PedGeometry     end_sector;
+       int ok;
+
+       /* With grain size of 0, it always succeeds.  */
+       ok = ped_alignment_init (&start_align, geom->start, 0);
+       assert (ok);
+       ok = ped_alignment_init (&end_align, geom->end, 0);
+       assert (ok);
+
+       ok = ped_geometry_init (&start_sector, geom->dev, geom->start, 1);
+       if (!ok)
+         return NULL;
+       ok = ped_geometry_init (&end_sector, geom->dev, geom->end, 1);
+       if (!ok)
+         return NULL;
+
+       return ped_constraint_new (&start_align, &end_align,
+                                  &start_sector, &end_sector, 1,
+                                  geom->dev->length);
+}
+
+/**
+ * @}
+ */
diff --git a/libparted/cs/geom.c b/libparted/cs/geom.c
new file mode 100644 (file)
index 0000000..c7d92f1
--- /dev/null
@@ -0,0 +1,492 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 1999-2000, 2005, 2007-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+/** \file geom.c */
+
+
+/**
+ * \addtogroup PedGeometry
+ *
+ * \brief PedGeometry represents a continuous region on a device. All addressing
+ *      through a PedGeometry object is in terms of the start of the continuous
+ *      region.
+ *
+ * The following conditions are always true on a PedGeometry object manipulated
+ * with the GNU Parted API:
+ *
+ * - <tt>start + length - 1 == end</tt>
+ * - <tt>length > 0</tt>
+ * - <tt>start >= 0</tt>
+ * - <tt>end < dev->length</tt>
+ *
+ * @{
+ */
+
+#include <config.h>
+
+#include <parted/parted.h>
+#include <parted/debug.h>
+
+#if ENABLE_NLS
+#  include <libintl.h>
+#  define _(String) dgettext (PACKAGE, String)
+#else
+#  define _(String) (String)
+#endif /* ENABLE_NLS */
+
+/**
+ * Initialize the previously allocated PedGeometry \p geom.
+ */
+int
+ped_geometry_init (PedGeometry* geom, const PedDevice* dev,
+                  PedSector start, PedSector length)
+{
+       PED_ASSERT (geom != NULL);
+       PED_ASSERT (dev != NULL);
+
+       geom->dev = (PedDevice*) dev;
+       return ped_geometry_set (geom, start, length);
+}
+
+/**
+ * Create a new PedGeometry object on \p disk, starting at \p start with a
+ * size of \p length sectors.
+ *
+ * \return NULL on failure.
+ */
+PedGeometry*
+ped_geometry_new (const PedDevice* dev, PedSector start, PedSector length)
+{
+       PedGeometry*    geom;
+
+       PED_ASSERT (dev != NULL);
+
+       geom = (PedGeometry*) ped_malloc (sizeof (PedGeometry));
+       if (!geom)
+               goto error;
+       if (!ped_geometry_init (geom, dev, start, length))
+               goto error_free_geom;
+       return geom;
+
+error_free_geom:
+       free (geom);
+error:
+       return NULL;
+}
+
+/**
+ * Duplicate a PedGeometry object.
+ *
+ * This function constructs a PedGeometry object that is an identical but
+ * independent copy of \p geom.  Both the input, \p geom, and the output
+ * should be destroyed with ped_geometry_destroy() when they are no
+ * longer needed.
+ *
+ * \return NULL on failure.
+ */
+PedGeometry*
+ped_geometry_duplicate (const PedGeometry* geom)
+{
+       PED_ASSERT (geom != NULL);
+       return ped_geometry_new (geom->dev, geom->start, geom->length);
+}
+
+/**
+ * Return a PedGeometry object that refers to the intersection of
+ * \p a and \p b.
+ *
+ * This function constructs a PedGeometry object that describes the
+ * region that is common to both a and b.  If there is no such common
+ * region, it returns NULL.  (This situation is not treated as an
+ * error by much of GNU Parted.)
+ */
+PedGeometry*
+ped_geometry_intersect (const PedGeometry* a, const PedGeometry* b)
+{
+       PedSector       start;
+       PedSector       end;
+
+       if (!a || !b || a->dev != b->dev)
+               return NULL;
+
+       start = PED_MAX (a->start, b->start);
+       end = PED_MIN (a->end, b->end);
+       if (start > end)
+               return NULL;
+
+       return ped_geometry_new (a->dev, start, end - start + 1);
+}
+
+/**
+ * Destroy a PedGeometry object.
+ */
+void
+ped_geometry_destroy (PedGeometry* geom)
+{
+       PED_ASSERT (geom != NULL);
+
+       free (geom);
+}
+
+/**
+ * Assign a new \p start, \p end (implicitly) and \p length to \p geom.
+ *
+ * \p geom->end is calculated from \p start and \p length.
+ */
+int
+ped_geometry_set (PedGeometry* geom, PedSector start, PedSector length)
+{
+       PED_ASSERT (geom != NULL);
+       PED_ASSERT (geom->dev != NULL);
+
+       if (length < 1) {
+               ped_exception_throw (
+                       PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_CANCEL,
+                       _("Can't have the end before the start!"
+                          " (start sector=%jd length=%jd)"), start, length);
+               return 0;
+       }
+       if (start < 0 || start + length - 1 >= geom->dev->length) {
+               ped_exception_throw (
+                       PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_CANCEL,
+                       _("Can't have a partition outside the disk!"));
+               return 0;
+       }
+
+       geom->start = start;
+       geom->length = length;
+       geom->end = start + length - 1;
+
+       return 1;
+}
+
+/**
+ * Assign a new start to \p geom without changing \p geom->end.
+ *
+ * \p geom->length is updated accordingly.
+ */
+int
+ped_geometry_set_start (PedGeometry* geom, PedSector start)
+{
+       return ped_geometry_set (geom, start, geom->end - start + 1);
+}
+
+/**
+ * Assign a new end to \p geom without changing \p geom->start.
+ *
+ * \p geom->length is updated accordingly.
+ */
+int
+ped_geometry_set_end (PedGeometry* geom, PedSector end)
+{
+       return ped_geometry_set (geom, geom->start, end - geom->start + 1);
+}
+/**
+ * Test if \p a overlaps with \p b.
+ *
+ * That is, they lie on the same physical device, and they share
+ * the same physical region at least partially.
+ *
+ * \return 1 if \p a and \p b overlap.
+ */
+int
+ped_geometry_test_overlap (const PedGeometry* a, const PedGeometry* b)
+{
+       PED_ASSERT (a != NULL);
+       PED_ASSERT (b != NULL);
+
+       if (a->dev != b->dev)
+               return 0;
+
+       if (a->start < b->start)
+               return a->end >= b->start;
+       else
+               return b->end >= a->start;
+}
+
+/**
+ * Tests if \p b lies completely within \p a.  That is, they lie on the same
+ * physical device, and all of the \p b's region is contained inside
+ * \p a's.
+ *
+ * \return 1 if the region \p b describes is contained entirely inside \p a
+*/
+int
+ped_geometry_test_inside (const PedGeometry* a, const PedGeometry* b)
+{
+       PED_ASSERT (a != NULL);
+       PED_ASSERT (b != NULL);
+
+       if (a->dev != b->dev)
+               return 0;
+
+       return b->start >= a->start && b->end <= a->end;
+}
+
+/**
+ * Tests if \a a and \p b refer to the same physical region.
+ *
+ * \return 1 if \p a and \p b describe the same regions
+ *
+ */
+int
+ped_geometry_test_equal (const PedGeometry* a, const PedGeometry* b)
+{
+       PED_ASSERT (a != NULL);
+       PED_ASSERT (b != NULL);
+
+       return a->dev == b->dev
+              && a->start == b->start
+              && a->end == b->end;
+}
+
+/**
+ * Tests if \p sector is inside \p geom.
+ *
+ * \return 1 if sector lies within the \p region that \p geom describes
+ */
+int
+ped_geometry_test_sector_inside (const PedGeometry* geom, PedSector sector)
+{
+       PED_ASSERT (geom != NULL);
+
+       return sector >= geom->start && sector <= geom->end;
+}
+
+/**
+ * Reads data from the region represented by \p geom.  \p offset is the
+ * location from within the region, not from the start of the disk.
+ * \p count sectors are read into \p buffer.
+ * This is essentially equivalent to:
+ * \code
+ *     ped_device_read (geom->disk->dev, buffer, geom->start + offset, count)
+ * \endcode
+ *
+ * \throws PED_EXCEPTION_ERROR when attempting to read sectors outside of
+ * partition
+ *
+ * \return 0 on failure
+ */
+int
+ped_geometry_read (const PedGeometry* geom, void* buffer, PedSector offset,
+                  PedSector count)
+{
+       PedSector       real_start;
+
+       PED_ASSERT (geom != NULL);
+       PED_ASSERT (buffer != NULL);
+       PED_ASSERT (offset >= 0);
+       PED_ASSERT (count >= 0);
+
+       real_start = geom->start + offset;
+
+       if (real_start + count - 1 > geom->end)
+               return 0;
+
+       if (!ped_device_read (geom->dev, buffer, real_start, count))
+               return 0;
+       return 1;
+}
+
+/* Like ped_device_read, but read into malloc'd storage.  */
+int
+ped_geometry_read_alloc (const PedGeometry* geom, void** buffer,
+                         PedSector offset, PedSector count)
+{
+       char *buf = ped_malloc (count * geom->dev->sector_size);
+       if (buf == NULL)
+               return 0;
+       int ok = ped_geometry_read (geom, buf, offset, count);
+       if (!ok) {
+               free (buf);
+               buf = NULL;
+       }
+
+       *buffer = buf;
+       return ok;
+}
+
+/**
+ * Flushes the cache on \p geom.
+ *
+ * This function flushes all write-behind caches that might be holding
+ * writes made by ped_geometry_write() to \p geom.  It is slow, because
+ * it guarantees cache coherency among all relevant caches.
+ *
+ * \return 0 on failure
+ */
+int
+ped_geometry_sync (PedGeometry* geom)
+{
+       PED_ASSERT (geom != NULL);
+       return ped_device_sync (geom->dev);
+}
+
+/**
+ * Flushes the cache on \p geom.
+ *
+ * This function flushes all write-behind caches that might be holding writes
+ * made by ped_geometry_write() to \p geom.  It does NOT ensure cache coherency
+ * with other caches that cache data in the region described by \p geom.
+ * If you need cache coherency, use ped_geometry_sync() instead.
+ *
+ * \return 0 on failure
+ */
+int
+ped_geometry_sync_fast (PedGeometry* geom)
+{
+       PED_ASSERT (geom != NULL);
+       return ped_device_sync_fast (geom->dev);
+}
+
+/**
+ * Writes data into the region represented by \p geom.  \p offset is the
+ * location from within the region, not from the start of the disk.
+ * \p count sectors are written.
+ *
+ * \return 0 on failure
+ */
+int
+ped_geometry_write (PedGeometry* geom, const void* buffer, PedSector offset,
+                   PedSector count)
+{
+       int             exception_status;
+       PedSector       real_start;
+
+       PED_ASSERT (geom != NULL);
+       PED_ASSERT (buffer != NULL);
+       PED_ASSERT (offset >= 0);
+       PED_ASSERT (count >= 0);
+
+       real_start = geom->start + offset;
+
+       if (real_start + count - 1 > geom->end) {
+               exception_status = ped_exception_throw (
+                       PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_IGNORE_CANCEL,
+                       _("Attempt to write sectors %ld-%ld outside of "
+                         "partition on %s."),
+                       (long) offset, (long) (offset + count - 1),
+                       geom->dev->path);
+               return exception_status == PED_EXCEPTION_IGNORE;
+       }
+
+       if (!ped_device_write (geom->dev, buffer, real_start, count))
+               return 0;
+       return 1;
+}
+
+/**
+ * Checks for physical disk errors.  \todo use ped_device_check()
+ *
+ * Checks a region for physical defects on \p geom.  \p buffer is used
+ * for temporary storage for ped_geometry_check(), and has an undefined
+ * value.  \p buffer is \p buffer_size sectors long.
+ * The region checked starts at \p offset sectors inside the
+ * region represented by \p geom, and is \p count sectors long.
+ * \p granularity specificies how sectors should be grouped
+ * together.  The first bad sector to be returned will always be in
+ * the form:
+ *     <tt>offset + n * granularity</tt>
+ *
+ * \return the first bad sector, or 0 if there were no physical errors
+ */
+PedSector
+ped_geometry_check (PedGeometry* geom, void* buffer, PedSector buffer_size,
+                   PedSector offset, PedSector granularity, PedSector count,
+                   PedTimer* timer)
+{
+       PedSector       group;
+       PedSector       i;
+       PedSector       read_len;
+
+       PED_ASSERT (geom != NULL);
+       PED_ASSERT (buffer != NULL);
+
+       ped_timer_reset (timer);
+       ped_timer_set_state_name (timer, _("checking for bad blocks"));
+
+retry:
+       ped_exception_fetch_all();
+       for (group = offset; group < offset + count; group += buffer_size) {
+               ped_timer_update (timer, 1.0 * (group - offset) / count);
+               read_len = PED_MIN (buffer_size, offset + count - group);
+               if (!ped_geometry_read (geom, buffer, group, read_len))
+                       goto found_error;
+       }
+       ped_exception_leave_all();
+       ped_timer_update (timer, 1.0);
+       return 0;
+
+found_error:
+       ped_exception_catch();
+       for (i = group; i + granularity < group + count; i += granularity) {
+               if (!ped_geometry_read (geom, buffer, i, granularity)) {
+                       ped_exception_catch();
+                       ped_exception_leave_all();
+                       return i;
+               }
+       }
+       ped_exception_leave_all();
+       goto retry;   /* weird: failure on group read, but not individually */
+}
+
+/**
+ * This function takes a \p sector inside the region described by src, and
+ * returns that sector's address inside dst.  This means that
+ *
+ * \code
+ *     ped_geometry_read (dst, buf, ped_geometry_map(dst, src, sector), 1)
+ * \endcode
+ *
+ * does the same thing as
+ *
+ * \code
+ *     ped_geometry_read (src, buf, sector, 1)
+ * \endcode
+ *
+ * Clearly, this will only work if \p src and \p dst overlap.
+ *
+ * \return -1 if \p sector is not within \p dst's space,
+ *     or \p sector's address inside \p dst
+ *
+ */
+PedSector
+ped_geometry_map (const PedGeometry* dst, const PedGeometry* src,
+                 PedSector sector)
+{
+       PedSector       result;
+
+       PED_ASSERT (dst != NULL);
+       PED_ASSERT (src != NULL);
+
+       if (!ped_geometry_test_sector_inside (src, sector))
+               return -1;
+       if (dst->dev != src->dev)
+               return -1;
+
+       result = src->start + sector - dst->start;
+       if (result < 0 || result > dst->length)
+               return -1;
+
+       return result;
+}
+
+/** @} */
diff --git a/libparted/cs/natmath.c b/libparted/cs/natmath.c
new file mode 100644 (file)
index 0000000..0294436
--- /dev/null
@@ -0,0 +1,481 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 2000, 2007-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+/**
+ * \file natmath.c
+ */
+
+/**
+ * \addtogroup PedAlignment
+ *
+ * \brief Alignment constraint model.
+ *
+ * This part of libparted models alignment constraints.
+ *
+ * @{
+ */
+
+#include <config.h>
+#include <stdlib.h>
+#include <parted/parted.h>
+#include <parted/debug.h>
+#include <parted/natmath.h>
+
+/* Arrrghhh!  Why doesn't C have tuples? */
+typedef struct {
+       PedSector       gcd;            /* "converges" to the gcd */
+       PedSector       x;
+       PedSector       y;
+} EuclidTriple;
+
+static const PedAlignment _any = {
+       offset:         0,
+       grain_size:     1
+};
+
+const PedAlignment* ped_alignment_any = &_any;
+const PedAlignment* ped_alignment_none = NULL;
+
+/* This function returns "a mod b", the way C should have done it!
+ * Mathematicians prefer -3 mod 4 to be 3.  Reason: division by N
+ * is all about adding or subtracting N, and we like our remainders
+ * to be between 0 and N - 1.
+ */
+static PedSector
+abs_mod (PedSector a, PedSector b)
+{
+       if (a < 0)
+               return a % b + b;
+       else
+               return a % b;
+}
+
+/* Rounds a number down to the closest number that is a multiple of
+ * grain_size.
+ */
+PedSector
+ped_round_down_to (PedSector sector, PedSector grain_size)
+{
+       return sector - abs_mod (sector, grain_size);
+}
+
+/* Rounds a number up to the closest number that is a multiple of
+ * grain_size.
+ */
+PedSector
+ped_round_up_to (PedSector sector, PedSector grain_size)
+{
+       if (sector % grain_size)
+               return ped_round_down_to (sector, grain_size) + grain_size;
+       else
+               return sector;
+}
+
+/* Rounds a number to the closest number that is a multiple of grain_size. */
+PedSector
+ped_round_to_nearest (PedSector sector, PedSector grain_size)
+{
+       if (sector % grain_size > grain_size/2)
+               return ped_round_up_to (sector, grain_size);
+       else
+               return ped_round_down_to (sector, grain_size);
+}
+
+/* This function returns the largest number that divides both a and b.
+ * It uses the ancient Euclidean algorithm.
+ */
+PedSector
+ped_greatest_common_divisor (PedSector a, PedSector b)
+{
+       PED_ASSERT (a >= 0);
+       PED_ASSERT (b >= 0);
+
+       /* Put the arguments in the "right" format.  (Recursive calls made by
+        * this function are always in the right format.)
+        */
+       if (b > a)
+               return ped_greatest_common_divisor (b, a);
+
+       if (b)
+               return ped_greatest_common_divisor (b, a % b);
+       else
+               return a;
+}
+
+/**
+ * Initialize a preallocated piece of memory for an alignment object
+ * (used by PedConstraint).
+ *
+ * The object will represent all sectors \e s for which the equation
+ * <tt>s = offset + X * grain_size</tt> holds.
+ */
+int
+ped_alignment_init (PedAlignment* align, PedSector offset, PedSector grain_size)
+{
+       PED_ASSERT (align != NULL);
+
+       if (grain_size < 0)
+               return 0;
+
+       if (grain_size)
+               align->offset = abs_mod (offset, grain_size);
+       else
+               align->offset = offset;
+       align->grain_size = grain_size;
+
+       return 1;
+}
+
+/**
+ * Return an alignment object (used by PedConstraint), representing all
+ * PedSector's that are of the form <tt>offset + X * grain_size</tt>.
+ */
+PedAlignment*
+ped_alignment_new (PedSector offset, PedSector grain_size)
+{
+       PedAlignment*   align;
+
+       align = (PedAlignment*) ped_malloc (sizeof (PedAlignment));
+       if (!align)
+               goto error;
+
+       if (!ped_alignment_init (align, offset, grain_size))
+               goto error_free_align;
+
+       return align;
+
+error_free_align:
+       free (align);
+error:
+       return NULL;
+}
+
+/**
+ * Free up memory associated with \p align.
+ */
+void
+ped_alignment_destroy (PedAlignment* align)
+{
+       free (align);
+}
+
+/**
+ * Return a duplicate of \p align.
+ */
+PedAlignment*
+ped_alignment_duplicate (const PedAlignment* align)
+{
+       if (!align)
+               return NULL;
+       return ped_alignment_new (align->offset, align->grain_size);
+}
+
+/* the extended Euclid algorithm.
+ *
+ * input:
+ *     a and b, a > b
+ *
+ * output:
+ *     gcd, x and y, such that:
+ *
+ *     gcd = greatest common divisor of a and b
+ *     gcd = x*a + y*b
+ */
+static EuclidTriple
+extended_euclid (int a, int b)
+{
+       EuclidTriple    result;
+       EuclidTriple    tmp;
+
+       if (b == 0) {
+               result.gcd = a;
+               result.x = 1;
+               result.y = 0;
+               return result;
+       }
+
+       tmp = extended_euclid (b, a % b);
+       result.gcd = tmp.gcd;
+       result.x = tmp.y;
+       result.y = tmp.x - (a/b) * tmp.y;
+       return result;
+}
+
+/**
+ * This function computes a PedAlignment object that describes the
+ * intersection of two alignments.  That is, a sector satisfies the
+ * new alignment object if and only if it satisfies both of the original
+ * ones.  (See ped_alignment_is_aligned() for the meaning of "satisfies")
+ *
+ * Apart from the trivial cases (where one or both of the alignment objects
+ * constraints have no sectors that satisfy them), this is what we're trying to
+ * do:
+ *  - two input constraints: \p a and \p b.
+ *  - the new grain_size is going to be the lowest common multiple of
+ *  \p a->grain_size and \p b->grain_size
+ *  - hard part - solve the simultaneous equations, for offset, where offset,
+ *  X and Y are variables.  (Note: offset can be obtained from either X or Y,
+ *  by substituing into either equation)
+ *
+ * \code
+ *     offset = \p a->offset + X * \p a->grain_size            (1)
+ *     offset = \p b->offset + Y * \p b->grain_size            (2)
+ * \endcode
+ *
+ * or, abbreviated:
+ *
+ * \code
+ *     o = Ao + X*Ag           (1)
+ *     o = Bo + Y*Bg           (2)
+ *
+ *  => Ao + X*Ag    = Bo + Y*Bg     (1) = (2)
+ *     X*Ag - Y*Bg  = Bo - Ao  (3)
+ * \endcode
+ *
+ * As it turns out, there only exists a solution if (Bo - Ao) is a multiple
+ * of the GCD of Ag and Bg.  Reason: all linear combinations of Ag and Bg are
+ * multiples of the GCD.
+ *
+ * Proof:
+ *
+ * \code
+ *     A * Ag + B * Bg
+ *     = A * (\p a * gcd) + B * (\p b * gcd)
+ *     = gcd * (A * \p a + B * \p b)
+ * \endcode
+ *
+ * gcd is a factor of the linear combination.  QED
+ *
+ * Anyway, \p a * Ag + \p b * Bg = gcd can be solved (for \p a, \p b and gcd)
+ * with Euclid's extended algorithm.  Then, we just multiply through by
+ * (Bo - Ao) / gcd to get (3).
+ *
+ * i.e.
+ * \code
+ *     A * Ag + B * Bg                         = gcd
+ *     A*(Bo-Ao)/gcd * Ag + B(Bo-Ao)/gcd * Bg  = gcd * (Bo-Ao)/gcd
+ *     X*Ag - Y*Bg                             = Bo - Ao               (3)
+ *
+ *     X = A*(Bo-Ao)/gcd
+ *     Y = - B*(Bo-Ao)/gcd
+ * \endcode
+ *
+ * then:
+ * \code
+ *     o = Ao + X*Ag                   (1)
+ *       = Ao + A*(Bo-Ao)/gcd*Ag
+ *     o = Bo + Y*Bg                   (2)
+ *       = Bo - B*(Bo-Ao)/gcd*Ag
+ * \endcode
+ *
+ * Thanks go to Nathan Hurst (njh@hawthorn.csse.monash.edu.au) for figuring
+ * this algorithm out :-)
+ *
+ * \note Returned \c NULL is a valid PedAlignment object, and can be used
+       for ped_alignment_*() function.
+ *
+ * \return a PedAlignment on success, \c NULL on failure
+ */
+PedAlignment*
+ped_alignment_intersect (const PedAlignment* a, const PedAlignment* b)
+{
+       PedSector       new_grain_size;
+       PedSector       new_offset;
+       PedSector       delta_on_gcd;
+       EuclidTriple    gcd_factors;
+
+
+       if (!a || !b)
+               return NULL;
+
+        /*PED_DEBUG (0x10, "intersecting alignments (%d,%d) and (%d,%d)",
+                        a->offset, a->grain_size, b->offset, b->grain_size);
+        */
+
+       if (a->grain_size < b->grain_size) {
+               const PedAlignment*     tmp;
+               tmp = a; a = b; b = tmp;
+       }
+
+       /* weird/trivial case: where the solution space for "a" or "b" is
+        * either empty or contains exactly one solution
+        */
+       if (a->grain_size == 0 && b->grain_size == 0) {
+               if (a->offset == b->offset)
+                       return ped_alignment_duplicate (a);
+               else
+                       return NULL;
+       }
+
+       /* general case */
+       gcd_factors = extended_euclid (a->grain_size, b->grain_size);
+
+       delta_on_gcd = (b->offset - a->offset) / gcd_factors.gcd;
+       new_offset = a->offset + gcd_factors.x * delta_on_gcd * a->grain_size;
+       new_grain_size = a->grain_size * b->grain_size / gcd_factors.gcd;
+
+       /* inconsistency => no solution */
+       if (new_offset
+           != b->offset - gcd_factors.y * delta_on_gcd * b->grain_size)
+               return NULL;
+
+       return ped_alignment_new (new_offset, new_grain_size);
+}
+
+/* This function returns the sector closest to "sector" that lies inside
+ * geom and satisfies the alignment constraint.
+ */
+static PedSector
+_closest_inside_geometry (const PedAlignment* align, const PedGeometry* geom,
+                         PedSector sector)
+{
+       PED_ASSERT (align != NULL);
+
+       if (!align->grain_size) {
+               if (ped_alignment_is_aligned (align, geom, sector)
+                   && (!geom || ped_geometry_test_sector_inside (geom,
+                                                                 sector)))
+                       return sector;
+               else
+                       return -1;
+       }
+
+       if (sector < geom->start)
+               sector += ped_round_up_to (geom->start - sector,
+                                          align->grain_size);
+       if (sector > geom->end)
+               sector -= ped_round_up_to (sector - geom->end,
+                                          align->grain_size);
+
+       if (!ped_geometry_test_sector_inside (geom, sector))
+               return -1;
+       return sector;
+}
+
+/**
+ * This function returns the closest sector to \p sector that lies inside
+ * \p geom that satisfies the given alignment constraint \p align.  It prefers
+ * sectors that are beyond \p sector (are not smaller than \p sector),
+ * but does not guarantee that this.
+ *
+ * \return a PedSector on success, \c -1 on failure
+ */
+PedSector
+ped_alignment_align_up (const PedAlignment* align, const PedGeometry* geom,
+                       PedSector sector)
+{
+       PedSector       result;
+
+       PED_ASSERT (align != NULL);
+
+       if (!align->grain_size)
+               result = align->offset;
+       else
+               result = ped_round_up_to (sector - align->offset,
+                                         align->grain_size)
+                        + align->offset;
+
+       if (geom)
+               result = _closest_inside_geometry (align, geom, result);
+       return result;
+}
+
+/**
+ * This function returns the closest sector to \p sector that lies inside
+ * \p geom that satisfies the given alignment constraint \p align.  It prefers
+ * sectors that are before \p sector (are not larger than \p sector),
+ * but does not guarantee that this.
+ *
+ * \return a PedSector on success, \c -1 on failure
+ */
+PedSector
+ped_alignment_align_down (const PedAlignment* align, const PedGeometry* geom,
+                         PedSector sector)
+{
+       PedSector       result;
+
+       PED_ASSERT (align != NULL);
+
+       if (!align->grain_size)
+               result = align->offset;
+       else
+               result = ped_round_down_to (sector - align->offset,
+                                           align->grain_size)
+                        + align->offset;
+
+       if (geom)
+               result = _closest_inside_geometry (align, geom, result);
+       return result;
+}
+
+/* Returns either a or b, depending on which is closest to "sector". */
+static PedSector
+closest (PedSector sector, PedSector a, PedSector b)
+{
+       if (a == -1)
+               return b;
+       if (b == -1)
+               return a;
+
+       if (abs (sector - a) < abs (sector - b))
+               return a;
+       else
+               return b;
+}
+
+/**
+ * This function returns the sector that is closest to \p sector,
+ * satisfies the \p align constraint and lies inside \p geom.
+ *
+ * \return a PedSector on success, \c -1 on failure
+ */
+PedSector
+ped_alignment_align_nearest (const PedAlignment* align, const PedGeometry* geom,
+                            PedSector sector)
+{
+       PED_ASSERT (align != NULL);
+
+       return closest (sector, ped_alignment_align_up (align, geom, sector),
+                       ped_alignment_align_down (align, geom, sector));
+}
+
+/**
+ * This function returns 1 if \p sector satisfies the alignment
+ * constraint \p align and lies inside \p geom.
+ *
+ * \return \c 1 on success, \c 0 on failure
+ */
+int
+ped_alignment_is_aligned (const PedAlignment* align, const PedGeometry* geom,
+                         PedSector sector)
+{
+       if (!align)
+               return 0;
+
+       if (geom && !ped_geometry_test_sector_inside (geom, sector))
+               return 0;
+
+       if (align->grain_size)
+               return (sector - align->offset) % align->grain_size == 0;
+       else
+               return sector == align->offset;
+}
+
+/**
+ * @}
+ */
diff --git a/libparted/debug.c b/libparted/debug.c
new file mode 100644 (file)
index 0000000..08d523e
--- /dev/null
@@ -0,0 +1,114 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 2000, 2005, 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#include <config.h>
+#include <parted/parted.h>
+#include <parted/debug.h>
+
+#if ENABLE_NLS
+#  include <libintl.h>
+#  define _(String) dgettext (PACKAGE, String)
+#else
+#  define _(String) (String)
+#endif /* ENABLE_NLS */
+
+#ifdef DEBUG
+
+#if HAVE_BACKTRACE
+#include <execinfo.h>
+#endif
+
+static void default_handler ( const int level, const char* file, int line,
+                const char* function, const char* msg );
+static PedDebugHandler* debug_handler = &default_handler;
+
+
+/**
+ * Default debug handler.
+ * Will print all information to stderr.
+ */
+static void default_handler ( const int level, const char* file, int line,
+                const char* function, const char* msg )
+{
+        fprintf ( stderr, "[%d] %s:%d (%s): %s\n",
+                        level, file, line, function, msg );
+}
+
+/**
+ * Send a debug message.
+ * Do not call this directly -- use PED_DEBUG() instead.
+ *
+ * level        log level, 0 ~= "print definitely"
+ */
+void ped_debug ( const int level, const char* file, int line,
+                 const char* function, const char* msg, ... )
+{
+        va_list         arg_list;
+        char*           msg_concat = ped_malloc(8192);
+
+        va_start ( arg_list, msg );
+                vsnprintf ( msg_concat, 8192, msg, arg_list );
+        va_end ( arg_list );
+
+        debug_handler ( level, file, line, function, msg_concat );
+
+        free ( msg_concat );
+}
+
+/*
+ * handler      debug handler; NULL for default handler
+ */
+void ped_debug_set_handler ( PedDebugHandler* handler )
+{
+        debug_handler = ( handler ? handler : default_handler );
+}
+
+/*
+ * Check an assertion.
+ * Do not call this directly -- use PED_ASSERT() instead.
+ */
+void ped_assert (const char* cond_text,
+                 const char* file, int line, const char* function)
+{
+#if HAVE_BACKTRACE
+        /* Print backtrace stack */
+        void *stack[20];
+        char **strings, **string;
+        int size = backtrace(stack, 20);
+        strings = backtrace_symbols(stack, size);
+
+        if (strings) {
+                printf(_("Backtrace has %d calls on stack:\n"), size);
+
+                for (string = strings; size > 0; size--, string++)
+                        printf("  %d: %s\n", size, *string);
+
+                free(strings);
+        }
+#endif
+
+        /* Throw the exception */
+        ped_exception_throw (
+                PED_EXCEPTION_BUG,
+                PED_EXCEPTION_FATAL,
+                _("Assertion (%s) at %s:%d in function %s() failed."),
+                cond_text, file, line, function);
+        abort ();
+}
+
+#endif /* DEBUG */
diff --git a/libparted/device.c b/libparted/device.c
new file mode 100644 (file)
index 0000000..738b320
--- /dev/null
@@ -0,0 +1,565 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 1999 - 2001, 2005, 2007-2010 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+/** \file device.c */
+
+/**
+ * \addtogroup PedDevice
+ *
+ * \brief Device access.
+ *
+ * When ped_device_probe_all() is called, libparted attempts to detect all
+ * devices.  It constructs a list which can be accessed with
+ * ped_device_get_next().
+ *
+ * If you want to use a device that isn't on the list, use
+ * ped_device_get().  Also, there may be OS-specific constructors, for creating
+ * devices from file descriptors, stores, etc.  For example,
+ * ped_device_new_from_store().
+ *
+ * @{
+ */
+
+#include <config.h>
+
+#include <parted/parted.h>
+#include <parted/debug.h>
+
+#include <limits.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <errno.h>
+
+#include "architecture.h"
+
+static PedDevice*      devices; /* legal advice says: initialized to NULL,
+                                   under section 6.7.8 part 10
+                                   of ISO/EIC 9899:1999 */
+
+static void
+_device_register (PedDevice* dev)
+{
+       PedDevice*      walk;
+       for (walk = devices; walk && walk->next; walk = walk->next);
+       if (walk)
+               walk->next = dev;
+       else
+               devices = dev;
+       dev->next = NULL;
+}
+
+static void
+_device_unregister (PedDevice* dev)
+{
+       PedDevice*      walk;
+       PedDevice*      last = NULL;
+
+       for (walk = devices; walk != NULL; last = walk, walk = walk->next) {
+               if (walk == dev) break;
+       }
+
+       /* This function may be called twice for the same device if a
+          libparted user explictly removes the device from the cache using
+          ped_device_cache_remove(), we get called and it then becomes the
+          user's responsibility to free the PedDevice by calling
+          ped_device_destroy().
+          ped_device_destroy() will then call us a second time, so if the
+          device is not found in the list do nothing. */
+       if (walk == NULL)
+               return;
+
+       if (last)
+               last->next = dev->next;
+       else
+               devices = dev->next;
+}
+
+/**
+ * Returns the next device that was detected by ped_device_probe_all(), or
+ * calls to ped_device_get_next().
+ * If dev is NULL, returns the first device.
+ *
+ * \return NULL if dev is the last device.
+ */
+PedDevice*
+ped_device_get_next (const PedDevice* dev)
+{
+       if (dev)
+               return dev->next;
+       else
+               return devices;
+}
+
+void
+_ped_device_probe (const char* path)
+{
+       PedDevice*      dev;
+
+       PED_ASSERT (path != NULL);
+
+       ped_exception_fetch_all ();
+       dev = ped_device_get (path);
+       if (!dev)
+               ped_exception_catch ();
+       ped_exception_leave_all ();
+}
+
+/**
+ * Attempts to detect all devices.
+ */
+void
+ped_device_probe_all ()
+{
+       ped_architecture->dev_ops->probe_all ();
+}
+
+/**
+ * Close/free all devices.
+ * Called by ped_done(), so you do not need to worry about it.
+ */
+void
+ped_device_free_all ()
+{
+       while (devices)
+               ped_device_destroy (devices);
+}
+
+/**
+ * Gets the device "name", where name is usually the block device, e.g.
+ * /dev/sdb.  If the device wasn't detected with ped_device_probe_all(),
+ * an attempt will be made to detect it again.  If it is found, it will
+ * be added to the list.
+ */
+PedDevice*
+ped_device_get (const char* path)
+{
+       PedDevice*      walk;
+       char*           normal_path = NULL;
+
+       PED_ASSERT (path != NULL);
+       /* Don't canonicalize /dev/mapper paths, see tests/symlink.c */
+       if (strncmp (path, "/dev/mapper/", 12))
+               normal_path = canonicalize_file_name (path);
+       if (!normal_path)
+               /* Well, maybe it is just that the file does not exist.
+                * Try it anyway.  */
+               normal_path = strdup (path);
+       if (!normal_path)
+               return NULL;
+
+       for (walk = devices; walk != NULL; walk = walk->next) {
+               if (!strcmp (walk->path, normal_path)) {
+                       free (normal_path);
+                       return walk;
+               }
+       }
+
+       walk = ped_architecture->dev_ops->_new (normal_path);
+       free (normal_path);
+       if (!walk)
+               return NULL;
+       _device_register (walk);
+       return walk;
+}
+
+/**
+ * Destroys a device and removes it from the device list, and frees
+ * all resources associated with the device (all resources allocated
+ * when the device was created).
+ */
+void
+ped_device_destroy (PedDevice* dev)
+{
+       _device_unregister (dev);
+
+       while (dev->open_count) {
+               if (!ped_device_close (dev))
+                       break;
+       }
+
+       ped_architecture->dev_ops->destroy (dev);
+}
+
+void
+ped_device_cache_remove(PedDevice *dev)
+{
+       _device_unregister (dev);
+}
+
+int
+ped_device_is_busy (PedDevice* dev)
+{
+       return ped_architecture->dev_ops->is_busy (dev);
+}
+
+/**
+ * Attempt to open a device to allow use of read, write and sync functions.
+ *
+ * The meaning of "open" is architecture-dependent.  Apart from requesting
+ * access to the device from the operating system, it does things like flushing
+ * caches.
+ * \note May allocate resources.  Any resources allocated here will
+ * be freed by a final ped_device_close().  (ped_device_open() may be
+ * called multiple times -- it's a ref-count-like mechanism)
+ *
+ * \return zero on failure
+ */
+int
+ped_device_open (PedDevice* dev)
+{
+       int     status;
+
+       PED_ASSERT (dev != NULL);
+       PED_ASSERT (!dev->external_mode);
+
+       if (dev->open_count)
+               status = ped_architecture->dev_ops->refresh_open (dev);
+       else
+               status = ped_architecture->dev_ops->open (dev);
+       if (status)
+               dev->open_count++;
+       return status;
+}
+
+/**
+ * Close dev.
+ * If this is the final close, then resources allocated by
+ * ped_device_open() are freed.
+ *
+ * \return zero on failure
+ */
+int
+ped_device_close (PedDevice* dev)
+{
+       PED_ASSERT (dev != NULL);
+       PED_ASSERT (!dev->external_mode);
+       PED_ASSERT (dev->open_count > 0);
+
+       if (--dev->open_count)
+               return ped_architecture->dev_ops->refresh_close (dev);
+       else
+               return ped_architecture->dev_ops->close (dev);
+}
+
+/**
+ * Begins external access mode.  External access mode allows you to
+ * safely do IO on the device.  If a PedDevice is open, then you should
+ * not do any IO on that device, e.g. by calling an external program
+ * like e2fsck, unless you put it in external access mode.  You should
+ * not use any libparted commands that do IO to a device, e.g.
+ * ped_file_system_{open|resize|copy}, ped_disk_{read|write}), while
+ * a device is in external access mode.
+ * Also, you should not ped_device_close() a device, while it is
+ * in external access mode.
+ * Note: ped_device_begin_external_access_mode() does things like
+ * tell the kernel to flush its caches.
+ *
+ * Close a device while pretending it is still open.
+ * This is useful for temporarily suspending libparted access to the device
+ * in order for an external program to access it.
+ * (Running external programs while the device is open can cause cache
+ * coherency problems.)
+ *
+ * In particular, this function keeps track of dev->open_count, so that
+ * reference counting isn't screwed up.
+ *
+ * \return zero on failure.
+ */
+int
+ped_device_begin_external_access (PedDevice* dev)
+{
+       PED_ASSERT (dev != NULL);
+       PED_ASSERT (!dev->external_mode);
+
+       dev->external_mode = 1;
+       if (dev->open_count)
+               return ped_architecture->dev_ops->close (dev);
+       else
+               return 1;
+}
+
+/**
+ * \brief Complementary function to ped_device_begin_external_access.
+ *
+ * \note does things like tell the kernel to flush the device's cache.
+ *
+ * \return zero on failure.
+ */
+int
+ped_device_end_external_access (PedDevice* dev)
+{
+       PED_ASSERT (dev != NULL);
+       PED_ASSERT (dev->external_mode);
+
+       dev->external_mode = 0;
+       if (dev->open_count)
+               return ped_architecture->dev_ops->open (dev);
+       else
+               return 1;
+}
+
+/**
+ * \internal Read count sectors from dev into buffer, beginning with sector
+ * start.
+ *
+ * \return zero on failure.
+ */
+int
+ped_device_read (const PedDevice* dev, void* buffer, PedSector start,
+                 PedSector count)
+{
+        PED_ASSERT (dev != NULL);
+        PED_ASSERT (buffer != NULL);
+        PED_ASSERT (!dev->external_mode);
+        PED_ASSERT (dev->open_count > 0);
+
+        return (ped_architecture->dev_ops->read) (dev, buffer, start, count);
+}
+
+/**
+ * \internal Write count sectors from buffer to dev, starting at sector
+ * start.
+ *
+ * \return zero on failure.
+ *
+ * \sa PedDevice::sector_size
+ * \sa PedDevice::phys_sector_size
+ */
+int
+ped_device_write (PedDevice* dev, const void* buffer, PedSector start,
+                 PedSector count)
+{
+       PED_ASSERT (dev != NULL);
+       PED_ASSERT (buffer != NULL);
+       PED_ASSERT (!dev->external_mode);
+       PED_ASSERT (dev->open_count > 0);
+
+       return (ped_architecture->dev_ops->write) (dev, buffer, start, count);
+}
+
+PedSector
+ped_device_check (PedDevice* dev, void* buffer, PedSector start,
+                 PedSector count)
+{
+       PED_ASSERT (dev != NULL);
+       PED_ASSERT (!dev->external_mode);
+       PED_ASSERT (dev->open_count > 0);
+
+       return (ped_architecture->dev_ops->check) (dev, buffer, start, count);
+}
+
+/**
+ * \internal Flushes all write-behind caches that might be holding up
+ * writes.
+ * It is slow because it guarantees cache coherency among all relevant caches.
+ *
+ * \return zero on failure
+ */
+int
+ped_device_sync (PedDevice* dev)
+{
+       PED_ASSERT (dev != NULL);
+       PED_ASSERT (!dev->external_mode);
+       PED_ASSERT (dev->open_count > 0);
+
+       return ped_architecture->dev_ops->sync (dev);
+}
+
+/**
+ * \internal Flushes all write-behind caches that might be holding writes.
+ * \warning Does NOT ensure cache coherency with other caches.
+ * If you need cache coherency, use ped_device_sync() instead.
+ *
+ * \return zero on failure
+ */
+int
+ped_device_sync_fast (PedDevice* dev)
+{
+       PED_ASSERT (dev != NULL);
+       PED_ASSERT (!dev->external_mode);
+       PED_ASSERT (dev->open_count > 0);
+
+       return ped_architecture->dev_ops->sync_fast (dev);
+}
+
+/**
+ * Get a constraint that represents hardware requirements on geometry.
+ * This function will return a constraint representing the limits imposed
+ * by the size of the disk, it will *not* provide any alignment constraints.
+ *
+ * Alignment constraints may be desirable when using media that have a physical
+ * sector size that is a multiple of the logical sector size, as in this case
+ * proper partition alignment can benefit disk performance signigicantly.
+ * When you want a constraint with alignment info, use
+ * ped_device_get_minimal_aligned_constraint() or
+ * ped_device_get_optimal_aligned_constraint().
+ *
+ * \return NULL on error, otherwise a pointer to a dynamically allocated
+ *         constraint.
+ */
+PedConstraint*
+ped_device_get_constraint (const PedDevice* dev)
+{
+        PedGeometry *s, *e;
+        PedConstraint* c = ped_constraint_new (
+                                ped_alignment_any, ped_alignment_any,
+                                s = ped_geometry_new (dev, 0, dev->length),
+                                e = ped_geometry_new (dev, 0, dev->length),
+                                1, dev->length);
+
+        free (s);
+        free (e);
+        return c;
+}
+
+static PedConstraint*
+_ped_device_get_aligned_constraint(const PedDevice *dev,
+                                   PedAlignment* start_align)
+{
+        PedAlignment *end_align = NULL;
+        PedGeometry *whole_dev_geom = NULL;
+        PedConstraint *c = NULL;
+
+        if (start_align) {
+                end_align = ped_alignment_new(start_align->offset - 1,
+                                              start_align->grain_size);
+                if (!end_align)
+                        goto free_start_align;
+        }
+
+        whole_dev_geom = ped_geometry_new (dev, 0, dev->length);
+
+        if (start_align)
+                c =  ped_constraint_new (start_align, end_align,
+                                         whole_dev_geom, whole_dev_geom,
+                                         1, dev->length);
+        else
+                c =  ped_constraint_new (ped_alignment_any, ped_alignment_any,
+                                         whole_dev_geom, whole_dev_geom,
+                                         1, dev->length);
+
+        free (whole_dev_geom);
+        free (end_align);
+free_start_align:
+        free (start_align);
+        return c;
+}
+
+/**
+ * Get a constraint that represents hardware requirements on geometry and
+ * alignment.
+ *
+ * This function will return a constraint representing the limits imposed
+ * by the size of the disk and the minimal alignment requirements for proper
+ * performance of the disk.
+ *
+ * \return NULL on error, otherwise a pointer to a dynamically allocated
+ *         constraint.
+ */
+PedConstraint*
+ped_device_get_minimal_aligned_constraint(const PedDevice *dev)
+{
+        return _ped_device_get_aligned_constraint(dev,
+                                         ped_device_get_minimum_alignment(dev));
+}
+
+/**
+ * Get a constraint that represents hardware requirements on geometry and
+ * alignment.
+ *
+ * This function will return a constraint representing the limits imposed
+ * by the size of the disk and the alignment requirements for optimal
+ * performance of the disk.
+ *
+ * \return NULL on error, otherwise a pointer to a dynamically allocated
+ *         constraint.
+ */
+PedConstraint*
+ped_device_get_optimal_aligned_constraint(const PedDevice *dev)
+{
+        return _ped_device_get_aligned_constraint(dev,
+                                         ped_device_get_optimum_alignment(dev));
+}
+
+/**
+ * Get an alignment that represents minimum hardware requirements on alignment.
+ * When for example using media that has a physical sector size that is a
+ * multiple of the logical sector size, it is desirable to have disk accesses
+ * (and thus partitions) properly aligned. Having partitions not aligned to
+ * the minimum hardware requirements may lead to a performance penalty.
+ *
+ * The returned alignment describes the alignment for the start sector of the
+ * partition, the end sector should be aligned too, to get the end sector
+ * alignment decrease the returned alignment's offset by 1.
+ *
+ * \return the minimum alignment of partition start sectors, or NULL if this
+ *         information is not available.
+ */
+PedAlignment*
+ped_device_get_minimum_alignment(const PedDevice *dev)
+{
+        PedAlignment *align = NULL;
+
+        if (ped_architecture->dev_ops->get_minimum_alignment)
+                align = ped_architecture->dev_ops->get_minimum_alignment(dev);
+
+        if (align == NULL)
+                align = ped_alignment_new(0,
+                                dev->phys_sector_size / dev->sector_size);
+
+        return align;
+}
+
+/**
+ * Get an alignment that represents the hardware requirements for optimal
+ * performance.
+ *
+ * The returned alignment describes the alignment for the start sector of the
+ * partition, the end sector should be aligned too, to get the end sector
+ * alignment decrease the returned alignment's offset by 1.
+ *
+ * \return the optimal alignment of partition start sectors, or NULL if this
+ *         information is not available.
+ */
+PedAlignment*
+ped_device_get_optimum_alignment(const PedDevice *dev)
+{
+        PedAlignment *align = NULL;
+
+        if (ped_architecture->dev_ops->get_optimum_alignment)
+                align = ped_architecture->dev_ops->get_optimum_alignment(dev);
+
+        /* If the arch specific code could not give as an alignment
+           return a default value based on the type of device. */
+        if (align == NULL) {
+                switch (dev->type) {
+                case PED_DEVICE_DASD:
+                        align = ped_device_get_minimum_alignment(dev);
+                        break;
+                default:
+                        /* Align to a grain of 1MiB (like vista / win7) */
+                        align = ped_alignment_new(0,
+                                                  (PED_DEFAULT_ALIGNMENT
+                                                  / dev->sector_size));
+                }
+        }
+
+        return align;
+}
+
+/** @} */
diff --git a/libparted/disk.c b/libparted/disk.c
new file mode 100644 (file)
index 0000000..1057aa8
--- /dev/null
@@ -0,0 +1,2521 @@
+ /*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 1999-2003, 2005, 2007-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+/** \file disk.c */
+
+/**
+ * \addtogroup PedDisk
+ *
+ * \brief Disk label access.
+ *
+ * Most programs will need to use ped_disk_new() or ped_disk_new_fresh() to get
+ * anything done.  A PedDisk is always associated with a device and has a
+ * partition table.  There are different types of partition tables (or disk
+ * labels).  These are represented by the PedDiskType enumeration.
+ *
+ * @{
+ */
+
+#include <config.h>
+
+#include <parted/parted.h>
+#include <parted/debug.h>
+#include <stdbool.h>
+
+#include "architecture.h"
+#include "labels/pt-tools.h"
+
+#if ENABLE_NLS
+#  include <libintl.h>
+#  define _(String) dgettext (PACKAGE, String)
+#  define N_(String) (String)
+#else
+#  define _(String) (String)
+#  define N_(String) (String)
+#endif /* ENABLE_NLS */
+
+/* UPDATE MODE functions */
+#ifdef DEBUG
+static int _disk_check_sanity (PedDisk* disk);
+#endif
+static int _disk_push_update_mode (PedDisk* disk);
+static int _disk_pop_update_mode (PedDisk* disk);
+static int _disk_raw_insert_before (PedDisk* disk, PedPartition* loc,
+                                   PedPartition* part);
+static int _disk_raw_insert_after (PedDisk* disk, PedPartition* loc,
+                                  PedPartition* part);
+static int _disk_raw_remove (PedDisk* disk, PedPartition* part);
+static int _disk_raw_add (PedDisk* disk, PedPartition* part);
+
+static PedDiskType*    disk_types = NULL;
+
+void
+ped_disk_type_register (PedDiskType* disk_type)
+{
+       PED_ASSERT (disk_type != NULL);
+       PED_ASSERT (disk_type->ops != NULL);
+       PED_ASSERT (disk_type->name != NULL);
+
+        disk_type->next = disk_types;
+        disk_types =  disk_type;
+}
+
+void
+ped_disk_type_unregister (PedDiskType* disk_type)
+{
+       PedDiskType*    walk;
+       PedDiskType*    last = NULL;
+
+       PED_ASSERT (disk_types != NULL);
+       PED_ASSERT (disk_type != NULL);
+
+       for (walk = disk_types; walk && walk != disk_type;
+                last = walk, walk = walk->next);
+
+       PED_ASSERT (walk != NULL);
+       if (last)
+               ((struct _PedDiskType*) last)->next = disk_type->next;
+       else
+               disk_types = disk_type->next;
+}
+
+/**
+ * Return the next disk type registers, after "type".  If "type" is
+ * NULL, returns the first disk type.
+ *
+ * \return Next disk; NULL if "type" is the last registered disk type.
+ */
+PedDiskType*
+ped_disk_type_get_next (PedDiskType const *type)
+{
+       if (type)
+               return type->next;
+       else
+               return disk_types;
+}
+
+/**
+ * Return the disk type with a name of "name".
+ *
+ * \return Disk type; NULL if no match.
+ */
+PedDiskType*
+ped_disk_type_get (const char* name)
+{
+       PedDiskType*    walk = NULL;
+
+       PED_ASSERT (name != NULL);
+
+       for (walk = ped_disk_type_get_next (NULL); walk;
+            walk = ped_disk_type_get_next (walk))
+                       if (strcasecmp (walk->name, name) == 0)
+                                       break;
+
+       return walk;
+}
+
+/**
+ * Return the type of partition table detected on "dev".
+ *
+ * \return Type; NULL if none was detected.
+ */
+PedDiskType*
+ped_disk_probe (PedDevice* dev)
+{
+        PedDiskType* walk = NULL;
+
+        PED_ASSERT (dev != NULL);
+
+        if (!ped_device_open (dev))
+                return NULL;
+
+        ped_exception_fetch_all ();
+        for (walk = ped_disk_type_get_next (NULL); walk;
+             walk = ped_disk_type_get_next (walk))
+          {
+                if (getenv ("PARTED_DEBUG")) {
+                        fprintf (stderr, "probe label: %s\n",
+                                 walk->name);
+                        fflush (stderr);
+                }
+                if (walk->ops->probe (dev))
+                        break;
+          }
+
+        if (ped_exception)
+                ped_exception_catch ();
+        ped_exception_leave_all ();
+
+        ped_device_close (dev);
+        return walk;
+}
+
+/**
+ * Read the partition table off a device (if one is found).
+ *
+ * \warning May modify \p dev->cylinders, \p dev->heads and \p dev->sectors
+ *      if the partition table indicates that the existing values
+ *      are incorrect.
+ *
+ * \return A new \link _PedDisk PedDisk \endlink object;
+ *         NULL on failure (e.g. partition table not detected).
+ */
+PedDisk*
+ped_disk_new (PedDevice* dev)
+{
+       PedDiskType*    type;
+       PedDisk*        disk;
+
+       PED_ASSERT (dev != NULL);
+
+       if (!ped_device_open (dev))
+               goto error;
+
+       type = ped_disk_probe (dev);
+       if (!type) {
+               ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                       _("%s: unrecognised disk label"),
+                       dev->path);
+               goto error_close_dev;
+       }
+       disk = ped_disk_new_fresh (dev, type);
+       if (!disk)
+               goto error_close_dev;
+       if (!type->ops->read (disk))
+               goto error_destroy_disk;
+       disk->needs_clobber = 0;
+       ped_device_close (dev);
+       return disk;
+
+error_destroy_disk:
+       ped_disk_destroy (disk);
+error_close_dev:
+       ped_device_close (dev);
+error:
+       return NULL;
+}
+
+static int
+_add_duplicate_part (PedDisk* disk, PedPartition* old_part)
+{
+       PedPartition*   new_part;
+       int ret;
+
+       new_part = disk->type->ops->partition_duplicate (old_part);
+       if (!new_part)
+               goto error;
+       new_part->disk = disk;
+
+       if (!_disk_push_update_mode (disk))
+               goto error_destroy_new_part;
+       ret = _disk_raw_add (disk, new_part);
+       if (!_disk_pop_update_mode (disk))
+               goto error_destroy_new_part;
+       if (!ret)
+               goto error_destroy_new_part;
+#ifdef DEBUG
+       if (!_disk_check_sanity (disk))
+               goto error_destroy_new_part;
+#endif
+       return 1;
+
+error_destroy_new_part:
+       ped_partition_destroy (new_part);
+error:
+       return 0;
+}
+
+/**
+ * Clone a \link _PedDisk PedDisk \endlink object.
+ *
+ * \return Deep copy of \p old_disk, NULL on failure.
+ */
+PedDisk*
+ped_disk_duplicate (const PedDisk* old_disk)
+{
+       PedDisk*        new_disk;
+       PedPartition*   old_part;
+
+       PED_ASSERT (old_disk != NULL);
+       PED_ASSERT (!old_disk->update_mode);
+       PED_ASSERT (old_disk->type->ops->duplicate != NULL);
+       PED_ASSERT (old_disk->type->ops->partition_duplicate != NULL);
+
+       new_disk = old_disk->type->ops->duplicate (old_disk);
+       if (!new_disk)
+               goto error;
+
+       if (!_disk_push_update_mode (new_disk))
+               goto error_destroy_new_disk;
+       for (old_part = ped_disk_next_partition (old_disk, NULL); old_part;
+            old_part = ped_disk_next_partition (old_disk, old_part)) {
+               if (ped_partition_is_active (old_part)) {
+                       if (!_add_duplicate_part (new_disk, old_part)){
+                               _disk_pop_update_mode (new_disk);
+                               goto error_destroy_new_disk;
+                       }
+               }
+       }
+       if (!_disk_pop_update_mode (new_disk))
+               goto error_destroy_new_disk;
+
+        new_disk->needs_clobber = old_disk->needs_clobber;
+
+       return new_disk;
+
+error_destroy_new_disk:
+       ped_disk_destroy (new_disk);
+error:
+       return NULL;
+}
+
+/* Given a partition table type NAME, e.g., "gpt", return its PedDiskType
+   handle.  If no known type has a name matching NAME, return NULL.  */
+static PedDiskType const *
+find_disk_type (char const *name)
+{
+  PedDiskType const *t;
+  for (t = ped_disk_type_get_next (NULL); t; t = ped_disk_type_get_next (t))
+    {
+      if (strcmp (t->name, name) == 0)
+        return t;
+    }
+  return NULL;
+}
+
+/**
+ * Remove all identifying signatures of a partition table,
+ *
+ * \return 0 on error, 1 otherwise.
+ *
+ * \sa ped_disk_clobber()
+ */
+int
+ped_disk_clobber (PedDevice* dev)
+{
+       PED_ASSERT (dev != NULL);
+
+       if (!ped_device_open (dev))
+               goto error;
+
+        PedDiskType const *gpt = find_disk_type ("gpt");
+       PED_ASSERT (gpt != NULL);
+
+        /* If there is a GPT table, don't clobber the protective MBR.  */
+        bool is_gpt = gpt->ops->probe (dev);
+        PedSector first_sector = (is_gpt ? 1 : 0);
+
+       /* How many sectors to zero out at each end.
+          This must be large enough to zero out the magic bytes
+          starting at offset 8KiB on a DASD partition table.
+          Doing the same from the end of the disk is probably
+          overkill, but at least on GPT, we do need to zero out
+          the final sector.  */
+       const PedSector n_sectors = 9 * 1024 / dev->sector_size + 1;
+
+       /* Clear the first few.  */
+       PedSector n = n_sectors;
+       if (dev->length < first_sector + n_sectors)
+         n = dev->length - first_sector;
+        if (!ptt_clear_sectors (dev, first_sector, n))
+          goto error_close_dev;
+
+       /* Clear the last few.  */
+       PedSector t = (dev->length -
+                      (n_sectors < dev->length ? n_sectors : 1));
+
+        /* Don't clobber the pMBR if we have a pathologically small disk.  */
+        if (t < first_sector)
+          t = first_sector;
+        if (!ptt_clear_sectors (dev, t, dev->length - t))
+          goto error_close_dev;
+
+       ped_device_close (dev);
+       return 1;
+
+error_close_dev:
+       ped_device_close (dev);
+error:
+       return 0;
+}
+
+/**
+ * Create a new partition table on \p dev.
+ *
+ * This new partition table is only created in-memory, and nothing is written
+ * to disk until ped_disk_commit_to_dev() is called.
+ *
+ * \return The newly constructed \link _PedDisk PedDisk \endlink,
+ *      NULL on failure.
+ */
+PedDisk*
+ped_disk_new_fresh (PedDevice* dev, const PedDiskType* type)
+{
+       PedDisk*        disk;
+
+       PED_ASSERT (dev != NULL);
+       PED_ASSERT (type != NULL);
+       PED_ASSERT (type->ops->alloc != NULL);
+       PedCHSGeometry* bios_geom = &dev->bios_geom;
+       PED_ASSERT (bios_geom->sectors != 0);
+       PED_ASSERT (bios_geom->heads != 0);
+
+       disk = type->ops->alloc (dev);
+       if (!disk)
+                       goto error;
+        if (!_disk_pop_update_mode (disk))
+                goto error_destroy_disk;
+       PED_ASSERT (disk->update_mode == 0);
+
+       disk->needs_clobber = 1;
+       return disk;
+
+error_destroy_disk:
+        ped_disk_destroy (disk);
+error:
+       return NULL;
+}
+
+PedDisk*
+_ped_disk_alloc (const PedDevice* dev, const PedDiskType* disk_type)
+{
+       PedDisk*        disk;
+
+       disk = (PedDisk*) ped_malloc (sizeof (PedDisk));
+       if (!disk)
+               goto error;
+
+       disk->dev = (PedDevice*)dev;
+       disk->type = disk_type;
+       disk->update_mode = 1;
+       disk->part_list = NULL;
+       return disk;
+
+error:
+       return NULL;
+}
+
+void
+_ped_disk_free (PedDisk* disk)
+{
+       _disk_push_update_mode (disk);
+       ped_disk_delete_all (disk);
+       free (disk);
+}
+
+/**
+ * Close \p disk.
+ *
+ * What this function does depends on the PedDiskType of \p disk,
+ * but you can generally assume that outstanding writes are flushed
+ * (this mainly means that _ped_disk_free is called).
+ */
+void
+ped_disk_destroy (PedDisk* disk)
+{
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (!disk->update_mode);
+
+       disk->type->ops->free (disk);
+}
+
+/**
+ * Tell the operating system kernel about the partition table layout
+ * of \p disk.
+ *
+ * This is rather loosely defined: for example, on old versions of Linux,
+ * it simply calls the BLKRRPART ioctl, which tells the kernel to
+ * reread the partition table. On newer versions (2.4.x), it will
+ * use the new blkpg interface to tell Linux where each partition
+ * starts/ends, etc. In this case, Linux does not need to have support for
+ * a specific type of partition table.
+ *
+ * \return 0 on failure, 1 otherwise.
+ */
+int
+ped_disk_commit_to_os (PedDisk* disk)
+{
+       PED_ASSERT (disk != NULL);
+
+       if (!ped_device_open (disk->dev))
+               goto error;
+       if (!ped_architecture->disk_ops->disk_commit (disk))
+               goto error_close_dev;
+       ped_device_close (disk->dev);
+       return 1;
+
+error_close_dev:
+       ped_device_close (disk->dev);
+error:
+       return 0;
+}
+
+/**
+ * Write the changes made to the in-memory description
+ * of a partition table to the device.
+ *
+ * \return 0 on failure, 1 otherwise.
+ */
+int
+ped_disk_commit_to_dev (PedDisk* disk)
+{
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (!disk->update_mode);
+
+       if (!disk->type->ops->write) {
+               ped_exception_throw (
+                       PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_CANCEL,
+                       _("This libparted doesn't have write support for "
+                         "%s.  Perhaps it was compiled read-only."),
+                       disk->type->name);
+               goto error;
+       }
+
+       if (!ped_device_open (disk->dev))
+               goto error;
+
+       if (disk->needs_clobber) {
+               if (!ped_disk_clobber (disk->dev))
+                       goto error_close_dev;
+               disk->needs_clobber = 0;
+       }
+       if (!disk->type->ops->write (disk))
+               goto error_close_dev;
+       ped_device_close (disk->dev);
+       return 1;
+
+error_close_dev:
+       ped_device_close (disk->dev);
+error:
+       return 0;
+}
+
+/*
+ * This function writes the in-memory changes to a partition table to
+ * disk and informs the operating system of the changes.
+ *
+ * \note Equivalent to calling first ped_disk_commit_to_dev(), then
+ *      ped_disk_commit_to_os().
+ *
+ * \return 0 on failure, 1 otherwise.
+ */
+int
+ped_disk_commit (PedDisk* disk)
+{
+        /* Open the device here, so that the underlying fd is not closed
+           between commit_to_dev and commit_to_os (closing causes unwanted
+           udev events to be sent under Linux). */
+       if (!ped_device_open (disk->dev))
+               goto error;
+
+       if (!ped_disk_commit_to_dev (disk))
+               goto error_close_dev;
+
+       if (!ped_disk_commit_to_os (disk))
+               goto error_close_dev;
+
+       ped_device_close (disk->dev);
+       return 1;
+
+error_close_dev:
+       ped_device_close (disk->dev);
+error:
+       return 0;
+}
+
+/**
+ * \addtogroup PedPartition
+ *
+ * @{
+ */
+
+/**
+ * Check whether a partition is mounted or busy in some
+ * other way.
+ *
+ * \note An extended partition is busy if any logical partitions are mounted.
+ *
+ * \return \c 1 if busy.
+ */
+int
+ped_partition_is_busy (const PedPartition* part)
+{
+       PED_ASSERT (part != NULL);
+
+       return ped_architecture->disk_ops->partition_is_busy (part);
+}
+
+/**
+ * Return a path that can be used to address the partition in the
+ * operating system.
+ */
+char*
+ped_partition_get_path (const PedPartition* part)
+{
+       PED_ASSERT (part != NULL);
+
+       return ped_architecture->disk_ops->partition_get_path (part);
+}
+
+/** @} */
+
+/**
+ * \addtogroup PedDisk
+ *
+ * @{
+ */
+
+/**
+ * Perform a sanity check on a partition table.
+ *
+ * \note The check performed is generic (i.e. it does not depends on the label
+ *      type of the disk.
+ *
+ * \throws PED_EXCEPTION_WARNING if a partition type ID does not match the file
+ *      system on it.
+ *
+ * \return 0 if the check fails, 1 otherwise.
+ */
+int
+ped_disk_check (const PedDisk* disk)
+{
+       PedPartition*   walk;
+
+       PED_ASSERT (disk != NULL);
+
+       for (walk = disk->part_list; walk;
+            walk = ped_disk_next_partition (disk, walk)) {
+               const PedFileSystemType*        fs_type = walk->fs_type;
+               PedGeometry*                    geom;
+               PedSector                       length_error;
+               PedSector                       max_length_error;
+
+               if (!ped_partition_is_active (walk) || !fs_type)
+                       continue;
+
+               geom = ped_file_system_probe_specific (fs_type, &walk->geom);
+               if (!geom)
+                       continue;
+
+               length_error = abs (walk->geom.length - geom->length);
+               max_length_error = PED_MAX (4096, walk->geom.length / 100);
+                bool ok = (ped_geometry_test_inside (&walk->geom, geom)
+                           && length_error <= max_length_error);
+                char *fs_size = ped_unit_format (disk->dev, geom->length);
+                ped_geometry_destroy (geom);
+                if (!ok) {
+                       char* part_size = ped_unit_format (disk->dev,
+                                                           walk->geom.length);
+                       PedExceptionOption choice;
+                       choice = ped_exception_throw (
+                               PED_EXCEPTION_WARNING,
+                               PED_EXCEPTION_IGNORE_CANCEL,
+                               _("Partition %d is %s, but the file system is "
+                                 "%s."),
+                               walk->num, part_size, fs_size);
+
+                       free (part_size);
+
+                       free (fs_size);
+                       fs_size = NULL;
+
+                       if (choice != PED_EXCEPTION_IGNORE)
+                               return 0;
+               }
+               free (fs_size);
+       }
+
+       return 1;
+}
+
+/**
+ * This function checks if a particular type of partition table supports
+ * a feature.
+ *
+ * \return 1 if \p disk_type supports \p feature, 0 otherwise.
+ */
+int
+ped_disk_type_check_feature (const PedDiskType* disk_type,
+                            PedDiskTypeFeature feature)
+{
+       return (disk_type->features & feature) != 0;
+}
+
+/**
+ * Get the number of primary partitions.
+ */
+int
+ped_disk_get_primary_partition_count (const PedDisk* disk)
+{
+       PedPartition*   walk;
+       int             count = 0;
+
+       PED_ASSERT (disk != NULL);
+
+       for (walk = disk->part_list; walk;
+            walk = ped_disk_next_partition (disk, walk)) {
+               if (ped_partition_is_active (walk)
+                               && ! (walk->type & PED_PARTITION_LOGICAL))
+                       count++;
+       }
+
+       return count;
+}
+
+/**
+ * Get the highest available partition number on \p disk.
+ */
+int
+ped_disk_get_last_partition_num (const PedDisk* disk)
+{
+       PedPartition*   walk;
+       int             highest = -1;
+
+       PED_ASSERT (disk != NULL);
+
+       for (walk = disk->part_list; walk;
+            walk = ped_disk_next_partition (disk, walk)) {
+               if (walk->num > highest)
+                       highest = walk->num;
+       }
+
+       return highest;
+}
+
+/**
+ * Get the highest supported partition number on \p disk.
+ *
+ * \return 0 if call fails. 1 otherwise.
+ */
+bool
+ped_disk_get_max_supported_partition_count(const PedDisk* disk, int* supported)
+{
+       PED_ASSERT(disk != NULL);
+       PED_ASSERT(disk->type->ops->get_max_supported_partition_count != NULL);
+
+       return disk->type->ops->get_max_supported_partition_count(disk, supported);
+}
+
+/**
+ * Get the alignment needed for partition boundaries on this disk.
+ * The returned alignment describes the alignment for the start sector of the
+ * partition, for all disklabel types which require alignment, except Sun
+ * disklabels, the end sector must be aligned too. To get the end sector
+ * alignment decrease the PedAlignment offset by 1.
+ *
+ * \return NULL on error, otherwise a pointer to a dynamically allocated
+ *         alignment.
+ */
+PedAlignment*
+ped_disk_get_partition_alignment(const PedDisk *disk)
+{
+        /* disklabel handlers which don't need alignment don't define this */
+        if (!disk->type->ops->get_partition_alignment)
+                return ped_alignment_duplicate(ped_alignment_any);
+
+        return disk->type->ops->get_partition_alignment(disk);
+}
+
+/**
+ * Get the maximum number of (primary) partitions the disk label supports.
+ *
+ * For example, MacIntosh partition maps can have different sizes,
+ * and accordingly support a different number of partitions.
+ */
+int
+ped_disk_get_max_primary_partition_count (const PedDisk* disk)
+{
+       PED_ASSERT (disk->type != NULL);
+       PED_ASSERT (disk->type->ops->get_max_primary_partition_count != NULL);
+
+       return disk->type->ops->get_max_primary_partition_count (disk);
+}
+
+/**
+ * Set the state (\c 1 or \c 0) of a flag on a disk.
+ *
+ * \note It is an error to call this on an unavailable flag -- use
+ * ped_disk_is_flag_available() to determine which flags are available
+ * for a given disk label.
+ *
+ * \throws PED_EXCEPTION_ERROR if the requested flag is not available for this
+ *      label.
+ */
+int
+ped_disk_set_flag(PedDisk *disk, PedDiskFlag flag, int state)
+{
+        int ret;
+
+        PED_ASSERT (disk != NULL);
+
+        PedDiskOps *ops = disk->type->ops;
+
+        if (!_disk_push_update_mode(disk))
+                return 0;
+
+        if (!ped_disk_is_flag_available(disk, flag)) {
+                ped_exception_throw (
+                        PED_EXCEPTION_ERROR,
+                        PED_EXCEPTION_CANCEL,
+                        "The flag '%s' is not available for %s disk labels.",
+                        ped_disk_flag_get_name(flag),
+                        disk->type->name);
+                _disk_pop_update_mode(disk);
+                return 0;
+        }
+
+        ret = ops->disk_set_flag(disk, flag, state);
+
+        if (!_disk_pop_update_mode (disk))
+                return 0;
+
+        return ret;
+}
+
+/**
+ * Get the state (\c 1 or \c 0) of a flag on a disk.
+ */
+int
+ped_disk_get_flag(const PedDisk *disk, PedDiskFlag flag)
+{
+        PED_ASSERT (disk != NULL);
+
+        PedDiskOps *ops = disk->type->ops;
+
+        if (!ped_disk_is_flag_available(disk, flag))
+                return 0;
+
+        return ops->disk_get_flag(disk, flag);
+}
+
+/**
+ * Check whether a given flag is available on a disk.
+ *
+ * \return \c 1 if the flag is available.
+ */
+int
+ped_disk_is_flag_available(const PedDisk *disk, PedDiskFlag flag)
+{
+        PED_ASSERT (disk != NULL);
+
+        PedDiskOps *ops = disk->type->ops;
+
+        if (!ops->disk_is_flag_available)
+                return 0;
+
+        return ops->disk_is_flag_available(disk, flag);
+}
+
+/**
+ * Returns a name for a \p flag, e.g. PED_DISK_CYLINDER_ALIGNMENT will return
+ * "cylinder_alignment".
+ *
+ * \note The returned string will be in English.  However,
+ * translations are provided, so the caller can call
+ * dgettext("parted", RESULT) on the result.
+ */
+const char *
+ped_disk_flag_get_name(PedDiskFlag flag)
+{
+        switch (flag) {
+        case PED_DISK_CYLINDER_ALIGNMENT:
+                return N_("cylinder_alignment");
+
+        default:
+                ped_exception_throw (
+                        PED_EXCEPTION_BUG,
+                        PED_EXCEPTION_CANCEL,
+                        _("Unknown disk flag, %d."),
+                        flag);
+                return NULL;
+        }
+}
+
+/**
+ * Returns the flag associated with \p name.
+ *
+ * \p name can be the English
+ * string, or the translation for the native language.
+ */
+PedDiskFlag
+ped_disk_flag_get_by_name(const char *name)
+{
+        PedDiskFlag flag;
+
+        for (flag = ped_disk_flag_next(0); flag;
+             flag = ped_disk_flag_next(flag)) {
+                const char *flag_name = ped_disk_flag_get_name(flag);
+                if (strcasecmp(name, flag_name) == 0
+                    || strcasecmp(name, _(flag_name)) == 0)
+                        return flag;
+        }
+
+        return 0;
+}
+
+/**
+ * Iterates through all disk flags.
+ *
+ * ped_disk_flag_next(0) returns the first flag
+ *
+ * \return the next flag, or 0 if there are no more flags
+ */
+PedDiskFlag
+ped_disk_flag_next(PedDiskFlag flag)
+{
+        return (flag + 1) % (PED_DISK_LAST_FLAG + 1);
+}
+
+/**
+ * \internal We turned a really nasty bureaucracy problem into an elegant maths
+ * problem :-)  Basically, there are some constraints to a partition's
+ * geometry:
+ *
+ * (1) it must start and end on a "disk" block, determined by the disk label
+ * (not the hardware).  (constraint represented by a PedAlignment)
+ *
+ * (2) if we're resizing a partition, we MIGHT need to keep each block aligned.
+ * Eg: if an ext2 file system has 4k blocks, then we can only move the start
+ * by a multiple of 4k.  (constraint represented by a PedAlignment)
+ *
+ * (3) we need to keep the start and end within the device's physical
+ * boundaries.  (constraint represented by a PedGeometry)
+ *
+ * Satisfying (1) and (2) simultaneously required a bit of fancy maths ;-)  See
+ * ped_alignment_intersect()
+ *
+ * The application of these constraints is in disk_*.c's *_partition_align()
+ * function.
+ */
+static int
+_partition_align (PedPartition* part, const PedConstraint* constraint)
+{
+       const PedDiskType*      disk_type;
+
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->num != -1);
+       PED_ASSERT (part->disk != NULL);
+       disk_type = part->disk->type;
+       PED_ASSERT (disk_type != NULL);
+       PED_ASSERT (disk_type->ops->partition_align != NULL);
+       PED_ASSERT (part->disk->update_mode);
+
+       return disk_type->ops->partition_align (part, constraint);
+}
+
+static int
+_partition_enumerate (PedPartition* part)
+{
+       const PedDiskType*      disk_type;
+
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk != NULL);
+       disk_type = part->disk->type;
+       PED_ASSERT (disk_type != NULL);
+       PED_ASSERT (disk_type->ops->partition_enumerate != NULL);
+
+       return disk_type->ops->partition_enumerate (part);
+}
+
+/**
+ * Gives all the (active) partitions a number.  It should preserve the numbers
+ * and orders as much as possible.
+ */
+static int
+ped_disk_enumerate_partitions (PedDisk* disk)
+{
+       PedPartition*   walk;
+       int             i;
+       int             end;
+
+       PED_ASSERT (disk != NULL);
+
+/* first "sort" already-numbered partitions.  (e.g. if a logical partition
+ * is removed, then all logical partitions that were number higher MUST be
+ * renumbered)
+ */
+       end = ped_disk_get_last_partition_num (disk);
+       for (i=1; i<=end; i++) {
+               walk = ped_disk_get_partition (disk, i);
+               if (walk) {
+                       if (!_partition_enumerate (walk))
+                               return 0;
+               }
+       }
+
+/* now, number un-numbered partitions */
+       for (walk = disk->part_list; walk;
+            walk = ped_disk_next_partition (disk, walk)) {
+               if (ped_partition_is_active (walk) && walk->num == -1) {
+                       if (!_partition_enumerate (walk))
+                               return 0;
+               }
+       }
+
+       return 1;
+}
+
+static int
+_disk_remove_metadata (PedDisk* disk)
+{
+       PedPartition*   walk = NULL;
+       PedPartition*   next;
+
+       PED_ASSERT (disk != NULL);
+
+       next = ped_disk_next_partition (disk, walk);
+
+       while (next) {
+               walk = next;
+               while (1) {
+                       next = ped_disk_next_partition (disk, next);
+                       if (!next || next->type & PED_PARTITION_METADATA)
+                               break;
+               }
+               if (walk->type & PED_PARTITION_METADATA)
+                       ped_disk_delete_partition (disk, walk);
+       }
+       return 1;
+}
+
+static int
+_disk_alloc_metadata (PedDisk* disk)
+{
+       PED_ASSERT (disk != NULL);
+
+       if (!disk->update_mode)
+               _disk_remove_metadata (disk);
+
+       return disk->type->ops->alloc_metadata (disk);
+}
+
+static int
+_disk_remove_freespace (PedDisk* disk)
+{
+       PedPartition*   walk;
+       PedPartition*   next;
+
+       walk = ped_disk_next_partition (disk, NULL);
+       for (; walk; walk = next) {
+               next = ped_disk_next_partition (disk, walk);
+
+               if (walk->type & PED_PARTITION_FREESPACE) {
+                       _disk_raw_remove (disk, walk);
+                       ped_partition_destroy (walk);
+               }
+       }
+
+       return 1;
+}
+
+static int
+_alloc_extended_freespace (PedDisk* disk)
+{
+       PedSector       last_end;
+       PedPartition*   walk;
+       PedPartition*   last;
+       PedPartition*   free_space;
+       PedPartition*   extended_part;
+
+       extended_part = ped_disk_extended_partition (disk);
+       if (!extended_part)
+               return 1;
+
+       last_end = extended_part->geom.start;
+       last = NULL;
+
+       for (walk = extended_part->part_list; walk; walk = walk->next) {
+               if (walk->geom.start > last_end + 1) {
+                       free_space = ped_partition_new (
+                                       disk,
+                                       PED_PARTITION_FREESPACE
+                                               | PED_PARTITION_LOGICAL,
+                                       NULL,
+                                       last_end + 1, walk->geom.start - 1);
+                       _disk_raw_insert_before (disk, walk, free_space);
+               }
+
+               last = walk;
+               last_end = last->geom.end;
+       }
+
+       if (last_end < extended_part->geom.end) {
+               free_space = ped_partition_new (
+                               disk,
+                               PED_PARTITION_FREESPACE | PED_PARTITION_LOGICAL,
+                               NULL,
+                               last_end + 1, extended_part->geom.end);
+
+               if (last)
+                       return _disk_raw_insert_after (disk, last, free_space);
+               else
+                       extended_part->part_list = free_space;
+       }
+
+       return 1;
+}
+
+static int
+_disk_alloc_freespace (PedDisk* disk)
+{
+       PedSector       last_end;
+       PedPartition*   walk;
+       PedPartition*   last;
+       PedPartition*   free_space;
+
+       if (!_disk_remove_freespace (disk))
+               return 0;
+       if (!_alloc_extended_freespace (disk))
+               return 0;
+
+       last = NULL;
+       last_end = -1;
+
+       for (walk = disk->part_list; walk; walk = walk->next) {
+               if (walk->geom.start > last_end + 1) {
+                       free_space = ped_partition_new (disk,
+                                       PED_PARTITION_FREESPACE, NULL,
+                                       last_end + 1, walk->geom.start - 1);
+                       _disk_raw_insert_before (disk, walk, free_space);
+               }
+
+               last = walk;
+               last_end = last->geom.end;
+       }
+
+       if (last_end < disk->dev->length - 1) {
+               free_space = ped_partition_new (disk,
+                                       PED_PARTITION_FREESPACE, NULL,
+                                       last_end + 1, disk->dev->length - 1);
+               if (last)
+                       return _disk_raw_insert_after (disk, last, free_space);
+               else
+                       disk->part_list = free_space;
+       }
+
+       return 1;
+}
+
+/**
+ * Update mode: used when updating the internal representation of the partition
+ * table.  In update mode, the metadata and freespace placeholder/virtual
+ * partitions are removed, making it much easier for various manipulation
+ * routines...
+ */
+static int
+_disk_push_update_mode (PedDisk* disk)
+{
+       if (!disk->update_mode) {
+#ifdef DEBUG
+               if (!_disk_check_sanity (disk))
+                       return 0;
+#endif
+
+               _disk_remove_freespace (disk);
+               disk->update_mode++;
+               _disk_remove_metadata (disk);
+
+#ifdef DEBUG
+               if (!_disk_check_sanity (disk))
+                       return 0;
+#endif
+       } else {
+               disk->update_mode++;
+       }
+       return 1;
+}
+
+static int
+_disk_pop_update_mode (PedDisk* disk)
+{
+       PED_ASSERT (disk->update_mode);
+
+       if (disk->update_mode == 1) {
+       /* re-allocate metadata BEFORE leaving update mode, to prevent infinite
+        * recursion (metadata allocation requires update mode)
+        */
+#ifdef DEBUG
+               if (!_disk_check_sanity (disk))
+                       return 0;
+#endif
+
+               _disk_alloc_metadata (disk);
+               disk->update_mode--;
+               _disk_alloc_freespace (disk);
+
+#ifdef DEBUG
+               if (!_disk_check_sanity (disk))
+                       return 0;
+#endif
+       } else {
+               disk->update_mode--;
+       }
+       return 1;
+}
+
+/** @} */
+
+/**
+ * \addtogroup PedPartition
+ *
+ * \brief Partition access.
+ *
+ * @{
+ */
+
+PedPartition*
+_ped_partition_alloc (const PedDisk* disk, PedPartitionType type,
+                     const PedFileSystemType* fs_type,
+                     PedSector start, PedSector end)
+{
+       PedPartition*   part;
+
+       PED_ASSERT (disk != NULL);
+
+       part = (PedPartition*) ped_malloc (sizeof (PedPartition));
+       if (!part)
+               goto error;
+
+       part->prev = NULL;
+       part->next = NULL;
+
+       part->disk = (PedDisk*) disk;
+       if (!ped_geometry_init (&part->geom, disk->dev, start, end - start + 1))
+               goto error_free_part;
+
+       part->num = -1;
+       part->type = type;
+       part->part_list = NULL;
+       part->fs_type = fs_type;
+
+       return part;
+
+error_free_part:
+       free (part);
+error:
+       return NULL;
+}
+
+void
+_ped_partition_free (PedPartition* part)
+{
+       free (part);
+}
+
+int
+_ped_partition_attempt_align (PedPartition* part,
+                             const PedConstraint* external,
+                             PedConstraint* internal)
+{
+       PedConstraint*          intersection;
+       PedGeometry*            solution;
+
+       intersection = ped_constraint_intersect (external, internal);
+       ped_constraint_destroy (internal);
+       if (!intersection)
+               goto fail;
+
+       solution = ped_constraint_solve_nearest (intersection, &part->geom);
+       if (!solution)
+               goto fail_free_intersection;
+       ped_geometry_set (&part->geom, solution->start, solution->length);
+       ped_geometry_destroy (solution);
+       ped_constraint_destroy (intersection);
+       return 1;
+
+fail_free_intersection:
+       ped_constraint_destroy (intersection);
+fail:
+       return 0;
+}
+
+/**
+ * Create a new \link _PedPartition PedPartition \endlink on \p disk.
+ *
+ * \param type One of \p PED_PARTITION_NORMAL, \p PED_PARTITION_EXTENDED,
+ *      \p PED_PARTITION_LOGICAL.
+ *
+ * \note The constructed partition is not added to <tt>disk</tt>'s
+ *      partition table. Use ped_disk_add_partition() to do this.
+ *
+ * \return A new \link _PedPartition PedPartition \endlink object,
+ *      NULL on failure.
+ *
+ * \throws PED_EXCEPTION_ERROR if \p type is \p EXTENDED or \p LOGICAL but the
+ *      label does not support this concept.
+ */
+PedPartition*
+ped_partition_new (const PedDisk* disk, PedPartitionType type,
+                  const PedFileSystemType* fs_type, PedSector start,
+                  PedSector end)
+{
+       int             supports_extended;
+       PedPartition*   part;
+
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (disk->type->ops->partition_new != NULL);
+
+       supports_extended = ped_disk_type_check_feature (disk->type,
+                               PED_DISK_TYPE_EXTENDED);
+
+       if (!supports_extended
+           && (type == PED_PARTITION_EXTENDED
+                       || type == PED_PARTITION_LOGICAL)) {
+               ped_exception_throw (
+                       PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_CANCEL,
+                       _("%s disk labels do not support extended "
+                         "partitions."),
+                       disk->type->name);
+               goto error;
+       }
+
+       part = disk->type->ops->partition_new (disk, type, fs_type, start, end);
+       if (!part)
+               goto error;
+
+       if (fs_type || part->type == PED_PARTITION_EXTENDED) {
+               if (!ped_partition_set_system (part, fs_type))
+                       goto error_destroy_part;
+       }
+       return part;
+
+error_destroy_part:
+       ped_partition_destroy (part);
+error:
+       return NULL;
+}
+
+/**
+ * Destroy a \link _PedPartition PedPartition \endlink object.
+ *
+ * \note Should not be called on a partition that is in a partition table.
+ *      Use ped_disk_delete_partition() instead.
+ */
+void
+ped_partition_destroy (PedPartition* part)
+{
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk != NULL);
+       PED_ASSERT (part->disk->type->ops->partition_new != NULL);
+
+       part->disk->type->ops->partition_destroy (part);
+}
+
+
+/**
+ * Return whether or not the partition is "active".
+ *
+ * A partition is active if \p part->type is neither \p PED_PARTITION_METADATA
+ * nor \p PED_PARTITION_FREE.
+ */
+int
+ped_partition_is_active (const PedPartition* part)
+{
+       PED_ASSERT (part != NULL);
+
+       return !(part->type & PED_PARTITION_FREESPACE
+                || part->type & PED_PARTITION_METADATA);
+}
+
+/**
+ * Set the state (\c 1 or \c 0) of a flag on a partition.
+ *
+ * Flags are disk label specific, although they have a global
+ * "namespace": the flag PED_PARTITION_BOOT, for example, roughly means
+ * "this" partition is bootable". But this means different things on different
+ * disk labels (and may not be defined on some disk labels). For example,
+ * on MS-DOS disk labels, there can only be one boot partition, and this
+ * refers to the partition that will be booted from on startup. On PC98
+ * disk labels, the user can choose from any bootable partition on startup.
+ *
+ * \note It is an error to call this on an unavailable flag -- use
+ * ped_partition_is_flag_available() to determine which flags are available
+ * for a given disk label.
+ *
+ * \throws PED_EXCEPTION_ERROR if the requested flag is not available for this
+ *      label.
+ */
+int
+ped_partition_set_flag (PedPartition* part, PedPartitionFlag flag, int state)
+{
+       PedDiskOps*     ops;
+
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk != NULL);
+       PED_ASSERT (ped_partition_is_active (part));
+
+       ops = part->disk->type->ops;
+       PED_ASSERT (ops->partition_set_flag != NULL);
+       PED_ASSERT (ops->partition_is_flag_available != NULL);
+
+       if (!ops->partition_is_flag_available (part, flag)) {
+               ped_exception_throw (
+                       PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_CANCEL,
+                       "The flag '%s' is not available for %s disk labels.",
+                       ped_partition_flag_get_name (flag),
+                       part->disk->type->name);
+               return 0;
+       }
+
+       return ops->partition_set_flag (part, flag, state);
+}
+
+/**
+ * Get the state (\c 1 or \c 0) of a flag on a partition.
+ *
+ * See ped_partition_set_flag() for conditions that must hold.
+ *
+ * \todo Where's the check for flag availability?
+ */
+int
+ped_partition_get_flag (const PedPartition* part, PedPartitionFlag flag)
+{
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk != NULL);
+       PED_ASSERT (part->disk->type->ops->partition_get_flag != NULL);
+       PED_ASSERT (ped_partition_is_active (part));
+
+       return part->disk->type->ops->partition_get_flag (part, flag);
+}
+
+/**
+ * Check whether a given flag is available on a partition.
+ *
+ * \return \c 1 if the flag is available.
+ */
+int
+ped_partition_is_flag_available (const PedPartition* part,
+                                PedPartitionFlag flag)
+{
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk != NULL);
+       PED_ASSERT (part->disk->type->ops->partition_is_flag_available != NULL);
+       PED_ASSERT (ped_partition_is_active (part));
+
+       return part->disk->type->ops->partition_is_flag_available (part, flag);
+}
+
+/**
+ * Sets the system type on the partition to \p fs_type.
+ *
+ * \note The file system may be opened, to get more information about the
+ * file system, e.g. to determine if it's FAT16 or FAT32.
+ *
+ * \return \c 0 on failure.
+ */
+int
+ped_partition_set_system (PedPartition* part, const PedFileSystemType* fs_type)
+{
+       const PedDiskType*      disk_type;
+
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (ped_partition_is_active (part));
+       PED_ASSERT (part->disk != NULL);
+       disk_type = part->disk->type;
+       PED_ASSERT (disk_type != NULL);
+       PED_ASSERT (disk_type->ops != NULL);
+       PED_ASSERT (disk_type->ops->partition_set_system != NULL);
+
+       return disk_type->ops->partition_set_system (part, fs_type);
+}
+
+static int
+_assert_partition_name_feature (const PedDiskType* disk_type)
+{
+       if (!ped_disk_type_check_feature (
+                       disk_type, PED_DISK_TYPE_PARTITION_NAME)) {
+               ped_exception_throw (
+                       PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_CANCEL,
+                       "%s disk labels do not support partition names.",
+                       disk_type->name);
+               return 0;
+       }
+       return 1;
+}
+
+/**
+ * Sets the name of a partition.
+ *
+ * \note This will only work if the disk label supports it.
+ *      You can use
+ *      \code
+ * ped_disk_type_check_feature (part->disk->type, PED_DISK_TYPE_PARTITION_NAME);
+ *      \endcode
+ *      to check whether this feature is enabled for a label.
+ *
+ * \note \p name will not be modified by libparted. It can be freed
+ *      by the caller immediately after ped_partition_set_name() is called.
+ *
+ * \return \c 1 on success, \c 0 otherwise.
+ */
+int
+ped_partition_set_name (PedPartition* part, const char* name)
+{
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk != NULL);
+       PED_ASSERT (ped_partition_is_active (part));
+       PED_ASSERT (name != NULL);
+
+       if (!_assert_partition_name_feature (part->disk->type))
+               return 0;
+
+       PED_ASSERT (part->disk->type->ops->partition_set_name != NULL);
+       part->disk->type->ops->partition_set_name (part, name);
+       return 1;
+}
+
+/**
+ * Returns the name of a partition \p part.  This will only work if the disk
+ * label supports it.
+ *
+ * \note The returned string should not be modified.  It should
+ *     not be referenced after the partition is destroyed.
+ */
+const char*
+ped_partition_get_name (const PedPartition* part)
+{
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk != NULL);
+       PED_ASSERT (ped_partition_is_active (part));
+
+       if (!_assert_partition_name_feature (part->disk->type))
+               return NULL;
+
+       PED_ASSERT (part->disk->type->ops->partition_get_name != NULL);
+       return part->disk->type->ops->partition_get_name (part);
+}
+
+/** @} */
+
+/**
+ * \addtogroup PedDisk
+ *
+ * @{
+ */
+
+PedPartition*
+ped_disk_extended_partition (const PedDisk* disk)
+{
+       PedPartition*           walk;
+
+       PED_ASSERT (disk != NULL);
+
+       for (walk = disk->part_list; walk; walk = walk->next) {
+               if (walk->type == PED_PARTITION_EXTENDED)
+                       break;
+       }
+       return walk;
+}
+
+/**
+ * Return the next partition after \p part on \p disk. If \p part is \c NULL,
+ * return the first partition. If \p part is the last partition, returns
+ * \c NULL. If \p part is an extended partition, returns the first logical
+ * partition. If this is called repeatedly passing the return value as \p part,
+ * a depth-first traversal is executed.
+ *
+ * \return The next partition, \c NULL if no more partitions left.
+ */
+PedPartition*
+ped_disk_next_partition (const PedDisk* disk, const PedPartition* part)
+{
+       PED_ASSERT (disk != NULL);
+
+       if (!part)
+               return disk->part_list;
+       if (part->type == PED_PARTITION_EXTENDED)
+               return part->part_list ? part->part_list : part->next;
+       if (part->next)
+               return part->next;
+       if (part->type & PED_PARTITION_LOGICAL)
+               return ped_disk_extended_partition (disk)->next;
+       return NULL;
+}
+
+/** @} */
+
+#ifdef DEBUG
+static int
+_disk_check_sanity (PedDisk* disk)
+{
+       PedPartition*   walk;
+
+       PED_ASSERT (disk != NULL);
+
+       for (walk = disk->part_list; walk; walk = walk->next) {
+               PED_ASSERT (!(walk->type & PED_PARTITION_LOGICAL));
+               PED_ASSERT (!walk->prev || walk->prev->next == walk);
+       }
+
+       if (!ped_disk_extended_partition (disk))
+               return 1;
+
+       for (walk = ped_disk_extended_partition (disk)->part_list; walk;
+            walk = walk->next) {
+               PED_ASSERT (walk->type & PED_PARTITION_LOGICAL);
+               if (walk->prev)
+                       PED_ASSERT (walk->prev->next == walk);
+       }
+       return 1;
+}
+#endif
+
+/**
+ * Returns the partition numbered \p num.
+ *
+ * \return \c NULL if the specified partition does not exist.
+ */
+PedPartition*
+ped_disk_get_partition (const PedDisk* disk, int num)
+{
+       PedPartition*   walk;
+
+       PED_ASSERT (disk != NULL);
+
+       for (walk = disk->part_list; walk;
+            walk = ped_disk_next_partition (disk, walk)) {
+               if (walk->num == num && !(walk->type & PED_PARTITION_FREESPACE))
+                       return walk;
+       }
+
+       return NULL;
+}
+
+/**
+ * Returns the partition that contains sect.  If sect lies within a logical
+ * partition, then the logical partition is returned (not the extended
+ * partition).
+ */
+PedPartition*
+ped_disk_get_partition_by_sector (const PedDisk* disk, PedSector sect)
+{
+       PedPartition*   walk;
+
+       PED_ASSERT (disk != NULL);
+
+       for (walk = disk->part_list; walk;
+            walk = ped_disk_next_partition (disk, walk)) {
+               if (ped_geometry_test_sector_inside (&walk->geom, sect)
+                   && walk->type != PED_PARTITION_EXTENDED)
+                       return walk;
+       }
+
+       /* should never get here, unless sect is outside of disk's useable
+        * part, or we're in "update mode", and the free space place-holders
+        * have been removed with _disk_remove_freespace()
+        */
+       return NULL;
+}
+
+/**
+ * Return the maximum representable length (in sectors) of a
+ * partition on disk \disk.
+ */
+PedSector
+ped_disk_max_partition_length (const PedDisk* disk)
+{
+  return disk->type->ops->max_length ();
+}
+
+/**
+ * Return the maximum representable start sector of a
+ * partition on disk \disk.
+ */
+PedSector
+ped_disk_max_partition_start_sector (const PedDisk* disk)
+{
+  return disk->type->ops->max_start_sector ();
+}
+
+/* I'm beginning to agree with Sedgewick :-/ */
+static int
+_disk_raw_insert_before (PedDisk* disk, PedPartition* loc, PedPartition* part)
+{
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (loc != NULL);
+       PED_ASSERT (part != NULL);
+
+       part->prev = loc->prev;
+       part->next = loc;
+       if (part->prev) {
+               part->prev->next = part;
+       } else {
+               if (loc->type & PED_PARTITION_LOGICAL)
+                       ped_disk_extended_partition (disk)->part_list = part;
+               else
+                       disk->part_list = part;
+       }
+       loc->prev = part;
+
+       return 1;
+}
+
+static int
+_disk_raw_insert_after (PedDisk* disk, PedPartition* loc, PedPartition* part)
+{
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (loc != NULL);
+       PED_ASSERT (part != NULL);
+
+       part->prev = loc;
+       part->next = loc->next;
+       if (loc->next)
+               loc->next->prev = part;
+       loc->next = part;
+
+       return 1;
+}
+
+static int
+_disk_raw_remove (PedDisk* disk, PedPartition* part)
+{
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (part != NULL);
+
+       if (part->prev) {
+               part->prev->next = part->next;
+               if (part->next)
+                       part->next->prev = part->prev;
+       } else {
+               if (part->type & PED_PARTITION_LOGICAL) {
+                       ped_disk_extended_partition (disk)->part_list
+                               = part->next;
+               } else {
+                       disk->part_list = part->next;
+               }
+               if (part->next)
+                       part->next->prev = NULL;
+       }
+
+       return 1;
+}
+
+/*
+ *UPDATE MODE ONLY
+ */
+static int
+_disk_raw_add (PedDisk* disk, PedPartition* part)
+{
+       PedPartition*   walk;
+       PedPartition*   last;
+       PedPartition*   ext_part;
+
+       PED_ASSERT (disk->update_mode);
+
+       ext_part = ped_disk_extended_partition (disk);
+
+       last = NULL;
+       walk = (part->type & PED_PARTITION_LOGICAL) ?
+                       ext_part->part_list : disk->part_list;
+
+       for (; walk; last = walk, walk = walk->next) {
+               if (walk->geom.start > part->geom.end)
+                       break;
+       }
+
+       if (walk) {
+               return _disk_raw_insert_before (disk, walk, part);
+       } else {
+               if (last) {
+                       return _disk_raw_insert_after (disk, last, part);
+               } else {
+                       if (part->type & PED_PARTITION_LOGICAL)
+                               ext_part->part_list = part;
+                       else
+                               disk->part_list = part;
+               }
+       }
+
+       return 1;
+}
+
+static PedConstraint*
+_partition_get_overlap_constraint (PedPartition* part, PedGeometry* geom)
+{
+       PedSector       min_start;
+       PedSector       max_end;
+       PedPartition*   walk;
+       PedGeometry     free_space;
+
+       PED_ASSERT (part->disk->update_mode);
+       PED_ASSERT (part->geom.dev == geom->dev);
+
+       if (part->type & PED_PARTITION_LOGICAL) {
+               PedPartition* ext_part;
+
+               ext_part = ped_disk_extended_partition (part->disk);
+               PED_ASSERT (ext_part != NULL);
+
+               min_start = ext_part->geom.start;
+               max_end = ext_part->geom.end;
+               walk = ext_part->part_list;
+       } else {
+               min_start = 0;
+               max_end = part->disk->dev->length - 1;
+               walk = part->disk->part_list;
+       }
+
+       while (walk != NULL
+              && (walk->geom.start < geom->start
+                           || min_start >= walk->geom.start)) {
+               if (walk != part)
+                       min_start = walk->geom.end + 1;
+               walk = walk->next;
+       }
+
+       if (walk == part)
+               walk = walk->next;
+
+       if (walk)
+               max_end = walk->geom.start - 1;
+
+       if (min_start >= max_end)
+               return NULL;
+
+       ped_geometry_init (&free_space, part->disk->dev,
+                          min_start, max_end - min_start + 1);
+       return ped_constraint_new_from_max (&free_space);
+}
+
+/*
+ * Returns \c 0 if the partition, \p part overlaps with any partitions on the
+ * \p disk.  The geometry of \p part is taken to be \p geom, NOT \p part->geom
+ * (the idea here is to check if \p geom is valid, before changing \p part).
+ *
+ * This is useful for seeing if a resized partitions new geometry is going to
+ * fit, without the existing geomtry getting in the way.
+ *
+ * Note: overlap with an extended partition is also allowed, provided that
+ * \p geom lies completely inside the extended partition.
+ */
+static int
+_disk_check_part_overlaps (PedDisk* disk, PedPartition* part)
+{
+       PedPartition*   walk;
+
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (part != NULL);
+
+       for (walk = ped_disk_next_partition (disk, NULL); walk;
+            walk = ped_disk_next_partition (disk, walk)) {
+               if (walk->type & PED_PARTITION_FREESPACE)
+                       continue;
+               if (walk == part)
+                       continue;
+               if (part->type & PED_PARTITION_EXTENDED
+                   && walk->type & PED_PARTITION_LOGICAL)
+                       continue;
+
+               if (ped_geometry_test_overlap (&walk->geom, &part->geom)) {
+                       if (walk->type & PED_PARTITION_EXTENDED
+                           && part->type & PED_PARTITION_LOGICAL
+                           && ped_geometry_test_inside (&walk->geom,
+                                                        &part->geom))
+                               continue;
+                       return 0;
+               }
+       }
+
+       return 1;
+}
+
+static int
+_partition_check_basic_sanity (PedDisk* disk, PedPartition* part)
+{
+       PedPartition*   ext_part = ped_disk_extended_partition (disk);
+
+       PED_ASSERT (part->disk == disk);
+
+       PED_ASSERT (part->geom.start >= 0);
+       PED_ASSERT (part->geom.end < disk->dev->length);
+       PED_ASSERT (part->geom.start <= part->geom.end);
+
+       if (!ped_disk_type_check_feature (disk->type, PED_DISK_TYPE_EXTENDED)
+           && (part->type == PED_PARTITION_EXTENDED
+                   || part->type == PED_PARTITION_LOGICAL)) {
+               ped_exception_throw (
+                       PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_CANCEL,
+                       _("%s disk labels don't support logical or extended "
+                         "partitions."),
+                       disk->type->name);
+               return 0;
+       }
+
+       if (ped_partition_is_active (part)
+                       && ! (part->type & PED_PARTITION_LOGICAL)) {
+               if (ped_disk_get_primary_partition_count (disk) + 1
+                   > ped_disk_get_max_primary_partition_count (disk)) {
+                       ped_exception_throw (
+                               PED_EXCEPTION_ERROR,
+                               PED_EXCEPTION_CANCEL,
+                               _("Too many primary partitions."));
+                       return 0;
+               }
+       }
+
+       if ((part->type & PED_PARTITION_LOGICAL) && !ext_part) {
+               ped_exception_throw (
+                       PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_CANCEL,
+                       _("Can't add a logical partition to %s, because "
+                       "there is no extended partition."),
+                       disk->dev->path);
+               return 0;
+       }
+
+       return 1;
+}
+
+static int
+_check_extended_partition (PedDisk* disk, PedPartition* part)
+{
+       PedPartition*           walk;
+       PedPartition*           ext_part;
+
+       PED_ASSERT (disk != NULL);
+       ext_part = ped_disk_extended_partition (disk);
+       if (!ext_part) ext_part = part;
+       PED_ASSERT (ext_part != NULL);
+
+       if (part != ext_part) {
+               ped_exception_throw (
+                       PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_CANCEL,
+                       _("Can't have more than one extended partition on %s."),
+                       disk->dev->path);
+               return 0;
+       }
+
+       for (walk = ext_part->part_list; walk; walk = walk->next) {
+               if (!ped_geometry_test_inside (&ext_part->geom, &walk->geom)) {
+                       ped_exception_throw (
+                               PED_EXCEPTION_ERROR,
+                               PED_EXCEPTION_CANCEL,
+                               _("Can't have logical partitions outside of "
+                                 "the extended partition."));
+                       return 0;
+               }
+       }
+       return 1;
+}
+
+static int
+_check_partition (PedDisk* disk, PedPartition* part)
+{
+       PedPartition*   ext_part = ped_disk_extended_partition (disk);
+
+       PED_ASSERT (part->geom.start <= part->geom.end);
+
+       if (part->type == PED_PARTITION_EXTENDED) {
+               if (!_check_extended_partition (disk, part))
+                       return 0;
+       }
+
+       if (part->type & PED_PARTITION_LOGICAL
+           && !ped_geometry_test_inside (&ext_part->geom, &part->geom)) {
+               ped_exception_throw (
+                       PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_CANCEL,
+                       _("Can't have a logical partition outside of the "
+                         "extended partition on %s."),
+                       disk->dev->path);
+               return 0;
+       }
+
+       if (!_disk_check_part_overlaps (disk, part)) {
+               ped_exception_throw (
+                       PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_CANCEL,
+                       _("Can't have overlapping partitions."));
+               return 0;
+       }
+
+       if (! (part->type & PED_PARTITION_LOGICAL)
+           && ext_part && ext_part != part
+           && ped_geometry_test_inside (&ext_part->geom, &part->geom)) {
+               ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                       _("Can't have a primary partition inside an extended "
+                        "partition."));
+               return 0;
+       }
+
+       if (!(part->type & PED_PARTITION_METADATA))
+               if (!disk->type->ops->partition_check(part))
+                       return 0;
+
+       return 1;
+}
+
+/**
+ * Adds PedPartition \p part to PedPartition \p disk.
+ *
+ * \warning The partition's geometry may be changed, subject to \p constraint.
+ * You could set \p constraint to <tt>ped_constraint_exact(&part->geom)</tt>,
+ * but many partition table schemes have special requirements on the start
+ * and end of partitions.  Therefore, having an overly strict constraint
+ * will probably mean that this function will fail (in which
+ * case \p part will be left unmodified)
+ * \p part is assigned a number (\p part->num) in this process.
+ *
+ * \return \c 0 on failure.
+ */
+int
+ped_disk_add_partition (PedDisk* disk, PedPartition* part,
+                       const PedConstraint* constraint)
+{
+       PedConstraint*  overlap_constraint = NULL;
+       PedConstraint*  constraints = NULL;
+
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (part != NULL);
+
+       if (!_partition_check_basic_sanity (disk, part))
+               return 0;
+
+       if (!_disk_push_update_mode (disk))
+               return 0;
+
+       if (ped_partition_is_active (part)) {
+               overlap_constraint
+                       = _partition_get_overlap_constraint (part, &part->geom);
+               constraints = ped_constraint_intersect (overlap_constraint,
+                                                       constraint);
+
+               if (!constraints && constraint) {
+                       ped_exception_throw (
+                               PED_EXCEPTION_ERROR,
+                               PED_EXCEPTION_CANCEL,
+                               _("Can't have overlapping partitions."));
+                       goto error;
+               }
+
+               if (!_partition_enumerate (part))
+                       goto error;
+               if (!_partition_align (part, constraints))
+                       goto error;
+       }
+        /* FIXME: when _check_partition fails, we end up leaking PART
+           at least for DVH partition tables.  Simply calling
+           ped_partition_destroy(part) here fixes it for DVH, but
+           causes trouble for other partition types.  Similarly,
+           reordering these two checks, putting _check_partition after
+           _disk_raw_add induces an infinite loop.  */
+       if (!_check_partition (disk, part))
+               goto error;
+       if (!_disk_raw_add (disk, part))
+               goto error;
+
+       ped_constraint_destroy (overlap_constraint);
+       ped_constraint_destroy (constraints);
+       if (!_disk_pop_update_mode (disk))
+               return 0;
+#ifdef DEBUG
+       if (!_disk_check_sanity (disk))
+               return 0;
+#endif
+       return 1;
+
+error:
+       ped_constraint_destroy (overlap_constraint);
+       ped_constraint_destroy (constraints);
+       _disk_pop_update_mode (disk);
+       return 0;
+}
+
+/**
+ * Removes PedPartition \p part from PedDisk \p disk.
+ *
+ * If \p part is an extended partition, it must not contain any logical
+ * partitions. \p part is *NOT* destroyed. The caller must call
+ * ped_partition_destroy(), or use ped_disk_delete_partition() instead.
+ *
+ * \return \c 0 on error.
+ */
+int
+ped_disk_remove_partition (PedDisk* disk, PedPartition* part)
+{
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (part != NULL);
+
+       if (!_disk_push_update_mode (disk))
+               return 0;
+       PED_ASSERT (part->part_list == NULL);
+       _disk_raw_remove (disk, part);
+       if (!_disk_pop_update_mode (disk))
+               return 0;
+       ped_disk_enumerate_partitions (disk);
+       return 1;
+}
+
+static int
+ped_disk_delete_all_logical (PedDisk* disk);
+
+/**
+ * Removes \p part from \p disk, and destroys \p part.
+ *
+ * \return \c 0 on failure.
+ */
+int
+ped_disk_delete_partition (PedDisk* disk, PedPartition* part)
+{
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (part != NULL);
+
+       if (!_disk_push_update_mode (disk))
+               return 0;
+       if (part->type == PED_PARTITION_EXTENDED)
+               ped_disk_delete_all_logical (disk);
+       ped_disk_remove_partition (disk, part);
+       ped_partition_destroy (part);
+       if (!_disk_pop_update_mode (disk))
+               return 0;
+
+       return 1;
+}
+
+static int
+ped_disk_delete_all_logical (PedDisk* disk)
+{
+       PedPartition*           walk;
+       PedPartition*           next;
+       PedPartition*           ext_part;
+
+       PED_ASSERT (disk != NULL);
+       ext_part = ped_disk_extended_partition (disk);
+       PED_ASSERT (ext_part != NULL);
+
+       for (walk = ext_part->part_list; walk; walk = next) {
+               next = walk->next;
+
+               if (!ped_disk_delete_partition (disk, walk))
+                       return 0;
+       }
+       return 1;
+}
+
+/**
+ * Removes and destroys all partitions on \p disk.
+ *
+ * \return \c 0 on failure.
+ */
+int
+ped_disk_delete_all (PedDisk* disk)
+{
+       PedPartition*           walk;
+       PedPartition*           next;
+
+       PED_ASSERT (disk != NULL);
+
+       if (!_disk_push_update_mode (disk))
+               return 0;
+
+       for (walk = disk->part_list; walk; walk = next) {
+               next = walk->next;
+
+               if (!ped_disk_delete_partition (disk, walk)) {
+                       _disk_pop_update_mode(disk);
+                       return 0;
+                }
+       }
+
+       if (!_disk_pop_update_mode (disk))
+               return 0;
+
+       return 1;
+}
+
+/**
+ * Sets the geometry of \p part (i.e. change a partitions location). This can
+ * fail for many reasons, e.g. can't overlap with other partitions. If it
+ * does fail, \p part will remain unchanged. Returns \c 0 on failure. \p part's
+ * geometry may be set to something different from \p start and \p end subject
+ * to \p constraint.
+ *
+ * \warning The constraint warning from ped_disk_add_partition() applies.
+ *
+ * \note this function does not modify the contents of the partition.  You need
+ *       to call ped_file_system_resize() separately.
+ */
+int
+ped_disk_set_partition_geom (PedDisk* disk, PedPartition* part,
+                            const PedConstraint* constraint,
+                            PedSector start, PedSector end)
+{
+       PedConstraint*  overlap_constraint = NULL;
+       PedConstraint*  constraints = NULL;
+       PedGeometry     old_geom;
+       PedGeometry     new_geom;
+
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk == disk);
+
+       old_geom = part->geom;
+       ped_geometry_init (&new_geom, part->geom.dev, start, end - start + 1);
+
+       if (!_disk_push_update_mode (disk))
+               return 0;
+
+       overlap_constraint
+               = _partition_get_overlap_constraint (part, &new_geom);
+       constraints = ped_constraint_intersect (overlap_constraint, constraint);
+       if (!constraints && constraint) {
+               ped_exception_throw (
+                       PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_CANCEL,
+                       _("Can't have overlapping partitions."));
+               goto error_pop_update_mode;
+       }
+
+       part->geom = new_geom;
+       if (!_partition_align (part, constraints))
+               goto error_pop_update_mode;
+       if (!_check_partition (disk, part))
+               goto error_pop_update_mode;
+
+       /* remove and add, to ensure the ordering gets updated if necessary */
+       _disk_raw_remove (disk, part);
+       _disk_raw_add (disk, part);
+
+       if (!_disk_pop_update_mode (disk))
+               goto error;
+
+       ped_constraint_destroy (overlap_constraint);
+       ped_constraint_destroy (constraints);
+       return 1;
+
+error_pop_update_mode:
+       _disk_pop_update_mode (disk);
+error:
+       ped_constraint_destroy (overlap_constraint);
+       ped_constraint_destroy (constraints);
+       part->geom = old_geom;
+       return 0;
+}
+
+/**
+ * Grow PedPartition \p part geometry to the maximum possible subject to
+ * \p constraint.  The new geometry will be a superset of the old geometry.
+ *
+ * \return 0 on failure
+ */
+int
+ped_disk_maximize_partition (PedDisk* disk, PedPartition* part,
+                            const PedConstraint* constraint)
+{
+       PedGeometry     old_geom;
+       PedSector       global_min_start;
+       PedSector       global_max_end;
+       PedSector       new_start;
+       PedSector       new_end;
+       PedPartition*   ext_part = ped_disk_extended_partition (disk);
+       PedConstraint*  constraint_any;
+
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (part != NULL);
+
+       if (part->type & PED_PARTITION_LOGICAL) {
+               PED_ASSERT (ext_part != NULL);
+               global_min_start = ext_part->geom.start;
+               global_max_end = ext_part->geom.end;
+       } else {
+               global_min_start = 0;
+               global_max_end = disk->dev->length - 1;
+       }
+
+       old_geom = part->geom;
+
+       if (!_disk_push_update_mode (disk))
+               return 0;
+
+       if (part->prev)
+               new_start = part->prev->geom.end + 1;
+       else
+               new_start = global_min_start;
+
+       if (part->next)
+               new_end = part->next->geom.start - 1;
+       else
+               new_end = global_max_end;
+
+       if (!ped_disk_set_partition_geom (disk, part, constraint, new_start,
+                                         new_end))
+               goto error;
+
+       if (!_disk_pop_update_mode (disk))
+               return 0;
+       return 1;
+
+error:
+       constraint_any = ped_constraint_any (disk->dev);
+       ped_disk_set_partition_geom (disk, part, constraint_any,
+                                    old_geom.start, old_geom.end);
+       ped_constraint_destroy (constraint_any);
+       _disk_pop_update_mode (disk);
+       return 0;
+}
+
+/**
+ * Get the maximum geometry \p part can be grown to, subject to
+ * \p constraint.
+ *
+ * \return \c NULL on failure.
+ */
+PedGeometry*
+ped_disk_get_max_partition_geometry (PedDisk* disk, PedPartition* part,
+                                    const PedConstraint* constraint)
+{
+       PedGeometry     old_geom;
+       PedGeometry*    max_geom;
+       PedConstraint*  constraint_exact;
+
+       PED_ASSERT(disk != NULL);
+       PED_ASSERT(part != NULL);
+       PED_ASSERT(ped_partition_is_active (part));
+
+       old_geom = part->geom;
+       if (!ped_disk_maximize_partition (disk, part, constraint))
+               return NULL;
+       max_geom = ped_geometry_duplicate (&part->geom);
+
+       constraint_exact = ped_constraint_exact (&old_geom);
+       ped_disk_set_partition_geom (disk, part, constraint_exact,
+                                    old_geom.start, old_geom.end);
+       ped_constraint_destroy (constraint_exact);
+
+       /* this assertion should never fail, because the old
+        * geometry was valid
+        */
+       PED_ASSERT (ped_geometry_test_equal (&part->geom, &old_geom));
+
+       return max_geom;
+}
+
+/**
+ * Reduce the size of the extended partition to a minimum while still wrapping
+ * its logical partitions.  If there are no logical partitions, remove the
+ * extended partition.
+ *
+ * \return 0 on failure.
+ */
+int
+ped_disk_minimize_extended_partition (PedDisk* disk)
+{
+       PedPartition*           first_logical;
+       PedPartition*           last_logical;
+       PedPartition*           walk;
+       PedPartition*           ext_part;
+       PedConstraint*          constraint;
+       int                     status;
+
+       PED_ASSERT (disk != NULL);
+
+       ext_part = ped_disk_extended_partition (disk);
+       if (!ext_part)
+               return 1;
+
+       if (!_disk_push_update_mode (disk))
+               return 0;
+
+       first_logical = ext_part->part_list;
+       if (!first_logical) {
+               if (!_disk_pop_update_mode (disk))
+                       return 0;
+               return ped_disk_delete_partition (disk, ext_part);
+       }
+
+       for (walk = first_logical; walk->next; walk = walk->next);
+       last_logical = walk;
+
+       constraint = ped_constraint_any (disk->dev);
+       status = ped_disk_set_partition_geom (disk, ext_part, constraint,
+                                             first_logical->geom.start,
+                                             last_logical->geom.end);
+       ped_constraint_destroy (constraint);
+
+       if (!_disk_pop_update_mode (disk))
+               return 0;
+       return status;
+}
+
+/**
+ * @}
+ */
+
+/**
+ * \addtogroup PedPartition
+ *
+ * @{
+ */
+
+/**
+ * Returns a name that seems mildly appropriate for a partition type \p type.
+ *
+ * Eg, if you pass (PED_PARTITION_LOGICAL & PED_PARTITION_FREESPACE), it
+ * will return "free".  This isn't to be taken too seriously - it's just
+ * useful for user interfaces, so you can show the user something ;-)
+ *
+ * \note The returned string will be in English.  However,
+ * translations are provided, so the caller can call
+ * dgettext("parted", RESULT) on the result.
+ *
+ */
+const char*
+ped_partition_type_get_name (PedPartitionType type)
+{
+       if (type & PED_PARTITION_METADATA)
+               return N_("metadata");
+       else if (type & PED_PARTITION_FREESPACE)
+               return N_("free");
+       else if (type & PED_PARTITION_EXTENDED)
+               return N_("extended");
+       else if (type & PED_PARTITION_LOGICAL)
+               return N_("logical");
+       else
+               return N_("primary");
+}
+
+
+/**
+ * Returns a name for a \p flag, e.g. PED_PARTITION_BOOT will return "boot".
+ *
+ * \note The returned string will be in English.  However,
+ * translations are provided, so the caller can call
+ * dgettext("parted", RESULT) on the result.
+ */
+const char*
+ped_partition_flag_get_name (PedPartitionFlag flag)
+{
+       switch (flag) {
+       case PED_PARTITION_BOOT:
+               return N_("boot");
+       case PED_PARTITION_BIOS_GRUB:
+               return N_("bios_grub");
+       case PED_PARTITION_ROOT:
+               return N_("root");
+       case PED_PARTITION_SWAP:
+               return N_("swap");
+       case PED_PARTITION_HIDDEN:
+               return N_("hidden");
+       case PED_PARTITION_RAID:
+               return N_("raid");
+       case PED_PARTITION_LVM:
+               return N_("lvm");
+       case PED_PARTITION_LBA:
+               return N_("lba");
+       case PED_PARTITION_HPSERVICE:
+               return N_("hp-service");
+       case PED_PARTITION_PALO:
+               return N_("palo");
+       case PED_PARTITION_PREP:
+               return N_("prep");
+       case PED_PARTITION_MSFT_RESERVED:
+               return N_("msftres");
+        case PED_PARTITION_APPLE_TV_RECOVERY:
+                return N_("atvrecv");
+        case PED_PARTITION_DIAG:
+                return N_("diag");
+        case PED_PARTITION_LEGACY_BOOT:
+                return N_("legacy_boot");
+
+       default:
+               ped_exception_throw (
+                       PED_EXCEPTION_BUG,
+                       PED_EXCEPTION_CANCEL,
+                       _("Unknown partition flag, %d."),
+                       flag);
+               return NULL;
+       }
+}
+
+/**
+ * Iterates through all flags.
+ *
+ * ped_partition_flag_next(0) returns the first flag
+ *
+ * \return the next flag, or 0 if there are no more flags
+ */
+PedPartitionFlag
+ped_partition_flag_next (PedPartitionFlag flag)
+{
+       return (flag + 1) % (PED_PARTITION_LAST_FLAG + 1);
+}
+
+/**
+ * Returns the flag associated with \p name.
+ *
+ * \p name can be the English
+ * string, or the translation for the native language.
+ */
+PedPartitionFlag
+ped_partition_flag_get_by_name (const char* name)
+{
+       PedPartitionFlag        flag;
+       const char*             flag_name;
+
+       for (flag = ped_partition_flag_next (0); flag;
+                       flag = ped_partition_flag_next (flag)) {
+               flag_name = ped_partition_flag_get_name (flag);
+               if (strcasecmp (name, flag_name) == 0
+                   || strcasecmp (name, _(flag_name)) == 0)
+                       return flag;
+       }
+
+       return 0;
+}
+
+static void
+ped_partition_print (const PedPartition* part)
+{
+       PED_ASSERT (part != NULL);
+
+       printf ("  %-10s %02d  (%d->%d)\n",
+               ped_partition_type_get_name (part->type),
+               part->num,
+               (int) part->geom.start, (int) part->geom.end);
+}
+
+/** @} */
+
+/**
+ * \addtogroup PedDisk
+ *
+ * @{
+ */
+
+/**
+ * Prints a summary of disk's partitions.  Useful for debugging.
+ */
+void
+ped_disk_print (const PedDisk* disk)
+{
+       PedPartition*   part;
+
+       PED_ASSERT (disk != NULL);
+
+       for (part = disk->part_list; part;
+            part = ped_disk_next_partition (disk, part))
+               ped_partition_print (part);
+}
+
+/** @} */
diff --git a/libparted/exception.c b/libparted/exception.c
new file mode 100644 (file)
index 0000000..910d25c
--- /dev/null
@@ -0,0 +1,311 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 1999-2000, 2007-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+/** \file exception.c */
+
+/**
+ * \addtogroup PedException
+ *
+ * \brief Exception handling.
+ *
+ * There are a few types of exceptions: PED_EXCEPTION_INFORMATION,
+ * PED_EXCEPTION_WARNING, PED_EXCEPTION_ERROR, PED_EXCEPTION_FATAL,
+ * PED_EXCEPTION_BUG.
+ *
+ * They are "thrown" when one of the above events occur while executing
+ * a libparted function. For example, if ped_device_open() fails
+ * because the device doesn't exist, an exception will be thrown.
+ * Exceptions contain text describing what the event was. It will give
+ * at least one option for resolving the exception: PED_EXCEPTION_FIX,
+ * PED_EXCEPTION_YES, PED_EXCEPTION_NO, PED_EXCEPTION_OK, PED_EXCEPTION_RETRY,
+ * PED_EXCEPTION_IGNORE, PED_EXCEPTION_CANCEL. After an exception is thrown,
+ * there are two things that can happen:
+ *
+ * -# an exception handler is called, which selects how the exception should be
+ *    resolved (usually by asking the user). Also note: an exception handler may
+ *    choose to return PED_EXCEPTION_UNHANDLED. In this case, a default action
+ *    will be taken by libparted (respectively the code that threw the
+ *    exception). In general, a default action will be "safe".
+ * -# the exception is not handled, because the caller of the function wants to
+ *    handle everything itself. In this case, PED_EXCEPTION_UNHANDLED is
+ *    returned.
+ *
+ * @{
+ */
+
+#include <config.h>
+
+#include <parted/parted.h>
+#include <parted/debug.h>
+
+#define N_(String) String
+#if ENABLE_NLS
+#  include <libintl.h>
+#  define _(String) dgettext (PACKAGE, String)
+#else
+#  define _(String) (String)
+#endif /* ENABLE_NLS */
+
+#include <stdio.h>
+#include <stdarg.h>
+#include <stdlib.h>
+
+int                            ped_exception = 0;
+
+static PedExceptionOption default_handler (PedException* ex);
+
+static PedExceptionHandler*    ex_handler = default_handler;
+static PedException*           ex = NULL;
+static int                     ex_fetch_count = 0;
+
+static const char *const type_strings [] = {
+       N_("Information"),
+       N_("Warning"),
+       N_("Error"),
+       N_("Fatal"),
+       N_("Bug"),
+       N_("No Implementation")
+};
+
+static const char *const option_strings [] = {
+       N_("Fix"),
+       N_("Yes"),
+       N_("No"),
+       N_("OK"),
+       N_("Retry"),
+       N_("Ignore"),
+       N_("Cancel")
+};
+
+/**
+ *  Return a string describing an exception type.
+ */
+char*
+ped_exception_get_type_string (PedExceptionType ex_type)
+{
+       return (char *) type_strings [ex_type - 1];
+}
+
+/* FIXME: move this out to the prospective math.c */
+/* FIXME: this can probably be done more efficiently */
+static int
+ped_log2 (int n)
+{
+       int x;
+
+        PED_ASSERT (n > 0);
+
+       for (x=0; 1 << x <= n; x++);
+
+       return x - 1;
+}
+
+/**
+ * Return a string describing an exception option.
+ */
+char*
+ped_exception_get_option_string (PedExceptionOption ex_opt)
+{
+       return (char *) option_strings [ped_log2 (ex_opt)];
+}
+
+static PedExceptionOption
+default_handler (PedException* e)
+{
+       if (e->type == PED_EXCEPTION_BUG)
+               fprintf (stderr,
+                       _("A bug has been detected in GNU Parted.  "
+                       "Refer to the web site of parted "
+                       "http://www.gnu.org/software/parted/parted.html "
+                       "for more information of what could be useful "
+                       "for bug submitting!  "
+                       "Please email a bug report to "
+                       "%s containing at least the "
+                       "version (%s) and the following message:  "),
+                        PACKAGE_BUGREPORT, VERSION);
+       else
+               fprintf (stderr, "%s: ",
+                        ped_exception_get_type_string (e->type));
+       fprintf (stderr, "%s\n", e->message);
+
+       switch (e->options) {
+               case PED_EXCEPTION_OK:
+               case PED_EXCEPTION_CANCEL:
+               case PED_EXCEPTION_IGNORE:
+                       return e->options;
+
+               default:
+                       return PED_EXCEPTION_UNHANDLED;
+       }
+}
+
+/**
+ * Set the exception handler.
+ *
+ * The exception handler should return ONE of the options set in ex->options,
+ * indicating the way the event should be resolved.
+ */
+void
+ped_exception_set_handler (PedExceptionHandler* handler)
+{
+       if (handler)
+               ex_handler = handler;
+       else
+               ex_handler = default_handler;
+}
+
+/**
+ * Get the current exception handler.
+ */
+PedExceptionHandler *
+ped_exception_get_handler (void)
+{
+       if (ex_handler)
+               return ex_handler;
+       return default_handler;
+}
+
+/**
+ * Assert that the current exception has been resolved.
+ */
+void
+ped_exception_catch ()
+{
+        if (ped_exception) {
+                ped_exception = 0;
+                free (ex->message);
+                free (ex);
+                ex = NULL;
+        }
+}
+
+static PedExceptionOption
+do_throw ()
+{
+       PedExceptionOption      ex_opt;
+
+       ped_exception = 1;
+
+       if (ex_fetch_count) {
+               return PED_EXCEPTION_UNHANDLED;
+       } else {
+               ex_opt = ex_handler (ex);
+               ped_exception_catch ();
+               return ex_opt;
+       }
+}
+
+/**
+ * Throw an exception.
+ *
+ * You can also use this in a program using libparted.
+ * "message" is a printf-like format string, so you can do
+ *
+ * \code
+ * ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_RETRY_CANCEL,
+ *      "Can't open %s", file_name);
+ * \endcode
+ *
+ * Returns the option selected to resolve the exception. If the exception was
+ * unhandled, PED_EXCEPTION_UNHANDLED is returned.
+ */
+PedExceptionOption
+ped_exception_throw (PedExceptionType ex_type,
+                    PedExceptionOption ex_opts, const char* message, ...)
+{
+       va_list         arg_list;
+       int result;
+       static int size = 1000;
+
+       if (ex)
+               ped_exception_catch ();
+
+       ex = (PedException*) malloc (sizeof (PedException));
+       if (!ex)
+               goto no_memory;
+
+       ex->type = ex_type;
+       ex->options = ex_opts;
+
+       while (message) {
+                       ex->message = (char*) malloc (size * sizeof (char));
+                       if (!ex->message)
+                                       goto no_memory;
+
+                       va_start (arg_list, message);
+                       result = vsnprintf (ex->message, size, message, arg_list);
+                       va_end (arg_list);
+
+                       if (result > -1 && result < size)
+                                       break;
+
+                       size += 10;
+                       free (ex->message);
+       }
+
+       return do_throw ();
+
+no_memory:
+       fputs ("Out of memory in exception handler!\n", stderr);
+
+       va_start (arg_list, message);
+       vfprintf (stderr, message, arg_list);
+       va_end (arg_list);
+
+       return PED_EXCEPTION_UNHANDLED;
+}
+
+/**
+ * Rethrow an unhandled exception.
+ * This means repeating the last ped_exception_throw() statement.
+ */
+PedExceptionOption
+ped_exception_rethrow ()
+{
+       return do_throw ();
+}
+
+/**
+ * Indicates that exceptions should not go to the exception handler, but
+ * passed up to the calling function(s).  All calls to
+ * ped_exception_throw() will return PED_EXCEPTION_UNHANDLED.
+ */
+void
+ped_exception_fetch_all ()
+{
+       ex_fetch_count++;
+}
+
+/**
+ * Indicates that the calling function does not want to accept any
+ * responsibility for exceptions any more.
+ *
+ * \note a caller of that function may still want responsibility, so
+ *      ped_exception_throw() may not invoke the exception handler.
+ *
+ * \warning every call to this function must have a preceding
+ *      ped_exception_fetch_all().
+ */
+void
+ped_exception_leave_all ()
+{
+       PED_ASSERT (ex_fetch_count > 0);
+       ex_fetch_count--;
+}
+
+/** @} */
diff --git a/libparted/filesys.c b/libparted/filesys.c
new file mode 100644 (file)
index 0000000..854b8d3
--- /dev/null
@@ -0,0 +1,299 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 1999-2001, 2007-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+/** \file filesys.c */
+
+/**
+ * \addtogroup PedFileSystem
+ *
+ * \note File systems exist on a PedGeometry - NOT a PedPartition.
+ *
+ * @{
+ */
+
+#include <config.h>
+
+#include <parted/parted.h>
+#include <parted/debug.h>
+
+#if ENABLE_NLS
+#  include <libintl.h>
+#  define _(String) dgettext (PACKAGE, String)
+#else
+#  define _(String) (String)
+#endif /* ENABLE_NLS */
+
+#define BUFFER_SIZE    4096            /* in sectors */
+
+static PedFileSystemType*      fs_types = NULL;
+static PedFileSystemAlias*     fs_aliases = NULL;
+
+void
+ped_file_system_type_register (PedFileSystemType* fs_type)
+{
+       PED_ASSERT (fs_type != NULL);
+       PED_ASSERT (fs_type->ops != NULL);
+       PED_ASSERT (fs_type->name != NULL);
+
+        fs_type->next = fs_types;
+        fs_types = fs_type;
+}
+
+void
+ped_file_system_type_unregister (PedFileSystemType* fs_type)
+{
+       PedFileSystemType*      walk;
+       PedFileSystemType*      last = NULL;
+
+       PED_ASSERT (fs_types != NULL);
+       PED_ASSERT (fs_type != NULL);
+
+       for (walk = fs_types; walk && walk != fs_type;
+                last = walk, walk = walk->next);
+
+       PED_ASSERT (walk != NULL);
+       if (last)
+               ((struct _PedFileSystemType*) last)->next = fs_type->next;
+       else
+               fs_types = fs_type->next;
+}
+
+void
+ped_file_system_alias_register (PedFileSystemType* fs_type, const char* alias,
+                               int deprecated)
+{
+       PedFileSystemAlias*     fs_alias;
+
+       PED_ASSERT (fs_type != NULL);
+       PED_ASSERT (alias != NULL);
+
+       fs_alias = ped_malloc (sizeof *fs_alias);
+       if (!fs_alias)
+               return;
+
+       fs_alias->next = fs_aliases;
+       fs_alias->fs_type = fs_type;
+       fs_alias->alias = alias;
+       fs_alias->deprecated = deprecated;
+       fs_aliases = fs_alias;
+}
+
+void
+ped_file_system_alias_unregister (PedFileSystemType* fs_type,
+                                 const char* alias)
+{
+       PedFileSystemAlias*     walk;
+       PedFileSystemAlias*     last = NULL;
+
+       PED_ASSERT (fs_aliases != NULL);
+       PED_ASSERT (fs_type != NULL);
+       PED_ASSERT (alias != NULL);
+
+       for (walk = fs_aliases; walk; last = walk, walk = walk->next) {
+               if (walk->fs_type == fs_type && !strcmp (walk->alias, alias))
+                       break;
+       }
+
+       PED_ASSERT (walk != NULL);
+       if (last)
+               last->next = walk->next;
+       else
+               fs_aliases = walk->next;
+       free (walk);
+}
+
+/**
+ * Get a PedFileSystemType by its @p name.
+ *
+ * @return @c NULL if none found.
+ */
+PedFileSystemType*
+ped_file_system_type_get (const char* name)
+{
+       PedFileSystemType*      walk;
+       PedFileSystemAlias*     alias_walk;
+
+       PED_ASSERT (name != NULL);
+
+       for (walk = fs_types; walk != NULL; walk = walk->next) {
+               if (!strcasecmp (walk->name, name))
+                       break;
+       }
+       if (walk != NULL)
+               return walk;
+
+       for (alias_walk = fs_aliases; alias_walk != NULL;
+            alias_walk = alias_walk->next) {
+               if (!strcasecmp (alias_walk->alias, name))
+                       break;
+       }
+       if (alias_walk != NULL) {
+               if (alias_walk->deprecated)
+                       PED_DEBUG (0, "File system alias %s is deprecated",
+                                  name);
+               return alias_walk->fs_type;
+       }
+
+       return NULL;
+}
+
+/**
+ * Get the next PedFileSystemType after @p fs_type.
+ *
+ * @return @c NULL if @p fs_type is the last item in the list.
+ */
+PedFileSystemType*
+ped_file_system_type_get_next (const PedFileSystemType* fs_type)
+{
+       if (fs_type)
+               return fs_type->next;
+       else
+               return fs_types;
+}
+
+/**
+ * Get the next PedFileSystemAlias after @p fs_alias.
+ *
+ * @return @c NULL if @p fs_alias is the last item in the list.
+ */
+PedFileSystemAlias*
+ped_file_system_alias_get_next (const PedFileSystemAlias* fs_alias)
+{
+       if (fs_alias)
+               return fs_alias->next;
+       else
+               return fs_aliases;
+}
+
+/**
+ * Attempt to find a file system and return the region it occupies.
+ *
+ * @param fs_type The file system type to probe for.
+ * @param geom The region to be searched.
+ *
+ * @return @p NULL if @p fs_type file system wasn't detected
+ */
+PedGeometry*
+ped_file_system_probe_specific (
+               const PedFileSystemType* fs_type, PedGeometry* geom)
+{
+       PedGeometry*    result;
+
+       PED_ASSERT (fs_type != NULL);
+       PED_ASSERT (fs_type->ops->probe != NULL);
+       PED_ASSERT (geom != NULL);
+
+        /* Fail all fs-specific probe-related tests when sector size
+           is not the default.  */
+       if (geom->dev->sector_size != PED_SECTOR_SIZE_DEFAULT)
+               return 0;
+
+       if (!ped_device_open (geom->dev))
+               return 0;
+       result = fs_type->ops->probe (geom);
+       ped_device_close (geom->dev);
+       return result;
+}
+
+static int
+_geometry_error (const PedGeometry* a, const PedGeometry* b)
+{
+       PedSector       start_delta = a->start - b->start;
+       PedSector       end_delta = a->end - b->end;
+
+       return abs (start_delta) + abs (end_delta);
+}
+
+static PedFileSystemType*
+_best_match (const PedGeometry* geom, PedFileSystemType* detected [],
+            const int detected_error [], int detected_count)
+{
+       int             best_match = 0;
+       int             i;
+       PedSector       min_error;
+
+       min_error = PED_MAX (4096, geom->length / 100);
+
+       for (i = 1; i < detected_count; i++) {
+               if (detected_error [i] < detected_error [best_match])
+                       best_match = i;
+       }
+
+       /* make sure the best match is significantly better than all the
+        * other matches
+        */
+       for (i = 0; i < detected_count; i++) {
+               if (i == best_match)
+                       continue;
+
+               if (abs (detected_error [best_match] - detected_error [i])
+                               < min_error)
+                       return NULL;
+       }
+
+       return detected [best_match];
+}
+
+
+/**
+ * Attempt to detect a file system in region \p geom.
+ * This function tries to be clever at dealing with ambiguous
+ * situations, such as when one file system was not completely erased before a
+ * new file system was created on top of it.
+ *
+ * \return a new PedFileSystem on success, \c NULL on failure
+ */
+PedFileSystemType*
+ped_file_system_probe (PedGeometry* geom)
+{
+       PedFileSystemType*      detected[32];
+       int                     detected_error[32];
+       int                     detected_count = 0;
+       PedFileSystemType*      walk = NULL;
+
+       PED_ASSERT (geom != NULL);
+
+       if (!ped_device_open (geom->dev))
+               return NULL;
+
+       ped_exception_fetch_all ();
+       while ( (walk = ped_file_system_type_get_next (walk)) ) {
+               PedGeometry*    probed;
+
+               probed = ped_file_system_probe_specific (walk, geom);
+               if (probed) {
+                       detected [detected_count] = walk;
+                       detected_error [detected_count]
+                               = _geometry_error (geom, probed);
+                       detected_count++;
+                       ped_geometry_destroy (probed);
+               } else {
+                       ped_exception_catch ();
+               }
+       }
+       ped_exception_leave_all ();
+
+       ped_device_close (geom->dev);
+
+       if (!detected_count)
+               return NULL;
+       walk = _best_match (geom, detected, detected_error, detected_count);
+       if (walk)
+               return walk;
+       return NULL;
+}
diff --git a/libparted/fs/Makefile.am b/libparted/fs/Makefile.am
new file mode 100644 (file)
index 0000000..f3ec7dc
--- /dev/null
@@ -0,0 +1,35 @@
+# This file is part of GNU Parted
+# Copyright (C) 1999-2001, 2007, 2009-2011 Free Software Foundation, Inc.
+#
+# This file may be modified and/or distributed without restriction.
+
+SUBDIRS       = amiga ext2 ufs fat ntfs hfs linux_swap xfs jfs reiserfs \
+               nilfs2 # bfs
+
+partedincludedir      =        -I$(top_srcdir)/include
+noinst_LTLIBRARIES    =        libfs.la
+libfs_la_LDFLAGS  = -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
+                       -release $(LT_RELEASE)
+
+libfs_la_LIBADD   = $(UUID_LIBS)               \
+                   $(INTLLIBS)                 \
+                   $(OS_LIBS)                  \
+                   $(REISER_LIBS)              \
+                   amiga/libamigafs.la         \
+                   ext2/libext2.la             \
+                   ufs/libufs.la               \
+                   fat/libfat.la               \
+                   ntfs/libntfs.la             \
+                   hfs/libhfs.la               \
+                   linux_swap/liblinuxswap.la  \
+                   xfs/libxfs.la               \
+                   jfs/libjfs.la               \
+                   reiserfs/libreiserfs.la     \
+                   nilfs2/libnilfs2.la
+#                  bfs/libbfs.la
+
+libfs_la_SOURCES   =
+
+INCLUDES = $(partedincludedir) $(INTLINCS)
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/libparted/fs/Makefile.in b/libparted/fs/Makefile.in
new file mode 100644 (file)
index 0000000..30cedca
--- /dev/null
@@ -0,0 +1,1431 @@
+# Makefile.in generated by automake 1.11a from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in 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.
+
+@SET_MAKE@
+
+# This file is part of GNU Parted
+# Copyright (C) 1999-2001, 2007, 2009-2011 Free Software Foundation, Inc.
+#
+# This file may be modified and/or distributed without restriction.
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = libparted/fs
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+       $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argmatch.m4 \
+       $(top_srcdir)/m4/assert.m4 $(top_srcdir)/m4/btowc.m4 \
+       $(top_srcdir)/m4/calloc.m4 $(top_srcdir)/m4/canonicalize.m4 \
+       $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
+       $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/configmake.m4 \
+       $(top_srcdir)/m4/dirname.m4 \
+       $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+       $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/environ.m4 \
+       $(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
+       $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fclose.m4 \
+       $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/fcntl_h.m4 \
+       $(top_srcdir)/m4/fflush.m4 $(top_srcdir)/m4/fpending.m4 \
+       $(top_srcdir)/m4/fpurge.m4 $(top_srcdir)/m4/freading.m4 \
+       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/fsync.m4 \
+       $(top_srcdir)/m4/ftell.m4 $(top_srcdir)/m4/ftello.m4 \
+       $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
+       $(top_srcdir)/m4/langinfo_h.m4 $(top_srcdir)/m4/lcmessage.m4 \
+       $(top_srcdir)/m4/lib-ignore.m4 $(top_srcdir)/m4/lib-ld.m4 \
+       $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/localcharset.m4 \
+       $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \
+       $(top_srcdir)/m4/locale-tr.m4 $(top_srcdir)/m4/locale-zh.m4 \
+       $(top_srcdir)/m4/locale_h.m4 $(top_srcdir)/m4/localename.m4 \
+       $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/long-options.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
+       $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+       $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
+       $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+       $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbtowc.m4 \
+       $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+       $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/multiarch.m4 \
+       $(top_srcdir)/m4/nl_langinfo.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/nocrash.m4 $(top_srcdir)/m4/o-direct.m4 \
+       $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/priv-set.m4 \
+       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+       $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+       $(top_srcdir)/m4/read.m4 $(top_srcdir)/m4/readlink.m4 \
+       $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/regex.m4 \
+       $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+       $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/setlocale.m4 \
+       $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/ssize_t.m4 \
+       $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdarg.m4 \
+       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strdup.m4 \
+       $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/strerror_r.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+       $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtoll.m4 \
+       $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/symlink.m4 \
+       $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+       $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/thread.m4 \
+       $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/time_h.m4 \
+       $(top_srcdir)/m4/ungetc.m4 $(top_srcdir)/m4/unistd_h.m4 \
+       $(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkdir.m4 \
+       $(top_srcdir)/m4/usleep.m4 $(top_srcdir)/m4/version-etc.m4 \
+       $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \
+       $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
+       $(top_srcdir)/m4/wcrtomb.m4 $(top_srcdir)/m4/wctob.m4 \
+       $(top_srcdir)/m4/wctomb.m4 $(top_srcdir)/m4/wctype_h.m4 \
+       $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+       $(top_srcdir)/m4/xstrndup.m4 $(top_srcdir)/m4/xstrtol.m4 \
+       $(top_srcdir)/m4/yield.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libfs_la_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+       amiga/libamigafs.la ext2/libext2.la ufs/libufs.la \
+       fat/libfat.la ntfs/libntfs.la hfs/libhfs.la \
+       linux_swap/liblinuxswap.la xfs/libxfs.la jfs/libjfs.la \
+       reiserfs/libreiserfs.la nilfs2/libnilfs2.la
+am_libfs_la_OBJECTS =
+libfs_la_OBJECTS = $(am_libfs_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+libfs_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(libfs_la_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/lib
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+       $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo "  CC      " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+SOURCES = $(libfs_la_SOURCES)
+DIST_SOURCES = $(libfs_la_SOURCES)
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+       html-recursive info-recursive install-data-recursive \
+       install-dvi-recursive install-exec-recursive \
+       install-html-recursive install-info-recursive \
+       install-pdf-recursive install-ps-recursive install-recursive \
+       installcheck-recursive installdirs-recursive pdf-recursive \
+       ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
+  distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+       $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+       distdir
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+pkglibexecdir = @pkglibexecdir@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+BUILDINFO = @BUILDINFO@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHECK_CFLAGS = @CHECK_CFLAGS@
+CHECK_LIBS = @CHECK_LIBS@
+CONFIG_INCLUDE = @CONFIG_INCLUDE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DYNAMIC_LOADING = @DYNAMIC_LOADING@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENABLE_DEVICE_MAPPER = @ENABLE_DEVICE_MAPPER@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FACCESSAT = @GNULIB_FACCESSAT@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCHMODAT = @GNULIB_FCHMODAT@
+GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FCNTL = @GNULIB_FCNTL@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FGETC = @GNULIB_FGETC@
+GNULIB_FGETS = @GNULIB_FGETS@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREAD = @GNULIB_FREAD@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSCANF = @GNULIB_FSCANF@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSTATAT = @GNULIB_FSTATAT@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FUTIMENS = @GNULIB_FUTIMENS@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETC = @GNULIB_GETC@
+GNULIB_GETCHAR = @GNULIB_GETCHAR@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETGROUPS = @GNULIB_GETGROUPS@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETS = @GNULIB_GETS@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
+GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_ISWBLANK = @GNULIB_ISWBLANK@
+GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@
+GNULIB_LCHMOD = @GNULIB_LCHMOD@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LINKAT = @GNULIB_LINKAT@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_LSTAT = @GNULIB_LSTAT@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MBTOWC = @GNULIB_MBTOWC@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDIRAT = @GNULIB_MKDIRAT@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKFIFO = @GNULIB_MKFIFO@
+GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@
+GNULIB_MKNOD = @GNULIB_MKNOD@
+GNULIB_MKNODAT = @GNULIB_MKNODAT@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@
+GNULIB_MKTIME = @GNULIB_MKTIME@
+GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@
+GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@
+GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_OPEN = @GNULIB_OPEN@
+GNULIB_OPENAT = @GNULIB_OPENAT@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE = @GNULIB_PIPE@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_PREAD = @GNULIB_PREAD@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READ = @GNULIB_READ@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_READLINKAT = @GNULIB_READLINKAT@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_REALPATH = @GNULIB_REALPATH@
+GNULIB_REMOVE = @GNULIB_REMOVE@
+GNULIB_RENAME = @GNULIB_RENAME@
+GNULIB_RENAMEAT = @GNULIB_RENAMEAT@
+GNULIB_RMDIR = @GNULIB_RMDIR@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SETLOCALE = @GNULIB_SETLOCALE@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STAT = @GNULIB_STAT@
+GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRERROR_R = @GNULIB_STRERROR_R@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRPTIME = @GNULIB_STRPTIME@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_SYMLINK = @GNULIB_SYMLINK@
+GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
+GNULIB_TIMEGM = @GNULIB_TIMEGM@
+GNULIB_TIME_R = @GNULIB_TIME_R@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
+GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
+GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNLINK = @GNULIB_UNLINK@
+GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_USLEEP = @GNULIB_USLEEP@
+GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VFSCANF = @GNULIB_VFSCANF@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSCANF = @GNULIB_VSCANF@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCPCPY = @GNULIB_WCPCPY@
+GNULIB_WCPNCPY = @GNULIB_WCPNCPY@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@
+GNULIB_WCSCAT = @GNULIB_WCSCAT@
+GNULIB_WCSCHR = @GNULIB_WCSCHR@
+GNULIB_WCSCMP = @GNULIB_WCSCMP@
+GNULIB_WCSCOLL = @GNULIB_WCSCOLL@
+GNULIB_WCSCPY = @GNULIB_WCSCPY@
+GNULIB_WCSCSPN = @GNULIB_WCSCSPN@
+GNULIB_WCSDUP = @GNULIB_WCSDUP@
+GNULIB_WCSLEN = @GNULIB_WCSLEN@
+GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@
+GNULIB_WCSNCAT = @GNULIB_WCSNCAT@
+GNULIB_WCSNCMP = @GNULIB_WCSNCMP@
+GNULIB_WCSNCPY = @GNULIB_WCSNCPY@
+GNULIB_WCSNLEN = @GNULIB_WCSNLEN@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSPBRK = @GNULIB_WCSPBRK@
+GNULIB_WCSRCHR = @GNULIB_WCSRCHR@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCSSPN = @GNULIB_WCSSPN@
+GNULIB_WCSSTR = @GNULIB_WCSSTR@
+GNULIB_WCSTOK = @GNULIB_WCSTOK@
+GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@
+GNULIB_WCSXFRM = @GNULIB_WCSXFRM@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCTOMB = @GNULIB_WCTOMB@
+GNULIB_WCTRANS = @GNULIB_WCTRANS@
+GNULIB_WCTYPE = @GNULIB_WCTYPE@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WMEMCHR = @GNULIB_WMEMCHR@
+GNULIB_WMEMCMP = @GNULIB_WMEMCMP@
+GNULIB_WMEMCPY = @GNULIB_WMEMCPY@
+GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@
+GNULIB_WMEMSET = @GNULIB_WMEMSET@
+GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
+HAVE_CHOWN = @HAVE_CHOWN@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@
+HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SETENV = @HAVE_DECL_SETENV@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@
+HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_DUPLOCALE = @HAVE_DUPLOCALE@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
+HAVE_FCHMODAT = @HAVE_FCHMODAT@
+HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
+HAVE_FCNTL = @HAVE_FCNTL@
+HAVE_FEATURES_H = @HAVE_FEATURES_H@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSTATAT = @HAVE_FSTATAT@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_FUTIMENS = @HAVE_FUTIMENS@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETGROUPS = @HAVE_GETGROUPS@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETLOGIN = @HAVE_GETLOGIN@
+HAVE_GETOPT_H = @HAVE_GETOPT_H@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
+HAVE_GRANTPT = @HAVE_GRANTPT@
+HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWBLANK = @HAVE_ISWBLANK@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
+HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
+HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
+HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
+HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
+HAVE_LCHMOD = @HAVE_LCHMOD@
+HAVE_LCHOWN = @HAVE_LCHOWN@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_LSTAT = @HAVE_LSTAT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSLEN = @HAVE_MBSLEN@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMCHR = @HAVE_MEMCHR@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDIRAT = @HAVE_MKDIRAT@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKFIFO = @HAVE_MKFIFO@
+HAVE_MKFIFOAT = @HAVE_MKFIFOAT@
+HAVE_MKNOD = @HAVE_MKNOD@
+HAVE_MKNODAT = @HAVE_MKNODAT@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
+HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
+HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
+HAVE_OPENAT = @HAVE_OPENAT@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PIPE = @HAVE_PIPE@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PWRITE = @HAVE_PWRITE@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_READLINKAT = @HAVE_READLINKAT@
+HAVE_REALPATH = @HAVE_REALPATH@
+HAVE_RENAMEAT = @HAVE_RENAMEAT@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRPTIME = @HAVE_STRPTIME@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYMLINK = @HAVE_SYMLINK@
+HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_TIMEGM = @HAVE_TIMEGM@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_USLEEP = @HAVE_USLEEP@
+HAVE_UTIMENSAT = @HAVE_UTIMENSAT@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCPCPY = @HAVE_WCPCPY@
+HAVE_WCPNCPY = @HAVE_WCPNCPY@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSCASECMP = @HAVE_WCSCASECMP@
+HAVE_WCSCAT = @HAVE_WCSCAT@
+HAVE_WCSCHR = @HAVE_WCSCHR@
+HAVE_WCSCMP = @HAVE_WCSCMP@
+HAVE_WCSCOLL = @HAVE_WCSCOLL@
+HAVE_WCSCPY = @HAVE_WCSCPY@
+HAVE_WCSCSPN = @HAVE_WCSCSPN@
+HAVE_WCSDUP = @HAVE_WCSDUP@
+HAVE_WCSLEN = @HAVE_WCSLEN@
+HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@
+HAVE_WCSNCAT = @HAVE_WCSNCAT@
+HAVE_WCSNCMP = @HAVE_WCSNCMP@
+HAVE_WCSNCPY = @HAVE_WCSNCPY@
+HAVE_WCSNLEN = @HAVE_WCSNLEN@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSPBRK = @HAVE_WCSPBRK@
+HAVE_WCSRCHR = @HAVE_WCSRCHR@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCSSPN = @HAVE_WCSSPN@
+HAVE_WCSSTR = @HAVE_WCSSTR@
+HAVE_WCSTOK = @HAVE_WCSTOK@
+HAVE_WCSWIDTH = @HAVE_WCSWIDTH@
+HAVE_WCSXFRM = @HAVE_WCSXFRM@
+HAVE_WCTRANS_T = @HAVE_WCTRANS_T@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WCTYPE_T = @HAVE_WCTYPE_T@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WMEMCHR = @HAVE_WMEMCHR@
+HAVE_WMEMCMP = @HAVE_WMEMCMP@
+HAVE_WMEMCPY = @HAVE_WMEMCPY@
+HAVE_WMEMMOVE = @HAVE_WMEMMOVE@
+HAVE_WMEMSET = @HAVE_WMEMSET@
+HAVE_XLOCALE_H = @HAVE_XLOCALE_H@
+HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
+IGNORE_UNUSED_LIBRARIES_CFLAGS = @IGNORE_UNUSED_LIBRARIES_CFLAGS@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@
+INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMULTITHREAD = @LIBMULTITHREAD@
+LIBOBJS = @LIBOBJS@
+LIBPTH = @LIBPTH@
+LIBPTH_PREFIX = @LIBPTH_PREFIX@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTHREAD = @LIBTHREAD@
+LIBTOOL = @LIBTOOL@
+LIB_BLKID = @LIB_BLKID@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBMULTITHREAD = @LTLIBMULTITHREAD@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBPTH = @LTLIBPTH@
+LTLIBTHREAD = @LTLIBTHREAD@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
+NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@
+NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
+NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@
+NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FCNTL_H = @NEXT_FCNTL_H@
+NEXT_GETOPT_H = @NEXT_GETOPT_H@
+NEXT_INTTYPES_H = @NEXT_INTTYPES_H@
+NEXT_LANGINFO_H = @NEXT_LANGINFO_H@
+NEXT_LOCALE_H = @NEXT_LOCALE_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@
+NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@
+NEXT_TIME_H = @NEXT_TIME_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PARTED_USABLE_TEST_DIR = @PARTED_USABLE_TEST_DIR@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CALLOC = @REPLACE_CALLOC@
+REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP = @REPLACE_DUP@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@
+REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FCNTL = @REPLACE_FCNTL@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FSTAT = @REPLACE_FSTAT@
+REPLACE_FSTATAT = @REPLACE_FSTATAT@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_FUTIMENS = @REPLACE_FUTIMENS@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETDELIM = @REPLACE_GETDELIM@
+REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@
+REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LINK = @REPLACE_LINK@
+REPLACE_LINKAT = @REPLACE_LINKAT@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_LSTAT = @REPLACE_LSTAT@
+REPLACE_MALLOC = @REPLACE_MALLOC@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MBTOWC = @REPLACE_MBTOWC@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKDIR = @REPLACE_MKDIR@
+REPLACE_MKFIFO = @REPLACE_MKFIFO@
+REPLACE_MKNOD = @REPLACE_MKNOD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_MKTIME = @REPLACE_MKTIME@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_OPEN = @REPLACE_OPEN@
+REPLACE_OPENAT = @REPLACE_OPENAT@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PREAD = @REPLACE_PREAD@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
+REPLACE_READ = @REPLACE_READ@
+REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_REALLOC = @REPLACE_REALLOC@
+REPLACE_REALPATH = @REPLACE_REALPATH@
+REPLACE_REMOVE = @REPLACE_REMOVE@
+REPLACE_RENAME = @REPLACE_RENAME@
+REPLACE_RENAMEAT = @REPLACE_RENAMEAT@
+REPLACE_RMDIR = @REPLACE_RMDIR@
+REPLACE_SETENV = @REPLACE_SETENV@
+REPLACE_SETLOCALE = @REPLACE_SETLOCALE@
+REPLACE_SLEEP = @REPLACE_SLEEP@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STAT = @REPLACE_STAT@
+REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRERROR_R = @REPLACE_STRERROR_R@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
+REPLACE_STRNDUP = @REPLACE_STRNDUP@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
+REPLACE_SYMLINK = @REPLACE_SYMLINK@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
+REPLACE_UNLINK = @REPLACE_UNLINK@
+REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
+REPLACE_UNSETENV = @REPLACE_UNSETENV@
+REPLACE_USLEEP = @REPLACE_USLEEP@
+REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCTOMB = @REPLACE_WCTOMB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SELINUX_LIBS = @SELINUX_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
+UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
+UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+YIELD_LIB = @YIELD_LIB@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = amiga ext2 ufs fat ntfs hfs linux_swap xfs jfs reiserfs \
+               nilfs2 # bfs
+
+partedincludedir = -I$(top_srcdir)/include
+noinst_LTLIBRARIES = libfs.la
+libfs_la_LDFLAGS = -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
+                       -release $(LT_RELEASE)
+
+libfs_la_LIBADD = $(UUID_LIBS)         \
+                   $(INTLLIBS)                 \
+                   $(OS_LIBS)                  \
+                   $(REISER_LIBS)              \
+                   amiga/libamigafs.la         \
+                   ext2/libext2.la             \
+                   ufs/libufs.la               \
+                   fat/libfat.la               \
+                   ntfs/libntfs.la             \
+                   hfs/libhfs.la               \
+                   linux_swap/liblinuxswap.la  \
+                   xfs/libxfs.la               \
+                   jfs/libjfs.la               \
+                   reiserfs/libreiserfs.la     \
+                   nilfs2/libnilfs2.la
+
+#                  bfs/libbfs.la
+libfs_la_SOURCES = 
+INCLUDES = $(partedincludedir) $(INTLINCS)
+MAINTAINERCLEANFILES = Makefile.in
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libparted/fs/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu libparted/fs/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+       -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+       @list='$(noinst_LTLIBRARIES)'; \
+       locs=`for p in $$list; do echo $$p; done | \
+             sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+             sort -u`; \
+       test -z "$$locs" || { \
+         echo rm -f $${locs}; \
+         rm -f $${locs}; \
+       }
+libfs.la: $(libfs_la_OBJECTS) $(libfs_la_DEPENDENCIES) $(EXTRA_libfs_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(libfs_la_LINK)  $(libfs_la_OBJECTS) $(libfs_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+       @fail= failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+       @fail= failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       rev=''; for subdir in $$list; do \
+         if test "$$subdir" = "."; then :; else \
+           rev="$$subdir $$rev"; \
+         fi; \
+       done; \
+       rev="$$rev ."; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+ctags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+       done
+cscopelist-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \
+       done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+         empty_fix=.; \
+       else \
+         include_option=--include; \
+         empty_fix=; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test ! -f $$subdir/TAGS || \
+             set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -d "$(distdir)/$$subdir" \
+           || $(MKDIR_P) "$(distdir)/$$subdir" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+           $(am__relativize); \
+           new_distdir=$$reldir; \
+           dir1=$$subdir; dir2="$(top_distdir)"; \
+           $(am__relativize); \
+           new_top_distdir=$$reldir; \
+           echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+           echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+           ($(am__cd) $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$$new_top_distdir" \
+               distdir="$$new_distdir" \
+               am__remove_distdir=: \
+               am__skip_length_check=: \
+               am__skip_mode_fix=: \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(LTLIBRARIES)
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+       mostlyclean-am
+
+distclean: distclean-recursive
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) \
+       cscopelist-recursive ctags-recursive install-am install-strip \
+       tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+       all all-am check check-am clean clean-generic clean-libtool \
+       clean-noinstLTLIBRARIES cscopelist cscopelist-recursive ctags \
+       ctags-recursive distclean distclean-compile distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs installdirs-am maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       tags tags-recursive uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libparted/fs/amiga/Makefile.am b/libparted/fs/amiga/Makefile.am
new file mode 100644 (file)
index 0000000..788ecac
--- /dev/null
@@ -0,0 +1,17 @@
+AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
+partedincludedir      =        -I$(top_srcdir)/include
+
+noinst_LTLIBRARIES    =        libamigafs.la
+libamigafs_la_SOURCES   =      amiga.h         \
+                       amiga.c         \
+                       affs.h          \
+                       affs.c          \
+                       asfs.h          \
+                       asfs.c          \
+                       apfs.h          \
+                       apfs.c          \
+                       interface.c
+
+INCLUDES = $(partedincludedir) $(INTLINCS)
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/libparted/fs/amiga/Makefile.in b/libparted/fs/amiga/Makefile.in
new file mode 100644 (file)
index 0000000..42b208a
--- /dev/null
@@ -0,0 +1,1281 @@
+# Makefile.in generated by automake 1.11a from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in 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.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = libparted/fs/amiga
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+       $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argmatch.m4 \
+       $(top_srcdir)/m4/assert.m4 $(top_srcdir)/m4/btowc.m4 \
+       $(top_srcdir)/m4/calloc.m4 $(top_srcdir)/m4/canonicalize.m4 \
+       $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
+       $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/configmake.m4 \
+       $(top_srcdir)/m4/dirname.m4 \
+       $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+       $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/environ.m4 \
+       $(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
+       $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fclose.m4 \
+       $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/fcntl_h.m4 \
+       $(top_srcdir)/m4/fflush.m4 $(top_srcdir)/m4/fpending.m4 \
+       $(top_srcdir)/m4/fpurge.m4 $(top_srcdir)/m4/freading.m4 \
+       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/fsync.m4 \
+       $(top_srcdir)/m4/ftell.m4 $(top_srcdir)/m4/ftello.m4 \
+       $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
+       $(top_srcdir)/m4/langinfo_h.m4 $(top_srcdir)/m4/lcmessage.m4 \
+       $(top_srcdir)/m4/lib-ignore.m4 $(top_srcdir)/m4/lib-ld.m4 \
+       $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/localcharset.m4 \
+       $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \
+       $(top_srcdir)/m4/locale-tr.m4 $(top_srcdir)/m4/locale-zh.m4 \
+       $(top_srcdir)/m4/locale_h.m4 $(top_srcdir)/m4/localename.m4 \
+       $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/long-options.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
+       $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+       $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
+       $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+       $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbtowc.m4 \
+       $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+       $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/multiarch.m4 \
+       $(top_srcdir)/m4/nl_langinfo.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/nocrash.m4 $(top_srcdir)/m4/o-direct.m4 \
+       $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/priv-set.m4 \
+       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+       $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+       $(top_srcdir)/m4/read.m4 $(top_srcdir)/m4/readlink.m4 \
+       $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/regex.m4 \
+       $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+       $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/setlocale.m4 \
+       $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/ssize_t.m4 \
+       $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdarg.m4 \
+       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strdup.m4 \
+       $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/strerror_r.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+       $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtoll.m4 \
+       $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/symlink.m4 \
+       $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+       $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/thread.m4 \
+       $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/time_h.m4 \
+       $(top_srcdir)/m4/ungetc.m4 $(top_srcdir)/m4/unistd_h.m4 \
+       $(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkdir.m4 \
+       $(top_srcdir)/m4/usleep.m4 $(top_srcdir)/m4/version-etc.m4 \
+       $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \
+       $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
+       $(top_srcdir)/m4/wcrtomb.m4 $(top_srcdir)/m4/wctob.m4 \
+       $(top_srcdir)/m4/wctomb.m4 $(top_srcdir)/m4/wctype_h.m4 \
+       $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+       $(top_srcdir)/m4/xstrndup.m4 $(top_srcdir)/m4/xstrtol.m4 \
+       $(top_srcdir)/m4/yield.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libamigafs_la_LIBADD =
+am_libamigafs_la_OBJECTS = amiga.lo affs.lo asfs.lo apfs.lo \
+       interface.lo
+libamigafs_la_OBJECTS = $(am_libamigafs_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/lib
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+       $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo "  CC      " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+SOURCES = $(libamigafs_la_SOURCES)
+DIST_SOURCES = $(libamigafs_la_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+pkglibexecdir = @pkglibexecdir@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+BUILDINFO = @BUILDINFO@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHECK_CFLAGS = @CHECK_CFLAGS@
+CHECK_LIBS = @CHECK_LIBS@
+CONFIG_INCLUDE = @CONFIG_INCLUDE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DYNAMIC_LOADING = @DYNAMIC_LOADING@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENABLE_DEVICE_MAPPER = @ENABLE_DEVICE_MAPPER@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FACCESSAT = @GNULIB_FACCESSAT@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCHMODAT = @GNULIB_FCHMODAT@
+GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FCNTL = @GNULIB_FCNTL@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FGETC = @GNULIB_FGETC@
+GNULIB_FGETS = @GNULIB_FGETS@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREAD = @GNULIB_FREAD@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSCANF = @GNULIB_FSCANF@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSTATAT = @GNULIB_FSTATAT@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FUTIMENS = @GNULIB_FUTIMENS@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETC = @GNULIB_GETC@
+GNULIB_GETCHAR = @GNULIB_GETCHAR@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETGROUPS = @GNULIB_GETGROUPS@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETS = @GNULIB_GETS@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
+GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_ISWBLANK = @GNULIB_ISWBLANK@
+GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@
+GNULIB_LCHMOD = @GNULIB_LCHMOD@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LINKAT = @GNULIB_LINKAT@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_LSTAT = @GNULIB_LSTAT@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MBTOWC = @GNULIB_MBTOWC@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDIRAT = @GNULIB_MKDIRAT@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKFIFO = @GNULIB_MKFIFO@
+GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@
+GNULIB_MKNOD = @GNULIB_MKNOD@
+GNULIB_MKNODAT = @GNULIB_MKNODAT@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@
+GNULIB_MKTIME = @GNULIB_MKTIME@
+GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@
+GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@
+GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_OPEN = @GNULIB_OPEN@
+GNULIB_OPENAT = @GNULIB_OPENAT@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE = @GNULIB_PIPE@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_PREAD = @GNULIB_PREAD@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READ = @GNULIB_READ@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_READLINKAT = @GNULIB_READLINKAT@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_REALPATH = @GNULIB_REALPATH@
+GNULIB_REMOVE = @GNULIB_REMOVE@
+GNULIB_RENAME = @GNULIB_RENAME@
+GNULIB_RENAMEAT = @GNULIB_RENAMEAT@
+GNULIB_RMDIR = @GNULIB_RMDIR@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SETLOCALE = @GNULIB_SETLOCALE@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STAT = @GNULIB_STAT@
+GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRERROR_R = @GNULIB_STRERROR_R@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRPTIME = @GNULIB_STRPTIME@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_SYMLINK = @GNULIB_SYMLINK@
+GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
+GNULIB_TIMEGM = @GNULIB_TIMEGM@
+GNULIB_TIME_R = @GNULIB_TIME_R@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
+GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
+GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNLINK = @GNULIB_UNLINK@
+GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_USLEEP = @GNULIB_USLEEP@
+GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VFSCANF = @GNULIB_VFSCANF@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSCANF = @GNULIB_VSCANF@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCPCPY = @GNULIB_WCPCPY@
+GNULIB_WCPNCPY = @GNULIB_WCPNCPY@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@
+GNULIB_WCSCAT = @GNULIB_WCSCAT@
+GNULIB_WCSCHR = @GNULIB_WCSCHR@
+GNULIB_WCSCMP = @GNULIB_WCSCMP@
+GNULIB_WCSCOLL = @GNULIB_WCSCOLL@
+GNULIB_WCSCPY = @GNULIB_WCSCPY@
+GNULIB_WCSCSPN = @GNULIB_WCSCSPN@
+GNULIB_WCSDUP = @GNULIB_WCSDUP@
+GNULIB_WCSLEN = @GNULIB_WCSLEN@
+GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@
+GNULIB_WCSNCAT = @GNULIB_WCSNCAT@
+GNULIB_WCSNCMP = @GNULIB_WCSNCMP@
+GNULIB_WCSNCPY = @GNULIB_WCSNCPY@
+GNULIB_WCSNLEN = @GNULIB_WCSNLEN@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSPBRK = @GNULIB_WCSPBRK@
+GNULIB_WCSRCHR = @GNULIB_WCSRCHR@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCSSPN = @GNULIB_WCSSPN@
+GNULIB_WCSSTR = @GNULIB_WCSSTR@
+GNULIB_WCSTOK = @GNULIB_WCSTOK@
+GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@
+GNULIB_WCSXFRM = @GNULIB_WCSXFRM@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCTOMB = @GNULIB_WCTOMB@
+GNULIB_WCTRANS = @GNULIB_WCTRANS@
+GNULIB_WCTYPE = @GNULIB_WCTYPE@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WMEMCHR = @GNULIB_WMEMCHR@
+GNULIB_WMEMCMP = @GNULIB_WMEMCMP@
+GNULIB_WMEMCPY = @GNULIB_WMEMCPY@
+GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@
+GNULIB_WMEMSET = @GNULIB_WMEMSET@
+GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
+HAVE_CHOWN = @HAVE_CHOWN@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@
+HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SETENV = @HAVE_DECL_SETENV@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@
+HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_DUPLOCALE = @HAVE_DUPLOCALE@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
+HAVE_FCHMODAT = @HAVE_FCHMODAT@
+HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
+HAVE_FCNTL = @HAVE_FCNTL@
+HAVE_FEATURES_H = @HAVE_FEATURES_H@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSTATAT = @HAVE_FSTATAT@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_FUTIMENS = @HAVE_FUTIMENS@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETGROUPS = @HAVE_GETGROUPS@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETLOGIN = @HAVE_GETLOGIN@
+HAVE_GETOPT_H = @HAVE_GETOPT_H@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
+HAVE_GRANTPT = @HAVE_GRANTPT@
+HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWBLANK = @HAVE_ISWBLANK@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
+HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
+HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
+HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
+HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
+HAVE_LCHMOD = @HAVE_LCHMOD@
+HAVE_LCHOWN = @HAVE_LCHOWN@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_LSTAT = @HAVE_LSTAT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSLEN = @HAVE_MBSLEN@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMCHR = @HAVE_MEMCHR@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDIRAT = @HAVE_MKDIRAT@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKFIFO = @HAVE_MKFIFO@
+HAVE_MKFIFOAT = @HAVE_MKFIFOAT@
+HAVE_MKNOD = @HAVE_MKNOD@
+HAVE_MKNODAT = @HAVE_MKNODAT@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
+HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
+HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
+HAVE_OPENAT = @HAVE_OPENAT@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PIPE = @HAVE_PIPE@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PWRITE = @HAVE_PWRITE@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_READLINKAT = @HAVE_READLINKAT@
+HAVE_REALPATH = @HAVE_REALPATH@
+HAVE_RENAMEAT = @HAVE_RENAMEAT@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRPTIME = @HAVE_STRPTIME@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYMLINK = @HAVE_SYMLINK@
+HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_TIMEGM = @HAVE_TIMEGM@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_USLEEP = @HAVE_USLEEP@
+HAVE_UTIMENSAT = @HAVE_UTIMENSAT@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCPCPY = @HAVE_WCPCPY@
+HAVE_WCPNCPY = @HAVE_WCPNCPY@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSCASECMP = @HAVE_WCSCASECMP@
+HAVE_WCSCAT = @HAVE_WCSCAT@
+HAVE_WCSCHR = @HAVE_WCSCHR@
+HAVE_WCSCMP = @HAVE_WCSCMP@
+HAVE_WCSCOLL = @HAVE_WCSCOLL@
+HAVE_WCSCPY = @HAVE_WCSCPY@
+HAVE_WCSCSPN = @HAVE_WCSCSPN@
+HAVE_WCSDUP = @HAVE_WCSDUP@
+HAVE_WCSLEN = @HAVE_WCSLEN@
+HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@
+HAVE_WCSNCAT = @HAVE_WCSNCAT@
+HAVE_WCSNCMP = @HAVE_WCSNCMP@
+HAVE_WCSNCPY = @HAVE_WCSNCPY@
+HAVE_WCSNLEN = @HAVE_WCSNLEN@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSPBRK = @HAVE_WCSPBRK@
+HAVE_WCSRCHR = @HAVE_WCSRCHR@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCSSPN = @HAVE_WCSSPN@
+HAVE_WCSSTR = @HAVE_WCSSTR@
+HAVE_WCSTOK = @HAVE_WCSTOK@
+HAVE_WCSWIDTH = @HAVE_WCSWIDTH@
+HAVE_WCSXFRM = @HAVE_WCSXFRM@
+HAVE_WCTRANS_T = @HAVE_WCTRANS_T@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WCTYPE_T = @HAVE_WCTYPE_T@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WMEMCHR = @HAVE_WMEMCHR@
+HAVE_WMEMCMP = @HAVE_WMEMCMP@
+HAVE_WMEMCPY = @HAVE_WMEMCPY@
+HAVE_WMEMMOVE = @HAVE_WMEMMOVE@
+HAVE_WMEMSET = @HAVE_WMEMSET@
+HAVE_XLOCALE_H = @HAVE_XLOCALE_H@
+HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
+IGNORE_UNUSED_LIBRARIES_CFLAGS = @IGNORE_UNUSED_LIBRARIES_CFLAGS@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@
+INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMULTITHREAD = @LIBMULTITHREAD@
+LIBOBJS = @LIBOBJS@
+LIBPTH = @LIBPTH@
+LIBPTH_PREFIX = @LIBPTH_PREFIX@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTHREAD = @LIBTHREAD@
+LIBTOOL = @LIBTOOL@
+LIB_BLKID = @LIB_BLKID@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBMULTITHREAD = @LTLIBMULTITHREAD@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBPTH = @LTLIBPTH@
+LTLIBTHREAD = @LTLIBTHREAD@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
+NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@
+NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
+NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@
+NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FCNTL_H = @NEXT_FCNTL_H@
+NEXT_GETOPT_H = @NEXT_GETOPT_H@
+NEXT_INTTYPES_H = @NEXT_INTTYPES_H@
+NEXT_LANGINFO_H = @NEXT_LANGINFO_H@
+NEXT_LOCALE_H = @NEXT_LOCALE_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@
+NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@
+NEXT_TIME_H = @NEXT_TIME_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PARTED_USABLE_TEST_DIR = @PARTED_USABLE_TEST_DIR@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CALLOC = @REPLACE_CALLOC@
+REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP = @REPLACE_DUP@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@
+REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FCNTL = @REPLACE_FCNTL@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FSTAT = @REPLACE_FSTAT@
+REPLACE_FSTATAT = @REPLACE_FSTATAT@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_FUTIMENS = @REPLACE_FUTIMENS@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETDELIM = @REPLACE_GETDELIM@
+REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@
+REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LINK = @REPLACE_LINK@
+REPLACE_LINKAT = @REPLACE_LINKAT@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_LSTAT = @REPLACE_LSTAT@
+REPLACE_MALLOC = @REPLACE_MALLOC@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MBTOWC = @REPLACE_MBTOWC@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKDIR = @REPLACE_MKDIR@
+REPLACE_MKFIFO = @REPLACE_MKFIFO@
+REPLACE_MKNOD = @REPLACE_MKNOD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_MKTIME = @REPLACE_MKTIME@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_OPEN = @REPLACE_OPEN@
+REPLACE_OPENAT = @REPLACE_OPENAT@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PREAD = @REPLACE_PREAD@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
+REPLACE_READ = @REPLACE_READ@
+REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_REALLOC = @REPLACE_REALLOC@
+REPLACE_REALPATH = @REPLACE_REALPATH@
+REPLACE_REMOVE = @REPLACE_REMOVE@
+REPLACE_RENAME = @REPLACE_RENAME@
+REPLACE_RENAMEAT = @REPLACE_RENAMEAT@
+REPLACE_RMDIR = @REPLACE_RMDIR@
+REPLACE_SETENV = @REPLACE_SETENV@
+REPLACE_SETLOCALE = @REPLACE_SETLOCALE@
+REPLACE_SLEEP = @REPLACE_SLEEP@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STAT = @REPLACE_STAT@
+REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRERROR_R = @REPLACE_STRERROR_R@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
+REPLACE_STRNDUP = @REPLACE_STRNDUP@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
+REPLACE_SYMLINK = @REPLACE_SYMLINK@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
+REPLACE_UNLINK = @REPLACE_UNLINK@
+REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
+REPLACE_UNSETENV = @REPLACE_UNSETENV@
+REPLACE_USLEEP = @REPLACE_USLEEP@
+REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCTOMB = @REPLACE_WCTOMB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SELINUX_LIBS = @SELINUX_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
+UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
+UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+YIELD_LIB = @YIELD_LIB@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
+partedincludedir = -I$(top_srcdir)/include
+noinst_LTLIBRARIES = libamigafs.la
+libamigafs_la_SOURCES = amiga.h                \
+                       amiga.c         \
+                       affs.h          \
+                       affs.c          \
+                       asfs.h          \
+                       asfs.c          \
+                       apfs.h          \
+                       apfs.c          \
+                       interface.c
+
+INCLUDES = $(partedincludedir) $(INTLINCS)
+MAINTAINERCLEANFILES = Makefile.in
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libparted/fs/amiga/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu libparted/fs/amiga/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+       -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+       @list='$(noinst_LTLIBRARIES)'; \
+       locs=`for p in $$list; do echo $$p; done | \
+             sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+             sort -u`; \
+       test -z "$$locs" || { \
+         echo rm -f $${locs}; \
+         rm -f $${locs}; \
+       }
+libamigafs.la: $(libamigafs_la_OBJECTS) $(libamigafs_la_DEPENDENCIES) $(EXTRA_libamigafs_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK)  $(libamigafs_la_OBJECTS) $(libamigafs_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/affs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amiga.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/apfs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asfs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interface.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+       mostlyclean-am
+
+distclean: distclean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+       clean-libtool clean-noinstLTLIBRARIES cscopelist ctags \
+       distclean distclean-compile distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       tags uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libparted/fs/amiga/affs.c b/libparted/fs/amiga/affs.c
new file mode 100644 (file)
index 0000000..4f3a605
--- /dev/null
@@ -0,0 +1,312 @@
+/*
+    affs.c -- parted support for affs file systems
+    Copyright (C) 1998-2000, 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#include <config.h>
+
+#include <parted/parted.h>
+#include <parted/debug.h>
+#include <parted/endian.h>
+
+#include "amiga.h"
+#include "affs.h"
+
+#if ENABLE_NLS
+#  include <libintl.h>
+#  define _(String) dgettext (PACKAGE, String)
+#else
+#  define _(String) (String)
+#endif /* ENABLE_NLS */
+
+static int
+_affs_probe_root (uint32_t *block, int blocksize) {
+       int i;
+       uint32_t sum;
+
+       if (PED_BE32_TO_CPU (block[0]) != 2) return 0;
+       if (PED_BE32_TO_CPU (block[128*blocksize-1]) != 1) return 0;
+       for (i = 0, sum = 0; i < 128*blocksize; i++)
+               sum += PED_BE32_TO_CPU (block[i]);
+       if (sum) return 0;
+       return 1;
+}
+
+static PedGeometry*
+_generic_affs_probe (PedGeometry* geom, uint32_t kind)
+{
+       uint32_t *block;
+       PedSector root, len, pos;
+       struct PartitionBlock * part;
+       int blocksize = 1, reserved = 2, prealloc = 0;
+
+       PED_ASSERT (geom != NULL);
+       PED_ASSERT (geom->dev != NULL);
+
+       /* Finds the blocksize, prealloc and reserved values of the partition block */
+       if (!(part = ped_malloc (PED_SECTOR_SIZE_DEFAULT*blocksize))) {
+               ped_exception_throw(PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                       _("%s : Failed to allocate partition block\n"), __func__);
+               goto error_part;
+       }
+       if (amiga_find_part(geom, part) != NULL) {
+               prealloc = PED_BE32_TO_CPU (part->de_PreAlloc);
+               reserved = PED_BE32_TO_CPU (part->de_Reserved);
+               reserved = reserved == 0 ? 1 : reserved;
+               blocksize = PED_BE32_TO_CPU (part->de_SizeBlock)
+                       * PED_BE32_TO_CPU (part->de_SectorPerBlock) / 128;
+       }
+       free (part);
+
+       /* Test boot block */
+       if (!(block = ped_malloc (PED_SECTOR_SIZE_DEFAULT*blocksize))) {
+               ped_exception_throw(PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                       _("%s : Failed to allocate block\n"), __func__);
+               goto error_block;
+       }
+       if (!ped_device_read (geom->dev, block, geom->start, blocksize)) {
+               ped_exception_throw(PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                       _("%s : Couldn't read boot block %llu\n"), __func__, geom->start);
+               goto error;
+       }
+       if (PED_BE32_TO_CPU (block[0]) != kind) {
+               goto error;
+       }
+
+       /* Find and test the root block */
+       len = geom->length / blocksize - reserved;
+       pos = (len - 1) / 2;
+       root = geom->start + (pos + reserved) * blocksize;
+       printf ("Pralloc = %d, Reserved = %d, blocksize = %d, root block at %llu\n",
+               prealloc, reserved, blocksize, root);
+
+       if (!ped_device_read (geom->dev, block, root, blocksize)) {
+               ped_exception_throw(PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                       _("%s : Couldn't read root block %llu\n"), __func__, root);
+               goto error;
+       }
+       if (_affs_probe_root(block, blocksize) == 1) {
+               free (block);
+               return ped_geometry_duplicate (geom);
+       }
+
+error:
+       free (block);
+error_block:
+error_part:
+       return NULL;
+}
+static PedGeometry*
+_affs0_probe (PedGeometry* geom) {
+       return _generic_affs_probe (geom, 0x444f5300);
+}
+static PedGeometry*
+_affs1_probe (PedGeometry* geom) {
+       return _generic_affs_probe (geom, 0x444f5301);
+}
+static PedGeometry*
+_affs2_probe (PedGeometry* geom) {
+       return _generic_affs_probe (geom, 0x444f5302);
+}
+static PedGeometry*
+_affs3_probe (PedGeometry* geom) {
+       return _generic_affs_probe (geom, 0x444f5303);
+}
+static PedGeometry*
+_affs4_probe (PedGeometry* geom) {
+       return _generic_affs_probe (geom, 0x444f5304);
+}
+static PedGeometry*
+_affs5_probe (PedGeometry* geom) {
+       return _generic_affs_probe (geom, 0x444f5305);
+}
+static PedGeometry*
+_affs6_probe (PedGeometry* geom) {
+       return _generic_affs_probe (geom, 0x444f5306);
+}
+static PedGeometry*
+_affs7_probe (PedGeometry* geom) {
+       return _generic_affs_probe (geom, 0x444f5307);
+}
+static PedGeometry*
+_amufs_probe (PedGeometry* geom) {
+       return _generic_affs_probe (geom, 0x6d754653);
+}
+static PedGeometry*
+_amufs0_probe (PedGeometry* geom) {
+       return _generic_affs_probe (geom, 0x6d754600);
+}
+static PedGeometry*
+_amufs1_probe (PedGeometry* geom) {
+       return _generic_affs_probe (geom, 0x6d754601);
+}
+static PedGeometry*
+_amufs2_probe (PedGeometry* geom) {
+       return _generic_affs_probe (geom, 0x6d754602);
+}
+static PedGeometry*
+_amufs3_probe (PedGeometry* geom) {
+       return _generic_affs_probe (geom, 0x6d754603);
+}
+static PedGeometry*
+_amufs4_probe (PedGeometry* geom) {
+       return _generic_affs_probe (geom, 0x6d754604);
+}
+static PedGeometry*
+_amufs5_probe (PedGeometry* geom) {
+       return _generic_affs_probe (geom, 0x6d754605);
+}
+
+static PedFileSystemOps _affs0_ops = {
+       probe:          _affs0_probe,
+};
+static PedFileSystemOps _affs1_ops = {
+       probe:          _affs1_probe,
+};
+static PedFileSystemOps _affs2_ops = {
+       probe:          _affs2_probe,
+};
+static PedFileSystemOps _affs3_ops = {
+       probe:          _affs3_probe,
+};
+static PedFileSystemOps _affs4_ops = {
+       probe:          _affs4_probe,
+};
+static PedFileSystemOps _affs5_ops = {
+       probe:          _affs5_probe,
+};
+static PedFileSystemOps _affs6_ops = {
+       probe:          _affs6_probe,
+};
+static PedFileSystemOps _affs7_ops = {
+       probe:          _affs7_probe,
+};
+static PedFileSystemOps _amufs_ops = {
+       probe:          _amufs_probe,
+};
+static PedFileSystemOps _amufs0_ops = {
+       probe:          _amufs0_probe,
+};
+static PedFileSystemOps _amufs1_ops = {
+       probe:          _amufs1_probe,
+};
+static PedFileSystemOps _amufs2_ops = {
+       probe:          _amufs2_probe,
+};
+static PedFileSystemOps _amufs3_ops = {
+       probe:          _amufs3_probe,
+};
+static PedFileSystemOps _amufs4_ops = {
+       probe:          _amufs4_probe,
+};
+static PedFileSystemOps _amufs5_ops = {
+       probe:          _amufs5_probe,
+};
+
+#define AFFS_BLOCK_SIZES        ((int[5]){512, 1024, 2048, 4096, 0})
+#define AMUFS_BLOCK_SIZES       ((int[2]){512, 0})
+
+
+PedFileSystemType _affs0_type = {
+       next:            NULL,
+       ops:             &_affs0_ops,
+       name:            "affs0",
+       block_sizes:      AFFS_BLOCK_SIZES
+};
+PedFileSystemType _affs1_type = {
+       next:            NULL,
+       ops:             &_affs1_ops,
+       name:            "affs1",
+       block_sizes:      AFFS_BLOCK_SIZES
+};
+PedFileSystemType _affs2_type = {
+       next:            NULL,
+       ops:             &_affs2_ops,
+       name:            "affs2",
+       block_sizes:      AFFS_BLOCK_SIZES
+};
+PedFileSystemType _affs3_type = {
+       next:            NULL,
+       ops:             &_affs3_ops,
+       name:            "affs3",
+       block_sizes:      AFFS_BLOCK_SIZES
+};
+PedFileSystemType _affs4_type = {
+       next:            NULL,
+       ops:             &_affs4_ops,
+       name:            "affs4",
+       block_sizes:      AFFS_BLOCK_SIZES
+};
+PedFileSystemType _affs5_type = {
+       next:            NULL,
+       ops:             &_affs5_ops,
+       name:            "affs5",
+       block_sizes:      AFFS_BLOCK_SIZES
+};
+PedFileSystemType _affs6_type = {
+       next:            NULL,
+       ops:             &_affs6_ops,
+       name:            "affs6",
+       block_sizes:      AFFS_BLOCK_SIZES
+};
+PedFileSystemType _affs7_type = {
+       next:            NULL,
+       ops:             &_affs7_ops,
+       name:            "affs7",
+       block_sizes:      AFFS_BLOCK_SIZES
+};
+PedFileSystemType _amufs_type = {
+       next:            NULL,
+       ops:             &_amufs_ops,
+       name:            "amufs",
+       block_sizes:      AMUFS_BLOCK_SIZES
+};
+PedFileSystemType _amufs0_type = {
+       next:            NULL,
+       ops:             &_amufs0_ops,
+       name:            "amufs0",
+       block_sizes:      AMUFS_BLOCK_SIZES
+};
+PedFileSystemType _amufs1_type = {
+       next:            NULL,
+       ops:             &_amufs1_ops,
+       name:            "amufs1",
+       block_sizes:      AMUFS_BLOCK_SIZES
+};
+PedFileSystemType _amufs2_type = {
+       next:            NULL,
+       ops:             &_amufs2_ops,
+       name:            "amufs2",
+       block_sizes:      AMUFS_BLOCK_SIZES
+};
+PedFileSystemType _amufs3_type = {
+       next:            NULL,
+       ops:             &_amufs3_ops,
+       name:            "amufs3",
+       block_sizes:      AMUFS_BLOCK_SIZES
+};
+PedFileSystemType _amufs4_type = {
+       next:            NULL,
+       ops:             &_amufs4_ops,
+       name:            "amufs4",
+       block_sizes:      AMUFS_BLOCK_SIZES
+};
+PedFileSystemType _amufs5_type = {
+       next:            NULL,
+       ops:             &_amufs5_ops,
+       name:            "amufs5",
+       block_sizes:      AMUFS_BLOCK_SIZES
+};
diff --git a/libparted/fs/amiga/affs.h b/libparted/fs/amiga/affs.h
new file mode 100644 (file)
index 0000000..347e33d
--- /dev/null
@@ -0,0 +1,18 @@
+
+/*
+    affs.h -- parted suppoer for affs filesystems header files
+    Copyright (C) 1998-2000, 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
diff --git a/libparted/fs/amiga/amiga.c b/libparted/fs/amiga/amiga.c
new file mode 100644 (file)
index 0000000..7052bfc
--- /dev/null
@@ -0,0 +1,349 @@
+/*
+    libparted/fs_amiga - amiga file system support.
+    Copyright (C) 2000-2001, 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+    Contributor:  Sven Luther <luther@debian.org>
+*/
+
+#include <config.h>
+#include <parted/parted.h>
+#include <parted/debug.h>
+#include <parted/endian.h>
+
+#include "amiga.h"
+
+#if ENABLE_NLS
+#  include <libintl.h>
+#  define _(String) dgettext (PACKAGE, String)
+#else
+#  define _(String) (String)
+#endif /* ENABLE_NLS */
+
+#define        IDNAME_RIGIDDISK        (uint32_t)0x5244534B    /* 'RDSK' */
+#define IDNAME_BADBLOCK                (uint32_t)0x42414442    /* 'BADB' */
+#define        IDNAME_PARTITION        (uint32_t)0x50415254    /* 'PART' */
+#define IDNAME_FILESYSHEADER   (uint32_t)0x46534844    /* 'FSHD' */
+#define IDNAME_LOADSEG         (uint32_t)0x4C534547    /* 'LSEG' */
+#define IDNAME_BOOT            (uint32_t)0x424f4f54    /* 'BOOT' */
+#define IDNAME_FREE            (uint32_t)0xffffffff
+
+static const char *
+_amiga_block_id (uint32_t id) {
+       switch (id) {
+               case IDNAME_RIGIDDISK :
+                       return "RDSK";
+               case IDNAME_BADBLOCK :
+                       return "BADB";
+               case IDNAME_PARTITION :
+                       return "PART";
+               case IDNAME_FILESYSHEADER :
+                       return "FSHD";
+               case IDNAME_LOADSEG :
+                       return "LSEG";
+               case IDNAME_BOOT :
+                       return "BOOT";
+               case IDNAME_FREE :
+                       return "<free>";
+               default :
+                       return "<unknown>";
+       }
+}
+
+struct AmigaIds *
+_amiga_add_id (uint32_t id, struct AmigaIds *ids) {
+       struct AmigaIds *newid;
+
+       if ((newid=ped_malloc(sizeof (struct AmigaIds)))==NULL) {
+               ped_exception_throw(PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                       _("%s : Failed to allocate id list element\n"), __func__);
+               return 0;
+       }
+       newid->ID = id;
+       newid->next = ids;
+       return newid;
+}
+
+void
+_amiga_free_ids (struct AmigaIds *ids) {
+       struct AmigaIds *current, *next;
+
+       for (current = ids; current != NULL; current = next) {
+               next = current->next;
+               free (current);
+       }
+}
+int
+_amiga_id_in_list (uint32_t id, struct AmigaIds *ids) {
+       struct AmigaIds *current;
+
+       for (current = ids; current != NULL; current = current->next) {
+               if (id == current->ID)
+                       return 1;
+       }
+       return 0;
+}
+
+#define AMIGA_RDB_NOT_FOUND    ((uint32_t)0xffffffff)
+
+struct AmigaBlock {
+    uint32_t   amiga_ID;               /* Identifier 32 bit word */
+    uint32_t   amiga_SummedLongss;     /* Size of the structure for checksums */
+    int32_t    amiga_ChkSum;           /* Checksum of the structure */
+};
+#define AMIGA(pos) ((struct AmigaBlock *)(pos))
+
+struct RigidDiskBlock {
+    uint32_t   rdb_ID;                 /* Identifier 32 bit word : 'RDSK' */
+    uint32_t   rdb_SummedLongs;        /* Size of the structure for checksums */
+    int32_t    rdb_ChkSum;             /* Checksum of the structure */
+    uint32_t   rdb_HostID;             /* SCSI Target ID of host, not really used */
+    uint32_t   rdb_BlockBytes;         /* Size of disk blocks */
+    uint32_t   rdb_Flags;              /* RDB Flags */
+    /* block list heads */
+    uint32_t   rdb_BadBlockList;       /* Bad block list */
+    uint32_t   rdb_PartitionList;      /* Partition list */
+    uint32_t   rdb_FileSysHeaderList;  /* File system header list */
+    uint32_t   rdb_DriveInit;          /* Drive specific init code */
+    uint32_t   rdb_BootBlockList;      /* Amiga OS 4 Boot Blocks */
+    uint32_t   rdb_Reserved1[5];       /* Unused word, need to be set to $ffffffff */
+    /* physical drive characteristics */
+    uint32_t   rdb_Cylinders;          /* Number of the cylinders of the drive */
+    uint32_t   rdb_Sectors;            /* Number of sectors of the drive */
+    uint32_t   rdb_Heads;              /* Number of heads of the drive */
+    uint32_t   rdb_Interleave;         /* Interleave */
+    uint32_t   rdb_Park;               /* Head parking cylinder */
+    uint32_t   rdb_Reserved2[3];       /* Unused word, need to be set to $ffffffff */
+    uint32_t   rdb_WritePreComp;       /* Starting cylinder of write precompensation */
+    uint32_t   rdb_ReducedWrite;       /* Starting cylinder of reduced write current */
+    uint32_t   rdb_StepRate;           /* Step rate of the drive */
+    uint32_t   rdb_Reserved3[5];       /* Unused word, need to be set to $ffffffff */
+    /* logical drive characteristics */
+    uint32_t   rdb_RDBBlocksLo;        /* low block of range reserved for hardblocks */
+    uint32_t   rdb_RDBBlocksHi;        /* high block of range for these hardblocks */
+    uint32_t   rdb_LoCylinder;         /* low cylinder of partitionable disk area */
+    uint32_t   rdb_HiCylinder;         /* high cylinder of partitionable data area */
+    uint32_t   rdb_CylBlocks;          /* number of blocks available per cylinder */
+    uint32_t   rdb_AutoParkSeconds;    /* zero for no auto park */
+    uint32_t   rdb_HighRDSKBlock;      /* highest block used by RDSK */
+                                       /* (not including replacement bad blocks) */
+    uint32_t   rdb_Reserved4;
+    /* drive identification */
+    char       rdb_DiskVendor[8];
+    char       rdb_DiskProduct[16];
+    char       rdb_DiskRevision[4];
+    char       rdb_ControllerVendor[8];
+    char       rdb_ControllerProduct[16];
+    char       rdb_ControllerRevision[4];
+    uint32_t   rdb_Reserved5[10];
+};
+
+#define AMIGA_MAX_PARTITIONS   128
+#define        RDB_LOCATION_LIMIT      16
+#define RDSK(pos) ((struct RigidDiskBlock *)(pos))
+
+static int
+_amiga_checksum (struct AmigaBlock *blk) {
+       uint32_t *rdb = (uint32_t *) blk;
+       uint32_t sum;
+       int i, end;
+
+       sum = PED_BE32_TO_CPU (rdb[0]);
+       end = PED_BE32_TO_CPU (rdb[1]);
+
+       if (end > PED_SECTOR_SIZE_DEFAULT) end = PED_SECTOR_SIZE_DEFAULT;
+
+       for (i = 1; i < end; i++) sum += PED_BE32_TO_CPU (rdb[i]);
+
+       return sum;
+}
+
+static void
+_amiga_calculate_checksum (struct AmigaBlock *blk) {
+
+       blk->amiga_ChkSum = PED_CPU_TO_BE32(
+               PED_BE32_TO_CPU(blk->amiga_ChkSum) -
+               _amiga_checksum((struct AmigaBlock *) blk));
+       return;
+}
+
+
+static struct AmigaBlock *
+_amiga_read_block (PedDevice *dev, struct AmigaBlock *blk, PedSector block, struct AmigaIds *ids) {
+       if (!ped_device_read (dev, blk, block, 1)) {
+               switch (ped_exception_throw(PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_CANCEL,
+                       _("%s : Couldn't read block %llu\n"), __func__, block))
+               {
+                       case PED_EXCEPTION_CANCEL :
+                       case PED_EXCEPTION_UNHANDLED :
+                       default :
+                               return NULL;
+               }
+       }
+       if (ids && !_amiga_id_in_list(PED_BE32_TO_CPU(blk->amiga_ID), ids))
+               return NULL;
+       if (_amiga_checksum (blk) != 0) {
+               switch (ped_exception_throw(PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_FIX | PED_EXCEPTION_IGNORE | PED_EXCEPTION_CANCEL,
+                       _("%s : Bad checksum on block %llu of type %s\n"),
+                       __func__, block, _amiga_block_id(PED_BE32_TO_CPU(blk->amiga_ID))))
+               {
+                       case PED_EXCEPTION_CANCEL :
+                               return NULL;
+                       case PED_EXCEPTION_FIX :
+                               _amiga_calculate_checksum(AMIGA(blk));
+                               if (!ped_device_write (dev, blk, block, 1)) {
+                                       switch (ped_exception_throw(PED_EXCEPTION_FATAL,
+                                               PED_EXCEPTION_CANCEL,
+                                               _("%s : Couldn't write block %d\n"), __func__, block))
+                                       {
+                                               case PED_EXCEPTION_CANCEL :
+                                               case PED_EXCEPTION_UNHANDLED :
+                                               default :
+                                                       return NULL;
+                                       }
+                               }
+                       case PED_EXCEPTION_IGNORE :
+                       case PED_EXCEPTION_UNHANDLED :
+                       default :
+                               return blk;
+               }
+       }
+       return blk;
+}
+
+static uint32_t
+_amiga_find_rdb (PedDevice *dev, struct RigidDiskBlock *rdb) {
+       int i;
+       struct AmigaIds *ids;
+
+       ids = _amiga_add_id (IDNAME_RIGIDDISK, NULL);
+
+       for (i = 0; i<RDB_LOCATION_LIMIT; i++) {
+               if (!_amiga_read_block (dev, AMIGA(rdb), i, ids)) {
+                       continue;
+               }
+               if (PED_BE32_TO_CPU (rdb->rdb_ID) == IDNAME_RIGIDDISK) {
+                       _amiga_free_ids (ids);
+                       return i;
+               }
+       }
+       _amiga_free_ids (ids);
+       return AMIGA_RDB_NOT_FOUND;
+}
+
+static int
+_amiga_loop_check (uint32_t block, uint32_t * blocklist, uint32_t max)
+{
+       uint32_t i;
+
+       for (i = 0; i < max; i++)
+               if (block == blocklist[i]) {
+                       /* We are looping, let's stop.  */
+                       return 1;
+               }
+       blocklist[max] = block;
+       return 0;
+}
+
+/* We have already allocated a rdb, we are now reading it from the disk */
+struct PartitionBlock *
+amiga_find_part (PedGeometry *geom, struct PartitionBlock *part)
+{
+       struct RigidDiskBlock *rdb;
+       uint32_t partblock;
+       uint32_t partlist[AMIGA_MAX_PARTITIONS];
+       int i;
+
+       PED_ASSERT(geom!= NULL);
+       PED_ASSERT(geom->dev!= NULL);
+
+       if (!(rdb = ped_malloc (PED_SECTOR_SIZE_DEFAULT))) {
+               switch (ped_exception_throw(PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_CANCEL,
+                       _("%s : Failed to allocate disk_specific rdb block\n"), __func__))
+               {
+                       case PED_EXCEPTION_CANCEL :
+                       case PED_EXCEPTION_UNHANDLED :
+                       default :
+                               return NULL;
+               }
+       }
+       if (_amiga_find_rdb (geom->dev, rdb) == AMIGA_RDB_NOT_FOUND) {
+               switch (ped_exception_throw(PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_CANCEL,
+                       _("%s : Didn't find rdb block, should never happen\n"), __func__))
+               {
+                       case PED_EXCEPTION_CANCEL :
+                       case PED_EXCEPTION_UNHANDLED :
+                       default :
+                               free(rdb);
+                               return NULL;
+               }
+       }
+
+       /* We initialize the hardblock free list to detect loops */
+       for (i = 0; i < AMIGA_MAX_PARTITIONS; i++) partlist[i] = IDNAME_FREE;
+
+       for (i = 1, partblock = PED_BE32_TO_CPU(rdb->rdb_PartitionList);
+               i < AMIGA_MAX_PARTITIONS && partblock != IDNAME_FREE;
+               i++, partblock = PED_BE32_TO_CPU(part->pb_Next))
+       {
+               PedSector start, end;
+               PedSector cylblocks;
+
+               /* Let's look for loops in the partition table */
+               if (_amiga_loop_check(partblock, partlist, i)) {
+                       free (rdb);
+                       return NULL;
+               }
+               /* Let's read a partition block to get its geometry*/
+               if (!ped_device_read (geom->dev, part, (PedSector)partblock, 1)) {
+                       switch (ped_exception_throw(PED_EXCEPTION_ERROR,
+                               PED_EXCEPTION_CANCEL,
+                               _("%s : Failed to read partition block %llu\n"),
+                               __func__, (PedSector)partblock))
+                       {
+                               case PED_EXCEPTION_CANCEL :
+                               case PED_EXCEPTION_UNHANDLED :
+                               default :
+                                       free(rdb);
+                                       return NULL;
+                       }
+               }
+
+               /* Current block is not a Partition Block */
+               if (part->pb_ID != IDNAME_PARTITION) {
+                       free (rdb);
+                       return NULL;
+               }
+
+               /* Calculate the geometry of the partition */
+               cylblocks = ((PedSector) PED_BE32_TO_CPU (part->de_Surfaces)) *
+                       ((PedSector) PED_BE32_TO_CPU (part->de_BlocksPerTrack));
+               start = ((PedSector) PED_BE32_TO_CPU (part->de_LowCyl)) * cylblocks;
+               end = ((((PedSector) PED_BE32_TO_CPU (part->de_HighCyl))+1) * (cylblocks))-1;
+
+               /* And check if it is the one we are searching for */
+               if (start == geom->start && end == geom->end) {
+                       free (rdb);
+                       return part;
+               }
+       }
+
+       free (rdb);
+       return NULL;
+}
diff --git a/libparted/fs/amiga/amiga.h b/libparted/fs/amiga/amiga.h
new file mode 100644 (file)
index 0000000..3756020
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+    util.h -- amiga partition table headers.
+    Copyright (C) 1998-2000, 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+struct PartitionBlock {
+    uint32_t   pb_ID;                  /* Identifier 32 bit word : 'PART' */
+    uint32_t   pb_SummedLongs;         /* Size of the structure for checksums */
+    int32_t    pb_ChkSum;              /* Checksum of the structure */
+    uint32_t   pb_HostID;              /* SCSI Target ID of host, not really used */
+    uint32_t   pb_Next;                /* Block number of the next PartitionBlock */
+    uint32_t   pb_Flags;               /* Part Flags (NOMOUNT and BOOTABLE) */
+    uint32_t   pb_Reserved1[2];
+    uint32_t   pb_DevFlags;            /* Preferred flags for OpenDevice */
+    uint8_t    pb_DriveName[32];       /* Preferred DOS device name: BSTR form */
+    uint32_t   pb_Reserved2[15];
+    uint32_t   de_TableSize;           /* Size of Environment vector */
+    uint32_t   de_SizeBlock;           /* Size of the blocks in 32 bit words, usually 128 */
+    uint32_t   de_SecOrg;              /* Not used; must be 0 */
+    uint32_t   de_Surfaces;            /* Number of heads (surfaces) */
+    uint32_t   de_SectorPerBlock;      /* Disk sectors per block, used with SizeBlock, usually 1 */
+    uint32_t   de_BlocksPerTrack;      /* Blocks per track. drive specific */
+    uint32_t   de_Reserved;            /* DOS reserved blocks at start of partition. */
+    uint32_t   de_PreAlloc;            /* DOS reserved blocks at end of partition */
+    uint32_t   de_Interleave;          /* Not used, usually 0 */
+    uint32_t   de_LowCyl;              /* First cylinder of the partition */
+    uint32_t   de_HighCyl;             /* Last cylinder of the partition */
+    uint32_t   de_NumBuffers;          /* Initial # DOS of buffers.  */
+    uint32_t   de_BufMemType;          /* Type of mem to allocate for buffers */
+    uint32_t   de_MaxTransfer;         /* Max number of bytes to transfer at a time */
+    uint32_t   de_Mask;                /* Address Mask to block out certain memory */
+    int32_t    de_BootPri;             /* Boot priority for autoboot */
+    uint32_t   de_DosType;             /* Dostype of the file system */
+    uint32_t   de_Baud;                /* Baud rate for serial handler */
+    uint32_t   de_Control;             /* Control word for handler/filesystem */
+    uint32_t   de_BootBlocks;          /* Number of blocks containing boot code */
+    uint32_t   pb_EReserved[12];
+};
+
+#define PART(pos) ((struct PartitionBlock *)(pos))
+
+#define        PBFB_BOOTABLE   0       /* this partition is intended to be bootable */
+#define        PBFF_BOOTABLE   1L      /*   (expected directories and files exist) */
+#define        PBFB_NOMOUNT    1       /* do not mount this partition (e.g. manually */
+#define        PBFF_NOMOUNT    2L      /*   mounted, but space reserved here) */
+
+struct PartitionBlock * amiga_find_part (PedGeometry *geom, struct PartitionBlock *part);
+
+struct AmigaIds {
+       uint32_t ID;
+       struct AmigaIds *next;
+};
+
+struct AmigaIds * _amiga_add_id (uint32_t id, struct AmigaIds *ids);
+void _amiga_free_ids (struct AmigaIds *ids);
+int _amiga_id_in_list (uint32_t id, struct AmigaIds *ids);
diff --git a/libparted/fs/amiga/apfs.c b/libparted/fs/amiga/apfs.c
new file mode 100644 (file)
index 0000000..955d213
--- /dev/null
@@ -0,0 +1,129 @@
+/*
+    apfs.c -- parted support for apfs file systems
+    Copyright (C) 1998-2000, 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#include <config.h>
+
+#include <parted/parted.h>
+#include <parted/debug.h>
+#include <parted/endian.h>
+
+#include "amiga.h"
+#include "apfs.h"
+
+#if ENABLE_NLS
+#  include <libintl.h>
+#  define _(String) dgettext (PACKAGE, String)
+#else
+#  define _(String) (String)
+#endif /* ENABLE_NLS */
+
+static int
+_apfs_probe_root (uint32_t *block, uint32_t blocksize, uint32_t kind) {
+       if (PED_BE32_TO_CPU (block[0]) != kind) return 0;
+       return 1;
+}
+
+static PedGeometry*
+_generic_apfs_probe (PedGeometry* geom, uint32_t kind)
+{
+       uint32_t *block;
+       PedSector root;
+       struct PartitionBlock * part;
+       uint32_t blocksize = 1, reserved = 2;
+
+       PED_ASSERT (geom != NULL);
+       PED_ASSERT (geom->dev != NULL);
+
+       /* Finds the blocksize and reserved values of the partition block */
+       if (!(part = ped_malloc (PED_SECTOR_SIZE_DEFAULT*blocksize))) {
+               ped_exception_throw(PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                       _("%s : Failed to allocate partition block\n"), __func__);
+               goto error_part;
+       }
+       if (amiga_find_part(geom, part) != NULL) {
+               reserved = PED_BE32_TO_CPU (part->de_Reserved);
+               blocksize = PED_BE32_TO_CPU (part->de_SizeBlock)
+                       * PED_BE32_TO_CPU (part->de_SectorPerBlock) / 128;
+       }
+       free (part);
+
+       /* Test boot block */
+       if (!(block = ped_malloc (PED_SECTOR_SIZE_DEFAULT*blocksize))) {
+               ped_exception_throw(PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                       _("%s : Failed to allocate block\n"), __func__);
+               goto error_block;
+       }
+       if (!ped_device_read (geom->dev, block, geom->start, blocksize)) {
+               ped_exception_throw(PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                       _("%s : Couldn't read boot block %llu\n"), __func__, geom->start);
+               goto error;
+       }
+       if (PED_BE32_TO_CPU (block[0]) != kind) {
+               goto error;
+       }
+
+       /* Find and test the root block */
+       root = geom->start+reserved*blocksize;
+       if (!ped_device_read (geom->dev, block, root, blocksize)) {
+               ped_exception_throw(PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                       _("%s : Couldn't read root block %llu\n"), __func__, root);
+               goto error;
+       }
+       if (_apfs_probe_root(block, blocksize, kind) == 1) {
+               free(block);
+               return ped_geometry_duplicate (geom);
+       }
+
+error:
+       free (block);
+error_block:
+error_part:
+       return NULL;
+}
+
+static PedGeometry*
+_apfs1_probe (PedGeometry* geom) {
+       return _generic_apfs_probe (geom, 0x50463101);
+}
+
+static PedGeometry*
+_apfs2_probe (PedGeometry* geom) {
+       return _generic_apfs_probe (geom, 0x50463102);
+}
+
+static PedFileSystemOps _apfs1_ops = {
+       probe:          _apfs1_probe,
+};
+static PedFileSystemOps _apfs2_ops = {
+       probe:          _apfs2_probe,
+};
+
+#define APFS_BLOCK_SIZES ((int[2]){512, 0})
+
+PedFileSystemType _apfs1_type = {
+       next:            NULL,
+       ops:             &_apfs1_ops,
+       name:            "apfs1",
+       block_sizes:      APFS_BLOCK_SIZES
+};
+PedFileSystemType _apfs2_type = {
+       next:            NULL,
+       ops:             &_apfs2_ops,
+       name:            "apfs2",
+       block_sizes:      APFS_BLOCK_SIZES
+};
diff --git a/libparted/fs/amiga/apfs.h b/libparted/fs/amiga/apfs.h
new file mode 100644 (file)
index 0000000..c22da02
--- /dev/null
@@ -0,0 +1,17 @@
+/*
+    apfs.h -- parted support for apfs file systems header files
+    Copyright (C) 1998-2000, 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
diff --git a/libparted/fs/amiga/asfs.c b/libparted/fs/amiga/asfs.c
new file mode 100644 (file)
index 0000000..7890b2b
--- /dev/null
@@ -0,0 +1,128 @@
+/*
+    asfs.c -- parted asfs filesystem support
+    Copyright (C) 1998-2000, 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#include <config.h>
+
+#include <parted/parted.h>
+#include <parted/debug.h>
+#include <parted/endian.h>
+
+#include "amiga.h"
+#include "asfs.h"
+
+#if ENABLE_NLS
+#  include <libintl.h>
+#  define _(String) dgettext (PACKAGE, String)
+#else
+#  define _(String) (String)
+#endif /* ENABLE_NLS */
+
+static int
+_asfs_probe_root (PedGeometry *geom, uint32_t *block, int blocksize, PedSector root) {
+       int i, sum;
+       PedSector start, end;
+
+       if (PED_BE32_TO_CPU (block[0]) != 0x53465300) return 0;
+       for (i = 0, sum = 1; i < 128*blocksize; i++) sum += PED_BE32_TO_CPU (block[i]);
+       if (sum != 0) return 0;
+       if (PED_BE32_TO_CPU (block[2]) * blocksize + geom->start != root) {
+               return 0;
+       }
+       start = ((((PedSector) PED_BE32_TO_CPU (block[8])) << 32)
+               + (PedSector) PED_BE32_TO_CPU (block[9])) / 512;
+       end = (((((PedSector) PED_BE32_TO_CPU (block[10])) << 32)
+               + (PedSector) PED_BE32_TO_CPU (block[11])) / 512) - 1;
+       if (start != geom->start || end != geom->end) return 0;
+       return 1;
+}
+
+static PedGeometry*
+_asfs_probe (PedGeometry* geom)
+{
+       uint32_t *block;
+       struct PartitionBlock * part;
+       int blocksize = 1;
+        PedSector root;
+        int found = 0;
+
+       PED_ASSERT (geom != NULL);
+       PED_ASSERT (geom->dev != NULL);
+
+       /* Finds the blocksize of the partition block */
+       if (!(part = ped_malloc (PED_SECTOR_SIZE_DEFAULT*blocksize))) {
+               ped_exception_throw(PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                       _("%s : Failed to allocate partition block\n"), __func__);
+               goto error_part;
+       }
+       if (amiga_find_part(geom, part) != NULL) {
+               blocksize = PED_BE32_TO_CPU (part->de_SizeBlock)
+                       * PED_BE32_TO_CPU (part->de_SectorPerBlock) / 128;
+       }
+       free (part);
+
+       /* Test boot block */
+       if (!(block = ped_malloc (PED_SECTOR_SIZE_DEFAULT*blocksize))) {
+               ped_exception_throw(PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                       _("%s : Failed to allocate block\n"), __func__);
+               goto error_block;
+       }
+       root = geom->start;
+       if (!ped_device_read (geom->dev, block, root, blocksize)) {
+               ped_exception_throw(PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                       _("%s : Couldn't read root block %llu\n"), __func__, root);
+               goto error;
+       }
+       if (PED_BE32_TO_CPU (block[0]) != 0x53465300) {
+               goto error;
+       }
+
+       /* Find and test the root blocks */
+       if (_asfs_probe_root(geom, block, blocksize, root)) {
+               found++;
+       }
+       root = geom->end - blocksize - (geom->length % blocksize) + 1;
+       if (!ped_device_read (geom->dev, block, root, 1)) {
+               ped_exception_throw(PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                       _("%s : Couldn't read root block %llu\n"), __func__, root);
+               goto error;
+       }
+       if (_asfs_probe_root(geom, block, blocksize, root)) {
+               found++;
+       }
+       if (found != 0) {
+               free (block);
+               return ped_geometry_duplicate (geom);
+       }
+
+error:
+       free (block);
+error_block:
+error_part:
+       return NULL;
+}
+
+static PedFileSystemOps _asfs_ops = {
+       probe:          _asfs_probe,
+};
+
+PedFileSystemType _asfs_type = {
+       next:            NULL,
+       ops:             &_asfs_ops,
+       name:            "asfs",
+       block_sizes:      ((int[2]){512, 0})
+};
diff --git a/libparted/fs/amiga/asfs.h b/libparted/fs/amiga/asfs.h
new file mode 100644 (file)
index 0000000..f9e4735
--- /dev/null
@@ -0,0 +1,17 @@
+/*
+    asfs.h -- parted asfs filesystem support header files
+    Copyright (C) 1998-2000, 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
diff --git a/libparted/fs/amiga/interface.c b/libparted/fs/amiga/interface.c
new file mode 100644 (file)
index 0000000..10ada39
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+    interface.c -- parted support amiga file systems
+    Copyright (C) 1998-2000, 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+
+#include <config.h>
+
+#include <parted/parted.h>
+#include <parted/debug.h>
+#include <parted/endian.h>
+
+extern PedFileSystemType _affs0_type;
+extern PedFileSystemType _affs1_type;
+extern PedFileSystemType _affs2_type;
+extern PedFileSystemType _affs3_type;
+extern PedFileSystemType _affs4_type;
+extern PedFileSystemType _affs5_type;
+extern PedFileSystemType _affs6_type;
+extern PedFileSystemType _affs7_type;
+extern PedFileSystemType _amufs_type;
+extern PedFileSystemType _amufs0_type;
+extern PedFileSystemType _amufs1_type;
+extern PedFileSystemType _amufs2_type;
+extern PedFileSystemType _amufs3_type;
+extern PedFileSystemType _amufs4_type;
+extern PedFileSystemType _amufs5_type;
+extern PedFileSystemType _asfs_type;
+extern PedFileSystemType _apfs1_type;
+extern PedFileSystemType _apfs2_type;
+
+void ped_file_system_amiga_init ()
+{
+       ped_file_system_type_register (&_affs0_type);
+       ped_file_system_type_register (&_affs1_type);
+       ped_file_system_type_register (&_affs2_type);
+       ped_file_system_type_register (&_affs3_type);
+       ped_file_system_type_register (&_affs4_type);
+       ped_file_system_type_register (&_affs5_type);
+       ped_file_system_type_register (&_affs6_type);
+       ped_file_system_type_register (&_affs7_type);
+       ped_file_system_type_register (&_amufs_type);
+       ped_file_system_type_register (&_amufs0_type);
+       ped_file_system_type_register (&_amufs1_type);
+       ped_file_system_type_register (&_amufs2_type);
+       ped_file_system_type_register (&_amufs3_type);
+       ped_file_system_type_register (&_amufs4_type);
+       ped_file_system_type_register (&_amufs5_type);
+       ped_file_system_type_register (&_asfs_type);
+       ped_file_system_type_register (&_apfs1_type);
+       ped_file_system_type_register (&_apfs2_type);
+}
+
+void ped_file_system_amiga_done ()
+{
+       ped_file_system_type_unregister (&_affs0_type);
+       ped_file_system_type_unregister (&_affs1_type);
+       ped_file_system_type_unregister (&_affs2_type);
+       ped_file_system_type_unregister (&_affs3_type);
+       ped_file_system_type_unregister (&_affs4_type);
+       ped_file_system_type_unregister (&_affs5_type);
+       ped_file_system_type_unregister (&_affs6_type);
+       ped_file_system_type_unregister (&_affs7_type);
+       ped_file_system_type_unregister (&_amufs_type);
+       ped_file_system_type_unregister (&_amufs0_type);
+       ped_file_system_type_unregister (&_amufs1_type);
+       ped_file_system_type_unregister (&_amufs2_type);
+       ped_file_system_type_unregister (&_amufs3_type);
+       ped_file_system_type_unregister (&_amufs4_type);
+       ped_file_system_type_unregister (&_amufs5_type);
+       ped_file_system_type_unregister (&_asfs_type);
+       ped_file_system_type_unregister (&_apfs1_type);
+       ped_file_system_type_unregister (&_apfs2_type);
+}
diff --git a/libparted/fs/ext2/Makefile.am b/libparted/fs/ext2/Makefile.am
new file mode 100644 (file)
index 0000000..0acd080
--- /dev/null
@@ -0,0 +1,11 @@
+AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
+partedincludedir      =        -I$(top_srcdir)/include
+
+noinst_LTLIBRARIES    =        libext2.la
+libext2_la_SOURCES    =        ext2.h \
+                       ext2_fs.h \
+                       interface.c
+
+INCLUDES = $(partedincludedir) $(INTLINCS)
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/libparted/fs/ext2/Makefile.in b/libparted/fs/ext2/Makefile.in
new file mode 100644 (file)
index 0000000..82fa023
--- /dev/null
@@ -0,0 +1,1270 @@
+# Makefile.in generated by automake 1.11a from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in 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.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = libparted/fs/ext2
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+       $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argmatch.m4 \
+       $(top_srcdir)/m4/assert.m4 $(top_srcdir)/m4/btowc.m4 \
+       $(top_srcdir)/m4/calloc.m4 $(top_srcdir)/m4/canonicalize.m4 \
+       $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
+       $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/configmake.m4 \
+       $(top_srcdir)/m4/dirname.m4 \
+       $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+       $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/environ.m4 \
+       $(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
+       $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fclose.m4 \
+       $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/fcntl_h.m4 \
+       $(top_srcdir)/m4/fflush.m4 $(top_srcdir)/m4/fpending.m4 \
+       $(top_srcdir)/m4/fpurge.m4 $(top_srcdir)/m4/freading.m4 \
+       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/fsync.m4 \
+       $(top_srcdir)/m4/ftell.m4 $(top_srcdir)/m4/ftello.m4 \
+       $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
+       $(top_srcdir)/m4/langinfo_h.m4 $(top_srcdir)/m4/lcmessage.m4 \
+       $(top_srcdir)/m4/lib-ignore.m4 $(top_srcdir)/m4/lib-ld.m4 \
+       $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/localcharset.m4 \
+       $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \
+       $(top_srcdir)/m4/locale-tr.m4 $(top_srcdir)/m4/locale-zh.m4 \
+       $(top_srcdir)/m4/locale_h.m4 $(top_srcdir)/m4/localename.m4 \
+       $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/long-options.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
+       $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+       $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
+       $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+       $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbtowc.m4 \
+       $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+       $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/multiarch.m4 \
+       $(top_srcdir)/m4/nl_langinfo.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/nocrash.m4 $(top_srcdir)/m4/o-direct.m4 \
+       $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/priv-set.m4 \
+       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+       $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+       $(top_srcdir)/m4/read.m4 $(top_srcdir)/m4/readlink.m4 \
+       $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/regex.m4 \
+       $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+       $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/setlocale.m4 \
+       $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/ssize_t.m4 \
+       $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdarg.m4 \
+       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strdup.m4 \
+       $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/strerror_r.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+       $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtoll.m4 \
+       $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/symlink.m4 \
+       $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+       $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/thread.m4 \
+       $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/time_h.m4 \
+       $(top_srcdir)/m4/ungetc.m4 $(top_srcdir)/m4/unistd_h.m4 \
+       $(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkdir.m4 \
+       $(top_srcdir)/m4/usleep.m4 $(top_srcdir)/m4/version-etc.m4 \
+       $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \
+       $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
+       $(top_srcdir)/m4/wcrtomb.m4 $(top_srcdir)/m4/wctob.m4 \
+       $(top_srcdir)/m4/wctomb.m4 $(top_srcdir)/m4/wctype_h.m4 \
+       $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+       $(top_srcdir)/m4/xstrndup.m4 $(top_srcdir)/m4/xstrtol.m4 \
+       $(top_srcdir)/m4/yield.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libext2_la_LIBADD =
+am_libext2_la_OBJECTS = interface.lo
+libext2_la_OBJECTS = $(am_libext2_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/lib
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+       $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo "  CC      " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+SOURCES = $(libext2_la_SOURCES)
+DIST_SOURCES = $(libext2_la_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+pkglibexecdir = @pkglibexecdir@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+BUILDINFO = @BUILDINFO@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHECK_CFLAGS = @CHECK_CFLAGS@
+CHECK_LIBS = @CHECK_LIBS@
+CONFIG_INCLUDE = @CONFIG_INCLUDE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DYNAMIC_LOADING = @DYNAMIC_LOADING@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENABLE_DEVICE_MAPPER = @ENABLE_DEVICE_MAPPER@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FACCESSAT = @GNULIB_FACCESSAT@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCHMODAT = @GNULIB_FCHMODAT@
+GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FCNTL = @GNULIB_FCNTL@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FGETC = @GNULIB_FGETC@
+GNULIB_FGETS = @GNULIB_FGETS@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREAD = @GNULIB_FREAD@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSCANF = @GNULIB_FSCANF@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSTATAT = @GNULIB_FSTATAT@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FUTIMENS = @GNULIB_FUTIMENS@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETC = @GNULIB_GETC@
+GNULIB_GETCHAR = @GNULIB_GETCHAR@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETGROUPS = @GNULIB_GETGROUPS@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETS = @GNULIB_GETS@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
+GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_ISWBLANK = @GNULIB_ISWBLANK@
+GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@
+GNULIB_LCHMOD = @GNULIB_LCHMOD@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LINKAT = @GNULIB_LINKAT@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_LSTAT = @GNULIB_LSTAT@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MBTOWC = @GNULIB_MBTOWC@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDIRAT = @GNULIB_MKDIRAT@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKFIFO = @GNULIB_MKFIFO@
+GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@
+GNULIB_MKNOD = @GNULIB_MKNOD@
+GNULIB_MKNODAT = @GNULIB_MKNODAT@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@
+GNULIB_MKTIME = @GNULIB_MKTIME@
+GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@
+GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@
+GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_OPEN = @GNULIB_OPEN@
+GNULIB_OPENAT = @GNULIB_OPENAT@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE = @GNULIB_PIPE@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_PREAD = @GNULIB_PREAD@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READ = @GNULIB_READ@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_READLINKAT = @GNULIB_READLINKAT@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_REALPATH = @GNULIB_REALPATH@
+GNULIB_REMOVE = @GNULIB_REMOVE@
+GNULIB_RENAME = @GNULIB_RENAME@
+GNULIB_RENAMEAT = @GNULIB_RENAMEAT@
+GNULIB_RMDIR = @GNULIB_RMDIR@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SETLOCALE = @GNULIB_SETLOCALE@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STAT = @GNULIB_STAT@
+GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRERROR_R = @GNULIB_STRERROR_R@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRPTIME = @GNULIB_STRPTIME@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_SYMLINK = @GNULIB_SYMLINK@
+GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
+GNULIB_TIMEGM = @GNULIB_TIMEGM@
+GNULIB_TIME_R = @GNULIB_TIME_R@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
+GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
+GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNLINK = @GNULIB_UNLINK@
+GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_USLEEP = @GNULIB_USLEEP@
+GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VFSCANF = @GNULIB_VFSCANF@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSCANF = @GNULIB_VSCANF@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCPCPY = @GNULIB_WCPCPY@
+GNULIB_WCPNCPY = @GNULIB_WCPNCPY@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@
+GNULIB_WCSCAT = @GNULIB_WCSCAT@
+GNULIB_WCSCHR = @GNULIB_WCSCHR@
+GNULIB_WCSCMP = @GNULIB_WCSCMP@
+GNULIB_WCSCOLL = @GNULIB_WCSCOLL@
+GNULIB_WCSCPY = @GNULIB_WCSCPY@
+GNULIB_WCSCSPN = @GNULIB_WCSCSPN@
+GNULIB_WCSDUP = @GNULIB_WCSDUP@
+GNULIB_WCSLEN = @GNULIB_WCSLEN@
+GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@
+GNULIB_WCSNCAT = @GNULIB_WCSNCAT@
+GNULIB_WCSNCMP = @GNULIB_WCSNCMP@
+GNULIB_WCSNCPY = @GNULIB_WCSNCPY@
+GNULIB_WCSNLEN = @GNULIB_WCSNLEN@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSPBRK = @GNULIB_WCSPBRK@
+GNULIB_WCSRCHR = @GNULIB_WCSRCHR@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCSSPN = @GNULIB_WCSSPN@
+GNULIB_WCSSTR = @GNULIB_WCSSTR@
+GNULIB_WCSTOK = @GNULIB_WCSTOK@
+GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@
+GNULIB_WCSXFRM = @GNULIB_WCSXFRM@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCTOMB = @GNULIB_WCTOMB@
+GNULIB_WCTRANS = @GNULIB_WCTRANS@
+GNULIB_WCTYPE = @GNULIB_WCTYPE@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WMEMCHR = @GNULIB_WMEMCHR@
+GNULIB_WMEMCMP = @GNULIB_WMEMCMP@
+GNULIB_WMEMCPY = @GNULIB_WMEMCPY@
+GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@
+GNULIB_WMEMSET = @GNULIB_WMEMSET@
+GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
+HAVE_CHOWN = @HAVE_CHOWN@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@
+HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SETENV = @HAVE_DECL_SETENV@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@
+HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_DUPLOCALE = @HAVE_DUPLOCALE@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
+HAVE_FCHMODAT = @HAVE_FCHMODAT@
+HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
+HAVE_FCNTL = @HAVE_FCNTL@
+HAVE_FEATURES_H = @HAVE_FEATURES_H@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSTATAT = @HAVE_FSTATAT@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_FUTIMENS = @HAVE_FUTIMENS@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETGROUPS = @HAVE_GETGROUPS@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETLOGIN = @HAVE_GETLOGIN@
+HAVE_GETOPT_H = @HAVE_GETOPT_H@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
+HAVE_GRANTPT = @HAVE_GRANTPT@
+HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWBLANK = @HAVE_ISWBLANK@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
+HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
+HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
+HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
+HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
+HAVE_LCHMOD = @HAVE_LCHMOD@
+HAVE_LCHOWN = @HAVE_LCHOWN@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_LSTAT = @HAVE_LSTAT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSLEN = @HAVE_MBSLEN@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMCHR = @HAVE_MEMCHR@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDIRAT = @HAVE_MKDIRAT@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKFIFO = @HAVE_MKFIFO@
+HAVE_MKFIFOAT = @HAVE_MKFIFOAT@
+HAVE_MKNOD = @HAVE_MKNOD@
+HAVE_MKNODAT = @HAVE_MKNODAT@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
+HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
+HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
+HAVE_OPENAT = @HAVE_OPENAT@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PIPE = @HAVE_PIPE@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PWRITE = @HAVE_PWRITE@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_READLINKAT = @HAVE_READLINKAT@
+HAVE_REALPATH = @HAVE_REALPATH@
+HAVE_RENAMEAT = @HAVE_RENAMEAT@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRPTIME = @HAVE_STRPTIME@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYMLINK = @HAVE_SYMLINK@
+HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_TIMEGM = @HAVE_TIMEGM@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_USLEEP = @HAVE_USLEEP@
+HAVE_UTIMENSAT = @HAVE_UTIMENSAT@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCPCPY = @HAVE_WCPCPY@
+HAVE_WCPNCPY = @HAVE_WCPNCPY@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSCASECMP = @HAVE_WCSCASECMP@
+HAVE_WCSCAT = @HAVE_WCSCAT@
+HAVE_WCSCHR = @HAVE_WCSCHR@
+HAVE_WCSCMP = @HAVE_WCSCMP@
+HAVE_WCSCOLL = @HAVE_WCSCOLL@
+HAVE_WCSCPY = @HAVE_WCSCPY@
+HAVE_WCSCSPN = @HAVE_WCSCSPN@
+HAVE_WCSDUP = @HAVE_WCSDUP@
+HAVE_WCSLEN = @HAVE_WCSLEN@
+HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@
+HAVE_WCSNCAT = @HAVE_WCSNCAT@
+HAVE_WCSNCMP = @HAVE_WCSNCMP@
+HAVE_WCSNCPY = @HAVE_WCSNCPY@
+HAVE_WCSNLEN = @HAVE_WCSNLEN@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSPBRK = @HAVE_WCSPBRK@
+HAVE_WCSRCHR = @HAVE_WCSRCHR@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCSSPN = @HAVE_WCSSPN@
+HAVE_WCSSTR = @HAVE_WCSSTR@
+HAVE_WCSTOK = @HAVE_WCSTOK@
+HAVE_WCSWIDTH = @HAVE_WCSWIDTH@
+HAVE_WCSXFRM = @HAVE_WCSXFRM@
+HAVE_WCTRANS_T = @HAVE_WCTRANS_T@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WCTYPE_T = @HAVE_WCTYPE_T@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WMEMCHR = @HAVE_WMEMCHR@
+HAVE_WMEMCMP = @HAVE_WMEMCMP@
+HAVE_WMEMCPY = @HAVE_WMEMCPY@
+HAVE_WMEMMOVE = @HAVE_WMEMMOVE@
+HAVE_WMEMSET = @HAVE_WMEMSET@
+HAVE_XLOCALE_H = @HAVE_XLOCALE_H@
+HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
+IGNORE_UNUSED_LIBRARIES_CFLAGS = @IGNORE_UNUSED_LIBRARIES_CFLAGS@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@
+INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMULTITHREAD = @LIBMULTITHREAD@
+LIBOBJS = @LIBOBJS@
+LIBPTH = @LIBPTH@
+LIBPTH_PREFIX = @LIBPTH_PREFIX@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTHREAD = @LIBTHREAD@
+LIBTOOL = @LIBTOOL@
+LIB_BLKID = @LIB_BLKID@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBMULTITHREAD = @LTLIBMULTITHREAD@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBPTH = @LTLIBPTH@
+LTLIBTHREAD = @LTLIBTHREAD@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
+NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@
+NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
+NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@
+NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FCNTL_H = @NEXT_FCNTL_H@
+NEXT_GETOPT_H = @NEXT_GETOPT_H@
+NEXT_INTTYPES_H = @NEXT_INTTYPES_H@
+NEXT_LANGINFO_H = @NEXT_LANGINFO_H@
+NEXT_LOCALE_H = @NEXT_LOCALE_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@
+NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@
+NEXT_TIME_H = @NEXT_TIME_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PARTED_USABLE_TEST_DIR = @PARTED_USABLE_TEST_DIR@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CALLOC = @REPLACE_CALLOC@
+REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP = @REPLACE_DUP@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@
+REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FCNTL = @REPLACE_FCNTL@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FSTAT = @REPLACE_FSTAT@
+REPLACE_FSTATAT = @REPLACE_FSTATAT@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_FUTIMENS = @REPLACE_FUTIMENS@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETDELIM = @REPLACE_GETDELIM@
+REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@
+REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LINK = @REPLACE_LINK@
+REPLACE_LINKAT = @REPLACE_LINKAT@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_LSTAT = @REPLACE_LSTAT@
+REPLACE_MALLOC = @REPLACE_MALLOC@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MBTOWC = @REPLACE_MBTOWC@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKDIR = @REPLACE_MKDIR@
+REPLACE_MKFIFO = @REPLACE_MKFIFO@
+REPLACE_MKNOD = @REPLACE_MKNOD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_MKTIME = @REPLACE_MKTIME@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_OPEN = @REPLACE_OPEN@
+REPLACE_OPENAT = @REPLACE_OPENAT@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PREAD = @REPLACE_PREAD@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
+REPLACE_READ = @REPLACE_READ@
+REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_REALLOC = @REPLACE_REALLOC@
+REPLACE_REALPATH = @REPLACE_REALPATH@
+REPLACE_REMOVE = @REPLACE_REMOVE@
+REPLACE_RENAME = @REPLACE_RENAME@
+REPLACE_RENAMEAT = @REPLACE_RENAMEAT@
+REPLACE_RMDIR = @REPLACE_RMDIR@
+REPLACE_SETENV = @REPLACE_SETENV@
+REPLACE_SETLOCALE = @REPLACE_SETLOCALE@
+REPLACE_SLEEP = @REPLACE_SLEEP@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STAT = @REPLACE_STAT@
+REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRERROR_R = @REPLACE_STRERROR_R@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
+REPLACE_STRNDUP = @REPLACE_STRNDUP@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
+REPLACE_SYMLINK = @REPLACE_SYMLINK@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
+REPLACE_UNLINK = @REPLACE_UNLINK@
+REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
+REPLACE_UNSETENV = @REPLACE_UNSETENV@
+REPLACE_USLEEP = @REPLACE_USLEEP@
+REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCTOMB = @REPLACE_WCTOMB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SELINUX_LIBS = @SELINUX_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
+UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
+UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+YIELD_LIB = @YIELD_LIB@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
+partedincludedir = -I$(top_srcdir)/include
+noinst_LTLIBRARIES = libext2.la
+libext2_la_SOURCES = ext2.h \
+                       ext2_fs.h \
+                       interface.c
+
+INCLUDES = $(partedincludedir) $(INTLINCS)
+MAINTAINERCLEANFILES = Makefile.in
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libparted/fs/ext2/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu libparted/fs/ext2/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+       -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+       @list='$(noinst_LTLIBRARIES)'; \
+       locs=`for p in $$list; do echo $$p; done | \
+             sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+             sort -u`; \
+       test -z "$$locs" || { \
+         echo rm -f $${locs}; \
+         rm -f $${locs}; \
+       }
+libext2.la: $(libext2_la_OBJECTS) $(libext2_la_DEPENDENCIES) $(EXTRA_libext2_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK)  $(libext2_la_OBJECTS) $(libext2_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interface.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+       mostlyclean-am
+
+distclean: distclean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+       clean-libtool clean-noinstLTLIBRARIES cscopelist ctags \
+       distclean distclean-compile distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       tags uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libparted/fs/ext2/ext2.h b/libparted/fs/ext2/ext2.h
new file mode 100644 (file)
index 0000000..11a17f2
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+    ext2.h -- ext2 header
+    Copyright (C) 1998-2000, 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef _EXT2_H
+#define _EXT2_H
+
+#include <parted/parted.h>
+#include <parted/debug.h>
+#include <sys/types.h>
+
+#include <inttypes.h>
+
+#if ENABLE_NLS
+#  include <libintl.h>
+#  define _(String) dgettext (PACKAGE, String)
+#else
+#  define _(String) (String)
+#endif /* ENABLE_NLS */
+
+typedef u_int32_t blk_t;
+
+#ifdef HAVE_LINUX_EXT2_FS_H__FAILS_TO_COMPILE
+#include <linux/ext2_fs.h>
+#else
+#include "ext2_fs.h"
+#endif
+
+struct ext2_fs
+{
+       struct ext2_dev_handle           *devhandle;
+
+       struct ext2_super_block           sb;
+       struct ext2_group_desc           *gd;
+       struct ext2_buffer_cache         *bc;
+       int                               metadirty;                    /* 0:all sb&gd copies clean
+                                                                          1:all sb&gd copies dirty
+                                                                          2:only first sb&gd copy clean */
+
+       int                               dynamic_version;
+       int                               sparse;                       /* sparse superblocks */
+       int                               has_journal;                  /* journal */
+       int                               has_internal_journal;
+
+       int                               blocksize;
+       int                               logsize;
+       blk_t                             adminblocks;
+       blk_t                             gdblocks;
+       blk_t                             itoffset;
+       blk_t                             inodeblocks;
+       int                               numgroups;
+       int                               r_frac;                       /* reserved % of blocks */
+
+       unsigned char                    *relocator_pool;
+       unsigned char                    *relocator_pool_end;
+
+       int                              opt_debug;
+       int                              opt_safe;
+       int                              opt_verbose;
+
+       void                             *journal;
+};
+
+#endif
diff --git a/libparted/fs/ext2/ext2_fs.h b/libparted/fs/ext2/ext2_fs.h
new file mode 100644 (file)
index 0000000..c0a1b0a
--- /dev/null
@@ -0,0 +1,329 @@
+/*
+ *  linux/include/linux/ext2_fs.h
+ *
+ * Copyright (C) 1992, 1993, 1994, 1995
+ * Remy Card (card@masi.ibp.fr)
+ * Laboratoire MASI - Institut Blaise Pascal
+ * Universite Pierre et Marie Curie (Paris VI)
+ *
+ *  from
+ *
+ *  linux/include/linux/minix_fs.h
+ *
+ *  Copyright (C) 1991, 1992  Linus Torvalds
+ */
+
+/*
+ * EXT2_*_*() convienience macros added by Andrew Clausen <clausen@gnu.org>
+ * Copyright (C) 2000, 2009-2011 Free Software Foundation, Inc.
+ */
+
+#ifndef _EXT2_FS_H
+#define _EXT2_FS_H
+
+#include <parted/endian.h>
+#include <stdint.h>
+
+/*
+ * The second extended file system constants/structures
+ */
+
+#define EXT2_SUPER_MAGIC_CONST 0xEF53
+#define EXT2_MIN_BLOCK_SIZE    1024
+#define EXT2_NDIR_BLOCKS       12
+#define EXT2_IND_BLOCK         EXT2_NDIR_BLOCKS
+#define EXT2_DIND_BLOCK                (EXT2_IND_BLOCK + 1)
+#define EXT2_TIND_BLOCK                (EXT2_DIND_BLOCK + 1)
+#define EXT2_N_BLOCKS          (EXT2_TIND_BLOCK + 1)
+#define EXT2_VALID_FS          0x0001
+#define EXT2_ERROR_FS          0x0002
+#define EXT2_RESERVED_INODE_COUNT      11
+
+/*
+ * Codes for operating systems
+ */
+#define EXT2_OS_LINUX          0
+#define EXT2_OS_HURD           1
+#define EXT2_OS_MASIX          2
+#define EXT2_OS_FREEBSD                3
+#define EXT2_OS_LITES          4
+
+/*
+ * Feature set definitions
+ */
+#define EXT3_FEATURE_COMPAT_HAS_JOURNAL                0x0004
+#define EXT2_FEATURE_COMPAT_HAS_DIR_INDEX      0x0020
+
+#define EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER    0x0001
+#define EXT2_FEATURE_RO_COMPAT_LARGE_FILE      0x0002
+#define EXT4_FEATURE_RO_COMPAT_HUGE_FILE       0x0008
+#define EXT4_FEATURE_RO_COMPAT_GDT_CSUM                0x0010
+#define EXT4_FEATURE_RO_COMPAT_DIR_NLINK       0x0020
+
+#define EXT2_FEATURE_INCOMPAT_FILETYPE         0x0002
+#define EXT3_FEATURE_INCOMPAT_RECOVER          0x0004
+#define EXT4_FEATURE_INCOMPAT_EXTENTS          0x0040
+#define EXT4_FEATURE_INCOMPAT_64BIT            0x0080
+#define EXT4_FEATURE_INCOMPAT_FLEX_BG          0x0200
+
+/*
+ * Special inodes numbers
+ */
+#define EXT2_BAD_INO            1      /* Bad blocks inode */
+#define EXT2_ROOT_INO           2      /* Root inode */
+#define EXT2_ACL_IDX_INO        3      /* ACL inode */
+#define EXT2_ACL_DATA_INO       4      /* ACL inode */
+#define EXT2_BOOT_LOADER_INO    5      /* Boot loader inode */
+#define EXT2_UNDEL_DIR_INO      6      /* Undelete directory inode */
+
+/*
+ * Ext2 directory file types.  Only the low 3 bits are used.  The
+ * other bits are reserved for now.
+ */
+#define EXT2_FT_UNKNOWN                0
+#define EXT2_FT_REG_FILE       1
+#define EXT2_FT_DIR            2
+#define EXT2_FT_CHRDEV         3
+#define EXT2_FT_BLKDEV                 4
+#define EXT2_FT_FIFO           5
+#define EXT2_FT_SOCK           6
+#define EXT2_FT_SYMLINK                7
+
+/*
+ * Behaviour when detecting errors
+ */
+#define EXT2_ERRORS_CONTINUE           1       /* Continue execution */
+#define EXT2_ERRORS_RO                 2       /* Remount fs read-only */
+#define EXT2_ERRORS_PANIC              3       /* Panic */
+#define EXT2_ERRORS_DEFAULT            EXT2_ERRORS_CONTINUE
+
+struct ext2_dir_entry_2
+{
+       uint32_t        inode;
+       uint16_t        rec_len;
+       uint8_t         name_len;
+       uint8_t         file_type;
+       char            name[255];
+};
+
+struct ext2_group_desc
+{
+       uint32_t        bg_block_bitmap;
+       uint32_t        bg_inode_bitmap;
+       uint32_t        bg_inode_table;
+       uint16_t        bg_free_blocks_count;
+       uint16_t        bg_free_inodes_count;
+       uint16_t        bg_used_dirs_count;
+       uint16_t        bg_pad;
+       uint32_t        bg_reserved[3];
+};
+
+struct ext2_inode
+{
+       uint16_t        i_mode;         /* File mode */
+       uint16_t        i_uid;          /* Owner Uid */
+       uint32_t        i_size;         /* Size in bytes */
+       uint32_t        i_atime;        /* Access time */
+       uint32_t        i_ctime;        /* Creation time */
+       uint32_t        i_mtime;        /* Modification time */
+       uint32_t        i_dtime;        /* Deletion Time */
+       uint16_t        i_gid;          /* Group Id */
+       uint16_t        i_links_count;  /* Links count */
+       uint32_t        i_blocks;       /* Blocks count */
+       uint32_t        i_flags;        /* File flags */
+       union {
+               struct {
+                       uint32_t        l_i_reserved1;
+               } linux1;
+               struct {
+                       uint32_t        h_i_translator;
+               } hurd1;
+               struct {
+                       uint32_t        m_i_reserved1;
+               } masix1;
+       } osd1;                 /* OS dependent 1 */
+       uint32_t        i_block[EXT2_N_BLOCKS];/* Pointers to blocks */
+       uint32_t        i_generation;   /* File version (for NFS) */
+       uint32_t        i_file_acl;     /* File ACL */
+       uint32_t        i_dir_acl;      /* Directory ACL */
+       uint32_t        i_faddr;        /* Fragment address */
+       union {
+               struct {
+                       uint8_t         l_i_frag;       /* Fragment number */
+                       uint8_t         l_i_fsize;      /* Fragment size */
+                       uint16_t        i_pad1;
+                       uint32_t        l_i_reserved2[2];
+               } linux2;
+               struct {
+                       uint8_t         h_i_frag;       /* Fragment number */
+                       uint8_t         h_i_fsize;      /* Fragment size */
+                       uint16_t        h_i_mode_high;
+                       uint16_t        h_i_uid_high;
+                       uint16_t        h_i_gid_high;
+                       uint32_t        h_i_author;
+               } hurd2;
+               struct {
+                       uint8_t         m_i_frag;       /* Fragment number */
+                       uint8_t         m_i_fsize;      /* Fragment size */
+                       uint16_t        m_pad1;
+                       uint32_t        m_i_reserved2[2];
+               } masix2;
+       } osd2;                                 /* OS dependent 2 */
+};
+
+#define i_size_high    i_dir_acl
+
+struct ext2_super_block
+{
+       uint32_t        s_inodes_count;         /* Inodes count */
+       uint32_t        s_blocks_count;         /* Blocks count */
+       uint32_t        s_r_blocks_count;       /* Reserved blocks count */
+       uint32_t        s_free_blocks_count;    /* Free blocks count */
+       uint32_t        s_free_inodes_count;    /* Free inodes count */
+       uint32_t        s_first_data_block;     /* First Data Block */
+       uint32_t        s_log_block_size;       /* Block size */
+       int32_t         s_log_frag_size;        /* Fragment size */
+       uint32_t        s_blocks_per_group;     /* # Blocks per group */
+       uint32_t        s_frags_per_group;      /* # Fragments per group */
+       uint32_t        s_inodes_per_group;     /* # Inodes per group */
+       uint32_t        s_mtime;                /* Mount time */
+       uint32_t        s_wtime;                /* Write time */
+       uint16_t        s_mnt_count;            /* Mount count */
+       int16_t         s_max_mnt_count;        /* Maximal mount count */
+       uint16_t        s_magic;                /* Magic signature */
+       uint16_t        s_state;                /* File system state */
+       uint16_t        s_errors;               /* Behaviour when detecting errors */
+       uint16_t        s_minor_rev_level;      /* minor revision level */
+       uint32_t        s_lastcheck;            /* time of last check */
+       uint32_t        s_checkinterval;        /* max. time between checks */
+       uint32_t        s_creator_os;           /* OS */
+       uint32_t        s_rev_level;            /* Revision level */
+       uint16_t        s_def_resuid;           /* Default uid for reserved blocks */
+       uint16_t        s_def_resgid;           /* Default gid for reserved blocks */
+       /*
+        * These fields are for EXT2_DYNAMIC_REV superblocks only.
+        *
+        * Note: the difference between the compatible feature set and
+        * the incompatible feature set is that if there is a bit set
+        * in the incompatible feature set that the kernel doesn't
+        * know about, it should refuse to mount the file system.
+        *
+        * e2fsck's requirements are more strict; if it doesn't know
+        * about a feature in either the compatible or incompatible
+        * feature set, it must abort and not try to meddle with
+        * things it doesn't understand...
+        */
+       uint32_t        s_first_ino;            /* First non-reserved inode */
+       uint16_t        s_inode_size;           /* size of inode structure */
+       uint16_t        s_block_group_nr;       /* block group # of this superblock */
+       uint32_t        s_feature_compat;       /* compatible feature set */
+       uint32_t        s_feature_incompat;     /* incompatible feature set */
+       uint32_t        s_feature_ro_compat;    /* readonly-compatible feature set */
+       uint8_t         s_uuid[16];             /* 128-bit uuid for volume */
+       char            s_volume_name[16];      /* volume name */
+       char            s_last_mounted[64];     /* directory where last mounted */
+       uint32_t        s_algorithm_usage_bitmap;  /* For compression */
+       /*
+        * Performance hints.  Directory preallocation should only
+        * happen if the EXT2_COMPAT_PREALLOC flag is on.
+        */
+       uint8_t         s_prealloc_blocks;      /* Nr of blocks to try to preallocate*/
+       uint8_t         s_prealloc_dir_blocks;  /* Nr to preallocate for dirs */
+       uint16_t        s_padding1;
+       /*
+        * Journaling support valid if EXT2_FEATURE_COMPAT_HAS_JOURNAL set.
+        */
+       uint8_t         s_journal_uuid[16];     /* uuid of journal superblock */
+       uint32_t        s_journal_inum;         /* inode number of journal file */
+       uint32_t        s_journal_dev;          /* device number of journal file */
+       uint32_t        s_last_orphan;          /* start of list of inodes to delete */
+
+       uint32_t        s_reserved[197];        /* Padding to the end of the block */
+};
+
+#define EXT2_DIRENT_INODE(dir_ent)     (PED_LE32_TO_CPU((dir_ent).inode))
+#define EXT2_DIRENT_REC_LEN(dir_ent)   (PED_LE16_TO_CPU((dir_ent).rec_len))
+#define EXT2_DIRENT_NAME_LEN(dir_ent)  ((dir_ent).name_len)
+#define EXT2_DIRENT_FILE_TYPE(dir_ent) ((dir_ent).file_type)
+
+#define EXT2_GROUP_BLOCK_BITMAP(gd)    (PED_LE32_TO_CPU((gd).bg_block_bitmap))
+#define EXT2_GROUP_INODE_BITMAP(gd)    (PED_LE32_TO_CPU((gd).bg_inode_bitmap))
+#define EXT2_GROUP_INODE_TABLE(gd)     (PED_LE32_TO_CPU((gd).bg_inode_table))
+#define EXT2_GROUP_FREE_BLOCKS_COUNT(gd) \
+               (PED_LE16_TO_CPU((gd).bg_free_blocks_count))
+#define EXT2_GROUP_FREE_INODES_COUNT(gd) \
+               (PED_LE16_TO_CPU((gd).bg_free_inodes_count))
+#define EXT2_GROUP_USED_DIRS_COUNT(gd) \
+               (PED_LE16_TO_CPU((gd).bg_used_dirs_count))
+
+#define EXT2_INODE_MODE(inode)         (PED_LE16_TO_CPU((inode).i_mode))
+#define EXT2_INODE_UID(inode)          (PED_LE16_TO_CPU((inode).i_uid))
+#define EXT2_INODE_SIZE(inode) \
+       ((uint64_t) PED_LE32_TO_CPU((inode).i_size) \
+       + ((uint64_t) PED_LE32_TO_CPU((inode).i_size_high) << 32))
+#define EXT2_INODE_ATIME(inode)                (PED_LE32_TO_CPU((inode).i_atime))
+#define EXT2_INODE_CTIME(inode)                (PED_LE32_TO_CPU((inode).i_ctime))
+#define EXT2_INODE_MTIME(inode)                (PED_LE32_TO_CPU((inode).i_mtime))
+#define EXT2_INODE_DTIME(inode)                (PED_LE32_TO_CPU((inode).i_dtime))
+#define EXT2_INODE_GID(inode)          (PED_LE16_TO_CPU((inode).i_gid))
+#define EXT2_INODE_LINKS_COUNT(inode)  (PED_LE16_TO_CPU((inode).i_links_count))
+#define EXT2_INODE_BLOCKS(inode)       (PED_LE32_TO_CPU((inode).i_blocks))
+#define EXT2_INODE_FLAGS(inode)                (PED_LE32_TO_CPU((inode).i_flags))
+#define EXT2_INODE_TRANSLATOR(inode)   (PED_LE32_TO_CPU((inode).osd1.hurd1.h_i_translator))
+#define EXT2_INODE_BLOCK(inode, blk)   (PED_LE32_TO_CPU((inode).i_block[blk]))
+
+#define EXT2_SUPER_INODES_COUNT(sb)    (PED_LE32_TO_CPU((sb).s_inodes_count))
+#define EXT2_SUPER_BLOCKS_COUNT(sb)    (PED_LE32_TO_CPU((sb).s_blocks_count))
+#define EXT2_SUPER_R_BLOCKS_COUNT(sb)  (PED_LE32_TO_CPU((sb).s_r_blocks_count))
+#define EXT2_SUPER_FREE_BLOCKS_COUNT(sb) \
+               (PED_LE32_TO_CPU((sb).s_free_blocks_count))
+#define EXT2_SUPER_FREE_INODES_COUNT(sb) \
+               (PED_LE32_TO_CPU((sb).s_free_inodes_count))
+#define EXT2_SUPER_FIRST_DATA_BLOCK(sb) \
+               (PED_LE32_TO_CPU((sb).s_first_data_block))
+#define EXT2_SUPER_LOG_BLOCK_SIZE(sb)  (PED_LE32_TO_CPU((sb).s_log_block_size))
+#define EXT2_SUPER_LOG_FRAG_SIZE(sb) \
+               ((int32_t) PED_LE32_TO_CPU((sb).s_log_frag_size))
+#define EXT2_SUPER_BLOCKS_PER_GROUP(sb)        \
+               (PED_LE32_TO_CPU((sb).s_blocks_per_group))
+#define EXT2_SUPER_FRAGS_PER_GROUP(sb) \
+       (PED_LE32_TO_CPU((sb).s_frags_per_group))
+#define EXT2_SUPER_INODES_PER_GROUP(sb)        \
+       (PED_LE32_TO_CPU((sb).s_inodes_per_group))
+#define EXT2_SUPER_MTIME(sb)           (PED_LE32_TO_CPU((sb).s_mtime))
+#define EXT2_SUPER_WTIME(sb)           (PED_LE32_TO_CPU((sb).s_wtime))
+#define EXT2_SUPER_MNT_COUNT(sb)       (PED_LE16_TO_CPU((sb).s_mnt_count))
+#define EXT2_SUPER_MAX_MNT_COUNT(sb) \
+               ((int16_t) PED_LE16_TO_CPU((sb).s_max_mnt_count))
+#define EXT2_SUPER_MAGIC(sb)           (PED_LE16_TO_CPU((sb).s_magic))
+#define EXT2_SUPER_STATE(sb)           (PED_LE16_TO_CPU((sb).s_state))
+#define EXT2_SUPER_ERRORS(sb)          (PED_LE16_TO_CPU((sb).s_errors))
+#define EXT2_SUPER_MINOR_REV_LEVEL(sb) \
+               (PED_LE16_TO_CPU((sb).s_minor_rev_level))
+#define EXT2_SUPER_LASTCHECK(sb)       (PED_LE32_TO_CPU((sb).s_lastcheck))
+#define EXT2_SUPER_CHECKINTERVAL(sb)   (PED_LE32_TO_CPU((sb).s_checkinterval))
+#define EXT2_SUPER_CREATOR_OS(sb)      (PED_LE32_TO_CPU((sb).s_creator_os))
+#define EXT2_SUPER_REV_LEVEL(sb)       (PED_LE32_TO_CPU((sb).s_rev_level))
+#define EXT2_SUPER_DEF_RESUID(sb)      (PED_LE16_TO_CPU((sb).s_def_resuid))
+#define EXT2_SUPER_DEF_RESGID(sb)      (PED_LE16_TO_CPU((sb).s_def_resgid))
+
+#define EXT2_SUPER_FIRST_INO(sb)       (PED_LE32_TO_CPU((sb).s_first_ino))
+#define EXT2_SUPER_INODE_SIZE(sb)      (PED_LE16_TO_CPU((sb).s_inode_size))
+#define EXT2_SUPER_BLOCK_GROUP_NR(sb)  (PED_LE16_TO_CPU((sb).s_block_group_nr))
+#define EXT2_SUPER_FEATURE_COMPAT(sb)  (PED_LE32_TO_CPU((sb).s_feature_compat))
+#define EXT2_SUPER_FEATURE_INCOMPAT(sb) \
+               (PED_LE32_TO_CPU((sb).s_feature_incompat))
+#define EXT2_SUPER_FEATURE_RO_COMPAT(sb) \
+               (PED_LE32_TO_CPU((sb).s_feature_ro_compat))
+#define EXT2_SUPER_UUID(sb)            ((sb).s_uuid)
+#define EXT2_SUPER_VOLUME_NAME(sb)     ((sb).s_volume_name)
+#define EXT2_SUPER_LAST_MOUNTED(sb)    ((sb).s_last_mounted)
+#define EXT2_SUPER_ALGORITHM_USAGE_BITMAP(sb) \
+               (PED_LE32_TO_CPU((sb).s_algorithm_usage_bitmap))
+
+#define EXT2_SUPER_JOURNAL_UUID(sb)    ((sb).s_journal_uuid)
+#define EXT2_SUPER_JOURNAL_INUM(sb)    (PED_LE32_TO_CPU((sb).s_journal_inum))
+#define EXT2_SUPER_JOURNAL_DEV(sb)     (PED_LE32_TO_CPU((sb).s_journal_dev))
+#define EXT2_SUPER_LAST_ORPHAN(sb)     (PED_LE32_TO_CPU((sb).s_last_orphan))
+
+#endif
diff --git a/libparted/fs/ext2/interface.c b/libparted/fs/ext2/interface.c
new file mode 100644 (file)
index 0000000..c8dd31e
--- /dev/null
@@ -0,0 +1,169 @@
+/*
+    interface.c -- parted binding glue to libext2resize
+    Copyright (C) 1998-2000, 2007-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+/* VERSION: libext2resize 1.1.6 (by Lennert)
+ * merged 1.1.11 changes (by Andrew)
+ */
+
+#include <config.h>
+
+#include <parted/parted.h>
+#include "ext2.h"
+
+static PedFileSystemType _ext2_type;
+static PedFileSystemType _ext3_type;
+
+struct ext2_dev_handle* ext2_make_dev_handle_from_parted_geometry(PedGeometry* geom);
+
+static PedGeometry*
+_ext2_generic_probe (PedGeometry* geom, int expect_ext_ver)
+{
+       void *sb_v;
+       if (!ped_geometry_read_alloc(geom, &sb_v, 2, 2))
+               return NULL;
+       struct ext2_super_block *sb = sb_v;
+
+       if (EXT2_SUPER_MAGIC(*sb) == EXT2_SUPER_MAGIC_CONST) {
+               PedSector block_size = 1 << (EXT2_SUPER_LOG_BLOCK_SIZE(*sb) + 1);
+               PedSector block_count = EXT2_SUPER_BLOCKS_COUNT(*sb);
+               PedSector group_blocks = EXT2_SUPER_BLOCKS_PER_GROUP(*sb);
+               PedSector group_nr = EXT2_SUPER_BLOCK_GROUP_NR(*sb);
+               PedSector first_data_block = EXT2_SUPER_FIRST_DATA_BLOCK(*sb);
+               int version = EXT2_SUPER_REV_LEVEL(*sb);
+               int is_ext3 = 0;
+               int is_ext4 = 0;
+
+               is_ext3 = (EXT2_SUPER_FEATURE_COMPAT (*sb)
+                          & EXT3_FEATURE_COMPAT_HAS_JOURNAL) != 0;
+               if (is_ext3) {
+                       is_ext4 = ((EXT2_SUPER_FEATURE_RO_COMPAT (*sb)
+                                   & EXT4_FEATURE_RO_COMPAT_HUGE_FILE)
+                                  || (EXT2_SUPER_FEATURE_RO_COMPAT (*sb)
+                                      & EXT4_FEATURE_RO_COMPAT_GDT_CSUM)
+                                  || (EXT2_SUPER_FEATURE_RO_COMPAT (*sb)
+                                      & EXT4_FEATURE_RO_COMPAT_DIR_NLINK)
+                                  || (EXT2_SUPER_FEATURE_INCOMPAT (*sb)
+                                      & EXT4_FEATURE_INCOMPAT_EXTENTS)
+                                  || (EXT2_SUPER_FEATURE_INCOMPAT (*sb)
+                                      & EXT4_FEATURE_INCOMPAT_64BIT)
+                                  || (EXT2_SUPER_FEATURE_INCOMPAT (*sb)
+                                      & EXT4_FEATURE_INCOMPAT_FLEX_BG));
+                       if (is_ext4)
+                               is_ext3 = 0;
+               }
+               free (sb);
+
+               if (expect_ext_ver == 2 && (is_ext3 || is_ext4))
+                       return NULL;
+               if (expect_ext_ver == 3 && !is_ext3)
+                       return NULL;
+               else if (expect_ext_ver == 4 && !is_ext4)
+                       return NULL;
+
+               if (version > 0 && group_nr > 0) {
+                       PedSector start;
+                       PedGeometry probe_geom;
+
+                       start = geom->start
+                                       - group_blocks * group_nr
+                                       - first_data_block;
+
+                       if (start < 0)
+                               return NULL;
+                       ped_geometry_init (&probe_geom, geom->dev,
+                                          start, block_count * block_size);
+                       return _ext2_generic_probe (&probe_geom,
+                                                    expect_ext_ver);
+               } else {
+                       return ped_geometry_new (geom->dev, geom->start,
+                                                block_count * block_size);
+               }
+       }
+        else {
+               free (sb);
+        }
+
+       return NULL;
+}
+
+static PedGeometry*
+_ext2_probe (PedGeometry* geom)
+{
+       return _ext2_generic_probe (geom, 2);
+}
+
+static PedGeometry*
+_ext3_probe (PedGeometry* geom)
+{
+       return _ext2_generic_probe (geom, 3);
+}
+
+static PedGeometry*
+_ext4_probe (PedGeometry* geom)
+{
+       return _ext2_generic_probe (geom, 4);
+}
+
+static PedFileSystemOps _ext2_ops = {
+       probe:          _ext2_probe,
+};
+
+static PedFileSystemOps _ext3_ops = {
+       probe:          _ext3_probe,
+};
+
+static PedFileSystemOps _ext4_ops = {
+       probe:          _ext4_probe,
+};
+
+#define EXT23_BLOCK_SIZES ((int[6]){512, 1024, 2048, 4096, 8192, 0})
+
+static PedFileSystemType _ext2_type = {
+       next:            NULL,
+       ops:             &_ext2_ops,
+       name:            "ext2",
+       block_sizes:      EXT23_BLOCK_SIZES
+};
+
+static PedFileSystemType _ext3_type = {
+       next:            NULL,
+       ops:             &_ext3_ops,
+       name:            "ext3",
+       block_sizes:      EXT23_BLOCK_SIZES
+};
+
+static PedFileSystemType _ext4_type = {
+       next:            NULL,
+       ops:             &_ext4_ops,
+       name:            "ext4",
+       block_sizes:      EXT23_BLOCK_SIZES
+};
+
+void ped_file_system_ext2_init ()
+{
+       ped_file_system_type_register (&_ext2_type);
+       ped_file_system_type_register (&_ext3_type);
+       ped_file_system_type_register (&_ext4_type);
+}
+
+void ped_file_system_ext2_done ()
+{
+       ped_file_system_type_unregister (&_ext2_type);
+       ped_file_system_type_unregister (&_ext3_type);
+       ped_file_system_type_unregister (&_ext4_type);
+}
diff --git a/libparted/fs/fat/Makefile.am b/libparted/fs/fat/Makefile.am
new file mode 100644 (file)
index 0000000..9c975d7
--- /dev/null
@@ -0,0 +1,12 @@
+partedincludedir      =        -I$(top_srcdir)/include
+
+noinst_LTLIBRARIES    =        libfat.la
+libfat_la_SOURCES     = bootsector.c   \
+                       bootsector.h    \
+                       count.h         \
+                       fat.c           \
+                       fat.h
+
+INCLUDES = $(partedincludedir) $(INTLINCS)
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/libparted/fs/fat/Makefile.in b/libparted/fs/fat/Makefile.in
new file mode 100644 (file)
index 0000000..6fa633f
--- /dev/null
@@ -0,0 +1,1272 @@
+# Makefile.in generated by automake 1.11a from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in 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.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = libparted/fs/fat
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+       $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argmatch.m4 \
+       $(top_srcdir)/m4/assert.m4 $(top_srcdir)/m4/btowc.m4 \
+       $(top_srcdir)/m4/calloc.m4 $(top_srcdir)/m4/canonicalize.m4 \
+       $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
+       $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/configmake.m4 \
+       $(top_srcdir)/m4/dirname.m4 \
+       $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+       $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/environ.m4 \
+       $(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
+       $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fclose.m4 \
+       $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/fcntl_h.m4 \
+       $(top_srcdir)/m4/fflush.m4 $(top_srcdir)/m4/fpending.m4 \
+       $(top_srcdir)/m4/fpurge.m4 $(top_srcdir)/m4/freading.m4 \
+       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/fsync.m4 \
+       $(top_srcdir)/m4/ftell.m4 $(top_srcdir)/m4/ftello.m4 \
+       $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
+       $(top_srcdir)/m4/langinfo_h.m4 $(top_srcdir)/m4/lcmessage.m4 \
+       $(top_srcdir)/m4/lib-ignore.m4 $(top_srcdir)/m4/lib-ld.m4 \
+       $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/localcharset.m4 \
+       $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \
+       $(top_srcdir)/m4/locale-tr.m4 $(top_srcdir)/m4/locale-zh.m4 \
+       $(top_srcdir)/m4/locale_h.m4 $(top_srcdir)/m4/localename.m4 \
+       $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/long-options.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
+       $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+       $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
+       $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+       $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbtowc.m4 \
+       $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+       $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/multiarch.m4 \
+       $(top_srcdir)/m4/nl_langinfo.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/nocrash.m4 $(top_srcdir)/m4/o-direct.m4 \
+       $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/priv-set.m4 \
+       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+       $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+       $(top_srcdir)/m4/read.m4 $(top_srcdir)/m4/readlink.m4 \
+       $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/regex.m4 \
+       $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+       $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/setlocale.m4 \
+       $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/ssize_t.m4 \
+       $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdarg.m4 \
+       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strdup.m4 \
+       $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/strerror_r.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+       $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtoll.m4 \
+       $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/symlink.m4 \
+       $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+       $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/thread.m4 \
+       $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/time_h.m4 \
+       $(top_srcdir)/m4/ungetc.m4 $(top_srcdir)/m4/unistd_h.m4 \
+       $(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkdir.m4 \
+       $(top_srcdir)/m4/usleep.m4 $(top_srcdir)/m4/version-etc.m4 \
+       $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \
+       $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
+       $(top_srcdir)/m4/wcrtomb.m4 $(top_srcdir)/m4/wctob.m4 \
+       $(top_srcdir)/m4/wctomb.m4 $(top_srcdir)/m4/wctype_h.m4 \
+       $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+       $(top_srcdir)/m4/xstrndup.m4 $(top_srcdir)/m4/xstrtol.m4 \
+       $(top_srcdir)/m4/yield.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libfat_la_LIBADD =
+am_libfat_la_OBJECTS = bootsector.lo fat.lo
+libfat_la_OBJECTS = $(am_libfat_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/lib
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+       $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo "  CC      " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+SOURCES = $(libfat_la_SOURCES)
+DIST_SOURCES = $(libfat_la_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+pkglibexecdir = @pkglibexecdir@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+BUILDINFO = @BUILDINFO@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHECK_CFLAGS = @CHECK_CFLAGS@
+CHECK_LIBS = @CHECK_LIBS@
+CONFIG_INCLUDE = @CONFIG_INCLUDE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DYNAMIC_LOADING = @DYNAMIC_LOADING@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENABLE_DEVICE_MAPPER = @ENABLE_DEVICE_MAPPER@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FACCESSAT = @GNULIB_FACCESSAT@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCHMODAT = @GNULIB_FCHMODAT@
+GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FCNTL = @GNULIB_FCNTL@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FGETC = @GNULIB_FGETC@
+GNULIB_FGETS = @GNULIB_FGETS@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREAD = @GNULIB_FREAD@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSCANF = @GNULIB_FSCANF@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSTATAT = @GNULIB_FSTATAT@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FUTIMENS = @GNULIB_FUTIMENS@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETC = @GNULIB_GETC@
+GNULIB_GETCHAR = @GNULIB_GETCHAR@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETGROUPS = @GNULIB_GETGROUPS@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETS = @GNULIB_GETS@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
+GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_ISWBLANK = @GNULIB_ISWBLANK@
+GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@
+GNULIB_LCHMOD = @GNULIB_LCHMOD@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LINKAT = @GNULIB_LINKAT@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_LSTAT = @GNULIB_LSTAT@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MBTOWC = @GNULIB_MBTOWC@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDIRAT = @GNULIB_MKDIRAT@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKFIFO = @GNULIB_MKFIFO@
+GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@
+GNULIB_MKNOD = @GNULIB_MKNOD@
+GNULIB_MKNODAT = @GNULIB_MKNODAT@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@
+GNULIB_MKTIME = @GNULIB_MKTIME@
+GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@
+GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@
+GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_OPEN = @GNULIB_OPEN@
+GNULIB_OPENAT = @GNULIB_OPENAT@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE = @GNULIB_PIPE@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_PREAD = @GNULIB_PREAD@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READ = @GNULIB_READ@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_READLINKAT = @GNULIB_READLINKAT@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_REALPATH = @GNULIB_REALPATH@
+GNULIB_REMOVE = @GNULIB_REMOVE@
+GNULIB_RENAME = @GNULIB_RENAME@
+GNULIB_RENAMEAT = @GNULIB_RENAMEAT@
+GNULIB_RMDIR = @GNULIB_RMDIR@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SETLOCALE = @GNULIB_SETLOCALE@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STAT = @GNULIB_STAT@
+GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRERROR_R = @GNULIB_STRERROR_R@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRPTIME = @GNULIB_STRPTIME@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_SYMLINK = @GNULIB_SYMLINK@
+GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
+GNULIB_TIMEGM = @GNULIB_TIMEGM@
+GNULIB_TIME_R = @GNULIB_TIME_R@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
+GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
+GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNLINK = @GNULIB_UNLINK@
+GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_USLEEP = @GNULIB_USLEEP@
+GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VFSCANF = @GNULIB_VFSCANF@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSCANF = @GNULIB_VSCANF@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCPCPY = @GNULIB_WCPCPY@
+GNULIB_WCPNCPY = @GNULIB_WCPNCPY@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@
+GNULIB_WCSCAT = @GNULIB_WCSCAT@
+GNULIB_WCSCHR = @GNULIB_WCSCHR@
+GNULIB_WCSCMP = @GNULIB_WCSCMP@
+GNULIB_WCSCOLL = @GNULIB_WCSCOLL@
+GNULIB_WCSCPY = @GNULIB_WCSCPY@
+GNULIB_WCSCSPN = @GNULIB_WCSCSPN@
+GNULIB_WCSDUP = @GNULIB_WCSDUP@
+GNULIB_WCSLEN = @GNULIB_WCSLEN@
+GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@
+GNULIB_WCSNCAT = @GNULIB_WCSNCAT@
+GNULIB_WCSNCMP = @GNULIB_WCSNCMP@
+GNULIB_WCSNCPY = @GNULIB_WCSNCPY@
+GNULIB_WCSNLEN = @GNULIB_WCSNLEN@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSPBRK = @GNULIB_WCSPBRK@
+GNULIB_WCSRCHR = @GNULIB_WCSRCHR@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCSSPN = @GNULIB_WCSSPN@
+GNULIB_WCSSTR = @GNULIB_WCSSTR@
+GNULIB_WCSTOK = @GNULIB_WCSTOK@
+GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@
+GNULIB_WCSXFRM = @GNULIB_WCSXFRM@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCTOMB = @GNULIB_WCTOMB@
+GNULIB_WCTRANS = @GNULIB_WCTRANS@
+GNULIB_WCTYPE = @GNULIB_WCTYPE@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WMEMCHR = @GNULIB_WMEMCHR@
+GNULIB_WMEMCMP = @GNULIB_WMEMCMP@
+GNULIB_WMEMCPY = @GNULIB_WMEMCPY@
+GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@
+GNULIB_WMEMSET = @GNULIB_WMEMSET@
+GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
+HAVE_CHOWN = @HAVE_CHOWN@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@
+HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SETENV = @HAVE_DECL_SETENV@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@
+HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_DUPLOCALE = @HAVE_DUPLOCALE@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
+HAVE_FCHMODAT = @HAVE_FCHMODAT@
+HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
+HAVE_FCNTL = @HAVE_FCNTL@
+HAVE_FEATURES_H = @HAVE_FEATURES_H@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSTATAT = @HAVE_FSTATAT@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_FUTIMENS = @HAVE_FUTIMENS@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETGROUPS = @HAVE_GETGROUPS@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETLOGIN = @HAVE_GETLOGIN@
+HAVE_GETOPT_H = @HAVE_GETOPT_H@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
+HAVE_GRANTPT = @HAVE_GRANTPT@
+HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWBLANK = @HAVE_ISWBLANK@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
+HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
+HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
+HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
+HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
+HAVE_LCHMOD = @HAVE_LCHMOD@
+HAVE_LCHOWN = @HAVE_LCHOWN@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_LSTAT = @HAVE_LSTAT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSLEN = @HAVE_MBSLEN@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMCHR = @HAVE_MEMCHR@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDIRAT = @HAVE_MKDIRAT@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKFIFO = @HAVE_MKFIFO@
+HAVE_MKFIFOAT = @HAVE_MKFIFOAT@
+HAVE_MKNOD = @HAVE_MKNOD@
+HAVE_MKNODAT = @HAVE_MKNODAT@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
+HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
+HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
+HAVE_OPENAT = @HAVE_OPENAT@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PIPE = @HAVE_PIPE@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PWRITE = @HAVE_PWRITE@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_READLINKAT = @HAVE_READLINKAT@
+HAVE_REALPATH = @HAVE_REALPATH@
+HAVE_RENAMEAT = @HAVE_RENAMEAT@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRPTIME = @HAVE_STRPTIME@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYMLINK = @HAVE_SYMLINK@
+HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_TIMEGM = @HAVE_TIMEGM@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_USLEEP = @HAVE_USLEEP@
+HAVE_UTIMENSAT = @HAVE_UTIMENSAT@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCPCPY = @HAVE_WCPCPY@
+HAVE_WCPNCPY = @HAVE_WCPNCPY@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSCASECMP = @HAVE_WCSCASECMP@
+HAVE_WCSCAT = @HAVE_WCSCAT@
+HAVE_WCSCHR = @HAVE_WCSCHR@
+HAVE_WCSCMP = @HAVE_WCSCMP@
+HAVE_WCSCOLL = @HAVE_WCSCOLL@
+HAVE_WCSCPY = @HAVE_WCSCPY@
+HAVE_WCSCSPN = @HAVE_WCSCSPN@
+HAVE_WCSDUP = @HAVE_WCSDUP@
+HAVE_WCSLEN = @HAVE_WCSLEN@
+HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@
+HAVE_WCSNCAT = @HAVE_WCSNCAT@
+HAVE_WCSNCMP = @HAVE_WCSNCMP@
+HAVE_WCSNCPY = @HAVE_WCSNCPY@
+HAVE_WCSNLEN = @HAVE_WCSNLEN@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSPBRK = @HAVE_WCSPBRK@
+HAVE_WCSRCHR = @HAVE_WCSRCHR@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCSSPN = @HAVE_WCSSPN@
+HAVE_WCSSTR = @HAVE_WCSSTR@
+HAVE_WCSTOK = @HAVE_WCSTOK@
+HAVE_WCSWIDTH = @HAVE_WCSWIDTH@
+HAVE_WCSXFRM = @HAVE_WCSXFRM@
+HAVE_WCTRANS_T = @HAVE_WCTRANS_T@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WCTYPE_T = @HAVE_WCTYPE_T@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WMEMCHR = @HAVE_WMEMCHR@
+HAVE_WMEMCMP = @HAVE_WMEMCMP@
+HAVE_WMEMCPY = @HAVE_WMEMCPY@
+HAVE_WMEMMOVE = @HAVE_WMEMMOVE@
+HAVE_WMEMSET = @HAVE_WMEMSET@
+HAVE_XLOCALE_H = @HAVE_XLOCALE_H@
+HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
+IGNORE_UNUSED_LIBRARIES_CFLAGS = @IGNORE_UNUSED_LIBRARIES_CFLAGS@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@
+INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMULTITHREAD = @LIBMULTITHREAD@
+LIBOBJS = @LIBOBJS@
+LIBPTH = @LIBPTH@
+LIBPTH_PREFIX = @LIBPTH_PREFIX@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTHREAD = @LIBTHREAD@
+LIBTOOL = @LIBTOOL@
+LIB_BLKID = @LIB_BLKID@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBMULTITHREAD = @LTLIBMULTITHREAD@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBPTH = @LTLIBPTH@
+LTLIBTHREAD = @LTLIBTHREAD@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
+NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@
+NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
+NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@
+NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FCNTL_H = @NEXT_FCNTL_H@
+NEXT_GETOPT_H = @NEXT_GETOPT_H@
+NEXT_INTTYPES_H = @NEXT_INTTYPES_H@
+NEXT_LANGINFO_H = @NEXT_LANGINFO_H@
+NEXT_LOCALE_H = @NEXT_LOCALE_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@
+NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@
+NEXT_TIME_H = @NEXT_TIME_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PARTED_USABLE_TEST_DIR = @PARTED_USABLE_TEST_DIR@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CALLOC = @REPLACE_CALLOC@
+REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP = @REPLACE_DUP@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@
+REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FCNTL = @REPLACE_FCNTL@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FSTAT = @REPLACE_FSTAT@
+REPLACE_FSTATAT = @REPLACE_FSTATAT@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_FUTIMENS = @REPLACE_FUTIMENS@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETDELIM = @REPLACE_GETDELIM@
+REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@
+REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LINK = @REPLACE_LINK@
+REPLACE_LINKAT = @REPLACE_LINKAT@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_LSTAT = @REPLACE_LSTAT@
+REPLACE_MALLOC = @REPLACE_MALLOC@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MBTOWC = @REPLACE_MBTOWC@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKDIR = @REPLACE_MKDIR@
+REPLACE_MKFIFO = @REPLACE_MKFIFO@
+REPLACE_MKNOD = @REPLACE_MKNOD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_MKTIME = @REPLACE_MKTIME@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_OPEN = @REPLACE_OPEN@
+REPLACE_OPENAT = @REPLACE_OPENAT@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PREAD = @REPLACE_PREAD@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
+REPLACE_READ = @REPLACE_READ@
+REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_REALLOC = @REPLACE_REALLOC@
+REPLACE_REALPATH = @REPLACE_REALPATH@
+REPLACE_REMOVE = @REPLACE_REMOVE@
+REPLACE_RENAME = @REPLACE_RENAME@
+REPLACE_RENAMEAT = @REPLACE_RENAMEAT@
+REPLACE_RMDIR = @REPLACE_RMDIR@
+REPLACE_SETENV = @REPLACE_SETENV@
+REPLACE_SETLOCALE = @REPLACE_SETLOCALE@
+REPLACE_SLEEP = @REPLACE_SLEEP@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STAT = @REPLACE_STAT@
+REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRERROR_R = @REPLACE_STRERROR_R@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
+REPLACE_STRNDUP = @REPLACE_STRNDUP@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
+REPLACE_SYMLINK = @REPLACE_SYMLINK@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
+REPLACE_UNLINK = @REPLACE_UNLINK@
+REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
+REPLACE_UNSETENV = @REPLACE_UNSETENV@
+REPLACE_USLEEP = @REPLACE_USLEEP@
+REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCTOMB = @REPLACE_WCTOMB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SELINUX_LIBS = @SELINUX_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
+UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
+UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+YIELD_LIB = @YIELD_LIB@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+partedincludedir = -I$(top_srcdir)/include
+noinst_LTLIBRARIES = libfat.la
+libfat_la_SOURCES = bootsector.c       \
+                       bootsector.h    \
+                       count.h         \
+                       fat.c           \
+                       fat.h
+
+INCLUDES = $(partedincludedir) $(INTLINCS)
+MAINTAINERCLEANFILES = Makefile.in
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libparted/fs/fat/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu libparted/fs/fat/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+       -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+       @list='$(noinst_LTLIBRARIES)'; \
+       locs=`for p in $$list; do echo $$p; done | \
+             sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+             sort -u`; \
+       test -z "$$locs" || { \
+         echo rm -f $${locs}; \
+         rm -f $${locs}; \
+       }
+libfat.la: $(libfat_la_OBJECTS) $(libfat_la_DEPENDENCIES) $(EXTRA_libfat_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK)  $(libfat_la_OBJECTS) $(libfat_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bootsector.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fat.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+       mostlyclean-am
+
+distclean: distclean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+       clean-libtool clean-noinstLTLIBRARIES cscopelist ctags \
+       distclean distclean-compile distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       tags uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libparted/fs/fat/bootsector.c b/libparted/fs/fat/bootsector.c
new file mode 100644 (file)
index 0000000..6b78387
--- /dev/null
@@ -0,0 +1,449 @@
+/*
+    libparted
+    Copyright (C) 1998-2000, 2002, 2004, 2007, 2009-2011 Free Software
+    Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#include <config.h>
+#include "fat.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <errno.h>
+
+/* Reads in the boot sector (superblock), and does a minimum of sanity
+ * checking.  The goals are:
+ *     - to detect fat file systems, even if they are damaged [i.e. not
+ * return an error / throw an exception]
+ *     - to fail detection if there's not enough information for
+ * fat_boot_sector_probe_type() to work (or possibly crash on a divide-by-zero)
+ */
+int
+fat_boot_sector_read (FatBootSector* bs, const PedGeometry *geom)
+{
+       PED_ASSERT (bs != NULL);
+       PED_ASSERT (geom != NULL);
+
+       if (!ped_geometry_read (geom, bs, 0, 1))
+               return 0;
+
+       if (PED_LE16_TO_CPU (bs->boot_sign) != 0xAA55) {
+               ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                       _("File system has an invalid signature for a FAT "
+                         "file system."));
+               return 0;
+       }
+
+       if (!bs->system_id[0]) {
+               ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                       _("File system has an invalid signature for a FAT "
+                         "file system."));
+               return 0;
+       }
+
+       if (!bs->sector_size
+            || PED_LE16_TO_CPU (bs->sector_size) % PED_SECTOR_SIZE_DEFAULT) {
+               ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                       _("File system has an invalid sector size for a FAT "
+                         "file system."));
+               return 0;
+       }
+
+       if (!bs->cluster_size) {
+               ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                       _("File system has an invalid cluster size for a FAT "
+                         "file system."));
+               return 0;
+       }
+
+       if (!bs->reserved) {
+               ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                       _("File system has an invalid number of reserved "
+                         "sectors for a FAT file system."));
+               return 0;
+       }
+
+       if (bs->fats < 1 || bs->fats > 4) {
+               ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                       _("File system has an invalid number of FATs."));
+               return 0;
+       }
+
+       return 1;
+}
+
+/*
+    Don't trust the FAT12, FAT16 or FAT32 label string.
+ */
+FatType
+fat_boot_sector_probe_type (const FatBootSector* bs, const PedGeometry* geom)
+{
+       PedSector       logical_sector_size;
+       PedSector       first_cluster_sector;
+       FatCluster      cluster_count;
+
+       if (!PED_LE16_TO_CPU (bs->dir_entries))
+               return FAT_TYPE_FAT32;
+
+       logical_sector_size = PED_LE16_TO_CPU (bs->sector_size) / 512;
+
+       first_cluster_sector
+               = PED_LE16_TO_CPU (bs->reserved) * logical_sector_size
+                 + 2 * PED_LE16_TO_CPU (bs->fat_length) * logical_sector_size
+                 + PED_LE16_TO_CPU (bs->dir_entries)
+                       / (512 / sizeof (FatDirEntry));
+       cluster_count = (geom->length - first_cluster_sector)
+                       / bs->cluster_size / logical_sector_size;
+       if (cluster_count > MAX_FAT12_CLUSTERS)
+               return FAT_TYPE_FAT16;
+       else
+               return FAT_TYPE_FAT12;
+}
+
+static int
+_fat_table_entry_size (FatType fat_type)
+{
+       switch (fat_type) {
+               case FAT_TYPE_FAT12:
+               return 2;               /* FIXME: how? */
+
+               case FAT_TYPE_FAT16:
+               return 2;
+
+               case FAT_TYPE_FAT32:
+               return 4;
+       }
+
+       return 0;
+}
+
+/* Analyses the boot sector, and sticks appropriate numbers in
+   fs->type_specific.
+
+   Note: you need to subtract (2 * cluster_sectors) off cluster offset,
+   because the first cluster is number 2.  (0 and 1 are not real clusters,
+   and referencing them is a bug)
+ */
+int
+fat_boot_sector_analyse (FatBootSector* bs, PedFileSystem* fs)
+{
+       FatSpecific*            fs_info = FAT_SPECIFIC (fs);
+       int                     fat_entry_size;
+
+       PED_ASSERT (bs != NULL);
+
+       if (PED_LE16_TO_CPU (bs->sector_size) != 512) {
+               if (ped_exception_throw (
+                       PED_EXCEPTION_BUG,
+                       PED_EXCEPTION_IGNORE_CANCEL,
+                       _("This file system has a logical sector size of %d.  "
+                       "GNU Parted is known not to work properly with sector "
+                       "sizes other than 512 bytes."),
+                       (int) PED_LE16_TO_CPU (bs->sector_size))
+                               != PED_EXCEPTION_IGNORE)
+                       return 0;
+       }
+
+       fs_info->logical_sector_size = PED_LE16_TO_CPU (bs->sector_size) / 512;
+
+       fs_info->sectors_per_track = PED_LE16_TO_CPU (bs->secs_track);
+       fs_info->heads = PED_LE16_TO_CPU (bs->heads);
+       if (fs_info->sectors_per_track < 1 || fs_info->sectors_per_track > 63
+           || fs_info->heads < 1 || fs_info->heads > 255) {
+               PedCHSGeometry* bios_geom = &fs->geom->dev->bios_geom;
+               int cyl_count = 0;
+
+               if (fs_info->heads > 0 && fs_info->sectors_per_track > 0)
+                       cyl_count = fs->geom->dev->length / fs_info->heads
+                                       / fs_info->sectors_per_track;
+
+               switch (ped_exception_throw (
+                       PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_FIX + PED_EXCEPTION_IGNORE
+                       + PED_EXCEPTION_CANCEL,
+                       _("The file system's CHS geometry is (%d, %d, %d), "
+                         "which is invalid.  The partition table's CHS "
+                         "geometry is (%d, %d, %d).  If you select Ignore, "
+                         "the file system's CHS geometry will be left "
+                         "unchanged.  If you select Fix, the file system's "
+                         "CHS geometry will be set to match the partition "
+                         "table's CHS geometry."),
+                        cyl_count, fs_info->heads, fs_info->sectors_per_track,
+                        bios_geom->cylinders, bios_geom->heads,
+                        bios_geom->sectors)) {
+
+               case PED_EXCEPTION_FIX:
+                       fs_info->sectors_per_track = bios_geom->sectors;
+                       fs_info->heads = bios_geom->heads;
+                       bs->secs_track
+                               = PED_CPU_TO_LE16 (fs_info->sectors_per_track);
+                       bs->heads = PED_CPU_TO_LE16 (fs_info->heads);
+                       if (!fat_boot_sector_write (bs, fs))
+                               return 0;
+                       break;
+
+               case PED_EXCEPTION_CANCEL:
+                       return 0;
+
+               case PED_EXCEPTION_IGNORE:
+                       break;
+
+                default:
+                        break;
+               }
+       }
+
+       if (bs->sectors)
+               fs_info->sector_count = PED_LE16_TO_CPU (bs->sectors)
+                                               * fs_info->logical_sector_size;
+       else
+               fs_info->sector_count = PED_LE32_TO_CPU (bs->sector_count)
+                                               * fs_info->logical_sector_size;
+
+       fs_info->fat_table_count = bs->fats;
+       fs_info->root_dir_entry_count = PED_LE16_TO_CPU (bs->dir_entries);
+       fs_info->fat_offset = PED_LE16_TO_CPU (bs->reserved)
+                                       * fs_info->logical_sector_size;
+       fs_info->cluster_sectors = bs->cluster_size
+                                  * fs_info->logical_sector_size;
+       fs_info->cluster_size = fs_info->cluster_sectors * 512;
+
+       if (fs_info->logical_sector_size == 0) {
+               ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                       _("FAT boot sector says logical sector size is 0.  "
+                         "This is weird. "));
+               return 0;
+       }
+       if (fs_info->fat_table_count == 0) {
+               ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                       _("FAT boot sector says there are no FAT tables.  This "
+                         "is weird. "));
+               return 0;
+       }
+       if (fs_info->cluster_sectors == 0) {
+               ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                       _("FAT boot sector says clusters are 0 sectors.  This "
+                         "is weird. "));
+               return 0;
+       }
+
+       fs_info->fat_type = fat_boot_sector_probe_type (bs, fs->geom);
+       if (fs_info->fat_type == FAT_TYPE_FAT12) {
+               ped_exception_throw (
+                       PED_EXCEPTION_NO_FEATURE,
+                       PED_EXCEPTION_CANCEL,
+                       _("File system is FAT12, which is unsupported."));
+               return 0;
+       }
+       if (fs_info->fat_type == FAT_TYPE_FAT16) {
+               fs_info->fat_sectors = PED_LE16_TO_CPU (bs->fat_length)
+                                      * fs_info->logical_sector_size;
+               fs_info->serial_number
+                       = PED_LE32_TO_CPU (bs->u.fat16.serial_number);
+               fs_info->root_cluster = 0;
+               fs_info->root_dir_offset
+                       = fs_info->fat_offset
+                         + fs_info->fat_sectors * fs_info->fat_table_count;
+               fs_info->root_dir_sector_count
+                       = fs_info->root_dir_entry_count * sizeof (FatDirEntry)
+                         / (512 * fs_info->logical_sector_size);
+               fs_info->cluster_offset
+                       = fs_info->root_dir_offset
+                         + fs_info->root_dir_sector_count;
+       }
+       if (fs_info->fat_type == FAT_TYPE_FAT32) {
+               fs_info->fat_sectors = PED_LE32_TO_CPU (bs->u.fat32.fat_length)
+                                       * fs_info->logical_sector_size;
+               fs_info->serial_number
+                       = PED_LE32_TO_CPU (bs->u.fat32.serial_number);
+               fs_info->info_sector_offset
+                   = PED_LE16_TO_CPU (fs_info->boot_sector.u.fat32.info_sector)
+                         * fs_info->logical_sector_size;
+               fs_info->boot_sector_backup_offset
+                 = PED_LE16_TO_CPU (fs_info->boot_sector.u.fat32.backup_sector)
+                         * fs_info->logical_sector_size;
+               fs_info->root_cluster
+                       = PED_LE32_TO_CPU (bs->u.fat32.root_dir_cluster);
+               fs_info->root_dir_offset = 0;
+               fs_info->root_dir_sector_count = 0;
+               fs_info->cluster_offset
+                       = fs_info->fat_offset
+                         + fs_info->fat_sectors * fs_info->fat_table_count;
+       }
+
+       fs_info->cluster_count
+               = (fs_info->sector_count - fs_info->cluster_offset)
+                 / fs_info->cluster_sectors;
+
+       fat_entry_size = _fat_table_entry_size (fs_info->fat_type);
+       if (fs_info->cluster_count + 2
+                       > fs_info->fat_sectors * 512 / fat_entry_size)
+               fs_info->cluster_count
+                       = fs_info->fat_sectors * 512 / fat_entry_size - 2;
+
+       fs_info->dir_entries_per_cluster
+               = fs_info->cluster_size / sizeof (FatDirEntry);
+       return 1;
+}
+
+#ifndef DISCOVER_ONLY
+int
+fat_boot_sector_set_boot_code (FatBootSector* bs)
+{
+       PED_ASSERT (bs != NULL);
+
+       memset (bs, 0, 512);
+       memcpy (bs->boot_jump, FAT_BOOT_JUMP, 3);
+       memcpy (bs->u.fat32.boot_code, FAT_BOOT_CODE, FAT_BOOT_CODE_LENGTH);
+       return 1;
+}
+
+int
+fat_boot_sector_generate (FatBootSector* bs, const PedFileSystem* fs)
+{
+       FatSpecific*    fs_info = FAT_SPECIFIC (fs);
+
+       PED_ASSERT (bs != NULL);
+
+       memcpy (bs->system_id, "MSWIN4.1", 8);
+       bs->sector_size = PED_CPU_TO_LE16 (fs_info->logical_sector_size * 512);
+       bs->cluster_size = fs_info->cluster_sectors
+                               / fs_info->logical_sector_size;
+       bs->reserved = PED_CPU_TO_LE16 (fs_info->fat_offset
+                                       / fs_info->logical_sector_size);
+       bs->fats = fs_info->fat_table_count;
+
+       bs->dir_entries = (fs_info->fat_type == FAT_TYPE_FAT16)
+                         ? PED_CPU_TO_LE16 (fs_info->root_dir_entry_count)
+                         : 0;
+
+       if (fs_info->sector_count / fs_info->logical_sector_size > 0xffff
+               || fs_info->fat_type == FAT_TYPE_FAT32) {
+               bs->sectors = 0;
+               bs->sector_count = PED_CPU_TO_LE32 (fs_info->sector_count
+                                               / fs_info->logical_sector_size);
+       } else {
+               bs->sectors = PED_CPU_TO_LE16 (fs_info->sector_count
+                                              / fs_info->logical_sector_size);
+               bs->sector_count = 0;
+       }
+
+       bs->media = 0xf8;
+
+       bs->secs_track = PED_CPU_TO_LE16 (fs_info->sectors_per_track);
+       bs->heads = PED_CPU_TO_LE16 (fs_info->heads);
+       bs->hidden = PED_CPU_TO_LE32 (fs->geom->start);
+
+       if (fs_info->fat_type == FAT_TYPE_FAT32) {
+               bs->fat_length = 0;
+               bs->u.fat32.fat_length = PED_CPU_TO_LE32 (fs_info->fat_sectors
+                                               / fs_info->logical_sector_size);
+               bs->u.fat32.flags = 0;  /* FIXME: what the hell are these? */
+               bs->u.fat32.version = 0;  /* must be 0, for Win98 bootstrap */
+               bs->u.fat32.root_dir_cluster
+                       = PED_CPU_TO_LE32 (fs_info->root_cluster);
+               bs->u.fat32.info_sector
+                       = PED_CPU_TO_LE16 (fs_info->info_sector_offset
+                                          / fs_info->logical_sector_size);
+               bs->u.fat32.backup_sector
+                       = PED_CPU_TO_LE16 (fs_info->boot_sector_backup_offset
+                                          / fs_info->logical_sector_size);
+
+               bs->u.fat32.drive_num = 0x80;   /* _ALWAYS_ 0x80.  silly DOS */
+
+               memset (bs->u.fat32.empty_1, 0, 12);
+
+               bs->u.fat32.ext_signature = 0x29;
+               bs->u.fat32.serial_number
+                       = PED_CPU_TO_LE32 (fs_info->serial_number);
+               memcpy (bs->u.fat32.volume_name, "NO NAME    ", 11);
+               memcpy (bs->u.fat32.fat_name, "FAT32   ", 8);
+       } else {
+               bs->fat_length
+                       = PED_CPU_TO_LE16 (fs_info->fat_sectors
+                                          / fs_info->logical_sector_size);
+
+               bs->u.fat16.drive_num = 0x80;   /* _ALWAYS_ 0x80.  silly DOS */
+
+               bs->u.fat16.ext_signature = 0x29;
+               bs->u.fat16.serial_number
+                       = PED_CPU_TO_LE32 (fs_info->serial_number);
+               memcpy (bs->u.fat16.volume_name, "NO NAME    ", 11);
+               memcpy (bs->u.fat16.fat_name, "FAT16   ", 8);
+       }
+
+       bs->boot_sign = PED_CPU_TO_LE16 (0xaa55);
+
+       return 1;
+}
+
+int
+fat_boot_sector_write (const FatBootSector* bs, PedFileSystem* fs)
+{
+       FatSpecific*    fs_info = FAT_SPECIFIC (fs);
+
+       PED_ASSERT (bs != NULL);
+
+       if (!ped_geometry_write (fs->geom, bs, 0, 1))
+               return 0;
+       if (fs_info->fat_type == FAT_TYPE_FAT32) {
+               if (!ped_geometry_write (fs->geom, bs,
+                                        fs_info->boot_sector_backup_offset, 1))
+                       return 0;
+       }
+       return ped_geometry_sync (fs->geom);
+}
+
+int
+fat_info_sector_read (FatInfoSector* is, const PedFileSystem* fs)
+{
+       FatSpecific*    fs_info = FAT_SPECIFIC (fs);
+       int             status;
+
+       PED_ASSERT (is != NULL);
+
+       if (!ped_geometry_read (fs->geom, is, fs_info->info_sector_offset, 1))
+               return 0;
+
+       if (PED_LE32_TO_CPU (is->signature_2) != FAT32_INFO_MAGIC2) {
+               status = ped_exception_throw (PED_EXCEPTION_WARNING,
+                               PED_EXCEPTION_IGNORE_CANCEL,
+                               _("The information sector has the wrong "
+                               "signature (%x).  Select cancel for now, "
+                               "and send in a bug report.  If you're "
+                               "desperate, it's probably safe to ignore."),
+                               PED_LE32_TO_CPU (is->signature_2));
+               if (status == PED_EXCEPTION_CANCEL) return 0;
+       }
+       return 1;
+}
+
+int
+fat_info_sector_write (const FatInfoSector* is, PedFileSystem *fs)
+{
+       FatSpecific*    fs_info = FAT_SPECIFIC (fs);
+
+       PED_ASSERT (is != NULL);
+
+       if (!ped_geometry_write (fs->geom, is, fs_info->info_sector_offset, 1))
+               return 0;
+       return ped_geometry_sync (fs->geom);
+}
+#endif /* !DISCOVER_ONLY */
diff --git a/libparted/fs/fat/bootsector.h b/libparted/fs/fat/bootsector.h
new file mode 100644 (file)
index 0000000..4020d0e
--- /dev/null
@@ -0,0 +1,130 @@
+/*
+    libparted
+    Copyright (C) 1998-2000, 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef PED_FAT_BOOTSECTOR_H
+#define PED_FAT_BOOTSECTOR_H
+
+typedef struct _FatBootSector  FatBootSector;
+typedef struct _FatInfoSector  FatInfoSector;
+
+#include "fat.h"
+
+#define FAT32_INFO_MAGIC1      0x41615252
+#define FAT32_INFO_MAGIC2      0x61417272
+#define FAT32_INFO_MAGIC3      0xaa55
+
+/* stolen from mkdosfs, by Dave Hudson */
+
+#define FAT_BOOT_MESSAGE       \
+"This partition does not have an operating system loader installed on it.\n\r"\
+"Press a key to reboot..."
+
+#define FAT_BOOT_JUMP  "\xeb\x58\x90"          /* jmp  +5a */
+
+#define FAT_BOOT_CODE  "\x0e"                  /* push cs */           \
+                       "\x1f"                  /* pop ds */            \
+                       "\xbe\x74\x7e"          /* mov si, offset message */ \
+                                       /* write_msg_loop: */           \
+                       "\xac"                  /* lodsb */             \
+                       "\x22\xc0"              /* and al, al */        \
+                       "\x74\x06"              /* jz done (+8) */      \
+                       "\xb4\x0e"              /* mov ah, 0x0e */      \
+                       "\xcd\x10"              /* int 0x10 */          \
+                       "\xeb\xf5"              /* jmp write_msg_loop */ \
+                                       /* done: */                     \
+                       "\xb4\x00"              /* mov ah, 0x00 */      \
+                       "\xcd\x16"              /* int 0x16 */          \
+                       "\xb4\x00"              /* mov ah, 0x00 */      \
+                       "\xcd\x19"              /* int 0x19 */          \
+                       "\xeb\xfe"              /* jmp +0 - in case int 0x19 */ \
+                                               /* doesn't work */      \
+                                       /* message: */                  \
+                       FAT_BOOT_MESSAGE
+
+#define FAT_BOOT_CODE_LENGTH 128
+
+struct __attribute__ ((packed)) _FatBootSector {
+        uint8_t                boot_jump[3];   /* 00: Boot strap short or near jump */
+        uint8_t                system_id[8];   /* 03: system name */
+        uint16_t       sector_size;    /* 0b: bytes per logical sector */
+        uint8_t                cluster_size;   /* 0d: sectors/cluster */
+        uint16_t       reserved;       /* 0e: reserved sectors */
+        uint8_t                fats;           /* 10: number of FATs */
+        uint16_t       dir_entries;    /* 11: number of root directory entries */
+        uint16_t       sectors;        /* 13: if 0, total_sect supersedes */
+        uint8_t                media;          /* 15: media code */
+        uint16_t       fat_length;     /* 16: sectors/FAT for FAT12/16 */
+        uint16_t       secs_track;     /* 18: sectors per track */
+        uint16_t       heads;          /* 1a: number of heads */
+        uint32_t       hidden;         /* 1c: hidden sectors (partition start) */
+        uint32_t       sector_count;   /* 20: no. of sectors (if sectors == 0) */
+
+        union __attribute__ ((packed)) {
+                /* FAT16 fields */
+                struct __attribute__ ((packed)) {
+                        uint8_t                drive_num;      /* 24: */
+                        uint8_t                empty_1;        /* 25: */
+                        uint8_t                ext_signature;  /* 26: always 0x29 */
+                        uint32_t       serial_number;  /* 27: */
+                        uint8_t                volume_name [11];       /* 2b: */
+                        uint8_t                fat_name [8];   /* 36: */
+                        uint8_t                boot_code[448]; /* 3f: Boot code (or message) */
+                } fat16;
+                /* FAT32 fields */
+                struct __attribute__ ((packed)) {
+                        uint32_t       fat_length;     /* 24: size of FAT in sectors */
+                        uint16_t       flags;          /* 28: bit8: fat mirroring, low4: active fat */
+                        uint16_t       version;        /* 2a: minor * 256 + major */
+                        uint32_t       root_dir_cluster;       /* 2c: */
+                        uint16_t       info_sector;    /* 30: */
+                        uint16_t       backup_sector;  /* 32: */
+                        uint8_t                empty_1 [12];   /* 34: */
+                        uint16_t       drive_num;      /* 40: */
+                        uint8_t                ext_signature;  /* 42: always 0x29 */
+                        uint32_t       serial_number;  /* 43: */
+                        uint8_t                volume_name [11];       /* 47: */
+                        uint8_t                fat_name [8];   /* 52: */
+                        uint8_t                boot_code[420]; /* 5a: Boot code (or message) */
+                } fat32;
+        } u;
+
+       uint16_t        boot_sign;      /* 1fe: always 0xAA55 */
+};
+
+struct __attribute__ ((packed)) _FatInfoSector {
+        uint32_t       signature_1;    /* should be 0x41615252 */
+        uint8_t                unused [480];
+        uint32_t       signature_2;    /* should be 0x61417272 */
+        uint32_t       free_clusters;
+        uint32_t       next_cluster;   /* most recently allocated cluster */
+        uint8_t                unused2 [0xe];
+        uint16_t       signature_3;    /* should be 0xaa55 */
+};
+
+int fat_boot_sector_read (FatBootSector* bs, const PedGeometry* geom);
+FatType fat_boot_sector_probe_type (const FatBootSector* bs,
+                                   const PedGeometry* geom);
+int fat_boot_sector_analyse (FatBootSector* bs, PedFileSystem* fs);
+int fat_boot_sector_set_boot_code (FatBootSector* bs);
+int fat_boot_sector_generate (FatBootSector* bs, const PedFileSystem* fs);
+int fat_boot_sector_write (const FatBootSector* bs, PedFileSystem* fs);
+
+int fat_info_sector_read (FatInfoSector* is, const PedFileSystem* fs);
+int fat_info_sector_write (const FatInfoSector* is, PedFileSystem* fs);
+
+#endif /* PED_FAT_BOOTSECTOR_H */
diff --git a/libparted/fs/fat/count.h b/libparted/fs/fat/count.h
new file mode 100644 (file)
index 0000000..622e796
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+    libparted
+    Copyright (C) 1999-2000, 2007-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef COUNT_H_INCLUDED
+#define COUNT_H_INCLUDED
+
+typedef enum _FatClusterFlag FatClusterFlag;
+typedef struct _FatClusterInfo FatClusterInfo;
+
+enum _FatClusterFlag {
+       FAT_FLAG_FREE=0,
+       FAT_FLAG_FILE=1,
+       FAT_FLAG_DIRECTORY=2,
+       FAT_FLAG_BAD=3
+};
+
+struct __attribute__ ((packed)) _FatClusterInfo {
+       unsigned int    units_used:6;   /* 1 unit = cluster_size / 64 */
+       FatClusterFlag  flag:2;
+};
+
+extern int fat_collect_cluster_info (PedFileSystem *fs);
+extern FatClusterFlag fat_get_cluster_flag (PedFileSystem* fs,
+                                           FatCluster cluster);
+extern PedSector fat_get_cluster_usage (PedFileSystem* fs, FatCluster cluster);
+extern FatClusterFlag fat_get_fragment_flag (PedFileSystem* fs,
+                                            FatFragment frag);
+extern int fat_is_fragment_active (PedFileSystem* fs, FatFragment frag);
+
+#endif /* COUNT_H_INCLUDED */
diff --git a/libparted/fs/fat/fat.c b/libparted/fs/fat/fat.c
new file mode 100644 (file)
index 0000000..45993ad
--- /dev/null
@@ -0,0 +1,187 @@
+/*
+    libparted
+    Copyright (C) 1998-2001, 2007-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#include <config.h>
+#include <string.h>
+#include <uuid/uuid.h>
+
+#include "fat.h"
+
+PedFileSystem*
+fat_alloc (const PedGeometry* geom)
+{
+       PedFileSystem*          fs;
+
+       fs = (PedFileSystem*) ped_malloc (sizeof (PedFileSystem));
+       if (!fs)
+               goto error;
+
+       fs->type_specific = (FatSpecific*) ped_malloc (sizeof (FatSpecific));
+       if (!fs->type_specific)
+               goto error_free_fs;
+
+       fs->geom = ped_geometry_duplicate (geom);
+       if (!fs->geom)
+               goto error_free_type_specific;
+
+       fs->checked = 0;
+       return fs;
+
+error_free_type_specific:
+       free (fs->type_specific);
+error_free_fs:
+       free (fs);
+error:
+       return NULL;
+}
+
+void
+fat_free_buffers (PedFileSystem* fs)
+{
+       FatSpecific*    fs_info = FAT_SPECIFIC (fs);
+
+       free (fs_info->cluster_info);
+       free (fs_info->buffer);
+}
+
+void
+fat_free (PedFileSystem* fs)
+{
+       ped_geometry_destroy (fs->geom);
+       free (fs->type_specific);
+       free (fs);
+}
+
+int
+fat_set_frag_sectors (PedFileSystem* fs, PedSector frag_sectors)
+{
+       FatSpecific*    fs_info = FAT_SPECIFIC (fs);
+
+       PED_ASSERT (fs_info->cluster_sectors % frag_sectors == 0
+                       && frag_sectors <= fs_info->cluster_sectors);
+
+       fs_info->frag_size = frag_sectors * 512;
+       fs_info->frag_sectors = frag_sectors;
+       fs_info->buffer_frags = fs_info->buffer_sectors / frag_sectors;
+       fs_info->cluster_frags = fs_info->cluster_sectors / frag_sectors;
+       fs_info->frag_count = fs_info->cluster_count * fs_info->cluster_frags;
+
+       return 1;
+}
+
+PedGeometry*
+fat_probe (PedGeometry* geom, FatType* fat_type)
+{
+       PedFileSystem*          fs;
+       FatSpecific*            fs_info;
+       PedGeometry*            result;
+
+       fs = fat_alloc (geom);
+       if (!fs)
+               goto error;
+       fs_info = (FatSpecific*) fs->type_specific;
+
+       if (!fat_boot_sector_read (&fs_info->boot_sector, geom))
+               goto error_free_fs;
+       if (!fat_boot_sector_analyse (&fs_info->boot_sector, fs))
+               goto error_free_fs;
+
+       *fat_type = fs_info->fat_type;
+       result = ped_geometry_new (geom->dev, geom->start,
+                                  fs_info->sector_count);
+
+       fat_free (fs);
+       return result;
+
+error_free_fs:
+       fat_free (fs);
+error:
+       return NULL;
+}
+
+PedGeometry*
+fat_probe_fat16 (PedGeometry* geom)
+{
+       FatType         fat_type;
+       PedGeometry*    probed_geom = fat_probe (geom, &fat_type);
+
+       if (probed_geom) {
+               if (fat_type == FAT_TYPE_FAT16)
+                       return probed_geom;
+               ped_geometry_destroy (probed_geom);
+       }
+       return NULL;
+}
+
+PedGeometry*
+fat_probe_fat32 (PedGeometry* geom)
+{
+       FatType         fat_type;
+       PedGeometry*    probed_geom = fat_probe (geom, &fat_type);
+
+       if (probed_geom) {
+               if (fat_type == FAT_TYPE_FAT32)
+                       return probed_geom;
+               ped_geometry_destroy (probed_geom);
+       }
+       return NULL;
+}
+
+static PedFileSystemOps fat16_ops = {
+       probe:          fat_probe_fat16,
+};
+
+static PedFileSystemOps fat32_ops = {
+       probe:          fat_probe_fat32,
+};
+
+#define FAT_BLOCK_SIZES ((int[2]){512, 0})
+
+PedFileSystemType fat16_type = {
+       next:           NULL,
+       ops:            &fat16_ops,
+       name:           "fat16",
+        block_sizes:    FAT_BLOCK_SIZES
+};
+
+PedFileSystemType fat32_type = {
+       next:           NULL,
+       ops:            &fat32_ops,
+       name:           "fat32",
+        block_sizes:    FAT_BLOCK_SIZES
+};
+
+void
+ped_file_system_fat_init ()
+{
+       if (sizeof (FatBootSector) != 512) {
+               ped_exception_throw (PED_EXCEPTION_BUG, PED_EXCEPTION_CANCEL,
+                       _("GNU Parted was miscompiled: the FAT boot sector "
+                       "should be 512 bytes.  FAT support will be disabled."));
+       } else {
+               ped_file_system_type_register (&fat16_type);
+               ped_file_system_type_register (&fat32_type);
+       }
+}
+
+void
+ped_file_system_fat_done ()
+{
+       ped_file_system_type_unregister (&fat16_type);
+       ped_file_system_type_unregister (&fat32_type);
+}
diff --git a/libparted/fs/fat/fat.h b/libparted/fs/fat/fat.h
new file mode 100644 (file)
index 0000000..bf767e6
--- /dev/null
@@ -0,0 +1,165 @@
+/*
+    libparted
+    Copyright (C) 1998-2001, 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef FAT_H_INCLUDED
+#define FAT_H_INCLUDED
+
+#include <parted/parted.h>
+#include <parted/endian.h>
+#include <parted/debug.h>
+
+#if ENABLE_NLS
+#  include <libintl.h>
+#  define _(String) dgettext (PACKAGE, String)
+#else
+#  define _(String) (String)
+#endif /* ENABLE_NLS */
+
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#define BUFFER_SIZE  1024      /* buffer size in sectors (512 bytes) */
+
+typedef uint32_t               FatCluster;
+typedef int32_t                        FatFragment;
+
+enum _FatType {
+       FAT_TYPE_FAT12,
+       FAT_TYPE_FAT16,
+       FAT_TYPE_FAT32
+};
+typedef enum _FatType          FatType;
+
+typedef struct _FatSpecific    FatSpecific;
+typedef struct _FatDirEntry    FatDirEntry;
+
+#include "bootsector.h"
+#include "count.h"
+
+struct _FatTable {
+       void*           table;
+       FatCluster      size;
+       int             raw_size;
+
+       FatType         fat_type;
+       FatCluster      cluster_count;
+       FatCluster      free_cluster_count;
+       FatCluster      bad_cluster_count;
+
+       FatCluster      last_alloc;
+};
+typedef struct _FatTable       FatTable;
+
+struct __attribute__ ((packed)) _FatDirEntry {
+       char            name[8];
+       uint8_t         extension[3];
+       uint8_t         attributes;
+       uint8_t         is_upper_case_name;
+       uint8_t         creation_time_low;      /* milliseconds */
+       uint16_t        creation_time_high;
+       uint16_t        creation_date;
+       uint16_t        access_date;
+       uint16_t        first_cluster_high;     /* for FAT32 */
+       uint16_t        time;
+       uint16_t        date;
+       uint16_t        first_cluster;
+       uint32_t        length;
+};
+
+struct _FatSpecific {
+       FatBootSector   boot_sector;    /* structure of boot sector */
+       FatInfoSector   info_sector;    /* fat32-only information sector */
+
+       int             logical_sector_size;    /* illogical sector size :-) */
+       PedSector       sector_count;
+
+       int             sectors_per_track;      /* BIOS CHS stuff (S) */
+       int             heads;                  /* BIOS CHS stuff (H) */
+
+       int             cluster_size;
+       PedSector       cluster_sectors;
+       FatCluster      cluster_count;
+       int             dir_entries_per_cluster;
+
+       FatType         fat_type;
+       int             fat_table_count;
+       PedSector       fat_sectors;
+
+       uint32_t        serial_number;
+
+       PedSector       info_sector_offset;     /* FAT32 only */
+       PedSector       fat_offset;
+       PedSector       root_dir_offset;        /* non-FAT32 */
+       PedSector       cluster_offset;
+       PedSector       boot_sector_backup_offset;
+
+       FatCluster      root_cluster;           /* FAT32 only */
+       int             root_dir_entry_count;   /* non-FAT32 */
+       PedSector       root_dir_sector_count;  /* non-FAT32 */
+       FatCluster      total_dir_clusters;
+
+       FatTable*       fat;
+       FatClusterInfo* cluster_info;
+
+       PedSector       buffer_sectors;
+       char*           buffer;
+
+       int             frag_size;
+       PedSector       frag_sectors;
+       FatFragment     frag_count;
+       FatFragment     buffer_frags;
+       FatFragment     cluster_frags;
+};
+
+#define FAT_SPECIFIC(fs)       ((FatSpecific*) fs->type_specific)
+
+#define FAT_ROOT               0
+
+#define DELETED_FLAG           0xe5
+
+#define READONLY_ATTR          0x01
+#define HIDDEN_ATTR            0x02
+#define SYSTEM_ATTR            0x04
+#define VOLUME_LABEL_ATTR      0x08
+#define VFAT_ATTR              0x0f
+#define DIRECTORY_ATTR         0x10
+#define ARCH_ATTR              0x20
+
+#define MAX_FAT12_CLUSTERS     4086
+#define MAX_FAT16_CLUSTERS     65526
+#define MAX_FAT32_CLUSTERS     2000000
+
+#define FAT_ROOT_DIR_ENTRY_COUNT       512
+
+extern PedFileSystemType fat16_type;
+extern PedFileSystemType fat32_type;
+
+extern void fat_print (const PedFileSystem* fs);
+
+extern PedFileSystem* fat_alloc (const PedGeometry* geom);
+extern void fat_free (PedFileSystem* fs);
+extern int fat_alloc_buffers (PedFileSystem* fs);
+extern void fat_free_buffers (PedFileSystem* fs);
+
+extern int fat_resize (PedFileSystem* fs, PedGeometry* geom, PedTimer* timer);
+
+extern int fat_set_frag_sectors (PedFileSystem* fs, PedSector frag_sectors);
+
+#endif /* FAT_H_INCLUDED */
diff --git a/libparted/fs/hfs/DOC b/libparted/fs/hfs/DOC
new file mode 100644 (file)
index 0000000..9ee8b4d
--- /dev/null
@@ -0,0 +1,92 @@
+WARNING : Both HFS and HFS+ implementations of Linux 2.4 are buggy, at
+least when used before or after this implementation. Some workarounds
+are used in this implementation, but there can still be incompatibilities.
+Try Linux 2.6 if you want to play with HFS(+) resizing (though some bugs
+might also be there in 2.6, there is of course no warranty)
+
+---
+
+    Technical doc about Apple HFS and HFS+ file systems is available at :
+    * For HFS, section "Data Organization on Volumes",
+                       "Chapter 2 - File Manager"
+           of the book "Inside Macintosh: Files"
+     http://developer.apple.com/documentation/mac/Files/Files-99.html
+    * For HFS+, "Technical Note TN1150", "HFS Plus Volume Format"
+     http://developer.apple.com/technotes/tn/tn1150.html
+
+    Some useful HFS precisions concerning alignement, bit ordering, and
+    order of fields for extent key comparaisons are only in the HFS+ TN
+
+    These Apple Creator Codes are reserved for us :
+    Shnk traP GP16 GnuP PH+x Xpnd Resz GP17 GP18 GP19 GP20
+
+---
+
+* Cache design *
+
+Versions before HFS Patch 15 were very slow when data relocation was needed,
+because every extent to relocate involved scanning the whole file system,
+looking for a reference to its physical position on the volume (this was a
+dummy algorithm, I know :)
+
+HFS Patch 16 introduced a cache that allows to efficiently retrieve the place
+of the reference in the file system given the physical position of an extent.
+The cache is designed for : - efficiency
+                           - scaling
+                           - simplicity
+                           - avoiding memory allocation while resizing
+
+This cache involves quite big worst case memory consumption, but without it
+the time needed to complete the operation in the worst case would be huge
+anyway (maybe several years...) so this isn't really an issue. The cache size
+is nearly proportional to the number of files you have, or if you have very few
+files, to the size of your volume, so worst cases situations occure when you
+fill a drive with millions of < 4 ko files :p For this very special usage you
+will just need a very special amount of RAM (on typical systems about
+(FS size) / 256 )... On a more "normal" volume it's about
+(# of files) * 20 bytes. With very few files it's about (FS Size) / 1024 / 256.
+
+At the beginning of the resize process, the cache is filed by scanning the FS.
+The position of each extent is cut into 2 parts : high order is used as
+an index into a table of pointer to a linked list which contains :
+- the next ptr                         (sizeof struct *)
+- the extent start                     (4 bytes)
+- the extent size                      (4 bytes)
+- number of BTree block or 0 if in prim (4 bytes)
+- offset of the extent start reference
+  from the block beginning              (2 bytes)
+- sectors by BTree block, or
+  1 for VH/MDB                         (1 byte)
+- FS special file / primary structure
+  where the extent reference is stored  (1 byte)
+  (3 bits for the extent index, 5 for
+   the actual ref)
+
+  0 : dont exists                              --- reserved
+  1 : mdb / vh : catalog                       ---
+  2 : mdb / vh : extent                                ---
+  3 :       vh : attributes                    X+-
+  4 :       vh : allocation                    X+-
+  5 :       vh : startup                       X+-
+  6 :            catalog                       ---
+  7 :            attributes                    X+-
+  8 :            extent (nothing to update)    ---
+  9 :            extent (update catalog)       ---
+ 10 :            extent (update extent !?!)    --- should not exist
+ 11 :            extent (update attributes)    X+-
+ 12 :            extent (update allocation)    X+-
+ 13 :            extent (update startup)       X+- reserved
+ 14 :       vh : journal info block            X+J
+ 15 :       jib: journal                       X+J
+ 16 - 31 :                                     ---
+
+mdb : Master Directory Block
+vh  : Volume Header
+X+  : HFSX or HFS+ only
+J   : Journaled only
+
+Large amount of memory is allocated at once (first enough memory to fit
+every files if there isn't any fragmentation +6.25%, then this value / 4,
+if this wasn't enough). On a typical FS, the first allocation should be enough.
+
+---
diff --git a/libparted/fs/hfs/HISTORY b/libparted/fs/hfs/HISTORY
new file mode 100644 (file)
index 0000000..5e138a6
--- /dev/null
@@ -0,0 +1,115 @@
+## modifications                                               dd-mm-yyyy
+---------------------- PATCH FOR PARTED 1.6.5 ----------------------------
+ 1 initial revision                                            07-04-2003
+ 2 one pass resizing, removal of debug info                    08-04-2003
+ 3 safe abort if resize failed, code cleanups, timer,          10-04-2003
+   source file split, won't resize if not unmounted,
+   only relocate data if needed, minimize disk operations
+ 4 memory leaks removal, code cleanups, resize hfs+ code,      17-04-2003
+   more checks, minor hfs resize bugfix, probe code
+   returns real geometry
+ 5 hfs+ resize bugfixes :                                      19-04-2003
+   * fragmented fs could be corrupted
+   * VH wasn't written on error during alloc map writing
+   * attributes file could be corrupted
+ 6 Use PedSector to be able to use 2To+ HD                     23-04-2003
+   Minor probe bugfix, Cleanups, HFS+ Timer tuning,
+ 7 80 columns indentation                                      23-04-2003
+ 8 Bugfix free blocks calculation in wrapper
+   (makes Mac OS boot !)                                       28-04-2003
+---------------------- PATCH FOR PARTED 1.6.6 ----------------------------
+ 9 Don't destroy the file being worked on in case of
+   interruption of Parted                                      28-10-2003
+---------------------- PATCH FOR PARTED 1.6.10 ---------------------------
+10 Regression tests, URL correction, In effect_move_extent :
+   corrected memory leak & corrected a bug in precondition checks
+   Added error messages, Check ped_alloc results
+   Use macro for test / set / clear in the allocation bitmap
+   Light probe correction, Check return value of get_empty_end
+   Moved dynamic memory allocation out of effect_move_extent
+   Check HFS+ version, Set implementation creator code
+   Check journal absence, Corrected a bug in HFS+ block number
+   calculation                                                 24-04-2004
+--------------------- PATCH FOR PARTED 1.6.11 ----------------------------
+11-Some pointer dereference moved after non nul assertion
+  -Error messages for HFS(+) file IO
+  -Memory leak correction in hfs(plus)_read_bad_blocks
+  -Mark out of volume blocks as used
+    (improve compatibility with broken HFS+ Linux
+    implementation)
+   WARNING : this fix is not 100% tn1150 compatible :
+   "The allocation file may be larger than the minimum
+   number of bits required for the given volume size.
+   Any unused bits in the bitmap must be set to _zero_."
+   Anyway neither is the Linux implementation, nor was my
+   previous implementations
+   Maybe I should ask Apple to change the specifications
+  -HISTORY, DOC and TODO files                                 29-04-2004
+12 Corrected a bug in hfsplus_volume_resize : size of alloc
+   bitmap could be miscalculated                               29-04-2004
+--------------------- PATCH FOR PARTED 1.6.12 ----------------------------
+13-Finally partial rewrite of *_search_move_*
+   Easier to maintain and prepare for extent search and
+   relocation algorithm changes for better ones.
+  -"An extent has not been relocated!" message now only when
+   relocation requested
+  -Slightly better and simpler relocation algorithm
+  -Update of Makefile.in and Makefile.am in fs_hfs
+  -Sign correction for some 8bits HFS integers
+  -Added the option --enable-hfs-extract-fs in 'configure'
+  -Added every ped_geometry_sync where needed
+  -Bugfix : "A root node does not need to exist
+               (if the tree is empty)."
+           - now handled correctly in btree_search
+  -Bugfix : failure wasn't detected in some cases
+           during 2 pass relocation (*_search_move_*)
+  -Bugfix : The extent key comparaison was done in a wrong order
+           and a pad field was used during the comparaison
+  -Bugfix : in hfs_file_find_sector and hfsplus_file_find_sector
+            the absolute position of a file sector could be
+           miscalculated in case of fragmentation, resulting
+           in potential data corruption, or various errors
+  -Bugfix : The end of the HFS bitmap compatibility block was
+           miscalculated ( (1<<16)/8 instead of (1<<16) )
+           in hfs_resize
+                                                               07-09-2004
+--------------------- PATCH FOR PARTED 1.6.14 ----------------------------
+14 Port of Patch 13 for Parted 1.6.14 (update timestamps)
+                                                               08-09-2004
+--------------------- PATCH FOR PARTED 1.6.15 ----------------------------
+15-hfsplus_open : added a warning message if the "attributes"
+   special file exists
+  -hfsplus_open : added a test to check if the "allocation"
+   special file has been correctly opened
+  -optimisation of hfs+ block access : don't recalculate
+   the address of each sector, and avoid checking the cache if
+   obviously not useful
+   ( hfsplus_file_read && hfsplus_file_write
+     && hfsplus_file_find_extent && hfs_file_find_sector)
+  -cut the "hfs.c" file in several parts
+  -Bugfix: in hfsplus_do_move_primary, hfs_effect_move_extent
+   was called instead of hfsplus_effect_move_extent !!!
+   This could not produce data corruption, because of a welcome
+   ASSERT in *_effect_move_extent that would detect the bug :)
+  -Bugfix: in hfs_effect_move_extent, do
+       PED_ASSERT(*ptr_to_fblock <= *ptr_fblock, return -1);
+   instead of
+       PED_ASSERT(*ptr_to_fblock < *ptr_fblock, return -1);
+   and added that assertion to hfsplus_effect_move_extent
+  -Bugfix: bugs introduced in rewrite of hfsplus_file_read
+   && hfsplus_file_write : last sector was incorrectly detected
+   as out of file.
+  -Cache the extent references (speed improvement ?)
+                                                               23-09-2004
+16-Bugfix: in hfsplus_do_move (reloc_plus.c), case CR_BTREE_EXT_ATTR
+   incorrectly updated the cached part of priv_data->catalog_file
+   instead of priv_data->attributes_file
+  -Bugfix: in hfs_read_bad_blocks && hfsplus_read_bad_blocks,
+   now generate an error if file_ID or type mismatch after the
+   first pass
+   Also check return value of ped_malloc
+  -Bugfix: in hfsplus_btree_search, check return value of ped_malloc
+                                                               29-09-2004
+---------------- INTEGRATION IN PARTED 1.6.22 (cvs) ----------------------
+Futur changes will be described in ../../ChangeLog
+                                                               02-02-2005
diff --git a/libparted/fs/hfs/Makefile.am b/libparted/fs/hfs/Makefile.am
new file mode 100644 (file)
index 0000000..f85493c
--- /dev/null
@@ -0,0 +1,12 @@
+AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
+partedincludedir       = -I$(top_srcdir)/include
+
+noinst_LTLIBRARIES     = libhfs.la
+libhfs_la_SOURCES      = hfs.c hfs.h \
+                         probe.c probe.h
+
+INCLUDES = $(partedincludedir) $(INTLINCS)
+
+EXTRA_DIST = DOC HISTORY
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/libparted/fs/hfs/Makefile.in b/libparted/fs/hfs/Makefile.in
new file mode 100644 (file)
index 0000000..30d652f
--- /dev/null
@@ -0,0 +1,1271 @@
+# Makefile.in generated by automake 1.11a from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in 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.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = libparted/fs/hfs
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in TODO
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+       $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argmatch.m4 \
+       $(top_srcdir)/m4/assert.m4 $(top_srcdir)/m4/btowc.m4 \
+       $(top_srcdir)/m4/calloc.m4 $(top_srcdir)/m4/canonicalize.m4 \
+       $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
+       $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/configmake.m4 \
+       $(top_srcdir)/m4/dirname.m4 \
+       $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+       $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/environ.m4 \
+       $(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
+       $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fclose.m4 \
+       $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/fcntl_h.m4 \
+       $(top_srcdir)/m4/fflush.m4 $(top_srcdir)/m4/fpending.m4 \
+       $(top_srcdir)/m4/fpurge.m4 $(top_srcdir)/m4/freading.m4 \
+       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/fsync.m4 \
+       $(top_srcdir)/m4/ftell.m4 $(top_srcdir)/m4/ftello.m4 \
+       $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
+       $(top_srcdir)/m4/langinfo_h.m4 $(top_srcdir)/m4/lcmessage.m4 \
+       $(top_srcdir)/m4/lib-ignore.m4 $(top_srcdir)/m4/lib-ld.m4 \
+       $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/localcharset.m4 \
+       $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \
+       $(top_srcdir)/m4/locale-tr.m4 $(top_srcdir)/m4/locale-zh.m4 \
+       $(top_srcdir)/m4/locale_h.m4 $(top_srcdir)/m4/localename.m4 \
+       $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/long-options.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
+       $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+       $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
+       $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+       $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbtowc.m4 \
+       $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+       $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/multiarch.m4 \
+       $(top_srcdir)/m4/nl_langinfo.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/nocrash.m4 $(top_srcdir)/m4/o-direct.m4 \
+       $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/priv-set.m4 \
+       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+       $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+       $(top_srcdir)/m4/read.m4 $(top_srcdir)/m4/readlink.m4 \
+       $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/regex.m4 \
+       $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+       $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/setlocale.m4 \
+       $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/ssize_t.m4 \
+       $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdarg.m4 \
+       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strdup.m4 \
+       $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/strerror_r.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+       $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtoll.m4 \
+       $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/symlink.m4 \
+       $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+       $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/thread.m4 \
+       $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/time_h.m4 \
+       $(top_srcdir)/m4/ungetc.m4 $(top_srcdir)/m4/unistd_h.m4 \
+       $(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkdir.m4 \
+       $(top_srcdir)/m4/usleep.m4 $(top_srcdir)/m4/version-etc.m4 \
+       $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \
+       $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
+       $(top_srcdir)/m4/wcrtomb.m4 $(top_srcdir)/m4/wctob.m4 \
+       $(top_srcdir)/m4/wctomb.m4 $(top_srcdir)/m4/wctype_h.m4 \
+       $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+       $(top_srcdir)/m4/xstrndup.m4 $(top_srcdir)/m4/xstrtol.m4 \
+       $(top_srcdir)/m4/yield.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libhfs_la_LIBADD =
+am_libhfs_la_OBJECTS = hfs.lo probe.lo
+libhfs_la_OBJECTS = $(am_libhfs_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/lib
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+       $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo "  CC      " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+SOURCES = $(libhfs_la_SOURCES)
+DIST_SOURCES = $(libhfs_la_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+pkglibexecdir = @pkglibexecdir@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+BUILDINFO = @BUILDINFO@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHECK_CFLAGS = @CHECK_CFLAGS@
+CHECK_LIBS = @CHECK_LIBS@
+CONFIG_INCLUDE = @CONFIG_INCLUDE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DYNAMIC_LOADING = @DYNAMIC_LOADING@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENABLE_DEVICE_MAPPER = @ENABLE_DEVICE_MAPPER@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FACCESSAT = @GNULIB_FACCESSAT@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCHMODAT = @GNULIB_FCHMODAT@
+GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FCNTL = @GNULIB_FCNTL@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FGETC = @GNULIB_FGETC@
+GNULIB_FGETS = @GNULIB_FGETS@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREAD = @GNULIB_FREAD@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSCANF = @GNULIB_FSCANF@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSTATAT = @GNULIB_FSTATAT@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FUTIMENS = @GNULIB_FUTIMENS@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETC = @GNULIB_GETC@
+GNULIB_GETCHAR = @GNULIB_GETCHAR@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETGROUPS = @GNULIB_GETGROUPS@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETS = @GNULIB_GETS@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
+GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_ISWBLANK = @GNULIB_ISWBLANK@
+GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@
+GNULIB_LCHMOD = @GNULIB_LCHMOD@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LINKAT = @GNULIB_LINKAT@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_LSTAT = @GNULIB_LSTAT@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MBTOWC = @GNULIB_MBTOWC@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDIRAT = @GNULIB_MKDIRAT@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKFIFO = @GNULIB_MKFIFO@
+GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@
+GNULIB_MKNOD = @GNULIB_MKNOD@
+GNULIB_MKNODAT = @GNULIB_MKNODAT@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@
+GNULIB_MKTIME = @GNULIB_MKTIME@
+GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@
+GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@
+GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_OPEN = @GNULIB_OPEN@
+GNULIB_OPENAT = @GNULIB_OPENAT@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE = @GNULIB_PIPE@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_PREAD = @GNULIB_PREAD@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READ = @GNULIB_READ@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_READLINKAT = @GNULIB_READLINKAT@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_REALPATH = @GNULIB_REALPATH@
+GNULIB_REMOVE = @GNULIB_REMOVE@
+GNULIB_RENAME = @GNULIB_RENAME@
+GNULIB_RENAMEAT = @GNULIB_RENAMEAT@
+GNULIB_RMDIR = @GNULIB_RMDIR@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SETLOCALE = @GNULIB_SETLOCALE@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STAT = @GNULIB_STAT@
+GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRERROR_R = @GNULIB_STRERROR_R@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRPTIME = @GNULIB_STRPTIME@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_SYMLINK = @GNULIB_SYMLINK@
+GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
+GNULIB_TIMEGM = @GNULIB_TIMEGM@
+GNULIB_TIME_R = @GNULIB_TIME_R@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
+GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
+GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNLINK = @GNULIB_UNLINK@
+GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_USLEEP = @GNULIB_USLEEP@
+GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VFSCANF = @GNULIB_VFSCANF@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSCANF = @GNULIB_VSCANF@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCPCPY = @GNULIB_WCPCPY@
+GNULIB_WCPNCPY = @GNULIB_WCPNCPY@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@
+GNULIB_WCSCAT = @GNULIB_WCSCAT@
+GNULIB_WCSCHR = @GNULIB_WCSCHR@
+GNULIB_WCSCMP = @GNULIB_WCSCMP@
+GNULIB_WCSCOLL = @GNULIB_WCSCOLL@
+GNULIB_WCSCPY = @GNULIB_WCSCPY@
+GNULIB_WCSCSPN = @GNULIB_WCSCSPN@
+GNULIB_WCSDUP = @GNULIB_WCSDUP@
+GNULIB_WCSLEN = @GNULIB_WCSLEN@
+GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@
+GNULIB_WCSNCAT = @GNULIB_WCSNCAT@
+GNULIB_WCSNCMP = @GNULIB_WCSNCMP@
+GNULIB_WCSNCPY = @GNULIB_WCSNCPY@
+GNULIB_WCSNLEN = @GNULIB_WCSNLEN@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSPBRK = @GNULIB_WCSPBRK@
+GNULIB_WCSRCHR = @GNULIB_WCSRCHR@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCSSPN = @GNULIB_WCSSPN@
+GNULIB_WCSSTR = @GNULIB_WCSSTR@
+GNULIB_WCSTOK = @GNULIB_WCSTOK@
+GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@
+GNULIB_WCSXFRM = @GNULIB_WCSXFRM@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCTOMB = @GNULIB_WCTOMB@
+GNULIB_WCTRANS = @GNULIB_WCTRANS@
+GNULIB_WCTYPE = @GNULIB_WCTYPE@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WMEMCHR = @GNULIB_WMEMCHR@
+GNULIB_WMEMCMP = @GNULIB_WMEMCMP@
+GNULIB_WMEMCPY = @GNULIB_WMEMCPY@
+GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@
+GNULIB_WMEMSET = @GNULIB_WMEMSET@
+GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
+HAVE_CHOWN = @HAVE_CHOWN@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@
+HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SETENV = @HAVE_DECL_SETENV@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@
+HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_DUPLOCALE = @HAVE_DUPLOCALE@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
+HAVE_FCHMODAT = @HAVE_FCHMODAT@
+HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
+HAVE_FCNTL = @HAVE_FCNTL@
+HAVE_FEATURES_H = @HAVE_FEATURES_H@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSTATAT = @HAVE_FSTATAT@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_FUTIMENS = @HAVE_FUTIMENS@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETGROUPS = @HAVE_GETGROUPS@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETLOGIN = @HAVE_GETLOGIN@
+HAVE_GETOPT_H = @HAVE_GETOPT_H@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
+HAVE_GRANTPT = @HAVE_GRANTPT@
+HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWBLANK = @HAVE_ISWBLANK@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
+HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
+HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
+HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
+HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
+HAVE_LCHMOD = @HAVE_LCHMOD@
+HAVE_LCHOWN = @HAVE_LCHOWN@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_LSTAT = @HAVE_LSTAT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSLEN = @HAVE_MBSLEN@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMCHR = @HAVE_MEMCHR@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDIRAT = @HAVE_MKDIRAT@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKFIFO = @HAVE_MKFIFO@
+HAVE_MKFIFOAT = @HAVE_MKFIFOAT@
+HAVE_MKNOD = @HAVE_MKNOD@
+HAVE_MKNODAT = @HAVE_MKNODAT@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
+HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
+HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
+HAVE_OPENAT = @HAVE_OPENAT@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PIPE = @HAVE_PIPE@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PWRITE = @HAVE_PWRITE@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_READLINKAT = @HAVE_READLINKAT@
+HAVE_REALPATH = @HAVE_REALPATH@
+HAVE_RENAMEAT = @HAVE_RENAMEAT@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRPTIME = @HAVE_STRPTIME@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYMLINK = @HAVE_SYMLINK@
+HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_TIMEGM = @HAVE_TIMEGM@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_USLEEP = @HAVE_USLEEP@
+HAVE_UTIMENSAT = @HAVE_UTIMENSAT@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCPCPY = @HAVE_WCPCPY@
+HAVE_WCPNCPY = @HAVE_WCPNCPY@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSCASECMP = @HAVE_WCSCASECMP@
+HAVE_WCSCAT = @HAVE_WCSCAT@
+HAVE_WCSCHR = @HAVE_WCSCHR@
+HAVE_WCSCMP = @HAVE_WCSCMP@
+HAVE_WCSCOLL = @HAVE_WCSCOLL@
+HAVE_WCSCPY = @HAVE_WCSCPY@
+HAVE_WCSCSPN = @HAVE_WCSCSPN@
+HAVE_WCSDUP = @HAVE_WCSDUP@
+HAVE_WCSLEN = @HAVE_WCSLEN@
+HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@
+HAVE_WCSNCAT = @HAVE_WCSNCAT@
+HAVE_WCSNCMP = @HAVE_WCSNCMP@
+HAVE_WCSNCPY = @HAVE_WCSNCPY@
+HAVE_WCSNLEN = @HAVE_WCSNLEN@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSPBRK = @HAVE_WCSPBRK@
+HAVE_WCSRCHR = @HAVE_WCSRCHR@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCSSPN = @HAVE_WCSSPN@
+HAVE_WCSSTR = @HAVE_WCSSTR@
+HAVE_WCSTOK = @HAVE_WCSTOK@
+HAVE_WCSWIDTH = @HAVE_WCSWIDTH@
+HAVE_WCSXFRM = @HAVE_WCSXFRM@
+HAVE_WCTRANS_T = @HAVE_WCTRANS_T@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WCTYPE_T = @HAVE_WCTYPE_T@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WMEMCHR = @HAVE_WMEMCHR@
+HAVE_WMEMCMP = @HAVE_WMEMCMP@
+HAVE_WMEMCPY = @HAVE_WMEMCPY@
+HAVE_WMEMMOVE = @HAVE_WMEMMOVE@
+HAVE_WMEMSET = @HAVE_WMEMSET@
+HAVE_XLOCALE_H = @HAVE_XLOCALE_H@
+HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
+IGNORE_UNUSED_LIBRARIES_CFLAGS = @IGNORE_UNUSED_LIBRARIES_CFLAGS@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@
+INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMULTITHREAD = @LIBMULTITHREAD@
+LIBOBJS = @LIBOBJS@
+LIBPTH = @LIBPTH@
+LIBPTH_PREFIX = @LIBPTH_PREFIX@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTHREAD = @LIBTHREAD@
+LIBTOOL = @LIBTOOL@
+LIB_BLKID = @LIB_BLKID@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBMULTITHREAD = @LTLIBMULTITHREAD@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBPTH = @LTLIBPTH@
+LTLIBTHREAD = @LTLIBTHREAD@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
+NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@
+NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
+NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@
+NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FCNTL_H = @NEXT_FCNTL_H@
+NEXT_GETOPT_H = @NEXT_GETOPT_H@
+NEXT_INTTYPES_H = @NEXT_INTTYPES_H@
+NEXT_LANGINFO_H = @NEXT_LANGINFO_H@
+NEXT_LOCALE_H = @NEXT_LOCALE_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@
+NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@
+NEXT_TIME_H = @NEXT_TIME_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PARTED_USABLE_TEST_DIR = @PARTED_USABLE_TEST_DIR@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CALLOC = @REPLACE_CALLOC@
+REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP = @REPLACE_DUP@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@
+REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FCNTL = @REPLACE_FCNTL@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FSTAT = @REPLACE_FSTAT@
+REPLACE_FSTATAT = @REPLACE_FSTATAT@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_FUTIMENS = @REPLACE_FUTIMENS@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETDELIM = @REPLACE_GETDELIM@
+REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@
+REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LINK = @REPLACE_LINK@
+REPLACE_LINKAT = @REPLACE_LINKAT@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_LSTAT = @REPLACE_LSTAT@
+REPLACE_MALLOC = @REPLACE_MALLOC@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MBTOWC = @REPLACE_MBTOWC@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKDIR = @REPLACE_MKDIR@
+REPLACE_MKFIFO = @REPLACE_MKFIFO@
+REPLACE_MKNOD = @REPLACE_MKNOD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_MKTIME = @REPLACE_MKTIME@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_OPEN = @REPLACE_OPEN@
+REPLACE_OPENAT = @REPLACE_OPENAT@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PREAD = @REPLACE_PREAD@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
+REPLACE_READ = @REPLACE_READ@
+REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_REALLOC = @REPLACE_REALLOC@
+REPLACE_REALPATH = @REPLACE_REALPATH@
+REPLACE_REMOVE = @REPLACE_REMOVE@
+REPLACE_RENAME = @REPLACE_RENAME@
+REPLACE_RENAMEAT = @REPLACE_RENAMEAT@
+REPLACE_RMDIR = @REPLACE_RMDIR@
+REPLACE_SETENV = @REPLACE_SETENV@
+REPLACE_SETLOCALE = @REPLACE_SETLOCALE@
+REPLACE_SLEEP = @REPLACE_SLEEP@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STAT = @REPLACE_STAT@
+REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRERROR_R = @REPLACE_STRERROR_R@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
+REPLACE_STRNDUP = @REPLACE_STRNDUP@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
+REPLACE_SYMLINK = @REPLACE_SYMLINK@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
+REPLACE_UNLINK = @REPLACE_UNLINK@
+REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
+REPLACE_UNSETENV = @REPLACE_UNSETENV@
+REPLACE_USLEEP = @REPLACE_USLEEP@
+REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCTOMB = @REPLACE_WCTOMB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SELINUX_LIBS = @SELINUX_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
+UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
+UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+YIELD_LIB = @YIELD_LIB@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
+partedincludedir = -I$(top_srcdir)/include
+noinst_LTLIBRARIES = libhfs.la
+libhfs_la_SOURCES = hfs.c hfs.h \
+                         probe.c probe.h
+
+INCLUDES = $(partedincludedir) $(INTLINCS)
+EXTRA_DIST = DOC HISTORY
+MAINTAINERCLEANFILES = Makefile.in
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libparted/fs/hfs/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu libparted/fs/hfs/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+       -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+       @list='$(noinst_LTLIBRARIES)'; \
+       locs=`for p in $$list; do echo $$p; done | \
+             sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+             sort -u`; \
+       test -z "$$locs" || { \
+         echo rm -f $${locs}; \
+         rm -f $${locs}; \
+       }
+libhfs.la: $(libhfs_la_OBJECTS) $(libhfs_la_DEPENDENCIES) $(EXTRA_libhfs_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK)  $(libhfs_la_OBJECTS) $(libhfs_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hfs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/probe.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+       mostlyclean-am
+
+distclean: distclean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+       clean-libtool clean-noinstLTLIBRARIES cscopelist ctags \
+       distclean distclean-compile distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       tags uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libparted/fs/hfs/TODO b/libparted/fs/hfs/TODO
new file mode 100644 (file)
index 0000000..6e408e3
--- /dev/null
@@ -0,0 +1,27 @@
+--- TODO ---
+
+   * Continue to write regressions tests and try on 2.6 kernel  -- (high)
+   * Fix timer progression calculation, according to the new
+     caching code                                              -- (high)
+   * write doc, website, ...                                   -- (high)
+   * Check block allocation in linux 2.4 and remove
+     compatibility code if possible                            -- (high)
+
+   * In hfs(plus)_btree_search , use a static variable to detect
+     illegal recursion and abort in that case. (find the right
+     number of recursion before reporting bug) -- easy         -- (medium)
+   * Finish the HFS Extractor                                  -- (medium)
+     (add mdb & vh extraction, and maybe journal)
+
+   * Write code to allow enlarging and moving HFS[+x]          -- (low)
+   * Use a bitmap to internaly store the bad blocks            -- (low)
+   * Less bitmap saves ?                                       -- (low)
+   * Continue to change the relocation algorithm
+     for a better one :)                                       -- (low)
+
+--- NOT todo ---
+
+   * debug HFS(+) Linux implementation (block allocation for HFS+,
+     hard and sym links for HFS+, filename length for HFS, ...)        -- (dont)
+       /// Linux 2.6 contains HFS(+) implementations with less bugs
+       /// Linux 2.4 should not be used anymore to access HFS(+)
diff --git a/libparted/fs/hfs/hfs.c b/libparted/fs/hfs/hfs.c
new file mode 100644 (file)
index 0000000..275bc24
--- /dev/null
@@ -0,0 +1,99 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 2000, 2003-2005, 2007, 2009-2011 Free Software Foundation,
+    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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+/*
+   Author : Guillaume Knispel <k_guillaume@libertysurf.fr>
+   Report bug to <bug-parted@gnu.org>
+*/
+
+#include <config.h>
+
+#include <parted/parted.h>
+#include <parted/endian.h>
+#include <parted/debug.h>
+#include <stdint.h>
+
+#if ENABLE_NLS
+#  include <libintl.h>
+#  define _(String) dgettext (PACKAGE, String)
+#else
+#  define _(String) (String)
+#endif /* ENABLE_NLS */
+
+#include "hfs.h"
+#include "probe.h"
+
+uint8_t* hfs_block = NULL;
+uint8_t* hfsp_block = NULL;
+unsigned hfs_block_count;
+unsigned hfsp_block_count;
+
+#define HFS_BLOCK_SIZES       ((int[2]){512, 0})
+#define HFSP_BLOCK_SIZES       ((int[2]){512, 0})
+#define HFSX_BLOCK_SIZES       ((int[2]){512, 0})
+
+static PedFileSystemOps hfs_ops = {
+       probe:          hfs_probe,
+};
+
+static PedFileSystemOps hfsplus_ops = {
+       probe:          hfsplus_probe,
+};
+
+static PedFileSystemOps hfsx_ops = {
+       probe:          hfsx_probe,
+};
+
+
+static PedFileSystemType hfs_type = {
+       next:   NULL,
+       ops:    &hfs_ops,
+       name:   "hfs",
+       block_sizes: HFS_BLOCK_SIZES
+};
+
+static PedFileSystemType hfsplus_type = {
+       next:   NULL,
+       ops:    &hfsplus_ops,
+       name:   "hfs+",
+       block_sizes: HFSP_BLOCK_SIZES
+};
+
+static PedFileSystemType hfsx_type = {
+       next:   NULL,
+       ops:    &hfsx_ops,
+       name:   "hfsx",
+       block_sizes: HFSX_BLOCK_SIZES
+};
+
+void
+ped_file_system_hfs_init ()
+{
+       ped_file_system_type_register (&hfs_type);
+       ped_file_system_type_register (&hfsplus_type);
+       ped_file_system_type_register (&hfsx_type);
+}
+
+void
+ped_file_system_hfs_done ()
+{
+       ped_file_system_type_unregister (&hfs_type);
+       ped_file_system_type_unregister (&hfsplus_type);
+       ped_file_system_type_unregister (&hfsx_type);
+}
diff --git a/libparted/fs/hfs/hfs.h b/libparted/fs/hfs/hfs.h
new file mode 100644 (file)
index 0000000..fe5de2c
--- /dev/null
@@ -0,0 +1,647 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 2003-2005, 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef _HFS_H
+#define _HFS_H
+
+/* WARNING : bn is used 2 times in theses macro */
+/* so _never_ use side effect operators when using them */
+#define TST_BLOC_OCCUPATION(tab,bn) \
+       (((tab)[(bn)/8])  &  (1<<(7-((bn)&7))))
+#define SET_BLOC_OCCUPATION(tab,bn) \
+       (((tab)[(bn)/8]) |=  (1<<(7-((bn)&7))))
+#define CLR_BLOC_OCCUPATION(tab,bn) \
+       (((tab)[(bn)/8]) &= ~(1<<(7-((bn)&7))))
+
+/* Maximum number of blocks for the copy buffers */
+#define BLOCK_MAX_BUFF 256
+/* Maximum size of the copy buffers, in bytes */
+#define BYTES_MAX_BUFF 8388608
+
+/* Apple Creator Codes follow */
+#define HFSP_IMPL_Shnk 0x53686e6b      /* in use */
+#define HFSP_IMPL_Xpnd 0x58706e64      /* reserved */
+#define HFSP_IMPL_Resz 0x5265737a      /* reserved */
+#define HFSP_IMPL_PHpx 0x50482b78      /* reserved */
+#define HFSP_IMPL_traP  0x74726150     /* reserved */
+#define HFSP_IMPL_GnuP  0x476e7550     /* reserved */
+
+#define HFS_SIGNATURE  0x4244          /* 'BD' */
+#define HFSP_SIGNATURE 0x482B          /* 'H+' */
+#define HFSX_SIGNATURE  0x4858         /* 'HX' */
+
+#define HFSP_VERSION    4
+#define HFSX_VERSION    5
+
+#define HFS_HARD_LOCK   7
+#define HFS_UNMOUNTED   8
+#define HFS_BAD_SPARED  9
+#define HFS_SOFT_LOCK  15
+#define HFSP_NO_CACHE  10
+#define HFSP_INCONSISTENT 11
+#define HFSP_REUSE_CNID        12
+#define HFSP_JOURNALED 13
+
+#define HFS_IDX_NODE   0x00
+#define HFS_HDR_NODE   0x01
+#define HFS_MAP_NODE   0x02
+#define HFS_LEAF_NODE  0xFF
+
+#define HFS_FIRST_REC  0x0E
+#define HFS_NSD_HD_REC 0x78
+#define HFS_MAP_REC    0xF8
+
+#define HFS_DATA_FORK  0x00
+#define HFS_RES_FORK   0xFF
+
+#define HFS_CAT_DIR    0x01
+#define HFS_CAT_FILE   0x02
+#define HFS_CAT_DIR_TH 0x03
+#define HFS_CAT_FILE_TH        0x04
+
+#define HFSP_ATTR_INLINE       0x10
+#define HFSP_ATTR_FORK         0x20
+#define HFSP_ATTR_EXTENTS      0x30
+
+#define HFS_ROOT_PAR_ID                0x01
+#define HFS_ROOT_DIR_ID                0x02
+#define HFS_XTENT_ID           0x03
+#define HFS_CATALOG_ID         0x04
+#define HFS_BAD_BLOCK_ID       0x05
+#define HFSP_ALLOC_ID          0x06
+#define HFSP_STARTUP_ID                0x07
+#define HFSP_ATTRIB_ID         0x08
+#define HFSP_BOGUS_ID          0x0F
+#define HFSP_FIRST_AV_ID       0x10
+
+#define HFSJ_JOURN_IN_FS       0x00
+#define HFSJ_JOURN_OTHER_DEV   0x01
+#define HFSJ_JOURN_NEED_INIT   0x02
+
+#define HFSJ_HEADER_MAGIC      0x4a4e4c78
+#define HFSJ_ENDIAN_MAGIC      0x12345678
+
+#define HFSX_CASE_FOLDING      0xCF    /* case insensitive HFSX */
+#define HFSX_BINARY_COMPARE    0xBC    /* case sensitive   HFSX */
+
+#define HFS_EXT_NB     3
+#define HFSP_EXT_NB    8
+
+/* Define the filenames used by the FS extractor */
+#ifdef HFS_EXTRACT_FS
+
+#define HFS_MDB_FILENAME       "mdb.hfs"
+#define HFS_CATALOG_FILENAME   "catalog.hfs"
+#define HFS_EXTENTS_FILENAME   "extents.hfs"
+#define HFS_BITMAP_FILENAME    "bitmap.hfs"
+
+#define HFSP_VH_FILENAME       "vh.hfsplus"
+#define HFSP_CATALOG_FILENAME  "catalog.hfsplus"
+#define HFSP_EXTENTS_FILENAME  "extents.hfsplus"
+#define HFSP_BITMAP_FILENAME   "bitmap.hfsplus"
+#define HFSP_ATTRIB_FILENAME   "attributes.hfsplus"
+#define HFSP_STARTUP_FILENAME  "startup.hfsplus"
+
+#endif /* HFS_EXTRACT_FS */
+
+
+
+/* ----------------------------------- */
+/* --      HFS DATA STRUCTURES      -- */
+/* ----------------------------------- */
+
+/* Extent descriptor */
+struct __attribute__ ((packed)) _HfsExtDescriptor {
+        uint16_t       start_block;
+        uint16_t       block_count;
+};
+typedef struct _HfsExtDescriptor HfsExtDescriptor;
+typedef HfsExtDescriptor HfsExtDataRec[HFS_EXT_NB];
+
+/* Volume header */
+struct __attribute__ ((packed)) _HfsMasterDirectoryBlock {
+        uint16_t         signature;
+        uint32_t         create_date;
+        uint32_t         modify_date;
+        uint16_t         volume_attributes;
+        uint16_t         files_in_root;
+        uint16_t         volume_bitmap_block;       /* in sectors */
+        uint16_t         next_allocation;
+        uint16_t         total_blocks;
+        uint32_t         block_size;                /* in bytes */
+        uint32_t         def_clump_size;            /* in bytes */
+        uint16_t         start_block;               /* in sectors */
+        uint32_t         next_free_node;
+        uint16_t         free_blocks;
+        uint8_t          name_length;
+        char             name[27];
+        uint32_t         backup_date;
+        uint16_t         backup_number;
+        uint32_t         write_count;
+        uint32_t         extents_clump;
+        uint32_t         catalog_clump;
+        uint16_t         dirs_in_root;
+        uint32_t         file_count;
+        uint32_t         dir_count;
+        uint32_t         finder_info[8];
+        union __attribute__ ((packed)) {
+                struct __attribute__ ((packed)) {
+                        uint16_t    volume_cache_size;    /* in blocks */
+                        uint16_t    bitmap_cache_size;    /* in blocks */
+                        uint16_t    common_cache_size;    /* in blocks */
+                } legacy;
+                struct __attribute__ ((packed)) {
+                        uint16_t            signature;
+                        HfsExtDescriptor    location;
+                } embedded;
+        } old_new;
+        uint32_t         extents_file_size;  /* in bytes, block size multiple */
+        HfsExtDataRec    extents_file_rec;
+        uint32_t         catalog_file_size;  /* in bytes, block size multiple */
+        HfsExtDataRec    catalog_file_rec;
+};
+typedef struct _HfsMasterDirectoryBlock HfsMasterDirectoryBlock;
+
+/* B*-Tree Node Descriptor */
+struct __attribute__ ((packed)) _HfsNodeDescriptor {
+        uint32_t        next;
+        uint32_t        previous;
+        int8_t          type;
+        uint8_t         height;
+        uint16_t        rec_nb;
+        uint16_t        reserved;
+};
+typedef struct _HfsNodeDescriptor HfsNodeDescriptor;
+
+/* Header record of a whole B*-Tree */
+struct __attribute__ ((packed)) _HfsHeaderRecord {
+        uint16_t        depth;
+        uint32_t        root_node;
+        uint32_t        leaf_records;
+        uint32_t        first_leaf_node;
+        uint32_t        last_leaf_node;
+        uint16_t        node_size;
+        uint16_t        max_key_len;
+        uint32_t        total_nodes;
+        uint32_t        free_nodes;
+        int8_t          reserved[76];
+};
+typedef struct _HfsHeaderRecord HfsHeaderRecord;
+
+/* Catalog key for B*-Tree lookup in the catalog file */
+struct __attribute__ ((packed)) _HfsCatalogKey {
+        uint8_t         key_length; /* length of the key without key_length */
+        uint8_t         reserved;
+        uint32_t        parent_ID;
+        uint8_t         name_length;
+        char            name[31];   /* in fact physicaly 1 upto 31 */
+};
+typedef struct _HfsCatalogKey HfsCatalogKey;
+
+/* Extents overflow key for B*-Tree lookup */
+struct __attribute__ ((packed)) _HfsExtentKey {
+        uint8_t         key_length; /* length of the key without key_length */
+        uint8_t         type;       /* data or ressource fork */
+        uint32_t        file_ID;
+        uint16_t        start;
+};
+typedef struct _HfsExtentKey HfsExtentKey;
+
+/* Catalog subdata case directory */
+struct __attribute__ ((packed)) _HfsDir {
+        uint16_t        flags;
+        uint16_t        valence;        /* number of files in this directory */
+        uint32_t        dir_ID;
+        uint32_t        create_date;
+        uint32_t        modify_date;
+        uint32_t        backup_date;
+        int8_t          DInfo[16];      /* used by Finder, handle as reserved */
+        int8_t          DXInfo[16];     /* used by Finder, handle as reserved */
+        uint32_t        reserved[4];
+};
+typedef struct _HfsDir HfsDir;
+
+/* Catalog subdata case file */
+struct __attribute__ ((packed)) _HfsFile {
+        int8_t          flags;
+        int8_t          type;           /* should be 0 */
+        int8_t          FInfo[16];      /* used by Finder, handle as reserved */
+        uint32_t        file_ID;
+        uint16_t        data_start_block;
+        uint32_t        data_sz_byte;
+        uint32_t        data_sz_block;
+        uint16_t        res_start_block;
+        uint32_t        res_sz_byte;
+        uint32_t        res_sz_block;
+        uint32_t        create_date;
+        uint32_t        modify_date;
+        uint32_t        backup_date;
+        int8_t          FXInfo[16];     /* used by Finder, handle as reserved */
+        uint16_t        clump_size;
+        HfsExtDataRec   extents_data;
+        HfsExtDataRec   extents_res;
+        uint32_t        reserved;
+};
+typedef struct _HfsFile HfsFile;
+
+/* Catalog subdata case directory thread */
+struct __attribute__ ((packed)) _HfsDirTh {
+        uint32_t        reserved[2];
+        uint32_t        parent_ID;
+        int8_t          name_length;
+        char            name[31];
+};
+typedef struct _HfsDirTh HfsDirTh;
+
+/* Catalog subdata case file thread */
+typedef struct _HfsDirTh HfsFileTh;        /* same as directory thread */
+
+/* Catalog data */
+struct __attribute__ ((packed)) _HfsCatalog {
+        int8_t          type;
+        int8_t          reserved;
+        union {
+                HfsDir       dir;
+                HfsFile      file;
+                HfsDirTh     dir_th;
+                HfsFileTh    file_th;
+        } sel;
+};
+typedef struct _HfsCatalog HfsCatalog;
+
+
+
+/* ------------------------------------ */
+/* --      HFS+ DATA STRUCTURES      -- */
+/* ------------------------------------ */
+
+/* documented since 2004 in tn1150 */
+struct __attribute__ ((packed)) _HfsPPerms {
+        uint32_t        owner_ID;
+        uint32_t        group_ID;
+        uint32_t        permissions;
+        uint32_t        special_devices;
+};
+typedef struct _HfsPPerms HfsPPerms;
+
+/* HFS+ extent descriptor*/
+struct __attribute__ ((packed)) _HfsPExtDescriptor {
+        uint32_t        start_block;
+        uint32_t        block_count;
+};
+typedef struct _HfsPExtDescriptor HfsPExtDescriptor;
+typedef HfsPExtDescriptor HfsPExtDataRec[HFSP_EXT_NB];
+
+/* HFS+ fork data structure */
+struct __attribute__ ((packed)) _HfsPForkData {
+        uint64_t        logical_size;
+        uint32_t        clump_size;
+        uint32_t        total_blocks;
+        HfsPExtDataRec  extents;
+};
+typedef struct _HfsPForkData HfsPForkData;
+
+/* HFS+ catalog node ID */
+typedef uint32_t HfsPNodeID;
+
+/* HFS+ file names */
+typedef uint16_t unichar;
+struct __attribute__ ((packed)) _HfsPUniStr255 {
+        uint16_t        length;
+        unichar         unicode[255];        /* 1 upto 255 */
+};
+typedef struct _HfsPUniStr255 HfsPUniStr255;
+
+/* HFS+ volume header */
+struct __attribute__ ((packed)) _HfsPVolumeHeader {
+        uint16_t        signature;
+        uint16_t        version;
+        uint32_t        attributes;
+        uint32_t        last_mounted_version;
+        uint32_t        journal_info_block;
+
+        uint32_t        create_date;
+        uint32_t        modify_date;
+        uint32_t        backup_date;
+        uint32_t        checked_date;
+
+        uint32_t        file_count;
+        uint32_t        dir_count;
+
+        uint32_t        block_size;
+        uint32_t        total_blocks;
+        uint32_t        free_blocks;
+
+        uint32_t        next_allocation;
+        uint32_t        res_clump_size;
+        uint32_t        data_clump_size;
+        HfsPNodeID      next_catalog_ID;
+
+        uint32_t        write_count;
+        uint64_t        encodings_bitmap;
+
+        uint8_t         finder_info[32];
+
+        HfsPForkData    allocation_file;
+        HfsPForkData    extents_file;
+        HfsPForkData    catalog_file;
+        HfsPForkData    attributes_file;
+        HfsPForkData    startup_file;
+};
+typedef struct _HfsPVolumeHeader HfsPVolumeHeader;
+
+/* HFS+ B-Tree Node Descriptor. Same as HFS btree. */
+struct __attribute__ ((packed)) _HfsPNodeDescriptor {
+        uint32_t        next;
+        uint32_t        previous;
+        int8_t          type;
+        uint8_t         height;
+        uint16_t        rec_nb;
+        uint16_t        reserved;
+};
+typedef struct _HfsPNodeDescriptor HfsPNodeDescriptor;
+
+/* Header record of a whole HFS+ B-Tree. */
+struct __attribute__ ((packed)) _HfsPHeaderRecord {
+        uint16_t        depth;
+        uint32_t        root_node;
+        uint32_t        leaf_records;
+        uint32_t        first_leaf_node;
+        uint32_t        last_leaf_node;
+        uint16_t        node_size;
+        uint16_t        max_key_len;
+        uint32_t        total_nodes;
+        uint32_t        free_nodes;        /* same as hfs btree until here */
+        uint16_t        reserved1;
+
+        uint32_t        clump_size;
+        uint8_t         btree_type;        /* must be 0 for HFS+ B-Tree */
+        uint8_t         key_compare_type; /* hfsx => 0xCF = case folding */
+                                          /*         0xBC = binary compare */
+                                          /* otherwise, reserved */
+        uint32_t        attributes;
+        uint32_t        reserved3[16];
+};
+typedef struct _HfsPHeaderRecord HfsPHeaderRecord;
+
+/* Catalog key for B-Tree lookup in the HFS+ catalog file */
+struct __attribute__ ((packed)) _HfsPCatalogKey {
+        uint16_t        key_length;
+        HfsPNodeID      parent_ID;
+        HfsPUniStr255   node_name;
+};
+typedef struct _HfsPCatalogKey HfsPCatalogKey;
+
+/* HFS+ catalog subdata case dir */
+struct __attribute__ ((packed)) _HfsPDir {
+        uint16_t        flags;
+        uint32_t        valence;
+        HfsPNodeID      dir_ID;
+        uint32_t        create_date;
+        uint32_t        modify_date;
+        uint32_t        attrib_mod_date;
+        uint32_t        access_date;
+        uint32_t        backup_date;
+        HfsPPerms       permissions;
+        int8_t          DInfo[16];        /* used by Finder, handle as reserved */
+        int8_t          DXInfo[16];       /* used by Finder, handle as reserved */
+        uint32_t        text_encoding;
+        uint32_t        reserved;
+};
+typedef struct _HfsPDir HfsPDir;
+
+/* HFS+ catalog subdata case file */
+struct __attribute__ ((packed)) _HfsPFile {
+        uint16_t        flags;
+        uint32_t        reserved1;
+        HfsPNodeID      file_ID;
+        uint32_t        create_date;
+        uint32_t        modify_date;
+        uint32_t        attrib_mod_date;
+        uint32_t        access_date;
+        uint32_t        backup_date;
+        HfsPPerms       permissions;
+        int8_t          FInfo[16];        /* used by Finder, handle as reserved */
+        int8_t          FXInfo[16];       /* used by Finder, handle as reserved */
+        uint32_t        text_encoding;
+        uint32_t        reserved2;
+
+        HfsPForkData    data_fork;
+        HfsPForkData    res_fork;
+};
+typedef struct _HfsPFile HfsPFile;
+
+/* HFS+ catalog subdata case thread */
+struct __attribute__ ((packed)) _HfsPThread {
+        int16_t         reserved;
+        HfsPNodeID      parent_ID;
+        HfsPUniStr255   node_name;
+};
+typedef struct _HfsPThread HfsPDirTh;
+typedef struct _HfsPThread HfsPFileTh;
+
+/* HFS+ Catalog leaf data */
+struct __attribute__ ((packed)) _HfsPCatalog {
+        int16_t         type;
+        union {
+                HfsPDir         dir;
+                HfsPFile        file;
+                HfsPDirTh       dir_th;
+                HfsPFileTh      file_th;
+        } sel;
+};
+typedef struct _HfsPCatalog HfsPCatalog;
+
+/* HFS+ extents file key */
+struct __attribute__ ((packed)) _HfsPExtentKey {
+        uint16_t        key_length;
+        uint8_t         type;
+        uint8_t         pad;
+        HfsPNodeID      file_ID;
+        uint32_t        start;
+};
+typedef struct _HfsPExtentKey HfsPExtentKey;
+
+/* extent file data is HfsPExtDataRec */
+
+/* Fork data attribute file */
+struct __attribute__ ((packed)) _HfsPForkDataAttr {
+        uint32_t        record_type;
+        uint32_t        reserved;
+        union __attribute__ ((packed)) {
+                HfsPForkData        fork;
+                HfsPExtDataRec      extents;
+        } fork_res;
+};
+typedef struct _HfsPForkDataAttr HfsPForkDataAttr;
+
+
+/* ----------- Journal data structures ----------- */
+
+/* Info block : stored in a block # defined in the VH */
+struct __attribute__ ((packed)) _HfsJJournalInfoBlock {
+        uint32_t        flags;
+        uint32_t        device_signature[8];
+        uint64_t        offset;
+        uint64_t        size;
+        uint32_t        reserved[32];
+};
+typedef struct _HfsJJournalInfoBlock HfsJJournalInfoBlock;
+
+struct __attribute__ ((packed)) _HfsJJournalHeader {
+        uint32_t        magic;
+        uint32_t        endian;
+        uint64_t        start;
+        uint64_t        end;
+        uint64_t        size;
+        uint32_t        blhdr_size;
+        uint32_t        checksum;
+        uint32_t        jhdr_size;
+};
+typedef struct _HfsJJournalHeader HfsJJournalHeader;
+
+struct __attribute__ ((packed)) _HfsJBlockInfo {
+        uint64_t        bnum;          /* sector number */
+        uint32_t        bsize;         /* size in bytes */
+        uint32_t        next;
+};
+typedef struct _HfsJBlockInfo HfsJBlockInfo;
+
+struct __attribute__ ((packed)) _HfsJBlockListHeader {
+        uint16_t        max_blocks;    /* reserved */
+        uint16_t        num_blocks;
+        uint32_t        bytes_used;
+        uint32_t        checksum;
+        uint32_t        pad;
+        HfsJBlockInfo   binfo[1];
+};
+typedef struct _HfsJBlockListHeader HfsJBlockListHeader;
+
+
+
+/* ---------------------------------------- */
+/* --      INTERNAL DATA STRUCTURES      -- */
+/* ---------------------------------------- */
+
+/* Data of an opened HFS file */
+struct _HfsPrivateFile {
+        PedSector       sect_nb;
+        PedFileSystem*  fs;
+        uint32_t        CNID;          /* disk order (BE) */
+        HfsExtDataRec   first;         /* disk order (BE) */
+        HfsExtDataRec   cache;         /* disk order (BE) */
+        uint16_t        start_cache;   /* CPU order */
+};
+typedef struct _HfsPrivateFile HfsPrivateFile;
+
+/* To store bad block list */
+struct _HfsPrivateLinkExtent {
+        HfsExtDescriptor                 extent;
+        struct _HfsPrivateLinkExtent*    next;
+};
+typedef struct _HfsPrivateLinkExtent HfsPrivateLinkExtent;
+
+/* HFS Filesystem specific data */
+struct _HfsPrivateFSData {
+        uint8_t                     alloc_map[(1<<16) / 8];
+        HfsMasterDirectoryBlock*    mdb;
+        HfsPrivateFile*             extent_file;
+        HfsPrivateFile*             catalog_file;
+        HfsPrivateLinkExtent*       bad_blocks_xtent_list;
+        unsigned int                bad_blocks_xtent_nb;
+        char                        bad_blocks_loaded;
+};
+typedef struct _HfsPrivateFSData HfsPrivateFSData;
+
+/* Generic btree key */
+struct __attribute__ ((packed)) _HfsPrivateGenericKey {
+        uint8_t         key_length;
+        uint8_t         key_content[1];                /* we use 1 as a minimum size */
+};
+typedef struct _HfsPrivateGenericKey HfsPrivateGenericKey;
+
+/* ----- HFS+ ----- */
+
+/* Data of an opened HFS file */
+struct _HfsPPrivateFile {
+        PedSector       sect_nb;
+        PedFileSystem*  fs;
+        HfsPNodeID      CNID;          /* disk order (BE) */
+        HfsPExtDataRec  first;         /* disk order (BE) */
+        HfsPExtDataRec  cache;         /* disk order (BE) */
+        uint32_t        start_cache;   /* CPU order */
+};
+typedef struct _HfsPPrivateFile HfsPPrivateFile;
+
+struct _HfsPPrivateExtent {
+        PedSector       start_sector;
+        PedSector       sector_count;
+};
+typedef struct _HfsPPrivateExtent HfsPPrivateExtent;
+
+/* To store bad block list */
+struct _HfsPPrivateLinkExtent {
+        HfsPExtDescriptor                 extent;
+        struct _HfsPPrivateLinkExtent*    next;
+};
+typedef struct _HfsPPrivateLinkExtent HfsPPrivateLinkExtent;
+
+/* HFS+ file system specific data */
+struct _HfsPPrivateFSData {
+        PedFileSystem*          wrapper;      /* NULL if hfs+ is not embedded */
+        PedGeometry*            plus_geom;    /* Geometry of HFS+ _volume_ */
+        uint8_t*                alloc_map;
+        uint8_t*                dirty_alloc_map;
+        HfsPVolumeHeader*       vh;
+        HfsPPrivateFile*        extents_file;
+        HfsPPrivateFile*        catalog_file;
+        HfsPPrivateFile*        attributes_file;
+        HfsPPrivateFile*        allocation_file;
+        HfsPPrivateLinkExtent*  bad_blocks_xtent_list;
+        uint32_t                jib_start_block;
+        uint32_t                jl_start_block;
+        unsigned int            bad_blocks_xtent_nb;
+        char                    bad_blocks_loaded;
+        char                    free_geom;    /* 1 = plus_geom must be freed */
+};
+typedef struct _HfsPPrivateFSData HfsPPrivateFSData;
+
+/* Generic + btree key */
+struct __attribute__ ((packed)) _HfsPPrivateGenericKey {
+        uint16_t        key_length;
+        uint8_t         key_content[1];       /* we use 1 as a minimum size */
+};
+typedef struct _HfsPPrivateGenericKey HfsPPrivateGenericKey;
+
+/* ---- common ---- */
+
+/* node and lead record reference for a BTree search */
+struct _HfsCPrivateLeafRec {
+        unsigned int    node_size;     /* in sectors */
+        unsigned int    node_number;
+        unsigned int    record_pos;
+        unsigned int    record_number;
+};
+typedef struct _HfsCPrivateLeafRec HfsCPrivateLeafRec;
+
+extern uint8_t*    hfs_block;
+extern uint8_t*    hfsp_block;
+extern unsigned    hfs_block_count;
+extern unsigned    hfsp_block_count;
+
+#endif /* _HFS_H */
diff --git a/libparted/fs/hfs/probe.c b/libparted/fs/hfs/probe.c
new file mode 100644 (file)
index 0000000..8c656cf
--- /dev/null
@@ -0,0 +1,230 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 2004-2005, 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#include <config.h>
+
+#include <parted/parted.h>
+#include <parted/endian.h>
+#include <parted/debug.h>
+#include <stdint.h>
+
+#if ENABLE_NLS
+#  include <libintl.h>
+#  define _(String) dgettext (PACKAGE, String)
+#else
+#  define _(String) (String)
+#endif /* ENABLE_NLS */
+
+#include "hfs.h"
+
+#include "probe.h"
+
+int
+hfsc_can_use_geom (PedGeometry* geom)
+{
+       PedDevice* dev;
+
+       dev = geom->dev;
+       PED_ASSERT (geom != NULL);
+       PED_ASSERT (dev != NULL);
+
+       if (dev->sector_size != PED_SECTOR_SIZE_DEFAULT) {
+               ped_exception_throw (
+                       PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_CANCEL,
+                       _("Parted can't use HFS file systems on disks "
+                         "with a sector size not equal to %d bytes."),
+                       (int)PED_SECTOR_SIZE_DEFAULT );
+               return 0;
+       }
+
+       return 1;
+}
+
+/* Probe an HFS volume, detecting it even if
+it is in fact a wrapper to an HFS+ volume */
+/* Used by hfsplus_probe and hfs_probe */
+PedGeometry*
+hfs_and_wrapper_probe (PedGeometry* geom)
+{
+       uint8_t         buf[PED_SECTOR_SIZE_DEFAULT];
+       HfsMasterDirectoryBlock *mdb;
+       PedGeometry*    geom_ret;
+       PedSector       search, max;
+
+       PED_ASSERT (geom != NULL);
+       PED_ASSERT (hfsc_can_use_geom (geom));
+
+       mdb = (HfsMasterDirectoryBlock *) buf;
+
+       /* is 5 an intelligent value ? */
+       if ((geom->length < 5)
+           || (!ped_geometry_read (geom, buf, 2, 1))
+           || (mdb->signature != PED_CPU_TO_BE16 (HFS_SIGNATURE)) )
+               return NULL;
+
+       search = ((PedSector) PED_BE16_TO_CPU (mdb->start_block)
+                 + ((PedSector) PED_BE16_TO_CPU (mdb->total_blocks)
+                    * (PED_BE32_TO_CPU (mdb->block_size) / PED_SECTOR_SIZE_DEFAULT )));
+       max = search + (PED_BE32_TO_CPU (mdb->block_size) / PED_SECTOR_SIZE_DEFAULT);
+       if (!(geom_ret = ped_geometry_new (geom->dev, geom->start, search + 2)))
+               return NULL;
+
+       for (; search < max; search++) {
+               if (!ped_geometry_set (geom_ret, geom_ret->start, search + 2)
+                   || !ped_geometry_read (geom_ret, buf, search, 1))
+                       break;
+               if (mdb->signature == PED_CPU_TO_BE16 (HFS_SIGNATURE))
+                       return geom_ret;
+       }
+
+       ped_geometry_destroy (geom_ret);
+       return NULL;
+}
+
+PedGeometry*
+hfsplus_probe (PedGeometry* geom)
+{
+       PedGeometry*    geom_ret;
+       uint8_t         buf[PED_SECTOR_SIZE_DEFAULT];
+
+       PED_ASSERT (geom != NULL);
+
+       if (!hfsc_can_use_geom (geom))
+               return NULL;
+
+       if ((geom_ret = hfs_and_wrapper_probe(geom))) {
+               /* HFS+ is embedded in an HFS volume ? */
+               HfsMasterDirectoryBlock *mdb;
+               mdb = (HfsMasterDirectoryBlock *) buf;
+
+               if (!ped_geometry_read (geom, buf, 2, 1)
+                   || (mdb->old_new.embedded.signature
+                       != PED_CPU_TO_BE16 (HFSP_SIGNATURE))) {
+                       ped_geometry_destroy (geom_ret);
+                       return NULL;
+               } else
+                       return geom_ret;
+       } else {
+               /* This is a standalone HFS+ volume ? */
+               PedSector       search, max;
+               HfsPVolumeHeader *vh;
+               vh = (HfsPVolumeHeader *) buf;
+
+               if ((geom->length < 5)
+                   || !ped_geometry_read (geom, buf, 2, 1)
+                   || (vh->signature != PED_CPU_TO_BE16 (HFSP_SIGNATURE)))
+                       return NULL;
+
+               /* Correct range is indeed [ blocks*sz-2;(blocs+1)*sz-2 ( */
+               /* But previous versions of my implementation used to */
+               /* assume range is [(blocks-1)*sz-1;(blocks*sz) ( */
+               /* (blocks-1)*sz-1 has to be scanned last, because */
+               /* it can belong to a regular file */
+               max = ((PedSector) PED_BE32_TO_CPU (vh->total_blocks) + 1)
+                     * ( PED_BE32_TO_CPU (vh->block_size) / PED_SECTOR_SIZE_DEFAULT )
+                     - 2;
+               search = max - 2 * ( PED_BE32_TO_CPU (vh->block_size)
+                                    / PED_SECTOR_SIZE_DEFAULT ) + 2;
+               if (!(geom_ret = ped_geometry_new (geom->dev, geom->start,
+                                                  search + 2)))
+                       return NULL;
+
+               for (; search < max; search++) {
+                       if (!ped_geometry_set (geom_ret, geom_ret->start,
+                                              search + 2)
+                           || !ped_geometry_read (geom_ret, buf, search, 1))
+                               break;
+                       if (vh->signature == PED_CPU_TO_BE16 (HFSP_SIGNATURE))
+                               return geom_ret;
+               }
+               search = ((PedSector) PED_BE32_TO_CPU (vh->total_blocks) - 1)
+                     * ( PED_BE32_TO_CPU (vh->block_size) / PED_SECTOR_SIZE_DEFAULT )
+                     - 1;
+               if (!ped_geometry_set (geom_ret, geom_ret->start,
+                                              search + 2)
+                   || !ped_geometry_read (geom_ret, buf, search, 1)
+                   || vh->signature != PED_CPU_TO_BE16 (HFSP_SIGNATURE)) {
+                       ped_geometry_destroy (geom_ret);
+                       return NULL;
+               } else
+                       return geom_ret;
+       }
+}
+
+PedGeometry*
+hfs_probe (PedGeometry* geom)
+{
+       PedGeometry*    geom_base;
+       PedGeometry*    geom_plus = NULL;
+
+       PED_ASSERT (geom != NULL);
+
+       if (!hfsc_can_use_geom (geom))
+               return NULL;
+
+       if ((geom_base = hfs_and_wrapper_probe(geom))
+           && (!(geom_plus = hfsplus_probe(geom_base))))
+               return geom_base;
+       else {
+               if (geom_base) ped_geometry_destroy (geom_base);
+               if (geom_plus) ped_geometry_destroy (geom_plus);
+               return NULL;
+       }
+}
+
+PedGeometry*
+hfsx_probe (PedGeometry* geom)
+{
+       PedGeometry*    geom_ret;
+       uint8_t         buf[PED_SECTOR_SIZE_DEFAULT];
+       PedSector       search, max;
+       HfsPVolumeHeader *vh = (HfsPVolumeHeader *) buf;
+
+       PED_ASSERT (geom != NULL);
+
+       if (!hfsc_can_use_geom (geom))
+               return NULL;
+
+       if ((geom->length < 5)
+           || !ped_geometry_read (geom, buf, 2, 1)
+           || (vh->signature != PED_CPU_TO_BE16 (HFSX_SIGNATURE)))
+               return NULL;
+
+       /* unlike the hfs+ code, which should be kept compatible
+       with my old previous implementations, we only care here
+       about legal alternate VH positions, like TN1150 describes them */
+       max = ((PedSector) PED_BE32_TO_CPU (vh->total_blocks) + 1)
+                     * ( PED_BE32_TO_CPU (vh->block_size) / PED_SECTOR_SIZE_DEFAULT )
+                     - 2;
+       search = max - ( PED_BE32_TO_CPU (vh->block_size) / PED_SECTOR_SIZE_DEFAULT );
+       if (!(geom_ret = ped_geometry_new (geom->dev, geom->start,
+                                          search + 2)))
+               return NULL;
+       for (; search < max; search++) {
+               if (!ped_geometry_set (geom_ret, geom_ret->start,
+                                      search + 2)
+                   || !ped_geometry_read (geom_ret, buf, search, 1))
+                       break;
+               if (vh->signature == PED_CPU_TO_BE16 (HFSX_SIGNATURE))
+                       return geom_ret;
+       }
+
+       ped_geometry_destroy (geom_ret);
+       return NULL;
+}
diff --git a/libparted/fs/hfs/probe.h b/libparted/fs/hfs/probe.h
new file mode 100644 (file)
index 0000000..48d14b2
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 2004-2005, 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef _PROBE_H
+#define _PROBE_H
+
+#include <parted/parted.h>
+#include <parted/endian.h>
+#include <parted/debug.h>
+
+#include "hfs.h"
+
+int
+hfsc_can_use_geom (PedGeometry* geom);
+
+PedGeometry*
+hfs_and_wrapper_probe (PedGeometry* geom);
+
+PedGeometry*
+hfsplus_probe (PedGeometry* geom);
+
+PedGeometry*
+hfs_probe (PedGeometry* geom);
+
+PedGeometry*
+hfsx_probe (PedGeometry* geom);
+
+#endif /* _PROBE_H */
diff --git a/libparted/fs/jfs/Makefile.am b/libparted/fs/jfs/Makefile.am
new file mode 100644 (file)
index 0000000..a477874
--- /dev/null
@@ -0,0 +1,9 @@
+AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
+partedincludedir       = -I$(top_srcdir)/include
+
+noinst_LTLIBRARIES     = libjfs.la
+libjfs_la_SOURCES      = jfs.c jfs_superblock.h jfs_types.h
+
+INCLUDES = $(partedincludedir) $(INTLINCS)
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/libparted/fs/jfs/Makefile.in b/libparted/fs/jfs/Makefile.in
new file mode 100644 (file)
index 0000000..d5c816c
--- /dev/null
@@ -0,0 +1,1267 @@
+# Makefile.in generated by automake 1.11a from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in 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.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = libparted/fs/jfs
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+       $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argmatch.m4 \
+       $(top_srcdir)/m4/assert.m4 $(top_srcdir)/m4/btowc.m4 \
+       $(top_srcdir)/m4/calloc.m4 $(top_srcdir)/m4/canonicalize.m4 \
+       $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
+       $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/configmake.m4 \
+       $(top_srcdir)/m4/dirname.m4 \
+       $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+       $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/environ.m4 \
+       $(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
+       $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fclose.m4 \
+       $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/fcntl_h.m4 \
+       $(top_srcdir)/m4/fflush.m4 $(top_srcdir)/m4/fpending.m4 \
+       $(top_srcdir)/m4/fpurge.m4 $(top_srcdir)/m4/freading.m4 \
+       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/fsync.m4 \
+       $(top_srcdir)/m4/ftell.m4 $(top_srcdir)/m4/ftello.m4 \
+       $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
+       $(top_srcdir)/m4/langinfo_h.m4 $(top_srcdir)/m4/lcmessage.m4 \
+       $(top_srcdir)/m4/lib-ignore.m4 $(top_srcdir)/m4/lib-ld.m4 \
+       $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/localcharset.m4 \
+       $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \
+       $(top_srcdir)/m4/locale-tr.m4 $(top_srcdir)/m4/locale-zh.m4 \
+       $(top_srcdir)/m4/locale_h.m4 $(top_srcdir)/m4/localename.m4 \
+       $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/long-options.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
+       $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+       $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
+       $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+       $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbtowc.m4 \
+       $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+       $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/multiarch.m4 \
+       $(top_srcdir)/m4/nl_langinfo.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/nocrash.m4 $(top_srcdir)/m4/o-direct.m4 \
+       $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/priv-set.m4 \
+       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+       $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+       $(top_srcdir)/m4/read.m4 $(top_srcdir)/m4/readlink.m4 \
+       $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/regex.m4 \
+       $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+       $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/setlocale.m4 \
+       $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/ssize_t.m4 \
+       $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdarg.m4 \
+       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strdup.m4 \
+       $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/strerror_r.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+       $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtoll.m4 \
+       $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/symlink.m4 \
+       $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+       $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/thread.m4 \
+       $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/time_h.m4 \
+       $(top_srcdir)/m4/ungetc.m4 $(top_srcdir)/m4/unistd_h.m4 \
+       $(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkdir.m4 \
+       $(top_srcdir)/m4/usleep.m4 $(top_srcdir)/m4/version-etc.m4 \
+       $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \
+       $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
+       $(top_srcdir)/m4/wcrtomb.m4 $(top_srcdir)/m4/wctob.m4 \
+       $(top_srcdir)/m4/wctomb.m4 $(top_srcdir)/m4/wctype_h.m4 \
+       $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+       $(top_srcdir)/m4/xstrndup.m4 $(top_srcdir)/m4/xstrtol.m4 \
+       $(top_srcdir)/m4/yield.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libjfs_la_LIBADD =
+am_libjfs_la_OBJECTS = jfs.lo
+libjfs_la_OBJECTS = $(am_libjfs_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/lib
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+       $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo "  CC      " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+SOURCES = $(libjfs_la_SOURCES)
+DIST_SOURCES = $(libjfs_la_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+pkglibexecdir = @pkglibexecdir@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+BUILDINFO = @BUILDINFO@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHECK_CFLAGS = @CHECK_CFLAGS@
+CHECK_LIBS = @CHECK_LIBS@
+CONFIG_INCLUDE = @CONFIG_INCLUDE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DYNAMIC_LOADING = @DYNAMIC_LOADING@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENABLE_DEVICE_MAPPER = @ENABLE_DEVICE_MAPPER@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FACCESSAT = @GNULIB_FACCESSAT@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCHMODAT = @GNULIB_FCHMODAT@
+GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FCNTL = @GNULIB_FCNTL@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FGETC = @GNULIB_FGETC@
+GNULIB_FGETS = @GNULIB_FGETS@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREAD = @GNULIB_FREAD@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSCANF = @GNULIB_FSCANF@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSTATAT = @GNULIB_FSTATAT@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FUTIMENS = @GNULIB_FUTIMENS@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETC = @GNULIB_GETC@
+GNULIB_GETCHAR = @GNULIB_GETCHAR@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETGROUPS = @GNULIB_GETGROUPS@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETS = @GNULIB_GETS@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
+GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_ISWBLANK = @GNULIB_ISWBLANK@
+GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@
+GNULIB_LCHMOD = @GNULIB_LCHMOD@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LINKAT = @GNULIB_LINKAT@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_LSTAT = @GNULIB_LSTAT@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MBTOWC = @GNULIB_MBTOWC@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDIRAT = @GNULIB_MKDIRAT@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKFIFO = @GNULIB_MKFIFO@
+GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@
+GNULIB_MKNOD = @GNULIB_MKNOD@
+GNULIB_MKNODAT = @GNULIB_MKNODAT@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@
+GNULIB_MKTIME = @GNULIB_MKTIME@
+GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@
+GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@
+GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_OPEN = @GNULIB_OPEN@
+GNULIB_OPENAT = @GNULIB_OPENAT@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE = @GNULIB_PIPE@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_PREAD = @GNULIB_PREAD@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READ = @GNULIB_READ@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_READLINKAT = @GNULIB_READLINKAT@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_REALPATH = @GNULIB_REALPATH@
+GNULIB_REMOVE = @GNULIB_REMOVE@
+GNULIB_RENAME = @GNULIB_RENAME@
+GNULIB_RENAMEAT = @GNULIB_RENAMEAT@
+GNULIB_RMDIR = @GNULIB_RMDIR@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SETLOCALE = @GNULIB_SETLOCALE@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STAT = @GNULIB_STAT@
+GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRERROR_R = @GNULIB_STRERROR_R@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRPTIME = @GNULIB_STRPTIME@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_SYMLINK = @GNULIB_SYMLINK@
+GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
+GNULIB_TIMEGM = @GNULIB_TIMEGM@
+GNULIB_TIME_R = @GNULIB_TIME_R@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
+GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
+GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNLINK = @GNULIB_UNLINK@
+GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_USLEEP = @GNULIB_USLEEP@
+GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VFSCANF = @GNULIB_VFSCANF@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSCANF = @GNULIB_VSCANF@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCPCPY = @GNULIB_WCPCPY@
+GNULIB_WCPNCPY = @GNULIB_WCPNCPY@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@
+GNULIB_WCSCAT = @GNULIB_WCSCAT@
+GNULIB_WCSCHR = @GNULIB_WCSCHR@
+GNULIB_WCSCMP = @GNULIB_WCSCMP@
+GNULIB_WCSCOLL = @GNULIB_WCSCOLL@
+GNULIB_WCSCPY = @GNULIB_WCSCPY@
+GNULIB_WCSCSPN = @GNULIB_WCSCSPN@
+GNULIB_WCSDUP = @GNULIB_WCSDUP@
+GNULIB_WCSLEN = @GNULIB_WCSLEN@
+GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@
+GNULIB_WCSNCAT = @GNULIB_WCSNCAT@
+GNULIB_WCSNCMP = @GNULIB_WCSNCMP@
+GNULIB_WCSNCPY = @GNULIB_WCSNCPY@
+GNULIB_WCSNLEN = @GNULIB_WCSNLEN@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSPBRK = @GNULIB_WCSPBRK@
+GNULIB_WCSRCHR = @GNULIB_WCSRCHR@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCSSPN = @GNULIB_WCSSPN@
+GNULIB_WCSSTR = @GNULIB_WCSSTR@
+GNULIB_WCSTOK = @GNULIB_WCSTOK@
+GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@
+GNULIB_WCSXFRM = @GNULIB_WCSXFRM@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCTOMB = @GNULIB_WCTOMB@
+GNULIB_WCTRANS = @GNULIB_WCTRANS@
+GNULIB_WCTYPE = @GNULIB_WCTYPE@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WMEMCHR = @GNULIB_WMEMCHR@
+GNULIB_WMEMCMP = @GNULIB_WMEMCMP@
+GNULIB_WMEMCPY = @GNULIB_WMEMCPY@
+GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@
+GNULIB_WMEMSET = @GNULIB_WMEMSET@
+GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
+HAVE_CHOWN = @HAVE_CHOWN@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@
+HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SETENV = @HAVE_DECL_SETENV@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@
+HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_DUPLOCALE = @HAVE_DUPLOCALE@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
+HAVE_FCHMODAT = @HAVE_FCHMODAT@
+HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
+HAVE_FCNTL = @HAVE_FCNTL@
+HAVE_FEATURES_H = @HAVE_FEATURES_H@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSTATAT = @HAVE_FSTATAT@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_FUTIMENS = @HAVE_FUTIMENS@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETGROUPS = @HAVE_GETGROUPS@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETLOGIN = @HAVE_GETLOGIN@
+HAVE_GETOPT_H = @HAVE_GETOPT_H@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
+HAVE_GRANTPT = @HAVE_GRANTPT@
+HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWBLANK = @HAVE_ISWBLANK@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
+HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
+HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
+HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
+HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
+HAVE_LCHMOD = @HAVE_LCHMOD@
+HAVE_LCHOWN = @HAVE_LCHOWN@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_LSTAT = @HAVE_LSTAT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSLEN = @HAVE_MBSLEN@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMCHR = @HAVE_MEMCHR@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDIRAT = @HAVE_MKDIRAT@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKFIFO = @HAVE_MKFIFO@
+HAVE_MKFIFOAT = @HAVE_MKFIFOAT@
+HAVE_MKNOD = @HAVE_MKNOD@
+HAVE_MKNODAT = @HAVE_MKNODAT@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
+HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
+HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
+HAVE_OPENAT = @HAVE_OPENAT@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PIPE = @HAVE_PIPE@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PWRITE = @HAVE_PWRITE@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_READLINKAT = @HAVE_READLINKAT@
+HAVE_REALPATH = @HAVE_REALPATH@
+HAVE_RENAMEAT = @HAVE_RENAMEAT@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRPTIME = @HAVE_STRPTIME@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYMLINK = @HAVE_SYMLINK@
+HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_TIMEGM = @HAVE_TIMEGM@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_USLEEP = @HAVE_USLEEP@
+HAVE_UTIMENSAT = @HAVE_UTIMENSAT@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCPCPY = @HAVE_WCPCPY@
+HAVE_WCPNCPY = @HAVE_WCPNCPY@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSCASECMP = @HAVE_WCSCASECMP@
+HAVE_WCSCAT = @HAVE_WCSCAT@
+HAVE_WCSCHR = @HAVE_WCSCHR@
+HAVE_WCSCMP = @HAVE_WCSCMP@
+HAVE_WCSCOLL = @HAVE_WCSCOLL@
+HAVE_WCSCPY = @HAVE_WCSCPY@
+HAVE_WCSCSPN = @HAVE_WCSCSPN@
+HAVE_WCSDUP = @HAVE_WCSDUP@
+HAVE_WCSLEN = @HAVE_WCSLEN@
+HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@
+HAVE_WCSNCAT = @HAVE_WCSNCAT@
+HAVE_WCSNCMP = @HAVE_WCSNCMP@
+HAVE_WCSNCPY = @HAVE_WCSNCPY@
+HAVE_WCSNLEN = @HAVE_WCSNLEN@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSPBRK = @HAVE_WCSPBRK@
+HAVE_WCSRCHR = @HAVE_WCSRCHR@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCSSPN = @HAVE_WCSSPN@
+HAVE_WCSSTR = @HAVE_WCSSTR@
+HAVE_WCSTOK = @HAVE_WCSTOK@
+HAVE_WCSWIDTH = @HAVE_WCSWIDTH@
+HAVE_WCSXFRM = @HAVE_WCSXFRM@
+HAVE_WCTRANS_T = @HAVE_WCTRANS_T@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WCTYPE_T = @HAVE_WCTYPE_T@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WMEMCHR = @HAVE_WMEMCHR@
+HAVE_WMEMCMP = @HAVE_WMEMCMP@
+HAVE_WMEMCPY = @HAVE_WMEMCPY@
+HAVE_WMEMMOVE = @HAVE_WMEMMOVE@
+HAVE_WMEMSET = @HAVE_WMEMSET@
+HAVE_XLOCALE_H = @HAVE_XLOCALE_H@
+HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
+IGNORE_UNUSED_LIBRARIES_CFLAGS = @IGNORE_UNUSED_LIBRARIES_CFLAGS@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@
+INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMULTITHREAD = @LIBMULTITHREAD@
+LIBOBJS = @LIBOBJS@
+LIBPTH = @LIBPTH@
+LIBPTH_PREFIX = @LIBPTH_PREFIX@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTHREAD = @LIBTHREAD@
+LIBTOOL = @LIBTOOL@
+LIB_BLKID = @LIB_BLKID@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBMULTITHREAD = @LTLIBMULTITHREAD@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBPTH = @LTLIBPTH@
+LTLIBTHREAD = @LTLIBTHREAD@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
+NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@
+NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
+NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@
+NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FCNTL_H = @NEXT_FCNTL_H@
+NEXT_GETOPT_H = @NEXT_GETOPT_H@
+NEXT_INTTYPES_H = @NEXT_INTTYPES_H@
+NEXT_LANGINFO_H = @NEXT_LANGINFO_H@
+NEXT_LOCALE_H = @NEXT_LOCALE_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@
+NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@
+NEXT_TIME_H = @NEXT_TIME_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PARTED_USABLE_TEST_DIR = @PARTED_USABLE_TEST_DIR@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CALLOC = @REPLACE_CALLOC@
+REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP = @REPLACE_DUP@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@
+REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FCNTL = @REPLACE_FCNTL@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FSTAT = @REPLACE_FSTAT@
+REPLACE_FSTATAT = @REPLACE_FSTATAT@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_FUTIMENS = @REPLACE_FUTIMENS@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETDELIM = @REPLACE_GETDELIM@
+REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@
+REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LINK = @REPLACE_LINK@
+REPLACE_LINKAT = @REPLACE_LINKAT@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_LSTAT = @REPLACE_LSTAT@
+REPLACE_MALLOC = @REPLACE_MALLOC@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MBTOWC = @REPLACE_MBTOWC@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKDIR = @REPLACE_MKDIR@
+REPLACE_MKFIFO = @REPLACE_MKFIFO@
+REPLACE_MKNOD = @REPLACE_MKNOD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_MKTIME = @REPLACE_MKTIME@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_OPEN = @REPLACE_OPEN@
+REPLACE_OPENAT = @REPLACE_OPENAT@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PREAD = @REPLACE_PREAD@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
+REPLACE_READ = @REPLACE_READ@
+REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_REALLOC = @REPLACE_REALLOC@
+REPLACE_REALPATH = @REPLACE_REALPATH@
+REPLACE_REMOVE = @REPLACE_REMOVE@
+REPLACE_RENAME = @REPLACE_RENAME@
+REPLACE_RENAMEAT = @REPLACE_RENAMEAT@
+REPLACE_RMDIR = @REPLACE_RMDIR@
+REPLACE_SETENV = @REPLACE_SETENV@
+REPLACE_SETLOCALE = @REPLACE_SETLOCALE@
+REPLACE_SLEEP = @REPLACE_SLEEP@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STAT = @REPLACE_STAT@
+REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRERROR_R = @REPLACE_STRERROR_R@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
+REPLACE_STRNDUP = @REPLACE_STRNDUP@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
+REPLACE_SYMLINK = @REPLACE_SYMLINK@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
+REPLACE_UNLINK = @REPLACE_UNLINK@
+REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
+REPLACE_UNSETENV = @REPLACE_UNSETENV@
+REPLACE_USLEEP = @REPLACE_USLEEP@
+REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCTOMB = @REPLACE_WCTOMB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SELINUX_LIBS = @SELINUX_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
+UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
+UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+YIELD_LIB = @YIELD_LIB@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
+partedincludedir = -I$(top_srcdir)/include
+noinst_LTLIBRARIES = libjfs.la
+libjfs_la_SOURCES = jfs.c jfs_superblock.h jfs_types.h
+INCLUDES = $(partedincludedir) $(INTLINCS)
+MAINTAINERCLEANFILES = Makefile.in
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libparted/fs/jfs/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu libparted/fs/jfs/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+       -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+       @list='$(noinst_LTLIBRARIES)'; \
+       locs=`for p in $$list; do echo $$p; done | \
+             sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+             sort -u`; \
+       test -z "$$locs" || { \
+         echo rm -f $${locs}; \
+         rm -f $${locs}; \
+       }
+libjfs.la: $(libjfs_la_OBJECTS) $(libjfs_la_DEPENDENCIES) $(EXTRA_libjfs_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK)  $(libjfs_la_OBJECTS) $(libjfs_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jfs.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+       mostlyclean-am
+
+distclean: distclean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+       clean-libtool clean-noinstLTLIBRARIES cscopelist ctags \
+       distclean distclean-compile distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       tags uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libparted/fs/jfs/jfs.c b/libparted/fs/jfs/jfs.c
new file mode 100644 (file)
index 0000000..2095002
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 2001, 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#include <config.h>
+
+#include <parted/parted.h>
+#include <parted/endian.h>
+
+#define _JFS_UTILITY
+#include "jfs_types.h"
+#include "jfs_superblock.h"
+
+#define JFS_SUPER_SECTOR 64
+
+#if ENABLE_NLS
+#  include <libintl.h>
+#  define _(String) dgettext (PACKAGE, String)
+#else
+#  define _(String) (String)
+#endif /* ENABLE_NLS */
+
+#define JFS_BLOCK_SIZES                ((int[2]){512, 0})
+
+static PedGeometry*
+jfs_probe (PedGeometry* geom)
+{
+       union {
+               struct superblock       sb;
+               char                    bytes[512];
+       } buf;
+
+        /* FIXME: for now, don't even try to deal with larger sector size.  */
+       if (geom->dev->sector_size != PED_SECTOR_SIZE_DEFAULT)
+               return NULL;
+
+       if (geom->length < JFS_SUPER_SECTOR + 1)
+               return NULL;
+       if (!ped_geometry_read (geom, &buf, JFS_SUPER_SECTOR, 1))
+               return NULL;
+
+       if (strncmp (buf.sb.s_magic, JFS_MAGIC, 4) == 0) {
+               PedSector block_size = PED_LE32_TO_CPU (buf.sb.s_pbsize) / 512;
+               PedSector block_count = PED_LE64_TO_CPU (buf.sb.s_size);
+
+               return ped_geometry_new (geom->dev, geom->start,
+                                        block_size * block_count);
+       } else {
+               return NULL;
+       }
+}
+
+static PedFileSystemOps jfs_ops = {
+       probe:          jfs_probe,
+};
+
+static PedFileSystemType jfs_type = {
+       next:   NULL,
+       ops:    &jfs_ops,
+       name:   "jfs",
+       block_sizes: JFS_BLOCK_SIZES
+};
+
+void
+ped_file_system_jfs_init ()
+{
+       ped_file_system_type_register (&jfs_type);
+}
+
+void
+ped_file_system_jfs_done ()
+{
+       ped_file_system_type_unregister (&jfs_type);
+}
diff --git a/libparted/fs/jfs/jfs_superblock.h b/libparted/fs/jfs/jfs_superblock.h
new file mode 100644 (file)
index 0000000..ea13dfb
--- /dev/null
@@ -0,0 +1,144 @@
+/*
+ *   Copyright (c) International Business Machines  Corp., 2000
+ *
+ *   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 <http://www.gnu.org/licenses/>.
+ *
+ */
+#ifndef        _H_JFS_SUPERBLOCK
+#define _H_JFS_SUPERBLOCK
+/*
+ *     jfs_superblock.h
+ */
+
+/*
+ * make the magic number something a human could read
+ */
+#define JFS_MAGIC      "JFS1"  /* Magic word: Version 1 */
+
+#define JFS_VERSION    1       /* Version number: Version 1 */
+
+#define LV_NAME_SIZE   11      /* MUST BE 11 for OS/2 boot sector */
+
+/*
+ *     aggregate superblock
+ *
+ * The name superblock is too close to super_block, so the name has been
+ * changed to jfs_superblock.  The utilities are still using the old name.
+ */
+#ifdef _JFS_UTILITY
+struct superblock
+#else
+struct jfs_superblock
+#endif
+{
+       char s_magic[4];        /* 4: magic number */
+       u32 s_version;          /* 4: version number */
+
+       s64 s_size;             /* 8: aggregate size in hardware/LVM blocks;
+                                * VFS: number of blocks
+                                */
+       s32 s_bsize;            /* 4: aggregate block size in bytes;
+                                * VFS: fragment size
+                                */
+       s16 s_l2bsize;          /* 2: log2 of s_bsize */
+       s16 s_l2bfactor;        /* 2: log2(s_bsize/hardware block size) */
+       s32 s_pbsize;           /* 4: hardware/LVM block size in bytes */
+       s16 s_l2pbsize;         /* 2: log2 of s_pbsize */
+       s16 pad;                /* 2: padding necessary for alignment */
+
+       u32 s_agsize;           /* 4: allocation group size in aggr. blocks */
+
+       u32 s_flag;             /* 4: aggregate attributes:
+                                *    see jfs_filsys.h
+                                */
+       u32 s_state;            /* 4: mount/unmount/recovery state:
+                                *    see jfs_filsys.h
+                                */
+       s32 s_compress;         /* 4: > 0 if data compression */
+
+       pxd_t s_ait2;           /* 8: first extent of secondary
+                                *    aggregate inode table
+                                */
+
+       pxd_t s_aim2;           /* 8: first extent of secondary
+                                *    aggregate inode map
+                                */
+       u32 s_logdev;           /* 4: device address of log */
+       s32 s_logserial;        /* 4: log serial number at aggregate mount */
+       pxd_t s_logpxd;         /* 8: inline log extent */
+
+       pxd_t s_fsckpxd;        /* 8: inline fsck work space extent */
+
+       struct timestruc_t s_time;      /* 8: time last updated */
+
+       s32 s_fsckloglen;       /* 4: Number of file system blocks reserved for
+                                *    the fsck service log.
+                                *    N.B. These blocks are divided among the
+                                *         versions kept.  This is not a per
+                                *         version size.
+                                *    N.B. These blocks are included in the
+                                *         length field of s_fsckpxd.
+                                */
+       s8 s_fscklog;           /* 1: which fsck service log is most recent
+                                *    0 => no service log data yet
+                                *    1 => the first one
+                                *    2 => the 2nd one
+                                */
+       char s_fpack[11];       /* 11: file system volume name
+                                *     N.B. This must be 11 bytes to
+                                *          conform with the OS/2 BootSector
+                                *          requirements
+                                */
+
+       /* extendfs() parameter under s_state & FM_EXTENDFS */
+       s64 s_xsize;            /* 8: extendfs s_size */
+       pxd_t s_xfsckpxd;       /* 8: extendfs fsckpxd */
+       pxd_t s_xlogpxd;        /* 8: extendfs logpxd */
+       /* - 128 byte boundary - */
+
+       /*
+        *      DFS VFS support (preliminary)
+        */
+       char s_attach;          /* 1: VFS: flag: set when aggregate is attached
+                                */
+       u8 rsrvd4[7];           /* 7: reserved - set to 0 */
+
+       u64 totalUsable;        /* 8: VFS: total of 1K blocks which are
+                                * available to "normal" (non-root) users.
+                                */
+       u64 minFree;            /* 8: VFS: # of 1K blocks held in reserve for
+                                * exclusive use of root.  This value can be 0,
+                                * and if it is then totalUsable will be equal
+                                * to # of blocks in aggregate.  I believe this
+                                * means that minFree + totalUsable = # blocks.
+                                * In that case, we don't need to store both
+                                * totalUsable and minFree since we can compute
+                                * one from the other.  I would guess minFree
+                                * would be the one we should store, and
+                                * totalUsable would be the one we should
+                                * compute.  (Just a guess...)
+                                */
+
+       u64 realFree;           /* 8: VFS: # of free 1K blocks can be used by
+                                * "normal" users.  It may be this is something
+                                * we should compute when asked for instead of
+                                * storing in the superblock.  I don't know how
+                                * often this information is needed.
+                                */
+       /*
+        *      graffiti area
+        */
+};
+
+#endif /*_H_JFS_SUPERBLOCK */
diff --git a/libparted/fs/jfs/jfs_types.h b/libparted/fs/jfs/jfs_types.h
new file mode 100644 (file)
index 0000000..0366ebd
--- /dev/null
@@ -0,0 +1,527 @@
+/*
+ *   Copyright (c) International Business Machines  Corp., 2000
+ *
+ *   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 <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef _H_JFS_TYPES
+#define        _H_JFS_TYPES
+
+/*
+ *     jfs_types.h:
+ *
+ * basic type/utility  definitions
+ *
+ * note: this header file must be the 1st include file
+ * of JFS include list in all JFS .c file.
+ */
+
+#ifdef _JFS_UTILITY
+/* this is defined in asm/byteorder.h for i386, but
+ * is NOT defined in asm/byteorder.h for ppc (non-kernel).
+ * Until that is changed, we'll define it here.    */
+#define __BYTEORDER_HAS_U64__
+
+#include <sys/types.h>
+//#include <asm/byteorder.h>
+typedef unsigned short UniChar;
+#else
+#include <linux/types.h>
+#include <linux/jfs_fs.h>
+#include <linux/nls.h>
+
+#ifndef _ULS_UNICHAR_DEFINED
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,3,0))
+typedef wchar_t UniChar;
+#else
+typedef unsigned short UniChar;
+#endif
+#define _ULS_UNICHAR_DEFINED
+#endif
+#endif
+/* #include "endian24.h" */
+
+/*
+ *     primitive types
+ */
+#ifdef _JFS_UTILITY
+typedef int8_t s8;
+typedef uint8_t u8;
+typedef int16_t s16;
+typedef uint16_t u16;
+typedef int32_t s32;
+typedef uint32_t u32;
+typedef int64_t s64;
+typedef uint64_t u64;
+
+#ifndef _UINT_TYPES
+       /*      unicode includes also define these */
+typedef u16 uint16;
+typedef u32 uint32;
+#define _UINT_TYPES
+#endif
+
+typedef s8 int8;
+typedef u8 uint8;
+typedef s16 int16;
+typedef s32 int32;
+typedef s64 int64;
+typedef u64 uint64;
+
+#endif                         /* _JFS_UTILITY */
+/*
+ * Holdovers from OS/2.  Try to get away from using these altogether.
+ */
+typedef unsigned long ULONG;
+typedef unsigned short USHORT;
+typedef unsigned char UCHAR;
+typedef void *PVOID;
+#define MAXPATHLEN      255
+
+
+/*
+ * Almost identical to Linux's timespec, but not quite
+ */
+struct timestruc_t {
+       u32 tv_sec;
+       u32 tv_nsec;
+};
+
+/*
+ *     handy
+ */
+#undef MIN
+#define        MIN(a,b) (((a)<(b))?(a):(b))
+#undef MAX
+#define        MAX(a,b) (((a)>(b))?(a):(b))
+#undef ROUNDUP
+#define        ROUNDUP(x, y)   ( ((x) + ((y) - 1)) & ~((y) - 1) )
+
+#define LEFTMOSTONE    0x80000000
+#define        HIGHORDER       0x80000000u     /* high order bit on            */
+#define        ONES            0xffffffffu     /* all bit on                   */
+
+typedef int boolean_t;
+#define TRUE 1
+#define FALSE 0
+
+/*
+ *     logical xd (lxd)
+ */
+typedef struct {
+       unsigned len:24;
+       unsigned off1:8;
+       u32 off2;
+} lxd_t;
+
+/* lxd_t field construction */
+#define        LXDlength(lxd, length32)        ( (lxd)->len = length32 )
+#define        LXDoffset(lxd, offset64)\
+{\
+       (lxd)->off1 = ((s64)offset64) >> 32;\
+       (lxd)->off2 = (offset64) & 0xffffffff;\
+}
+
+/* lxd_t field extraction */
+#define        lengthLXD(lxd)  ( (lxd)->len )
+#define        offsetLXD(lxd)\
+       ( ((s64)((lxd)->off1)) << 32 | (lxd)->off2 )
+
+/* lxd list */
+typedef struct {
+       s16 maxnlxd;
+       s16 nlxd;
+       lxd_t *lxd;
+} lxdlist_t;
+
+/*
+ *     physical xd (pxd)
+ */
+typedef struct {
+       unsigned len:24;
+       unsigned addr1:8;
+       u32 addr2;
+} pxd_t;
+
+/* xd_t field construction */
+
+#define        PXDlength(pxd, length32)        ((pxd)->len = __cpu_to_le24(length32))
+#define        PXDaddress(pxd, address64)\
+{\
+       (pxd)->addr1 = ((s64)address64) >> 32;\
+       (pxd)->addr2 = __cpu_to_le32((address64) & 0xffffffff);\
+}
+
+/* xd_t field extraction */
+#define        lengthPXD(pxd)  __le24_to_cpu((pxd)->len)
+#define        addressPXD(pxd)\
+       ( ((s64)((pxd)->addr1)) << 32 | __le32_to_cpu((pxd)->addr2))
+
+/* pxd list */
+typedef struct {
+       s16 maxnpxd;
+       s16 npxd;
+       pxd_t pxd[8];
+} pxdlist_t;
+
+
+/*
+ *     data extent descriptor (dxd)
+ */
+typedef struct {
+       unsigned flag:8;        /* 1: flags */
+       unsigned rsrvd:24;      /* 3: */
+       u32 size;               /* 4: size in byte */
+       unsigned len:24;        /* 3: length in unit of fsblksize */
+       unsigned addr1:8;       /* 1: address in unit of fsblksize */
+       u32 addr2;              /* 4: address in unit of fsblksize */
+} dxd_t;                       /* - 16 - */
+
+/* dxd_t flags */
+#define        DXD_INDEX       0x80    /* B+-tree index */
+#define        DXD_INLINE      0x40    /* in-line data extent */
+#define        DXD_EXTENT      0x20    /* out-of-line single extent */
+#define        DXD_FILE        0x10    /* out-of-line file (inode) */
+#define DXD_CORRUPT    0x08    /* Inconsistency detected */
+
+/* dxd_t field construction
+ *     Conveniently, the PXD macros work for DXD
+ */
+#define        DXDlength       PXDlength
+#define        DXDaddress      PXDaddress
+#define        lengthDXD       lengthPXD
+#define        addressDXD      addressPXD
+
+/*
+ *      directory entry argument
+ */
+typedef struct component_name {
+       int namlen;
+       UniChar *name;
+} component_t;
+
+
+/*
+ *     DASD limit information - stored in directory inode
+ */
+typedef struct dasd {
+       u8 thresh;              /* Alert Threshold (in percent) */
+       u8 delta;               /* Alert Threshold delta (in percent)   */
+       u8 rsrvd1;
+       u8 limit_hi;            /* DASD limit (in logical blocks)       */
+       u32 limit_lo;           /* DASD limit (in logical blocks)       */
+       u8 rsrvd2[3];
+       u8 used_hi;             /* DASD usage (in logical blocks)       */
+       u32 used_lo;            /* DASD usage (in logical blocks)       */
+} dasd_t;
+
+#define DASDLIMIT(dasdp) \
+       (((u64)((dasdp)->limit_hi) << 32) + __le32_to_cpu((dasdp)->limit_lo))
+#define setDASDLIMIT(dasdp, limit)\
+{\
+       (dasdp)->limit_hi = ((u64)limit) >> 32;\
+       (dasdp)->limit_lo = __cpu_to_le32(limit);\
+}
+#define DASDUSED(dasdp) \
+       (((u64)((dasdp)->used_hi) << 32) + __le32_to_cpu((dasdp)->used_lo))
+#define setDASDUSED(dasdp, used)\
+{\
+       (dasdp)->used_hi = ((u64)used) >> 32;\
+       (dasdp)->used_lo = __cpu_to_le32(used);\
+}
+
+/*
+ *             circular doubly-linked list (cdll)
+ *
+ * A circular doubly-linked list (cdll) is anchored by a pair of pointers,
+ * one to the head of the list and the other to the tail of the list.
+ * The elements are doubly linked so that an arbitrary element can be
+ * removed without a need to traverse the list.
+ * New elements can be added to the list before or after an existing element,
+ * at the head of the list, or at the tail of the list.
+ * A circle queue may be traversed in either direction.
+ *
+ * +----------+        +-------------------------------------+
+ * |          |        |                                     |
+ * +->+-----+ |        +->+-----+  +->+-----+    +->+-----+  |
+ * |  |  h  +-+        |  |  h  +--+  |  n  +----+  |  n  +--+
+ * |  +-----+          |  +-----+  |  +-----+    |  +-----+
+ * |  |  t  +-+     +-----+  t  |  |  |  p  +--+ |  |  p  +--+
+ * |  +-----+ |     |  |  +-----+  |  +-----+  | |  +-----+  |
+ * +----------+     |  +-----------------------+ |           |
+ *                  |              |             |           |
+ *                  |              +-------------------------+
+ *                  |                            |
+ *                  +----------------------------+
+ */
+/*
+ *     define header
+ *
+ * list header field definition in header element:
+ *
+ * type - type of list element struct embedding the link field
+ */
+#define CDLL_HEADER(type)\
+struct {\
+       struct type *head;\
+       struct type *tail;\
+}
+
+struct cdll_header {
+       struct cdll_header *head;
+       struct cdll_header *tail;
+};
+
+/*
+ *     define link
+ *
+ * list link field definition in list element:
+ *
+ * type - type of parent list element struct embedding the link field
+ */
+#define CDLL_ENTRY(type)\
+struct {\
+       struct type *next;\
+       struct type *prev;\
+}
+
+struct cdll_entry {
+       struct cdll_entry *next;
+       struct cdll_entry *prev;
+};
+
+/*
+ *     initialize header
+ *
+ * header - ptr to the header field in the header element
+ */
+#define        CDLL_INIT(header) {\
+       (header)->head = (void *)(header);\
+       (header)->tail = (void *)(header);\
+}
+
+/*
+ *     scan list
+ *
+ * header - ptr to the header field in the header element
+ * elm - ptr to the element to be inserted
+ * field - name of the link field in the list element
+ *
+ * struct header_container     *container;
+ * struct header_type  *header;
+ * struct element_type *elm;
+ *
+ * header = &container->header_field;
+ * for (elm = header->head; elm != (void *)header; elm = elm->field.next)
+ */
+
+/*
+ *     insert <elm> at head of list anchored at <header>
+ *
+ * header - ptr to the header field in the header element
+ * elm - ptr to the list element to be inserted
+ * field - name of the link field in the list element
+ */
+#define CDLL_INSERT_HEAD(header, elm, field) {\
+       (elm)->field.next = (header)->head;\
+       (elm)->field.prev = (void *)(header);\
+       if ((header)->tail == (void *)(header))\
+               (header)->tail = (elm);\
+       else\
+               (header)->head->field.prev = (elm);\
+       (header)->head = (elm);\
+}
+
+/*
+ *     insert <elm> at tail of list anchored at <header>
+ *
+ * header - ptr to the header field in the header element
+ * elm - ptr to the list element to be inserted
+ * field - name of the link field in the list element
+ */
+#define CDLL_INSERT_TAIL(header, elm, field) {\
+       (elm)->field.next = (void *)(header);\
+       (elm)->field.prev = (header)->tail;\
+       if ((header)->head == (void *)(header))\
+               (header)->head = (elm);\
+       else\
+               (header)->tail->field.next = (elm);\
+       (header)->tail = (elm);\
+}
+
+/*
+ *     insert <elm> after <listelm> of list anchored at <header>
+ *
+ * header - ptr to the header field in the header element
+ * listelm - ptr to the list element at insertion point
+ * elm - ptr to the list element to be inserted
+ * field - name of the link field in the list element
+ */
+#define CDLL_INSERT_AFTER(header, listelm, elm, field) {\
+       (elm)->field.next = (listelm)->field.next;\
+       (elm)->field.prev = (listelm);\
+       if ((listelm)->field.next == (void *)(header))\
+               (header)->tail = (elm);\
+       else\
+               (listelm)->field.next->field.prev = (elm);\
+       (listelm)->field.next = (elm);\
+}
+
+/*
+ *     insert <elm> before <listelm> of list anchored at <header>
+ *
+ * header - ptr to the header field in the header element
+ * listelm - ptr to list element at insertion point
+ * elm - ptr to the element to be inserted
+ * field - name of the link field in the list element
+ */
+#define CDLL_INSERT_BEFORE(header, listelm, elm, field) {\
+       (elm)->field.next = (listelm);\
+       (elm)->field.prev = (listelm)->field.prev;\
+       if ((listelm)->field.prev == (void *)(header))\
+               (header)->head = (elm);\
+       else\
+               (listelm)->field.prev->field.next = (elm);\
+       (listelm)->field.prev = (elm);\
+}
+
+/*
+ *     remove <elm> from list anchored at <header>
+ *
+ * header - ptr to the header field in the header element
+ * elm - ptr to the list element to be removed
+ * field - name of the link field in the list element
+ */
+#define        CDLL_REMOVE(header, elm, field) {\
+       if ((elm)->field.next == (void *)(header))\
+               (header)->tail = (elm)->field.prev;\
+       else\
+               (elm)->field.next->field.prev = (elm)->field.prev;\
+       if ((elm)->field.prev == (void *)(header))\
+               (header)->head = (elm)->field.next;\
+       else\
+               (elm)->field.prev->field.next = (elm)->field.next;\
+}
+
+#define CDLL_MOVE_TO_HEAD(header, elm, field) {\
+       if ((elm)->field.prev != (void *)(header))\
+       {\
+               if ((elm)->field.next == (void *)(header))\
+                       (header)->tail = (elm)->field.prev;\
+               else\
+                       (elm)->field.next->field.prev = (elm)->field.prev;\
+               (elm)->field.prev->field.next = (elm)->field.next;\
+               (elm)->field.next = (header)->head;\
+               (elm)->field.prev = (void *)(header);\
+               (header)->head->field.prev = (elm);\
+               (header)->head = (elm);\
+       }\
+}
+
+#define CDLL_MOVE_TO_TAIL(header, elm, field) {\
+       if ((elm)->field.next != (void *)(header))\
+       {\
+               (elm)->field.next->field.prev = (elm)->field.prev;\
+               if ((elm)->field.prev == (void *)(header))\
+                       (header)->head = (elm)->field.next;\
+               else\
+                       (elm)->field.prev->field.next = (elm)->field.next;\
+               (elm)->field.next = (void *)(header);\
+               (elm)->field.prev = (header)->tail;\
+               (header)->tail->field.next = (elm);\
+               (header)->tail = (elm);\
+       }\
+}
+
+/*
+ *     orphan list element
+ */
+#define        CDLL_SELF(elm, field)\
+       (elm)->field.next = (elm)->field.prev = (elm);
+
+
+/*
+ *             single head doubly-linked list
+ *
+ * A list is headed by a single head pointer.
+ * The elements are doubly linked so that an arbitrary element can be
+ * removed without a need to traverse the list.
+ * New elements can be added to the list at the head of the list, or
+ * after an existing element (NO insert at tail).
+ * A list may only be traversed in the forward direction.
+ * (note: the list is NULL terminated in next field.)
+ *
+ *   +-----+          +->+-----+  +->+-----+    +->+-----+
+ *   | NULL|          |  |  h  +--+  |  n  +----+  | NULL|
+ *   +-----+          |  +-----+  |  +-----+       +-----+
+ *                    |           |  |  p  +--+    |  p  +--+
+ *                    |           |  +-----+  |    +-----+  |
+ *                    +-----------------------+             |
+ *                                |                         |
+ *                                +-------------------------+
+ */
+#define LIST_HEADER(type)\
+struct {\
+       struct type *head;\
+}
+
+#define LIST_ENTRY(type)\
+struct {\
+       struct type *next;\
+       struct type **prev;\
+}
+
+#define        LIST_INIT(header)       { (header)->head = NULL; }
+
+/*
+ *     scan list
+ *
+ * header - ptr to the header (field in header element)
+ * elm - ptr to the element to be inserted
+ * field - name of the link field in list element
+ *
+ * struct header_container     *container;
+ * struct header_type  *header;
+ * struct element_type *elm;
+ *
+ * header = &container->header_field;
+ * for (elm = header->head; elm; elm = elm->field.next)
+ */
+
+#define LIST_INSERT_HEAD(header, elm, field) {\
+       if (((elm)->field.next = (header)->head) != NULL)\
+               (header)->head->field.prev = &(elm)->field.next;\
+       (header)->head = (elm);\
+       (elm)->field.prev = &(header)->head;\
+}
+
+#define LIST_INSERT_AFTER(listelm, elm, field) {\
+       if (((elm)->field.next = (listelm)->field.next) != NULL)\
+               (listelm)->field.next->field.prev = &(elm)->field.next;\
+       (listelm)->field.next = (elm);\
+       (elm)->field.prev = &(listelm)->field.next;\
+}
+
+#define LIST_REMOVE(elm, field) {\
+       if ((elm)->field.next != NULL)\
+               (elm)->field.next->field.prev = (elm)->field.prev;\
+       *(elm)->field.prev = (elm)->field.next;\
+}
+
+#define LIST_SELF(elm, field) {\
+       (elm)->field.next = NULL;\
+       (elm)->field.prev = &(elm)->field.next;\
+}
+
+#endif                         /* !_H_JFS_TYPES */
diff --git a/libparted/fs/linux_swap/Makefile.am b/libparted/fs/linux_swap/Makefile.am
new file mode 100644 (file)
index 0000000..a366fc6
--- /dev/null
@@ -0,0 +1,8 @@
+partedincludedir       = -I$(top_srcdir)/include
+
+noinst_LTLIBRARIES     = liblinuxswap.la
+liblinuxswap_la_SOURCES        = linux_swap.c
+
+INCLUDES = $(partedincludedir) $(INTLINCS)
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/libparted/fs/linux_swap/Makefile.in b/libparted/fs/linux_swap/Makefile.in
new file mode 100644 (file)
index 0000000..2f45396
--- /dev/null
@@ -0,0 +1,1266 @@
+# Makefile.in generated by automake 1.11a from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in 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.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = libparted/fs/linux_swap
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+       $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argmatch.m4 \
+       $(top_srcdir)/m4/assert.m4 $(top_srcdir)/m4/btowc.m4 \
+       $(top_srcdir)/m4/calloc.m4 $(top_srcdir)/m4/canonicalize.m4 \
+       $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
+       $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/configmake.m4 \
+       $(top_srcdir)/m4/dirname.m4 \
+       $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+       $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/environ.m4 \
+       $(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
+       $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fclose.m4 \
+       $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/fcntl_h.m4 \
+       $(top_srcdir)/m4/fflush.m4 $(top_srcdir)/m4/fpending.m4 \
+       $(top_srcdir)/m4/fpurge.m4 $(top_srcdir)/m4/freading.m4 \
+       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/fsync.m4 \
+       $(top_srcdir)/m4/ftell.m4 $(top_srcdir)/m4/ftello.m4 \
+       $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
+       $(top_srcdir)/m4/langinfo_h.m4 $(top_srcdir)/m4/lcmessage.m4 \
+       $(top_srcdir)/m4/lib-ignore.m4 $(top_srcdir)/m4/lib-ld.m4 \
+       $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/localcharset.m4 \
+       $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \
+       $(top_srcdir)/m4/locale-tr.m4 $(top_srcdir)/m4/locale-zh.m4 \
+       $(top_srcdir)/m4/locale_h.m4 $(top_srcdir)/m4/localename.m4 \
+       $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/long-options.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
+       $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+       $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
+       $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+       $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbtowc.m4 \
+       $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+       $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/multiarch.m4 \
+       $(top_srcdir)/m4/nl_langinfo.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/nocrash.m4 $(top_srcdir)/m4/o-direct.m4 \
+       $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/priv-set.m4 \
+       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+       $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+       $(top_srcdir)/m4/read.m4 $(top_srcdir)/m4/readlink.m4 \
+       $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/regex.m4 \
+       $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+       $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/setlocale.m4 \
+       $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/ssize_t.m4 \
+       $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdarg.m4 \
+       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strdup.m4 \
+       $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/strerror_r.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+       $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtoll.m4 \
+       $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/symlink.m4 \
+       $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+       $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/thread.m4 \
+       $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/time_h.m4 \
+       $(top_srcdir)/m4/ungetc.m4 $(top_srcdir)/m4/unistd_h.m4 \
+       $(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkdir.m4 \
+       $(top_srcdir)/m4/usleep.m4 $(top_srcdir)/m4/version-etc.m4 \
+       $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \
+       $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
+       $(top_srcdir)/m4/wcrtomb.m4 $(top_srcdir)/m4/wctob.m4 \
+       $(top_srcdir)/m4/wctomb.m4 $(top_srcdir)/m4/wctype_h.m4 \
+       $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+       $(top_srcdir)/m4/xstrndup.m4 $(top_srcdir)/m4/xstrtol.m4 \
+       $(top_srcdir)/m4/yield.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+liblinuxswap_la_LIBADD =
+am_liblinuxswap_la_OBJECTS = linux_swap.lo
+liblinuxswap_la_OBJECTS = $(am_liblinuxswap_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/lib
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+       $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo "  CC      " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+SOURCES = $(liblinuxswap_la_SOURCES)
+DIST_SOURCES = $(liblinuxswap_la_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+pkglibexecdir = @pkglibexecdir@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+BUILDINFO = @BUILDINFO@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHECK_CFLAGS = @CHECK_CFLAGS@
+CHECK_LIBS = @CHECK_LIBS@
+CONFIG_INCLUDE = @CONFIG_INCLUDE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DYNAMIC_LOADING = @DYNAMIC_LOADING@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENABLE_DEVICE_MAPPER = @ENABLE_DEVICE_MAPPER@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FACCESSAT = @GNULIB_FACCESSAT@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCHMODAT = @GNULIB_FCHMODAT@
+GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FCNTL = @GNULIB_FCNTL@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FGETC = @GNULIB_FGETC@
+GNULIB_FGETS = @GNULIB_FGETS@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREAD = @GNULIB_FREAD@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSCANF = @GNULIB_FSCANF@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSTATAT = @GNULIB_FSTATAT@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FUTIMENS = @GNULIB_FUTIMENS@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETC = @GNULIB_GETC@
+GNULIB_GETCHAR = @GNULIB_GETCHAR@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETGROUPS = @GNULIB_GETGROUPS@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETS = @GNULIB_GETS@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
+GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_ISWBLANK = @GNULIB_ISWBLANK@
+GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@
+GNULIB_LCHMOD = @GNULIB_LCHMOD@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LINKAT = @GNULIB_LINKAT@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_LSTAT = @GNULIB_LSTAT@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MBTOWC = @GNULIB_MBTOWC@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDIRAT = @GNULIB_MKDIRAT@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKFIFO = @GNULIB_MKFIFO@
+GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@
+GNULIB_MKNOD = @GNULIB_MKNOD@
+GNULIB_MKNODAT = @GNULIB_MKNODAT@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@
+GNULIB_MKTIME = @GNULIB_MKTIME@
+GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@
+GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@
+GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_OPEN = @GNULIB_OPEN@
+GNULIB_OPENAT = @GNULIB_OPENAT@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE = @GNULIB_PIPE@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_PREAD = @GNULIB_PREAD@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READ = @GNULIB_READ@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_READLINKAT = @GNULIB_READLINKAT@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_REALPATH = @GNULIB_REALPATH@
+GNULIB_REMOVE = @GNULIB_REMOVE@
+GNULIB_RENAME = @GNULIB_RENAME@
+GNULIB_RENAMEAT = @GNULIB_RENAMEAT@
+GNULIB_RMDIR = @GNULIB_RMDIR@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SETLOCALE = @GNULIB_SETLOCALE@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STAT = @GNULIB_STAT@
+GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRERROR_R = @GNULIB_STRERROR_R@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRPTIME = @GNULIB_STRPTIME@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_SYMLINK = @GNULIB_SYMLINK@
+GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
+GNULIB_TIMEGM = @GNULIB_TIMEGM@
+GNULIB_TIME_R = @GNULIB_TIME_R@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
+GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
+GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNLINK = @GNULIB_UNLINK@
+GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_USLEEP = @GNULIB_USLEEP@
+GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VFSCANF = @GNULIB_VFSCANF@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSCANF = @GNULIB_VSCANF@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCPCPY = @GNULIB_WCPCPY@
+GNULIB_WCPNCPY = @GNULIB_WCPNCPY@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@
+GNULIB_WCSCAT = @GNULIB_WCSCAT@
+GNULIB_WCSCHR = @GNULIB_WCSCHR@
+GNULIB_WCSCMP = @GNULIB_WCSCMP@
+GNULIB_WCSCOLL = @GNULIB_WCSCOLL@
+GNULIB_WCSCPY = @GNULIB_WCSCPY@
+GNULIB_WCSCSPN = @GNULIB_WCSCSPN@
+GNULIB_WCSDUP = @GNULIB_WCSDUP@
+GNULIB_WCSLEN = @GNULIB_WCSLEN@
+GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@
+GNULIB_WCSNCAT = @GNULIB_WCSNCAT@
+GNULIB_WCSNCMP = @GNULIB_WCSNCMP@
+GNULIB_WCSNCPY = @GNULIB_WCSNCPY@
+GNULIB_WCSNLEN = @GNULIB_WCSNLEN@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSPBRK = @GNULIB_WCSPBRK@
+GNULIB_WCSRCHR = @GNULIB_WCSRCHR@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCSSPN = @GNULIB_WCSSPN@
+GNULIB_WCSSTR = @GNULIB_WCSSTR@
+GNULIB_WCSTOK = @GNULIB_WCSTOK@
+GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@
+GNULIB_WCSXFRM = @GNULIB_WCSXFRM@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCTOMB = @GNULIB_WCTOMB@
+GNULIB_WCTRANS = @GNULIB_WCTRANS@
+GNULIB_WCTYPE = @GNULIB_WCTYPE@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WMEMCHR = @GNULIB_WMEMCHR@
+GNULIB_WMEMCMP = @GNULIB_WMEMCMP@
+GNULIB_WMEMCPY = @GNULIB_WMEMCPY@
+GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@
+GNULIB_WMEMSET = @GNULIB_WMEMSET@
+GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
+HAVE_CHOWN = @HAVE_CHOWN@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@
+HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SETENV = @HAVE_DECL_SETENV@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@
+HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_DUPLOCALE = @HAVE_DUPLOCALE@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
+HAVE_FCHMODAT = @HAVE_FCHMODAT@
+HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
+HAVE_FCNTL = @HAVE_FCNTL@
+HAVE_FEATURES_H = @HAVE_FEATURES_H@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSTATAT = @HAVE_FSTATAT@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_FUTIMENS = @HAVE_FUTIMENS@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETGROUPS = @HAVE_GETGROUPS@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETLOGIN = @HAVE_GETLOGIN@
+HAVE_GETOPT_H = @HAVE_GETOPT_H@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
+HAVE_GRANTPT = @HAVE_GRANTPT@
+HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWBLANK = @HAVE_ISWBLANK@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
+HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
+HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
+HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
+HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
+HAVE_LCHMOD = @HAVE_LCHMOD@
+HAVE_LCHOWN = @HAVE_LCHOWN@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_LSTAT = @HAVE_LSTAT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSLEN = @HAVE_MBSLEN@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMCHR = @HAVE_MEMCHR@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDIRAT = @HAVE_MKDIRAT@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKFIFO = @HAVE_MKFIFO@
+HAVE_MKFIFOAT = @HAVE_MKFIFOAT@
+HAVE_MKNOD = @HAVE_MKNOD@
+HAVE_MKNODAT = @HAVE_MKNODAT@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
+HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
+HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
+HAVE_OPENAT = @HAVE_OPENAT@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PIPE = @HAVE_PIPE@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PWRITE = @HAVE_PWRITE@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_READLINKAT = @HAVE_READLINKAT@
+HAVE_REALPATH = @HAVE_REALPATH@
+HAVE_RENAMEAT = @HAVE_RENAMEAT@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRPTIME = @HAVE_STRPTIME@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYMLINK = @HAVE_SYMLINK@
+HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_TIMEGM = @HAVE_TIMEGM@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_USLEEP = @HAVE_USLEEP@
+HAVE_UTIMENSAT = @HAVE_UTIMENSAT@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCPCPY = @HAVE_WCPCPY@
+HAVE_WCPNCPY = @HAVE_WCPNCPY@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSCASECMP = @HAVE_WCSCASECMP@
+HAVE_WCSCAT = @HAVE_WCSCAT@
+HAVE_WCSCHR = @HAVE_WCSCHR@
+HAVE_WCSCMP = @HAVE_WCSCMP@
+HAVE_WCSCOLL = @HAVE_WCSCOLL@
+HAVE_WCSCPY = @HAVE_WCSCPY@
+HAVE_WCSCSPN = @HAVE_WCSCSPN@
+HAVE_WCSDUP = @HAVE_WCSDUP@
+HAVE_WCSLEN = @HAVE_WCSLEN@
+HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@
+HAVE_WCSNCAT = @HAVE_WCSNCAT@
+HAVE_WCSNCMP = @HAVE_WCSNCMP@
+HAVE_WCSNCPY = @HAVE_WCSNCPY@
+HAVE_WCSNLEN = @HAVE_WCSNLEN@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSPBRK = @HAVE_WCSPBRK@
+HAVE_WCSRCHR = @HAVE_WCSRCHR@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCSSPN = @HAVE_WCSSPN@
+HAVE_WCSSTR = @HAVE_WCSSTR@
+HAVE_WCSTOK = @HAVE_WCSTOK@
+HAVE_WCSWIDTH = @HAVE_WCSWIDTH@
+HAVE_WCSXFRM = @HAVE_WCSXFRM@
+HAVE_WCTRANS_T = @HAVE_WCTRANS_T@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WCTYPE_T = @HAVE_WCTYPE_T@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WMEMCHR = @HAVE_WMEMCHR@
+HAVE_WMEMCMP = @HAVE_WMEMCMP@
+HAVE_WMEMCPY = @HAVE_WMEMCPY@
+HAVE_WMEMMOVE = @HAVE_WMEMMOVE@
+HAVE_WMEMSET = @HAVE_WMEMSET@
+HAVE_XLOCALE_H = @HAVE_XLOCALE_H@
+HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
+IGNORE_UNUSED_LIBRARIES_CFLAGS = @IGNORE_UNUSED_LIBRARIES_CFLAGS@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@
+INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMULTITHREAD = @LIBMULTITHREAD@
+LIBOBJS = @LIBOBJS@
+LIBPTH = @LIBPTH@
+LIBPTH_PREFIX = @LIBPTH_PREFIX@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTHREAD = @LIBTHREAD@
+LIBTOOL = @LIBTOOL@
+LIB_BLKID = @LIB_BLKID@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBMULTITHREAD = @LTLIBMULTITHREAD@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBPTH = @LTLIBPTH@
+LTLIBTHREAD = @LTLIBTHREAD@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
+NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@
+NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
+NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@
+NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FCNTL_H = @NEXT_FCNTL_H@
+NEXT_GETOPT_H = @NEXT_GETOPT_H@
+NEXT_INTTYPES_H = @NEXT_INTTYPES_H@
+NEXT_LANGINFO_H = @NEXT_LANGINFO_H@
+NEXT_LOCALE_H = @NEXT_LOCALE_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@
+NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@
+NEXT_TIME_H = @NEXT_TIME_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PARTED_USABLE_TEST_DIR = @PARTED_USABLE_TEST_DIR@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CALLOC = @REPLACE_CALLOC@
+REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP = @REPLACE_DUP@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@
+REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FCNTL = @REPLACE_FCNTL@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FSTAT = @REPLACE_FSTAT@
+REPLACE_FSTATAT = @REPLACE_FSTATAT@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_FUTIMENS = @REPLACE_FUTIMENS@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETDELIM = @REPLACE_GETDELIM@
+REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@
+REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LINK = @REPLACE_LINK@
+REPLACE_LINKAT = @REPLACE_LINKAT@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_LSTAT = @REPLACE_LSTAT@
+REPLACE_MALLOC = @REPLACE_MALLOC@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MBTOWC = @REPLACE_MBTOWC@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKDIR = @REPLACE_MKDIR@
+REPLACE_MKFIFO = @REPLACE_MKFIFO@
+REPLACE_MKNOD = @REPLACE_MKNOD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_MKTIME = @REPLACE_MKTIME@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_OPEN = @REPLACE_OPEN@
+REPLACE_OPENAT = @REPLACE_OPENAT@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PREAD = @REPLACE_PREAD@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
+REPLACE_READ = @REPLACE_READ@
+REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_REALLOC = @REPLACE_REALLOC@
+REPLACE_REALPATH = @REPLACE_REALPATH@
+REPLACE_REMOVE = @REPLACE_REMOVE@
+REPLACE_RENAME = @REPLACE_RENAME@
+REPLACE_RENAMEAT = @REPLACE_RENAMEAT@
+REPLACE_RMDIR = @REPLACE_RMDIR@
+REPLACE_SETENV = @REPLACE_SETENV@
+REPLACE_SETLOCALE = @REPLACE_SETLOCALE@
+REPLACE_SLEEP = @REPLACE_SLEEP@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STAT = @REPLACE_STAT@
+REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRERROR_R = @REPLACE_STRERROR_R@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
+REPLACE_STRNDUP = @REPLACE_STRNDUP@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
+REPLACE_SYMLINK = @REPLACE_SYMLINK@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
+REPLACE_UNLINK = @REPLACE_UNLINK@
+REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
+REPLACE_UNSETENV = @REPLACE_UNSETENV@
+REPLACE_USLEEP = @REPLACE_USLEEP@
+REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCTOMB = @REPLACE_WCTOMB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SELINUX_LIBS = @SELINUX_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
+UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
+UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+YIELD_LIB = @YIELD_LIB@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+partedincludedir = -I$(top_srcdir)/include
+noinst_LTLIBRARIES = liblinuxswap.la
+liblinuxswap_la_SOURCES = linux_swap.c
+INCLUDES = $(partedincludedir) $(INTLINCS)
+MAINTAINERCLEANFILES = Makefile.in
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libparted/fs/linux_swap/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu libparted/fs/linux_swap/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+       -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+       @list='$(noinst_LTLIBRARIES)'; \
+       locs=`for p in $$list; do echo $$p; done | \
+             sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+             sort -u`; \
+       test -z "$$locs" || { \
+         echo rm -f $${locs}; \
+         rm -f $${locs}; \
+       }
+liblinuxswap.la: $(liblinuxswap_la_OBJECTS) $(liblinuxswap_la_DEPENDENCIES) $(EXTRA_liblinuxswap_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK)  $(liblinuxswap_la_OBJECTS) $(liblinuxswap_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linux_swap.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+       mostlyclean-am
+
+distclean: distclean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+       clean-libtool clean-noinstLTLIBRARIES cscopelist ctags \
+       distclean distclean-compile distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       tags uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libparted/fs/linux_swap/linux_swap.c b/libparted/fs/linux_swap/linux_swap.c
new file mode 100644 (file)
index 0000000..070f51b
--- /dev/null
@@ -0,0 +1,420 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 1999-2000, 2002, 2007-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+/* It's a bit silly calling a swap partition a file system.  Oh well...  */
+
+#include <config.h>
+
+#include <parted/parted.h>
+#include <parted/endian.h>
+
+#if ENABLE_NLS
+#  include <libintl.h>
+#  define _(String) dgettext (PACKAGE, String)
+#else
+#  define _(String) (String)
+#endif /* ENABLE_NLS */
+
+#include <unistd.h>
+#include <uuid/uuid.h>
+
+#define SWAP_SPECIFIC(fs) ((SwapSpecific*) (fs->type_specific))
+#define BUFFER_SIZE 128
+
+#define LINUXSWAP_BLOCK_SIZES       ((int[2]){512, 0})
+
+typedef struct {
+       char            page_map[1];
+} SwapOldHeader;
+
+/* ripped from mkswap */
+typedef struct {
+        char            bootbits[1024];    /* Space for disklabel etc. */
+        uint32_t        version;
+        uint32_t        last_page;
+        uint32_t        nr_badpages;
+        unsigned char   sws_uuid[16];
+        unsigned char   sws_volume[16];
+        uint32_t        padding[117];
+        uint32_t        badpages[1];
+} SwapNewHeader;
+
+typedef struct {
+       union {
+               SwapNewHeader   new;
+               SwapOldHeader   old;
+       }* header;
+
+       void*           buffer;
+       int             buffer_size;
+
+       PedSector       page_sectors;
+       unsigned int    page_count;
+       unsigned int    version;
+       unsigned int    max_bad_pages;
+} SwapSpecific;
+
+static PedFileSystemType _swap_v0_type;
+static PedFileSystemType _swap_v1_type;
+static PedFileSystemType _swap_swsusp_type;
+
+static PedFileSystem* _swap_v0_open (PedGeometry* geom);
+static PedFileSystem* _swap_v1_open (PedGeometry* geom);
+static PedFileSystem* _swap_swsusp_open (PedGeometry* geom);
+static int swap_close (PedFileSystem* fs);
+
+static PedGeometry*
+_generic_swap_probe (PedGeometry* geom, int kind)
+{
+       PedFileSystem*  fs;
+       SwapSpecific*   fs_info;
+       PedGeometry*    probed_geom;
+       PedSector       length;
+
+        /* Fail the swap-file-system-recognizing test when sector size
+           is not the default.  */
+       if (geom->dev->sector_size != PED_SECTOR_SIZE_DEFAULT)
+               return NULL;
+
+        switch (kind) {
+        /* Check for old style swap partitions. */
+                case 0:
+                        fs = _swap_v0_open(geom);
+                        break;
+        /* Check for new style swap partitions. */
+                case 1:
+                        fs = _swap_v1_open(geom);
+                        break;
+        /* Check for swap partitions containing swsusp data. */
+                case -1:
+                        fs = _swap_swsusp_open(geom);
+                        break;
+        /* Not reached. */
+                default:
+                        goto error;
+        }
+
+       if (!fs)
+               goto error;
+       fs_info = SWAP_SPECIFIC (fs);
+
+       if (fs_info->version)
+               length = fs_info->page_sectors * fs_info->page_count;
+       else
+               length = geom->length;
+
+       probed_geom = ped_geometry_new (geom->dev, geom->start, length);
+       if (!probed_geom)
+               goto error_close_fs;
+       swap_close (fs);
+       return probed_geom;
+
+error_close_fs:
+       swap_close (fs);
+error:
+       return NULL;
+}
+
+
+static int
+swap_init (PedFileSystem* fs, int fresh)
+{
+       SwapSpecific*   fs_info = SWAP_SPECIFIC (fs);
+
+       fs_info->page_sectors = getpagesize () / 512;
+       fs_info->page_count = fs->geom->length / fs_info->page_sectors;
+       fs_info->version = 1;
+       fs_info->max_bad_pages = (getpagesize()
+                                       - sizeof (SwapNewHeader)) / 4;
+
+       if (fresh) {
+               uuid_t uuid_dat;
+
+               memset (fs_info->header, 0, getpagesize());
+
+               /* version is always 1 here */
+               uuid_generate (uuid_dat);
+               memcpy (fs_info->header->new.sws_uuid, uuid_dat,
+                       sizeof (fs_info->header->new.sws_uuid));
+                return 1;
+        }
+       else
+                return ped_geometry_read (fs->geom, fs_info->header,
+                                          0, fs_info->page_sectors);
+}
+
+
+static PedFileSystem*
+swap_alloc (PedGeometry* geom)
+{
+       PedFileSystem*  fs;
+       SwapSpecific*   fs_info;
+
+       fs = (PedFileSystem*) ped_malloc (sizeof (PedFileSystem));
+       if (!fs)
+               goto error;
+
+       fs->type_specific = (SwapSpecific*) ped_malloc (sizeof (SwapSpecific));
+       if (!fs->type_specific)
+               goto error_free_fs;
+
+       fs_info = SWAP_SPECIFIC (fs);
+       fs_info->header = ped_malloc (getpagesize());
+       if (!fs_info->header)
+               goto error_free_type_specific;
+
+       fs_info = SWAP_SPECIFIC (fs);
+       fs_info->buffer_size = getpagesize() * BUFFER_SIZE;
+       fs_info->buffer = ped_malloc (fs_info->buffer_size);
+       if (!fs_info->buffer)
+               goto error_free_header;
+
+       fs->geom = ped_geometry_duplicate (geom);
+       if (!fs->geom)
+               goto error_free_buffer;
+       fs->type = &_swap_v1_type;
+       return fs;
+
+error_free_buffer:
+       free (fs_info->buffer);
+error_free_header:
+       free (fs_info->header);
+error_free_type_specific:
+       free (fs->type_specific);
+error_free_fs:
+       free (fs);
+error:
+       return NULL;
+}
+
+static void
+swap_free (PedFileSystem* fs)
+{
+       SwapSpecific*   fs_info = SWAP_SPECIFIC (fs);
+
+       free (fs_info->buffer);
+       free (fs_info->header);
+       free (fs->type_specific);
+
+       ped_geometry_destroy (fs->geom);
+       free (fs);
+}
+
+static PedFileSystem*
+_swap_v0_open (PedGeometry* geom)
+{
+       PedFileSystem*          fs;
+       SwapSpecific*           fs_info;
+       const char*             sig;
+
+       fs = swap_alloc (geom);
+       if (!fs)
+               goto error;
+       swap_init (fs, 0);
+
+       fs_info = SWAP_SPECIFIC (fs);
+       if (!ped_geometry_read (fs->geom, fs_info->header, 0,
+                               fs_info->page_sectors))
+               goto error_free_fs;
+
+       sig = ((char*) fs_info->header) + getpagesize() - 10;
+       if (strncmp (sig, "SWAP-SPACE", 10) == 0) {
+               fs_info->version = 0;
+               fs_info->page_count
+                       = PED_MIN (fs->geom->length / fs_info->page_sectors,
+                                  8 * (getpagesize() - 10));
+       } else {
+               char    _sig [11];
+
+               memcpy (_sig, sig, 10);
+               _sig [10] = 0;
+               ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                       _("Unrecognised old style linux swap signature '%10s'."), _sig);
+               goto error_free_fs;
+       }
+
+       fs->checked = 1;
+       return fs;
+
+error_free_fs:
+       swap_free (fs);
+error:
+       return NULL;
+}
+
+static PedFileSystem*
+_swap_v1_open (PedGeometry* geom)
+{
+       PedFileSystem*          fs;
+       SwapSpecific*           fs_info;
+       const char*             sig;
+
+       fs = swap_alloc (geom);
+       if (!fs)
+               goto error;
+/*     swap_init (fs, 0); */
+
+/*     fs_info = SWAP_SPECIFIC (fs); */
+/*     if (!ped_geometry_read (fs->geom, fs_info->header, 0, */
+/*                             fs_info->page_sectors)) */
+        if (!swap_init(fs, 0))
+               goto error_free_fs;
+
+        fs_info = SWAP_SPECIFIC (fs);
+
+       sig = ((char*) fs_info->header) + getpagesize() - 10;
+       if (strncmp (sig, "SWAPSPACE2", 10) == 0) {
+               fs_info->version = 1;
+               fs_info->page_count = fs_info->header->new.last_page;
+       } else {
+               char    _sig [11];
+
+               memcpy (_sig, sig, 10);
+               _sig [10] = 0;
+               ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                       _("Unrecognised new style linux swap signature '%10s'."), _sig);
+               goto error_free_fs;
+       }
+
+       fs->checked = 1;
+       return fs;
+
+error_free_fs:
+       swap_free (fs);
+error:
+       return NULL;
+}
+
+static PedFileSystem*
+_swap_swsusp_open (PedGeometry* geom)
+{
+       PedFileSystem*          fs;
+       SwapSpecific*           fs_info;
+       const char*             sig;
+
+       fs = swap_alloc (geom);
+       if (!fs)
+               goto error;
+        fs->type = &_swap_swsusp_type;
+       swap_init (fs, 0);
+
+       fs_info = SWAP_SPECIFIC (fs);
+       if (!ped_geometry_read (fs->geom, fs_info->header, 0,
+                               fs_info->page_sectors))
+               goto error_free_fs;
+
+       sig = ((char*) fs_info->header) + getpagesize() - 10;
+               if (strncmp (sig, "S1SUSPEND", 9) == 0) {
+               fs_info->version = -1;
+       } else {
+               char    _sig [10];
+
+               memcpy (_sig, sig, 9);
+               _sig [9] = 0;
+               ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                       _("Unrecognised swsusp linux swap signature '%9s'."), _sig);
+               goto error_free_fs;
+       }
+
+       fs->checked = 1;
+       return fs;
+
+error_free_fs:
+       swap_free (fs);
+error:
+       return NULL;
+}
+
+static int
+swap_close (PedFileSystem* fs)
+{
+       swap_free (fs);
+       return 1;
+}
+
+static PedGeometry*
+_swap_v0_probe (PedGeometry* geom) {
+        return _generic_swap_probe (geom, 0);
+}
+
+static PedGeometry*
+_swap_v1_probe (PedGeometry* geom) {
+        return _generic_swap_probe (geom, 1);
+}
+
+static PedGeometry*
+_swap_swsusp_probe (PedGeometry* geom) {
+        return _generic_swap_probe (geom, -1);
+}
+
+static PedFileSystemOps _swap_v0_ops = {
+       probe:          _swap_v0_probe,
+};
+
+static PedFileSystemOps _swap_v1_ops = {
+       probe:          _swap_v1_probe,
+};
+
+static PedFileSystemOps _swap_swsusp_ops = {
+  probe:               _swap_swsusp_probe,
+};
+
+static PedFileSystemType _swap_v0_type = {
+       next:   NULL,
+       ops:    &_swap_v0_ops,
+       name:   "linux-swap(v0)",
+       block_sizes: LINUXSWAP_BLOCK_SIZES
+};
+
+static PedFileSystemType _swap_v1_type = {
+       next:   NULL,
+       ops:    &_swap_v1_ops,
+       name:   "linux-swap(v1)",
+       block_sizes: LINUXSWAP_BLOCK_SIZES
+};
+
+static PedFileSystemType _swap_swsusp_type = {
+        next:   NULL,
+       ops:    &_swap_swsusp_ops,
+       name:   "swsusp",
+        block_sizes: LINUXSWAP_BLOCK_SIZES
+};
+
+void
+ped_file_system_linux_swap_init ()
+{
+       ped_file_system_type_register (&_swap_v0_type);
+       ped_file_system_type_register (&_swap_v1_type);
+       ped_file_system_type_register (&_swap_swsusp_type);
+
+       ped_file_system_alias_register (&_swap_v0_type, "linux-swap(old)", 1);
+       ped_file_system_alias_register (&_swap_v1_type, "linux-swap(new)", 1);
+       ped_file_system_alias_register (&_swap_v1_type, "linux-swap", 0);
+}
+
+void
+ped_file_system_linux_swap_done ()
+{
+       ped_file_system_alias_unregister (&_swap_v0_type, "linux-swap(old)");
+       ped_file_system_alias_unregister (&_swap_v1_type, "linux-swap(new)");
+       ped_file_system_alias_unregister (&_swap_v1_type, "linux-swap");
+
+       ped_file_system_type_unregister (&_swap_v0_type);
+       ped_file_system_type_unregister (&_swap_v1_type);
+       ped_file_system_type_unregister (&_swap_swsusp_type);
+}
diff --git a/libparted/fs/nilfs2/Makefile.am b/libparted/fs/nilfs2/Makefile.am
new file mode 100644 (file)
index 0000000..c7cfd68
--- /dev/null
@@ -0,0 +1,10 @@
+partedincludedir       = -I$(top_srcdir)/include
+
+AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
+
+noinst_LTLIBRARIES     = libnilfs2.la
+libnilfs2_la_SOURCES   = nilfs2.c
+
+INCLUDES = $(partedincludedir) $(INTLINCS)
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/libparted/fs/nilfs2/Makefile.in b/libparted/fs/nilfs2/Makefile.in
new file mode 100644 (file)
index 0000000..5b999ac
--- /dev/null
@@ -0,0 +1,1267 @@
+# Makefile.in generated by automake 1.11a from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in 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.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = libparted/fs/nilfs2
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+       $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argmatch.m4 \
+       $(top_srcdir)/m4/assert.m4 $(top_srcdir)/m4/btowc.m4 \
+       $(top_srcdir)/m4/calloc.m4 $(top_srcdir)/m4/canonicalize.m4 \
+       $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
+       $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/configmake.m4 \
+       $(top_srcdir)/m4/dirname.m4 \
+       $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+       $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/environ.m4 \
+       $(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
+       $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fclose.m4 \
+       $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/fcntl_h.m4 \
+       $(top_srcdir)/m4/fflush.m4 $(top_srcdir)/m4/fpending.m4 \
+       $(top_srcdir)/m4/fpurge.m4 $(top_srcdir)/m4/freading.m4 \
+       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/fsync.m4 \
+       $(top_srcdir)/m4/ftell.m4 $(top_srcdir)/m4/ftello.m4 \
+       $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
+       $(top_srcdir)/m4/langinfo_h.m4 $(top_srcdir)/m4/lcmessage.m4 \
+       $(top_srcdir)/m4/lib-ignore.m4 $(top_srcdir)/m4/lib-ld.m4 \
+       $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/localcharset.m4 \
+       $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \
+       $(top_srcdir)/m4/locale-tr.m4 $(top_srcdir)/m4/locale-zh.m4 \
+       $(top_srcdir)/m4/locale_h.m4 $(top_srcdir)/m4/localename.m4 \
+       $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/long-options.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
+       $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+       $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
+       $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+       $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbtowc.m4 \
+       $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+       $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/multiarch.m4 \
+       $(top_srcdir)/m4/nl_langinfo.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/nocrash.m4 $(top_srcdir)/m4/o-direct.m4 \
+       $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/priv-set.m4 \
+       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+       $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+       $(top_srcdir)/m4/read.m4 $(top_srcdir)/m4/readlink.m4 \
+       $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/regex.m4 \
+       $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+       $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/setlocale.m4 \
+       $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/ssize_t.m4 \
+       $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdarg.m4 \
+       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strdup.m4 \
+       $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/strerror_r.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+       $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtoll.m4 \
+       $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/symlink.m4 \
+       $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+       $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/thread.m4 \
+       $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/time_h.m4 \
+       $(top_srcdir)/m4/ungetc.m4 $(top_srcdir)/m4/unistd_h.m4 \
+       $(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkdir.m4 \
+       $(top_srcdir)/m4/usleep.m4 $(top_srcdir)/m4/version-etc.m4 \
+       $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \
+       $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
+       $(top_srcdir)/m4/wcrtomb.m4 $(top_srcdir)/m4/wctob.m4 \
+       $(top_srcdir)/m4/wctomb.m4 $(top_srcdir)/m4/wctype_h.m4 \
+       $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+       $(top_srcdir)/m4/xstrndup.m4 $(top_srcdir)/m4/xstrtol.m4 \
+       $(top_srcdir)/m4/yield.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libnilfs2_la_LIBADD =
+am_libnilfs2_la_OBJECTS = nilfs2.lo
+libnilfs2_la_OBJECTS = $(am_libnilfs2_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/lib
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+       $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo "  CC      " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+SOURCES = $(libnilfs2_la_SOURCES)
+DIST_SOURCES = $(libnilfs2_la_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+pkglibexecdir = @pkglibexecdir@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+BUILDINFO = @BUILDINFO@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHECK_CFLAGS = @CHECK_CFLAGS@
+CHECK_LIBS = @CHECK_LIBS@
+CONFIG_INCLUDE = @CONFIG_INCLUDE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DYNAMIC_LOADING = @DYNAMIC_LOADING@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENABLE_DEVICE_MAPPER = @ENABLE_DEVICE_MAPPER@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FACCESSAT = @GNULIB_FACCESSAT@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCHMODAT = @GNULIB_FCHMODAT@
+GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FCNTL = @GNULIB_FCNTL@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FGETC = @GNULIB_FGETC@
+GNULIB_FGETS = @GNULIB_FGETS@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREAD = @GNULIB_FREAD@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSCANF = @GNULIB_FSCANF@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSTATAT = @GNULIB_FSTATAT@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FUTIMENS = @GNULIB_FUTIMENS@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETC = @GNULIB_GETC@
+GNULIB_GETCHAR = @GNULIB_GETCHAR@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETGROUPS = @GNULIB_GETGROUPS@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETS = @GNULIB_GETS@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
+GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_ISWBLANK = @GNULIB_ISWBLANK@
+GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@
+GNULIB_LCHMOD = @GNULIB_LCHMOD@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LINKAT = @GNULIB_LINKAT@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_LSTAT = @GNULIB_LSTAT@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MBTOWC = @GNULIB_MBTOWC@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDIRAT = @GNULIB_MKDIRAT@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKFIFO = @GNULIB_MKFIFO@
+GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@
+GNULIB_MKNOD = @GNULIB_MKNOD@
+GNULIB_MKNODAT = @GNULIB_MKNODAT@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@
+GNULIB_MKTIME = @GNULIB_MKTIME@
+GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@
+GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@
+GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_OPEN = @GNULIB_OPEN@
+GNULIB_OPENAT = @GNULIB_OPENAT@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE = @GNULIB_PIPE@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_PREAD = @GNULIB_PREAD@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READ = @GNULIB_READ@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_READLINKAT = @GNULIB_READLINKAT@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_REALPATH = @GNULIB_REALPATH@
+GNULIB_REMOVE = @GNULIB_REMOVE@
+GNULIB_RENAME = @GNULIB_RENAME@
+GNULIB_RENAMEAT = @GNULIB_RENAMEAT@
+GNULIB_RMDIR = @GNULIB_RMDIR@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SETLOCALE = @GNULIB_SETLOCALE@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STAT = @GNULIB_STAT@
+GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRERROR_R = @GNULIB_STRERROR_R@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRPTIME = @GNULIB_STRPTIME@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_SYMLINK = @GNULIB_SYMLINK@
+GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
+GNULIB_TIMEGM = @GNULIB_TIMEGM@
+GNULIB_TIME_R = @GNULIB_TIME_R@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
+GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
+GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNLINK = @GNULIB_UNLINK@
+GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_USLEEP = @GNULIB_USLEEP@
+GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VFSCANF = @GNULIB_VFSCANF@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSCANF = @GNULIB_VSCANF@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCPCPY = @GNULIB_WCPCPY@
+GNULIB_WCPNCPY = @GNULIB_WCPNCPY@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@
+GNULIB_WCSCAT = @GNULIB_WCSCAT@
+GNULIB_WCSCHR = @GNULIB_WCSCHR@
+GNULIB_WCSCMP = @GNULIB_WCSCMP@
+GNULIB_WCSCOLL = @GNULIB_WCSCOLL@
+GNULIB_WCSCPY = @GNULIB_WCSCPY@
+GNULIB_WCSCSPN = @GNULIB_WCSCSPN@
+GNULIB_WCSDUP = @GNULIB_WCSDUP@
+GNULIB_WCSLEN = @GNULIB_WCSLEN@
+GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@
+GNULIB_WCSNCAT = @GNULIB_WCSNCAT@
+GNULIB_WCSNCMP = @GNULIB_WCSNCMP@
+GNULIB_WCSNCPY = @GNULIB_WCSNCPY@
+GNULIB_WCSNLEN = @GNULIB_WCSNLEN@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSPBRK = @GNULIB_WCSPBRK@
+GNULIB_WCSRCHR = @GNULIB_WCSRCHR@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCSSPN = @GNULIB_WCSSPN@
+GNULIB_WCSSTR = @GNULIB_WCSSTR@
+GNULIB_WCSTOK = @GNULIB_WCSTOK@
+GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@
+GNULIB_WCSXFRM = @GNULIB_WCSXFRM@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCTOMB = @GNULIB_WCTOMB@
+GNULIB_WCTRANS = @GNULIB_WCTRANS@
+GNULIB_WCTYPE = @GNULIB_WCTYPE@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WMEMCHR = @GNULIB_WMEMCHR@
+GNULIB_WMEMCMP = @GNULIB_WMEMCMP@
+GNULIB_WMEMCPY = @GNULIB_WMEMCPY@
+GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@
+GNULIB_WMEMSET = @GNULIB_WMEMSET@
+GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
+HAVE_CHOWN = @HAVE_CHOWN@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@
+HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SETENV = @HAVE_DECL_SETENV@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@
+HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_DUPLOCALE = @HAVE_DUPLOCALE@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
+HAVE_FCHMODAT = @HAVE_FCHMODAT@
+HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
+HAVE_FCNTL = @HAVE_FCNTL@
+HAVE_FEATURES_H = @HAVE_FEATURES_H@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSTATAT = @HAVE_FSTATAT@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_FUTIMENS = @HAVE_FUTIMENS@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETGROUPS = @HAVE_GETGROUPS@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETLOGIN = @HAVE_GETLOGIN@
+HAVE_GETOPT_H = @HAVE_GETOPT_H@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
+HAVE_GRANTPT = @HAVE_GRANTPT@
+HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWBLANK = @HAVE_ISWBLANK@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
+HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
+HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
+HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
+HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
+HAVE_LCHMOD = @HAVE_LCHMOD@
+HAVE_LCHOWN = @HAVE_LCHOWN@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_LSTAT = @HAVE_LSTAT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSLEN = @HAVE_MBSLEN@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMCHR = @HAVE_MEMCHR@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDIRAT = @HAVE_MKDIRAT@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKFIFO = @HAVE_MKFIFO@
+HAVE_MKFIFOAT = @HAVE_MKFIFOAT@
+HAVE_MKNOD = @HAVE_MKNOD@
+HAVE_MKNODAT = @HAVE_MKNODAT@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
+HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
+HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
+HAVE_OPENAT = @HAVE_OPENAT@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PIPE = @HAVE_PIPE@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PWRITE = @HAVE_PWRITE@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_READLINKAT = @HAVE_READLINKAT@
+HAVE_REALPATH = @HAVE_REALPATH@
+HAVE_RENAMEAT = @HAVE_RENAMEAT@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRPTIME = @HAVE_STRPTIME@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYMLINK = @HAVE_SYMLINK@
+HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_TIMEGM = @HAVE_TIMEGM@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_USLEEP = @HAVE_USLEEP@
+HAVE_UTIMENSAT = @HAVE_UTIMENSAT@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCPCPY = @HAVE_WCPCPY@
+HAVE_WCPNCPY = @HAVE_WCPNCPY@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSCASECMP = @HAVE_WCSCASECMP@
+HAVE_WCSCAT = @HAVE_WCSCAT@
+HAVE_WCSCHR = @HAVE_WCSCHR@
+HAVE_WCSCMP = @HAVE_WCSCMP@
+HAVE_WCSCOLL = @HAVE_WCSCOLL@
+HAVE_WCSCPY = @HAVE_WCSCPY@
+HAVE_WCSCSPN = @HAVE_WCSCSPN@
+HAVE_WCSDUP = @HAVE_WCSDUP@
+HAVE_WCSLEN = @HAVE_WCSLEN@
+HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@
+HAVE_WCSNCAT = @HAVE_WCSNCAT@
+HAVE_WCSNCMP = @HAVE_WCSNCMP@
+HAVE_WCSNCPY = @HAVE_WCSNCPY@
+HAVE_WCSNLEN = @HAVE_WCSNLEN@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSPBRK = @HAVE_WCSPBRK@
+HAVE_WCSRCHR = @HAVE_WCSRCHR@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCSSPN = @HAVE_WCSSPN@
+HAVE_WCSSTR = @HAVE_WCSSTR@
+HAVE_WCSTOK = @HAVE_WCSTOK@
+HAVE_WCSWIDTH = @HAVE_WCSWIDTH@
+HAVE_WCSXFRM = @HAVE_WCSXFRM@
+HAVE_WCTRANS_T = @HAVE_WCTRANS_T@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WCTYPE_T = @HAVE_WCTYPE_T@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WMEMCHR = @HAVE_WMEMCHR@
+HAVE_WMEMCMP = @HAVE_WMEMCMP@
+HAVE_WMEMCPY = @HAVE_WMEMCPY@
+HAVE_WMEMMOVE = @HAVE_WMEMMOVE@
+HAVE_WMEMSET = @HAVE_WMEMSET@
+HAVE_XLOCALE_H = @HAVE_XLOCALE_H@
+HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
+IGNORE_UNUSED_LIBRARIES_CFLAGS = @IGNORE_UNUSED_LIBRARIES_CFLAGS@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@
+INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMULTITHREAD = @LIBMULTITHREAD@
+LIBOBJS = @LIBOBJS@
+LIBPTH = @LIBPTH@
+LIBPTH_PREFIX = @LIBPTH_PREFIX@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTHREAD = @LIBTHREAD@
+LIBTOOL = @LIBTOOL@
+LIB_BLKID = @LIB_BLKID@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBMULTITHREAD = @LTLIBMULTITHREAD@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBPTH = @LTLIBPTH@
+LTLIBTHREAD = @LTLIBTHREAD@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
+NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@
+NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
+NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@
+NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FCNTL_H = @NEXT_FCNTL_H@
+NEXT_GETOPT_H = @NEXT_GETOPT_H@
+NEXT_INTTYPES_H = @NEXT_INTTYPES_H@
+NEXT_LANGINFO_H = @NEXT_LANGINFO_H@
+NEXT_LOCALE_H = @NEXT_LOCALE_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@
+NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@
+NEXT_TIME_H = @NEXT_TIME_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PARTED_USABLE_TEST_DIR = @PARTED_USABLE_TEST_DIR@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CALLOC = @REPLACE_CALLOC@
+REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP = @REPLACE_DUP@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@
+REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FCNTL = @REPLACE_FCNTL@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FSTAT = @REPLACE_FSTAT@
+REPLACE_FSTATAT = @REPLACE_FSTATAT@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_FUTIMENS = @REPLACE_FUTIMENS@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETDELIM = @REPLACE_GETDELIM@
+REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@
+REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LINK = @REPLACE_LINK@
+REPLACE_LINKAT = @REPLACE_LINKAT@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_LSTAT = @REPLACE_LSTAT@
+REPLACE_MALLOC = @REPLACE_MALLOC@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MBTOWC = @REPLACE_MBTOWC@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKDIR = @REPLACE_MKDIR@
+REPLACE_MKFIFO = @REPLACE_MKFIFO@
+REPLACE_MKNOD = @REPLACE_MKNOD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_MKTIME = @REPLACE_MKTIME@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_OPEN = @REPLACE_OPEN@
+REPLACE_OPENAT = @REPLACE_OPENAT@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PREAD = @REPLACE_PREAD@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
+REPLACE_READ = @REPLACE_READ@
+REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_REALLOC = @REPLACE_REALLOC@
+REPLACE_REALPATH = @REPLACE_REALPATH@
+REPLACE_REMOVE = @REPLACE_REMOVE@
+REPLACE_RENAME = @REPLACE_RENAME@
+REPLACE_RENAMEAT = @REPLACE_RENAMEAT@
+REPLACE_RMDIR = @REPLACE_RMDIR@
+REPLACE_SETENV = @REPLACE_SETENV@
+REPLACE_SETLOCALE = @REPLACE_SETLOCALE@
+REPLACE_SLEEP = @REPLACE_SLEEP@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STAT = @REPLACE_STAT@
+REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRERROR_R = @REPLACE_STRERROR_R@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
+REPLACE_STRNDUP = @REPLACE_STRNDUP@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
+REPLACE_SYMLINK = @REPLACE_SYMLINK@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
+REPLACE_UNLINK = @REPLACE_UNLINK@
+REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
+REPLACE_UNSETENV = @REPLACE_UNSETENV@
+REPLACE_USLEEP = @REPLACE_USLEEP@
+REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCTOMB = @REPLACE_WCTOMB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SELINUX_LIBS = @SELINUX_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
+UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
+UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+YIELD_LIB = @YIELD_LIB@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+partedincludedir = -I$(top_srcdir)/include
+AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
+noinst_LTLIBRARIES = libnilfs2.la
+libnilfs2_la_SOURCES = nilfs2.c
+INCLUDES = $(partedincludedir) $(INTLINCS)
+MAINTAINERCLEANFILES = Makefile.in
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libparted/fs/nilfs2/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu libparted/fs/nilfs2/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+       -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+       @list='$(noinst_LTLIBRARIES)'; \
+       locs=`for p in $$list; do echo $$p; done | \
+             sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+             sort -u`; \
+       test -z "$$locs" || { \
+         echo rm -f $${locs}; \
+         rm -f $${locs}; \
+       }
+libnilfs2.la: $(libnilfs2_la_OBJECTS) $(libnilfs2_la_DEPENDENCIES) $(EXTRA_libnilfs2_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK)  $(libnilfs2_la_OBJECTS) $(libnilfs2_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nilfs2.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+       mostlyclean-am
+
+distclean: distclean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+       clean-libtool clean-noinstLTLIBRARIES cscopelist ctags \
+       distclean distclean-compile distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       tags uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libparted/fs/nilfs2/nilfs2.c b/libparted/fs/nilfs2/nilfs2.c
new file mode 100644 (file)
index 0000000..511b155
--- /dev/null
@@ -0,0 +1,163 @@
+/*
+ *  nilfs2.c - New Implementation of Log filesystem
+ *
+ *  Written by  Jiro SEKIBA <jir@unicus.jp>
+ *
+ *  Copyright (C) 2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+ */
+
+#include <config.h>
+
+#include <parted/parted.h>
+#include <parted/crc32.h>
+#include <parted/endian.h>
+
+/* Magic value for nilfs2 superblock. */
+#define        NILFS2_SUPER_MAGIC              0x3434
+
+/* primariy superblock offset in 512bytes blocks. */
+#define NILFS_SB_OFFSET                        2
+
+/* secondary superblock offset in 512byte blocks. */
+#define NILFS_SB2_OFFSET(devsize)      ((((devsize)>>3) - 1) << 3)
+
+struct nilfs2_super_block
+{
+       uint32_t        s_rev_level;
+       uint16_t        s_minor_rev_level;
+       uint16_t        s_magic;
+       uint16_t        s_bytes;
+       uint16_t        s_flags;
+       uint32_t        s_crc_seed;
+       uint32_t        s_sum;
+       uint32_t        s_log_block_size;
+       uint64_t        s_nsegments;
+       uint64_t        s_dev_size;
+       uint64_t        s_first_data_block;
+       uint32_t        s_blocks_per_segment;
+       uint32_t        s_r_segments_percentage;
+       uint64_t        s_last_cno;
+       uint64_t        s_last_pseg;
+       uint64_t        s_last_seq;
+       uint64_t        s_free_blocks_count;
+       uint64_t        s_ctime;
+       uint64_t        s_mtime;
+       uint64_t        s_wtime;
+       uint16_t        s_mnt_count;
+       uint16_t        s_max_mnt_count;
+       uint16_t        s_state;
+       uint16_t        s_errors;
+       uint64_t        s_lastcheck;
+       uint32_t        s_checkinterval;
+       uint32_t        s_creator_os;
+       uint16_t        s_def_resuid;
+       uint16_t        s_def_resgid;
+       uint32_t        s_first_ino;
+       uint16_t        s_inode_size;
+       uint16_t        s_dat_entry_size;
+       uint16_t        s_checkpoint_size;
+       uint16_t        s_segment_usage_size;
+       uint8_t         s_uuid[16];
+       char            s_volume_name[80];
+       uint32_t        s_c_interval;
+       uint32_t        s_c_block_max;
+       uint32_t        s_reserved[192];
+};
+
+static int
+is_valid_nilfs_sb(struct nilfs2_super_block *sb)
+{
+       static unsigned char sum[4];
+       const int sumoff = offsetof (struct nilfs2_super_block, s_sum);
+       size_t bytes;
+       uint32_t crc;
+
+       if (PED_LE16_TO_CPU(sb->s_magic) != NILFS2_SUPER_MAGIC)
+               return 0;
+
+       bytes = PED_LE16_TO_CPU(sb->s_bytes);
+       if (bytes > 1024)
+               return 0;
+
+       crc = __efi_crc32(sb, sumoff, PED_LE32_TO_CPU(sb->s_crc_seed));
+       crc = __efi_crc32(sum, 4, crc);
+       crc = __efi_crc32((unsigned char *)sb + sumoff + 4,
+                         bytes - sumoff - 4, crc);
+
+       return crc == PED_LE32_TO_CPU(sb->s_sum);
+}
+
+PedGeometry*
+nilfs2_probe (PedGeometry* geom)
+{
+       void *sb_v;
+       void *sb2_v;
+       struct nilfs2_super_block *sb = NULL;
+       struct nilfs2_super_block *sb2 = NULL;
+       PedSector length = geom->length;
+       PedSector sb2off;
+
+       /* ignore if sector size is not 512bytes for now  */
+       if (geom->dev->sector_size != PED_SECTOR_SIZE_DEFAULT)
+               return NULL;
+
+       sb2off = NILFS_SB2_OFFSET(length);
+
+       if (ped_geometry_read_alloc(geom, &sb_v, 2, 1))
+               sb = sb_v;
+
+       if (ped_geometry_read_alloc(geom, &sb2_v, sb2off, 1))
+               sb2 = sb2_v;
+
+       if ((!sb || !is_valid_nilfs_sb(sb)) &&
+           (!sb2 || !is_valid_nilfs_sb(sb2)) ) {
+               free(sb);
+               free(sb2);
+               return NULL;
+       }
+
+       /* reserve 4k bytes for secondary superblock */
+       length = sb2off + 8;
+
+       free(sb);
+       free(sb2);
+       return ped_geometry_new(geom->dev, geom->start, length);
+}
+
+static PedFileSystemOps nilfs2_ops = {
+       probe:                  nilfs2_probe,
+};
+
+#define NILFS2_BLOCK_SIZES ((int[5]){1024, 2048, 4096, 8192, 0})
+
+static PedFileSystemType nilfs2_type = {
+       next:   NULL,
+       ops:    &nilfs2_ops,
+       name:   "nilfs2",
+       block_sizes: NILFS2_BLOCK_SIZES
+};
+
+void
+ped_file_system_nilfs2_init ()
+{
+       ped_file_system_type_register (&nilfs2_type);
+}
+
+void
+ped_file_system_nilfs2_done ()
+{
+       ped_file_system_type_unregister (&nilfs2_type);
+}
diff --git a/libparted/fs/ntfs/Makefile.am b/libparted/fs/ntfs/Makefile.am
new file mode 100644 (file)
index 0000000..732692a
--- /dev/null
@@ -0,0 +1,9 @@
+AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
+partedincludedir       = -I$(top_srcdir)/include
+
+noinst_LTLIBRARIES     = libntfs.la
+libntfs_la_SOURCES     = ntfs.c
+
+INCLUDES = $(partedincludedir) $(INTLINCS)
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/libparted/fs/ntfs/Makefile.in b/libparted/fs/ntfs/Makefile.in
new file mode 100644 (file)
index 0000000..dab5475
--- /dev/null
@@ -0,0 +1,1267 @@
+# Makefile.in generated by automake 1.11a from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in 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.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = libparted/fs/ntfs
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+       $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argmatch.m4 \
+       $(top_srcdir)/m4/assert.m4 $(top_srcdir)/m4/btowc.m4 \
+       $(top_srcdir)/m4/calloc.m4 $(top_srcdir)/m4/canonicalize.m4 \
+       $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
+       $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/configmake.m4 \
+       $(top_srcdir)/m4/dirname.m4 \
+       $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+       $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/environ.m4 \
+       $(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
+       $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fclose.m4 \
+       $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/fcntl_h.m4 \
+       $(top_srcdir)/m4/fflush.m4 $(top_srcdir)/m4/fpending.m4 \
+       $(top_srcdir)/m4/fpurge.m4 $(top_srcdir)/m4/freading.m4 \
+       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/fsync.m4 \
+       $(top_srcdir)/m4/ftell.m4 $(top_srcdir)/m4/ftello.m4 \
+       $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
+       $(top_srcdir)/m4/langinfo_h.m4 $(top_srcdir)/m4/lcmessage.m4 \
+       $(top_srcdir)/m4/lib-ignore.m4 $(top_srcdir)/m4/lib-ld.m4 \
+       $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/localcharset.m4 \
+       $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \
+       $(top_srcdir)/m4/locale-tr.m4 $(top_srcdir)/m4/locale-zh.m4 \
+       $(top_srcdir)/m4/locale_h.m4 $(top_srcdir)/m4/localename.m4 \
+       $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/long-options.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
+       $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+       $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
+       $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+       $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbtowc.m4 \
+       $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+       $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/multiarch.m4 \
+       $(top_srcdir)/m4/nl_langinfo.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/nocrash.m4 $(top_srcdir)/m4/o-direct.m4 \
+       $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/priv-set.m4 \
+       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+       $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+       $(top_srcdir)/m4/read.m4 $(top_srcdir)/m4/readlink.m4 \
+       $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/regex.m4 \
+       $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+       $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/setlocale.m4 \
+       $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/ssize_t.m4 \
+       $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdarg.m4 \
+       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strdup.m4 \
+       $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/strerror_r.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+       $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtoll.m4 \
+       $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/symlink.m4 \
+       $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+       $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/thread.m4 \
+       $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/time_h.m4 \
+       $(top_srcdir)/m4/ungetc.m4 $(top_srcdir)/m4/unistd_h.m4 \
+       $(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkdir.m4 \
+       $(top_srcdir)/m4/usleep.m4 $(top_srcdir)/m4/version-etc.m4 \
+       $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \
+       $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
+       $(top_srcdir)/m4/wcrtomb.m4 $(top_srcdir)/m4/wctob.m4 \
+       $(top_srcdir)/m4/wctomb.m4 $(top_srcdir)/m4/wctype_h.m4 \
+       $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+       $(top_srcdir)/m4/xstrndup.m4 $(top_srcdir)/m4/xstrtol.m4 \
+       $(top_srcdir)/m4/yield.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libntfs_la_LIBADD =
+am_libntfs_la_OBJECTS = ntfs.lo
+libntfs_la_OBJECTS = $(am_libntfs_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/lib
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+       $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo "  CC      " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+SOURCES = $(libntfs_la_SOURCES)
+DIST_SOURCES = $(libntfs_la_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+pkglibexecdir = @pkglibexecdir@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+BUILDINFO = @BUILDINFO@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHECK_CFLAGS = @CHECK_CFLAGS@
+CHECK_LIBS = @CHECK_LIBS@
+CONFIG_INCLUDE = @CONFIG_INCLUDE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DYNAMIC_LOADING = @DYNAMIC_LOADING@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENABLE_DEVICE_MAPPER = @ENABLE_DEVICE_MAPPER@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FACCESSAT = @GNULIB_FACCESSAT@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCHMODAT = @GNULIB_FCHMODAT@
+GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FCNTL = @GNULIB_FCNTL@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FGETC = @GNULIB_FGETC@
+GNULIB_FGETS = @GNULIB_FGETS@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREAD = @GNULIB_FREAD@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSCANF = @GNULIB_FSCANF@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSTATAT = @GNULIB_FSTATAT@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FUTIMENS = @GNULIB_FUTIMENS@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETC = @GNULIB_GETC@
+GNULIB_GETCHAR = @GNULIB_GETCHAR@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETGROUPS = @GNULIB_GETGROUPS@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETS = @GNULIB_GETS@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
+GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_ISWBLANK = @GNULIB_ISWBLANK@
+GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@
+GNULIB_LCHMOD = @GNULIB_LCHMOD@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LINKAT = @GNULIB_LINKAT@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_LSTAT = @GNULIB_LSTAT@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MBTOWC = @GNULIB_MBTOWC@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDIRAT = @GNULIB_MKDIRAT@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKFIFO = @GNULIB_MKFIFO@
+GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@
+GNULIB_MKNOD = @GNULIB_MKNOD@
+GNULIB_MKNODAT = @GNULIB_MKNODAT@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@
+GNULIB_MKTIME = @GNULIB_MKTIME@
+GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@
+GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@
+GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_OPEN = @GNULIB_OPEN@
+GNULIB_OPENAT = @GNULIB_OPENAT@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE = @GNULIB_PIPE@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_PREAD = @GNULIB_PREAD@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READ = @GNULIB_READ@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_READLINKAT = @GNULIB_READLINKAT@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_REALPATH = @GNULIB_REALPATH@
+GNULIB_REMOVE = @GNULIB_REMOVE@
+GNULIB_RENAME = @GNULIB_RENAME@
+GNULIB_RENAMEAT = @GNULIB_RENAMEAT@
+GNULIB_RMDIR = @GNULIB_RMDIR@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SETLOCALE = @GNULIB_SETLOCALE@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STAT = @GNULIB_STAT@
+GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRERROR_R = @GNULIB_STRERROR_R@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRPTIME = @GNULIB_STRPTIME@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_SYMLINK = @GNULIB_SYMLINK@
+GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
+GNULIB_TIMEGM = @GNULIB_TIMEGM@
+GNULIB_TIME_R = @GNULIB_TIME_R@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
+GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
+GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNLINK = @GNULIB_UNLINK@
+GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_USLEEP = @GNULIB_USLEEP@
+GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VFSCANF = @GNULIB_VFSCANF@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSCANF = @GNULIB_VSCANF@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCPCPY = @GNULIB_WCPCPY@
+GNULIB_WCPNCPY = @GNULIB_WCPNCPY@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@
+GNULIB_WCSCAT = @GNULIB_WCSCAT@
+GNULIB_WCSCHR = @GNULIB_WCSCHR@
+GNULIB_WCSCMP = @GNULIB_WCSCMP@
+GNULIB_WCSCOLL = @GNULIB_WCSCOLL@
+GNULIB_WCSCPY = @GNULIB_WCSCPY@
+GNULIB_WCSCSPN = @GNULIB_WCSCSPN@
+GNULIB_WCSDUP = @GNULIB_WCSDUP@
+GNULIB_WCSLEN = @GNULIB_WCSLEN@
+GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@
+GNULIB_WCSNCAT = @GNULIB_WCSNCAT@
+GNULIB_WCSNCMP = @GNULIB_WCSNCMP@
+GNULIB_WCSNCPY = @GNULIB_WCSNCPY@
+GNULIB_WCSNLEN = @GNULIB_WCSNLEN@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSPBRK = @GNULIB_WCSPBRK@
+GNULIB_WCSRCHR = @GNULIB_WCSRCHR@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCSSPN = @GNULIB_WCSSPN@
+GNULIB_WCSSTR = @GNULIB_WCSSTR@
+GNULIB_WCSTOK = @GNULIB_WCSTOK@
+GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@
+GNULIB_WCSXFRM = @GNULIB_WCSXFRM@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCTOMB = @GNULIB_WCTOMB@
+GNULIB_WCTRANS = @GNULIB_WCTRANS@
+GNULIB_WCTYPE = @GNULIB_WCTYPE@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WMEMCHR = @GNULIB_WMEMCHR@
+GNULIB_WMEMCMP = @GNULIB_WMEMCMP@
+GNULIB_WMEMCPY = @GNULIB_WMEMCPY@
+GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@
+GNULIB_WMEMSET = @GNULIB_WMEMSET@
+GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
+HAVE_CHOWN = @HAVE_CHOWN@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@
+HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SETENV = @HAVE_DECL_SETENV@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@
+HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_DUPLOCALE = @HAVE_DUPLOCALE@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
+HAVE_FCHMODAT = @HAVE_FCHMODAT@
+HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
+HAVE_FCNTL = @HAVE_FCNTL@
+HAVE_FEATURES_H = @HAVE_FEATURES_H@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSTATAT = @HAVE_FSTATAT@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_FUTIMENS = @HAVE_FUTIMENS@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETGROUPS = @HAVE_GETGROUPS@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETLOGIN = @HAVE_GETLOGIN@
+HAVE_GETOPT_H = @HAVE_GETOPT_H@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
+HAVE_GRANTPT = @HAVE_GRANTPT@
+HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWBLANK = @HAVE_ISWBLANK@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
+HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
+HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
+HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
+HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
+HAVE_LCHMOD = @HAVE_LCHMOD@
+HAVE_LCHOWN = @HAVE_LCHOWN@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_LSTAT = @HAVE_LSTAT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSLEN = @HAVE_MBSLEN@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMCHR = @HAVE_MEMCHR@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDIRAT = @HAVE_MKDIRAT@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKFIFO = @HAVE_MKFIFO@
+HAVE_MKFIFOAT = @HAVE_MKFIFOAT@
+HAVE_MKNOD = @HAVE_MKNOD@
+HAVE_MKNODAT = @HAVE_MKNODAT@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
+HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
+HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
+HAVE_OPENAT = @HAVE_OPENAT@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PIPE = @HAVE_PIPE@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PWRITE = @HAVE_PWRITE@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_READLINKAT = @HAVE_READLINKAT@
+HAVE_REALPATH = @HAVE_REALPATH@
+HAVE_RENAMEAT = @HAVE_RENAMEAT@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRPTIME = @HAVE_STRPTIME@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYMLINK = @HAVE_SYMLINK@
+HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_TIMEGM = @HAVE_TIMEGM@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_USLEEP = @HAVE_USLEEP@
+HAVE_UTIMENSAT = @HAVE_UTIMENSAT@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCPCPY = @HAVE_WCPCPY@
+HAVE_WCPNCPY = @HAVE_WCPNCPY@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSCASECMP = @HAVE_WCSCASECMP@
+HAVE_WCSCAT = @HAVE_WCSCAT@
+HAVE_WCSCHR = @HAVE_WCSCHR@
+HAVE_WCSCMP = @HAVE_WCSCMP@
+HAVE_WCSCOLL = @HAVE_WCSCOLL@
+HAVE_WCSCPY = @HAVE_WCSCPY@
+HAVE_WCSCSPN = @HAVE_WCSCSPN@
+HAVE_WCSDUP = @HAVE_WCSDUP@
+HAVE_WCSLEN = @HAVE_WCSLEN@
+HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@
+HAVE_WCSNCAT = @HAVE_WCSNCAT@
+HAVE_WCSNCMP = @HAVE_WCSNCMP@
+HAVE_WCSNCPY = @HAVE_WCSNCPY@
+HAVE_WCSNLEN = @HAVE_WCSNLEN@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSPBRK = @HAVE_WCSPBRK@
+HAVE_WCSRCHR = @HAVE_WCSRCHR@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCSSPN = @HAVE_WCSSPN@
+HAVE_WCSSTR = @HAVE_WCSSTR@
+HAVE_WCSTOK = @HAVE_WCSTOK@
+HAVE_WCSWIDTH = @HAVE_WCSWIDTH@
+HAVE_WCSXFRM = @HAVE_WCSXFRM@
+HAVE_WCTRANS_T = @HAVE_WCTRANS_T@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WCTYPE_T = @HAVE_WCTYPE_T@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WMEMCHR = @HAVE_WMEMCHR@
+HAVE_WMEMCMP = @HAVE_WMEMCMP@
+HAVE_WMEMCPY = @HAVE_WMEMCPY@
+HAVE_WMEMMOVE = @HAVE_WMEMMOVE@
+HAVE_WMEMSET = @HAVE_WMEMSET@
+HAVE_XLOCALE_H = @HAVE_XLOCALE_H@
+HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
+IGNORE_UNUSED_LIBRARIES_CFLAGS = @IGNORE_UNUSED_LIBRARIES_CFLAGS@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@
+INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMULTITHREAD = @LIBMULTITHREAD@
+LIBOBJS = @LIBOBJS@
+LIBPTH = @LIBPTH@
+LIBPTH_PREFIX = @LIBPTH_PREFIX@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTHREAD = @LIBTHREAD@
+LIBTOOL = @LIBTOOL@
+LIB_BLKID = @LIB_BLKID@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBMULTITHREAD = @LTLIBMULTITHREAD@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBPTH = @LTLIBPTH@
+LTLIBTHREAD = @LTLIBTHREAD@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
+NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@
+NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
+NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@
+NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FCNTL_H = @NEXT_FCNTL_H@
+NEXT_GETOPT_H = @NEXT_GETOPT_H@
+NEXT_INTTYPES_H = @NEXT_INTTYPES_H@
+NEXT_LANGINFO_H = @NEXT_LANGINFO_H@
+NEXT_LOCALE_H = @NEXT_LOCALE_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@
+NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@
+NEXT_TIME_H = @NEXT_TIME_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PARTED_USABLE_TEST_DIR = @PARTED_USABLE_TEST_DIR@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CALLOC = @REPLACE_CALLOC@
+REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP = @REPLACE_DUP@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@
+REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FCNTL = @REPLACE_FCNTL@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FSTAT = @REPLACE_FSTAT@
+REPLACE_FSTATAT = @REPLACE_FSTATAT@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_FUTIMENS = @REPLACE_FUTIMENS@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETDELIM = @REPLACE_GETDELIM@
+REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@
+REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LINK = @REPLACE_LINK@
+REPLACE_LINKAT = @REPLACE_LINKAT@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_LSTAT = @REPLACE_LSTAT@
+REPLACE_MALLOC = @REPLACE_MALLOC@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MBTOWC = @REPLACE_MBTOWC@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKDIR = @REPLACE_MKDIR@
+REPLACE_MKFIFO = @REPLACE_MKFIFO@
+REPLACE_MKNOD = @REPLACE_MKNOD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_MKTIME = @REPLACE_MKTIME@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_OPEN = @REPLACE_OPEN@
+REPLACE_OPENAT = @REPLACE_OPENAT@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PREAD = @REPLACE_PREAD@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
+REPLACE_READ = @REPLACE_READ@
+REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_REALLOC = @REPLACE_REALLOC@
+REPLACE_REALPATH = @REPLACE_REALPATH@
+REPLACE_REMOVE = @REPLACE_REMOVE@
+REPLACE_RENAME = @REPLACE_RENAME@
+REPLACE_RENAMEAT = @REPLACE_RENAMEAT@
+REPLACE_RMDIR = @REPLACE_RMDIR@
+REPLACE_SETENV = @REPLACE_SETENV@
+REPLACE_SETLOCALE = @REPLACE_SETLOCALE@
+REPLACE_SLEEP = @REPLACE_SLEEP@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STAT = @REPLACE_STAT@
+REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRERROR_R = @REPLACE_STRERROR_R@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
+REPLACE_STRNDUP = @REPLACE_STRNDUP@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
+REPLACE_SYMLINK = @REPLACE_SYMLINK@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
+REPLACE_UNLINK = @REPLACE_UNLINK@
+REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
+REPLACE_UNSETENV = @REPLACE_UNSETENV@
+REPLACE_USLEEP = @REPLACE_USLEEP@
+REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCTOMB = @REPLACE_WCTOMB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SELINUX_LIBS = @SELINUX_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
+UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
+UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+YIELD_LIB = @YIELD_LIB@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
+partedincludedir = -I$(top_srcdir)/include
+noinst_LTLIBRARIES = libntfs.la
+libntfs_la_SOURCES = ntfs.c
+INCLUDES = $(partedincludedir) $(INTLINCS)
+MAINTAINERCLEANFILES = Makefile.in
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libparted/fs/ntfs/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu libparted/fs/ntfs/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+       -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+       @list='$(noinst_LTLIBRARIES)'; \
+       locs=`for p in $$list; do echo $$p; done | \
+             sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+             sort -u`; \
+       test -z "$$locs" || { \
+         echo rm -f $${locs}; \
+         rm -f $${locs}; \
+       }
+libntfs.la: $(libntfs_la_OBJECTS) $(libntfs_la_DEPENDENCIES) $(EXTRA_libntfs_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK)  $(libntfs_la_OBJECTS) $(libntfs_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntfs.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+       mostlyclean-am
+
+distclean: distclean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+       clean-libtool clean-noinstLTLIBRARIES cscopelist ctags \
+       distclean distclean-compile distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       tags uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libparted/fs/ntfs/ntfs.c b/libparted/fs/ntfs/ntfs.c
new file mode 100644 (file)
index 0000000..da69497
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 2000, 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#include <config.h>
+
+#include <parted/parted.h>
+#include <parted/endian.h>
+
+#if ENABLE_NLS
+#  include <libintl.h>
+#  define _(String) dgettext (PACKAGE, String)
+#else
+#  define _(String) (String)
+#endif /* ENABLE_NLS */
+
+#include <unistd.h>
+
+#define NTFS_BLOCK_SIZES       ((int[2]){512, 0})
+
+#define NTFS_SIGNATURE "NTFS"
+
+static PedGeometry*
+ntfs_probe (PedGeometry* geom)
+{
+       char    buf[512];
+
+       if (!ped_geometry_read (geom, buf, 0, 1))
+               return 0;
+
+       if (strncmp (NTFS_SIGNATURE, buf + 3, strlen (NTFS_SIGNATURE)) == 0)
+               return ped_geometry_new (geom->dev, geom->start,
+                                        PED_LE64_TO_CPU (*(uint64_t*)
+                                                         (buf + 0x28)));
+       else
+               return NULL;
+}
+
+static PedFileSystemOps ntfs_ops = {
+       probe:          ntfs_probe,
+};
+
+static PedFileSystemType ntfs_type = {
+       next:   NULL,
+       ops:    &ntfs_ops,
+       name:   "ntfs",
+       block_sizes: NTFS_BLOCK_SIZES
+};
+
+void
+ped_file_system_ntfs_init ()
+{
+       ped_file_system_type_register (&ntfs_type);
+}
+
+void
+ped_file_system_ntfs_done ()
+{
+       ped_file_system_type_unregister (&ntfs_type);
+}
diff --git a/libparted/fs/reiserfs/Makefile.am b/libparted/fs/reiserfs/Makefile.am
new file mode 100644 (file)
index 0000000..7df005a
--- /dev/null
@@ -0,0 +1,10 @@
+AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
+partedincludedir       = -I$(top_srcdir)/include
+
+noinst_LTLIBRARIES     = libreiserfs.la
+
+libreiserfs_la_SOURCES = reiserfs.c reiserfs.h
+
+INCLUDES = $(partedincludedir) $(INTLINCS)
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/libparted/fs/reiserfs/Makefile.in b/libparted/fs/reiserfs/Makefile.in
new file mode 100644 (file)
index 0000000..ea12162
--- /dev/null
@@ -0,0 +1,1267 @@
+# Makefile.in generated by automake 1.11a from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in 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.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = libparted/fs/reiserfs
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+       $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argmatch.m4 \
+       $(top_srcdir)/m4/assert.m4 $(top_srcdir)/m4/btowc.m4 \
+       $(top_srcdir)/m4/calloc.m4 $(top_srcdir)/m4/canonicalize.m4 \
+       $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
+       $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/configmake.m4 \
+       $(top_srcdir)/m4/dirname.m4 \
+       $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+       $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/environ.m4 \
+       $(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
+       $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fclose.m4 \
+       $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/fcntl_h.m4 \
+       $(top_srcdir)/m4/fflush.m4 $(top_srcdir)/m4/fpending.m4 \
+       $(top_srcdir)/m4/fpurge.m4 $(top_srcdir)/m4/freading.m4 \
+       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/fsync.m4 \
+       $(top_srcdir)/m4/ftell.m4 $(top_srcdir)/m4/ftello.m4 \
+       $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
+       $(top_srcdir)/m4/langinfo_h.m4 $(top_srcdir)/m4/lcmessage.m4 \
+       $(top_srcdir)/m4/lib-ignore.m4 $(top_srcdir)/m4/lib-ld.m4 \
+       $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/localcharset.m4 \
+       $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \
+       $(top_srcdir)/m4/locale-tr.m4 $(top_srcdir)/m4/locale-zh.m4 \
+       $(top_srcdir)/m4/locale_h.m4 $(top_srcdir)/m4/localename.m4 \
+       $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/long-options.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
+       $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+       $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
+       $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+       $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbtowc.m4 \
+       $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+       $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/multiarch.m4 \
+       $(top_srcdir)/m4/nl_langinfo.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/nocrash.m4 $(top_srcdir)/m4/o-direct.m4 \
+       $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/priv-set.m4 \
+       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+       $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+       $(top_srcdir)/m4/read.m4 $(top_srcdir)/m4/readlink.m4 \
+       $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/regex.m4 \
+       $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+       $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/setlocale.m4 \
+       $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/ssize_t.m4 \
+       $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdarg.m4 \
+       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strdup.m4 \
+       $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/strerror_r.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+       $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtoll.m4 \
+       $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/symlink.m4 \
+       $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+       $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/thread.m4 \
+       $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/time_h.m4 \
+       $(top_srcdir)/m4/ungetc.m4 $(top_srcdir)/m4/unistd_h.m4 \
+       $(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkdir.m4 \
+       $(top_srcdir)/m4/usleep.m4 $(top_srcdir)/m4/version-etc.m4 \
+       $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \
+       $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
+       $(top_srcdir)/m4/wcrtomb.m4 $(top_srcdir)/m4/wctob.m4 \
+       $(top_srcdir)/m4/wctomb.m4 $(top_srcdir)/m4/wctype_h.m4 \
+       $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+       $(top_srcdir)/m4/xstrndup.m4 $(top_srcdir)/m4/xstrtol.m4 \
+       $(top_srcdir)/m4/yield.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libreiserfs_la_LIBADD =
+am_libreiserfs_la_OBJECTS = reiserfs.lo
+libreiserfs_la_OBJECTS = $(am_libreiserfs_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/lib
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+       $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo "  CC      " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+SOURCES = $(libreiserfs_la_SOURCES)
+DIST_SOURCES = $(libreiserfs_la_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+pkglibexecdir = @pkglibexecdir@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+BUILDINFO = @BUILDINFO@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHECK_CFLAGS = @CHECK_CFLAGS@
+CHECK_LIBS = @CHECK_LIBS@
+CONFIG_INCLUDE = @CONFIG_INCLUDE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DYNAMIC_LOADING = @DYNAMIC_LOADING@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENABLE_DEVICE_MAPPER = @ENABLE_DEVICE_MAPPER@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FACCESSAT = @GNULIB_FACCESSAT@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCHMODAT = @GNULIB_FCHMODAT@
+GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FCNTL = @GNULIB_FCNTL@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FGETC = @GNULIB_FGETC@
+GNULIB_FGETS = @GNULIB_FGETS@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREAD = @GNULIB_FREAD@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSCANF = @GNULIB_FSCANF@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSTATAT = @GNULIB_FSTATAT@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FUTIMENS = @GNULIB_FUTIMENS@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETC = @GNULIB_GETC@
+GNULIB_GETCHAR = @GNULIB_GETCHAR@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETGROUPS = @GNULIB_GETGROUPS@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETS = @GNULIB_GETS@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
+GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_ISWBLANK = @GNULIB_ISWBLANK@
+GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@
+GNULIB_LCHMOD = @GNULIB_LCHMOD@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LINKAT = @GNULIB_LINKAT@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_LSTAT = @GNULIB_LSTAT@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MBTOWC = @GNULIB_MBTOWC@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDIRAT = @GNULIB_MKDIRAT@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKFIFO = @GNULIB_MKFIFO@
+GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@
+GNULIB_MKNOD = @GNULIB_MKNOD@
+GNULIB_MKNODAT = @GNULIB_MKNODAT@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@
+GNULIB_MKTIME = @GNULIB_MKTIME@
+GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@
+GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@
+GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_OPEN = @GNULIB_OPEN@
+GNULIB_OPENAT = @GNULIB_OPENAT@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE = @GNULIB_PIPE@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_PREAD = @GNULIB_PREAD@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READ = @GNULIB_READ@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_READLINKAT = @GNULIB_READLINKAT@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_REALPATH = @GNULIB_REALPATH@
+GNULIB_REMOVE = @GNULIB_REMOVE@
+GNULIB_RENAME = @GNULIB_RENAME@
+GNULIB_RENAMEAT = @GNULIB_RENAMEAT@
+GNULIB_RMDIR = @GNULIB_RMDIR@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SETLOCALE = @GNULIB_SETLOCALE@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STAT = @GNULIB_STAT@
+GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRERROR_R = @GNULIB_STRERROR_R@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRPTIME = @GNULIB_STRPTIME@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_SYMLINK = @GNULIB_SYMLINK@
+GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
+GNULIB_TIMEGM = @GNULIB_TIMEGM@
+GNULIB_TIME_R = @GNULIB_TIME_R@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
+GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
+GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNLINK = @GNULIB_UNLINK@
+GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_USLEEP = @GNULIB_USLEEP@
+GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VFSCANF = @GNULIB_VFSCANF@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSCANF = @GNULIB_VSCANF@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCPCPY = @GNULIB_WCPCPY@
+GNULIB_WCPNCPY = @GNULIB_WCPNCPY@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@
+GNULIB_WCSCAT = @GNULIB_WCSCAT@
+GNULIB_WCSCHR = @GNULIB_WCSCHR@
+GNULIB_WCSCMP = @GNULIB_WCSCMP@
+GNULIB_WCSCOLL = @GNULIB_WCSCOLL@
+GNULIB_WCSCPY = @GNULIB_WCSCPY@
+GNULIB_WCSCSPN = @GNULIB_WCSCSPN@
+GNULIB_WCSDUP = @GNULIB_WCSDUP@
+GNULIB_WCSLEN = @GNULIB_WCSLEN@
+GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@
+GNULIB_WCSNCAT = @GNULIB_WCSNCAT@
+GNULIB_WCSNCMP = @GNULIB_WCSNCMP@
+GNULIB_WCSNCPY = @GNULIB_WCSNCPY@
+GNULIB_WCSNLEN = @GNULIB_WCSNLEN@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSPBRK = @GNULIB_WCSPBRK@
+GNULIB_WCSRCHR = @GNULIB_WCSRCHR@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCSSPN = @GNULIB_WCSSPN@
+GNULIB_WCSSTR = @GNULIB_WCSSTR@
+GNULIB_WCSTOK = @GNULIB_WCSTOK@
+GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@
+GNULIB_WCSXFRM = @GNULIB_WCSXFRM@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCTOMB = @GNULIB_WCTOMB@
+GNULIB_WCTRANS = @GNULIB_WCTRANS@
+GNULIB_WCTYPE = @GNULIB_WCTYPE@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WMEMCHR = @GNULIB_WMEMCHR@
+GNULIB_WMEMCMP = @GNULIB_WMEMCMP@
+GNULIB_WMEMCPY = @GNULIB_WMEMCPY@
+GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@
+GNULIB_WMEMSET = @GNULIB_WMEMSET@
+GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
+HAVE_CHOWN = @HAVE_CHOWN@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@
+HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SETENV = @HAVE_DECL_SETENV@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@
+HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_DUPLOCALE = @HAVE_DUPLOCALE@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
+HAVE_FCHMODAT = @HAVE_FCHMODAT@
+HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
+HAVE_FCNTL = @HAVE_FCNTL@
+HAVE_FEATURES_H = @HAVE_FEATURES_H@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSTATAT = @HAVE_FSTATAT@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_FUTIMENS = @HAVE_FUTIMENS@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETGROUPS = @HAVE_GETGROUPS@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETLOGIN = @HAVE_GETLOGIN@
+HAVE_GETOPT_H = @HAVE_GETOPT_H@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
+HAVE_GRANTPT = @HAVE_GRANTPT@
+HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWBLANK = @HAVE_ISWBLANK@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
+HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
+HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
+HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
+HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
+HAVE_LCHMOD = @HAVE_LCHMOD@
+HAVE_LCHOWN = @HAVE_LCHOWN@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_LSTAT = @HAVE_LSTAT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSLEN = @HAVE_MBSLEN@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMCHR = @HAVE_MEMCHR@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDIRAT = @HAVE_MKDIRAT@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKFIFO = @HAVE_MKFIFO@
+HAVE_MKFIFOAT = @HAVE_MKFIFOAT@
+HAVE_MKNOD = @HAVE_MKNOD@
+HAVE_MKNODAT = @HAVE_MKNODAT@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
+HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
+HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
+HAVE_OPENAT = @HAVE_OPENAT@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PIPE = @HAVE_PIPE@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PWRITE = @HAVE_PWRITE@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_READLINKAT = @HAVE_READLINKAT@
+HAVE_REALPATH = @HAVE_REALPATH@
+HAVE_RENAMEAT = @HAVE_RENAMEAT@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRPTIME = @HAVE_STRPTIME@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYMLINK = @HAVE_SYMLINK@
+HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_TIMEGM = @HAVE_TIMEGM@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_USLEEP = @HAVE_USLEEP@
+HAVE_UTIMENSAT = @HAVE_UTIMENSAT@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCPCPY = @HAVE_WCPCPY@
+HAVE_WCPNCPY = @HAVE_WCPNCPY@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSCASECMP = @HAVE_WCSCASECMP@
+HAVE_WCSCAT = @HAVE_WCSCAT@
+HAVE_WCSCHR = @HAVE_WCSCHR@
+HAVE_WCSCMP = @HAVE_WCSCMP@
+HAVE_WCSCOLL = @HAVE_WCSCOLL@
+HAVE_WCSCPY = @HAVE_WCSCPY@
+HAVE_WCSCSPN = @HAVE_WCSCSPN@
+HAVE_WCSDUP = @HAVE_WCSDUP@
+HAVE_WCSLEN = @HAVE_WCSLEN@
+HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@
+HAVE_WCSNCAT = @HAVE_WCSNCAT@
+HAVE_WCSNCMP = @HAVE_WCSNCMP@
+HAVE_WCSNCPY = @HAVE_WCSNCPY@
+HAVE_WCSNLEN = @HAVE_WCSNLEN@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSPBRK = @HAVE_WCSPBRK@
+HAVE_WCSRCHR = @HAVE_WCSRCHR@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCSSPN = @HAVE_WCSSPN@
+HAVE_WCSSTR = @HAVE_WCSSTR@
+HAVE_WCSTOK = @HAVE_WCSTOK@
+HAVE_WCSWIDTH = @HAVE_WCSWIDTH@
+HAVE_WCSXFRM = @HAVE_WCSXFRM@
+HAVE_WCTRANS_T = @HAVE_WCTRANS_T@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WCTYPE_T = @HAVE_WCTYPE_T@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WMEMCHR = @HAVE_WMEMCHR@
+HAVE_WMEMCMP = @HAVE_WMEMCMP@
+HAVE_WMEMCPY = @HAVE_WMEMCPY@
+HAVE_WMEMMOVE = @HAVE_WMEMMOVE@
+HAVE_WMEMSET = @HAVE_WMEMSET@
+HAVE_XLOCALE_H = @HAVE_XLOCALE_H@
+HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
+IGNORE_UNUSED_LIBRARIES_CFLAGS = @IGNORE_UNUSED_LIBRARIES_CFLAGS@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@
+INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMULTITHREAD = @LIBMULTITHREAD@
+LIBOBJS = @LIBOBJS@
+LIBPTH = @LIBPTH@
+LIBPTH_PREFIX = @LIBPTH_PREFIX@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTHREAD = @LIBTHREAD@
+LIBTOOL = @LIBTOOL@
+LIB_BLKID = @LIB_BLKID@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBMULTITHREAD = @LTLIBMULTITHREAD@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBPTH = @LTLIBPTH@
+LTLIBTHREAD = @LTLIBTHREAD@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
+NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@
+NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
+NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@
+NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FCNTL_H = @NEXT_FCNTL_H@
+NEXT_GETOPT_H = @NEXT_GETOPT_H@
+NEXT_INTTYPES_H = @NEXT_INTTYPES_H@
+NEXT_LANGINFO_H = @NEXT_LANGINFO_H@
+NEXT_LOCALE_H = @NEXT_LOCALE_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@
+NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@
+NEXT_TIME_H = @NEXT_TIME_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PARTED_USABLE_TEST_DIR = @PARTED_USABLE_TEST_DIR@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CALLOC = @REPLACE_CALLOC@
+REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP = @REPLACE_DUP@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@
+REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FCNTL = @REPLACE_FCNTL@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FSTAT = @REPLACE_FSTAT@
+REPLACE_FSTATAT = @REPLACE_FSTATAT@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_FUTIMENS = @REPLACE_FUTIMENS@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETDELIM = @REPLACE_GETDELIM@
+REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@
+REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LINK = @REPLACE_LINK@
+REPLACE_LINKAT = @REPLACE_LINKAT@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_LSTAT = @REPLACE_LSTAT@
+REPLACE_MALLOC = @REPLACE_MALLOC@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MBTOWC = @REPLACE_MBTOWC@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKDIR = @REPLACE_MKDIR@
+REPLACE_MKFIFO = @REPLACE_MKFIFO@
+REPLACE_MKNOD = @REPLACE_MKNOD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_MKTIME = @REPLACE_MKTIME@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_OPEN = @REPLACE_OPEN@
+REPLACE_OPENAT = @REPLACE_OPENAT@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PREAD = @REPLACE_PREAD@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
+REPLACE_READ = @REPLACE_READ@
+REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_REALLOC = @REPLACE_REALLOC@
+REPLACE_REALPATH = @REPLACE_REALPATH@
+REPLACE_REMOVE = @REPLACE_REMOVE@
+REPLACE_RENAME = @REPLACE_RENAME@
+REPLACE_RENAMEAT = @REPLACE_RENAMEAT@
+REPLACE_RMDIR = @REPLACE_RMDIR@
+REPLACE_SETENV = @REPLACE_SETENV@
+REPLACE_SETLOCALE = @REPLACE_SETLOCALE@
+REPLACE_SLEEP = @REPLACE_SLEEP@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STAT = @REPLACE_STAT@
+REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRERROR_R = @REPLACE_STRERROR_R@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
+REPLACE_STRNDUP = @REPLACE_STRNDUP@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
+REPLACE_SYMLINK = @REPLACE_SYMLINK@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
+REPLACE_UNLINK = @REPLACE_UNLINK@
+REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
+REPLACE_UNSETENV = @REPLACE_UNSETENV@
+REPLACE_USLEEP = @REPLACE_USLEEP@
+REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCTOMB = @REPLACE_WCTOMB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SELINUX_LIBS = @SELINUX_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
+UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
+UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+YIELD_LIB = @YIELD_LIB@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
+partedincludedir = -I$(top_srcdir)/include
+noinst_LTLIBRARIES = libreiserfs.la
+libreiserfs_la_SOURCES = reiserfs.c reiserfs.h
+INCLUDES = $(partedincludedir) $(INTLINCS)
+MAINTAINERCLEANFILES = Makefile.in
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libparted/fs/reiserfs/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu libparted/fs/reiserfs/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+       -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+       @list='$(noinst_LTLIBRARIES)'; \
+       locs=`for p in $$list; do echo $$p; done | \
+             sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+             sort -u`; \
+       test -z "$$locs" || { \
+         echo rm -f $${locs}; \
+         rm -f $${locs}; \
+       }
+libreiserfs.la: $(libreiserfs_la_OBJECTS) $(libreiserfs_la_DEPENDENCIES) $(EXTRA_libreiserfs_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK)  $(libreiserfs_la_OBJECTS) $(libreiserfs_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reiserfs.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+       mostlyclean-am
+
+distclean: distclean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+       clean-libtool clean-noinstLTLIBRARIES cscopelist ctags \
+       distclean distclean-compile distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       tags uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libparted/fs/reiserfs/reiserfs.c b/libparted/fs/reiserfs/reiserfs.c
new file mode 100644 (file)
index 0000000..8d64ef6
--- /dev/null
@@ -0,0 +1,113 @@
+/*
+    reiserfs.c -- libparted / libreiserfs glue
+    Copyright (C) 2001-2002, 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+    This is all rather complicated.  There are a few combinations:
+       * shared libraries full support
+       * dynamic libraries present full support (via dlopen)
+       * dynamic libraries absent (full support disabled) (via dlopen)
+       * discover only
+
+    We'd love to hear comments...
+
+    So far, we've opted for maximum flexibility for the user.  Is it
+    all worth it?
+*/
+
+#include <config.h>
+
+#include <uuid/uuid.h>
+#include <fcntl.h>
+#include <errno.h>
+
+#include <parted/parted.h>
+#include <parted/debug.h>
+#include <parted/endian.h>
+
+#if ENABLE_NLS
+#      include <libintl.h>
+#      define _(String) dgettext (PACKAGE, String)
+#else
+#      define _(String) (String)
+#endif
+
+#include "reiserfs.h"
+
+#define REISERFS_BLOCK_SIZES       ((int[2]){512, 0})
+
+static PedSector reiserfs_super_offset[] = { 128, 16, -1 };
+static PedFileSystemType* reiserfs_type;
+
+#define FPTR
+#define FCLASS extern
+
+static PedGeometry *reiserfs_probe(PedGeometry *geom)
+{
+       int i;
+       reiserfs_super_block_t sb;
+
+       PED_ASSERT(geom != NULL);
+
+       for (i = 0; reiserfs_super_offset[i] != -1; i++) {
+               if (reiserfs_super_offset[i] >= geom->length)
+                       continue;
+               if (!ped_geometry_read (geom, &sb, reiserfs_super_offset[i], 1))
+                       continue;
+
+               if (strncmp(REISERFS_SIGNATURE, sb.s_magic,
+                           strlen(REISERFS_SIGNATURE)) == 0
+                   || strncmp(REISER2FS_SIGNATURE, sb.s_magic,
+                              strlen(REISER2FS_SIGNATURE)) == 0
+                   || strncmp(REISER3FS_SIGNATURE, sb.s_magic,
+                              strlen(REISER3FS_SIGNATURE)) == 0) {
+                       PedSector block_size;
+                       PedSector block_count;
+
+                       block_size = PED_LE16_TO_CPU(sb.s_blocksize)
+                                       / PED_SECTOR_SIZE_DEFAULT;
+                       block_count = PED_LE32_TO_CPU(sb.s_block_count);
+
+                       return ped_geometry_new(geom->dev, geom->start,
+                                               block_size * block_count);
+               }
+       }
+       return NULL;
+}
+
+
+#define REISER_BLOCK_SIZES ((int[]){512, 1024, 2048, 4096, 8192, 0})
+
+static PedFileSystemOps reiserfs_simple_ops = {
+       probe:          reiserfs_probe,
+};
+
+static PedFileSystemType reiserfs_simple_type = {
+       next:           NULL,
+       ops:            &reiserfs_simple_ops,
+       name:           "reiserfs",
+        block_sizes:    REISER_BLOCK_SIZES
+};
+
+void ped_file_system_reiserfs_init()
+{
+       reiserfs_type = &reiserfs_simple_type;
+       ped_file_system_type_register(reiserfs_type);
+}
+
+void ped_file_system_reiserfs_done()
+{
+       ped_file_system_type_unregister(reiserfs_type);
+}
diff --git a/libparted/fs/reiserfs/reiserfs.h b/libparted/fs/reiserfs/reiserfs.h
new file mode 100644 (file)
index 0000000..99aa419
--- /dev/null
@@ -0,0 +1,108 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 2000, 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef REISERFS_H
+#define REISERFS_H
+
+#define REISERFS_API_VERSION 0
+
+#define REISERFS_SIGNATURE "ReIsErFs"
+#define REISER2FS_SIGNATURE "ReIsEr2Fs"
+#define REISER3FS_SIGNATURE "ReIsEr3Fs"
+
+#define DEFAULT_BLOCK_SIZE 4096
+
+struct reiserfs_super_block {
+    uint32_t s_block_count;
+    uint32_t s_free_blocks;
+    uint32_t s_root_block;
+    uint32_t s_journal_block;
+    uint32_t s_journal_dev;
+    uint32_t s_orig_journal_size;
+    uint32_t s_journal_trans_max;
+    uint32_t s_journal_block_count;
+    uint32_t s_journal_max_batch;
+    uint32_t s_journal_max_commit_age;
+    uint32_t s_journal_max_trans_age;
+    uint16_t s_blocksize;
+    uint16_t s_oid_maxsize;
+    uint16_t s_oid_cursize;
+    uint16_t s_state;
+    char s_magic[10];
+    uint16_t s_fsck_state;
+    uint32_t s_hash_function_code;
+    uint16_t s_tree_height;
+    uint16_t s_bmap_nr;
+    uint16_t s_version;
+    char padding[438];
+};
+
+typedef struct reiserfs_super_block reiserfs_super_block_t;
+
+enum reiserfs_exception_type {
+    EXCEPTION_INFORMATION      = 1,
+    EXCEPTION_WARNING          = 2,
+    EXCEPTION_ERROR            = 3,
+    EXCEPTION_FATAL            = 4,
+    EXCEPTION_BUG              = 5,
+    EXCEPTION_NO_FEATURE       = 6
+};
+
+typedef enum reiserfs_exception_type reiserfs_exception_type_t;
+
+enum reiserfs_exception_option {
+    EXCEPTION_UNHANDLED        = 1 << 0,
+    EXCEPTION_FIX              = 1 << 1,
+    EXCEPTION_YES              = 1 << 2,
+    EXCEPTION_NO               = 1 << 3,
+    EXCEPTION_OK               = 1 << 4,
+    EXCEPTION_RETRY            = 1 << 5,
+    EXCEPTION_IGNORE           = 1 << 6,
+    EXCEPTION_CANCEL           = 1 << 7
+};
+
+typedef enum reiserfs_exception_option reiserfs_exception_option_t;
+
+typedef void (reiserfs_gauge_handler_t)(const char *, unsigned int, void *, int, int, int);
+
+typedef void * reiserfs_exception_t;
+typedef void * reiserfs_gauge_t;
+typedef void * reiserfs_fs_t;
+
+#define FS_FORMAT_3_5                  0
+#define FS_FORMAT_3_6                  2
+
+#define SUPER_OFFSET_IN_BYTES          64*1024
+
+#define DEFAULT_JOURNAL_SIZE 8192
+
+#define JOURNAL_MIN_SIZE               512
+#define JOURNAL_MIN_TRANS              256
+#define JOURNAL_MAX_TRANS              1024
+
+#define JOURNAL_DEF_RATIO              8
+#define JOURNAL_MIN_RATIO              2
+#define JOURNAL_MAX_BATCH              900
+#define JOURNAL_MAX_COMMIT_AGE                 30
+#define JOURNAL_MAX_TRANS_AGE          30
+
+#define TEA_HASH                       1
+#define YURA_HASH                      2
+#define R5_HASH                                3
+
+#endif
diff --git a/libparted/fs/ufs/Makefile.am b/libparted/fs/ufs/Makefile.am
new file mode 100644 (file)
index 0000000..c63e8d2
--- /dev/null
@@ -0,0 +1,9 @@
+AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
+partedincludedir       = -I$(top_srcdir)/include
+
+noinst_LTLIBRARIES     = libufs.la
+libufs_la_SOURCES      = ufs.c
+
+INCLUDES = $(partedincludedir) $(INTLINCS)
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/libparted/fs/ufs/Makefile.in b/libparted/fs/ufs/Makefile.in
new file mode 100644 (file)
index 0000000..0d6aea4
--- /dev/null
@@ -0,0 +1,1267 @@
+# Makefile.in generated by automake 1.11a from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in 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.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = libparted/fs/ufs
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+       $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argmatch.m4 \
+       $(top_srcdir)/m4/assert.m4 $(top_srcdir)/m4/btowc.m4 \
+       $(top_srcdir)/m4/calloc.m4 $(top_srcdir)/m4/canonicalize.m4 \
+       $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
+       $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/configmake.m4 \
+       $(top_srcdir)/m4/dirname.m4 \
+       $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+       $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/environ.m4 \
+       $(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
+       $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fclose.m4 \
+       $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/fcntl_h.m4 \
+       $(top_srcdir)/m4/fflush.m4 $(top_srcdir)/m4/fpending.m4 \
+       $(top_srcdir)/m4/fpurge.m4 $(top_srcdir)/m4/freading.m4 \
+       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/fsync.m4 \
+       $(top_srcdir)/m4/ftell.m4 $(top_srcdir)/m4/ftello.m4 \
+       $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
+       $(top_srcdir)/m4/langinfo_h.m4 $(top_srcdir)/m4/lcmessage.m4 \
+       $(top_srcdir)/m4/lib-ignore.m4 $(top_srcdir)/m4/lib-ld.m4 \
+       $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/localcharset.m4 \
+       $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \
+       $(top_srcdir)/m4/locale-tr.m4 $(top_srcdir)/m4/locale-zh.m4 \
+       $(top_srcdir)/m4/locale_h.m4 $(top_srcdir)/m4/localename.m4 \
+       $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/long-options.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
+       $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+       $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
+       $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+       $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbtowc.m4 \
+       $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+       $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/multiarch.m4 \
+       $(top_srcdir)/m4/nl_langinfo.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/nocrash.m4 $(top_srcdir)/m4/o-direct.m4 \
+       $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/priv-set.m4 \
+       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+       $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+       $(top_srcdir)/m4/read.m4 $(top_srcdir)/m4/readlink.m4 \
+       $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/regex.m4 \
+       $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+       $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/setlocale.m4 \
+       $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/ssize_t.m4 \
+       $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdarg.m4 \
+       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strdup.m4 \
+       $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/strerror_r.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+       $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtoll.m4 \
+       $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/symlink.m4 \
+       $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+       $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/thread.m4 \
+       $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/time_h.m4 \
+       $(top_srcdir)/m4/ungetc.m4 $(top_srcdir)/m4/unistd_h.m4 \
+       $(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkdir.m4 \
+       $(top_srcdir)/m4/usleep.m4 $(top_srcdir)/m4/version-etc.m4 \
+       $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \
+       $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
+       $(top_srcdir)/m4/wcrtomb.m4 $(top_srcdir)/m4/wctob.m4 \
+       $(top_srcdir)/m4/wctomb.m4 $(top_srcdir)/m4/wctype_h.m4 \
+       $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+       $(top_srcdir)/m4/xstrndup.m4 $(top_srcdir)/m4/xstrtol.m4 \
+       $(top_srcdir)/m4/yield.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libufs_la_LIBADD =
+am_libufs_la_OBJECTS = ufs.lo
+libufs_la_OBJECTS = $(am_libufs_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/lib
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+       $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo "  CC      " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+SOURCES = $(libufs_la_SOURCES)
+DIST_SOURCES = $(libufs_la_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+pkglibexecdir = @pkglibexecdir@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+BUILDINFO = @BUILDINFO@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHECK_CFLAGS = @CHECK_CFLAGS@
+CHECK_LIBS = @CHECK_LIBS@
+CONFIG_INCLUDE = @CONFIG_INCLUDE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DYNAMIC_LOADING = @DYNAMIC_LOADING@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENABLE_DEVICE_MAPPER = @ENABLE_DEVICE_MAPPER@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FACCESSAT = @GNULIB_FACCESSAT@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCHMODAT = @GNULIB_FCHMODAT@
+GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FCNTL = @GNULIB_FCNTL@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FGETC = @GNULIB_FGETC@
+GNULIB_FGETS = @GNULIB_FGETS@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREAD = @GNULIB_FREAD@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSCANF = @GNULIB_FSCANF@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSTATAT = @GNULIB_FSTATAT@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FUTIMENS = @GNULIB_FUTIMENS@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETC = @GNULIB_GETC@
+GNULIB_GETCHAR = @GNULIB_GETCHAR@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETGROUPS = @GNULIB_GETGROUPS@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETS = @GNULIB_GETS@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
+GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_ISWBLANK = @GNULIB_ISWBLANK@
+GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@
+GNULIB_LCHMOD = @GNULIB_LCHMOD@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LINKAT = @GNULIB_LINKAT@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_LSTAT = @GNULIB_LSTAT@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MBTOWC = @GNULIB_MBTOWC@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDIRAT = @GNULIB_MKDIRAT@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKFIFO = @GNULIB_MKFIFO@
+GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@
+GNULIB_MKNOD = @GNULIB_MKNOD@
+GNULIB_MKNODAT = @GNULIB_MKNODAT@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@
+GNULIB_MKTIME = @GNULIB_MKTIME@
+GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@
+GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@
+GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_OPEN = @GNULIB_OPEN@
+GNULIB_OPENAT = @GNULIB_OPENAT@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE = @GNULIB_PIPE@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_PREAD = @GNULIB_PREAD@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READ = @GNULIB_READ@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_READLINKAT = @GNULIB_READLINKAT@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_REALPATH = @GNULIB_REALPATH@
+GNULIB_REMOVE = @GNULIB_REMOVE@
+GNULIB_RENAME = @GNULIB_RENAME@
+GNULIB_RENAMEAT = @GNULIB_RENAMEAT@
+GNULIB_RMDIR = @GNULIB_RMDIR@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SETLOCALE = @GNULIB_SETLOCALE@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STAT = @GNULIB_STAT@
+GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRERROR_R = @GNULIB_STRERROR_R@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRPTIME = @GNULIB_STRPTIME@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_SYMLINK = @GNULIB_SYMLINK@
+GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
+GNULIB_TIMEGM = @GNULIB_TIMEGM@
+GNULIB_TIME_R = @GNULIB_TIME_R@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
+GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
+GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNLINK = @GNULIB_UNLINK@
+GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_USLEEP = @GNULIB_USLEEP@
+GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VFSCANF = @GNULIB_VFSCANF@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSCANF = @GNULIB_VSCANF@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCPCPY = @GNULIB_WCPCPY@
+GNULIB_WCPNCPY = @GNULIB_WCPNCPY@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@
+GNULIB_WCSCAT = @GNULIB_WCSCAT@
+GNULIB_WCSCHR = @GNULIB_WCSCHR@
+GNULIB_WCSCMP = @GNULIB_WCSCMP@
+GNULIB_WCSCOLL = @GNULIB_WCSCOLL@
+GNULIB_WCSCPY = @GNULIB_WCSCPY@
+GNULIB_WCSCSPN = @GNULIB_WCSCSPN@
+GNULIB_WCSDUP = @GNULIB_WCSDUP@
+GNULIB_WCSLEN = @GNULIB_WCSLEN@
+GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@
+GNULIB_WCSNCAT = @GNULIB_WCSNCAT@
+GNULIB_WCSNCMP = @GNULIB_WCSNCMP@
+GNULIB_WCSNCPY = @GNULIB_WCSNCPY@
+GNULIB_WCSNLEN = @GNULIB_WCSNLEN@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSPBRK = @GNULIB_WCSPBRK@
+GNULIB_WCSRCHR = @GNULIB_WCSRCHR@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCSSPN = @GNULIB_WCSSPN@
+GNULIB_WCSSTR = @GNULIB_WCSSTR@
+GNULIB_WCSTOK = @GNULIB_WCSTOK@
+GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@
+GNULIB_WCSXFRM = @GNULIB_WCSXFRM@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCTOMB = @GNULIB_WCTOMB@
+GNULIB_WCTRANS = @GNULIB_WCTRANS@
+GNULIB_WCTYPE = @GNULIB_WCTYPE@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WMEMCHR = @GNULIB_WMEMCHR@
+GNULIB_WMEMCMP = @GNULIB_WMEMCMP@
+GNULIB_WMEMCPY = @GNULIB_WMEMCPY@
+GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@
+GNULIB_WMEMSET = @GNULIB_WMEMSET@
+GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
+HAVE_CHOWN = @HAVE_CHOWN@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@
+HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SETENV = @HAVE_DECL_SETENV@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@
+HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_DUPLOCALE = @HAVE_DUPLOCALE@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
+HAVE_FCHMODAT = @HAVE_FCHMODAT@
+HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
+HAVE_FCNTL = @HAVE_FCNTL@
+HAVE_FEATURES_H = @HAVE_FEATURES_H@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSTATAT = @HAVE_FSTATAT@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_FUTIMENS = @HAVE_FUTIMENS@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETGROUPS = @HAVE_GETGROUPS@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETLOGIN = @HAVE_GETLOGIN@
+HAVE_GETOPT_H = @HAVE_GETOPT_H@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
+HAVE_GRANTPT = @HAVE_GRANTPT@
+HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWBLANK = @HAVE_ISWBLANK@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
+HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
+HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
+HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
+HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
+HAVE_LCHMOD = @HAVE_LCHMOD@
+HAVE_LCHOWN = @HAVE_LCHOWN@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_LSTAT = @HAVE_LSTAT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSLEN = @HAVE_MBSLEN@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMCHR = @HAVE_MEMCHR@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDIRAT = @HAVE_MKDIRAT@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKFIFO = @HAVE_MKFIFO@
+HAVE_MKFIFOAT = @HAVE_MKFIFOAT@
+HAVE_MKNOD = @HAVE_MKNOD@
+HAVE_MKNODAT = @HAVE_MKNODAT@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
+HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
+HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
+HAVE_OPENAT = @HAVE_OPENAT@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PIPE = @HAVE_PIPE@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PWRITE = @HAVE_PWRITE@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_READLINKAT = @HAVE_READLINKAT@
+HAVE_REALPATH = @HAVE_REALPATH@
+HAVE_RENAMEAT = @HAVE_RENAMEAT@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRPTIME = @HAVE_STRPTIME@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYMLINK = @HAVE_SYMLINK@
+HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_TIMEGM = @HAVE_TIMEGM@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_USLEEP = @HAVE_USLEEP@
+HAVE_UTIMENSAT = @HAVE_UTIMENSAT@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCPCPY = @HAVE_WCPCPY@
+HAVE_WCPNCPY = @HAVE_WCPNCPY@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSCASECMP = @HAVE_WCSCASECMP@
+HAVE_WCSCAT = @HAVE_WCSCAT@
+HAVE_WCSCHR = @HAVE_WCSCHR@
+HAVE_WCSCMP = @HAVE_WCSCMP@
+HAVE_WCSCOLL = @HAVE_WCSCOLL@
+HAVE_WCSCPY = @HAVE_WCSCPY@
+HAVE_WCSCSPN = @HAVE_WCSCSPN@
+HAVE_WCSDUP = @HAVE_WCSDUP@
+HAVE_WCSLEN = @HAVE_WCSLEN@
+HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@
+HAVE_WCSNCAT = @HAVE_WCSNCAT@
+HAVE_WCSNCMP = @HAVE_WCSNCMP@
+HAVE_WCSNCPY = @HAVE_WCSNCPY@
+HAVE_WCSNLEN = @HAVE_WCSNLEN@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSPBRK = @HAVE_WCSPBRK@
+HAVE_WCSRCHR = @HAVE_WCSRCHR@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCSSPN = @HAVE_WCSSPN@
+HAVE_WCSSTR = @HAVE_WCSSTR@
+HAVE_WCSTOK = @HAVE_WCSTOK@
+HAVE_WCSWIDTH = @HAVE_WCSWIDTH@
+HAVE_WCSXFRM = @HAVE_WCSXFRM@
+HAVE_WCTRANS_T = @HAVE_WCTRANS_T@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WCTYPE_T = @HAVE_WCTYPE_T@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WMEMCHR = @HAVE_WMEMCHR@
+HAVE_WMEMCMP = @HAVE_WMEMCMP@
+HAVE_WMEMCPY = @HAVE_WMEMCPY@
+HAVE_WMEMMOVE = @HAVE_WMEMMOVE@
+HAVE_WMEMSET = @HAVE_WMEMSET@
+HAVE_XLOCALE_H = @HAVE_XLOCALE_H@
+HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
+IGNORE_UNUSED_LIBRARIES_CFLAGS = @IGNORE_UNUSED_LIBRARIES_CFLAGS@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@
+INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMULTITHREAD = @LIBMULTITHREAD@
+LIBOBJS = @LIBOBJS@
+LIBPTH = @LIBPTH@
+LIBPTH_PREFIX = @LIBPTH_PREFIX@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTHREAD = @LIBTHREAD@
+LIBTOOL = @LIBTOOL@
+LIB_BLKID = @LIB_BLKID@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBMULTITHREAD = @LTLIBMULTITHREAD@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBPTH = @LTLIBPTH@
+LTLIBTHREAD = @LTLIBTHREAD@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
+NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@
+NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
+NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@
+NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FCNTL_H = @NEXT_FCNTL_H@
+NEXT_GETOPT_H = @NEXT_GETOPT_H@
+NEXT_INTTYPES_H = @NEXT_INTTYPES_H@
+NEXT_LANGINFO_H = @NEXT_LANGINFO_H@
+NEXT_LOCALE_H = @NEXT_LOCALE_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@
+NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@
+NEXT_TIME_H = @NEXT_TIME_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PARTED_USABLE_TEST_DIR = @PARTED_USABLE_TEST_DIR@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CALLOC = @REPLACE_CALLOC@
+REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP = @REPLACE_DUP@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@
+REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FCNTL = @REPLACE_FCNTL@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FSTAT = @REPLACE_FSTAT@
+REPLACE_FSTATAT = @REPLACE_FSTATAT@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_FUTIMENS = @REPLACE_FUTIMENS@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETDELIM = @REPLACE_GETDELIM@
+REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@
+REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LINK = @REPLACE_LINK@
+REPLACE_LINKAT = @REPLACE_LINKAT@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_LSTAT = @REPLACE_LSTAT@
+REPLACE_MALLOC = @REPLACE_MALLOC@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MBTOWC = @REPLACE_MBTOWC@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKDIR = @REPLACE_MKDIR@
+REPLACE_MKFIFO = @REPLACE_MKFIFO@
+REPLACE_MKNOD = @REPLACE_MKNOD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_MKTIME = @REPLACE_MKTIME@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_OPEN = @REPLACE_OPEN@
+REPLACE_OPENAT = @REPLACE_OPENAT@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PREAD = @REPLACE_PREAD@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
+REPLACE_READ = @REPLACE_READ@
+REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_REALLOC = @REPLACE_REALLOC@
+REPLACE_REALPATH = @REPLACE_REALPATH@
+REPLACE_REMOVE = @REPLACE_REMOVE@
+REPLACE_RENAME = @REPLACE_RENAME@
+REPLACE_RENAMEAT = @REPLACE_RENAMEAT@
+REPLACE_RMDIR = @REPLACE_RMDIR@
+REPLACE_SETENV = @REPLACE_SETENV@
+REPLACE_SETLOCALE = @REPLACE_SETLOCALE@
+REPLACE_SLEEP = @REPLACE_SLEEP@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STAT = @REPLACE_STAT@
+REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRERROR_R = @REPLACE_STRERROR_R@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
+REPLACE_STRNDUP = @REPLACE_STRNDUP@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
+REPLACE_SYMLINK = @REPLACE_SYMLINK@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
+REPLACE_UNLINK = @REPLACE_UNLINK@
+REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
+REPLACE_UNSETENV = @REPLACE_UNSETENV@
+REPLACE_USLEEP = @REPLACE_USLEEP@
+REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCTOMB = @REPLACE_WCTOMB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SELINUX_LIBS = @SELINUX_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
+UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
+UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+YIELD_LIB = @YIELD_LIB@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
+partedincludedir = -I$(top_srcdir)/include
+noinst_LTLIBRARIES = libufs.la
+libufs_la_SOURCES = ufs.c
+INCLUDES = $(partedincludedir) $(INTLINCS)
+MAINTAINERCLEANFILES = Makefile.in
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libparted/fs/ufs/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu libparted/fs/ufs/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+       -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+       @list='$(noinst_LTLIBRARIES)'; \
+       locs=`for p in $$list; do echo $$p; done | \
+             sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+             sort -u`; \
+       test -z "$$locs" || { \
+         echo rm -f $${locs}; \
+         rm -f $${locs}; \
+       }
+libufs.la: $(libufs_la_OBJECTS) $(libufs_la_DEPENDENCIES) $(EXTRA_libufs_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK)  $(libufs_la_OBJECTS) $(libufs_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ufs.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+       mostlyclean-am
+
+distclean: distclean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+       clean-libtool clean-noinstLTLIBRARIES cscopelist ctags \
+       distclean distclean-compile distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       tags uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libparted/fs/ufs/ufs.c b/libparted/fs/ufs/ufs.c
new file mode 100644 (file)
index 0000000..3dc198e
--- /dev/null
@@ -0,0 +1,281 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 2001, 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+    Contributor: Ben Collins <bcollins@debian.org>
+*/
+
+#include <config.h>
+
+#include <parted/parted.h>
+#include <parted/endian.h>
+#include <parted/debug.h>
+
+#if ENABLE_NLS
+#  include <libintl.h>
+#  define _(String) dgettext (PACKAGE, String)
+#else
+#  define _(String) (String)
+#endif /* ENABLE_NLS */
+
+#include <unistd.h>
+#include <string.h>
+
+#define SUN_UFS_BLOCK_SIZES       ((int[2]){512, 0})
+#define HP_UFS_BLOCK_SIZES        ((int[2]){512, 0})
+
+
+/* taken from ufs_fs.h in Linux */
+#define        UFS_MAXNAMLEN 255
+#define UFS_MAXMNTLEN 512
+#define UFS_MAXCSBUFS 31
+#define UFS_LINK_MAX 32000
+
+#define UFS_MAGIC      0x00011954
+#define UFS_MAGIC_LFN  0x00095014
+#define UFS_MAGIC_FEA  0x00195612
+#define UFS_MAGIC_4GB  0x05231994
+
+struct ufs_csum {
+       uint32_t        cs_ndir;        /* number of directories */
+       uint32_t        cs_nbfree;      /* number of free blocks */
+       uint32_t        cs_nifree;      /* number of free inodes */
+       uint32_t        cs_nffree;      /* number of free frags */
+};
+
+struct ufs_super_block {
+       uint32_t        fs_link;        /* UNUSED */
+       uint32_t        fs_rlink;       /* UNUSED */
+       uint32_t        fs_sblkno;      /* addr of super-block in filesys */
+       uint32_t        fs_cblkno;      /* offset of cyl-block in filesys */
+       uint32_t        fs_iblkno;      /* offset of inode-blocks in filesys */
+       uint32_t        fs_dblkno;      /* offset of first data after cg */
+       uint32_t        fs_cgoffset;    /* cylinder group offset in cylinder */
+       uint32_t        fs_cgmask;      /* used to calc mod fs_ntrak */
+       uint32_t        fs_time;        /* last time written -- time_t */
+       uint32_t        fs_size;        /* number of blocks in fs */
+       uint32_t        fs_dsize;       /* number of data blocks in fs */
+       uint32_t        fs_ncg;         /* number of cylinder groups */
+       uint32_t        fs_bsize;       /* size of basic blocks in fs */
+       uint32_t        fs_fsize;       /* size of frag blocks in fs */
+       uint32_t        fs_frag;        /* number of frags in a block in fs */
+/* these are configuration parameters */
+       uint32_t        fs_minfree;     /* minimum percentage of free blocks */
+       uint32_t        fs_rotdelay;    /* num of ms for optimal next block */
+       uint32_t        fs_rps;         /* disk revolutions per second */
+/* these fields can be computed from the others */
+       uint32_t        fs_bmask;       /* ``blkoff'' calc of blk offsets */
+       uint32_t        fs_fmask;       /* ``fragoff'' calc of frag offsets */
+       uint32_t        fs_bshift;      /* ``lblkno'' calc of logical blkno */
+       uint32_t        fs_fshift;      /* ``numfrags'' calc number of frags */
+/* these are configuration parameters */
+       uint32_t        fs_maxcontig;   /* max number of contiguous blks */
+       uint32_t        fs_maxbpg;      /* max number of blks per cyl group */
+/* these fields can be computed from the others */
+       uint32_t        fs_fragshift;   /* block to frag shift */
+       uint32_t        fs_fsbtodb;     /* fsbtodb and dbtofsb shift constant */
+       uint32_t        fs_sbsize;      /* actual size of super block */
+       uint32_t        fs_csmask;      /* csum block offset */
+       uint32_t        fs_csshift;     /* csum block number */
+       uint32_t        fs_nindir;      /* value of NINDIR */
+       uint32_t        fs_inopb;       /* value of INOPB */
+       uint32_t        fs_nspf;        /* value of NSPF */
+/* yet another configuration parameter */
+       uint32_t        fs_optim;       /* optimization preference, see below */
+/* these fields are derived from the hardware */
+       union {
+               struct {
+                       uint32_t        fs_npsect;      /* # sectors/track including spares */
+               } fs_sun;
+               struct {
+                       int32_t         fs_state;       /* file system state time stamp */
+               } fs_sunx86;
+       } fs_u1;
+       uint32_t        fs_interleave;  /* hardware sector interleave */
+       uint32_t        fs_trackskew;   /* sector 0 skew, per track */
+/* a unique id for this file system (currently unused and unmaintained) */
+/* In 4.3 Tahoe this space is used by fs_headswitch and fs_trkseek */
+/* Neither of those fields is used in the Tahoe code right now but */
+/* there could be problems if they are.                            */
+       uint32_t        fs_id[2];       /* file system id */
+/* sizes determined by number of cylinder groups and their sizes */
+       uint32_t        fs_csaddr;      /* blk addr of cyl grp summary area */
+       uint32_t        fs_cssize;      /* size of cyl grp summary area */
+       uint32_t        fs_cgsize;      /* cylinder group size */
+/* these fields are derived from the hardware */
+       uint32_t        fs_ntrak;       /* tracks per cylinder */
+       uint32_t        fs_nsect;       /* sectors per track */
+       uint32_t        fs_spc;         /* sectors per cylinder */
+/* this comes from the disk driver partitioning */
+       uint32_t        fs_ncyl;        /* cylinders in file system */
+/* these fields can be computed from the others */
+       uint32_t        fs_cpg;         /* cylinders per group */
+       uint32_t        fs_ipg;         /* inodes per group */
+       uint32_t        fs_fpg;         /* blocks per group * fs_frag */
+/* this data must be re-computed after crashes */
+       struct ufs_csum fs_cstotal;     /* cylinder summary information */
+/* these fields are cleared at mount time */
+       int8_t          fs_fmod;        /* super block modified flag */
+       int8_t          fs_clean;       /* file system is clean flag */
+       int8_t          fs_ronly;       /* mounted read-only flag */
+       int8_t          fs_flags;       /* currently unused flag */
+       int8_t          fs_fsmnt[UFS_MAXMNTLEN];        /* name mounted on */
+/* these fields retain the current block allocation info */
+       uint32_t        fs_cgrotor;     /* last cg searched */
+       uint32_t        fs_csp[UFS_MAXCSBUFS];  /* list of fs_cs info buffers */
+       uint32_t        fs_maxcluster;
+       uint32_t        fs_cpc;         /* cyl per cycle in postbl */
+       uint16_t        fs_opostbl[16][8];      /* old rotation block list head */
+       union {
+               struct {
+                       int32_t         fs_sparecon[53];/* reserved for future constants */
+                       int32_t         fs_reclaim;
+                       int32_t         fs_sparecon2[1];
+                       int32_t         fs_state;       /* file system state time stamp */
+                       uint32_t        fs_qbmask[2];   /* ~usb_bmask */
+                       uint32_t        fs_qfmask[2];   /* ~usb_fmask */
+               } fs_sun;
+               struct {
+                       int32_t         fs_sparecon[53];/* reserved for future constants */
+                       int32_t         fs_reclaim;
+                       int32_t         fs_sparecon2[1];
+                       uint32_t        fs_npsect;      /* # sectors/track including spares */
+                       uint32_t        fs_qbmask[2];   /* ~usb_bmask */
+                       uint32_t        fs_qfmask[2];   /* ~usb_fmask */
+               } fs_sunx86;
+               struct {
+                       int32_t         fs_sparecon[50];/* reserved for future constants */
+                       int32_t         fs_contigsumsize;/* size of cluster summary array */
+                       int32_t         fs_maxsymlinklen;/* max length of an internal symlink */
+                       int32_t         fs_inodefmt;    /* format of on-disk inodes */
+                       uint32_t        fs_maxfilesize[2];      /* max representable file size */
+                       uint32_t        fs_qbmask[2];   /* ~usb_bmask */
+                       uint32_t        fs_qfmask[2];   /* ~usb_fmask */
+                       int32_t         fs_state;       /* file system state time stamp */
+               } fs_44;
+       } fs_u2;
+       int32_t fs_postblformat;        /* format of positional layout tables */
+       int32_t fs_nrpos;               /* number of rotational positions */
+       int32_t fs_postbloff;           /* (__s16) rotation block list head */
+       int32_t fs_rotbloff;            /* (uint8_t) blocks for each rotation */
+       int32_t fs_magic;               /* magic number */
+       uint8_t fs_space[4];            /* list of blocks for each rotation */
+};
+
+static PedGeometry*
+ufs_probe_sun (PedGeometry* geom)
+{
+       int8_t buf[512 * 3];
+       struct ufs_super_block *sb;
+
+       if (geom->length < 5)
+               return 0;
+       if (!ped_geometry_read (geom, buf, 16, 3))
+               return 0;
+
+       sb = (struct ufs_super_block *)buf;
+
+       if (PED_BE32_TO_CPU(sb->fs_magic) == UFS_MAGIC) {
+               PedSector block_size = PED_BE32_TO_CPU(sb->fs_bsize) / 512;
+               PedSector block_count = PED_BE32_TO_CPU(sb->fs_size);
+               return ped_geometry_new (geom->dev, geom->start,
+                                        block_size * block_count);
+       }
+       if (PED_LE32_TO_CPU(sb->fs_magic) == UFS_MAGIC) {
+               PedSector block_size = PED_LE32_TO_CPU(sb->fs_bsize) / 512;
+               PedSector block_count = PED_LE32_TO_CPU(sb->fs_size);
+               return ped_geometry_new (geom->dev, geom->start,
+                                        block_size * block_count);
+       }
+       return NULL;
+}
+
+static PedGeometry*
+ufs_probe_hp (PedGeometry* geom)
+{
+       int8_t buf[1536];
+       struct ufs_super_block *sb;
+       PedSector block_size;
+       PedSector block_count;
+
+       if (geom->length < 5)
+               return 0;
+       if (!ped_geometry_read (geom, buf, 16, 3))
+               return 0;
+
+       sb = (struct ufs_super_block *)buf;
+
+       /* Try sane bytesex */
+       switch (PED_BE32_TO_CPU(sb->fs_magic)) {
+               case UFS_MAGIC_LFN:
+               case UFS_MAGIC_FEA:
+               case UFS_MAGIC_4GB:
+                       block_size = PED_BE32_TO_CPU(sb->fs_bsize) / 512;
+                       block_count = PED_BE32_TO_CPU(sb->fs_size);
+                       return ped_geometry_new (geom->dev, geom->start,
+                                                block_size * block_count);
+       }
+
+       /* Try perverted bytesex */
+       switch (PED_LE32_TO_CPU(sb->fs_magic)) {
+               case UFS_MAGIC_LFN:
+               case UFS_MAGIC_FEA:
+               case UFS_MAGIC_4GB:
+                       block_size = PED_LE32_TO_CPU(sb->fs_bsize) / 512;
+                       block_count = PED_LE32_TO_CPU(sb->fs_size);
+                       return ped_geometry_new (geom->dev, geom->start,
+                                                block_size * block_count);
+       }
+       return NULL;
+}
+
+static PedFileSystemOps ufs_ops_sun = {
+       probe:          ufs_probe_sun,
+};
+
+static PedFileSystemOps ufs_ops_hp = {
+       probe:          ufs_probe_hp,
+};
+
+static PedFileSystemType ufs_type_sun = {
+       next:   NULL,
+       ops:    &ufs_ops_sun,
+       name:   "sun-ufs",
+       block_sizes: SUN_UFS_BLOCK_SIZES
+};
+
+static PedFileSystemType ufs_type_hp = {
+       next:   NULL,
+       ops:    &ufs_ops_hp,
+       name:   "hp-ufs",
+       block_sizes: HP_UFS_BLOCK_SIZES
+};
+
+void
+ped_file_system_ufs_init ()
+{
+       PED_ASSERT (sizeof (struct ufs_super_block) == 1380);
+
+       ped_file_system_type_register (&ufs_type_sun);
+       ped_file_system_type_register (&ufs_type_hp);
+}
+
+void
+ped_file_system_ufs_done ()
+{
+       ped_file_system_type_unregister (&ufs_type_hp);
+       ped_file_system_type_unregister (&ufs_type_sun);
+}
diff --git a/libparted/fs/xfs/Makefile.am b/libparted/fs/xfs/Makefile.am
new file mode 100644 (file)
index 0000000..8e55052
--- /dev/null
@@ -0,0 +1,9 @@
+AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
+partedincludedir       = -I$(top_srcdir)/include
+
+noinst_LTLIBRARIES     = libxfs.la
+libxfs_la_SOURCES      = xfs.c xfs_sb.h xfs_types.h platform_defs.h
+
+INCLUDES = $(partedincludedir) $(INTLINCS)
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/libparted/fs/xfs/Makefile.in b/libparted/fs/xfs/Makefile.in
new file mode 100644 (file)
index 0000000..3abef04
--- /dev/null
@@ -0,0 +1,1267 @@
+# Makefile.in generated by automake 1.11a from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in 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.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = libparted/fs/xfs
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+       $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argmatch.m4 \
+       $(top_srcdir)/m4/assert.m4 $(top_srcdir)/m4/btowc.m4 \
+       $(top_srcdir)/m4/calloc.m4 $(top_srcdir)/m4/canonicalize.m4 \
+       $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
+       $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/configmake.m4 \
+       $(top_srcdir)/m4/dirname.m4 \
+       $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+       $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/environ.m4 \
+       $(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
+       $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fclose.m4 \
+       $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/fcntl_h.m4 \
+       $(top_srcdir)/m4/fflush.m4 $(top_srcdir)/m4/fpending.m4 \
+       $(top_srcdir)/m4/fpurge.m4 $(top_srcdir)/m4/freading.m4 \
+       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/fsync.m4 \
+       $(top_srcdir)/m4/ftell.m4 $(top_srcdir)/m4/ftello.m4 \
+       $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
+       $(top_srcdir)/m4/langinfo_h.m4 $(top_srcdir)/m4/lcmessage.m4 \
+       $(top_srcdir)/m4/lib-ignore.m4 $(top_srcdir)/m4/lib-ld.m4 \
+       $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/localcharset.m4 \
+       $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \
+       $(top_srcdir)/m4/locale-tr.m4 $(top_srcdir)/m4/locale-zh.m4 \
+       $(top_srcdir)/m4/locale_h.m4 $(top_srcdir)/m4/localename.m4 \
+       $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/long-options.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
+       $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+       $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
+       $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+       $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbtowc.m4 \
+       $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+       $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/multiarch.m4 \
+       $(top_srcdir)/m4/nl_langinfo.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/nocrash.m4 $(top_srcdir)/m4/o-direct.m4 \
+       $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/priv-set.m4 \
+       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+       $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+       $(top_srcdir)/m4/read.m4 $(top_srcdir)/m4/readlink.m4 \
+       $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/regex.m4 \
+       $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+       $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/setlocale.m4 \
+       $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/ssize_t.m4 \
+       $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdarg.m4 \
+       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strdup.m4 \
+       $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/strerror_r.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+       $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtoll.m4 \
+       $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/symlink.m4 \
+       $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+       $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/thread.m4 \
+       $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/time_h.m4 \
+       $(top_srcdir)/m4/ungetc.m4 $(top_srcdir)/m4/unistd_h.m4 \
+       $(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkdir.m4 \
+       $(top_srcdir)/m4/usleep.m4 $(top_srcdir)/m4/version-etc.m4 \
+       $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \
+       $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
+       $(top_srcdir)/m4/wcrtomb.m4 $(top_srcdir)/m4/wctob.m4 \
+       $(top_srcdir)/m4/wctomb.m4 $(top_srcdir)/m4/wctype_h.m4 \
+       $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+       $(top_srcdir)/m4/xstrndup.m4 $(top_srcdir)/m4/xstrtol.m4 \
+       $(top_srcdir)/m4/yield.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libxfs_la_LIBADD =
+am_libxfs_la_OBJECTS = xfs.lo
+libxfs_la_OBJECTS = $(am_libxfs_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/lib
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+       $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo "  CC      " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+SOURCES = $(libxfs_la_SOURCES)
+DIST_SOURCES = $(libxfs_la_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+pkglibexecdir = @pkglibexecdir@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+BUILDINFO = @BUILDINFO@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHECK_CFLAGS = @CHECK_CFLAGS@
+CHECK_LIBS = @CHECK_LIBS@
+CONFIG_INCLUDE = @CONFIG_INCLUDE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DYNAMIC_LOADING = @DYNAMIC_LOADING@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENABLE_DEVICE_MAPPER = @ENABLE_DEVICE_MAPPER@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FACCESSAT = @GNULIB_FACCESSAT@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCHMODAT = @GNULIB_FCHMODAT@
+GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FCNTL = @GNULIB_FCNTL@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FGETC = @GNULIB_FGETC@
+GNULIB_FGETS = @GNULIB_FGETS@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREAD = @GNULIB_FREAD@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSCANF = @GNULIB_FSCANF@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSTATAT = @GNULIB_FSTATAT@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FUTIMENS = @GNULIB_FUTIMENS@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETC = @GNULIB_GETC@
+GNULIB_GETCHAR = @GNULIB_GETCHAR@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETGROUPS = @GNULIB_GETGROUPS@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETS = @GNULIB_GETS@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
+GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_ISWBLANK = @GNULIB_ISWBLANK@
+GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@
+GNULIB_LCHMOD = @GNULIB_LCHMOD@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LINKAT = @GNULIB_LINKAT@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_LSTAT = @GNULIB_LSTAT@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MBTOWC = @GNULIB_MBTOWC@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDIRAT = @GNULIB_MKDIRAT@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKFIFO = @GNULIB_MKFIFO@
+GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@
+GNULIB_MKNOD = @GNULIB_MKNOD@
+GNULIB_MKNODAT = @GNULIB_MKNODAT@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@
+GNULIB_MKTIME = @GNULIB_MKTIME@
+GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@
+GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@
+GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_OPEN = @GNULIB_OPEN@
+GNULIB_OPENAT = @GNULIB_OPENAT@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE = @GNULIB_PIPE@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_PREAD = @GNULIB_PREAD@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READ = @GNULIB_READ@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_READLINKAT = @GNULIB_READLINKAT@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_REALPATH = @GNULIB_REALPATH@
+GNULIB_REMOVE = @GNULIB_REMOVE@
+GNULIB_RENAME = @GNULIB_RENAME@
+GNULIB_RENAMEAT = @GNULIB_RENAMEAT@
+GNULIB_RMDIR = @GNULIB_RMDIR@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SETLOCALE = @GNULIB_SETLOCALE@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STAT = @GNULIB_STAT@
+GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRERROR_R = @GNULIB_STRERROR_R@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRPTIME = @GNULIB_STRPTIME@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_SYMLINK = @GNULIB_SYMLINK@
+GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
+GNULIB_TIMEGM = @GNULIB_TIMEGM@
+GNULIB_TIME_R = @GNULIB_TIME_R@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
+GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
+GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNLINK = @GNULIB_UNLINK@
+GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_USLEEP = @GNULIB_USLEEP@
+GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VFSCANF = @GNULIB_VFSCANF@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSCANF = @GNULIB_VSCANF@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCPCPY = @GNULIB_WCPCPY@
+GNULIB_WCPNCPY = @GNULIB_WCPNCPY@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@
+GNULIB_WCSCAT = @GNULIB_WCSCAT@
+GNULIB_WCSCHR = @GNULIB_WCSCHR@
+GNULIB_WCSCMP = @GNULIB_WCSCMP@
+GNULIB_WCSCOLL = @GNULIB_WCSCOLL@
+GNULIB_WCSCPY = @GNULIB_WCSCPY@
+GNULIB_WCSCSPN = @GNULIB_WCSCSPN@
+GNULIB_WCSDUP = @GNULIB_WCSDUP@
+GNULIB_WCSLEN = @GNULIB_WCSLEN@
+GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@
+GNULIB_WCSNCAT = @GNULIB_WCSNCAT@
+GNULIB_WCSNCMP = @GNULIB_WCSNCMP@
+GNULIB_WCSNCPY = @GNULIB_WCSNCPY@
+GNULIB_WCSNLEN = @GNULIB_WCSNLEN@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSPBRK = @GNULIB_WCSPBRK@
+GNULIB_WCSRCHR = @GNULIB_WCSRCHR@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCSSPN = @GNULIB_WCSSPN@
+GNULIB_WCSSTR = @GNULIB_WCSSTR@
+GNULIB_WCSTOK = @GNULIB_WCSTOK@
+GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@
+GNULIB_WCSXFRM = @GNULIB_WCSXFRM@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCTOMB = @GNULIB_WCTOMB@
+GNULIB_WCTRANS = @GNULIB_WCTRANS@
+GNULIB_WCTYPE = @GNULIB_WCTYPE@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WMEMCHR = @GNULIB_WMEMCHR@
+GNULIB_WMEMCMP = @GNULIB_WMEMCMP@
+GNULIB_WMEMCPY = @GNULIB_WMEMCPY@
+GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@
+GNULIB_WMEMSET = @GNULIB_WMEMSET@
+GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
+HAVE_CHOWN = @HAVE_CHOWN@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@
+HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SETENV = @HAVE_DECL_SETENV@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@
+HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_DUPLOCALE = @HAVE_DUPLOCALE@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
+HAVE_FCHMODAT = @HAVE_FCHMODAT@
+HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
+HAVE_FCNTL = @HAVE_FCNTL@
+HAVE_FEATURES_H = @HAVE_FEATURES_H@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSTATAT = @HAVE_FSTATAT@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_FUTIMENS = @HAVE_FUTIMENS@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETGROUPS = @HAVE_GETGROUPS@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETLOGIN = @HAVE_GETLOGIN@
+HAVE_GETOPT_H = @HAVE_GETOPT_H@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
+HAVE_GRANTPT = @HAVE_GRANTPT@
+HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWBLANK = @HAVE_ISWBLANK@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
+HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
+HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
+HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
+HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
+HAVE_LCHMOD = @HAVE_LCHMOD@
+HAVE_LCHOWN = @HAVE_LCHOWN@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_LSTAT = @HAVE_LSTAT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSLEN = @HAVE_MBSLEN@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMCHR = @HAVE_MEMCHR@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDIRAT = @HAVE_MKDIRAT@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKFIFO = @HAVE_MKFIFO@
+HAVE_MKFIFOAT = @HAVE_MKFIFOAT@
+HAVE_MKNOD = @HAVE_MKNOD@
+HAVE_MKNODAT = @HAVE_MKNODAT@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
+HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
+HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
+HAVE_OPENAT = @HAVE_OPENAT@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PIPE = @HAVE_PIPE@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PWRITE = @HAVE_PWRITE@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_READLINKAT = @HAVE_READLINKAT@
+HAVE_REALPATH = @HAVE_REALPATH@
+HAVE_RENAMEAT = @HAVE_RENAMEAT@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRPTIME = @HAVE_STRPTIME@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYMLINK = @HAVE_SYMLINK@
+HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_TIMEGM = @HAVE_TIMEGM@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_USLEEP = @HAVE_USLEEP@
+HAVE_UTIMENSAT = @HAVE_UTIMENSAT@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCPCPY = @HAVE_WCPCPY@
+HAVE_WCPNCPY = @HAVE_WCPNCPY@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSCASECMP = @HAVE_WCSCASECMP@
+HAVE_WCSCAT = @HAVE_WCSCAT@
+HAVE_WCSCHR = @HAVE_WCSCHR@
+HAVE_WCSCMP = @HAVE_WCSCMP@
+HAVE_WCSCOLL = @HAVE_WCSCOLL@
+HAVE_WCSCPY = @HAVE_WCSCPY@
+HAVE_WCSCSPN = @HAVE_WCSCSPN@
+HAVE_WCSDUP = @HAVE_WCSDUP@
+HAVE_WCSLEN = @HAVE_WCSLEN@
+HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@
+HAVE_WCSNCAT = @HAVE_WCSNCAT@
+HAVE_WCSNCMP = @HAVE_WCSNCMP@
+HAVE_WCSNCPY = @HAVE_WCSNCPY@
+HAVE_WCSNLEN = @HAVE_WCSNLEN@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSPBRK = @HAVE_WCSPBRK@
+HAVE_WCSRCHR = @HAVE_WCSRCHR@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCSSPN = @HAVE_WCSSPN@
+HAVE_WCSSTR = @HAVE_WCSSTR@
+HAVE_WCSTOK = @HAVE_WCSTOK@
+HAVE_WCSWIDTH = @HAVE_WCSWIDTH@
+HAVE_WCSXFRM = @HAVE_WCSXFRM@
+HAVE_WCTRANS_T = @HAVE_WCTRANS_T@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WCTYPE_T = @HAVE_WCTYPE_T@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WMEMCHR = @HAVE_WMEMCHR@
+HAVE_WMEMCMP = @HAVE_WMEMCMP@
+HAVE_WMEMCPY = @HAVE_WMEMCPY@
+HAVE_WMEMMOVE = @HAVE_WMEMMOVE@
+HAVE_WMEMSET = @HAVE_WMEMSET@
+HAVE_XLOCALE_H = @HAVE_XLOCALE_H@
+HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
+IGNORE_UNUSED_LIBRARIES_CFLAGS = @IGNORE_UNUSED_LIBRARIES_CFLAGS@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@
+INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMULTITHREAD = @LIBMULTITHREAD@
+LIBOBJS = @LIBOBJS@
+LIBPTH = @LIBPTH@
+LIBPTH_PREFIX = @LIBPTH_PREFIX@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTHREAD = @LIBTHREAD@
+LIBTOOL = @LIBTOOL@
+LIB_BLKID = @LIB_BLKID@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBMULTITHREAD = @LTLIBMULTITHREAD@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBPTH = @LTLIBPTH@
+LTLIBTHREAD = @LTLIBTHREAD@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
+NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@
+NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
+NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@
+NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FCNTL_H = @NEXT_FCNTL_H@
+NEXT_GETOPT_H = @NEXT_GETOPT_H@
+NEXT_INTTYPES_H = @NEXT_INTTYPES_H@
+NEXT_LANGINFO_H = @NEXT_LANGINFO_H@
+NEXT_LOCALE_H = @NEXT_LOCALE_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@
+NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@
+NEXT_TIME_H = @NEXT_TIME_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PARTED_USABLE_TEST_DIR = @PARTED_USABLE_TEST_DIR@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CALLOC = @REPLACE_CALLOC@
+REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP = @REPLACE_DUP@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@
+REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FCNTL = @REPLACE_FCNTL@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FSTAT = @REPLACE_FSTAT@
+REPLACE_FSTATAT = @REPLACE_FSTATAT@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_FUTIMENS = @REPLACE_FUTIMENS@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETDELIM = @REPLACE_GETDELIM@
+REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@
+REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LINK = @REPLACE_LINK@
+REPLACE_LINKAT = @REPLACE_LINKAT@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_LSTAT = @REPLACE_LSTAT@
+REPLACE_MALLOC = @REPLACE_MALLOC@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MBTOWC = @REPLACE_MBTOWC@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKDIR = @REPLACE_MKDIR@
+REPLACE_MKFIFO = @REPLACE_MKFIFO@
+REPLACE_MKNOD = @REPLACE_MKNOD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_MKTIME = @REPLACE_MKTIME@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_OPEN = @REPLACE_OPEN@
+REPLACE_OPENAT = @REPLACE_OPENAT@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PREAD = @REPLACE_PREAD@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
+REPLACE_READ = @REPLACE_READ@
+REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_REALLOC = @REPLACE_REALLOC@
+REPLACE_REALPATH = @REPLACE_REALPATH@
+REPLACE_REMOVE = @REPLACE_REMOVE@
+REPLACE_RENAME = @REPLACE_RENAME@
+REPLACE_RENAMEAT = @REPLACE_RENAMEAT@
+REPLACE_RMDIR = @REPLACE_RMDIR@
+REPLACE_SETENV = @REPLACE_SETENV@
+REPLACE_SETLOCALE = @REPLACE_SETLOCALE@
+REPLACE_SLEEP = @REPLACE_SLEEP@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STAT = @REPLACE_STAT@
+REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRERROR_R = @REPLACE_STRERROR_R@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
+REPLACE_STRNDUP = @REPLACE_STRNDUP@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
+REPLACE_SYMLINK = @REPLACE_SYMLINK@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
+REPLACE_UNLINK = @REPLACE_UNLINK@
+REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
+REPLACE_UNSETENV = @REPLACE_UNSETENV@
+REPLACE_USLEEP = @REPLACE_USLEEP@
+REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCTOMB = @REPLACE_WCTOMB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SELINUX_LIBS = @SELINUX_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
+UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
+UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+YIELD_LIB = @YIELD_LIB@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
+partedincludedir = -I$(top_srcdir)/include
+noinst_LTLIBRARIES = libxfs.la
+libxfs_la_SOURCES = xfs.c xfs_sb.h xfs_types.h platform_defs.h
+INCLUDES = $(partedincludedir) $(INTLINCS)
+MAINTAINERCLEANFILES = Makefile.in
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libparted/fs/xfs/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu libparted/fs/xfs/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+       -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+       @list='$(noinst_LTLIBRARIES)'; \
+       locs=`for p in $$list; do echo $$p; done | \
+             sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+             sort -u`; \
+       test -z "$$locs" || { \
+         echo rm -f $${locs}; \
+         rm -f $${locs}; \
+       }
+libxfs.la: $(libxfs_la_OBJECTS) $(libxfs_la_DEPENDENCIES) $(EXTRA_libxfs_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK)  $(libxfs_la_OBJECTS) $(libxfs_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xfs.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+       mostlyclean-am
+
+distclean: distclean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+       clean-libtool clean-noinstLTLIBRARIES cscopelist ctags \
+       distclean distclean-compile distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       tags uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libparted/fs/xfs/platform_defs.h b/libparted/fs/xfs/platform_defs.h
new file mode 100644 (file)
index 0000000..2b55752
--- /dev/null
@@ -0,0 +1,108 @@
+/* include/platform_defs.h.  Generated automatically by configure.  */
+/*
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * 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/
+ *
+ * @configure_input@
+ */
+#ifndef __XFS_PLATFORM_DEFS_H__
+#define __XFS_PLATFORM_DEFS_H__
+
+#include <stdio.h>
+#include <stdarg.h>
+#include <assert.h>
+#include <endian.h>
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/param.h>
+#include <sys/types.h>
+
+#if (__GLIBC__ <= 2) && (__GLIBC_MINOR__ <= 1)
+# define constpp       const char * const *
+#else
+# define constpp       char * const *
+#endif
+
+typedef loff_t         xfs_off_t;
+typedef uint64_t       xfs_ino_t;
+typedef uint32_t       xfs_dev_t;
+typedef int64_t         xfs_daddr_t;
+typedef char*          xfs_caddr_t;
+
+/* long and pointer must be either 32 bit or 64 bit */
+/* #undef HAVE_64BIT_LONG */
+#define HAVE_32BIT_LONG 1
+#define HAVE_32BIT_PTR 1
+/* #undef HAVE_64BIT_PTR */
+
+/* Check if __psint_t is set to something meaningful */
+/* #undef HAVE___PSINT_T */
+#ifndef HAVE___PSINT_T
+# ifdef HAVE_32BIT_PTR
+typedef int __psint_t;
+# elif defined HAVE_64BIT_PTR
+#  ifdef HAVE_64BIT_LONG
+typedef long __psint_t;
+#  else
+/* This is a very strange architecture, which has 64 bit pointers but
+ * not 64 bit longs. So, I'd just punt here and assume long long is Ok */
+typedef long long __psint_t;
+#  endif
+# else
+#  error Unknown pointer size
+# endif
+#endif
+
+/* Check if __psunsigned_t is set to something meaningful */
+/* #undef HAVE___PSUNSIGNED_T */
+#ifndef HAVE___PSUNSIGNED_T
+# ifdef HAVE_32BIT_PTR
+typedef unsigned int __psunsigned_t;
+# elif defined HAVE_64BIT_PTR
+#  ifdef HAVE_64BIT_LONG
+typedef long __psunsigned_t;
+#  else
+/* This is a very strange architecture, which has 64 bit pointers but
+ * not 64 bit longs. So, I'd just punt here and assume long long is Ok */
+typedef unsigned long long __psunsigned_t;
+#  endif
+# else
+#  error Unknown pointer size
+# endif
+#endif
+
+#ifdef DEBUG
+# define ASSERT                assert
+#else
+# define ASSERT(EX)    ((void) 0)
+#endif
+
+#endif /* __XFS_PLATFORM_DEFS_H__ */
diff --git a/libparted/fs/xfs/xfs.c b/libparted/fs/xfs/xfs.c
new file mode 100644 (file)
index 0000000..9b9edc1
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 2001, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#include <config.h>
+
+#include <parted/parted.h>
+#include <parted/endian.h>
+
+#if ENABLE_NLS
+#  include <libintl.h>
+#  define _(String) dgettext (PACKAGE, String)
+#else
+#  define _(String) (String)
+#endif /* ENABLE_NLS */
+
+#include <uuid/uuid.h>
+#include "platform_defs.h"
+#include "xfs_types.h"
+#include "xfs_sb.h"
+
+#define XFS_BLOCK_SIZES                ((int[2]){512, 0})
+
+static PedGeometry*
+xfs_probe (PedGeometry* geom)
+{
+       PedSector       block_size;
+       PedSector       block_count;
+       union {
+               struct xfs_sb   sb;
+               char            bytes [512];
+       } buf;
+
+       if (geom->length < XFS_SB_DADDR + 1)
+               return NULL;
+       if (!ped_geometry_read (geom, &buf, XFS_SB_DADDR, 1))
+               return NULL;
+
+       if (PED_LE32_TO_CPU (buf.sb.sb_magicnum) == XFS_SB_MAGIC) {
+               block_size = PED_LE32_TO_CPU (buf.sb.sb_blocksize) / 512;
+               block_count = PED_LE64_TO_CPU (buf.sb.sb_dblocks);
+
+               return ped_geometry_new (geom->dev, geom->start,
+                                        block_size * block_count);
+       }
+
+       if (PED_BE32_TO_CPU (buf.sb.sb_magicnum) == XFS_SB_MAGIC) {
+               block_size = PED_BE32_TO_CPU (buf.sb.sb_blocksize) / 512;
+               block_count = PED_BE64_TO_CPU (buf.sb.sb_dblocks);
+
+               return ped_geometry_new (geom->dev, geom->start,
+                                        block_size * block_count);
+       }
+
+       return NULL;
+}
+
+static PedFileSystemOps xfs_ops = {
+       probe:          xfs_probe,
+};
+
+static PedFileSystemType xfs_type = {
+       next:   NULL,
+       ops:    &xfs_ops,
+       name:   "xfs",
+       block_sizes: XFS_BLOCK_SIZES
+};
+
+void
+ped_file_system_xfs_init ()
+{
+       ped_file_system_type_register (&xfs_type);
+}
+
+void
+ped_file_system_xfs_done ()
+{
+       ped_file_system_type_unregister (&xfs_type);
+}
diff --git a/libparted/fs/xfs/xfs_sb.h b/libparted/fs/xfs/xfs_sb.h
new file mode 100644 (file)
index 0000000..3484145
--- /dev/null
@@ -0,0 +1,489 @@
+/*
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * 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/
+ */
+#ifndef __XFS_SB_H__
+#define        __XFS_SB_H__
+
+/*
+ * Super block
+ * Fits into a 512-byte buffer at daddr_t 0 of each allocation group.
+ * Only the first of these is ever updated except during growfs.
+ */
+
+struct xfs_buf;
+struct xfs_mount;
+
+#define        XFS_SB_MAGIC            0x58465342      /* 'XFSB' */
+#define        XFS_SB_VERSION_1        1               /* 5.3, 6.0.1, 6.1 */
+#define        XFS_SB_VERSION_2        2               /* 6.2 - attributes */
+#define        XFS_SB_VERSION_3        3               /* 6.2 - new inode version */
+#define        XFS_SB_VERSION_4        4               /* 6.2+ - bitmask version */
+#define        XFS_SB_VERSION_NUMBITS          0x000f
+#define        XFS_SB_VERSION_ALLFBITS         0xfff0
+#define        XFS_SB_VERSION_SASHFBITS        0xf000
+#define        XFS_SB_VERSION_REALFBITS        0x0ff0
+#define        XFS_SB_VERSION_ATTRBIT          0x0010
+#define        XFS_SB_VERSION_NLINKBIT         0x0020
+#define        XFS_SB_VERSION_QUOTABIT         0x0040
+#define        XFS_SB_VERSION_ALIGNBIT         0x0080
+#define        XFS_SB_VERSION_DALIGNBIT        0x0100
+#define        XFS_SB_VERSION_SHAREDBIT        0x0200
+#define        XFS_SB_VERSION_EXTFLGBIT        0x1000
+#define        XFS_SB_VERSION_DIRV2BIT         0x2000
+#define        XFS_SB_VERSION_OKSASHFBITS      \
+       (XFS_SB_VERSION_EXTFLGBIT | \
+        XFS_SB_VERSION_DIRV2BIT)
+#define        XFS_SB_VERSION_OKREALFBITS      \
+       (XFS_SB_VERSION_ATTRBIT | \
+        XFS_SB_VERSION_NLINKBIT | \
+        XFS_SB_VERSION_QUOTABIT | \
+        XFS_SB_VERSION_ALIGNBIT | \
+        XFS_SB_VERSION_DALIGNBIT | \
+        XFS_SB_VERSION_SHAREDBIT)
+#define        XFS_SB_VERSION_OKSASHBITS       \
+       (XFS_SB_VERSION_NUMBITS | \
+        XFS_SB_VERSION_REALFBITS | \
+        XFS_SB_VERSION_OKSASHFBITS)
+#define        XFS_SB_VERSION_OKREALBITS       \
+       (XFS_SB_VERSION_NUMBITS | \
+        XFS_SB_VERSION_OKREALFBITS | \
+        XFS_SB_VERSION_OKSASHFBITS)
+#define        XFS_SB_VERSION_MKFS(ia,dia,extflag,dirv2)       \
+       (((ia) || (dia) || (extflag) || (dirv2)) ? \
+               (XFS_SB_VERSION_4 | \
+                ((ia) ? XFS_SB_VERSION_ALIGNBIT : 0) | \
+                ((dia) ? XFS_SB_VERSION_DALIGNBIT : 0) | \
+                ((extflag) ? XFS_SB_VERSION_EXTFLGBIT : 0) | \
+                ((dirv2) ? XFS_SB_VERSION_DIRV2BIT : 0)) : \
+               XFS_SB_VERSION_1)
+
+typedef struct xfs_sb
+{
+       uint32_t        sb_magicnum;    /* magic number == XFS_SB_MAGIC */
+       uint32_t        sb_blocksize;   /* logical block size, bytes */
+       xfs_drfsbno_t   sb_dblocks;     /* number of data blocks */
+       xfs_drfsbno_t   sb_rblocks;     /* number of realtime blocks */
+       xfs_drtbno_t    sb_rextents;    /* number of realtime extents */
+       uuid_t          sb_uuid;        /* file system unique id */
+       xfs_dfsbno_t    sb_logstart;    /* starting block of log if internal */
+       xfs_ino_t       sb_rootino;     /* root inode number */
+       xfs_ino_t       sb_rbmino;      /* bitmap inode for realtime extents */
+       xfs_ino_t       sb_rsumino;     /* summary inode for rt bitmap */
+       xfs_agblock_t   sb_rextsize;    /* realtime extent size, blocks */
+       xfs_agblock_t   sb_agblocks;    /* size of an allocation group */
+       xfs_agnumber_t  sb_agcount;     /* number of allocation groups */
+       xfs_extlen_t    sb_rbmblocks;   /* number of rt bitmap blocks */
+       xfs_extlen_t    sb_logblocks;   /* number of log blocks */
+       uint16_t        sb_versionnum;  /* header version == XFS_SB_VERSION */
+       uint16_t        sb_sectsize;    /* volume sector size, bytes */
+       uint16_t        sb_inodesize;   /* inode size, bytes */
+       uint16_t        sb_inopblock;   /* inodes per block */
+       char            sb_fname[12];   /* file system name */
+       uint8_t         sb_blocklog;    /* log2 of sb_blocksize */
+       uint8_t         sb_sectlog;     /* log2 of sb_sectsize */
+       uint8_t         sb_inodelog;    /* log2 of sb_inodesize */
+       uint8_t         sb_inopblog;    /* log2 of sb_inopblock */
+       uint8_t         sb_agblklog;    /* log2 of sb_agblocks (rounded up) */
+       uint8_t         sb_rextslog;    /* log2 of sb_rextents */
+       uint8_t         sb_inprogress;  /* mkfs is in progress, don't mount */
+       uint8_t         sb_imax_pct;    /* max % of fs for inode space */
+                                       /* statistics */
+       /*
+        * These fields must remain contiguous.  If you really
+        * want to change their layout, make sure you fix the
+        * code in xfs_trans_apply_sb_deltas().
+        */
+       uint64_t        sb_icount;      /* allocated inodes */
+       uint64_t        sb_ifree;       /* free inodes */
+       uint64_t        sb_fdblocks;    /* free data blocks */
+       uint64_t        sb_frextents;   /* free realtime extents */
+       /*
+        * End contiguous fields.
+        */
+       xfs_ino_t       sb_uquotino;    /* user quota inode */
+       xfs_ino_t       sb_gquotino;    /* group quota inode */
+       uint16_t        sb_qflags;      /* quota flags */
+       uint8_t         sb_flags;       /* misc. flags */
+       uint8_t         sb_shared_vn;   /* shared version number */
+       xfs_extlen_t    sb_inoalignmt;  /* inode chunk alignment, fsblocks */
+       uint32_t        sb_unit;        /* stripe or raid unit */
+       uint32_t        sb_width;       /* stripe or raid width */
+       uint8_t         sb_dirblklog;   /* log2 of dir block size (fsbs) */
+        uint8_t                sb_dummy[7];    /* padding */
+} xfs_sb_t;
+
+/*
+ * Sequence number values for the fields.
+ */
+typedef enum {
+       XFS_SBS_MAGICNUM, XFS_SBS_BLOCKSIZE, XFS_SBS_DBLOCKS, XFS_SBS_RBLOCKS,
+       XFS_SBS_REXTENTS, XFS_SBS_UUID, XFS_SBS_LOGSTART, XFS_SBS_ROOTINO,
+       XFS_SBS_RBMINO, XFS_SBS_RSUMINO, XFS_SBS_REXTSIZE, XFS_SBS_AGBLOCKS,
+       XFS_SBS_AGCOUNT, XFS_SBS_RBMBLOCKS, XFS_SBS_LOGBLOCKS,
+       XFS_SBS_VERSIONNUM, XFS_SBS_SECTSIZE, XFS_SBS_INODESIZE,
+       XFS_SBS_INOPBLOCK, XFS_SBS_FNAME, XFS_SBS_BLOCKLOG,
+       XFS_SBS_SECTLOG, XFS_SBS_INODELOG, XFS_SBS_INOPBLOG, XFS_SBS_AGBLKLOG,
+       XFS_SBS_REXTSLOG, XFS_SBS_INPROGRESS, XFS_SBS_IMAX_PCT, XFS_SBS_ICOUNT,
+       XFS_SBS_IFREE, XFS_SBS_FDBLOCKS, XFS_SBS_FREXTENTS, XFS_SBS_UQUOTINO,
+       XFS_SBS_GQUOTINO, XFS_SBS_QFLAGS, XFS_SBS_FLAGS, XFS_SBS_SHARED_VN,
+       XFS_SBS_INOALIGNMT, XFS_SBS_UNIT, XFS_SBS_WIDTH, XFS_SBS_DIRBLKLOG,
+        XFS_SBS_DUMMY,
+       XFS_SBS_FIELDCOUNT
+} xfs_sb_field_t;
+
+/*
+ * Mask values, defined based on the xfs_sb_field_t values.
+ * Only define the ones we're using.
+ */
+#define        XFS_SB_MVAL(x)          (1LL << XFS_SBS_ ## x)
+#define        XFS_SB_UUID             XFS_SB_MVAL(UUID)
+#define        XFS_SB_FNAME            XFS_SB_MVAL(FNAME)
+#define        XFS_SB_ROOTINO          XFS_SB_MVAL(ROOTINO)
+#define        XFS_SB_RBMINO           XFS_SB_MVAL(RBMINO)
+#define        XFS_SB_RSUMINO          XFS_SB_MVAL(RSUMINO)
+#define        XFS_SB_VERSIONNUM       XFS_SB_MVAL(VERSIONNUM)
+#define XFS_SB_UQUOTINO                XFS_SB_MVAL(UQUOTINO)
+#define XFS_SB_GQUOTINO                XFS_SB_MVAL(GQUOTINO)
+#define XFS_SB_QFLAGS          XFS_SB_MVAL(QFLAGS)
+#define XFS_SB_SHARED_VN       XFS_SB_MVAL(SHARED_VN)
+#define XFS_SB_UNIT            XFS_SB_MVAL(UNIT)
+#define XFS_SB_WIDTH           XFS_SB_MVAL(WIDTH)
+#define        XFS_SB_NUM_BITS         ((int)XFS_SBS_FIELDCOUNT)
+#define        XFS_SB_ALL_BITS         ((1LL << XFS_SB_NUM_BITS) - 1)
+#define        XFS_SB_MOD_BITS         \
+       (XFS_SB_UUID | XFS_SB_ROOTINO | XFS_SB_RBMINO | XFS_SB_RSUMINO | \
+        XFS_SB_VERSIONNUM | XFS_SB_UQUOTINO | XFS_SB_GQUOTINO | \
+        XFS_SB_QFLAGS | XFS_SB_SHARED_VN | XFS_SB_UNIT | XFS_SB_WIDTH)
+
+/*
+ * Misc. Flags - warning - these will be cleared by xfs_repair unless
+ * a feature bit is set when the flag is used.
+ */
+#define XFS_SBF_NOFLAGS                0x00    /* no flags set */
+#define XFS_SBF_READONLY       0x01    /* only read-only mounts allowed */
+
+/*
+ * define max. shared version we can interoperate with
+ */
+#define XFS_SB_MAX_SHARED_VN   0
+
+#if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_SB_VERSION_NUM)
+int xfs_sb_version_num(xfs_sb_t *sbp);
+#define        XFS_SB_VERSION_NUM(sbp) xfs_sb_version_num(sbp)
+#else
+#define        XFS_SB_VERSION_NUM(sbp) ((sbp)->sb_versionnum & XFS_SB_VERSION_NUMBITS)
+#endif
+
+#if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_SB_GOOD_VERSION)
+int xfs_sb_good_version(xfs_sb_t *sbp);
+#define        XFS_SB_GOOD_VERSION(sbp)        xfs_sb_good_version(sbp)
+#else
+#define        XFS_SB_GOOD_VERSION_INT(sbp)    \
+       ((((sbp)->sb_versionnum >= XFS_SB_VERSION_1) && \
+         ((sbp)->sb_versionnum <= XFS_SB_VERSION_3)) || \
+        ((XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \
+         !((sbp)->sb_versionnum & ~XFS_SB_VERSION_OKREALBITS)
+#ifdef __KERNEL__
+#define        XFS_SB_GOOD_VERSION(sbp)        \
+       (XFS_SB_GOOD_VERSION_INT(sbp) && \
+         (sbp)->sb_shared_vn <= XFS_SB_MAX_SHARED_VN) ))
+#else
+/*
+ * extra 2 paren's here (( to unconfuse paren-matching editors
+ * like vi because XFS_SB_GOOD_VERSION_INT is a partial expression
+ * and the two XFS_SB_GOOD_VERSION's each 2 more close paren's to
+ * complete the expression.
+ */
+#define XFS_SB_GOOD_VERSION(sbp)       \
+       (XFS_SB_GOOD_VERSION_INT(sbp) && \
+         (!((sbp)->sb_versionnum & XFS_SB_VERSION_SHAREDBIT) || \
+          (sbp)->sb_shared_vn <= XFS_SB_MAX_SHARED_VN)) ))
+#endif /* __KERNEL__ */
+#endif
+
+#define        XFS_SB_GOOD_SASH_VERSION(sbp)   \
+       ((((sbp)->sb_versionnum >= XFS_SB_VERSION_1) && \
+         ((sbp)->sb_versionnum <= XFS_SB_VERSION_3)) || \
+        ((XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \
+         !((sbp)->sb_versionnum & ~XFS_SB_VERSION_OKSASHBITS)))
+
+#if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_SB_VERSION_TONEW)
+unsigned xfs_sb_version_tonew(unsigned v);
+#define        XFS_SB_VERSION_TONEW(v) xfs_sb_version_tonew(v)
+#else
+#define        XFS_SB_VERSION_TONEW(v) \
+       ((((v) == XFS_SB_VERSION_1) ? \
+               0 : \
+               (((v) == XFS_SB_VERSION_2) ? \
+                       XFS_SB_VERSION_ATTRBIT : \
+                       (XFS_SB_VERSION_ATTRBIT | XFS_SB_VERSION_NLINKBIT))) | \
+        XFS_SB_VERSION_4)
+#endif
+
+#if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_SB_VERSION_TOOLD)
+unsigned xfs_sb_version_toold(unsigned v);
+#define        XFS_SB_VERSION_TOOLD(v) xfs_sb_version_toold(v)
+#else
+#define        XFS_SB_VERSION_TOOLD(v) \
+       (((v) & (XFS_SB_VERSION_QUOTABIT | XFS_SB_VERSION_ALIGNBIT)) ? \
+               0 : \
+               (((v) & XFS_SB_VERSION_NLINKBIT) ? \
+                       XFS_SB_VERSION_3 : \
+                       (((v) & XFS_SB_VERSION_ATTRBIT) ?  \
+                               XFS_SB_VERSION_2 : \
+                               XFS_SB_VERSION_1)))
+#endif
+
+#if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_SB_VERSION_HASATTR)
+int xfs_sb_version_hasattr(xfs_sb_t *sbp);
+#define        XFS_SB_VERSION_HASATTR(sbp)     xfs_sb_version_hasattr(sbp)
+#else
+#define        XFS_SB_VERSION_HASATTR(sbp)     \
+       (((sbp)->sb_versionnum == XFS_SB_VERSION_2) || \
+        ((sbp)->sb_versionnum == XFS_SB_VERSION_3) || \
+        ((XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \
+         ((sbp)->sb_versionnum & XFS_SB_VERSION_ATTRBIT)))
+#endif
+
+#if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_SB_VERSION_ADDATTR)
+void xfs_sb_version_addattr(xfs_sb_t *sbp);
+#define        XFS_SB_VERSION_ADDATTR(sbp)     xfs_sb_version_addattr(sbp)
+#else
+#define        XFS_SB_VERSION_ADDATTR(sbp)     \
+       ((sbp)->sb_versionnum = \
+        (((sbp)->sb_versionnum == XFS_SB_VERSION_1) ? \
+               XFS_SB_VERSION_2 : \
+               ((XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) ? \
+                       ((sbp)->sb_versionnum | XFS_SB_VERSION_ATTRBIT) : \
+                       (XFS_SB_VERSION_4 | XFS_SB_VERSION_ATTRBIT))))
+#endif
+
+#if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_SB_VERSION_HASNLINK)
+int xfs_sb_version_hasnlink(xfs_sb_t *sbp);
+#define        XFS_SB_VERSION_HASNLINK(sbp)    xfs_sb_version_hasnlink(sbp)
+#else
+#define        XFS_SB_VERSION_HASNLINK(sbp)    \
+       (((sbp)->sb_versionnum == XFS_SB_VERSION_3) || \
+        ((XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \
+         ((sbp)->sb_versionnum & XFS_SB_VERSION_NLINKBIT)))
+#endif
+
+#if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_SB_VERSION_ADDNLINK)
+void xfs_sb_version_addnlink(xfs_sb_t *sbp);
+#define        XFS_SB_VERSION_ADDNLINK(sbp)    xfs_sb_version_addnlink(sbp)
+#else
+#define        XFS_SB_VERSION_ADDNLINK(sbp)    \
+       ((sbp)->sb_versionnum = \
+        ((sbp)->sb_versionnum <= XFS_SB_VERSION_2 ? \
+               XFS_SB_VERSION_3 : \
+               ((sbp)->sb_versionnum | XFS_SB_VERSION_NLINKBIT)))
+#endif
+
+#if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_SB_VERSION_HASQUOTA)
+int xfs_sb_version_hasquota(xfs_sb_t *sbp);
+#define        XFS_SB_VERSION_HASQUOTA(sbp)    xfs_sb_version_hasquota(sbp)
+#else
+#define        XFS_SB_VERSION_HASQUOTA(sbp)    \
+       ((XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \
+        ((sbp)->sb_versionnum & XFS_SB_VERSION_QUOTABIT))
+#endif
+
+#if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_SB_VERSION_ADDQUOTA)
+void xfs_sb_version_addquota(xfs_sb_t *sbp);
+#define        XFS_SB_VERSION_ADDQUOTA(sbp)    xfs_sb_version_addquota(sbp)
+#else
+#define        XFS_SB_VERSION_ADDQUOTA(sbp)    \
+       ((sbp)->sb_versionnum = \
+        (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 ? \
+               ((sbp)->sb_versionnum | XFS_SB_VERSION_QUOTABIT) : \
+               (XFS_SB_VERSION_TONEW((sbp)->sb_versionnum) | \
+                XFS_SB_VERSION_QUOTABIT)))
+#endif
+
+#if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_SB_VERSION_HASALIGN)
+int xfs_sb_version_hasalign(xfs_sb_t *sbp);
+#define        XFS_SB_VERSION_HASALIGN(sbp)    xfs_sb_version_hasalign(sbp)
+#else
+#define        XFS_SB_VERSION_HASALIGN(sbp)    \
+       ((XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \
+        ((sbp)->sb_versionnum & XFS_SB_VERSION_ALIGNBIT))
+#endif
+
+#if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_SB_VERSION_SUBALIGN)
+void xfs_sb_version_subalign(xfs_sb_t *sbp);
+#define        XFS_SB_VERSION_SUBALIGN(sbp)    xfs_sb_version_subalign(sbp)
+#else
+#define        XFS_SB_VERSION_SUBALIGN(sbp)    \
+       ((sbp)->sb_versionnum = \
+        XFS_SB_VERSION_TOOLD((sbp)->sb_versionnum & ~XFS_SB_VERSION_ALIGNBIT))
+#endif
+
+#if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_SB_VERSION_HASDALIGN)
+int xfs_sb_version_hasdalign(xfs_sb_t *sbp);
+#define XFS_SB_VERSION_HASDALIGN(sbp)  xfs_sb_version_hasdalign(sbp)
+#else
+#define XFS_SB_VERSION_HASDALIGN(sbp)  \
+       ((XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \
+        ((sbp)->sb_versionnum & XFS_SB_VERSION_DALIGNBIT))
+#endif
+
+#if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_SB_VERSION_ADDDALIGN)
+int xfs_sb_version_adddalign(xfs_sb_t *sbp);
+#define XFS_SB_VERSION_ADDDALIGN(sbp)  xfs_sb_version_adddalign(sbp)
+#else
+#define XFS_SB_VERSION_ADDDALIGN(sbp)  \
+        ((sbp)->sb_versionnum = \
+                ((sbp)->sb_versionnum | XFS_SB_VERSION_DALIGNBIT))
+#endif
+
+#if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_SB_VERSION_HASSHARED)
+int xfs_sb_version_hasshared(xfs_sb_t *sbp);
+#define XFS_SB_VERSION_HASSHARED(sbp)  xfs_sb_version_hasshared(sbp)
+#else
+#define XFS_SB_VERSION_HASSHARED(sbp)  \
+        ((XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \
+        ((sbp)->sb_versionnum & XFS_SB_VERSION_SHAREDBIT))
+#endif
+
+#if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_SB_VERSION_ADDSHARED)
+int xfs_sb_version_addshared(xfs_sb_t *sbp);
+#define XFS_SB_VERSION_ADDSHARED(sbp)  xfs_sb_version_addshared(sbp)
+#else
+#define XFS_SB_VERSION_ADDSHARED(sbp)  \
+        ((sbp)->sb_versionnum = \
+                ((sbp)->sb_versionnum | XFS_SB_VERSION_SHAREDBIT))
+#endif
+
+#if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_SB_VERSION_SUBSHARED)
+int xfs_sb_version_subshared(xfs_sb_t *sbp);
+#define XFS_SB_VERSION_SUBSHARED(sbp)  xfs_sb_version_subshared(sbp)
+#else
+#define XFS_SB_VERSION_SUBSHARED(sbp)  \
+        ((sbp)->sb_versionnum = \
+                ((sbp)->sb_versionnum & ~XFS_SB_VERSION_SHAREDBIT))
+#endif
+
+#if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_SB_VERSION_HASDIRV2)
+int xfs_sb_version_hasdirv2(xfs_sb_t *sbp);
+#define XFS_SB_VERSION_HASDIRV2(sbp)   xfs_sb_version_hasdirv2(sbp)
+#else
+#define XFS_SB_VERSION_HASDIRV2(sbp)   \
+        ((XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \
+        ((sbp)->sb_versionnum & XFS_SB_VERSION_DIRV2BIT))
+#endif
+
+#if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_SB_VERSION_HASEXTFLGBIT)
+int xfs_sb_version_hasextflgbit(xfs_sb_t *sbp);
+#define XFS_SB_VERSION_HASEXTFLGBIT(sbp)       xfs_sb_version_hasextflgbit(sbp)
+#else
+#define XFS_SB_VERSION_HASEXTFLGBIT(sbp)       \
+        ((XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \
+        ((sbp)->sb_versionnum & XFS_SB_VERSION_EXTFLGBIT))
+#endif
+
+#if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_SB_VERSION_ADDEXTFLGBIT)
+int xfs_sb_version_addextflgbit(xfs_sb_t *sbp);
+#define XFS_SB_VERSION_ADDEXTFLGBIT(sbp)       xfs_sb_version_addextflgbit(sbp)
+#else
+#define XFS_SB_VERSION_ADDEXTFLGBIT(sbp)       \
+        ((sbp)->sb_versionnum = \
+                ((sbp)->sb_versionnum | XFS_SB_VERSION_EXTFLGBIT))
+#endif
+
+#if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_SB_VERSION_SUBEXTFLGBIT)
+int xfs_sb_version_subextflgbit(xfs_sb_t *sbp);
+#define XFS_SB_VERSION_SUBEXTFLGBIT(sbp)       xfs_sb_version_subextflgbit(sbp)
+#else
+#define XFS_SB_VERSION_SUBEXTFLGBIT(sbp)       \
+        ((sbp)->sb_versionnum = \
+                ((sbp)->sb_versionnum & ~XFS_SB_VERSION_EXTFLGBIT))
+#endif
+
+/*
+ * end of superblock version macros
+ */
+
+#define        XFS_SB_DADDR    ((xfs_daddr_t)0)                /* daddr in file system/ag */
+#if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_SB_BLOCK)
+xfs_agblock_t xfs_sb_block(struct xfs_mount *mp);
+#define        XFS_SB_BLOCK(mp)        xfs_sb_block(mp)
+#else
+#define        XFS_SB_BLOCK(mp)        XFS_HDR_BLOCK(mp, XFS_SB_DADDR)
+#endif
+
+#if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_HDR_BLOCK)
+xfs_agblock_t xfs_hdr_block(struct xfs_mount *mp, xfs_daddr_t d);
+#define        XFS_HDR_BLOCK(mp,d)     xfs_hdr_block(mp,d)
+#else
+#define        XFS_HDR_BLOCK(mp,d)     ((xfs_agblock_t)(XFS_BB_TO_FSBT(mp,d)))
+#endif
+#if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_DADDR_TO_FSB)
+xfs_fsblock_t xfs_daddr_to_fsb(struct xfs_mount *mp, xfs_daddr_t d);
+#define        XFS_DADDR_TO_FSB(mp,d)          xfs_daddr_to_fsb(mp,d)
+#else
+#define        XFS_DADDR_TO_FSB(mp,d) \
+       XFS_AGB_TO_FSB(mp, XFS_DADDR_TO_AGNO(mp,d), XFS_DADDR_TO_AGBNO(mp,d))
+#endif
+#if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_FSB_TO_DADDR)
+xfs_daddr_t xfs_fsb_to_daddr(struct xfs_mount *mp, xfs_fsblock_t fsbno);
+#define        XFS_FSB_TO_DADDR(mp,fsbno)      xfs_fsb_to_daddr(mp,fsbno)
+#else
+#define        XFS_FSB_TO_DADDR(mp,fsbno) \
+       XFS_AGB_TO_DADDR(mp, XFS_FSB_TO_AGNO(mp,fsbno), \
+                        XFS_FSB_TO_AGBNO(mp,fsbno))
+#endif
+
+/*
+ * File system block to basic block conversions.
+ */
+#define        XFS_FSB_TO_BB(mp,fsbno) ((fsbno) << (mp)->m_blkbb_log)
+#define        XFS_BB_TO_FSB(mp,bb)    \
+       (((bb) + (XFS_FSB_TO_BB(mp,1) - 1)) >> (mp)->m_blkbb_log)
+#define        XFS_BB_TO_FSBT(mp,bb)   ((bb) >> (mp)->m_blkbb_log)
+#define        XFS_BB_FSB_OFFSET(mp,bb) ((bb) & ((mp)->m_bsize - 1))
+
+/*
+ * File system block to byte conversions.
+ */
+#define        XFS_FSB_TO_B(mp,fsbno)  ((xfs_fsize_t)(fsbno) << \
+                                (mp)->m_sb.sb_blocklog)
+#define        XFS_B_TO_FSB(mp,b)      \
+       ((((uint64_t)(b)) + (mp)->m_blockmask) >> (mp)->m_sb.sb_blocklog)
+#define        XFS_B_TO_FSBT(mp,b)     (((uint64_t)(b)) >> (mp)->m_sb.sb_blocklog)
+#define        XFS_B_FSB_OFFSET(mp,b)  ((b) & (mp)->m_blockmask)
+
+#if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_BUF_TO_SBP)
+xfs_sb_t *xfs_buf_to_sbp(struct xfs_buf *bp);
+#define        XFS_BUF_TO_SBP(bp)      xfs_buf_to_sbp(bp)
+#else
+#define        XFS_BUF_TO_SBP(bp)      ((xfs_sb_t *)XFS_BUF_PTR(bp))
+#endif
+
+#endif /* __XFS_SB_H__ */
diff --git a/libparted/fs/xfs/xfs_types.h b/libparted/fs/xfs/xfs_types.h
new file mode 100644 (file)
index 0000000..89a0d61
--- /dev/null
@@ -0,0 +1,302 @@
+/*
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * 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/
+ */
+#ifndef __XFS_TYPES_H__
+#define        __XFS_TYPES_H__
+
+/*
+ * Some types are conditional based on the selected configuration.
+ * Set XFS_BIG_FILES=1 or 0 and XFS_BIG_FILESYSTEMS=1 or 0 depending
+ * on the desired configuration.
+ * XFS_BIG_FILES needs pgno_t to be 64 bits (64-bit kernels).
+ * XFS_BIG_FILESYSTEMS needs daddr_t to be 64 bits (N32 and 64-bit kernels).
+ *
+ * Expect these to be set from klocaldefs, or from the machine-type
+ * defs files for the normal case.
+ */
+
+#define        XFS_BIG_FILES           1
+#define        XFS_BIG_FILESYSTEMS     1
+
+typedef uint32_t       xfs_agblock_t;  /* blockno in alloc. group */
+typedef        uint32_t        xfs_extlen_t;   /* extent length in blocks */
+typedef        uint32_t        xfs_agnumber_t; /* allocation group number */
+typedef int32_t        xfs_extnum_t;   /* # of extents in a file */
+typedef int16_t        xfs_aextnum_t;  /* # extents in an attribute fork */
+typedef        int64_t xfs_fsize_t;    /* bytes in a file */
+typedef uint64_t       xfs_ufsize_t;   /* unsigned bytes in a file */
+
+typedef        int32_t xfs_suminfo_t;  /* type of bitmap summary info */
+typedef        int32_t xfs_rtword_t;   /* word type for bitmap manipulations */
+
+typedef        int64_t xfs_lsn_t;      /* log sequence number */
+typedef        int32_t xfs_tid_t;      /* transaction identifier */
+
+typedef        uint32_t        xfs_dablk_t;    /* dir/attr block number (in file) */
+typedef        uint32_t        xfs_dahash_t;   /* dir/attr hash value */
+
+typedef uint16_t       xfs_prid_t;     /* prid_t truncated to 16bits in XFS */
+
+/*
+ * These types are 64 bits on disk but are either 32 or 64 bits in memory.
+ * Disk based types:
+ */
+typedef uint64_t       xfs_dfsbno_t;   /* blockno in filesystem (agno|agbno) */
+typedef uint64_t       xfs_drfsbno_t;  /* blockno in filesystem (raw) */
+typedef        uint64_t        xfs_drtbno_t;   /* extent (block) in realtime area */
+typedef        uint64_t        xfs_dfiloff_t;  /* block number in a file */
+typedef        uint64_t        xfs_dfilblks_t; /* number of blocks in a file */
+
+/*
+ * Memory based types are conditional.
+ */
+#if XFS_BIG_FILESYSTEMS
+typedef        uint64_t        xfs_fsblock_t;  /* blockno in filesystem (agno|agbno) */
+typedef uint64_t       xfs_rfsblock_t; /* blockno in filesystem (raw) */
+typedef uint64_t       xfs_rtblock_t;  /* extent (block) in realtime area */
+typedef        int64_t xfs_srtblock_t; /* signed version of xfs_rtblock_t */
+#else
+typedef        uint32_t        xfs_fsblock_t;  /* blockno in filesystem (agno|agbno) */
+typedef uint32_t       xfs_rfsblock_t; /* blockno in filesystem (raw) */
+typedef uint32_t       xfs_rtblock_t;  /* extent (block) in realtime area */
+typedef        int32_t xfs_srtblock_t; /* signed version of xfs_rtblock_t */
+#endif
+#if XFS_BIG_FILES
+typedef        uint64_t        xfs_fileoff_t;  /* block number in a file */
+typedef        int64_t xfs_sfiloff_t;  /* signed block number in a file */
+typedef        uint64_t        xfs_filblks_t;  /* number of blocks in a file */
+#else
+typedef        uint32_t        xfs_fileoff_t;  /* block number in a file */
+typedef        int32_t xfs_sfiloff_t;  /* signed block number in a file */
+typedef        uint32_t        xfs_filblks_t;  /* number of blocks in a file */
+#endif
+
+typedef uint8_t       xfs_arch_t;     /* architecutre of an xfs fs */
+
+/*
+ * Null values for the types.
+ */
+#define        NULLDFSBNO      ((xfs_dfsbno_t)-1)
+#define        NULLDRFSBNO     ((xfs_drfsbno_t)-1)
+#define        NULLDRTBNO      ((xfs_drtbno_t)-1)
+#define        NULLDFILOFF     ((xfs_dfiloff_t)-1)
+
+#define        NULLFSBLOCK     ((xfs_fsblock_t)-1)
+#define        NULLRFSBLOCK    ((xfs_rfsblock_t)-1)
+#define        NULLRTBLOCK     ((xfs_rtblock_t)-1)
+#define        NULLFILEOFF     ((xfs_fileoff_t)-1)
+
+#define        NULLAGBLOCK     ((xfs_agblock_t)-1)
+#define        NULLAGNUMBER    ((xfs_agnumber_t)-1)
+#define        NULLEXTNUM      ((xfs_extnum_t)-1)
+
+#define NULLCOMMITLSN  ((xfs_lsn_t)-1)
+
+/*
+ * Max values for extlen, extnum, aextnum.
+ */
+#define        MAXEXTLEN       ((xfs_extlen_t)0x001fffff)      /* 21 bits */
+#define        MAXEXTNUM       ((xfs_extnum_t)0x7fffffff)      /* signed int */
+#define        MAXAEXTNUM      ((xfs_aextnum_t)0x7fff)         /* signed short */
+
+/*
+ * MAXNAMELEN is the length (including the terminating null) of
+ * the longest permissible file (component) name.
+ */
+#define MAXNAMELEN     256
+
+typedef enum {
+       XFS_LOOKUP_EQi, XFS_LOOKUP_LEi, XFS_LOOKUP_GEi
+} xfs_lookup_t;
+
+typedef enum {
+       XFS_BTNUM_BNOi, XFS_BTNUM_CNTi, XFS_BTNUM_BMAPi, XFS_BTNUM_INOi,
+       XFS_BTNUM_MAX
+} xfs_btnum_t;
+
+
+#ifdef CONFIG_PROC_FS
+/*
+ * XFS global statistics
+ */
+struct xfsstats {
+# define XFSSTAT_END_EXTENT_ALLOC      4
+       uint32_t                xs_allocx;
+       uint32_t                xs_allocb;
+       uint32_t                xs_freex;
+       uint32_t                xs_freeb;
+# define XFSSTAT_END_ALLOC_BTREE       (XFSSTAT_END_EXTENT_ALLOC+4)
+       uint32_t                xs_abt_lookup;
+       uint32_t                xs_abt_compare;
+       uint32_t                xs_abt_insrec;
+       uint32_t                xs_abt_delrec;
+# define XFSSTAT_END_BLOCK_MAPPING     (XFSSTAT_END_ALLOC_BTREE+7)
+       uint32_t                xs_blk_mapr;
+       uint32_t                xs_blk_mapw;
+       uint32_t                xs_blk_unmap;
+       uint32_t                xs_add_exlist;
+       uint32_t                xs_del_exlist;
+       uint32_t                xs_look_exlist;
+       uint32_t                xs_cmp_exlist;
+# define XFSSTAT_END_BLOCK_MAP_BTREE   (XFSSTAT_END_BLOCK_MAPPING+4)
+       uint32_t                xs_bmbt_lookup;
+       uint32_t                xs_bmbt_compare;
+       uint32_t                xs_bmbt_insrec;
+       uint32_t                xs_bmbt_delrec;
+# define XFSSTAT_END_DIRECTORY_OPS     (XFSSTAT_END_BLOCK_MAP_BTREE+4)
+       uint32_t                xs_dir_lookup;
+       uint32_t                xs_dir_create;
+       uint32_t                xs_dir_remove;
+       uint32_t                xs_dir_getdents;
+# define XFSSTAT_END_TRANSACTIONS      (XFSSTAT_END_DIRECTORY_OPS+3)
+       uint32_t                xs_trans_sync;
+       uint32_t                xs_trans_async;
+       uint32_t                xs_trans_empty;
+# define XFSSTAT_END_INODE_OPS         (XFSSTAT_END_TRANSACTIONS+7)
+       uint32_t                xs_ig_attempts;
+       uint32_t                xs_ig_found;
+       uint32_t                xs_ig_frecycle;
+       uint32_t                xs_ig_missed;
+       uint32_t                xs_ig_dup;
+       uint32_t                xs_ig_reclaims;
+       uint32_t                xs_ig_attrchg;
+# define XFSSTAT_END_LOG_OPS           (XFSSTAT_END_INODE_OPS+5)
+       uint32_t                xs_log_writes;
+       uint32_t                xs_log_blocks;
+       uint32_t                xs_log_noiclogs;
+       uint32_t                xs_log_force;
+       uint32_t                xs_log_force_sleep;
+# define XFSSTAT_END_TAIL_PUSHING      (XFSSTAT_END_LOG_OPS+10)
+       uint32_t                xs_try_logspace;
+       uint32_t                xs_sleep_logspace;
+       uint32_t                xs_push_ail;
+       uint32_t                xs_push_ail_success;
+       uint32_t                xs_push_ail_pushbuf;
+       uint32_t                xs_push_ail_pinned;
+       uint32_t                xs_push_ail_locked;
+       uint32_t                xs_push_ail_flushing;
+       uint32_t                xs_push_ail_restarts;
+       uint32_t                xs_push_ail_flush;
+# define XFSSTAT_END_WRITE_CONVERT     (XFSSTAT_END_TAIL_PUSHING+2)
+       uint32_t                xs_xstrat_quick;
+       uint32_t                xs_xstrat_split;
+# define XFSSTAT_END_READ_WRITE_OPS    (XFSSTAT_END_WRITE_CONVERT+2)
+       uint32_t                xs_write_calls;
+       uint32_t                xs_read_calls;
+# define XFSSTAT_END_ATTRIBUTE_OPS     (XFSSTAT_END_READ_WRITE_OPS+4)
+       uint32_t                xs_attr_get;
+       uint32_t                xs_attr_set;
+       uint32_t                xs_attr_remove;
+       uint32_t                xs_attr_list;
+# define XFSSTAT_END_QUOTA_OPS         (XFSSTAT_END_ATTRIBUTE_OPS+8)
+       uint32_t                xs_qm_dqreclaims;
+       uint32_t                xs_qm_dqreclaim_misses;
+       uint32_t                xs_qm_dquot_dups;
+       uint32_t                xs_qm_dqcachemisses;
+       uint32_t                xs_qm_dqcachehits;
+       uint32_t                xs_qm_dqwants;
+       uint32_t                xs_qm_dqshake_reclaims;
+       uint32_t                xs_qm_dqinact_reclaims;
+# define XFSSTAT_END_INODE_CLUSTER     (XFSSTAT_END_QUOTA_OPS+3)
+       uint32_t                xs_iflush_count;
+       uint32_t                xs_icluster_flushcnt;
+       uint32_t                xs_icluster_flushinode;
+# define XFSSTAT_END_VNODE_OPS         (XFSSTAT_END_INODE_CLUSTER+8)
+       uint32_t                vn_active;      /* # vnodes not on free lists */
+       uint32_t                vn_alloc;       /* # times vn_alloc called */
+       uint32_t                vn_get;         /* # times vn_get called */
+       uint32_t                vn_hold;        /* # times vn_hold called */
+       uint32_t                vn_rele;        /* # times vn_rele called */
+       uint32_t                vn_reclaim;     /* # times vn_reclaim called */
+       uint32_t                vn_remove;      /* # times vn_remove called */
+       uint32_t                vn_free;        /* # times vn_free called */
+       struct xfsstats_xpc {
+               uint64_t        xs_xstrat_bytes;
+               uint64_t        xs_write_bytes;
+               uint64_t        xs_read_bytes;
+       } xpc;
+} xfsstats;
+
+# define XFS_STATS_INC(count)          ( xfsstats.##count ++ )
+# define XFS_STATS_DEC(count)          ( xfsstats.##count -- )
+# define XFS_STATS_ADD(count, inc)     ( xfsstats.##count += (inc) )
+# define XFS_STATS64_INC(count)                ( xfsstats.xpc.##count ++ )
+# define XFS_STATS64_ADD(count, inc)   ( xfsstats.xpc.##count += (inc) )
+#else  /* !CONFIG_PROC_FS */
+# define XFS_STATS_INC(count)
+# define XFS_STATS_DEC(count)
+# define XFS_STATS_ADD(count, inc)
+# define XFS_STATS64_INC(count)
+# define XFS_STATS64_ADD(count, inc)
+#endif /* !CONFIG_PROC_FS */
+
+
+#ifdef __KERNEL__
+
+/* juggle IRIX device numbers - still used in ondisk structures */
+
+#define IRIX_DEV_BITSMAJOR      14
+#define IRIX_DEV_BITSMINOR      18
+#define IRIX_DEV_MAXMAJ         0x1ff
+#define IRIX_DEV_MAXMIN         0x3ffff
+#define IRIX_DEV_MAJOR(dev)     ((int)(((unsigned)(dev)>>IRIX_DEV_BITSMINOR) \
+                                    & IRIX_DEV_MAXMAJ))
+#define IRIX_DEV_MINOR(dev)     ((int)((dev)&IRIX_DEV_MAXMIN))
+#define IRIX_MKDEV(major,minor) ((xfs_dev_t)(((major)<<IRIX_DEV_BITSMINOR) \
+                                    | (minor&IRIX_DEV_MAXMIN)))
+
+#define IRIX_DEV_TO_KDEVT(dev)  MKDEV(IRIX_DEV_MAJOR(dev),IRIX_DEV_MINOR(dev))
+#define IRIX_DEV_TO_DEVT(dev)   ((IRIX_DEV_MAJOR(dev)<<8)|IRIX_DEV_MINOR(dev))
+
+/* __psint_t is the same size as a pointer */
+#if (BITS_PER_LONG == 32)
+typedef int32_t __psint_t;
+typedef uint32_t __psunsigned_t;
+#elif (BITS_PER_LONG == 64)
+typedef int64_t __psint_t;
+typedef uint64_t __psunsigned_t;
+#else
+#error BITS_PER_LONG must be 32 or 64
+#endif
+
+
+/*
+ * struct for passing owner/requestor id
+ */
+typedef struct flid {
+#ifdef CELL_CAPABLE
+        pid_t   fl_pid;
+        sysid_t fl_sysid;
+#endif
+} flid_t;
+
+#endif /* __KERNEL__ */
+
+#endif /* !__XFS_TYPES_H */
diff --git a/libparted/labels/Makefile.am b/libparted/labels/Makefile.am
new file mode 100644 (file)
index 0000000..81b6bf3
--- /dev/null
@@ -0,0 +1,56 @@
+# This file is part of GNU Parted
+# Copyright (C) 1999-2001, 2007-2011 Free Software Foundation, Inc.
+#
+# This file may be modified and/or distributed without restriction.
+
+if COMPILE_FOR_S390
+S390_SRCS = dasd.c fdasd.c vtoc.c
+else
+S390_SRCS =
+endif
+
+AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
+
+partedincludedir = \
+  -I$(top_srcdir)/lib -I$(top_srcdir)/include -I$(top_srcdir)/libparted
+noinst_LTLIBRARIES    =        liblabels.la
+
+liblabels_la_SOURCES = \
+  $(S390_SRCS) \
+  aix.c                \
+  bsd.c                \
+  dos.c                \
+  dvh.c                \
+  dvh.h                \
+  efi_crc32.c  \
+  gpt.c                \
+  loop.c       \
+  mac.c                \
+  misc.h       \
+  pc98.c       \
+  pt-common.h  \
+  pt-tools.c   \
+  pt-tools.h   \
+  rdb.c                \
+  sun.c
+
+liblabels_la_LIBADD = $(OS_LIBS) $(INTLLIBS)
+
+INCLUDES = $(partedincludedir) $(INTLINCS)
+
+BUILT_SOURCES = pt-limit.c
+MAINTAINERCLEANFILES = $(BUILT_SOURCES)
+liblabels_la_SOURCES += pt-limit.gperf
+EXTRA_DIST = $(BUILT_SOURCES)
+
+GPERF = gperf
+GPERF_OPTIONS = \
+  -C -N pt_limit_lookup -n -t -s 6 -k '*' --language=ANSI-C
+
+pt-limit.c: pt-limit.gperf
+       rm -f $@ $@-tmp
+       $(GPERF) $(GPERF_OPTIONS) $< \
+         | perl -ne '/__GNUC_STDC_INLINE__/ and print "static\n"; print' \
+         > $@-tmp
+       chmod a-w $@-tmp
+       mv $@-tmp $@
diff --git a/libparted/labels/Makefile.in b/libparted/labels/Makefile.in
new file mode 100644 (file)
index 0000000..be896f5
--- /dev/null
@@ -0,0 +1,1319 @@
+# Makefile.in generated by automake 1.11a from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in 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.
+
+@SET_MAKE@
+
+# This file is part of GNU Parted
+# Copyright (C) 1999-2001, 2007-2011 Free Software Foundation, Inc.
+#
+# This file may be modified and/or distributed without restriction.
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = libparted/labels
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+       $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argmatch.m4 \
+       $(top_srcdir)/m4/assert.m4 $(top_srcdir)/m4/btowc.m4 \
+       $(top_srcdir)/m4/calloc.m4 $(top_srcdir)/m4/canonicalize.m4 \
+       $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
+       $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/configmake.m4 \
+       $(top_srcdir)/m4/dirname.m4 \
+       $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+       $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/environ.m4 \
+       $(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
+       $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fclose.m4 \
+       $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/fcntl_h.m4 \
+       $(top_srcdir)/m4/fflush.m4 $(top_srcdir)/m4/fpending.m4 \
+       $(top_srcdir)/m4/fpurge.m4 $(top_srcdir)/m4/freading.m4 \
+       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/fsync.m4 \
+       $(top_srcdir)/m4/ftell.m4 $(top_srcdir)/m4/ftello.m4 \
+       $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
+       $(top_srcdir)/m4/langinfo_h.m4 $(top_srcdir)/m4/lcmessage.m4 \
+       $(top_srcdir)/m4/lib-ignore.m4 $(top_srcdir)/m4/lib-ld.m4 \
+       $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/localcharset.m4 \
+       $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \
+       $(top_srcdir)/m4/locale-tr.m4 $(top_srcdir)/m4/locale-zh.m4 \
+       $(top_srcdir)/m4/locale_h.m4 $(top_srcdir)/m4/localename.m4 \
+       $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/long-options.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
+       $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+       $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
+       $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+       $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbtowc.m4 \
+       $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+       $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/multiarch.m4 \
+       $(top_srcdir)/m4/nl_langinfo.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/nocrash.m4 $(top_srcdir)/m4/o-direct.m4 \
+       $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/priv-set.m4 \
+       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+       $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+       $(top_srcdir)/m4/read.m4 $(top_srcdir)/m4/readlink.m4 \
+       $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/regex.m4 \
+       $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+       $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/setlocale.m4 \
+       $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/ssize_t.m4 \
+       $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdarg.m4 \
+       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strdup.m4 \
+       $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/strerror_r.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+       $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtoll.m4 \
+       $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/symlink.m4 \
+       $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+       $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/thread.m4 \
+       $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/time_h.m4 \
+       $(top_srcdir)/m4/ungetc.m4 $(top_srcdir)/m4/unistd_h.m4 \
+       $(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkdir.m4 \
+       $(top_srcdir)/m4/usleep.m4 $(top_srcdir)/m4/version-etc.m4 \
+       $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \
+       $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
+       $(top_srcdir)/m4/wcrtomb.m4 $(top_srcdir)/m4/wctob.m4 \
+       $(top_srcdir)/m4/wctomb.m4 $(top_srcdir)/m4/wctype_h.m4 \
+       $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+       $(top_srcdir)/m4/xstrndup.m4 $(top_srcdir)/m4/xstrtol.m4 \
+       $(top_srcdir)/m4/yield.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+liblabels_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1)
+am__liblabels_la_SOURCES_DIST = dasd.c fdasd.c vtoc.c aix.c bsd.c \
+       dos.c dvh.c dvh.h efi_crc32.c gpt.c loop.c mac.c misc.h pc98.c \
+       pt-common.h pt-tools.c pt-tools.h rdb.c sun.c pt-limit.gperf
+@COMPILE_FOR_S390_TRUE@am__objects_1 = dasd.lo fdasd.lo vtoc.lo
+am_liblabels_la_OBJECTS = $(am__objects_1) aix.lo bsd.lo dos.lo dvh.lo \
+       efi_crc32.lo gpt.lo loop.lo mac.lo pc98.lo pt-tools.lo rdb.lo \
+       sun.lo
+liblabels_la_OBJECTS = $(am_liblabels_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/lib
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+       $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo "  CC      " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+SOURCES = $(liblabels_la_SOURCES)
+DIST_SOURCES = $(am__liblabels_la_SOURCES_DIST)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+pkglibexecdir = @pkglibexecdir@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+BUILDINFO = @BUILDINFO@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHECK_CFLAGS = @CHECK_CFLAGS@
+CHECK_LIBS = @CHECK_LIBS@
+CONFIG_INCLUDE = @CONFIG_INCLUDE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DYNAMIC_LOADING = @DYNAMIC_LOADING@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENABLE_DEVICE_MAPPER = @ENABLE_DEVICE_MAPPER@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FACCESSAT = @GNULIB_FACCESSAT@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCHMODAT = @GNULIB_FCHMODAT@
+GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FCNTL = @GNULIB_FCNTL@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FGETC = @GNULIB_FGETC@
+GNULIB_FGETS = @GNULIB_FGETS@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREAD = @GNULIB_FREAD@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSCANF = @GNULIB_FSCANF@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSTATAT = @GNULIB_FSTATAT@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FUTIMENS = @GNULIB_FUTIMENS@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETC = @GNULIB_GETC@
+GNULIB_GETCHAR = @GNULIB_GETCHAR@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETGROUPS = @GNULIB_GETGROUPS@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETS = @GNULIB_GETS@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
+GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_ISWBLANK = @GNULIB_ISWBLANK@
+GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@
+GNULIB_LCHMOD = @GNULIB_LCHMOD@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LINKAT = @GNULIB_LINKAT@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_LSTAT = @GNULIB_LSTAT@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MBTOWC = @GNULIB_MBTOWC@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDIRAT = @GNULIB_MKDIRAT@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKFIFO = @GNULIB_MKFIFO@
+GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@
+GNULIB_MKNOD = @GNULIB_MKNOD@
+GNULIB_MKNODAT = @GNULIB_MKNODAT@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@
+GNULIB_MKTIME = @GNULIB_MKTIME@
+GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@
+GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@
+GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_OPEN = @GNULIB_OPEN@
+GNULIB_OPENAT = @GNULIB_OPENAT@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE = @GNULIB_PIPE@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_PREAD = @GNULIB_PREAD@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READ = @GNULIB_READ@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_READLINKAT = @GNULIB_READLINKAT@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_REALPATH = @GNULIB_REALPATH@
+GNULIB_REMOVE = @GNULIB_REMOVE@
+GNULIB_RENAME = @GNULIB_RENAME@
+GNULIB_RENAMEAT = @GNULIB_RENAMEAT@
+GNULIB_RMDIR = @GNULIB_RMDIR@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SETLOCALE = @GNULIB_SETLOCALE@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STAT = @GNULIB_STAT@
+GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRERROR_R = @GNULIB_STRERROR_R@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRPTIME = @GNULIB_STRPTIME@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_SYMLINK = @GNULIB_SYMLINK@
+GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
+GNULIB_TIMEGM = @GNULIB_TIMEGM@
+GNULIB_TIME_R = @GNULIB_TIME_R@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
+GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
+GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNLINK = @GNULIB_UNLINK@
+GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_USLEEP = @GNULIB_USLEEP@
+GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VFSCANF = @GNULIB_VFSCANF@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSCANF = @GNULIB_VSCANF@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCPCPY = @GNULIB_WCPCPY@
+GNULIB_WCPNCPY = @GNULIB_WCPNCPY@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@
+GNULIB_WCSCAT = @GNULIB_WCSCAT@
+GNULIB_WCSCHR = @GNULIB_WCSCHR@
+GNULIB_WCSCMP = @GNULIB_WCSCMP@
+GNULIB_WCSCOLL = @GNULIB_WCSCOLL@
+GNULIB_WCSCPY = @GNULIB_WCSCPY@
+GNULIB_WCSCSPN = @GNULIB_WCSCSPN@
+GNULIB_WCSDUP = @GNULIB_WCSDUP@
+GNULIB_WCSLEN = @GNULIB_WCSLEN@
+GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@
+GNULIB_WCSNCAT = @GNULIB_WCSNCAT@
+GNULIB_WCSNCMP = @GNULIB_WCSNCMP@
+GNULIB_WCSNCPY = @GNULIB_WCSNCPY@
+GNULIB_WCSNLEN = @GNULIB_WCSNLEN@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSPBRK = @GNULIB_WCSPBRK@
+GNULIB_WCSRCHR = @GNULIB_WCSRCHR@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCSSPN = @GNULIB_WCSSPN@
+GNULIB_WCSSTR = @GNULIB_WCSSTR@
+GNULIB_WCSTOK = @GNULIB_WCSTOK@
+GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@
+GNULIB_WCSXFRM = @GNULIB_WCSXFRM@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCTOMB = @GNULIB_WCTOMB@
+GNULIB_WCTRANS = @GNULIB_WCTRANS@
+GNULIB_WCTYPE = @GNULIB_WCTYPE@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WMEMCHR = @GNULIB_WMEMCHR@
+GNULIB_WMEMCMP = @GNULIB_WMEMCMP@
+GNULIB_WMEMCPY = @GNULIB_WMEMCPY@
+GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@
+GNULIB_WMEMSET = @GNULIB_WMEMSET@
+GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
+HAVE_CHOWN = @HAVE_CHOWN@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@
+HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SETENV = @HAVE_DECL_SETENV@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@
+HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_DUPLOCALE = @HAVE_DUPLOCALE@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
+HAVE_FCHMODAT = @HAVE_FCHMODAT@
+HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
+HAVE_FCNTL = @HAVE_FCNTL@
+HAVE_FEATURES_H = @HAVE_FEATURES_H@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSTATAT = @HAVE_FSTATAT@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_FUTIMENS = @HAVE_FUTIMENS@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETGROUPS = @HAVE_GETGROUPS@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETLOGIN = @HAVE_GETLOGIN@
+HAVE_GETOPT_H = @HAVE_GETOPT_H@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
+HAVE_GRANTPT = @HAVE_GRANTPT@
+HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWBLANK = @HAVE_ISWBLANK@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
+HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
+HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
+HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
+HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
+HAVE_LCHMOD = @HAVE_LCHMOD@
+HAVE_LCHOWN = @HAVE_LCHOWN@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_LSTAT = @HAVE_LSTAT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSLEN = @HAVE_MBSLEN@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMCHR = @HAVE_MEMCHR@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDIRAT = @HAVE_MKDIRAT@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKFIFO = @HAVE_MKFIFO@
+HAVE_MKFIFOAT = @HAVE_MKFIFOAT@
+HAVE_MKNOD = @HAVE_MKNOD@
+HAVE_MKNODAT = @HAVE_MKNODAT@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
+HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
+HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
+HAVE_OPENAT = @HAVE_OPENAT@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PIPE = @HAVE_PIPE@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PWRITE = @HAVE_PWRITE@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_READLINKAT = @HAVE_READLINKAT@
+HAVE_REALPATH = @HAVE_REALPATH@
+HAVE_RENAMEAT = @HAVE_RENAMEAT@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRPTIME = @HAVE_STRPTIME@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYMLINK = @HAVE_SYMLINK@
+HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_TIMEGM = @HAVE_TIMEGM@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_USLEEP = @HAVE_USLEEP@
+HAVE_UTIMENSAT = @HAVE_UTIMENSAT@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCPCPY = @HAVE_WCPCPY@
+HAVE_WCPNCPY = @HAVE_WCPNCPY@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSCASECMP = @HAVE_WCSCASECMP@
+HAVE_WCSCAT = @HAVE_WCSCAT@
+HAVE_WCSCHR = @HAVE_WCSCHR@
+HAVE_WCSCMP = @HAVE_WCSCMP@
+HAVE_WCSCOLL = @HAVE_WCSCOLL@
+HAVE_WCSCPY = @HAVE_WCSCPY@
+HAVE_WCSCSPN = @HAVE_WCSCSPN@
+HAVE_WCSDUP = @HAVE_WCSDUP@
+HAVE_WCSLEN = @HAVE_WCSLEN@
+HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@
+HAVE_WCSNCAT = @HAVE_WCSNCAT@
+HAVE_WCSNCMP = @HAVE_WCSNCMP@
+HAVE_WCSNCPY = @HAVE_WCSNCPY@
+HAVE_WCSNLEN = @HAVE_WCSNLEN@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSPBRK = @HAVE_WCSPBRK@
+HAVE_WCSRCHR = @HAVE_WCSRCHR@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCSSPN = @HAVE_WCSSPN@
+HAVE_WCSSTR = @HAVE_WCSSTR@
+HAVE_WCSTOK = @HAVE_WCSTOK@
+HAVE_WCSWIDTH = @HAVE_WCSWIDTH@
+HAVE_WCSXFRM = @HAVE_WCSXFRM@
+HAVE_WCTRANS_T = @HAVE_WCTRANS_T@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WCTYPE_T = @HAVE_WCTYPE_T@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WMEMCHR = @HAVE_WMEMCHR@
+HAVE_WMEMCMP = @HAVE_WMEMCMP@
+HAVE_WMEMCPY = @HAVE_WMEMCPY@
+HAVE_WMEMMOVE = @HAVE_WMEMMOVE@
+HAVE_WMEMSET = @HAVE_WMEMSET@
+HAVE_XLOCALE_H = @HAVE_XLOCALE_H@
+HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
+IGNORE_UNUSED_LIBRARIES_CFLAGS = @IGNORE_UNUSED_LIBRARIES_CFLAGS@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@
+INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMULTITHREAD = @LIBMULTITHREAD@
+LIBOBJS = @LIBOBJS@
+LIBPTH = @LIBPTH@
+LIBPTH_PREFIX = @LIBPTH_PREFIX@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTHREAD = @LIBTHREAD@
+LIBTOOL = @LIBTOOL@
+LIB_BLKID = @LIB_BLKID@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBMULTITHREAD = @LTLIBMULTITHREAD@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBPTH = @LTLIBPTH@
+LTLIBTHREAD = @LTLIBTHREAD@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
+NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@
+NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
+NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@
+NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FCNTL_H = @NEXT_FCNTL_H@
+NEXT_GETOPT_H = @NEXT_GETOPT_H@
+NEXT_INTTYPES_H = @NEXT_INTTYPES_H@
+NEXT_LANGINFO_H = @NEXT_LANGINFO_H@
+NEXT_LOCALE_H = @NEXT_LOCALE_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@
+NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@
+NEXT_TIME_H = @NEXT_TIME_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PARTED_USABLE_TEST_DIR = @PARTED_USABLE_TEST_DIR@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CALLOC = @REPLACE_CALLOC@
+REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP = @REPLACE_DUP@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@
+REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FCNTL = @REPLACE_FCNTL@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FSTAT = @REPLACE_FSTAT@
+REPLACE_FSTATAT = @REPLACE_FSTATAT@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_FUTIMENS = @REPLACE_FUTIMENS@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETDELIM = @REPLACE_GETDELIM@
+REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@
+REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LINK = @REPLACE_LINK@
+REPLACE_LINKAT = @REPLACE_LINKAT@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_LSTAT = @REPLACE_LSTAT@
+REPLACE_MALLOC = @REPLACE_MALLOC@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MBTOWC = @REPLACE_MBTOWC@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKDIR = @REPLACE_MKDIR@
+REPLACE_MKFIFO = @REPLACE_MKFIFO@
+REPLACE_MKNOD = @REPLACE_MKNOD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_MKTIME = @REPLACE_MKTIME@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_OPEN = @REPLACE_OPEN@
+REPLACE_OPENAT = @REPLACE_OPENAT@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PREAD = @REPLACE_PREAD@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
+REPLACE_READ = @REPLACE_READ@
+REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_REALLOC = @REPLACE_REALLOC@
+REPLACE_REALPATH = @REPLACE_REALPATH@
+REPLACE_REMOVE = @REPLACE_REMOVE@
+REPLACE_RENAME = @REPLACE_RENAME@
+REPLACE_RENAMEAT = @REPLACE_RENAMEAT@
+REPLACE_RMDIR = @REPLACE_RMDIR@
+REPLACE_SETENV = @REPLACE_SETENV@
+REPLACE_SETLOCALE = @REPLACE_SETLOCALE@
+REPLACE_SLEEP = @REPLACE_SLEEP@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STAT = @REPLACE_STAT@
+REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRERROR_R = @REPLACE_STRERROR_R@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
+REPLACE_STRNDUP = @REPLACE_STRNDUP@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
+REPLACE_SYMLINK = @REPLACE_SYMLINK@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
+REPLACE_UNLINK = @REPLACE_UNLINK@
+REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
+REPLACE_UNSETENV = @REPLACE_UNSETENV@
+REPLACE_USLEEP = @REPLACE_USLEEP@
+REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCTOMB = @REPLACE_WCTOMB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SELINUX_LIBS = @SELINUX_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
+UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
+UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+YIELD_LIB = @YIELD_LIB@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+@COMPILE_FOR_S390_FALSE@S390_SRCS = 
+@COMPILE_FOR_S390_TRUE@S390_SRCS = dasd.c fdasd.c vtoc.c
+AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
+partedincludedir = \
+  -I$(top_srcdir)/lib -I$(top_srcdir)/include -I$(top_srcdir)/libparted
+
+noinst_LTLIBRARIES = liblabels.la
+liblabels_la_SOURCES = $(S390_SRCS) aix.c bsd.c dos.c dvh.c dvh.h \
+       efi_crc32.c gpt.c loop.c mac.c misc.h pc98.c pt-common.h \
+       pt-tools.c pt-tools.h rdb.c sun.c pt-limit.gperf
+liblabels_la_LIBADD = $(OS_LIBS) $(INTLLIBS)
+INCLUDES = $(partedincludedir) $(INTLINCS)
+BUILT_SOURCES = pt-limit.c
+MAINTAINERCLEANFILES = $(BUILT_SOURCES)
+EXTRA_DIST = $(BUILT_SOURCES)
+GPERF = gperf
+GPERF_OPTIONS = \
+  -C -N pt_limit_lookup -n -t -s 6 -k '*' --language=ANSI-C
+
+all: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libparted/labels/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu libparted/labels/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+       -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+       @list='$(noinst_LTLIBRARIES)'; \
+       locs=`for p in $$list; do echo $$p; done | \
+             sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+             sort -u`; \
+       test -z "$$locs" || { \
+         echo rm -f $${locs}; \
+         rm -f $${locs}; \
+       }
+liblabels.la: $(liblabels_la_OBJECTS) $(liblabels_la_DEPENDENCIES) $(EXTRA_liblabels_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK)  $(liblabels_la_OBJECTS) $(liblabels_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aix.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bsd.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dasd.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dos.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dvh.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/efi_crc32.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdasd.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpt.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loop.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mac.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pc98.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pt-tools.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rdb.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sun.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vtoc.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+       mostlyclean-am
+
+distclean: distclean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: all check install install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+       clean-libtool clean-noinstLTLIBRARIES cscopelist ctags \
+       distclean distclean-compile distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       tags uninstall uninstall-am
+
+
+pt-limit.c: pt-limit.gperf
+       rm -f $@ $@-tmp
+       $(GPERF) $(GPERF_OPTIONS) $< \
+         | perl -ne '/__GNUC_STDC_INLINE__/ and print "static\n"; print' \
+         > $@-tmp
+       chmod a-w $@-tmp
+       mv $@-tmp $@
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libparted/labels/aix.c b/libparted/labels/aix.c
new file mode 100644 (file)
index 0000000..18d0f54
--- /dev/null
@@ -0,0 +1,248 @@
+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 2000-2001, 2007-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+    Contributor:  Matt Wilson <msw@redhat.com>
+*/
+
+#include <config.h>
+
+#include <parted/parted.h>
+#include <parted/debug.h>
+#include <parted/endian.h>
+#include <stdbool.h>
+#include "pt-tools.h"
+
+#if ENABLE_NLS
+#  include <libintl.h>
+#  define _(String) dgettext (PACKAGE, String)
+#else
+#  define _(String) (String)
+#endif /* ENABLE_NLS */
+
+#define        AIX_LABEL_MAGIC         0xc9c2d4c1
+#define        MAX_TOTAL_PART          16
+
+static PedDiskType aix_disk_type;
+
+static inline int
+aix_label_magic_get (const char *label)
+{
+       return *(unsigned int *)label;
+}
+
+static inline void
+aix_label_magic_set (char *label, int magic_val)
+{
+       *(unsigned int *)label = magic_val;
+}
+
+static int
+aix_probe (const PedDevice *dev)
+{
+       PED_ASSERT (dev != NULL);
+
+       void *label;
+       if (!ptt_read_sector (dev, 0, &label))
+               return 0;
+       unsigned int magic = aix_label_magic_get (label);
+       free (label);
+       return magic == AIX_LABEL_MAGIC;
+}
+
+static PedDisk*
+aix_alloc (const PedDevice* dev)
+{
+       PedDisk*        disk;
+
+        disk = _ped_disk_alloc (dev, &aix_disk_type);
+       if (!disk)
+               return NULL;
+
+       return disk;
+}
+
+static PedDisk*
+aix_duplicate (const PedDisk* disk)
+{
+       PedDisk*        new_disk;
+
+       new_disk = ped_disk_new_fresh (disk->dev, &aix_disk_type);
+       if (!new_disk)
+               return NULL;
+
+       return new_disk;
+}
+
+static void
+aix_free (PedDisk *disk)
+{
+       _ped_disk_free (disk);
+}
+
+static int
+aix_read (PedDisk* disk)
+{
+       ped_disk_delete_all (disk);
+        ped_exception_throw (PED_EXCEPTION_NO_FEATURE,
+                             PED_EXCEPTION_CANCEL,
+                             _("Support for reading AIX disk labels is "
+                               "is not implemented yet."));
+        return 0;
+}
+
+#ifndef DISCOVER_ONLY
+static int
+aix_write (const PedDisk* disk)
+{
+        ped_exception_throw (PED_EXCEPTION_NO_FEATURE,
+                             PED_EXCEPTION_CANCEL,
+                             _("Support for writing AIX disk labels is "
+                               "is not implemented yet."));
+       return 0;
+}
+#endif /* !DISCOVER_ONLY */
+
+static PedPartition*
+aix_partition_new (const PedDisk* disk, PedPartitionType part_type,
+                  const PedFileSystemType* fs_type,
+                  PedSector start, PedSector end)
+{
+        ped_exception_throw (PED_EXCEPTION_NO_FEATURE,
+                             PED_EXCEPTION_CANCEL,
+                             _("Support for adding partitions to AIX disk "
+                               "labels is not implemented yet."));
+        return NULL;
+}
+
+static PedPartition*
+aix_partition_duplicate (const PedPartition* part)
+{
+        ped_exception_throw (PED_EXCEPTION_NO_FEATURE,
+                             PED_EXCEPTION_CANCEL,
+                             _("Support for duplicating partitions in AIX "
+                               "disk labels is not implemented yet."));
+        return NULL;
+}
+
+static void
+aix_partition_destroy (PedPartition* part)
+{
+       PED_ASSERT (part != NULL);
+
+       _ped_partition_free (part);
+}
+
+static int
+aix_partition_set_system (PedPartition* part, const PedFileSystemType* fs_type)
+{
+        ped_exception_throw (PED_EXCEPTION_NO_FEATURE,
+                             PED_EXCEPTION_CANCEL,
+                             _("Support for setting system type of partitions "
+                               "in AIX disk labels is not implemented yet."));
+       return 0;
+}
+
+static int
+aix_partition_set_flag (PedPartition* part, PedPartitionFlag flag, int state)
+{
+        ped_exception_throw (PED_EXCEPTION_NO_FEATURE,
+                             PED_EXCEPTION_CANCEL,
+                             _("Support for setting flags "
+                               "in AIX disk labels is not implemented yet."));
+        return 0;
+}
+
+static int
+aix_partition_get_flag (const PedPartition* part, PedPartitionFlag flag)
+{
+        return 0;
+}
+
+
+static int
+aix_partition_is_flag_available (const PedPartition* part,
+                                PedPartitionFlag flag)
+{
+        return 0;
+}
+
+
+static int
+aix_get_max_primary_partition_count (const PedDisk* disk)
+{
+       return 4;
+}
+
+static bool
+aix_get_max_supported_partition_count (const PedDisk* disk, int *max_n)
+{
+       *max_n = MAX_TOTAL_PART;
+       return true;
+}
+
+static int
+aix_partition_align (PedPartition* part, const PedConstraint* constraint)
+{
+        PED_ASSERT (part != NULL);
+
+        return 1;
+}
+
+static int
+aix_partition_enumerate (PedPartition* part)
+{
+       return 1;
+}
+
+static int
+aix_alloc_metadata (PedDisk* disk)
+{
+       return 1;
+}
+
+#include "pt-common.h"
+PT_define_limit_functions (aix)
+
+static PedDiskOps aix_disk_ops = {
+       clobber:                NULL,
+       write:                  NULL_IF_DISCOVER_ONLY (aix_write),
+
+       partition_set_name:             NULL,
+       partition_get_name:             NULL,
+
+       PT_op_function_initializers (aix)
+};
+
+static PedDiskType aix_disk_type = {
+       next:           NULL,
+       name:           "aix",
+       ops:            &aix_disk_ops,
+       features:       0
+};
+
+void
+ped_disk_aix_init ()
+{
+       ped_disk_type_register (&aix_disk_type);
+}
+
+void
+ped_disk_aix_done ()
+{
+       ped_disk_type_unregister (&aix_disk_type);
+}
diff --git a/libparted/labels/bsd.c b/libparted/labels/bsd.c
new file mode 100644 (file)
index 0000000..2278a86
--- /dev/null
@@ -0,0 +1,662 @@
+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 2000-2001, 2007-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+    Contributor:  Matt Wilson <msw@redhat.com>
+*/
+
+#include <config.h>
+
+#include <stdbool.h>
+#include <parted/parted.h>
+#include <parted/debug.h>
+#include <parted/endian.h>
+#include <stdbool.h>
+
+#if ENABLE_NLS
+#  include <libintl.h>
+#  define _(String) dgettext (PACKAGE, String)
+#else
+#  define _(String) (String)
+#endif /* ENABLE_NLS */
+
+#include "misc.h"
+#include "pt-tools.h"
+
+/* struct's & #define's stolen from libfdisk, which probably came from
+ * Linux...
+ */
+
+#define BSD_DISKMAGIC  (0x82564557UL)  /* The disk magic number */
+#define BSD_MAXPARTITIONS      8
+#define BSD_FS_UNUSED          0       /* disklabel unused partition entry ID */
+#define BSD_LABEL_OFFSET       64
+
+#define        BSD_DTYPE_SMD           1               /* SMD, XSMD; VAX hp/up */
+#define        BSD_DTYPE_MSCP          2               /* MSCP */
+#define        BSD_DTYPE_DEC           3               /* other DEC (rk, rl) */
+#define        BSD_DTYPE_SCSI          4               /* SCSI */
+#define        BSD_DTYPE_ESDI          5               /* ESDI interface */
+#define        BSD_DTYPE_ST506         6               /* ST506 etc. */
+#define        BSD_DTYPE_HPIB          7               /* CS/80 on HP-IB */
+#define BSD_DTYPE_HPFL         8               /* HP Fiber-link */
+#define        BSD_DTYPE_FLOPPY        10              /* floppy */
+
+#define        BSD_BBSIZE      8192            /* size of boot area, with label */
+#define        BSD_SBSIZE      8192            /* max size of fs superblock */
+
+typedef struct _BSDRawPartition                BSDRawPartition;
+typedef struct _BSDRawLabel            BSDRawLabel;
+
+struct _BSDRawPartition {              /* the partition table */
+       uint32_t        p_size;         /* number of sectors in partition */
+       uint32_t        p_offset;       /* starting sector */
+       uint32_t        p_fsize;        /* file system basic fragment size */
+       uint8_t         p_fstype;       /* file system type, see below */
+       uint8_t         p_frag;         /* file system fragments per block */
+       uint16_t        p_cpg;          /* file system cylinders per group */
+} __attribute__((packed));
+
+struct _BSDRawLabel {
+       uint32_t        d_magic;                /* the magic number */
+       int16_t         d_type;                 /* drive type */
+       int16_t         d_subtype;              /* controller/d_type specific */
+       int8_t          d_typename[16];         /* type name, e.g. "eagle" */
+       int8_t          d_packname[16];         /* pack identifier */
+       uint32_t        d_secsize;              /* # of bytes per sector */
+       uint32_t        d_nsectors;             /* # of data sectors per track */
+       uint32_t        d_ntracks;              /* # of tracks per cylinder */
+       uint32_t        d_ncylinders;           /* # of data cylinders per unit */
+       uint32_t        d_secpercyl;            /* # of data sectors per cylinder */
+       uint32_t        d_secperunit;           /* # of data sectors per unit */
+       uint16_t        d_sparespertrack;       /* # of spare sectors per track */
+       uint16_t        d_sparespercyl;         /* # of spare sectors per cylinder */
+       uint32_t        d_acylinders;           /* # of alt. cylinders per unit */
+       uint16_t        d_rpm;                  /* rotational speed */
+       uint16_t        d_interleave;           /* hardware sector interleave */
+       uint16_t        d_trackskew;            /* sector 0 skew, per track */
+       uint16_t        d_cylskew;              /* sector 0 skew, per cylinder */
+       uint32_t        d_headswitch;           /* head switch time, usec */
+       uint32_t        d_trkseek;              /* track-to-track seek, usec */
+       uint32_t        d_flags;                /* generic flags */
+#define NDDATA 5
+       uint32_t        d_drivedata[NDDATA];    /* drive-type specific information */
+#define NSPARE 5
+       uint32_t        d_spare[NSPARE];        /* reserved for future use */
+       uint32_t        d_magic2;               /* the magic number (again) */
+       uint16_t        d_checksum;             /* xor of data incl. partitions */
+
+       /* file system and partition information: */
+       uint16_t        d_npartitions;          /* number of partitions in following */
+       uint32_t        d_bbsize;               /* size of boot area at sn0, bytes */
+       uint32_t        d_sbsize;               /* max size of fs superblock, bytes */
+       BSDRawPartition d_partitions[BSD_MAXPARTITIONS];        /* actually may be more */
+} __attribute__((packed));
+
+typedef struct {
+       char            boot_code [512];
+} BSDDiskData;
+
+typedef struct {
+       uint8_t         type;
+       int                     boot;
+       int                     raid;
+       int                     lvm;
+} BSDPartitionData;
+
+static PedDiskType bsd_disk_type;
+
+/* XXX fixme: endian? */
+static unsigned short
+xbsd_dkcksum (BSDRawLabel *lp) {
+       unsigned short *start, *end;
+       unsigned short sum = 0;
+
+       lp->d_checksum = 0;
+       start = (u_short*) lp;
+       end = (u_short*) &lp->d_partitions [
+                               PED_LE16_TO_CPU (lp->d_npartitions)];
+       while (start < end)
+               sum ^= *start++;
+       return sum;
+}
+
+/* XXX fixme: endian? */
+static void
+alpha_bootblock_checksum (char *boot) {
+       uint64_t *dp, sum;
+       int i;
+
+       dp = (uint64_t *)boot;
+       sum = 0;
+       for (i = 0; i < 63; i++)
+               sum += dp[i];
+       dp[63] = sum;
+}
+
+static int
+bsd_probe (const PedDevice *dev)
+{
+       BSDRawLabel     *partition;
+
+       PED_ASSERT (dev != NULL);
+
+        if (dev->sector_size < 512)
+                return 0;
+
+       void *label;
+       if (!ptt_read_sector (dev, 0, &label))
+               return 0;
+
+       partition = (BSDRawLabel *) ((char *) label + BSD_LABEL_OFFSET);
+
+       alpha_bootblock_checksum(label);
+
+       /* check magic */
+        bool found = PED_LE32_TO_CPU (partition->d_magic) == BSD_DISKMAGIC;
+       free (label);
+       return found;
+}
+
+static PedDisk*
+bsd_alloc (const PedDevice* dev)
+{
+       PedDisk*        disk;
+       BSDDiskData*    bsd_specific;
+       BSDRawLabel*    label;
+
+       PED_ASSERT(dev->sector_size % PED_SECTOR_SIZE_DEFAULT == 0);
+
+       disk = _ped_disk_alloc ((PedDevice*)dev, &bsd_disk_type);
+       if (!disk)
+               goto error;
+       disk->disk_specific = bsd_specific = ped_malloc (sizeof (BSDDiskData));
+       if (!bsd_specific)
+               goto error_free_disk;
+        /* Initialize the first byte to zero, so that the code in bsd_write
+           knows to call _probe_and_add_boot_code.  Initializing all of the
+           remaining buffer is a little wasteful, but the alternative is to
+           figure out why a block at offset 340 would otherwise be used
+           uninitialized.  */
+       memset(bsd_specific->boot_code, 0, sizeof (bsd_specific->boot_code));
+
+       label = (BSDRawLabel*) (bsd_specific->boot_code + BSD_LABEL_OFFSET);
+
+       label->d_magic = PED_CPU_TO_LE32 (BSD_DISKMAGIC);
+       label->d_type = PED_CPU_TO_LE16 (BSD_DTYPE_SCSI);
+       label->d_flags = 0;
+       label->d_secsize = PED_CPU_TO_LE16 (dev->sector_size);
+       label->d_nsectors = PED_CPU_TO_LE32 (dev->bios_geom.sectors);
+       label->d_ntracks = PED_CPU_TO_LE32 (dev->bios_geom.heads);
+       label->d_ncylinders = PED_CPU_TO_LE32 (dev->bios_geom.cylinders);
+       label->d_secpercyl = PED_CPU_TO_LE32 (dev->bios_geom.sectors
+                                               * dev->bios_geom.heads);
+       label->d_secperunit
+               = PED_CPU_TO_LE32 (dev->bios_geom.sectors
+                                  * dev->bios_geom.heads
+                                  * dev->bios_geom.cylinders);
+
+       label->d_rpm = PED_CPU_TO_LE16 (3600);
+       label->d_interleave = PED_CPU_TO_LE16 (1);;
+       label->d_trackskew = 0;
+       label->d_cylskew = 0;
+       label->d_headswitch = 0;
+       label->d_trkseek = 0;
+
+       label->d_magic2 = PED_CPU_TO_LE32 (BSD_DISKMAGIC);
+       label->d_bbsize = PED_CPU_TO_LE32 (BSD_BBSIZE);
+       label->d_sbsize = PED_CPU_TO_LE32 (BSD_SBSIZE);
+
+       label->d_npartitions = 0;
+       label->d_checksum = xbsd_dkcksum (label);
+       return disk;
+
+error_free_disk:
+       free (disk);
+error:
+       return NULL;
+}
+
+static PedDisk*
+bsd_duplicate (const PedDisk* disk)
+{
+       PedDisk*        new_disk;
+       BSDDiskData*    new_bsd_data;
+       BSDDiskData*    old_bsd_data = (BSDDiskData*) disk->disk_specific;
+
+       new_disk = ped_disk_new_fresh (disk->dev, &bsd_disk_type);
+       if (!new_disk)
+               return NULL;
+
+       new_bsd_data = (BSDDiskData*) new_disk->disk_specific;
+       memcpy (new_bsd_data->boot_code, old_bsd_data->boot_code, 512);
+       return new_disk;
+}
+
+static void
+bsd_free (PedDisk* disk)
+{
+       free (disk->disk_specific);
+       _ped_disk_free (disk);
+}
+
+static int
+bsd_read (PedDisk* disk)
+{
+       BSDDiskData*    bsd_specific = (BSDDiskData*) disk->disk_specific;
+       BSDRawLabel*    label;
+       int             i;
+
+       ped_disk_delete_all (disk);
+
+       void *s0;
+       if (!ptt_read_sector (disk->dev, 0, &s0))
+               return 0;
+
+       memcpy (bsd_specific->boot_code, s0, sizeof (bsd_specific->boot_code));
+       free (s0);
+
+       label = (BSDRawLabel *) (bsd_specific->boot_code + BSD_LABEL_OFFSET);
+
+       for (i = 1; i <= BSD_MAXPARTITIONS; i++) {
+               PedPartition*           part;
+               BSDPartitionData*       bsd_part_data;
+               PedSector               start;
+               PedSector               end;
+
+               if (!label->d_partitions[i - 1].p_size
+                   || !label->d_partitions[i - 1].p_fstype)
+                       continue;
+               start = PED_LE32_TO_CPU(label->d_partitions[i - 1].p_offset);
+               end = PED_LE32_TO_CPU(label->d_partitions[i - 1].p_offset)
+                     + PED_LE32_TO_CPU(label->d_partitions[i - 1].p_size) - 1;
+               part = ped_partition_new (disk, PED_PARTITION_NORMAL,
+                                          NULL, start, end);
+               if (!part)
+                       goto error;
+               bsd_part_data = part->disk_specific;
+               bsd_part_data->type = label->d_partitions[i - 1].p_fstype;
+               part->num = i;
+               part->fs_type = ped_file_system_probe (&part->geom);
+
+               PedConstraint *constraint_exact
+                       = ped_constraint_exact (&part->geom);
+               if (constraint_exact == NULL)
+                       goto error;
+               bool ok = ped_disk_add_partition (disk, part, constraint_exact);
+               ped_constraint_destroy (constraint_exact);
+               if (!ok)
+                       goto error;
+       }
+
+       return 1;
+
+error:
+       return 0;
+}
+
+static void
+_probe_and_add_boot_code (const PedDisk* disk)
+{
+       void *s0;
+       if (!ptt_read_sector (disk->dev, 0, &s0))
+               return;
+       char *old_boot_code = s0;
+       BSDRawLabel *old_label
+                = (BSDRawLabel*) (old_boot_code + BSD_LABEL_OFFSET);
+
+       if (old_boot_code [0]
+           && old_label->d_magic == PED_CPU_TO_LE32 (BSD_DISKMAGIC)) {
+               BSDDiskData *bsd_specific = (BSDDiskData*) disk->disk_specific;
+               memcpy (bsd_specific->boot_code, old_boot_code,
+                        sizeof (BSDDiskData));
+        }
+       free (s0);
+}
+
+#ifndef DISCOVER_ONLY
+static int
+bsd_write (const PedDisk* disk)
+{
+       BSDDiskData*            bsd_specific;
+       BSDRawLabel*            label;
+       BSDPartitionData*       bsd_data;
+       PedPartition*           part;
+       int                     i;
+       int                     max_part = 0;
+
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (disk->dev != NULL);
+
+       bsd_specific = (BSDDiskData*) disk->disk_specific;
+       label = (BSDRawLabel *) (bsd_specific->boot_code + BSD_LABEL_OFFSET);
+
+       if (!bsd_specific->boot_code [0])
+               _probe_and_add_boot_code (disk);
+
+       memset (label->d_partitions, 0,
+               sizeof (BSDRawPartition) * BSD_MAXPARTITIONS);
+
+       for (i = 1; i <= BSD_MAXPARTITIONS; i++) {
+               part = ped_disk_get_partition (disk, i);
+               if (!part)
+                       continue;
+               bsd_data = part->disk_specific;
+               label->d_partitions[i - 1].p_fstype = bsd_data->type;
+               label->d_partitions[i - 1].p_offset
+                       = PED_CPU_TO_LE32 (part->geom.start);
+               label->d_partitions[i - 1].p_size
+                       = PED_CPU_TO_LE32 (part->geom.length);
+               max_part = i;
+       }
+
+       label->d_npartitions = PED_CPU_TO_LE16 (max_part) + 1;
+       label->d_checksum = xbsd_dkcksum (label);
+
+       alpha_bootblock_checksum (bsd_specific->boot_code);
+
+        if (!ptt_write_sector (disk, bsd_specific->boot_code,
+                               sizeof (BSDDiskData)))
+                goto error;
+       return ped_device_sync (disk->dev);
+
+error:
+       return 0;
+}
+#endif /* !DISCOVER_ONLY */
+
+static PedPartition*
+bsd_partition_new (const PedDisk* disk, PedPartitionType part_type,
+                  const PedFileSystemType* fs_type,
+                  PedSector start, PedSector end)
+{
+       PedPartition*           part;
+       BSDPartitionData*       bsd_data;
+
+       part = _ped_partition_alloc (disk, part_type, fs_type, start, end);
+       if (!part)
+               goto error;
+
+       if (ped_partition_is_active (part)) {
+               part->disk_specific
+                       = bsd_data = ped_malloc (sizeof (BSDPartitionData));
+               if (!bsd_data)
+                       goto error_free_part;
+               bsd_data->type = 0;
+               bsd_data->boot = 0;
+               bsd_data->raid = 0;
+               bsd_data->lvm  = 0;
+       } else {
+               part->disk_specific = NULL;
+       }
+       return part;
+
+error_free_part:
+       free (part);
+error:
+       return 0;
+}
+
+static PedPartition*
+bsd_partition_duplicate (const PedPartition* part)
+{
+       PedPartition*           new_part;
+       BSDPartitionData*       new_bsd_data;
+       BSDPartitionData*       old_bsd_data;
+
+       new_part = ped_partition_new (part->disk, part->type,
+                                     part->fs_type, part->geom.start,
+                                     part->geom.end);
+       if (!new_part)
+               return NULL;
+       new_part->num = part->num;
+
+       old_bsd_data = (BSDPartitionData*) part->disk_specific;
+       new_bsd_data = (BSDPartitionData*) new_part->disk_specific;
+       new_bsd_data->type = old_bsd_data->type;
+       new_bsd_data->boot = old_bsd_data->boot;
+       new_bsd_data->raid = old_bsd_data->raid;
+       new_bsd_data->lvm = old_bsd_data->lvm;
+       return new_part;
+}
+
+static void
+bsd_partition_destroy (PedPartition* part)
+{
+       PED_ASSERT (part != NULL);
+
+       if (ped_partition_is_active (part))
+               free (part->disk_specific);
+       _ped_partition_free (part);
+}
+
+static int
+bsd_partition_set_system (PedPartition* part, const PedFileSystemType* fs_type)
+{
+       BSDPartitionData* bsd_data = part->disk_specific;
+
+       part->fs_type = fs_type;
+
+       if (!fs_type)
+               bsd_data->type = 0x8;
+       else if (is_linux_swap (fs_type->name))
+               bsd_data->type = 0x1;
+       else
+               bsd_data->type = 0x8;
+
+       return 1;
+}
+
+static int
+bsd_partition_set_flag (PedPartition* part, PedPartitionFlag flag, int state)
+{
+//     PedPartition*           walk; // since -Werror, this unused variable would break build
+       BSDPartitionData*       bsd_data;
+
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk_specific != NULL);
+       PED_ASSERT (part->disk != NULL);
+
+       bsd_data = part->disk_specific;
+
+       switch (flag) {
+               case PED_PARTITION_BOOT:
+                       bsd_data->boot = state;
+                       return 1;
+               case PED_PARTITION_RAID:
+                       if (state) {
+                               bsd_data->lvm = 0;
+                       }
+                       bsd_data->raid = state;
+                       return 1;
+               case PED_PARTITION_LVM:
+                       if (state) {
+                               bsd_data->raid = 0;
+                       }
+                       bsd_data->lvm = state;
+               default:
+                       ;
+       }
+       return 0;
+}
+
+static int
+bsd_partition_get_flag (const PedPartition* part, PedPartitionFlag flag)
+{
+       BSDPartitionData*               bsd_data;
+
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk_specific != NULL);
+
+       bsd_data = part->disk_specific;
+       switch (flag) {
+               case PED_PARTITION_BOOT:
+                       return bsd_data->boot;
+
+               case PED_PARTITION_RAID:
+                       return bsd_data->raid;
+
+               case PED_PARTITION_LVM:
+                       return bsd_data->lvm;
+
+               default:
+                       ;
+       }
+       return 0;
+}
+
+static int
+bsd_partition_is_flag_available (const PedPartition* part,
+                                PedPartitionFlag flag)
+{
+       switch (flag) {
+               case PED_PARTITION_BOOT:
+               case PED_PARTITION_RAID:
+               case PED_PARTITION_LVM:
+                       return 1;
+               default:
+                       ;
+       }
+       return 0;
+}
+
+
+static int
+bsd_get_max_primary_partition_count (const PedDisk* disk)
+{
+       return BSD_MAXPARTITIONS;
+}
+
+static bool
+bsd_get_max_supported_partition_count(const PedDisk* disk, int *max_n)
+{
+       *max_n = BSD_MAXPARTITIONS;
+       return true;
+}
+
+static PedConstraint*
+_get_constraint (const PedDevice* dev)
+{
+       PedGeometry     max;
+
+       ped_geometry_init (&max, dev, 1, dev->length - 1);
+       return ped_constraint_new_from_max (&max);
+}
+
+static int
+bsd_partition_align (PedPartition* part, const PedConstraint* constraint)
+{
+       if (_ped_partition_attempt_align (part, constraint,
+                                         _get_constraint (part->disk->dev)))
+               return 1;
+
+#ifndef DISCOVER_ONLY
+       ped_exception_throw (
+               PED_EXCEPTION_ERROR,
+               PED_EXCEPTION_CANCEL,
+               _("Unable to satisfy all constraints on the partition."));
+#endif
+       return 0;
+}
+
+static int
+bsd_partition_enumerate (PedPartition* part)
+{
+       int i;
+       PedPartition* p;
+
+       /* never change the partition numbers */
+       if (part->num != -1)
+               return 1;
+       for (i = 1; i <= BSD_MAXPARTITIONS; i++) {
+               p = ped_disk_get_partition (part->disk, i);
+               if (!p) {
+                       part->num = i;
+                       return 1;
+               }
+       }
+
+       /* failed to allocate a number */
+#ifndef DISCOVER_ONLY
+       ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                            _("Unable to allocate a bsd disklabel slot."));
+#endif
+       return 0;
+}
+
+static int
+bsd_alloc_metadata (PedDisk* disk)
+{
+       PedPartition*           new_part;
+       PedConstraint*          constraint_any = NULL;
+
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (disk->dev != NULL);
+
+       constraint_any = ped_constraint_any (disk->dev);
+
+       /* allocate 1 sector for the disk label at the start */
+       new_part = ped_partition_new (disk, PED_PARTITION_METADATA, NULL, 0, 0);
+       if (!new_part)
+               goto error;
+
+       if (!ped_disk_add_partition (disk, new_part, constraint_any)) {
+               ped_partition_destroy (new_part);
+               goto error;
+       }
+
+       ped_constraint_destroy (constraint_any);
+       return 1;
+error:
+       ped_constraint_destroy (constraint_any);
+       return 0;
+}
+
+#include "pt-common.h"
+PT_define_limit_functions (bsd)
+
+static PedDiskOps bsd_disk_ops = {
+       clobber:                NULL,
+       write:                  NULL_IF_DISCOVER_ONLY (bsd_write),
+
+       partition_set_name:     NULL,
+       partition_get_name:     NULL,
+
+       PT_op_function_initializers (bsd)
+};
+
+static PedDiskType bsd_disk_type = {
+       next:           NULL,
+       name:           "bsd",
+       ops:            &bsd_disk_ops,
+       features:       0
+};
+
+void
+ped_disk_bsd_init ()
+{
+       PED_ASSERT (sizeof (BSDRawPartition) == 16);
+       PED_ASSERT (sizeof (BSDRawLabel) == 276);
+
+       ped_disk_type_register (&bsd_disk_type);
+}
+
+void
+ped_disk_bsd_done ()
+{
+       ped_disk_type_unregister (&bsd_disk_type);
+}
diff --git a/libparted/labels/dasd.c b/libparted/labels/dasd.c
new file mode 100644 (file)
index 0000000..d40119f
--- /dev/null
@@ -0,0 +1,983 @@
+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 2000-2001, 2007-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+    Contributor:  Phil Knirsch <phil@redhat.de>
+                  Harald Hoyer <harald@redhat.de>
+*/
+
+#include <config.h>
+
+#include <stdio.h>
+#include <errno.h>
+#include <ctype.h>
+#include <time.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <stdbool.h>
+
+#include <sys/stat.h>
+#include <sys/ioctl.h>
+#include <parted/parted.h>
+#include <parted/endian.h>
+#include <parted/debug.h>
+
+#include <parted/vtoc.h>
+#include <parted/fdasd.h>
+#include <arch/linux.h>
+
+#include <libintl.h>
+#if ENABLE_NLS
+#  define _(String) dgettext (PACKAGE, String)
+#else
+#  define _(String) (String)
+#endif /* ENABLE_NLS */
+
+#include "misc.h"
+#include "pt-tools.h"
+
+#define PARTITION_LINUX_SWAP 0x82
+#define PARTITION_LINUX 0x83
+#define PARTITION_LINUX_EXT 0x85
+#define PARTITION_LINUX_LVM 0x8e
+#define PARTITION_LINUX_RAID 0xfd
+#define PARTITION_LINUX_LVM_OLD 0xfe
+
+extern void ped_disk_dasd_init ();
+extern void ped_disk_dasd_done ();
+
+#define DASD_NAME "dasd"
+
+typedef struct {
+       int type;
+       int system;
+       int     raid;
+       int     lvm;
+} DasdPartitionData;
+
+typedef struct {
+       unsigned int format_type;
+       volume_label_t vlabel;
+} DasdDiskSpecific;
+
+static int dasd_probe (const PedDevice *dev);
+static int dasd_read (PedDisk* disk);
+static int dasd_write (const PedDisk* disk);
+
+static PedPartition* dasd_partition_new (const PedDisk* disk,
+                                                                                PedPartitionType part_type,
+                                                                                const PedFileSystemType* fs_type,
+                                                                                PedSector start,
+                                                                                PedSector end);
+static PedPartition* dasd_partition_duplicate (const PedPartition *part);
+static void dasd_partition_destroy (PedPartition* part);
+static int dasd_partition_set_flag (PedPartition* part,
+                                                                       PedPartitionFlag flag,
+                                                                       int state);
+static int dasd_partition_get_flag (const PedPartition* part,
+                                                                       PedPartitionFlag flag);
+static int dasd_partition_is_flag_available (const PedPartition* part,
+                                                                                        PedPartitionFlag flag);
+static int dasd_partition_align (PedPartition* part,
+                                                                const PedConstraint* constraint);
+static int dasd_partition_enumerate (PedPartition* part);
+static int dasd_get_max_primary_partition_count (const PedDisk* disk);
+static bool dasd_get_max_supported_partition_count (const PedDisk* disk, int *max_n);
+static PedAlignment *dasd_get_partition_alignment(const PedDisk *disk);
+
+static PedDisk* dasd_alloc (const PedDevice* dev);
+static PedDisk* dasd_duplicate (const PedDisk* disk);
+static void dasd_free (PedDisk* disk);
+static int dasd_partition_set_system (PedPartition* part,
+                                                                         const PedFileSystemType* fs_type);
+static int dasd_alloc_metadata (PedDisk* disk);
+
+#include "pt-common.h"
+PT_define_limit_functions (dasd)
+
+static PedDiskOps dasd_disk_ops = {
+       clobber:                NULL,
+       write:                  NULL_IF_DISCOVER_ONLY (dasd_write),
+
+       partition_set_name:     NULL,
+       partition_get_name:     NULL,
+
+       get_partition_alignment: dasd_get_partition_alignment,
+
+       PT_op_function_initializers (dasd)
+};
+
+static PedDiskType dasd_disk_type = {
+       next: NULL,
+       name: "dasd",
+       ops: &dasd_disk_ops,
+       features: 0
+};
+
+static PedDisk*
+dasd_alloc (const PedDevice* dev)
+{
+       PedDisk* disk;
+       LinuxSpecific* arch_specific;
+       DasdDiskSpecific *disk_specific;
+       char volser[7];
+
+       PED_ASSERT (dev != NULL);
+
+       arch_specific = LINUX_SPECIFIC (dev);
+       disk = _ped_disk_alloc (dev, &dasd_disk_type);
+       if (!disk)
+               return NULL;
+
+       disk->disk_specific = disk_specific = ped_malloc(sizeof(DasdDiskSpecific));
+       if (!disk->disk_specific) {
+               free (disk);
+               return NULL;
+       }
+
+       /* CDL format, newer */
+       disk_specific->format_type = 2;
+
+       /* Setup volume label (for fresh disks) */
+       snprintf(volser, sizeof(volser), "0X%04X", arch_specific->devno);
+       vtoc_volume_label_init(&disk_specific->vlabel);
+       vtoc_volume_label_set_key(&disk_specific->vlabel, "VOL1");
+       vtoc_volume_label_set_label(&disk_specific->vlabel, "VOL1");
+       vtoc_volume_label_set_volser(&disk_specific->vlabel, volser);
+       vtoc_set_cchhb(&disk_specific->vlabel.vtoc,
+                      VTOC_START_CC, VTOC_START_HH, 0x01);
+
+       return disk;
+}
+
+static PedDisk*
+dasd_duplicate (const PedDisk* disk)
+{
+       PedDisk* new_disk;
+
+       new_disk = ped_disk_new_fresh(disk->dev, &dasd_disk_type);
+
+       if (!new_disk)
+               return NULL;
+
+       memcpy(new_disk->disk_specific, disk->disk_specific,
+              sizeof(DasdDiskSpecific));
+
+       return new_disk;
+}
+
+static void
+dasd_free (PedDisk* disk)
+{
+       PED_ASSERT(disk != NULL);
+       /* Don't free disk->disk_specific first, in case _ped_disk_free
+          or one of its eventual callees ever accesses it.  */
+       void *p = disk->disk_specific;
+       _ped_disk_free(disk);
+       free(p);
+}
+
+
+void
+ped_disk_dasd_init ()
+{
+       ped_disk_type_register(&dasd_disk_type);
+}
+
+void
+ped_disk_dasd_done ()
+{
+       ped_disk_type_unregister(&dasd_disk_type);
+}
+
+static int
+dasd_probe (const PedDevice *dev)
+{
+       LinuxSpecific* arch_specific;
+       struct fdasd_anchor anchor;
+
+       PED_ASSERT(dev != NULL);
+
+       if (!(dev->type == PED_DEVICE_DASD
+              || dev->type == PED_DEVICE_VIODASD
+              || dev->type == PED_DEVICE_FILE))
+               return 0;
+
+       arch_specific = LINUX_SPECIFIC(dev);
+
+       /* add partition test here */
+       fdasd_initialize_anchor(&anchor);
+
+       fdasd_get_geometry(dev, &anchor, arch_specific->fd);
+
+       fdasd_check_api_version(&anchor, arch_specific->fd);
+
+       if (fdasd_check_volume(&anchor, arch_specific->fd))
+               goto error_cleanup;
+
+       fdasd_cleanup(&anchor);
+
+       return 1;
+
+ error_cleanup:
+       fdasd_cleanup(&anchor);
+       ped_exception_throw(PED_EXCEPTION_ERROR,PED_EXCEPTION_IGNORE_CANCEL,
+                           "Error while probing device %s.", dev->path);
+
+       return 0;
+}
+
+static int
+dasd_read (PedDisk* disk)
+{
+       int i;
+       char str[20];
+       PedDevice* dev;
+       PedPartition* part;
+       PedFileSystemType *fs;
+       PedSector start, end;
+       PedConstraint* constraint_exact;
+       partition_info_t *p;
+       LinuxSpecific* arch_specific;
+       DasdDiskSpecific* disk_specific;
+       struct fdasd_anchor anchor;
+
+       PDEBUG;
+
+       PED_ASSERT (disk != NULL);
+       PDEBUG;
+       PED_ASSERT (disk->dev != NULL);
+       PDEBUG;
+
+       dev = disk->dev;
+
+       arch_specific = LINUX_SPECIFIC(dev);
+       disk_specific = disk->disk_specific;
+
+       PDEBUG;
+
+       fdasd_initialize_anchor(&anchor);
+
+       fdasd_get_geometry(disk->dev, &anchor, arch_specific->fd);
+
+       /* check dasd for labels and vtoc */
+       if (fdasd_check_volume(&anchor, arch_specific->fd))
+               goto error_close_dev;
+
+       /* Save volume label (read by fdasd_check_volume) for writing */
+       memcpy(&disk_specific->vlabel, anchor.vlabel, sizeof(volume_label_t));
+
+       if ((anchor.geo.cylinders * anchor.geo.heads) > BIG_DISK_SIZE)
+               anchor.big_disk++;
+
+       ped_disk_delete_all (disk);
+
+       bool is_ldl = strncmp(anchor.vlabel->volkey,
+                        vtoc_ebcdic_enc("LNX1", str, 4), 4) == 0;
+       bool is_cms = strncmp(anchor.vlabel->volkey,
+                        vtoc_ebcdic_enc("CMS1", str, 4), 4) == 0;
+       if (is_ldl || is_cms) {
+               DasdPartitionData* dasd_data;
+
+               union vollabel {
+                       volume_label_t unused;
+                       ldl_volume_label_t ldl;
+                       cms_volume_label_t cms;
+               };
+               union vollabel *cms_ptr1 = (union vollabel *) anchor.vlabel;
+               cms_volume_label_t *cms_ptr = &cms_ptr1->cms;
+               ldl_volume_label_t *ldl_ptr = &cms_ptr1->ldl;
+               int partition_start_block;
+
+               disk_specific->format_type = 1;
+
+               if (is_cms && cms_ptr->usable_count >= cms_ptr->block_count)
+                       partition_start_block = 2;   /* FBA DASD */
+               else
+                       partition_start_block = 3;   /* CKD DASD */
+
+               if (is_ldl)
+                       start = (long long) arch_specific->real_sector_size
+                               / (long long) disk->dev->sector_size
+                               * (long long) partition_start_block;
+               else if (cms_ptr->disk_offset == 0)
+                       start = (long long) cms_ptr->block_size
+                               / (long long) disk->dev->sector_size
+                               * (long long) partition_start_block;
+               else
+                       start = (long long) cms_ptr->block_size
+                               / (long long) disk->dev->sector_size
+                               * (long long) cms_ptr->disk_offset;
+
+               if (is_ldl)
+                  if (strncmp(ldl_ptr->ldl_version,
+                              vtoc_ebcdic_enc("2", str, 1), 1) >= 0)
+                     end = (long long) arch_specific->real_sector_size
+                           / (long long) disk->dev->sector_size
+                           * (long long) ldl_ptr->formatted_blocks - 1;
+                  else
+                     end = disk->dev->length - 1;
+               else
+                  if (cms_ptr->disk_offset == 0)
+                     end = (long long) cms_ptr->block_size
+                           / (long long) disk->dev->sector_size
+                           * (long long) cms_ptr->block_count - 1;
+                  else
+                     /*
+                        Frankly, I do not understand why the last block
+                        of the CMS reserved file is not included in the
+                        partition; but this is the algorithm used by the
+                        Linux kernel.  See fs/partitions/ibm.c in the
+                        Linux kernel source code.
+                     */
+                     end = (long long) cms_ptr->block_size
+                           / (long long) disk->dev->sector_size
+                           * (long long) (cms_ptr->block_count - 1) - 1;
+
+               part = ped_partition_new (disk, PED_PARTITION_PROTECTED, NULL, start, end);
+               if (!part)
+                       goto error_close_dev;
+
+               part->num = 1;
+               part->fs_type = ped_file_system_probe (&part->geom);
+               dasd_data = part->disk_specific;
+               dasd_data->raid = 0;
+               dasd_data->lvm = 0;
+               dasd_data->type = 0;
+
+               if (!ped_disk_add_partition (disk, part, NULL))
+                       goto error_close_dev;
+
+               fdasd_cleanup(&anchor);
+
+               return 1;
+       }
+
+       /* CDL format, newer */
+       disk_specific->format_type = 2;
+
+       p = anchor.first;
+       PDEBUG;
+
+       for (i = 1 ; i <= USABLE_PARTITIONS; i++) {
+               char *ch = p->f1->DS1DSNAM;
+               DasdPartitionData* dasd_data;
+
+
+               if (p->used != 0x01)
+                       continue;
+
+        PDEBUG;
+
+               start = (long long)(long long) p->start_trk
+                               * (long long) disk->dev->hw_geom.sectors
+                               * (long long) arch_specific->real_sector_size
+                               / (long long) disk->dev->sector_size;
+               end   = (long long)((long long) p->end_trk + 1)
+                               * (long long) disk->dev->hw_geom.sectors
+                               * (long long) arch_specific->real_sector_size
+                               / (long long) disk->dev->sector_size - 1;
+               part = ped_partition_new(disk, PED_PARTITION_NORMAL, NULL,
+                                         start, end);
+        PDEBUG;
+
+               if (!part)
+                       goto error_close_dev;
+
+        PDEBUG;
+
+               part->num = i;
+               part->fs_type = ped_file_system_probe(&part->geom);
+
+               vtoc_ebcdic_dec(p->f1->DS1DSNAM, p->f1->DS1DSNAM, 44);
+               ch = strstr(p->f1->DS1DSNAM, "PART");
+
+               if (ch != NULL) {
+                       strncpy(str, ch+9, 6);
+                       str[6] = '\0';
+               }
+
+               dasd_data = part->disk_specific;
+
+               if ((strncmp(PART_TYPE_RAID, str, 6) == 0) &&
+                   (ped_file_system_probe(&part->geom) == NULL))
+                       ped_partition_set_flag(part, PED_PARTITION_RAID, 1);
+               else
+                       ped_partition_set_flag(part, PED_PARTITION_RAID, 0);
+
+               if ((strncmp(PART_TYPE_LVM, str, 6) == 0) &&
+                   (ped_file_system_probe(&part->geom) == NULL))
+                       ped_partition_set_flag(part, PED_PARTITION_LVM, 1);
+               else
+                       ped_partition_set_flag(part, PED_PARTITION_LVM, 0);
+
+               if (strncmp(PART_TYPE_SWAP, str, 6) == 0) {
+                       fs = ped_file_system_probe(&part->geom);
+                       if (fs && is_linux_swap(fs->name)) {
+                               dasd_data->system = PARTITION_LINUX_SWAP;
+                               PDEBUG;
+                       }
+               }
+
+               vtoc_ebcdic_enc(p->f1->DS1DSNAM, p->f1->DS1DSNAM, 44);
+
+               dasd_data->type = 0;
+
+               constraint_exact = ped_constraint_exact (&part->geom);
+               if (!constraint_exact)
+                       goto error_close_dev;
+               if (!ped_disk_add_partition(disk, part, constraint_exact)) {
+                       ped_constraint_destroy(constraint_exact);
+                       goto error_close_dev;
+               }
+               ped_constraint_destroy(constraint_exact);
+
+               if (p->fspace_trk > 0) {
+                       start = (long long)((long long) p->end_trk + 1)
+                                       * (long long) disk->dev->hw_geom.sectors
+                                       * (long long) arch_specific->real_sector_size
+                                       / (long long) disk->dev->sector_size;
+                       end   = (long long)((long long) p->end_trk + 1 + p->fspace_trk)
+                                       * (long long) disk->dev->hw_geom.sectors
+                                       * (long long) arch_specific->real_sector_size
+                                       / (long long) disk->dev->sector_size - 1;
+                       part = ped_partition_new (disk, PED_PARTITION_NORMAL,
+                                                  NULL, start, end);
+
+                       if (!part)
+                               goto error_close_dev;
+
+                       part->type = PED_PARTITION_FREESPACE;
+                       constraint_exact = ped_constraint_exact(&part->geom);
+
+                       if (!constraint_exact)
+                               goto error_close_dev;
+                       if (!ped_disk_add_partition(disk, part, constraint_exact)) {
+                               ped_constraint_destroy(constraint_exact);
+                               goto error_close_dev;
+                       }
+
+                       ped_constraint_destroy (constraint_exact);
+               }
+
+               p = p->next;
+       }
+
+       PDEBUG;
+       fdasd_cleanup(&anchor);
+       return 1;
+
+error_close_dev:
+       PDEBUG;
+       fdasd_cleanup(&anchor);
+       return 0;
+}
+
+static int
+dasd_update_type (const PedDisk* disk, struct fdasd_anchor *anchor,
+                 partition_info_t *part_info[USABLE_PARTITIONS])
+{
+       PedPartition* part;
+       LinuxSpecific* arch_specific;
+       DasdDiskSpecific* disk_specific;
+
+       arch_specific = LINUX_SPECIFIC(disk->dev);
+       disk_specific = disk->disk_specific;
+
+       PDEBUG;
+
+       unsigned int i;
+       for (i = 1; i <= USABLE_PARTITIONS; i++) {
+               partition_info_t *p;
+               char *ch = NULL;
+               DasdPartitionData* dasd_data;
+
+               PDEBUG;
+
+               part = ped_disk_get_partition(disk, i);
+               if (!part)
+                       continue;
+
+               PDEBUG;
+
+               dasd_data = part->disk_specific;
+               p = part_info[i - 1];
+
+               if (!p ) {
+                       PDEBUG;
+                       continue;
+               }
+
+               vtoc_ebcdic_dec(p->f1->DS1DSNAM, p->f1->DS1DSNAM, 44);
+               ch = strstr(p->f1->DS1DSNAM, "PART");
+
+               PDEBUG;
+               if (ch == NULL) {
+                       vtoc_ebcdic_enc(p->f1->DS1DSNAM, p->f1->DS1DSNAM, 44);
+                       PDEBUG;
+                       continue;
+               }
+
+               ch += 9;
+
+               switch (dasd_data->system) {
+                       case PARTITION_LINUX_LVM:
+                               PDEBUG;
+                               strncpy(ch, PART_TYPE_LVM, 6);
+                               break;
+                       case PARTITION_LINUX_RAID:
+                               PDEBUG;
+                               strncpy(ch, PART_TYPE_RAID, 6);
+                               break;
+                       case PARTITION_LINUX:
+                               PDEBUG;
+                               strncpy(ch, PART_TYPE_NATIVE, 6);
+                               break;
+                       case PARTITION_LINUX_SWAP:
+                               PDEBUG;
+                               strncpy(ch, PART_TYPE_SWAP, 6);
+                               break;
+                       default:
+                               PDEBUG;
+                               strncpy(ch, PART_TYPE_NATIVE, 6);
+                               break;
+               }
+
+               anchor->vtoc_changed++;
+               vtoc_ebcdic_enc(p->f1->DS1DSNAM, p->f1->DS1DSNAM, 44);
+       }
+
+       return 1;
+}
+
+static int
+dasd_write (const PedDisk* disk)
+{
+       DasdPartitionData* dasd_data;
+       PedPartition* part;
+       int i;
+       partition_info_t *p;
+       LinuxSpecific* arch_specific;
+       DasdDiskSpecific* disk_specific;
+       struct fdasd_anchor anchor;
+       partition_info_t *part_info[USABLE_PARTITIONS];
+
+       PED_ASSERT(disk != NULL);
+       PED_ASSERT(disk->dev != NULL);
+
+       arch_specific = LINUX_SPECIFIC (disk->dev);
+       disk_specific = disk->disk_specific;
+
+       PDEBUG;
+
+       /* If not formated in CDL, don't write anything. */
+       if (disk_specific->format_type == 1)
+               return 1;
+
+       /* initialize the anchor */
+       fdasd_initialize_anchor(&anchor);
+       fdasd_get_geometry(disk->dev, &anchor, arch_specific->fd);
+       memcpy(anchor.vlabel, &disk_specific->vlabel, sizeof(volume_label_t));
+       anchor.vlabel_changed++;
+
+       if ((anchor.geo.cylinders * anchor.geo.heads) > BIG_DISK_SIZE)
+               anchor.big_disk++;
+
+       fdasd_recreate_vtoc(&anchor);
+
+       for (i = 1; i <= USABLE_PARTITIONS; i++) {
+               unsigned int start, stop;
+
+               PDEBUG;
+               part = ped_disk_get_partition(disk, i);
+               if (!part)
+                       continue;
+
+               PDEBUG;
+
+               start = part->geom.start * disk->dev->sector_size
+                               / arch_specific->real_sector_size / disk->dev->hw_geom.sectors;
+               stop = (part->geom.end + 1)
+                          * disk->dev->sector_size / arch_specific->real_sector_size
+                          / disk->dev->hw_geom.sectors - 1;
+
+               PDEBUG;
+               dasd_data = part->disk_specific;
+
+               p = fdasd_add_partition(&anchor, start, stop);
+               if (!p) {
+                       PDEBUG;
+                       goto error;
+               }
+               part_info[i - 1] = p;
+               p->type = dasd_data->system;
+       }
+
+       PDEBUG;
+
+       if (!fdasd_prepare_labels(&anchor, arch_specific->fd))
+               goto error;
+
+       dasd_update_type(disk, &anchor, part_info);
+       PDEBUG;
+
+       if (!fdasd_write_labels(&anchor, arch_specific->fd))
+               goto error;
+
+       fdasd_cleanup(&anchor);
+       return 1;
+
+error:
+       PDEBUG;
+       fdasd_cleanup(&anchor);
+       return 0;
+}
+
+static PedPartition*
+dasd_partition_new (const PedDisk* disk, PedPartitionType part_type,
+                    const PedFileSystemType* fs_type,
+                    PedSector start, PedSector end)
+{
+       PedPartition* part;
+
+       part = _ped_partition_alloc(disk, part_type, fs_type, start, end);
+       if (!part)
+               goto error;
+
+       part->disk_specific = ped_malloc (sizeof (DasdPartitionData));
+       return part;
+
+error:
+       return 0;
+}
+
+static PedPartition*
+dasd_partition_duplicate (const PedPartition *part)
+{
+       PedPartition *new_part;
+
+       new_part = ped_partition_new (part->disk, part->type, part->fs_type,
+                                     part->geom.start, part->geom.end);
+       if (!new_part)
+               return NULL;
+       new_part->num = part->num;
+
+       memcpy(new_part->disk_specific, part->disk_specific,
+              sizeof(DasdPartitionData));
+
+       return new_part;
+}
+
+static void
+dasd_partition_destroy (PedPartition* part)
+{
+       PED_ASSERT(part != NULL);
+
+       if (ped_partition_is_active(part))
+               free(part->disk_specific);
+       free(part);
+}
+
+static int
+dasd_partition_set_flag (PedPartition* part, PedPartitionFlag flag, int state)
+{
+       DasdPartitionData* dasd_data;
+
+       PED_ASSERT(part != NULL);
+       PED_ASSERT(part->disk_specific != NULL);
+       dasd_data = part->disk_specific;
+
+       switch (flag) {
+               case PED_PARTITION_RAID:
+                       if (state)
+                               dasd_data->lvm = 0;
+                       dasd_data->raid = state;
+                       return ped_partition_set_system(part, part->fs_type);
+               case PED_PARTITION_LVM:
+                       if (state)
+                               dasd_data->raid = 0;
+                       dasd_data->lvm = state;
+                       return ped_partition_set_system(part, part->fs_type);
+               default:
+                       return 0;
+       }
+}
+
+static int
+dasd_partition_get_flag (const PedPartition* part, PedPartitionFlag flag)
+{
+       DasdPartitionData* dasd_data;
+
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk_specific != NULL);
+       dasd_data = part->disk_specific;
+
+       switch (flag) {
+               case PED_PARTITION_RAID:
+                       return dasd_data->raid;
+               case PED_PARTITION_LVM:
+                       return dasd_data->lvm;
+               default:
+                       return 0;
+       }
+}
+
+static int
+dasd_partition_is_flag_available (const PedPartition* part,
+                                  PedPartitionFlag flag)
+{
+       switch (flag) {
+               case PED_PARTITION_RAID:
+                       return 1;
+               case PED_PARTITION_LVM:
+                       return 1;
+               default:
+                       return 0;
+       }
+}
+
+
+static int
+dasd_get_max_primary_partition_count (const PedDisk* disk)
+{
+       DasdDiskSpecific* disk_specific;
+
+       disk_specific = disk->disk_specific;
+       /* If formated in LDL, maximum partition number is 1 */
+       if (disk_specific->format_type == 1)
+               return 1;
+
+       return USABLE_PARTITIONS;
+}
+
+static bool
+dasd_get_max_supported_partition_count (const PedDisk* disk, int *max_n)
+{
+       *max_n = dasd_get_max_primary_partition_count(disk);
+       return true;
+}
+
+static PedAlignment*
+dasd_get_partition_alignment(const PedDisk *disk)
+{
+        LinuxSpecific *arch_specific = LINUX_SPECIFIC(disk->dev);
+        PedSector sector_size =
+                arch_specific->real_sector_size / disk->dev->sector_size;
+
+        return ped_alignment_new(0, disk->dev->hw_geom.sectors * sector_size);
+}
+
+static PedConstraint*
+_primary_constraint (PedDisk* disk)
+{
+       PedAlignment start_align;
+       PedAlignment end_align;
+       PedGeometry     max_geom;
+       PedSector sector_size;
+       LinuxSpecific* arch_specific;
+       DasdDiskSpecific* disk_specific;
+
+       PDEBUG;
+
+       arch_specific = LINUX_SPECIFIC (disk->dev);
+       disk_specific = disk->disk_specific;
+       sector_size = arch_specific->real_sector_size / disk->dev->sector_size;
+
+       if (!ped_alignment_init (&start_align, 0,
+                                                        disk->dev->hw_geom.sectors * sector_size))
+               return NULL;
+       if (!ped_alignment_init (&end_align, -1,
+                                                    disk->dev->hw_geom.sectors * sector_size))
+               return NULL;
+       if (!ped_geometry_init (&max_geom, disk->dev, 0, disk->dev->length))
+               return NULL;
+
+       return ped_constraint_new(&start_align, &end_align, &max_geom,
+                                                         &max_geom, 1, disk->dev->length);
+}
+
+static int
+dasd_partition_align (PedPartition* part, const PedConstraint* constraint)
+{
+       DasdDiskSpecific* disk_specific;
+
+       PED_ASSERT (part != NULL);
+
+       disk_specific = part->disk->disk_specific;
+       /* If formated in LDL, ignore metadata partition */
+       if (disk_specific->format_type == 1)
+               return 1;
+
+       if (_ped_partition_attempt_align(part, constraint,
+                                                                    _primary_constraint(part->disk)))
+               return 1;
+
+#ifndef DISCOVER_ONLY
+       ped_exception_throw (
+               PED_EXCEPTION_ERROR,
+               PED_EXCEPTION_CANCEL,
+               _("Unable to satisfy all constraints on the partition."));
+#endif
+
+       return 0;
+}
+
+static int
+dasd_partition_enumerate (PedPartition* part)
+{
+       int i;
+       PedPartition* p;
+
+       /* never change the partition numbers */
+       if (part->num != -1)
+               return 1;
+
+       for (i = 1; i <= USABLE_PARTITIONS; i++) {
+               p = ped_disk_get_partition (part->disk, i);
+               if (!p) {
+                       part->num = i;
+                       return 1;
+               }
+       }
+
+       /* failed to allocate a number */
+       ped_exception_throw(PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                                               _("Unable to allocate a dasd disklabel slot"));
+       return 0;
+}
+
+static int
+dasd_partition_set_system (PedPartition* part,
+                           const PedFileSystemType* fs_type)
+{
+       DasdPartitionData* dasd_data = part->disk_specific;
+       PedSector cyl_size;
+
+       cyl_size=part->disk->dev->hw_geom.sectors * part->disk->dev->hw_geom.heads;
+       PDEBUG;
+
+       part->fs_type = fs_type;
+
+       if (dasd_data->lvm) {
+               dasd_data->system = PARTITION_LINUX_LVM;
+        PDEBUG;
+               return 1;
+       }
+
+       if (dasd_data->raid) {
+               dasd_data->system = PARTITION_LINUX_RAID;
+        PDEBUG;
+               return 1;
+       }
+
+       if (!fs_type) {
+               dasd_data->system = PARTITION_LINUX;
+        PDEBUG;
+       } else if (is_linux_swap (fs_type->name)) {
+               dasd_data->system = PARTITION_LINUX_SWAP;
+        PDEBUG;
+       } else {
+               dasd_data->system = PARTITION_LINUX;
+        PDEBUG;
+       }
+
+       return 1;
+}
+
+static int
+dasd_alloc_metadata (PedDisk* disk)
+{
+       PedPartition* new_part;
+       PedConstraint* constraint_any = NULL;
+       PedSector vtoc_end;
+       LinuxSpecific* arch_specific;
+       DasdDiskSpecific* disk_specific;
+       PedPartition* part = NULL; /* initialize solely to placate gcc */
+       PedPartition* new_part2;
+       PedSector trailing_meta_start, trailing_meta_end;
+       struct fdasd_anchor anchor;
+
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (disk->dev != NULL);
+
+       arch_specific = LINUX_SPECIFIC (disk->dev);
+       disk_specific = disk->disk_specific;
+
+       constraint_any = ped_constraint_any (disk->dev);
+
+       /* For LDL or CMS, the leading metadata ends at the sector before
+          the start of the first partition */
+       if (disk_specific->format_type == 1) {
+               part = ped_disk_get_partition(disk, 1);
+               vtoc_end = part->geom.start - 1;
+       }
+       else {
+                if (disk->dev->type == PED_DEVICE_FILE)
+                        arch_specific->real_sector_size = disk->dev->sector_size;
+        /* Mark the start of the disk as metadata. */
+               vtoc_end = (FIRST_USABLE_TRK * (long long) disk->dev->hw_geom.sectors
+                                  * (long long) arch_specific->real_sector_size
+                                  / (long long) disk->dev->sector_size) - 1;
+        }
+
+       new_part = ped_partition_new (disk,PED_PARTITION_METADATA,NULL,0,vtoc_end);
+       if (!new_part)
+               goto error;
+
+       if (!ped_disk_add_partition (disk, new_part, constraint_any)) {
+               ped_partition_destroy (new_part);
+               goto error;
+       }
+
+       if (disk_specific->format_type == 1) {
+          /*
+             For LDL or CMS there may be trailing metadata as well.
+             For example: the last block of a CMS reserved file,
+             the "recomp" area of a CMS minidisk that has been
+             formatted and then formatted again with the RECOMP
+             option specifying fewer than the maximum number of
+             cylinders, a disk that was formatted at one size,
+             backed up, then restored to a larger size disk, etc.
+          */
+          trailing_meta_start = part->geom.end + 1;
+          fdasd_initialize_anchor(&anchor);
+          fdasd_get_geometry(disk->dev, &anchor, arch_specific->fd);
+          trailing_meta_end = (long long) disk->dev->length - 1;
+          fdasd_cleanup(&anchor);
+          if (trailing_meta_end >= trailing_meta_start) {
+               new_part2 = ped_partition_new (disk,PED_PARTITION_METADATA,
+                  NULL, trailing_meta_start, trailing_meta_end);
+               if (!new_part2) {
+                  ped_partition_destroy (new_part);
+                  goto error;
+               }
+               if (!ped_disk_add_partition (disk, new_part2,
+                  constraint_any)) {
+                  ped_partition_destroy (new_part2);
+                  ped_partition_destroy (new_part);
+                  goto error;
+               }
+          }
+       }
+
+       ped_constraint_destroy (constraint_any);
+       return 1;
+
+error:
+       ped_constraint_destroy (constraint_any);
+       return 0;
+}
diff --git a/libparted/labels/dos.c b/libparted/labels/dos.c
new file mode 100644 (file)
index 0000000..3d2dbd7
--- /dev/null
@@ -0,0 +1,2484 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 1999-2001, 2004-2005, 2007-2011 Free Software Foundation,
+    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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#include <config.h>
+
+#include <sys/time.h>
+#include <stdbool.h>
+#include <parted/parted.h>
+#include <parted/debug.h>
+#include <parted/endian.h>
+
+#if ENABLE_NLS
+#  include <libintl.h>
+#  define _(String) dgettext (PACKAGE, String)
+#else
+#  define _(String) (String)
+#endif /* ENABLE_NLS */
+
+#include "misc.h"
+#include "pt-tools.h"
+
+/* this MBR boot code is loaded into 0000:7c00 by the BIOS.  See mbr.s for
+ * the source, and how to build it
+ */
+
+static const char MBR_BOOT_CODE[] = {
+       0xfa, 0xb8, 0x00, 0x10, 0x8e, 0xd0, 0xbc, 0x00,
+       0xb0, 0xb8, 0x00, 0x00, 0x8e, 0xd8, 0x8e, 0xc0,
+       0xfb, 0xbe, 0x00, 0x7c, 0xbf, 0x00, 0x06, 0xb9,
+       0x00, 0x02, 0xf3, 0xa4, 0xea, 0x21, 0x06, 0x00,
+       0x00, 0xbe, 0xbe, 0x07, 0x38, 0x04, 0x75, 0x0b,
+       0x83, 0xc6, 0x10, 0x81, 0xfe, 0xfe, 0x07, 0x75,
+       0xf3, 0xeb, 0x16, 0xb4, 0x02, 0xb0, 0x01, 0xbb,
+       0x00, 0x7c, 0xb2, 0x80, 0x8a, 0x74, 0x01, 0x8b,
+       0x4c, 0x02, 0xcd, 0x13, 0xea, 0x00, 0x7c, 0x00,
+       0x00, 0xeb, 0xfe
+};
+
+#define MSDOS_MAGIC            0xAA55
+#define PARTITION_MAGIC_MAGIC  0xf6f6
+
+/* The maximum number of DOS primary partitions.  */
+#define DOS_N_PRI_PARTITIONS   4
+
+#define PARTITION_EMPTY                0x00
+#define PARTITION_FAT12                0x01
+#define PARTITION_FAT16_SM     0x04
+#define PARTITION_DOS_EXT      0x05
+#define PARTITION_FAT16                0x06
+#define PARTITION_NTFS         0x07
+#define PARTITION_HPFS         0x07
+#define PARTITION_FAT32                0x0b
+#define PARTITION_FAT32_LBA    0x0c
+#define PARTITION_FAT16_LBA    0x0e
+#define PARTITION_EXT_LBA      0x0f
+
+#define PART_FLAG_HIDDEN       0x10    /* Valid for FAT/NTFS only */
+#define PARTITION_FAT12_H      (PARTITION_FAT12        | PART_FLAG_HIDDEN)
+#define PARTITION_FAT16_SM_H   (PARTITION_FAT16_SM     | PART_FLAG_HIDDEN)
+#define PARTITION_DOS_EXT_H    (PARTITION_DOS_EXT      | PART_FLAG_HIDDEN)
+#define PARTITION_FAT16_H      (PARTITION_FAT16        | PART_FLAG_HIDDEN)
+#define PARTITION_NTFS_H       (PARTITION_NTFS         | PART_FLAG_HIDDEN)
+#define PARTITION_FAT32_H      (PARTITION_FAT32        | PART_FLAG_HIDDEN)
+#define PARTITION_FAT32_LBA_H  (PARTITION_FAT32_LBA    | PART_FLAG_HIDDEN)
+#define PARTITION_FAT16_LBA_H  (PARTITION_FAT16_LBA    | PART_FLAG_HIDDEN)
+
+#define PARTITION_COMPAQ_DIAG  0x12
+#define PARTITION_MSFT_RECOVERY        0x27
+#define PARTITION_LDM          0x42
+#define PARTITION_LINUX_SWAP   0x82
+#define PARTITION_LINUX                0x83
+#define PARTITION_LINUX_EXT    0x85
+#define PARTITION_LINUX_LVM    0x8e
+#define PARTITION_HFS          0xaf
+#define PARTITION_SUN_UFS      0xbf
+#define PARTITION_DELL_DIAG    0xde
+#define PARTITION_GPT          0xee
+#define PARTITION_PALO         0xf0
+#define PARTITION_PREP         0x41
+#define PARTITION_LINUX_RAID   0xfd
+#define PARTITION_LINUX_LVM_OLD 0xfe
+
+/* This constant contains the maximum cylinder number that can be represented
+ * in (C,H,S) notation.  Higher cylinder numbers are reserved for
+ * "too big" indicators (in which case only LBA addressing can be used).
+ *     Some partition tables in the wild indicate this number is 1021.
+ * (i.e. 1022 is sometimes used to indicate "use LBA").
+ */
+#define MAX_CHS_CYLINDER       1021
+#define MAX_TOTAL_PART         16
+
+typedef struct _DosRawPartition                DosRawPartition;
+typedef struct _DosRawTable            DosRawTable;
+
+/* note: lots of bit-bashing here, thus, you shouldn't look inside it.
+ * Use chs_to_sector() and sector_to_chs() instead.
+ */
+typedef struct {
+       uint8_t         head;
+       uint8_t         sector;
+       uint8_t         cylinder;
+} __attribute__((packed)) RawCHS;
+
+/* ripped from Linux source */
+struct _DosRawPartition {
+        uint8_t                boot_ind;       /* 00:  0x80 - active */
+       RawCHS          chs_start;      /* 01: */
+       uint8_t         type;           /* 04: partition type */
+       RawCHS          chs_end;        /* 05: */
+       uint32_t        start;          /* 08: starting sector counting from 0 */
+       uint32_t        length;         /* 0c: nr of sectors in partition */
+} __attribute__((packed));
+
+struct _DosRawTable {
+       char                    boot_code [440];
+       uint32_t                mbr_signature;  /* really a unique ID */
+       uint16_t                Unknown;
+       DosRawPartition         partitions [DOS_N_PRI_PARTITIONS];
+       uint16_t                magic;
+} __attribute__((packed));
+
+/* OrigState is information we want to preserve about the partition for
+ * dealing with CHS issues
+ */
+typedef struct {
+       PedGeometry     geom;
+       DosRawPartition raw_part;
+       PedSector       lba_offset;     /* needed for computing start/end for
+                                        * logical partitions */
+} OrigState;
+
+typedef struct {
+        int             cylinder_alignment;
+} DosDiskData;
+
+typedef struct {
+       unsigned char   system;
+       int             boot;
+       int             hidden;
+       int             raid;
+       int             lvm;
+       int             lba;
+       int             palo;
+       int             prep;
+       int             diag;
+       OrigState*      orig;                   /* used for CHS stuff */
+} DosPartitionData;
+
+static PedDiskType msdos_disk_type;
+
+#if 0
+From http://www.win.tue.nl/~aeb/linux/fs/fat/fat-1.html
+
+The 2-byte numbers are stored little endian (low order byte first).
+
+Here the FAT12 version, that is also the common part of the FAT12, FAT16 and FAT32 boot sectors. See further below.
+
+Bytes   Content
+0-2     Jump to bootstrap (E.g. eb 3c 90; on i86: JMP 003E NOP.
+        One finds either eb xx 90, or e9 xx xx.
+        The position of the bootstrap varies.)
+3-10    OEM name/version (E.g. "IBM  3.3", "IBM 20.0", "MSDOS5.0", "MSWIN4.0".
+        Various format utilities leave their own name, like "CH-FOR18".
+        Sometimes just garbage. Microsoft recommends "MSWIN4.1".)
+        /* BIOS Parameter Block starts here */
+11-12   Number of bytes per sector (512)
+        Must be one of 512, 1024, 2048, 4096.
+13      Number of sectors per cluster (1)
+        Must be one of 1, 2, 4, 8, 16, 32, 64, 128.
+        A cluster should have at most 32768 bytes. In rare cases 65536 is OK.
+14-15   Number of reserved sectors (1)
+        FAT12 and FAT16 use 1. FAT32 uses 32.
+16      Number of FAT copies (2)
+17-18   Number of root directory entries (224)
+        0 for FAT32. 512 is recommended for FAT16.
+19-20   Total number of sectors in the filesystem (2880)
+        (in case the partition is not FAT32 and smaller than 32 MB)
+21      Media descriptor type (f0: 1.4 MB floppy, f8: hard disk; see below)
+22-23   Number of sectors per FAT (9)
+        0 for FAT32.
+24-25   Number of sectors per track (12)
+26-27   Number of heads (2, for a double-sided diskette)
+28-29   Number of hidden sectors (0)
+        Hidden sectors are sectors preceding the partition.
+        /* BIOS Parameter Block ends here */
+30-509  Bootstrap
+510-511 Signature 55 aa
+#endif
+
+/* There is a significant risk of misclassifying (as msdos)
+   a disk that is composed solely of a single FAT partition.
+   Return false if sector S could not be a valid FAT boot sector.
+   Otherwise, return true.  */
+static bool
+maybe_FAT (unsigned char const *s)
+{
+  if (! (s[0] == 0xeb || s[0] == 0xe9))
+    return false;
+
+  unsigned int sector_size = PED_LE16_TO_CPU (*(uint16_t *) (s + 11));
+  switch (sector_size)
+    {
+    case 512:
+    case 1024:
+    case 2048:
+    case 4096:
+      break;
+    default:
+      return false;
+    }
+
+  if (! (s[21] == 0xf0 || s[21] == 0xf8))
+    return false;
+
+  return true;
+}
+
+static int
+msdos_probe (const PedDevice *dev)
+{
+       PedDiskType*    disk_type;
+       DosRawTable*    part_table;
+       int             i;
+
+       PED_ASSERT (dev != NULL);
+
+        if (dev->sector_size < sizeof *part_table)
+                return 0;
+
+       void *label;
+       if (!ptt_read_sector (dev, 0, &label))
+               return 0;
+
+       part_table = (DosRawTable *) label;
+
+       /* check magic */
+       if (PED_LE16_TO_CPU (part_table->magic) != MSDOS_MAGIC)
+               goto probe_fail;
+
+       /* If this is a FAT fs, fail here.  Checking for the FAT signature
+        * has some false positives; instead, do what the Linux kernel does
+        * and ensure that each partition has a boot indicator that is
+        * either 0 or 0x80.
+        */
+       unsigned int n_active = 0;
+       for (i = 0; i < DOS_N_PRI_PARTITIONS; i++) {
+               if (part_table->partitions[i].boot_ind == 0x80)
+                       ++n_active;
+               if (part_table->partitions[i].boot_ind != 0
+                   && part_table->partitions[i].boot_ind != 0x80)
+                       goto probe_fail;
+       }
+
+       /* If there are no active partitions and this is probably
+          a FAT file system, do not classify it as msdos.  */
+       if (n_active == 0 && maybe_FAT (label))
+         goto probe_fail;
+
+       /* If this is a GPT disk, fail here */
+       for (i = 0; i < DOS_N_PRI_PARTITIONS; i++) {
+               if (part_table->partitions[i].type == PARTITION_GPT)
+                       goto probe_fail;
+       }
+
+       /* If this is an AIX Physical Volume, fail here.  IBMA in EBCDIC */
+       if (part_table->boot_code[0] == (char) 0xc9 &&
+           part_table->boot_code[1] == (char) 0xc2 &&
+           part_table->boot_code[2] == (char) 0xd4 &&
+           part_table->boot_code[3] == (char) 0xc1)
+               goto probe_fail;
+
+#ifdef ENABLE_PC98
+       /* HACK: it's impossible to tell PC98 and msdos disk labels apart.
+        * Someone made the signatures the same (very clever).  Since
+        * PC98 has some idiosyncracies with it's boot-loader, it's detection
+        * is more reliable */
+       disk_type = ped_disk_type_get ("pc98");
+       if (disk_type && disk_type->ops->probe (dev))
+               goto probe_fail;
+#endif /* ENABLE_PC98 */
+
+       free (label);
+       return 1;
+
+ probe_fail:
+       free (label);
+       return 0;
+}
+
+static PedDisk*
+msdos_alloc (const PedDevice* dev)
+{
+       PedDisk* disk;
+       PED_ASSERT (dev != NULL);
+
+       disk = _ped_disk_alloc ((PedDevice*)dev, &msdos_disk_type);
+        if (disk) {
+               DosDiskData *disk_specific = ped_malloc(sizeof *disk_specific);
+                if (!disk_specific) {
+                        free (disk);
+                        return NULL;
+                }
+                disk_specific->cylinder_alignment = 1;
+                disk->disk_specific = disk_specific;
+        }
+
+       return disk;
+}
+
+static PedDisk*
+msdos_duplicate (const PedDisk* disk)
+{
+       PedDisk*        new_disk;
+
+       new_disk = ped_disk_new_fresh (disk->dev, &msdos_disk_type);
+       if (!new_disk)
+               return NULL;
+
+        memcpy(new_disk->disk_specific, disk->disk_specific,
+               sizeof(DosDiskData));
+
+       return new_disk;
+}
+
+static void
+msdos_free (PedDisk* disk)
+{
+       PED_ASSERT (disk != NULL);
+
+       DosDiskData *disk_specific = disk->disk_specific;
+       _ped_disk_free (disk);
+       free(disk_specific);
+}
+
+static int
+msdos_disk_set_flag (PedDisk *disk, PedDiskFlag flag, int state)
+{
+        DosDiskData *disk_specific = disk->disk_specific;
+        switch (flag) {
+        case PED_DISK_CYLINDER_ALIGNMENT:
+                disk_specific->cylinder_alignment = !!state;
+                return 1;
+        default:
+                return 0;
+        }
+}
+
+static int
+msdos_disk_get_flag (const PedDisk *disk, PedDiskFlag flag)
+{
+        DosDiskData *disk_specific = disk->disk_specific;
+        switch (flag) {
+        case PED_DISK_CYLINDER_ALIGNMENT:
+                return disk_specific->cylinder_alignment;
+        default:
+                return 0;
+        }
+}
+
+static int
+msdos_disk_is_flag_available (const PedDisk *disk, PedDiskFlag flag)
+{
+        switch (flag) {
+        case PED_DISK_CYLINDER_ALIGNMENT:
+               return 1;
+        default:
+               return 0;
+        }
+}
+
+static int
+chs_get_cylinder (const RawCHS* chs)
+{
+       return chs->cylinder + ((chs->sector >> 6) << 8);
+}
+
+static int
+chs_get_head (const RawCHS* chs)
+{
+       return chs->head;
+}
+
+/* counts from 0 */
+static int
+chs_get_sector (const RawCHS* chs)
+{
+       return (chs->sector & 0x3f) - 1;
+}
+
+static PedSector
+chs_to_sector (const PedDevice* dev, const PedCHSGeometry *bios_geom,
+              const RawCHS* chs)
+{
+       PedSector       c;              /* not measured in sectors, but need */
+       PedSector       h;              /* lots of bits */
+       PedSector       s;
+
+       PED_ASSERT (bios_geom != NULL);
+       PED_ASSERT (chs != NULL);
+
+       c = chs_get_cylinder (chs);
+       h = chs_get_head (chs);
+       s = chs_get_sector (chs);
+
+       if (c > MAX_CHS_CYLINDER)               /* MAGIC: C/H/S is irrelevant */
+               return 0;
+       if (s < 0)
+               return 0;
+       return (c * bios_geom->heads + h) * bios_geom->sectors + s;
+}
+
+static void
+sector_to_chs (const PedDevice* dev, const PedCHSGeometry* bios_geom,
+              PedSector sector, RawCHS* chs)
+{
+       PedSector       real_c, real_h, real_s;
+
+       PED_ASSERT (dev != NULL);
+       PED_ASSERT (chs != NULL);
+
+       if (!bios_geom)
+               bios_geom = &dev->bios_geom;
+
+       real_c = sector / (bios_geom->heads * bios_geom->sectors);
+       real_h = (sector / bios_geom->sectors) % bios_geom->heads;
+       real_s = sector % bios_geom->sectors;
+
+       if (real_c > MAX_CHS_CYLINDER) {
+               real_c = 1023;
+               real_h = bios_geom->heads - 1;
+               real_s = bios_geom->sectors - 1;
+       }
+
+       chs->cylinder = real_c % 0x100;
+       chs->head = real_h;
+       chs->sector = real_s + 1 + (real_c >> 8 << 6);
+}
+
+static PedSector
+legacy_start (const PedDisk* disk, const PedCHSGeometry* bios_geom,
+             const DosRawPartition* raw_part)
+{
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (raw_part != NULL);
+
+       return chs_to_sector (disk->dev, bios_geom, &raw_part->chs_start);
+}
+
+static PedSector
+legacy_end (const PedDisk* disk, const PedCHSGeometry* bios_geom,
+           const DosRawPartition* raw_part)
+{
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (raw_part != NULL);
+
+       return chs_to_sector (disk->dev, bios_geom, &raw_part->chs_end);
+}
+
+static PedSector
+linear_start (const PedDisk* disk, const DosRawPartition* raw_part,
+             PedSector offset)
+{
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (raw_part != NULL);
+
+       return offset + PED_LE32_TO_CPU (raw_part->start);
+}
+
+static PedSector
+linear_end (const PedDisk* disk, const DosRawPartition* raw_part,
+           PedSector offset)
+{
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (raw_part != NULL);
+
+       return (linear_start (disk, raw_part, offset)
+                + (PED_LE32_TO_CPU (raw_part->length) - 1));
+}
+
+#ifndef DISCOVER_ONLY
+static int
+partition_check_bios_geometry (PedPartition* part, PedCHSGeometry* bios_geom)
+{
+       PedSector               leg_start, leg_end;
+       DosPartitionData*       dos_data;
+       PedDisk*                disk;
+
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk != NULL);
+       PED_ASSERT (part->disk_specific != NULL);
+       dos_data = part->disk_specific;
+
+       if (!dos_data->orig)
+               return 1;
+
+       disk = part->disk;
+       leg_start = legacy_start (disk, bios_geom, &dos_data->orig->raw_part);
+       leg_end = legacy_end (disk, bios_geom, &dos_data->orig->raw_part);
+
+       if (leg_start && leg_start != dos_data->orig->geom.start)
+               return 0;
+       if (leg_end && leg_end != dos_data->orig->geom.end)
+               return 0;
+       return 1;
+}
+
+static int
+disk_check_bios_geometry (const PedDisk* disk, PedCHSGeometry* bios_geom)
+{
+       PedPartition* part = NULL;
+
+       PED_ASSERT (disk != NULL);
+
+       while ((part = ped_disk_next_partition (disk, part))) {
+               if (ped_partition_is_active (part)) {
+                       if (!partition_check_bios_geometry (part, bios_geom))
+                               return 0;
+               }
+       }
+
+       return 1;
+}
+
+static int
+probe_filesystem_for_geom (const PedPartition* part, PedCHSGeometry* bios_geom)
+{
+       const char* ms_types[] = {"ntfs", "fat16", "fat32", NULL};
+       int i;
+       int found;
+       unsigned char* buf;
+       int sectors;
+       int heads;
+       int res = 0;
+
+       PED_ASSERT (bios_geom        != NULL);
+        PED_ASSERT (part             != NULL);
+        PED_ASSERT (part->disk       != NULL);
+        PED_ASSERT (part->disk->dev  != NULL);
+        PED_ASSERT (part->disk->dev->sector_size % PED_SECTOR_SIZE_DEFAULT == 0);
+
+        buf = ped_malloc (part->disk->dev->sector_size);
+
+       if (!buf)
+               return 0;
+
+       if (!part->fs_type)
+               goto end;
+
+       found = 0;
+       for (i = 0; ms_types[i]; i++) {
+               if (!strcmp(ms_types[i], part->fs_type->name))
+                       found = 1;
+       }
+       if (!found)
+               goto end;
+
+       if (!ped_geometry_read(&part->geom, buf, 0, 1))
+               goto end;
+
+       /* shared by the start of all Microsoft file systems */
+       sectors = buf[0x18] + (buf[0x19] << 8);
+       heads = buf[0x1a] + (buf[0x1b] << 8);
+
+       if (sectors < 1 || sectors > 63)
+               goto end;
+       if (heads > 255 || heads < 1)
+               goto end;
+
+       bios_geom->sectors = sectors;
+       bios_geom->heads = heads;
+       bios_geom->cylinders = part->disk->dev->length / (sectors * heads);
+       res = 1;
+end:
+       free(buf);
+       return res;
+}
+
+/* This function attempts to infer the BIOS CHS geometry of the hard disk
+ * from the CHS + LBA information contained in the partition table from
+ * a single partition's entry.
+ *
+ * This involves some maths.  Let (c,h,s,a) be the starting cylinder,
+ * starting head, starting sector and LBA start address of the partition.
+ * Likewise, (C,H,S,A) the end addresses.  Using both of these pieces
+ * of information, we want to deduce cyl_sectors and head_sectors which
+ * are the sizes of a single cylinder and a single head, respectively.
+ *
+ * The relationships are:
+ * c*cyl_sectors + h * head_sectors + s = a
+ * C*cyl_sectors + H * head_sectors + S = A
+ *
+ * We can rewrite this in matrix form:
+ *
+ * [ c h ] [ cyl_sectors  ]  =  [ s - a ]  =  [ a_ ]
+ * [ C H ] [ head_sectors ]     [ S - A ]     [ A_ ].
+ *
+ * (s - a is abbreviated to a_to simplify the notation.)
+ *
+ * This can be abbreviated into augmented matrix form:
+ *
+ * [ c h | a_ ]
+ * [ C H | A_ ].
+ *
+ * Solving these equations requires following the row reduction algorithm.  We
+ * need to be careful about a few things though:
+ *     - the equations might be linearly dependent, in which case there
+ *     are many solutions.
+ *     - the equations might be inconsistent, in which case there
+ *     are no solutions.  (Inconsistent partition table entry!)
+ *     - there might be zeros, so we need to be careful about applying
+ *     the algorithm.  We know, however, that C > 0.
+ */
+static int
+probe_partition_for_geom (const PedPartition* part, PedCHSGeometry* bios_geom)
+{
+       DosPartitionData* dos_data;
+       RawCHS* start_chs;
+       RawCHS* end_chs;
+       PedSector c, h, s, a, a_;       /* start */
+       PedSector C, H, S, A, A_;       /* end */
+       PedSector dont_overflow, denum;
+       PedSector cyl_size, head_size;
+       PedSector cylinders, heads, sectors;
+
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk_specific != NULL);
+       PED_ASSERT (bios_geom != NULL);
+
+       dos_data = part->disk_specific;
+
+       if (!dos_data->orig)
+               return 0;
+
+       start_chs = &dos_data->orig->raw_part.chs_start;
+       c = chs_get_cylinder (start_chs);
+       h = chs_get_head (start_chs);
+       s = chs_get_sector (start_chs);
+       a = dos_data->orig->geom.start;
+       a_ = a - s;
+
+       end_chs = &dos_data->orig->raw_part.chs_end;
+       C = chs_get_cylinder (end_chs);
+       H = chs_get_head (end_chs);
+       S = chs_get_sector (end_chs);
+       A = dos_data->orig->geom.end;
+       A_ = A - S;
+
+       if (h < 0 || H < 0 || h > 254 || H > 254)
+               return 0;
+       if (c > C)
+               return 0;
+
+       /* If no geometry is feasible, then don't even bother.
+        * Useful for eliminating assertions for broken partition
+        * tables generated by Norton Ghost et al.
+        */
+       if (A > (C+1) * 255 * 63)
+               return 0;
+
+       /* Not enough information.  In theory, we can do better.  Should we? */
+       if (C > MAX_CHS_CYLINDER)
+               return 0;
+       if (C == 0)
+               return 0;
+
+       /* Calculate the maximum number that can be multiplied by
+        * any head count without overflowing a PedSector
+        * 2^8 = 256, 8 bits + 1(sign bit) = 9
+        */
+       dont_overflow = 1;
+       dont_overflow <<= (8*sizeof(dont_overflow)) - 9;
+       dont_overflow--;
+
+       if (a_ > dont_overflow || A_ > dont_overflow)
+               return 0;
+
+       /* The matrix is solved by :
+        *
+        * [ c h | a_]                  R1
+        * [ C H | A_]                  R2
+        *
+        * (cH - Ch) cyl_size = a_H - A_h               H R1 - h R2
+        * => (if cH - Ch != 0) cyl_size = (a_H - A_h) / (cH - Ch)
+        *
+        * (Hc - hC) head_size = A_c - a_C              c R2 - C R1
+        * => (if cH - Ch != 0) head_size = (A_c - a_C) / (cH - Ch)
+        *
+        *   But this calculation of head_size would need
+        *   not overflowing A_c or a_C
+        *   So substitution is use instead, to minimize dimension
+        *   of temporary results :
+        *
+        * If h != 0 : head_size = ( a_ - c cyl_size ) / h
+        * If H != 0 : head_size = ( A_ - C cyl_size ) / H
+        *
+        */
+       denum = c * H - C * h;
+       if (denum == 0)
+               return 0;
+
+       cyl_size = (a_*H - A_*h) / denum;
+       /* Check for non integer result */
+       if (cyl_size * denum != a_*H - A_*h)
+               return 0;
+
+       if (!(cyl_size > 0))
+               return 0;
+       if (!(cyl_size <= 255 * 63))
+               return 0;
+
+       if (h > 0)
+               head_size = ( a_ - c * cyl_size ) / h;
+       else if (H > 0)
+               head_size = ( A_ - C * cyl_size ) / H;
+       else {
+               /* should not happen because denum != 0 */
+               PED_ASSERT (0);
+       }
+
+       if (!(head_size > 0))
+               return 0;
+       if (!(head_size <= 63))
+               return 0;
+
+       cylinders = part->disk->dev->length / cyl_size;
+       heads = cyl_size / head_size;
+       sectors = head_size;
+
+       if (!(heads > 0))
+               return 0;
+       if (!(heads < 256))
+               return 0;
+
+       if (!(sectors > 0))
+               return 0;
+       if (!(sectors <= 63))
+               return 0;
+
+       /* Some broken OEM partitioning program(s) seem to have an out-by-one
+        * error on the end of partitions.  We should offer to fix the
+        * partition table...
+        */
+       if (((C + 1) * heads + H) * sectors + S == A)
+               C++;
+
+       if (!((c * heads + h) * sectors + s == a))
+               return 0;
+       if (!((C * heads + H) * sectors + S == A))
+               return 0;
+
+       bios_geom->cylinders = cylinders;
+       bios_geom->heads = heads;
+       bios_geom->sectors = sectors;
+
+       return 1;
+}
+
+static void
+partition_probe_bios_geometry (const PedPartition* part,
+                               PedCHSGeometry* bios_geom)
+{
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk != NULL);
+       PED_ASSERT (bios_geom != NULL);
+
+       if (ped_partition_is_active (part)) {
+               if (probe_partition_for_geom (part, bios_geom))
+                       return;
+               if (part->type & PED_PARTITION_EXTENDED) {
+                       if (probe_filesystem_for_geom (part, bios_geom))
+                               return;
+               }
+       }
+       if (part->type & PED_PARTITION_LOGICAL) {
+               PedPartition* ext_part;
+               ext_part = ped_disk_extended_partition (part->disk);
+               PED_ASSERT (ext_part != NULL);
+               partition_probe_bios_geometry (ext_part, bios_geom);
+       } else {
+               *bios_geom = part->disk->dev->bios_geom;
+       }
+}
+
+static void
+disk_probe_bios_geometry (const PedDisk* disk, PedCHSGeometry* bios_geom)
+{
+       PedPartition*   part;
+
+       /* first look at the boot partition */
+       part = NULL;
+       while ((part = ped_disk_next_partition (disk, part))) {
+               if (!ped_partition_is_active (part))
+                       continue;
+               if (ped_partition_get_flag (part, PED_PARTITION_BOOT)) {
+                       if (probe_filesystem_for_geom (part, bios_geom))
+                               return;
+                       if (probe_partition_for_geom (part, bios_geom))
+                               return;
+               }
+       }
+
+       /* that didn't work... try all partition table entries */
+       part = NULL;
+       while ((part = ped_disk_next_partition (disk, part))) {
+               if (ped_partition_is_active (part)) {
+                       if (probe_partition_for_geom (part, bios_geom))
+                               return;
+               }
+       }
+
+       /* that didn't work... look at all file systems */
+       part = NULL;
+       while ((part = ped_disk_next_partition (disk, part))) {
+               if (ped_partition_is_active (part)) {
+                       if (probe_filesystem_for_geom (part, bios_geom))
+                               return;
+               }
+       }
+}
+#endif /* !DISCOVER_ONLY */
+
+static int
+raw_part_is_extended (const DosRawPartition* raw_part)
+{
+       PED_ASSERT (raw_part != NULL);
+
+       switch (raw_part->type) {
+       case PARTITION_DOS_EXT:
+       case PARTITION_EXT_LBA:
+       case PARTITION_LINUX_EXT:
+               return 1;
+
+       default:
+               return 0;
+       }
+
+       return 0;
+}
+
+static int
+raw_part_is_hidden (const DosRawPartition* raw_part)
+{
+       PED_ASSERT (raw_part != NULL);
+
+       switch (raw_part->type) {
+       case PARTITION_FAT12_H:
+       case PARTITION_FAT16_SM_H:
+       case PARTITION_FAT16_H:
+       case PARTITION_FAT32_H:
+       case PARTITION_NTFS_H:
+       case PARTITION_FAT32_LBA_H:
+       case PARTITION_FAT16_LBA_H:
+               return 1;
+
+       default:
+               return 0;
+       }
+
+       return 0;
+}
+
+static int
+raw_part_is_lba (const DosRawPartition* raw_part)
+{
+       PED_ASSERT (raw_part != NULL);
+
+       switch (raw_part->type) {
+       case PARTITION_FAT32_LBA:
+       case PARTITION_FAT16_LBA:
+       case PARTITION_EXT_LBA:
+       case PARTITION_FAT32_LBA_H:
+       case PARTITION_FAT16_LBA_H:
+               return 1;
+
+       default:
+               return 0;
+       }
+
+       return 0;
+}
+
+static PedPartition*
+raw_part_parse (const PedDisk* disk, const DosRawPartition* raw_part,
+               PedSector lba_offset, PedPartitionType type)
+{
+       PedPartition* part;
+       DosPartitionData* dos_data;
+
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (raw_part != NULL);
+
+       part = ped_partition_new (
+               disk, type, NULL,
+               linear_start (disk, raw_part, lba_offset),
+               linear_end (disk, raw_part, lba_offset));
+       if (!part)
+               return NULL;
+       dos_data = part->disk_specific;
+       dos_data->system = raw_part->type;
+       dos_data->boot = raw_part->boot_ind != 0;
+       dos_data->diag = raw_part->type == PARTITION_COMPAQ_DIAG ||
+                        raw_part->type == PARTITION_MSFT_RECOVERY ||
+                        raw_part->type == PARTITION_DELL_DIAG;
+       dos_data->hidden = raw_part_is_hidden (raw_part);
+       dos_data->raid = raw_part->type == PARTITION_LINUX_RAID;
+       dos_data->lvm = raw_part->type == PARTITION_LINUX_LVM_OLD
+                       || raw_part->type == PARTITION_LINUX_LVM;
+       dos_data->lba = raw_part_is_lba (raw_part);
+       dos_data->palo = raw_part->type == PARTITION_PALO;
+       dos_data->prep = raw_part->type == PARTITION_PREP;
+       dos_data->orig = ped_malloc (sizeof (OrigState));
+       if (!dos_data->orig) {
+               ped_partition_destroy (part);
+               return NULL;
+       }
+       dos_data->orig->geom = part->geom;
+       dos_data->orig->raw_part = *raw_part;
+       dos_data->orig->lba_offset = lba_offset;
+       return part;
+}
+
+static int
+read_table (PedDisk* disk, PedSector sector, int is_extended_table)
+{
+       int                     i;
+       DosRawTable*            table;
+       DosRawPartition*        raw_part;
+       PedPartition*           part;
+       PedPartitionType        type;
+       PedSector               lba_offset;
+
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (disk->dev != NULL);
+
+       void *label = NULL;
+       if (!ptt_read_sector (disk->dev, sector, &label))
+               goto error;
+
+        table = (DosRawTable *) label;
+
+       /* weird: empty extended partitions are filled with 0xf6 by PM */
+       if (is_extended_table
+           && PED_LE16_TO_CPU (table->magic) == PARTITION_MAGIC_MAGIC)
+               goto read_ok;
+
+#ifndef DISCOVER_ONLY
+       if (PED_LE16_TO_CPU (table->magic) != MSDOS_MAGIC) {
+               if (ped_exception_throw (
+                       PED_EXCEPTION_ERROR, PED_EXCEPTION_IGNORE_CANCEL,
+                       _("Invalid partition table on %s "
+                         "-- wrong signature %x."),
+                       disk->dev->path,
+                       PED_LE16_TO_CPU (table->magic))
+                               != PED_EXCEPTION_IGNORE)
+                       goto error;
+               goto read_ok;
+       }
+#endif
+
+       /* parse the partitions from this table */
+       for (i = 0; i < DOS_N_PRI_PARTITIONS; i++) {
+               raw_part = &table->partitions [i];
+               if (raw_part->type == PARTITION_EMPTY || !raw_part->length)
+                       continue;
+
+               /* process nested extended partitions after normal logical
+                * partitions, to make sure we get the order right.
+                */
+               if (is_extended_table && raw_part_is_extended (raw_part))
+                       continue;
+
+               lba_offset = is_extended_table ? sector : 0;
+
+               if (linear_start (disk, raw_part, lba_offset) == sector) {
+                       if (ped_exception_throw (
+                               PED_EXCEPTION_ERROR,
+                               PED_EXCEPTION_IGNORE_CANCEL,
+                               _("Invalid partition table - recursive "
+                               "partition on %s."),
+                               disk->dev->path)
+                                       != PED_EXCEPTION_IGNORE)
+                               goto error;
+                       continue;       /* avoid infinite recursion */
+               }
+
+               if (is_extended_table)
+                       type = PED_PARTITION_LOGICAL;
+               else if (raw_part_is_extended (raw_part))
+                       type = PED_PARTITION_EXTENDED;
+               else
+                       type = PED_PARTITION_NORMAL;
+
+               part = raw_part_parse (disk, raw_part, lba_offset, type);
+               if (!part)
+                       goto error;
+               if (!is_extended_table)
+                       part->num = i + 1;
+               if (type != PED_PARTITION_EXTENDED)
+                       part->fs_type = ped_file_system_probe (&part->geom);
+
+               PedConstraint *constraint_exact
+                 = ped_constraint_exact (&part->geom);
+               bool ok = ped_disk_add_partition (disk, part, constraint_exact);
+               ped_constraint_destroy (constraint_exact);
+               if (!ok)
+                       goto error;
+
+               /* non-nested extended partition */
+               if (part->type == PED_PARTITION_EXTENDED) {
+                       if (!read_table (disk, part->geom.start, 1))
+                               goto error;
+               }
+       }
+
+       if (is_extended_table) {
+               /* process the nested extended partitions */
+               for (i = 0; i < DOS_N_PRI_PARTITIONS; i++) {
+                       PedSector part_start;
+
+                       raw_part = &table->partitions [i];
+                       if (!raw_part_is_extended (raw_part))
+                               continue;
+
+                       lba_offset = ped_disk_extended_partition
+                                       (disk)->geom.start;
+                       part_start = linear_start (disk, raw_part, lba_offset);
+                       if (part_start == sector) {
+                               /* recursive table - already threw an
+                                * exception above.
+                                */
+                               continue;
+                       }
+                       if (!read_table (disk, part_start, 1))
+                               goto error;
+               }
+       }
+
+read_ok:
+       free (label);
+       return 1;
+
+error:
+       free (label);
+       ped_disk_delete_all (disk);
+       return 0;
+}
+
+static int
+msdos_read (PedDisk* disk)
+{
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (disk->dev != NULL);
+
+       ped_disk_delete_all (disk);
+       if (!read_table (disk, 0, 0))
+               return 0;
+
+#ifndef DISCOVER_ONLY
+       /* try to figure out the correct BIOS CHS values */
+       if (!disk_check_bios_geometry (disk, &disk->dev->bios_geom)) {
+               PedCHSGeometry bios_geom = disk->dev->bios_geom;
+               disk_probe_bios_geometry (disk, &bios_geom);
+
+               /* if the geometry was wrong, then we should reread, to
+                * make sure the metadata is allocated in the right places.
+                */
+               if (disk->dev->bios_geom.cylinders != bios_geom.cylinders
+                   || disk->dev->bios_geom.heads != bios_geom.heads
+                   || disk->dev->bios_geom.sectors != bios_geom.sectors) {
+                       disk->dev->bios_geom = bios_geom;
+                       return msdos_read (disk);
+               }
+       }
+#endif
+
+       return 1;
+}
+
+#ifndef DISCOVER_ONLY
+static int
+fill_raw_part (DosRawPartition* raw_part,
+               const PedPartition* part, PedSector offset)
+{
+       DosPartitionData*       dos_data;
+       PedCHSGeometry          bios_geom;
+
+       PED_ASSERT (raw_part != NULL);
+       PED_ASSERT (part != NULL);
+
+       partition_probe_bios_geometry (part, &bios_geom);
+
+       dos_data = part->disk_specific;
+
+       raw_part->boot_ind = 0x80 * dos_data->boot;
+       raw_part->type = dos_data->system;
+       raw_part->start = PED_CPU_TO_LE32 (part->geom.start - offset);
+       raw_part->length = PED_CPU_TO_LE32 (part->geom.length);
+
+       sector_to_chs (part->disk->dev, &bios_geom, part->geom.start,
+                      &raw_part->chs_start);
+       sector_to_chs (part->disk->dev, &bios_geom, part->geom.end,
+                      &raw_part->chs_end);
+
+       if (dos_data->orig) {
+               DosRawPartition* orig_raw_part = &dos_data->orig->raw_part;
+               if (dos_data->orig->geom.start == part->geom.start)
+                       raw_part->chs_start = orig_raw_part->chs_start;
+               if (dos_data->orig->geom.end == part->geom.end)
+                       raw_part->chs_end = orig_raw_part->chs_end;
+       }
+
+       return 1;
+}
+
+static int
+fill_ext_raw_part_geom (DosRawPartition* raw_part,
+                        const PedCHSGeometry* bios_geom,
+                       const PedGeometry* geom, PedSector offset)
+{
+       PED_ASSERT (raw_part != NULL);
+       PED_ASSERT (geom != NULL);
+       PED_ASSERT (geom->dev != NULL);
+
+       raw_part->boot_ind = 0;
+       raw_part->type = PARTITION_DOS_EXT;
+       raw_part->start = PED_CPU_TO_LE32 (geom->start - offset);
+       raw_part->length = PED_CPU_TO_LE32 (geom->length);
+
+       sector_to_chs (geom->dev, bios_geom, geom->start, &raw_part->chs_start);
+       sector_to_chs (geom->dev, bios_geom, geom->start + geom->length - 1,
+                      &raw_part->chs_end);
+
+       return 1;
+}
+
+static int
+write_ext_table (const PedDisk* disk,
+                 PedSector sector, const PedPartition* logical)
+{
+       PedPartition*           part;
+       PedSector               lba_offset;
+
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (ped_disk_extended_partition (disk) != NULL);
+       PED_ASSERT (logical != NULL);
+
+       lba_offset = ped_disk_extended_partition (disk)->geom.start;
+
+       void* s;
+       if (!ptt_read_sector (disk->dev, sector, &s))
+               return 0;
+
+       DosRawTable *table = s;
+       memset(&(table->partitions), 0, sizeof (table->partitions));
+       table->magic = PED_CPU_TO_LE16 (MSDOS_MAGIC);
+
+       int ok = 0;
+       if (!fill_raw_part (&table->partitions[0], logical, sector))
+               goto cleanup;
+
+       part = ped_disk_get_partition (disk, logical->num + 1);
+       if (part) {
+               PedGeometry*            geom;
+               PedCHSGeometry          bios_geom;
+
+               geom = ped_geometry_new (disk->dev, part->prev->geom.start,
+                               part->geom.end - part->prev->geom.start + 1);
+               if (!geom)
+                       goto cleanup;
+               partition_probe_bios_geometry (part, &bios_geom);
+               fill_ext_raw_part_geom (&table->partitions[1], &bios_geom,
+                                       geom, lba_offset);
+               ped_geometry_destroy (geom);
+
+               if (!write_ext_table (disk, part->prev->geom.start, part))
+                       goto cleanup;
+       }
+
+       ok = ped_device_write (disk->dev, table, sector, 1);
+ cleanup:
+       free (s);
+       return ok;
+}
+
+static int
+write_empty_table (const PedDisk* disk, PedSector sector)
+{
+       DosRawTable             table;
+       void*                   table_sector;
+
+       PED_ASSERT (disk != NULL);
+
+       if (ptt_read_sector (disk->dev, sector, &table_sector)) {
+               memcpy (&table, table_sector, sizeof (table));
+               free(table_sector);
+       }
+       memset (&(table.partitions), 0, sizeof (table.partitions));
+       table.magic = PED_CPU_TO_LE16 (MSDOS_MAGIC);
+
+       return ped_device_write (disk->dev, (void*) &table, sector, 1);
+}
+
+/* Find the first logical partition, and write the partition table for it.
+ */
+static int
+write_extended_partitions (const PedDisk* disk)
+{
+       PedPartition*           ext_part;
+       PedPartition*           part;
+       PedCHSGeometry          bios_geom;
+
+       PED_ASSERT (disk != NULL);
+
+       ext_part = ped_disk_extended_partition (disk);
+       partition_probe_bios_geometry (ext_part, &bios_geom);
+       part = ped_disk_get_partition (disk, 5);
+       if (part)
+               return write_ext_table (disk, ext_part->geom.start, part);
+       else
+               return write_empty_table (disk, ext_part->geom.start);
+}
+
+static inline uint32_t generate_random_id (void)
+{
+       struct timeval tv;
+       int rc;
+       rc = gettimeofday(&tv, NULL);
+       if (rc == -1)
+               return 0;
+       return (uint32_t)(tv.tv_usec & 0xFFFFFFFFUL);
+}
+
+static int
+msdos_write (const PedDisk* disk)
+{
+       PedPartition*           part;
+       int                     i;
+
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (disk->dev != NULL);
+
+       void *s0;
+       if (!ptt_read_sector (disk->dev, 0, &s0))
+               return 0;
+       DosRawTable *table = (DosRawTable *) s0;
+
+       if (!table->boot_code[0]) {
+               memset (table->boot_code, 0, 512);
+               memcpy (table->boot_code, MBR_BOOT_CODE, sizeof (MBR_BOOT_CODE));
+       }
+
+       /* If there is no unique identifier, generate a random one */
+       if (!table->mbr_signature)
+               table->mbr_signature = generate_random_id();
+
+       memset (table->partitions, 0, sizeof (table->partitions));
+       table->magic = PED_CPU_TO_LE16 (MSDOS_MAGIC);
+
+       for (i=1; i<=DOS_N_PRI_PARTITIONS; i++) {
+               part = ped_disk_get_partition (disk, i);
+               if (!part)
+                       continue;
+
+               if (!fill_raw_part (&table->partitions [i - 1], part, 0))
+                       goto write_fail;
+
+               if (part->type == PED_PARTITION_EXTENDED) {
+                       if (!write_extended_partitions (disk))
+                               goto write_fail;
+               }
+       }
+
+        int write_ok = ped_device_write (disk->dev, (void*) table, 0, 1);
+        free (s0);
+       if (!write_ok)
+               return 0;
+       return ped_device_sync (disk->dev);
+
+ write_fail:
+        free (s0);
+        return 0;
+
+}
+#endif /* !DISCOVER_ONLY */
+
+static PedPartition*
+msdos_partition_new (const PedDisk* disk, PedPartitionType part_type,
+                    const PedFileSystemType* fs_type,
+                    PedSector start, PedSector end)
+{
+       PedPartition*           part;
+       DosPartitionData*       dos_data;
+
+       part = _ped_partition_alloc (disk, part_type, fs_type, start, end);
+       if (!part)
+               goto error;
+
+       if (ped_partition_is_active (part)) {
+               part->disk_specific
+                       = dos_data = ped_malloc (sizeof (DosPartitionData));
+               if (!dos_data)
+                       goto error_free_part;
+               dos_data->orig = NULL;
+               dos_data->system = PARTITION_LINUX;
+               dos_data->hidden = 0;
+               dos_data->boot = 0;
+               dos_data->diag = 0;
+               dos_data->raid = 0;
+               dos_data->lvm = 0;
+               dos_data->lba = 0;
+               dos_data->palo = 0;
+               dos_data->prep = 0;
+       } else {
+               part->disk_specific = NULL;
+       }
+       return part;
+
+error_free_part:
+       free (part);
+error:
+       return 0;
+}
+
+static PedPartition*
+msdos_partition_duplicate (const PedPartition* part)
+{
+       PedPartition*           new_part;
+       DosPartitionData*       new_dos_data;
+       DosPartitionData*       old_dos_data;
+
+       new_part = ped_partition_new (part->disk, part->type, part->fs_type,
+                                     part->geom.start, part->geom.end);
+       if (!new_part)
+               return NULL;
+       new_part->num = part->num;
+
+       old_dos_data = (DosPartitionData*) part->disk_specific;
+       new_dos_data = (DosPartitionData*) new_part->disk_specific;
+       new_dos_data->system = old_dos_data->system;
+       new_dos_data->boot = old_dos_data->boot;
+       new_dos_data->diag = old_dos_data->diag;
+       new_dos_data->hidden = old_dos_data->hidden;
+       new_dos_data->raid = old_dos_data->raid;
+       new_dos_data->lvm = old_dos_data->lvm;
+       new_dos_data->lba = old_dos_data->lba;
+       new_dos_data->palo = old_dos_data->palo;
+       new_dos_data->prep = old_dos_data->prep;
+
+       if (old_dos_data->orig) {
+               new_dos_data->orig = ped_malloc (sizeof (OrigState));
+               if (!new_dos_data->orig) {
+                       ped_partition_destroy (new_part);
+                       return NULL;
+               }
+               new_dos_data->orig->geom = old_dos_data->orig->geom;
+               new_dos_data->orig->raw_part = old_dos_data->orig->raw_part;
+               new_dos_data->orig->lba_offset = old_dos_data->orig->lba_offset;
+       }
+       return new_part;
+}
+
+static void
+msdos_partition_destroy (PedPartition* part)
+{
+       PED_ASSERT (part != NULL);
+
+       if (ped_partition_is_active (part)) {
+               DosPartitionData* dos_data;
+               dos_data = (DosPartitionData*) part->disk_specific;
+               free (dos_data->orig);
+               free (part->disk_specific);
+       }
+       free (part);
+}
+
+static int
+msdos_partition_set_system (PedPartition* part,
+                           const PedFileSystemType* fs_type)
+{
+       DosPartitionData* dos_data = part->disk_specific;
+
+       part->fs_type = fs_type;
+
+       if (dos_data->hidden
+                   && fs_type
+                   && strncmp (fs_type->name, "fat", 3) != 0
+                   && strcmp (fs_type->name, "ntfs") != 0)
+               dos_data->hidden = 0;
+
+       if (part->type & PED_PARTITION_EXTENDED) {
+               dos_data->diag = 0;
+               dos_data->raid = 0;
+               dos_data->lvm = 0;
+               dos_data->palo = 0;
+               dos_data->prep = 0;
+               if (dos_data->lba)
+                       dos_data->system = PARTITION_EXT_LBA;
+               else
+                       dos_data->system = PARTITION_DOS_EXT;
+               return 1;
+       }
+
+       if (dos_data->diag) {
+               /* Don't change the system if it already is a diag type,
+                  otherwise use Compaq as almost all vendors use that. */
+               if (dos_data->system != PARTITION_COMPAQ_DIAG &&
+                   dos_data->system != PARTITION_MSFT_RECOVERY &&
+                   dos_data->system != PARTITION_DELL_DIAG)
+                       dos_data->system = PARTITION_COMPAQ_DIAG;
+               return 1;
+       }
+       if (dos_data->lvm) {
+               dos_data->system = PARTITION_LINUX_LVM;
+               return 1;
+       }
+       if (dos_data->raid) {
+               dos_data->system = PARTITION_LINUX_RAID;
+               return 1;
+       }
+       if (dos_data->palo) {
+               dos_data->system = PARTITION_PALO;
+               return 1;
+       }
+       if (dos_data->prep) {
+               dos_data->system = PARTITION_PREP;
+               return 1;
+       }
+
+       if (!fs_type)
+               dos_data->system = PARTITION_LINUX;
+       else if (!strcmp (fs_type->name, "fat16")) {
+               dos_data->system = dos_data->lba
+                                  ? PARTITION_FAT16_LBA : PARTITION_FAT16;
+               dos_data->system |= dos_data->hidden ? PART_FLAG_HIDDEN : 0;
+       } else if (!strcmp (fs_type->name, "fat32")) {
+               dos_data->system = dos_data->lba
+                                  ? PARTITION_FAT32_LBA : PARTITION_FAT32;
+               dos_data->system |= dos_data->hidden ? PART_FLAG_HIDDEN : 0;
+       } else if (!strcmp (fs_type->name, "ntfs")
+                  || !strcmp (fs_type->name, "hpfs")) {
+               dos_data->system = PARTITION_NTFS;
+               dos_data->system |= dos_data->hidden ? PART_FLAG_HIDDEN : 0;
+       } else if (!strcmp (fs_type->name, "hfs")
+                  || !strcmp (fs_type->name, "hfs+"))
+               dos_data->system = PARTITION_HFS;
+       else if (!strcmp (fs_type->name, "sun-ufs"))
+               dos_data->system = PARTITION_SUN_UFS;
+       else if (is_linux_swap (fs_type->name))
+               dos_data->system = PARTITION_LINUX_SWAP;
+       else
+               dos_data->system = PARTITION_LINUX;
+
+       return 1;
+}
+
+static void
+clear_flags (DosPartitionData *dos_data)
+{
+  dos_data->diag = 0;
+  dos_data->hidden = 0;
+  dos_data->lvm = 0;
+  dos_data->palo = 0;
+  dos_data->prep = 0;
+  dos_data->raid = 0;
+}
+
+static int
+msdos_partition_set_flag (PedPartition* part,
+                          PedPartitionFlag flag, int state)
+{
+       PedDisk*                        disk;
+       PedPartition*                   walk;
+       DosPartitionData*               dos_data;
+
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk_specific != NULL);
+       PED_ASSERT (part->disk != NULL);
+
+       dos_data = part->disk_specific;
+       disk = part->disk;
+
+       switch (flag) {
+       case PED_PARTITION_HIDDEN:
+               if (part->type == PED_PARTITION_EXTENDED) {
+                       ped_exception_throw (
+                               PED_EXCEPTION_ERROR,
+                               PED_EXCEPTION_CANCEL,
+                               _("Extended partitions cannot be hidden on "
+                                 "msdos disk labels."));
+                       return 0;
+               }
+               dos_data->hidden = state;
+               return ped_partition_set_system (part, part->fs_type);
+
+       case PED_PARTITION_BOOT:
+               dos_data->boot = state;
+               if (!state)
+                       return 1;
+
+               walk = ped_disk_next_partition (disk, NULL);
+               for (; walk; walk = ped_disk_next_partition (disk, walk)) {
+                       if (walk == part || !ped_partition_is_active (walk))
+                               continue;
+                       msdos_partition_set_flag (walk, PED_PARTITION_BOOT, 0);
+               }
+               return 1;
+
+       case PED_PARTITION_DIAG:
+               if (state)
+                       clear_flags (dos_data);
+               dos_data->diag = state;
+               return ped_partition_set_system (part, part->fs_type);
+
+       case PED_PARTITION_RAID:
+               if (state)
+                       clear_flags (dos_data);
+               dos_data->raid = state;
+               return ped_partition_set_system (part, part->fs_type);
+
+       case PED_PARTITION_LVM:
+               if (state)
+                       clear_flags (dos_data);
+               dos_data->lvm = state;
+               return ped_partition_set_system (part, part->fs_type);
+
+       case PED_PARTITION_LBA:
+               dos_data->lba = state;
+               return ped_partition_set_system (part, part->fs_type);
+
+       case PED_PARTITION_PALO:
+               if (state)
+                       clear_flags (dos_data);
+               dos_data->palo = state;
+               return ped_partition_set_system (part, part->fs_type);
+
+       case PED_PARTITION_PREP:
+               if (state)
+                       clear_flags (dos_data);
+               dos_data->prep = state;
+               return ped_partition_set_system (part, part->fs_type);
+
+       default:
+               return 0;
+       }
+}
+
+static int
+msdos_partition_get_flag (const PedPartition* part, PedPartitionFlag flag)
+{
+       DosPartitionData*       dos_data;
+
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk_specific != NULL);
+
+       dos_data = part->disk_specific;
+       switch (flag) {
+       case PED_PARTITION_HIDDEN:
+               if (part->type == PED_PARTITION_EXTENDED)
+                       return 0;
+               else
+                       return dos_data->hidden;
+
+       case PED_PARTITION_BOOT:
+               return dos_data->boot;
+
+       case PED_PARTITION_DIAG:
+               return dos_data->diag;
+
+       case PED_PARTITION_RAID:
+               return dos_data->raid;
+
+       case PED_PARTITION_LVM:
+               return dos_data->lvm;
+
+       case PED_PARTITION_LBA:
+               return dos_data->lba;
+
+       case PED_PARTITION_PALO:
+               return dos_data->palo;
+
+       case PED_PARTITION_PREP:
+               return dos_data->prep;
+
+       default:
+               return 0;
+       }
+}
+
+static int
+msdos_partition_is_flag_available (const PedPartition* part,
+                                  PedPartitionFlag flag)
+{
+       switch (flag) {
+       case PED_PARTITION_HIDDEN:
+               if (part->type == PED_PARTITION_EXTENDED)
+                       return 0;
+               else
+                       return 1;
+
+       case PED_PARTITION_BOOT:
+       case PED_PARTITION_RAID:
+       case PED_PARTITION_LVM:
+       case PED_PARTITION_LBA:
+       case PED_PARTITION_PALO:
+       case PED_PARTITION_PREP:
+       case PED_PARTITION_DIAG:
+               return 1;
+
+       default:
+               return 0;
+       }
+}
+
+static PedGeometry*
+_try_constraint (const PedPartition* part, const PedConstraint* external,
+                PedConstraint* internal)
+{
+       PedConstraint*          intersection;
+       PedGeometry*            solution;
+
+       intersection = ped_constraint_intersect (external, internal);
+       ped_constraint_destroy (internal);
+       if (!intersection)
+               return NULL;
+
+       solution = ped_constraint_solve_nearest (intersection, &part->geom);
+       ped_constraint_destroy (intersection);
+       return solution;
+}
+
+static PedGeometry*
+_best_solution (const PedPartition* part, const PedCHSGeometry* bios_geom,
+               PedGeometry* a, PedGeometry* b)
+{
+       PedSector       cyl_size = bios_geom->heads * bios_geom->sectors;
+       int             a_cylinder;
+       int             b_cylinder;
+
+       if (!a)
+               return b;
+       if (!b)
+               return a;
+
+       a_cylinder = a->start / cyl_size;
+       b_cylinder = b->start / cyl_size;
+
+       if (a_cylinder == b_cylinder) {
+               if ( (a->start / bios_geom->sectors) % bios_geom->heads
+                         < (b->start / bios_geom->sectors) % bios_geom->heads)
+                       goto choose_a;
+               else
+                       goto choose_b;
+       } else {
+               PedSector       a_delta;
+               PedSector       b_delta;
+
+               a_delta = abs (part->geom.start - a->start);
+               b_delta = abs (part->geom.start - b->start);
+
+               if (a_delta < b_delta)
+                       goto choose_a;
+               else
+                       goto choose_b;
+       }
+
+       return NULL;    /* never get here! */
+
+choose_a:
+       ped_geometry_destroy (b);
+       return a;
+
+choose_b:
+       ped_geometry_destroy (a);
+       return b;
+}
+
+/* This constraint is for "normal" primary partitions, that start at the
+ * beginning of a cylinder, and end at the end of a cylinder.
+ *     Note: you can't start a partition at the beginning of the 1st
+ * cylinder, because that's where the partition table is!  There are different
+ * rules for that - see the _primary_start_constraint.
+ */
+static PedConstraint*
+_primary_constraint (const PedDisk* disk, const PedCHSGeometry* bios_geom,
+                    PedGeometry* min_geom)
+{
+       PedDevice*      dev = disk->dev;
+       PedSector       cylinder_size = bios_geom->sectors * bios_geom->heads;
+       PedAlignment    start_align;
+       PedAlignment    end_align;
+       PedGeometry     start_geom;
+       PedGeometry     end_geom;
+
+       if (!ped_alignment_init (&start_align, 0, cylinder_size))
+               return NULL;
+       if (!ped_alignment_init (&end_align, -1, cylinder_size))
+               return NULL;
+
+       if (min_geom) {
+               if (min_geom->start < cylinder_size)
+                       return NULL;
+               if (!ped_geometry_init (&start_geom, dev, cylinder_size,
+                                       min_geom->start + 1 - cylinder_size))
+                       return NULL;
+               if (!ped_geometry_init (&end_geom, dev, min_geom->end,
+                                       dev->length - min_geom->end))
+                       return NULL;
+       } else {
+               /* Use cylinder_size as the starting sector number
+                  when the device is large enough to accommodate that.
+                  Otherwise, use sector 1.  */
+               PedSector start = (cylinder_size < dev->length
+                                  ? cylinder_size : 1);
+               if (!ped_geometry_init (&start_geom, dev, start,
+                                       dev->length - start))
+                       return NULL;
+               if (!ped_geometry_init (&end_geom, dev, 0, dev->length))
+                       return NULL;
+       }
+
+       return ped_constraint_new (&start_align, &end_align, &start_geom,
+                                  &end_geom, 1, dev->length);
+}
+
+/* This constraint is for partitions starting on the first cylinder.  They
+ * must start on the 2nd head of the 1st cylinder.
+ *
+ * NOTE: We don't always start on the 2nd head of the 1st cylinder.  Windows
+ * Vista aligns starting partitions at sector 2048 (0x800) by default.  See:
+ * http://support.microsoft.com/kb/923332
+ */
+static PedConstraint*
+_primary_start_constraint (const PedDisk* disk,
+                           const PedPartition *part,
+                           const PedCHSGeometry* bios_geom,
+                           const PedGeometry* min_geom)
+{
+       PedDevice*      dev = disk->dev;
+       PedSector       cylinder_size = bios_geom->sectors * bios_geom->heads;
+       PedAlignment    start_align;
+       PedAlignment    end_align;
+       PedGeometry     start_geom;
+       PedGeometry     end_geom;
+       PedSector start_pos;
+
+       if (part->geom.start == 2048)
+               /* check for known Windows Vista (NTFS >= 3.1) alignments */
+               /* sector 0x800 == 2048                                   */
+               start_pos = 2048;
+       else
+               /* all other primary partitions on a DOS label align to   */
+               /* the 2nd head of the first cylinder (0x3F == 63)        */
+               start_pos = bios_geom->sectors;
+
+       if (!ped_alignment_init (&start_align, start_pos, 0))
+               return NULL;
+       if (!ped_alignment_init (&end_align, -1, cylinder_size))
+               return NULL;
+       if (min_geom) {
+               if (!ped_geometry_init (&start_geom, dev, start_pos, 1))
+                       return NULL;
+               if (!ped_geometry_init (&end_geom, dev, min_geom->end,
+                                       dev->length - min_geom->end))
+                       return NULL;
+       } else {
+               if (!ped_geometry_init (&start_geom, dev, start_pos,
+                       dev->length - start_pos))
+                       return NULL;
+               if (!ped_geometry_init (&end_geom, dev, 0, dev->length))
+                       return NULL;
+       }
+
+       return ped_constraint_new (&start_align, &end_align, &start_geom,
+                                  &end_geom, 1, dev->length);
+}
+
+/* constraints for logical partitions:
+ *     - start_offset is the offset in the start alignment.  "normally",
+ * this is bios_geom->sectors.  exceptions: MINOR > 5 at the beginning of the
+ * extended partition, or MINOR == 5 in the middle of the extended partition
+ *     - is_start_part == 1 if the constraint is for the first cylinder of
+ * the extended partition, or == 0 if the constraint is for the second cylinder
+ * onwards of the extended partition.
+ */
+static PedConstraint*
+_logical_constraint (const PedDisk* disk, const PedCHSGeometry* bios_geom,
+                    PedSector start_offset, int is_start_part)
+{
+       PedPartition*   ext_part = ped_disk_extended_partition (disk);
+       PedDevice*      dev = disk->dev;
+       PedSector       cylinder_size = bios_geom->sectors * bios_geom->heads;
+       PedAlignment    start_align;
+       PedAlignment    end_align;
+       PedGeometry     max_geom;
+
+       PED_ASSERT (ext_part != NULL);
+
+       if (!ped_alignment_init (&start_align, start_offset, cylinder_size))
+               return NULL;
+       if (!ped_alignment_init (&end_align, -1, cylinder_size))
+               return NULL;
+       if (is_start_part) {
+               if (!ped_geometry_init (&max_geom, dev,
+                                       ext_part->geom.start,
+                                       ext_part->geom.length))
+                       return NULL;
+       } else {
+               PedSector       min_start;
+               PedSector       max_length;
+
+               min_start = ped_round_up_to (ext_part->geom.start + 1,
+                                            cylinder_size);
+               max_length = ext_part->geom.end - min_start + 1;
+               if (min_start >= ext_part->geom.end)
+                       return NULL;
+
+               if (!ped_geometry_init (&max_geom, dev, min_start, max_length))
+                       return NULL;
+       }
+
+       return ped_constraint_new (&start_align, &end_align, &max_geom,
+                                  &max_geom, 1, dev->length);
+}
+
+/* returns the minimum geometry for the extended partition, given that the
+ * extended partition must contain:
+ *   * all logical partitions
+ *   * all partition tables for all logical partitions (except the first)
+ *   * the extended partition table
+ */
+static PedGeometry*
+_get_min_extended_part_geom (const PedPartition* ext_part,
+                            const PedCHSGeometry* bios_geom)
+{
+       PedDisk*                disk = ext_part->disk;
+       PedSector               head_size = bios_geom ? bios_geom->sectors : 1;
+       PedPartition*           walk;
+       PedGeometry*            min_geom;
+
+       walk = ped_disk_get_partition (disk, 5);
+       if (!walk)
+               return NULL;
+
+       min_geom = ped_geometry_duplicate (&walk->geom);
+       if (!min_geom)
+               return NULL;
+       /* We must always allow at least two sectors at the start, to leave
+        * room for LILO.  See linux/fs/partitions/msdos.c.
+        */
+       ped_geometry_set_start (min_geom,
+                               walk->geom.start - PED_MAX (1 * head_size, 2));
+
+       for (walk = ext_part->part_list; walk; walk = walk->next) {
+               if (!ped_partition_is_active (walk) || walk->num == 5)
+                       continue;
+               if (walk->geom.start < min_geom->start)
+                       ped_geometry_set_start (min_geom,
+                                       walk->geom.start - 2 * head_size);
+               if (walk->geom.end > min_geom->end)
+                       ped_geometry_set_end (min_geom, walk->geom.end);
+       }
+
+       return min_geom;
+}
+
+static int
+_align_primary (PedPartition* part, const PedCHSGeometry* bios_geom,
+               const PedConstraint* constraint)
+{
+       PedDisk*        disk = part->disk;
+       PedGeometry*    min_geom = NULL;
+       PedGeometry*    solution = NULL;
+
+       if (part->type == PED_PARTITION_EXTENDED)
+               min_geom = _get_min_extended_part_geom (part, bios_geom);
+
+       solution = _best_solution (part, bios_geom, solution,
+                       _try_constraint (part, constraint,
+                                        _primary_start_constraint (disk, part,
+                                                bios_geom, min_geom)));
+
+       solution = _best_solution (part, bios_geom, solution,
+                       _try_constraint (part, constraint,
+                               _primary_constraint (disk, bios_geom,
+                               min_geom)));
+
+       if (min_geom)
+               ped_geometry_destroy (min_geom);
+
+       if (solution) {
+               ped_geometry_set (&part->geom, solution->start,
+                                 solution->length);
+               ped_geometry_destroy (solution);
+               return 1;
+       }
+
+       return 0;
+}
+
+static int
+_logical_min_start_head (const PedPartition* part,
+                         const PedCHSGeometry* bios_geom,
+                        const PedPartition* ext_part,
+                         int is_start_ext_part)
+{
+       PedSector       cylinder_size = bios_geom->sectors * bios_geom->heads;
+       PedSector       base_head;
+
+       if (is_start_ext_part)
+               base_head = 1 + (ext_part->geom.start % cylinder_size)
+                                       / bios_geom->sectors;
+       else
+               base_head = 0;
+
+       if (part->num == 5)
+               return base_head + 0;
+       else
+               return base_head + 1;
+}
+
+/* Shamelessly copied and adapted from _partition_get_overlap_constraint
+ * (in disk.c)
+ * This should get rid of the infamous Assertion (metadata_length > 0) failed
+ * bug for extended msdos disklabels generated by Parted.
+ * 1) There always is a partition table at the start of ext_part, so we leave
+ *    a one sector gap there.
+ * 2)*The partition table of part5 is always at the beginning of the ext_part
+ *    so there is no need to leave a one sector gap before part5.
+ *   *There always is a partition table at the beginning of each partition != 5.
+ * We don't need to worry to much about consistency with
+ * _partition_get_overlap_constraint because missing it means we are in edge
+ * cases anyway, and we don't lose anything by just refusing to do the job in
+ * those cases.
+ */
+static PedConstraint*
+_log_meta_overlap_constraint (PedPartition* part, const PedGeometry* geom)
+{
+       PedGeometry     safe_space;
+       PedSector       min_start;
+       PedSector       max_end;
+       PedPartition*   ext_part = ped_disk_extended_partition (part->disk);
+       PedPartition*   walk;
+       int             not_5 = (part->num != 5);
+
+       PED_ASSERT (ext_part != NULL);
+
+       walk = ext_part->part_list;
+
+       /*                                 1)  2)     */
+       min_start = ext_part->geom.start + 1 + not_5;
+       max_end = ext_part->geom.end;
+
+       while (walk != NULL             /*      2)                         2) */
+               && (   walk->geom.start - (walk->num != 5) < geom->start - not_5
+                   || walk->geom.start - (walk->num != 5) <= min_start )) {
+               if (walk != part && ped_partition_is_active (walk))
+                       min_start = walk->geom.end + 1 + not_5; /* 2) */
+               walk = walk->next;
+       }
+
+       while (walk && (walk == part || !ped_partition_is_active (walk)))
+               walk = walk->next;
+
+       if (walk)
+               max_end = walk->geom.start - 1 - (walk->num != 5); /* 2) */
+
+       if (min_start >= max_end)
+               return NULL;
+
+       ped_geometry_init (&safe_space, part->disk->dev,
+                          min_start, max_end - min_start + 1);
+       return ped_constraint_new_from_max (&safe_space);
+}
+
+static int
+_align_logical (PedPartition* part, const PedCHSGeometry* bios_geom,
+               const PedConstraint* constraint)
+{
+       PedDisk*        disk = part->disk;
+       PedPartition*   ext_part = ped_disk_extended_partition (disk);
+       PedSector       cyl_size = bios_geom->sectors * bios_geom->heads;
+       PedSector       start_base;
+       int             head;
+       PedGeometry*    solution = NULL;
+       PedConstraint   *intersect, *log_meta_overlap;
+
+       PED_ASSERT (ext_part != NULL);
+
+       log_meta_overlap = _log_meta_overlap_constraint(part, &part->geom);
+       intersect = ped_constraint_intersect (constraint, log_meta_overlap);
+       ped_constraint_destroy (log_meta_overlap);
+       if (!intersect)
+               return 0;
+
+       start_base = ped_round_down_to (part->geom.start, cyl_size);
+
+       for (head = _logical_min_start_head (part, bios_geom, ext_part, 0);
+            head < PED_MIN (5, bios_geom->heads); head++) {
+               PedConstraint*  disk_constraint;
+               PedSector       start = start_base + head * bios_geom->sectors;
+
+               if (head >= _logical_min_start_head (part, bios_geom,
+                                                    ext_part, 1))
+                       disk_constraint =
+                               _logical_constraint (disk, bios_geom, start, 1);
+               else
+                       disk_constraint =
+                               _logical_constraint (disk, bios_geom, start, 0);
+
+               solution = _best_solution (part, bios_geom, solution,
+                               _try_constraint (part, intersect,
+                                                disk_constraint));
+       }
+
+       ped_constraint_destroy (intersect);
+
+       if (solution) {
+               ped_geometry_set (&part->geom, solution->start,
+                                 solution->length);
+               ped_geometry_destroy (solution);
+               return 1;
+       }
+
+       return 0;
+}
+
+static int
+_align (PedPartition* part, const PedCHSGeometry* bios_geom,
+       const PedConstraint* constraint)
+{
+       if (part->type == PED_PARTITION_LOGICAL)
+               return _align_logical (part, bios_geom, constraint);
+       else
+               return _align_primary (part, bios_geom, constraint);
+}
+
+static PedConstraint*
+_no_geom_constraint (const PedDisk* disk, PedSector start, PedSector end)
+{
+       PedGeometry      max;
+
+       ped_geometry_init (&max, disk->dev, start, end - start + 1);
+       return ped_constraint_new_from_max (&max);
+}
+
+static PedConstraint*
+_no_geom_extended_constraint (const PedPartition* part)
+{
+       PedDevice*      dev = part->disk->dev;
+       PedGeometry*    min = _get_min_extended_part_geom (part, NULL);
+       PedGeometry     start_range;
+       PedGeometry     end_range;
+       PedConstraint*  constraint;
+
+       if (min) {
+               ped_geometry_init (&start_range, dev, 1, min->start);
+               ped_geometry_init (&end_range, dev, min->end,
+                                  dev->length - min->end);
+               ped_geometry_destroy (min);
+       } else {
+               ped_geometry_init (&start_range, dev, 1, dev->length - 1);
+               ped_geometry_init (&end_range, dev, 1, dev->length - 1);
+       }
+       constraint = ped_constraint_new (ped_alignment_any, ped_alignment_any,
+                       &start_range, &end_range, 1, dev->length);
+       return constraint;
+}
+
+static int
+_align_primary_no_geom (PedPartition* part, const PedConstraint* constraint)
+{
+       PedDisk*        disk = part->disk;
+       PedGeometry*    solution;
+
+       if (part->type == PED_PARTITION_EXTENDED) {
+               solution = _try_constraint (part, constraint,
+                               _no_geom_extended_constraint (part));
+       } else {
+               solution = _try_constraint (part, constraint,
+                               _no_geom_constraint (disk, 1,
+                                                    disk->dev->length - 1));
+       }
+
+       if (solution) {
+               ped_geometry_set (&part->geom, solution->start,
+                                 solution->length);
+               ped_geometry_destroy (solution);
+               return 1;
+       }
+       return 0;
+}
+
+static int
+_align_logical_no_geom (PedPartition* part, const PedConstraint* constraint)
+{
+       PedGeometry*    solution;
+
+       solution = _try_constraint (part, constraint,
+                       _log_meta_overlap_constraint (part, &part->geom));
+
+       if (solution) {
+               ped_geometry_set (&part->geom, solution->start,
+                                 solution->length);
+               ped_geometry_destroy (solution);
+               return 1;
+       }
+       return 0;
+}
+
+static int
+_align_no_geom (PedPartition* part, const PedConstraint* constraint)
+{
+       if (part->type == PED_PARTITION_LOGICAL)
+               return _align_logical_no_geom (part, constraint);
+       else
+               return _align_primary_no_geom (part, constraint);
+}
+
+static int
+msdos_partition_align (PedPartition* part, const PedConstraint* constraint)
+{
+       PedCHSGeometry  bios_geom;
+       DosPartitionData* dos_data;
+
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk_specific != NULL);
+
+       dos_data = part->disk_specific;
+
+       if (dos_data->system == PARTITION_LDM && dos_data->orig) {
+               PedGeometry *orig_geom = &dos_data->orig->geom;
+
+               if (ped_geometry_test_equal (&part->geom, orig_geom)
+                   && ped_constraint_is_solution (constraint, &part->geom))
+                       return 1;
+
+               ped_geometry_set (&part->geom, orig_geom->start,
+                                 orig_geom->length);
+               ped_exception_throw (
+                       PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_CANCEL,
+                       _("Parted can't resize partitions managed by "
+                         "Windows Dynamic Disk."));
+               return 0;
+       }
+
+       partition_probe_bios_geometry (part, &bios_geom);
+
+       DosDiskData *disk_specific = part->disk->disk_specific;
+       if (disk_specific->cylinder_alignment
+           && _align(part, &bios_geom, constraint))
+               return 1;
+       if (_align_no_geom (part, constraint))
+               return 1;
+
+#ifndef DISCOVER_ONLY
+       ped_exception_throw (
+               PED_EXCEPTION_ERROR,
+               PED_EXCEPTION_CANCEL,
+               _("Unable to satisfy all constraints on the partition."));
+#endif
+       return 0;
+}
+
+static int
+add_metadata_part (PedDisk* disk, PedPartitionType type, PedSector start,
+                  PedSector end)
+{
+       PedPartition*           new_part;
+
+       PED_ASSERT (disk != NULL);
+
+       new_part = ped_partition_new (disk, type | PED_PARTITION_METADATA, NULL,
+                                     start, end);
+       if (!new_part)
+               goto error;
+       if (!ped_disk_add_partition (disk, new_part, NULL))
+               goto error_destroy_new_part;
+
+       return 1;
+
+error_destroy_new_part:
+       ped_partition_destroy (new_part);
+error:
+       return 0;
+}
+
+/* There are a few objectives here:
+ *     - avoid having lots of "free space" partitions lying around, to confuse
+ * the front end.
+ *     - ensure that there's enough room to put in the extended partition
+ * tables, etc.
+ */
+static int
+add_logical_part_metadata (PedDisk* disk, const PedPartition* log_part)
+{
+       PedPartition*   ext_part = ped_disk_extended_partition (disk);
+       PedPartition*   prev = log_part->prev;
+       PedCHSGeometry  bios_geom;
+       PedSector       cyl_size;
+       PedSector       metadata_start;
+       PedSector       metadata_end;
+       PedSector       metadata_length;
+
+       partition_probe_bios_geometry (ext_part, &bios_geom);
+       cyl_size = bios_geom.sectors * bios_geom.heads;
+
+       /* if there's metadata shortly before the partition (on the same
+        * cylinder), then make this new metadata partition touch the end of
+        * the other.  No point having 63 bytes (or whatever) of free space
+        * partition - just confuses front-ends, etc.
+        *      Otherwise, start the metadata at the start of the cylinder
+        */
+
+       metadata_end = log_part->geom.start - 1;
+       metadata_start = ped_round_down_to (metadata_end, cyl_size);
+       if (prev)
+               metadata_start = PED_MAX (metadata_start, prev->geom.end + 1);
+       else
+               metadata_start = PED_MAX (metadata_start,
+                                         ext_part->geom.start + 1);
+       metadata_length = metadata_end - metadata_start + 1;
+
+       /* partition 5 doesn't need to have any metadata */
+       if (log_part->num == 5 && metadata_length < bios_geom.sectors)
+               return 1;
+
+       PED_ASSERT (metadata_length > 0);
+
+       return add_metadata_part (disk, PED_PARTITION_LOGICAL,
+                                 metadata_start, metadata_end);
+}
+
+/*
+ * Find the starting sector number of the first non-free partition,
+ * set *SECTOR to that value, and return 1.
+ * If there is no non-free partition, don't modify *SECTOR and return 0.
+ */
+static int
+get_start_first_nonfree_part (const PedDisk* disk, PedSector *sector)
+{
+       PedPartition* walk;
+
+       // disk->part_list is the first partition on the disk.
+       if (!disk->part_list)
+               return 0;
+
+       for (walk = disk->part_list; walk; walk = walk->next) {
+               if (walk->type == PED_PARTITION_NORMAL ||
+                               walk->type == PED_PARTITION_EXTENDED) {
+                       *sector = walk->geom.start;
+                       return 1;
+               }
+       }
+       return 0;
+}
+
+/*
+ * Find the ending sector number of the last non-free partition,
+ * set *SECTOR to that value, and return 1.
+ * If there is no non-free partition, don't modify *SECTOR and return 0.
+ */
+static int
+get_end_last_nonfree_part (const PedDisk* disk, PedSector *sector)
+{
+       PedPartition* last_part = NULL;
+       PedPartition* walk;
+
+       // disk->part_list is the first partition on the disk.
+       if (!disk->part_list)
+               return 0;
+
+       for (walk = disk->part_list; walk; walk = walk->next) {
+               if (walk->type == PED_PARTITION_NORMAL ||
+                               walk->type == PED_PARTITION_EXTENDED) {
+                       last_part = walk;
+               }
+       }
+
+       if (!last_part)
+               return 0;
+       else {
+               *sector = last_part->geom.end;
+               return 1;
+       }
+}
+
+/* Adds metadata placeholder partitions to cover the partition table (and
+ * "free" space after it that often has bootloader stuff), and the last
+ * incomplete cylinder at the end of the disk.
+ *     Parted has to be mindful of the uncertainty of dev->bios_geom.
+ * It therefore makes sure this metadata doesn't overlap with partitions.
+ */
+static int
+add_startend_metadata (PedDisk* disk)
+{
+       PedDevice* dev = disk->dev;
+       PedSector cyl_size = dev->bios_geom.sectors * dev->bios_geom.heads;
+       PedSector init_start, init_end, final_start, final_end;
+
+       // Ranges for the initial and final metadata partition.
+       init_start = 0;
+       if (!get_start_first_nonfree_part(disk, &init_end))
+               init_end = dev->bios_geom.sectors - 1;
+       else
+               init_end = PED_MIN (dev->bios_geom.sectors - 1, init_end - 1);
+
+        DosDiskData *disk_specific = disk->disk_specific;
+        if (!disk_specific->cylinder_alignment)
+                final_start = dev->length - 1;
+        else if (!get_end_last_nonfree_part(disk, &final_start))
+               final_start = ped_round_down_to (dev->length, cyl_size);
+       else
+               final_start = PED_MAX (final_start + 1,
+                               ped_round_down_to (dev->length, cyl_size));
+       final_end = dev->length - 1;
+
+       // Create the metadata partitions.
+       // init_end <= dev->length for devices that are _real_ small.
+       if (init_start < init_end &&
+                       init_end <= dev->length &&
+                       !add_metadata_part (disk, PED_PARTITION_NORMAL,
+                               init_start, init_end))
+                       return 0;
+
+       // init_end < final_start so they dont overlap.  For very small devs.
+       if (final_start < final_end &&
+                       init_end < final_start &&
+                       final_end <= dev->length &&
+                       !add_metadata_part (disk, PED_PARTITION_NORMAL,
+                               final_start, final_end))
+                       return 0;
+
+       return 1;
+}
+
+static int
+msdos_alloc_metadata (PedDisk* disk)
+{
+       PedPartition*           ext_part;
+
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (disk->dev != NULL);
+
+       if (!add_startend_metadata (disk))
+               return 0;
+
+       ext_part = ped_disk_extended_partition (disk);
+       if (ext_part) {
+               int             i;
+               PedSector       start, end;
+               PedCHSGeometry  bios_geom;
+
+               for (i=5; 1; i++) {
+                       PedPartition* log_part;
+                       log_part = ped_disk_get_partition (disk, i);
+                       if (!log_part)
+                               break;
+                       if (!add_logical_part_metadata (disk, log_part))
+                               return 0;
+               }
+
+               partition_probe_bios_geometry (ext_part, &bios_geom);
+               start = ext_part->geom.start;
+               end = start + bios_geom.sectors - 1;
+               if (ext_part->part_list)
+                       end = PED_MIN (end,
+                                      ext_part->part_list->geom.start - 1);
+               if (!add_metadata_part (disk, PED_PARTITION_LOGICAL,
+                                       start, end))
+                       return 0;
+       }
+
+       return 1;
+}
+
+static int
+next_primary (const PedDisk* disk)
+{
+       int     i;
+       for (i=1; i<=DOS_N_PRI_PARTITIONS; i++) {
+               if (!ped_disk_get_partition (disk, i))
+                       return i;
+       }
+       return 0;
+}
+
+static int
+next_logical (const PedDisk* disk)
+{
+       int     i;
+       for (i=5; 1; i++) {
+               if (!ped_disk_get_partition (disk, i))
+                       return i;
+       }
+}
+
+static int
+msdos_partition_enumerate (PedPartition* part)
+{
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk != NULL);
+
+       /* don't re-number a primary partition */
+       if (part->num != -1 && part->num <= DOS_N_PRI_PARTITIONS)
+               return 1;
+
+       part->num = -1;
+
+       if (part->type & PED_PARTITION_LOGICAL)
+               part->num = next_logical (part->disk);
+       else
+               part->num = next_primary (part->disk);
+
+       return 1;
+}
+
+static int
+msdos_get_max_primary_partition_count (const PedDisk* disk)
+{
+       return DOS_N_PRI_PARTITIONS;
+}
+
+static bool
+msdos_get_max_supported_partition_count(const PedDisk* disk, int *max_n)
+{
+       *max_n = MAX_TOTAL_PART;
+       return true;
+}
+
+#include "pt-common.h"
+PT_define_limit_functions (msdos)
+
+static PedDiskOps msdos_disk_ops = {
+       clobber:                NULL,
+       write:                  NULL_IF_DISCOVER_ONLY (msdos_write),
+
+       disk_set_flag:          msdos_disk_set_flag,
+       disk_get_flag:          msdos_disk_get_flag,
+       disk_is_flag_available: msdos_disk_is_flag_available,
+
+       partition_set_name:     NULL,
+       partition_get_name:     NULL,
+
+  PT_op_function_initializers (msdos)
+};
+
+static PedDiskType msdos_disk_type = {
+       next:           NULL,
+       name:           "msdos",
+       ops:            &msdos_disk_ops,
+       features:       PED_DISK_TYPE_EXTENDED
+};
+
+void
+ped_disk_msdos_init ()
+{
+       PED_ASSERT (sizeof (DosRawPartition) == 16);
+       PED_ASSERT (sizeof (DosRawTable) == 512);
+
+       ped_disk_type_register (&msdos_disk_type);
+}
+
+void
+ped_disk_msdos_done ()
+{
+       ped_disk_type_unregister (&msdos_disk_type);
+}
diff --git a/libparted/labels/dvh.c b/libparted/labels/dvh.c
new file mode 100644 (file)
index 0000000..6378c04
--- /dev/null
@@ -0,0 +1,913 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 2001-2002, 2005, 2007-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#include <config.h>
+#include <parted/parted.h>
+#include <parted/debug.h>
+#include <parted/endian.h>
+#include <stdbool.h>
+
+#include "dvh.h"
+#include "pt-tools.h"
+
+#if ENABLE_NLS
+#  include <libintl.h>
+#  define _(String) dgettext (PACKAGE, String)
+#else
+#  define _(String) (String)
+#endif /* ENABLE_NLS */
+
+/* Default size for volhdr part, same val as IRIX's fx uses */
+#define PTYPE_VOLHDR_DFLTSZ 4096
+
+/* Partition numbers that seem to be strongly held convention */
+#define PNUM_VOLHDR 8
+#define PNUM_VOLUME 10
+
+/* Other notes of interest:
+ *  PED_PARTITION_EXTENDED is used for volume headers
+ *  PED_PARTITION_LOGICAL  is used for bootfiles
+ *  PED_PARTITION_NORMAL   is used for all else
+ */
+
+typedef struct _DVHDiskData {
+       struct device_parameters        dev_params;
+       int                             swap;   /* part num of swap, 0=none */
+       int                             root;   /* part num of root, 0=none */
+       int                             boot;   /* part num of boot, 0=none */
+} DVHDiskData;
+
+typedef struct _DVHPartData {
+       int     type;
+       char    name[VDNAMESIZE + 1];   /* boot volumes only */
+       int     real_file_size;         /* boot volumes only */
+} DVHPartData;
+
+static PedDiskType dvh_disk_type;
+
+/* FIXME: factor out this function: copied from aix.c, with changes to
+   the description, and an added sector number argument.
+   Read sector, SECTOR_NUM (which has length DEV->sector_size) into malloc'd
+   storage.  If the read fails, free the memory and return zero without
+   modifying *BUF.  Otherwise, set *BUF to the new buffer and return 1.  */
+static int
+read_sector (const PedDevice *dev, PedSector sector_num, char **buf)
+{
+       char *b = ped_malloc (dev->sector_size);
+       PED_ASSERT (b != NULL);
+       if (!ped_device_read (dev, b, sector_num, 1)) {
+               free (b);
+               return 0;
+       }
+       *buf = b;
+       return 1;
+}
+
+static int
+dvh_probe (const PedDevice *dev)
+{
+       struct volume_header *vh;
+
+       char *label;
+       if (!read_sector (dev, 0, &label))
+               return 0;
+
+       vh = (struct volume_header *) label;
+
+        bool found = PED_BE32_TO_CPU (vh->vh_magic) == VHMAGIC;
+       free (label);
+       return found;
+}
+
+static PedDisk*
+dvh_alloc (const PedDevice* dev)
+{
+       PedDisk*        disk;
+       DVHDiskData*    dvh_disk_data;
+       PedPartition*   volume_part;
+       PedConstraint*  constraint_any;
+
+       disk = _ped_disk_alloc (dev, &dvh_disk_type);
+       if (!disk)
+               goto error;
+
+       disk->disk_specific = dvh_disk_data
+               = ped_malloc (sizeof (DVHDiskData));
+       if (!dvh_disk_data)
+               goto error_free_disk;
+
+       memset (&dvh_disk_data->dev_params, 0,
+               sizeof (struct device_parameters));
+       dvh_disk_data->swap = 0;
+       dvh_disk_data->root = 0;
+       dvh_disk_data->boot = 0;
+
+       volume_part = ped_partition_new (disk, PED_PARTITION_EXTENDED, NULL,
+                                        0, PTYPE_VOLHDR_DFLTSZ - 1);
+       if (!volume_part)
+               goto error_free_disk_specific;
+       volume_part->num = PNUM_VOLHDR + 1;
+       constraint_any = ped_constraint_any (dev);
+       if (!ped_disk_add_partition (disk, volume_part, constraint_any))
+               goto error_destroy_constraint_any;
+       ped_constraint_destroy (constraint_any);
+       return disk;
+
+error_destroy_constraint_any:
+       ped_constraint_destroy (constraint_any);
+       ped_partition_destroy (volume_part);
+error_free_disk_specific:
+       free (disk->disk_specific);
+error_free_disk:
+       free (disk);
+error:
+       return NULL;
+}
+
+static PedDisk*
+dvh_duplicate (const PedDisk* disk)
+{
+       PedDisk*        new_disk;
+       DVHDiskData*    new_dvh_disk_data;
+       DVHDiskData*    old_dvh_disk_data = disk->disk_specific;
+
+       PED_ASSERT (old_dvh_disk_data != NULL);
+
+       new_disk = ped_disk_new_fresh (disk->dev, &dvh_disk_type);
+       if (!new_disk)
+               goto error;
+
+       new_disk->disk_specific = new_dvh_disk_data
+               = ped_malloc (sizeof (DVHDiskData));
+       if (!new_dvh_disk_data)
+               goto error_free_new_disk;
+
+       new_dvh_disk_data->dev_params = old_dvh_disk_data->dev_params;
+       return new_disk;
+
+error_free_new_disk:
+       free (new_disk);
+error:
+       return NULL;
+}
+
+static void
+dvh_free (PedDisk* disk)
+{
+       free (disk->disk_specific);
+       _ped_disk_free (disk);
+}
+
+/* two's complement 32-bit checksum */
+static uint32_t
+_checksum (const uint32_t* base, size_t size)
+{
+       uint32_t        sum = 0;
+       size_t          i;
+
+       for (i = 0; i < size / sizeof (uint32_t); i++)
+               sum = sum - PED_BE32_TO_CPU (base[i]);
+
+       return sum;
+}
+
+/* try to make a reasonable volume header partition... */
+static PedExceptionOption
+_handle_no_volume_header (PedDisk* disk)
+{
+       PedExceptionOption      ret;
+       PedPartition*           part;
+       PedConstraint*          constraint;
+
+       switch (ped_exception_throw (
+               PED_EXCEPTION_WARNING,
+               PED_EXCEPTION_FIX + PED_EXCEPTION_CANCEL,
+               _("%s has no extended partition (volume header partition)."),
+               disk->dev->path)) {
+               case PED_EXCEPTION_UNHANDLED:
+               case PED_EXCEPTION_FIX:
+               default:
+                       part = ped_partition_new (
+                               disk, PED_PARTITION_EXTENDED, NULL,
+                               0, PTYPE_VOLHDR_DFLTSZ - 1);
+                       if (!part)
+                               goto error;
+                       part->num = PNUM_VOLHDR + 1;
+                       constraint = ped_constraint_any (part->disk->dev);
+                       if (!constraint)
+                               goto error_destroy_part;
+                       if (!ped_disk_add_partition (disk, part, constraint))
+                               goto error_destroy_constraint;
+                       ped_constraint_destroy (constraint);
+                       ret = PED_EXCEPTION_FIX;
+                       break;
+
+               case PED_EXCEPTION_CANCEL:
+                       goto error;
+       }
+       return ret;
+
+error_destroy_constraint:
+       ped_constraint_destroy (constraint);
+error_destroy_part:
+       ped_partition_destroy (part);
+error:
+       return PED_EXCEPTION_CANCEL;
+}
+
+static PedPartition*
+_parse_partition (PedDisk* disk, struct partition_table* pt)
+{
+       PedPartition*   part;
+       DVHPartData*    dvh_part_data;
+       PedSector       start = PED_BE32_TO_CPU (pt->pt_firstlbn);
+       PedSector       length = PED_BE32_TO_CPU (pt->pt_nblks);
+
+       part = ped_partition_new (disk,
+                                 pt->pt_type ? 0 : PED_PARTITION_EXTENDED,
+                                 NULL,
+                                 start, start + length - 1);
+       if (!part)
+               return NULL;
+
+       dvh_part_data = part->disk_specific;
+       dvh_part_data->type = PED_BE32_TO_CPU (pt->pt_type);
+       strcpy (dvh_part_data->name, "");
+
+       return part;
+}
+
+static PedPartition*
+_parse_boot_file (PedDisk* disk, struct volume_directory* vd)
+{
+       PedPartition*   part;
+       DVHPartData*    dvh_part_data;
+       PedSector       start = PED_BE32_TO_CPU (vd->vd_lbn);
+       int             length = PED_BE32_TO_CPU (vd->vd_nbytes);
+
+       part = ped_partition_new (disk, PED_PARTITION_LOGICAL, NULL,
+                                 start, start + length/512 - 1);
+       if (!part)
+               return NULL;
+
+       dvh_part_data = part->disk_specific;
+       dvh_part_data->real_file_size = length;
+
+       strncpy (dvh_part_data->name, vd->vd_name, VDNAMESIZE);
+       dvh_part_data->name[VDNAMESIZE] = 0;
+       return part;
+}
+
+static int dvh_write (const PedDisk* disk);
+
+/* YUCK
+ *
+ *  If you remove a boot/root/swap partition, the disk->disk_specific
+ * thing isn't updated.  (Probably reflects a design bug somewhere...)
+ * Anyway, the workaround is: flush stale flags whenever we allocate
+ * new partition numbers, and before we write to disk.
+ */
+static void
+_flush_stale_flags (const PedDisk* disk)
+{
+       DVHDiskData*            dvh_disk_data = disk->disk_specific;
+
+       if (dvh_disk_data->root
+                      && !ped_disk_get_partition (disk, dvh_disk_data->root))
+               dvh_disk_data->root = 0;
+       if (dvh_disk_data->swap
+                      && !ped_disk_get_partition (disk, dvh_disk_data->swap))
+               dvh_disk_data->swap = 0;
+       if (dvh_disk_data->boot
+                      && !ped_disk_get_partition (disk, dvh_disk_data->boot))
+               dvh_disk_data->boot = 0;
+}
+
+static int
+dvh_read (PedDisk* disk)
+{
+       DVHDiskData*            dvh_disk_data = disk->disk_specific;
+       int                     i;
+       struct volume_header    vh;
+       char                    boot_name [BFNAMESIZE + 1];
+#ifndef DISCOVER_ONLY
+       int                     write_back = 0;
+#endif
+
+       PED_ASSERT (dvh_disk_data != NULL);
+
+       ped_disk_delete_all (disk);
+
+       char *s0;
+       if (!read_sector (disk->dev, 0, &s0))
+               return 0;
+       memcpy (&vh, s0, sizeof vh);
+       free (s0);
+
+       if (_checksum ((uint32_t*) &vh, sizeof (struct volume_header))) {
+               if (ped_exception_throw (
+                       PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_IGNORE_CANCEL,
+                       _("Checksum is wrong, indicating the partition "
+                         "table is corrupt."))
+                               == PED_EXCEPTION_CANCEL)
+                       return 0;
+       }
+
+       PED_ASSERT (PED_BE32_TO_CPU (vh.vh_magic) == VHMAGIC);
+
+       dvh_disk_data->dev_params = vh.vh_dp;
+       strncpy (boot_name, vh.vh_bootfile, BFNAMESIZE);
+       boot_name[BFNAMESIZE] = 0;
+
+       /* normal partitions */
+       for (i = 0; i < NPARTAB; i++) {
+               PedPartition* part;
+
+               if (!vh.vh_pt[i].pt_nblks)
+                       continue;
+               /* Skip the whole-disk partition, parted disklikes overlap */
+               if (PED_BE32_TO_CPU (vh.vh_pt[i].pt_type) == PTYPE_VOLUME)
+                       continue;
+
+               part = _parse_partition (disk, &vh.vh_pt[i]);
+               if (!part)
+                       goto error_delete_all;
+
+               part->fs_type = ped_file_system_probe (&part->geom);
+               part->num = i + 1;
+
+               if (PED_BE16_TO_CPU (vh.vh_rootpt) == i)
+                       ped_partition_set_flag (part, PED_PARTITION_ROOT, 1);
+               if (PED_BE16_TO_CPU (vh.vh_swappt) == i)
+                       ped_partition_set_flag (part, PED_PARTITION_SWAP, 1);
+
+               PedConstraint *constraint_exact
+                 = ped_constraint_exact (&part->geom);
+               bool ok = ped_disk_add_partition (disk, part, constraint_exact);
+               ped_constraint_destroy (constraint_exact);
+               if (!ok) {
+                       ped_partition_destroy (part);
+                       goto error_delete_all;
+               }
+       }
+
+       if (!ped_disk_extended_partition (disk)) {
+#ifdef DISCOVER_ONLY
+               return 1;
+#else
+               switch (_handle_no_volume_header (disk)) {
+                       case PED_EXCEPTION_CANCEL:
+                               return 0;
+                       case PED_EXCEPTION_IGNORE:
+                               return 1;
+                       case PED_EXCEPTION_FIX:
+                               write_back = 1;
+                               break;
+                       default:
+                               break;
+               }
+#endif
+       }
+
+       /* boot partitions */
+       for (i = 0; i < NVDIR; i++) {
+               PedPartition* part;
+
+               if (!vh.vh_vd[i].vd_nbytes)
+                       continue;
+
+               part = _parse_boot_file (disk, &vh.vh_vd[i]);
+               if (!part)
+                       goto error_delete_all;
+
+               part->fs_type = ped_file_system_probe (&part->geom);
+               part->num = NPARTAB + i + 1;
+
+               if (!strcmp (boot_name, ped_partition_get_name (part)))
+                       ped_partition_set_flag (part, PED_PARTITION_BOOT, 1);
+
+               PedConstraint *constraint_exact
+                 = ped_constraint_exact (&part->geom);
+               bool ok = ped_disk_add_partition (disk, part, constraint_exact);
+               ped_constraint_destroy (constraint_exact);
+               if (!ok) {
+                       ped_partition_destroy (part);
+                       goto error_delete_all;
+               }
+       }
+#ifndef DISCOVER_ONLY
+       if (write_back)
+               dvh_write (disk);
+#endif
+       return 1;
+
+error_delete_all:
+       ped_disk_delete_all (disk);
+       return 0;
+}
+
+#ifndef DISCOVER_ONLY
+static void
+_generate_partition (PedPartition* part, struct partition_table* pt)
+{
+       DVHPartData*    dvh_part_data = part->disk_specific;
+
+       /* Assert not a bootfile */
+       PED_ASSERT ((part->type & PED_PARTITION_LOGICAL) == 0);
+
+       pt->pt_nblks = PED_CPU_TO_BE32 (part->geom.length);
+       pt->pt_firstlbn = PED_CPU_TO_BE32 (part->geom.start);
+       pt->pt_type = PED_CPU_TO_BE32 (dvh_part_data->type);
+}
+
+static void
+_generate_boot_file (PedPartition* part, struct volume_directory* vd)
+{
+       DVHPartData*    dvh_part_data = part->disk_specific;
+
+       /* Assert it's a bootfile */
+       PED_ASSERT ((part->type & PED_PARTITION_LOGICAL) != 0);
+
+       vd->vd_nbytes = PED_CPU_TO_BE32 (dvh_part_data->real_file_size);
+       vd->vd_lbn = PED_CPU_TO_BE32 (part->geom.start);
+
+       memset (vd->vd_name, 0, VDNAMESIZE);
+       strncpy (vd->vd_name, dvh_part_data->name, VDNAMESIZE);
+}
+
+static int
+dvh_write (const PedDisk* disk)
+{
+       DVHDiskData*            dvh_disk_data = disk->disk_specific;
+       struct volume_header    vh;
+       int                     i;
+
+       PED_ASSERT (dvh_disk_data != NULL);
+
+       _flush_stale_flags (disk);
+
+       memset (&vh, 0, sizeof (struct volume_header));
+
+       vh.vh_magic = PED_CPU_TO_BE32 (VHMAGIC);
+       vh.vh_rootpt = PED_CPU_TO_BE16 (dvh_disk_data->root - 1);
+       vh.vh_swappt = PED_CPU_TO_BE16 (dvh_disk_data->swap - 1);
+
+       if (dvh_disk_data->boot) {
+               PedPartition* boot_part;
+               boot_part = ped_disk_get_partition (disk, dvh_disk_data->boot);
+               strcpy (vh.vh_bootfile, ped_partition_get_name (boot_part));
+       }
+
+       vh.vh_dp = dvh_disk_data->dev_params;
+       /* Set up rudimentary device geometry */
+       vh.vh_dp.dp_cyls
+               = PED_CPU_TO_BE16 ((short)disk->dev->bios_geom.cylinders);
+       vh.vh_dp.dp_trks0 = PED_CPU_TO_BE16 ((short)disk->dev->bios_geom.heads);
+       vh.vh_dp.dp_secs
+               = PED_CPU_TO_BE16 ((short)disk->dev->bios_geom.sectors);
+       vh.vh_dp.dp_secbytes = PED_CPU_TO_BE16 ((short)disk->dev->sector_size);
+
+       for (i = 0; i < NPARTAB; i++) {
+               PedPartition* part = ped_disk_get_partition (disk, i + 1);
+               if (part)
+                       _generate_partition (part, &vh.vh_pt[i]);
+       }
+
+       /* whole disk partition
+        * This is only ever written here, and never modified
+        * (or even shown) as it must contain the entire disk,
+        * and parted does not like overlapping partitions
+        */
+       vh.vh_pt[PNUM_VOLUME].pt_nblks = PED_CPU_TO_BE32 (disk->dev->length);
+       vh.vh_pt[PNUM_VOLUME].pt_firstlbn = PED_CPU_TO_BE32 (0);
+       vh.vh_pt[PNUM_VOLUME].pt_type = PED_CPU_TO_BE32 (PTYPE_VOLUME);
+
+       for (i = 0; i < NVDIR; i++) {
+               PedPartition* part = ped_disk_get_partition (disk,
+                                                            i + 1 + NPARTAB);
+               if (part)
+                       _generate_boot_file (part, &vh.vh_vd[i]);
+       }
+
+       vh.vh_csum = 0;
+       vh.vh_csum = PED_CPU_TO_BE32 (_checksum ((uint32_t*) &vh,
+                                     sizeof (struct volume_header)));
+
+        return (ptt_write_sector (disk, &vh, sizeof vh)
+                && ped_device_sync (disk->dev));
+}
+#endif /* !DISCOVER_ONLY */
+
+static PedPartition*
+dvh_partition_new (const PedDisk* disk, PedPartitionType part_type,
+                   const PedFileSystemType* fs_type,
+                   PedSector start, PedSector end)
+{
+       PedPartition* part;
+       DVHPartData* dvh_part_data;
+
+       part = _ped_partition_alloc (disk, part_type, fs_type, start, end);
+       if (!part)
+               goto error;
+
+       if (!ped_partition_is_active (part)) {
+               part->disk_specific = NULL;
+               return part;
+       }
+
+       dvh_part_data = part->disk_specific =
+               ped_malloc (sizeof (DVHPartData));
+       if (!dvh_part_data)
+               goto error_free_part;
+
+       dvh_part_data->type = (part_type == PED_PARTITION_EXTENDED)
+                                       ? PTYPE_VOLHDR
+                                       : PTYPE_RAW;
+       strcpy (dvh_part_data->name, "");
+       dvh_part_data->real_file_size = part->geom.length * 512;
+       return part;
+
+error_free_part:
+       _ped_partition_free (part);
+error:
+       return NULL;
+}
+
+static PedPartition*
+dvh_partition_duplicate (const PedPartition* part)
+{
+       PedPartition* result;
+       DVHPartData* part_data = part->disk_specific;
+       DVHPartData* result_data;
+
+       result = _ped_partition_alloc (part->disk, part->type, part->fs_type,
+                                      part->geom.start, part->geom.end);
+       if (!result)
+               goto error;
+       result->num = part->num;
+
+       if (!ped_partition_is_active (part)) {
+               result->disk_specific = NULL;
+               return result;
+       }
+
+       result_data = result->disk_specific =
+               ped_malloc (sizeof (DVHPartData));
+       if (!result_data)
+               goto error_free_part;
+
+       result_data->type = part_data->type;
+       strcpy (result_data->name, part_data->name);
+       result_data->real_file_size = part_data->real_file_size;
+       return result;
+
+error_free_part:
+       _ped_partition_free (result);
+error:
+       return NULL;
+}
+
+static void
+dvh_partition_destroy (PedPartition* part)
+{
+       if (ped_partition_is_active (part)) {
+               PED_ASSERT (part->disk_specific != NULL);
+               free (part->disk_specific);
+       }
+       _ped_partition_free (part);
+}
+
+static int
+dvh_partition_set_system (PedPartition* part, const PedFileSystemType* fs_type)
+{
+       DVHPartData* dvh_part_data = part->disk_specific;
+
+       part->fs_type = fs_type;
+
+       if (part->type == PED_PARTITION_EXTENDED) {
+               dvh_part_data->type = PTYPE_VOLHDR;
+               return 1;
+       }
+
+       /* Is this a bootfile? */
+       if (part->type == PED_PARTITION_LOGICAL)
+               return 1;
+
+       if (fs_type && !strcmp (fs_type->name, "xfs"))
+               dvh_part_data->type = PTYPE_XFS;
+       else
+               dvh_part_data->type = PTYPE_RAW;
+       return 1;
+}
+
+static int
+dvh_partition_set_flag (PedPartition* part, PedPartitionFlag flag, int state)
+{
+       DVHDiskData* dvh_disk_data = part->disk->disk_specific;
+
+       switch (flag) {
+       case PED_PARTITION_ROOT:
+               if (part->type != 0 && state) {
+#ifndef DISCOVER_ONLY
+                       ped_exception_throw (
+                               PED_EXCEPTION_ERROR,
+                               PED_EXCEPTION_CANCEL,
+                               _("Only primary partitions can be root "
+                                 "partitions."));
+#endif
+                       return 0;
+               }
+               dvh_disk_data->root = state ? part->num : 0;
+               break;
+
+       case PED_PARTITION_SWAP:
+               if (part->type != 0 && state) {
+#ifndef DISCOVER_ONLY
+                       ped_exception_throw (
+                               PED_EXCEPTION_ERROR,
+                               PED_EXCEPTION_CANCEL,
+                               _("Only primary partitions can be swap "
+                                 "partitions."));
+                       return 0;
+#endif
+               }
+               dvh_disk_data->swap = state ? part->num : 0;
+               break;
+
+       case PED_PARTITION_BOOT:
+               if (part->type != PED_PARTITION_LOGICAL && state) {
+#ifndef DISCOVER_ONLY
+                       ped_exception_throw (
+                               PED_EXCEPTION_ERROR,
+                               PED_EXCEPTION_CANCEL,
+                               _("Only logical partitions can be a boot "
+                                 "file."));
+#endif
+                       return 0;
+               }
+               dvh_disk_data->boot = state ? part->num : 0;
+               break;
+
+       case PED_PARTITION_LVM:
+       case PED_PARTITION_LBA:
+       case PED_PARTITION_HIDDEN:
+       case PED_PARTITION_RAID:
+       default:
+               return 0;
+       }
+       return 1;
+}
+
+static int
+dvh_partition_get_flag (const PedPartition* part, PedPartitionFlag flag)
+{
+       DVHDiskData* dvh_disk_data = part->disk->disk_specific;
+
+       switch (flag) {
+       case PED_PARTITION_ROOT:
+               return dvh_disk_data->root == part->num;
+
+       case PED_PARTITION_SWAP:
+               return dvh_disk_data->swap == part->num;
+
+       case PED_PARTITION_BOOT:
+               return dvh_disk_data->boot == part->num;
+
+       case PED_PARTITION_LVM:
+       case PED_PARTITION_LBA:
+       case PED_PARTITION_HIDDEN:
+       case PED_PARTITION_RAID:
+       default:
+               return 0;
+       }
+       return 1;
+}
+
+static int
+dvh_partition_is_flag_available (const PedPartition* part,
+                                 PedPartitionFlag flag)
+{
+       switch (flag) {
+       case PED_PARTITION_ROOT:
+       case PED_PARTITION_SWAP:
+       case PED_PARTITION_BOOT:
+               return 1;
+
+       case PED_PARTITION_LVM:
+       case PED_PARTITION_LBA:
+       case PED_PARTITION_HIDDEN:
+       case PED_PARTITION_RAID:
+       default:
+               return 0;
+       }
+       return 1;
+}
+
+static void
+dvh_partition_set_name (PedPartition* part, const char* name)
+{
+       DVHPartData* dvh_part_data = part->disk_specific;
+
+       if (part->type == PED_PARTITION_LOGICAL) {
+               /* Bootfile */
+               strncpy (dvh_part_data->name, name, VDNAMESIZE);
+               dvh_part_data->name[VDNAMESIZE] = 0;
+       } else {
+#ifndef DISCOVER_ONLY
+               ped_exception_throw (
+                       PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_CANCEL,
+                       _("failed to set dvh partition name to %s:\n"
+                          "Only logical partitions (boot files) have a name."),
+                        name);
+#endif
+       }
+}
+
+static const char*
+dvh_partition_get_name (const PedPartition* part)
+{
+       DVHPartData* dvh_part_data = part->disk_specific;
+       return dvh_part_data->name;
+}
+
+/* The constraint for the volume header partition is different, because it must
+ * contain the first sector of the disk.
+ */
+static PedConstraint*
+_get_extended_constraint (PedDisk* disk)
+{
+        PedGeometry     min_geom;
+       if (!ped_geometry_init (&min_geom, disk->dev, 0, 1))
+               return NULL;
+        return ped_constraint_new_from_min (&min_geom);
+}
+
+static PedConstraint*
+_get_primary_constraint (PedDisk* disk)
+{
+        PedGeometry     max_geom;
+       if (!ped_geometry_init (&max_geom, disk->dev, 1, disk->dev->length - 1))
+               return NULL;
+        return ped_constraint_new_from_max (&max_geom);
+}
+
+static int
+dvh_partition_align (PedPartition* part, const PedConstraint* constraint)
+{
+        PED_ASSERT (part != NULL);
+
+       if (_ped_partition_attempt_align (
+                       part, constraint,
+                       (part->type == PED_PARTITION_EXTENDED)
+                               ? _get_extended_constraint (part->disk)
+                               : _get_primary_constraint (part->disk)))
+               return 1;
+
+#ifndef DISCOVER_ONLY
+       ped_exception_throw (
+               PED_EXCEPTION_ERROR,
+               PED_EXCEPTION_CANCEL,
+               _("Unable to satisfy all constraints on the partition."));
+#endif
+       return 0;
+}
+
+static int
+dvh_partition_enumerate (PedPartition* part)
+{
+       int i;
+
+       /* never change the partition numbers */
+       if (part->num != -1)
+               return 1;
+
+       _flush_stale_flags (part->disk);
+
+       if (part->type & PED_PARTITION_LOGICAL) {
+               /* Bootfile */
+               for (i = 1 + NPARTAB; i <= NPARTAB + NVDIR; i++) {
+                       if (!ped_disk_get_partition (part->disk, i)) {
+                               part->num = i;
+                               return 1;
+                       }
+               }
+               PED_ASSERT (0);
+       } else if (part->type & PED_PARTITION_EXTENDED) {
+               /* Volheader */
+               part->num = PNUM_VOLHDR + 1;
+       } else {
+               for (i = 1; i <= NPARTAB; i++) {
+                       /* reserved for full volume partition */
+                       if (i == PNUM_VOLUME + 1)
+                               continue;
+
+                       if (!ped_disk_get_partition (part->disk, i)) {
+                               part->num = i;
+                               return 1;
+                       }
+               }
+               ped_exception_throw (
+                       PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_CANCEL,
+                       _("Too many primary partitions"));
+       }
+
+       return 0;
+}
+
+static int
+dvh_get_max_primary_partition_count (const PedDisk* disk)
+{
+       return NPARTAB;
+}
+
+static bool
+dvh_get_max_supported_partition_count (const PedDisk* disk, int *max_n)
+{
+       *max_n = NPARTAB;
+       return true;
+}
+
+
+static int
+dvh_alloc_metadata (PedDisk* disk)
+{
+       PedPartition* part;
+       PedPartition* extended_part;
+       PedPartitionType metadata_type;
+       PED_ASSERT(disk != NULL);
+
+       /* We don't need to "protect" the start of the disk from the volume
+        * header.
+        */
+       extended_part = ped_disk_extended_partition (disk);
+       if (extended_part && extended_part->geom.start == 0)
+               metadata_type = PED_PARTITION_METADATA | PED_PARTITION_LOGICAL;
+       else
+               metadata_type = PED_PARTITION_METADATA;
+
+       part = ped_partition_new (disk, metadata_type, NULL, 0, 0);
+       if (!part)
+               goto error;
+
+       PedConstraint *constraint_exact
+         = ped_constraint_exact (&part->geom);
+       bool ok = ped_disk_add_partition (disk, part, constraint_exact);
+       ped_constraint_destroy (constraint_exact);
+       if (ok)
+               return 1;
+
+       ped_partition_destroy (part);
+error:
+       return 0;
+}
+
+#include "pt-common.h"
+PT_define_limit_functions (dvh)
+
+static PedDiskOps dvh_disk_ops = {
+       clobber:                NULL,
+       write:                  NULL_IF_DISCOVER_ONLY (dvh_write),
+
+       partition_set_name:     dvh_partition_set_name,
+       partition_get_name:     dvh_partition_get_name,
+       PT_op_function_initializers (dvh)
+};
+
+static PedDiskType dvh_disk_type = {
+       next:           NULL,
+       name:           "dvh",
+       ops:            &dvh_disk_ops,
+       features:       PED_DISK_TYPE_PARTITION_NAME | PED_DISK_TYPE_EXTENDED
+};
+
+void
+ped_disk_dvh_init ()
+{
+       PED_ASSERT (sizeof (struct volume_header) == 512);
+
+       ped_disk_type_register (&dvh_disk_type);
+}
+
+void
+ped_disk_dvh_done ()
+{
+       ped_disk_type_unregister (&dvh_disk_type);
+}
diff --git a/libparted/labels/dvh.h b/libparted/labels/dvh.h
new file mode 100644 (file)
index 0000000..4c25c99
--- /dev/null
@@ -0,0 +1,178 @@
+/*
+    Copyright (C) 1985 MIPS Computer Systems, Inc.
+    Copyright (C) 2000 Silicon Graphics Computer Systems, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef _SYS_DVH_H
+#define _SYS_DVH_H
+
+/*
+ * Format for volume header information
+ *
+ * The volume header is a block located at the beginning of all disk
+ * media (sector 0).  It contains information pertaining to physical
+ * device parameters and logical partition information.
+ *
+ * The volume header is manipulated by disk formatters/verifiers,
+ * partition builders (e.g. fx, dvhtool, and mkfs), and disk drivers.
+ *
+ * Previous versions of IRIX wrote a copy of the volume header is
+ * located at sector 0 of each track of cylinder 0.  These copies were
+ * never used, and reduced the capacity of the volume header to hold large
+ * files, so this practice was discontinued.
+ * The volume header is constrained to be less than or equal to 512
+ * bytes long.  A particular copy is assumed valid if no drive errors
+ * are detected, the magic number is correct, and the 32 bit 2's complement
+ * of the volume header is correct.  The checksum is calculated by initially
+ * zeroing vh_csum, summing the entire structure and then storing the
+ * 2's complement of the sum.  Thus a checksum to verify the volume header
+ * should be 0.
+ *
+ * The error summary table, bad sector replacement table, and boot blocks are
+ * located by searching the volume directory within the volume header.
+ *
+ * Tables are sized simply by the integral number of table records that
+ * will fit in the space indicated by the directory entry.
+ *
+ * The amount of space allocated to the volume header, replacement blocks,
+ * and other tables is user defined when the device is formatted.
+ */
+
+/*
+ * device parameters are in the volume header to determine mapping
+ * from logical block numbers to physical device addresses
+ *
+ * Linux doesn't care ...
+ */
+struct device_parameters {
+       unsigned char   dp_skew;        /* spiral addressing skew */
+       unsigned char   dp_gap1;        /* words of 0 before header */
+       unsigned char   dp_gap2;        /* words of 0 between hdr and data */
+       unsigned char   dp_spares_cyl;  /* This is for drives (such as SCSI
+               that support zone oriented sparing, where the zone is larger
+               than one track.  It gets subracteded from the cylinder size
+               ( dp_trks0 * dp_sec) when doing partition size calculations */
+       unsigned short  dp_cyls;        /* number of usable cylinders (i.e.,
+               doesn't include cylinders reserved by the drive for badblocks,
+               etc.). For drives with variable geometry, this number may be
+               decreased so that:
+               dp_cyls * ((dp_heads * dp_trks0) - dp_spares_cyl) <= actualcapacity
+               This happens on SCSI drives such as the Wren IV and Toshiba 156
+               Also see dp_cylshi below */
+       unsigned short  dp_shd0;        /* starting head vol 0 */
+       unsigned short  dp_trks0;       /* number of tracks / cylinder vol 0*/
+       unsigned char   dp_ctq_depth;   /* Depth of CTQ queue */
+       unsigned char   dp_cylshi;      /* high byte of 24 bits of cylinder count */
+       unsigned short  dp_unused;      /* not used */
+       unsigned short  dp_secs;        /* number of sectors/track */
+       unsigned short  dp_secbytes;    /* length of sector in bytes */
+       unsigned short  dp_interleave;  /* sector interleave */
+       int     dp_flags;               /* controller characteristics */
+       int     dp_datarate;            /* bytes/sec for kernel stats */
+       int     dp_nretries;            /* max num retries on data error */
+       int     dp_mspw;                /* ms per word to xfer, for iostat */
+       unsigned short dp_xgap1;        /* Gap 1 for xylogics controllers */
+       unsigned short dp_xsync;    /* sync delay for xylogics controllers */
+       unsigned short dp_xrdly;    /* read delay for xylogics controllers */
+       unsigned short dp_xgap2;    /* gap 2 for xylogics controllers */
+       unsigned short dp_xrgate;   /* read gate for xylogics controllers */
+       unsigned short dp_xwcont;   /* write continuation for xylogics */
+};
+
+/*
+ * Device characterization flags
+ * (dp_flags)
+ */
+#define        DP_SECTSLIP     0x00000001      /* sector slip to spare sector */
+#define        DP_SECTFWD      0x00000002      /* forward to replacement sector */
+#define        DP_TRKFWD       0x00000004      /* forward to replacement track */
+#define        DP_MULTIVOL     0x00000008      /* multiple volumes per spindle */
+#define        DP_IGNOREERRORS 0x00000010      /* transfer data regardless of errors */
+#define DP_RESEEK      0x00000020      /* recalibrate as last resort */
+#define        DP_CTQ_EN       0x00000040      /* enable command tag queueing */
+
+/*
+ * Boot blocks, bad sector tables, and the error summary table, are located
+ * via the volume_directory.
+ */
+#define VDNAMESIZE     8
+
+struct volume_directory {
+       char    vd_name[VDNAMESIZE];    /* name */
+       int     vd_lbn;                 /* logical block number */
+       int     vd_nbytes;              /* file length in bytes */
+};
+
+/*
+ * partition table describes logical device partitions
+ * (device drivers examine this to determine mapping from logical units
+ * to cylinder groups, device formatters/verifiers examine this to determine
+ * location of replacement tracks/sectors, etc)
+ *
+ * NOTE: pt_firstlbn SHOULD BE CYLINDER ALIGNED
+ */
+struct partition_table {               /* one per logical partition */
+       int     pt_nblks;               /* # of logical blks in partition */
+       int     pt_firstlbn;            /* first lbn of partition */
+       int     pt_type;                /* use of partition */
+};
+
+#define        PTYPE_VOLHDR    0               /* partition is volume header */
+#define        PTYPE_TRKREPL   1               /* partition is used for repl trks */
+#define        PTYPE_SECREPL   2               /* partition is used for repl secs */
+#define        PTYPE_RAW       3               /* partition is used for data */
+#define        PTYPE_BSD42     4               /* partition is 4.2BSD file system */
+#define        PTYPE_BSD       4               /* partition is 4.2BSD file system */
+#define        PTYPE_SYSV      5               /* partition is SysV file system */
+#define        PTYPE_VOLUME    6               /* partition is entire volume */
+#define        PTYPE_EFS       7               /* partition is sgi EFS */
+#define        PTYPE_LVOL      8               /* partition is part of a logical vol */
+#define        PTYPE_RLVOL     9               /* part of a "raw" logical vol */
+#define        PTYPE_XFS       10              /* partition is sgi XFS */
+#define        PTYPE_XFSLOG    11              /* partition is sgi XFS log */
+#define        PTYPE_XLV       12              /* partition is part of an XLV vol */
+#define        PTYPE_XVM       13              /* partition is sgi XVM */
+#define NPTYPES                16
+
+#define        VHMAGIC         0xbe5a941       /* randomly chosen value */
+#define        NPARTAB         16              /* 16 unix partitions */
+#define        NVDIR           15              /* max of 15 directory entries */
+#define BFNAMESIZE     16              /* max 16 chars in boot file name */
+
+/* Partition types for ARCS */
+#define NOT_USED        0       /* Not used                            */
+#define FAT_SHORT       1       /* FAT file system, 12-bit FAT entries         */
+#define FAT_LONG        4       /* FAT file system, 16-bit FAT entries         */
+#define EXTENDED        5       /* extended partition                  */
+#define HUGE            6       /* huge partition- MS/DOS 4.0 and later */
+
+/* Active flags for ARCS */
+#define BOOTABLE        0x00;
+#define NOT_BOOTABLE    0x80;
+
+struct volume_header {
+       int vh_magic;                           /* identifies volume header */
+       short vh_rootpt;                        /* root partition number */
+       short vh_swappt;                        /* swap partition number */
+       char vh_bootfile[BFNAMESIZE];           /* name of file to boot */
+       struct device_parameters vh_dp;         /* device parameters */
+       struct volume_directory vh_vd[NVDIR];   /* other vol hdr contents */
+       struct partition_table vh_pt[NPARTAB];  /* device partition layout */
+       int vh_csum;                            /* volume header checksum */
+       int vh_fill;    /* fill out to 512 bytes */
+};
+
+#endif /* _SYS_DVH_H */
diff --git a/libparted/labels/efi_crc32.c b/libparted/labels/efi_crc32.c
new file mode 100644 (file)
index 0000000..bf1249f
--- /dev/null
@@ -0,0 +1,126 @@
+/*
+ * Dec 5, 2000 Matt Domsch <Matt_Domsch@dell.com>
+ * - Copied crc32.c from the linux/drivers/net/cipe directory.
+ * - Now pass seed as an arg
+ * - changed unsigned long to uint32_t, added #include<stdint.h>
+ * - changed len to be an unsigned long
+ * - changed crc32val to be a register
+ * - License remains unchanged!  It's still GPL-compatable!
+ */
+
+  /* ============================================================= */
+  /*  COPYRIGHT (C) 1986 Gary S. Brown.  You may use this program, or       */
+  /*  code or tables extracted from it, as desired without restriction.     */
+  /*                                                                        */
+  /*  First, the polynomial itself and its table of feedback terms.  The    */
+  /*  polynomial is                                                         */
+  /*  X^32+X^26+X^23+X^22+X^16+X^12+X^11+X^10+X^8+X^7+X^5+X^4+X^2+X^1+X^0   */
+  /*                                                                        */
+  /*  Note that we take it "backwards" and put the highest-order term in    */
+  /*  the lowest-order bit.  The X^32 term is "implied"; the LSB is the     */
+  /*  X^31 term, etc.  The X^0 term (usually shown as "+1") results in      */
+  /*  the MSB being 1.                                                      */
+  /*                                                                        */
+  /*  Note that the usual hardware shift register implementation, which     */
+  /*  is what we're using (we're merely optimizing it by doing eight-bit    */
+  /*  chunks at a time) shifts bits into the lowest-order term.  In our     */
+  /*  implementation, that means shifting towards the right.  Why do we     */
+  /*  do it this way?  Because the calculated CRC must be transmitted in    */
+  /*  order from highest-order term to lowest-order term.  UARTs transmit   */
+  /*  characters in order from LSB to MSB.  By storing the CRC this way,    */
+  /*  we hand it to the UART in the order low-byte to high-byte; the UART   */
+  /*  sends each low-bit to hight-bit; and the result is transmission bit   */
+  /*  by bit from highest- to lowest-order term without requiring any bit   */
+  /*  shuffling on our part.  Reception works similarly.                    */
+  /*                                                                        */
+  /*  The feedback terms table consists of 256, 32-bit entries.  Notes:     */
+  /*                                                                        */
+  /*      The table can be generated at runtime if desired; code to do so   */
+  /*      is shown later.  It might not be obvious, but the feedback        */
+  /*      terms simply represent the results of eight shift/xor opera-      */
+  /*      tions for all combinations of data and CRC register values.       */
+  /*                                                                        */
+  /*      The values must be right-shifted by eight bits by the "updcrc"    */
+  /*      logic; the shift must be unsigned (bring in zeroes).  On some     */
+  /*      hardware you could probably optimize the shift in assembler by    */
+  /*      using byte-swap instructions.                                     */
+  /*      polynomial $edb88320                                              */
+  /*                                                                        */
+  /*  --------------------------------------------------------------------  */
+
+#include <config.h>
+#include <stdint.h>
+
+static const uint32_t crc32_tab[] = {
+      0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L,
+      0x706af48fL, 0xe963a535L, 0x9e6495a3L, 0x0edb8832L, 0x79dcb8a4L,
+      0xe0d5e91eL, 0x97d2d988L, 0x09b64c2bL, 0x7eb17cbdL, 0xe7b82d07L,
+      0x90bf1d91L, 0x1db71064L, 0x6ab020f2L, 0xf3b97148L, 0x84be41deL,
+      0x1adad47dL, 0x6ddde4ebL, 0xf4d4b551L, 0x83d385c7L, 0x136c9856L,
+      0x646ba8c0L, 0xfd62f97aL, 0x8a65c9ecL, 0x14015c4fL, 0x63066cd9L,
+      0xfa0f3d63L, 0x8d080df5L, 0x3b6e20c8L, 0x4c69105eL, 0xd56041e4L,
+      0xa2677172L, 0x3c03e4d1L, 0x4b04d447L, 0xd20d85fdL, 0xa50ab56bL,
+      0x35b5a8faL, 0x42b2986cL, 0xdbbbc9d6L, 0xacbcf940L, 0x32d86ce3L,
+      0x45df5c75L, 0xdcd60dcfL, 0xabd13d59L, 0x26d930acL, 0x51de003aL,
+      0xc8d75180L, 0xbfd06116L, 0x21b4f4b5L, 0x56b3c423L, 0xcfba9599L,
+      0xb8bda50fL, 0x2802b89eL, 0x5f058808L, 0xc60cd9b2L, 0xb10be924L,
+      0x2f6f7c87L, 0x58684c11L, 0xc1611dabL, 0xb6662d3dL, 0x76dc4190L,
+      0x01db7106L, 0x98d220bcL, 0xefd5102aL, 0x71b18589L, 0x06b6b51fL,
+      0x9fbfe4a5L, 0xe8b8d433L, 0x7807c9a2L, 0x0f00f934L, 0x9609a88eL,
+      0xe10e9818L, 0x7f6a0dbbL, 0x086d3d2dL, 0x91646c97L, 0xe6635c01L,
+      0x6b6b51f4L, 0x1c6c6162L, 0x856530d8L, 0xf262004eL, 0x6c0695edL,
+      0x1b01a57bL, 0x8208f4c1L, 0xf50fc457L, 0x65b0d9c6L, 0x12b7e950L,
+      0x8bbeb8eaL, 0xfcb9887cL, 0x62dd1ddfL, 0x15da2d49L, 0x8cd37cf3L,
+      0xfbd44c65L, 0x4db26158L, 0x3ab551ceL, 0xa3bc0074L, 0xd4bb30e2L,
+      0x4adfa541L, 0x3dd895d7L, 0xa4d1c46dL, 0xd3d6f4fbL, 0x4369e96aL,
+      0x346ed9fcL, 0xad678846L, 0xda60b8d0L, 0x44042d73L, 0x33031de5L,
+      0xaa0a4c5fL, 0xdd0d7cc9L, 0x5005713cL, 0x270241aaL, 0xbe0b1010L,
+      0xc90c2086L, 0x5768b525L, 0x206f85b3L, 0xb966d409L, 0xce61e49fL,
+      0x5edef90eL, 0x29d9c998L, 0xb0d09822L, 0xc7d7a8b4L, 0x59b33d17L,
+      0x2eb40d81L, 0xb7bd5c3bL, 0xc0ba6cadL, 0xedb88320L, 0x9abfb3b6L,
+      0x03b6e20cL, 0x74b1d29aL, 0xead54739L, 0x9dd277afL, 0x04db2615L,
+      0x73dc1683L, 0xe3630b12L, 0x94643b84L, 0x0d6d6a3eL, 0x7a6a5aa8L,
+      0xe40ecf0bL, 0x9309ff9dL, 0x0a00ae27L, 0x7d079eb1L, 0xf00f9344L,
+      0x8708a3d2L, 0x1e01f268L, 0x6906c2feL, 0xf762575dL, 0x806567cbL,
+      0x196c3671L, 0x6e6b06e7L, 0xfed41b76L, 0x89d32be0L, 0x10da7a5aL,
+      0x67dd4accL, 0xf9b9df6fL, 0x8ebeeff9L, 0x17b7be43L, 0x60b08ed5L,
+      0xd6d6a3e8L, 0xa1d1937eL, 0x38d8c2c4L, 0x4fdff252L, 0xd1bb67f1L,
+      0xa6bc5767L, 0x3fb506ddL, 0x48b2364bL, 0xd80d2bdaL, 0xaf0a1b4cL,
+      0x36034af6L, 0x41047a60L, 0xdf60efc3L, 0xa867df55L, 0x316e8eefL,
+      0x4669be79L, 0xcb61b38cL, 0xbc66831aL, 0x256fd2a0L, 0x5268e236L,
+      0xcc0c7795L, 0xbb0b4703L, 0x220216b9L, 0x5505262fL, 0xc5ba3bbeL,
+      0xb2bd0b28L, 0x2bb45a92L, 0x5cb36a04L, 0xc2d7ffa7L, 0xb5d0cf31L,
+      0x2cd99e8bL, 0x5bdeae1dL, 0x9b64c2b0L, 0xec63f226L, 0x756aa39cL,
+      0x026d930aL, 0x9c0906a9L, 0xeb0e363fL, 0x72076785L, 0x05005713L,
+      0x95bf4a82L, 0xe2b87a14L, 0x7bb12baeL, 0x0cb61b38L, 0x92d28e9bL,
+      0xe5d5be0dL, 0x7cdcefb7L, 0x0bdbdf21L, 0x86d3d2d4L, 0xf1d4e242L,
+      0x68ddb3f8L, 0x1fda836eL, 0x81be16cdL, 0xf6b9265bL, 0x6fb077e1L,
+      0x18b74777L, 0x88085ae6L, 0xff0f6a70L, 0x66063bcaL, 0x11010b5cL,
+      0x8f659effL, 0xf862ae69L, 0x616bffd3L, 0x166ccf45L, 0xa00ae278L,
+      0xd70dd2eeL, 0x4e048354L, 0x3903b3c2L, 0xa7672661L, 0xd06016f7L,
+      0x4969474dL, 0x3e6e77dbL, 0xaed16a4aL, 0xd9d65adcL, 0x40df0b66L,
+      0x37d83bf0L, 0xa9bcae53L, 0xdebb9ec5L, 0x47b2cf7fL, 0x30b5ffe9L,
+      0xbdbdf21cL, 0xcabac28aL, 0x53b39330L, 0x24b4a3a6L, 0xbad03605L,
+      0xcdd70693L, 0x54de5729L, 0x23d967bfL, 0xb3667a2eL, 0xc4614ab8L,
+      0x5d681b02L, 0x2a6f2b94L, 0xb40bbe37L, 0xc30c8ea1L, 0x5a05df1bL,
+      0x2d02ef8dL
+   };
+
+/* Return a 32-bit CRC of the contents of the buffer. */
+
+uint32_t
+__efi_crc32(const void *buf, unsigned long len, uint32_t seed)
+{
+  unsigned long i;
+  register uint32_t crc32val;
+  const unsigned char *s = buf;
+
+  crc32val = seed;
+  for (i = 0;  i < len;  i ++)
+    {
+      crc32val =
+       crc32_tab[(crc32val ^ s[i]) & 0xff] ^
+         (crc32val >> 8);
+    }
+  return crc32val;
+}
diff --git a/libparted/labels/fdasd.c b/libparted/labels/fdasd.c
new file mode 100644 (file)
index 0000000..e235dd3
--- /dev/null
@@ -0,0 +1,1063 @@
+/*
+ * File...........: arch/s390/tools/fdasd.c
+ * Author(s)......: Volker Sameske <sameske@de.ibm.com>
+ * Bugreports.to..: <Linux390@de.ibm.com>
+ * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 2001
+ *
+ * History of changes (starts March 2001)
+ * 2001-04-11 possibility to change volume serial added
+ *            possibility to change partition type added
+ *            some changes to DS4HPCHR and DS4DSREC
+ * 2001-05-03 check for invalid partition numbers added
+ *            wrong free_space calculation bug fixed
+ * 2001-06-26 '-a' option added, it is now possible to add a single
+ *            partition in non-interactive mode
+ * 2001-06-26 long parameter support added
+ *
+ */
+
+#include <config.h>
+#include <arch/linux.h>
+#include <parted/vtoc.h>
+#include <parted/device.h>
+#include <parted/fdasd.h>
+
+#include <parted/parted.h>
+
+#include <libintl.h>
+#if ENABLE_NLS
+#  define _(String) dgettext (PACKAGE, String)
+#else
+#  define _(String) (String)
+#endif /* ENABLE_NLS */
+
+static int
+getpos (fdasd_anchor_t *anc, int dsn)
+{
+       PDEBUG
+       return anc->partno[dsn];
+}
+
+static int
+getdsn (fdasd_anchor_t *anc, int pos)
+{
+       PDEBUG
+       int i;
+
+       for (i=0; i<USABLE_PARTITIONS; i++) {
+               if (anc->partno[i] == pos)
+                       return i;
+       }
+
+       return -1;
+}
+
+static void
+setpos (fdasd_anchor_t *anc, int dsn, int pos)
+{
+       PDEBUG
+       anc->partno[dsn] = pos;
+}
+
+void
+fdasd_cleanup (fdasd_anchor_t *anchor)
+{
+       PDEBUG
+       int i;
+       partition_info_t *p, *q;
+
+       if (anchor == NULL)
+               return;
+
+        free(anchor->f4);
+        free(anchor->f5);
+        free(anchor->f7);
+        free(anchor->vlabel);
+
+       p = anchor->first;
+       if (p == NULL)
+               return;
+
+       for (i=1; i <= USABLE_PARTITIONS; i++) {
+               if (p == NULL)
+                       return;
+               q = p->next;
+               free(p);
+               p = q;
+       }
+}
+
+static void
+fdasd_error (fdasd_anchor_t *anc, enum fdasd_failure why, char const *str)
+{
+       PDEBUG
+       char error[2*LINE_LENGTH], *message = error;
+
+       switch (why) {
+               case unable_to_open_disk:
+                       sprintf(error, "fdasd: %s -- %s\n", _("open error"), str);
+                       break;
+               case unable_to_seek_disk:
+                       sprintf(error, "fdasd: %s -- %s\n", _("seek error"), str);
+                       break;
+               case unable_to_read_disk:
+                       sprintf(error, "fdasd: %s -- %s\n", _("read error"), str);
+                       break;
+               case read_only_disk:
+                       sprintf(error, "fdasd: %s -- %s\n", _("write error"), str);
+                       break;
+               case unable_to_ioctl:
+                       sprintf(error, "fdasd: %s -- %s\n", _("ioctl() error"), str);
+                       break;
+               case api_version_mismatch:
+                       sprintf(error, "fdasd: %s -- %s\n",
+                               _("API version mismatch"), str);
+                       break;
+               case wrong_disk_type:
+                       sprintf(error, "fdasd: %s -- %s\n",
+                               _("Unsupported disk type"), str);
+                       break;
+               case wrong_disk_format:
+                       sprintf(error, "fdasd: %s -- %s\n",
+                               _("Unsupported disk format"), str);
+                       break;
+               case disk_in_use:
+                       sprintf(error, "fdasd: %s -- %s\n",
+                               _("Disk is in use"), str);
+                       break;
+               case config_syntax_error:
+                       sprintf(error, "fdasd: %s -- %s\n",
+                               _("Syntax error in config file"), str);
+                       break;
+               case vlabel_corrupted:
+                       sprintf(error, "fdasd: %s -- %s\n",
+                               _("Volume label is corrupted"), str);
+                       break;
+               case dsname_corrupted:
+                       sprintf(error, "fdasd: %s -- %s\n",
+                               _("A data set name is corrupted"), str);
+                       break;
+               case malloc_failed:
+                       sprintf(error, "fdasd: %s -- %s\n",
+                               _("Memory allocation failed"), str);
+                       break;
+               case device_verification_failed:
+                       sprintf(error, "fdasd: %s -- %s\n",
+                               _("Device verification failed"),
+                               _("The specified device is not a valid DASD device"));
+                       break;
+               default:
+                       sprintf(error, "fdasd: %s: %s\n", _("Fatal error"), str);
+       }
+
+       ped_exception_throw(PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL, message);
+}
+
+/*
+ * converts cyl-cyl-head-head-blk to blk
+ */
+static unsigned long
+cchhb2blk (cchhb_t *p, struct fdasd_hd_geometry *geo)
+{
+       PDEBUG
+       return (unsigned long) (p->cc * geo->heads * geo->sectors
+                               + p->hh * geo->sectors + p->b);
+}
+
+/*
+ * initializes the anchor structure and allocates some
+ * memory for the labels
+ */
+void
+fdasd_initialize_anchor (fdasd_anchor_t * anc)
+{
+       PDEBUG
+       int i;
+       volume_label_t *v;
+       partition_info_t *p = NULL;
+       partition_info_t *q = NULL;
+
+       anc->devno             = 0;
+       anc->dev_type          = 0;
+       anc->used_partitions   = 0;
+
+       anc->silent            = 0;
+       anc->verbose           = 0;
+       anc->big_disk          = 0;
+       anc->volid_specified   = 0;
+       anc->config_specified  = 0;
+       anc->auto_partition    = 0;
+       anc->devname_specified = 0;
+       anc->print_table       = 0;
+
+       anc->option_reuse      = 0;
+       anc->option_recreate   = 0;
+
+       anc->vlabel_changed    = 0;
+       anc->vtoc_changed      = 0;
+       anc->blksize           = 0;
+       anc->fspace_trk        = 0;
+       anc->label_pos         = 0;
+
+       for (i=0; i<USABLE_PARTITIONS; i++)
+               setpos(anc, i, -1);
+
+       bzero(anc->confdata, sizeof(config_data_t));
+
+       anc->f4 = malloc(sizeof(format4_label_t));
+       if (anc->f4 == NULL)
+               fdasd_error(anc, malloc_failed, "FMT4 DSCB.");
+
+       anc->f5 = malloc(sizeof(format5_label_t));
+       if (anc->f5 == NULL)
+               fdasd_error(anc, malloc_failed, "FMT5 DSCB.");
+
+       anc->f7 = malloc(sizeof(format7_label_t));
+       if (anc->f7 == NULL)
+               fdasd_error(anc, malloc_failed, "FMT7 DSCB.");
+
+       bzero(anc->f4, sizeof(format4_label_t));
+       bzero(anc->f5, sizeof(format5_label_t));
+       bzero(anc->f7, sizeof(format7_label_t));
+
+       v = malloc(sizeof(volume_label_t));
+       if (v == NULL)
+               fdasd_error(anc, malloc_failed,
+                           _("No room for volume label."));
+       bzero(v, sizeof(volume_label_t));
+       anc->vlabel = v;
+
+       for (i=1; i<=USABLE_PARTITIONS; i++) {
+        p = malloc(sizeof(partition_info_t));
+               if (p == NULL)
+                       fdasd_error(anc, malloc_failed,
+                                   _("No room for partition info."));
+               p->used       = 0x00;
+               p->len_trk    = 0;
+               p->start_trk  = 0;
+               p->fspace_trk = 0;
+               p->type       = 0;
+
+               /* add p to double pointered list */
+               if (i == 1) {
+               anc->first = p;
+                       p->prev = NULL;
+               } else if (i == USABLE_PARTITIONS) {
+               anc->last = p;
+               p->next = NULL;
+                       p->prev = q;
+                       q->next = p;
+               } else {
+               p->prev = q;
+               q->next = p;
+               }
+
+               p->f1 = malloc(sizeof(format1_label_t));
+               if (p->f1 == NULL)
+                       fdasd_error(anc, malloc_failed, "FMT1 DSCB.");
+               bzero(p->f1, sizeof(format1_label_t));
+
+               q = p;
+       }
+}
+
+/*
+ * writes all changes to dasd
+ */
+static void
+fdasd_write_vtoc_labels (fdasd_anchor_t * anc, int fd)
+{
+       PDEBUG
+       partition_info_t *p;
+       unsigned long b;
+       char dsno[6], s1[7], s2[45], *c1, *c2, *ch;
+       int i = 0, k = 0;
+
+       b = (cchhb2blk (&anc->vlabel->vtoc, &anc->geo) - 1) * anc->blksize;
+       if (b <= 0)
+               fdasd_error (anc, vlabel_corrupted, "");
+
+       /* write FMT4 DSCB */
+       vtoc_write_label (fd, b, NULL, anc->f4, NULL, NULL);
+
+       /* write FMT5 DSCB */
+       b += anc->blksize;
+       vtoc_write_label (fd, b, NULL, NULL, anc->f5, NULL);
+
+       /* write FMT7 DSCB */
+       if (anc->big_disk) {
+               b += anc->blksize;
+               vtoc_write_label (fd, b, NULL, NULL, NULL, anc->f7);
+       }
+
+       /* loop over all FMT1 DSCBs */
+       p = anc->first;
+       for (i = 0; i < USABLE_PARTITIONS; i++) {
+               b += anc->blksize;
+
+               if (p->used != 0x01) {
+                       vtoc_write_label (fd, b, p->f1, NULL, NULL, NULL);
+                       continue;
+               }
+
+               strncpy (p->f1->DS1DSSN, anc->vlabel->volid, 6);
+
+               ch = p->f1->DS1DSNAM;
+               vtoc_ebcdic_dec (ch, ch, 44);
+               c1 = ch + 7;
+
+               if (getdsn (anc, i) > -1) {
+                       /* re-use the existing data set name */
+                       c2 = strchr (c1, '.');
+                       if (c2 != NULL)
+                               strncpy (s2, c2, 31);
+                       else
+                               fdasd_error (anc, dsname_corrupted, "");
+
+                       strncpy (s1, anc->vlabel->volid, 6);
+                       vtoc_ebcdic_dec (s1, s1, 6);
+                       s1[6] = ' ';
+                       strncpy (c1, s1, 7);
+                       c1 = strchr (ch, ' ');
+                       strncpy (c1, s2, 31);
+               } else {
+                       /* create a new data set name */
+                       while (getpos (anc, k) > -1)
+                               k++;
+
+                       setpos (anc, k, i);
+
+                       strncpy (s2, ch, 44);
+                       s2[44] = 0;
+                       vtoc_ebcdic_dec (s2, s2, 44);
+
+                       strncpy (ch, "LINUX.V               " "                      ", 44);
+
+                       strncpy (s1, anc->vlabel->volid, 6);
+                       vtoc_ebcdic_dec (s1, s1, 6);
+                       strncpy (c1, s1, 6);
+
+                       c1 = strchr (ch, ' ');
+                       strncpy (c1, ".PART", 5);
+                       c1 += 5;
+
+                       sprintf (dsno, "%04d.", k + 1);
+                       strncpy (c1, dsno, 5);
+
+                       c1 += 5;
+                       switch(p->type) {
+                               case PARTITION_LINUX_LVM:
+                                       strncpy(c1, PART_TYPE_LVM, 6);
+                                       break;
+                               case PARTITION_LINUX_RAID:
+                                       strncpy(c1, PART_TYPE_RAID, 6);
+                                       break;
+                               case PARTITION_LINUX:
+                                       strncpy(c1, PART_TYPE_NATIVE, 6);
+                                       break;
+                               case PARTITION_LINUX_SWAP:
+                                       strncpy(c1, PART_TYPE_SWAP, 6);
+                                       break;
+                               default:
+                                       strncpy(c1, PART_TYPE_NATIVE, 6);
+                                       break;
+                       }
+               }
+
+               vtoc_ebcdic_enc (ch, ch, 44);
+
+               vtoc_write_label (fd, b, p->f1, NULL, NULL, NULL);
+               p = p->next;
+       }
+}
+
+/*
+ * writes all changes to dasd
+ */
+int
+fdasd_write_labels (fdasd_anchor_t * anc, int fd)
+{
+       PDEBUG
+       if (anc->vlabel_changed)
+               vtoc_write_volume_label (fd, anc->label_pos, anc->vlabel);
+
+       if (anc->vtoc_changed)
+               fdasd_write_vtoc_labels (anc, fd);
+
+       return 1;
+}
+
+/*
+ * writes all changes to dasd
+ */
+int
+fdasd_prepare_labels (fdasd_anchor_t *anc, int fd)
+{
+       PDEBUG
+       partition_info_t *p = anc->first;
+       char dsno[6], s1[7], s2[45], *c1, *c2, *ch;
+       int i = 0, k = 0;
+
+       /* loop over all FMT1 DSCBs */
+       p = anc->first;
+       for (i = 0; i < USABLE_PARTITIONS; i++) {
+               strncpy (p->f1->DS1DSSN, anc->vlabel->volid, 6);
+
+               ch = p->f1->DS1DSNAM;
+               vtoc_ebcdic_dec (ch, ch, 44);
+               c1 = ch + 7;
+
+               if (getdsn (anc, i) > -1) {
+                       /* re-use the existing data set name */
+                       c2 = strchr (c1, '.');
+                       if (c2 != NULL)
+                               strncpy (s2, c2, 31);
+                       else
+                               fdasd_error (anc, dsname_corrupted, "");
+
+                       strncpy (s1, anc->vlabel->volid, 6);
+                       vtoc_ebcdic_dec (s1, s1, 6);
+                       s1[6] = ' ';
+                       strncpy (c1, s1, 7);
+                       c1 = strchr (ch, ' ');
+                       strncpy (c1, s2, 31);
+               } else {
+                       /* create a new data set name */
+                       while (getpos (anc, k) > -1)
+                               k++;
+
+                       setpos (anc, k, i);
+
+                       strncpy (s2, ch, 44);
+                       s2[44] = 0;
+                       vtoc_ebcdic_dec (s2, s2, 44);
+
+                       strncpy (ch, "LINUX.V               " "                      ", 44);
+
+                       strncpy (s1, anc->vlabel->volid, 6);
+                       vtoc_ebcdic_dec (s1, s1, 6);
+                       strncpy (c1, s1, 6);
+
+                       c1 = strchr (ch, ' ');
+                       strncpy (c1, ".PART", 5);
+                       c1 += 5;
+
+                       sprintf (dsno, "%04d.", k + 1);
+                       strncpy (c1, dsno, 5);
+
+                       c1 += 5;
+                       switch(p->type) {
+                               case PARTITION_LINUX_LVM:
+                                       strncpy(c1, PART_TYPE_LVM, 6);
+                                       break;
+                               case PARTITION_LINUX_RAID:
+                                       strncpy(c1, PART_TYPE_RAID, 6);
+                                       break;
+                               case PARTITION_LINUX:
+                                       strncpy(c1, PART_TYPE_NATIVE, 6);
+                                       break;
+                               case PARTITION_LINUX_SWAP:
+                                       strncpy(c1, PART_TYPE_SWAP, 6);
+                                       break;
+                               default:
+                                       strncpy(c1, PART_TYPE_NATIVE, 6);
+                                       break;
+                       }
+               }
+
+               vtoc_ebcdic_enc (ch, ch, 44);
+               p = p->next;
+       }
+
+       return 1;
+}
+
+void
+fdasd_recreate_vtoc (fdasd_anchor_t *anc)
+{
+       PDEBUG
+       partition_info_t *p = anc->first;
+       int i;
+
+       vtoc_init_format4_label(anc->f4,
+                                                       USABLE_PARTITIONS,
+                                                       anc->geo.cylinders,
+                                                       anc->geo.heads,
+                                                       anc->geo.sectors,
+                                                       anc->blksize,
+                                                       anc->dev_type);
+
+       vtoc_init_format5_label(anc->f5);
+       vtoc_init_format7_label(anc->f7);
+       vtoc_set_freespace(anc->f4, anc->f5, anc->f7,
+                                          '+', anc->verbose,
+                                          FIRST_USABLE_TRK,
+                                          anc->geo.cylinders * anc->geo.heads - 1,
+                                          anc->geo.cylinders, anc->geo.heads);
+
+       for (i = 0; i < USABLE_PARTITIONS; i++) {
+               bzero(p->f1, sizeof(format1_label_t));
+               p->used       = 0x00;
+               p->start_trk  = 0;
+               p->end_trk    = 0;
+               p->len_trk    = 0;
+               p->fspace_trk = 0;
+               p->type       = 0;
+               p = p->next;
+       }
+
+       anc->used_partitions = 0;
+       anc->fspace_trk = anc->geo.cylinders * anc->geo.heads - FIRST_USABLE_TRK;
+
+       for (i=0; i<USABLE_PARTITIONS; i++)
+               setpos(anc, i, -1);
+
+       anc->vtoc_changed++;
+}
+
+/*
+ * sets some important partition data
+ * (like used, start_trk, end_trk, len_trk)
+ * by calculating these values with the
+ * information provided in the labels
+ */
+static void
+fdasd_update_partition_info (fdasd_anchor_t *anc)
+{
+       PDEBUG
+       partition_info_t *q = NULL, *p = anc->first;
+       unsigned int h = anc->geo.heads;
+       unsigned long max = anc->geo.cylinders * h - 1;
+       int i;
+       char *ch;
+
+       anc->used_partitions = anc->geo.sectors - 2 - anc->f4->DS4DSREC;
+
+       for (i = 1; i <= USABLE_PARTITIONS; i++) {
+               if (p->f1->DS1FMTID != 0xf1) {
+                       if (i == 1)
+                               /* there is no partition at all */
+                               anc->fspace_trk = max - FIRST_USABLE_TRK + 1;
+                       else
+                               /* previous partition was the last one */
+                               q->fspace_trk = max - q->end_trk;
+                       break;
+               }
+
+               /* this is a valid format 1 label */
+               p->used = 0x01;
+               p->start_trk = p->f1->DS1EXT1.llimit.cc * h + p->f1->DS1EXT1.llimit.hh;
+               p->end_trk   = p->f1->DS1EXT1.ulimit.cc * h + p->f1->DS1EXT1.ulimit.hh;
+               p->len_trk   = p->end_trk - p->start_trk + 1;
+
+               if (i == 1) {
+                       /* first partition, there is at least one */
+                       anc->fspace_trk = p->start_trk - FIRST_USABLE_TRK;
+               } else {
+                       if (i == USABLE_PARTITIONS)
+                               /* last possible partition */
+                               p->fspace_trk = max - p->end_trk;
+
+                       /* set free space values of previous partition */
+                       q->fspace_trk = p->start_trk - q->end_trk - 1;
+               }
+
+               ch = p->f1->DS1DSNAM;
+               vtoc_ebcdic_dec (ch, ch, 44);
+               if (strstr(ch, PART_TYPE_LVM))
+                       p->type = PARTITION_LINUX_LVM;
+               else if (strstr(ch, PART_TYPE_RAID))
+                       p->type = PARTITION_LINUX_RAID;
+               else if (strstr(ch, PART_TYPE_NATIVE))
+                       p->type = PARTITION_LINUX;
+               else if (strstr(ch, PART_TYPE_SWAP))
+                       p->type = PARTITION_LINUX_SWAP;
+               else
+                       p->type = PARTITION_LINUX;
+               vtoc_ebcdic_enc (ch, ch, 44);
+
+               q = p;
+               p = p->next;
+       }
+}
+
+/*
+ * reorganizes all FMT1s, after that all used FMT1s should be right in
+ * front of all unused FMT1s
+ */
+static void
+fdasd_reorganize_FMT1s (fdasd_anchor_t *anc)
+{
+       PDEBUG
+       int i, j;
+       format1_label_t *ltmp;
+       partition_info_t *ptmp;
+
+       for (i=1; i<=USABLE_PARTITIONS - 1; i++) {
+               ptmp = anc->first;
+
+               for (j=1; j<=USABLE_PARTITIONS - i; j++) {
+                       if (ptmp->f1->DS1FMTID < ptmp->next->f1->DS1FMTID) {
+                               ltmp = ptmp->f1;
+                               ptmp->f1 = ptmp->next->f1;
+                               ptmp->next->f1 = ltmp;
+                       }
+
+                       ptmp=ptmp->next;
+               }
+       }
+}
+
+static void
+fdasd_process_valid_vtoc (fdasd_anchor_t * anc, unsigned long b, int fd)
+{
+       PDEBUG
+       int f5_counter = 0, f7_counter = 0, f1_counter = 0, oldfmt = 0;
+       int i, n, f1size = sizeof (format1_label_t);
+       partition_info_t *p = anc->first;
+       format1_label_t q;
+       char s[5], *ch;
+
+       b += anc->blksize;
+
+       for (i = 1; i <= anc->geo.sectors; i++) {
+               bzero (&q, f1size);
+               vtoc_read_label (fd, b, &q, NULL, NULL, NULL);
+
+               switch (q.DS1FMTID) {
+                       case 0xf1:
+                               if (p == NULL)
+                                       break;
+                               memcpy (p->f1, &q, f1size);
+
+                               n = -1;
+                               vtoc_ebcdic_dec (p->f1->DS1DSNAM, p->f1->DS1DSNAM, 44);
+                               ch = strstr (p->f1->DS1DSNAM, "PART");
+                               if (ch != NULL) {
+                                       strncpy (s, ch + 4, 4);
+                                       s[4] = '\0';
+                                       n = atoi (s) - 1;
+                               }
+
+                               vtoc_ebcdic_enc (p->f1->DS1DSNAM, p->f1->DS1DSNAM, 44);
+
+                               /* this dasd has data set names 0000-0002
+                               but we use now 0001-0003 */
+                               if (n == -1)
+                                       oldfmt++;
+
+                               if (((oldfmt == 0) && (n < 0)) || (n >= USABLE_PARTITIONS)) {
+                                       /* no op */
+                               } else {
+                                       if (oldfmt) {
+                                               /* correct +1 */
+                                               setpos (anc, n + 1, f1_counter);
+                                       } else {
+                                               setpos (anc, n, f1_counter);
+                                       }
+                               }
+
+                               p = p->next;
+                               f1_counter++;
+                               break;
+                       case 0xf5:
+                               memcpy (anc->f5, &q, f1size);
+                               f5_counter++;
+                               break;
+                       case 0xf7:
+                               if (f7_counter == 0)
+                                       memcpy (anc->f7, &q, f1size);
+                               f7_counter++;
+                               break;
+               }
+
+               b += anc->blksize;
+       }
+
+       if (oldfmt > 0) {
+               /* this is the old format PART0000 - PART0002 */
+               anc->vtoc_changed++;
+       }
+
+       if ((f5_counter == 0) || (anc->big_disk))
+               vtoc_init_format5_label (anc->f5);
+
+       if (f7_counter == 0)
+               vtoc_init_format7_label (anc->f7);
+
+       fdasd_reorganize_FMT1s (anc);
+       fdasd_update_partition_info (anc);
+}
+
+static int
+fdasd_valid_vtoc_pointer(fdasd_anchor_t *anc, unsigned long b, int fd)
+{
+       PDEBUG
+       char str[LINE_LENGTH];
+
+       /* VOL1 label contains valid VTOC pointer */
+       vtoc_read_label (fd, b, NULL, anc->f4, NULL, NULL);
+
+       if (anc->f4->DS4IDFMT == 0xf4) {
+               fdasd_process_valid_vtoc (anc, b, fd);
+               return 0;
+       }
+       if (strncmp(anc->vlabel->volkey, vtoc_ebcdic_enc("LNX1",str,4),4) == 0 ||
+           strncmp(anc->vlabel->volkey, vtoc_ebcdic_enc("CMS1",str,4),4) == 0)
+               return 0;
+
+       fdasd_error(anc, wrong_disk_format, _("Invalid VTOC."));
+       return 1;
+}
+
+/*
+ * check the dasd for a volume label
+ */
+int
+fdasd_check_volume (fdasd_anchor_t *anc, int fd)
+{
+       PDEBUG
+       volume_label_t *v = anc->vlabel;
+       unsigned long b = -1;
+       char str[LINE_LENGTH];
+
+       vtoc_read_volume_label (fd, anc->label_pos, v);
+
+       if (strncmp(v->vollbl, vtoc_ebcdic_enc ("VOL1", str, 4), 4) == 0) {
+               /* found VOL1 volume label */
+               b = (cchhb2blk (&v->vtoc, &anc->geo) - 1) * anc->blksize;
+
+               if (b > 0) {
+                       int rc;
+                       rc = fdasd_valid_vtoc_pointer (anc, b, fd);
+
+                       if (rc < 0)
+                               return 1;
+                       else
+                               return 0;
+               } else {
+                       return 1;
+               }
+       } else if (strncmp (v->volkey, vtoc_ebcdic_enc ("LNX1", str, 4), 4) == 0 ||
+                  strncmp (v->volkey, vtoc_ebcdic_enc ("CMS1", str, 4), 4) == 0) {
+               return 0;
+       }
+
+       return 1;
+}
+
+/*
+ * checks the current API version with the API version of the dasd driver
+ */
+void
+fdasd_check_api_version (fdasd_anchor_t *anc, int f)
+{
+       PDEBUG
+       int api;
+       char s[2*LINE_LENGTH];
+
+        struct stat st;
+        if (fstat (f, &st) == 0 && S_ISREG (st.st_mode)) {
+               /* skip these tests when F is a regular file.  */
+       }
+       else {
+               if (ioctl(f, DASDAPIVER, &api) != 0)
+                       fdasd_error(anc, unable_to_ioctl,
+                                   _("Could not retrieve API version."));
+
+               if (api != DASD_MIN_API_VERSION) {
+                       sprintf(s, _("The current API version '%d' doesn't " \
+                                       "match dasd driver API version " \
+                                       "'%d'!"), api, DASD_MIN_API_VERSION);
+                       fdasd_error(anc, api_version_mismatch, s);
+               }
+       }
+}
+
+/*
+ * reads dasd geometry data
+ */
+void
+fdasd_get_geometry (const PedDevice *dev, fdasd_anchor_t *anc, int f)
+{
+       PDEBUG
+       int blksize = 0;
+       dasd_information_t dasd_info;
+
+       /* We can't get geometry from a regular file,
+          so simulate something usable, for the sake of testing.  */
+       struct stat st;
+       if (fstat (f, &st) == 0 && S_ISREG (st.st_mode)) {
+           PedSector n_sectors = st.st_size / dev->sector_size;
+           anc->geo.heads = 15;
+           anc->geo.sectors = 12;
+           anc->geo.cylinders
+             = (n_sectors / (anc->geo.heads * anc->geo.sectors
+                             * (dev->sector_size / dev->phys_sector_size)));
+           anc->geo.start = 0;
+           blksize = 4096;
+           memcpy (dasd_info.type, "ECKD", 4);
+           dasd_info.dev_type = 13200;
+           dasd_info.label_block = 2;
+           dasd_info.devno = 513;
+       } else {
+               if (ioctl(f, HDIO_GETGEO, &anc->geo) != 0)
+                       fdasd_error(anc, unable_to_ioctl,
+                           _("Could not retrieve disk geometry information."));
+
+               if (ioctl(f, BLKSSZGET, &blksize) != 0)
+                       fdasd_error(anc, unable_to_ioctl,
+                           _("Could not retrieve blocksize information."));
+
+               /* get disk type */
+               if (ioctl(f, BIODASDINFO, &dasd_info) != 0)
+                       fdasd_error(anc, unable_to_ioctl,
+                                   _("Could not retrieve disk information."));
+       }
+
+       anc->dev_type   = dasd_info.dev_type;
+       anc->blksize    = blksize;
+       anc->label_pos  = dasd_info.label_block * blksize;
+       anc->devno      = dasd_info.devno;
+       anc->fspace_trk = anc->geo.cylinders * anc->geo.heads - FIRST_USABLE_TRK;
+}
+
+/*
+ * returns unused partition info pointer if there
+ * is a free partition, otherwise NULL
+ */
+static partition_info_t *
+fdasd_get_empty_f1_label (fdasd_anchor_t * anc)
+{
+       PDEBUG
+       if (anc->used_partitions < USABLE_PARTITIONS)
+               return anc->last;
+       else
+               return NULL;
+}
+
+/*
+ * asks for and sets some important partition data
+ */
+static int
+fdasd_get_partition_data (fdasd_anchor_t *anc, extent_t *part_extent,
+                          partition_info_t *p, unsigned int *start_ptr,
+                          unsigned int *stop_ptr)
+{
+       PDEBUG
+       unsigned int limit, cc, hh;
+       cchh_t llimit, ulimit;
+       partition_info_t *q;
+       u_int8_t b1, b2;
+       u_int16_t c, h;
+       unsigned int start = *start_ptr, stop = *stop_ptr;
+       int i;
+       char *ch;
+
+       if (anc->f4->DS4DEVCT.DS4DEVFG & ALTERNATE_CYLINDERS_USED)
+               c = anc->f4->DS4DEVCT.DS4DSCYL - (u_int16_t) anc->f4->DS4DEVAC;
+       else
+               c = anc->f4->DS4DEVCT.DS4DSCYL;
+
+       h = anc->f4->DS4DEVCT.DS4DSTRK;
+       limit = (h * c - 1);
+
+       /* check start value from user */
+       q = anc->first;
+       for (i = 0; i < USABLE_PARTITIONS; i++) {
+               if ( q->next == NULL )
+                       break;
+
+               if (start >= q->start_trk && start <= q->end_trk) {
+                       /* start is within another partition */
+                       start = q->end_trk + 1;
+
+                       if (start > limit) {
+                               start = FIRST_USABLE_TRK;
+                               q = anc->first;
+                       }
+               }
+
+               if (start < q->start_trk) {
+                       limit = q->start_trk - 1;
+                       break;
+               }
+
+               q = q->next;
+       }
+
+       if (start == limit)
+               stop = start;
+
+       /* update partition info */
+       p->len_trk    = stop - start + 1;
+       p->start_trk  = start;
+       p->end_trk    = stop;
+
+       cc = start / anc->geo.heads;
+       hh = start - (cc * anc->geo.heads);
+       vtoc_set_cchh(&llimit, cc, hh);
+
+       /* check for cylinder boundary */
+       if (hh == 0)
+               b1 = 0x81;
+       else
+               b1 = 0x01;
+
+       cc = stop / anc->geo.heads;
+       hh = stop - cc * anc->geo.heads;
+       vtoc_set_cchh(&ulimit, cc, hh);
+
+       /* it is always the 1st extent */
+       b2 = 0x00;
+
+       vtoc_set_extent(part_extent, b1, b2, &llimit, &ulimit);
+
+       *start_ptr = start;
+       *stop_ptr = stop;
+
+       ch = p->f1->DS1DSNAM;
+       vtoc_ebcdic_dec (ch, ch, 44);
+
+       if (strstr(ch, PART_TYPE_LVM))
+               p->type = PARTITION_LINUX_LVM;
+       else if (strstr(ch, PART_TYPE_RAID))
+               p->type = PARTITION_LINUX_RAID;
+       else if (strstr(ch, PART_TYPE_NATIVE))
+               p->type = PARTITION_LINUX;
+       else if (strstr(ch, PART_TYPE_SWAP))
+               p->type = PARTITION_LINUX_SWAP;
+       else
+               p->type = PARTITION_LINUX;
+
+       vtoc_ebcdic_enc (ch, ch, 44);
+
+       return 0;
+}
+
+static void
+fdasd_enqueue_new_partition (fdasd_anchor_t *anc)
+{
+       PDEBUG
+       partition_info_t *q = anc->first, *p = anc->last;
+       int i, k=0;
+
+       for (i=1; i<USABLE_PARTITIONS; i++) {
+               if ((q->end_trk == 0) || (p->start_trk < q->start_trk)) {
+                       break;
+               } else {
+                       q = q->next;
+                       k++;
+               }
+       }
+
+       if (anc->first == q)
+               anc->first = p;
+
+       if (p != q) {
+               anc->last->prev->next = NULL;
+               anc->last = anc->last->prev;
+
+               p->next = q;
+               p->prev = q->prev;
+               q->prev = p;
+
+               if (p->prev != NULL)
+                       p->prev->next = p;
+       }
+
+       p->used = 0x01;
+       p->type = PARTITION_LINUX;
+
+       for (i=0; i<USABLE_PARTITIONS; i++) {
+               int j = getpos(anc, i);
+               if (j >= k)
+                       setpos(anc, i, j + 1);
+       }
+
+       /* update free-space counters */
+       if (anc->first == p) {
+               /* partition is the first used partition */
+               if (p->start_trk == FIRST_USABLE_TRK) {
+                       /* partition starts right behind VTOC */
+                       p->fspace_trk = anc->fspace_trk - p->len_trk;
+                       anc->fspace_trk = 0;
+               } else {
+                       /* there is some space between VTOC and partition */
+                       p->fspace_trk = anc->fspace_trk - p->len_trk - p->start_trk
+                                                       + FIRST_USABLE_TRK;
+                       anc->fspace_trk = p->start_trk - FIRST_USABLE_TRK;
+               }
+       } else {
+               /* there are partitions in front of the new one */
+               if (p->start_trk == p->prev->end_trk + 1) {
+                       /* new partition is right behind the previous one */
+                       p->fspace_trk = p->prev->fspace_trk - p->len_trk;
+                       p->prev->fspace_trk = 0;
+               } else {
+                       /* there is some space between new and prev. part. */
+                       p->fspace_trk = p->prev->fspace_trk - p->len_trk
+                                                       - p->start_trk + p->prev->end_trk + 1;
+                       p->prev->fspace_trk = p->start_trk - p->prev->end_trk - 1;
+               }
+       }
+}
+
+/*
+ * adds a new partition to the 'partition table'
+ */
+partition_info_t *
+fdasd_add_partition (fdasd_anchor_t *anc, unsigned int start,
+                     unsigned int stop)
+{
+       PDEBUG
+       cchhb_t hf1;
+       partition_info_t *p;
+       extent_t ext;
+       int i;
+
+       PDEBUG;
+
+       if ((p = fdasd_get_empty_f1_label(anc)) == NULL) {
+               PDEBUG;
+               return 0;
+       }
+
+       PDEBUG;
+       if (fdasd_get_partition_data(anc, &ext, p, &start, &stop) != 0)
+               return 0;
+
+       PDEBUG;
+       vtoc_init_format1_label(anc->vlabel->volid, anc->blksize, &ext, p->f1);
+
+       PDEBUG;
+       fdasd_enqueue_new_partition(anc);
+
+       PDEBUG;
+       anc->used_partitions += 1;
+
+       i = anc->used_partitions + 2;
+       if (anc->big_disk)
+               i++;
+       PDEBUG;
+
+       vtoc_set_cchhb(&hf1, VTOC_START_CC, VTOC_START_HH, i);
+
+       vtoc_update_format4_label(anc->f4, &hf1, anc->f4->DS4DSREC - 1);
+
+       PDEBUG;
+
+       start = ext.llimit.cc * anc->geo.heads + ext.llimit.hh;
+       stop  = ext.ulimit.cc * anc->geo.heads + ext.ulimit.hh;
+
+       PDEBUG;
+       vtoc_set_freespace(anc->f4, anc->f5, anc->f7, '-', anc->verbose,
+                                          start, stop, anc->geo.cylinders, anc->geo.heads);
+
+       anc->vtoc_changed++;
+
+       PDEBUG;
+       return p;
+}
+
+/* vim:set tabstop=4 shiftwidth=4 softtabstop=4: */
diff --git a/libparted/labels/gpt.c b/libparted/labels/gpt.c
new file mode 100644 (file)
index 0000000..e1c0a32
--- /dev/null
@@ -0,0 +1,1822 @@
+/*
+    libparted - a library for manipulating disk partitions
+
+    original version by Matt Domsch <Matt_Domsch@dell.com>
+    Disclaimed into the Public Domain
+
+    Portions Copyright (C) 2001-2003, 2005-2011 Free Software Foundation, Inc.
+
+    EFI GUID Partition Table handling
+    Per Intel EFI Specification v1.02
+    http://developer.intel.com/technology/efi/efi.htm
+
+    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 <http://www.gnu.org/licenses/>.
+*/
+
+#include <config.h>
+
+#include <parted/parted.h>
+#include <parted/debug.h>
+#include <parted/endian.h>
+#include <parted/crc32.h>
+#include <inttypes.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <uuid/uuid.h>
+#include <stdbool.h>
+#include <errno.h>
+#include "xalloc.h"
+#include "verify.h"
+
+#include "pt-tools.h"
+
+#if ENABLE_NLS
+#  include <libintl.h>
+#  define _(String) gettext (String)
+#else
+#  define _(String) (String)
+#endif /* ENABLE_NLS */
+
+#define EFI_PMBR_OSTYPE_EFI 0xEE
+#define MSDOS_MBR_SIGNATURE 0xaa55
+
+#define GPT_HEADER_SIGNATURE 0x5452415020494645LL
+
+/* NOTE: the document that describes revision 1.00 is labelled "version 1.02",
+ * so some implementors got confused...
+ */
+#define GPT_HEADER_REVISION_V1_02 0x00010200
+#define GPT_HEADER_REVISION_V1_00 0x00010000
+#define GPT_HEADER_REVISION_V0_99 0x00009900
+
+typedef uint16_t efi_char16_t; /* UNICODE character */
+typedef struct _GuidPartitionTableHeader_t GuidPartitionTableHeader_t;
+typedef struct _GuidPartitionEntryAttributes_t GuidPartitionEntryAttributes_t;
+typedef struct _GuidPartitionEntry_t GuidPartitionEntry_t;
+typedef struct _PartitionRecord_t PartitionRecord_t;
+typedef struct _LegacyMBR_t LegacyMBR_t;
+typedef struct _GPTDiskData GPTDiskData;
+
+
+typedef struct
+{
+  uint32_t time_low;
+  uint16_t time_mid;
+  uint16_t time_hi_and_version;
+  uint8_t clock_seq_hi_and_reserved;
+  uint8_t clock_seq_low;
+  uint8_t node[6];
+} /* __attribute__ ((packed)) */ efi_guid_t;
+/* commented out "__attribute__ ((packed))" to work around gcc bug (fixed
+ * in gcc3.1): __attribute__ ((packed)) breaks addressing on initialized
+ * data.  It turns out we don't need it in this case, so it doesn't break
+ * anything :)
+ */
+
+#define UNUSED_ENTRY_GUID    \
+    ((efi_guid_t) { 0x00000000, 0x0000, 0x0000, 0x00, 0x00, \
+                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }})
+#define PARTITION_SYSTEM_GUID \
+    ((efi_guid_t) { PED_CPU_TO_LE32 (0xC12A7328), PED_CPU_TO_LE16 (0xF81F), \
+                    PED_CPU_TO_LE16 (0x11d2), 0xBA, 0x4B, \
+                    { 0x00, 0xA0, 0xC9, 0x3E, 0xC9, 0x3B }})
+#define PARTITION_BIOS_GRUB_GUID \
+    ((efi_guid_t) { PED_CPU_TO_LE32 (0x21686148), PED_CPU_TO_LE16 (0x6449), \
+                    PED_CPU_TO_LE16 (0x6E6f), 0x74, 0x4E, \
+                    { 0x65, 0x65, 0x64, 0x45, 0x46, 0x49 }})
+#define LEGACY_MBR_PARTITION_GUID \
+    ((efi_guid_t) { PED_CPU_TO_LE32 (0x024DEE41), PED_CPU_TO_LE16 (0x33E7), \
+                    PED_CPU_TO_LE16 (0x11d3, 0x9D, 0x69, \
+                    { 0x00, 0x08, 0xC7, 0x81, 0xF3, 0x9F }})
+#define PARTITION_MSFT_RESERVED_GUID \
+    ((efi_guid_t) { PED_CPU_TO_LE32 (0xE3C9E316), PED_CPU_TO_LE16 (0x0B5C), \
+                    PED_CPU_TO_LE16 (0x4DB8), 0x81, 0x7D, \
+                    { 0xF9, 0x2D, 0xF0, 0x02, 0x15, 0xAE }})
+#define PARTITION_MSFT_RECOVERY \
+    ((efi_guid_t) { PED_CPU_TO_LE32 (0xDE94BBA4), PED_CPU_TO_LE16 (0x06D1), \
+                    PED_CPU_TO_LE16 (0x4D40), 0xA1, 0x6A, \
+                    { 0xBF, 0xD5, 0x01, 0x79, 0xD6, 0xAC }})
+#define PARTITION_BASIC_DATA_GUID \
+    ((efi_guid_t) { PED_CPU_TO_LE32 (0xEBD0A0A2), PED_CPU_TO_LE16 (0xB9E5), \
+                    PED_CPU_TO_LE16 (0x4433), 0x87, 0xC0, \
+                    { 0x68, 0xB6, 0xB7, 0x26, 0x99, 0xC7 }})
+#define PARTITION_RAID_GUID \
+    ((efi_guid_t) { PED_CPU_TO_LE32 (0xa19d880f), PED_CPU_TO_LE16 (0x05fc), \
+                    PED_CPU_TO_LE16 (0x4d3b), 0xa0, 0x06, \
+                    { 0x74, 0x3f, 0x0f, 0x84, 0x91, 0x1e }})
+#define PARTITION_SWAP_GUID \
+    ((efi_guid_t) { PED_CPU_TO_LE32 (0x0657fd6d), PED_CPU_TO_LE16 (0xa4ab), \
+                    PED_CPU_TO_LE16 (0x43c4), 0x84, 0xe5, \
+                    { 0x09, 0x33, 0xc8, 0x4b, 0x4f, 0x4f }})
+#define PARTITION_LVM_GUID \
+    ((efi_guid_t) { PED_CPU_TO_LE32 (0xe6d6d379), PED_CPU_TO_LE16 (0xf507), \
+                    PED_CPU_TO_LE16 (0x44c2), 0xa2, 0x3c, \
+                    { 0x23, 0x8f, 0x2a, 0x3d, 0xf9, 0x28 }})
+#define PARTITION_RESERVED_GUID \
+    ((efi_guid_t) { PED_CPU_TO_LE32 (0x8da63339), PED_CPU_TO_LE16 (0x0007), \
+                    PED_CPU_TO_LE16 (0x60c0), 0xc4, 0x36, \
+                    { 0x08, 0x3a, 0xc8, 0x23, 0x09, 0x08 }})
+#define PARTITION_HPSERVICE_GUID \
+    ((efi_guid_t) { PED_CPU_TO_LE32 (0xe2a1e728), PED_CPU_TO_LE16 (0x32e3), \
+                    PED_CPU_TO_LE16 (0x11d6), 0xa6, 0x82, \
+                    { 0x7b, 0x03, 0xa0, 0x00, 0x00, 0x00 }})
+#define PARTITION_APPLE_HFS_GUID \
+    ((efi_guid_t) { PED_CPU_TO_LE32 (0x48465300), PED_CPU_TO_LE16 (0x0000), \
+                    PED_CPU_TO_LE16 (0x11AA), 0xaa, 0x11, \
+                    { 0x00, 0x30, 0x65, 0x43, 0xEC, 0xAC }})
+#define PARTITION_APPLE_TV_RECOVERY_GUID \
+    ((efi_guid_t) { PED_CPU_TO_LE32 (0x5265636F), PED_CPU_TO_LE16 (0x7665), \
+                    PED_CPU_TO_LE16 (0x11AA), 0xaa, 0x11, \
+                    { 0x00, 0x30, 0x65, 0x43, 0xEC, 0xAC }})
+
+struct __attribute__ ((packed)) _GuidPartitionTableHeader_t
+{
+  uint64_t Signature;
+  uint32_t Revision;
+  uint32_t HeaderSize;
+  uint32_t HeaderCRC32;
+  uint32_t Reserved1;
+  uint64_t MyLBA;
+  uint64_t AlternateLBA;
+  uint64_t FirstUsableLBA;
+  uint64_t LastUsableLBA;
+  efi_guid_t DiskGUID;
+  uint64_t PartitionEntryLBA;
+  uint32_t NumberOfPartitionEntries;
+  uint32_t SizeOfPartitionEntry;
+  uint32_t PartitionEntryArrayCRC32;
+  uint8_t *Reserved2;
+};
+
+struct __attribute__ ((packed)) _GuidPartitionEntryAttributes_t
+{
+#ifdef __GNUC__                        /* XXX narrow this down to !TinyCC */
+  uint64_t RequiredToFunction:1;
+  uint64_t NoBlockIOProtocol:1;
+  uint64_t LegacyBIOSBootable:1;
+  uint64_t Reserved:45;
+  uint64_t GuidSpecific:16;
+#else
+#       warning "Using crippled partition entry type"
+  uint32_t RequiredToFunction:1;
+  uint32_t NoBlockIOProtocol:1;
+  uint32_t LegacyBIOSBootable:1;
+  uint32_t Reserved:30;
+  uint32_t LOST:5;
+  uint32_t GuidSpecific:16;
+#endif
+};
+
+struct __attribute__ ((packed)) _GuidPartitionEntry_t
+{
+  efi_guid_t PartitionTypeGuid;
+  efi_guid_t UniquePartitionGuid;
+  uint64_t StartingLBA;
+  uint64_t EndingLBA;
+  GuidPartitionEntryAttributes_t Attributes;
+  efi_char16_t PartitionName[72 / sizeof (efi_char16_t)];
+};
+
+#define GPT_PMBR_LBA 0
+#define GPT_PMBR_SECTORS 1
+#define GPT_PRIMARY_HEADER_LBA 1
+#define GPT_HEADER_SECTORS 1
+#define GPT_PRIMARY_PART_TABLE_LBA 2
+
+/*
+   These values are only defaults.  The actual on-disk structures
+   may define different sizes, so use those unless creating a new GPT disk!
+*/
+
+#define GPT_DEFAULT_PARTITION_ENTRY_ARRAY_SIZE 16384
+
+/* Number of actual partition entries should be calculated as: */
+#define GPT_DEFAULT_PARTITION_ENTRIES \
+        (GPT_DEFAULT_PARTITION_ENTRY_ARRAY_SIZE / \
+         sizeof(GuidPartitionEntry_t))
+
+struct __attribute__ ((packed)) _PartitionRecord_t
+{
+  /* Not used by EFI firmware. Set to 0x80 to indicate that this
+     is the bootable legacy partition. */
+  uint8_t BootIndicator;
+
+  /* Start of partition in CHS address, not used by EFI firmware. */
+  uint8_t StartHead;
+
+  /* Start of partition in CHS address, not used by EFI firmware. */
+  uint8_t StartSector;
+
+  /* Start of partition in CHS address, not used by EFI firmware. */
+  uint8_t StartTrack;
+
+  /* OS type. A value of 0xEF defines an EFI system partition.
+     Other values are reserved for legacy operating systems, and
+     allocated independently of the EFI specification. */
+  uint8_t OSType;
+
+  /* End of partition in CHS address, not used by EFI firmware. */
+  uint8_t EndHead;
+
+  /* End of partition in CHS address, not used by EFI firmware. */
+  uint8_t EndSector;
+
+  /* End of partition in CHS address, not used by EFI firmware. */
+  uint8_t EndTrack;
+
+  /* Starting LBA address of the partition on the disk. Used by
+     EFI firmware to define the start of the partition. */
+  uint32_t StartingLBA;
+
+  /* Size of partition in LBA. Used by EFI firmware to determine
+     the size of the partition. */
+  uint32_t SizeInLBA;
+};
+
+/* Protected Master Boot Record  & Legacy MBR share same structure */
+/* Needs to be packed because the u16s force misalignment. */
+struct __attribute__ ((packed)) _LegacyMBR_t
+{
+  uint8_t BootCode[440];
+  uint32_t UniqueMBRSignature;
+  uint16_t Unknown;
+  PartitionRecord_t PartitionRecord[4];
+  uint16_t Signature;
+};
+
+/* uses libparted's disk_specific field in PedDisk, to store our info */
+struct __attribute__ ((packed)) _GPTDiskData
+{
+  PedGeometry data_area;
+  int entry_count;
+  efi_guid_t uuid;
+};
+
+/* uses libparted's disk_specific field in PedPartition, to store our info */
+typedef struct _GPTPartitionData
+{
+  efi_guid_t type;
+  efi_guid_t uuid;
+  char name[37];
+  int lvm;
+  int raid;
+  int boot;
+  int bios_grub;
+  int hp_service;
+  int hidden;
+  int msftres;
+  int atvrecv;
+  int msftrecv;
+  int legacy_boot;
+} GPTPartitionData;
+
+static PedDiskType gpt_disk_type;
+
+static inline uint32_t
+pth_get_size (const PedDevice *dev)
+{
+  return GPT_HEADER_SECTORS * dev->sector_size;
+}
+
+static inline uint32_t
+pth_get_size_static (const PedDevice *dev)
+{
+  return sizeof (GuidPartitionTableHeader_t) - sizeof (uint8_t *);
+}
+
+static inline uint32_t
+pth_get_size_rsv2 (const PedDevice *dev)
+{
+  return pth_get_size (dev) - pth_get_size_static (dev);
+}
+
+static GuidPartitionTableHeader_t *
+pth_new (const PedDevice *dev)
+{
+  GuidPartitionTableHeader_t *pth =
+    ped_malloc (sizeof (GuidPartitionTableHeader_t) + sizeof (uint8_t));
+
+  pth->Reserved2 = ped_malloc (pth_get_size_rsv2 (dev));
+
+  return pth;
+}
+
+static GuidPartitionTableHeader_t *
+pth_new_zeroed (const PedDevice *dev)
+{
+  GuidPartitionTableHeader_t *pth = pth_new (dev);
+
+  memset (pth, 0, pth_get_size_static (dev));
+  memset (pth->Reserved2, 0, pth_get_size_rsv2 (dev));
+
+  return (pth);
+}
+
+static GuidPartitionTableHeader_t *
+pth_new_from_raw (const PedDevice *dev, const uint8_t *pth_raw)
+{
+  GuidPartitionTableHeader_t *pth = pth_new (dev);
+
+  PED_ASSERT (pth_raw != NULL);
+
+  memcpy (pth, pth_raw, pth_get_size_static (dev));
+  memcpy (pth->Reserved2, pth_raw + pth_get_size_static (dev),
+          pth_get_size_rsv2 (dev));
+
+  return pth;
+}
+
+static void
+pth_free (GuidPartitionTableHeader_t *pth)
+{
+  if (pth == NULL)
+    return;
+  PED_ASSERT (pth->Reserved2 != NULL);
+
+  free (pth->Reserved2);
+  free (pth);
+}
+
+static uint8_t *
+pth_get_raw (const PedDevice *dev, const GuidPartitionTableHeader_t *pth)
+{
+  PED_ASSERT (pth != NULL);
+  PED_ASSERT (pth->Reserved2 != NULL);
+
+  int size_static = pth_get_size_static (dev);
+  uint8_t *pth_raw = ped_malloc (pth_get_size (dev));
+  if (pth_raw == NULL)
+    return NULL;
+
+  memcpy (pth_raw, pth, size_static);
+  memcpy (pth_raw + size_static, pth->Reserved2, pth_get_size_rsv2 (dev));
+
+  return pth_raw;
+}
+
+/**
+ * swap_uuid_and_efi_guid() - converts between uuid formats
+ * @uuid - uuid_t in either format (converts it to the other)
+ *
+ * There are two different representations for Globally Unique Identifiers
+ * (GUIDs or UUIDs).
+ *
+ * The RFC specifies a UUID as a string of 16 bytes, essentially
+ * a big-endian array of char.
+ * Intel, in their EFI Specification, references the same RFC, but
+ * then defines a GUID as a structure of little-endian fields.
+ * Coincidentally, both structures have the same format when unparsed.
+ *
+ * When read from disk, EFI GUIDs are in struct of little endian format,
+ * and need to be converted to be treated as uuid_t in memory.
+ *
+ * When writing to disk, uuid_ts need to be converted into EFI GUIDs.
+ *
+ * Blame Intel.
+ */
+static void
+swap_uuid_and_efi_guid (uuid_t uuid)
+{
+  efi_guid_t *guid = (efi_guid_t *) uuid;
+
+  PED_ASSERT (uuid != NULL);
+  guid->time_low = PED_SWAP32 (guid->time_low);
+  guid->time_mid = PED_SWAP16 (guid->time_mid);
+  guid->time_hi_and_version = PED_SWAP16 (guid->time_hi_and_version);
+}
+
+/* returns the EFI-style CRC32 value for buf
+ *      This function uses the crc32 function by Gary S. Brown,
+ * but seeds the function with ~0, and xor's with ~0 at the end.
+ */
+static inline uint32_t
+efi_crc32 (const void *buf, unsigned long len)
+{
+  return (__efi_crc32 (buf, len, ~0L) ^ ~0L);
+}
+
+/* Compute the crc32 checksum of the partition table header
+   and store it in *CRC32.  Return 0 upon success.  Return 1
+   upon failure to allocate space.  */
+static int
+pth_crc32 (const PedDevice *dev, const GuidPartitionTableHeader_t *pth,
+           uint32_t *crc32)
+{
+  PED_ASSERT (dev != NULL);
+  PED_ASSERT (pth != NULL);
+
+  uint8_t *pth_raw = pth_get_raw (dev, pth);
+  if (pth_raw == NULL)
+    return 1;
+
+  *crc32 = efi_crc32 (pth_raw, PED_LE32_TO_CPU (pth->HeaderSize));
+  free (pth_raw);
+
+  return 0;
+}
+
+static inline int
+guid_cmp (efi_guid_t left, efi_guid_t right)
+{
+  return memcmp (&left, &right, sizeof (efi_guid_t));
+}
+
+/* checks if 'mbr' is a protective MBR partition table */
+static inline int
+_pmbr_is_valid (const LegacyMBR_t *mbr)
+{
+  int i;
+
+  PED_ASSERT (mbr != NULL);
+
+  if (mbr->Signature != PED_CPU_TO_LE16 (MSDOS_MBR_SIGNATURE))
+    return 0;
+  for (i = 0; i < 4; i++)
+    {
+      if (mbr->PartitionRecord[i].OSType == EFI_PMBR_OSTYPE_EFI)
+        return 1;
+    }
+  return 0;
+}
+
+static int
+gpt_probe (const PedDevice *dev)
+{
+  GuidPartitionTableHeader_t *gpt = NULL;
+  int gpt_sig_found = 0;
+
+  PED_ASSERT (dev != NULL);
+
+  if (dev->length <= 1)
+    return 0;
+
+  void *pth_raw = ped_malloc (pth_get_size (dev));
+  if (ped_device_read (dev, pth_raw, 1, GPT_HEADER_SECTORS)
+      || ped_device_read (dev, pth_raw, dev->length - 1, GPT_HEADER_SECTORS))
+    {
+      gpt = pth_new_from_raw (dev, pth_raw);
+      if (gpt->Signature == PED_CPU_TO_LE64 (GPT_HEADER_SIGNATURE))
+        gpt_sig_found = 1;
+    }
+
+  free (pth_raw);
+
+  pth_free (gpt);
+
+  if (!gpt_sig_found)
+    return 0;
+
+  void *label;
+  if (!ptt_read_sector (dev, 0, &label))
+    return 0;
+
+  int ok = 1;
+  if (!_pmbr_is_valid ((const LegacyMBR_t *) label))
+    {
+      int ex_status = ped_exception_throw
+        (PED_EXCEPTION_WARNING,
+         PED_EXCEPTION_YES_NO,
+         _("%s contains GPT signatures, indicating that it has "
+           "a GPT table.  However, it does not have a valid "
+           "fake msdos partition table, as it should.  Perhaps "
+           "it was corrupted -- possibly by a program that "
+           "doesn't understand GPT partition tables.  Or "
+           "perhaps you deleted the GPT table, and are now "
+           "using an msdos partition table.  Is this a GPT "
+           "partition table?"),
+         dev->path);
+      if (ex_status == PED_EXCEPTION_NO)
+        ok = 0;
+    }
+
+  free (label);
+  return ok;
+}
+
+static PedDisk *
+gpt_alloc (const PedDevice *dev)
+{
+  PedDisk *disk;
+  GPTDiskData *gpt_disk_data;
+  PedSector data_start, data_end;
+
+  disk = _ped_disk_alloc ((PedDevice *) dev, &gpt_disk_type);
+  if (!disk)
+    goto error;
+  disk->disk_specific = gpt_disk_data = ped_malloc (sizeof (GPTDiskData));
+  if (!disk->disk_specific)
+    goto error_free_disk;
+
+  data_start = 2 + GPT_DEFAULT_PARTITION_ENTRY_ARRAY_SIZE / dev->sector_size;
+  data_end = dev->length - 2
+    - GPT_DEFAULT_PARTITION_ENTRY_ARRAY_SIZE / dev->sector_size;
+  ped_geometry_init (&gpt_disk_data->data_area, dev, data_start,
+                     data_end - data_start + 1);
+  gpt_disk_data->entry_count = GPT_DEFAULT_PARTITION_ENTRIES;
+  uuid_generate ((unsigned char *) &gpt_disk_data->uuid);
+  swap_uuid_and_efi_guid ((unsigned char *) (&gpt_disk_data->uuid));
+  return disk;
+
+error_free_disk:
+  free (disk);
+error:
+  return NULL;
+}
+
+static PedDisk *
+gpt_duplicate (const PedDisk *disk)
+{
+  PedDisk *new_disk;
+  GPTDiskData *new_disk_data;
+  GPTDiskData *old_disk_data;
+
+  new_disk = ped_disk_new_fresh (disk->dev, &gpt_disk_type);
+  if (!new_disk)
+    return NULL;
+
+  old_disk_data = disk->disk_specific;
+  new_disk_data = new_disk->disk_specific;
+
+  ped_geometry_init (&new_disk_data->data_area, disk->dev,
+                     old_disk_data->data_area.start,
+                     old_disk_data->data_area.length);
+  new_disk_data->entry_count = old_disk_data->entry_count;
+  new_disk_data->uuid = old_disk_data->uuid;
+  return new_disk;
+}
+
+static void
+gpt_free (PedDisk *disk)
+{
+  ped_disk_delete_all (disk);
+  free (disk->disk_specific);
+  _ped_disk_free (disk);
+}
+
+/* Given GUID Partition table header, GPT, read its partition array
+   entries from DISK into malloc'd storage.  Set *PTES_BYTES to the
+   number of bytes required.  Upon success, return a pointer to the
+   resulting buffer.  Otherwise, set errno and return NULL.  */
+static void *
+gpt_read_PE_array (PedDisk const *disk, GuidPartitionTableHeader_t const *gpt,
+                   size_t *ptes_bytes)
+{
+  GPTDiskData *gpt_disk_data = disk->disk_specific;
+  uint32_t p_ent_size = PED_LE32_TO_CPU (gpt->SizeOfPartitionEntry);
+  *ptes_bytes = p_ent_size * gpt_disk_data->entry_count;
+  size_t ptes_sectors = ped_div_round_up (*ptes_bytes,
+                                          disk->dev->sector_size);
+
+  if (xalloc_oversized (ptes_sectors, disk->dev->sector_size))
+    {
+      errno = ENOMEM;
+      return NULL;
+    }
+  void *ptes = ped_malloc (ptes_sectors * disk->dev->sector_size);
+  if (ptes == NULL)
+    return NULL;
+
+  if (!ped_device_read (disk->dev, ptes,
+                        PED_LE64_TO_CPU (gpt->PartitionEntryLBA), ptes_sectors))
+    {
+      int saved_errno = errno;
+      free (ptes);
+      errno = saved_errno;
+      return NULL;
+    }
+
+  return ptes;
+}
+
+static int
+check_PE_array_CRC (PedDisk const *disk,
+                    GuidPartitionTableHeader_t const *gpt, bool *valid)
+{
+  size_t ptes_bytes;
+  void *ptes = gpt_read_PE_array (disk, gpt, &ptes_bytes);
+  if (ptes == NULL)
+    return 1;
+
+  uint32_t ptes_crc = efi_crc32 (ptes, ptes_bytes);
+  *valid = (ptes_crc == PED_LE32_TO_CPU (gpt->PartitionEntryArrayCRC32));
+  free (ptes);
+  return 0;
+}
+
+static int
+_header_is_valid (PedDisk const *disk, GuidPartitionTableHeader_t *gpt,
+                  PedSector my_lba)
+{
+  uint32_t crc, origcrc;
+  PedDevice const *dev = disk->dev;
+
+  if (PED_LE64_TO_CPU (gpt->Signature) != GPT_HEADER_SIGNATURE)
+    return 0;
+  /*
+   * "While the GUID Partition Table Header's size may increase
+   * in the future it cannot span more than one block on the
+   * device."  EFI Specification, version 1.10, 11.2.2.1
+   */
+  if (PED_LE32_TO_CPU (gpt->HeaderSize) < pth_get_size_static (dev)
+      || PED_LE32_TO_CPU (gpt->HeaderSize) > dev->sector_size)
+    return 0;
+
+  /* The SizeOfPartitionEntry must be a multiple of 8 and
+     no smaller than the size of the PartitionEntry structure.
+     We also require that be no larger than 1/16th of UINT32_MAX,
+     as an additional sanity check.  */
+  uint32_t pe_size = PED_LE32_TO_CPU (gpt->SizeOfPartitionEntry);
+  if (pe_size % 8 != 0
+      || ! (sizeof (GuidPartitionEntry_t) <= pe_size
+            && pe_size <= (UINT32_MAX >> 4)))
+    return 0;
+
+  if (PED_LE64_TO_CPU (gpt->MyLBA) != my_lba)
+    return 0;
+
+  PedSector alt_lba = PED_LE64_TO_CPU (gpt->AlternateLBA);
+  /* The backup table's AlternateLBA must be 1.  */
+  if (my_lba != 1 && alt_lba != 1)
+    return 0;
+
+  /* The alt_lba must never be the same as my_lba.  */
+  if (alt_lba == my_lba)
+    return 0;
+
+  bool crc_match;
+  if (check_PE_array_CRC (disk, gpt, &crc_match) != 0 || !crc_match)
+    return 0;
+
+  PedSector first_usable = PED_LE64_TO_CPU (gpt->FirstUsableLBA);
+  if (first_usable < 3)
+    return 0;
+
+  origcrc = gpt->HeaderCRC32;
+  gpt->HeaderCRC32 = 0;
+  if (pth_crc32 (dev, gpt, &crc) != 0)
+    return 0;
+  gpt->HeaderCRC32 = origcrc;
+
+  return crc == PED_LE32_TO_CPU (origcrc);
+}
+
+static int
+_parse_header (PedDisk *disk, const GuidPartitionTableHeader_t *gpt,
+               int *update_needed)
+{
+  GPTDiskData *gpt_disk_data = disk->disk_specific;
+  PedSector first_usable;
+  PedSector last_usable;
+  PedSector last_usable_if_grown, last_usable_min_default;
+  static int asked_already;
+
+#ifndef DISCOVER_ONLY
+  if (PED_LE32_TO_CPU (gpt->Revision) > GPT_HEADER_REVISION_V1_02)
+    {
+      if (ped_exception_throw
+          (PED_EXCEPTION_WARNING,
+           PED_EXCEPTION_IGNORE_CANCEL,
+           _("The format of the GPT partition table is version "
+             "%x, which is newer than what Parted can "
+             "recognise.  Please report this!"),
+           PED_LE32_TO_CPU (gpt->Revision)) != PED_EXCEPTION_IGNORE)
+        return 0;
+    }
+#endif
+
+  first_usable = PED_LE64_TO_CPU (gpt->FirstUsableLBA);
+  last_usable = PED_LE64_TO_CPU (gpt->LastUsableLBA);
+
+  /* Need to check whether the volume has grown, the LastUsableLBA is
+     normally set to disk->dev->length - 2 - ptes_size (at least for parted
+     created volumes), where ptes_size is the number of entries *
+     size of each entry / sector size or 16k / sector size, whatever the greater.
+     If the volume has grown, offer the user the chance to use the new
+     space or continue with the current usable area.  Only ask once per
+     parted invocation. */
+
+  last_usable_if_grown
+    = (disk->dev->length - 2 -
+       ((PedSector) (PED_LE32_TO_CPU (gpt->NumberOfPartitionEntries)) *
+        (PedSector) (PED_LE32_TO_CPU (gpt->SizeOfPartitionEntry)) /
+        disk->dev->sector_size));
+
+  last_usable_min_default = disk->dev->length - 2 -
+    GPT_DEFAULT_PARTITION_ENTRY_ARRAY_SIZE / disk->dev->sector_size;
+
+  if (last_usable_if_grown > last_usable_min_default)
+    {
+      last_usable_if_grown = last_usable_min_default;
+    }
+
+  PED_ASSERT (last_usable > first_usable);
+  PED_ASSERT (last_usable <= disk->dev->length);
+
+  PED_ASSERT (last_usable_if_grown > first_usable);
+  PED_ASSERT (last_usable_if_grown <= disk->dev->length);
+
+  if (!asked_already && last_usable < last_usable_if_grown)
+    {
+
+      PedExceptionOption q;
+
+      q = ped_exception_throw
+        (PED_EXCEPTION_WARNING,
+         PED_EXCEPTION_FIX | PED_EXCEPTION_IGNORE,
+         _("Not all of the space available to %s appears "
+           "to be used, you can fix the GPT to use all of the "
+           "space (an extra %llu blocks) or continue with the "
+           "current setting? "), disk->dev->path,
+         (uint64_t) (last_usable_if_grown - last_usable));
+
+      if (q == PED_EXCEPTION_FIX)
+        {
+          last_usable = last_usable_if_grown;
+          *update_needed = 1;
+        }
+      else if (q != PED_EXCEPTION_UNHANDLED)
+        {
+          asked_already = 1;
+        }
+    }
+
+  ped_geometry_init (&gpt_disk_data->data_area, disk->dev,
+                     first_usable, last_usable - first_usable + 1);
+
+  gpt_disk_data->entry_count
+    = PED_LE32_TO_CPU (gpt->NumberOfPartitionEntries);
+  PED_ASSERT (gpt_disk_data->entry_count > 0);
+  PED_ASSERT (gpt_disk_data->entry_count <= 8192);
+
+  gpt_disk_data->uuid = gpt->DiskGUID;
+
+  return 1;
+}
+
+static PedPartition *
+_parse_part_entry (PedDisk *disk, GuidPartitionEntry_t *pte)
+{
+  PedPartition *part;
+  GPTPartitionData *gpt_part_data;
+  unsigned int i;
+
+  part = ped_partition_new (disk, PED_PARTITION_NORMAL, NULL,
+                            PED_LE64_TO_CPU (pte->StartingLBA),
+                            PED_LE64_TO_CPU (pte->EndingLBA));
+  if (!part)
+    return NULL;
+
+  gpt_part_data = part->disk_specific;
+  gpt_part_data->type = pte->PartitionTypeGuid;
+  gpt_part_data->uuid = pte->UniquePartitionGuid;
+  for (i = 0; i < 72 / sizeof (efi_char16_t); i++)
+    gpt_part_data->name[i] =
+      (efi_char16_t) PED_LE16_TO_CPU ((uint16_t) pte->PartitionName[i]);
+  gpt_part_data->name[i] = 0;
+
+  gpt_part_data->lvm = gpt_part_data->raid
+    = gpt_part_data->boot = gpt_part_data->hp_service
+    = gpt_part_data->hidden = gpt_part_data->msftres
+    = gpt_part_data->msftrecv
+    = gpt_part_data->legacy_boot
+    = gpt_part_data->bios_grub = gpt_part_data->atvrecv = 0;
+
+  if (pte->Attributes.RequiredToFunction & 0x1)
+    gpt_part_data->hidden = 1;
+  if (pte->Attributes.LegacyBIOSBootable & 0x1)
+    gpt_part_data->legacy_boot = 1;
+
+  if (!guid_cmp (gpt_part_data->type, PARTITION_SYSTEM_GUID))
+    gpt_part_data->boot = 1;
+  else if (!guid_cmp (gpt_part_data->type, PARTITION_BIOS_GRUB_GUID))
+    gpt_part_data->bios_grub = 1;
+  else if (!guid_cmp (gpt_part_data->type, PARTITION_RAID_GUID))
+    gpt_part_data->raid = 1;
+  else if (!guid_cmp (gpt_part_data->type, PARTITION_LVM_GUID))
+    gpt_part_data->lvm = 1;
+  else if (!guid_cmp (gpt_part_data->type, PARTITION_HPSERVICE_GUID))
+    gpt_part_data->hp_service = 1;
+  else if (!guid_cmp (gpt_part_data->type, PARTITION_MSFT_RESERVED_GUID))
+    gpt_part_data->msftres = 1;
+  else if (!guid_cmp (gpt_part_data->type, PARTITION_MSFT_RECOVERY))
+    gpt_part_data->msftrecv = 1;
+  else if (!guid_cmp (gpt_part_data->type, PARTITION_APPLE_TV_RECOVERY_GUID))
+    gpt_part_data->atvrecv = 1;
+
+  return part;
+}
+
+/* Read the primary GPT at sector 1 of DEV.
+   Verify its CRC and that of its partition entry array.
+   If they are valid, read the backup GPT specified by AlternateLBA.
+   If not, read the backup GPT in the last sector of the disk.
+   Return 1 if any read fails.
+   Upon successful verification of the primary GPT, set *PRIMARY_GPT, else NULL.
+   Upon successful verification of the backup GPT, set *BACKUP_GPT, else NULL.
+   If we've set *BACKUP_GPT to non-NULL, set *BACKUP_LBA to the sector
+   number in which it was found.  */
+static int
+gpt_read_headers (PedDisk const *disk,
+                  GuidPartitionTableHeader_t **primary_gpt,
+                  GuidPartitionTableHeader_t **backup_gpt,
+                  PedSector *backup_sector_num_p)
+{
+  *primary_gpt = NULL;
+  *backup_gpt = NULL;
+  PedDevice const *dev = disk->dev;
+
+  void *s1;
+  if (!ptt_read_sector (dev, 1, &s1))
+    return 1;
+
+  GuidPartitionTableHeader_t *t = pth_new_from_raw (dev, s1);
+  free (s1);
+  if (t == NULL)
+    return 1;
+  GuidPartitionTableHeader_t *pri = t;
+
+  bool valid_primary = _header_is_valid (disk, pri, 1);
+  if (valid_primary)
+    *primary_gpt = pri;
+  else
+    pth_free (pri);
+
+  PedSector backup_sector_num =
+    (valid_primary
+     ? PED_LE64_TO_CPU (pri->AlternateLBA)
+     : dev->length - 1);
+
+  void *s_bak;
+  if (!ptt_read_sector (dev, backup_sector_num, &s_bak))
+    return 1;
+  t = pth_new_from_raw (dev, s_bak);
+  free (s_bak);
+  if (t == NULL)
+    return 1;
+
+  GuidPartitionTableHeader_t *bak = t;
+  if (_header_is_valid (disk, bak, backup_sector_num))
+    {
+      *backup_gpt = bak;
+      *backup_sector_num_p = backup_sector_num;
+    }
+  else
+    pth_free (bak);
+
+  return 0;
+}
+
+/************************************************************
+ *  Intel is changing the EFI Spec. (after v1.02) to say that a
+ *  disk is considered to have a GPT label only if the GPT
+ *  structures are correct, and the MBR is actually a Protective
+ *  MBR (has one 0xEE type partition).
+ *  Problem occurs when a GPT-partitioned disk is then
+ *  edited with a legacy (non-GPT-aware) application, such as
+ *  fdisk (which doesn't generally erase the PGPT or AGPT).
+ *  How should such a disk get handled?  As a GPT disk (throwing
+ *  away the fdisk changes), or as an MSDOS disk (throwing away
+ *  the GPT information).  Previously, I've taken the GPT-is-right,
+ *  MBR is wrong, approach, to stay consistent with the EFI Spec.
+ *  Intel disagrees, saying the disk should then be treated
+ *  as having a msdos label, not a GPT label.  If this is true,
+ *  then what's the point of having an AGPT, since if the PGPT
+ *  is screwed up, likely the PMBR is too, and the PMBR becomes
+ *  a single point of failure.
+ *  So, in the Linux kernel, I'm going to test for PMBR, and
+ *  warn if it's not there, and treat the disk as MSDOS, with a note
+ *  for users to use Parted to "fix up" their disk if they
+ *  really want it to be considered GPT.
+ ************************************************************/
+static int
+gpt_read (PedDisk *disk)
+{
+  GPTDiskData *gpt_disk_data = disk->disk_specific;
+  int i;
+#ifndef DISCOVER_ONLY
+  int write_back = 0;
+#endif
+
+  ped_disk_delete_all (disk);
+
+  /* motivation: let the user decide about the pmbr... during
+     ped_disk_probe(), they probably didn't get a choice... */
+  if (!gpt_probe (disk->dev))
+    goto error;
+
+  GuidPartitionTableHeader_t *gpt = NULL;
+  GuidPartitionTableHeader_t *primary_gpt;
+  GuidPartitionTableHeader_t *backup_gpt;
+  PedSector backup_sector_num;
+  int read_failure = gpt_read_headers (disk, &primary_gpt, &backup_gpt,
+                                       &backup_sector_num);
+  if (read_failure)
+    {
+      /* This includes the case in which there used to be a GPT partition
+         table here, with an alternate LBA that extended beyond the current
+         end-of-device.  It's treated as a non-match.  */
+
+      /* Another possibility:
+         The primary header is ok, but backup is corrupt.
+         In the UEFI spec, this means the primary GUID table
+         is officially invalid.  */
+      pth_free (backup_gpt);
+      pth_free (primary_gpt);
+      return 0;
+    }
+
+  if (primary_gpt && backup_gpt)
+    {
+      /* Both are valid.  */
+#ifndef DISCOVER_ONLY
+      if (PED_LE64_TO_CPU (primary_gpt->AlternateLBA) < disk->dev->length - 1)
+        {
+          switch (ped_exception_throw
+                  (PED_EXCEPTION_ERROR,
+                   (PED_EXCEPTION_FIX | PED_EXCEPTION_CANCEL
+                    | PED_EXCEPTION_IGNORE),
+                   _("The backup GPT table is not at the end of the disk, as it "
+                     "should be.  This might mean that another operating system "
+                     "believes the disk is smaller.  Fix, by moving the backup "
+                     "to the end (and removing the old backup)?")))
+            {
+            case PED_EXCEPTION_CANCEL:
+              goto error_free_gpt;
+            case PED_EXCEPTION_FIX:
+              ptt_clear_sectors (disk->dev,
+                                 PED_LE64_TO_CPU (primary_gpt->AlternateLBA), 1);
+              write_back = 1;
+              break;
+            default:
+              break;
+            }
+        }
+#endif /* !DISCOVER_ONLY */
+      gpt = primary_gpt;
+      pth_free (backup_gpt);
+    }
+  else if (!primary_gpt && !backup_gpt)
+    {
+      /* Both are corrupt.  */
+      ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                           _("Both the primary and backup GPT tables "
+                             "are corrupt.  Try making a fresh table, "
+                             "and using Parted's rescue feature to "
+                             "recover partitions."));
+      goto error;
+    }
+  else if (primary_gpt && !backup_gpt)
+    {
+      /* The primary header is ok, but backup is corrupt.  */
+      if (ped_exception_throw
+          (PED_EXCEPTION_ERROR, PED_EXCEPTION_OK_CANCEL,
+           _("The backup GPT table is corrupt, but the "
+             "primary appears OK, so that will be used."))
+          == PED_EXCEPTION_CANCEL)
+        goto error_free_gpt;
+
+      gpt = primary_gpt;
+    }
+  else /* !primary_gpt && backup_gpt */
+    {
+      /* primary GPT corrupt, backup is ok.  */
+      if (ped_exception_throw
+          (PED_EXCEPTION_ERROR, PED_EXCEPTION_OK_CANCEL,
+           _("The primary GPT table is corrupt, but the "
+             "backup appears OK, so that will be used."))
+          == PED_EXCEPTION_CANCEL)
+        goto error_free_gpt;
+
+      gpt = backup_gpt;
+    }
+  backup_gpt = NULL;
+  primary_gpt = NULL;
+
+  if (!_parse_header (disk, gpt, &write_back))
+    goto error_free_gpt;
+
+  size_t ptes_bytes;
+  void *ptes = gpt_read_PE_array (disk, gpt, &ptes_bytes);
+  if (ptes == NULL)
+    goto error_free_gpt;
+
+  uint32_t ptes_crc = efi_crc32 (ptes, ptes_bytes);
+  if (ptes_crc != PED_LE32_TO_CPU (gpt->PartitionEntryArrayCRC32))
+    {
+      ped_exception_throw
+        (PED_EXCEPTION_ERROR,
+         PED_EXCEPTION_CANCEL,
+         _("primary partition table array CRC mismatch"));
+      goto error_free_ptes;
+    }
+
+  uint32_t p_ent_size = PED_LE32_TO_CPU (gpt->SizeOfPartitionEntry);
+  for (i = 0; i < gpt_disk_data->entry_count; i++)
+    {
+      GuidPartitionEntry_t *pte
+        = (GuidPartitionEntry_t *) ((char *) ptes + i * p_ent_size);
+      PedPartition *part;
+
+      if (!guid_cmp (pte->PartitionTypeGuid, UNUSED_ENTRY_GUID))
+        continue;
+
+      part = _parse_part_entry (disk, pte);
+      if (!part)
+        goto error_delete_all;
+
+      part->fs_type = ped_file_system_probe (&part->geom);
+      part->num = i + 1;
+
+      PedConstraint *constraint_exact = ped_constraint_exact (&part->geom);
+      if (!ped_disk_add_partition (disk, part, constraint_exact))
+        {
+          ped_constraint_destroy (constraint_exact);
+          ped_partition_destroy (part);
+          goto error_delete_all;
+        }
+      ped_constraint_destroy (constraint_exact);
+    }
+  free (ptes);
+
+#ifndef DISCOVER_ONLY
+  if (write_back)
+    ped_disk_commit_to_dev (disk);
+#endif
+
+  pth_free (gpt);
+  return 1;
+
+error_delete_all:
+  ped_disk_delete_all (disk);
+error_free_ptes:
+  free (ptes);
+error_free_gpt:
+  pth_free (primary_gpt);
+  pth_free (backup_gpt);
+  pth_free (gpt);
+error:
+  return 0;
+}
+
+#ifndef DISCOVER_ONLY
+/* Write the protective MBR (to keep DOS happy) */
+static int
+_write_pmbr (PedDevice *dev)
+{
+  /* The UEFI spec is not clear about what to do with the following
+     elements of the Protective MBR (pmbr): BootCode (0-440B),
+     UniqueMBRSignature (440B-444B) and Unknown (444B-446B).
+     With this in mind, we try not to modify these elements.  */
+  void *s0;
+  if (!ptt_read_sector (dev, 0, &s0))
+    return 0;
+  LegacyMBR_t *pmbr = s0;
+
+  /* Zero out the legacy partitions.  */
+  memset (pmbr->PartitionRecord, 0, sizeof pmbr->PartitionRecord);
+
+  pmbr->Signature = PED_CPU_TO_LE16 (MSDOS_MBR_SIGNATURE);
+  pmbr->PartitionRecord[0].OSType = EFI_PMBR_OSTYPE_EFI;
+  pmbr->PartitionRecord[0].StartSector = 1;
+  pmbr->PartitionRecord[0].EndHead = 0xFE;
+  pmbr->PartitionRecord[0].EndSector = 0xFF;
+  pmbr->PartitionRecord[0].EndTrack = 0xFF;
+  pmbr->PartitionRecord[0].StartingLBA = PED_CPU_TO_LE32 (1);
+  if ((dev->length - 1ULL) > 0xFFFFFFFFULL)
+    pmbr->PartitionRecord[0].SizeInLBA = PED_CPU_TO_LE32 (0xFFFFFFFF);
+  else
+    pmbr->PartitionRecord[0].SizeInLBA = PED_CPU_TO_LE32 (dev->length - 1UL);
+
+  int write_ok = ped_device_write (dev, pmbr, GPT_PMBR_LBA,
+                                   GPT_PMBR_SECTORS);
+  free (s0);
+  return write_ok;
+}
+
+static int
+_generate_header (const PedDisk *disk, int alternate, uint32_t ptes_crc,
+                  GuidPartitionTableHeader_t **gpt_p)
+{
+  GPTDiskData *gpt_disk_data = disk->disk_specific;
+  GuidPartitionTableHeader_t *gpt;
+
+  *gpt_p = pth_new_zeroed (disk->dev);
+
+  gpt = *gpt_p;
+
+  gpt->Signature = PED_CPU_TO_LE64 (GPT_HEADER_SIGNATURE);
+  gpt->Revision = PED_CPU_TO_LE32 (GPT_HEADER_REVISION_V1_00);
+
+  /* per 1.00 spec */
+  gpt->HeaderSize = PED_CPU_TO_LE32 (pth_get_size_static (disk->dev));
+  gpt->HeaderCRC32 = 0;
+  gpt->Reserved1 = 0;
+
+  if (alternate)
+    {
+      PedSector ptes_size = gpt_disk_data->entry_count
+        * sizeof (GuidPartitionEntry_t) / disk->dev->sector_size;
+
+      gpt->MyLBA = PED_CPU_TO_LE64 (disk->dev->length - 1);
+      gpt->AlternateLBA = PED_CPU_TO_LE64 (1);
+      gpt->PartitionEntryLBA
+        = PED_CPU_TO_LE64 (disk->dev->length - 1 - ptes_size);
+    }
+  else
+    {
+      gpt->MyLBA = PED_CPU_TO_LE64 (1);
+      gpt->AlternateLBA = PED_CPU_TO_LE64 (disk->dev->length - 1);
+      gpt->PartitionEntryLBA = PED_CPU_TO_LE64 (2);
+    }
+
+  gpt->FirstUsableLBA = PED_CPU_TO_LE64 (gpt_disk_data->data_area.start);
+  gpt->LastUsableLBA = PED_CPU_TO_LE64 (gpt_disk_data->data_area.end);
+  gpt->DiskGUID = gpt_disk_data->uuid;
+  gpt->NumberOfPartitionEntries
+    = PED_CPU_TO_LE32 (gpt_disk_data->entry_count);
+  gpt->SizeOfPartitionEntry = PED_CPU_TO_LE32 (sizeof (GuidPartitionEntry_t));
+  gpt->PartitionEntryArrayCRC32 = PED_CPU_TO_LE32 (ptes_crc);
+
+  uint32_t crc;
+  if (pth_crc32 (disk->dev, gpt, &crc) != 0)
+    return 1;
+
+  gpt->HeaderCRC32 = PED_CPU_TO_LE32 (crc);
+  return 0;
+}
+
+static void
+_partition_generate_part_entry (PedPartition *part, GuidPartitionEntry_t *pte)
+{
+  GPTPartitionData *gpt_part_data = part->disk_specific;
+  unsigned int i;
+
+  PED_ASSERT (gpt_part_data != NULL);
+
+  pte->PartitionTypeGuid = gpt_part_data->type;
+  pte->UniquePartitionGuid = gpt_part_data->uuid;
+  pte->StartingLBA = PED_CPU_TO_LE64 (part->geom.start);
+  pte->EndingLBA = PED_CPU_TO_LE64 (part->geom.end);
+  memset (&pte->Attributes, 0, sizeof (GuidPartitionEntryAttributes_t));
+
+  if (gpt_part_data->hidden)
+    pte->Attributes.RequiredToFunction = 1;
+  if (gpt_part_data->legacy_boot)
+    pte->Attributes.LegacyBIOSBootable = 1;
+
+  for (i = 0; i < 72 / sizeof (efi_char16_t); i++)
+    pte->PartitionName[i]
+      = (efi_char16_t) PED_CPU_TO_LE16 ((uint16_t) gpt_part_data->name[i]);
+}
+
+static int
+gpt_write (const PedDisk *disk)
+{
+  GPTDiskData *gpt_disk_data;
+  GuidPartitionEntry_t *ptes;
+  uint32_t ptes_crc;
+  uint8_t *pth_raw;
+  GuidPartitionTableHeader_t *gpt;
+  PedPartition *part;
+  int ptes_size;
+
+  PED_ASSERT (disk != NULL);
+  PED_ASSERT (disk->dev != NULL);
+  PED_ASSERT (disk->disk_specific != NULL);
+
+  gpt_disk_data = disk->disk_specific;
+
+  ptes_size = sizeof (GuidPartitionEntry_t) * gpt_disk_data->entry_count;
+  ptes = (GuidPartitionEntry_t *) ped_malloc (ptes_size);
+  if (!ptes)
+    goto error;
+  memset (ptes, 0, ptes_size);
+  for (part = ped_disk_next_partition (disk, NULL); part;
+       part = ped_disk_next_partition (disk, part))
+    {
+      if (part->type != 0)
+        continue;
+      _partition_generate_part_entry (part, &ptes[part->num - 1]);
+    }
+
+  ptes_crc = efi_crc32 (ptes, ptes_size);
+
+  /* Write protective MBR */
+  if (!_write_pmbr (disk->dev))
+    goto error_free_ptes;
+
+  /* Write PTH and PTEs */
+  /* FIXME: Caution: this code is nearly identical to what's just below. */
+  if (_generate_header (disk, 0, ptes_crc, &gpt) != 0)
+    goto error_free_ptes;
+  pth_raw = pth_get_raw (disk->dev, gpt);
+  pth_free (gpt);
+  if (pth_raw == NULL)
+    goto error_free_ptes;
+  int write_ok = ped_device_write (disk->dev, pth_raw, 1, 1);
+  free (pth_raw);
+  if (!write_ok)
+    goto error_free_ptes;
+  if (!ped_device_write (disk->dev, ptes, 2,
+                         ptes_size / disk->dev->sector_size))
+    goto error_free_ptes;
+
+  /* Write Alternate PTH & PTEs */
+  /* FIXME: Caution: this code is nearly identical to what's just above. */
+  if (_generate_header (disk, 1, ptes_crc, &gpt) != 0)
+    goto error_free_ptes;
+  pth_raw = pth_get_raw (disk->dev, gpt);
+  pth_free (gpt);
+  if (pth_raw == NULL)
+    goto error_free_ptes;
+  write_ok = ped_device_write (disk->dev, pth_raw, disk->dev->length - 1, 1);
+  free (pth_raw);
+  if (!write_ok)
+    goto error_free_ptes;
+  if (!ped_device_write (disk->dev, ptes,
+                         disk->dev->length - 1 -
+                         ptes_size / disk->dev->sector_size,
+                         ptes_size / disk->dev->sector_size))
+    goto error_free_ptes;
+
+  free (ptes);
+  return ped_device_sync (disk->dev);
+
+error_free_ptes:
+  free (ptes);
+error:
+  return 0;
+}
+#endif /* !DISCOVER_ONLY */
+
+static int
+add_metadata_part (PedDisk *disk, PedSector start, PedSector length)
+{
+  PedPartition *part;
+  PedConstraint *constraint_exact;
+  PED_ASSERT (disk != NULL);
+
+  part = ped_partition_new (disk, PED_PARTITION_METADATA, NULL,
+                            start, start + length - 1);
+  if (!part)
+    goto error;
+
+  constraint_exact = ped_constraint_exact (&part->geom);
+  if (!ped_disk_add_partition (disk, part, constraint_exact))
+    goto error_destroy_constraint;
+  ped_constraint_destroy (constraint_exact);
+  return 1;
+
+error_destroy_constraint:
+  ped_constraint_destroy (constraint_exact);
+  ped_partition_destroy (part);
+error:
+  return 0;
+}
+
+static PedPartition *
+gpt_partition_new (const PedDisk *disk,
+                   PedPartitionType part_type,
+                   const PedFileSystemType *fs_type, PedSector start,
+                   PedSector end)
+{
+  PedPartition *part;
+  GPTPartitionData *gpt_part_data;
+
+  part = _ped_partition_alloc (disk, part_type, fs_type, start, end);
+  if (!part)
+    goto error;
+
+  if (part_type != 0)
+    return part;
+
+  gpt_part_data = part->disk_specific =
+    ped_malloc (sizeof (GPTPartitionData));
+  if (!gpt_part_data)
+    goto error_free_part;
+
+  gpt_part_data->type = PARTITION_BASIC_DATA_GUID;
+  gpt_part_data->lvm = 0;
+  gpt_part_data->raid = 0;
+  gpt_part_data->boot = 0;
+  gpt_part_data->bios_grub = 0;
+  gpt_part_data->hp_service = 0;
+  gpt_part_data->hidden = 0;
+  gpt_part_data->msftres = 0;
+  gpt_part_data->msftrecv = 0;
+  gpt_part_data->atvrecv = 0;
+  gpt_part_data->legacy_boot = 0;
+  uuid_generate ((unsigned char *) &gpt_part_data->uuid);
+  swap_uuid_and_efi_guid ((unsigned char *) (&gpt_part_data->uuid));
+  memset (gpt_part_data->name, 0, sizeof gpt_part_data->name);
+  return part;
+
+error_free_part:
+  _ped_partition_free (part);
+error:
+  return NULL;
+}
+
+static PedPartition *
+gpt_partition_duplicate (const PedPartition *part)
+{
+  PedPartition *result;
+  GPTPartitionData *part_data = part->disk_specific;
+  GPTPartitionData *result_data;
+
+  result = _ped_partition_alloc (part->disk, part->type, part->fs_type,
+                                 part->geom.start, part->geom.end);
+  if (!result)
+    goto error;
+  result->num = part->num;
+
+  if (result->type != 0)
+    return result;
+
+  result_data = result->disk_specific =
+    ped_malloc (sizeof (GPTPartitionData));
+  if (!result_data)
+    goto error_free_part;
+
+  result_data->type = part_data->type;
+  result_data->uuid = part_data->uuid;
+  strcpy (result_data->name, part_data->name);
+  return result;
+
+error_free_part:
+  _ped_partition_free (result);
+error:
+  return NULL;
+}
+
+static void
+gpt_partition_destroy (PedPartition *part)
+{
+  if (part->type == 0)
+    {
+      PED_ASSERT (part->disk_specific != NULL);
+      free (part->disk_specific);
+    }
+
+  _ped_partition_free (part);
+}
+
+static int
+gpt_partition_set_system (PedPartition *part,
+                          const PedFileSystemType *fs_type)
+{
+  GPTPartitionData *gpt_part_data = part->disk_specific;
+
+  PED_ASSERT (gpt_part_data != NULL);
+
+  part->fs_type = fs_type;
+
+  if (gpt_part_data->lvm)
+    {
+      gpt_part_data->type = PARTITION_LVM_GUID;
+      return 1;
+    }
+  if (gpt_part_data->raid)
+    {
+      gpt_part_data->type = PARTITION_RAID_GUID;
+      return 1;
+    }
+  if (gpt_part_data->boot)
+    {
+      gpt_part_data->type = PARTITION_SYSTEM_GUID;
+      return 1;
+    }
+  if (gpt_part_data->bios_grub)
+    {
+      gpt_part_data->type = PARTITION_BIOS_GRUB_GUID;
+      return 1;
+    }
+  if (gpt_part_data->hp_service)
+    {
+      gpt_part_data->type = PARTITION_HPSERVICE_GUID;
+      return 1;
+    }
+  if (gpt_part_data->msftres)
+    {
+      gpt_part_data->type = PARTITION_MSFT_RESERVED_GUID;
+      return 1;
+    }
+  if (gpt_part_data->msftrecv)
+    {
+      gpt_part_data->type = PARTITION_MSFT_RECOVERY;
+      return 1;
+    }
+  if (gpt_part_data->atvrecv)
+    {
+      gpt_part_data->type = PARTITION_APPLE_TV_RECOVERY_GUID;
+      return 1;
+    }
+
+  if (fs_type)
+    {
+      if (strncmp (fs_type->name, "fat", 3) == 0
+          || strcmp (fs_type->name, "ntfs") == 0)
+        {
+          gpt_part_data->type = PARTITION_BASIC_DATA_GUID;
+          return 1;
+        }
+      if (strncmp (fs_type->name, "hfs", 3) == 0)
+        {
+          gpt_part_data->type = PARTITION_APPLE_HFS_GUID;
+          return 1;
+        }
+      if (strstr (fs_type->name, "swap"))
+        {
+          gpt_part_data->type = PARTITION_SWAP_GUID;
+          return 1;
+        }
+    }
+
+  gpt_part_data->type = PARTITION_BASIC_DATA_GUID;
+  return 1;
+}
+
+/* Allocate metadata partitions for the GPTH and PTES */
+static int
+gpt_alloc_metadata (PedDisk *disk)
+{
+  PedSector gptlength, pteslength = 0;
+  GPTDiskData *gpt_disk_data;
+
+  PED_ASSERT (disk != NULL);
+  PED_ASSERT (disk->dev != NULL);
+  PED_ASSERT (disk->disk_specific != NULL);
+  gpt_disk_data = disk->disk_specific;
+
+  gptlength = ped_div_round_up (sizeof (GuidPartitionTableHeader_t),
+                                disk->dev->sector_size);
+  pteslength = ped_div_round_up (gpt_disk_data->entry_count
+                                 * sizeof (GuidPartitionEntry_t),
+                                 disk->dev->sector_size);
+
+  /* metadata at the start of the disk includes the MBR */
+  if (!add_metadata_part (disk, GPT_PMBR_LBA,
+                          GPT_PMBR_SECTORS + gptlength + pteslength))
+    return 0;
+
+  /* metadata at the end of the disk */
+  if (!add_metadata_part (disk, disk->dev->length - gptlength - pteslength,
+                          gptlength + pteslength))
+    return 0;
+
+  return 1;
+}
+
+/* Does nothing, as the read/new/destroy functions maintain part->num */
+static int
+gpt_partition_enumerate (PedPartition *part)
+{
+  GPTDiskData *gpt_disk_data = part->disk->disk_specific;
+  int i;
+
+  /* never change the partition numbers */
+  if (part->num != -1)
+    return 1;
+
+  for (i = 1; i <= gpt_disk_data->entry_count; i++)
+    {
+      if (!ped_disk_get_partition (part->disk, i))
+        {
+          part->num = i;
+          return 1;
+        }
+    }
+
+  PED_ASSERT (0);
+
+  return 0;                    /* used if debug is disabled */
+}
+
+static int
+gpt_partition_set_flag (PedPartition *part, PedPartitionFlag flag, int state)
+{
+  GPTPartitionData *gpt_part_data;
+  PED_ASSERT (part != NULL);
+  PED_ASSERT (part->disk_specific != NULL);
+  gpt_part_data = part->disk_specific;
+
+  switch (flag)
+    {
+    case PED_PARTITION_BOOT:
+      gpt_part_data->boot = state;
+      if (state)
+        gpt_part_data->raid
+          = gpt_part_data->lvm
+          = gpt_part_data->bios_grub
+          = gpt_part_data->hp_service
+          = gpt_part_data->msftres
+          = gpt_part_data->msftrecv
+          = gpt_part_data->atvrecv = 0;
+      return gpt_partition_set_system (part, part->fs_type);
+    case PED_PARTITION_BIOS_GRUB:
+      gpt_part_data->bios_grub = state;
+      if (state)
+        gpt_part_data->raid
+          = gpt_part_data->lvm
+          = gpt_part_data->boot
+          = gpt_part_data->hp_service
+          = gpt_part_data->msftres
+          = gpt_part_data->msftrecv
+          = gpt_part_data->atvrecv = 0;
+      return gpt_partition_set_system (part, part->fs_type);
+    case PED_PARTITION_RAID:
+      gpt_part_data->raid = state;
+      if (state)
+        gpt_part_data->boot
+          = gpt_part_data->lvm
+          = gpt_part_data->bios_grub
+          = gpt_part_data->hp_service
+          = gpt_part_data->msftres
+          = gpt_part_data->msftrecv
+          = gpt_part_data->atvrecv = 0;
+      return gpt_partition_set_system (part, part->fs_type);
+    case PED_PARTITION_LVM:
+      gpt_part_data->lvm = state;
+      if (state)
+        gpt_part_data->boot
+          = gpt_part_data->raid
+          = gpt_part_data->bios_grub
+          = gpt_part_data->hp_service
+          = gpt_part_data->msftres
+          = gpt_part_data->msftrecv
+          = gpt_part_data->atvrecv = 0;
+      return gpt_partition_set_system (part, part->fs_type);
+    case PED_PARTITION_HPSERVICE:
+      gpt_part_data->hp_service = state;
+      if (state)
+        gpt_part_data->boot
+          = gpt_part_data->raid
+          = gpt_part_data->lvm
+          = gpt_part_data->bios_grub
+          = gpt_part_data->msftres
+          = gpt_part_data->msftrecv
+          = gpt_part_data->atvrecv = 0;
+      return gpt_partition_set_system (part, part->fs_type);
+    case PED_PARTITION_MSFT_RESERVED:
+      gpt_part_data->msftres = state;
+      if (state)
+        gpt_part_data->boot
+          = gpt_part_data->raid
+          = gpt_part_data->lvm
+          = gpt_part_data->bios_grub
+          = gpt_part_data->hp_service
+          = gpt_part_data->msftrecv
+          = gpt_part_data->atvrecv = 0;
+      return gpt_partition_set_system (part, part->fs_type);
+    case PED_PARTITION_DIAG:
+      gpt_part_data->msftrecv = state;
+      if (state)
+        gpt_part_data->boot
+          = gpt_part_data->raid
+          = gpt_part_data->lvm
+          = gpt_part_data->bios_grub
+          = gpt_part_data->hp_service
+          = gpt_part_data->msftres
+          = gpt_part_data->atvrecv = 0;
+      return gpt_partition_set_system (part, part->fs_type);
+    case PED_PARTITION_APPLE_TV_RECOVERY:
+      gpt_part_data->atvrecv = state;
+      if (state)
+        gpt_part_data->boot
+          = gpt_part_data->raid
+          = gpt_part_data->lvm
+          = gpt_part_data->bios_grub
+          = gpt_part_data->hp_service
+          = gpt_part_data->msftres
+          = gpt_part_data->msftrecv = 0;
+      return gpt_partition_set_system (part, part->fs_type);
+    case PED_PARTITION_HIDDEN:
+      gpt_part_data->hidden = state;
+      return 1;
+    case PED_PARTITION_LEGACY_BOOT:
+      gpt_part_data->legacy_boot = state;
+      return 1;
+    case PED_PARTITION_SWAP:
+    case PED_PARTITION_ROOT:
+    case PED_PARTITION_LBA:
+    default:
+      return 0;
+    }
+  return 1;
+}
+
+static int
+gpt_partition_get_flag (const PedPartition *part, PedPartitionFlag flag)
+{
+  GPTPartitionData *gpt_part_data;
+  PED_ASSERT (part->disk_specific != NULL);
+  gpt_part_data = part->disk_specific;
+
+  switch (flag)
+    {
+    case PED_PARTITION_RAID:
+      return gpt_part_data->raid;
+    case PED_PARTITION_LVM:
+      return gpt_part_data->lvm;
+    case PED_PARTITION_BOOT:
+      return gpt_part_data->boot;
+    case PED_PARTITION_BIOS_GRUB:
+      return gpt_part_data->bios_grub;
+    case PED_PARTITION_HPSERVICE:
+      return gpt_part_data->hp_service;
+    case PED_PARTITION_MSFT_RESERVED:
+      return gpt_part_data->msftres;
+    case PED_PARTITION_DIAG:
+      return gpt_part_data->msftrecv;
+    case PED_PARTITION_APPLE_TV_RECOVERY:
+      return gpt_part_data->atvrecv;
+    case PED_PARTITION_HIDDEN:
+      return gpt_part_data->hidden;
+    case PED_PARTITION_LEGACY_BOOT:
+      return gpt_part_data->legacy_boot;
+    case PED_PARTITION_SWAP:
+    case PED_PARTITION_LBA:
+    case PED_PARTITION_ROOT:
+    default:
+      return 0;
+    }
+  return 0;
+}
+
+static int
+gpt_partition_is_flag_available (const PedPartition *part,
+                                 PedPartitionFlag flag)
+{
+  switch (flag)
+    {
+    case PED_PARTITION_RAID:
+    case PED_PARTITION_LVM:
+    case PED_PARTITION_BOOT:
+    case PED_PARTITION_BIOS_GRUB:
+    case PED_PARTITION_HPSERVICE:
+    case PED_PARTITION_MSFT_RESERVED:
+    case PED_PARTITION_DIAG:
+    case PED_PARTITION_APPLE_TV_RECOVERY:
+    case PED_PARTITION_HIDDEN:
+    case PED_PARTITION_LEGACY_BOOT:
+      return 1;
+    case PED_PARTITION_SWAP:
+    case PED_PARTITION_ROOT:
+    case PED_PARTITION_LBA:
+    default:
+      return 0;
+    }
+  return 0;
+}
+
+static void
+gpt_partition_set_name (PedPartition *part, const char *name)
+{
+  GPTPartitionData *gpt_part_data = part->disk_specific;
+
+  strncpy (gpt_part_data->name, name, 36);
+  gpt_part_data->name[36] = 0;
+}
+
+static const char *
+gpt_partition_get_name (const PedPartition *part)
+{
+  GPTPartitionData *gpt_part_data = part->disk_specific;
+  return gpt_part_data->name;
+}
+
+static int
+gpt_get_max_primary_partition_count (const PedDisk *disk)
+{
+  const GPTDiskData *gpt_disk_data = disk->disk_specific;
+  return gpt_disk_data->entry_count;
+}
+
+/*
+ * From (http://developer.apple.com/technotes/tn2006/tn2166.html Chapter 5).
+ * According to the specs the first LBA (LBA0) is not relevant (it exists
+ * to maintain compatibility).  on the second LBA(LBA1) gpt places the
+ * header.  The header is as big as the block size.  After the header we
+ * find the Entry array.  Each element of said array, describes each
+ * partition.  One can have as much elements as can fit between the end of
+ * the second LBA (where the header ends) and the FirstUsableLBA.
+ * FirstUsableLBA is the first logical block that is used for contents
+ * and is defined in header.
+ *
+ * /---------------------------------------------------\
+ * | BLOCK0 | HEADER | Entry Array | First Usable LBA  |
+ * |        | BLOCK1 |             |                   |
+ * \---------------------------------------------------/
+ *                  /              \
+ *     /----------/                  \----------\
+ *     /-----------------------------------------\
+ *     |  E1  |  E2  |  E3  |...............| EN |
+ *     \-----------------------------------------/
+ *
+ * The number of possible partitions or supported partitions is:
+ * SP = FirstUsableLBA*Blocksize - 2*Blocksize / SizeOfPartitionEntry
+ * SP = Blocksize(FirstusableLBA - 2) / SizeOfPartitoinEntry
+ */
+static bool
+gpt_get_max_supported_partition_count (const PedDisk *disk, int *max_n)
+{
+  GuidPartitionTableHeader_t *pth = NULL;
+  uint8_t *pth_raw = ped_malloc (pth_get_size (disk->dev));
+
+  if (ped_device_read (disk->dev, pth_raw, 1, GPT_HEADER_SECTORS)
+      || ped_device_read (disk->dev, pth_raw,
+                          disk->dev->length, GPT_HEADER_SECTORS))
+    pth = pth_new_from_raw (disk->dev, pth_raw);
+  free (pth_raw);
+
+  if (pth == NULL)
+    return false;
+
+  if (!_header_is_valid (disk, pth, 1))
+    {
+      pth->FirstUsableLBA = 34;
+      pth->SizeOfPartitionEntry
+        = PED_CPU_TO_LE32 (sizeof (GuidPartitionEntry_t));
+    }
+
+  *max_n = (disk->dev->sector_size * (pth->FirstUsableLBA - 2)
+            / PED_LE32_TO_CPU (pth->SizeOfPartitionEntry));
+  pth_free (pth);
+  return true;
+}
+
+static PedConstraint *
+_non_metadata_constraint (const PedDisk *disk)
+{
+  GPTDiskData *gpt_disk_data = disk->disk_specific;
+
+  return ped_constraint_new_from_max (&gpt_disk_data->data_area);
+}
+
+static int
+gpt_partition_align (PedPartition *part, const PedConstraint *constraint)
+{
+  PED_ASSERT (part != NULL);
+
+  if (_ped_partition_attempt_align (part, constraint,
+                                    _non_metadata_constraint (part->disk)))
+    return 1;
+
+#ifndef DISCOVER_ONLY
+  ped_exception_throw (PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_CANCEL,
+                       _("Unable to satisfy all constraints on the partition."));
+#endif
+  return 0;
+}
+
+#include "pt-common.h"
+PT_define_limit_functions (gpt)
+
+static PedDiskOps gpt_disk_ops =
+{
+  clobber:                     NULL,
+  write:                       NULL_IF_DISCOVER_ONLY (gpt_write),
+
+  partition_set_name:          gpt_partition_set_name,
+  partition_get_name:          gpt_partition_get_name,
+
+  PT_op_function_initializers (gpt)
+};
+
+static PedDiskType gpt_disk_type =
+{
+  next:                NULL,
+  name:                "gpt",
+  ops:         &gpt_disk_ops,
+  features:    PED_DISK_TYPE_PARTITION_NAME
+};
+
+void
+ped_disk_gpt_init ()
+{
+  ped_disk_type_register (&gpt_disk_type);
+}
+
+void
+ped_disk_gpt_done ()
+{
+  ped_disk_type_unregister (&gpt_disk_type);
+}
+
+verify (sizeof (GuidPartitionEntryAttributes_t) == 8);
+verify (sizeof (GuidPartitionEntry_t) == 128);
diff --git a/libparted/labels/loop.c b/libparted/labels/loop.c
new file mode 100644 (file)
index 0000000..9053b17
--- /dev/null
@@ -0,0 +1,319 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 1999-2000, 2007-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#include <config.h>
+
+#include <parted/parted.h>
+#include <parted/debug.h>
+#include <parted/endian.h>
+#include <stdbool.h>
+
+#include "pt-tools.h"
+
+#if ENABLE_NLS
+#  include <libintl.h>
+#  define _(String) dgettext (PACKAGE, String)
+#else
+#  define _(String) (String)
+#endif /* ENABLE_NLS */
+
+#define        LOOP_SIGNATURE          "GNU Parted Loopback 0"
+
+static PedDiskType loop_disk_type;
+
+static PedDisk* loop_alloc (const PedDevice* dev);
+static void loop_free (PedDisk* disk);
+
+static int
+loop_probe (const PedDevice* dev)
+{
+       PedDisk *disk = loop_alloc (dev);
+       if (!disk)
+               goto error;
+
+       void *buf;
+       if (!ptt_read_sector (dev, 0, &buf))
+               goto error_destroy_disk;
+        int found_sig = !strncmp (buf, LOOP_SIGNATURE, strlen (LOOP_SIGNATURE));
+        free (buf);
+
+       int result;
+       if (found_sig) {
+               result = 1;
+       } else {
+               PedGeometry*    geom;
+
+               geom = ped_geometry_new (dev, 0, disk->dev->length);
+               if (!geom)
+                       goto error_destroy_disk;
+               result = ped_file_system_probe (geom) != NULL;
+               ped_geometry_destroy (geom);
+       }
+       loop_free (disk);
+       return result;
+
+error_destroy_disk:
+       loop_free (disk);
+error:
+       return 0;
+}
+
+static PedDisk*
+loop_alloc (const PedDevice* dev)
+{
+       PED_ASSERT (dev != NULL);
+
+       if (dev->length < 256)
+               return NULL;
+       return _ped_disk_alloc ((PedDevice*)dev, &loop_disk_type);
+}
+
+static PedDisk*
+loop_duplicate (const PedDisk* disk)
+{
+       return ped_disk_new_fresh (disk->dev, &loop_disk_type);
+}
+
+static void
+loop_free (PedDisk* disk)
+{
+       PED_ASSERT (disk != NULL);
+
+       _ped_disk_free (disk);
+}
+
+static int
+loop_read (PedDisk* disk)
+{
+       PedDevice*              dev = NULL;
+       PedGeometry*            geom;
+       PedFileSystemType*      fs_type;
+       PedPartition*           part;
+       PedConstraint*          constraint_any;
+
+       PED_ASSERT (disk != NULL);
+       dev = disk->dev;
+       constraint_any = ped_constraint_any (dev);
+
+       ped_disk_delete_all (disk);
+
+       void *buf;
+       if (!ptt_read_sector (dev, 0, &buf))
+               goto error;
+
+        int found_sig = !strncmp (buf, LOOP_SIGNATURE, strlen (LOOP_SIGNATURE));
+        free (buf);
+
+        if (found_sig) {
+               ped_constraint_destroy (constraint_any);
+               return 1;
+        }
+
+       geom = ped_geometry_new (dev, 0, dev->length);
+       if (!geom)
+               goto error;
+
+       fs_type = ped_file_system_probe (geom);
+       if (!fs_type)
+               goto error_free_geom;
+
+       part = ped_partition_new (disk, PED_PARTITION_NORMAL,
+                                  fs_type, geom->start, geom->end);
+       ped_geometry_destroy (geom);
+       if (!part)
+               goto error;
+       part->fs_type = fs_type;
+
+       if (!ped_disk_add_partition (disk, part, constraint_any))
+               goto error;
+       ped_constraint_destroy (constraint_any);
+       return 1;
+
+error_free_geom:
+       ped_geometry_destroy (geom);
+error:
+       ped_constraint_destroy (constraint_any);
+       return 0;
+}
+
+#ifndef DISCOVER_ONLY
+static int
+loop_write (const PedDisk* disk)
+{
+       size_t buflen = disk->dev->sector_size;
+       char *buf = ped_malloc (buflen);
+       if (buf == NULL)
+               return 0;
+
+       if (ped_disk_get_partition (disk, 1)) {
+               if (!ped_device_read (disk->dev, buf, 0, 1)) {
+                       free (buf);
+                       return 0;
+               }
+               if (strncmp (buf, LOOP_SIGNATURE, strlen (LOOP_SIGNATURE)) != 0) {
+                       free (buf);
+                       return 1;
+                }
+               memset (buf, 0, strlen (LOOP_SIGNATURE));
+               return ped_device_write (disk->dev, buf, 0, 1);
+       }
+
+       memset (buf, 0, buflen);
+       strcpy (buf, LOOP_SIGNATURE);
+
+        int write_ok = ped_device_write (disk->dev, buf, 0, 1);
+        free (buf);
+       return write_ok;
+}
+#endif /* !DISCOVER_ONLY */
+
+static PedPartition*
+loop_partition_new (const PedDisk* disk, PedPartitionType part_type,
+                   const PedFileSystemType* fs_type,
+                   PedSector start, PedSector end)
+{
+       PedPartition*   part;
+
+       part = _ped_partition_alloc (disk, part_type, fs_type, start, end);
+       if (!part)
+               return NULL;
+       part->disk_specific = NULL;
+       return part;
+}
+
+static PedPartition*
+loop_partition_duplicate (const PedPartition* part)
+{
+       PedPartition* result;
+
+       result = ped_partition_new (part->disk, part->type, part->fs_type,
+                                   part->geom.start, part->geom.end);
+       if (result == NULL)
+               return NULL;
+       result->num = part->num;
+       return result;
+}
+
+static void
+loop_partition_destroy (PedPartition* part)
+{
+       free (part);
+}
+
+static int
+loop_partition_set_system (PedPartition* part, const PedFileSystemType* fs_type)
+{
+       part->fs_type = fs_type;
+       return 1;
+}
+
+static int
+loop_partition_set_flag (PedPartition* part, PedPartitionFlag flag, int state)
+{
+       return 0;
+}
+
+static int
+loop_partition_get_flag (const PedPartition* part, PedPartitionFlag flag)
+{
+       return 0;
+}
+
+static int
+loop_partition_align (PedPartition* part, const PedConstraint* constraint)
+{
+       PedGeometry*    new_geom;
+
+       new_geom = ped_constraint_solve_nearest (constraint, &part->geom);
+       if (!new_geom) {
+               ped_exception_throw (
+                       PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_CANCEL,
+                       _("Unable to satisfy all constraints on the "
+                         "partition."));
+               return 0;
+       }
+       ped_geometry_set (&part->geom, new_geom->start, new_geom->length);
+       ped_geometry_destroy (new_geom);
+       return 1;
+}
+
+static int
+loop_partition_is_flag_available (const PedPartition* part,
+                                 PedPartitionFlag flag)
+{
+       return 0;
+}
+
+static int
+loop_partition_enumerate (PedPartition* part)
+{
+       part->num = 1;
+       return 1;
+}
+
+static int
+loop_alloc_metadata (PedDisk* disk)
+{
+       return 1;
+}
+
+static int
+loop_get_max_primary_partition_count (const PedDisk* disk)
+{
+       return 1;
+}
+
+static bool
+loop_get_max_supported_partition_count (const PedDisk* disk, int *max_n)
+{
+       *max_n = 1;
+       return true;
+}
+
+#include "pt-common.h"
+PT_define_limit_functions (loop)
+
+static PedDiskOps loop_disk_ops = {
+       clobber:                NULL,
+       write:                  NULL_IF_DISCOVER_ONLY (loop_write),
+
+       partition_set_name:     NULL,
+       partition_get_name:     NULL,
+
+       PT_op_function_initializers (loop)
+};
+
+static PedDiskType loop_disk_type = {
+       next:           NULL,
+       name:           "loop",
+       ops:            &loop_disk_ops,
+       features:       0
+};
+
+void
+ped_disk_loop_init ()
+{
+       ped_disk_type_register (&loop_disk_type);
+}
+
+void
+ped_disk_loop_done ()
+{
+       ped_disk_type_unregister (&loop_disk_type);
+}
diff --git a/libparted/labels/mac.c b/libparted/labels/mac.c
new file mode 100644 (file)
index 0000000..bd756c2
--- /dev/null
@@ -0,0 +1,1621 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 2000, 2002, 2004, 2007-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#include <config.h>
+
+#include <parted/parted.h>
+#include <parted/debug.h>
+#include <parted/endian.h>
+#include <stdbool.h>
+
+#if ENABLE_NLS
+#  include <libintl.h>
+#  define _(String) dgettext (PACKAGE, String)
+#else
+#  define _(String) (String)
+#endif /* ENABLE_NLS */
+
+#include "misc.h"
+#include "pt-tools.h"
+
+/* struct's hacked from Linux source:  fs/partitions/mac.h
+ * I believe it was originally written by Paul Mackerras (from comments in
+ * Quik source)
+ *
+ * See also:
+ *     http://developer.apple.com/documentation/mac/Devices/Devices-126.html
+ *     http://developer.apple.com/documentation/mac/Devices/Devices-121.html
+ *     http://devworld.apple.com/technotes/tn/tn1189.html
+ *
+ * Partition types:
+ *     Apple_Bootstrap         new-world (HFS) boot partition
+ *     Apple_partition_map     partition map (table)
+ *     Apple_Driver            device driver
+ *     Apple_Driver43          SCSI Manager 4.3 device driver
+ *     Apple_MFS               original Macintosh File System
+ *     Apple_HFS               Hierarchical File System (and +)
+ *     Apple_HFSX              HFS+ with case sensitivity and more
+ *     Apple_UNIX_SVR2         UNIX file system (UFS?)
+ *     Apple_PRODOS            ProDOS file system
+ *     Apple_Free              unused space
+ *     Apple_Scratch           empty
+ *     Apple_Void              padding for iso9660
+ *     Apple_Extra             an unused partition map entry
+ *
+ * Quick explanation:
+ * ------------------
+ * Terminology:
+ *
+ *     Parted                  Apple
+ *     ------                  -----
+ *     device                  disk/device
+ *     disk                    no equivalent.
+ *     partition               volume or partition
+ *     sector                  block
+ *
+ *     * All space must be accounted for, except block 0 (driver block) and
+ *     block 1-X (the partition map: i.e. lots of MacRawPartitions)
+ *
+ *     * It's really hard to grow/shrink the number of MacRawPartition
+ *     entries in the partition map, because the first partition starts
+ *     immediately after the partition map.  When we can move the start of
+ *     HFS and ext2 partitions, this problem will disappear ;-)
+ */
+
+#define MAC_PARTITION_MAGIC_1  0x5453          /* old */
+#define MAC_PARTITION_MAGIC_2  0x504d
+#define MAC_DISK_MAGIC         0x4552
+
+#define MAC_STATUS_BOOTABLE     8       /* partition is bootable */
+
+typedef struct _MacRawPartition     MacRawPartition;
+typedef struct _MacRawDisk          MacRawDisk;
+typedef struct _MacDeviceDriver     MacDeviceDriver;
+typedef struct _MacPartitionData    MacPartitionData;
+typedef struct _MacDiskData         MacDiskData;
+
+struct __attribute__ ((packed)) _MacRawPartition {
+       uint16_t        signature;      /* expected to be MAC_PARTITION_MAGIC */
+       uint16_t        res1;
+       uint32_t        map_count;      /* # blocks in partition map */
+       uint32_t        start_block;    /* absolute starting block # of partition */
+       uint32_t        block_count;    /* number of blocks in partition */
+       char            name[32];       /* partition name */
+       char            type[32];       /* string type description */
+       uint32_t        data_start;     /* rel block # of first data block */
+       uint32_t        data_count;     /* number of data blocks */
+       uint32_t        status;         /* partition status bits */
+       uint32_t        boot_start;
+       uint32_t        boot_count;
+       uint32_t        boot_load;
+       uint32_t        boot_load2;
+       uint32_t        boot_entry;
+       uint32_t        boot_entry2;
+       uint32_t        boot_cksum;
+       char            processor[16];  /* Contains 680x0, x=0,2,3,4; or empty */
+       uint32_t        driver_sig;
+       char            _padding[372];
+};
+
+/* Driver descriptor structure, in block 0 */
+struct __attribute__ ((packed)) _MacRawDisk {
+       uint16_t        signature;      /* expected to be MAC_DRIVER_MAGIC */
+       uint16_t        block_size;     /* physical sector size */
+       uint32_t        block_count;    /* size of device in blocks */
+       uint16_t        dev_type;       /* reserved */
+       uint16_t        dev_id;         /* reserved */
+       uint32_t        data;           /* reserved */
+       uint16_t        driver_count;   /* # of driver descriptor entries */
+       uint8_t         driverlist[488];/* info about available drivers */
+       uint16_t        padding[3];     /* pad to 512 bytes */
+};
+
+struct __attribute__ ((packed)) _MacDeviceDriver {
+       uint32_t        block;          /* startblock in MacRawDisk->block_size units */
+       uint16_t        size;           /* size in 512 byte units */
+       uint16_t        type;           /* operating system type (MacOS = 1) */
+};
+
+struct _MacPartitionData {
+       char            volume_name[33];        /* eg: "Games" */
+       char            system_name[33];        /* eg: "Apple_Unix_SVR2" */
+       char            processor_name[17];
+
+       int             is_boot;
+       int             is_driver;
+       int             has_driver;
+       int             is_root;
+       int             is_swap;
+       int             is_lvm;
+       int             is_raid;
+
+       PedSector       data_region_length;
+       PedSector       boot_region_length;
+
+       uint32_t        boot_base_address;
+       uint32_t        boot_entry_address;
+       uint32_t        boot_checksum;
+
+       uint32_t        status;
+       uint32_t        driver_sig;
+};
+
+struct _MacDiskData {
+       int             ghost_size;             /* sectors per "driver" block */
+       int             part_map_entry_count;   /* # entries (incl. ghost) */
+       int             part_map_entry_num;     /* partition map location */
+
+       int             active_part_entry_count;        /* # real partitions */
+       int             free_part_entry_count;          /* # free space */
+       int             last_part_entry_num;            /* last entry number */
+
+       uint16_t        block_size;             /* physical sector size */
+       uint16_t        driver_count;
+       MacDeviceDriver driverlist[1 + 60];     /* 488 bytes */
+};
+
+static PedDiskType mac_disk_type;
+
+static int
+_check_signature (MacRawDisk const *raw_disk)
+{
+       if (PED_BE16_TO_CPU (raw_disk->signature) != MAC_DISK_MAGIC) {
+#ifdef DISCOVER_ONLY
+               return 0;
+#else
+               return ped_exception_throw (
+                       PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_IGNORE_CANCEL,
+                       _("Invalid signature %x for Mac disk labels."),
+                       (int) PED_BE16_TO_CPU (raw_disk->signature))
+                       == PED_EXCEPTION_IGNORE;
+#endif
+       }
+
+       return 1;
+}
+
+static int
+_rawpart_check_signature (MacRawPartition* raw_part)
+{
+       int     sig = (int) PED_BE16_TO_CPU (raw_part->signature);
+       return sig == MAC_PARTITION_MAGIC_1 || sig == MAC_PARTITION_MAGIC_2;
+}
+
+static int
+mac_probe (const PedDevice * dev)
+{
+       PED_ASSERT (dev != NULL);
+
+        if (dev->sector_size < sizeof (MacRawDisk))
+                return 0;
+
+       void *label;
+       if (!ptt_read_sector (dev, 0, &label))
+               return 0;
+
+       int valid = _check_signature (label);
+
+       free (label);
+       return valid;
+}
+
+static int
+_disk_add_part_map_entry (PedDisk* disk, int warn)
+{
+       MacDiskData*            mac_disk_data = disk->disk_specific;
+       PedPartition*           new_part;
+       MacPartitionData*       mac_part_data;
+       PedSector               part_map_size;
+       PedConstraint*          constraint_any = ped_constraint_any (disk->dev);
+
+#ifndef DISCOVER_ONLY
+       if (warn && ped_exception_throw (
+               PED_EXCEPTION_ERROR,
+               PED_EXCEPTION_FIX | PED_EXCEPTION_CANCEL,
+               _("Partition map has no partition map entry!"))
+                       != PED_EXCEPTION_FIX)
+               goto error;
+#endif /* !DISCOVER_ONLY */
+
+       part_map_size
+               = ped_round_up_to (mac_disk_data->last_part_entry_num, 64);
+       if (part_map_size == 0)
+               part_map_size = 64;
+
+       new_part = ped_partition_new (disk, PED_PARTITION_NORMAL, NULL,
+                                      1, part_map_size - 1);
+       if (!new_part)
+               goto error;
+
+       mac_part_data = new_part->disk_specific;
+       strcpy (mac_part_data->volume_name, "Apple");
+       strcpy (mac_part_data->system_name, "Apple_partition_map");
+
+       if (!ped_disk_add_partition (disk, new_part, constraint_any))
+               goto error_destroy_new_part;
+
+       mac_disk_data->part_map_entry_num = new_part->num;
+       mac_disk_data->part_map_entry_count
+               = new_part->geom.end - mac_disk_data->ghost_size;
+       ped_constraint_destroy (constraint_any);
+       return 1;
+
+error_destroy_new_part:
+       ped_partition_destroy (new_part);
+error:
+       ped_constraint_destroy (constraint_any);
+       return 0;
+}
+
+static PedDisk*
+mac_alloc (const PedDevice* dev)
+{
+       PedDisk*                disk;
+       MacDiskData*            mac_disk_data;
+
+       PED_ASSERT (dev != NULL);
+
+#ifndef DISCOVER_ONLY
+       if (dev->length < 256) {
+               ped_exception_throw (
+                       PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_CANCEL,
+                       _("%s is too small for a Mac disk label!"),
+                       dev->path);
+               goto error;
+       }
+#endif
+
+       disk = _ped_disk_alloc (dev, &mac_disk_type);
+       if (!disk)
+               goto error;
+
+       mac_disk_data = (MacDiskData*) ped_malloc (sizeof (MacDiskData));
+       if (!mac_disk_data)
+               goto error_free_disk;
+       disk->disk_specific = mac_disk_data;
+       mac_disk_data->ghost_size = disk->dev->sector_size / 512;
+       mac_disk_data->active_part_entry_count = 0;
+       mac_disk_data->free_part_entry_count = 1;
+       mac_disk_data->last_part_entry_num = 1;
+       mac_disk_data->block_size = 0;
+       mac_disk_data->driver_count = 0;
+       memset(&mac_disk_data->driverlist[0], 0, sizeof(mac_disk_data->driverlist));
+
+       if (!_disk_add_part_map_entry (disk, 0))
+               goto error_free_disk;
+       return disk;
+
+error_free_disk:
+       _ped_disk_free (disk);
+error:
+       return NULL;
+}
+
+static PedDisk*
+mac_duplicate (const PedDisk* disk)
+{
+       PedDisk*        new_disk;
+       MacDiskData*    new_mac_data;
+       MacDiskData*    old_mac_data = (MacDiskData*) disk->disk_specific;
+
+       new_disk = ped_disk_new_fresh (disk->dev, &mac_disk_type);
+       if (!new_disk)
+               return NULL;
+
+       new_mac_data = (MacDiskData*) new_disk->disk_specific;
+
+       /* remove the partition map partition - it will be duplicated
+        * later.
+        */
+       PedSector first_part_map_sector = old_mac_data->ghost_size;
+       PedPartition *partition_map
+         = ped_disk_get_partition_by_sector (new_disk, first_part_map_sector);
+       PED_ASSERT (partition_map != NULL);
+
+       /* ped_disk_remove_partition may be used only to delete a "normal"
+          partition.  Trying to delete at least "freespace" or "metadata"
+          partitions leads to a violation of assumptions in
+          ped_disk_remove_partition, since it calls _disk_push_update_mode,
+          which destroys all "freespace" and "metadata" partitions, and
+          depends on that destruction not freeing its PART parameter.  */
+       PED_ASSERT (partition_map->type == PED_PARTITION_NORMAL);
+       ped_disk_remove_partition (new_disk, partition_map);
+
+       /* ugly, but C is ugly :p */
+       memcpy (new_mac_data, old_mac_data, sizeof (MacDiskData));
+       return new_disk;
+}
+
+static void
+mac_free (PedDisk* disk)
+{
+       MacDiskData*    mac_disk_data = disk->disk_specific;
+
+       _ped_disk_free (disk);
+       free (mac_disk_data);
+}
+
+static int
+_rawpart_cmp_type (const MacRawPartition* raw_part, const char* type)
+{
+       return strncasecmp (raw_part->type, type, 32) == 0;
+}
+
+static int
+_rawpart_cmp_name (const MacRawPartition* raw_part, const char* name)
+{
+       return strncasecmp (raw_part->name, name, 32) == 0;
+}
+
+static int
+_rawpart_is_partition_map (const MacRawPartition* raw_part)
+{
+       return _rawpart_cmp_type (raw_part, "Apple_partition_map");
+}
+
+static int
+strncasestr (const char* haystack, const char* needle, int n)
+{
+       int     needle_size = strlen (needle);
+       int     i;
+
+       for (i = 0; haystack[i] && i < n - needle_size; i++) {
+               if (strncasecmp (haystack + i, needle, needle_size) == 0)
+                       return 1;
+       }
+
+       return 0;
+}
+
+static int
+_rawpart_is_boot (const MacRawPartition* raw_part)
+{
+       if (!strcasecmp(raw_part->type, "Apple_Bootstrap"))
+               return 1;
+
+       if (!strcasecmp(raw_part->type, "Apple_Boot"))
+               return 1;
+
+       return 0;
+}
+
+static int
+_rawpart_is_driver (const MacRawPartition* raw_part)
+{
+       if (strncmp (raw_part->type, "Apple_", 6) != 0)
+               return 0;
+       if (!strncasestr (raw_part->type, "driver", 32))
+               return 0;
+       return 1;
+}
+
+static int
+_rawpart_has_driver (const MacRawPartition* raw_part, MacDiskData* mac_disk_data)
+{
+       MacDeviceDriver *driverlist;
+       uint16_t i, bsz;
+       uint32_t driver_bs, driver_be, part_be;
+
+       driverlist = &mac_disk_data->driverlist[0];
+       bsz = mac_disk_data->block_size / 512;
+       for (i = 0; i < mac_disk_data->driver_count; i++) {
+               driver_bs = driverlist->block * bsz;
+               driver_be = driver_bs + driverlist->size;
+               part_be = raw_part->start_block + raw_part->block_count;
+               if (driver_bs >= raw_part->start_block && driver_be <= part_be)
+                       return 1;
+               driverlist++;
+       }
+       return 0;
+}
+
+static int
+_rawpart_is_root (MacRawPartition* raw_part)
+{
+       if (!_rawpart_cmp_type (raw_part, "Apple_UNIX_SVR2"))
+               return 0;
+       if (strcmp (raw_part->name, "root") != 0)
+               return 0;
+       return 1;
+}
+
+static int
+_rawpart_is_swap (MacRawPartition* raw_part)
+{
+       if (!_rawpart_cmp_type (raw_part, "Apple_UNIX_SVR2"))
+               return 0;
+       if (strcmp (raw_part->name, "swap") != 0)
+               return 0;
+       return 1;
+}
+
+static int
+_rawpart_is_lvm (MacRawPartition* raw_part)
+{
+       if (strcmp (raw_part->type, "Linux_LVM") != 0)
+               return 0;
+       return 1;
+}
+
+static int
+_rawpart_is_raid (MacRawPartition* raw_part)
+{
+       if (strcmp (raw_part->type, "Linux_RAID") != 0)
+               return 0;
+       return 1;
+}
+
+static int
+_rawpart_is_void (MacRawPartition* raw_part)
+{
+       return _rawpart_cmp_type (raw_part, "Apple_Void");
+}
+
+/* returns 1 if the raw_part represents a partition that is "unused space", or
+ * doesn't represent a partition at all.  NOTE: some people make Apple_Free
+ * partitions with MacOS, because they can't select another type.  So, if the
+ * name is anything other than "Extra" or "", it is treated as a "real"
+ * partition.
+ */
+static int
+_rawpart_is_active (MacRawPartition* raw_part)
+{
+       if (_rawpart_cmp_type (raw_part, "Apple_Free")
+           && (_rawpart_cmp_name (raw_part, "Extra")
+               || _rawpart_cmp_name (raw_part, "")))
+               return 0;
+       if (_rawpart_cmp_type (raw_part, "Apple_Void"))
+               return 0;
+       if (_rawpart_cmp_type (raw_part, "Apple_Scratch"))
+               return 0;
+       if (_rawpart_cmp_type (raw_part, "Apple_Extra"))
+               return 0;
+
+       return 1;
+}
+
+static PedPartition*
+_rawpart_analyse (MacRawPartition* raw_part, PedDisk* disk, int num)
+{
+       MacDiskData*            mac_disk_data;
+       PedPartition*           part;
+       MacPartitionData*       mac_part_data;
+       PedSector               block_size;
+       PedSector               start, length;
+
+       if (!_rawpart_check_signature (raw_part)) {
+#ifndef DISCOVER_ONLY
+               if (ped_exception_throw (
+                       PED_EXCEPTION_WARNING,
+                       PED_EXCEPTION_IGNORE_CANCEL,
+                       _("Partition %d has an invalid signature %x."),
+                       num,
+                       (int) PED_BE16_TO_CPU (raw_part->signature))
+                               != PED_EXCEPTION_IGNORE)
+#endif
+                       goto error;
+       }
+
+       mac_disk_data = (MacDiskData*) disk->disk_specific;
+       block_size = disk->dev->sector_size / 512;
+
+       start = PED_BE32_TO_CPU (raw_part->start_block) * block_size;
+       length = PED_BE32_TO_CPU (raw_part->block_count) * block_size;
+       if (length == 0) {
+#ifndef DISCOVER_ONLY
+               ped_exception_throw (
+                       PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_CANCEL,
+                       _("Partition %d has an invalid length of 0 bytes!"),
+                       num);
+#endif
+               return NULL;
+       }
+       part = ped_partition_new (disk, PED_PARTITION_NORMAL, NULL,
+                                  start, start + length - 1);
+       if (!part)
+               goto error;
+
+       mac_part_data = part->disk_specific;
+
+       strncpy (mac_part_data->volume_name, raw_part->name, 32);
+       strncpy (mac_part_data->system_name, raw_part->type, 32);
+       strncpy (mac_part_data->processor_name, raw_part->processor, 16);
+
+       mac_part_data->is_boot = _rawpart_is_boot (raw_part);
+       mac_part_data->is_driver = _rawpart_is_driver (raw_part);
+       if (mac_part_data->is_driver)
+               mac_part_data->has_driver = _rawpart_has_driver(raw_part, mac_disk_data);
+       mac_part_data->is_root = _rawpart_is_root (raw_part);
+       mac_part_data->is_swap = _rawpart_is_swap (raw_part);
+       mac_part_data->is_lvm = _rawpart_is_lvm (raw_part);
+       mac_part_data->is_raid = _rawpart_is_raid (raw_part);
+
+       /* "data" region */
+#ifndef DISCOVER_ONLY
+       if (raw_part->data_start) {
+               ped_exception_throw (
+                       PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_CANCEL,
+                       _("The data region doesn't start at the start "
+                         "of the partition."));
+               goto error_destroy_part;
+       }
+#endif /* !DISCOVER_ONLY */
+       mac_part_data->data_region_length
+               = PED_BE32_TO_CPU (raw_part->data_count) * block_size;
+
+       /* boot region - we have no idea what this is for, but Mac OSX
+        * seems to put garbage here, and doesn't pay any attention to
+        * it afterwards.  [clausen, dan burcaw]
+        */
+#if 0
+       if (raw_part->boot_start) {
+               ped_exception_throw (
+                       PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_CANCEL,
+                       _("The boot region doesn't start at the start "
+                         "of the partition."));
+               goto error_destroy_part;
+       }
+#endif
+       mac_part_data->boot_region_length
+               = PED_BE32_TO_CPU (raw_part->boot_count) * block_size;
+
+#ifndef DISCOVER_ONLY
+       if (mac_part_data->has_driver) {
+               if (mac_part_data->boot_region_length < part->geom.length) {
+                       if (ped_exception_throw (
+                               PED_EXCEPTION_ERROR,
+                               PED_EXCEPTION_IGNORE_CANCEL,
+                               _("The partition's boot region doesn't occupy "
+                                 "the entire partition."))
+                                       != PED_EXCEPTION_IGNORE)
+                               goto error_destroy_part;
+               }
+       } else {
+               if (mac_part_data->data_region_length < part->geom.length &&
+                   !mac_part_data->is_boot) {
+                       if (ped_exception_throw (
+                               PED_EXCEPTION_ERROR,
+                               PED_EXCEPTION_IGNORE_CANCEL,
+                               _("The partition's data region doesn't occupy "
+                                 "the entire partition."))
+                                       != PED_EXCEPTION_IGNORE)
+                               goto error_destroy_part;
+               }
+       }
+#endif /* !DISCOVER_ONLY */
+
+       mac_part_data->boot_base_address
+               = PED_BE32_TO_CPU (raw_part->boot_load);
+       mac_part_data->boot_entry_address
+               = PED_BE32_TO_CPU (raw_part->boot_entry);
+       mac_part_data->boot_checksum
+               = PED_BE32_TO_CPU (raw_part->boot_cksum);
+
+       mac_part_data->status = PED_BE32_TO_CPU (raw_part->status);
+       mac_part_data->driver_sig = PED_BE32_TO_CPU (raw_part->driver_sig);
+
+       return part;
+
+error_destroy_part:
+       ped_partition_destroy (part);
+error:
+       return NULL;
+}
+
+/* looks at the partition map size field in a mac raw partition, and calculates
+ * what the size of the partition map should be, from it
+ */
+static int
+_rawpart_get_partmap_size (MacRawPartition* raw_part, PedDisk* disk)
+{
+       MacDiskData*    mac_disk_data = disk->disk_specific;
+       PedSector       sector_size = disk->dev->sector_size / 512;
+       PedSector       part_map_start;
+       PedSector       part_map_end;
+
+       part_map_start = mac_disk_data->ghost_size;
+       part_map_end = sector_size * PED_BE32_TO_CPU (raw_part->map_count);
+
+       return part_map_end - part_map_start + 1;
+}
+
+static int
+_disk_analyse_block_size (PedDisk* disk, MacRawDisk* raw_disk)
+{
+       PedSector       block_size;
+
+       if (PED_BE16_TO_CPU (raw_disk->block_size) % 512) {
+#ifndef DISCOVER_ONLY
+               ped_exception_throw (
+                       PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_CANCEL,
+                       _("Weird block size on device descriptor: %d bytes is "
+                         "not divisible by 512."),
+                       (int) PED_BE16_TO_CPU (raw_disk->block_size));
+#endif
+               goto error;
+       }
+
+       block_size = PED_BE16_TO_CPU (raw_disk->block_size) / 512;
+       if (block_size != disk->dev->sector_size / 512) {
+#ifndef DISCOVER_ONLY
+               if (ped_exception_throw (
+                       PED_EXCEPTION_WARNING,
+                       PED_EXCEPTION_IGNORE_CANCEL,
+                       _("The driver descriptor says the physical block size "
+                         "is %d bytes, but Linux says it is %d bytes."),
+                       (int) block_size * 512,
+                       (int) disk->dev->sector_size)
+                               != PED_EXCEPTION_IGNORE)
+                       goto error;
+#endif
+               disk->dev->sector_size = block_size * 512;
+       }
+
+       return 1;
+
+error:
+       return 0;
+}
+
+/* Tries to figure out the block size used by the drivers, for the ghost
+ * partitioning scheme.  Ghost partitioning works like this: the OpenFirmware
+ * (OF) sees 512 byte blocks, but some drivers use 2048 byte blocks (and,
+ * perhaps, some other number?).  To remain compatible, the partition map
+ * only has "real" partition map entries on ghost-aligned block numbers (and
+ * the others are padded with Apple_Void partitions).  This function tries
+ * to figure out what the "ghost-aligned" size is... (which, believe-it-or-not,
+ * doesn't always equal 2048!!!)
+ */
+static int
+_disk_analyse_ghost_size (PedDisk* disk)
+{
+       MacDiskData*            mac_disk_data = disk->disk_specific;
+
+       void *buf = ped_malloc (disk->dev->sector_size);
+       if (!buf)
+               return 0;
+
+       int i;
+       int found = 0;
+       for (i = 1; i < 64; i *= 2) {
+               if (!ped_device_read (disk->dev, buf, i, 1))
+                       break;
+               if (_rawpart_check_signature (buf)
+                   && !_rawpart_is_void (buf)) {
+                       mac_disk_data->ghost_size = i;
+                       PED_ASSERT (i <= disk->dev->sector_size / 512);
+                       found = 1;
+                       break;
+               }
+       }
+        free (buf);
+
+#ifndef DISCOVER_ONLY
+        if (!found)
+               ped_exception_throw (
+                       PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_CANCEL,
+                       _("No valid partition map found."));
+#endif
+       return found;
+}
+
+static int
+mac_read (PedDisk* disk)
+{
+       MacDiskData*            mac_disk_data;
+       PedPartition*           part;
+       int                     num;
+       PedSector               ghost_size;
+       int                     last_part_entry_num = 0;
+
+       PED_ASSERT (disk != NULL);
+
+       mac_disk_data = disk->disk_specific;
+       mac_disk_data->part_map_entry_num = 0;          /* 0 == none */
+
+       void *buf;
+       if (!ptt_read_sector (disk->dev, 0, &buf))
+               return 0;
+
+       MacRawDisk *raw_disk = (MacRawDisk *) buf;
+
+       if (!_check_signature (raw_disk))
+               goto error;
+
+       if (!_disk_analyse_block_size (disk, raw_disk))
+               goto error;
+       if (!_disk_analyse_ghost_size (disk))
+               goto error;
+       ghost_size = mac_disk_data->ghost_size;
+
+       if (!ped_disk_delete_all (disk))
+               goto error;
+
+       if (raw_disk->driver_count && raw_disk->driver_count < 62) {
+               memcpy(&mac_disk_data->driverlist[0], &raw_disk->driverlist[0],
+                               sizeof(mac_disk_data->driverlist));
+               mac_disk_data->driver_count = raw_disk->driver_count;
+               mac_disk_data->block_size = raw_disk->block_size;
+       }
+
+       for (num=1; num==1 || num <= last_part_entry_num; num++) {
+               void *raw_part = buf;
+               if (!ped_device_read (disk->dev, raw_part,
+                                     num * ghost_size, 1))
+                       goto error_delete_all;
+
+               if (!_rawpart_check_signature (raw_part))
+                       continue;
+
+               if (num == 1)
+                       last_part_entry_num
+                               = _rawpart_get_partmap_size (raw_part, disk);
+               if (_rawpart_get_partmap_size (raw_part, disk)
+                               != last_part_entry_num) {
+                       if (ped_exception_throw (
+                               PED_EXCEPTION_ERROR,
+                               PED_EXCEPTION_IGNORE_CANCEL,
+                               _("Conflicting partition map entry sizes!  "
+                                 "Entry 1 says it is %d, but entry %d says "
+                                 "it is %d!"),
+                               last_part_entry_num,
+                               _rawpart_get_partmap_size (raw_part, disk))
+                                       != PED_EXCEPTION_IGNORE)
+                               goto error_delete_all;
+               }
+
+               if (!_rawpart_is_active (raw_part))
+                       continue;
+
+               part = _rawpart_analyse (raw_part, disk, num);
+               if (!part)
+                       goto error_delete_all;
+               part->num = num;
+               part->fs_type = ped_file_system_probe (&part->geom);
+               PedConstraint *constraint_exact
+                       = ped_constraint_exact (&part->geom);
+               if (constraint_exact == NULL)
+                       goto error_delete_all;
+               bool ok = ped_disk_add_partition (disk, part, constraint_exact);
+               ped_constraint_destroy (constraint_exact);
+               if (!ok)
+                       goto error_delete_all;
+
+               if (_rawpart_is_partition_map (raw_part)) {
+                       if (mac_disk_data->part_map_entry_num
+                           && ped_exception_throw (
+                                       PED_EXCEPTION_ERROR,
+                                       PED_EXCEPTION_IGNORE_CANCEL,
+                                       _("Weird!  There are 2 partitions "
+                                         "map entries!"))
+                           != PED_EXCEPTION_IGNORE)
+                               goto error_delete_all;
+
+                       mac_disk_data->part_map_entry_num = num;
+                       mac_disk_data->part_map_entry_count
+                               = part->geom.end - ghost_size + 1;
+               }
+       }
+
+       if (!mac_disk_data->part_map_entry_num) {
+               if (!_disk_add_part_map_entry (disk, 1))
+                       goto error_delete_all;
+               ped_disk_commit_to_dev (disk);
+       }
+       free (buf);
+       return 1;
+
+error_delete_all:
+       ped_disk_delete_all (disk);
+error:
+       free (buf);
+       return 0;
+}
+
+#ifndef DISCOVER_ONLY
+/* The Ghost partition: is a blank entry, used to pad out each block (where
+ * there physical block size > 512 bytes).  This is because OpenFirmware uses
+ * 512 byte blocks, but device drivers Think Different TM, with a different
+ * lbock size, so we need to do this to avoid a clash (!)
+ */
+static int
+_pad_raw_part (PedDisk* disk, int num, MacRawPartition* part_map)
+{
+       MacDiskData*            mac_disk_data = disk->disk_specific;
+       int                     i;
+
+       size_t ss = disk->dev->sector_size;
+       void *buf = ped_calloc (ss);
+       if (!buf)
+               return 0;
+
+       MacRawPartition *ghost_entry = buf;
+       ghost_entry->signature = PED_CPU_TO_BE16 (MAC_PARTITION_MAGIC_2);
+       strcpy (ghost_entry->type, "Apple_Void");
+       ghost_entry->map_count
+               = PED_CPU_TO_BE32 (mac_disk_data->last_part_entry_num);
+
+       for (i=0; i < mac_disk_data->ghost_size - 1; i++) {
+               PedSector idx = i + (num - 1) * mac_disk_data->ghost_size;
+               memcpy ((char*)part_map + idx * ss, ghost_entry, ss);
+        }
+
+       free (buf);
+       return 1;
+}
+
+static void
+_update_driver_count (MacRawPartition* part_map_entry,
+                     MacDiskData *mac_driverdata, const MacDiskData* mac_disk_data)
+{
+       uint16_t        i, count_orig, count_cur, bsz;
+       uint32_t        driver_bs, driver_be, part_be;
+
+       bsz = mac_disk_data->block_size / 512;
+       count_cur = mac_driverdata->driver_count;
+       count_orig = mac_disk_data->driver_count;
+       for (i = 0; i < count_orig; i++) {
+               driver_bs = mac_disk_data->driverlist[i].block * bsz;
+               driver_be = driver_bs + mac_disk_data->driverlist[i].size;
+               part_be = part_map_entry->start_block + part_map_entry->block_count;
+               if (driver_bs >= part_map_entry->start_block
+                               && driver_be <= part_be) {
+                       mac_driverdata->driverlist[count_cur].block
+                               = mac_disk_data->driverlist[i].block;
+                       mac_driverdata->driverlist[count_cur].size
+                               = mac_disk_data->driverlist[i].size;
+                       mac_driverdata->driverlist[count_cur].type
+                               = mac_disk_data->driverlist[i].type;
+                       mac_driverdata->driver_count++;
+                       break;
+               }
+       }
+}
+
+static MacRawPartition *
+get_pme (MacRawPartition const *part_map, PedSector i, PedDisk const *disk)
+{
+       MacDiskData const *mac_disk_data = disk->disk_specific;
+       PedSector idx = i * mac_disk_data->ghost_size - 1;
+       return (MacRawPartition *) ((char*)part_map
+                                    + idx * disk->dev->sector_size);
+}
+
+/* Initialize the disk->dev->sector_size bytes of part_map[part->num]. */
+static int
+_generate_raw_part (PedDisk* disk, PedPartition* part,
+                   MacRawPartition* part_map, MacDiskData *mac_driverdata)
+{
+       MacDiskData*            mac_disk_data;
+       MacPartitionData*       mac_part_data;
+       PedSector               block_size = disk->dev->sector_size / 512;
+
+       PED_ASSERT (part->num > 0);
+
+       mac_disk_data = disk->disk_specific;
+       mac_part_data = part->disk_specific;
+
+       MacRawPartition *part_map_entry = get_pme (part_map, part->num, disk);
+       memset (part_map_entry, 0, disk->dev->sector_size);
+
+       part_map_entry->signature = PED_CPU_TO_BE16 (MAC_PARTITION_MAGIC_2);
+       part_map_entry->map_count
+               = PED_CPU_TO_BE32 (mac_disk_data->last_part_entry_num);
+       part_map_entry->start_block
+               = PED_CPU_TO_BE32 (part->geom.start / block_size);
+       part_map_entry->block_count
+               = PED_CPU_TO_BE32 (part->geom.length / block_size);
+       strcpy (part_map_entry->name, mac_part_data->volume_name);
+       strcpy (part_map_entry->type, mac_part_data->system_name);
+
+       if (mac_part_data->is_driver) {
+               mac_part_data->boot_region_length = part->geom.length;
+               if (mac_part_data->has_driver)
+                       _update_driver_count(part_map_entry, mac_driverdata,
+                                       mac_disk_data);
+       } else
+               mac_part_data->data_region_length = part->geom.length;
+       part_map_entry->data_count = PED_CPU_TO_BE32 (
+                       mac_part_data->data_region_length / block_size);
+       part_map_entry->boot_count = PED_CPU_TO_BE32 (
+                       mac_part_data->boot_region_length / block_size);
+       part_map_entry->status = PED_CPU_TO_BE32 (mac_part_data->status);
+       part_map_entry->driver_sig
+               = PED_CPU_TO_BE32 (mac_part_data->driver_sig);
+
+       part_map_entry->boot_load =
+               PED_CPU_TO_BE32 (mac_part_data->boot_base_address);
+       part_map_entry->boot_entry =
+               PED_CPU_TO_BE32 (mac_part_data->boot_entry_address);
+       part_map_entry->boot_cksum =
+               PED_CPU_TO_BE32 (mac_part_data->boot_checksum);
+
+       strncpy (part_map_entry->processor, mac_part_data->processor_name, 16);
+
+       if (!_pad_raw_part (disk, part->num, part_map))
+               goto error;
+
+       return 1;
+
+error:
+       return 0;
+}
+
+static int
+_generate_raw_freespace_part (PedDisk* disk, PedGeometry* geom, int num,
+                             MacRawPartition* part_map)
+{
+       MacDiskData*            mac_disk_data = disk->disk_specific;
+       PedSector               block_size = disk->dev->sector_size / 512;
+
+       PED_ASSERT (num > 0);
+
+       MacRawPartition *part_map_entry = get_pme (part_map, num, disk);
+
+       part_map_entry->signature = PED_CPU_TO_BE16 (MAC_PARTITION_MAGIC_2);
+       part_map_entry->map_count
+               = PED_CPU_TO_BE32 (mac_disk_data->last_part_entry_num);
+       part_map_entry->start_block
+               = PED_CPU_TO_BE32 (geom->start / block_size);
+       part_map_entry->block_count
+               = PED_CPU_TO_BE32 (geom->length / block_size);
+       strcpy (part_map_entry->name, "Extra");
+       strcpy (part_map_entry->type, "Apple_Free");
+
+       part_map_entry->data_count = PED_CPU_TO_BE32 (geom->length);
+       part_map_entry->status = 0;
+       part_map_entry->driver_sig = 0;
+
+       if (!_pad_raw_part (disk, num, part_map))
+               goto error;
+
+       return 1;
+
+error:
+       return 0;
+}
+
+static int
+_generate_empty_part (PedDisk* disk, int num, MacRawPartition* part_map)
+{
+       MacDiskData*            mac_disk_data = disk->disk_specific;
+
+       PED_ASSERT (num > 0);
+
+       MacRawPartition *part_map_entry = get_pme (part_map, num, disk);
+       part_map_entry->signature = PED_CPU_TO_BE16 (MAC_PARTITION_MAGIC_2);
+       part_map_entry->map_count
+               = PED_CPU_TO_BE32 (mac_disk_data->last_part_entry_num);
+       strcpy (part_map_entry->type, "Apple_Void");
+
+       return _pad_raw_part (disk, num, part_map);
+}
+
+/* returns the first empty entry in the partition map */
+static int
+_get_first_empty_part_entry (PedDisk* disk, MacRawPartition* part_map)
+{
+       MacDiskData*    mac_disk_data = disk->disk_specific;
+       int             i;
+
+       for (i=1; i <= mac_disk_data->last_part_entry_num; i++) {
+               MacRawPartition *part_map_entry = get_pme (part_map, i, disk);
+               if (!part_map_entry->signature)
+                       return i;
+       }
+
+       return 0;
+}
+
+static int
+write_block_zero (PedDisk* disk, MacDiskData* mac_driverdata)
+{
+       PedDevice*      dev = disk->dev;
+       void *s0;
+       if (!ptt_read_sector (dev, 0, &s0))
+               return 0;
+       MacRawDisk *raw_disk = (MacRawDisk *) s0;
+
+       raw_disk->signature = PED_CPU_TO_BE16 (MAC_DISK_MAGIC);
+       raw_disk->block_size = PED_CPU_TO_BE16 (dev->sector_size);
+       raw_disk->block_count
+               = PED_CPU_TO_BE32 (dev->length / (dev->sector_size / 512));
+
+       raw_disk->driver_count = mac_driverdata->driver_count;
+       memcpy(&raw_disk->driverlist[0], &mac_driverdata->driverlist[0],
+                       sizeof(raw_disk->driverlist));
+
+       int write_ok = ped_device_write (dev, raw_disk, 0, 1);
+        free (s0);
+       return write_ok;
+}
+
+static int
+mac_write (PedDisk* disk)
+{
+       MacRawPartition*        part_map;
+       MacDiskData*            mac_disk_data;
+       MacDiskData*            mac_driverdata; /* updated driver list */
+       PedPartition*           part;
+       int                     num;
+
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (disk->disk_specific != NULL);
+       PED_ASSERT (disk->dev != NULL);
+       PED_ASSERT (!disk->update_mode);
+
+       mac_disk_data = disk->disk_specific;
+
+       if (!ped_disk_get_partition (disk, mac_disk_data->part_map_entry_num)) {
+               if (!_disk_add_part_map_entry (disk, 1))
+                       goto error;
+       }
+
+       mac_driverdata = ped_malloc(sizeof(MacDiskData));
+       if (!mac_driverdata)
+               goto error;
+       memset (mac_driverdata, 0, sizeof(MacDiskData));
+
+        size_t pmap_bytes = (mac_disk_data->part_map_entry_count
+                             * mac_disk_data->ghost_size
+                             * disk->dev->sector_size);
+       part_map = (MacRawPartition*) ped_calloc (pmap_bytes);
+       if (!part_map)
+               goto error_free_driverdata;
+
+/* write (to memory) the "real" partitions */
+       for (part = ped_disk_next_partition (disk, NULL); part;
+            part = ped_disk_next_partition (disk, part)) {
+               if (!ped_partition_is_active (part))
+                       continue;
+               if (!_generate_raw_part (disk, part, part_map, mac_driverdata))
+                       goto error_free_part_map;
+       }
+
+/* write the "free space" partitions */
+       for (part = ped_disk_next_partition (disk, NULL); part;
+            part = ped_disk_next_partition (disk, part)) {
+               if (part->type != PED_PARTITION_FREESPACE)
+                       continue;
+               num = _get_first_empty_part_entry (disk, part_map);
+               if (!_generate_raw_freespace_part (disk, &part->geom, num,
+                                                  part_map))
+                       goto error_free_part_map;
+       }
+
+/* write the "void" (empty) partitions */
+       for (num = _get_first_empty_part_entry (disk, part_map); num;
+            num = _get_first_empty_part_entry (disk, part_map))
+               _generate_empty_part (disk, num, part_map);
+
+/* write to disk */
+       if (!ped_device_write (disk->dev, part_map, 1,
+                              mac_disk_data->part_map_entry_count))
+               goto error_free_part_map;
+       free (part_map);
+       int write_ok = write_block_zero (disk, mac_driverdata);
+       free (mac_driverdata);
+       return write_ok;
+
+error_free_part_map:
+       free (part_map);
+error_free_driverdata:
+       free (mac_driverdata);
+error:
+       return 0;
+}
+#endif /* !DISCOVER_ONLY */
+
+static PedPartition*
+mac_partition_new (
+       const PedDisk* disk, PedPartitionType part_type,
+       const PedFileSystemType* fs_type, PedSector start, PedSector end)
+{
+       PedPartition*           part;
+       MacPartitionData*       mac_data;
+
+       part = _ped_partition_alloc (disk, part_type, fs_type, start, end);
+       if (!part)
+               goto error;
+
+       if (ped_partition_is_active (part)) {
+               part->disk_specific
+                       = mac_data = ped_malloc (sizeof (MacPartitionData));
+               if (!mac_data)
+                       goto error_free_part;
+
+               memset (mac_data, 0, sizeof (MacPartitionData));
+               strcpy (mac_data->volume_name, "untitled");
+       } else {
+               part->disk_specific = NULL;
+       }
+       return part;
+
+error_free_part:
+       free (part);
+error:
+       return NULL;
+}
+
+static PedPartition*
+mac_partition_duplicate (const PedPartition* part)
+{
+       PedPartition*           new_part;
+       MacPartitionData*       new_mac_data;
+       MacPartitionData*       old_mac_data;
+
+       new_part = ped_partition_new (part->disk, part->type,
+                                     part->fs_type, part->geom.start,
+                                     part->geom.end);
+       if (!new_part)
+               return NULL;
+       new_part->num = part->num;
+
+       old_mac_data = (MacPartitionData*) part->disk_specific;
+       new_mac_data = (MacPartitionData*) new_part->disk_specific;
+
+       /* ugly, but C is ugly :p */
+       memcpy (new_mac_data, old_mac_data, sizeof (MacPartitionData));
+       return new_part;
+}
+
+static void
+mac_partition_destroy (PedPartition* part)
+{
+       PED_ASSERT (part != NULL);
+
+       if (ped_partition_is_active (part))
+               free (part->disk_specific);
+       free (part);
+}
+
+static int
+mac_partition_set_system (PedPartition* part, const PedFileSystemType* fs_type)
+{
+       MacPartitionData* mac_data = part->disk_specific;
+
+       part->fs_type = fs_type;
+
+       if (fs_type && is_linux_swap (fs_type->name))
+               ped_partition_set_flag (part, PED_PARTITION_SWAP, 1);
+
+       if (mac_data->is_boot) {
+               strcpy (mac_data->system_name, "Apple_Bootstrap");
+               mac_data->status = 0x33;
+               return 1;
+       }
+
+       if (fs_type && (!strcmp (fs_type->name, "hfs")
+                       || !strcmp (fs_type->name, "hfs+"))) {
+               strcpy (mac_data->system_name, "Apple_HFS");
+               mac_data->status |= 0x7f;
+       } else if (fs_type && !strcmp (fs_type->name, "hfsx")) {
+               strcpy (mac_data->system_name, "Apple_HFSX");
+               mac_data->status |= 0x7f;
+       } else {
+               strcpy (mac_data->system_name, "Apple_UNIX_SVR2");
+               mac_data->status = 0x33;
+       }
+
+       return 1;
+}
+
+static int
+mac_partition_set_flag (PedPartition* part, PedPartitionFlag flag, int state)
+{
+       MacPartitionData*       mac_data;
+
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk_specific != NULL);
+
+       mac_data = part->disk_specific;
+
+       switch (flag) {
+       case PED_PARTITION_BOOT:
+               mac_data->is_boot = state;
+
+               if (part->fs_type)
+                       return mac_partition_set_system (part, part->fs_type);
+
+               if (state) {
+                       strcpy (mac_data->system_name, "Apple_Bootstrap");
+                       mac_data->status = 0x33;
+               }
+               return 1;
+
+       case PED_PARTITION_ROOT:
+               if (state) {
+                       strcpy (mac_data->volume_name, "root");
+                       mac_data->is_swap = 0;
+               } else {
+                       if (mac_data->is_root)
+                               strcpy (mac_data->volume_name, "untitled");
+               }
+               mac_data->is_root = state;
+               return 1;
+
+       case PED_PARTITION_SWAP:
+               if (state) {
+                       strcpy (mac_data->volume_name, "swap");
+                       mac_data->is_root = 0;
+               } else {
+                       if (mac_data->is_swap)
+                               strcpy (mac_data->volume_name, "untitled");
+               }
+               mac_data->is_swap = state;
+               return 1;
+
+       case PED_PARTITION_LVM:
+               if (state) {
+                       strcpy (mac_data->system_name, "Linux_LVM");
+                       mac_data->is_lvm = state;
+               } else {
+                       if (mac_data->is_lvm)
+                               mac_partition_set_system (part, part->fs_type);
+               }
+               return 1;
+
+       case PED_PARTITION_RAID:
+               if (state) {
+                       strcpy (mac_data->system_name, "Linux_RAID");
+                       mac_data->is_raid = state;
+               } else {
+                       if (mac_data->is_raid)
+                               mac_partition_set_system (part, part->fs_type);
+               }
+               return 1;
+
+       default:
+               return 0;
+       }
+}
+
+static int
+mac_partition_get_flag (const PedPartition* part, PedPartitionFlag flag)
+{
+       MacPartitionData*       mac_data;
+
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk_specific != NULL);
+
+       mac_data = part->disk_specific;
+       switch (flag) {
+       case PED_PARTITION_BOOT:
+               return mac_data->is_boot;
+
+       case PED_PARTITION_ROOT:
+               return mac_data->is_root;
+
+       case PED_PARTITION_SWAP:
+               return mac_data->is_swap;
+
+       case PED_PARTITION_LVM:
+               return mac_data->is_lvm;
+
+       case PED_PARTITION_RAID:
+               return mac_data->is_raid;
+
+       default:
+               return 0;
+       }
+}
+
+static int
+mac_partition_is_flag_available (
+       const PedPartition* part, PedPartitionFlag flag)
+{
+       switch (flag) {
+       case PED_PARTITION_BOOT:
+       case PED_PARTITION_ROOT:
+       case PED_PARTITION_SWAP:
+       case PED_PARTITION_LVM:
+       case PED_PARTITION_RAID:
+               return 1;
+
+       default:
+               return 0;
+       }
+}
+
+static void
+mac_partition_set_name (PedPartition* part, const char* name)
+{
+       MacPartitionData*       mac_data;
+       int                     i;
+
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk_specific != NULL);
+       mac_data = part->disk_specific;
+
+#ifndef DISCOVER_ONLY
+       if (mac_data->is_root || mac_data->is_swap) {
+               if (ped_exception_throw (
+                       PED_EXCEPTION_WARNING,
+                       PED_EXCEPTION_IGNORE_CANCEL,
+                       _("Changing the name of a root or swap partition "
+                         "will prevent Linux from recognising it as such."))
+                               != PED_EXCEPTION_IGNORE)
+                       return;
+               mac_data->is_root = mac_data->is_swap = 0;
+       }
+#endif
+
+       strncpy (mac_data->volume_name, name, 32);
+       mac_data->volume_name [32] = 0;
+       for (i = strlen (mac_data->volume_name) - 1;
+                       mac_data->volume_name[i] == ' '; i--)
+               mac_data->volume_name [i] = 0;
+}
+
+static const char*
+mac_partition_get_name (const PedPartition* part)
+{
+       MacPartitionData*       mac_data;
+
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk_specific != NULL);
+       mac_data = part->disk_specific;
+
+       return mac_data->volume_name;
+}
+
+static PedAlignment*
+mac_get_partition_alignment(const PedDisk *disk)
+{
+        PedSector sector_size = disk->dev->sector_size / 512;
+
+        return ped_alignment_new(0, sector_size);
+}
+
+static PedConstraint*
+_primary_constraint (PedDisk* disk)
+{
+       PedAlignment    start_align;
+       PedAlignment    end_align;
+       PedGeometry     max_geom;
+       PedSector       sector_size;
+
+       sector_size = disk->dev->sector_size / 512;
+
+       if (!ped_alignment_init (&start_align, 0, sector_size))
+               return NULL;
+       if (!ped_alignment_init (&end_align, -1, sector_size))
+               return NULL;
+       if (!ped_geometry_init (&max_geom, disk->dev, 1, disk->dev->length - 1))
+               return NULL;
+
+       return ped_constraint_new (&start_align, &end_align, &max_geom,
+                                  &max_geom, 1, disk->dev->length);
+}
+
+static int
+mac_partition_align (PedPartition* part, const PedConstraint* constraint)
+{
+       PED_ASSERT (part != NULL);
+
+       if (_ped_partition_attempt_align (part, constraint,
+                                         _primary_constraint (part->disk)))
+               return 1;
+
+#ifndef DISCOVER_ONLY
+       ped_exception_throw (
+               PED_EXCEPTION_ERROR,
+               PED_EXCEPTION_CANCEL,
+               _("Unable to satisfy all constraints on the partition."));
+#endif
+       return 0;
+}
+
+static int
+mac_partition_enumerate (PedPartition* part)
+{
+       PedDisk*                disk;
+       MacDiskData*            mac_disk_data;
+       int                     i;
+       int                     max_part_count;
+
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk != NULL);
+
+       disk = part->disk;
+       mac_disk_data = (MacDiskData*) disk->disk_specific;
+
+       max_part_count = ped_disk_get_max_primary_partition_count (disk);
+
+       if (part->num > 0 && part->num <= mac_disk_data->part_map_entry_count)
+               return 1;
+
+       for (i = 1; i <= max_part_count; i++) {
+               if (!ped_disk_get_partition (disk, i)) {
+                       part->num = i;
+                       return 1;
+               }
+       }
+
+#ifndef DISCOVER_ONLY
+       ped_exception_throw (
+               PED_EXCEPTION_ERROR,
+               PED_EXCEPTION_CANCEL,
+               _("Can't add another partition -- the partition map is too "
+                 "small!"));
+#endif
+
+       return 0;
+}
+
+static int
+_disk_count_partitions (PedDisk* disk)
+{
+       MacDiskData*            mac_disk_data = disk->disk_specific;
+       PedPartition*           part = NULL;
+       PedPartition*           last = NULL;
+
+       PED_ASSERT (disk->update_mode);
+
+       mac_disk_data->active_part_entry_count = 0;
+       mac_disk_data->free_part_entry_count = 0;
+       mac_disk_data->last_part_entry_num = 0;
+
+       /* subtle: we only care about free space after the partition map.
+        * the partition map is an "active" partition, BTW... */
+       for (part = ped_disk_next_partition (disk, part); part;
+            part = ped_disk_next_partition (disk, part)) {
+               if (!ped_partition_is_active (part))
+                       continue;
+
+               mac_disk_data->active_part_entry_count++;
+               if (last && last->geom.end + 1 < part->geom.start)
+                       mac_disk_data->free_part_entry_count++;
+               mac_disk_data->last_part_entry_num
+                       = PED_MAX (mac_disk_data->last_part_entry_num,
+                                  part->num);
+
+               last = part;
+       }
+
+       if (last && last->geom.end < disk->dev->length - 1)
+               mac_disk_data->free_part_entry_count++;
+
+       mac_disk_data->last_part_entry_num
+               = PED_MAX (mac_disk_data->last_part_entry_num,
+                          mac_disk_data->active_part_entry_count
+                               + mac_disk_data->free_part_entry_count);
+       return 1;
+}
+
+static int
+add_metadata_part (PedDisk* disk, PedSector start, PedSector end)
+{
+       PedPartition*           new_part;
+       PedConstraint*          constraint_any = ped_constraint_any (disk->dev);
+
+       PED_ASSERT (disk != NULL);
+
+       new_part = ped_partition_new (disk, PED_PARTITION_METADATA, NULL,
+                                     start, end);
+       if (!new_part)
+               goto error;
+       if (!ped_disk_add_partition (disk, new_part, constraint_any))
+               goto error_destroy_new_part;
+
+       ped_constraint_destroy (constraint_any);
+       return 1;
+
+error_destroy_new_part:
+       ped_partition_destroy (new_part);
+error:
+       ped_constraint_destroy (constraint_any);
+       return 0;
+}
+
+static int
+mac_alloc_metadata (PedDisk* disk)
+{
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (disk->disk_specific != NULL);
+       PED_ASSERT (disk->dev != NULL);
+
+       if (!add_metadata_part (disk, 0, disk->dev->sector_size / 512 - 1))
+               return 0;
+
+       /* hack: this seems to be a good place, to update the partition map
+        * entry count, since mac_alloc_metadata() gets called during
+        * _disk_pop_update_mode()
+        */
+       return _disk_count_partitions (disk);
+}
+
+static int
+mac_get_max_primary_partition_count (const PedDisk* disk)
+{
+       MacDiskData*    mac_disk_data = disk->disk_specific;
+       PedPartition*   part_map_partition;
+
+       part_map_partition = ped_disk_get_partition (disk,
+                                       mac_disk_data->part_map_entry_num);
+
+       /* HACK: if we haven't found the partition map partition (yet),
+        * we return this.
+        */
+       if (!part_map_partition) {
+               mac_disk_data->part_map_entry_num = 0;
+               return 65536;
+       }
+
+       /* HACK: since Mac labels need an entry for free-space regions, we
+        * must allow half plus 1 entries for free-space partitions.  I hate
+        * this, but things get REALLY complicated, otherwise.
+        *     (I'm prepared to complicate things later, but I want to get
+        * everything working, first)
+        */
+       return mac_disk_data->part_map_entry_count / mac_disk_data->ghost_size
+               - mac_disk_data->free_part_entry_count + 1;
+}
+
+static bool
+mac_get_max_supported_partition_count (const PedDisk* disk, int *max_n)
+{
+       *max_n = 65536;
+       return true;
+}
+
+#include "pt-common.h"
+PT_define_limit_functions (mac)
+
+static PedDiskOps mac_disk_ops = {
+       clobber: NULL,
+        /* FIXME: remove this cast, once mac_write is fixed not to
+           modify its *DISK parameter.  */
+       write:  NULL_IF_DISCOVER_ONLY ((int (*) (const PedDisk*)) mac_write),
+
+       partition_set_name:     mac_partition_set_name,
+       partition_get_name:     mac_partition_get_name,
+
+       get_partition_alignment: mac_get_partition_alignment,
+
+       PT_op_function_initializers (mac)
+};
+
+static PedDiskType mac_disk_type = {
+       next:           NULL,
+       name:           "mac",
+       ops:            &mac_disk_ops,
+       features:       PED_DISK_TYPE_PARTITION_NAME
+};
+
+void
+ped_disk_mac_init ()
+{
+       PED_ASSERT (sizeof (MacRawPartition) == 512);
+       PED_ASSERT (sizeof (MacRawDisk) == 512);
+
+       ped_disk_type_register (&mac_disk_type);
+}
+
+void
+ped_disk_mac_done ()
+{
+       ped_disk_type_unregister (&mac_disk_type);
+}
diff --git a/libparted/labels/misc.h b/libparted/labels/misc.h
new file mode 100644 (file)
index 0000000..c97fa8e
--- /dev/null
@@ -0,0 +1,27 @@
+/* -*- Mode: c; indent-tabs-mode: nil -*-
+
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>. */
+
+/* Return nonzero if FS_TYPE_NAME starts with "linux-swap".
+   This must match the NUL-terminated "linux-swap" as well
+   as "linux-swap(v0)" and "linux-swap(v1)".  */
+static inline int
+is_linux_swap (char const *fs_type_name)
+{
+  char const *prefix = "linux-swap";
+  return strncmp (fs_type_name, prefix, strlen (prefix)) == 0;
+}
diff --git a/libparted/labels/pc98.c b/libparted/labels/pc98.c
new file mode 100644 (file)
index 0000000..3afa8a2
--- /dev/null
@@ -0,0 +1,864 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 2000-2001, 2007-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#include <config.h>
+
+#include <parted/parted.h>
+#include <parted/debug.h>
+#include <parted/endian.h>
+
+#include "pt-tools.h"
+
+#if ENABLE_NLS
+#  include <libintl.h>
+#  define _(String) dgettext (PACKAGE, String)
+#else
+#  define _(String) (String)
+#endif /* ENABLE_NLS */
+
+/* hacked from Linux/98 source: fs/partitions/nec98.h
+ *
+ * See also:
+ *      http://people.FreeBSD.org/~kato/pc98.html
+ *      http://www.kmc.kyoto-u.ac.jp/proj/linux98/index-english.html
+ *
+ * Partition types:
+ *
+ *   id0(mid):
+ *      bit 7: 1=bootable, 0=not bootable
+ *        # Linux uses this flag to make a distinction between ext2 and swap.
+ *      bit 6--0:
+ *        00H      : N88-BASIC(data)?, PC-UX(data)?
+ *        04H      : PC-UX(data)
+ *        06H      : N88-BASIC
+ *        10H      : N88-BASIC
+ *        14H      : *BSD, PC-UX
+ *        20H      : DOS(data), Windows95/98/NT, Linux
+ *        21H..2FH : DOS(system#1 .. system#15)
+ *        40H      : Minix
+ *
+ *   id1(sid):
+ *      bit 7: 1=active, 0=sleep(hidden)
+ *        # PC-UX uses this flag to make a distinction between its file system
+ *        # and its swap.
+ *      bit 6--0:
+ *        01H: FAT12
+ *        11H: FAT16, <32MB [accessible to DOS 3.3]
+ *        21H: FAT16, >=32MB [Large Partition]
+ *        31H: NTFS
+ *        28H: Windows NT (Volume/Stripe Set?)
+ *        41H: Windows NT (Volume/Stripe Set?)
+ *        48H: Windows NT (Volume/Stripe Set?)
+ *        61H: FAT32
+ *        04H: PC-UX
+ *        06H: N88-BASIC
+ *        44H: *BSD
+ *        62H: ext2, linux-swap
+ */
+
+#define MAX_PART_COUNT 16
+#define PC9800_EXTFMT_MAGIC 0xAA55
+
+#define BIT(x) (1 << (x))
+#define GET_BIT(n,bit) (((n) & BIT(bit)) != 0)
+#define SET_BIT(n,bit,val) n = (val)?  (n | BIT(bit))  :  (n & ~BIT(bit))
+
+typedef struct _PC98RawPartition       PC98RawPartition;
+typedef struct _PC98RawTable           PC98RawTable;
+
+/* ripped from Linux/98 source */
+struct _PC98RawPartition {
+       uint8_t         mid;            /* 0x80 - boot */
+       uint8_t         sid;            /* 0x80 - active */
+       uint8_t         dum1;           /* dummy for padding */
+       uint8_t         dum2;           /* dummy for padding */
+       uint8_t         ipl_sect;       /* IPL sector */
+       uint8_t         ipl_head;       /* IPL head */
+       uint16_t        ipl_cyl;        /* IPL cylinder */
+       uint8_t         sector;         /* starting sector */
+       uint8_t         head;           /* starting head */
+       uint16_t        cyl;            /* starting cylinder */
+       uint8_t         end_sector;     /* end sector */
+       uint8_t         end_head;       /* end head */
+       uint16_t        end_cyl;        /* end cylinder */
+       char            name[16];
+} __attribute__((packed));
+
+struct _PC98RawTable {
+       uint8_t                 boot_code [510];
+       uint16_t                magic;
+       PC98RawPartition        partitions [MAX_PART_COUNT];
+} __attribute__((packed));
+
+typedef struct {
+       PedSector       ipl_sector;
+       int             system;
+       int             boot;
+       int             hidden;
+       char            name [17];
+} PC98PartitionData;
+
+/* this MBR boot code is dummy */
+static const char MBR_BOOT_CODE[] = {
+       0xcb,                   /* retf */
+       0x00, 0x00, 0x00,       /* */
+       0x49, 0x50, 0x4c, 0x31  /* "IPL1" */
+};
+
+static PedDiskType pc98_disk_type;
+
+static PedSector chs_to_sector (const PedDevice* dev, int c, int h, int s);
+static void sector_to_chs (const PedDevice* dev, PedSector sector,
+                          int* c, int* h, int* s);
+
+/* magic(?) check */
+static int
+pc98_check_magic (const PC98RawTable *part_table)
+{
+       /* check "extended-format" (have partition table?) */
+       if (PED_LE16_TO_CPU(part_table->magic) != PC9800_EXTFMT_MAGIC)
+               return 0;
+
+       return 1;
+}
+
+static int
+pc98_check_ipl_signature (const PC98RawTable *part_table)
+{
+       return !memcmp (part_table->boot_code + 4, "IPL1", 4);
+}
+
+static int
+check_partition_consistency (const PedDevice* dev,
+                            const PC98RawPartition* raw_part)
+{
+       if (raw_part->ipl_sect >= dev->hw_geom.sectors
+          || raw_part->sector >= dev->hw_geom.sectors
+          || raw_part->end_sector >= dev->hw_geom.sectors
+          || raw_part->ipl_head >= dev->hw_geom.heads
+          || raw_part->head >= dev->hw_geom.heads
+          || raw_part->end_head >= dev->hw_geom.heads
+          || PED_LE16_TO_CPU(raw_part->ipl_cyl) >= dev->hw_geom.cylinders
+          || PED_LE16_TO_CPU(raw_part->cyl) >= dev->hw_geom.cylinders
+          || PED_LE16_TO_CPU(raw_part->end_cyl) >= dev->hw_geom.cylinders
+          || PED_LE16_TO_CPU(raw_part->cyl)
+               > PED_LE16_TO_CPU(raw_part->end_cyl)
+#if 0
+          || !chs_to_sector(dev, PED_LE16_TO_CPU(raw_part->ipl_cyl),
+                            raw_part->ipl_head, raw_part->ipl_sect)
+          || !chs_to_sector(dev, PED_LE16_TO_CPU(raw_part->cyl),
+                            raw_part->head, raw_part->sector)
+          || !chs_to_sector(dev, PED_LE16_TO_CPU(raw_part->end_cyl),
+                            raw_part->end_head, raw_part->end_sector)
+#endif
+          || PED_LE16_TO_CPU(raw_part->end_cyl)
+                       < PED_LE16_TO_CPU(raw_part->cyl))
+               return 0;
+
+       return 1;
+}
+
+static int
+pc98_probe (const PedDevice *dev)
+{
+       PC98RawTable            part_table;
+       int                     empty;
+       const PC98RawPartition* p;
+
+       PED_ASSERT (dev != NULL);
+
+        if (dev->sector_size != 512)
+                return 0;
+
+       if (!ped_device_read (dev, &part_table, 0, 2))
+               return 0;
+
+       /* check magic */
+       if (!pc98_check_magic (&part_table))
+               return 0;
+
+       /* check consistency */
+       empty = 1;
+       for (p = part_table.partitions;
+            p < part_table.partitions + MAX_PART_COUNT;
+            p++)
+       {
+               if (p->mid == 0 && p->sid == 0)
+                       continue;
+               empty = 0;
+               if (!check_partition_consistency (dev, p))
+                       return 0;
+       }
+
+       /* check boot loader */
+       if (pc98_check_ipl_signature (&part_table))
+               return 1;
+       else if (part_table.boot_code[0])       /* invalid boot loader */
+               return 0;
+
+       /* Not to mistake msdos disk map for PC-9800's empty disk map  */
+       if (empty)
+               return 0;
+
+       return 1;
+}
+
+static PedDisk*
+pc98_alloc (const PedDevice* dev)
+{
+       PED_ASSERT (dev != NULL);
+
+       return _ped_disk_alloc (dev, &pc98_disk_type);
+}
+
+static PedDisk*
+pc98_duplicate (const PedDisk* disk)
+{
+       return ped_disk_new_fresh (disk->dev, &pc98_disk_type);
+}
+
+static void
+pc98_free (PedDisk* disk)
+{
+       PED_ASSERT (disk != NULL);
+
+       _ped_disk_free (disk);
+}
+
+static PedSector
+chs_to_sector (const PedDevice* dev, int c, int h, int s)
+{
+       PED_ASSERT (dev != NULL);
+       return (c * dev->hw_geom.heads + h) * dev->hw_geom.sectors + s;
+}
+
+static void
+sector_to_chs (const PedDevice* dev, PedSector sector, int* c, int* h, int* s)
+{
+       PedSector cyl_size;
+
+       PED_ASSERT (dev != NULL);
+       PED_ASSERT (c != NULL);
+       PED_ASSERT (h != NULL);
+       PED_ASSERT (s != NULL);
+
+       cyl_size = dev->hw_geom.heads * dev->hw_geom.sectors;
+
+       *c = sector / cyl_size;
+       *h = (sector) % cyl_size / dev->hw_geom.sectors;
+       *s = (sector) % cyl_size % dev->hw_geom.sectors;
+}
+
+static PedSector
+legacy_start (const PedDisk* disk, const PC98RawPartition* raw_part)
+{
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (raw_part != NULL);
+
+       return chs_to_sector (disk->dev, PED_LE16_TO_CPU(raw_part->cyl),
+                             raw_part->head, raw_part->sector);
+}
+
+static PedSector
+legacy_end (const PedDisk* disk, const PC98RawPartition* raw_part)
+{
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (raw_part != NULL);
+
+       if (raw_part->end_head == 0 && raw_part->end_sector == 0) {
+               return chs_to_sector (disk->dev,
+                                     PED_LE16_TO_CPU(raw_part->end_cyl),
+                                     disk->dev->hw_geom.heads - 1,
+                                     disk->dev->hw_geom.sectors - 1);
+       } else {
+               return chs_to_sector (disk->dev,
+                                     PED_LE16_TO_CPU(raw_part->end_cyl),
+                                     raw_part->end_head,
+                                     raw_part->end_sector);
+       }
+}
+
+static int
+is_unused_partition(const PC98RawPartition* raw_part)
+{
+       if (raw_part->mid || raw_part->sid
+           || raw_part->ipl_sect
+           || raw_part->ipl_head
+           || PED_LE16_TO_CPU(raw_part->ipl_cyl)
+           || raw_part->sector
+           || raw_part->head
+           || PED_LE16_TO_CPU(raw_part->cyl)
+           || raw_part->end_sector
+           || raw_part->end_head
+           || PED_LE16_TO_CPU(raw_part->end_cyl))
+               return 0;
+       return 1;
+}
+
+static int
+read_table (PedDisk* disk)
+{
+       int                     i;
+       PC98RawTable            table;
+       PedConstraint*          constraint_any;
+
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (disk->dev != NULL);
+
+       constraint_any = ped_constraint_any (disk->dev);
+
+       if (!ped_device_read (disk->dev, (void*) &table, 0, 2))
+               goto error;
+
+       if (!pc98_check_magic(&table)) {
+               if (ped_exception_throw (
+                       PED_EXCEPTION_ERROR, PED_EXCEPTION_IGNORE_CANCEL,
+                       _("Invalid partition table on %s."),
+                       disk->dev->path))
+                       goto error;
+       }
+
+       for (i = 0; i < MAX_PART_COUNT; i++) {
+               PC98RawPartition*       raw_part;
+               PedPartition*           part;
+               PC98PartitionData*      pc98_data;
+               PedSector               part_start;
+               PedSector               part_end;
+
+               raw_part = &table.partitions [i];
+
+               if (is_unused_partition(raw_part))
+                       continue;
+
+               part_start = legacy_start (disk, raw_part);
+               part_end   = legacy_end (disk, raw_part);
+
+               part = ped_partition_new (disk, PED_PARTITION_NORMAL,
+                                          NULL, part_start, part_end);
+               if (!part)
+                       goto error;
+               pc98_data = part->disk_specific;
+               PED_ASSERT (pc98_data != NULL);
+
+               pc98_data->system = (raw_part->mid << 8) | raw_part->sid;
+               pc98_data->boot = GET_BIT(raw_part->mid, 7);
+               pc98_data->hidden = !GET_BIT(raw_part->sid, 7);
+
+               ped_partition_set_name (part, raw_part->name);
+
+               pc98_data->ipl_sector = chs_to_sector (
+                       disk->dev,
+                       PED_LE16_TO_CPU(raw_part->ipl_cyl),
+                       raw_part->ipl_head,
+                       raw_part->ipl_sect);
+
+               /* hack */
+               if (pc98_data->ipl_sector == part->geom.start)
+                       pc98_data->ipl_sector = 0;
+
+               part->num = i + 1;
+
+               if (!ped_disk_add_partition (disk, part, constraint_any))
+                       goto error;
+
+               if (part->geom.start != part_start
+                   || part->geom.end != part_end) {
+                       ped_exception_throw (
+                               PED_EXCEPTION_NO_FEATURE,
+                               PED_EXCEPTION_CANCEL,
+                               _("Partition %d isn't aligned to cylinder "
+                                 "boundaries.  This is still unsupported."),
+                               part->num);
+                       goto error;
+               }
+
+               part->fs_type = ped_file_system_probe (&part->geom);
+       }
+
+       ped_constraint_destroy (constraint_any);
+       return 1;
+
+error:
+       ped_disk_delete_all (disk);
+       ped_constraint_destroy (constraint_any);
+       return 0;
+}
+
+static int
+pc98_read (PedDisk* disk)
+{
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (disk->dev != NULL);
+
+       ped_disk_delete_all (disk);
+       return read_table (disk);
+}
+
+#ifndef DISCOVER_ONLY
+static int
+fill_raw_part (PC98RawPartition* raw_part, const PedPartition* part)
+{
+       PC98PartitionData*      pc98_data;
+       int                     c, h, s;
+       const char*             name;
+
+       PED_ASSERT (raw_part != NULL);
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk_specific != NULL);
+
+       pc98_data = part->disk_specific;
+       raw_part->mid = (pc98_data->system >> 8) & 0xFF;
+       raw_part->sid = pc98_data->system & 0xFF;
+
+       SET_BIT(raw_part->mid, 7, pc98_data->boot);
+       SET_BIT(raw_part->sid, 7, !pc98_data->hidden);
+
+       memset (raw_part->name, ' ', sizeof(raw_part->name));
+       name = ped_partition_get_name (part);
+       PED_ASSERT (name != NULL);
+       PED_ASSERT (strlen (name) <= 16);
+       if (!strlen (name) && part->fs_type)
+               name = part->fs_type->name;
+       memcpy (raw_part->name, name, strlen (name));
+
+       sector_to_chs (part->disk->dev, part->geom.start, &c, &h, &s);
+       raw_part->cyl    = PED_CPU_TO_LE16(c);
+       raw_part->head   = h;
+       raw_part->sector = s;
+
+       if (pc98_data->ipl_sector) {
+               sector_to_chs (part->disk->dev, pc98_data->ipl_sector,
+                              &c, &h, &s);
+               raw_part->ipl_cyl  = PED_CPU_TO_LE16(c);
+               raw_part->ipl_head = h;
+               raw_part->ipl_sect = s;
+       } else {
+               raw_part->ipl_cyl  = raw_part->cyl;
+               raw_part->ipl_head = raw_part->head;
+               raw_part->ipl_sect = raw_part->sector;
+       }
+
+       sector_to_chs (part->disk->dev, part->geom.end, &c, &h, &s);
+       if (h != part->disk->dev->hw_geom.heads - 1
+           || s != part->disk->dev->hw_geom.sectors - 1) {
+               ped_exception_throw (
+                   PED_EXCEPTION_NO_FEATURE,
+                   PED_EXCEPTION_CANCEL,
+                   _("Partition %d isn't aligned to cylinder "
+                     "boundaries.  This is still unsupported."),
+                   part->num);
+               return 0;
+       }
+       raw_part->end_cyl    = PED_CPU_TO_LE16(c);
+#if 0
+       raw_part->end_head   = h;
+       raw_part->end_sector = s;
+#else
+       raw_part->end_head   = 0;
+       raw_part->end_sector = 0;
+#endif
+
+       return 1;
+}
+
+static int
+pc98_write (const PedDisk* disk)
+{
+       PedPartition*           part;
+       int                     i;
+
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (disk->dev != NULL);
+
+       void *s0;
+       if (!ptt_read_sectors (disk->dev, 0, 2, &s0))
+               return 0;
+       PC98RawTable *table = s0;
+
+       if (!pc98_check_ipl_signature (table)) {
+               memset (table->boot_code, 0, sizeof(table->boot_code));
+               memcpy (table->boot_code, MBR_BOOT_CODE, sizeof(MBR_BOOT_CODE));
+       }
+
+       memset (table->partitions, 0, sizeof (table->partitions));
+       table->magic = PED_CPU_TO_LE16(PC9800_EXTFMT_MAGIC);
+
+       for (i = 1; i <= MAX_PART_COUNT; i++) {
+               part = ped_disk_get_partition (disk, i);
+               if (!part)
+                       continue;
+
+               if (!fill_raw_part (&table->partitions [i - 1], part))
+                       return 0;
+       }
+
+       int write_ok = ped_device_write (disk->dev, table, 0, 2);
+       free (s0);
+       if (!write_ok)
+               return 0;
+       return ped_device_sync (disk->dev);
+}
+#endif /* !DISCOVER_ONLY */
+
+static PedPartition*
+pc98_partition_new (
+       const PedDisk* disk, PedPartitionType part_type,
+       const PedFileSystemType* fs_type, PedSector start, PedSector end)
+{
+       PedPartition*           part;
+       PC98PartitionData*      pc98_data;
+
+       part = _ped_partition_alloc (disk, part_type, fs_type, start, end);
+       if (!part)
+               goto error;
+
+       if (ped_partition_is_active (part)) {
+               part->disk_specific
+                       = pc98_data = ped_malloc (sizeof (PC98PartitionData));
+               if (!pc98_data)
+                       goto error_free_part;
+               pc98_data->ipl_sector = 0;
+               pc98_data->hidden = 0;
+               pc98_data->boot = 0;
+               strcpy (pc98_data->name, "");
+       } else {
+               part->disk_specific = NULL;
+       }
+       return part;
+
+error_free_part:
+       free (part);
+error:
+       return 0;
+}
+
+static PedPartition*
+pc98_partition_duplicate (const PedPartition* part)
+{
+       PedPartition*           new_part;
+       PC98PartitionData*      new_pc98_data;
+       PC98PartitionData*      old_pc98_data;
+
+       new_part = ped_partition_new (part->disk, part->type,
+                                     part->fs_type, part->geom.start,
+                                     part->geom.end);
+       if (!new_part)
+               return NULL;
+       new_part->num = part->num;
+
+       old_pc98_data = (PC98PartitionData*) part->disk_specific;
+       new_pc98_data = (PC98PartitionData*) new_part->disk_specific;
+
+       /* ugly, but C is ugly :p */
+       memcpy (new_pc98_data, old_pc98_data, sizeof (PC98PartitionData));
+       return new_part;
+}
+
+static void
+pc98_partition_destroy (PedPartition* part)
+{
+       PED_ASSERT (part != NULL);
+
+       if (ped_partition_is_active (part))
+               free (part->disk_specific);
+       free (part);
+}
+
+static int
+pc98_partition_set_system (PedPartition* part, const PedFileSystemType* fs_type)
+{
+       PC98PartitionData* pc98_data = part->disk_specific;
+
+       part->fs_type = fs_type;
+
+       pc98_data->system = 0x2062;
+       if (fs_type) {
+               if (!strcmp (fs_type->name, "fat16")) {
+                       if (part->geom.length * 512 >= 32 * 1024 * 1024)
+                               pc98_data->system = 0x2021;
+                       else
+                               pc98_data->system = 0x2011;
+               } else if (!strcmp (fs_type->name, "fat32")) {
+                       pc98_data->system = 0x2061;
+               } else if (!strcmp (fs_type->name, "ntfs")) {
+                       pc98_data->system = 0x2031;
+               } else if (!strncmp (fs_type->name, "ufs", 3)) {
+                       pc98_data->system = 0x2044;
+               } else { /* ext2, reiser, xfs, etc. */
+                       /* ext2 partitions must be marked boot */
+                       pc98_data->boot = 1;
+                       pc98_data->system = 0xa062;
+               }
+       }
+
+       if (pc98_data->boot)
+               pc98_data->system |= 0x8000;
+       if (!pc98_data->hidden)
+               pc98_data->system |= 0x0080;
+       return 1;
+}
+
+static int
+pc98_partition_set_flag (PedPartition* part, PedPartitionFlag flag, int state)
+{
+       PC98PartitionData*              pc98_data;
+
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk_specific != NULL);
+
+       pc98_data = part->disk_specific;
+
+       switch (flag) {
+       case PED_PARTITION_HIDDEN:
+               pc98_data->hidden = state;
+               return ped_partition_set_system (part, part->fs_type);
+
+       case PED_PARTITION_BOOT:
+               pc98_data->boot = state;
+               return ped_partition_set_system (part, part->fs_type);
+
+       default:
+               return 0;
+       }
+}
+
+static int
+pc98_partition_get_flag (const PedPartition* part, PedPartitionFlag flag)
+{
+       PC98PartitionData*      pc98_data;
+
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk_specific != NULL);
+
+       pc98_data = part->disk_specific;
+       switch (flag) {
+       case PED_PARTITION_HIDDEN:
+               return pc98_data->hidden;
+
+       case PED_PARTITION_BOOT:
+               return pc98_data->boot;
+
+       default:
+               return 0;
+       }
+}
+
+static int
+pc98_partition_is_flag_available (
+       const PedPartition* part, PedPartitionFlag flag)
+{
+       switch (flag) {
+       case PED_PARTITION_HIDDEN:
+       case PED_PARTITION_BOOT:
+               return 1;
+
+       default:
+               return 0;
+       }
+}
+
+static void
+pc98_partition_set_name (PedPartition* part, const char* name)
+{
+       PC98PartitionData*      pc98_data;
+       int                     i;
+
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk_specific != NULL);
+       pc98_data = part->disk_specific;
+
+       strncpy (pc98_data->name, name, 16);
+       pc98_data->name [16] = 0;
+       for (i = strlen (pc98_data->name) - 1; pc98_data->name[i] == ' '; i--)
+               pc98_data->name [i] = 0;
+}
+
+static const char*
+pc98_partition_get_name (const PedPartition* part)
+{
+       PC98PartitionData*      pc98_data;
+
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk_specific != NULL);
+       pc98_data = part->disk_specific;
+
+       return pc98_data->name;
+}
+
+static PedAlignment*
+pc98_get_partition_alignment(const PedDisk *disk)
+{
+       PedSector cylinder_size =
+               disk->dev->hw_geom.sectors * disk->dev->hw_geom.heads;
+
+        return ped_alignment_new(0, cylinder_size);
+}
+
+static PedConstraint*
+_primary_constraint (PedDisk* disk)
+{
+       PedDevice*      dev = disk->dev;
+       PedAlignment    start_align;
+       PedAlignment    end_align;
+       PedGeometry     max_geom;
+       PedSector       cylinder_size;
+
+       cylinder_size = dev->hw_geom.sectors * dev->hw_geom.heads;
+
+       if (!ped_alignment_init (&start_align, 0, cylinder_size))
+               return NULL;
+       if (!ped_alignment_init (&end_align, -1, cylinder_size))
+               return NULL;
+       if (!ped_geometry_init (&max_geom, dev, cylinder_size,
+                               dev->length - cylinder_size))
+               return NULL;
+
+       return ped_constraint_new (&start_align, &end_align, &max_geom,
+                                  &max_geom, 1, dev->length);
+}
+
+static int
+pc98_partition_align (PedPartition* part, const PedConstraint* constraint)
+{
+       PED_ASSERT (part != NULL);
+
+       if (_ped_partition_attempt_align (part, constraint,
+                                         _primary_constraint (part->disk)))
+               return 1;
+
+#ifndef DISCOVER_ONLY
+       ped_exception_throw (
+               PED_EXCEPTION_ERROR,
+               PED_EXCEPTION_CANCEL,
+               _("Unable to satisfy all constraints on the partition."));
+#endif
+       return 0;
+}
+
+static int
+next_primary (PedDisk* disk)
+{
+       int     i;
+       for (i=1; i<=MAX_PART_COUNT; i++) {
+               if (!ped_disk_get_partition (disk, i))
+                       return i;
+       }
+       return 0;
+}
+
+static int
+pc98_partition_enumerate (PedPartition* part)
+{
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk != NULL);
+
+       /* don't re-number a partition */
+       if (part->num != -1)
+               return 1;
+
+       PED_ASSERT (ped_partition_is_active (part));
+
+       part->num = next_primary (part->disk);
+       if (!part->num) {
+               ped_exception_throw (PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_CANCEL,
+                       _("Can't add another partition."));
+               return 0;
+       }
+
+       return 1;
+}
+
+static int
+pc98_alloc_metadata (PedDisk* disk)
+{
+       PedPartition*           new_part;
+       PedConstraint*          constraint_any = NULL;
+       PedSector               cyl_size;
+
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (disk->dev != NULL);
+
+       constraint_any = ped_constraint_any (disk->dev);
+
+       cyl_size = disk->dev->hw_geom.sectors * disk->dev->hw_geom.heads;
+       new_part = ped_partition_new (disk, PED_PARTITION_METADATA, NULL,
+                                     0, cyl_size - 1);
+       if (!new_part)
+               goto error;
+
+       if (!ped_disk_add_partition (disk, new_part, constraint_any)) {
+               ped_partition_destroy (new_part);
+               goto error;
+       }
+
+       ped_constraint_destroy (constraint_any);
+       return 1;
+
+error:
+       ped_constraint_destroy (constraint_any);
+       return 0;
+}
+
+static int
+pc98_get_max_primary_partition_count (const PedDisk* disk)
+{
+       return MAX_PART_COUNT;
+}
+
+static bool
+pc98_get_max_supported_partition_count (const PedDisk* disk, int *max_n)
+{
+       *max_n = MAX_PART_COUNT;
+       return true;
+}
+
+#include "pt-common.h"
+PT_define_limit_functions (pc98)
+
+static PedDiskOps pc98_disk_ops = {
+       clobber:                NULL,
+       write:                  NULL_IF_DISCOVER_ONLY (pc98_write),
+
+       partition_set_name:     pc98_partition_set_name,
+       partition_get_name:     pc98_partition_get_name,
+
+       get_partition_alignment: pc98_get_partition_alignment,
+
+       PT_op_function_initializers (pc98)
+};
+
+static PedDiskType pc98_disk_type = {
+       next:           NULL,
+       name:           "pc98",
+       ops:            &pc98_disk_ops,
+       features:       PED_DISK_TYPE_PARTITION_NAME
+};
+
+void
+ped_disk_pc98_init ()
+{
+       PED_ASSERT (sizeof (PC98RawTable) == 512 * 2);
+       ped_disk_type_register (&pc98_disk_type);
+}
+
+void
+ped_disk_pc98_done ()
+{
+       ped_disk_type_unregister (&pc98_disk_type);
+}
diff --git a/libparted/labels/pt-common.h b/libparted/labels/pt-common.h
new file mode 100644 (file)
index 0000000..76f06e3
--- /dev/null
@@ -0,0 +1,55 @@
+/* Factor some of the duplication out of *.c.  */
+
+#ifdef DISCOVER_ONLY
+# define NULL_IF_DISCOVER_ONLY(val) NULL
+#else
+# define NULL_IF_DISCOVER_ONLY(val) val
+#endif
+
+#define PT_define_limit_functions(PT_type)                     \
+                                                               \
+static bool                                                    \
+PT_type##_partition_check (const PedPartition *part)           \
+{                                                              \
+  return ptt_partition_max_start_len (#PT_type, part);         \
+}                                                              \
+                                                               \
+static PedSector                                               \
+PT_type##_partition_max_start_sector (void)                    \
+{                                                              \
+  PedSector max;                                               \
+  int err = ptt_partition_max_start_sector (#PT_type, &max);   \
+  PED_ASSERT (err == 0);                                       \
+  return max;                                                  \
+}                                                              \
+                                                               \
+static PedSector                                               \
+PT_type##_partition_max_length (void)                          \
+{                                                              \
+  PedSector max;                                               \
+  int err = ptt_partition_max_length (#PT_type, &max);         \
+  PED_ASSERT (err == 0);                                       \
+  return max;                                                  \
+}
+
+#define PT_op_function_initializers(PT_type)                   \
+probe:                        PT_type##_probe,                 \
+alloc:                        PT_type##_alloc,                 \
+duplicate:                    PT_type##_duplicate,             \
+free:                         PT_type##_free,                  \
+read:                         PT_type##_read,                  \
+partition_new:                PT_type##_partition_new,         \
+partition_duplicate:          PT_type##_partition_duplicate,   \
+partition_set_flag:           PT_type##_partition_set_flag,    \
+partition_get_flag:           PT_type##_partition_get_flag,    \
+partition_set_system:         PT_type##_partition_set_system,  \
+partition_is_flag_available:  PT_type##_partition_is_flag_available, \
+partition_align:              PT_type##_partition_align,       \
+partition_destroy:            PT_type##_partition_destroy,     \
+partition_enumerate:         PT_type##_partition_enumerate,    \
+alloc_metadata:               PT_type##_alloc_metadata,                \
+get_max_primary_partition_count: PT_type##_get_max_primary_partition_count, \
+get_max_supported_partition_count:PT_type##_get_max_supported_partition_count,\
+partition_check:              PT_type##_partition_check,       \
+max_length:                   PT_type##_partition_max_length,  \
+max_start_sector:             PT_type##_partition_max_start_sector
diff --git a/libparted/labels/pt-limit.c b/libparted/labels/pt-limit.c
new file mode 100644 (file)
index 0000000..fa427a8
--- /dev/null
@@ -0,0 +1,164 @@
+/* ANSI-C code produced by gperf version 3.0.4 */
+/* Command-line: gperf -C -N pt_limit_lookup -n -t -s 6 -k '*' --language=ANSI-C pt-limit.gperf  */
+
+#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+      && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
+      && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
+      && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
+      && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
+      && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
+      && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
+      && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
+      && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
+      && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
+      && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
+      && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
+      && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
+      && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
+      && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
+      && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
+      && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
+      && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
+      && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
+      && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
+      && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
+      && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
+      && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
+/* The character set is not based on ISO-646.  */
+#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
+#endif
+
+#line 1 "pt-limit.gperf"
+struct partition_limit
+{
+  char const *name;
+  uint64_t max_start_sector;
+  uint64_t max_length;
+};
+
+#define TOTAL_KEYWORDS 10
+#define MIN_WORD_LENGTH 3
+#define MAX_WORD_LENGTH 5
+#define MIN_HASH_VALUE 0
+#define MAX_HASH_VALUE 45
+/* maximum key range = 46, duplicates = 0 */
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static unsigned int
+hash (register const char *str, register unsigned int len)
+{
+  static const unsigned char asso_values[] =
+    {
+      46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
+      46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
+      46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
+      46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
+      46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
+      46, 46, 46, 46, 46, 46, 10,  5, 46, 46,
+      46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
+      46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
+      46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
+      46, 46, 46, 46, 46, 46, 46,  0, 30, 30,
+      10, 46, 46,  5, 10, 15, 46, 46,  5,  5,
+       0,  0,  0, 46, 46,  0,  5,  0, 10, 46,
+      46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
+      46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
+      46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
+      46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
+      46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
+      46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
+      46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
+      46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
+      46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
+      46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
+      46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
+      46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
+      46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
+      46, 46, 46, 46, 46, 46
+    };
+  register int hval = 0;
+
+  switch (len)
+    {
+      default:
+        hval += asso_values[(unsigned char)str[4]];
+      /*FALLTHROUGH*/
+      case 4:
+        hval += asso_values[(unsigned char)str[3]];
+      /*FALLTHROUGH*/
+      case 3:
+        hval += asso_values[(unsigned char)str[2]];
+      /*FALLTHROUGH*/
+      case 2:
+        hval += asso_values[(unsigned char)str[1]];
+      /*FALLTHROUGH*/
+      case 1:
+        hval += asso_values[(unsigned char)str[0]];
+        break;
+    }
+  return hval;
+}
+
+#ifdef __GNUC__
+__inline
+static
+#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
+#endif
+const struct partition_limit *
+pt_limit_lookup (register const char *str, register unsigned int len)
+{
+  static const struct partition_limit wordlist[] =
+    {
+#line 18 "pt-limit.gperf"
+      {"sun",128ULL*UINT32_MAX,UINT32_MAX},
+      {""}, {""}, {""}, {""},
+#line 23 "pt-limit.gperf"
+      {"loop",UINT64_MAX,UINT64_MAX},
+      {""}, {""}, {""}, {""},
+#line 10 "pt-limit.gperf"
+      {"gpt",UINT64_MAX,UINT64_MAX},
+      {""}, {""}, {""}, {""},
+#line 12 "pt-limit.gperf"
+      {"msdos",UINT32_MAX,UINT32_MAX},
+      {""}, {""}, {""}, {""},
+#line 8 "pt-limit.gperf"
+      {"dasd",UINT32_MAX,UINT32_MAX},
+      {""}, {""}, {""}, {""},
+#line 27 "pt-limit.gperf"
+      {"amiga",UINT32_MAX,UINT32_MAX},
+      {""}, {""}, {""}, {""},
+#line 9 "pt-limit.gperf"
+      {"dvh",UINT32_MAX,UINT32_MAX},
+      {""}, {""}, {""}, {""},
+#line 11 "pt-limit.gperf"
+      {"mac",UINT32_MAX,UINT32_MAX},
+      {""}, {""}, {""}, {""},
+#line 20 "pt-limit.gperf"
+      {"bsd",UINT32_MAX,UINT32_MAX},
+      {""}, {""}, {""}, {""},
+#line 24 "pt-limit.gperf"
+      {"pc98",UINT32_MAX,UINT32_MAX}
+    };
+
+  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+    {
+      register int key = hash (str, len);
+
+      if (key <= MAX_HASH_VALUE && key >= 0)
+        {
+          register const char *s = wordlist[key].name;
+
+          if (*str == *s && !strcmp (str + 1, s + 1))
+            return &wordlist[key];
+        }
+    }
+  return 0;
+}
diff --git a/libparted/labels/pt-limit.gperf b/libparted/labels/pt-limit.gperf
new file mode 100644 (file)
index 0000000..3d764ae
--- /dev/null
@@ -0,0 +1,27 @@
+struct partition_limit
+{
+  char const *name;
+  uint64_t max_start_sector;
+  uint64_t max_length;
+};
+%%
+dasd,UINT32_MAX,UINT32_MAX
+dvh,UINT32_MAX,UINT32_MAX
+gpt,UINT64_MAX,UINT64_MAX
+mac,UINT32_MAX,UINT32_MAX
+msdos,UINT32_MAX,UINT32_MAX
+#
+# Sun partitions are cylinder-aligned, and it looks like there are 128 sectors
+# in a cylinder.  FIXME verify.  Possibly compute sectors-per-cylinder, given
+# u_int16_t    ntrks;          /* Tracks per cylinder */
+# u_int16_t    nsect;          /* Sectors per track */
+sun,128ULL*UINT32_MAX,UINT32_MAX
+#
+bsd,UINT32_MAX,UINT32_MAX
+# aix,UINT32_MAX,UINT32_MAX
+# In reality, loop labels have no particular limit.
+loop,UINT64_MAX,UINT64_MAX
+pc98,UINT32_MAX,UINT32_MAX
+#
+# FIXME: not verified.  looks like these are cylinder aligned, too
+amiga,UINT32_MAX,UINT32_MAX
diff --git a/libparted/labels/pt-tools.c b/libparted/labels/pt-tools.c
new file mode 100644 (file)
index 0000000..19eac19
--- /dev/null
@@ -0,0 +1,177 @@
+/* partition table tools
+   Copyright (C) 2008-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <string.h>
+#include <stdlib.h>
+
+#include <parted/parted.h>
+#include <parted/debug.h>
+
+#include "pt-tools.h"
+
+#if ENABLE_NLS
+# include <libintl.h>
+# define _(String) dgettext (PACKAGE, String)
+#else
+# define _(String) (String)
+#endif /* ENABLE_NLS */
+
+static char zero[16 * 1024];
+
+/* Write a single sector to DISK, filling the first BUFLEN
+   bytes of that sector with data from BUF, and NUL-filling
+   any remaining bytes.  Return nonzero to indicate success,
+   zero otherwise.  */
+int
+ptt_write_sector (PedDisk const *disk, void const *buf, size_t buflen)
+{
+  PED_ASSERT (buflen <= disk->dev->sector_size);
+  /* Allocate a big enough buffer for ped_device_write.  */
+  char *s0 = ped_malloc (disk->dev->sector_size);
+  if (s0 == NULL)
+    return 0;
+  /* Copy boot_code into the first part.  */
+  memcpy (s0, buf, buflen);
+  char *p = s0 + buflen;
+  /* Fill the rest with zeros.  */
+  memset (p, 0, disk->dev->sector_size - buflen);
+  int write_ok = ped_device_write (disk->dev, s0, 0, 1);
+  free (s0);
+
+  return write_ok;
+}
+
+/* Read N sectors, starting with sector SECTOR_NUM (which has length
+   DEV->sector_size) into malloc'd storage.  If the read fails, free
+   the memory and return zero without modifying *BUF.  Otherwise, set
+   *BUF to the new buffer and return 1.  */
+int
+ptt_read_sectors (PedDevice const *dev, PedSector start_sector,
+                 PedSector n_sectors, void **buf)
+{
+  char *b = ped_malloc (n_sectors * dev->sector_size);
+  PED_ASSERT (b != NULL);
+  if (!ped_device_read (dev, b, start_sector, n_sectors)) {
+    free (b);
+    return 0;
+  }
+  *buf = b;
+  return 1;
+}
+
+/* Read sector, SECTOR_NUM (which has length DEV->sector_size) into malloc'd
+   storage.  If the read fails, free the memory and return zero without
+   modifying *BUF.  Otherwise, set *BUF to the new buffer and return 1.  */
+int
+ptt_read_sector (PedDevice const *dev, PedSector sector_num, void **buf)
+{
+  return ptt_read_sectors (dev, sector_num, 1, buf);
+}
+
+/* Zero N sectors of DEV, starting with START.
+   Return nonzero to indicate success, zero otherwise.  */
+int
+ptt_clear_sectors (PedDevice *dev, PedSector start, PedSector n)
+{
+  PED_ASSERT (dev->sector_size <= sizeof zero);
+  PedSector n_z_sectors = sizeof zero / dev->sector_size;
+  PedSector n_full = n / n_z_sectors;
+  PedSector i;
+  for (i = 0; i < n_full; i++)
+    {
+      if (!ped_device_write (dev, zero, start + n_z_sectors * i, n_z_sectors))
+        return 0;
+    }
+
+  PedSector rem = n - n_z_sectors * i;
+  return (rem == 0
+          ? 1 : ped_device_write (dev, zero, start + n_z_sectors * i, rem));
+}
+
+#include "pt-limit.c"
+
+/* Throw an exception and return 0 if PART's starting sector number or
+   its length is greater than the maximum allowed value for LABEL_TYPE.
+   Otherwise, return 1.  */
+int
+ptt_partition_max_start_len (char const *pt_type, const PedPartition *part)
+{
+  struct partition_limit const *pt_lim
+    = pt_limit_lookup (pt_type, strlen (pt_type));
+
+  /* If we don't have info on the type, return "true".  */
+  if (pt_lim == NULL)
+    return 1;
+
+  /* If the length in sectors exceeds the limit, you lose.  */
+  if (part->geom.length > pt_lim->max_length)
+    {
+      ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                          _("partition length of %jd sectors exceeds"
+                            " the %s-partition-table-imposed maximum"
+                            " of %jd"),
+                          part->geom.length,
+                          pt_type,
+                          pt_lim->max_length);
+      return 0;
+    }
+
+  /* If the starting sector exceeds the limit, you lose.  */
+  if (part->geom.start > pt_lim->max_start_sector) {
+    ped_exception_throw (
+                        PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                        _("starting sector number, %jd exceeds"
+                          " the %s-partition-table-imposed maximum"
+                          " of %jd"),
+                        part->geom.start,
+                        pt_type,
+                        pt_lim->max_start_sector);
+    return 0;
+  }
+
+  return 1;
+}
+
+/* Set *MAX to the largest representation-imposed starting sector number
+   of a partition of type PT_TYPE and return 0.  If PT_TYPE is not
+   recognized, return -1.  */
+int
+ptt_partition_max_start_sector (char const *pt_type, PedSector *max)
+{
+  struct partition_limit const *pt_lim
+    = pt_limit_lookup (pt_type, strlen (pt_type));
+  if (pt_lim == NULL)
+    return -1;
+
+  *max = pt_lim->max_start_sector;
+  return 0;
+}
+
+/* Set *MAX to the maximum representable length of a partition of type
+   PT_TYPE and return 0.  If PT_TYPE is not recognized, return -1.  */
+int
+ptt_partition_max_length (char const *pt_type, PedSector *max)
+{
+  struct partition_limit const *pt_lim
+    = pt_limit_lookup (pt_type, strlen (pt_type));
+  if (pt_lim == NULL)
+    return -1;
+
+  *max = pt_lim->max_length;
+  return 0;
+}
diff --git a/libparted/labels/pt-tools.h b/libparted/labels/pt-tools.h
new file mode 100644 (file)
index 0000000..fae4b4e
--- /dev/null
@@ -0,0 +1,29 @@
+/* libparted - a library for manipulating disk partitions
+   Copyright (C) 2008-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>. */
+
+#include <stddef.h>
+#include <parted/disk.h>
+
+int ptt_write_sector (PedDisk const *disk, void const *buf, size_t buflen);
+int ptt_read_sector (PedDevice const *dev, PedSector sector_num, void **buf);
+int ptt_read_sectors (PedDevice const *dev, PedSector start_sector,
+                     PedSector n_sectors, void **buf);
+int ptt_clear_sectors (PedDevice *dev, PedSector start, PedSector count);
+int ptt_partition_max_start_len (char const *label_type,
+                const PedPartition *part);
+
+int ptt_partition_max_start_sector (char const *pt_type, PedSector *max);
+int ptt_partition_max_length (char const *pt_type, PedSector *max);
diff --git a/libparted/labels/rdb.c b/libparted/labels/rdb.c
new file mode 100644 (file)
index 0000000..5db3787
--- /dev/null
@@ -0,0 +1,1165 @@
+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+
+    libparted - a library for manipulating disk partitions
+    disk_amiga.c - libparted module to manipulate amiga RDB partition tables.
+    Copyright (C) 2000-2001, 2004, 2007-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+    Contributor:  Sven Luther <luther@debian.org>
+*/
+
+#include <config.h>
+
+#include <parted/parted.h>
+#include <parted/debug.h>
+#include <parted/endian.h>
+
+#include "pt-tools.h"
+
+#ifndef MAX
+# define MAX(a,b) ((a) < (b) ? (b) : (a))
+#endif
+
+#if ENABLE_NLS
+#  include <libintl.h>
+#  define _(String) dgettext (PACKAGE, String)
+#else
+#  define _(String) (String)
+#endif /* ENABLE_NLS */
+
+#include "misc.h"
+
+/* String manipulation */
+static void _amiga_set_bstr (const char *cstr, char *bstr, int maxsize) {
+       int size = strlen (cstr);
+       int i;
+
+       if (size >= maxsize) return;
+       bstr[0] = size;
+       for (i = 0; i<size; i++) bstr[i+1] = cstr[i];
+}
+static const char * _amiga_get_bstr (char * bstr) {
+       char * cstr = bstr + 1;
+       int size = bstr[0];
+
+       cstr[size] = '\0';
+       return cstr;
+}
+
+#define        IDNAME_RIGIDDISK        (uint32_t)0x5244534B    /* 'RDSK' */
+#define IDNAME_BADBLOCK                (uint32_t)0x42414442    /* 'BADB' */
+#define        IDNAME_PARTITION        (uint32_t)0x50415254    /* 'PART' */
+#define IDNAME_FILESYSHEADER   (uint32_t)0x46534844    /* 'FSHD' */
+#define IDNAME_LOADSEG         (uint32_t)0x4C534547    /* 'LSEG' */
+#define IDNAME_BOOT            (uint32_t)0x424f4f54    /* 'BOOT' */
+#define IDNAME_FREE            (uint32_t)0xffffffff
+
+static const char *
+_amiga_block_id (uint32_t id) {
+       switch (id) {
+               case IDNAME_RIGIDDISK :
+                       return "RDSK";
+               case IDNAME_BADBLOCK :
+                       return "BADB";
+               case IDNAME_PARTITION :
+                       return "PART";
+               case IDNAME_FILESYSHEADER :
+                       return "FSHD";
+               case IDNAME_LOADSEG :
+                       return "LSEG";
+               case IDNAME_BOOT :
+                       return "BOOT";
+               case IDNAME_FREE :
+                       return "<free>";
+               default :
+                       return "<unknown>";
+       }
+}
+
+struct AmigaIds {
+       uint32_t ID;
+       struct AmigaIds *next;
+};
+
+static struct AmigaIds *
+_amiga_add_id (uint32_t id, struct AmigaIds *ids) {
+       struct AmigaIds *newid;
+
+       if ((newid=ped_malloc(sizeof (struct AmigaIds)))==NULL)
+               return 0;
+       newid->ID = id;
+       newid->next = ids;
+       return newid;
+}
+
+static void
+_amiga_free_ids (struct AmigaIds *ids) {
+       struct AmigaIds *current, *next;
+
+       for (current = ids; current != NULL; current = next) {
+               next = current->next;
+               free (current);
+       }
+}
+static int
+_amiga_id_in_list (uint32_t id, struct AmigaIds *ids) {
+       struct AmigaIds *current;
+
+       for (current = ids; current != NULL; current = current->next) {
+               if (id == current->ID)
+                       return 1;
+       }
+       return 0;
+}
+
+struct AmigaBlock {
+       uint32_t        amiga_ID;               /* Identifier 32 bit word */
+       uint32_t        amiga_SummedLongss;     /* Size of the structure for checksums */
+       int32_t         amiga_ChkSum;           /* Checksum of the structure */
+};
+#define AMIGA(pos) ((struct AmigaBlock *)(pos))
+
+static int
+_amiga_checksum (struct AmigaBlock *blk) {
+       uint32_t *rdb = (uint32_t *) blk;
+       uint32_t sum;
+       int i, end;
+
+       sum = PED_BE32_TO_CPU (rdb[0]);
+       end = PED_BE32_TO_CPU (rdb[1]);
+
+       if (end > PED_SECTOR_SIZE_DEFAULT) end = PED_SECTOR_SIZE_DEFAULT;
+
+       for (i = 1; i < end; i++) sum += PED_BE32_TO_CPU (rdb[i]);
+
+       return sum;
+}
+
+static void
+_amiga_calculate_checksum (struct AmigaBlock *blk) {
+       blk->amiga_ChkSum = PED_CPU_TO_BE32(
+               PED_BE32_TO_CPU(blk->amiga_ChkSum) -
+               _amiga_checksum((struct AmigaBlock *) blk));
+       return;
+}
+
+static struct AmigaBlock *
+_amiga_read_block (const PedDevice *dev, struct AmigaBlock *blk,
+                   PedSector block, struct AmigaIds *ids)
+{
+       if (!ped_device_read (dev, blk, block, 1))
+               return NULL;
+       if (ids && !_amiga_id_in_list(PED_BE32_TO_CPU(blk->amiga_ID), ids))
+               return NULL;
+       if (_amiga_checksum (blk) != 0) {
+               switch (ped_exception_throw(PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_FIX | PED_EXCEPTION_IGNORE | PED_EXCEPTION_CANCEL,
+                       _("%s : Bad checksum on block %llu of type %s."),
+                       __func__, block, _amiga_block_id(PED_BE32_TO_CPU(blk->amiga_ID))))
+               {
+                       case PED_EXCEPTION_CANCEL :
+                               return NULL;
+                       case PED_EXCEPTION_FIX :
+                               _amiga_calculate_checksum(AMIGA(blk));
+                               if (!ped_device_write ((PedDevice*)dev, blk, block, 1))
+                                       return NULL;
+                       case PED_EXCEPTION_IGNORE :
+                       case PED_EXCEPTION_UNHANDLED :
+                       default :
+                               return blk;
+               }
+       }
+       return blk;
+}
+
+struct RigidDiskBlock {
+    uint32_t   rdb_ID;                 /* Identifier 32 bit word : 'RDSK' */
+    uint32_t   rdb_SummedLongs;        /* Size of the structure for checksums */
+    int32_t    rdb_ChkSum;             /* Checksum of the structure */
+    uint32_t   rdb_HostID;             /* SCSI Target ID of host, not really used */
+    uint32_t   rdb_BlockBytes;         /* Size of disk blocks */
+    uint32_t   rdb_Flags;              /* RDB Flags */
+    /* block list heads */
+    uint32_t   rdb_BadBlockList;       /* Bad block list */
+    uint32_t   rdb_PartitionList;      /* Partition list */
+    uint32_t   rdb_FileSysHeaderList;  /* File system header list */
+    uint32_t   rdb_DriveInit;          /* Drive specific init code */
+    uint32_t   rdb_BootBlockList;      /* Amiga OS 4 Boot Blocks */
+    uint32_t   rdb_Reserved1[5];       /* Unused word, need to be set to $ffffffff */
+    /* physical drive characteristics */
+    uint32_t   rdb_Cylinders;          /* Number of the cylinders of the drive */
+    uint32_t   rdb_Sectors;            /* Number of sectors of the drive */
+    uint32_t   rdb_Heads;              /* Number of heads of the drive */
+    uint32_t   rdb_Interleave;         /* Interleave */
+    uint32_t   rdb_Park;               /* Head parking cylinder */
+    uint32_t   rdb_Reserved2[3];       /* Unused word, need to be set to $ffffffff */
+    uint32_t   rdb_WritePreComp;       /* Starting cylinder of write precompensation */
+    uint32_t   rdb_ReducedWrite;       /* Starting cylinder of reduced write current */
+    uint32_t   rdb_StepRate;           /* Step rate of the drive */
+    uint32_t   rdb_Reserved3[5];       /* Unused word, need to be set to $ffffffff */
+    /* logical drive characteristics */
+    uint32_t   rdb_RDBBlocksLo;        /* low block of range reserved for hardblocks */
+    uint32_t   rdb_RDBBlocksHi;        /* high block of range for these hardblocks */
+    uint32_t   rdb_LoCylinder;         /* low cylinder of partitionable disk area */
+    uint32_t   rdb_HiCylinder;         /* high cylinder of partitionable data area */
+    uint32_t   rdb_CylBlocks;          /* number of blocks available per cylinder */
+    uint32_t   rdb_AutoParkSeconds;    /* zero for no auto park */
+    uint32_t   rdb_HighRDSKBlock;      /* highest block used by RDSK */
+                                       /* (not including replacement bad blocks) */
+    uint32_t   rdb_Reserved4;
+    /* drive identification */
+    char       rdb_DiskVendor[8];
+    char       rdb_DiskProduct[16];
+    char       rdb_DiskRevision[4];
+    char       rdb_ControllerVendor[8];
+    char       rdb_ControllerProduct[16];
+    char       rdb_ControllerRevision[4];
+    uint32_t   rdb_Reserved5[10];
+};
+
+#define RDSK(pos) ((struct RigidDiskBlock *)(pos))
+
+#define AMIGA_RDB_NOT_FOUND ((uint32_t)0xffffffff)
+#define        RDB_LOCATION_LIMIT      16
+#define AMIGA_MAX_PARTITIONS 128
+#define MAX_RDB_BLOCK (RDB_LOCATION_LIMIT + 2 * AMIGA_MAX_PARTITIONS + 2)
+
+static uint32_t
+_amiga_find_rdb (const PedDevice *dev, struct RigidDiskBlock *rdb) {
+       int i;
+       struct AmigaIds *ids;
+
+       ids = _amiga_add_id (IDNAME_RIGIDDISK, NULL);
+
+       for (i = 0; i<RDB_LOCATION_LIMIT; i++) {
+               if (!_amiga_read_block (dev, AMIGA(rdb), i, ids)) {
+                       continue;
+               }
+               if (PED_BE32_TO_CPU (rdb->rdb_ID) == IDNAME_RIGIDDISK) {
+                       _amiga_free_ids (ids);
+                       return i;
+               }
+       }
+       _amiga_free_ids (ids);
+       return AMIGA_RDB_NOT_FOUND;
+}
+
+struct PartitionBlock {
+    uint32_t   pb_ID;                  /* Identifier 32 bit word : 'PART' */
+    uint32_t   pb_SummedLongs;         /* Size of the structure for checksums */
+    int32_t    pb_ChkSum;              /* Checksum of the structure */
+    uint32_t   pb_HostID;              /* SCSI Target ID of host, not really used */
+    uint32_t   pb_Next;                /* Block number of the next PartitionBlock */
+    uint32_t   pb_Flags;               /* Part Flags (NOMOUNT and BOOTABLE) */
+    uint32_t   pb_Reserved1[2];
+    uint32_t   pb_DevFlags;            /* Preferred flags for OpenDevice */
+    char       pb_DriveName[32];       /* Preferred DOS device name: BSTR form */
+    uint32_t   pb_Reserved2[15];
+    uint32_t   de_TableSize;           /* Size of Environment vector */
+       /* Size of the blocks in 32 bit words, usually 128 */
+    uint32_t   de_SizeBlock;
+    uint32_t   de_SecOrg;              /* Not used; must be 0 */
+    uint32_t   de_Surfaces;            /* Number of heads (surfaces) */
+       /* Disk sectors per block, used with SizeBlock, usually 1 */
+    uint32_t   de_SectorPerBlock;
+    uint32_t   de_BlocksPerTrack;      /* Blocks per track. drive specific */
+    uint32_t   de_Reserved;            /* DOS reserved blocks at start of partition. */
+    uint32_t   de_PreAlloc;            /* DOS reserved blocks at end of partition */
+    uint32_t   de_Interleave;          /* Not used, usually 0 */
+    uint32_t   de_LowCyl;              /* First cylinder of the partition */
+    uint32_t   de_HighCyl;             /* Last cylinder of the partition */
+    uint32_t   de_NumBuffers;          /* Initial # DOS of buffers.  */
+    uint32_t   de_BufMemType;          /* Type of mem to allocate for buffers */
+    uint32_t   de_MaxTransfer;         /* Max number of bytes to transfer at a time */
+    uint32_t   de_Mask;                /* Address Mask to block out certain memory */
+    int32_t    de_BootPri;             /* Boot priority for autoboot */
+    uint32_t   de_DosType;             /* Dostype of the file system */
+    uint32_t   de_Baud;                /* Baud rate for serial handler */
+    uint32_t   de_Control;             /* Control word for handler/filesystem */
+    uint32_t   de_BootBlocks;          /* Number of blocks containing boot code */
+    uint32_t   pb_EReserved[12];
+};
+
+#define PART(pos) ((struct PartitionBlock *)(pos))
+
+#define        PBFB_BOOTABLE   0       /* this partition is intended to be bootable */
+#define        PBFF_BOOTABLE   1L      /*   (expected directories and files exist) */
+#define        PBFB_NOMOUNT    1       /* do not mount this partition (e.g. manually */
+#define        PBFF_NOMOUNT    2L      /*   mounted, but space reserved here) */
+#define        PBFB_RAID       2       /* this partition is intended to be part of */
+#define        PBFF_RAID       4L      /*   a RAID array */
+#define        PBFB_LVM        3       /* this partition is intended to be part of */
+#define        PBFF_LVM        8L      /*   a LVM volume group */
+
+
+struct LinkedBlock {
+    uint32_t   lk_ID;                  /* Identifier 32 bit word */
+    uint32_t   lk_SummedLongs;         /* Size of the structure for checksums */
+    int32_t    lk_ChkSum;              /* Checksum of the structure */
+    uint32_t   pb_HostID;              /* SCSI Target ID of host, not really used */
+    uint32_t   lk_Next;                /* Block number of the next PartitionBlock */
+};
+struct Linked2Block {
+    uint32_t   lk2_ID;                 /* Identifier 32 bit word */
+    uint32_t   lk2_SummedLongs;                /* Size of the structure for checksums */
+    int32_t    lk2_ChkSum;             /* Checksum of the structure */
+    uint32_t   lk2_HostID;             /* SCSI Target ID of host, not really used */
+    uint32_t   lk2_Next;               /* Block number of the next PartitionBlock */
+    uint32_t   lk2_Reverved[13];
+    uint32_t   lk2_Linked;             /* Secondary linked list */
+};
+#define LINK_END       (uint32_t)0xffffffff
+#define LNK(pos)       ((struct LinkedBlock *)(pos))
+#define LNK2(pos)      ((struct Linked2Block *)(pos))
+
+
+static PedDiskType amiga_disk_type;
+
+static int
+amiga_probe (const PedDevice *dev)
+{
+       struct RigidDiskBlock *rdb;
+       uint32_t found;
+       PED_ASSERT(dev != NULL);
+
+       if ((rdb=RDSK(ped_malloc(dev->sector_size)))==NULL)
+               return 0;
+       found = _amiga_find_rdb (dev, rdb);
+       free (rdb);
+
+       return (found == AMIGA_RDB_NOT_FOUND ? 0 : 1);
+}
+
+static PedDisk*
+amiga_alloc (const PedDevice* dev)
+{
+       PedDisk *disk;
+       struct RigidDiskBlock *rdb;
+       PedSector cyl_size;
+       int highest_cylinder, highest_block;
+
+       PED_ASSERT(dev != NULL);
+       cyl_size = dev->hw_geom.sectors * dev->hw_geom.heads;
+
+       if (!(disk = _ped_disk_alloc (dev, &amiga_disk_type)))
+               return NULL;
+
+       if (!(disk->disk_specific = ped_malloc (disk->dev->sector_size))) {
+               free (disk);
+               return NULL;
+       }
+       rdb = disk->disk_specific;
+
+        /* Upon failed assertion this does leak.  That's fine, because
+           if the assertion fails, you have bigger problems than this leak. */
+        PED_ASSERT(sizeof(*rdb) <= disk->dev->sector_size);
+
+       memset(rdb, 0, disk->dev->sector_size);
+
+       rdb->rdb_ID = PED_CPU_TO_BE32 (IDNAME_RIGIDDISK);
+       rdb->rdb_SummedLongs = PED_CPU_TO_BE32 (64);
+       rdb->rdb_HostID = PED_CPU_TO_BE32 (0);
+       rdb->rdb_BlockBytes = PED_CPU_TO_BE32 (disk->dev->sector_size);
+       rdb->rdb_Flags = PED_CPU_TO_BE32 (0);
+
+       /* Block lists */
+       rdb->rdb_BadBlockList = PED_CPU_TO_BE32 (LINK_END);
+       rdb->rdb_PartitionList = PED_CPU_TO_BE32 (LINK_END);
+       rdb->rdb_FileSysHeaderList = PED_CPU_TO_BE32 (LINK_END);
+       rdb->rdb_DriveInit = PED_CPU_TO_BE32 (LINK_END);
+       rdb->rdb_BootBlockList = PED_CPU_TO_BE32 (LINK_END);
+
+       /* Physical drive characteristics */
+       rdb->rdb_Cylinders = PED_CPU_TO_BE32 (dev->hw_geom.cylinders);
+       rdb->rdb_Sectors = PED_CPU_TO_BE32 (dev->hw_geom.sectors);
+       rdb->rdb_Heads = PED_CPU_TO_BE32 (dev->hw_geom.heads);
+       rdb->rdb_Interleave = PED_CPU_TO_BE32 (0);
+       rdb->rdb_Park = PED_CPU_TO_BE32 (dev->hw_geom.cylinders);
+       rdb->rdb_WritePreComp = PED_CPU_TO_BE32 (dev->hw_geom.cylinders);
+       rdb->rdb_ReducedWrite = PED_CPU_TO_BE32 (dev->hw_geom.cylinders);
+       rdb->rdb_StepRate = PED_CPU_TO_BE32 (0);
+
+       highest_cylinder = 1 + MAX_RDB_BLOCK / cyl_size;
+       highest_block = highest_cylinder * cyl_size - 1;
+
+       /* Logical driver characteristics */
+       rdb->rdb_RDBBlocksLo = PED_CPU_TO_BE32 (0);
+       rdb->rdb_RDBBlocksHi = PED_CPU_TO_BE32 (highest_block);
+       rdb->rdb_LoCylinder = PED_CPU_TO_BE32 (highest_cylinder);
+       rdb->rdb_HiCylinder = PED_CPU_TO_BE32 (dev->hw_geom.cylinders -1);
+       rdb->rdb_CylBlocks = PED_CPU_TO_BE32 (cyl_size);
+       rdb->rdb_AutoParkSeconds = PED_CPU_TO_BE32 (0);
+       /* rdb_HighRDSKBlock will only be set when writing */
+       rdb->rdb_HighRDSKBlock = PED_CPU_TO_BE32 (0);
+
+       /* Driver identification */
+       _amiga_set_bstr("", rdb->rdb_DiskVendor, 8);
+       _amiga_set_bstr(dev->model, rdb->rdb_DiskProduct, 16);
+       _amiga_set_bstr("", rdb->rdb_DiskRevision, 4);
+       _amiga_set_bstr("", rdb->rdb_ControllerVendor, 8);
+       _amiga_set_bstr("", rdb->rdb_ControllerProduct, 16);
+       _amiga_set_bstr("", rdb->rdb_ControllerRevision, 4);
+
+       /* And calculate the checksum */
+       _amiga_calculate_checksum ((struct AmigaBlock *) rdb);
+
+       return disk;
+}
+
+static PedDisk*
+amiga_duplicate (const PedDisk* disk)
+{
+       PedDisk*        new_disk;
+       struct RigidDiskBlock * new_rdb;
+       struct RigidDiskBlock * old_rdb;
+       PED_ASSERT(disk != NULL);
+       PED_ASSERT(disk->dev != NULL);
+       PED_ASSERT(disk->disk_specific != NULL);
+
+       old_rdb = (struct RigidDiskBlock *) disk->disk_specific;
+
+       if (!(new_disk = ped_disk_new_fresh (disk->dev, &amiga_disk_type)))
+               return NULL;
+
+       new_rdb = (struct RigidDiskBlock *) new_disk->disk_specific;
+       memcpy (new_rdb, old_rdb, 256);
+       return new_disk;
+}
+
+static void
+amiga_free (PedDisk* disk)
+{
+       PED_ASSERT(disk != NULL);
+       PED_ASSERT(disk->disk_specific != NULL);
+
+       free (disk->disk_specific);
+       _ped_disk_free (disk);
+}
+
+static int
+_amiga_loop_check (uint32_t block, uint32_t * blocklist, uint32_t max)
+{
+       uint32_t i;
+
+       for (i = 0; i < max; i++)
+               if (block == blocklist[i]) {
+                       /* We are looping, let's stop.  */
+                       return 1;
+               }
+       blocklist[max] = block;
+       return 0;
+}
+
+/* We have already allocated a rdb, we are now reading it from the disk */
+static int
+amiga_read (PedDisk* disk)
+{
+       struct RigidDiskBlock *rdb;
+       struct PartitionBlock *partition;
+       uint32_t partblock;
+       uint32_t partlist[AMIGA_MAX_PARTITIONS];
+       PedSector cylblocks;
+       int i;
+
+       PED_ASSERT(disk != NULL);
+       PED_ASSERT(disk->dev != NULL);
+       PED_ASSERT(disk->dev->sector_size % PED_SECTOR_SIZE_DEFAULT == 0);
+       PED_ASSERT(disk->disk_specific != NULL);
+       rdb = RDSK(disk->disk_specific);
+
+       if (_amiga_find_rdb (disk->dev, rdb) == AMIGA_RDB_NOT_FOUND) {
+               ped_exception_throw(PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                       _("%s : Didn't find rdb block, should never happen."), __func__);
+               return 0;
+       }
+
+       /* Let's copy the rdb read geometry to the dev */
+       /* FIXME: should this go into disk->dev->bios_geom instead? */
+       disk->dev->hw_geom.cylinders = PED_BE32_TO_CPU (rdb->rdb_Cylinders);
+       disk->dev->hw_geom.heads = PED_BE32_TO_CPU (rdb->rdb_Heads);
+       disk->dev->hw_geom.sectors = PED_BE32_TO_CPU (rdb->rdb_Sectors);
+       cylblocks = (PedSector) PED_BE32_TO_CPU (rdb->rdb_Heads) *
+               (PedSector) PED_BE32_TO_CPU (rdb->rdb_Sectors);
+
+       /* Remove all partitions in the former in memory table */
+       ped_disk_delete_all (disk);
+
+       /* Let's allocate a partition block */
+       if (!(partition = ped_malloc (disk->dev->sector_size)))
+               return 0;
+
+       /* We initialize the hardblock free list to detect loops */
+       for (i = 0; i < AMIGA_MAX_PARTITIONS; i++) partlist[i] = LINK_END;
+
+       for (i = 1, partblock = PED_BE32_TO_CPU(rdb->rdb_PartitionList);
+               i < AMIGA_MAX_PARTITIONS && partblock != LINK_END;
+               i++, partblock = PED_BE32_TO_CPU(partition->pb_Next))
+       {
+               PedPartition *part;
+               PedSector start, end;
+
+               /* Let's look for loops in the partition table */
+               if (_amiga_loop_check(partblock, partlist, i)) {
+                       break;
+               }
+
+               /* Let's allocate and read a partition block to get its geometry*/
+               if (!_amiga_read_block (disk->dev, AMIGA(partition),
+                                       (PedSector)partblock, NULL)) {
+                       free(partition);
+                       return 0;
+               }
+
+               start = ((PedSector) PED_BE32_TO_CPU (partition->de_LowCyl))
+                       * cylblocks;
+               end = (((PedSector) PED_BE32_TO_CPU (partition->de_HighCyl))
+                       + 1) * cylblocks - 1;
+
+               /* We can now construct a new partition */
+               if (!(part = ped_partition_new (disk, PED_PARTITION_NORMAL,
+                                                NULL, start, end))) {
+                       free(partition);
+                       return 0;
+               }
+               /* And copy over the partition block */
+               memcpy(part->disk_specific, partition, 256);
+
+               part->num = i;
+               part->type = 0;
+               /* Let's probe what file system is present on the disk */
+               part->fs_type = ped_file_system_probe (&part->geom);
+
+               PedConstraint *constraint_exact
+                       = ped_constraint_exact (&part->geom);
+               if (constraint_exact == NULL)
+                       return 0;
+               bool ok = ped_disk_add_partition (disk, part, constraint_exact);
+               ped_constraint_destroy (constraint_exact);
+               if (!ok) {
+                       ped_partition_destroy(part);
+                       free(partition);
+                       return 0;
+               }
+       }
+       free(partition);
+       return 1;
+}
+
+static int
+_amiga_find_free_blocks(const PedDisk *disk, uint32_t *table,
+       struct LinkedBlock *block, uint32_t first, uint32_t type)
+{
+       PedSector next;
+
+       PED_ASSERT(disk != NULL);
+       PED_ASSERT(disk->dev != NULL);
+
+       for (next = first; next != LINK_END; next = PED_BE32_TO_CPU(block->lk_Next)) {
+               if (table[next] != IDNAME_FREE) {
+                       switch (ped_exception_throw(PED_EXCEPTION_ERROR,
+                               PED_EXCEPTION_FIX | PED_EXCEPTION_IGNORE | PED_EXCEPTION_CANCEL,
+                               _("%s : Loop detected at block %d."), __func__, next))
+                       {
+                               case PED_EXCEPTION_CANCEL :
+                                       return 0;
+                               case PED_EXCEPTION_FIX :
+                                       /* TODO : Need to add fixing code */
+                               case PED_EXCEPTION_IGNORE :
+                               case PED_EXCEPTION_UNHANDLED :
+                               default :
+                                       return 1;
+                       }
+               }
+
+               if (!_amiga_read_block (disk->dev, AMIGA(block), next, NULL)) {
+                       return 0;
+               }
+               if (PED_BE32_TO_CPU(block->lk_ID) != type) {
+                       switch (ped_exception_throw(PED_EXCEPTION_ERROR,
+                               PED_EXCEPTION_CANCEL,
+                               _("%s : The %s list seems bad at block %s."),
+                               __func__, _amiga_block_id(PED_BE32_TO_CPU(block->lk_ID)), next))
+                       {
+                               /* TODO : to more subtile things here */
+                               case PED_EXCEPTION_CANCEL :
+                               case PED_EXCEPTION_UNHANDLED :
+                               default :
+                                       return 0;
+                       }
+               }
+               table[next] = type;
+               if (PED_BE32_TO_CPU(block->lk_ID) == IDNAME_FILESYSHEADER) {
+                       if (_amiga_find_free_blocks(disk, table, block,
+                               PED_BE32_TO_CPU(LNK2(block)->lk2_Linked),
+                               IDNAME_LOADSEG) == 0) return 0;
+               }
+       }
+       return 1;
+}
+static uint32_t
+_amiga_next_free_block(uint32_t *table, uint32_t start, uint32_t type) {
+       int i;
+
+       for (i = start; table[i] != type && table[i] != IDNAME_FREE; i++);
+       return i;
+}
+static PedPartition *
+_amiga_next_real_partition(const PedDisk *disk, PedPartition *part) {
+       PedPartition *next;
+
+       for (next = ped_disk_next_partition (disk, part);
+               next != NULL && !ped_partition_is_active (next);
+               next = ped_disk_next_partition (disk, next));
+       return next;
+}
+#ifndef DISCOVER_ONLY
+static int
+amiga_write (const PedDisk* disk)
+{
+       struct RigidDiskBlock *rdb;
+       struct LinkedBlock *block;
+       struct PartitionBlock *partition;
+       PedPartition *part, *next_part;
+       PedSector cylblocks, first_hb, last_hb;
+       uint32_t * table;
+       uint32_t i;
+       uint32_t rdb_num, part_num, block_num, next_num;
+
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (disk->dev != NULL);
+       PED_ASSERT (disk->disk_specific != NULL);
+
+       if (!(rdb = ped_malloc (disk->dev->sector_size)))
+               return 0;
+
+       /* Let's read the rdb */
+       if ((rdb_num = _amiga_find_rdb (disk->dev, rdb)) == AMIGA_RDB_NOT_FOUND) {
+               rdb_num = 2;
+               size_t pb_size = sizeof (struct PartitionBlock);
+                /* Initialize only the part that won't be copied over
+                   with a partition block in amiga_read.  */
+               memset ((char *)(RDSK(disk->disk_specific)) + pb_size,
+                       0, PED_SECTOR_SIZE_DEFAULT - pb_size);
+       } else {
+               memcpy (RDSK(disk->disk_specific), rdb, disk->dev->sector_size);
+       }
+       free (rdb);
+       rdb = RDSK(disk->disk_specific);
+
+       cylblocks = (PedSector) PED_BE32_TO_CPU (rdb->rdb_Heads) *
+               (PedSector) PED_BE32_TO_CPU (rdb->rdb_Sectors);
+       first_hb = (PedSector) PED_BE32_TO_CPU (rdb->rdb_RDBBlocksLo);
+       last_hb = (PedSector) PED_BE32_TO_CPU (rdb->rdb_RDBBlocksHi);
+
+       /* Allocate a free block table and initialize it.
+          There must be room for at least RDB_NUM + 2 entries, since
+          the first RDB_NUM+1 entries get IDNAME_RIGIDDISK, and the
+          following one must have LINK_END to serve as sentinel.  */
+       size_t tab_size = 2 + MAX (last_hb - first_hb, rdb_num);
+       if (!(table = ped_malloc (tab_size * sizeof *table)))
+               return 0;
+
+       for (i = 0; i <= rdb_num; i++)
+               table[i] = IDNAME_RIGIDDISK;
+       for (     ; i < tab_size; i++)
+               table[i] = LINK_END;
+
+       /* Let's allocate a partition block */
+       if (!(block = ped_malloc (disk->dev->sector_size))) {
+               free (table);
+               return 0;
+       }
+
+       /* And fill the free block table */
+       if (_amiga_find_free_blocks(disk, table, block,
+               PED_BE32_TO_CPU (rdb->rdb_BadBlockList), IDNAME_BADBLOCK) == 0)
+       {
+               ped_exception_throw(PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_CANCEL,
+                       _("%s : Failed to list bad blocks."), __func__);
+               goto error_free_table;
+       }
+       if (_amiga_find_free_blocks(disk, table, block,
+               PED_BE32_TO_CPU (rdb->rdb_PartitionList), IDNAME_PARTITION) == 0)
+       {
+               ped_exception_throw(PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_CANCEL,
+                       _("%s : Failed to list partition blocks."), __func__);
+               goto error_free_table;
+       }
+       if (_amiga_find_free_blocks(disk, table, block,
+               PED_BE32_TO_CPU (rdb->rdb_FileSysHeaderList), IDNAME_FILESYSHEADER) == 0)
+       {
+               ped_exception_throw(PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_CANCEL,
+                       _("%s : Failed to list file system blocks."), __func__);
+               goto error_free_table;
+       }
+       if (_amiga_find_free_blocks(disk, table, block,
+               PED_BE32_TO_CPU (rdb->rdb_BootBlockList), IDNAME_BOOT) == 0)
+       {
+               ped_exception_throw(PED_EXCEPTION_ERROR,
+                       PED_EXCEPTION_CANCEL,
+                       _("%s : Failed to list boot blocks."), __func__);
+               goto error_free_table;
+       }
+
+       block_num = part_num = _amiga_next_free_block(table, rdb_num+1,
+                                                      IDNAME_PARTITION);
+       part = _amiga_next_real_partition(disk, NULL);
+       rdb->rdb_PartitionList = PED_CPU_TO_BE32(part ? part_num : LINK_END);
+       for (; part != NULL; part = next_part, block_num = next_num) {
+               PED_ASSERT(part->disk_specific != NULL);
+               PED_ASSERT(part->geom.start % cylblocks == 0);
+               PED_ASSERT((part->geom.end + 1) % cylblocks == 0);
+
+               next_part = _amiga_next_real_partition(disk, part);
+               next_num = _amiga_next_free_block(table, block_num+1, IDNAME_PARTITION);
+
+               partition = PART(part->disk_specific);
+               if (next_part == NULL)
+                       partition->pb_Next = PED_CPU_TO_BE32(LINK_END);
+               else
+                       partition->pb_Next = PED_CPU_TO_BE32(next_num);
+               partition->de_LowCyl = PED_CPU_TO_BE32(part->geom.start/cylblocks);
+               partition->de_HighCyl = PED_CPU_TO_BE32((part->geom.end+1)/cylblocks-1);
+               _amiga_calculate_checksum(AMIGA(partition));
+               if (!ped_device_write (disk->dev, (void*) partition, block_num, 1)) {
+                       ped_exception_throw(PED_EXCEPTION_ERROR,
+                               PED_EXCEPTION_CANCEL,
+                               _("Failed to write partition block at %d."),
+                               block_num);
+                       goto error_free_table;
+                       /* WARNING : If we fail here, we stop everything,
+                        * and the partition table is lost. A better
+                        * solution should be found, using the second
+                        * half of the hardblocks to not overwrite the
+                        * old partition table. It becomes problematic
+                        * if we use more than half of the hardblocks. */
+               }
+       }
+
+       if (block_num > PED_BE32_TO_CPU (rdb->rdb_HighRDSKBlock))
+               rdb->rdb_HighRDSKBlock = PED_CPU_TO_BE32(block_num);
+
+       _amiga_calculate_checksum(AMIGA(rdb));
+       if (!ped_device_write (disk->dev, (void*) disk->disk_specific, rdb_num, 1))
+               goto error_free_table;
+
+       free (table);
+       free (block);
+       return ped_device_sync (disk->dev);
+
+error_free_table:
+       free (table);
+       free (block);
+       return 0;
+}
+#endif /* !DISCOVER_ONLY */
+
+static PedPartition*
+amiga_partition_new (const PedDisk* disk, PedPartitionType part_type,
+                  const PedFileSystemType* fs_type,
+                  PedSector start, PedSector end)
+{
+       PedPartition *part;
+       PedDevice *dev;
+       PedSector cyl;
+       struct PartitionBlock *partition;
+       struct RigidDiskBlock *rdb;
+
+       PED_ASSERT(disk != NULL);
+       PED_ASSERT(disk->dev != NULL);
+       PED_ASSERT(disk->disk_specific != NULL);
+       dev = disk->dev;
+       cyl = (PedSector) (dev->hw_geom.sectors * dev->hw_geom.heads);
+       rdb = RDSK(disk->disk_specific);
+
+       if (!(part = _ped_partition_alloc (disk, part_type, fs_type, start, end)))
+               return NULL;
+
+       if (ped_partition_is_active (part)) {
+               if (!(part->disk_specific = ped_malloc (disk->dev->sector_size))) {
+                       free (part);
+                       return NULL;
+               }
+               partition = PART(part->disk_specific);
+               memset(partition, 0, sizeof(struct PartitionBlock));
+
+               partition->pb_ID = PED_CPU_TO_BE32(IDNAME_PARTITION);
+               partition->pb_SummedLongs = PED_CPU_TO_BE32(64);
+               partition->pb_HostID = rdb->rdb_HostID;
+               partition->pb_Flags = PED_CPU_TO_BE32(0);
+               /* TODO : use a scheme including the device name and the
+                * partition number, if it is possible */
+               _amiga_set_bstr("dhx", partition->pb_DriveName, 32);
+
+               partition->de_TableSize = PED_CPU_TO_BE32(19);
+               partition->de_SizeBlock = PED_CPU_TO_BE32(128);
+               partition->de_SecOrg = PED_CPU_TO_BE32(0);
+               partition->de_Surfaces = PED_CPU_TO_BE32(dev->hw_geom.heads);
+               partition->de_SectorPerBlock = PED_CPU_TO_BE32(1);
+               partition->de_BlocksPerTrack
+                       = PED_CPU_TO_BE32(dev->hw_geom.sectors);
+               partition->de_Reserved = PED_CPU_TO_BE32(2);
+               partition->de_PreAlloc = PED_CPU_TO_BE32(0);
+               partition->de_Interleave = PED_CPU_TO_BE32(0);
+               partition->de_LowCyl = PED_CPU_TO_BE32(start/cyl);
+               partition->de_HighCyl = PED_CPU_TO_BE32((end+1)/cyl-1);
+               partition->de_NumBuffers = PED_CPU_TO_BE32(30);
+               partition->de_BufMemType = PED_CPU_TO_BE32(0);
+               partition->de_MaxTransfer = PED_CPU_TO_BE32(0x7fffffff);
+               partition->de_Mask = PED_CPU_TO_BE32(0xffffffff);
+               partition->de_BootPri = PED_CPU_TO_BE32(0);
+               partition->de_DosType = PED_CPU_TO_BE32(0x4c4e5800);
+               partition->de_Baud = PED_CPU_TO_BE32(0);
+               partition->de_Control = PED_CPU_TO_BE32(0);
+               partition->de_BootBlocks = PED_CPU_TO_BE32(0);
+
+       } else {
+               part->disk_specific = NULL;
+       }
+       return part;
+}
+
+static PedPartition*
+amiga_partition_duplicate (const PedPartition* part)
+{
+       PedPartition *new_part;
+       struct PartitionBlock *new_amiga_part;
+       struct PartitionBlock *old_amiga_part;
+
+       PED_ASSERT(part != NULL);
+       PED_ASSERT(part->disk != NULL);
+       PED_ASSERT(part->disk_specific != NULL);
+       old_amiga_part = (struct PartitionBlock *) part->disk_specific;
+
+       new_part = ped_partition_new (part->disk, part->type,
+                                     part->fs_type, part->geom.start,
+                                     part->geom.end);
+       if (!new_part)
+               return NULL;
+
+       new_amiga_part = (struct PartitionBlock *) new_part->disk_specific;
+       memcpy (new_amiga_part, old_amiga_part, 256);
+
+       return new_part;
+}
+
+static void
+amiga_partition_destroy (PedPartition* part)
+{
+       PED_ASSERT (part != NULL);
+
+       if (ped_partition_is_active (part)) {
+               PED_ASSERT (part->disk_specific != NULL);
+               free (part->disk_specific);
+       }
+       _ped_partition_free (part);
+}
+
+static int
+amiga_partition_set_system (PedPartition* part,
+                            const PedFileSystemType* fs_type)
+{
+       struct PartitionBlock *partition;
+
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk_specific != NULL);
+       partition = PART(part->disk_specific);
+
+       part->fs_type = fs_type;
+
+       if (!fs_type)
+               partition->de_DosType = PED_CPU_TO_BE32(0x4c4e5800); /* 'LNX\0' */
+       else if (!strcmp (fs_type->name, "ext2"))
+               partition->de_DosType = PED_CPU_TO_BE32(0x4c4e5800); /* 'LNX\0' */
+       else if (!strcmp (fs_type->name, "ext3"))
+               partition->de_DosType = PED_CPU_TO_BE32(0x45585403); /* 'EXT\3' */
+       else if (is_linux_swap (fs_type->name))
+               partition->de_DosType = PED_CPU_TO_BE32(0x53575000); /* 'SWP\0' */
+       else if (!strcmp (fs_type->name, "fat16"))
+               partition->de_DosType = PED_CPU_TO_BE32(0x46415400); /* 'FAT\0' */
+       else if (!strcmp (fs_type->name, "fat32"))
+               partition->de_DosType = PED_CPU_TO_BE32(0x46415401); /* 'FAT\1'*/
+       else if (!strcmp (fs_type->name, "hfs"))
+               partition->de_DosType = PED_CPU_TO_BE32(0x48465300); /* 'HFS\0' */
+       else if (!strcmp (fs_type->name, "jfs"))
+               partition->de_DosType = PED_CPU_TO_BE32(0x4a465300); /* 'JFS\0' */
+       else if (!strcmp (fs_type->name, "ntfs"))
+               partition->de_DosType = PED_CPU_TO_BE32(0x4e544653); /* 'NTFS' */
+       else if (!strcmp (fs_type->name, "reiserfs"))
+               partition->de_DosType = PED_CPU_TO_BE32(0x52465300); /* 'RFS\0' */
+       else if (!strcmp (fs_type->name, "sun-ufs"))
+               partition->de_DosType = PED_CPU_TO_BE32(0x53554653); /* 'SUFS' */
+       else if (!strcmp (fs_type->name, "hp-ufs"))
+               partition->de_DosType = PED_CPU_TO_BE32(0x48554653); /* 'HUFS' */
+       else if (!strcmp (fs_type->name, "xfs"))
+               partition->de_DosType = PED_CPU_TO_BE32(0x58465300); /* 'XFS\0' */
+       else
+               partition->de_DosType = PED_CPU_TO_BE32(0x00000000); /* unknown */
+       return 1;
+}
+
+static int
+amiga_partition_set_flag (PedPartition* part, PedPartitionFlag flag, int state)
+{
+       struct PartitionBlock *partition;
+
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk_specific != NULL);
+
+       partition = PART(part->disk_specific);
+
+       switch (flag) {
+               case PED_PARTITION_BOOT:
+                       if (state) partition->pb_Flags |= PED_CPU_TO_BE32(PBFF_BOOTABLE);
+                       else partition->pb_Flags &= ~(PED_CPU_TO_BE32(PBFF_BOOTABLE));
+                       return 1;
+               case PED_PARTITION_HIDDEN:
+                       if (state) partition->pb_Flags |= PED_CPU_TO_BE32(PBFF_NOMOUNT);
+                       else partition->pb_Flags &= ~(PED_CPU_TO_BE32(PBFF_NOMOUNT));
+                       return 1;
+               case PED_PARTITION_RAID:
+                       if (state) partition->pb_Flags |= PED_CPU_TO_BE32(PBFF_RAID);
+                       else partition->pb_Flags &= ~(PED_CPU_TO_BE32(PBFF_RAID));
+                       return 1;
+               case PED_PARTITION_LVM:
+                       if (state) partition->pb_Flags |= PED_CPU_TO_BE32(PBFF_LVM);
+                       else partition->pb_Flags &= ~(PED_CPU_TO_BE32(PBFF_LVM));
+                       return 1;
+               default:
+                       return 0;
+       }
+}
+
+static int
+amiga_partition_get_flag (const PedPartition* part, PedPartitionFlag flag)
+{
+       struct PartitionBlock *partition;
+
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk_specific != NULL);
+
+       partition = PART(part->disk_specific);
+
+       switch (flag) {
+               case PED_PARTITION_BOOT:
+                       return (partition->pb_Flags & PED_CPU_TO_BE32(PBFF_BOOTABLE));
+               case PED_PARTITION_HIDDEN:
+                       return (partition->pb_Flags & PED_CPU_TO_BE32(PBFF_NOMOUNT));
+               case PED_PARTITION_RAID:
+                       return (partition->pb_Flags & PED_CPU_TO_BE32(PBFF_RAID));
+               case PED_PARTITION_LVM:
+                       return (partition->pb_Flags & PED_CPU_TO_BE32(PBFF_LVM));
+               default:
+                       return 0;
+       }
+}
+
+static int
+amiga_partition_is_flag_available (const PedPartition* part,
+                                PedPartitionFlag flag)
+{
+       switch (flag) {
+       case PED_PARTITION_BOOT:
+       case PED_PARTITION_HIDDEN:
+       case PED_PARTITION_RAID:
+       case PED_PARTITION_LVM:
+               return 1;
+       default:
+               return 0;
+       }
+}
+
+static void
+amiga_partition_set_name (PedPartition* part, const char* name)
+{
+       struct PartitionBlock *partition;
+
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk_specific != NULL);
+
+       partition = PART(part->disk_specific);
+       _amiga_set_bstr(name, partition->pb_DriveName, 32);
+}
+static const char*
+amiga_partition_get_name (const PedPartition* part)
+{
+       struct PartitionBlock *partition;
+
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk_specific != NULL);
+
+       partition = PART(part->disk_specific);
+
+       return _amiga_get_bstr(partition->pb_DriveName);
+}
+
+static PedAlignment*
+amiga_get_partition_alignment(const PedDisk *disk)
+{
+       PedSector cylinder_size =
+               disk->dev->hw_geom.sectors * disk->dev->hw_geom.heads;
+
+        return ped_alignment_new(0, cylinder_size);
+}
+
+static PedConstraint*
+_amiga_get_constraint (const PedDisk *disk)
+{
+       PedDevice *dev = disk->dev;
+       PedAlignment start_align, end_align;
+       PedGeometry max_geom;
+       PedSector cyl_size = dev->hw_geom.sectors * dev->hw_geom.heads;
+
+       if (!ped_alignment_init(&start_align, 0, cyl_size))
+               return NULL;
+       if (!ped_alignment_init(&end_align, -1, cyl_size))
+               return NULL;
+       if (!ped_geometry_init(&max_geom, dev, MAX_RDB_BLOCK + 1,
+                              dev->length - MAX_RDB_BLOCK - 1))
+               return NULL;
+
+       return ped_constraint_new (&start_align, &end_align,
+               &max_geom, &max_geom, 1, dev->length);
+}
+
+static int
+amiga_partition_align (PedPartition* part, const PedConstraint* constraint)
+{
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk != NULL);
+
+       if (_ped_partition_attempt_align (part, constraint,
+                                         _amiga_get_constraint (part->disk)))
+               return 1;
+
+#ifndef DISCOVER_ONLY
+       ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+               _("Unable to satisfy all constraints on the partition."));
+#endif
+       return 0;
+}
+
+static int
+amiga_partition_enumerate (PedPartition* part)
+{
+       int i;
+       PedPartition* p;
+
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk != NULL);
+
+       /* never change the partition numbers */
+       if (part->num != -1)
+               return 1;
+       for (i = 1; i <= AMIGA_MAX_PARTITIONS; i++) {
+               p = ped_disk_get_partition (part->disk, i);
+               if (!p) {
+                       part->num = i;
+                       return 1;
+               }
+       }
+
+       /* failed to allocate a number */
+#ifndef DISCOVER_ONLY
+       ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+               _("Unable to allocate a partition number."));
+#endif
+       return 0;
+}
+
+static int
+amiga_alloc_metadata (PedDisk* disk)
+{
+       PedPartition*           new_part;
+       PedConstraint*          constraint_any = NULL;
+
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (disk->dev != NULL);
+
+       constraint_any = ped_constraint_any (disk->dev);
+
+       /* Allocate space for the RDB */
+       new_part = ped_partition_new (disk, PED_PARTITION_METADATA, NULL,
+                                     0, MAX_RDB_BLOCK);
+       if (!new_part)
+               goto error;
+
+       if (!ped_disk_add_partition (disk, new_part, constraint_any)) {
+               ped_partition_destroy (new_part);
+               goto error;
+       }
+
+       ped_constraint_destroy (constraint_any);
+       return 1;
+error:
+       ped_constraint_destroy (constraint_any);
+       return 0;
+}
+
+static int
+amiga_get_max_primary_partition_count (const PedDisk* disk)
+{
+       return AMIGA_MAX_PARTITIONS;
+}
+
+static bool
+amiga_get_max_supported_partition_count (const PedDisk* disk, int *max_n)
+{
+       *max_n = AMIGA_MAX_PARTITIONS;
+       return true;
+}
+
+#include "pt-common.h"
+PT_define_limit_functions (amiga)
+
+static PedDiskOps amiga_disk_ops = {
+       clobber:                NULL,
+       write:                  NULL_IF_DISCOVER_ONLY (amiga_write),
+
+       partition_set_name:     amiga_partition_set_name,
+       partition_get_name:     amiga_partition_get_name,
+
+       get_partition_alignment: amiga_get_partition_alignment,
+
+       PT_op_function_initializers (amiga)
+};
+
+static PedDiskType amiga_disk_type = {
+       next:           NULL,
+       name:           "amiga",
+       ops:            &amiga_disk_ops,
+       features:       PED_DISK_TYPE_PARTITION_NAME
+};
+
+void
+ped_disk_amiga_init ()
+{
+       PED_ASSERT (sizeof (struct AmigaBlock) != 3);
+       PED_ASSERT (sizeof (struct RigidDiskBlock) != 64);
+       PED_ASSERT (sizeof (struct PartitionBlock) != 64);
+       PED_ASSERT (sizeof (struct LinkedBlock) != 5);
+       PED_ASSERT (sizeof (struct Linked2Block) != 18);
+
+       ped_disk_type_register (&amiga_disk_type);
+}
+
+void
+ped_disk_amiga_done ()
+{
+       ped_disk_type_unregister (&amiga_disk_type);
+}
diff --git a/libparted/labels/sun.c b/libparted/labels/sun.c
new file mode 100644 (file)
index 0000000..6148273
--- /dev/null
@@ -0,0 +1,909 @@
+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 2000-2001, 2005, 2007-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+    Contributor:  Ben Collins <bcollins@debian.org>
+*/
+
+#include <config.h>
+
+#include <parted/parted.h>
+#include <parted/debug.h>
+#include <parted/endian.h>
+#include <stdbool.h>
+
+#if ENABLE_NLS
+#  include <libintl.h>
+#  define _(String) dgettext (PACKAGE, String)
+#else
+#  define _(String) (String)
+#endif /* ENABLE_NLS */
+
+#include "misc.h"
+#include "pt-tools.h"
+#include "verify.h"
+
+/* Most of this came from util-linux's sun support, which was mostly done
+   by Jakub Jelinek.  */
+
+#define SUN_DISK_MAGIC         0xDABE  /* Disk magic number */
+#define SUN_DISK_MAXPARTITIONS 8
+
+#define SUN_VTOC_VERSION       1
+#define SUN_VTOC_SANITY                0x600DDEEE
+
+#define WHOLE_DISK_ID          0x05
+#define WHOLE_DISK_PART                2       /* as in 0, 1, 2 (3rd partition) */
+#define LINUX_SWAP_ID          0x82
+
+typedef struct _SunRawPartition     SunRawPartition;
+typedef struct _SunPartitionInfo    SunPartitionInfo;
+typedef struct _SunRawLabel         SunRawLabel;
+typedef struct _SunPartitionData    SunPartitionData;
+typedef struct _SunDiskData         SunDiskData;
+
+struct __attribute__ ((packed)) _SunRawPartition {
+       u_int32_t       start_cylinder; /* where the part starts... */
+       u_int32_t       num_sectors;    /* ...and it's length */
+};
+
+struct __attribute__ ((packed)) _SunPartitionInfo {
+       u_int8_t        spare1;
+       u_int8_t        id;             /* Partition type */
+       u_int8_t        spare2;
+       u_int8_t        flags;          /* Partition flags */
+};
+
+struct __attribute__ ((packed)) _SunRawLabel {
+       char            info[128];      /* Informative text string */
+       u_int32_t       version;        /* Layout version */
+       u_int8_t        volume[8];      /* Volume name */
+       u_int16_t       nparts;         /* Number of partitions */
+       SunPartitionInfo infos[SUN_DISK_MAXPARTITIONS];
+       u_int16_t       padding;        /* Alignment padding */
+       u_int32_t       bootinfo[3];    /* Info needed by mboot */
+       u_int32_t       sanity;         /* To verify vtoc sanity */
+       u_int32_t       reserved[10];   /* Free space */
+       u_int32_t       timestamp[8];   /* Partition timestamp */
+       u_int32_t       write_reinstruct; /* sectors to skip, writes */
+       u_int32_t       read_reinstruct; /* sectors to skip, reads */
+       u_int8_t        spare1[148];    /* Padding */
+       u_int16_t       rspeed;         /* Disk rotational speed */
+       u_int16_t       pcylcount;      /* Physical cylinder count */
+       u_int16_t       sparecyl;       /* extra sects per cylinder */
+       u_int8_t        spare2[4];      /* More magic... */
+       u_int16_t       ilfact;         /* Interleave factor */
+       u_int16_t       ncyl;           /* Data cylinder count */
+       u_int16_t       nacyl;          /* Alt. cylinder count */
+       u_int16_t       ntrks;          /* Tracks per cylinder */
+       u_int16_t       nsect;          /* Sectors per track */
+       u_int8_t        spare3[4];      /* Even more magic... */
+       SunRawPartition partitions[SUN_DISK_MAXPARTITIONS];
+       u_int16_t       magic;          /* Magic number */
+       u_int16_t       csum;           /* Label xor'd checksum */
+};
+
+struct _SunPartitionData {
+       u_int8_t                type;
+       int                     is_boot;
+       int                     is_root;
+       int                     is_lvm;
+       int                     is_raid;
+};
+
+struct _SunDiskData {
+       PedSector               length; /* This is based on cyl - alt-cyl */
+       SunRawLabel             raw_label;
+};
+
+static PedDiskType sun_disk_type;
+
+/* Checksum computation */
+static void
+sun_compute_checksum (SunRawLabel *label)
+{
+       u_int16_t *ush = (u_int16_t *)label;
+       u_int16_t csum = 0;
+
+        while(ush < (u_int16_t *)(&label->csum))
+                csum ^= *ush++;
+        label->csum = csum;
+}
+
+/* Checksum Verification */
+static int
+sun_verify_checksum (SunRawLabel const *label)
+{
+       u_int16_t *ush = ((u_int16_t *)(label + 1)) - 1;
+       u_int16_t csum = 0;
+
+       while (ush >= (u_int16_t *)label)
+               csum ^= *ush--;
+
+       return !csum;
+}
+
+static int
+sun_probe (const PedDevice *dev)
+{
+       PED_ASSERT (dev != NULL);
+
+       void *s0;
+       if (!ptt_read_sector (dev, 0, &s0))
+               return 0;
+       SunRawLabel const *label = (void const *) s0;
+
+       int ok = 1;
+       /* check magic */
+       if (PED_BE16_TO_CPU (label->magic) != SUN_DISK_MAGIC) {
+               ok = 0;
+       } else {
+#ifndef DISCOVER_ONLY
+               if (!sun_verify_checksum(label)) {
+                       ok = 0;
+                       ped_exception_throw (
+                               PED_EXCEPTION_ERROR,
+                               PED_EXCEPTION_CANCEL,
+                               _("Corrupted Sun disk label detected."));
+               }
+       }
+#endif
+
+       free (s0);
+       return ok;
+}
+
+static PedDisk*
+sun_alloc (const PedDevice* dev)
+{
+       PedDisk*        disk;
+       SunRawLabel*    label;
+       SunDiskData*    sun_specific;
+       const PedCHSGeometry*   bios_geom = &dev->bios_geom;
+       PedSector       cyl_size = bios_geom->sectors * bios_geom->heads;
+       PED_ASSERT (cyl_size != 0);
+
+        disk = _ped_disk_alloc (dev, &sun_disk_type);
+       if (!disk)
+               goto error;
+
+       disk->disk_specific = (SunDiskData*) ped_malloc (sizeof (SunDiskData));
+       if (!disk->disk_specific)
+               goto error_free_disk;
+       sun_specific = (SunDiskData*) disk->disk_specific;
+
+       PED_ASSERT (bios_geom->cylinders == (PedSector) (dev->length / cyl_size));
+       sun_specific->length = ped_round_down_to (dev->length, cyl_size);
+
+       label = &sun_specific->raw_label;
+       memset(label, 0, sizeof(SunRawLabel));
+
+       /* #gentoo-sparc people agree that nacyl = 0 is the best option */
+       label->magic    = PED_CPU_TO_BE16 (SUN_DISK_MAGIC);
+       label->nacyl    = 0;
+       label->pcylcount        = PED_CPU_TO_BE16 (bios_geom->cylinders);
+       label->rspeed   = PED_CPU_TO_BE16 (5400);
+       label->ilfact   = PED_CPU_TO_BE16 (1);
+       label->sparecyl = 0;
+       label->ntrks    = PED_CPU_TO_BE16 (bios_geom->heads);
+       label->nsect    = PED_CPU_TO_BE16 (bios_geom->sectors);
+       label->ncyl     = PED_CPU_TO_BE16 (dev->length / cyl_size);
+
+       label->sanity   = PED_CPU_TO_BE32 (SUN_VTOC_SANITY);
+       label->version  = PED_CPU_TO_BE32 (SUN_VTOC_VERSION);
+       label->nparts   = PED_CPU_TO_BE16 (SUN_DISK_MAXPARTITIONS);
+
+       /* Add a whole disk partition at a minimum */
+       label->infos[WHOLE_DISK_PART].id = WHOLE_DISK_ID;
+       label->partitions[WHOLE_DISK_PART].start_cylinder = 0;
+       label->partitions[WHOLE_DISK_PART].num_sectors =
+               PED_CPU_TO_BE32(sun_specific->length);
+
+       /* Now a neato string to describe this label */
+       snprintf(label->info, sizeof(label->info) - 1,
+                "GNU Parted Custom cyl %d alt %d hd %d sec %d",
+                PED_BE16_TO_CPU(label->ncyl),
+                PED_BE16_TO_CPU(label->nacyl),
+                PED_BE16_TO_CPU(label->ntrks),
+                PED_BE16_TO_CPU(label->nsect));
+
+       sun_compute_checksum(label);
+       return disk;
+
+error_free_disk:
+       _ped_disk_free (disk);
+error:
+       return NULL;
+}
+
+static PedDisk*
+sun_duplicate (const PedDisk* disk)
+{
+       PedDisk*        new_disk;
+       SunDiskData*    new_sun_data;
+       SunDiskData*    old_sun_data = (SunDiskData*) disk->disk_specific;
+
+       new_disk = ped_disk_new_fresh (disk->dev, &sun_disk_type);
+       if (!new_disk)
+               return NULL;
+
+       new_sun_data = (SunDiskData*) new_disk->disk_specific;
+       memcpy (new_sun_data, old_sun_data, sizeof (SunDiskData));
+       return new_disk;
+}
+
+static void
+sun_free (PedDisk *disk)
+{
+       free (disk->disk_specific);
+       _ped_disk_free (disk);
+}
+
+static int
+_check_geometry_sanity (PedDisk* disk, SunRawLabel* label)
+{
+       PedDevice*      dev = disk->dev;
+
+       if (PED_BE16_TO_CPU(label->nsect) == dev->hw_geom.sectors &&
+           PED_BE16_TO_CPU(label->ntrks) == dev->hw_geom.heads)
+               dev->bios_geom = dev->hw_geom;
+
+       if (!!PED_BE16_TO_CPU(label->pcylcount)
+           * !!PED_BE16_TO_CPU(label->ntrks)
+           * !!PED_BE16_TO_CPU(label->nsect) == 0)
+               return 0;
+
+       if (PED_BE16_TO_CPU(label->nsect) != dev->bios_geom.sectors ||
+           PED_BE16_TO_CPU(label->ntrks) != dev->bios_geom.heads) {
+#ifndef DISCOVER_ONLY
+               if (ped_exception_throw (
+                               PED_EXCEPTION_WARNING,
+                               PED_EXCEPTION_IGNORE_CANCEL,
+                               _("The disk CHS geometry (%d,%d,%d) reported "
+                                 "by the operating system does not match "
+                                 "the geometry stored on the disk label "
+                                 "(%d,%d,%d)."),
+                               dev->bios_geom.cylinders,
+                               dev->bios_geom.heads,
+                               dev->bios_geom.sectors,
+                               PED_BE16_TO_CPU(label->pcylcount),
+                               PED_BE16_TO_CPU(label->ntrks),
+                               PED_BE16_TO_CPU(label->nsect))
+                       == PED_EXCEPTION_CANCEL)
+                       return 0;
+#endif
+               dev->bios_geom.sectors = PED_BE16_TO_CPU(label->nsect);
+               dev->bios_geom.heads = PED_BE16_TO_CPU(label->ntrks);
+               dev->bios_geom.cylinders = PED_BE16_TO_CPU(label->pcylcount);
+
+               if (dev->bios_geom.sectors * dev->bios_geom.heads
+                               * dev->bios_geom.cylinders > dev->length) {
+                       if (ped_exception_throw (
+                               PED_EXCEPTION_WARNING,
+                               PED_EXCEPTION_IGNORE_CANCEL,
+                               _("The disk label describes a disk bigger than "
+                                 "%s."),
+                               dev->path)
+                               != PED_EXCEPTION_IGNORE)
+                               return 0;
+               }
+       }
+       return 1;
+}
+
+static int
+sun_read (PedDisk* disk)
+{
+       SunPartitionData* sun_data;
+       SunDiskData* disk_data;
+       int i;
+       PedPartition* part;
+       PedSector end, start, block;
+
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (disk->dev != NULL);
+       PED_ASSERT (disk->disk_specific != NULL);
+
+       disk_data = (SunDiskData*) disk->disk_specific;
+
+       ped_disk_delete_all (disk);
+
+       void *s0;
+       if (!ptt_read_sector (disk->dev, 0, &s0))
+               goto error;
+
+       SunRawLabel *label = &disk_data->raw_label;
+       verify (sizeof (*label) == 512);
+       memcpy (label, s0, sizeof (*label));
+       free (s0);
+
+       if (!_check_geometry_sanity (disk, label))
+               goto error;
+
+       block = disk->dev->bios_geom.sectors * disk->dev->bios_geom.heads;
+       disk_data->length = block * disk->dev->bios_geom.cylinders;
+
+       for (i = 0; i < SUN_DISK_MAXPARTITIONS; i++) {
+               if (!PED_BE32_TO_CPU(label->partitions[i].num_sectors))
+                       continue;
+               if (!label->infos[i].id)
+                       continue;
+               if (label->infos[i].id == WHOLE_DISK_ID)
+                       continue;
+
+               start = PED_BE32_TO_CPU(label->partitions[i].start_cylinder)
+                                   * block;
+               end = start
+                     + PED_BE32_TO_CPU(label->partitions[i].num_sectors) - 1;
+
+               part = ped_partition_new (disk, PED_PARTITION_NORMAL, NULL,
+                                          start, end);
+               if (!part)
+                       goto error;
+
+               sun_data = part->disk_specific;
+               sun_data->type = label->infos[i].id;
+               sun_data->is_boot = sun_data->type == 0x1;
+               sun_data->is_root = sun_data->type == 0x2;
+               sun_data->is_lvm = sun_data->type == 0x8e;
+               sun_data->is_raid = sun_data->type == 0xfd;
+
+               part->num = i + 1;
+               part->fs_type = ped_file_system_probe (&part->geom);
+
+               PedConstraint *constraint_exact
+                       = ped_constraint_exact (&part->geom);
+               if (constraint_exact == NULL)
+                       goto error;
+               bool ok = ped_disk_add_partition (disk, part, constraint_exact);
+               ped_constraint_destroy (constraint_exact);
+               if (!ok)
+                       goto error;
+       }
+
+       return 1;
+
+ error:
+       return 0;
+}
+
+#ifndef DISCOVER_ONLY
+static int
+_use_old_info (const PedDisk* disk, const void *sector_0)
+{
+       SunRawLabel const *old_label = sector_0;
+
+       if (old_label->info[0]
+           && PED_BE16_TO_CPU (old_label->magic) == SUN_DISK_MAGIC) {
+               SunDiskData *sun_specific = disk->disk_specific;
+               memcpy (&sun_specific->raw_label, sector_0,
+                        sizeof (sun_specific->raw_label));
+                verify (sizeof (sun_specific->raw_label) == 512);
+       }
+
+       return 1;
+}
+
+static int
+sun_write (const PedDisk* disk)
+{
+       SunRawLabel*            label;
+       SunPartitionData*       sun_data;
+       SunDiskData*            disk_data;
+       PedPartition*           part;
+       int                     i;
+
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (disk->dev != NULL);
+
+       void *s0;
+       if (!ptt_read_sector (disk->dev, 0, &s0))
+               return 0;
+
+       /* Calling _use_old_info here in sun_write
+          above seems wrong, because it modifies *DISK.
+          FIXME: maybe later.  */
+       if (!_use_old_info (disk, s0)) {
+                free (s0);
+               return 0;
+        }
+
+       disk_data = (SunDiskData*) disk->disk_specific;
+       label = &disk_data->raw_label;
+
+       memset (label->partitions, 0,
+               sizeof (SunRawPartition) * SUN_DISK_MAXPARTITIONS);
+       memset (label->infos, 0,
+               sizeof (SunPartitionInfo) * SUN_DISK_MAXPARTITIONS);
+
+       for (i = 0; i < SUN_DISK_MAXPARTITIONS; i++) {
+               part = ped_disk_get_partition (disk, i + 1);
+
+               if (!part && i == WHOLE_DISK_PART) {
+                       /* Ok, nothing explicitly in the whole disk
+                          partition, so let's put it there for safety
+                          sake.  */
+
+                       label->infos[i].id = WHOLE_DISK_ID;
+                       label->partitions[i].start_cylinder = 0;
+                       label->partitions[i].num_sectors =
+                               PED_CPU_TO_BE32(disk_data->length);
+                       continue;
+               }
+               if (!part)
+                       continue;
+
+               sun_data = part->disk_specific;
+               label->infos[i].id = sun_data->type;
+               label->partitions[i].start_cylinder
+                       = PED_CPU_TO_BE32 (part->geom.start
+                               / (disk->dev->bios_geom.sectors
+                                       * disk->dev->bios_geom.heads));
+               label->partitions[i].num_sectors
+                       = PED_CPU_TO_BE32 (part->geom.end
+                                          - part->geom.start + 1);
+       }
+
+       /* We assume the harddrive is always right, and that the label may
+          be wrong. I don't think this will cause any problems, since the
+          cylinder count is always enforced by our alignment, and we
+          sanity checked the sectors/heads when we detected the device. The
+          worst that could happen here is that the drive seems bigger or
+          smaller than it really is, but we'll have that problem even if we
+          don't do this.  */
+
+       if (disk->dev->bios_geom.cylinders > 65536) {
+               ped_exception_throw (
+                       PED_EXCEPTION_WARNING,
+                       PED_EXCEPTION_IGNORE,
+                       _("The disk has %d cylinders, which is greater than "
+                         "the maximum of 65536."),
+                       disk->dev->bios_geom.cylinders);
+       }
+
+       label->pcylcount = PED_CPU_TO_BE16 (disk->dev->bios_geom.cylinders);
+       label->ncyl = PED_CPU_TO_BE16 (disk->dev->bios_geom.cylinders
+                       - PED_BE16_TO_CPU (label->nacyl));
+
+       sun_compute_checksum (label);
+
+        verify (sizeof *label == 512);
+        memcpy (s0, label, sizeof *label);
+       int write_ok = ped_device_write (disk->dev, s0, 0, 1);
+       free (s0);
+
+       if (write_ok)
+               return ped_device_sync (disk->dev);
+
+       return 0;
+}
+#endif /* !DISCOVER_ONLY */
+
+static PedPartition*
+sun_partition_new (const PedDisk* disk, PedPartitionType part_type,
+                  const PedFileSystemType* fs_type,
+                  PedSector start, PedSector end)
+{
+       PedPartition*           part;
+       SunPartitionData*       sun_data;
+
+       part = _ped_partition_alloc (disk, part_type, fs_type, start, end);
+       if (!part)
+               goto error;
+
+       if (ped_partition_is_active (part)) {
+               part->disk_specific
+                       = sun_data = ped_malloc (sizeof (SunPartitionData));
+               if (!sun_data)
+                       goto error_free_part;
+               sun_data->type = 0;
+               sun_data->is_boot = 0;
+               sun_data->is_root = 0;
+               sun_data->is_lvm = 0;
+               sun_data->is_raid = 0;
+       } else {
+               part->disk_specific = NULL;
+       }
+
+       return part;
+
+error_free_part:
+       free (part);
+error:
+       return NULL;
+}
+
+static PedPartition*
+sun_partition_duplicate (const PedPartition* part)
+{
+       PedPartition*           new_part;
+       SunPartitionData*       new_sun_data;
+       SunPartitionData*       old_sun_data;
+
+       new_part = ped_partition_new (part->disk, part->type,
+                                     part->fs_type, part->geom.start,
+                                     part->geom.end);
+       if (!new_part)
+               return NULL;
+       new_part->num = part->num;
+
+       old_sun_data = (SunPartitionData*) part->disk_specific;
+       new_sun_data = (SunPartitionData*) new_part->disk_specific;
+       new_sun_data->type = old_sun_data->type;
+       new_sun_data->is_boot = old_sun_data->is_boot;
+       new_sun_data->is_root = old_sun_data->is_root;
+       new_sun_data->is_lvm = old_sun_data->is_lvm;
+       new_sun_data->is_raid = old_sun_data->is_raid;
+       return new_part;
+}
+
+static void
+sun_partition_destroy (PedPartition* part)
+{
+       PED_ASSERT (part != NULL);
+
+       if (ped_partition_is_active (part))
+               free (part->disk_specific);
+       free (part);
+}
+
+static int
+sun_partition_set_system (PedPartition* part, const PedFileSystemType* fs_type)
+{
+       SunPartitionData*               sun_data = part->disk_specific;
+
+       part->fs_type = fs_type;
+
+       if (sun_data->is_boot) {
+               sun_data->type = 0x1;
+               return 1;
+       }
+       if (sun_data->is_root) {
+               sun_data->type = 0x2;
+               return 1;
+       }
+       if (sun_data->is_lvm) {
+               sun_data->type = 0x8e;
+               return 1;
+       }
+       if (sun_data->is_raid) {
+               sun_data->type = 0xfd;
+               return 1;
+       }
+
+       sun_data->type = 0x83;
+       if (fs_type) {
+               if (is_linux_swap (fs_type->name))
+                       sun_data->type = 0x82;
+               else if (!strcmp (fs_type->name, "ufs"))
+                       sun_data->type = 0x6;
+       }
+
+       return 1;
+}
+
+static int
+sun_partition_set_flag (PedPartition* part, PedPartitionFlag flag, int state)
+{
+       SunPartitionData*               sun_data;
+
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk_specific != NULL);
+       PED_ASSERT (ped_partition_is_flag_available (part, flag));
+
+       sun_data = part->disk_specific;
+
+       switch (flag) {
+               case PED_PARTITION_BOOT:
+                       sun_data->is_boot = state;
+                       if (state) {
+                               sun_data->is_lvm = 0;
+                               sun_data->is_raid = 0;
+                               sun_data->is_root = 0;
+                       }
+                       return ped_partition_set_system (part, part->fs_type);
+
+               case PED_PARTITION_ROOT:
+                       sun_data->is_root = state;
+                       if (state) {
+                               sun_data->is_boot = 0;
+                               sun_data->is_lvm = 0;
+                               sun_data->is_raid = 0;
+                       }
+                       return ped_partition_set_system (part, part->fs_type);
+
+               case PED_PARTITION_LVM:
+                       sun_data->is_lvm = state;
+                       if (state) {
+                               sun_data->is_boot = 0;
+                               sun_data->is_raid = 0;
+                               sun_data->is_root = 0;
+                       }
+                       return ped_partition_set_system (part, part->fs_type);
+
+               case PED_PARTITION_RAID:
+                       sun_data->is_raid = state;
+                       if (state) {
+                               sun_data->is_boot = 0;
+                               sun_data->is_lvm = 0;
+                               sun_data->is_root = 0;
+                       }
+                       return ped_partition_set_system (part, part->fs_type);
+
+               default:
+                       return 0;
+       }
+}
+
+
+static int
+sun_partition_get_flag (const PedPartition* part, PedPartitionFlag flag)
+{
+       SunPartitionData*       sun_data;
+
+       PED_ASSERT (part != NULL);
+       PED_ASSERT (part->disk_specific != NULL);
+
+       sun_data = part->disk_specific;
+
+       switch (flag) {
+               case PED_PARTITION_BOOT:
+                       return sun_data->is_boot;
+               case PED_PARTITION_ROOT:
+                       return sun_data->is_root;
+               case PED_PARTITION_LVM:
+                       return sun_data->is_lvm;
+               case PED_PARTITION_RAID:
+                       return sun_data->is_raid;
+
+               default:
+                       return 0;
+       }
+}
+
+
+static int
+sun_partition_is_flag_available (const PedPartition* part,
+                                PedPartitionFlag flag)
+{
+       switch (flag) {
+               case PED_PARTITION_BOOT:
+               case PED_PARTITION_ROOT:
+               case PED_PARTITION_LVM:
+               case PED_PARTITION_RAID:
+                       return 1;
+
+               default:
+                       return 0;
+       }
+}
+
+static bool
+sun_get_max_supported_partition_count (const PedDisk* disk, int *max_n)
+{
+       *max_n = SUN_DISK_MAXPARTITIONS;
+       return true;
+}
+
+static int
+sun_get_max_primary_partition_count (const PedDisk* disk)
+{
+       return SUN_DISK_MAXPARTITIONS;
+}
+
+static PedAlignment*
+sun_get_partition_alignment(const PedDisk *disk)
+{
+       PedSector block =
+               disk->dev->hw_geom.sectors * disk->dev->hw_geom.heads;
+
+        return ped_alignment_new(0, block);
+}
+
+static PedConstraint*
+_get_strict_constraint (PedDisk* disk)
+{
+       PedDevice*      dev = disk->dev;
+        PedAlignment    start_align;
+        PedAlignment    end_align;
+        PedGeometry     max_geom;
+       SunDiskData*    disk_data = disk->disk_specific;
+       PedSector       block = dev->bios_geom.sectors * dev->bios_geom.heads;
+
+        if (!ped_alignment_init (&start_align, 0, block))
+                return NULL;
+        if (!ped_alignment_init (&end_align, -1, block))
+                return NULL;
+       if (!ped_geometry_init (&max_geom, dev, 0, disk_data->length))
+               return NULL;
+
+        return ped_constraint_new (&start_align, &end_align, &max_geom,
+                                   &max_geom, 1, dev->length);
+}
+
+static PedConstraint*
+_get_lax_constraint (PedDisk* disk)
+{
+       PedDevice*      dev = disk->dev;
+        PedAlignment    start_align;
+        PedGeometry     max_geom;
+       SunDiskData*    disk_data = disk->disk_specific;
+       PedSector       block = dev->bios_geom.sectors * dev->bios_geom.heads;
+
+        if (!ped_alignment_init (&start_align, 0, block))
+                return NULL;
+       if (!ped_geometry_init (&max_geom, dev, 0, disk_data->length))
+               return NULL;
+
+        return ped_constraint_new (&start_align, ped_alignment_any, &max_geom,
+                                   &max_geom, 1, dev->length);
+}
+
+/* _get_strict_constraint() will align the partition to the end of the cylinder.
+ * This isn't required, but since partitions must start at the start of the
+ * cylinder, space between the end of a partition and the end of a cylinder
+ * is unusable, so there's no point wasting space!
+ *     However, if they really insist (via constraint)... which they will
+ * if they're reading a weird table of the disk... then we allow the end to
+ * be anywhere, with _get_lax_constraint()
+ */
+static int
+sun_partition_align (PedPartition* part, const PedConstraint* constraint)
+{
+        PED_ASSERT (part != NULL);
+
+        if (_ped_partition_attempt_align (part, constraint,
+                                          _get_strict_constraint (part->disk)))
+                return 1;
+        if (_ped_partition_attempt_align (part, constraint,
+                                          _get_lax_constraint (part->disk)))
+                return 1;
+
+#ifndef DISCOVER_ONLY
+       ped_exception_throw (
+               PED_EXCEPTION_ERROR,
+               PED_EXCEPTION_CANCEL,
+               _("Unable to satisfy all constraints on the partition."));
+#endif
+       return 0;
+}
+
+static int
+sun_partition_enumerate (PedPartition* part)
+{
+       int i;
+       PedPartition* p;
+
+       /* never change the partition numbers */
+       if (part->num != -1)
+               return 1;
+       for (i = 1; i <= SUN_DISK_MAXPARTITIONS; i++) {
+               /* skip the Whole Disk partition for now */
+               if (i == WHOLE_DISK_PART + 1)
+                       continue;
+               p = ped_disk_get_partition (part->disk, i);
+               if (!p) {
+                       part->num = i;
+                       return 1;
+               }
+       }
+
+#ifndef DISCOVER_ONLY
+       /* Ok, now allocate the Whole disk if it isn't already */
+       p = ped_disk_get_partition (part->disk, WHOLE_DISK_PART + 1);
+       if (!p) {
+               int j = ped_exception_throw (
+                               PED_EXCEPTION_WARNING,
+                               PED_EXCEPTION_IGNORE_CANCEL,
+                               _("The Whole Disk partition is the only "
+                                 "available one left.  Generally, it is not a "
+                                 "good idea to overwrite this partition with "
+                                 "a real one.  Solaris may not be able to "
+                                 "boot without it, and SILO (the sparc boot "
+                                 "loader) appreciates it as well."));
+               if (j == PED_EXCEPTION_IGNORE) {
+                       /* bad bad bad...you will suffer your own fate */
+                       part->num = WHOLE_DISK_PART + 1;
+                       return 1;
+               }
+       }
+
+       /* failed to allocate a number, this means we are full */
+       ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                            _("Sun disk label is full."));
+#endif
+       return 0;
+}
+
+static int
+sun_alloc_metadata (PedDisk* disk)
+{
+       PedPartition*   new_part;
+       SunDiskData*    disk_data;
+       PedConstraint*  constraint_any;
+
+       PED_ASSERT (disk != NULL);
+       PED_ASSERT (disk->disk_specific != NULL);
+       PED_ASSERT (disk->dev != NULL);
+
+       constraint_any = ped_constraint_any (disk->dev);
+
+       /* Sun disk label does not need to allocate a sector. The disk
+          label is contained within the first 512 bytes, which should not
+          be overwritten by any boot loader or superblock. It is safe for
+          most partitions to start at sector 0. We do however, allocate
+          the space used by alt-cyl's, since we cannot use those. Put them
+          at the end of the disk.  */
+
+       disk_data = disk->disk_specific;
+
+       if (disk->dev->length <= 0 ||
+           disk_data->length <= 0 ||
+           disk->dev->length == disk_data->length)
+               goto error;
+
+       new_part = ped_partition_new (disk, PED_PARTITION_METADATA, NULL,
+                       disk_data->length, disk->dev->length - 1);
+       if (!new_part)
+               goto error;
+
+       if (!ped_disk_add_partition (disk, new_part, constraint_any)) {
+               ped_partition_destroy (new_part);
+               goto error;
+       }
+
+       ped_constraint_destroy (constraint_any);
+       return 1;
+error:
+       ped_constraint_destroy (constraint_any);
+       return 0;
+}
+
+#include "pt-common.h"
+PT_define_limit_functions (sun)
+
+static PedDiskOps sun_disk_ops = {
+       clobber:                NULL,
+       write:                  NULL_IF_DISCOVER_ONLY (sun_write),
+
+       get_partition_alignment: sun_get_partition_alignment,
+
+       partition_set_name:             NULL,
+       partition_get_name:             NULL,
+
+       PT_op_function_initializers (sun)
+};
+
+static PedDiskType sun_disk_type = {
+       next:           NULL,
+       name:           "sun",
+       ops:            &sun_disk_ops,
+       features:       0
+};
+
+void
+ped_disk_sun_init ()
+{
+       PED_ASSERT (sizeof (SunRawLabel) == 512);
+       ped_disk_type_register (&sun_disk_type);
+}
+
+void
+ped_disk_sun_done ()
+{
+       ped_disk_type_unregister (&sun_disk_type);
+}
diff --git a/libparted/labels/vtoc.c b/libparted/labels/vtoc.c
new file mode 100644 (file)
index 0000000..cf2990e
--- /dev/null
@@ -0,0 +1,1208 @@
+#include <config.h>
+#include <parted/vtoc.h>
+
+#ifdef DEBUG_DASD
+#define PDEBUG fprintf(stderr, "%s:%d:%s\n", \
+                       __FILE__,                              \
+                       __LINE__,                              \
+                       __PRETTY_FUNCTION__);
+#else
+#define PDEBUG
+#endif
+
+#include <parted/parted.h>
+
+#include <libintl.h>
+#if ENABLE_NLS
+#  define _(String) dgettext (PACKAGE, String)
+#else
+#  define _(String) (String)
+#endif /* ENABLE_NLS */
+
+static const unsigned char EBCtoASC[256] =
+{
+/* 0x00  NUL   SOH   STX   ETX  *SEL    HT  *RNL   DEL */
+       0x00, 0x01, 0x02, 0x03, 0x07, 0x09, 0x07, 0x7F,
+/* 0x08  -GE  -SPS  -RPT    VT    FF    CR    SO    SI */
+       0x07, 0x07, 0x07, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
+/* 0x10  DLE   DC1   DC2   DC3  -RES   -NL    BS  -POC
+                                -ENP  ->LF             */
+       0x10, 0x11, 0x12, 0x13, 0x07, 0x0A, 0x08, 0x07,
+/* 0x18  CAN    EM  -UBS  -CU1  -IFS  -IGS  -IRS  -ITB
+                                                  -IUS */
+       0x18, 0x19, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
+/* 0x20  -DS  -SOS    FS  -WUS  -BYP    LF   ETB   ESC
+                                -INP                   */
+       0x07, 0x07, 0x1C, 0x07, 0x07, 0x0A, 0x17, 0x1B,
+/* 0x28  -SA  -SFE   -SM  -CSP  -MFA   ENQ   ACK   BEL
+                     -SW                               */
+       0x07, 0x07, 0x07, 0x07, 0x07, 0x05, 0x06, 0x07,
+/* 0x30 ----  ----   SYN   -IR   -PP  -TRN  -NBS   EOT */
+       0x07, 0x07, 0x16, 0x07, 0x07, 0x07, 0x07, 0x04,
+/* 0x38 -SBS   -IT  -RFF  -CU3   DC4   NAK  ----   SUB */
+       0x07, 0x07, 0x07, 0x07, 0x14, 0x15, 0x07, 0x1A,
+/* 0x40   SP   RSP           ä              ----       */
+       0x20, 0xFF, 0x83, 0x84, 0x85, 0xA0, 0x07, 0x86,
+/* 0x48                      .     <     (     +     | */
+       0x87, 0xA4, 0x9B, 0x2E, 0x3C, 0x28, 0x2B, 0x7C,
+/* 0x50    &                                      ---- */
+       0x26, 0x82, 0x88, 0x89, 0x8A, 0xA1, 0x8C, 0x07,
+/* 0x58          ß     !     $     *     )     ;       */
+       0x8D, 0xE1, 0x21, 0x24, 0x2A, 0x29, 0x3B, 0xAA,
+/* 0x60    -     /  ----     Ä  ----  ----  ----       */
+       0x2D, 0x2F, 0x07, 0x8E, 0x07, 0x07, 0x07, 0x8F,
+/* 0x68             ----     ,     %     _     >     ? */
+       0x80, 0xA5, 0x07, 0x2C, 0x25, 0x5F, 0x3E, 0x3F,
+/* 0x70  ---        ----  ----  ----  ----  ----  ---- */
+       0x07, 0x90, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
+/* 0x78    *     `     :     #     @     '     =     " */
+       0x70, 0x60, 0x3A, 0x23, 0x40, 0x27, 0x3D, 0x22,
+/* 0x80    *     a     b     c     d     e     f     g */
+       0x07, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+/* 0x88    h     i              ----  ----  ----       */
+       0x68, 0x69, 0xAE, 0xAF, 0x07, 0x07, 0x07, 0xF1,
+/* 0x90    °     j     k     l     m     n     o     p */
+       0xF8, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70,
+/* 0x98    q     r                    ----        ---- */
+       0x71, 0x72, 0xA6, 0xA7, 0x91, 0x07, 0x92, 0x07,
+/* 0xA0          ~     s     t     u     v     w     x */
+       0xE6, 0x7E, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+/* 0xA8    y     z              ----  ----  ----  ---- */
+       0x79, 0x7A, 0xAD, 0xAB, 0x07, 0x07, 0x07, 0x07,
+/* 0xB0    ^                    ----     §  ----       */
+       0x5E, 0x9C, 0x9D, 0xFA, 0x07, 0x07, 0x07, 0xAC,
+/* 0xB8       ----     [     ]  ----  ----  ----  ---- */
+       0xAB, 0x07, 0x5B, 0x5D, 0x07, 0x07, 0x07, 0x07,
+/* 0xC0    {     A     B     C     D     E     F     G */
+       0x7B, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+/* 0xC8    H     I  ----           ö              ---- */
+       0x48, 0x49, 0x07, 0x93, 0x94, 0x95, 0xA2, 0x07,
+/* 0xD0    }     J     K     L     M     N     O     P */
+       0x7D, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50,
+/* 0xD8    Q     R  ----           ü                   */
+       0x51, 0x52, 0x07, 0x96, 0x81, 0x97, 0xA3, 0x98,
+/* 0xE0    \           S     T     U     V     W     X */
+       0x5C, 0xF6, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
+/* 0xE8    Y     Z        ----     Ö  ----  ----  ---- */
+       0x59, 0x5A, 0xFD, 0x07, 0x99, 0x07, 0x07, 0x07,
+/* 0xF0    0     1     2     3     4     5     6     7 */
+       0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+/* 0xF8    8     9  ----  ----     Ü  ----  ----  ---- */
+       0x38, 0x39, 0x07, 0x07, 0x9A, 0x07, 0x07, 0x07
+};
+
+static const unsigned char ASCtoEBC[256] =
+{
+    /*00  NL    SH    SX    EX    ET    NQ    AK    BL */
+       0x00, 0x01, 0x02, 0x03, 0x37, 0x2D, 0x2E, 0x2F,
+    /*08  BS    HT    LF    VT    FF    CR    SO    SI */
+       0x16, 0x05, 0x15, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
+    /*10  DL    D1    D2    D3    D4    NK    SN    EB */
+       0x10, 0x11, 0x12, 0x13, 0x3C, 0x15, 0x32, 0x26,
+    /*18  CN    EM    SB    EC    FS    GS    RS    US */
+       0x18, 0x19, 0x3F, 0x27, 0x1C, 0x1D, 0x1E, 0x1F,
+    /*20  SP     !     "     #     $     %     &     ' */
+       0x40, 0x5A, 0x7F, 0x7B, 0x5B, 0x6C, 0x50, 0x7D,
+    /*28   (     )     *     +     ,     -    .      / */
+       0x4D, 0x5D, 0x5C, 0x4E, 0x6B, 0x60, 0x4B, 0x61,
+    /*30   0     1     2     3     4     5     6     7 */
+       0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
+    /*38   8     9     :     ;     <     =     >     ? */
+       0xF8, 0xF9, 0x7A, 0x5E, 0x4C, 0x7E, 0x6E, 0x6F,
+    /*40   @     A     B     C     D     E     F     G */
+       0x7C, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7,
+    /*48   H     I     J     K     L     M     N     O */
+       0xC8, 0xC9, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6,
+    /*50   P     Q     R     S     T     U     V     W */
+       0xD7, 0xD8, 0xD9, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6,
+    /*58   X     Y     Z     [     \     ]     ^     _ */
+       0xE7, 0xE8, 0xE9, 0xAD, 0xE0, 0xBD, 0x5F, 0x6D,
+    /*60   `     a     b     c     d     e     f     g */
+       0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    /*68   h     i     j     k     l     m     n     o */
+       0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
+    /*70   p     q     r     s     t     u     v     w */
+       0x97, 0x98, 0x99, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6,
+    /*78   x     y     z     {     |     }     ~    DL */
+       0xA7, 0xA8, 0xA9, 0xC0, 0x4F, 0xD0, 0xA1, 0x07,
+       0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
+       0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
+       0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
+       0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
+       0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
+       0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
+       0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
+       0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
+       0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
+       0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
+       0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
+       0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
+       0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
+       0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
+       0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
+       0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0xFF
+};
+
+enum failure {
+       unable_to_open,
+       unable_to_seek,
+       unable_to_write,
+       unable_to_read
+};
+
+static char buffer[89];
+
+static void
+vtoc_error (enum failure why, char const *s1, char const *s2)
+{
+       PDEBUG
+       char error[8192];
+
+       switch (why) {
+               case unable_to_open:
+                       sprintf(error, "VTOC: %s -- %s\n%s\n",
+                               _("opening of device failed"), s1, s2);
+                       break;
+               case unable_to_seek:
+                       sprintf(error, "VTOC: %s -- %s\n%s\n",
+                               _("seeking on device failed"), s1, s2);
+                       break;
+               case unable_to_write:
+                       sprintf(error, "VTOC: %s -- %s\n%s\n",
+                               _("writing to device failed"), s1, s2);
+                       break;
+               case unable_to_read:
+                       sprintf(error, "VTOC: %s -- %s\n%s\n",
+                               _("reading from device failed"), s1, s2);
+                       break;
+               default:
+                       sprintf(error, "VTOC: %s\n", _("Fatal error"));
+       }
+
+       ped_exception_throw(PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL, error);
+}
+
+char *
+vtoc_ebcdic_enc (char const *source, char *target, int l)
+{
+       PDEBUG
+       int i;
+
+       for (i = 0; i < l; i++)
+               target[i]=ASCtoEBC[(unsigned char)(source[i])];
+
+       return target;
+}
+
+char *
+vtoc_ebcdic_dec (char const *source, char *target, int l)
+{
+       PDEBUG
+       int i;
+
+       for (i = 0; i < l; i++)
+               target[i]=EBCtoASC[(unsigned char)(source[i])];
+
+       return target;
+}
+
+void
+vtoc_set_extent (extent_t *ext, u_int8_t typeind, u_int8_t seqno,
+                 cchh_t *lower, cchh_t *upper)
+{
+       PDEBUG
+       ext->typeind = typeind;
+       ext->seqno   = seqno;
+       memcpy(&ext->llimit,lower,sizeof(cchh_t));
+       memcpy(&ext->ulimit,upper,sizeof(cchh_t));
+}
+
+void
+vtoc_set_cchh (cchh_t *addr, u_int16_t cc, u_int16_t hh)
+{
+       PDEBUG
+       addr->cc = cc;
+       addr->hh = hh;
+}
+
+static void
+vtoc_set_ttr (ttr_t *addr, u_int16_t tt, u_int8_t r)
+{
+       PDEBUG
+       addr->tt = tt;
+       addr->r = r;
+}
+
+void
+vtoc_set_cchhb (cchhb_t *addr, u_int16_t cc, u_int16_t hh, u_int8_t b)
+{
+       PDEBUG
+       addr->cc = cc;
+       addr->hh = hh;
+       addr->b = b;
+}
+
+void
+vtoc_set_date (labeldate_t * d, u_int8_t year, u_int16_t day)
+{
+       PDEBUG
+       d->year = year;
+       d->day = day;
+}
+
+/*
+ * initializes the volume label with EBCDIC spaces
+ */
+void
+vtoc_volume_label_init (volume_label_t *vlabel)
+{
+       PDEBUG
+       sprintf(buffer, "%88s", " ");
+       vtoc_ebcdic_enc(buffer, buffer, sizeof *vlabel);
+       memcpy(vlabel, buffer, sizeof *vlabel);
+}
+
+/*
+ * reads the volume label from dasd
+ */
+int
+vtoc_read_volume_label (int f, unsigned long vlabel_start,
+                        volume_label_t *vlabel)
+{
+
+       char str[5];
+       unsigned long block_zero;
+       typedef struct bogus_label bogus_label_t;
+       typedef union vollabel vollabel_t;
+
+       union __attribute__((packed)) vollabel {
+               volume_label_t cdl;
+               ldl_volume_label_t ldl;
+               cms_volume_label_t cms;
+       };
+
+       struct  __attribute__((packed)) bogus_label {
+          char overhead[512];
+          vollabel_t actual_label;
+       };
+
+       bogus_label_t mybogus;
+       bogus_label_t *bogus_ptr = &mybogus;
+       vollabel_t *union_ptr = &bogus_ptr->actual_label;
+       volume_label_t *cdl_ptr = &union_ptr->cdl;
+
+       PDEBUG
+       int rc;
+
+       if (lseek(f, vlabel_start, SEEK_SET) == -1) {
+               vtoc_error(unable_to_seek, "vtoc_read_volume_label",
+                          _("Could not read volume label."));
+               return 1;
+       }
+
+       rc = read(f, vlabel, sizeof(volume_label_t));
+       if (rc != sizeof(volume_label_t) &&
+       /* For CDL we ask to read 88 bytes, but only get 84 */
+            rc != sizeof(volume_label_t) - 4) {
+               vtoc_error(unable_to_read, "vtoc_read_volume_label",
+                          _("Could not read volume label."));
+               return 1;
+       }
+
+       if (strncmp(vlabel->volkey, vtoc_ebcdic_enc("VOL1", str, 4), 4) == 0
+        || strncmp(vlabel->volkey, vtoc_ebcdic_enc("LNX1", str, 4), 4) == 0
+         || strncmp(vlabel->volkey, vtoc_ebcdic_enc("CMS1", str, 4), 4) == 0)
+       return 0;
+
+       /*
+          If we didn't find a valid volume label, there is a special case
+           we must try before we give up.  For a CMS-formatted disk on FBA
+          DASD using the DIAG driver and a block size greater than 512, we
+          must read the block at offset 0, then look for a label within
+          that block at offset 512.
+       */
+
+       block_zero = 0;
+
+       if (lseek(f, block_zero, SEEK_SET) == -1) {
+               vtoc_error(unable_to_seek, "vtoc_read_volume_label",
+                          _("Could not read volume label."));
+               return 1;
+       }
+
+       rc = read(f, bogus_ptr, sizeof(bogus_label_t));
+       if (rc != sizeof(bogus_label_t)) {
+               vtoc_error(unable_to_read, "vtoc_read_volume_label",
+                          _("Could not read volume label."));
+               return 1;
+       }
+
+       memcpy(vlabel, cdl_ptr, sizeof *vlabel);
+       return 0;
+}
+
+/*
+ * writes the volume label to dasd
+ */
+int
+vtoc_write_volume_label (int f, unsigned long vlabel_start,
+                         volume_label_t const *vlabel)
+{
+       PDEBUG
+       int rc;
+
+       if (lseek(f, vlabel_start, SEEK_SET) == -1)
+               vtoc_error(unable_to_seek, "vtoc_write_volume_label",
+                          _("Could not write volume label."));
+
+       rc = write(f, vlabel, sizeof(volume_label_t) - 4);
+       /* Subtract 4 to leave off the "fudge" variable when writing.
+           We only write CDL volume labels, never LDL or CMS.  */
+       if (rc != sizeof(volume_label_t) - 4)
+               vtoc_error(unable_to_write, "vtoc_write_volume_label",
+                          _("Could not write volume label."));
+
+       return 0;
+}
+
+/*
+ * takes a string as input, converts it to uppercase, translates
+ * it to EBCDIC and fills it up with spaces before it copies it
+ * as volume serial to the volume label
+ */
+void
+vtoc_volume_label_set_volser (volume_label_t *vlabel, char const *volser)
+{
+       PDEBUG
+       int j, i = strlen(volser);
+       char s[VOLSER_LENGTH + 1];
+
+       strcpy(s, "      ");
+       vtoc_ebcdic_enc(s, s, VOLSER_LENGTH);
+       strncpy(vlabel->volid, s, VOLSER_LENGTH);
+
+       if (i > VOLSER_LENGTH)
+               i = VOLSER_LENGTH;
+
+       strncpy(s, volser, i);
+       for (j=0; j<i; j++)
+               s[j] = toupper(s[j]);
+
+       s[VOLSER_LENGTH] = 0x00;
+       vtoc_ebcdic_enc(s, s, i);
+       strncpy(vlabel->volid, s, i);
+
+       return;
+}
+
+/*
+ * returns the volume serial number right after it is translated
+ * to ASCII
+ */
+char *
+vtoc_volume_label_get_volser (volume_label_t *vlabel, char *volser)
+{
+       PDEBUG
+       vtoc_ebcdic_dec(vlabel->volid, volser, VOLSER_LENGTH);
+
+       return volser;
+}
+
+/*
+ * sets the volume label key right after
+ * it has been translated to EBCDIC
+ */
+void
+vtoc_volume_label_set_key (volume_label_t *vlabel, char const *key)
+{
+       PDEBUG
+       char s[4];
+
+       vtoc_ebcdic_enc(key, s, 4);
+       strncpy(vlabel->volkey, s, 4);
+
+       return;
+}
+
+/*
+ * sets the volume label identifier right
+ * after it has been translated to EBCDIC
+ */
+void
+vtoc_volume_label_set_label (volume_label_t *vlabel, char const *lbl)
+{
+       PDEBUG
+       char s[4];
+
+       vtoc_ebcdic_enc(lbl, s, 4);
+       strncpy(vlabel->vollbl, s, 4);
+
+       return;
+}
+
+/*
+ * returns the volume label key = the label identifier
+ * right after it has been translated to ASCII
+ */
+char *
+vtoc_volume_label_get_label (volume_label_t *vlabel, char *lbl)
+{
+       PDEBUG
+       vtoc_ebcdic_dec(vlabel->vollbl, lbl, 4);
+
+       return lbl;
+}
+
+/*
+ * reads either a format4 label or a format1 label
+ * from the specified position
+ */
+void
+vtoc_read_label (int f, unsigned long position, format1_label_t *f1,
+                 format4_label_t *f4, format5_label_t *f5, format7_label_t *f7)
+{
+       PDEBUG
+       int t;
+
+       if (lseek(f, position, SEEK_SET) == -1)
+               vtoc_error(unable_to_seek, "vtoc_read_label",
+                          _("Could not read VTOC labels."));
+
+       if (f1 != NULL) {
+               t = sizeof(format1_label_t);
+               if (read(f, f1, t) != t)
+                       vtoc_error(unable_to_read, "vtoc_read_label",
+                                  _("Could not read VTOC FMT1 DSCB."));
+       }
+
+       if (f4 != NULL) {
+               t = sizeof(format4_label_t);
+               if (read(f, f4, t) != t)
+                       vtoc_error(unable_to_read, "vtoc_read_label",
+                                  _("Could not read VTOC FMT4 DSCB."));
+       }
+
+       if (f5 != NULL) {
+               t = sizeof(format5_label_t);
+               if (read(f, f5, t) != t)
+                       vtoc_error(unable_to_read, "vtoc_read_label",
+                                  _("Could not read VTOC FMT5 DSCB."));
+       }
+
+       if (f7 != NULL) {
+               t = sizeof(format7_label_t);
+               if (read(f, f7, t) != t)
+                       vtoc_error(unable_to_read, "vtoc_read_label",
+                                  _("Could not read VTOC FMT7 DSCB."));
+       }
+}
+
+/*
+ * writes either a FMT1, FMT4 or FMT5 label
+ * to the specified position
+ */
+void
+vtoc_write_label (int f, unsigned long position,
+                 format1_label_t const *f1,
+                  format4_label_t const *f4,
+                 format5_label_t const *f5,
+                 format7_label_t const *f7)
+{
+       PDEBUG
+       int t;
+
+       if (lseek(f, position, SEEK_SET) == -1)
+               vtoc_error(unable_to_seek, "vtoc_write_label",
+                          _("Could not write VTOC labels."));
+
+       if (f1 != NULL) {
+               t = sizeof(format1_label_t);
+               if (write(f, f1, t) != t)
+                       vtoc_error(unable_to_write, "vtoc_write_label",
+                                  _("Could not write VTOC FMT1 DSCB."));
+       }
+
+       if (f4 != NULL) {
+               t = sizeof(format4_label_t);
+               if (write(f, f4, t) != t)
+                       vtoc_error(unable_to_write, "vtoc_write_label",
+                                  _("Could not write VTOC FMT4 DSCB."));
+       }
+
+       if (f5 != NULL) {
+               t = sizeof(format5_label_t);
+               if (write(f, f5, t) != t)
+                       vtoc_error(unable_to_write, "vtoc_write_label",
+                                  _("Could not write VTOC FMT5 DSCB."));
+       }
+
+       if (f7 != NULL) {
+               t = sizeof(format7_label_t);
+               if (write(f, f7, t) != t)
+                       vtoc_error(unable_to_write, "vtoc_write_label",
+                                  _("Could not write VTOC FMT7 DSCB."));
+       }
+}
+
+/*
+ * initializes a format4 label
+ */
+void
+vtoc_init_format4_label (format4_label_t *f4, unsigned int usable_partitions,
+                         unsigned int cylinders, unsigned int tracks,
+                         unsigned int blocks, unsigned int blksize,
+                         u_int16_t dev_type)
+{
+       PDEBUG
+       int i;
+
+       cchh_t lower = {VTOC_START_CC, VTOC_START_HH};
+       cchh_t upper = {VTOC_START_CC, VTOC_START_HH};
+
+       for (i=0; i<44; i++) f4->DS4KEYCD[i] = 0x04;
+        f4->DS4IDFMT = 0xf4;
+
+       vtoc_set_cchhb(&f4->DS4HPCHR, 0x0000, 0x0000, 0x00);
+       f4->DS4DSREC = blocks - 2;
+       /* free space starts right behind VTOC
+          vtoc_set_cchh(&f4->DS4HCCHH, VTOC_START_CC, VTOC_START_HH + 1);*/
+       vtoc_set_cchh(&f4->DS4HCCHH, 0x0000, 0x0000);
+       f4->DS4NOATK = 0x0000;
+       f4->DS4VTOCI = 0x00;
+       f4->DS4NOEXT = 0x01;
+       f4->DS4SMSFG = 0x00;
+       f4->DS4DEVAC = 0x00;
+
+       /* -- begin f4->DS4DEVCT -- */
+       f4->DS4DEVCT.DS4DSCYL = cylinders;
+       f4->DS4DEVCT.DS4DSTRK = tracks;
+
+       switch (dev_type) {
+               case DASD_3380_TYPE:
+                       f4->DS4DEVCT.DS4DEVTK = DASD_3380_VALUE;
+                       break;
+               case DASD_3390_TYPE:
+                       f4->DS4DEVCT.DS4DEVTK = DASD_3390_VALUE;
+                       break;
+               case DASD_9345_TYPE:
+                       f4->DS4DEVCT.DS4DEVTK = DASD_9345_VALUE;
+                       break;
+               default:
+                       f4->DS4DEVCT.DS4DEVTK = blocks * blksize;;
+       }
+
+       f4->DS4DEVCT.DS4DEVI  = 0x00;
+       f4->DS4DEVCT.DS4DEVL  = 0x00;
+       f4->DS4DEVCT.DS4DEVK  = 0x00;
+       f4->DS4DEVCT.DS4DEVFG = 0x30;
+       f4->DS4DEVCT.DS4DEVTL = 0x0000;
+       f4->DS4DEVCT.DS4DEVDT = blocks;
+       f4->DS4DEVCT.DS4DEVDB = 0x00;
+       /* -- end f4->DS4DEVCT -- */
+
+       bzero(f4->DS4AMTIM, sizeof(f4->DS4AMTIM));
+       bzero(f4->DS4AMCAT, sizeof(f4->DS4AMCAT));
+       bzero(f4->DS4R2TIM, sizeof(f4->DS4R2TIM));
+       bzero(f4->res1, sizeof(f4->res1));
+       bzero(f4->DS4F6PTR, sizeof(f4->DS4F6PTR));
+
+       /* -- begin f4lbl->DS4VTOCE -- */
+       vtoc_set_extent(&f4->DS4VTOCE, 0x01, 0x00, &lower, &upper);
+       /* -- end f4lbl->DS4VTOCE -- */
+
+       bzero(f4->res2, sizeof(f4->res2));
+       f4->DS4EFLVL = 0x00;
+       bzero(&f4->DS4EFPTR, sizeof(f4->DS4EFPTR));
+       bzero(f4->res3, sizeof(f4->res3));
+}
+
+/*
+ * initializes a format5 label
+ */
+void
+vtoc_init_format5_label (format5_label_t *f5)
+{
+       PDEBUG
+       int i;
+
+       bzero(f5, sizeof(format5_label_t));
+       for (i=0; i<4; i++)
+               f5->DS5KEYID[i] = 0x05;
+       f5->DS5FMTID = 0xf5;
+}
+
+/*
+ * initializes a format7 label
+ */
+void
+vtoc_init_format7_label (format7_label_t *f7)
+{
+       PDEBUG
+       int i;
+
+       bzero(f7, sizeof(format7_label_t));
+       for (i=0; i<4; i++)
+               f7->DS7KEYID[i] = 0x07;
+       f7->DS7FMTID = 0xf7;
+}
+
+/*
+ * initializes a format1 label
+ */
+void
+vtoc_init_format1_label (char *volid, unsigned int blksize,
+                         extent_t *part_extent, format1_label_t *f1)
+{
+       PDEBUG
+       struct tm * creatime;
+       time_t t;
+       char str[80];
+
+       /* get actual date */
+       t = time(NULL);
+       creatime = gmtime(&t);
+
+       bzero(f1->DS1DSNAM, sizeof(f1->DS1DSNAM));
+       sprintf(str, "PART    .NEW                                ");
+       vtoc_ebcdic_enc(str, str, 44);
+       strncpy(f1->DS1DSNAM, str, 44);
+       f1->DS1FMTID = 0xf1;
+       strncpy(f1->DS1DSSN, "      ", 6);
+       f1->DS1VOLSQ = 0x0001;
+
+       vtoc_set_date(&f1->DS1CREDT, (u_int8_t) creatime->tm_year,
+                                 (u_int16_t) creatime->tm_yday);
+       /* expires never - 99 365 */
+       vtoc_set_date(&f1->DS1EXPDT, 0x63, 0x016D);
+       f1->DS1NOEPV = 0x01;
+       f1->DS1NOBDB = 0x00;
+       f1->DS1FLAG1 = 0x00;
+       vtoc_ebcdic_enc("IBM LINUX    ", str, 13);
+       strncpy(f1->DS1SYSCD, str, 13);
+       vtoc_set_date(&f1->DS1REFD, (u_int8_t) creatime->tm_year,
+                                 (u_int16_t) creatime->tm_yday);
+       f1->DS1SMSFG = 0x00;
+       f1->DS1SCXTF = 0x00;
+       f1->DS1SCXTV = 0x0000;
+       f1->DS1DSRG1 = 0x00;
+       f1->DS1DSRG2 = 0x00;
+       f1->DS1RECFM = 0x88;
+       f1->DS1OPTCD = 0x00;
+       f1->DS1BLKL  = blksize;
+       f1->DS1LRECL = blksize;
+       f1->DS1KEYL  = 0x00;
+       f1->DS1RKP   = 0x0000;
+       f1->DS1DSIND = 0x80; /* last volume for this dataset */
+       f1->DS1SCAL1 = 0x80;
+       bzero(&f1->DS1SCAL3, sizeof(f1->DS1SCAL3));
+       vtoc_set_ttr(&f1->DS1LSTAR, 0x0000, 0x00);
+       f1->DS1TRBAL = 0x00;
+       bzero(&f1->res1, sizeof(f1->res1));
+       memcpy(&f1->DS1EXT1, part_extent, sizeof(extent_t));
+       bzero(&f1->DS1EXT2, sizeof(extent_t));
+       bzero(&f1->DS1EXT3, sizeof(extent_t));
+       vtoc_set_cchhb(&f1->DS1PTRDS, 0x0000, 0x0000, 0x00);
+}
+
+/*
+ * do some updates to the VTOC format4 label
+ */
+void
+vtoc_update_format4_label (format4_label_t *f4, cchhb_t *highest_f1,
+                           u_int16_t unused_update)
+{
+       PDEBUG
+       /* update highest address of a format 1 label */
+       memcpy(&f4->DS4HPCHR, highest_f1, sizeof(cchhb_t));
+
+       /* update unused DSCB count */
+       f4->DS4DSREC = unused_update;
+}
+
+/*
+ * reorganizes all extents within a FMT5 label
+ */
+static void
+vtoc_reorganize_FMT5_extents (format5_label_t *f5)
+{
+       PDEBUG
+       ds5ext_t *ext, *last, tmp;
+       int i, j;
+
+       for (i=0; i<26; i++) {
+               if (i==0)
+                       last = &f5->DS5AVEXT;
+               else if ((i > 0) && (i < 8))
+                       last = &f5->DS5EXTAV[i-1];
+               else
+                       last = &f5->DS5MAVET[i-8];
+
+               for (j=i; j<26; j++) {
+                       if (j==0)
+                               ext = &f5->DS5AVEXT;
+                       else if ((j > 0) && (j < 8))
+                               ext = &f5->DS5EXTAV[j-1];
+                       else
+                               ext = &f5->DS5MAVET[j-8];
+
+                       if (((ext->t > 0) && (last->t == 0)) ||
+                           ((ext->t > 0) && (ext->t < last->t)))
+                       {
+                               tmp.t  = last->t;
+                               tmp.fc = last->fc;
+                               tmp.ft = last->ft;
+                               last->t  = ext->t;
+                               last->fc = ext->fc;
+                               last->ft = ext->ft;
+                               ext->t  = tmp.t;
+                               ext->fc = tmp.fc;
+                               ext->ft = tmp.ft;
+                       }
+               }
+       }
+}
+
+/*
+ * add a free space extent description to the VTOC FMT5 DSCB
+ */
+void
+vtoc_update_format5_label_add (format5_label_t *f5, int verbose, int cyl,
+                               int trk, u_int16_t a, u_int16_t b, u_int8_t c)
+{
+       PDEBUG
+       ds5ext_t *ext = NULL, *tmp = NULL;
+       int i;
+
+       for (i=0; i<26; i++) {
+               if (i==0)
+                       ext = &f5->DS5AVEXT;
+               else if ((i > 0) && (i < 8))
+                       ext = &f5->DS5EXTAV[i-1];
+               else
+                       ext = &f5->DS5MAVET[i-8];
+
+               if (((a < ext->t) && (a + b*trk + c > ext->t)) ||
+                   ((a > ext->t) && (ext->t + ext->fc*trk + ext->ft > a)))
+               {
+                       puts ("BUG: overlapping free space extents "
+                             "in FMT5 DSCB!\nexiting...");
+                       exit(EXIT_FAILURE);
+               }
+
+               if ((ext->t + ext->fc + ext->ft) == 0x0000) {
+                       ext->t  = a;
+                       ext->fc = b;
+                       ext->ft = c;
+                       tmp = ext;
+                       if (verbose)
+                                puts ("FMT5 add extent: add new extent");
+                       break;
+               }
+       }
+
+       if (tmp == NULL) {
+               /* BUG: no free extent found */
+               puts ("BUG: no free FMT5 DSCB extent found!\nexiting...");
+               exit(EXIT_FAILURE);
+       }
+
+       for (i=0; i<26; i++) {
+               if (i==0)
+                       ext = &f5->DS5AVEXT;
+               else if ((i > 0) && (i < 8))
+                       ext = &f5->DS5EXTAV[i-1];
+               else
+                       ext = &f5->DS5MAVET[i-8];
+
+               if ((ext->t + ext->fc + ext->ft) == 0x0000)
+                       continue;
+
+               if ((ext->t + ext->fc*trk + ext->ft) == tmp->t) {
+                       /* this extent precedes the new one */
+                       ext->fc += (tmp->fc + (tmp->ft + ext->ft)/trk);
+                       ext->ft = (tmp->ft + ext->ft) % trk;
+                       bzero(tmp, sizeof(ds5ext_t));
+                       tmp = ext;
+
+                       if (verbose)
+                               puts ("FMT5 add extent: "
+                                      "merge with predecessor");
+
+                       i = -1;
+                       continue;
+               }
+
+               if ((tmp->t + tmp->fc*trk + tmp->ft) == ext->t) {
+                       /* this extent succeeds the new one */
+                       ext->t = tmp->t;
+                       ext->fc += (tmp->fc + (tmp->ft + ext->ft)/trk);
+                       ext->ft = (tmp->ft + ext->ft) % trk;
+                       bzero(tmp, sizeof(ds5ext_t));
+                       tmp = ext;
+
+                       if (verbose)
+                               puts ("FMT5 add extent: "
+                                     "merge with successor");
+
+                       i = -1;
+                       continue;
+               }
+       }
+}
+
+/*
+ * remove a free space extent description from the VTOC FMT5 DSCB
+ */
+void
+vtoc_update_format5_label_del (format5_label_t *f5, int verbose, int cyl,
+                               int trk, u_int16_t a, u_int16_t b, u_int8_t c)
+{
+       PDEBUG
+       ds5ext_t *ext;
+       int i, counter=0;
+
+       for (i=0; i<26; i++) {
+               if (i==0)
+                       ext = &f5->DS5AVEXT;
+               else if ((i > 0) && (i < 8))
+                       ext = &f5->DS5EXTAV[i-1];
+               else
+                       ext = &f5->DS5MAVET[i-8];
+
+               if ((a == ext->t) && (b == ext->fc) && (c == ext->ft)) {
+                       /* fills up whole free space gap */
+                       bzero(ext, sizeof(ds5ext_t));
+
+                       if (verbose)
+                               puts ("FMT5 del extent: fills whole gap");
+
+                       counter++;
+                       break;
+               }
+
+               if ((a == ext->t) && ((b < ext->fc) || (c < ext->ft))) {
+                       /* left-bounded in free space gap */
+                       ext->t = ext->t + b*trk + c;
+
+                       if (c > ext->ft) {
+                               ext->fc -= (b + 1);
+                               ext->ft -= (c - trk);
+                       } else {
+                               ext->fc -= b;
+                               ext->ft -= c;
+                       }
+
+                       if (verbose)
+                               puts ("FMT5 del extent: left bounded");
+
+                       counter++;
+                       break;
+               }
+
+               if ((ext->t < a)
+                   && ((ext->t + ext->fc*trk + ext->ft) == (a + b*trk + c)))
+               {
+                       /* right-bounded in free space gap */
+                       if (c > ext->ft) {
+                               ext->fc -= (b + 1);
+                               ext->ft -= (c - trk);
+                       } else {
+                               ext->fc -= b;
+                               ext->ft -= c;
+                       }
+
+                       if (verbose)
+                               puts ("FMT5 del extent: right bounded");
+
+                       counter++;
+                       break;
+               }
+
+               if ((a > ext->t)
+                       && ((ext->t + ext->fc*trk + ext->ft) > (a + b*trk + c)))
+               {
+                       /* partition devides free space into 2 pieces */
+                       u_int16_t x = a + b*trk + c;
+                       u_int16_t w,y;
+                       u_int8_t z;
+
+                       w = (ext->t + ext->fc*trk + ext->ft) - (a + b*trk + c);
+                       y = w / trk;
+                       z = w % trk;
+
+                       ext->fc = (a - ext->t) / trk;
+                       ext->ft = (a - ext->t) % trk;
+
+                       vtoc_update_format5_label_add(f5, verbose,
+                                                     cyl, trk, x, y, z);
+
+                       if (verbose)
+                               puts ("FMT5 del extent: 2 pieces");
+
+                       counter++;
+                       break;
+               }
+
+               if ((a < ext->t) && (a + b*trk + c > ext->t)
+                   && (a + b*trk + c < ext->t + ext->fc*trk + ext->ft))
+               {
+                       puts ("BUG: corresponding free space extent "
+                             "doesn't match free space currently shown "
+                             "in FMT5 DSCB!\nexiting...");
+                       exit(EXIT_FAILURE);
+               }
+
+               if ((a > ext->t) && (a < ext->t + ext->fc*trk + ext->ft)
+                   && (a + b*trk + c > ext->t + ext->fc*trk + ext->ft))
+               {
+                       puts ("BUG: specified free space extent for "
+                             "deleting doesn't match free space "
+                             "currently shown in FMT5 DSCB!\n"
+                             "exiting...");
+                       exit(EXIT_FAILURE);
+               }
+       }
+
+       if (counter > 0)
+               return;
+
+       puts ("BUG: specified free space extent for "
+             "deleting not found in FMT5 DSCB!\n"
+             "exiting...");
+       exit(EXIT_FAILURE);
+}
+
+/*
+ * reorganizes all extents within a FMT7 label
+ */
+static void
+vtoc_reorganize_FMT7_extents (format7_label_t *f7)
+{
+       PDEBUG
+       ds7ext_t *ext, *last, tmp;
+       int i, j;
+
+       for (i=0; i<16; i++) {
+               if (i<5)
+                       last = &f7->DS7EXTNT[i];
+               else
+                       last = &f7->DS7ADEXT[i-5];
+
+               for (j=i; j<16; j++) {
+                       if (j<5)
+                               ext = &f7->DS7EXTNT[j];
+                       else
+                               ext = &f7->DS7ADEXT[j-5];
+
+                       if (((ext->a > 0) && (last->a == 0))
+                           || ((ext->a > 0) && (ext->a < last->a)))
+                       {
+                               tmp.a = last->a;
+                               tmp.b = last->b;
+                               last->a = ext->a;
+                               last->b = ext->b;
+                               ext->a = tmp.a;
+                               ext->b = tmp.b;
+                       }
+               }
+       }
+}
+
+/*
+ * add a free space extent description to the VTOC FMT7 DSCB
+ */
+void
+vtoc_update_format7_label_add (format7_label_t *f7, int verbose,
+                               u_int32_t a, u_int32_t b)
+{
+       PDEBUG
+       ds7ext_t *ext = NULL, *tmp = NULL;
+       int i;
+
+       for (i=0; i<16; i++) {
+               if (i<5)
+                       ext = &f7->DS7EXTNT[i];
+               else
+                       ext = &f7->DS7ADEXT[i-5];
+
+               if (((a < ext->a) && (b > ext->a) && (b < ext->b))
+                   || ((a > ext->a) && (a < ext->b) && (b > ext->b)))
+               {
+                       puts ("BUG: overlapping free space extents "
+                             "in FMT7 DSCB!\nexiting...");
+                       exit(EXIT_FAILURE);
+               }
+
+               if ((ext->a + ext->b) == 0x00000000) {
+                       ext->a = a;
+                       ext->b = b;
+                       tmp = ext;
+
+                       if (verbose)
+                               puts ("FMT7 add extent: add new extent");
+
+                       break;
+               }
+       }
+
+       if (tmp == NULL) {
+               /* BUG: no free extent found */
+               puts ("BUG: no free FMT7 DSCB extent found!\nexiting...");
+               exit(EXIT_FAILURE);
+       }
+
+       for (i=0; i<16; i++) {
+               if (i<5)
+                       ext = &f7->DS7EXTNT[i];
+               else
+                       ext = &f7->DS7ADEXT[i-5];
+
+               if ((ext->a + ext->b) == 0x00000000)
+                       continue;
+
+               if ((ext->b + 1) == tmp->a) {
+                       /* this extent precedes the new one */
+                       ext->b = tmp->b;
+                       bzero(tmp, sizeof(ds7ext_t));
+                       tmp = ext;
+
+                       if (verbose)
+                                puts ("FMT7 add extent: "
+                                      "merge with predecessor");
+
+                       i = -1;
+                       continue;
+               }
+
+               if (ext->a == (tmp->b + 1)) {
+                       /* this extent succeeds the new one */
+                       ext->a = tmp->a;
+                       bzero(tmp, sizeof(ds7ext_t));
+                       tmp = ext;
+
+                       if (verbose)
+                               puts ("FMT7 add extent: merge with successor");
+
+                       i = -1;
+                       continue;
+               }
+       }
+}
+
+/*
+ * remove a free space extent description from the VTOC FMT7 DSCB
+ */
+void
+vtoc_update_format7_label_del (format7_label_t *f7, int verbose,
+                               u_int32_t a, u_int32_t b)
+{
+       PDEBUG
+       ds7ext_t *ext;
+       int i, counter=0;
+
+       for (i=0; i<16; i++) {
+               if (i<5)
+                       ext = &f7->DS7EXTNT[i];
+               else
+                       ext = &f7->DS7ADEXT[i-5];
+
+               if ((a == ext->a) && (b == ext->b)) {
+                       /* fills up whole free space gap */
+                       bzero(ext, sizeof(ds7ext_t));
+
+                       if (verbose)
+                               puts ("FMT7 del extent: fills whole gap");
+
+                       counter++;
+                       break;
+               }
+
+               if ((a == ext->a) && (b < ext->b)) {
+                       /* left-bounded in free space gap */
+                       ext->a = b + 1;
+
+                       if (verbose)
+                               puts ("FMT7 add extent: left-bounded");
+
+                       counter++;
+                       break;
+               }
+
+               if ((a > ext->a) && (b == ext->b)) {
+                       /* right-bounded in free space gap */
+                       ext->b = a - 1;
+
+                       if (verbose)
+                               puts ("FMT7 add extent: right-bounded");
+
+                       counter++;
+                       break;
+               }
+
+               if ((a > ext->a) && (b < ext->b)) {
+                       /* partition devides free space into 2 pieces */
+                       vtoc_update_format7_label_add(f7, verbose, b+1, ext->b);
+                       ext->b = a - 1;
+
+                       if (verbose)
+                               puts ("FMT7 add extent: 2 pieces");
+
+                       counter++;
+                       break;
+               }
+
+               if (((a < ext->a) && (b > ext->a)) || ((a < ext->b) && (b > ext->b))) {
+                        puts ("BUG: specified free space extent for deleting "
+                              "doesn't match free space currently shown in "
+                              "FMT7 DSCB!\nexiting...");
+                       printf ("%d %d %d %d\n", a, b, ext->a, ext->b);
+                       exit(EXIT_FAILURE);
+               }
+       }
+
+       if (counter > 0)
+               return;
+
+       puts ("BUG: specified free space extent for "
+             "deleting not found in FMT7 DSCB!\n"
+             "exiting...");
+       exit(EXIT_FAILURE);
+}
+
+void
+vtoc_set_freespace(format4_label_t *f4, format5_label_t *f5,
+                   format7_label_t *f7, char ch, int verbose,
+                   u_int32_t start, u_int32_t stop, int cyl, int trk)
+{
+       PDEBUG
+       if ((cyl * trk) > BIG_DISK_SIZE) {
+               if (ch == '+')
+                       vtoc_update_format7_label_add(f7, verbose, start, stop);
+               else if (ch == '-')
+                       vtoc_update_format7_label_del(f7, verbose, start, stop);
+               else
+                       puts ("BUG: syntax error in vtoc_set_freespace call");
+
+               vtoc_reorganize_FMT7_extents (f7);
+
+               f4->DS4VTOCI = 0xa0;
+               f4->DS4EFLVL = 0x07;
+               vtoc_set_cchhb(&f4->DS4EFPTR, 0x0000, 0x0001, 0x03);
+       } else {
+               u_int16_t x,y;
+               u_int8_t z;
+
+               x = (u_int16_t) start;
+               y = (u_int16_t) ((stop - start + 1) / trk);
+               z =  (u_int8_t) ((stop - start + 1) % trk);
+
+               if (ch == '+')
+                       vtoc_update_format5_label_add(f5, verbose, cyl, trk, x, y, z);
+               else if (ch == '-')
+                       vtoc_update_format5_label_del(f5, verbose, cyl, trk, x, y, z);
+               else
+                       puts ("BUG: syntax error in vtoc_set_freespace call");
+
+               vtoc_reorganize_FMT5_extents (f5);
+       }
+}
diff --git a/libparted/libparted.c b/libparted/libparted.c
new file mode 100644 (file)
index 0000000..fe617bd
--- /dev/null
@@ -0,0 +1,260 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 1999-2001, 2007-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#include <config.h>
+#include "configmake.h"
+
+#include <parted/parted.h>
+#include <parted/debug.h>
+
+#include "architecture.h"
+
+#if ENABLE_NLS
+#  include <locale.h>
+#  include <libintl.h>
+#  define _(String) dgettext (PACKAGE, String)
+#else
+#  define _(String) (String)
+#endif /* ENABLE_NLS */
+
+/* ped_malloc() debugging.  Stick the address and size of memory blocks that
+ * weren't free()d in here, and an exception will be thrown when it is
+ * allocated.  That way, you can find out what, exactly, the allocated thing
+ * is, and where it is created.
+ */
+typedef struct
+{
+    void*      pointer;
+    size_t     size;
+} pointer_size_type;
+
+/* IMHO, none of the DEBUG-related code below is useful, and the
+   ped_malloc memset code is actually quite harmful: it masked at
+   least two nasty bugs that were fixed in June of 2007.  */
+#undef DEBUG
+#ifdef DEBUG
+static pointer_size_type dodgy_malloc_list[] = {
+ {0,           0},
+ {0,           0},
+ {0,           0},
+ {0,           0},
+ {0,           0},
+ {0,           0},
+ {0,           0},
+ {0,           0},
+ {0,           0},
+ {0,           0}
+};
+
+static int     dodgy_memory_active[100];
+#endif /* DEBUG */
+
+extern void ped_disk_aix_init ();
+extern void ped_disk_bsd_init ();
+extern void ped_disk_dvh_init ();
+extern void ped_disk_gpt_init ();
+extern void ped_disk_loop_init ();
+extern void ped_disk_mac_init ();
+extern void ped_disk_msdos_init ();
+extern void ped_disk_pc98_init ();
+extern void ped_disk_sun_init ();
+extern void ped_disk_amiga_init ();
+extern void ped_disk_dasd_init ();
+
+static void
+init_disk_types ()
+{
+       ped_disk_loop_init ();  /* must be last in the probe list */
+
+#if defined __s390__ || defined __s390x__
+       ped_disk_dasd_init();
+#endif
+
+       ped_disk_sun_init ();
+#ifdef ENABLE_PC98
+       ped_disk_pc98_init ();
+#endif
+       ped_disk_msdos_init ();
+       ped_disk_mac_init ();
+       ped_disk_gpt_init ();
+       ped_disk_dvh_init ();
+       ped_disk_bsd_init ();
+       ped_disk_amiga_init ();
+       ped_disk_aix_init ();
+}
+
+extern void ped_file_system_amiga_init (void);
+extern void ped_file_system_xfs_init (void);
+extern void ped_file_system_ufs_init (void);
+extern void ped_file_system_reiserfs_init (void);
+extern void ped_file_system_ntfs_init (void);
+extern void ped_file_system_linux_swap_init (void);
+extern void ped_file_system_jfs_init (void);
+extern void ped_file_system_hfs_init (void);
+extern void ped_file_system_fat_init (void);
+extern void ped_file_system_ext2_init (void);
+extern void ped_file_system_nilfs2_init (void);
+
+static void
+init_file_system_types ()
+{
+       ped_file_system_amiga_init ();
+       ped_file_system_xfs_init ();
+       ped_file_system_ufs_init ();
+       ped_file_system_reiserfs_init ();
+       ped_file_system_ntfs_init ();
+       ped_file_system_linux_swap_init ();
+       ped_file_system_jfs_init ();
+       ped_file_system_hfs_init ();
+       ped_file_system_fat_init ();
+       ped_file_system_ext2_init ();
+       ped_file_system_nilfs2_init ();
+}
+
+extern void ped_disk_aix_done ();
+extern void ped_disk_bsd_done ();
+extern void ped_disk_dvh_done ();
+extern void ped_disk_gpt_done ();
+extern void ped_disk_loop_done ();
+extern void ped_disk_mac_done ();
+extern void ped_disk_msdos_done ();
+extern void ped_disk_pc98_done ();
+extern void ped_disk_sun_done ();
+extern void ped_disk_amiga_done ();
+extern void ped_disk_dasd_done ();
+
+static void
+done_disk_types ()
+{
+#if defined __s390__ || __s390x__
+       ped_disk_dasd_done ();
+#endif
+       ped_disk_sun_done ();
+#ifdef ENABLE_PC98
+       ped_disk_pc98_done ();
+#endif
+       ped_disk_msdos_done ();
+       ped_disk_mac_done ();
+       ped_disk_loop_done ();
+       ped_disk_gpt_done ();
+       ped_disk_dvh_done ();
+       ped_disk_bsd_done ();
+       ped_disk_amiga_done ();
+       ped_disk_aix_done ();
+}
+
+static void _init() __attribute__ ((constructor));
+
+static void
+_init()
+{
+#ifdef ENABLE_NLS
+       bindtextdomain (PACKAGE, LOCALEDIR);
+#endif
+
+       init_disk_types ();
+       init_file_system_types ();
+       ped_set_architecture ();
+#ifdef DEBUG
+       memset (dodgy_memory_active, 0, sizeof (dodgy_memory_active));
+#endif
+}
+
+extern void ped_file_system_nilfs2_done (void);
+extern void ped_file_system_ext2_done (void);
+extern void ped_file_system_fat_done (void);
+extern void ped_file_system_hfs_done (void);
+extern void ped_file_system_jfs_done (void);
+extern void ped_file_system_linux_swap_done (void);
+extern void ped_file_system_ntfs_done (void);
+extern void ped_file_system_reiserfs_done (void);
+extern void ped_file_system_ufs_done (void);
+extern void ped_file_system_xfs_done (void);
+extern void ped_file_system_amiga_done (void);
+
+static void
+done_file_system_types ()
+{
+       ped_file_system_nilfs2_done ();
+       ped_file_system_ext2_done ();
+       ped_file_system_fat_done ();
+       ped_file_system_hfs_done ();
+       ped_file_system_jfs_done ();
+       ped_file_system_linux_swap_done ();
+       ped_file_system_ntfs_done ();
+       ped_file_system_reiserfs_done ();
+       ped_file_system_ufs_done ();
+       ped_file_system_xfs_done ();
+       ped_file_system_amiga_done ();
+}
+
+static void _done() __attribute__ ((destructor));
+
+static void
+_done()
+{
+       ped_device_free_all ();
+       done_disk_types ();
+       done_file_system_types ();
+}
+
+const char*
+ped_get_version ()
+{
+       return VERSION;
+}
+
+void*
+ped_malloc (size_t size)
+{
+       void*           mem;
+
+       mem = (void*) malloc (size);
+       if (!mem) {
+               ped_exception_throw (PED_EXCEPTION_FATAL, PED_EXCEPTION_CANCEL,
+                                    _("Out of memory."));
+               return NULL;
+       }
+
+       return mem;
+}
+
+int
+ped_realloc (void** old, size_t size)
+{
+       void*           mem;
+
+       mem = (void*) realloc (*old, size);
+       if (!mem) {
+               ped_exception_throw (PED_EXCEPTION_FATAL, PED_EXCEPTION_CANCEL,
+                                    _("Out of memory."));
+               return 0;
+       }
+       *old = mem;
+       return 1;
+}
+
+
+void* ped_calloc (size_t size)
+{
+        void* buf = ped_malloc (size);
+
+        memset (buf, 0, size);
+
+        return buf;
+}
diff --git a/libparted/mbr.s b/libparted/mbr.s
new file mode 100644 (file)
index 0000000..28d7b76
--- /dev/null
@@ -0,0 +1,84 @@
+;   libparted - a library for manipulating disk partitions
+;   Copyright (C) 1999-2000, 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+; NOTE: I build this with:
+;      $ as86 -b /dev/stdout mbr.s | hexdump -e '8/1 "0x%02x, " "\n"'
+;
+; The build isn't done automagically by make, because as86 may not be on many
+; machines (particularly non-x86).  Also, it seems rather difficult to get
+; as86 to build object files that can be linked, especially as it's 16 bit
+; code...
+
+USE16
+
+; This code, plus the partition table is loaded into 0000:7C00 by the BIOS
+
+.text
+
+; set top of stack to 1000:B000
+
+       cli
+
+       mov     ax, #0x1000
+       mov     ss, ax
+       mov     sp, #0xB000
+
+       mov     ax, #0x0000
+       mov     ds, ax
+       mov     es, ax
+
+       sti
+
+; Copy what the BIOS loaded (i.e. the MBR + head of partition table) from
+; 0000:7c00 to 0000:0600
+
+       mov     si, #0x7c00
+       mov     di, #0x0600
+       mov     cx, #0x200
+       rep
+       movsb
+
+; Jump to the copy of the MBR
+
+       jmp     0x0000:find_boot_partition + 0x0600
+
+find_boot_partition:
+       mov     si, #0x07BE
+
+check_next_bootable:
+       cmp     [si], al
+       jnz     found_bootable
+       add     si, #0x0010
+       cmp     si, #0x07FE
+       jnz     check_next_bootable
+       jmp     error
+
+found_bootable:
+
+; Load in the boot sector at 0000:7c00
+
+       mov     ah, #2                  ; BIOS command (read)
+       mov     al, #1                  ; count
+       mov     bx, #0x7c00             ; destination pointer
+       mov     dl, #0x80               ; drive
+       mov     dh, byte ptr [si + 1]   ; head
+       mov     cx, word ptr [si + 2]   ; sector / cylinder
+       int     #0x13                   ; BIOS read interrupt
+
+       jmp     0x0000:0x7c00           ; hand control to boot sector
+
+error:
+       jmp     error
diff --git a/libparted/tests/Makefile.am b/libparted/tests/Makefile.am
new file mode 100644 (file)
index 0000000..71ba0a7
--- /dev/null
@@ -0,0 +1,38 @@
+# This file is part of GNU Parted
+# Copyright (C) 1999-2001, 2007-2011 Free Software Foundation, Inc.
+#
+# This file may be modified and/or distributed without restriction.
+
+TESTS = t1000-label.sh t2000-disk.sh t2100-zerolen.sh t3000-symlink.sh
+EXTRA_DIST = $(TESTS)
+check_PROGRAMS = label disk zerolen symlink
+AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
+
+LDADD = \
+  $(top_builddir)/libparted/libparted.la \
+  $(CHECK_LIBS)
+
+AM_CPPFLAGS = \
+  $(CHECK_CFLAGS) \
+  -I$(top_srcdir)/lib \
+  -I$(top_srcdir)/include
+
+label_SOURCES = common.h common.c label.c
+disk_SOURCES  = common.h common.c disk.c
+zerolen_SOURCES = common.h common.c zerolen.c
+symlink_SOURCES = common.h common.c symlink.c
+
+MAINTAINERCLEANFILES = Makefile.in
+
+# Arrange to symlink to tests/init.sh.
+CLEANFILES = init.sh
+.PHONY: prereq
+prereq:
+       $(AM_V_GEN)ln -sf $(abs_top_srcdir)/tests/init.sh .
+$(TEST_LOGS): prereq
+
+TESTS_ENVIRONMENT = \
+  top_srcdir='$(top_srcdir)' \
+  abs_top_srcdir='$(abs_top_srcdir)' \
+  DYNAMIC_LOADING=$(DYNAMIC_LOADING) \
+  ENABLE_DEVICE_MAPPER=$(ENABLE_DEVICE_MAPPER)
diff --git a/libparted/tests/Makefile.in b/libparted/tests/Makefile.in
new file mode 100644 (file)
index 0000000..0857184
--- /dev/null
@@ -0,0 +1,1591 @@
+# Makefile.in generated by automake 1.11a from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in 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.
+
+@SET_MAKE@
+
+# This file is part of GNU Parted
+# Copyright (C) 1999-2001, 2007-2011 Free Software Foundation, Inc.
+#
+# This file may be modified and/or distributed without restriction.
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = label$(EXEEXT) disk$(EXEEXT) zerolen$(EXEEXT) \
+       symlink$(EXEEXT)
+subdir = libparted/tests
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+       $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argmatch.m4 \
+       $(top_srcdir)/m4/assert.m4 $(top_srcdir)/m4/btowc.m4 \
+       $(top_srcdir)/m4/calloc.m4 $(top_srcdir)/m4/canonicalize.m4 \
+       $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
+       $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/configmake.m4 \
+       $(top_srcdir)/m4/dirname.m4 \
+       $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+       $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/environ.m4 \
+       $(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
+       $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fclose.m4 \
+       $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/fcntl_h.m4 \
+       $(top_srcdir)/m4/fflush.m4 $(top_srcdir)/m4/fpending.m4 \
+       $(top_srcdir)/m4/fpurge.m4 $(top_srcdir)/m4/freading.m4 \
+       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/fsync.m4 \
+       $(top_srcdir)/m4/ftell.m4 $(top_srcdir)/m4/ftello.m4 \
+       $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
+       $(top_srcdir)/m4/langinfo_h.m4 $(top_srcdir)/m4/lcmessage.m4 \
+       $(top_srcdir)/m4/lib-ignore.m4 $(top_srcdir)/m4/lib-ld.m4 \
+       $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/localcharset.m4 \
+       $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \
+       $(top_srcdir)/m4/locale-tr.m4 $(top_srcdir)/m4/locale-zh.m4 \
+       $(top_srcdir)/m4/locale_h.m4 $(top_srcdir)/m4/localename.m4 \
+       $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/long-options.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
+       $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+       $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
+       $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+       $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbtowc.m4 \
+       $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+       $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/multiarch.m4 \
+       $(top_srcdir)/m4/nl_langinfo.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/nocrash.m4 $(top_srcdir)/m4/o-direct.m4 \
+       $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/priv-set.m4 \
+       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+       $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+       $(top_srcdir)/m4/read.m4 $(top_srcdir)/m4/readlink.m4 \
+       $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/regex.m4 \
+       $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+       $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/setlocale.m4 \
+       $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/ssize_t.m4 \
+       $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdarg.m4 \
+       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strdup.m4 \
+       $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/strerror_r.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+       $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtoll.m4 \
+       $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/symlink.m4 \
+       $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+       $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/thread.m4 \
+       $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/time_h.m4 \
+       $(top_srcdir)/m4/ungetc.m4 $(top_srcdir)/m4/unistd_h.m4 \
+       $(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkdir.m4 \
+       $(top_srcdir)/m4/usleep.m4 $(top_srcdir)/m4/version-etc.m4 \
+       $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \
+       $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
+       $(top_srcdir)/m4/wcrtomb.m4 $(top_srcdir)/m4/wctob.m4 \
+       $(top_srcdir)/m4/wctomb.m4 $(top_srcdir)/m4/wctype_h.m4 \
+       $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+       $(top_srcdir)/m4/xstrndup.m4 $(top_srcdir)/m4/xstrtol.m4 \
+       $(top_srcdir)/m4/yield.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am_disk_OBJECTS = common.$(OBJEXT) disk.$(OBJEXT)
+disk_OBJECTS = $(am_disk_OBJECTS)
+disk_LDADD = $(LDADD)
+am__DEPENDENCIES_1 =
+disk_DEPENDENCIES = $(top_builddir)/libparted/libparted.la \
+       $(am__DEPENDENCIES_1)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+am_label_OBJECTS = common.$(OBJEXT) label.$(OBJEXT)
+label_OBJECTS = $(am_label_OBJECTS)
+label_LDADD = $(LDADD)
+label_DEPENDENCIES = $(top_builddir)/libparted/libparted.la \
+       $(am__DEPENDENCIES_1)
+am_symlink_OBJECTS = common.$(OBJEXT) symlink.$(OBJEXT)
+symlink_OBJECTS = $(am_symlink_OBJECTS)
+symlink_LDADD = $(LDADD)
+symlink_DEPENDENCIES = $(top_builddir)/libparted/libparted.la \
+       $(am__DEPENDENCIES_1)
+am_zerolen_OBJECTS = common.$(OBJEXT) zerolen.$(OBJEXT)
+zerolen_OBJECTS = $(am_zerolen_OBJECTS)
+zerolen_LDADD = $(LDADD)
+zerolen_DEPENDENCIES = $(top_builddir)/libparted/libparted.la \
+       $(am__DEPENDENCIES_1)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/lib
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+       $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo "  CC      " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+SOURCES = $(disk_SOURCES) $(label_SOURCES) $(symlink_SOURCES) \
+       $(zerolen_SOURCES)
+DIST_SOURCES = $(disk_SOURCES) $(label_SOURCES) $(symlink_SOURCES) \
+       $(zerolen_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+# If stdout is a non-dumb tty, use colors.  If test -t is not supported,
+# then this fails; a conservative approach.  Of course do not redirect
+# stdout here, just stderr.
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=; \
+test "X$(AM_COLOR_TESTS)" != Xno \
+&& test "X$$TERM" != Xdumb \
+&& { test "X$(AM_COLOR_TESTS)" = Xalways || test -t 1 2>/dev/null; } \
+&& { \
+  red='\e[0;31m'; \
+  grn='\e[0;32m'; \
+  lgn='\e[1;32m'; \
+  blu='\e[1;34m'; \
+  std='\e[m'; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+# Restructured Text title and section.
+am__rst_title = sed 's/.*/   &   /;h;s/./=/g;p;x;p;g;p;s/.*//'
+am__rst_section = sed 'p;s/./=/g;p;g'
+# Put stdin (possibly several lines separated by ".  ") in a box.
+am__text_box = $(AWK) '{                               \
+  n = split($$0, lines, "\\.  "); max = 0;             \
+  for (i = 1; i <= n; ++i)                             \
+    if (max < length(lines[i]))                                \
+      max = length(lines[i]);                          \
+  for (i = 0; i < max; ++i) line = line "=";           \
+  print line;                                          \
+  for (i = 1; i <= n; ++i) if (lines[i]) print lines[i];\
+  print line;                                          \
+}'
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Saves and restores TERM around uses of
+# TESTS_ENVIRONMENT and AM_TESTS_ENVIRONMENT, in case any of them
+# unsets it.
+am__check_pre = \
+$(am__sh_e_setup);                                     \
+$(am__vpath_adj_setup) $(am__vpath_adj)                        \
+srcdir=$(srcdir); export srcdir;                       \
+rm -f $@-t;                                            \
+am__trap='rm -f '\''$(abs_builddir)/$@-t'\''; (exit $$st); exit $$st'; \
+trap "st=129; $$am__trap" 1; trap "st=130; $$am__trap" 2;      \
+trap "st=141; $$am__trap" 13; trap "st=143; $$am__trap" 15; \
+am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;           \
+test "x$$am__odir" = x. || $(MKDIR_P) "$$am__odir" || exit $$?;        \
+if test -f "./$$f"; then dir=./;                       \
+elif test -f "$$f"; then dir=;                         \
+else dir="$(srcdir)/"; fi;                             \
+tst=$$dir$$f; log='$@'; __SAVED_TERM=$$TERM;           \
+$(AM_TESTS_ENVIRONMENT)                                        \
+$(TESTS_ENVIRONMENT)
+# To be appended to the command running the test.  Handle the stdout
+# and stderr redirection, and catch the exit status.
+am__check_post = \
+>$@-t 2>&1;                                            \
+estatus=$$?;                                           \
+if test -n '$(DISABLE_HARD_ERRORS)'                    \
+   && test $$estatus -eq 99; then                      \
+  estatus=1;                                           \
+fi;                                                    \
+TERM=$$__SAVED_TERM; export TERM;                      \
+$(am__tty_colors);                                     \
+xfailed=PASS;                                          \
+case " $(XFAIL_TESTS) " in                             \
+  *[\ \        ]$$f[\ \        ]* | *[\ \      ]$$dir$$f[\ \   ]*) \
+    xfailed=XFAIL;;                                    \
+esac;                                                  \
+case $$estatus.$$xfailed in                            \
+    0.XFAIL) col=$$red; res=XPASS;;                    \
+    0.*)     col=$$grn; res=PASS ;;                    \
+    77.*)    col=$$blu; res=SKIP ;;                    \
+    99.*)    col=$$red; res=FAIL ;;                    \
+    *.XFAIL) col=$$lgn; res=XFAIL;;                    \
+    *.*)     col=$$red; res=FAIL ;;                    \
+esac;                                                  \
+echo "$${col}$$res$${std}: $$f";                       \
+echo "$$res: $$f (exit: $$estatus)" |                  \
+  $(am__rst_section) >$@;                              \
+cat $@-t >>$@;                                         \
+rm -f $@-t
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check check-html recheck recheck-html
+TEST_SUITE_LOG = test-suite.log
+TEST_SUITE_HTML = $(TEST_SUITE_LOG:.log=.html)
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+       $(TEST_LOG_FLAGS)
+TEST_LOGS_TMP = $(TEST_LOGS:.log=.log-t)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+pkglibexecdir = @pkglibexecdir@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+BUILDINFO = @BUILDINFO@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHECK_CFLAGS = @CHECK_CFLAGS@
+CHECK_LIBS = @CHECK_LIBS@
+CONFIG_INCLUDE = @CONFIG_INCLUDE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DYNAMIC_LOADING = @DYNAMIC_LOADING@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENABLE_DEVICE_MAPPER = @ENABLE_DEVICE_MAPPER@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FACCESSAT = @GNULIB_FACCESSAT@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCHMODAT = @GNULIB_FCHMODAT@
+GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FCNTL = @GNULIB_FCNTL@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FGETC = @GNULIB_FGETC@
+GNULIB_FGETS = @GNULIB_FGETS@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREAD = @GNULIB_FREAD@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSCANF = @GNULIB_FSCANF@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSTATAT = @GNULIB_FSTATAT@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FUTIMENS = @GNULIB_FUTIMENS@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETC = @GNULIB_GETC@
+GNULIB_GETCHAR = @GNULIB_GETCHAR@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETGROUPS = @GNULIB_GETGROUPS@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETS = @GNULIB_GETS@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
+GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_ISWBLANK = @GNULIB_ISWBLANK@
+GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@
+GNULIB_LCHMOD = @GNULIB_LCHMOD@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LINKAT = @GNULIB_LINKAT@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_LSTAT = @GNULIB_LSTAT@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MBTOWC = @GNULIB_MBTOWC@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDIRAT = @GNULIB_MKDIRAT@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKFIFO = @GNULIB_MKFIFO@
+GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@
+GNULIB_MKNOD = @GNULIB_MKNOD@
+GNULIB_MKNODAT = @GNULIB_MKNODAT@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@
+GNULIB_MKTIME = @GNULIB_MKTIME@
+GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@
+GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@
+GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_OPEN = @GNULIB_OPEN@
+GNULIB_OPENAT = @GNULIB_OPENAT@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE = @GNULIB_PIPE@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_PREAD = @GNULIB_PREAD@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READ = @GNULIB_READ@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_READLINKAT = @GNULIB_READLINKAT@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_REALPATH = @GNULIB_REALPATH@
+GNULIB_REMOVE = @GNULIB_REMOVE@
+GNULIB_RENAME = @GNULIB_RENAME@
+GNULIB_RENAMEAT = @GNULIB_RENAMEAT@
+GNULIB_RMDIR = @GNULIB_RMDIR@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SETLOCALE = @GNULIB_SETLOCALE@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STAT = @GNULIB_STAT@
+GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRERROR_R = @GNULIB_STRERROR_R@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRPTIME = @GNULIB_STRPTIME@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_SYMLINK = @GNULIB_SYMLINK@
+GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
+GNULIB_TIMEGM = @GNULIB_TIMEGM@
+GNULIB_TIME_R = @GNULIB_TIME_R@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
+GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
+GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNLINK = @GNULIB_UNLINK@
+GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_USLEEP = @GNULIB_USLEEP@
+GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VFSCANF = @GNULIB_VFSCANF@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSCANF = @GNULIB_VSCANF@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCPCPY = @GNULIB_WCPCPY@
+GNULIB_WCPNCPY = @GNULIB_WCPNCPY@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@
+GNULIB_WCSCAT = @GNULIB_WCSCAT@
+GNULIB_WCSCHR = @GNULIB_WCSCHR@
+GNULIB_WCSCMP = @GNULIB_WCSCMP@
+GNULIB_WCSCOLL = @GNULIB_WCSCOLL@
+GNULIB_WCSCPY = @GNULIB_WCSCPY@
+GNULIB_WCSCSPN = @GNULIB_WCSCSPN@
+GNULIB_WCSDUP = @GNULIB_WCSDUP@
+GNULIB_WCSLEN = @GNULIB_WCSLEN@
+GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@
+GNULIB_WCSNCAT = @GNULIB_WCSNCAT@
+GNULIB_WCSNCMP = @GNULIB_WCSNCMP@
+GNULIB_WCSNCPY = @GNULIB_WCSNCPY@
+GNULIB_WCSNLEN = @GNULIB_WCSNLEN@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSPBRK = @GNULIB_WCSPBRK@
+GNULIB_WCSRCHR = @GNULIB_WCSRCHR@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCSSPN = @GNULIB_WCSSPN@
+GNULIB_WCSSTR = @GNULIB_WCSSTR@
+GNULIB_WCSTOK = @GNULIB_WCSTOK@
+GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@
+GNULIB_WCSXFRM = @GNULIB_WCSXFRM@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCTOMB = @GNULIB_WCTOMB@
+GNULIB_WCTRANS = @GNULIB_WCTRANS@
+GNULIB_WCTYPE = @GNULIB_WCTYPE@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WMEMCHR = @GNULIB_WMEMCHR@
+GNULIB_WMEMCMP = @GNULIB_WMEMCMP@
+GNULIB_WMEMCPY = @GNULIB_WMEMCPY@
+GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@
+GNULIB_WMEMSET = @GNULIB_WMEMSET@
+GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
+HAVE_CHOWN = @HAVE_CHOWN@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@
+HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SETENV = @HAVE_DECL_SETENV@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@
+HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_DUPLOCALE = @HAVE_DUPLOCALE@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
+HAVE_FCHMODAT = @HAVE_FCHMODAT@
+HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
+HAVE_FCNTL = @HAVE_FCNTL@
+HAVE_FEATURES_H = @HAVE_FEATURES_H@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSTATAT = @HAVE_FSTATAT@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_FUTIMENS = @HAVE_FUTIMENS@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETGROUPS = @HAVE_GETGROUPS@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETLOGIN = @HAVE_GETLOGIN@
+HAVE_GETOPT_H = @HAVE_GETOPT_H@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
+HAVE_GRANTPT = @HAVE_GRANTPT@
+HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWBLANK = @HAVE_ISWBLANK@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
+HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
+HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
+HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
+HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
+HAVE_LCHMOD = @HAVE_LCHMOD@
+HAVE_LCHOWN = @HAVE_LCHOWN@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_LSTAT = @HAVE_LSTAT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSLEN = @HAVE_MBSLEN@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMCHR = @HAVE_MEMCHR@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDIRAT = @HAVE_MKDIRAT@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKFIFO = @HAVE_MKFIFO@
+HAVE_MKFIFOAT = @HAVE_MKFIFOAT@
+HAVE_MKNOD = @HAVE_MKNOD@
+HAVE_MKNODAT = @HAVE_MKNODAT@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
+HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
+HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
+HAVE_OPENAT = @HAVE_OPENAT@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PIPE = @HAVE_PIPE@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PWRITE = @HAVE_PWRITE@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_READLINKAT = @HAVE_READLINKAT@
+HAVE_REALPATH = @HAVE_REALPATH@
+HAVE_RENAMEAT = @HAVE_RENAMEAT@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRPTIME = @HAVE_STRPTIME@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYMLINK = @HAVE_SYMLINK@
+HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_TIMEGM = @HAVE_TIMEGM@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_USLEEP = @HAVE_USLEEP@
+HAVE_UTIMENSAT = @HAVE_UTIMENSAT@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCPCPY = @HAVE_WCPCPY@
+HAVE_WCPNCPY = @HAVE_WCPNCPY@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSCASECMP = @HAVE_WCSCASECMP@
+HAVE_WCSCAT = @HAVE_WCSCAT@
+HAVE_WCSCHR = @HAVE_WCSCHR@
+HAVE_WCSCMP = @HAVE_WCSCMP@
+HAVE_WCSCOLL = @HAVE_WCSCOLL@
+HAVE_WCSCPY = @HAVE_WCSCPY@
+HAVE_WCSCSPN = @HAVE_WCSCSPN@
+HAVE_WCSDUP = @HAVE_WCSDUP@
+HAVE_WCSLEN = @HAVE_WCSLEN@
+HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@
+HAVE_WCSNCAT = @HAVE_WCSNCAT@
+HAVE_WCSNCMP = @HAVE_WCSNCMP@
+HAVE_WCSNCPY = @HAVE_WCSNCPY@
+HAVE_WCSNLEN = @HAVE_WCSNLEN@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSPBRK = @HAVE_WCSPBRK@
+HAVE_WCSRCHR = @HAVE_WCSRCHR@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCSSPN = @HAVE_WCSSPN@
+HAVE_WCSSTR = @HAVE_WCSSTR@
+HAVE_WCSTOK = @HAVE_WCSTOK@
+HAVE_WCSWIDTH = @HAVE_WCSWIDTH@
+HAVE_WCSXFRM = @HAVE_WCSXFRM@
+HAVE_WCTRANS_T = @HAVE_WCTRANS_T@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WCTYPE_T = @HAVE_WCTYPE_T@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WMEMCHR = @HAVE_WMEMCHR@
+HAVE_WMEMCMP = @HAVE_WMEMCMP@
+HAVE_WMEMCPY = @HAVE_WMEMCPY@
+HAVE_WMEMMOVE = @HAVE_WMEMMOVE@
+HAVE_WMEMSET = @HAVE_WMEMSET@
+HAVE_XLOCALE_H = @HAVE_XLOCALE_H@
+HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
+IGNORE_UNUSED_LIBRARIES_CFLAGS = @IGNORE_UNUSED_LIBRARIES_CFLAGS@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@
+INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMULTITHREAD = @LIBMULTITHREAD@
+LIBOBJS = @LIBOBJS@
+LIBPTH = @LIBPTH@
+LIBPTH_PREFIX = @LIBPTH_PREFIX@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTHREAD = @LIBTHREAD@
+LIBTOOL = @LIBTOOL@
+LIB_BLKID = @LIB_BLKID@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBMULTITHREAD = @LTLIBMULTITHREAD@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBPTH = @LTLIBPTH@
+LTLIBTHREAD = @LTLIBTHREAD@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
+NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@
+NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
+NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@
+NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FCNTL_H = @NEXT_FCNTL_H@
+NEXT_GETOPT_H = @NEXT_GETOPT_H@
+NEXT_INTTYPES_H = @NEXT_INTTYPES_H@
+NEXT_LANGINFO_H = @NEXT_LANGINFO_H@
+NEXT_LOCALE_H = @NEXT_LOCALE_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@
+NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@
+NEXT_TIME_H = @NEXT_TIME_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PARTED_USABLE_TEST_DIR = @PARTED_USABLE_TEST_DIR@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CALLOC = @REPLACE_CALLOC@
+REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP = @REPLACE_DUP@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@
+REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FCNTL = @REPLACE_FCNTL@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FSTAT = @REPLACE_FSTAT@
+REPLACE_FSTATAT = @REPLACE_FSTATAT@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_FUTIMENS = @REPLACE_FUTIMENS@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETDELIM = @REPLACE_GETDELIM@
+REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@
+REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LINK = @REPLACE_LINK@
+REPLACE_LINKAT = @REPLACE_LINKAT@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_LSTAT = @REPLACE_LSTAT@
+REPLACE_MALLOC = @REPLACE_MALLOC@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MBTOWC = @REPLACE_MBTOWC@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKDIR = @REPLACE_MKDIR@
+REPLACE_MKFIFO = @REPLACE_MKFIFO@
+REPLACE_MKNOD = @REPLACE_MKNOD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_MKTIME = @REPLACE_MKTIME@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_OPEN = @REPLACE_OPEN@
+REPLACE_OPENAT = @REPLACE_OPENAT@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PREAD = @REPLACE_PREAD@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
+REPLACE_READ = @REPLACE_READ@
+REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_REALLOC = @REPLACE_REALLOC@
+REPLACE_REALPATH = @REPLACE_REALPATH@
+REPLACE_REMOVE = @REPLACE_REMOVE@
+REPLACE_RENAME = @REPLACE_RENAME@
+REPLACE_RENAMEAT = @REPLACE_RENAMEAT@
+REPLACE_RMDIR = @REPLACE_RMDIR@
+REPLACE_SETENV = @REPLACE_SETENV@
+REPLACE_SETLOCALE = @REPLACE_SETLOCALE@
+REPLACE_SLEEP = @REPLACE_SLEEP@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STAT = @REPLACE_STAT@
+REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRERROR_R = @REPLACE_STRERROR_R@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
+REPLACE_STRNDUP = @REPLACE_STRNDUP@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
+REPLACE_SYMLINK = @REPLACE_SYMLINK@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
+REPLACE_UNLINK = @REPLACE_UNLINK@
+REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
+REPLACE_UNSETENV = @REPLACE_UNSETENV@
+REPLACE_USLEEP = @REPLACE_USLEEP@
+REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCTOMB = @REPLACE_WCTOMB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SELINUX_LIBS = @SELINUX_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
+UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
+UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+YIELD_LIB = @YIELD_LIB@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+TESTS = t1000-label.sh t2000-disk.sh t2100-zerolen.sh t3000-symlink.sh
+EXTRA_DIST = $(TESTS)
+AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
+LDADD = \
+  $(top_builddir)/libparted/libparted.la \
+  $(CHECK_LIBS)
+
+AM_CPPFLAGS = \
+  $(CHECK_CFLAGS) \
+  -I$(top_srcdir)/lib \
+  -I$(top_srcdir)/include
+
+label_SOURCES = common.h common.c label.c
+disk_SOURCES = common.h common.c disk.c
+zerolen_SOURCES = common.h common.c zerolen.c
+symlink_SOURCES = common.h common.c symlink.c
+MAINTAINERCLEANFILES = Makefile.in
+
+# Arrange to symlink to tests/init.sh.
+CLEANFILES = init.sh
+TESTS_ENVIRONMENT = \
+  top_srcdir='$(top_srcdir)' \
+  abs_top_srcdir='$(abs_top_srcdir)' \
+  DYNAMIC_LOADING=$(DYNAMIC_LOADING) \
+  ENABLE_DEVICE_MAPPER=$(ENABLE_DEVICE_MAPPER)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .html .lo .log .o .obj .test .test$(EXEEXT)
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libparted/tests/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu libparted/tests/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-checkPROGRAMS:
+       @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+       echo " rm -f" $$list; \
+       rm -f $$list || exit $$?; \
+       test -n "$(EXEEXT)" || exit 0; \
+       list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+       echo " rm -f" $$list; \
+       rm -f $$list
+disk$(EXEEXT): $(disk_OBJECTS) $(disk_DEPENDENCIES) $(EXTRA_disk_DEPENDENCIES) 
+       @rm -f disk$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(disk_OBJECTS) $(disk_LDADD) $(LIBS)
+label$(EXEEXT): $(label_OBJECTS) $(label_DEPENDENCIES) $(EXTRA_label_DEPENDENCIES) 
+       @rm -f label$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(label_OBJECTS) $(label_LDADD) $(LIBS)
+symlink$(EXEEXT): $(symlink_OBJECTS) $(symlink_DEPENDENCIES) $(EXTRA_symlink_DEPENDENCIES) 
+       @rm -f symlink$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(symlink_OBJECTS) $(symlink_LDADD) $(LIBS)
+zerolen$(EXEEXT): $(zerolen_OBJECTS) $(zerolen_DEPENDENCIES) $(EXTRA_zerolen_DEPENDENCIES) 
+       @rm -f zerolen$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(zerolen_OBJECTS) $(zerolen_LDADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/common.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/disk.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/label.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/symlink.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zerolen.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+       @$(am__sh_e_setup);                                             \
+       list='$(TEST_LOGS)';                                            \
+       results=`for f in $$list; do                                    \
+                  test -r $$f && read line < $$f && echo "$$line"      \
+                    || echo FAIL;                                      \
+                done`;                                                 \
+       all=`echo "$$results" | sed '/^$$/d' | wc -l | sed -e 's/^[      ]*//'`; \
+       fail=`echo "$$results" | grep -c '^FAIL'`;                      \
+       pass=`echo "$$results" | grep -c '^PASS'`;                      \
+       skip=`echo "$$results" | grep -c '^SKIP'`;                      \
+       xfail=`echo "$$results" | grep -c '^XFAIL'`;                    \
+       xpass=`echo "$$results" | grep -c '^XPASS'`;                    \
+       failures=`expr $$fail + $$xpass`;                               \
+       all=`expr $$all - $$skip`;                                      \
+       if test "$$all" -eq 1; then tests=test; All=;                   \
+       else tests=tests; All="All "; fi;                               \
+       case fail=$$fail:xpass=$$xpass:xfail=$$xfail in                 \
+         fail=0:xpass=0:xfail=0)                                       \
+           msg="$$All$$all $$tests passed.  ";                         \
+           exit=true;;                                                 \
+         fail=0:xpass=0:xfail=*)                                       \
+           msg="$$All$$all $$tests behaved as expected";               \
+           if test "$$xfail" -eq 1; then xfailures=failure;            \
+           else xfailures=failures; fi;                                \
+           msg="$$msg ($$xfail expected $$xfailures).  ";              \
+           exit=true;;                                                 \
+         fail=*:xpass=0:xfail=*)                                       \
+           msg="$$fail of $$all $$tests failed.  ";                    \
+           exit=false;;                                                \
+         fail=*:xpass=*:xfail=*)                                       \
+           msg="$$failures of $$all $$tests did not behave as expected"; \
+           if test "$$xpass" -eq 1; then xpasses=pass;                 \
+           else xpasses=passes; fi;                                    \
+           msg="$$msg ($$xpass unexpected $$xpasses).  ";              \
+           exit=false;;                                                \
+         *)                                                            \
+           echo >&2 "incorrect case"; exit 4;;                         \
+       esac;                                                           \
+       if test "$$skip" -ne 0; then                                    \
+         if test "$$skip" -eq 1; then                                  \
+           msg="$$msg($$skip test was not run).  ";                    \
+         else                                                          \
+           msg="$$msg($$skip tests were not run).  ";                  \
+         fi;                                                           \
+       fi;                                                             \
+       {                                                               \
+         echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |       \
+           $(am__rst_title);                                           \
+         echo "$$msg";                                                 \
+         echo;                                                         \
+         echo ".. contents:: :depth: 2";                               \
+         echo;                                                         \
+         for f in $$list; do                                           \
+           test -r $$f && read line < $$f || line=;                    \
+           case $$line in                                              \
+             PASS:*|XFAIL:*);;                                         \
+             *) echo; cat $$f;;                                        \
+           esac;                                                       \
+         done;                                                         \
+       } >$(TEST_SUITE_LOG).tmp;                                       \
+       mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);                     \
+       if test "$$failures" -ne 0; then                                \
+         msg="$${msg}See $(subdir)/$(TEST_SUITE_LOG).  ";              \
+         if test -n "$(PACKAGE_BUGREPORT)"; then                       \
+           msg="$${msg}Please report to $(PACKAGE_BUGREPORT).  ";      \
+         fi;                                                           \
+       fi;                                                             \
+       test x"$$VERBOSE" = x || $$exit || cat $(TEST_SUITE_LOG);       \
+       $(am__tty_colors);                                              \
+       if $$exit; then                                                 \
+         echo $(ECHO_N) "$$grn$(ECHO_C)";                              \
+        else                                                           \
+         echo $(ECHO_N) "$$red$(ECHO_C)";                              \
+       fi;                                                             \
+       echo "$$msg" | $(am__text_box);                                 \
+       echo $(ECHO_N) "$$std$(ECHO_C)";                                \
+       $$exit
+
+# Run all the tests.
+check-TESTS:
+       @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
+       @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+       @list='$(TEST_LOGS)';                                           \
+       list=`for f in $$list; do                                       \
+         test .log = $$f || echo $$f;                                  \
+       done | tr '\012\015' '  '`;                                     \
+       $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$list"
+
+.log.html:
+       @list='$(RST2HTML) $$RST2HTML rst2html rst2html.py';            \
+       for r2h in $$list; do                                           \
+         if ($$r2h --version) >/dev/null 2>&1; then                    \
+           R2H=$$r2h;                                                  \
+         fi;                                                           \
+       done;                                                           \
+       if test -z "$$R2H"; then                                        \
+         echo >&2 "cannot find rst2html, cannot create $@";            \
+         exit 2;                                                       \
+       fi;                                                             \
+       $$R2H $< >$@.tmp
+       @mv $@.tmp $@
+
+# Be sure to run check first, and then to convert the result.
+# Beware of concurrent executions.  Run "check" not "check-TESTS", as
+# check-SCRIPTS and other dependencies are rebuilt by the former only.
+# And expect check to fail.
+check-html:
+       @if $(MAKE) $(AM_MAKEFLAGS) check; then                 \
+         rv=0; else rv=$$?;                                    \
+       fi;                                                     \
+       $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_HTML) || exit 4;   \
+       exit $$rv
+recheck recheck-html:
+       @target=`echo $@ | sed 's,^re,,'`;                              \
+       list='$(TEST_LOGS)';                                            \
+       list=`for f in $$list; do                                       \
+               test -f $$f || continue;                                \
+               if test -r $$f && read line < $$f; then                 \
+                 case $$line in FAIL*|XPASS*) echo $$f;; esac;         \
+               else echo $$f; fi;                                      \
+             done | tr '\012\015' '  '`;                               \
+       list=`echo "$$list" | sed 's/ *$$//'`;                          \
+       $(MAKE) $(AM_MAKEFLAGS) $$target AM_MAKEFLAGS='$(AM_MAKEFLAGS) TEST_LOGS="'"$$list"'"'
+t1000-label.sh.log: t1000-label.sh
+       @p='t1000-label.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t2000-disk.sh.log: t2000-disk.sh
+       @p='t2000-disk.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t2100-zerolen.sh.log: t2100-zerolen.sh
+       @p='t2100-zerolen.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t3000-symlink.sh.log: t3000-symlink.sh
+       @p='t3000-symlink.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+.test.log:
+       @p='$<'; $(am__check_pre) $(TEST_LOG_COMPILE) "$$tst" $(am__check_post)
+@am__EXEEXT_TRUE@.test$(EXEEXT).log:
+@am__EXEEXT_TRUE@      @p='$<'; $(am__check_pre) $(TEST_LOG_COMPILE) "$$tst" $(am__check_post)
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+       $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+       $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+       -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+       -test -z "$(TEST_LOGS_TMP)" || rm -f $(TEST_LOGS_TMP)
+       -test -z "$(TEST_SUITE_HTML)" || rm -f $(TEST_SUITE_HTML)
+       -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+       mostlyclean-am
+
+distclean: distclean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am check-html install-am install-strip recheck \
+       recheck-html
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am check-html \
+       clean clean-checkPROGRAMS clean-generic clean-libtool \
+       cscopelist ctags distclean distclean-compile distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       recheck recheck-html tags uninstall uninstall-am
+
+.PHONY: prereq
+prereq:
+       $(AM_V_GEN)ln -sf $(abs_top_srcdir)/tests/init.sh .
+$(TEST_LOGS): prereq
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libparted/tests/common.c b/libparted/tests/common.c
new file mode 100644 (file)
index 0000000..a0be997
--- /dev/null
@@ -0,0 +1,77 @@
+#include <config.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <string.h>
+
+#include <check.h>
+
+#include "common.h"
+
+#define STREQ(a, b) (strcmp (a, b) == 0)
+
+PedExceptionOption
+_test_exception_handler (PedException* e)
+{
+        fail ("Exception of type %s has been raised: %s",
+              ped_exception_get_type_string (e->type),
+              e->message);
+
+        return PED_EXCEPTION_UNHANDLED;
+}
+
+char*
+_create_disk (const off_t n_bytes)
+{
+        char* filename = strdup ("parted-test-XXXXXX");
+
+        if (filename == NULL)
+                return NULL;
+
+        int fd = mkstemp (filename);
+        if (fd < 0) {
+        free_filename:
+                free (filename);
+                return NULL;
+        }
+
+        FILE* disk = fdopen (fd, "w");
+        if (disk == NULL)
+                goto free_filename;
+
+        int fail = (fseek (disk, n_bytes, SEEK_SET) != 0
+                    || fwrite ("", sizeof (char), 1, disk) != 1);
+
+        if (fclose (disk) != 0 || fail)
+                goto free_filename;
+
+        return filename;
+}
+
+PedDisk*
+_create_disk_label (PedDevice *dev, PedDiskType *type)
+{
+        PedDisk* disk = NULL;
+
+        /* Create the label */
+        disk = ped_disk_new_fresh (dev, type);
+        fail_if (!disk, "Failed to create a label of type: %s",
+                 type->name);
+        fail_if (!ped_disk_commit(disk),
+                "Failed to commit label to device");
+
+        return disk;
+}
+
+int
+_implemented_disk_label (const char *label)
+{
+        /* FIXME: these have minor problems, so skip them, temporarily.  */
+        if (STREQ (label, "amiga")) return 0;
+
+        /* Not implemented yet */
+        if (STREQ (label, "aix")) return 0;
+        if (STREQ (label, "pc98")) return 0;
+
+        return 1;
+}
diff --git a/libparted/tests/common.h b/libparted/tests/common.h
new file mode 100644 (file)
index 0000000..8798ecb
--- /dev/null
@@ -0,0 +1,26 @@
+#include <parted/parted.h>
+
+/* Create an empty disk image
+ *
+ * filename: file (with full path) where to write the disk image
+ *     size: size of disk image (megabytes)
+ */
+char* _create_disk (const off_t size);
+
+/* Create a disk label
+ *
+ *  dev: device to use when creating the label
+ * type: label type
+ */
+PedDisk* _create_disk_label (PedDevice* dev, PedDiskType* type);
+
+/* Return if a disk label is implemented
+ *
+ * label: disk label name
+ */
+int _implemented_disk_label (const char* label);
+
+/* Test specific exception handler
+ *
+ */
+PedExceptionOption _test_exception_handler (PedException* e);
diff --git a/libparted/tests/disk.c b/libparted/tests/disk.c
new file mode 100644 (file)
index 0000000..48561b9
--- /dev/null
@@ -0,0 +1,127 @@
+#include <config.h>
+#include <unistd.h>
+
+#include <check.h>
+
+#include <parted/parted.h>
+
+#include "common.h"
+#include "progname.h"
+#include "xstrtol.h"
+
+static char* temporary_disk;
+
+static
+size_t get_sector_size (void)
+{
+  char *p = getenv ("PARTED_SECTOR_SIZE");
+  size_t ss = 512;
+  unsigned long val;
+  if (p
+      && xstrtoul (p, NULL, 10, &val, NULL) == LONGINT_OK
+      && val % 512 == 0)
+    ss = val;
+
+  return ss;
+}
+
+static void
+create_disk (void)
+{
+        temporary_disk = _create_disk (get_sector_size () * 4 * 10 * 1024);
+        fail_if (temporary_disk == NULL, "Failed to create temporary disk");
+}
+
+static void
+destroy_disk (void)
+{
+        unlink (temporary_disk);
+        free (temporary_disk);
+}
+
+/* TEST: Create a disklabel on a simple disk image */
+START_TEST (test_duplicate)
+{
+        PedDevice* dev = ped_device_get (temporary_disk);
+        if (dev == NULL)
+                return;
+
+        PedDisk* disk;
+        PedDisk* disk_dup;
+        PedPartition *part;
+        PedPartition *part_dup;
+        PedConstraint *constraint;
+
+        int part_num[] = {1, 5, 6, 0};
+
+        disk = _create_disk_label (dev, ped_disk_type_get ("msdos"));
+
+        constraint = ped_constraint_any (dev);
+
+        /* Primary partition from 16,4kB to 15MB */
+        part = ped_partition_new (disk, PED_PARTITION_EXTENDED,
+                                  NULL,
+                                  32, 29311);
+        ped_disk_add_partition (disk, part, constraint);
+
+        /* Logical partition from 10MB to 15MB */
+        part = ped_partition_new (disk, PED_PARTITION_LOGICAL,
+                                  ped_file_system_type_get ("ext2"),
+                                  19584, 29311);
+        ped_disk_add_partition (disk, part, constraint);
+
+        /* Logical partition from 16,4kB to 4981kB */
+        part = ped_partition_new (disk, PED_PARTITION_LOGICAL,
+                                  ped_file_system_type_get ("ext2"),
+                                  32, 9727);
+        ped_disk_add_partition (disk, part, constraint);
+
+        ped_disk_commit (disk);
+
+        ped_constraint_destroy (constraint);
+
+        disk_dup = ped_disk_duplicate (disk);
+
+        /* Checks if both partitions match */
+        for (int *i = part_num; *i != 0; i++) {
+                part = ped_disk_get_partition (disk, *i);
+                part_dup = ped_disk_get_partition (disk_dup, *i);
+
+                fail_if (part->geom.start != part_dup->geom.start ||
+                         part->geom.end != part_dup->geom.end,
+                         "Duplicated partition %d doesn't match. "
+                         "Details are start: %d/%d end: %d/%d\n",
+                         *i, part->geom.start, part_dup->geom.start,
+                         part->geom.end, part_dup->geom.end);
+        }
+
+        ped_disk_destroy (disk);
+        ped_device_destroy (dev);
+}
+END_TEST
+
+int
+main (int argc, char **argv)
+{
+        set_program_name (argv[0]);
+        int number_failed;
+        Suite* suite = suite_create ("Disk");
+        TCase* tcase_duplicate = tcase_create ("Duplicate");
+
+        /* Fail when an exception is raised */
+        ped_exception_set_handler (_test_exception_handler);
+
+        tcase_add_checked_fixture (tcase_duplicate, create_disk, destroy_disk);
+        tcase_add_test (tcase_duplicate, test_duplicate);
+        /* Disable timeout for this test */
+        tcase_set_timeout (tcase_duplicate, 0);
+        suite_add_tcase (suite, tcase_duplicate);
+
+        SRunner* srunner = srunner_create (suite);
+        srunner_run_all (srunner, CK_VERBOSE);
+
+        number_failed = srunner_ntests_failed (srunner);
+        srunner_free (srunner);
+
+        return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+}
diff --git a/libparted/tests/label.c b/libparted/tests/label.c
new file mode 100644 (file)
index 0000000..e0d63c7
--- /dev/null
@@ -0,0 +1,197 @@
+#include <config.h>
+#include <unistd.h>
+
+#include <check.h>
+
+#include <parted/parted.h>
+
+#include "common.h"
+#include "progname.h"
+
+#define STREQ(a, b) (strcmp (a, b) == 0)
+
+static char* temporary_disk;
+
+static void
+create_disk (void)
+{
+        temporary_disk = _create_disk (80 * 1024 * 1024);
+        fail_if (temporary_disk == NULL, "Failed to create temporary disk");
+}
+
+static void
+destroy_disk (void)
+{
+        unlink (temporary_disk);
+        free (temporary_disk);
+}
+
+/* TEST: Create a disklabel on a simple disk image */
+START_TEST (test_create_label)
+{
+        PedDevice* dev = ped_device_get (temporary_disk);
+        if (dev == NULL)
+                return;
+
+        PedDiskType* type;
+        PedDisk* disk;
+
+        for (type = ped_disk_type_get_next (NULL); type;
+             type = ped_disk_type_get_next (type)) {
+          fprintf (stderr, "create label: %s\n", type->name); fflush (stderr);
+
+                if (!_implemented_disk_label (type->name))
+                        continue;
+
+                disk = _create_disk_label (dev, type);
+                ped_disk_destroy (disk);
+        }
+        ped_device_destroy (dev);
+}
+END_TEST
+
+/* TEST: Probe the disk label of a loop device. */
+START_TEST (test_probe_label)
+{
+        PedDevice* dev = ped_device_get (temporary_disk);
+        if (dev == NULL)
+                return;
+
+        PedDiskType* probed;
+        PedDiskType* type;
+        PedDisk* disk;
+
+        for (type = ped_disk_type_get_next (NULL); type;
+             type = ped_disk_type_get_next (type)) {
+          fprintf (stderr, "PROBE label: %s\n", type->name); fflush (stderr);
+                if (!_implemented_disk_label (type->name))
+                        continue;
+
+                disk = _create_disk_label (dev, type);
+                ped_disk_destroy (disk);
+
+                /* Try to probe the disk label. */
+                probed = ped_disk_probe (dev);
+                fail_if (!probed,
+                         "Failed to probe the just created label of type: %s",
+                         type->name);
+                if (probed && !STREQ (probed->name, type->name))
+                        fail_if (1,
+                                 "Probe returned label of type: %s as type: %s",
+                                 type->name, probed->name);
+        }
+        ped_device_destroy (dev);
+}
+END_TEST
+
+/* TEST: Read the disk label of a loop device. */
+START_TEST (test_read_label)
+{
+        PedDevice* dev = ped_device_get (temporary_disk);
+        if (dev == NULL)
+                return;
+
+        PedDiskType* type;
+        PedDisk* disk;
+
+        for (type = ped_disk_type_get_next (NULL); type;
+             type = ped_disk_type_get_next (type)) {
+          fprintf (stderr, "read label: %s\n", type->name); fflush (stderr);
+                if (!_implemented_disk_label (type->name))
+                        continue;
+
+                disk = _create_disk_label (dev, type);
+                ped_disk_destroy (disk);
+
+                /* Try to read the disk label. */
+                disk = ped_disk_new (dev);
+                fail_if (!disk,
+                         "Failed to read the just created label of type: %s",
+                         type->name);
+                if (disk && !STREQ (disk->type->name, type->name))
+                        fail_if (1,
+                                 "Read returned label of type: %s as type: %s",
+                                 type->name, disk->type->name);
+
+                ped_disk_destroy (disk);
+        }
+        ped_device_destroy (dev);
+}
+END_TEST
+
+/* TEST: Clone the disk label of a loop device. */
+START_TEST (test_clone_label)
+{
+        PedDevice* dev = ped_device_get (temporary_disk);
+        if (dev == NULL)
+                return;
+
+        PedDiskType* type;
+
+        for (type = ped_disk_type_get_next (NULL); type;
+             type = ped_disk_type_get_next (type)) {
+          fprintf (stderr, "clone label: %s\n", type->name); fflush (stderr);
+                if (!_implemented_disk_label (type->name))
+                        continue;
+
+                PedDisk* disk = _create_disk_label (dev, type);
+
+                /* Try to clone the disk label. */
+                PedDisk* clone = ped_disk_duplicate (disk);
+                fail_if (!clone,
+                         "Failed to clone the just created label of type: %s",
+                         type->name);
+
+                ped_disk_destroy (clone);
+                ped_disk_destroy (disk);
+        }
+        ped_device_destroy (dev);
+}
+END_TEST
+
+int
+main (int argc, char **argv)
+{
+        set_program_name (argv[0]);
+        int number_failed;
+        Suite* suite = suite_create ("Disk Label");
+        TCase* tcase_basic = tcase_create ("Create");
+        TCase* tcase_probe = tcase_create ("Probe");
+        TCase* tcase_read = tcase_create ("Read");
+        TCase* tcase_clone = tcase_create ("Clone");
+
+        /* Fail when an exception is raised */
+        ped_exception_set_handler (_test_exception_handler);
+
+        tcase_add_checked_fixture (tcase_basic, create_disk, destroy_disk);
+        tcase_add_test (tcase_basic, test_create_label);
+        /* Disable timeout for this test */
+        tcase_set_timeout (tcase_basic, 0);
+        suite_add_tcase (suite, tcase_basic);
+
+        tcase_add_checked_fixture (tcase_probe, create_disk, destroy_disk);
+        tcase_add_test (tcase_probe, test_probe_label);
+        /* Disable timeout for this test. */
+        tcase_set_timeout (tcase_probe, 0);
+        suite_add_tcase (suite, tcase_probe);
+
+        tcase_add_checked_fixture (tcase_read, create_disk, destroy_disk);
+        tcase_add_test (tcase_read, test_read_label);
+        /* Disable timeout for this test. */
+        tcase_set_timeout (tcase_read, 0);
+        suite_add_tcase (suite, tcase_read);
+
+        tcase_add_checked_fixture (tcase_clone, create_disk, destroy_disk);
+        tcase_add_test (tcase_clone, test_clone_label);
+        /* Disable timeout for this test. */
+        tcase_set_timeout (tcase_clone, 0);
+        suite_add_tcase (suite, tcase_clone);
+
+        SRunner* srunner = srunner_create (suite);
+        srunner_run_all (srunner, CK_VERBOSE);
+
+        number_failed = srunner_ntests_failed (srunner);
+        srunner_free (srunner);
+
+        return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+}
diff --git a/libparted/tests/symlink.c b/libparted/tests/symlink.c
new file mode 100644 (file)
index 0000000..52e99ca
--- /dev/null
@@ -0,0 +1,135 @@
+/* Sometimes libparted operates on device mapper files, with a path of
+   /dev/mapper/foo. With newer lvm versions /dev/mapper/foo is a symlink to
+   /dev/dm-#. However some storage administration programs (anaconda for
+   example) may do the following:
+   1) Create a ped_device for /dev/mapper/foo
+   2) ped_get_device resolves the symlink to /dev/dm-#, and the path
+      in the PedDevice struct points to /dev/dm-#
+   3) The program does some things to lvm, causing the symlink to
+      point to a different /dev/dm-# node
+   4) The program does something with the PedDevice, which results
+      in an operation on the wrong device
+
+   Newer libparted versions do not suffer from this problem, as they
+   do not canonicalize device names under /dev/mapper. This test checks
+   for this bug. */
+
+#include <config.h>
+#include <unistd.h>
+
+#include <check.h>
+
+#include <parted/parted.h>
+
+#include "common.h"
+#include "progname.h"
+
+static char *temporary_disk;
+
+static void
+create_disk (void)
+{
+        temporary_disk = _create_disk (4096 * 1024);
+        fail_if (temporary_disk == NULL, "Failed to create temporary disk");
+}
+
+static void
+destroy_disk (void)
+{
+        unlink (temporary_disk);
+        free (temporary_disk);
+}
+
+START_TEST (test_symlink)
+{
+        char cwd[256], ln[256] = "/dev/mapper/parted-test-XXXXXX";
+
+        if (!getcwd (cwd, sizeof cwd)) {
+                fail ("Could not get cwd");
+                return;
+        }
+
+        /* Create a symlink under /dev/mapper to our
+           temporary disk */
+        int tmp_fd = mkstemp (ln);
+        if (tmp_fd == -1) {
+                fail ("Could not create tempfile");
+                return;
+        }
+
+        /* There is a temp file vulnerability symlink attack possibility
+           here, but as /dev/mapper is root owned this is a non issue */
+        close (tmp_fd);
+        unlink (ln);
+        char temp_disk_path[256];
+        snprintf (temp_disk_path, sizeof temp_disk_path, "%s/%s", cwd,
+                  temporary_disk);
+        int res = symlink (temp_disk_path, ln);
+        if (res) {
+                fail ("could not create symlink");
+                return;
+        }
+
+        PedDevice *dev = ped_device_get (ln);
+        if (dev == NULL)
+                goto exit_unlink_ln;
+
+        /* Create a second temporary_disk */
+        char *temporary_disk2 = _create_disk (4096 * 1024);
+        if (temporary_disk2 == NULL) {
+                fail ("Failed to create 2nd temporary disk");
+                goto exit_destroy_dev;
+        }
+
+        /* Remove first temporary disk, and make temporary_disk point to
+           temporary_disk2 (for destroy_disk()). */
+        unlink (temporary_disk);
+        free (temporary_disk);
+        temporary_disk = temporary_disk2;
+
+        /* Update symlink to point to our new / second temporary disk */
+        unlink (ln);
+        snprintf (temp_disk_path, sizeof temp_disk_path, "%s/%s", cwd,
+                  temporary_disk);
+        res = symlink (temp_disk_path, ln);
+        if (res) {
+                fail ("could not create 2nd symlink");
+                goto exit_destroy_dev;
+        }
+
+        /* Do something to our PedDevice, if the symlink was resolved,
+           instead of remembering the /dev/mapper/foo name, this will fail */
+        ped_disk_clobber (dev);
+
+exit_destroy_dev:
+        ped_device_destroy (dev);
+exit_unlink_ln:
+        unlink (ln);
+}
+END_TEST
+
+int
+main (int argc, char **argv)
+{
+        set_program_name (argv[0]);
+        int number_failed;
+        Suite* suite = suite_create ("Symlink");
+        TCase* tcase_symlink = tcase_create ("/dev/mapper symlink");
+
+        /* Fail when an exception is raised */
+        ped_exception_set_handler (_test_exception_handler);
+
+        tcase_add_checked_fixture (tcase_symlink, create_disk, destroy_disk);
+        tcase_add_test (tcase_symlink, test_symlink);
+        /* Disable timeout for this test */
+        tcase_set_timeout (tcase_symlink, 0);
+        suite_add_tcase (suite, tcase_symlink);
+
+        SRunner* srunner = srunner_create (suite);
+        srunner_run_all (srunner, CK_VERBOSE);
+
+        number_failed = srunner_ntests_failed (srunner);
+        srunner_free (srunner);
+
+        return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+}
diff --git a/libparted/tests/t1000-label.sh b/libparted/tests/t1000-label.sh
new file mode 100755 (executable)
index 0000000..1631193
--- /dev/null
@@ -0,0 +1,26 @@
+#!/bin/sh
+# run the label unit tests in a directory supporting O_DIRECT
+
+# Copyright (C) 2007-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+# This wrapper around the ./label binary is used to find a directory
+# in which one can open a file with the O_DIRECT flag.
+
+. "${top_srcdir=../..}/tests/init.sh"; path_prepend_ .
+
+label || fail=1
+
+Exit $fail
diff --git a/libparted/tests/t2000-disk.sh b/libparted/tests/t2000-disk.sh
new file mode 100755 (executable)
index 0000000..54a4bf4
--- /dev/null
@@ -0,0 +1,26 @@
+#!/bin/sh
+# run the disk unit tests in a directory supporting O_DIRECT
+
+# Copyright (C) 2007-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+# This wrapper around the ./label binary is used to find a directory
+# in which one can open a file with the O_DIRECT flag.
+
+. "${top_srcdir=../..}/tests/init.sh"; path_prepend_ .
+
+disk || fail=1
+
+Exit $fail
diff --git a/libparted/tests/t2100-zerolen.sh b/libparted/tests/t2100-zerolen.sh
new file mode 100755 (executable)
index 0000000..ca6bc76
--- /dev/null
@@ -0,0 +1,72 @@
+#!/bin/sh
+# run the zerolen unit tests in a directory supporting O_DIRECT
+
+# Copyright (C) 2007-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${abs_top_srcdir=../..}/tests/init.sh"; path_prepend_ .
+. $abs_top_srcdir/tests/t-lib-helpers.sh
+# Need root privileges to create a device-mapper device.
+require_root_
+device_mapper_required_
+
+init_root_dir_
+
+# This test only makes sense on Linux.
+test "$(uname -s)" = Linux \
+  || skip_ "not on Linux"
+
+test "x$DYNAMIC_LOADING" = xyes \
+  || skip_ "no dynamic loading support"
+
+test "x$ENABLE_DEVICE_MAPPER" = xyes \
+  || skip_ "no device-mapper support"
+
+# Device map name - should be random to not conflict with existing ones on
+# the system
+linear_=plinear-$$
+
+cleanup_fn_()
+{
+  # 'dmsetup remove' may fail because udev is still processing the device.
+  # Try it repeatedly for 2s.
+  i=0
+  incr=1
+  while :; do
+    dmsetup remove $linear_ > /dev/null 2>&1 && break
+    sleep .1 2>/dev/null || { sleep 1; incr=10; }
+    i=$(expr $i + $incr); test $i = 20 && break
+  done
+  if test $i = 20; then
+    dmsetup remove $linear_
+  fi
+
+  test -n "$d1" && losetup -d "$d1"
+  rm -f "$f1"
+}
+
+f1=$(pwd)/1
+d1=$(loop_setup_ "$f1") \
+  || skip_ "is this partition mounted with 'nodev'?"
+
+echo "0 1024 linear $d1 0" | dmsetup create "$linear_" \
+  || skip_ "unable to create dm device"
+
+wait_for_dev_to_appear_ "/dev/mapper/$linear_" \
+  || skip_ "dm device did not appear"
+
+zerolen /dev/mapper/$linear_ || fail=1
+
+Exit $fail
diff --git a/libparted/tests/t3000-symlink.sh b/libparted/tests/t3000-symlink.sh
new file mode 100755 (executable)
index 0000000..39946e1
--- /dev/null
@@ -0,0 +1,27 @@
+#!/bin/sh
+# run the /dev/mapper symlink test
+
+# Copyright (C) 2007-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${abs_top_srcdir=../..}/tests/init.sh"; path_prepend_ .
+
+. $abs_top_srcdir/tests/t-lib-helpers.sh
+# Need root privileges to create a symlink under /dev/mapper.
+require_root_
+
+symlink || fail=1
+
+Exit $fail
diff --git a/libparted/tests/zerolen.c b/libparted/tests/zerolen.c
new file mode 100644 (file)
index 0000000..cf2bd1c
--- /dev/null
@@ -0,0 +1,52 @@
+#include <config.h>
+#include <unistd.h>
+
+#include <check.h>
+
+#include <parted/parted.h>
+
+#include "common.h"
+#include "progname.h"
+
+static const char* temporary_disk;
+
+/* TEST: Probe a zero-length disk image without raising an exception */
+START_TEST (test_probe)
+{
+        PedDevice* dev = ped_device_get (temporary_disk);
+        if (dev)
+                ped_device_destroy (dev);
+}
+END_TEST
+
+int
+main (int argc, char **argv)
+{
+        set_program_name (argv[0]);
+        int number_failed;
+        Suite* suite = suite_create ("ZeroLen");
+        TCase* tcase_probe = tcase_create ("Probe");
+
+        if (argc < 2) {
+                fail ("Insufficient arguments");
+                return EXIT_FAILURE;
+        }
+        temporary_disk = argv[1];
+        setenv ("PARTED_TEST_DEVICE_LENGTH", "0", 1);
+
+        /* Fail when an exception is raised */
+        ped_exception_set_handler (_test_exception_handler);
+
+        tcase_add_test (tcase_probe, test_probe);
+        /* Disable timeout for this test */
+        tcase_set_timeout (tcase_probe, 0);
+        suite_add_tcase (suite, tcase_probe);
+
+        SRunner* srunner = srunner_create (suite);
+        srunner_run_all (srunner, CK_VERBOSE);
+
+        number_failed = srunner_ntests_failed (srunner);
+        srunner_free (srunner);
+
+        return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+}
diff --git a/libparted/timer.c b/libparted/timer.c
new file mode 100644 (file)
index 0000000..d12b801
--- /dev/null
@@ -0,0 +1,243 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 2001, 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+/** \file timer.c */
+
+/**
+ * \addtogroup PedTimer
+ *
+ * \brief A PedTimer keeps track of the progress of a single (possibly
+ * compound) operation.
+ *
+ * The user of libparted constructs a PedTimer, and passes it to libparted
+ * functions that are likely to be expensive operations
+ * (like ped_file_system_resize).  Use of timers is optional... you may
+ * pass NULL instead.
+ *
+ * When you create a PedTimer, you must specify a timer handler function.
+ * This will be called when there's an update on how work is progressing.
+ *
+ * Timers may be nested.  When a timer is constructed, you can choose
+ * to assign it a parent, along with an estimate of what proportion of
+ * the total (parent's) time will be used in the nested operation.  In
+ * this case, the nested timer's handler is internal to libparted,
+ * and simply updates the parent's progress, and calls its handler.
+ *
+ * @{
+ */
+
+
+#include <config.h>
+#include <parted/parted.h>
+#include <parted/debug.h>
+
+typedef struct {
+       PedTimer*       parent;
+       float           nest_frac;
+       float           start_frac;
+} NestedContext;
+
+
+/**
+ * \brief Creates a timer.
+ *
+ * Context will be passed in the \p context
+ *         argument to the \p handler, when it is invoked.
+ *
+ * \return a new PedTimer
+ */
+PedTimer*
+ped_timer_new (PedTimerHandler* handler, void* context)
+{
+       PedTimer*       timer;
+
+       PED_ASSERT (handler != NULL);
+
+       timer = (PedTimer*) ped_malloc (sizeof (PedTimer));
+       if (!timer)
+               return NULL;
+
+       timer->handler = handler;
+       timer->context = context;
+       ped_timer_reset (timer);
+       return timer;
+}
+
+
+/**
+ * \brief Destroys a \p timer.
+ */
+void
+ped_timer_destroy (PedTimer* timer)
+{
+       if (!timer)
+               return;
+
+       free (timer);
+}
+
+/* This function is used by ped_timer_new_nested() as the timer->handler
+ * function.
+ */
+static void
+_nest_handler (PedTimer* timer, void* context)
+{
+       NestedContext*  ncontext = (NestedContext*) context;
+
+       ped_timer_update (
+               ncontext->parent,
+               ncontext->start_frac + ncontext->nest_frac * timer->frac);
+}
+
+
+/**
+ * \brief Creates a new nested timer.
+ *
+ * This function creates a "nested" timer that describes the progress
+ * of a subtask. \p parent is the parent timer, and \p nested_frac is
+ * the estimated proportion (between 0 and 1) of the time that will be
+ * spent doing the nested timer's operation. The timer should only be
+ * constructed immediately prior to starting the nested operation.
+ * (It will be inaccurate, otherwise).
+ * Updates to the progress of the subtask are propagated
+ * back through to the parent task's timer.
+ *
+ * \return nested timer
+ */
+PedTimer*
+ped_timer_new_nested (PedTimer* parent, float nest_frac)
+{
+       NestedContext*  context;
+
+       if (!parent)
+               return NULL;
+
+       PED_ASSERT (nest_frac >= 0.0);
+       PED_ASSERT (nest_frac <= 1.0);
+
+       context = (NestedContext*) ped_malloc (sizeof (NestedContext));
+       if (!context)
+               return NULL;
+       context->parent = parent;
+       context->nest_frac = nest_frac;
+       context->start_frac = parent->frac;
+
+       return ped_timer_new (_nest_handler, context);
+}
+
+/**
+ * \brief Destroys a nested \p timer.
+ */
+void
+ped_timer_destroy_nested (PedTimer* timer)
+{
+       if (!timer)
+               return;
+
+       free (timer->context);
+       ped_timer_destroy (timer);
+}
+
+/**
+ * \internal
+ *
+ * \brief This function calls the update handler, making sure that it has
+ *     the latest time.
+ *
+ * First it updates \p timer->now and recomputes \p timer->predicted_end,
+ * and then calls the handler.
+ */
+void
+ped_timer_touch (PedTimer* timer)
+{
+       if (!timer)
+              return;
+
+       timer->now = time (NULL);
+       if (timer->now > timer->predicted_end)
+               timer->predicted_end = timer->now;
+
+       timer->handler (timer, timer->context);
+}
+
+/**
+ * \internal
+ *
+ * \brief This function sets the \p timer into a "start of task" position.
+ *
+ * It resets the \p timer, by setting \p timer->start and \p timer->now
+ * to the current time.
+ */
+void
+ped_timer_reset (PedTimer* timer)
+{
+       if (!timer)
+              return;
+
+       timer->start = timer->now = timer->predicted_end = time (NULL);
+       timer->state_name = NULL;
+       timer->frac = 0;
+
+       ped_timer_touch (timer);
+}
+
+/**
+ * \internal
+ *
+ * \brief This function tells a \p timer what fraction \p frac of the task
+ * has been completed.
+ *
+ * Sets the new \p timer->frac, and calls ped_timer_touch().
+ */
+void
+ped_timer_update (PedTimer* timer, float frac)
+{
+       if (!timer)
+              return;
+
+       timer->now = time (NULL);
+       timer->frac = frac;
+
+       if (frac)
+               timer->predicted_end
+                       = timer->start
+                         + (long) ((timer->now - timer->start) / frac);
+
+       ped_timer_touch (timer);
+}
+
+/**
+ * \internal
+ *
+ * \brief This function changes the description of the current task that the
+ *     \p timer describes.
+ *
+ * Sets a new name - \p state_name - for the current "phase" of the operation,
+ * and calls ped_timer_touch().
+ */
+void
+ped_timer_set_state_name (PedTimer* timer, const char* state_name)
+{
+       if (!timer)
+              return;
+
+       timer->state_name = state_name;
+       ped_timer_touch (timer);
+}
+
+/** @} */
diff --git a/libparted/unit.c b/libparted/unit.c
new file mode 100644 (file)
index 0000000..dc4205b
--- /dev/null
@@ -0,0 +1,577 @@
+/*
+    libparted - a library for manipulating disk partitions
+    Copyright (C) 2005, 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+/** \file unit.c */
+
+/**
+ * \addtogroup PedUnit
+ *
+ * \brief The PedUnit module provides a standard mechanism for describing
+ * and parsing locations within devices in human-friendly plain text.
+ *
+ * Internally, libparted uses PedSector (which is typedef'ed to be long long
+ * in <parted/device.h>) to describe device locations such as the start and
+ * end of partitions.  However, sector numbers are often long and unintuitive.
+ * For example, my extended partition starts at sector 208845.  PedUnit allows
+ * this location to be represented in more intutitive ways, including "106Mb",
+ * "0Gb" and "0%", as well as "208845s".  PedUnit aims to provide facilities
+ * to provide a consistent system for describing device locations all
+ * throughout libparted.
+ *
+ * PedUnit provides two basic services: converting a PedSector into a text
+ * representation, and parsing a text representation into a PedSector.
+ * PedUnit currently supports these units:
+ *
+ *     sectors, bytes, kilobytes, megabytes, gigabytes, terabytes, compact,
+ *     cylinder and percent.
+ *
+ * PedUnit has a global variable that contains the default unit for all
+ * conversions.
+ *
+ * @{
+ */
+
+
+
+
+#include <config.h>
+#include <parted/parted.h>
+#include <parted/debug.h>
+
+#include <ctype.h>
+#include <stdio.h>
+#include <float.h>
+
+#define N_(String) String
+#if ENABLE_NLS
+#  include <libintl.h>
+#  define _(String) dgettext (PACKAGE, String)
+#else
+#  define _(String) (String)
+#endif /* ENABLE_NLS */
+
+
+static PedUnit default_unit = PED_UNIT_COMPACT;
+static const char* unit_names[] = {
+       "s",
+       "B",
+       "kB",
+       "MB",
+       "GB",
+       "TB",
+       "compact",
+       "cyl",
+       "chs",
+       "%",
+       "kiB",
+       "MiB",
+       "GiB",
+       "TiB"
+};
+
+
+/**
+ * \brief Set the default \p unit used by subsequent calls to the PedUnit API.
+ *
+ * In particular, this affects how locations inside error messages
+ * (exceptions) are displayed.
+ */
+void
+ped_unit_set_default (PedUnit unit)
+{
+       default_unit = unit;
+}
+
+
+/**
+ * \brief Get the current default unit.
+ */
+PedUnit
+ped_unit_get_default ()
+{
+       return default_unit;
+}
+
+/**
+ * Get the byte size of a given \p unit.
+ */
+long long
+ped_unit_get_size (const PedDevice* dev, PedUnit unit)
+{
+       PedSector cyl_size = dev->bios_geom.heads * dev->bios_geom.sectors;
+
+       switch (unit) {
+               case PED_UNIT_SECTOR:   return dev->sector_size;
+               case PED_UNIT_BYTE:     return 1;
+               case PED_UNIT_KILOBYTE: return PED_KILOBYTE_SIZE;
+               case PED_UNIT_MEGABYTE: return PED_MEGABYTE_SIZE;
+               case PED_UNIT_GIGABYTE: return PED_GIGABYTE_SIZE;
+               case PED_UNIT_TERABYTE: return PED_TERABYTE_SIZE;
+               case PED_UNIT_KIBIBYTE: return PED_KIBIBYTE_SIZE;
+               case PED_UNIT_MEBIBYTE: return PED_MEBIBYTE_SIZE;
+               case PED_UNIT_GIBIBYTE: return PED_GIBIBYTE_SIZE;
+               case PED_UNIT_TEBIBYTE: return PED_TEBIBYTE_SIZE;
+               case PED_UNIT_CYLINDER: return cyl_size * dev->sector_size;
+               case PED_UNIT_CHS:      return dev->sector_size;
+
+               case PED_UNIT_PERCENT:
+                       return dev->length * dev->sector_size / 100;
+
+               case PED_UNIT_COMPACT:
+                       ped_exception_throw (
+                               PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                               _("Cannot get unit size for special unit "
+                                 "'COMPACT'."));
+                       return 0;
+       }
+
+       /* never reached */
+       PED_ASSERT(0);
+       return 0;
+}
+
+/**
+ * Get a textual (non-internationalized) representation of a \p unit.
+ *
+ * For example, the textual representation of PED_UNIT_SECTOR is "s".
+ */
+const char*
+ped_unit_get_name (PedUnit unit)
+{
+       return unit_names[unit];
+}
+
+/**
+ * Get a unit based on its textual representation: \p unit_name.
+ *
+ * For example, ped_unit_get_by_name("Mb") returns PED_UNIT_MEGABYTE.
+ */
+PedUnit
+ped_unit_get_by_name (const char* unit_name)
+{
+       PedUnit unit;
+       for (unit = PED_UNIT_FIRST; unit <= PED_UNIT_LAST; unit++) {
+               if (!strcasecmp (unit_names[unit], unit_name))
+                       return unit;
+       }
+       return -1;
+}
+
+static char*
+ped_strdup (const char *str)
+{
+       char *result;
+       result = ped_malloc (strlen (str) + 1);
+       if (!result)
+               return NULL;
+       strcpy (result, str);
+       return result;
+}
+
+/**
+ * \brief Get a string that describes the location of the \p byte on
+ * device \p dev.
+ *
+ * The string is described with the desired \p unit.
+ * The returned string must be freed with free().
+ */
+char*
+ped_unit_format_custom_byte (const PedDevice* dev, PedSector byte, PedUnit unit)
+{
+       char buf[100];
+       PedSector sector = byte / dev->sector_size;
+       double d, w;
+       int p;
+
+       PED_ASSERT (dev != NULL);
+
+       /* CHS has a special comma-separated format. */
+       if (unit == PED_UNIT_CHS) {
+               const PedCHSGeometry *chs = &dev->bios_geom;
+               snprintf (buf, 100, "%lld,%lld,%lld",
+                         sector / chs->sectors / chs->heads,
+                         (sector / chs->sectors) % chs->heads,
+                         sector % chs->sectors);
+               return ped_strdup (buf);
+       }
+
+       /* Cylinders, sectors and bytes should be rounded down... */
+       if (unit == PED_UNIT_CYLINDER
+           || unit == PED_UNIT_SECTOR
+           || unit == PED_UNIT_BYTE) {
+               snprintf (buf, 100, "%lld%s",
+                         byte / ped_unit_get_size (dev, unit),
+                         ped_unit_get_name (unit));
+               return ped_strdup (buf);
+       }
+
+        if (unit == PED_UNIT_COMPACT) {
+                if (byte >= 10LL * PED_TERABYTE_SIZE)
+                        unit = PED_UNIT_TERABYTE;
+                else if (byte >= 10LL * PED_GIGABYTE_SIZE)
+                        unit = PED_UNIT_GIGABYTE;
+                else if (byte >= 10LL * PED_MEGABYTE_SIZE)
+                        unit = PED_UNIT_MEGABYTE;
+                else if (byte >= 10LL * PED_KILOBYTE_SIZE)
+                        unit = PED_UNIT_KILOBYTE;
+                else
+                        unit = PED_UNIT_BYTE;
+       }
+
+       /* IEEE754 says that 100.5 has to be rounded to 100 (by printf) */
+       /* but 101.5 has to be rounded to 102... so we multiply by 1+E. */
+       /* This just divide by 2 the natural IEEE754 extended precision */
+       /* and won't cause any trouble before 1000 TB */
+       d = ((double)byte / ped_unit_get_size (dev, unit))
+           * (1. + DBL_EPSILON);
+       w = d + ( (d < 10. ) ? 0.005 :
+                 (d < 100.) ? 0.05  :
+                              0.5  );
+       p = (w < 10. ) ? 2 :
+           (w < 100.) ? 1 :
+                        0 ;
+
+#ifdef __BEOS__
+       snprintf (buf, 100, "%.*f%s", p, d, ped_unit_get_name(unit));
+#else
+       snprintf (buf, 100, "%1$.*2$f%3$s", d, p, ped_unit_get_name (unit));
+#endif
+
+       return ped_strdup (buf);
+}
+
+/**
+ * \brief Get a string that describes the location of the \p byte on
+ * device \p dev.
+ *
+ * The string is described with the default unit, which is set
+ * by ped_unit_set_default().
+ * The returned string must be freed with free().
+ */
+char*
+ped_unit_format_byte (const PedDevice* dev, PedSector byte)
+{
+       PED_ASSERT (dev != NULL);
+       return ped_unit_format_custom_byte (dev, byte, default_unit);
+}
+
+/**
+ * \brief Get a string that describes the location \p sector on device \p dev.
+ *
+ * The string is described with the desired \p unit.
+ * The returned string must be freed with free().
+ */
+char*
+ped_unit_format_custom (const PedDevice* dev, PedSector sector, PedUnit unit)
+{
+       PED_ASSERT (dev != NULL);
+       return ped_unit_format_custom_byte(dev, sector*dev->sector_size, unit);
+}
+
+/**
+ * \brief Get a string that describes the location \p sector on device \p dev.
+ *
+ * The string is described with the default unit, which is set
+ * by ped_unit_set_default().
+ * The returned string must be freed with free().
+ */
+char*
+ped_unit_format (const PedDevice* dev, PedSector sector)
+{
+       PED_ASSERT (dev != NULL);
+       return ped_unit_format_custom_byte (dev, sector * dev->sector_size,
+                                           default_unit);
+}
+
+/**
+ * If \p str contains a valid description of a location on \p dev,
+ * then \p *sector is modified to describe the location and a geometry
+ * is created in \p *range describing a 2 units large area centered on
+ * \p *sector.  If the \p range as described here would be partially outside
+ * the device \p dev, the geometry returned is the intersection between the
+ * former and the whole        device geometry.  If no units are specified, then the
+ * default unit is assumed.
+ *
+ * \return \c 1 if \p str is a valid location description, \c 0 otherwise
+ */
+int
+ped_unit_parse (const char* str, const PedDevice* dev, PedSector *sector,
+               PedGeometry** range)
+{
+       return ped_unit_parse_custom (str, dev, default_unit, sector, range);
+}
+
+/* Inefficiently removes all spaces from a string, in-place. */
+static void
+strip_string (char* str)
+{
+       int i;
+
+       for (i = 0; str[i] != 0; i++) {
+               if (isspace (str[i])) {
+                       int j;
+                       for (j = i + 1; str[j] != 0; j++)
+                               str[j - 1] = str[j];
+               }
+       }
+}
+
+
+/* Find non-number suffix.  Eg: find_suffix("32Mb") returns a pointer to
+ * "Mb". */
+static char*
+find_suffix (const char* str)
+{
+       while (str[0] != 0 && (isdigit (str[0]) || strchr(",.-", str[0])))
+               str++;
+       return (char *) str;
+}
+
+static void
+remove_punct (char* str)
+{
+       int i = 0;
+
+       for (i = 0; str[i]; i++) {
+               if (ispunct (str[i]))
+                       str[i] = ' ';
+       }
+}
+
+static int
+is_chs (const char* str)
+{
+       int punct_count = 0;
+       int i = 0;
+
+       for (i = 0; str[i]; i++)
+               punct_count += ispunct (str[i]) != 0;
+       return punct_count == 2;
+}
+
+static int
+parse_chs (const char* str, const PedDevice* dev, PedSector* sector,
+               PedGeometry** range)
+{
+       PedSector cyl_size = dev->bios_geom.heads * dev->bios_geom.sectors;
+       PedCHSGeometry chs;
+
+       char* copy = ped_strdup (str);
+       if (!copy)
+               return 0;
+       strip_string (copy);
+       remove_punct (copy);
+
+       if (sscanf (copy, "%d %d %d",
+                   &chs.cylinders, &chs.heads, &chs.sectors) != 3) {
+               ped_exception_throw (
+                               PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                               _("\"%s\" has invalid syntax for locations."),
+                               copy);
+               goto error_free_copy;
+       }
+
+       if (chs.heads >= dev->bios_geom.heads) {
+               ped_exception_throw (
+                               PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                               _("The maximum head value is %d."),
+                               dev->bios_geom.heads - 1);
+               goto error_free_copy;
+       }
+       if (chs.sectors >= dev->bios_geom.sectors) {
+               ped_exception_throw (
+                               PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                               _("The maximum sector value is %d."),
+                               dev->bios_geom.sectors - 1);
+               goto error_free_copy;
+       }
+
+       *sector = 1LL * chs.cylinders * cyl_size
+               + chs.heads * dev->bios_geom.sectors
+               + chs.sectors;
+
+       if (*sector >= dev->length) {
+               ped_exception_throw (
+                               PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                               _("The location %s is outside of the "
+                                 "device %s."),
+                               str, dev->path);
+               goto error_free_copy;
+       }
+       if (range)
+               *range = ped_geometry_new (dev, *sector, 1);
+       free (copy);
+       return !range || *range != NULL;
+
+error_free_copy:
+       free (copy);
+       *sector = 0;
+       if (range)
+               *range = NULL;
+       return 0;
+}
+
+static PedSector
+clip (const PedDevice* dev, PedSector sector)
+{
+       if (sector < 0)
+               return 0;
+       if (sector > dev->length - 1)
+               return dev->length - 1;
+       return sector;
+}
+
+static PedGeometry*
+geometry_from_centre_radius (const PedDevice* dev,
+                             PedSector sector, PedSector radius)
+{
+       PedSector start = clip (dev, sector - radius);
+       PedSector end = clip (dev, sector + radius);
+       if (sector - end > radius || start - sector > radius)
+               return NULL;
+       return ped_geometry_new (dev, start, end - start + 1);
+}
+
+static PedUnit
+parse_unit_suffix (const char* suffix, PedUnit suggested_unit)
+{
+       if (strlen (suffix) > 1 && tolower (suffix[1]) == 'i') {
+               switch (tolower (suffix[0])) {
+                       case 'k': return PED_UNIT_KIBIBYTE;
+                       case 'm': return PED_UNIT_MEBIBYTE;
+                       case 'g': return PED_UNIT_GIBIBYTE;
+                       case 't': return PED_UNIT_TEBIBYTE;
+               }
+       } else if (strlen (suffix) > 0) {
+               switch (tolower (suffix[0])) {
+                       case 's': return PED_UNIT_SECTOR;
+                       case 'b': return PED_UNIT_BYTE;
+                       case 'k': return PED_UNIT_KILOBYTE;
+                       case 'm': return PED_UNIT_MEGABYTE;
+                       case 'g': return PED_UNIT_GIGABYTE;
+                       case 't': return PED_UNIT_TERABYTE;
+                       case 'c': return PED_UNIT_CYLINDER;
+                       case '%': return PED_UNIT_PERCENT;
+               }
+       }
+
+       if (suggested_unit == PED_UNIT_COMPACT) {
+               if (default_unit == PED_UNIT_COMPACT)
+                       return PED_UNIT_MEGABYTE;
+               else
+                       return default_unit;
+       }
+
+       return suggested_unit;
+}
+
+static bool
+is_power_of_2 (long long n)
+{
+  return (n & (n - 1)) == 0;
+}
+
+/**
+ * If \p str contains a valid description of a location on \p dev, then
+ * \p *sector is modified to describe the location and a geometry is created
+ * in \p *range describing a 2 units large area centered on \p *sector.  If the
+ * \p range as described here would be partially outside the device \p dev, the
+ * geometry returned is the intersection between the former and the whole
+ * device geometry.  If no units are specified, then the default unit is
+ * assumed.
+ *
+ * \throws PED_EXCEPTION_ERROR if \p str contains invalid description of a
+ * location
+ * \throws PED_EXCEPTION_ERROR if location described by \p str
+ * is outside of the device \p dev->path
+ *
+ * \return \c 1 if \p str is a valid location description, \c 0 otherwise.
+ */
+int
+ped_unit_parse_custom (const char* str, const PedDevice* dev, PedUnit unit,
+                      PedSector* sector, PedGeometry** range)
+{
+       char*     copy;
+       char*     suffix;
+       double    num;
+       long long unit_size;
+       PedSector radius;
+
+       if (is_chs (str))
+               return parse_chs (str, dev, sector, range);
+
+       copy = ped_strdup (str);
+       if (!copy)
+               goto error;
+       strip_string (copy);
+
+       suffix = find_suffix (copy);
+       unit = parse_unit_suffix (suffix, unit);
+       suffix[0] = 0;
+
+       if (sscanf (copy, "%lf", &num) != 1) {
+               ped_exception_throw (
+                               PED_EXCEPTION_ERROR,
+                               PED_EXCEPTION_CANCEL,
+                               _("Invalid number."));
+               goto error_free_copy;
+       }
+
+       unit_size = ped_unit_get_size (dev, unit);
+       radius = ped_div_round_up (unit_size, dev->sector_size) - 1;
+       if (radius < 0)
+               radius = 0;
+       /* If the user specifies units in a power of 2, e.g., 4MiB, as in
+              parted -s -- $dev mklabel gpt mkpart P-NAME 4MiB -34s
+          do not use 4MiB as the range.  Rather, presume that they
+          are specifying precisely the starting or ending number,
+          and treat "4MiB" just as we would treat "4194304B".  */
+       if (is_power_of_2 (unit_size))
+               radius = 0;
+
+       *sector = num * unit_size / dev->sector_size;
+       /* negative numbers count from the end */
+       if (copy[0] == '-')
+               *sector += dev->length;
+       if (range) {
+               *range = geometry_from_centre_radius (dev, *sector, radius);
+               if (!*range) {
+                       ped_exception_throw (
+                               PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                               _("The location %s is outside of the "
+                                 "device %s."),
+                               str, dev->path);
+                       goto error_free_copy;
+               }
+       }
+       *sector = clip (dev, *sector);
+
+       free (copy);
+       return 1;
+
+error_free_copy:
+       free (copy);
+error:
+       *sector = 0;
+       if (range)
+               *range = NULL;
+       return 0;
+}
+
+
+/** @} */
diff --git a/m4/00gnulib.m4 b/m4/00gnulib.m4
new file mode 100644 (file)
index 0000000..7feed46
--- /dev/null
@@ -0,0 +1,30 @@
+# 00gnulib.m4 serial 2
+dnl Copyright (C) 2009-2011 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 This file must be named something that sorts before all other
+dnl gnulib-provided .m4 files.  It is needed until such time as we can
+dnl assume Autoconf 2.64, with its improved AC_DEFUN_ONCE semantics.
+
+# AC_DEFUN_ONCE([NAME], VALUE)
+# ----------------------------
+# Define NAME to expand to VALUE on the first use (whether by direct
+# expansion, or by AC_REQUIRE), and to nothing on all subsequent uses.
+# Avoid bugs in AC_REQUIRE in Autoconf 2.63 and earlier.  This
+# definition is slower than the version in Autoconf 2.64, because it
+# can only use interfaces that existed since 2.59; but it achieves the
+# same effect.  Quoting is necessary to avoid confusing Automake.
+m4_version_prereq([2.63.263], [],
+[m4_define([AC][_DEFUN_ONCE],
+  [AC][_DEFUN([$1],
+    [AC_REQUIRE([_gl_DEFUN_ONCE([$1])],
+      [m4_indir([_gl_DEFUN_ONCE([$1])])])])]dnl
+[AC][_DEFUN([_gl_DEFUN_ONCE([$1])], [$2])])])
+
+# gl_00GNULIB
+# -----------
+# Witness macro that this file has been included.  Needed to force
+# Automake to include this file prior to all other gnulib .m4 files.
+AC_DEFUN([gl_00GNULIB])
diff --git a/m4/alloca.m4 b/m4/alloca.m4
new file mode 100644 (file)
index 0000000..689da75
--- /dev/null
@@ -0,0 +1,44 @@
+# alloca.m4 serial 11
+dnl Copyright (C) 2002-2004, 2006-2007, 2009-2011 Free Software Foundation,
+dnl 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.
+
+AC_DEFUN([gl_FUNC_ALLOCA],
+[
+  AC_REQUIRE([AC_FUNC_ALLOCA])
+  if test $ac_cv_func_alloca_works = no; then
+    gl_PREREQ_ALLOCA
+  fi
+
+  # Define an additional variable used in the Makefile substitution.
+  if test $ac_cv_working_alloca_h = yes; then
+    AC_CACHE_CHECK([for alloca as a compiler built-in], [gl_cv_rpl_alloca], [
+      AC_EGREP_CPP([Need own alloca], [
+#if defined __GNUC__ || defined _AIX || defined _MSC_VER
+        Need own alloca
+#endif
+        ], [gl_cv_rpl_alloca=yes], [gl_cv_rpl_alloca=no])
+    ])
+    if test $gl_cv_rpl_alloca = yes; then
+      dnl OK, alloca can be implemented through a compiler built-in.
+      AC_DEFINE([HAVE_ALLOCA], [1],
+        [Define to 1 if you have 'alloca' after including <alloca.h>,
+         a header that may be supplied by this distribution.])
+      ALLOCA_H=alloca.h
+    else
+      dnl alloca exists as a library function, i.e. it is slow and probably
+      dnl a memory leak. Don't define HAVE_ALLOCA in this case.
+      ALLOCA_H=
+    fi
+  else
+    ALLOCA_H=alloca.h
+  fi
+  AC_SUBST([ALLOCA_H])
+  AM_CONDITIONAL([GL_GENERATE_ALLOCA_H], [test -n "$ALLOCA_H"])
+])
+
+# Prerequisites of lib/alloca.c.
+# STACK_DIRECTION is already handled by AC_FUNC_ALLOCA.
+AC_DEFUN([gl_PREREQ_ALLOCA], [:])
diff --git a/m4/argmatch.m4 b/m4/argmatch.m4
new file mode 100644 (file)
index 0000000..eddca3f
--- /dev/null
@@ -0,0 +1,10 @@
+#serial 3
+dnl Copyright (C) 2005-2006, 2009-2011 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.
+
+AC_DEFUN([gl_ARGMATCH],
+[
+  AC_LIBOBJ([argmatch])
+])
diff --git a/m4/assert.m4 b/m4/assert.m4
new file mode 100644 (file)
index 0000000..2de5ef5
--- /dev/null
@@ -0,0 +1,24 @@
+#serial 7
+
+# Copyright (C) 1998-1999, 2001, 2004, 2008-2011 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.
+
+dnl based on code from Eleftherios Gkioulekas
+dnl Autoconf 2.60 provides AC_HEADER_ASSERT for the same purpose, but
+dnl it has broken semantics for --enable-assert until 2.64.
+AC_DEFUN([gl_ASSERT],
+[
+  AC_MSG_CHECKING([whether to enable assertions])
+  AC_ARG_ENABLE([assert],
+    [AS_HELP_STRING([--disable-assert], [turn off assertions])],
+    [AS_IF([test "x$enableval" = xno],
+      [AC_DEFINE([NDEBUG], [1],
+        [Define to 1 if assertions should be disabled.])],
+      [test "x$enableval" != xyes],
+      [AC_MSG_WARN([invalid argument supplied to --enable-assert])
+      enable_assert=yes])],
+    [enable_assert=yes])
+  AC_MSG_RESULT([$enable_assert])
+])
diff --git a/m4/btowc.m4 b/m4/btowc.m4
new file mode 100644 (file)
index 0000000..32bf0cf
--- /dev/null
@@ -0,0 +1,120 @@
+# btowc.m4 serial 9
+dnl Copyright (C) 2008-2011 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.
+
+AC_DEFUN([gl_FUNC_BTOWC],
+[
+  AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
+
+  dnl Check whether <wchar.h> is usable at all, first. Otherwise the test
+  dnl program below may lead to an endless loop. See
+  dnl <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42440>.
+  AC_REQUIRE([gl_WCHAR_H_INLINE_OK])
+
+  AC_CHECK_FUNCS_ONCE([btowc])
+  if test $ac_cv_func_btowc = no; then
+    HAVE_BTOWC=0
+  else
+
+    AC_REQUIRE([AC_PROG_CC])
+    AC_REQUIRE([gt_LOCALE_FR])
+    AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+
+    dnl Cygwin 1.7.2 btowc('\0') is WEOF, not 0.
+    AC_CACHE_CHECK([whether btowc(0) is correct],
+      [gl_cv_func_btowc_nul],
+      [
+        AC_RUN_IFELSE(
+          [AC_LANG_SOURCE([[
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int main ()
+{
+  if (btowc ('\0') != 0)
+    return 1;
+  return 0;
+}]])],
+          [gl_cv_func_btowc_nul=yes],
+          [gl_cv_func_btowc_nul=no],
+          [
+changequote(,)dnl
+           case "$host_os" in
+                      # Guess no on Cygwin.
+             cygwin*) gl_cv_func_btowc_nul="guessing no" ;;
+                      # Guess yes otherwise.
+             *)       gl_cv_func_btowc_nul="guessing yes" ;;
+           esac
+changequote([,])dnl
+          ])
+      ])
+
+    dnl IRIX 6.5 btowc(EOF) is 0xFF, not WEOF.
+    AC_CACHE_CHECK([whether btowc(EOF) is correct],
+      [gl_cv_func_btowc_eof],
+      [
+        dnl Initial guess, used when cross-compiling or when no suitable locale
+        dnl is present.
+changequote(,)dnl
+        case "$host_os" in
+                 # Guess no on IRIX.
+          irix*) gl_cv_func_btowc_eof="guessing no" ;;
+                 # Guess yes otherwise.
+          *)     gl_cv_func_btowc_eof="guessing yes" ;;
+        esac
+changequote([,])dnl
+        if test $LOCALE_FR != none; then
+          AC_RUN_IFELSE(
+            [AC_LANG_SOURCE([[
+#include <locale.h>
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int main ()
+{
+  if (setlocale (LC_ALL, "$LOCALE_FR") != NULL)
+    {
+      if (btowc (EOF) != WEOF)
+        return 1;
+    }
+  return 0;
+}]])],
+            [gl_cv_func_btowc_eof=yes],
+            [gl_cv_func_btowc_eof=no],
+            [:])
+        fi
+      ])
+
+    case "$gl_cv_func_btowc_nul" in
+      *yes) ;;
+      *) REPLACE_BTOWC=1 ;;
+    esac
+    case "$gl_cv_func_btowc_eof" in
+      *yes) ;;
+      *) REPLACE_BTOWC=1 ;;
+    esac
+  fi
+  if test $HAVE_BTOWC = 0 || test $REPLACE_BTOWC = 1; then
+    AC_LIBOBJ([btowc])
+    gl_PREREQ_BTOWC
+  fi
+])
+
+# Prerequisites of lib/btowc.c.
+AC_DEFUN([gl_PREREQ_BTOWC], [
+  :
+])
diff --git a/m4/calloc.m4 b/m4/calloc.m4
new file mode 100644 (file)
index 0000000..8f462b3
--- /dev/null
@@ -0,0 +1,77 @@
+# calloc.m4 serial 12
+
+# Copyright (C) 2004-2011 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.
+
+# Written by Jim Meyering.
+
+# Determine whether calloc (N, S) returns non-NULL when N*S is zero,
+# and returns NULL when N*S overflows.
+# If so, define HAVE_CALLOC.  Otherwise, define calloc to rpl_calloc
+# and arrange to use a calloc wrapper function that does work in that case.
+
+# _AC_FUNC_CALLOC_IF([IF-WORKS], [IF-NOT])
+# -------------------------------------
+# If `calloc (0, 0)' is properly handled, run IF-WORKS, otherwise, IF-NOT.
+AC_DEFUN([_AC_FUNC_CALLOC_IF],
+[
+  AC_REQUIRE([AC_TYPE_SIZE_T])dnl
+  AC_CACHE_CHECK([for GNU libc compatible calloc],
+    [ac_cv_func_calloc_0_nonnull],
+    [AC_RUN_IFELSE(
+       [AC_LANG_PROGRAM(
+          [AC_INCLUDES_DEFAULT],
+          [[int result = 0;
+            if (!calloc (0, 0))
+              result |= 1;
+            if (calloc ((size_t) -1 / 8 + 1, 8))
+              result |= 2;
+            return result;
+          ]])],
+       [ac_cv_func_calloc_0_nonnull=yes],
+       [ac_cv_func_calloc_0_nonnull=no],
+       [ac_cv_func_calloc_0_nonnull=no])])
+  AS_IF([test $ac_cv_func_calloc_0_nonnull = yes], [$1], [$2])
+])# AC_FUNC_CALLOC
+
+
+# gl_FUNC_CALLOC_GNU
+# ------------------
+# Report whether `calloc (0, 0)' is properly handled, and replace calloc if
+# needed.
+AC_DEFUN([gl_FUNC_CALLOC_GNU],
+[
+  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+  _AC_FUNC_CALLOC_IF(
+    [AC_DEFINE([HAVE_CALLOC_GNU], [1],
+               [Define to 1 if your system has a GNU libc compatible `calloc'
+                function, and to 0 otherwise.])],
+    [AC_DEFINE([HAVE_CALLOC_GNU], [0])
+     gl_REPLACE_CALLOC
+    ])
+])# gl_FUNC_CALLOC_GNU
+
+
+# gl_FUNC_CALLOC_POSIX
+# --------------------
+# Test whether 'calloc' is POSIX compliant (sets errno to ENOMEM when it
+# fails), and replace calloc if it is not.
+AC_DEFUN([gl_FUNC_CALLOC_POSIX],
+[
+  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+  AC_REQUIRE([gl_CHECK_MALLOC_POSIX])
+  if test $gl_cv_func_malloc_posix = yes; then
+    AC_DEFINE([HAVE_CALLOC_POSIX], [1],
+      [Define if the 'calloc' function is POSIX compliant.])
+  else
+    gl_REPLACE_CALLOC
+  fi
+])
+
+AC_DEFUN([gl_REPLACE_CALLOC],
+[
+  AC_LIBOBJ([calloc])
+  REPLACE_CALLOC=1
+])
diff --git a/m4/canonicalize.m4 b/m4/canonicalize.m4
new file mode 100644 (file)
index 0000000..9a099bd
--- /dev/null
@@ -0,0 +1,96 @@
+# canonicalize.m4 serial 19
+
+dnl Copyright (C) 2003-2007, 2009-2011 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.
+
+# Provides canonicalize_file_name and canonicalize_filename_mode, but does
+# not provide or fix realpath.
+AC_DEFUN([gl_FUNC_CANONICALIZE_FILENAME_MODE],
+[
+  AC_LIBOBJ([canonicalize])
+
+  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+  AC_CHECK_FUNCS_ONCE([canonicalize_file_name])
+  AC_REQUIRE([gl_DOUBLE_SLASH_ROOT])
+  AC_REQUIRE([gl_FUNC_REALPATH_WORKS])
+  if test $ac_cv_func_canonicalize_file_name = no; then
+    HAVE_CANONICALIZE_FILE_NAME=0
+  elif test "$gl_cv_func_realpath_works" != yes; then
+    REPLACE_CANONICALIZE_FILE_NAME=1
+  fi
+])
+
+# Provides canonicalize_file_name and realpath.
+AC_DEFUN([gl_CANONICALIZE_LGPL],
+[
+  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+  AC_REQUIRE([gl_CANONICALIZE_LGPL_SEPARATE])
+  if test $ac_cv_func_canonicalize_file_name = no; then
+    HAVE_CANONICALIZE_FILE_NAME=0
+    AC_LIBOBJ([canonicalize-lgpl])
+    if test $ac_cv_func_realpath = no; then
+      HAVE_REALPATH=0
+    elif test "$gl_cv_func_realpath_works" != yes; then
+      REPLACE_REALPATH=1
+    fi
+  elif test "$gl_cv_func_realpath_works" != yes; then
+    AC_LIBOBJ([canonicalize-lgpl])
+    REPLACE_REALPATH=1
+    REPLACE_CANONICALIZE_FILE_NAME=1
+  fi
+])
+
+# Like gl_CANONICALIZE_LGPL, except prepare for separate compilation
+# (no REPLACE_CANONICALIZE_FILE_NAME, no REPLACE_REALPATH, no AC_LIBOBJ).
+AC_DEFUN([gl_CANONICALIZE_LGPL_SEPARATE],
+[
+  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+  AC_CHECK_FUNCS_ONCE([canonicalize_file_name getcwd readlink])
+  AC_REQUIRE([gl_DOUBLE_SLASH_ROOT])
+  AC_REQUIRE([gl_FUNC_REALPATH_WORKS])
+  AC_CHECK_HEADERS_ONCE([sys/param.h])
+])
+
+# Check whether realpath works.  Assume that if a platform has both
+# realpath and canonicalize_file_name, but the former is broken, then
+# so is the latter.
+AC_DEFUN([gl_FUNC_REALPATH_WORKS],
+[
+  AC_CHECK_FUNCS_ONCE([realpath])
+  AC_CACHE_CHECK([whether realpath works], [gl_cv_func_realpath_works], [
+    touch conftest.a
+    AC_RUN_IFELSE([
+      AC_LANG_PROGRAM([[
+        ]GL_NOCRASH[
+        #include <stdlib.h>
+      ]], [[
+        int result = 0;
+        {
+          char *name = realpath ("conftest.a", NULL);
+          if (!(name && *name == '/'))
+            result |= 1;
+        }
+        {
+          char *name = realpath ("conftest.b/../conftest.a", NULL);
+          if (name != NULL)
+            result |= 2;
+        }
+        {
+          char *name = realpath ("conftest.a/", NULL);
+          if (name != NULL)
+            result |= 4;
+        }
+        return result;
+      ]])
+    ], [gl_cv_func_realpath_works=yes], [gl_cv_func_realpath_works=no],
+       [gl_cv_func_realpath_works="guessing no"])
+  ])
+  if test "$gl_cv_func_realpath_works" = yes; then
+    AC_DEFINE([FUNC_REALPATH_WORKS], [1], [Define to 1 if realpath()
+      can malloc memory, always gives an absolute path, and handles
+      trailing slash correctly.])
+  fi
+])
diff --git a/m4/close-stream.m4 b/m4/close-stream.m4
new file mode 100644 (file)
index 0000000..2a7349c
--- /dev/null
@@ -0,0 +1,13 @@
+#serial 3
+dnl Copyright (C) 2006-2007, 2009-2011 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.
+
+AC_DEFUN([gl_CLOSE_STREAM],
+[
+  AC_LIBOBJ([close-stream])
+
+  dnl Prerequisites of lib/close-stream.c.
+  :
+])
diff --git a/m4/close.m4 b/m4/close.m4
new file mode 100644 (file)
index 0000000..fc13138
--- /dev/null
@@ -0,0 +1,26 @@
+# close.m4 serial 5
+dnl Copyright (C) 2008-2011 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.
+
+AC_DEFUN([gl_FUNC_CLOSE],
+[
+  m4_ifdef([gl_PREREQ_SYS_H_WINSOCK2], [
+    gl_PREREQ_SYS_H_WINSOCK2
+    if test $UNISTD_H_HAVE_WINSOCK2_H = 1; then
+      dnl Even if the 'socket' module is not used here, another part of the
+      dnl application may use it and pass file descriptors that refer to
+      dnl sockets to the close() function. So enable the support for sockets.
+      gl_REPLACE_CLOSE
+    fi
+  ])
+])
+
+AC_DEFUN([gl_REPLACE_CLOSE],
+[
+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+  REPLACE_CLOSE=1
+  AC_LIBOBJ([close])
+  gl_REPLACE_FCLOSE
+])
diff --git a/m4/closeout.m4 b/m4/closeout.m4
new file mode 100644 (file)
index 0000000..0586b32
--- /dev/null
@@ -0,0 +1,14 @@
+# closeout.m4 serial 5
+dnl Copyright (C) 2002-2003, 2005-2006, 2009-2011 Free Software Foundation,
+dnl 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.
+
+AC_DEFUN([gl_CLOSEOUT],
+[
+  AC_LIBOBJ([closeout])
+
+  dnl Prerequisites of lib/closeout.c.
+  :
+])
diff --git a/m4/codeset.m4 b/m4/codeset.m4
new file mode 100644 (file)
index 0000000..da73552
--- /dev/null
@@ -0,0 +1,23 @@
+# codeset.m4 serial 5 (gettext-0.18.2)
+dnl Copyright (C) 2000-2002, 2006, 2008-2011 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.
+
+AC_DEFUN([AM_LANGINFO_CODESET],
+[
+  AC_CACHE_CHECK([for nl_langinfo and CODESET], [am_cv_langinfo_codeset],
+    [AC_LINK_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[#include <langinfo.h>]],
+          [[char* cs = nl_langinfo(CODESET); return !cs;]])],
+       [am_cv_langinfo_codeset=yes],
+       [am_cv_langinfo_codeset=no])
+    ])
+  if test $am_cv_langinfo_codeset = yes; then
+    AC_DEFINE([HAVE_LANGINFO_CODESET], [1],
+      [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
+  fi
+])
diff --git a/m4/config-h.m4 b/m4/config-h.m4
new file mode 100644 (file)
index 0000000..2dc77a6
--- /dev/null
@@ -0,0 +1,13 @@
+# Say that -DHAVE_CONFIG_H is not needed.
+
+dnl Copyright (C) 2006, 2009-2011 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 Written by Paul Eggert.
+
+# This package's source files all include config.h unconditionally,
+# so there's no need to pass -DHAVE_CONFIG_H to the compiler.
+AC_DEFUN([gl_CONFIG_H],
+  [AC_CONFIG_COMMANDS_PRE([test "X$DEFS" = X-DHAVE_CONFIG_H && DEFS=])])
diff --git a/m4/configmake.m4 b/m4/configmake.m4
new file mode 100644 (file)
index 0000000..a029823
--- /dev/null
@@ -0,0 +1,50 @@
+# configmake.m4 serial 1
+dnl Copyright (C) 2010-2011 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.
+
+# gl_CONFIGMAKE_PREP
+# ------------------
+# Guarantee all of the standard directory variables, even when used with
+# autoconf 2.59 (datarootdir wasn't supported until 2.59c) or automake
+# 1.9.6 (pkglibexecdir wasn't supported until 1.10b.).
+AC_DEFUN([gl_CONFIGMAKE_PREP],
+[
+  dnl Technically, datadir should default to datarootdir.  But if
+  dnl autoconf is too old to provide datarootdir, then reversing the
+  dnl definition is a reasonable compromise.  Only AC_SUBST a variable
+  dnl if it was not already defined earlier by autoconf.
+  if test "x$datarootdir" = x; then
+    AC_SUBST([datarootdir], ['${datadir}'])
+  fi
+  dnl Copy the approach used in autoconf 2.60.
+  if test "x$docdir" = x; then
+    AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME],
+      ['${datarootdir}/doc/${PACKAGE_TARNAME}'],
+      ['${datarootdir}/doc/${PACKAGE}'])])
+  fi
+  dnl The remaining variables missing from autoconf 2.59 are easier.
+  if test "x$htmldir" = x; then
+    AC_SUBST([htmldir], ['${docdir}'])
+  fi
+  if test "x$dvidir" = x; then
+    AC_SUBST([dvidir], ['${docdir}'])
+  fi
+  if test "x$pdfdir" = x; then
+    AC_SUBST([pdfdir], ['${docdir}'])
+  fi
+  if test "x$psdir" = x; then
+    AC_SUBST([psdir], ['${docdir}'])
+  fi
+  if test "x$lispdir" = x; then
+    AC_SUBST([lispdir], ['${datarootdir}/emacs/site-lisp'])
+  fi
+  if test "x$localedir" = x; then
+    AC_SUBST([localedir], ['${datarootdir}/locale'])
+  fi
+
+  dnl Automake 1.9.6 only lacks pkglibexecdir; and since 1.11 merely
+  dnl provides it without AC_SUBST, this blind use of AC_SUBST is safe.
+  AC_SUBST([pkglibexecdir], ['${libexecdir}/${PACKAGE}'])
+])
diff --git a/m4/dirname.m4 b/m4/dirname.m4
new file mode 100644 (file)
index 0000000..9d5f40d
--- /dev/null
@@ -0,0 +1,25 @@
+#serial 9   -*- autoconf -*-
+dnl Copyright (C) 2002-2006, 2009-2011 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.
+
+AC_DEFUN([gl_DIRNAME],
+[
+  AC_REQUIRE([gl_DIRNAME_LGPL])
+  AC_LIBOBJ([basename])
+  AC_LIBOBJ([dirname])
+])
+
+AC_DEFUN([gl_DIRNAME_LGPL],
+[
+  AC_LIBOBJ([basename-lgpl])
+  AC_LIBOBJ([dirname-lgpl])
+  AC_LIBOBJ([stripslash])
+
+  dnl Prerequisites of lib/dirname.h.
+  AC_REQUIRE([gl_DOUBLE_SLASH_ROOT])
+
+  dnl No prerequisites of lib/basename-lgpl.c, lib/dirname-lgpl.c,
+  dnl lib/stripslash.c.
+])
diff --git a/m4/double-slash-root.m4 b/m4/double-slash-root.m4
new file mode 100644 (file)
index 0000000..16a4e3e
--- /dev/null
@@ -0,0 +1,38 @@
+# double-slash-root.m4 serial 4   -*- Autoconf -*-
+dnl Copyright (C) 2006, 2008-2011 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.
+
+AC_DEFUN([gl_DOUBLE_SLASH_ROOT],
+[
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  AC_CACHE_CHECK([whether // is distinct from /], [gl_cv_double_slash_root],
+    [ if test x"$cross_compiling" = xyes ; then
+        # When cross-compiling, there is no way to tell whether // is special
+        # short of a list of hosts.  However, the only known hosts to date
+        # that have a distinct // are Apollo DomainOS (too old to port to),
+        # Cygwin, and z/OS.  If anyone knows of another system for which // has
+        # special semantics and is distinct from /, please report it to
+        # <bug-gnulib@gnu.org>.
+        case $host in
+          *-cygwin | i370-ibm-openedition)
+            gl_cv_double_slash_root=yes ;;
+          *)
+            # Be optimistic and assume that / and // are the same when we
+            # don't know.
+            gl_cv_double_slash_root='unknown, assuming no' ;;
+        esac
+      else
+        set x `ls -di / // 2>/dev/null`
+        if test "$[2]" = "$[4]" && wc //dev/null >/dev/null 2>&1; then
+          gl_cv_double_slash_root=no
+        else
+          gl_cv_double_slash_root=yes
+        fi
+      fi])
+  if test "$gl_cv_double_slash_root" = yes; then
+    AC_DEFINE([DOUBLE_SLASH_IS_DISTINCT_ROOT], [1],
+      [Define to 1 if // is a file system root distinct from /.])
+  fi
+])
diff --git a/m4/dup2.m4 b/m4/dup2.m4
new file mode 100644 (file)
index 0000000..62e31a8
--- /dev/null
@@ -0,0 +1,77 @@
+#serial 12
+dnl Copyright (C) 2002, 2005, 2007, 2009-2011 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.
+
+AC_DEFUN([gl_FUNC_DUP2],
+[
+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  m4_ifdef([gl_FUNC_DUP2_OBSOLETE], [
+    AC_CHECK_FUNCS_ONCE([dup2])
+    if test $ac_cv_func_dup2 = no; then
+      HAVE_DUP2=0
+      AC_LIBOBJ([dup2])
+    fi
+  ], [
+    AC_DEFINE([HAVE_DUP2], [1], [Define to 1 if you have the 'dup2' function.])
+  ])
+  AC_CHECK_FUNCS_ONCE([fcntl])
+  if test $HAVE_DUP2 = 1; then
+    AC_CACHE_CHECK([whether dup2 works], [gl_cv_func_dup2_works],
+      [AC_RUN_IFELSE([
+         AC_LANG_PROGRAM([[#include <unistd.h>
+#include <fcntl.h>
+#include <errno.h>]],
+           [int result = 0;
+#if HAVE_FCNTL
+            if (fcntl (1, F_SETFD, FD_CLOEXEC) == -1)
+              result |= 1;
+#endif HAVE_FCNTL
+            if (dup2 (1, 1) == 0)
+              result |= 2;
+#if HAVE_FCNTL
+            if (fcntl (1, F_GETFD) != FD_CLOEXEC)
+              result |= 4;
+#endif
+            close (0);
+            if (dup2 (0, 0) != -1)
+              result |= 8;
+            /* Many gnulib modules require POSIX conformance of EBADF.  */
+            if (dup2 (2, 1000000) == -1 && errno != EBADF)
+              result |= 16;
+            return result;
+           ])
+        ],
+        [gl_cv_func_dup2_works=yes], [gl_cv_func_dup2_works=no],
+        [case "$host_os" in
+           mingw*) # on this platform, dup2 always returns 0 for success
+             gl_cv_func_dup2_works=no;;
+           cygwin*) # on cygwin 1.5.x, dup2(1,1) returns 0
+             gl_cv_func_dup2_works=no;;
+           linux*) # On linux between 2008-07-27 and 2009-05-11, dup2 of a
+                   # closed fd may yield -EBADF instead of -1 / errno=EBADF.
+             gl_cv_func_dup2_works=no;;
+           freebsd*) # on FreeBSD 6.1, dup2(1,1000000) gives EMFILE, not EBADF.
+             gl_cv_func_dup2_works=no;;
+           haiku*) # on Haiku alpha 2, dup2(1, 1) resets FD_CLOEXEC.
+             gl_cv_func_dup2_works=no;;
+           *) gl_cv_func_dup2_works=yes;;
+         esac])
+      ])
+    if test "$gl_cv_func_dup2_works" = no; then
+      gl_REPLACE_DUP2
+    fi
+  fi
+])
+
+AC_DEFUN([gl_REPLACE_DUP2],
+[
+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+  AC_CHECK_FUNCS_ONCE([dup2])
+  if test $ac_cv_func_dup2 = yes; then
+    REPLACE_DUP2=1
+  fi
+  AC_LIBOBJ([dup2])
+])
diff --git a/m4/eealloc.m4 b/m4/eealloc.m4
new file mode 100644 (file)
index 0000000..3006c48
--- /dev/null
@@ -0,0 +1,32 @@
+# eealloc.m4 serial 2
+dnl Copyright (C) 2003, 2009-2011 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.
+
+AC_DEFUN([gl_EEALLOC],
+[
+  AC_REQUIRE([gl_EEMALLOC])
+  AC_REQUIRE([gl_EEREALLOC])
+  AC_REQUIRE([AC_C_INLINE])
+])
+
+AC_DEFUN([gl_EEMALLOC],
+[
+  _AC_FUNC_MALLOC_IF(
+    [gl_cv_func_malloc_0_nonnull=1],
+    [gl_cv_func_malloc_0_nonnull=0])
+  AC_DEFINE_UNQUOTED([MALLOC_0_IS_NONNULL], [$gl_cv_func_malloc_0_nonnull],
+    [If malloc(0) is != NULL, define this to 1.  Otherwise define this
+     to 0.])
+])
+
+AC_DEFUN([gl_EEREALLOC],
+[
+  _AC_FUNC_REALLOC_IF(
+    [gl_cv_func_realloc_0_nonnull=1],
+    [gl_cv_func_realloc_0_nonnull=0])
+  AC_DEFINE_UNQUOTED([REALLOC_0_IS_NONNULL], [$gl_cv_func_realloc_0_nonnull],
+    [If realloc(NULL,0) is != NULL, define this to 1.  Otherwise define this
+     to 0.])
+])
diff --git a/m4/environ.m4 b/m4/environ.m4
new file mode 100644 (file)
index 0000000..7457ad1
--- /dev/null
@@ -0,0 +1,38 @@
+# environ.m4 serial 5
+dnl Copyright (C) 2001-2004, 2006-2011 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.
+
+AC_DEFUN_ONCE([gl_ENVIRON],
+[
+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+  dnl Persuade glibc <unistd.h> to declare environ.
+  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+  gt_CHECK_VAR_DECL([#include <unistd.h>], environ)
+  if test $gt_cv_var_environ_declaration != yes; then
+    HAVE_DECL_ENVIRON=0
+  fi
+])
+
+# Check if a variable is properly declared.
+# gt_CHECK_VAR_DECL(includes,variable)
+AC_DEFUN([gt_CHECK_VAR_DECL],
+[
+  define([gt_cv_var], [gt_cv_var_]$2[_declaration])
+  AC_MSG_CHECKING([if $2 is properly declared])
+  AC_CACHE_VAL([gt_cv_var], [
+    AC_COMPILE_IFELSE(
+      [AC_LANG_PROGRAM(
+         [[$1
+           extern struct { int foo; } $2;]],
+         [[$2.foo = 1;]])],
+      [gt_cv_var=no],
+      [gt_cv_var=yes])])
+  AC_MSG_RESULT([$gt_cv_var])
+  if test $gt_cv_var = yes; then
+    AC_DEFINE([HAVE_]m4_translit($2, [a-z], [A-Z])[_DECL], 1,
+              [Define if you have the declaration of $2.])
+  fi
+  undefine([gt_cv_var])
+])
diff --git a/m4/errno_h.m4 b/m4/errno_h.m4
new file mode 100644 (file)
index 0000000..a6d37f3
--- /dev/null
@@ -0,0 +1,119 @@
+# errno_h.m4 serial 9
+dnl Copyright (C) 2004, 2006, 2008-2011 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.
+
+AC_DEFUN_ONCE([gl_HEADER_ERRNO_H],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_CACHE_CHECK([for complete errno.h], [gl_cv_header_errno_h_complete], [
+    AC_EGREP_CPP([booboo],[
+#include <errno.h>
+#if !defined ENOMSG
+booboo
+#endif
+#if !defined EIDRM
+booboo
+#endif
+#if !defined ENOLINK
+booboo
+#endif
+#if !defined EPROTO
+booboo
+#endif
+#if !defined EMULTIHOP
+booboo
+#endif
+#if !defined EBADMSG
+booboo
+#endif
+#if !defined EOVERFLOW
+booboo
+#endif
+#if !defined ENOTSUP
+booboo
+#endif
+#if !defined ESTALE
+booboo
+#endif
+#if !defined EDQUOT
+booboo
+#endif
+#if !defined ECANCELED
+booboo
+#endif
+      ],
+      [gl_cv_header_errno_h_complete=no],
+      [gl_cv_header_errno_h_complete=yes])
+  ])
+  if test $gl_cv_header_errno_h_complete = yes; then
+    ERRNO_H=''
+  else
+    gl_NEXT_HEADERS([errno.h])
+    ERRNO_H='errno.h'
+  fi
+  AC_SUBST([ERRNO_H])
+  AM_CONDITIONAL([GL_GENERATE_ERRNO_H], [test -n "$ERRNO_H"])
+  gl_REPLACE_ERRNO_VALUE([EMULTIHOP])
+  gl_REPLACE_ERRNO_VALUE([ENOLINK])
+  gl_REPLACE_ERRNO_VALUE([EOVERFLOW])
+])
+
+# Assuming $1 = EOVERFLOW.
+# The EOVERFLOW errno value ought to be defined in <errno.h>, according to
+# POSIX.  But some systems (like OpenBSD 4.0 or AIX 3) don't define it, and
+# some systems (like OSF/1) define it when _XOPEN_SOURCE_EXTENDED is defined.
+# Check for the value of EOVERFLOW.
+# Set the variables EOVERFLOW_HIDDEN and EOVERFLOW_VALUE.
+AC_DEFUN([gl_REPLACE_ERRNO_VALUE],
+[
+  if test -n "$ERRNO_H"; then
+    AC_CACHE_CHECK([for ]$1[ value], [gl_cv_header_errno_h_]$1, [
+      AC_EGREP_CPP([yes],[
+#include <errno.h>
+#ifdef ]$1[
+yes
+#endif
+      ],
+      [gl_cv_header_errno_h_]$1[=yes],
+      [gl_cv_header_errno_h_]$1[=no])
+      if test $gl_cv_header_errno_h_]$1[ = no; then
+        AC_EGREP_CPP([yes],[
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+#ifdef ]$1[
+yes
+#endif
+          ], [gl_cv_header_errno_h_]$1[=hidden])
+        if test $gl_cv_header_errno_h_]$1[ = hidden; then
+          dnl The macro exists but is hidden.
+          dnl Define it to the same value.
+          AC_COMPUTE_INT([gl_cv_header_errno_h_]$1, $1, [
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug.  */
+#include <stdio.h>
+#include <stdlib.h>
+])
+        fi
+      fi
+    ])
+    case $gl_cv_header_errno_h_]$1[ in
+      yes | no)
+        ]$1[_HIDDEN=0; ]$1[_VALUE=
+        ;;
+      *)
+        ]$1[_HIDDEN=1; ]$1[_VALUE="$gl_cv_header_errno_h_]$1["
+        ;;
+    esac
+    AC_SUBST($1[_HIDDEN])
+    AC_SUBST($1[_VALUE])
+  fi
+])
+
+dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in.
+dnl Remove this when we can assume autoconf >= 2.61.
+m4_ifdef([AC_COMPUTE_INT], [], [
+  AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])])
+])
diff --git a/m4/error.m4 b/m4/error.m4
new file mode 100644 (file)
index 0000000..6ea75ac
--- /dev/null
@@ -0,0 +1,39 @@
+#serial 13
+
+# Copyright (C) 1996-1998, 2001-2004, 2009-2011 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.
+
+AC_DEFUN([gl_ERROR],
+[
+  AC_FUNC_ERROR_AT_LINE
+  dnl Note: AC_FUNC_ERROR_AT_LINE does AC_LIBSOURCES([error.h, error.c]).
+  gl_PREREQ_ERROR
+])
+
+# Redefine AC_FUNC_ERROR_AT_LINE, because it is no longer maintained in
+# Autoconf.
+AC_DEFUN([AC_FUNC_ERROR_AT_LINE],
+[
+  AC_LIBSOURCES([error.h, error.c])dnl
+  AC_CACHE_CHECK([for error_at_line], [ac_cv_lib_error_at_line],
+    [AC_LINK_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[#include <error.h>]],
+          [[error_at_line (0, 0, "", 0, "an error occurred");]])],
+       [ac_cv_lib_error_at_line=yes],
+       [ac_cv_lib_error_at_line=no])])
+  if test $ac_cv_lib_error_at_line = no; then
+    AC_LIBOBJ([error])
+  fi
+])
+
+# Prerequisites of lib/error.c.
+AC_DEFUN([gl_PREREQ_ERROR],
+[
+  AC_REQUIRE([AC_FUNC_STRERROR_R])
+  AC_REQUIRE([AC_C_INLINE])
+  :
+])
diff --git a/m4/extensions.m4 b/m4/extensions.m4
new file mode 100644 (file)
index 0000000..1330503
--- /dev/null
@@ -0,0 +1,118 @@
+# serial 9  -*- Autoconf -*-
+# Enable extensions on systems that normally disable them.
+
+# Copyright (C) 2003, 2006-2011 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 definition of AC_USE_SYSTEM_EXTENSIONS is stolen from CVS
+# Autoconf.  Perhaps we can remove this once we can assume Autoconf
+# 2.62 or later everywhere, but since CVS Autoconf mutates rapidly
+# enough in this area it's likely we'll need to redefine
+# AC_USE_SYSTEM_EXTENSIONS for quite some time.
+
+# If autoconf reports a warning
+#     warning: AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS
+# or  warning: AC_RUN_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS
+# the fix is
+#   1) to ensure that AC_USE_SYSTEM_EXTENSIONS is never directly invoked
+#      but always AC_REQUIREd,
+#   2) to ensure that for each occurrence of
+#        AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+#      or
+#        AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+#      the corresponding gnulib module description has 'extensions' among
+#      its dependencies. This will ensure that the gl_USE_SYSTEM_EXTENSIONS
+#      invocation occurs in gl_EARLY, not in gl_INIT.
+
+# AC_USE_SYSTEM_EXTENSIONS
+# ------------------------
+# Enable extensions on systems that normally disable them,
+# typically due to standards-conformance issues.
+# Remember that #undef in AH_VERBATIM gets replaced with #define by
+# AC_DEFINE.  The goal here is to define all known feature-enabling
+# macros, then, if reports of conflicts are made, disable macros that
+# cause problems on some platforms (such as __EXTENSIONS__).
+AC_DEFUN_ONCE([AC_USE_SYSTEM_EXTENSIONS],
+[AC_BEFORE([$0], [AC_COMPILE_IFELSE])dnl
+AC_BEFORE([$0], [AC_RUN_IFELSE])dnl
+
+  AC_REQUIRE([AC_CANONICAL_HOST])
+
+  AC_CHECK_HEADER([minix/config.h], [MINIX=yes], [MINIX=])
+  if test "$MINIX" = yes; then
+    AC_DEFINE([_POSIX_SOURCE], [1],
+      [Define to 1 if you need to in order for `stat' and other
+       things to work.])
+    AC_DEFINE([_POSIX_1_SOURCE], [2],
+      [Define to 2 if the system does not provide POSIX.1 features
+       except with this defined.])
+    AC_DEFINE([_MINIX], [1],
+      [Define to 1 if on MINIX.])
+  fi
+
+  dnl HP-UX 11.11 defines mbstate_t only if _XOPEN_SOURCE is defined to 500,
+  dnl regardless of whether the flags -Ae or _D_HPUX_SOURCE=1 are already
+  dnl provided.
+  case "$host_os" in
+    hpux*)
+      AC_DEFINE([_XOPEN_SOURCE], [500],
+        [Define to 500 only on HP-UX.])
+      ;;
+  esac
+
+  AH_VERBATIM([__EXTENSIONS__],
+[/* Enable extensions on AIX 3, Interix.  */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif
+/* Enable GNU extensions on systems that have them.  */
+#ifndef _GNU_SOURCE
+# undef _GNU_SOURCE
+#endif
+/* Enable threading extensions on Solaris.  */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+/* Enable extensions on HP NonStop.  */
+#ifndef _TANDEM_SOURCE
+# undef _TANDEM_SOURCE
+#endif
+/* Enable general extensions on Solaris.  */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+])
+  AC_CACHE_CHECK([whether it is safe to define __EXTENSIONS__],
+    [ac_cv_safe_to_define___extensions__],
+    [AC_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM([[
+#         define __EXTENSIONS__ 1
+          ]AC_INCLUDES_DEFAULT])],
+       [ac_cv_safe_to_define___extensions__=yes],
+       [ac_cv_safe_to_define___extensions__=no])])
+  test $ac_cv_safe_to_define___extensions__ = yes &&
+    AC_DEFINE([__EXTENSIONS__])
+  AC_DEFINE([_ALL_SOURCE])
+  AC_DEFINE([_GNU_SOURCE])
+  AC_DEFINE([_POSIX_PTHREAD_SEMANTICS])
+  AC_DEFINE([_TANDEM_SOURCE])
+])# AC_USE_SYSTEM_EXTENSIONS
+
+# gl_USE_SYSTEM_EXTENSIONS
+# ------------------------
+# Enable extensions on systems that normally disable them,
+# typically due to standards-conformance issues.
+AC_DEFUN_ONCE([gl_USE_SYSTEM_EXTENSIONS],
+[
+  dnl Require this macro before AC_USE_SYSTEM_EXTENSIONS.
+  dnl gnulib does not need it. But if it gets required by third-party macros
+  dnl after AC_USE_SYSTEM_EXTENSIONS is required, autoconf 2.62..2.63 emit a
+  dnl warning: "AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS".
+  dnl Note: We can do this only for one of the macros AC_AIX, AC_GNU_SOURCE,
+  dnl AC_MINIX. If people still use AC_AIX or AC_MINIX, they are out of luck.
+  AC_REQUIRE([AC_GNU_SOURCE])
+
+  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+])
diff --git a/m4/fclose.m4 b/m4/fclose.m4
new file mode 100644 (file)
index 0000000..349b5f1
--- /dev/null
@@ -0,0 +1,20 @@
+# fclose.m4 serial 4
+dnl Copyright (C) 2008-2011 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.
+
+AC_DEFUN([gl_FUNC_FCLOSE],
+[
+  gl_FUNC_FFLUSH_STDIN
+  if test $gl_cv_func_fflush_stdin = no; then
+    gl_REPLACE_FCLOSE
+  fi
+])
+
+AC_DEFUN([gl_REPLACE_FCLOSE],
+[
+  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+  REPLACE_FCLOSE=1
+  AC_LIBOBJ([fclose])
+])
diff --git a/m4/fcntl-o.m4 b/m4/fcntl-o.m4
new file mode 100644 (file)
index 0000000..88db07e
--- /dev/null
@@ -0,0 +1,112 @@
+# fcntl-o.m4 serial 3
+dnl Copyright (C) 2006, 2009-2011 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 Written by Paul Eggert.
+
+# Test whether the flags O_NOATIME and O_NOFOLLOW actually work.
+# Define HAVE_WORKING_O_NOATIME to 1 if O_NOATIME works, or to 0 otherwise.
+# Define HAVE_WORKING_O_NOFOLLOW to 1 if O_NOFOLLOW works, or to 0 otherwise.
+AC_DEFUN([gl_FCNTL_O_FLAGS],
+[
+  dnl Persuade glibc <fcntl.h> to define O_NOATIME and O_NOFOLLOW.
+  dnl AC_USE_SYSTEM_EXTENSIONS was introduced in autoconf 2.60 and obsoletes
+  dnl AC_GNU_SOURCE.
+  m4_ifdef([AC_USE_SYSTEM_EXTENSIONS],
+    [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])],
+    [AC_REQUIRE([AC_GNU_SOURCE])])
+  AC_CACHE_CHECK([for working fcntl.h], [gl_cv_header_working_fcntl_h],
+    [AC_RUN_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[#include <sys/types.h>
+           #include <sys/stat.h>
+           #include <unistd.h>
+           #include <fcntl.h>
+           #ifndef O_NOATIME
+            #define O_NOATIME 0
+           #endif
+           #ifndef O_NOFOLLOW
+            #define O_NOFOLLOW 0
+           #endif
+           static int const constants[] =
+            {
+              O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND,
+              O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY
+            };
+          ]],
+          [[
+            int result = !constants;
+            {
+              static char const sym[] = "conftest.sym";
+              if (symlink (".", sym) != 0)
+                result |= 2;
+              else
+                {
+                  int fd = open (sym, O_RDONLY | O_NOFOLLOW);
+                  if (fd >= 0)
+                    {
+                      close (fd);
+                      result |= 4;
+                    }
+                }
+              unlink (sym);
+            }
+            {
+              static char const file[] = "confdefs.h";
+              int fd = open (file, O_RDONLY | O_NOATIME);
+              if (fd < 0)
+                result |= 8;
+              else
+                {
+                  struct stat st0;
+                  if (fstat (fd, &st0) != 0)
+                    result |= 16;
+                  else
+                    {
+                      char c;
+                      sleep (1);
+                      if (read (fd, &c, 1) != 1)
+                        result |= 24;
+                      else
+                        {
+                          if (close (fd) != 0)
+                            result |= 32;
+                          else
+                            {
+                              struct stat st1;
+                              if (stat (file, &st1) != 0)
+                                result |= 40;
+                              else
+                                if (st0.st_atime != st1.st_atime)
+                                  result |= 64;
+                            }
+                        }
+                    }
+                }
+            }
+            return result;]])],
+       [gl_cv_header_working_fcntl_h=yes],
+       [case $? in #(
+        4) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #(
+        64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #(
+        68) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #(
+         *) gl_cv_header_working_fcntl_h='no';;
+        esac],
+       [gl_cv_header_working_fcntl_h=cross-compiling])])
+
+  case $gl_cv_header_working_fcntl_h in #(
+  *O_NOATIME* | no | cross-compiling) ac_val=0;; #(
+  *) ac_val=1;;
+  esac
+  AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOATIME], [$ac_val],
+    [Define to 1 if O_NOATIME works.])
+
+  case $gl_cv_header_working_fcntl_h in #(
+  *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #(
+  *) ac_val=1;;
+  esac
+  AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOFOLLOW], [$ac_val],
+    [Define to 1 if O_NOFOLLOW works.])
+])
diff --git a/m4/fcntl_h.m4 b/m4/fcntl_h.m4
new file mode 100644 (file)
index 0000000..c466da4
--- /dev/null
@@ -0,0 +1,44 @@
+# serial 13
+# Configure fcntl.h.
+dnl Copyright (C) 2006-2007, 2009-2011 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 Written by Paul Eggert.
+
+AC_DEFUN([gl_FCNTL_H],
+[
+  AC_REQUIRE([gl_FCNTL_H_DEFAULTS])
+  AC_REQUIRE([gl_FCNTL_O_FLAGS])
+  gl_NEXT_HEADERS([fcntl.h])
+
+  dnl Check for declarations of anything we want to poison if the
+  dnl corresponding gnulib module is not in use, if it is not common
+  dnl enough to be declared everywhere.
+  gl_WARN_ON_USE_PREPARE([[#include <fcntl.h>
+    ]], [fcntl openat])
+])
+
+AC_DEFUN([gl_FCNTL_MODULE_INDICATOR],
+[
+  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+  AC_REQUIRE([gl_FCNTL_H_DEFAULTS])
+  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+  dnl Define it also as a C macro, for the benefit of the unit tests.
+  gl_MODULE_INDICATOR_FOR_TESTS([$1])
+])
+
+AC_DEFUN([gl_FCNTL_H_DEFAULTS],
+[
+  GNULIB_FCNTL=0;        AC_SUBST([GNULIB_FCNTL])
+  GNULIB_NONBLOCKING=0;  AC_SUBST([GNULIB_NONBLOCKING])
+  GNULIB_OPEN=0;         AC_SUBST([GNULIB_OPEN])
+  GNULIB_OPENAT=0;       AC_SUBST([GNULIB_OPENAT])
+  dnl Assume proper GNU behavior unless another module says otherwise.
+  HAVE_FCNTL=1;          AC_SUBST([HAVE_FCNTL])
+  HAVE_OPENAT=1;         AC_SUBST([HAVE_OPENAT])
+  REPLACE_FCNTL=0;       AC_SUBST([REPLACE_FCNTL])
+  REPLACE_OPEN=0;        AC_SUBST([REPLACE_OPEN])
+  REPLACE_OPENAT=0;      AC_SUBST([REPLACE_OPENAT])
+])
diff --git a/m4/fflush.m4 b/m4/fflush.m4
new file mode 100644 (file)
index 0000000..69eb86e
--- /dev/null
@@ -0,0 +1,88 @@
+# fflush.m4 serial 11
+
+# Copyright (C) 2007-2011 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.
+
+dnl From Eric Blake
+
+dnl Find out how to obey POSIX semantics of fflush(stdin) discarding
+dnl unread input on seekable streams, rather than C99 undefined semantics.
+
+AC_DEFUN([gl_FUNC_FFLUSH],
+[
+  gl_FUNC_FFLUSH_STDIN
+  if test $gl_cv_func_fflush_stdin = no; then
+    gl_REPLACE_FFLUSH
+  fi
+])
+
+dnl Determine whether fflush works on input streams.
+dnl Sets gl_cv_func_fflush_stdin.
+
+AC_DEFUN([gl_FUNC_FFLUSH_STDIN],
+[
+  AC_CACHE_CHECK([whether fflush works on input streams],
+    [gl_cv_func_fflush_stdin],
+    [echo hello world > conftest.txt
+     AC_RUN_IFELSE([AC_LANG_PROGRAM(
+       [[
+#include <stdio.h>
+#include <unistd.h>
+       ]], [[FILE *f = fopen ("conftest.txt", "r");
+         char buffer[10];
+         int fd;
+         int c;
+         if (f == NULL)
+           return 1;
+         fd = fileno (f);
+         if (fd < 0 || fread (buffer, 1, 5, f) != 5)
+           return 2;
+         /* For deterministic results, ensure f read a bigger buffer.  */
+         if (lseek (fd, 0, SEEK_CUR) == 5)
+           return 3;
+         /* POSIX requires fflush-fseek to set file offset of fd.  This fails
+            on BSD systems and on mingw.  */
+         if (fflush (f) != 0 || fseek (f, 0, SEEK_CUR) != 0)
+           return 4;
+         if (lseek (fd, 0, SEEK_CUR) != 5)
+           return 5;
+         /* Verify behaviour of fflush after ungetc. See
+            <http://www.opengroup.org/austin/aardvark/latest/xshbug3.txt>  */
+         /* Verify behaviour of fflush after a backup ungetc.  This fails on
+            mingw.  */
+         c = fgetc (f);
+         ungetc (c, f);
+         fflush (f);
+         if (fgetc (f) != c)
+           return 6;
+         /* Verify behaviour of fflush after a non-backup ungetc.  This fails
+            on glibc 2.8 and on BSD systems.  */
+         c = fgetc (f);
+         ungetc ('@', f);
+         fflush (f);
+         if (fgetc (f) != c)
+           return 7;
+         return 0;
+       ]])], [gl_cv_func_fflush_stdin=yes], [gl_cv_func_fflush_stdin=no],
+     [dnl Pessimistically assume fflush is broken.
+      gl_cv_func_fflush_stdin=no])
+     rm conftest.txt
+    ])
+])
+
+AC_DEFUN([gl_REPLACE_FFLUSH],
+[
+  AC_LIBOBJ([fflush])
+  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+  REPLACE_FFLUSH=1
+  gl_PREREQ_FFLUSH
+])
+
+# Prerequisites of lib/fflush.c.
+AC_DEFUN([gl_PREREQ_FFLUSH],
+[
+  AC_REQUIRE([AC_C_INLINE])
+  :
+])
diff --git a/m4/fpending.m4 b/m4/fpending.m4
new file mode 100644 (file)
index 0000000..314e003
--- /dev/null
@@ -0,0 +1,83 @@
+# serial 15
+
+# Copyright (C) 2000-2001, 2004-2011 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.
+
+dnl From Jim Meyering
+dnl Using code from emacs, based on suggestions from Paul Eggert
+dnl and Ulrich Drepper.
+
+dnl Find out how to determine the number of pending output bytes on a stream.
+dnl glibc (2.1.93 and newer) and Solaris provide __fpending.  On other systems,
+dnl we have to grub around in the FILE struct.
+
+AC_DEFUN([gl_FUNC_FPENDING],
+[
+  AC_CHECK_HEADERS_ONCE([stdio_ext.h])
+  AC_CHECK_FUNCS_ONCE([__fpending])
+  fp_headers='
+#     include <stdio.h>
+#     if HAVE_STDIO_EXT_H
+#      include <stdio_ext.h>
+#     endif
+'
+  AC_CHECK_DECLS([__fpending], , , $fp_headers)
+  if test $ac_cv_func___fpending = no; then
+    AC_CACHE_CHECK(
+              [how to determine the number of pending output bytes on a stream],
+                   ac_cv_sys_pending_output_n_bytes,
+      [
+        for ac_expr in                                                    \
+                                                                          \
+            '# glibc2'                                                    \
+            'fp->_IO_write_ptr - fp->_IO_write_base'                      \
+                                                                          \
+            '# traditional Unix'                                          \
+            'fp->_ptr - fp->_base'                                        \
+                                                                          \
+            '# BSD'                                                       \
+            'fp->_p - fp->_bf._base'                                      \
+                                                                          \
+            '# SCO, Unixware'                                             \
+            '(fp->__ptr ? fp->__ptr - fp->__base : 0)'                    \
+                                                                          \
+            '# QNX'                                                       \
+            '(fp->_Mode & 0x2000 /*_MWRITE*/ ? fp->_Next - fp->_Buf : 0)' \
+                                                                          \
+            '# old glibc?'                                                \
+            'fp->__bufp - fp->__buffer'                                   \
+                                                                          \
+            '# old glibc iostream?'                                       \
+            'fp->_pptr - fp->_pbase'                                      \
+                                                                          \
+            '# emx+gcc'                                                   \
+            'fp->_ptr - fp->_buffer'                                      \
+                                                                          \
+            '# VMS'                                                       \
+            '(*fp)->_ptr - (*fp)->_base'                                  \
+                                                                          \
+            '# e.g., DGUX R4.11; the info is not available'               \
+            1                                                             \
+            ; do
+
+          # Skip each embedded comment.
+          case "$ac_expr" in '#'*) continue;; esac
+
+          AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]],
+            [[FILE *fp = stdin; (void) ($ac_expr);]])],
+            [fp_done=yes]
+          )
+          test "$fp_done" = yes && break
+        done
+
+        ac_cv_sys_pending_output_n_bytes=$ac_expr
+      ]
+    )
+    AC_DEFINE_UNQUOTED([PENDING_OUTPUT_N_BYTES],
+      $ac_cv_sys_pending_output_n_bytes,
+      [the number of pending output bytes on stream `fp'])
+    AC_LIBOBJ([fpending])
+  fi
+])
diff --git a/m4/fpurge.m4 b/m4/fpurge.m4
new file mode 100644 (file)
index 0000000..a62c2fe
--- /dev/null
@@ -0,0 +1,45 @@
+# fpurge.m4 serial 6
+dnl Copyright (C) 2007, 2009-2011 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.
+
+AC_DEFUN([gl_FUNC_FPURGE],
+[
+  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+  AC_CHECK_FUNCS_ONCE([fpurge])
+  AC_CHECK_FUNCS_ONCE([__fpurge])
+  AC_CHECK_DECLS([fpurge], , , [[#include <stdio.h>]])
+  if test "x$ac_cv_func_fpurge" = xyes; then
+    # Detect BSD bug.  Only cygwin 1.7 is known to be immune.
+    AC_CACHE_CHECK([whether fpurge works], [gl_cv_func_fpurge_works],
+      [AC_RUN_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>
+]], [FILE *f = fopen ("conftest.txt", "w+");
+        if (!f) return 1;
+        if (fputc ('a', f) != 'a') return 2;
+        rewind (f);
+        if (fgetc (f) != 'a') return 3;
+        if (fgetc (f) != EOF) return 4;
+        if (fpurge (f) != 0) return 5;
+        if (putc ('b', f) != 'b') return 6;
+        if (fclose (f) != 0) return 7;
+        if ((f = fopen ("conftest.txt", "r")) == NULL) return 8;
+        if (fgetc (f) != 'a') return 9;
+        if (fgetc (f) != 'b') return 10;
+        if (fgetc (f) != EOF) return 11;
+        if (fclose (f) != 0) return 12;
+        if (remove ("conftest.txt") != 0) return 13;
+        return 0;])],
+      [gl_cv_func_fpurge_works=yes], [gl_cv_func_fpurge_works=no],
+      [gl_cv_func_fpurge_works='guessing no'])])
+    if test "x$gl_cv_func_fpurge_works" != xyes; then
+      REPLACE_FPURGE=1
+      AC_LIBOBJ([fpurge])
+    fi
+  else
+    AC_LIBOBJ([fpurge])
+  fi
+  if test "x$ac_cv_have_decl_fpurge" = xno; then
+    HAVE_DECL_FPURGE=0
+  fi
+])
diff --git a/m4/freading.m4 b/m4/freading.m4
new file mode 100644 (file)
index 0000000..59d502e
--- /dev/null
@@ -0,0 +1,10 @@
+# freading.m4 serial 1
+dnl Copyright (C) 2007, 2009-2011 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.
+
+AC_DEFUN([gl_FUNC_FREADING],
+[
+  AC_CHECK_FUNCS_ONCE([__freading])
+])
diff --git a/m4/fseeko.m4 b/m4/fseeko.m4
new file mode 100644 (file)
index 0000000..28da81b
--- /dev/null
@@ -0,0 +1,81 @@
+# fseeko.m4 serial 12
+dnl Copyright (C) 2007-2011 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.
+
+AC_DEFUN([gl_FUNC_FSEEKO],
+[
+  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+  AC_REQUIRE([gl_HAVE_FSEEKO])
+  AC_REQUIRE([gl_STDIN_LARGE_OFFSET])
+
+  AC_CHECK_DECLS_ONCE([fseeko])
+  if test $ac_cv_have_decl_fseeko = no; then
+    HAVE_DECL_FSEEKO=0
+  fi
+
+  if test $gl_cv_func_fseeko = no; then
+    HAVE_FSEEKO=0
+    gl_REPLACE_FSEEKO
+  else
+    if test $gl_cv_var_stdin_large_offset = no; then
+      gl_REPLACE_FSEEKO
+    fi
+  fi
+  m4_ifdef([gl_FUNC_FFLUSH_STDIN], [
+    gl_FUNC_FFLUSH_STDIN
+    if test $gl_cv_func_fflush_stdin = no; then
+      gl_REPLACE_FSEEKO
+    fi
+  ])
+])
+
+dnl Tests whether fseeko is available.
+dnl Result is gl_cv_func_fseeko.
+AC_DEFUN([gl_HAVE_FSEEKO],
+[
+  AC_REQUIRE([AC_PROG_CC])
+
+  dnl Persuade glibc <stdio.h> to declare fseeko().
+  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+
+  AC_CACHE_CHECK([for fseeko], [gl_cv_func_fseeko],
+    [
+      AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>
+]], [fseeko (stdin, 0, 0);])],
+        [gl_cv_func_fseeko=yes], [gl_cv_func_fseeko=no])
+    ])
+])
+
+AC_DEFUN([gl_REPLACE_FSEEKO],
+[
+  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+  AC_REQUIRE([gl_HAVE_FSEEKO])
+  if test $gl_cv_func_fseeko = yes; then
+    REPLACE_FSEEKO=1
+  fi
+  AC_LIBOBJ([fseeko])
+  dnl If we are also using the fseek module, then fseek needs replacing, too.
+  m4_ifdef([gl_REPLACE_FSEEK], [gl_REPLACE_FSEEK])
+])
+
+dnl Code shared by fseeko and ftello.  Determine if large files are supported,
+dnl but stdin does not start as a large file by default.
+AC_DEFUN([gl_STDIN_LARGE_OFFSET],
+  [
+    AC_CACHE_CHECK([whether stdin defaults to large file offsets],
+      [gl_cv_var_stdin_large_offset],
+      [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]],
+[[#if defined __SL64 && defined __SCLE /* cygwin */
+  /* Cygwin 1.5.24 and earlier fail to put stdin in 64-bit mode, making
+     fseeko/ftello needlessly fail.  This bug was fixed in 1.5.25, and
+     it is easier to do a version check than building a runtime test.  */
+# include <cygwin/version.h>
+# if CYGWIN_VERSION_DLL_COMBINED < CYGWIN_VERSION_DLL_MAKE_COMBINED (1005, 25)
+  choke me
+# endif
+#endif]])],
+        [gl_cv_var_stdin_large_offset=yes],
+        [gl_cv_var_stdin_large_offset=no])])
+])
diff --git a/m4/fsync.m4 b/m4/fsync.m4
new file mode 100644 (file)
index 0000000..1aacdfa
--- /dev/null
@@ -0,0 +1,19 @@
+# fsync.m4 serial 1
+dnl Copyright (C) 2008-2011 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.
+
+AC_DEFUN([gl_FUNC_FSYNC],
+[
+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+  AC_CHECK_FUNCS_ONCE([fsync])
+  if test $ac_cv_func_fsync = no; then
+    HAVE_FSYNC=0
+    AC_LIBOBJ([fsync])
+    gl_PREREQ_FSYNC
+  fi
+])
+
+# Prerequisites of lib/fsync.c.
+AC_DEFUN([gl_PREREQ_FSYNC], [:])
diff --git a/m4/ftell.m4 b/m4/ftell.m4
new file mode 100644 (file)
index 0000000..8d88485
--- /dev/null
@@ -0,0 +1,16 @@
+# ftell.m4 serial 1
+dnl Copyright (C) 2007, 2009-2011 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.
+
+AC_DEFUN([gl_FUNC_FTELL],
+[
+  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+  AC_REQUIRE([gl_FUNC_FTELLO])
+  dnl When ftello needs fixes, ftell needs them too.
+  if test $REPLACE_FTELLO != 0; then
+    AC_LIBOBJ([ftell])
+    REPLACE_FTELL=1
+  fi
+])
diff --git a/m4/ftello.m4 b/m4/ftello.m4
new file mode 100644 (file)
index 0000000..599f8f2
--- /dev/null
@@ -0,0 +1,135 @@
+# ftello.m4 serial 9
+dnl Copyright (C) 2007-2011 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.
+
+AC_DEFUN([gl_FUNC_FTELLO],
+[
+  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([gl_STDIN_LARGE_OFFSET])
+
+  dnl Persuade glibc <stdio.h> to declare ftello().
+  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+
+  AC_CHECK_DECLS_ONCE([ftello])
+  if test $ac_cv_have_decl_ftello = no; then
+    HAVE_DECL_FTELLO=0
+  fi
+
+  AC_CACHE_CHECK([for ftello], [gl_cv_func_ftello],
+    [
+      AC_LINK_IFELSE(
+        [AC_LANG_PROGRAM(
+           [[#include <stdio.h>]],
+           [[ftello (stdin);]])],
+        [gl_cv_func_ftello=yes],
+        [gl_cv_func_ftello=no])
+    ])
+  if test $gl_cv_func_ftello = no; then
+    HAVE_FTELLO=0
+  else
+    if test $gl_cv_var_stdin_large_offset = no; then
+      REPLACE_FTELLO=1
+    else
+      dnl Detect bug on Solaris.
+      dnl ftell and ftello produce incorrect results after putc that followed a
+      dnl getc call that reached EOF on Solaris. This is because the _IOREAD
+      dnl flag does not get cleared in this case, even though _IOWRT gets set,
+      dnl and ftell and ftello look whether the _IOREAD flag is set.
+      AC_REQUIRE([AC_CANONICAL_HOST])
+      AC_CACHE_CHECK([whether ftello works],
+        [gl_cv_func_ftello_works],
+        [
+          dnl Initial guess, used when cross-compiling or when /dev/tty cannot
+          dnl be opened.
+changequote(,)dnl
+          case "$host_os" in
+                      # Guess no on Solaris.
+            solaris*) gl_cv_func_ftello_works="guessing no" ;;
+                      # Guess yes otherwise.
+            *)        gl_cv_func_ftello_works="guessing yes" ;;
+          esac
+changequote([,])dnl
+          AC_RUN_IFELSE(
+            [AC_LANG_SOURCE([[
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#define TESTFILE "conftest.tmp"
+int
+main (void)
+{
+  FILE *fp;
+
+  /* Create a file with some contents.  */
+  fp = fopen (TESTFILE, "w");
+  if (fp == NULL)
+    return 70;
+  if (fwrite ("foogarsh", 1, 8, fp) < 8)
+    return 71;
+  if (fclose (fp))
+    return 72;
+
+  /* The file's contents is now "foogarsh".  */
+
+  /* Try writing after reading to EOF.  */
+  fp = fopen (TESTFILE, "r+");
+  if (fp == NULL)
+    return 73;
+  if (fseek (fp, -1, SEEK_END))
+    return 74;
+  if (!(getc (fp) == 'h'))
+    return 1;
+  if (!(getc (fp) == EOF))
+    return 2;
+  if (!(ftell (fp) == 8))
+    return 3;
+  if (!(ftell (fp) == 8))
+    return 4;
+  if (!(putc ('!', fp) == '!'))
+    return 5;
+  if (!(ftell (fp) == 9))
+    return 6;
+  if (!(fclose (fp) == 0))
+    return 7;
+  fp = fopen (TESTFILE, "r");
+  if (fp == NULL)
+    return 75;
+  {
+    char buf[10];
+    if (!(fread (buf, 1, 10, fp) == 9))
+      return 10;
+    if (!(memcmp (buf, "foogarsh!", 9) == 0))
+      return 11;
+  }
+  if (!(fclose (fp) == 0))
+    return 12;
+
+  /* The file's contents is now "foogarsh!".  */
+
+  return 0;
+}]])],
+            [gl_cv_func_ftello_works=yes],
+            [gl_cv_func_ftello_works=no], [:])
+        ])
+      case "$gl_cv_func_ftello_works" in
+        *yes) ;;
+        *)
+          REPLACE_FTELLO=1
+          AC_DEFINE([FTELLO_BROKEN_AFTER_SWITCHING_FROM_READ_TO_WRITE], [1],
+            [Define to 1 if the system's ftello function has the Solaris bug.])
+          ;;
+      esac
+    fi
+  fi
+  if test $HAVE_FTELLO = 0 || test $REPLACE_FTELLO = 1; then
+    gl_REPLACE_FTELLO
+  fi
+])
+
+AC_DEFUN([gl_REPLACE_FTELLO],
+[
+  AC_LIBOBJ([ftello])
+])
diff --git a/m4/getopt.m4 b/m4/getopt.m4
new file mode 100644 (file)
index 0000000..035a530
--- /dev/null
@@ -0,0 +1,321 @@
+# getopt.m4 serial 34
+dnl Copyright (C) 2002-2006, 2008-2011 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.
+
+# Request a POSIX compliant getopt function.
+AC_DEFUN([gl_FUNC_GETOPT_POSIX],
+[
+  m4_divert_text([DEFAULTS], [gl_getopt_required=POSIX])
+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+  gl_GETOPT_IFELSE([
+    gl_REPLACE_GETOPT
+  ],
+  [])
+])
+
+# Request a POSIX compliant getopt function with GNU extensions (such as
+# options with optional arguments) and the functions getopt_long,
+# getopt_long_only.
+AC_DEFUN([gl_FUNC_GETOPT_GNU],
+[
+  m4_divert_text([INIT_PREPARE], [gl_getopt_required=GNU])
+
+  AC_REQUIRE([gl_FUNC_GETOPT_POSIX])
+])
+
+# Request the gnulib implementation of the getopt functions unconditionally.
+# argp.m4 uses this.
+AC_DEFUN([gl_REPLACE_GETOPT],
+[
+  dnl Arrange for getopt.h to be created.
+  gl_GETOPT_SUBSTITUTE_HEADER
+  dnl Arrange for unistd.h to include getopt.h.
+  GNULIB_UNISTD_H_GETOPT=1
+  dnl Arrange to compile the getopt implementation.
+  AC_LIBOBJ([getopt])
+  AC_LIBOBJ([getopt1])
+  gl_PREREQ_GETOPT
+])
+
+# emacs' configure.in uses this.
+AC_DEFUN([gl_GETOPT_IFELSE],
+[
+  AC_REQUIRE([gl_GETOPT_CHECK_HEADERS])
+  AS_IF([test -n "$gl_replace_getopt"], [$1], [$2])
+])
+
+# Determine whether to replace the entire getopt facility.
+AC_DEFUN([gl_GETOPT_CHECK_HEADERS],
+[
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_REQUIRE([AC_PROG_AWK]) dnl for awk that supports ENVIRON
+
+  dnl Persuade Solaris <unistd.h> to declare optarg, optind, opterr, optopt.
+  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+
+  gl_CHECK_NEXT_HEADERS([getopt.h])
+  if test $ac_cv_header_getopt_h = yes; then
+    HAVE_GETOPT_H=1
+  else
+    HAVE_GETOPT_H=0
+  fi
+  AC_SUBST([HAVE_GETOPT_H])
+
+  gl_replace_getopt=
+
+  dnl Test whether <getopt.h> is available.
+  if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then
+    AC_CHECK_HEADERS([getopt.h], [], [gl_replace_getopt=yes])
+  fi
+
+  dnl Test whether the function getopt_long is available.
+  if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then
+    AC_CHECK_FUNCS([getopt_long_only], [], [gl_replace_getopt=yes])
+  fi
+
+  dnl mingw's getopt (in libmingwex.a) does weird things when the options
+  dnl strings starts with '+' and it's not the first call.  Some internal state
+  dnl is left over from earlier calls, and neither setting optind = 0 nor
+  dnl setting optreset = 1 get rid of this internal state.
+  dnl POSIX is silent on optind vs. optreset, so we allow either behavior.
+  dnl POSIX 2008 does not specify leading '+' behavior, but see
+  dnl http://austingroupbugs.net/view.php?id=191 for a recommendation on
+  dnl the next version of POSIX.  For now, we only guarantee leading '+'
+  dnl behavior with getopt-gnu.
+  if test -z "$gl_replace_getopt"; then
+    AC_CACHE_CHECK([whether getopt is POSIX compatible],
+      [gl_cv_func_getopt_posix],
+      [
+        dnl BSD getopt_long uses an incompatible method to reset
+        dnl option processing.  Existence of the variable, in and of
+        dnl itself, is not a reason to replace getopt, but knowledge
+        dnl of the variable is needed to determine how to reset and
+        dnl whether a reset reparses the environment.  Solaris
+        dnl supports neither optreset nor optind=0, but keeps no state
+        dnl that needs a reset beyond setting optind=1; detect Solaris
+        dnl by getopt_clip.
+        AC_COMPILE_IFELSE(
+          [AC_LANG_PROGRAM(
+             [[#include <unistd.h>]],
+             [[int *p = &optreset; return optreset;]])],
+          [gl_optind_min=1],
+          [AC_COMPILE_IFELSE(
+             [AC_LANG_PROGRAM(
+                [[#include <getopt.h>]],
+                [[return !getopt_clip;]])],
+             [gl_optind_min=1],
+             [gl_optind_min=0])])
+
+        dnl This test fails on mingw and succeeds on many other platforms.
+        gl_save_CPPFLAGS=$CPPFLAGS
+        CPPFLAGS="$CPPFLAGS -DOPTIND_MIN=$gl_optind_min"
+        AC_RUN_IFELSE([AC_LANG_SOURCE([[
+#include <unistd.h>
+#include <stdlib.h>
+#include <string.h>
+
+int
+main ()
+{
+  {
+    int argc = 0;
+    char *argv[10];
+    int c;
+
+    argv[argc++] = "program";
+    argv[argc++] = "-a";
+    argv[argc++] = "foo";
+    argv[argc++] = "bar";
+    argv[argc] = NULL;
+    optind = OPTIND_MIN;
+    opterr = 0;
+
+    c = getopt (argc, argv, "ab");
+    if (!(c == 'a'))
+      return 1;
+    c = getopt (argc, argv, "ab");
+    if (!(c == -1))
+      return 2;
+    if (!(optind == 2))
+      return 3;
+  }
+  /* Some internal state exists at this point.  */
+  {
+    int argc = 0;
+    char *argv[10];
+    int c;
+
+    argv[argc++] = "program";
+    argv[argc++] = "donald";
+    argv[argc++] = "-p";
+    argv[argc++] = "billy";
+    argv[argc++] = "duck";
+    argv[argc++] = "-a";
+    argv[argc++] = "bar";
+    argv[argc] = NULL;
+    optind = OPTIND_MIN;
+    opterr = 0;
+
+    c = getopt (argc, argv, "+abp:q:");
+    if (!(c == -1))
+      return 4;
+    if (!(strcmp (argv[0], "program") == 0))
+      return 5;
+    if (!(strcmp (argv[1], "donald") == 0))
+      return 6;
+    if (!(strcmp (argv[2], "-p") == 0))
+      return 7;
+    if (!(strcmp (argv[3], "billy") == 0))
+      return 8;
+    if (!(strcmp (argv[4], "duck") == 0))
+      return 9;
+    if (!(strcmp (argv[5], "-a") == 0))
+      return 10;
+    if (!(strcmp (argv[6], "bar") == 0))
+      return 11;
+    if (!(optind == 1))
+      return 12;
+  }
+  /* Detect MacOS 10.5, AIX 7.1 bug.  */
+  {
+    char *argv[3] = { "program", "-ab", NULL };
+    optind = OPTIND_MIN;
+    opterr = 0;
+    if (getopt (2, argv, "ab:") != 'a')
+      return 13;
+    if (getopt (2, argv, "ab:") != '?')
+      return 14;
+    if (optopt != 'b')
+      return 15;
+    if (optind != 2)
+      return 16;
+  }
+
+  return 0;
+}
+]])],
+          [gl_cv_func_getopt_posix=yes], [gl_cv_func_getopt_posix=no],
+          [case "$host_os" in
+             mingw*)         gl_cv_func_getopt_posix="guessing no";;
+             darwin* | aix*) gl_cv_func_getopt_posix="guessing no";;
+             *)              gl_cv_func_getopt_posix="guessing yes";;
+           esac
+          ])
+        CPPFLAGS=$gl_save_CPPFLAGS
+      ])
+    case "$gl_cv_func_getopt_posix" in
+      *no) gl_replace_getopt=yes ;;
+    esac
+  fi
+
+  if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then
+    AC_CACHE_CHECK([for working GNU getopt function], [gl_cv_func_getopt_gnu],
+      [# Even with POSIXLY_CORRECT, the GNU extension of leading '-' in the
+       # optstring is necessary for programs like m4 that have POSIX-mandated
+       # semantics for supporting options interspersed with files.
+       # Also, since getopt_long is a GNU extension, we require optind=0.
+       # Bash ties 'set -o posix' to a non-exported POSIXLY_CORRECT;
+       # so take care to revert to the correct (non-)export state.
+dnl GNU Coding Standards currently allow awk but not env; besides, env
+dnl is ambiguous with environment values that contain newlines.
+       gl_awk_probe='BEGIN { if ("POSIXLY_CORRECT" in ENVIRON) print "x" }'
+       case ${POSIXLY_CORRECT+x}`$AWK "$gl_awk_probe" </dev/null` in
+         xx) gl_had_POSIXLY_CORRECT=exported ;;
+         x)  gl_had_POSIXLY_CORRECT=yes      ;;
+         *)  gl_had_POSIXLY_CORRECT=         ;;
+       esac
+       POSIXLY_CORRECT=1
+       export POSIXLY_CORRECT
+       AC_RUN_IFELSE(
+        [AC_LANG_PROGRAM([[#include <getopt.h>
+                           #include <stddef.h>
+                           #include <string.h>
+           ]], [[
+             int result = 0;
+             /* This code succeeds on glibc 2.8, OpenBSD 4.0, Cygwin, mingw,
+                and fails on MacOS X 10.5, AIX 5.2, HP-UX 11, IRIX 6.5,
+                OSF/1 5.1, Solaris 10.  */
+             {
+               char *myargv[3];
+               myargv[0] = "conftest";
+               myargv[1] = "-+";
+               myargv[2] = 0;
+               opterr = 0;
+               if (getopt (2, myargv, "+a") != '?')
+                 result |= 1;
+             }
+             /* This code succeeds on glibc 2.8, mingw,
+                and fails on MacOS X 10.5, OpenBSD 4.0, AIX 5.2, HP-UX 11,
+                IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x.  */
+             {
+               char *argv[] = { "program", "-p", "foo", "bar", NULL };
+
+               optind = 1;
+               if (getopt (4, argv, "p::") != 'p')
+                 result |= 2;
+               else if (optarg != NULL)
+                 result |= 4;
+               else if (getopt (4, argv, "p::") != -1)
+                 result |= 6;
+               else if (optind != 2)
+                 result |= 8;
+             }
+             /* This code succeeds on glibc 2.8 and fails on Cygwin 1.7.0.  */
+             {
+               char *argv[] = { "program", "foo", "-p", NULL };
+               optind = 0;
+               if (getopt (3, argv, "-p") != 1)
+                 result |= 16;
+               else if (getopt (3, argv, "-p") != 'p')
+                 result |= 32;
+             }
+             /* This code fails on glibc 2.11.  */
+             {
+               char *argv[] = { "program", "-b", "-a", NULL };
+               optind = opterr = 0;
+               if (getopt (3, argv, "+:a:b") != 'b')
+                 result |= 64;
+               else if (getopt (3, argv, "+:a:b") != ':')
+                 result |= 64;
+             }
+             return result;
+           ]])],
+        [gl_cv_func_getopt_gnu=yes],
+        [gl_cv_func_getopt_gnu=no],
+        [dnl Cross compiling. Guess based on host and declarations.
+         case $host_os:$ac_cv_have_decl_optreset in
+           *-gnu*:* | mingw*:*) gl_cv_func_getopt_gnu=no;;
+           *:yes)               gl_cv_func_getopt_gnu=no;;
+           *)                   gl_cv_func_getopt_gnu=yes;;
+         esac
+        ])
+       case $gl_had_POSIXLY_CORRECT in
+         exported) ;;
+         yes) AS_UNSET([POSIXLY_CORRECT]); POSIXLY_CORRECT=1 ;;
+         *) AS_UNSET([POSIXLY_CORRECT]) ;;
+       esac
+      ])
+    if test "$gl_cv_func_getopt_gnu" = "no"; then
+      gl_replace_getopt=yes
+    fi
+  fi
+])
+
+# emacs' configure.in uses this.
+AC_DEFUN([gl_GETOPT_SUBSTITUTE_HEADER],
+[
+  GETOPT_H=getopt.h
+  AC_DEFINE([__GETOPT_PREFIX], [[rpl_]],
+    [Define to rpl_ if the getopt replacement functions and variables
+     should be used.])
+  AC_SUBST([GETOPT_H])
+])
+
+# Prerequisites of lib/getopt*.
+# emacs' configure.in uses this.
+AC_DEFUN([gl_PREREQ_GETOPT],
+[
+  AC_CHECK_DECLS_ONCE([getenv])
+])
diff --git a/m4/getpagesize.m4 b/m4/getpagesize.m4
new file mode 100644 (file)
index 0000000..79dfbbe
--- /dev/null
@@ -0,0 +1,33 @@
+# getpagesize.m4 serial 8
+dnl Copyright (C) 2002, 2004-2005, 2007, 2009-2011 Free Software Foundation,
+dnl 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.
+
+AC_DEFUN([gl_FUNC_GETPAGESIZE],
+[
+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  AC_CHECK_FUNCS([getpagesize])
+  if test $ac_cv_func_getpagesize = no; then
+    HAVE_GETPAGESIZE=0
+    AC_CHECK_HEADERS([OS.h])
+    if test $ac_cv_header_OS_h = yes; then
+      HAVE_OS_H=1
+    fi
+    AC_CHECK_HEADERS([sys/param.h])
+    if test $ac_cv_header_sys_param_h = yes; then
+      HAVE_SYS_PARAM_H=1
+    fi
+  fi
+  case "$host_os" in
+    mingw*)
+      REPLACE_GETPAGESIZE=1
+      AC_LIBOBJ([getpagesize])
+      ;;
+  esac
+  dnl Also check whether it's declared.
+  dnl mingw has getpagesize() in libgcc.a but doesn't declare it.
+  AC_CHECK_DECL([getpagesize], , [HAVE_DECL_GETPAGESIZE=0])
+])
diff --git a/m4/gettext.m4 b/m4/gettext.m4
new file mode 100644 (file)
index 0000000..c7726e1
--- /dev/null
@@ -0,0 +1,384 @@
+# gettext.m4 serial 63 (gettext-0.18)
+dnl Copyright (C) 1995-2010 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 can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library 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 Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl   Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
+dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2006, 2008-2010.
+
+dnl Macro to add for using GNU gettext.
+
+dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]).
+dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The
+dnl    default (if it is not specified or empty) is 'no-libtool'.
+dnl    INTLSYMBOL should be 'external' for packages with no intl directory,
+dnl    and 'no-libtool' or 'use-libtool' for packages with an intl directory.
+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). If INTLSYMBOL is 'no-libtool', a static library
+dnl    $(top_builddir)/intl/libintl.a will be created.
+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 <inttypes.h> 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], [no-libtool], , [ifelse([$1], [use-libtool], ,
+    [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
+])])])])])
+  ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old],
+    [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])])
+  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],
+      ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]),
+      [yes]))
+  define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], []))
+  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 only in autoconf >= 2.52 and not
+  dnl documented, we avoid it.
+  ifelse(gt_included_intl, yes, , [
+    AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
+  ])
+
+  dnl Sometimes, on MacOS 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_TRY_LINK([#include <libintl.h>
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
+extern int *_nl_domain_bindings;],
+            [bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings],
+            [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_TRY_LINK([#include <libintl.h>
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias (const char *);],
+              [bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
+              [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_TRY_LINK([#include <libintl.h>
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias (const char *);],
+                [bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
+               [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.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD"
+        LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $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 If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL
+    dnl to 'yes' because some of the testsuite requires it.
+    if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then
+      BUILD_INCLUDED_LIBINTL=yes
+    fi
+
+    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 configure.ins may be using this.
+    nls_cv_header_intl=
+    nls_cv_header_libgt=
+
+    dnl For backward compatibility. Some Makefiles may be using this.
+    DATADIRNAME=share
+    AC_SUBST([DATADIRNAME])
+
+    dnl For backward compatibility. Some Makefiles may be using this.
+    INSTOBJEXT=.mo
+    AC_SUBST([INSTOBJEXT])
+
+    dnl For backward compatibility. Some Makefiles may be using this.
+    GENCAT=gencat
+    AC_SUBST([GENCAT])
+
+    dnl For backward compatibility. Some Makefiles may be using this.
+    INTLOBJS=
+    if test "$USE_INCLUDED_LIBINTL" = yes; then
+      INTLOBJS="\$(GETTOBJS)"
+    fi
+    AC_SUBST([INTLOBJS])
+
+    dnl Enable libtool support if the surrounding package wishes it.
+    INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix
+    AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX])
+  ])
+
+  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], [])
+              AC_DEFUN([gl_LOCK_EARLY], [])
diff --git a/m4/gettimeofday.m4 b/m4/gettimeofday.m4
new file mode 100644 (file)
index 0000000..84acadf
--- /dev/null
@@ -0,0 +1,120 @@
+# serial 15
+
+# Copyright (C) 2001-2003, 2005, 2007, 2009-2011 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.
+
+dnl From Jim Meyering.
+
+AC_DEFUN([gl_FUNC_GETTIMEOFDAY],
+[
+  AC_REQUIRE([AC_C_RESTRICT])
+  AC_REQUIRE([gl_HEADER_SYS_TIME_H])
+  AC_REQUIRE([gl_HEADER_SYS_TIME_H_DEFAULTS])
+  AC_CHECK_FUNCS_ONCE([gettimeofday])
+
+  gl_gettimeofday_timezone=void
+  if test $ac_cv_func_gettimeofday != yes; then
+    HAVE_GETTIMEOFDAY=0
+    AC_LIBOBJ([gettimeofday])
+    gl_PREREQ_GETTIMEOFDAY
+  else
+    gl_FUNC_GETTIMEOFDAY_CLOBBER
+    AC_CACHE_CHECK([for gettimeofday with POSIX signature],
+      [gl_cv_func_gettimeofday_posix_signature],
+      [AC_COMPILE_IFELSE(
+         [AC_LANG_PROGRAM(
+            [[#include <sys/time.h>
+              struct timeval c;
+              int gettimeofday (struct timeval *restrict, void *restrict);
+            ]],
+            [[/* glibc uses struct timezone * rather than the POSIX void *
+                 if _GNU_SOURCE is defined.  However, since the only portable
+                 use of gettimeofday uses NULL as the second parameter, and
+                 since the glibc definition is actually more typesafe, it is
+                 not worth wrapping this to get a compliant signature.  */
+              int (*f) (struct timeval *restrict, void *restrict)
+                = gettimeofday;
+              int x = f (&c, 0);
+              return !(x | c.tv_sec | c.tv_usec);
+            ]])],
+          [gl_cv_func_gettimeofday_posix_signature=yes],
+          [AC_COMPILE_IFELSE(
+            [AC_LANG_PROGRAM(
+              [[#include <sys/time.h>
+int gettimeofday (struct timeval *restrict, struct timezone *restrict);
+              ]])],
+            [gl_cv_func_gettimeofday_posix_signature=almost],
+            [gl_cv_func_gettimeofday_posix_signature=no])])])
+    if test $gl_cv_func_gettimeofday_posix_signature = almost; then
+      gl_gettimeofday_timezone='struct timezone'
+    elif test $gl_cv_func_gettimeofday_posix_signature != yes; then
+      REPLACE_GETTIMEOFDAY=1
+      AC_LIBOBJ([gettimeofday])
+      gl_PREREQ_GETTIMEOFDAY
+    fi
+  fi
+  AC_DEFINE_UNQUOTED([GETTIMEOFDAY_TIMEZONE], [$gl_gettimeofday_timezone],
+    [Define this to 'void' or 'struct timezone' to match the system's
+     declaration of the second argument to gettimeofday.])
+])
+
+
+dnl See if gettimeofday clobbers the static buffer that localtime uses
+dnl for its return value.  The gettimeofday function from Mac OS X 10.0.4
+dnl (i.e., Darwin 1.3.7) has this problem.
+dnl
+dnl If it does, then arrange to use gettimeofday and localtime only via
+dnl the wrapper functions that work around the problem.
+
+AC_DEFUN([gl_FUNC_GETTIMEOFDAY_CLOBBER],
+[
+ AC_REQUIRE([gl_HEADER_SYS_TIME_H])
+
+ AC_CACHE_CHECK([whether gettimeofday clobbers localtime buffer],
+  [gl_cv_func_gettimeofday_clobber],
+  [AC_RUN_IFELSE(
+     [AC_LANG_PROGRAM(
+        [[#include <string.h>
+          #include <sys/time.h>
+          #include <time.h>
+          #include <stdlib.h>
+        ]],
+        [[
+          time_t t = 0;
+          struct tm *lt;
+          struct tm saved_lt;
+          struct timeval tv;
+          lt = localtime (&t);
+          saved_lt = *lt;
+          gettimeofday (&tv, NULL);
+          return memcmp (lt, &saved_lt, sizeof (struct tm)) != 0;
+        ]])],
+     [gl_cv_func_gettimeofday_clobber=no],
+     [gl_cv_func_gettimeofday_clobber=yes],
+     dnl When crosscompiling, assume it is broken.
+     [gl_cv_func_gettimeofday_clobber=yes])])
+
+ if test $gl_cv_func_gettimeofday_clobber = yes; then
+   REPLACE_GETTIMEOFDAY=1
+   gl_GETTIMEOFDAY_REPLACE_LOCALTIME
+   AC_DEFINE([GETTIMEOFDAY_CLOBBERS_LOCALTIME], [1],
+     [Define if gettimeofday clobbers the localtime buffer.])
+ fi
+])
+
+AC_DEFUN([gl_GETTIMEOFDAY_REPLACE_LOCALTIME], [
+  AC_LIBOBJ([gettimeofday])
+  gl_PREREQ_GETTIMEOFDAY
+  AC_DEFINE([gmtime], [rpl_gmtime],
+    [Define to rpl_gmtime if the replacement function should be used.])
+  AC_DEFINE([localtime], [rpl_localtime],
+    [Define to rpl_localtime if the replacement function should be used.])
+])
+
+# Prerequisites of lib/gettimeofday.c.
+AC_DEFUN([gl_PREREQ_GETTIMEOFDAY], [
+  AC_CHECK_HEADERS([sys/timeb.h])
+  AC_CHECK_FUNCS([_ftime])
+])
diff --git a/m4/glibc21.m4 b/m4/glibc21.m4
new file mode 100644 (file)
index 0000000..bc81c11
--- /dev/null
@@ -0,0 +1,34 @@
+# glibc21.m4 serial 5
+dnl Copyright (C) 2000-2002, 2004, 2008, 2010-2011 Free Software Foundation,
+dnl 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.
+
+# Test for the GNU C Library, version 2.1 or newer, or uClibc.
+# From Bruno Haible.
+
+AC_DEFUN([gl_GLIBC21],
+  [
+    AC_CACHE_CHECK([whether we are using the GNU C Library >= 2.1 or uClibc],
+      [ac_cv_gnu_library_2_1],
+      [AC_EGREP_CPP([Lucky],
+        [
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
+  Lucky GNU user
+ #endif
+#endif
+#ifdef __UCLIBC__
+ Lucky user
+#endif
+        ],
+        [ac_cv_gnu_library_2_1=yes],
+        [ac_cv_gnu_library_2_1=no])
+      ]
+    )
+    AC_SUBST([GLIBC21])
+    GLIBC21="$ac_cv_gnu_library_2_1"
+  ]
+)
diff --git a/m4/gnulib-common.m4 b/m4/gnulib-common.m4
new file mode 100644 (file)
index 0000000..c4d7a20
--- /dev/null
@@ -0,0 +1,235 @@
+# gnulib-common.m4 serial 24
+dnl Copyright (C) 2007-2011 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.
+
+# gl_COMMON
+# is expanded unconditionally through gnulib-tool magic.
+AC_DEFUN([gl_COMMON], [
+  dnl Use AC_REQUIRE here, so that the code is expanded once only.
+  AC_REQUIRE([gl_00GNULIB])
+  AC_REQUIRE([gl_COMMON_BODY])
+])
+AC_DEFUN([gl_COMMON_BODY], [
+  AH_VERBATIM([isoc99_inline],
+[/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports
+   the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of
+   earlier versions), but does not display it by setting __GNUC_STDC_INLINE__.
+   __APPLE__ && __MACH__ test for MacOS X.
+   __APPLE_CC__ tests for the Apple compiler and its version.
+   __STDC_VERSION__ tests for the C99 mode.  */
+#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__
+# define __GNUC_STDC_INLINE__ 1
+#endif])
+  AH_VERBATIM([unused_parameter],
+[/* Define as a marker that can be attached to declarations that might not
+    be used.  This helps to reduce warnings, such as from
+    GCC -Wunused-parameter.  */
+#if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
+# define _GL_UNUSED __attribute__ ((__unused__))
+#else
+# define _GL_UNUSED
+#endif
+/* The name _UNUSED_PARAMETER_ is an earlier spelling, although the name
+   is a misnomer outside of parameter lists.  */
+#define _UNUSED_PARAMETER_ _GL_UNUSED
+])
+  dnl Preparation for running test programs:
+  dnl Tell glibc to write diagnostics from -D_FORTIFY_SOURCE=2 to stderr, not
+  dnl to /dev/tty, so they can be redirected to log files.  Such diagnostics
+  dnl arise e.g., in the macros gl_PRINTF_DIRECTIVE_N, gl_SNPRINTF_DIRECTIVE_N.
+  LIBC_FATAL_STDERR_=1
+  export LIBC_FATAL_STDERR_
+])
+
+# gl_MODULE_INDICATOR_CONDITION
+# expands to a C preprocessor expression that evaluates to 1 or 0, depending
+# whether a gnulib module that has been requested shall be considered present
+# or not.
+AC_DEFUN([gl_MODULE_INDICATOR_CONDITION], [1])
+
+# gl_MODULE_INDICATOR_SET_VARIABLE([modulename])
+# sets the shell variable that indicates the presence of the given module to
+# a C preprocessor expression that will evaluate to 1.
+AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE],
+[
+  GNULIB_[]m4_translit([[$1]],
+    [abcdefghijklmnopqrstuvwxyz./-],
+    [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=gl_MODULE_INDICATOR_CONDITION
+])
+
+# gl_MODULE_INDICATOR([modulename])
+# defines a C macro indicating the presence of the given module
+# in a location where it can be used.
+#                                             |  Value  |   Value   |
+#                                             | in lib/ | in tests/ |
+# --------------------------------------------+---------+-----------+
+# Module present among main modules:          |    1    |     1     |
+# --------------------------------------------+---------+-----------+
+# Module present among tests-related modules: |    0    |     1     |
+# --------------------------------------------+---------+-----------+
+# Module not present at all:                  |    0    |     0     |
+# --------------------------------------------+---------+-----------+
+AC_DEFUN([gl_MODULE_INDICATOR],
+[
+  AC_DEFINE_UNQUOTED([GNULIB_]m4_translit([[$1]],
+      [abcdefghijklmnopqrstuvwxyz./-],
+      [ABCDEFGHIJKLMNOPQRSTUVWXYZ___]),
+    [gl_MODULE_INDICATOR_CONDITION],
+    [Define to a C preprocessor expression that evaluates to 1 or 0,
+     depending whether the gnulib module $1 shall be considered present.])
+])
+
+# gl_MODULE_INDICATOR_FOR_TESTS([modulename])
+# defines a C macro indicating the presence of the given module
+# in lib or tests. This is useful to determine whether the module
+# should be tested.
+#                                             |  Value  |   Value   |
+#                                             | in lib/ | in tests/ |
+# --------------------------------------------+---------+-----------+
+# Module present among main modules:          |    1    |     1     |
+# --------------------------------------------+---------+-----------+
+# Module present among tests-related modules: |    1    |     1     |
+# --------------------------------------------+---------+-----------+
+# Module not present at all:                  |    0    |     0     |
+# --------------------------------------------+---------+-----------+
+AC_DEFUN([gl_MODULE_INDICATOR_FOR_TESTS],
+[
+  AC_DEFINE([GNULIB_TEST_]m4_translit([[$1]],
+      [abcdefghijklmnopqrstuvwxyz./-],
+      [ABCDEFGHIJKLMNOPQRSTUVWXYZ___]), [1],
+    [Define to 1 when the gnulib module $1 should be tested.])
+])
+
+# gl_ASSERT_NO_GNULIB_POSIXCHECK
+# asserts that there will never be a need to #define GNULIB_POSIXCHECK.
+# and thereby enables an optimization of configure and config.h.
+# Used by Emacs.
+AC_DEFUN([gl_ASSERT_NO_GNULIB_POSIXCHECK],
+[
+  dnl Override gl_WARN_ON_USE_PREPARE.
+  dnl But hide this definition from 'aclocal'.
+  AC_DEFUN([gl_W][ARN_ON_USE_PREPARE], [])
+])
+
+# gl_ASSERT_NO_GNULIB_TESTS
+# asserts that there will be no gnulib tests in the scope of the configure.ac
+# and thereby enables an optimization of config.h.
+# Used by Emacs.
+AC_DEFUN([gl_ASSERT_NO_GNULIB_TESTS],
+[
+  dnl Override gl_MODULE_INDICATOR_FOR_TESTS.
+  AC_DEFUN([gl_MODULE_INDICATOR_FOR_TESTS], [])
+])
+
+# Test whether <features.h> exists.
+# Set HAVE_FEATURES_H.
+AC_DEFUN([gl_FEATURES_H],
+[
+  AC_CHECK_HEADERS_ONCE([features.h])
+  if test $ac_cv_header_features_h = yes; then
+    HAVE_FEATURES_H=1
+  else
+    HAVE_FEATURES_H=0
+  fi
+  AC_SUBST([HAVE_FEATURES_H])
+])
+
+# m4_foreach_w
+# is a backport of autoconf-2.59c's m4_foreach_w.
+# Remove this macro when we can assume autoconf >= 2.60.
+m4_ifndef([m4_foreach_w],
+  [m4_define([m4_foreach_w],
+    [m4_foreach([$1], m4_split(m4_normalize([$2]), [ ]), [$3])])])
+
+# AS_VAR_IF(VAR, VALUE, [IF-MATCH], [IF-NOT-MATCH])
+# ----------------------------------------------------
+# Backport of autoconf-2.63b's macro.
+# Remove this macro when we can assume autoconf >= 2.64.
+m4_ifndef([AS_VAR_IF],
+[m4_define([AS_VAR_IF],
+[AS_IF([test x"AS_VAR_GET([$1])" = x""$2], [$3], [$4])])])
+
+# AC_PROG_MKDIR_P
+# is a backport of autoconf-2.60's AC_PROG_MKDIR_P, with a fix
+# for interoperability with automake-1.9.6 from autoconf-2.62.
+# Remove this macro when we can assume autoconf >= 2.62 or
+# autoconf >= 2.60 && automake >= 1.10.
+m4_ifdef([AC_PROG_MKDIR_P], [
+  dnl For automake-1.9.6 && autoconf < 2.62: Ensure MKDIR_P is AC_SUBSTed.
+  m4_define([AC_PROG_MKDIR_P],
+    m4_defn([AC_PROG_MKDIR_P])[
+    AC_SUBST([MKDIR_P])])], [
+  dnl For autoconf < 2.60: Backport of AC_PROG_MKDIR_P.
+  AC_DEFUN_ONCE([AC_PROG_MKDIR_P],
+    [AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
+     MKDIR_P='$(mkdir_p)'
+     AC_SUBST([MKDIR_P])])])
+
+# AC_C_RESTRICT
+# This definition overrides the AC_C_RESTRICT macro from autoconf 2.60..2.61,
+# so that mixed use of GNU C and GNU C++ and mixed use of Sun C and Sun C++
+# works.
+# This definition can be removed once autoconf >= 2.62 can be assumed.
+m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.62]),[-1],[
+AC_DEFUN([AC_C_RESTRICT],
+[AC_CACHE_CHECK([for C/C++ restrict keyword], [ac_cv_c_restrict],
+  [ac_cv_c_restrict=no
+   # The order here caters to the fact that C++ does not require restrict.
+   for ac_kw in __restrict __restrict__ _Restrict restrict; do
+     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+      [[typedef int * int_ptr;
+        int foo (int_ptr $ac_kw ip) {
+        return ip[0];
+       }]],
+      [[int s[1];
+        int * $ac_kw t = s;
+        t[0] = 0;
+        return foo(t)]])],
+      [ac_cv_c_restrict=$ac_kw])
+     test "$ac_cv_c_restrict" != no && break
+   done
+  ])
+ AH_VERBATIM([restrict],
+[/* Define to the equivalent of the C99 'restrict' keyword, or to
+   nothing if this is not supported.  Do not define if restrict is
+   supported directly.  */
+#undef restrict
+/* Work around a bug in Sun C++: it does not support _Restrict, even
+   though the corresponding Sun C compiler does, which causes
+   "#define restrict _Restrict" in the previous line.  Perhaps some future
+   version of Sun C++ will work with _Restrict; if so, it'll probably
+   define __RESTRICT, just as Sun C does.  */
+#if defined __SUNPRO_CC && !defined __RESTRICT
+# define _Restrict
+#endif])
+ case $ac_cv_c_restrict in
+   restrict) ;;
+   no) AC_DEFINE([restrict], []) ;;
+   *)  AC_DEFINE_UNQUOTED([restrict], [$ac_cv_c_restrict]) ;;
+ esac
+])
+])
+
+# gl_BIGENDIAN
+# is like AC_C_BIGENDIAN, except that it can be AC_REQUIREd.
+# Note that AC_REQUIRE([AC_C_BIGENDIAN]) does not work reliably because some
+# macros invoke AC_C_BIGENDIAN with arguments.
+AC_DEFUN([gl_BIGENDIAN],
+[
+  AC_C_BIGENDIAN
+])
+
+# gl_CACHE_VAL_SILENT(cache-id, command-to-set-it)
+# is like AC_CACHE_VAL(cache-id, command-to-set-it), except that it does not
+# output a spurious "(cached)" mark in the midst of other configure output.
+# This macro should be used instead of AC_CACHE_VAL when it is not surrounded
+# by an AC_MSG_CHECKING/AC_MSG_RESULT pair.
+AC_DEFUN([gl_CACHE_VAL_SILENT],
+[
+  saved_as_echo_n="$as_echo_n"
+  as_echo_n=':'
+  AC_CACHE_VAL([$1], [$2])
+  as_echo_n="$saved_as_echo_n"
+])
diff --git a/m4/gnulib-comp.m4 b/m4/gnulib-comp.m4
new file mode 100644 (file)
index 0000000..c9cdb07
--- /dev/null
@@ -0,0 +1,1108 @@
+# -*- buffer-read-only: t -*- vi: set ro:
+# DO NOT EDIT! GENERATED AUTOMATICALLY!
+# DO NOT EDIT! GENERATED AUTOMATICALLY!
+# Copyright (C) 2002-2011 Free Software Foundation, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License.  As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+#
+# This file represents the compiled summary of the specification in
+# gnulib-cache.m4. It lists the computed macro invocations that need
+# to be invoked from configure.ac.
+# In projects that use version control, this file can be treated like
+# other built files.
+
+
+# This macro should be invoked from ./configure.ac, in the section
+# "Checks for programs", right after AC_PROG_CC, and certainly before
+# any checks for libraries, header files, types and library functions.
+AC_DEFUN([gl_EARLY],
+[
+  m4_pattern_forbid([^gl_[A-Z]])dnl the gnulib macro namespace
+  m4_pattern_allow([^gl_ES$])dnl a valid locale name
+  m4_pattern_allow([^gl_LIBOBJS$])dnl a variable
+  m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable
+  AC_REQUIRE([AC_PROG_RANLIB])
+  AC_REQUIRE([AM_PROG_CC_C_O])
+  # Code from module alloca:
+  # Code from module alloca-opt:
+  # Code from module alloca-opt-tests:
+  # Code from module announce-gen:
+  # Code from module arg-nonnull:
+  # Code from module argmatch:
+  # Code from module argmatch-tests:
+  # Code from module assert:
+  # Code from module binary-io:
+  # Code from module binary-io-tests:
+  # Code from module btowc:
+  # Code from module btowc-tests:
+  # Code from module c++defs:
+  # Code from module c-ctype:
+  # Code from module c-ctype-tests:
+  # Code from module c-strcase:
+  # Code from module c-strcase-tests:
+  # Code from module calloc-gnu:
+  # Code from module calloc-gnu-tests:
+  # Code from module calloc-posix:
+  # Code from module canonicalize-lgpl:
+  # Code from module canonicalize-lgpl-tests:
+  # Code from module close:
+  # Code from module close-stream:
+  # Code from module closeout:
+  # Code from module config-h:
+  # Code from module configmake:
+  # Code from module dirname:
+  # Code from module dirname-lgpl:
+  # Code from module dirname-tests:
+  # Code from module do-release-commit-and-tag:
+  # Code from module dosname:
+  # Code from module double-slash-root:
+  # Code from module dup2:
+  # Code from module dup2-tests:
+  # Code from module environ:
+  # Code from module environ-tests:
+  # Code from module errno:
+  # Code from module errno-tests:
+  # Code from module error:
+  # Code from module exitfail:
+  # Code from module extensions:
+  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+  # Code from module fclose:
+  # Code from module fclose-tests:
+  # Code from module fcntl-h:
+  # Code from module fcntl-h-tests:
+  # Code from module fd-hook:
+  # Code from module fdl:
+  # Code from module fflush:
+  AC_REQUIRE([AC_FUNC_FSEEKO])
+  # Code from module fflush-tests:
+  # Code from module fpending:
+  # Code from module fpending-tests:
+  # Code from module fpurge:
+  # Code from module fpurge-tests:
+  # Code from module freading:
+  # Code from module freading-tests:
+  # Code from module fseeko:
+  AC_REQUIRE([AC_FUNC_FSEEKO])
+  # Code from module fseeko-tests:
+  # Code from module fsync:
+  # Code from module fsync-tests:
+  # Code from module ftell:
+  # Code from module ftell-tests:
+  # Code from module ftello:
+  AC_REQUIRE([AC_FUNC_FSEEKO])
+  # Code from module ftello-tests:
+  # Code from module gendocs:
+  # Code from module getopt-gnu:
+  # Code from module getopt-posix:
+  # Code from module getopt-posix-tests:
+  # Code from module getpagesize:
+  # Code from module gettext-h:
+  # Code from module gettimeofday:
+  # Code from module gettimeofday-tests:
+  # Code from module git-version-gen:
+  # Code from module gitlog-to-changelog:
+  # Code from module gnu-web-doc-update:
+  # Code from module gnumakefile:
+  # Code from module gnupload:
+  # Code from module havelib:
+  # Code from module ignore-value:
+  # Code from module ignore-value-tests:
+  # Code from module include_next:
+  # Code from module inline:
+  # Code from module intprops:
+  # Code from module intprops-tests:
+  # Code from module inttypes:
+  # Code from module inttypes-incomplete:
+  # Code from module inttypes-tests:
+  # Code from module langinfo:
+  # Code from module langinfo-tests:
+  # Code from module lib-ignore:
+  # Code from module localcharset:
+  # Code from module locale:
+  # Code from module locale-tests:
+  # Code from module localename:
+  # Code from module localename-tests:
+  # Code from module lock:
+  # Code from module lock-tests:
+  # Code from module long-options:
+  # Code from module lseek:
+  # Code from module lseek-tests:
+  # Code from module lstat:
+  # Code from module lstat-tests:
+  # Code from module maintainer-makefile:
+  # Code from module malloc-gnu:
+  # Code from module malloc-gnu-tests:
+  # Code from module malloc-posix:
+  # Code from module malloca:
+  # Code from module malloca-tests:
+  # Code from module manywarnings:
+  # Code from module mbrtowc:
+  # Code from module mbrtowc-tests:
+  # Code from module mbsinit:
+  # Code from module mbsinit-tests:
+  # Code from module mbtowc:
+  # Code from module mkstemp:
+  # Code from module mktempd:
+  # Code from module multiarch:
+  # Code from module nl_langinfo:
+  # Code from module nl_langinfo-tests:
+  # Code from module nocrash:
+  # Code from module open:
+  # Code from module open-tests:
+  # Code from module pathmax:
+  # Code from module priv-set:
+  # Code from module priv-set-tests:
+  # Code from module progname:
+  # Code from module putenv:
+  # Code from module quote:
+  # Code from module quotearg:
+  # Code from module quotearg-simple:
+  # Code from module quotearg-simple-tests:
+  # Code from module read:
+  # Code from module readlink:
+  # Code from module readlink-tests:
+  # Code from module realloc-gnu:
+  # Code from module realloc-gnu-tests:
+  # Code from module realloc-posix:
+  # Code from module regex:
+  # Code from module rpmatch:
+  # Code from module safe-read:
+  # Code from module same-inode:
+  # Code from module setenv:
+  # Code from module setenv-tests:
+  # Code from module setlocale:
+  # Code from module setlocale-tests:
+  # Code from module sleep:
+  # Code from module sleep-tests:
+  # Code from module ssize_t:
+  # Code from module stat:
+  # Code from module stat-tests:
+  # Code from module stdarg:
+  dnl Some compilers (e.g., AIX 5.3 cc) need to be in c99 mode
+  dnl for the builtin va_copy to work.  With Autoconf 2.60 or later,
+  dnl AC_PROG_CC_STDC arranges for this.  With older Autoconf AC_PROG_CC_STDC
+  dnl shouldn't hurt, though installers are on their own to set c99 mode.
+  AC_REQUIRE([AC_PROG_CC_STDC])
+  # Code from module stdbool:
+  # Code from module stdbool-tests:
+  # Code from module stddef:
+  # Code from module stddef-tests:
+  # Code from module stdint:
+  # Code from module stdint-tests:
+  # Code from module stdio:
+  # Code from module stdio-tests:
+  # Code from module stdlib:
+  # Code from module stdlib-tests:
+  # Code from module strdup-posix:
+  # Code from module streq:
+  # Code from module strerror:
+  # Code from module strerror-tests:
+  # Code from module strerror_r-posix:
+  # Code from module strerror_r-posix-tests:
+  # Code from module string:
+  # Code from module string-tests:
+  # Code from module strndup:
+  # Code from module strnlen:
+  # Code from module strnlen-tests:
+  # Code from module strtoll:
+  # Code from module strtoull:
+  # Code from module symlink:
+  # Code from module symlink-tests:
+  # Code from module sys_stat:
+  # Code from module sys_stat-tests:
+  # Code from module sys_time:
+  # Code from module sys_time-tests:
+  # Code from module tempname:
+  # Code from module thread:
+  # Code from module threadlib:
+  gl_THREADLIB_EARLY
+  # Code from module time:
+  # Code from module time-tests:
+  # Code from module unistd:
+  # Code from module unistd-tests:
+  # Code from module unlink:
+  # Code from module unlink-tests:
+  # Code from module unlinkdir:
+  # Code from module unsetenv:
+  # Code from module unsetenv-tests:
+  # Code from module update-copyright:
+  # Code from module update-copyright-tests:
+  # Code from module useless-if-before-free:
+  # Code from module usleep:
+  # Code from module usleep-tests:
+  # Code from module vc-list-files:
+  # Code from module vc-list-files-tests:
+  # Code from module verify:
+  # Code from module verify-tests:
+  # Code from module version-etc:
+  # Code from module version-etc-fsf:
+  # Code from module version-etc-tests:
+  # Code from module warn-on-use:
+  # Code from module warnings:
+  # Code from module wchar:
+  # Code from module wchar-tests:
+  # Code from module wcrtomb:
+  # Code from module wcrtomb-tests:
+  # Code from module wctob:
+  # Code from module wctomb:
+  # Code from module wctype-h:
+  # Code from module wctype-h-tests:
+  # Code from module xalloc:
+  # Code from module xalloc-die:
+  # Code from module xalloc-die-tests:
+  # Code from module xalloc-oversized:
+  # Code from module xstrndup:
+  # Code from module xstrtol:
+  # Code from module xstrtol-tests:
+  # Code from module xstrtoll:
+  # Code from module xstrtoll-tests:
+  # Code from module yield:
+])
+
+# This macro should be invoked from ./configure.ac, in the section
+# "Check for header files, types and library functions".
+AC_DEFUN([gl_INIT],
+[
+  AM_CONDITIONAL([GL_COND_LIBTOOL], [true])
+  gl_cond_libtool=true
+  gl_m4_base='m4'
+  m4_pushdef([AC_LIBOBJ], m4_defn([gl_LIBOBJ]))
+  m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gl_REPLACE_FUNCS]))
+  m4_pushdef([AC_LIBSOURCES], m4_defn([gl_LIBSOURCES]))
+  m4_pushdef([gl_LIBSOURCES_LIST], [])
+  m4_pushdef([gl_LIBSOURCES_DIR], [])
+  gl_COMMON
+  gl_source_base='lib'
+changequote(,)dnl
+LTALLOCA=`echo "$ALLOCA" | sed -e 's/\.[^.]* /.lo /g;s/\.[^.]*$/.lo/'`
+changequote([, ])dnl
+AC_SUBST([LTALLOCA])
+gl_FUNC_ALLOCA
+gl_ARGMATCH
+gl_ASSERT
+gl_FUNC_BTOWC
+gl_WCHAR_MODULE_INDICATOR([btowc])
+gl_FUNC_CALLOC_GNU
+gl_MODULE_INDICATOR([calloc-gnu])
+gl_FUNC_CALLOC_POSIX
+gl_STDLIB_MODULE_INDICATOR([calloc-posix])
+gl_CANONICALIZE_LGPL
+gl_MODULE_INDICATOR([canonicalize-lgpl])
+gl_STDLIB_MODULE_INDICATOR([canonicalize_file_name])
+gl_STDLIB_MODULE_INDICATOR([realpath])
+gl_FUNC_CLOSE
+gl_UNISTD_MODULE_INDICATOR([close])
+gl_CLOSE_STREAM
+gl_MODULE_INDICATOR([close-stream])
+gl_CLOSEOUT
+gl_CONFIG_H
+gl_CONFIGMAKE_PREP
+gl_DIRNAME
+gl_MODULE_INDICATOR([dirname])
+gl_DIRNAME_LGPL
+gl_DOUBLE_SLASH_ROOT
+gl_HEADER_ERRNO_H
+gl_ERROR
+m4_ifdef([AM_XGETTEXT_OPTION],
+  [AM_][XGETTEXT_OPTION([--flag=error:3:c-format])
+   AM_][XGETTEXT_OPTION([--flag=error_at_line:5:c-format])])
+gl_FUNC_FCLOSE
+gl_STDIO_MODULE_INDICATOR([fclose])
+gl_FUNC_FFLUSH
+gl_MODULE_INDICATOR([fflush])
+gl_STDIO_MODULE_INDICATOR([fflush])
+gl_FUNC_FPENDING
+gl_FUNC_FPURGE
+gl_STDIO_MODULE_INDICATOR([fpurge])
+gl_FUNC_FREADING
+gl_FUNC_FSEEKO
+gl_STDIO_MODULE_INDICATOR([fseeko])
+gl_FUNC_FSYNC
+gl_UNISTD_MODULE_INDICATOR([fsync])
+gl_FUNC_FTELLO
+gl_STDIO_MODULE_INDICATOR([ftello])
+gl_FUNC_GETOPT_GNU
+gl_MODULE_INDICATOR_FOR_TESTS([getopt-gnu])
+gl_FUNC_GETOPT_POSIX
+AC_SUBST([LIBINTL])
+AC_SUBST([LTLIBINTL])
+gl_FUNC_GETTIMEOFDAY
+gl_SYS_TIME_MODULE_INDICATOR([gettimeofday])
+# Autoconf 2.61a.99 and earlier don't support linking a file only
+# in VPATH builds.  But since GNUmakefile is for maintainer use
+# only, it does not matter if we skip the link with older autoconf.
+# Automake 1.10.1 and earlier try to remove GNUmakefile in non-VPATH
+# builds, so use a shell variable to bypass this.
+GNUmakefile=GNUmakefile
+m4_if(m4_version_compare([2.61a.100],
+        m4_defn([m4_PACKAGE_VERSION])), [1], [],
+      [AC_CONFIG_LINKS([$GNUmakefile:$GNUmakefile], [],
+        [GNUmakefile=$GNUmakefile])])
+gl_INLINE
+gl_INTTYPES_H
+gl_INTTYPES_INCOMPLETE
+gl_LANGINFO_H
+gl_IGNORE_UNUSED_LIBRARIES
+gl_LOCALCHARSET
+LOCALCHARSET_TESTS_ENVIRONMENT="CHARSETALIASDIR=\"\$(top_builddir)/$gl_source_base\""
+AC_SUBST([LOCALCHARSET_TESTS_ENVIRONMENT])
+gl_LOCK
+gl_LONG_OPTIONS
+gl_FUNC_LSEEK
+gl_UNISTD_MODULE_INDICATOR([lseek])
+gl_FUNC_LSTAT
+gl_SYS_STAT_MODULE_INDICATOR([lstat])
+AC_CONFIG_COMMANDS_PRE([m4_ifdef([AH_HEADER],
+  [AC_SUBST([CONFIG_INCLUDE], m4_defn([AH_HEADER]))])])
+gl_FUNC_MALLOC_GNU
+gl_MODULE_INDICATOR([malloc-gnu])
+gl_FUNC_MALLOC_POSIX
+gl_STDLIB_MODULE_INDICATOR([malloc-posix])
+gl_MALLOCA
+gl_FUNC_MBRTOWC
+gl_WCHAR_MODULE_INDICATOR([mbrtowc])
+gl_FUNC_MBSINIT
+gl_WCHAR_MODULE_INDICATOR([mbsinit])
+gl_FUNC_MBTOWC
+gl_STDLIB_MODULE_INDICATOR([mbtowc])
+gl_FUNC_MKSTEMP
+gl_STDLIB_MODULE_INDICATOR([mkstemp])
+gl_MULTIARCH
+gl_FUNC_NL_LANGINFO
+gl_LANGINFO_MODULE_INDICATOR([nl_langinfo])
+gl_PATHMAX
+AC_CHECK_DECLS([program_invocation_name], [], [], [#include <errno.h>])
+AC_CHECK_DECLS([program_invocation_short_name], [], [], [#include <errno.h>])
+gl_QUOTE
+gl_QUOTEARG
+gl_FUNC_READ
+gl_UNISTD_MODULE_INDICATOR([read])
+gl_FUNC_READLINK
+gl_UNISTD_MODULE_INDICATOR([readlink])
+gl_FUNC_REALLOC_GNU
+gl_MODULE_INDICATOR([realloc-gnu])
+gl_FUNC_REALLOC_POSIX
+gl_STDLIB_MODULE_INDICATOR([realloc-posix])
+gl_REGEX
+gl_FUNC_RPMATCH
+gl_STDLIB_MODULE_INDICATOR([rpmatch])
+gl_SAFE_READ
+gl_FUNC_SLEEP
+gl_UNISTD_MODULE_INDICATOR([sleep])
+gt_TYPE_SSIZE_T
+gl_FUNC_STAT
+gl_SYS_STAT_MODULE_INDICATOR([stat])
+gl_STDARG_H
+AM_STDBOOL_H
+gl_STDDEF_H
+gl_STDINT_H
+gl_STDIO_H
+gl_STDLIB_H
+gl_FUNC_STRDUP_POSIX
+gl_STRING_MODULE_INDICATOR([strdup])
+gl_FUNC_STRERROR
+gl_MODULE_INDICATOR([strerror])
+gl_STRING_MODULE_INDICATOR([strerror])
+gl_FUNC_STRERROR_R
+if test $HAVE_DECL_STRERROR_R = 0 || test $REPLACE_STRERROR_R = 1; then
+  AC_LIBOBJ([strerror_r])
+  gl_PREREQ_STRERROR_R
+fi
+gl_STRING_MODULE_INDICATOR([strerror_r])
+gl_HEADER_STRING_H
+gl_FUNC_STRNDUP
+gl_STRING_MODULE_INDICATOR([strndup])
+gl_FUNC_STRNLEN
+gl_STRING_MODULE_INDICATOR([strnlen])
+gl_FUNC_STRTOLL
+gl_STDLIB_MODULE_INDICATOR([strtoll])
+gl_FUNC_STRTOULL
+gl_STDLIB_MODULE_INDICATOR([strtoull])
+gl_HEADER_SYS_STAT_H
+AC_PROG_MKDIR_P
+gl_HEADER_SYS_TIME_H
+AC_PROG_MKDIR_P
+gl_FUNC_GEN_TEMPNAME
+gl_THREADLIB
+gl_HEADER_TIME_H
+gl_UNISTD_H
+gl_FUNC_UNLINK
+gl_UNISTD_MODULE_INDICATOR([unlink])
+gl_FUNC_USLEEP
+gl_UNISTD_MODULE_INDICATOR([usleep])
+gl_VERSION_ETC
+AC_SUBST([WARN_CFLAGS])
+gl_WCHAR_H
+gl_FUNC_WCRTOMB
+gl_WCHAR_MODULE_INDICATOR([wcrtomb])
+gl_WCTYPE_H
+gl_XALLOC
+gl_XSTRNDUP
+gl_XSTRTOL
+AC_LIBOBJ([xstrtoll])
+AC_LIBOBJ([xstrtoull])
+AC_TYPE_LONG_LONG_INT
+test $ac_cv_type_long_long_int = no \
+  && AC_MSG_ERROR(
+      [you lack long long support; required by gnulib's xstrtoll module])
+  # End of code from modules
+  m4_ifval(gl_LIBSOURCES_LIST, [
+    m4_syscmd([test ! -d ]m4_defn([gl_LIBSOURCES_DIR])[ ||
+      for gl_file in ]gl_LIBSOURCES_LIST[ ; do
+        if test ! -r ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file ; then
+          echo "missing file ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file" >&2
+          exit 1
+        fi
+      done])dnl
+      m4_if(m4_sysval, [0], [],
+        [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])])
+  ])
+  m4_popdef([gl_LIBSOURCES_DIR])
+  m4_popdef([gl_LIBSOURCES_LIST])
+  m4_popdef([AC_LIBSOURCES])
+  m4_popdef([AC_REPLACE_FUNCS])
+  m4_popdef([AC_LIBOBJ])
+  AC_CONFIG_COMMANDS_PRE([
+    gl_libobjs=
+    gl_ltlibobjs=
+    if test -n "$gl_LIBOBJS"; then
+      # Remove the extension.
+      sed_drop_objext='s/\.o$//;s/\.obj$//'
+      for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do
+        gl_libobjs="$gl_libobjs $i.$ac_objext"
+        gl_ltlibobjs="$gl_ltlibobjs $i.lo"
+      done
+    fi
+    AC_SUBST([gl_LIBOBJS], [$gl_libobjs])
+    AC_SUBST([gl_LTLIBOBJS], [$gl_ltlibobjs])
+  ])
+  gltests_libdeps=
+  gltests_ltlibdeps=
+  m4_pushdef([AC_LIBOBJ], m4_defn([gltests_LIBOBJ]))
+  m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gltests_REPLACE_FUNCS]))
+  m4_pushdef([AC_LIBSOURCES], m4_defn([gltests_LIBSOURCES]))
+  m4_pushdef([gltests_LIBSOURCES_LIST], [])
+  m4_pushdef([gltests_LIBSOURCES_DIR], [])
+  gl_COMMON
+  gl_source_base='gnulib-tests'
+changequote(,)dnl
+  gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS
+changequote([, ])dnl
+  AC_SUBST([gltests_WITNESS])
+  gl_module_indicator_condition=$gltests_WITNESS
+  m4_pushdef([gl_MODULE_INDICATOR_CONDITION], [$gl_module_indicator_condition])
+gt_LOCALE_FR
+gt_LOCALE_FR_UTF8
+gt_LOCALE_FR
+gt_LOCALE_TR_UTF8
+gl_FUNC_DUP2
+gl_UNISTD_MODULE_INDICATOR([dup2])
+gl_ENVIRON
+gl_UNISTD_MODULE_INDICATOR([environ])
+gl_FCNTL_H
+gl_FUNC_UNGETC_WORKS
+gl_FUNC_FTELL
+gl_STDIO_MODULE_INDICATOR([ftell])
+gl_FUNC_UNGETC_WORKS
+gl_FUNC_UNGETC_WORKS
+gl_FUNC_GETPAGESIZE
+gl_UNISTD_MODULE_INDICATOR([getpagesize])
+AC_REQUIRE([AC_C_INLINE])
+gl_LOCALE_H
+AC_CHECK_FUNCS_ONCE([newlocale])
+gl_LOCALENAME
+AC_CHECK_FUNCS_ONCE([newlocale])
+gt_LOCALE_FR
+gt_LOCALE_FR_UTF8
+gt_LOCALE_JA
+gt_LOCALE_ZH_CN
+gt_LOCALE_FR_UTF8
+gt_LOCALE_FR
+gt_LOCALE_FR_UTF8
+gl_FUNC_OPEN
+gl_FCNTL_MODULE_INDICATOR([open])
+gl_PRIV_SET
+gl_FUNC_PUTENV
+gl_STDLIB_MODULE_INDICATOR([putenv])
+gl_FUNC_SETENV
+gl_STDLIB_MODULE_INDICATOR([setenv])
+gl_FUNC_SETLOCALE
+gl_LOCALE_MODULE_INDICATOR([setlocale])
+gt_LOCALE_FR
+gt_LOCALE_FR_UTF8
+gt_LOCALE_JA
+gt_LOCALE_ZH_CN
+AC_CHECK_DECLS_ONCE([alarm])
+gt_TYPE_WCHAR_T
+gt_TYPE_WINT_T
+dnl Check for prerequisites for memory fence checks.
+gl_FUNC_MMAP_ANON
+AC_CHECK_HEADERS_ONCE([sys/mman.h])
+AC_CHECK_FUNCS_ONCE([mprotect])
+gl_FUNC_SYMLINK
+gl_UNISTD_MODULE_INDICATOR([symlink])
+gl_THREAD
+gl_UNLINKDIR
+gl_FUNC_UNSETENV
+gl_STDLIB_MODULE_INDICATOR([unsetenv])
+abs_aux_dir=`cd "$ac_aux_dir"; pwd`
+AC_SUBST([abs_aux_dir])
+abs_aux_dir=`cd "$ac_aux_dir"; pwd`
+AC_SUBST([abs_aux_dir])
+gt_LOCALE_FR
+gt_LOCALE_FR_UTF8
+gt_LOCALE_JA
+gt_LOCALE_ZH_CN
+gl_FUNC_WCTOB
+gl_WCHAR_MODULE_INDICATOR([wctob])
+gl_FUNC_WCTOMB
+gl_STDLIB_MODULE_INDICATOR([wctomb])
+gl_YIELD
+  m4_popdef([gl_MODULE_INDICATOR_CONDITION])
+  m4_ifval(gltests_LIBSOURCES_LIST, [
+    m4_syscmd([test ! -d ]m4_defn([gltests_LIBSOURCES_DIR])[ ||
+      for gl_file in ]gltests_LIBSOURCES_LIST[ ; do
+        if test ! -r ]m4_defn([gltests_LIBSOURCES_DIR])[/$gl_file ; then
+          echo "missing file ]m4_defn([gltests_LIBSOURCES_DIR])[/$gl_file" >&2
+          exit 1
+        fi
+      done])dnl
+      m4_if(m4_sysval, [0], [],
+        [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])])
+  ])
+  m4_popdef([gltests_LIBSOURCES_DIR])
+  m4_popdef([gltests_LIBSOURCES_LIST])
+  m4_popdef([AC_LIBSOURCES])
+  m4_popdef([AC_REPLACE_FUNCS])
+  m4_popdef([AC_LIBOBJ])
+  AC_CONFIG_COMMANDS_PRE([
+    gltests_libobjs=
+    gltests_ltlibobjs=
+    if test -n "$gltests_LIBOBJS"; then
+      # Remove the extension.
+      sed_drop_objext='s/\.o$//;s/\.obj$//'
+      for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do
+        gltests_libobjs="$gltests_libobjs $i.$ac_objext"
+        gltests_ltlibobjs="$gltests_ltlibobjs $i.lo"
+      done
+    fi
+    AC_SUBST([gltests_LIBOBJS], [$gltests_libobjs])
+    AC_SUBST([gltests_LTLIBOBJS], [$gltests_ltlibobjs])
+  ])
+  LIBTESTS_LIBDEPS="$gltests_libdeps"
+  AC_SUBST([LIBTESTS_LIBDEPS])
+])
+
+# Like AC_LIBOBJ, except that the module name goes
+# into gl_LIBOBJS instead of into LIBOBJS.
+AC_DEFUN([gl_LIBOBJ], [
+  AS_LITERAL_IF([$1], [gl_LIBSOURCES([$1.c])])dnl
+  gl_LIBOBJS="$gl_LIBOBJS $1.$ac_objext"
+])
+
+# Like AC_REPLACE_FUNCS, except that the module name goes
+# into gl_LIBOBJS instead of into LIBOBJS.
+AC_DEFUN([gl_REPLACE_FUNCS], [
+  m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl
+  AC_CHECK_FUNCS([$1], , [gl_LIBOBJ($ac_func)])
+])
+
+# Like AC_LIBSOURCES, except the directory where the source file is
+# expected is derived from the gnulib-tool parameterization,
+# and alloca is special cased (for the alloca-opt module).
+# We could also entirely rely on EXTRA_lib..._SOURCES.
+AC_DEFUN([gl_LIBSOURCES], [
+  m4_foreach([_gl_NAME], [$1], [
+    m4_if(_gl_NAME, [alloca.c], [], [
+      m4_define([gl_LIBSOURCES_DIR], [lib])
+      m4_append([gl_LIBSOURCES_LIST], _gl_NAME, [ ])
+    ])
+  ])
+])
+
+# Like AC_LIBOBJ, except that the module name goes
+# into gltests_LIBOBJS instead of into LIBOBJS.
+AC_DEFUN([gltests_LIBOBJ], [
+  AS_LITERAL_IF([$1], [gltests_LIBSOURCES([$1.c])])dnl
+  gltests_LIBOBJS="$gltests_LIBOBJS $1.$ac_objext"
+])
+
+# Like AC_REPLACE_FUNCS, except that the module name goes
+# into gltests_LIBOBJS instead of into LIBOBJS.
+AC_DEFUN([gltests_REPLACE_FUNCS], [
+  m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl
+  AC_CHECK_FUNCS([$1], , [gltests_LIBOBJ($ac_func)])
+])
+
+# Like AC_LIBSOURCES, except the directory where the source file is
+# expected is derived from the gnulib-tool parameterization,
+# and alloca is special cased (for the alloca-opt module).
+# We could also entirely rely on EXTRA_lib..._SOURCES.
+AC_DEFUN([gltests_LIBSOURCES], [
+  m4_foreach([_gl_NAME], [$1], [
+    m4_if(_gl_NAME, [alloca.c], [], [
+      m4_define([gltests_LIBSOURCES_DIR], [gnulib-tests])
+      m4_append([gltests_LIBSOURCES_LIST], _gl_NAME, [ ])
+    ])
+  ])
+])
+
+# This macro records the list of files which have been installed by
+# gnulib-tool and may be removed by future gnulib-tool invocations.
+AC_DEFUN([gl_FILE_LIST], [
+  build-aux/announce-gen
+  build-aux/arg-nonnull.h
+  build-aux/c++defs.h
+  build-aux/config.rpath
+  build-aux/do-release-commit-and-tag
+  build-aux/gendocs.sh
+  build-aux/git-version-gen
+  build-aux/gitlog-to-changelog
+  build-aux/gnu-web-doc-update
+  build-aux/gnupload
+  build-aux/mktempd
+  build-aux/update-copyright
+  build-aux/useless-if-before-free
+  build-aux/vc-list-files
+  build-aux/warn-on-use.h
+  doc/fdl.texi
+  doc/gendocs_template
+  lib/alloca.c
+  lib/alloca.in.h
+  lib/argmatch.c
+  lib/argmatch.h
+  lib/basename-lgpl.c
+  lib/basename.c
+  lib/btowc.c
+  lib/calloc.c
+  lib/canonicalize-lgpl.c
+  lib/close-stream.c
+  lib/close-stream.h
+  lib/close.c
+  lib/closeout.c
+  lib/closeout.h
+  lib/config.charset
+  lib/dirname-lgpl.c
+  lib/dirname.c
+  lib/dirname.h
+  lib/dosname.h
+  lib/errno.in.h
+  lib/error.c
+  lib/error.h
+  lib/exitfail.c
+  lib/exitfail.h
+  lib/fclose.c
+  lib/fd-hook.c
+  lib/fd-hook.h
+  lib/fflush.c
+  lib/fpending.c
+  lib/fpending.h
+  lib/fpurge.c
+  lib/freading.c
+  lib/freading.h
+  lib/fseeko.c
+  lib/fsync.c
+  lib/ftello.c
+  lib/getopt.c
+  lib/getopt.in.h
+  lib/getopt1.c
+  lib/getopt_int.h
+  lib/gettext.h
+  lib/gettimeofday.c
+  lib/glthread/lock.c
+  lib/glthread/lock.h
+  lib/glthread/threadlib.c
+  lib/intprops.h
+  lib/inttypes.in.h
+  lib/langinfo.in.h
+  lib/localcharset.c
+  lib/localcharset.h
+  lib/long-options.c
+  lib/long-options.h
+  lib/lseek.c
+  lib/lstat.c
+  lib/malloc.c
+  lib/malloca.c
+  lib/malloca.h
+  lib/malloca.valgrind
+  lib/mbrtowc.c
+  lib/mbsinit.c
+  lib/mbtowc-impl.h
+  lib/mbtowc.c
+  lib/mkstemp.c
+  lib/nl_langinfo.c
+  lib/pathmax.h
+  lib/progname.c
+  lib/progname.h
+  lib/quote.c
+  lib/quote.h
+  lib/quotearg.c
+  lib/quotearg.h
+  lib/read.c
+  lib/readlink.c
+  lib/realloc.c
+  lib/ref-add.sin
+  lib/ref-del.sin
+  lib/regcomp.c
+  lib/regex.c
+  lib/regex.h
+  lib/regex_internal.c
+  lib/regex_internal.h
+  lib/regexec.c
+  lib/rpmatch.c
+  lib/safe-read.c
+  lib/safe-read.h
+  lib/sleep.c
+  lib/stat.c
+  lib/stdarg.in.h
+  lib/stdbool.in.h
+  lib/stddef.in.h
+  lib/stdint.in.h
+  lib/stdio-impl.h
+  lib/stdio.in.h
+  lib/stdlib.in.h
+  lib/strdup.c
+  lib/streq.h
+  lib/strerror-impl.h
+  lib/strerror.c
+  lib/strerror_r.c
+  lib/string.in.h
+  lib/stripslash.c
+  lib/strndup.c
+  lib/strnlen.c
+  lib/strtol.c
+  lib/strtoll.c
+  lib/strtoul.c
+  lib/strtoull.c
+  lib/sys_stat.in.h
+  lib/sys_time.in.h
+  lib/tempname.c
+  lib/tempname.h
+  lib/time.in.h
+  lib/unistd.in.h
+  lib/unlink.c
+  lib/usleep.c
+  lib/verify.h
+  lib/version-etc-fsf.c
+  lib/version-etc.c
+  lib/version-etc.h
+  lib/wchar.in.h
+  lib/wcrtomb.c
+  lib/wctype.in.h
+  lib/xalloc-die.c
+  lib/xalloc-oversized.h
+  lib/xalloc.h
+  lib/xmalloc.c
+  lib/xstrndup.c
+  lib/xstrndup.h
+  lib/xstrtol-error.c
+  lib/xstrtol.c
+  lib/xstrtol.h
+  lib/xstrtoll.c
+  lib/xstrtoul.c
+  lib/xstrtoull.c
+  m4/00gnulib.m4
+  m4/alloca.m4
+  m4/argmatch.m4
+  m4/assert.m4
+  m4/btowc.m4
+  m4/calloc.m4
+  m4/canonicalize.m4
+  m4/close-stream.m4
+  m4/close.m4
+  m4/closeout.m4
+  m4/codeset.m4
+  m4/config-h.m4
+  m4/configmake.m4
+  m4/dirname.m4
+  m4/double-slash-root.m4
+  m4/dup2.m4
+  m4/eealloc.m4
+  m4/environ.m4
+  m4/errno_h.m4
+  m4/error.m4
+  m4/extensions.m4
+  m4/fclose.m4
+  m4/fcntl-o.m4
+  m4/fcntl_h.m4
+  m4/fflush.m4
+  m4/fpending.m4
+  m4/fpurge.m4
+  m4/freading.m4
+  m4/fseeko.m4
+  m4/fsync.m4
+  m4/ftell.m4
+  m4/ftello.m4
+  m4/getopt.m4
+  m4/getpagesize.m4
+  m4/gettimeofday.m4
+  m4/glibc21.m4
+  m4/gnulib-common.m4
+  m4/include_next.m4
+  m4/inline.m4
+  m4/intlmacosx.m4
+  m4/inttypes-pri.m4
+  m4/inttypes.m4
+  m4/langinfo_h.m4
+  m4/lcmessage.m4
+  m4/lib-ignore.m4
+  m4/lib-ld.m4
+  m4/lib-link.m4
+  m4/lib-prefix.m4
+  m4/localcharset.m4
+  m4/locale-fr.m4
+  m4/locale-ja.m4
+  m4/locale-tr.m4
+  m4/locale-zh.m4
+  m4/locale_h.m4
+  m4/localename.m4
+  m4/lock.m4
+  m4/long-options.m4
+  m4/longlong.m4
+  m4/lseek.m4
+  m4/lstat.m4
+  m4/malloc.m4
+  m4/malloca.m4
+  m4/manywarnings.m4
+  m4/mbrtowc.m4
+  m4/mbsinit.m4
+  m4/mbstate_t.m4
+  m4/mbtowc.m4
+  m4/mkstemp.m4
+  m4/mmap-anon.m4
+  m4/mode_t.m4
+  m4/multiarch.m4
+  m4/nl_langinfo.m4
+  m4/nocrash.m4
+  m4/open.m4
+  m4/pathmax.m4
+  m4/priv-set.m4
+  m4/putenv.m4
+  m4/quote.m4
+  m4/quotearg.m4
+  m4/read.m4
+  m4/readlink.m4
+  m4/realloc.m4
+  m4/regex.m4
+  m4/rpmatch.m4
+  m4/safe-read.m4
+  m4/setenv.m4
+  m4/setlocale.m4
+  m4/sleep.m4
+  m4/ssize_t.m4
+  m4/stat.m4
+  m4/stdarg.m4
+  m4/stdbool.m4
+  m4/stddef_h.m4
+  m4/stdint.m4
+  m4/stdio_h.m4
+  m4/stdlib_h.m4
+  m4/strdup.m4
+  m4/strerror.m4
+  m4/strerror_r.m4
+  m4/string_h.m4
+  m4/strndup.m4
+  m4/strnlen.m4
+  m4/strtoll.m4
+  m4/strtoull.m4
+  m4/symlink.m4
+  m4/sys_stat_h.m4
+  m4/sys_time_h.m4
+  m4/tempname.m4
+  m4/thread.m4
+  m4/threadlib.m4
+  m4/time_h.m4
+  m4/ungetc.m4
+  m4/unistd_h.m4
+  m4/unlink.m4
+  m4/unlinkdir.m4
+  m4/usleep.m4
+  m4/version-etc.m4
+  m4/warn-on-use.m4
+  m4/warnings.m4
+  m4/wchar_h.m4
+  m4/wchar_t.m4
+  m4/wcrtomb.m4
+  m4/wctob.m4
+  m4/wctomb.m4
+  m4/wctype_h.m4
+  m4/wint_t.m4
+  m4/xalloc.m4
+  m4/xstrndup.m4
+  m4/xstrtol.m4
+  m4/yield.m4
+  tests/init.sh
+  tests/macros.h
+  tests/signature.h
+  tests/test-alloca-opt.c
+  tests/test-argmatch.c
+  tests/test-binary-io.c
+  tests/test-binary-io.sh
+  tests/test-btowc.c
+  tests/test-btowc1.sh
+  tests/test-btowc2.sh
+  tests/test-c-ctype.c
+  tests/test-c-strcase.sh
+  tests/test-c-strcasecmp.c
+  tests/test-c-strncasecmp.c
+  tests/test-calloc-gnu.c
+  tests/test-canonicalize-lgpl.c
+  tests/test-dirname.c
+  tests/test-dup2.c
+  tests/test-environ.c
+  tests/test-errno.c
+  tests/test-fclose.c
+  tests/test-fcntl-h.c
+  tests/test-fflush.c
+  tests/test-fflush2.c
+  tests/test-fflush2.sh
+  tests/test-fpending.c
+  tests/test-fpending.sh
+  tests/test-fpurge.c
+  tests/test-freading.c
+  tests/test-fseeko.c
+  tests/test-fseeko.sh
+  tests/test-fseeko2.sh
+  tests/test-fsync.c
+  tests/test-ftell.c
+  tests/test-ftell.sh
+  tests/test-ftell2.sh
+  tests/test-ftell3.c
+  tests/test-ftello.c
+  tests/test-ftello.sh
+  tests/test-ftello2.sh
+  tests/test-ftello3.c
+  tests/test-getopt.c
+  tests/test-getopt.h
+  tests/test-getopt_long.h
+  tests/test-gettimeofday.c
+  tests/test-ignore-value.c
+  tests/test-intprops.c
+  tests/test-inttypes.c
+  tests/test-langinfo.c
+  tests/test-locale.c
+  tests/test-localename.c
+  tests/test-lock.c
+  tests/test-lseek.c
+  tests/test-lseek.sh
+  tests/test-lstat.c
+  tests/test-lstat.h
+  tests/test-malloc-gnu.c
+  tests/test-malloca.c
+  tests/test-mbrtowc-w32-1.sh
+  tests/test-mbrtowc-w32-2.sh
+  tests/test-mbrtowc-w32-3.sh
+  tests/test-mbrtowc-w32-4.sh
+  tests/test-mbrtowc-w32-5.sh
+  tests/test-mbrtowc-w32.c
+  tests/test-mbrtowc.c
+  tests/test-mbrtowc1.sh
+  tests/test-mbrtowc2.sh
+  tests/test-mbrtowc3.sh
+  tests/test-mbrtowc4.sh
+  tests/test-mbsinit.c
+  tests/test-mbsinit.sh
+  tests/test-nl_langinfo.c
+  tests/test-nl_langinfo.sh
+  tests/test-open.c
+  tests/test-open.h
+  tests/test-priv-set.c
+  tests/test-quotearg-simple.c
+  tests/test-quotearg.h
+  tests/test-readlink.c
+  tests/test-readlink.h
+  tests/test-realloc-gnu.c
+  tests/test-setenv.c
+  tests/test-setlocale1.c
+  tests/test-setlocale1.sh
+  tests/test-setlocale2.c
+  tests/test-setlocale2.sh
+  tests/test-sleep.c
+  tests/test-stat.c
+  tests/test-stat.h
+  tests/test-stdbool.c
+  tests/test-stddef.c
+  tests/test-stdint.c
+  tests/test-stdio.c
+  tests/test-stdlib.c
+  tests/test-strerror.c
+  tests/test-strerror_r.c
+  tests/test-string.c
+  tests/test-strnlen.c
+  tests/test-symlink.c
+  tests/test-symlink.h
+  tests/test-sys_stat.c
+  tests/test-sys_time.c
+  tests/test-sys_wait.h
+  tests/test-time.c
+  tests/test-unistd.c
+  tests/test-unlink.c
+  tests/test-unlink.h
+  tests/test-unsetenv.c
+  tests/test-update-copyright.sh
+  tests/test-usleep.c
+  tests/test-vc-list-files-cvs.sh
+  tests/test-vc-list-files-git.sh
+  tests/test-verify.c
+  tests/test-verify.sh
+  tests/test-version-etc.c
+  tests/test-version-etc.sh
+  tests/test-wchar.c
+  tests/test-wcrtomb-w32-1.sh
+  tests/test-wcrtomb-w32-2.sh
+  tests/test-wcrtomb-w32-3.sh
+  tests/test-wcrtomb-w32-4.sh
+  tests/test-wcrtomb-w32-5.sh
+  tests/test-wcrtomb-w32.c
+  tests/test-wcrtomb.c
+  tests/test-wcrtomb.sh
+  tests/test-wctype-h.c
+  tests/test-xalloc-die.c
+  tests/test-xalloc-die.sh
+  tests/test-xstrtol.c
+  tests/test-xstrtol.sh
+  tests/test-xstrtoll.c
+  tests/test-xstrtoll.sh
+  tests/test-xstrtoul.c
+  tests/test-xstrtoull.c
+  tests/zerosize-ptr.h
+  tests=lib/binary-io.h
+  tests=lib/c-ctype.c
+  tests=lib/c-ctype.h
+  tests=lib/c-strcase.h
+  tests=lib/c-strcasecmp.c
+  tests=lib/c-strncasecmp.c
+  tests=lib/dup2.c
+  tests=lib/fcntl.in.h
+  tests=lib/ftell.c
+  tests=lib/getpagesize.c
+  tests=lib/glthread/thread.c
+  tests=lib/glthread/thread.h
+  tests=lib/glthread/yield.h
+  tests=lib/ignore-value.h
+  tests=lib/locale.in.h
+  tests=lib/localename.c
+  tests=lib/localename.h
+  tests=lib/open.c
+  tests=lib/priv-set.c
+  tests=lib/priv-set.h
+  tests=lib/putenv.c
+  tests=lib/same-inode.h
+  tests=lib/setenv.c
+  tests=lib/setlocale.c
+  tests=lib/symlink.c
+  tests=lib/unlinkdir.c
+  tests=lib/unlinkdir.h
+  tests=lib/unsetenv.c
+  tests=lib/wctob.c
+  tests=lib/wctomb-impl.h
+  tests=lib/wctomb.c
+  top/GNUmakefile
+  top/maint.mk
+])
diff --git a/m4/iconv.m4 b/m4/iconv.m4
new file mode 100644 (file)
index 0000000..ce81080
--- /dev/null
@@ -0,0 +1,201 @@
+# -*- buffer-read-only: t -*- vi: set ro:
+# DO NOT EDIT! GENERATED AUTOMATICALLY!
+# iconv.m4 serial 9 (gettext-0.18)
+dnl Copyright (C) 2000-2002, 2007-2010 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.
+
+AC_DEFUN([AM_ICONV_LINKFLAGS_BODY],
+[
+  dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
+  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+  AC_REQUIRE([AC_LIB_RPATH])
+
+  dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
+  dnl accordingly.
+  AC_LIB_LINKFLAGS_BODY([iconv])
+])
+
+AC_DEFUN([AM_ICONV_LINK],
+[
+  dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
+  dnl those with the standalone portable GNU libiconv installed).
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+
+  dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
+  dnl accordingly.
+  AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
+
+  dnl Add $INCICONV to CPPFLAGS before performing the following checks,
+  dnl because if the user has installed libiconv and not disabled its use
+  dnl via --without-libiconv-prefix, he wants to use it. The first
+  dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed.
+  am_save_CPPFLAGS="$CPPFLAGS"
+  AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
+
+  AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [
+    am_cv_func_iconv="no, consider installing GNU libiconv"
+    am_cv_lib_iconv=no
+    AC_TRY_LINK([#include <stdlib.h>
+#include <iconv.h>],
+      [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_TRY_LINK([#include <stdlib.h>
+#include <iconv.h>],
+        [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, HP-UX 11.11, Solaris 10.
+      am_save_LIBS="$LIBS"
+      if test $am_cv_lib_iconv = yes; then
+        LIBS="$LIBS $LIBICONV"
+      fi
+      AC_TRY_RUN([
+#include <iconv.h>
+#include <string.h>
+int main ()
+{
+  /* 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 const char input[] = "\342\202\254"; /* EURO SIGN */
+        char buf[10];
+        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,
+                            (char **) &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if (res == 0)
+          return 1;
+      }
+  }
+  /* 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 const char input[] = "\263";
+        char buf[10];
+        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,
+                            (char **) &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if (res == 0)
+          return 1;
+      }
+  }
+#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 const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+        char buf[50];
+        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,
+                            (char **) &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if ((int)res > 0)
+          return 1;
+      }
+  }
+#endif
+  /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
+     provided.  */
+  if (/* Try standardized names.  */
+      iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1)
+      /* Try IRIX, OSF/1 names.  */
+      && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1)
+      /* Try AIX names.  */
+      && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
+      /* Try HP-UX names.  */
+      && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
+    return 1;
+  return 0;
+}], [am_cv_func_iconv_works=yes], [am_cv_func_iconv_works=no],
+        [case "$host_os" in
+           aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
+           *)            am_cv_func_iconv_works="guessing yes" ;;
+         esac])
+      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])
+])
+
+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_TRY_COMPILE([
+#include <stdlib.h>
+#include <iconv.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+#if defined(__STDC__) || 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])
+    AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1],
+      [Define as const if the declaration of iconv() needs const.])
+  fi
+])
diff --git a/m4/include_next.m4 b/m4/include_next.m4
new file mode 100644 (file)
index 0000000..b3c7849
--- /dev/null
@@ -0,0 +1,244 @@
+# include_next.m4 serial 18
+dnl Copyright (C) 2006-2011 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 Paul Eggert and Derek Price.
+
+dnl Sets INCLUDE_NEXT and PRAGMA_SYSTEM_HEADER.
+dnl
+dnl INCLUDE_NEXT expands to 'include_next' if the compiler supports it, or to
+dnl 'include' otherwise.
+dnl
+dnl INCLUDE_NEXT_AS_FIRST_DIRECTIVE expands to 'include_next' if the compiler
+dnl supports it in the special case that it is the first include directive in
+dnl the given file, or to 'include' otherwise.
+dnl
+dnl PRAGMA_SYSTEM_HEADER can be used in files that contain #include_next,
+dnl so as to avoid GCC warnings when the gcc option -pedantic is used.
+dnl '#pragma GCC system_header' has the same effect as if the file was found
+dnl through the include search path specified with '-isystem' options (as
+dnl opposed to the search path specified with '-I' options). Namely, gcc
+dnl does not warn about some things, and on some systems (Solaris and Interix)
+dnl __STDC__ evaluates to 0 instead of to 1. The latter is an undesired side
+dnl effect; we are therefore careful to use 'defined __STDC__' or '1' instead
+dnl of plain '__STDC__'.
+dnl
+dnl PRAGMA_COLUMNS can be used in files that override system header files, so
+dnl as to avoid compilation errors on HP NonStop systems when the gnulib file
+dnl is included by a system header file that does a "#pragma COLUMNS 80" (which
+dnl has the effect of truncating the lines of that file and all files that it
+dnl includes to 80 columns) and the gnulib file has lines longer than 80
+dnl columns.
+
+AC_DEFUN([gl_INCLUDE_NEXT],
+[
+  AC_LANG_PREPROC_REQUIRE()
+  AC_CACHE_CHECK([whether the preprocessor supports include_next],
+    [gl_cv_have_include_next],
+    [rm -rf conftestd1a conftestd1b conftestd2
+     mkdir conftestd1a conftestd1b conftestd2
+     dnl IBM C 9.0, 10.1 (original versions, prior to the 2009-01 updates) on
+     dnl AIX 6.1 support include_next when used as first preprocessor directive
+     dnl in a file, but not when preceded by another include directive. Check
+     dnl for this bug by including <stdio.h>.
+     dnl Additionally, with this same compiler, include_next is a no-op when
+     dnl used in a header file that was included by specifying its absolute
+     dnl file name. Despite these two bugs, include_next is used in the
+     dnl compiler's <math.h>. By virtue of the second bug, we need to use
+     dnl include_next as well in this case.
+     cat <<EOF > conftestd1a/conftest.h
+#define DEFINED_IN_CONFTESTD1
+#include_next <conftest.h>
+#ifdef DEFINED_IN_CONFTESTD2
+int foo;
+#else
+#error "include_next doesn't work"
+#endif
+EOF
+     cat <<EOF > conftestd1b/conftest.h
+#define DEFINED_IN_CONFTESTD1
+#include <stdio.h>
+#include_next <conftest.h>
+#ifdef DEFINED_IN_CONFTESTD2
+int foo;
+#else
+#error "include_next doesn't work"
+#endif
+EOF
+     cat <<EOF > conftestd2/conftest.h
+#ifndef DEFINED_IN_CONFTESTD1
+#error "include_next test doesn't work"
+#endif
+#define DEFINED_IN_CONFTESTD2
+EOF
+     gl_save_CPPFLAGS="$CPPFLAGS"
+     CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1b -Iconftestd2"
+dnl We intentionally avoid using AC_LANG_SOURCE here.
+     AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED[#include <conftest.h>]],
+       [gl_cv_have_include_next=yes],
+       [CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1a -Iconftestd2"
+        AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED[#include <conftest.h>]],
+          [gl_cv_have_include_next=buggy],
+          [gl_cv_have_include_next=no])
+       ])
+     CPPFLAGS="$gl_save_CPPFLAGS"
+     rm -rf conftestd1a conftestd1b conftestd2
+    ])
+  PRAGMA_SYSTEM_HEADER=
+  if test $gl_cv_have_include_next = yes; then
+    INCLUDE_NEXT=include_next
+    INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next
+    if test -n "$GCC"; then
+      PRAGMA_SYSTEM_HEADER='#pragma GCC system_header'
+    fi
+  else
+    if test $gl_cv_have_include_next = buggy; then
+      INCLUDE_NEXT=include
+      INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next
+    else
+      INCLUDE_NEXT=include
+      INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include
+    fi
+  fi
+  AC_SUBST([INCLUDE_NEXT])
+  AC_SUBST([INCLUDE_NEXT_AS_FIRST_DIRECTIVE])
+  AC_SUBST([PRAGMA_SYSTEM_HEADER])
+  AC_CACHE_CHECK([whether system header files limit the line length],
+    [gl_cv_pragma_columns],
+    [dnl HP NonStop systems, which define __TANDEM, have this misfeature.
+     AC_EGREP_CPP([choke me],
+       [
+#ifdef __TANDEM
+choke me
+#endif
+       ],
+       [gl_cv_pragma_columns=yes],
+       [gl_cv_pragma_columns=no])
+    ])
+  if test $gl_cv_pragma_columns = yes; then
+    PRAGMA_COLUMNS="#pragma COLUMNS 10000"
+  else
+    PRAGMA_COLUMNS=
+  fi
+  AC_SUBST([PRAGMA_COLUMNS])
+])
+
+# gl_CHECK_NEXT_HEADERS(HEADER1 HEADER2 ...)
+# ------------------------------------------
+# For each arg foo.h, if #include_next works, define NEXT_FOO_H to be
+# '<foo.h>'; otherwise define it to be
+# '"///usr/include/foo.h"', or whatever other absolute file name is suitable.
+# Also, if #include_next works as first preprocessing directive in a file,
+# define NEXT_AS_FIRST_DIRECTIVE_FOO_H to be '<foo.h>'; otherwise define it to
+# be
+# '"///usr/include/foo.h"', or whatever other absolute file name is suitable.
+# That way, a header file with the following line:
+#       #@INCLUDE_NEXT@ @NEXT_FOO_H@
+# or
+#       #@INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ @NEXT_AS_FIRST_DIRECTIVE_FOO_H@
+# behaves (after sed substitution) as if it contained
+#       #include_next <foo.h>
+# even if the compiler does not support include_next.
+# The three "///" are to pacify Sun C 5.8, which otherwise would say
+# "warning: #include of /usr/include/... may be non-portable".
+# Use `""', not `<>', so that the /// cannot be confused with a C99 comment.
+# Note: This macro assumes that the header file is not empty after
+# preprocessing, i.e. it does not only define preprocessor macros but also
+# provides some type/enum definitions or function/variable declarations.
+#
+# This macro also checks whether each header exists, by invoking
+# AC_CHECK_HEADERS_ONCE or AC_CHECK_HEADERS on each argument.
+AC_DEFUN([gl_CHECK_NEXT_HEADERS],
+[
+  gl_NEXT_HEADERS_INTERNAL([$1], [check])
+])
+
+# gl_NEXT_HEADERS(HEADER1 HEADER2 ...)
+# ------------------------------------
+# Like gl_CHECK_NEXT_HEADERS, except do not check whether the headers exist.
+# This is suitable for headers like <stddef.h> that are standardized by C89
+# and therefore can be assumed to exist.
+AC_DEFUN([gl_NEXT_HEADERS],
+[
+  gl_NEXT_HEADERS_INTERNAL([$1], [assume])
+])
+
+# The guts of gl_CHECK_NEXT_HEADERS and gl_NEXT_HEADERS.
+AC_DEFUN([gl_NEXT_HEADERS_INTERNAL],
+[
+  AC_REQUIRE([gl_INCLUDE_NEXT])
+  AC_REQUIRE([AC_CANONICAL_HOST])
+
+  m4_if([$2], [check],
+    [AC_CHECK_HEADERS_ONCE([$1])
+    ])
+
+  m4_foreach_w([gl_HEADER_NAME], [$1],
+    [AS_VAR_PUSHDEF([gl_next_header],
+                    [gl_cv_next_]m4_defn([gl_HEADER_NAME]))
+     if test $gl_cv_have_include_next = yes; then
+       AS_VAR_SET([gl_next_header], ['<'gl_HEADER_NAME'>'])
+     else
+       AC_CACHE_CHECK(
+         [absolute name of <]m4_defn([gl_HEADER_NAME])[>],
+         m4_defn([gl_next_header]),
+         [m4_if([$2], [check],
+            [AS_VAR_PUSHDEF([gl_header_exists],
+                            [ac_cv_header_]m4_defn([gl_HEADER_NAME]))
+             if test AS_VAR_GET(gl_header_exists) = yes; then
+             AS_VAR_POPDEF([gl_header_exists])
+            ])
+               AC_LANG_CONFTEST(
+                 [AC_LANG_SOURCE(
+                    [[#include <]]m4_dquote(m4_defn([gl_HEADER_NAME]))[[>]]
+                  )])
+               dnl AIX "xlc -E" and "cc -E" omit #line directives for header
+               dnl files that contain only a #include of other header files and
+               dnl no non-comment tokens of their own. This leads to a failure
+               dnl to detect the absolute name of <dirent.h>, <signal.h>,
+               dnl <poll.h> and others. The workaround is to force preservation
+               dnl of comments through option -C. This ensures all necessary
+               dnl #line directives are present. GCC supports option -C as well.
+               case "$host_os" in
+                 aix*) gl_absname_cpp="$ac_cpp -C" ;;
+                 *)    gl_absname_cpp="$ac_cpp" ;;
+               esac
+               dnl eval is necessary to expand gl_absname_cpp.
+               dnl Ultrix and Pyramid sh refuse to redirect output of eval,
+               dnl so use subshell.
+               AS_VAR_SET([gl_next_header],
+                 ['"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD |
+                  sed -n '\#/]m4_defn([gl_HEADER_NAME])[#{
+                    s#.*"\(.*/]m4_defn([gl_HEADER_NAME])[\)".*#\1#
+                    s#^/[^/]#//&#
+                    p
+                    q
+                  }'`'"'])
+          m4_if([$2], [check],
+            [else
+               AS_VAR_SET([gl_next_header], ['<'gl_HEADER_NAME'>'])
+             fi
+            ])
+         ])
+     fi
+     AC_SUBST(
+       AS_TR_CPP([NEXT_]m4_defn([gl_HEADER_NAME])),
+       [AS_VAR_GET([gl_next_header])])
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'gl_HEADER_NAME'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=AS_VAR_GET([gl_next_header])
+     fi
+     AC_SUBST(
+       AS_TR_CPP([NEXT_AS_FIRST_DIRECTIVE_]m4_defn([gl_HEADER_NAME])),
+       [$gl_next_as_first_directive])
+     AS_VAR_POPDEF([gl_next_header])])
+])
+
+# Autoconf 2.68 added warnings for our use of AC_COMPILE_IFELSE;
+# this fallback is safe for all earlier autoconf versions.
+m4_define_default([AC_LANG_DEFINES_PROVIDED])
diff --git a/m4/inline.m4 b/m4/inline.m4
new file mode 100644 (file)
index 0000000..a459080
--- /dev/null
@@ -0,0 +1,40 @@
+# inline.m4 serial 4
+dnl Copyright (C) 2006, 2009-2011 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 Test for the 'inline' keyword or equivalent.
+dnl Define 'inline' to a supported equivalent, or to nothing if not supported,
+dnl like AC_C_INLINE does.  Also, define HAVE_INLINE if 'inline' or an
+dnl equivalent is effectively supported, i.e. if the compiler is likely to
+dnl drop unused 'static inline' functions.
+AC_DEFUN([gl_INLINE],
+[
+  AC_REQUIRE([AC_C_INLINE])
+  AC_CACHE_CHECK([whether the compiler generally respects inline],
+    [gl_cv_c_inline_effective],
+    [if test $ac_cv_c_inline = no; then
+       gl_cv_c_inline_effective=no
+     else
+       dnl GCC defines __NO_INLINE__ if not optimizing or if -fno-inline is
+       dnl specified.
+       dnl Use AC_COMPILE_IFELSE here, not AC_EGREP_CPP, because the result
+       dnl depends on optimization flags, which can be in CFLAGS.
+       dnl (AC_EGREP_CPP looks only at the CPPFLAGS.)
+       AC_COMPILE_IFELSE(
+         [AC_LANG_PROGRAM([[]],
+           [[#ifdef __NO_INLINE__
+               #error "inline is not effective"
+             #endif]])],
+         [gl_cv_c_inline_effective=yes],
+         [gl_cv_c_inline_effective=no])
+     fi
+    ])
+  if test $gl_cv_c_inline_effective = yes; then
+    AC_DEFINE([HAVE_INLINE], [1],
+      [Define to 1 if the compiler supports one of the keywords
+       'inline', '__inline__', '__inline' and effectively inlines
+       functions marked as such.])
+  fi
+])
diff --git a/m4/intlmacosx.m4 b/m4/intlmacosx.m4
new file mode 100644 (file)
index 0000000..51f8547
--- /dev/null
@@ -0,0 +1,56 @@
+# intlmacosx.m4 serial 4 (gettext-0.18.2)
+dnl Copyright (C) 2004-2011 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 can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library 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 Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Checks for special options needed on MacOS X.
+dnl Defines INTL_MACOSX_LIBS.
+AC_DEFUN([gt_INTL_MACOSX],
+[
+  dnl Check for API introduced in MacOS X 10.2.
+  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 <CoreFoundation/CFPreferences.h>]],
+          [[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 MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.])
+  fi
+  dnl Check for API introduced in MacOS X 10.3.
+  AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent],
+    [gt_save_LIBS="$LIBS"
+     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+     AC_LINK_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[#include <CoreFoundation/CFLocale.h>]],
+          [[CFLocaleCopyCurrent();]])],
+       [gt_cv_func_CFLocaleCopyCurrent=yes],
+       [gt_cv_func_CFLocaleCopyCurrent=no])
+     LIBS="$gt_save_LIBS"])
+  if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+    AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1],
+      [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.])
+  fi
+  INTL_MACOSX_LIBS=
+  if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+    INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
+  fi
+  AC_SUBST([INTL_MACOSX_LIBS])
+])
diff --git a/m4/inttypes-pri.m4 b/m4/inttypes-pri.m4
new file mode 100644 (file)
index 0000000..e252b27
--- /dev/null
@@ -0,0 +1,42 @@
+# inttypes-pri.m4 serial 7 (gettext-0.18.2)
+dnl Copyright (C) 1997-2002, 2006, 2008-2011 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.
+
+AC_PREREQ([2.53])
+
+# Define PRI_MACROS_BROKEN if <inttypes.h> exists and defines the PRI*
+# macros to non-string values.  This is the case on AIX 4.3.3.
+
+AC_DEFUN([gt_INTTYPES_PRI],
+[
+  AC_CHECK_HEADERS([inttypes.h])
+  if test $ac_cv_header_inttypes_h = yes; then
+    AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken],
+      [gt_cv_inttypes_pri_broken],
+      [
+        AC_COMPILE_IFELSE(
+          [AC_LANG_PROGRAM(
+             [[
+#include <inttypes.h>
+#ifdef PRId32
+char *p = PRId32;
+#endif
+             ]],
+             [[]])],
+          [gt_cv_inttypes_pri_broken=no],
+          [gt_cv_inttypes_pri_broken=yes])
+      ])
+  fi
+  if test "$gt_cv_inttypes_pri_broken" = yes; then
+    AC_DEFINE_UNQUOTED([PRI_MACROS_BROKEN], [1],
+      [Define if <inttypes.h> exists and defines unusable PRI* macros.])
+    PRI_MACROS_BROKEN=1
+  else
+    PRI_MACROS_BROKEN=0
+  fi
+  AC_SUBST([PRI_MACROS_BROKEN])
+])
diff --git a/m4/inttypes.m4 b/m4/inttypes.m4
new file mode 100644 (file)
index 0000000..cc027a4
--- /dev/null
@@ -0,0 +1,172 @@
+# inttypes.m4 serial 24
+dnl Copyright (C) 2006-2011 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 Derek Price, Bruno Haible.
+dnl Test whether <inttypes.h> is supported or must be substituted.
+
+AC_DEFUN([gl_INTTYPES_H],
+[
+  AC_REQUIRE([gl_INTTYPES_INCOMPLETE])
+  gl_INTTYPES_PRI_SCN
+])
+
+AC_DEFUN_ONCE([gl_INTTYPES_INCOMPLETE],
+[
+  AC_REQUIRE([gl_STDINT_H])
+  AC_CHECK_HEADERS_ONCE([inttypes.h])
+
+  dnl Override <inttypes.h> always, so that the portability warnings work.
+  AC_REQUIRE([gl_INTTYPES_H_DEFAULTS])
+  gl_CHECK_NEXT_HEADERS([inttypes.h])
+
+  AC_REQUIRE([gl_MULTIARCH])
+
+  dnl Ensure that <stdint.h> defines the limit macros, since gnulib's
+  dnl <inttypes.h> relies on them.  This macro is only needed when a
+  dnl C++ compiler is in use; it has no effect for a C compiler.
+  dnl Also be careful to define __STDC_LIMIT_MACROS only when gnulib's
+  dnl <inttypes.h> is going to be created, and to avoid redefinition warnings
+  dnl if the __STDC_LIMIT_MACROS is already defined through the CPPFLAGS.
+  AC_DEFINE([GL_TRIGGER_STDC_LIMIT_MACROS], [1],
+    [Define to make the limit macros in <stdint.h> visible.])
+  AH_VERBATIM([__STDC_LIMIT_MACROS_ZZZ],
+[/* Ensure that <stdint.h> defines the limit macros, since gnulib's
+   <inttypes.h> relies on them.  */
+#if defined __cplusplus && !defined __STDC_LIMIT_MACROS && GL_TRIGGER_STDC_LIMIT_MACROS
+# define __STDC_LIMIT_MACROS 1
+#endif
+])
+
+  dnl Check for declarations of anything we want to poison if the
+  dnl corresponding gnulib module is not in use.
+  gl_WARN_ON_USE_PREPARE([[#include <inttypes.h>
+    ]], [imaxabs imaxdiv strtoimax strtoumax])
+])
+
+# Ensure that the PRI* and SCN* macros are defined appropriately.
+AC_DEFUN([gl_INTTYPES_PRI_SCN],
+[
+  AC_REQUIRE([gt_INTTYPES_PRI])
+
+  PRIPTR_PREFIX=
+  if test -n "$STDINT_H"; then
+    dnl Using the gnulib <stdint.h>. It always defines intptr_t to 'long'.
+    PRIPTR_PREFIX='"l"'
+  else
+    dnl Using the system's <stdint.h>.
+    for glpfx in '' l ll I64; do
+      case $glpfx in
+        '')  gltype1='int';;
+        l)   gltype1='long int';;
+        ll)  gltype1='long long int';;
+        I64) gltype1='__int64';;
+      esac
+      AC_COMPILE_IFELSE(
+        [AC_LANG_PROGRAM([[#include <stdint.h>
+           extern intptr_t foo;
+           extern $gltype1 foo;]])],
+        [PRIPTR_PREFIX='"'$glpfx'"'])
+      test -n "$PRIPTR_PREFIX" && break
+    done
+  fi
+  AC_SUBST([PRIPTR_PREFIX])
+
+  gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION(
+    [INT32_MAX_LT_INTMAX_MAX],
+    [defined INT32_MAX && defined INTMAX_MAX],
+    [INT32_MAX < INTMAX_MAX],
+    [sizeof (int) < sizeof (long long int)])
+  if test $APPLE_UNIVERSAL_BUILD = 0; then
+    gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION(
+      [INT64_MAX_EQ_LONG_MAX],
+      [defined INT64_MAX],
+      [INT64_MAX == LONG_MAX],
+      [sizeof (long long int) == sizeof (long int)])
+  else
+    INT64_MAX_EQ_LONG_MAX=-1
+  fi
+  gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION(
+    [UINT32_MAX_LT_UINTMAX_MAX],
+    [defined UINT32_MAX && defined UINTMAX_MAX],
+    [UINT32_MAX < UINTMAX_MAX],
+    [sizeof (unsigned int) < sizeof (unsigned long long int)])
+  if test $APPLE_UNIVERSAL_BUILD = 0; then
+    gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION(
+      [UINT64_MAX_EQ_ULONG_MAX],
+      [defined UINT64_MAX],
+      [UINT64_MAX == ULONG_MAX],
+      [sizeof (unsigned long long int) == sizeof (unsigned long int)])
+  else
+    UINT64_MAX_EQ_ULONG_MAX=-1
+  fi
+])
+
+# Define the symbol $1 to be 1 if the condition is true, 0 otherwise.
+# If $2 is true, the condition is $3; otherwise if long long int is supported
+# approximate the condition with $4; otherwise, assume the condition is false.
+# The condition should work on all C99 platforms; the approximations should be
+# good enough to work on all practical pre-C99 platforms.
+# $2 is evaluated by the C preprocessor, $3 and $4 as compile-time constants.
+AC_DEFUN([gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION],
+[
+  AC_CACHE_CHECK([whether $3],
+    [gl_cv_test_$1],
+    [AC_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[/* Work also in C++ mode.  */
+            #define __STDC_LIMIT_MACROS 1
+
+            /* Work if build is not clean.  */
+            #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H
+
+            #include <limits.h>
+            #if HAVE_STDINT_H
+             #include <stdint.h>
+            #endif
+
+            #if $2
+             #define CONDITION ($3)
+            #elif HAVE_LONG_LONG_INT
+             #define CONDITION ($4)
+            #else
+             #define CONDITION 0
+            #endif
+            int test[CONDITION ? 1 : -1];]])],
+       [gl_cv_test_$1=yes],
+       [gl_cv_test_$1=no])])
+  if test $gl_cv_test_$1 = yes; then
+    $1=1;
+  else
+    $1=0;
+  fi
+  AC_SUBST([$1])
+])
+
+AC_DEFUN([gl_INTTYPES_MODULE_INDICATOR],
+[
+  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+  AC_REQUIRE([gl_INTTYPES_H_DEFAULTS])
+  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+])
+
+AC_DEFUN([gl_INTTYPES_H_DEFAULTS],
+[
+  GNULIB_IMAXABS=0;      AC_SUBST([GNULIB_IMAXABS])
+  GNULIB_IMAXDIV=0;      AC_SUBST([GNULIB_IMAXDIV])
+  GNULIB_STRTOIMAX=0;    AC_SUBST([GNULIB_STRTOIMAX])
+  GNULIB_STRTOUMAX=0;    AC_SUBST([GNULIB_STRTOUMAX])
+  dnl Assume proper GNU behavior unless another module says otherwise.
+  HAVE_DECL_IMAXABS=1;   AC_SUBST([HAVE_DECL_IMAXABS])
+  HAVE_DECL_IMAXDIV=1;   AC_SUBST([HAVE_DECL_IMAXDIV])
+  HAVE_DECL_STRTOIMAX=1; AC_SUBST([HAVE_DECL_STRTOIMAX])
+  HAVE_DECL_STRTOUMAX=1; AC_SUBST([HAVE_DECL_STRTOUMAX])
+  INT32_MAX_LT_INTMAX_MAX=1;  AC_SUBST([INT32_MAX_LT_INTMAX_MAX])
+  INT64_MAX_EQ_LONG_MAX='defined _LP64';  AC_SUBST([INT64_MAX_EQ_LONG_MAX])
+  PRI_MACROS_BROKEN=0;   AC_SUBST([PRI_MACROS_BROKEN])
+  PRIPTR_PREFIX=__PRIPTR_PREFIX;  AC_SUBST([PRIPTR_PREFIX])
+  UINT32_MAX_LT_UINTMAX_MAX=1;  AC_SUBST([UINT32_MAX_LT_UINTMAX_MAX])
+  UINT64_MAX_EQ_ULONG_MAX='defined _LP64';  AC_SUBST([UINT64_MAX_EQ_ULONG_MAX])
+])
diff --git a/m4/langinfo_h.m4 b/m4/langinfo_h.m4
new file mode 100644 (file)
index 0000000..4cced8a
--- /dev/null
@@ -0,0 +1,105 @@
+# langinfo_h.m4 serial 7
+dnl Copyright (C) 2009-2011 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.
+
+AC_DEFUN([gl_LANGINFO_H],
+[
+  AC_REQUIRE([gl_LANGINFO_H_DEFAULTS])
+
+  dnl Persuade glibc-2.0.6 <langinfo.h> to define CODESET.
+  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+
+  dnl <langinfo.h> is always overridden, because of GNULIB_POSIXCHECK.
+  gl_CHECK_NEXT_HEADERS([langinfo.h])
+
+  dnl Determine whether <langinfo.h> exists. It is missing on mingw and BeOS.
+  HAVE_LANGINFO_CODESET=0
+  HAVE_LANGINFO_T_FMT_AMPM=0
+  HAVE_LANGINFO_ERA=0
+  HAVE_LANGINFO_YESEXPR=0
+  AC_CHECK_HEADERS_ONCE([langinfo.h])
+  if test $ac_cv_header_langinfo_h = yes; then
+    HAVE_LANGINFO_H=1
+    dnl Determine what <langinfo.h> defines. CODESET and ERA etc. are missing
+    dnl on OpenBSD 3.8. T_FMT_AMPM and YESEXPR, NOEXPR are missing on IRIX 5.3.
+    AC_CACHE_CHECK([whether langinfo.h defines CODESET],
+      [gl_cv_header_langinfo_codeset],
+      [AC_COMPILE_IFELSE(
+         [AC_LANG_PROGRAM([[#include <langinfo.h>
+int a = CODESET;
+]])],
+         [gl_cv_header_langinfo_codeset=yes],
+         [gl_cv_header_langinfo_codeset=no])
+      ])
+    if test $gl_cv_header_langinfo_codeset = yes; then
+      HAVE_LANGINFO_CODESET=1
+    fi
+    AC_CACHE_CHECK([whether langinfo.h defines T_FMT_AMPM],
+      [gl_cv_header_langinfo_t_fmt_ampm],
+      [AC_COMPILE_IFELSE(
+         [AC_LANG_PROGRAM([[#include <langinfo.h>
+int a = T_FMT_AMPM;
+]])],
+         [gl_cv_header_langinfo_t_fmt_ampm=yes],
+         [gl_cv_header_langinfo_t_fmt_ampm=no])
+      ])
+    if test $gl_cv_header_langinfo_t_fmt_ampm = yes; then
+      HAVE_LANGINFO_T_FMT_AMPM=1
+    fi
+    AC_CACHE_CHECK([whether langinfo.h defines ERA],
+      [gl_cv_header_langinfo_era],
+      [AC_COMPILE_IFELSE(
+         [AC_LANG_PROGRAM([[#include <langinfo.h>
+int a = ERA;
+]])],
+         [gl_cv_header_langinfo_era=yes],
+         [gl_cv_header_langinfo_era=no])
+      ])
+    if test $gl_cv_header_langinfo_era = yes; then
+      HAVE_LANGINFO_ERA=1
+    fi
+    AC_CACHE_CHECK([whether langinfo.h defines YESEXPR],
+      [gl_cv_header_langinfo_yesexpr],
+      [AC_COMPILE_IFELSE(
+         [AC_LANG_PROGRAM([[#include <langinfo.h>
+int a = YESEXPR;
+]])],
+         [gl_cv_header_langinfo_yesexpr=yes],
+         [gl_cv_header_langinfo_yesexpr=no])
+      ])
+    if test $gl_cv_header_langinfo_yesexpr = yes; then
+      HAVE_LANGINFO_YESEXPR=1
+    fi
+  else
+    HAVE_LANGINFO_H=0
+  fi
+  AC_SUBST([HAVE_LANGINFO_H])
+  AC_SUBST([HAVE_LANGINFO_CODESET])
+  AC_SUBST([HAVE_LANGINFO_T_FMT_AMPM])
+  AC_SUBST([HAVE_LANGINFO_ERA])
+  AC_SUBST([HAVE_LANGINFO_YESEXPR])
+
+  dnl Check for declarations of anything we want to poison if the
+  dnl corresponding gnulib module is not in use.
+  gl_WARN_ON_USE_PREPARE([[#include <langinfo.h>
+    ]], [nl_langinfo])
+])
+
+AC_DEFUN([gl_LANGINFO_MODULE_INDICATOR],
+[
+  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+  AC_REQUIRE([gl_LANGINFO_H_DEFAULTS])
+  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+  dnl Define it also as a C macro, for the benefit of the unit tests.
+  gl_MODULE_INDICATOR_FOR_TESTS([$1])
+])
+
+AC_DEFUN([gl_LANGINFO_H_DEFAULTS],
+[
+  GNULIB_NL_LANGINFO=0;  AC_SUBST([GNULIB_NL_LANGINFO])
+  dnl Assume proper GNU behavior unless another module says otherwise.
+  HAVE_NL_LANGINFO=1;    AC_SUBST([HAVE_NL_LANGINFO])
+  REPLACE_NL_LANGINFO=0; AC_SUBST([REPLACE_NL_LANGINFO])
+])
diff --git a/m4/lcmessage.m4 b/m4/lcmessage.m4
new file mode 100644 (file)
index 0000000..19aa77e
--- /dev/null
@@ -0,0 +1,30 @@
+# lcmessage.m4 serial 4 (gettext-0.14.2)
+dnl Copyright (C) 1995-2002, 2004-2005 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 can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library 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 Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl   Ulrich Drepper <drepper@cygnus.com>, 1995.
+
+# Check whether LC_MESSAGES is available in <locale.h>.
+
+AC_DEFUN([gt_LC_MESSAGES],
+[
+  AC_CACHE_CHECK([for LC_MESSAGES], gt_cv_val_LC_MESSAGES,
+    [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
+       gt_cv_val_LC_MESSAGES=yes, gt_cv_val_LC_MESSAGES=no)])
+  if test $gt_cv_val_LC_MESSAGES = yes; then
+    AC_DEFINE(HAVE_LC_MESSAGES, 1,
+      [Define if your <locale.h> file defines LC_MESSAGES.])
+  fi
+])
diff --git a/m4/lib-ignore.m4 b/m4/lib-ignore.m4
new file mode 100644 (file)
index 0000000..1fdfdc0
--- /dev/null
@@ -0,0 +1,115 @@
+# If possible, ignore libraries that are not depended on.
+
+dnl Copyright (C) 2006, 2009-2011 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 Written by Paul Eggert.
+
+# gl_IGNORE_UNUSED_LIBRARIES
+# --------------------------
+# Determines the option to be passed to the C/C++/Fortran compiler, so that it
+# omits unused libraries.
+# Example (on Solaris):
+# $ cc foo.c -lnsl; ldd ./a.out
+#         libnsl.so.1 =>   /lib/libnsl.so.1
+#         libc.so.1 =>     /lib/libc.so.1
+#         libmp.so.2 =>    /lib/libmp.so.2
+#         libmd.so.1 =>    /lib/libmd.so.1
+#         libscf.so.1 =>   /lib/libscf.so.1
+#         libdoor.so.1 =>  /lib/libdoor.so.1
+#         libuutil.so.1 =>         /lib/libuutil.so.1
+#         libgen.so.1 =>   /lib/libgen.so.1
+#         libm.so.2 =>     /lib/libm.so.2
+# $ cc foo.c -lnsl -Wl,-z,ignore; ldd ./a.out
+#         libc.so.1 =>     /lib/libc.so.1
+#         libm.so.2 =>     /lib/libm.so.2
+#
+# Note that the option works only for the C compiler, not for the C++
+# compiler:
+# - Sun C likes '-Wl,-z,ignore'.
+#   '-Qoption ld -z,ignore' is not accepted.
+#   '-z ignore' is accepted but has no effect.
+# - Sun C++ and Sun Fortran like '-Qoption ld -z,ignore'.
+#   '-Wl,-z,ignore' is not accepted.
+#   '-z ignore' is accepted but has no effect.
+#
+# Sets and substitutes a variable that depends on the current language:
+# - IGNORE_UNUSED_LIBRARIES_CFLAGS    for C
+# - IGNORE_UNUSED_LIBRARIES_CXXFLAGS  for C++
+# - IGNORE_UNUSED_LIBRARIES_FFLAGS    for Fortran
+#
+# Note that the option works only for direct invocation of the compiler, not
+# through libtool: When libtool is used to create a shared library, it will
+# honor and translate '-Wl,-z,ignore' to '-Qoption ld -z -Qoption ld ignore'
+# if needed, but it will drop a '-Qoption ld -z,ignore' on the command line.
+#
+AC_DEFUN([gl_IGNORE_UNUSED_LIBRARIES],
+[
+  AC_CACHE_CHECK([for []_AC_LANG[] compiler flag to ignore unused libraries],
+    [gl_cv_prog_[]_AC_LANG_ABBREV[]_ignore_unused_libraries],
+    [gl_cv_prog_[]_AC_LANG_ABBREV[]_ignore_unused_libraries=none
+     gl_saved_ldflags=$LDFLAGS
+     gl_saved_libs=$LIBS
+     # Link with -lm to detect binutils 2.16 bug with --as-needed; see
+     # <http://lists.gnu.org/archive/html/bug-gnulib/2006-06/msg00131.html>.
+     LIBS="$LIBS -lm"
+     # Use long option sequences like '-z ignore' to test for the feature,
+     # to forestall problems with linkers that have -z, -i, -g, -n, etc. flags.
+     # GCC + binutils likes '-Wl,--as-needed'.
+     # GCC + Solaris ld likes '-Wl,-z,ignore'.
+     # Sun C likes '-Wl,-z,ignore'. '-z ignore' is accepted but has no effect.
+     # Don't try bare '--as-needed'; nothing likes it and the HP-UX 11.11
+     # native cc issues annoying warnings and then ignores it,
+     # which would cause us to incorrectly conclude that it worked.
+     for gl_flags in _gl_IGNORE_UNUSED_LIBRARIES_OPTIONS
+     do
+       LDFLAGS="$gl_flags $LDFLAGS"
+       AC_LINK_IFELSE([AC_LANG_PROGRAM()],
+         [gl_cv_prog_[]_AC_LANG_ABBREV[]_ignore_unused_libraries=$gl_flags])
+       LDFLAGS=$gl_saved_ldflags
+       test "$gl_cv_prog_[]_AC_LANG_ABBREV[]_ignore_unused_libraries" != none &&
+         break
+     done
+     LIBS=$gl_saved_libs
+    ])
+  IGNORE_UNUSED_LIBRARIES_[]_AC_LANG_PREFIX[]FLAGS=
+  if test "$gl_cv_prog_[]_AC_LANG_ABBREV[]_ignore_unused_libraries" != none; then
+    IGNORE_UNUSED_LIBRARIES_[]_AC_LANG_PREFIX[]FLAGS="$gl_cv_prog_[]_AC_LANG_ABBREV[]_ignore_unused_libraries"
+  fi
+  AC_SUBST([IGNORE_UNUSED_LIBRARIES_]_AC_LANG_PREFIX[FLAGS])
+])
+
+# _gl_IGNORE_UNUSED_LIBRARIES_OPTIONS
+# -----------------------------------
+# Expands to the language dependent options to be tried.
+AC_DEFUN([_gl_IGNORE_UNUSED_LIBRARIES_OPTIONS],
+[_AC_LANG_DISPATCH([$0], _AC_LANG, $@)])
+
+# _gl_IGNORE_UNUSED_LIBRARIES_OPTIONS(C)
+# --------------------------------------
+m4_define([_gl_IGNORE_UNUSED_LIBRARIES_OPTIONS(C)],
+[ '-Wl,--as-needed' \
+  '-Wl,-z,ignore' \
+  '-z ignore'
+])
+
+# _gl_IGNORE_UNUSED_LIBRARIES_OPTIONS(C++)
+# ----------------------------------------
+m4_define([_gl_IGNORE_UNUSED_LIBRARIES_OPTIONS(C++)],
+[ '-Wl,--as-needed' \
+  '-Qoption ld -z,ignore' \
+  '-Wl,-z,ignore' \
+  '-z ignore'
+])
+
+# _gl_IGNORE_UNUSED_LIBRARIES_OPTIONS(Fortran 77)
+# -----------------------------------------------
+m4_copy([_gl_IGNORE_UNUSED_LIBRARIES_OPTIONS(C++)],
+        [_gl_IGNORE_UNUSED_LIBRARIES_OPTIONS(Fortran 77)])
+
+# _gl_IGNORE_UNUSED_LIBRARIES_OPTIONS(Fortran)
+# --------------------------------------------
+m4_copy([_gl_IGNORE_UNUSED_LIBRARIES_OPTIONS(Fortran 77)],
+        [_gl_IGNORE_UNUSED_LIBRARIES_OPTIONS(Fortran)])
diff --git a/m4/lib-ld.m4 b/m4/lib-ld.m4
new file mode 100644 (file)
index 0000000..ae003f7
--- /dev/null
@@ -0,0 +1,109 @@
+# lib-ld.m4 serial 5 (gettext-0.18.2)
+dnl Copyright (C) 1996-2003, 2009-2011 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/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision
+dnl with libtool.m4.
+
+dnl From libtool-1.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 ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  acl_cv_prog_gnu_ld=yes ;;
+*)
+  acl_cv_prog_gnu_ld=no ;;
+esac])
+with_gnu_ld=$acl_cv_prog_gnu_ld
+])
+
+dnl From libtool-1.4. Sets the variable LD.
+AC_DEFUN([AC_LIB_PROG_LD],
+[AC_ARG_WITH([gnu-ld],
+[  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]],
+test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+# 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
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  AC_MSG_CHECKING([for ld used by GCC])
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [[\\/]* | [A-Za-z]:[\\/]*)]
+      [re_direlt='/[^/][^/]*/\.\./']
+      # Canonicalize the path of ld
+      ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+        ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  AC_MSG_CHECKING([for GNU ld])
+else
+  AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL([acl_cv_path_LD],
+[if test -z "$LD"; then
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
+  for ac_dir in $PATH; do
+    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 GNU ld's only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
+      *GNU* | *'with BFD'*)
+        test "$with_gnu_ld" != no && break ;;
+      *)
+        test "$with_gnu_ld" != yes && break ;;
+      esac
+    fi
+  done
+  IFS="$ac_save_ifs"
+else
+  acl_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$acl_cv_path_LD"
+if test -n "$LD"; then
+  AC_MSG_RESULT([$LD])
+else
+  AC_MSG_RESULT([no])
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+AC_LIB_PROG_LD_GNU
+])
diff --git a/m4/lib-link.m4 b/m4/lib-link.m4
new file mode 100644 (file)
index 0000000..e7c9ba9
--- /dev/null
@@ -0,0 +1,777 @@
+# lib-link.m4 serial 26 (gettext-0.18.2)
+dnl Copyright (C) 2001-2011 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.
+
+AC_PREREQ([2.54])
+
+dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
+dnl the libraries corresponding to explicit and implicit dependencies.
+dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
+dnl augments the CPPFLAGS variable.
+dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
+dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
+AC_DEFUN([AC_LIB_LINKFLAGS],
+[
+  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+  AC_REQUIRE([AC_LIB_RPATH])
+  pushdef([Name],[m4_translit([$1],[./+-], [____])])
+  pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-],
+                                   [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
+  AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
+    AC_LIB_LINKFLAGS_BODY([$1], [$2])
+    ac_cv_lib[]Name[]_libs="$LIB[]NAME"
+    ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
+    ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
+    ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX"
+  ])
+  LIB[]NAME="$ac_cv_lib[]Name[]_libs"
+  LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
+  INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
+  LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix"
+  AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
+  AC_SUBST([LIB]NAME)
+  AC_SUBST([LTLIB]NAME)
+  AC_SUBST([LIB]NAME[_PREFIX])
+  dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
+  dnl results of this search when this library appears as a dependency.
+  HAVE_LIB[]NAME=yes
+  popdef([NAME])
+  popdef([Name])
+])
+
+dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode, [missing-message])
+dnl searches for libname and the libraries corresponding to explicit and
+dnl implicit dependencies, together with the specified include files and
+dnl the ability to compile and link the specified testcode. The missing-message
+dnl defaults to 'no' and may contain additional hints for the user.
+dnl If found, it sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME}
+dnl and LTLIB${NAME} variables and augments the CPPFLAGS variable, and
+dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
+dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
+dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
+dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
+AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
+[
+  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+  AC_REQUIRE([AC_LIB_RPATH])
+  pushdef([Name],[m4_translit([$1],[./+-], [____])])
+  pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-],
+                                   [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
+
+  dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
+  dnl accordingly.
+  AC_LIB_LINKFLAGS_BODY([$1], [$2])
+
+  dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
+  dnl because if the user has installed lib[]Name and not disabled its use
+  dnl via --without-lib[]Name-prefix, he wants to use it.
+  ac_save_CPPFLAGS="$CPPFLAGS"
+  AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
+
+  AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
+    ac_save_LIBS="$LIBS"
+    dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS,
+    dnl because these -l options might require -L options that are present in
+    dnl LIBS. -l options benefit only from the -L options listed before it.
+    dnl Otherwise, add it to the front of LIBS, because it may be a static
+    dnl library that depends on another static library that is present in LIBS.
+    dnl Static libraries benefit only from the static libraries listed after
+    dnl it.
+    case " $LIB[]NAME" in
+      *" -l"*) LIBS="$LIBS $LIB[]NAME" ;;
+      *)       LIBS="$LIB[]NAME $LIBS" ;;
+    esac
+    AC_LINK_IFELSE(
+      [AC_LANG_PROGRAM([[$3]], [[$4]])],
+      [ac_cv_lib[]Name=yes],
+      [ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])'])
+    LIBS="$ac_save_LIBS"
+  ])
+  if test "$ac_cv_lib[]Name" = yes; then
+    HAVE_LIB[]NAME=yes
+    AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the lib][$1 library.])
+    AC_MSG_CHECKING([how to link with lib[]$1])
+    AC_MSG_RESULT([$LIB[]NAME])
+  else
+    HAVE_LIB[]NAME=no
+    dnl If $LIB[]NAME didn't lead to a usable library, we don't need
+    dnl $INC[]NAME either.
+    CPPFLAGS="$ac_save_CPPFLAGS"
+    LIB[]NAME=
+    LTLIB[]NAME=
+    LIB[]NAME[]_PREFIX=
+  fi
+  AC_SUBST([HAVE_LIB]NAME)
+  AC_SUBST([LIB]NAME)
+  AC_SUBST([LTLIB]NAME)
+  AC_SUBST([LIB]NAME[_PREFIX])
+  popdef([NAME])
+  popdef([Name])
+])
+
+dnl Determine the platform dependent parameters needed to use rpath:
+dnl   acl_libext,
+dnl   acl_shlibext,
+dnl   acl_libname_spec,
+dnl   acl_library_names_spec,
+dnl   acl_hardcode_libdir_flag_spec,
+dnl   acl_hardcode_libdir_separator,
+dnl   acl_hardcode_direct,
+dnl   acl_hardcode_minus_L.
+AC_DEFUN([AC_LIB_RPATH],
+[
+  dnl Tell automake >= 1.10 to complain if config.rpath is missing.
+  m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])])
+  AC_REQUIRE([AC_PROG_CC])                dnl we use $CC, $GCC, $LDFLAGS
+  AC_REQUIRE([AC_LIB_PROG_LD])            dnl we use $LD, $with_gnu_ld
+  AC_REQUIRE([AC_CANONICAL_HOST])         dnl we use $host
+  AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
+  AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [
+    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
+  ])
+  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 Autoconf >= 2.61 supports dots in --with options.
+  pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[m4_translit(PACK,[.],[_])],PACK)])
+  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(P_A_C_K[-prefix],
+[[  --with-]]P_A_C_K[[-prefix[=DIR]  search for ]PACKLIBS[ in DIR/include and DIR/lib
+  --without-]]P_A_C_K[[-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\"
+        ])
+      else
+        additional_includedir="$withval/include"
+        additional_libdir="$withval/$acl_libdirstem"
+        if test "$acl_libdirstem2" != "$acl_libdirstem" \
+           && ! test -d "$withval/$acl_libdirstem"; then
+          additional_libdir="$withval/$acl_libdirstem2"
+        fi
+      fi
+    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
+            dir="$additional_libdir"
+            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"; 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"; 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"; 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"; 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
+          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"; 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"; 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"; 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"; 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"; 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"
+                ;;
+            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*)
+                    additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+                    dnl Potentially add $additional_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$additional_libdir" != "X/usr/$acl_libdirstem" \
+                       && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then
+                      haveit=
+                      if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \
+                         || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; 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$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                            dnl Really add $additional_libdir to $LIBNAME.
+                            LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_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$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                            dnl Really add $additional_libdir to $LTLIBNAME.
+                            LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_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([P_A_C_K])
+  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"; 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"; 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])
+])
diff --git a/m4/lib-prefix.m4 b/m4/lib-prefix.m4
new file mode 100644 (file)
index 0000000..7e5f0bd
--- /dev/null
@@ -0,0 +1,224 @@
+# lib-prefix.m4 serial 7 (gettext-0.18)
+dnl Copyright (C) 2001-2005, 2008-2011 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_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and
+dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't
+dnl require excessive bracketing.
+ifdef([AC_HELP_STRING],
+[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])],
+[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])])
+
+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_LIB_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 variable acl_libdirstem, containing the basename of the libdir, either
+dnl   "lib" or "lib64" or "lib/64",
+dnl - a variable acl_libdirstem2, as a secondary possible value for
+dnl   acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or
+dnl   "lib/amd64".
+AC_DEFUN([AC_LIB_PREPARE_MULTILIB],
+[
+  dnl There is no formal standard regarding lib and lib64.
+  dnl On 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. We determine
+  dnl the compiler's default mode by looking at the compiler's library search
+  dnl path. If at least one of its elements ends in /lib64 or points to a
+  dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI.
+  dnl Otherwise we use the default, 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])
+  acl_libdirstem=lib
+  acl_libdirstem2=
+  case "$host_os" in
+    solaris*)
+      dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment
+      dnl <http://docs.sun.com/app/docs/doc/816-5138/dev-env?l=en&a=view>.
+      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.
+      AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit],
+        [AC_EGREP_CPP([sixtyfour bits], [
+#ifdef _LP64
+sixtyfour bits
+#endif
+           ], [gl_cv_solaris_64bit=yes], [gl_cv_solaris_64bit=no])
+        ])
+      if test $gl_cv_solaris_64bit = yes; then
+        acl_libdirstem=lib/64
+        case "$host_cpu" in
+          sparc*)        acl_libdirstem2=lib/sparcv9 ;;
+          i*86 | x86_64) acl_libdirstem2=lib/amd64 ;;
+        esac
+      fi
+      ;;
+    *)
+      searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
+      if test -n "$searchpath"; then
+        acl_save_IFS="${IFS=   }"; IFS=":"
+        for searchdir in $searchpath; do
+          if test -d "$searchdir"; then
+            case "$searchdir" in
+              */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
+              */../ | */.. )
+                # Better ignore directories of this form. They are misleading.
+                ;;
+              *) searchdir=`cd "$searchdir" && pwd`
+                 case "$searchdir" in
+                   */lib64 ) acl_libdirstem=lib64 ;;
+                 esac ;;
+            esac
+          fi
+        done
+        IFS="$acl_save_IFS"
+      fi
+      ;;
+  esac
+  test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem"
+])
diff --git a/m4/libtool.m4 b/m4/libtool.m4
new file mode 100644 (file)
index 0000000..88de383
--- /dev/null
@@ -0,0 +1,7835 @@
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+#
+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
+#                 Inc.
+#   Written 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.
+
+m4_define([_LT_COPYING], [dnl
+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
+#                 Inc.
+#   Written by Gordon Matzigkeit, 1996
+#
+#   This file is part of GNU Libtool.
+#
+# 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 GNU Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+])
+
+# serial 57 LT_INIT
+
+
+# LT_PREREQ(VERSION)
+# ------------------
+# Complain and exit if this libtool version is less that VERSION.
+m4_defun([LT_PREREQ],
+[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
+       [m4_default([$3],
+                  [m4_fatal([Libtool version $1 or higher is required],
+                            63)])],
+       [$2])])
+
+
+# _LT_CHECK_BUILDDIR
+# ------------------
+# Complain if the absolute build directory name contains unusual characters
+m4_defun([_LT_CHECK_BUILDDIR],
+[case `pwd` in
+  *\ * | *\    *)
+    AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;
+esac
+])
+
+
+# LT_INIT([OPTIONS])
+# ------------------
+AC_DEFUN([LT_INIT],
+[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
+AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+AC_BEFORE([$0], [LT_LANG])dnl
+AC_BEFORE([$0], [LT_OUTPUT])dnl
+AC_BEFORE([$0], [LTDL_INIT])dnl
+m4_require([_LT_CHECK_BUILDDIR])dnl
+
+dnl Autoconf doesn't catch unexpanded LT_ macros by default:
+m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
+m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
+dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
+dnl unless we require an AC_DEFUNed macro:
+AC_REQUIRE([LTOPTIONS_VERSION])dnl
+AC_REQUIRE([LTSUGAR_VERSION])dnl
+AC_REQUIRE([LTVERSION_VERSION])dnl
+AC_REQUIRE([LTOBSOLETE_VERSION])dnl
+m4_require([_LT_PROG_LTMAIN])dnl
+
+_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}])
+
+dnl Parse OPTIONS
+_LT_SET_OPTIONS([$0], [$1])
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+_LT_SETUP
+
+# Only expand once:
+m4_define([LT_INIT])
+])# LT_INIT
+
+# Old names:
+AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
+AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
+dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
+
+
+# _LT_CC_BASENAME(CC)
+# -------------------
+# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
+m4_defun([_LT_CC_BASENAME],
+[for cc_temp in $1""; do
+  case $cc_temp in
+    compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
+    distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+])
+
+
+# _LT_FILEUTILS_DEFAULTS
+# ----------------------
+# It is okay to use these file commands and assume they have been set
+# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
+m4_defun([_LT_FILEUTILS_DEFAULTS],
+[: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+])# _LT_FILEUTILS_DEFAULTS
+
+
+# _LT_SETUP
+# ---------
+m4_defun([_LT_SETUP],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
+
+_LT_DECL([], [host_alias], [0], [The host system])dnl
+_LT_DECL([], [host], [0])dnl
+_LT_DECL([], [host_os], [0])dnl
+dnl
+_LT_DECL([], [build_alias], [0], [The build system])dnl
+_LT_DECL([], [build], [0])dnl
+_LT_DECL([], [build_os], [0])dnl
+dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([LT_PATH_LD])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+dnl
+AC_REQUIRE([AC_PROG_LN_S])dnl
+test -z "$LN_S" && LN_S="ln -s"
+_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
+dnl
+AC_REQUIRE([LT_CMD_MAX_LEN])dnl
+_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
+_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
+dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl
+m4_require([_LT_CMD_RELOAD])dnl
+m4_require([_LT_CHECK_MAGIC_METHOD])dnl
+m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl
+m4_require([_LT_CMD_OLD_ARCHIVE])dnl
+m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+m4_require([_LT_WITH_SYSROOT])dnl
+
+_LT_CONFIG_LIBTOOL_INIT([
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
+fi
+])
+if test -n "${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
+fi
+
+_LT_CHECK_OBJDIR
+
+m4_require([_LT_TAG_COMPILER])dnl
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "X${COLLECT_NAMES+set}" != Xset; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+_LT_CC_BASENAME([$compiler])
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    _LT_PATH_MAGIC
+  fi
+  ;;
+esac
+
+# Use C for the default configuration in the libtool script
+LT_SUPPORTED_TAG([CC])
+_LT_LANG_C_CONFIG
+_LT_LANG_DEFAULT_CONFIG
+_LT_CONFIG_COMMANDS
+])# _LT_SETUP
+
+
+# _LT_PREPARE_SED_QUOTE_VARS
+# --------------------------
+# Define a few sed substitution that help us do robust quoting.
+m4_defun([_LT_PREPARE_SED_QUOTE_VARS],
+[# Backslashify metacharacters that are still active within
+# double-quoted strings.
+sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([["`\\]]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+])
+
+# _LT_PROG_LTMAIN
+# ---------------
+# Note that this code is called both from `configure', and `config.status'
+# now that we use AC_CONFIG_COMMANDS to generate libtool.  Notably,
+# `config.status' has no value for ac_aux_dir unless we are using Automake,
+# so we pass a copy along to make sure it has a sensible value anyway.
+m4_defun([_LT_PROG_LTMAIN],
+[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
+_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
+ltmain="$ac_aux_dir/ltmain.sh"
+])# _LT_PROG_LTMAIN
+
+
+## ------------------------------------- ##
+## Accumulate code for creating libtool. ##
+## ------------------------------------- ##
+
+# So that we can recreate a full libtool script including additional
+# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
+# in macros and then make a single call at the end using the `libtool'
+# label.
+
+
+# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
+# ----------------------------------------
+# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+m4_define([_LT_CONFIG_LIBTOOL_INIT],
+[m4_ifval([$1],
+          [m4_append([_LT_OUTPUT_LIBTOOL_INIT],
+                     [$1
+])])])
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_INIT])
+
+
+# _LT_CONFIG_LIBTOOL([COMMANDS])
+# ------------------------------
+# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+m4_define([_LT_CONFIG_LIBTOOL],
+[m4_ifval([$1],
+          [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS],
+                     [$1
+])])])
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS])
+
+
+# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
+# -----------------------------------------------------
+m4_defun([_LT_CONFIG_SAVE_COMMANDS],
+[_LT_CONFIG_LIBTOOL([$1])
+_LT_CONFIG_LIBTOOL_INIT([$2])
+])
+
+
+# _LT_FORMAT_COMMENT([COMMENT])
+# -----------------------------
+# Add leading comment marks to the start of each line, and a trailing
+# full-stop to the whole comment if one is not present already.
+m4_define([_LT_FORMAT_COMMENT],
+[m4_ifval([$1], [
+m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])],
+              [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.])
+)])
+
+
+
+## ------------------------ ##
+## FIXME: Eliminate VARNAME ##
+## ------------------------ ##
+
+
+# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
+# -------------------------------------------------------------------
+# CONFIGNAME is the name given to the value in the libtool script.
+# VARNAME is the (base) name used in the configure script.
+# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
+# VARNAME.  Any other value will be used directly.
+m4_define([_LT_DECL],
+[lt_if_append_uniq([lt_decl_varnames], [$2], [, ],
+    [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name],
+       [m4_ifval([$1], [$1], [$2])])
+    lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3])
+    m4_ifval([$4],
+       [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])])
+    lt_dict_add_subkey([lt_decl_dict], [$2],
+       [tagged?], [m4_ifval([$5], [yes], [no])])])
+])
+
+
+# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
+# --------------------------------------------------------
+m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])])
+
+
+# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+m4_define([lt_decl_tag_varnames],
+[_lt_decl_filter([tagged?], [yes], $@)])
+
+
+# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
+# ---------------------------------------------------------
+m4_define([_lt_decl_filter],
+[m4_case([$#],
+  [0], [m4_fatal([$0: too few arguments: $#])],
+  [1], [m4_fatal([$0: too few arguments: $#: $1])],
+  [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)],
+  [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)],
+  [lt_dict_filter([lt_decl_dict], $@)])[]dnl
+])
+
+
+# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
+# --------------------------------------------------
+m4_define([lt_decl_quote_varnames],
+[_lt_decl_filter([value], [1], $@)])
+
+
+# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+m4_define([lt_decl_dquote_varnames],
+[_lt_decl_filter([value], [2], $@)])
+
+
+# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+m4_define([lt_decl_varnames_tagged],
+[m4_assert([$# <= 2])dnl
+_$0(m4_quote(m4_default([$1], [[, ]])),
+    m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]),
+    m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))])
+m4_define([_lt_decl_varnames_tagged],
+[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])])
+
+
+# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+m4_define([lt_decl_all_varnames],
+[_$0(m4_quote(m4_default([$1], [[, ]])),
+     m4_if([$2], [],
+          m4_quote(lt_decl_varnames),
+       m4_quote(m4_shift($@))))[]dnl
+])
+m4_define([_lt_decl_all_varnames],
+[lt_join($@, lt_decl_varnames_tagged([$1],
+                       lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl
+])
+
+
+# _LT_CONFIG_STATUS_DECLARE([VARNAME])
+# ------------------------------------
+# Quote a variable value, and forward it to `config.status' so that its
+# declaration there will have the same value as in `configure'.  VARNAME
+# must have a single quote delimited value for this to work.
+m4_define([_LT_CONFIG_STATUS_DECLARE],
+[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`'])
+
+
+# _LT_CONFIG_STATUS_DECLARATIONS
+# ------------------------------
+# We delimit libtool config variables with single quotes, so when
+# we write them to config.status, we have to be sure to quote all
+# embedded single quotes properly.  In configure, this macro expands
+# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
+#
+#    <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`'
+m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
+[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
+    [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
+
+
+# _LT_LIBTOOL_TAGS
+# ----------------
+# Output comment and list of tags supported by the script
+m4_defun([_LT_LIBTOOL_TAGS],
+[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
+available_tags="_LT_TAGS"dnl
+])
+
+
+# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
+# -----------------------------------
+# Extract the dictionary values for VARNAME (optionally with TAG) and
+# expand to a commented shell variable setting:
+#
+#    # Some comment about what VAR is for.
+#    visible_name=$lt_internal_name
+m4_define([_LT_LIBTOOL_DECLARE],
+[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1],
+                                          [description])))[]dnl
+m4_pushdef([_libtool_name],
+    m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl
+m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])),
+    [0], [_libtool_name=[$]$1],
+    [1], [_libtool_name=$lt_[]$1],
+    [2], [_libtool_name=$lt_[]$1],
+    [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl
+m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
+])
+
+
+# _LT_LIBTOOL_CONFIG_VARS
+# -----------------------
+# Produce commented declarations of non-tagged libtool config variables
+# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
+# script.  Tagged libtool config variables (even for the LIBTOOL CONFIG
+# section) are produced by _LT_LIBTOOL_TAG_VARS.
+m4_defun([_LT_LIBTOOL_CONFIG_VARS],
+[m4_foreach([_lt_var],
+    m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)),
+    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])])
+
+
+# _LT_LIBTOOL_TAG_VARS(TAG)
+# -------------------------
+m4_define([_LT_LIBTOOL_TAG_VARS],
+[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames),
+    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])])
+
+
+# _LT_TAGVAR(VARNAME, [TAGNAME])
+# ------------------------------
+m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
+
+
+# _LT_CONFIG_COMMANDS
+# -------------------
+# Send accumulated output to $CONFIG_STATUS.  Thanks to the lists of
+# variables for single and double quote escaping we saved from calls
+# to _LT_DECL, we can put quote escaped variables declarations
+# into `config.status', and then the shell code to quote escape them in
+# for loops in `config.status'.  Finally, any additional code accumulated
+# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
+m4_defun([_LT_CONFIG_COMMANDS],
+[AC_PROVIDE_IFELSE([LT_OUTPUT],
+       dnl If the libtool generation code has been placed in $CONFIG_LT,
+       dnl instead of duplicating it all over again into config.status,
+       dnl then we will have config.status run $CONFIG_LT later, so it
+       dnl needs to know what name is stored there:
+        [AC_CONFIG_COMMANDS([libtool],
+            [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])],
+    dnl If the libtool generation code is destined for config.status,
+    dnl expand the accumulated commands and init code now:
+    [AC_CONFIG_COMMANDS([libtool],
+        [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])])
+])#_LT_CONFIG_COMMANDS
+
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT],
+[
+
+# 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
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+_LT_CONFIG_STATUS_DECLARATIONS
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+\$[]1
+_LTECHO_EOF'
+}
+
+# Quote evaled strings.
+for var in lt_decl_all_varnames([[ \
+]], lt_decl_quote_varnames); do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+    *[[\\\\\\\`\\"\\\$]]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+# Double-quote double-evaled strings.
+for var in lt_decl_all_varnames([[ \
+]], lt_decl_dquote_varnames); do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+    *[[\\\\\\\`\\"\\\$]]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+_LT_OUTPUT_LIBTOOL_INIT
+])
+
+# _LT_GENERATED_FILE_INIT(FILE, [COMMENT])
+# ------------------------------------
+# Generate a child script FILE with all initialization necessary to
+# reuse the environment learned by the parent script, and make the
+# file executable.  If COMMENT is supplied, it is inserted after the
+# `#!' sequence but before initialization text begins.  After this
+# macro, additional text can be appended to FILE to form the body of
+# the child script.  The macro ends with non-zero status if the
+# file could not be fully written (such as if the disk is full).
+m4_ifdef([AS_INIT_GENERATED],
+[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])],
+[m4_defun([_LT_GENERATED_FILE_INIT],
+[m4_require([AS_PREPARE])]dnl
+[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl
+[lt_write_fail=0
+cat >$1 <<_ASEOF || lt_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+$2
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$1 <<\_ASEOF || lt_write_fail=1
+AS_SHELL_SANITIZE
+_AS_PREPARE
+exec AS_MESSAGE_FD>&1
+_ASEOF
+test $lt_write_fail = 0 && chmod +x $1[]dnl
+m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT
+
+# LT_OUTPUT
+# ---------
+# This macro allows early generation of the libtool script (before
+# AC_OUTPUT is called), incase it is used in configure for compilation
+# tests.
+AC_DEFUN([LT_OUTPUT],
+[: ${CONFIG_LT=./config.lt}
+AC_MSG_NOTICE([creating $CONFIG_LT])
+_LT_GENERATED_FILE_INIT(["$CONFIG_LT"],
+[# Run this file to recreate a libtool stub with the current configuration.])
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+lt_cl_silent=false
+exec AS_MESSAGE_LOG_FD>>config.log
+{
+  echo
+  AS_BOX([Running $as_me.])
+} >&AS_MESSAGE_LOG_FD
+
+lt_cl_help="\
+\`$as_me' creates a local libtool stub from the current configuration,
+for use in further configure time tests before the real libtool is
+generated.
+
+Usage: $[0] [[OPTIONS]]
+
+  -h, --help      print this help, then exit
+  -V, --version   print version number, then exit
+  -q, --quiet     do not print progress messages
+  -d, --debug     don't remove temporary files
+
+Report bugs to <bug-libtool@gnu.org>."
+
+lt_cl_version="\
+m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
+m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
+configured by $[0], generated by m4_PACKAGE_STRING.
+
+Copyright (C) 2010 Free Software Foundation, Inc.
+This config.lt script is free software; the Free Software Foundation
+gives unlimited permision to copy, distribute and modify it."
+
+while test $[#] != 0
+do
+  case $[1] in
+    --version | --v* | -V )
+      echo "$lt_cl_version"; exit 0 ;;
+    --help | --h* | -h )
+      echo "$lt_cl_help"; exit 0 ;;
+    --debug | --d* | -d )
+      debug=: ;;
+    --quiet | --q* | --silent | --s* | -q )
+      lt_cl_silent=: ;;
+
+    -*) AC_MSG_ERROR([unrecognized option: $[1]
+Try \`$[0] --help' for more information.]) ;;
+
+    *) AC_MSG_ERROR([unrecognized argument: $[1]
+Try \`$[0] --help' for more information.]) ;;
+  esac
+  shift
+done
+
+if $lt_cl_silent; then
+  exec AS_MESSAGE_FD>/dev/null
+fi
+_LTEOF
+
+cat >>"$CONFIG_LT" <<_LTEOF
+_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
+_LTEOF
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+AC_MSG_NOTICE([creating $ofile])
+_LT_OUTPUT_LIBTOOL_COMMANDS
+AS_EXIT(0)
+_LTEOF
+chmod +x "$CONFIG_LT"
+
+# configure is writing to config.log, but config.lt does its own redirection,
+# appending to config.log, which fails on DOS, as config.log is still kept
+# open by configure.  Here we exec the FD to /dev/null, effectively closing
+# config.log, so it can be properly (re)opened and appended to by config.lt.
+lt_cl_success=:
+test "$silent" = yes &&
+  lt_config_lt_args="$lt_config_lt_args --quiet"
+exec AS_MESSAGE_LOG_FD>/dev/null
+$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
+exec AS_MESSAGE_LOG_FD>>config.log
+$lt_cl_success || AS_EXIT(1)
+])# LT_OUTPUT
+
+
+# _LT_CONFIG(TAG)
+# ---------------
+# If TAG is the built-in tag, create an initial libtool script with a
+# default configuration from the untagged config vars.  Otherwise add code
+# to config.status for appending the configuration named by TAG from the
+# matching tagged config vars.
+m4_defun([_LT_CONFIG],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+_LT_CONFIG_SAVE_COMMANDS([
+  m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
+  m4_if(_LT_TAG, [C], [
+    # See if we are running on zsh, and set the options which allow our
+    # commands through without removal of \ escapes.
+    if test -n "${ZSH_VERSION+set}" ; then
+      setopt NO_GLOB_SUBST
+    fi
+
+    cfgfile="${ofile}T"
+    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+    $RM "$cfgfile"
+
+    cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+
+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+_LT_COPYING
+_LT_LIBTOOL_TAGS
+
+# ### BEGIN LIBTOOL CONFIG
+_LT_LIBTOOL_CONFIG_VARS
+_LT_LIBTOOL_TAG_VARS
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+  case $host_os in
+  aix3*)
+    cat <<\_LT_EOF >> "$cfgfile"
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+_LT_EOF
+    ;;
+  esac
+
+  _LT_PROG_LTMAIN
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '$q' "$ltmain" >> "$cfgfile" \
+     || (rm -f "$cfgfile"; exit 1)
+
+  _LT_PROG_REPLACE_SHELLFNS
+
+   mv -f "$cfgfile" "$ofile" ||
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+],
+[cat <<_LT_EOF >> "$ofile"
+
+dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
+dnl in a comment (ie after a #).
+# ### BEGIN LIBTOOL TAG CONFIG: $1
+_LT_LIBTOOL_TAG_VARS(_LT_TAG)
+# ### END LIBTOOL TAG CONFIG: $1
+_LT_EOF
+])dnl /m4_if
+],
+[m4_if([$1], [], [
+    PACKAGE='$PACKAGE'
+    VERSION='$VERSION'
+    TIMESTAMP='$TIMESTAMP'
+    RM='$RM'
+    ofile='$ofile'], [])
+])dnl /_LT_CONFIG_SAVE_COMMANDS
+])# _LT_CONFIG
+
+
+# LT_SUPPORTED_TAG(TAG)
+# ---------------------
+# Trace this macro to discover what tags are supported by the libtool
+# --tag option, using:
+#    autoconf --trace 'LT_SUPPORTED_TAG:$1'
+AC_DEFUN([LT_SUPPORTED_TAG], [])
+
+
+# C support is built-in for now
+m4_define([_LT_LANG_C_enabled], [])
+m4_define([_LT_TAGS], [])
+
+
+# LT_LANG(LANG)
+# -------------
+# Enable libtool support for the given language if not already enabled.
+AC_DEFUN([LT_LANG],
+[AC_BEFORE([$0], [LT_OUTPUT])dnl
+m4_case([$1],
+  [C],                 [_LT_LANG(C)],
+  [C++],               [_LT_LANG(CXX)],
+  [Java],              [_LT_LANG(GCJ)],
+  [Fortran 77],                [_LT_LANG(F77)],
+  [Fortran],           [_LT_LANG(FC)],
+  [Windows Resource],  [_LT_LANG(RC)],
+  [m4_ifdef([_LT_LANG_]$1[_CONFIG],
+    [_LT_LANG($1)],
+    [m4_fatal([$0: unsupported language: "$1"])])])dnl
+])# LT_LANG
+
+
+# _LT_LANG(LANGNAME)
+# ------------------
+m4_defun([_LT_LANG],
+[m4_ifdef([_LT_LANG_]$1[_enabled], [],
+  [LT_SUPPORTED_TAG([$1])dnl
+  m4_append([_LT_TAGS], [$1 ])dnl
+  m4_define([_LT_LANG_]$1[_enabled], [])dnl
+  _LT_LANG_$1_CONFIG($1)])dnl
+])# _LT_LANG
+
+
+# _LT_LANG_DEFAULT_CONFIG
+# -----------------------
+m4_defun([_LT_LANG_DEFAULT_CONFIG],
+[AC_PROVIDE_IFELSE([AC_PROG_CXX],
+  [LT_LANG(CXX)],
+  [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
+
+AC_PROVIDE_IFELSE([AC_PROG_F77],
+  [LT_LANG(F77)],
+  [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])])
+
+AC_PROVIDE_IFELSE([AC_PROG_FC],
+  [LT_LANG(FC)],
+  [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])])
+
+dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal
+dnl pulling things in needlessly.
+AC_PROVIDE_IFELSE([AC_PROG_GCJ],
+  [LT_LANG(GCJ)],
+  [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
+    [LT_LANG(GCJ)],
+    [AC_PROVIDE_IFELSE([LT_PROG_GCJ],
+      [LT_LANG(GCJ)],
+      [m4_ifdef([AC_PROG_GCJ],
+       [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
+       m4_ifdef([A][M_PROG_GCJ],
+       [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
+       m4_ifdef([LT_PROG_GCJ],
+       [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
+
+AC_PROVIDE_IFELSE([LT_PROG_RC],
+  [LT_LANG(RC)],
+  [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
+])# _LT_LANG_DEFAULT_CONFIG
+
+# Obsolete macros:
+AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
+AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
+AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
+AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
+AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
+dnl AC_DEFUN([AC_LIBTOOL_F77], [])
+dnl AC_DEFUN([AC_LIBTOOL_FC], [])
+dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
+dnl AC_DEFUN([AC_LIBTOOL_RC], [])
+
+
+# _LT_TAG_COMPILER
+# ----------------
+m4_defun([_LT_TAG_COMPILER],
+[AC_REQUIRE([AC_PROG_CC])dnl
+
+_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
+_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl
+_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
+_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+])# _LT_TAG_COMPILER
+
+
+# _LT_COMPILER_BOILERPLATE
+# ------------------------
+# Check for compiler boilerplate output or warnings with
+# the simple compiler test code.
+m4_defun([_LT_COMPILER_BOILERPLATE],
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+])# _LT_COMPILER_BOILERPLATE
+
+
+# _LT_LINKER_BOILERPLATE
+# ----------------------
+# Check for linker boilerplate output or warnings with
+# the simple link test code.
+m4_defun([_LT_LINKER_BOILERPLATE],
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+])# _LT_LINKER_BOILERPLATE
+
+# _LT_REQUIRED_DARWIN_CHECKS
+# -------------------------
+m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
+  case $host_os in
+    rhapsody* | darwin*)
+    AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
+    AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
+    AC_CHECK_TOOL([LIPO], [lipo], [:])
+    AC_CHECK_TOOL([OTOOL], [otool], [:])
+    AC_CHECK_TOOL([OTOOL64], [otool64], [:])
+    _LT_DECL([], [DSYMUTIL], [1],
+      [Tool to manipulate archived DWARF debug symbol files on Mac OS X])
+    _LT_DECL([], [NMEDIT], [1],
+      [Tool to change global to local symbols on Mac OS X])
+    _LT_DECL([], [LIPO], [1],
+      [Tool to manipulate fat objects and archives on Mac OS X])
+    _LT_DECL([], [OTOOL], [1],
+      [ldd/readelf like tool for Mach-O binaries on Mac OS X])
+    _LT_DECL([], [OTOOL64], [1],
+      [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
+
+    AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
+      [lt_cv_apple_cc_single_mod=no
+      if test -z "${LT_MULTI_MODULE}"; then
+       # By default we will add the -single_module flag. You can override
+       # by either setting the environment variable LT_MULTI_MODULE
+       # non-empty at configure time, or by adding -multi_module to the
+       # link flags.
+       rm -rf libconftest.dylib*
+       echo "int foo(void){return 1;}" > conftest.c
+       echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
+       $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+         -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+        _lt_result=$?
+       if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+         lt_cv_apple_cc_single_mod=yes
+       else
+         cat conftest.err >&AS_MESSAGE_LOG_FD
+       fi
+       rm -rf libconftest.dylib*
+       rm -f conftest.*
+      fi])
+    AC_CACHE_CHECK([for -exported_symbols_list linker flag],
+      [lt_cv_ld_exported_symbols_list],
+      [lt_cv_ld_exported_symbols_list=no
+      save_LDFLAGS=$LDFLAGS
+      echo "_main" > conftest.sym
+      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+      AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+       [lt_cv_ld_exported_symbols_list=yes],
+       [lt_cv_ld_exported_symbols_list=no])
+       LDFLAGS="$save_LDFLAGS"
+    ])
+    AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
+      [lt_cv_ld_force_load=no
+      cat > conftest.c << _LT_EOF
+int forced_loaded() { return 2;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD
+      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD
+      echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
+      $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
+      echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
+      $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
+      cat > conftest.c << _LT_EOF
+int main() { return 0;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
+      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
+      _lt_result=$?
+      if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
+       lt_cv_ld_force_load=yes
+      else
+       cat conftest.err >&AS_MESSAGE_LOG_FD
+      fi
+        rm -f conftest.err libconftest.a conftest conftest.c
+        rm -rf conftest.dSYM
+    ])
+    case $host_os in
+    rhapsody* | darwin1.[[012]])
+      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+    darwin1.*)
+      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+    darwin*) # darwin 5.x on
+      # if running on 10.5 or later, the deployment target defaults
+      # to the OS version, if on x86, and 10.4, the deployment
+      # target defaults to 10.4. Don't you love it?
+      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+       10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
+         _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+       10.[[012]]*)
+         _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+       10.*)
+         _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+      esac
+    ;;
+  esac
+    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+      _lt_dar_single_mod='$single_module'
+    fi
+    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+    else
+      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    fi
+    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
+      _lt_dsymutil='~$DSYMUTIL $lib || :'
+    else
+      _lt_dsymutil=
+    fi
+    ;;
+  esac
+])
+
+
+# _LT_DARWIN_LINKER_FEATURES
+# --------------------------
+# Checks for linker and compiler features on darwin
+m4_defun([_LT_DARWIN_LINKER_FEATURES],
+[
+  m4_require([_LT_REQUIRED_DARWIN_CHECKS])
+  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+  _LT_TAGVAR(hardcode_direct, $1)=no
+  _LT_TAGVAR(hardcode_automatic, $1)=yes
+  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+  if test "$lt_cv_ld_force_load" = "yes"; then
+    _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+  else
+    _LT_TAGVAR(whole_archive_flag_spec, $1)=''
+  fi
+  _LT_TAGVAR(link_all_deplibs, $1)=yes
+  _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
+  case $cc_basename in
+     ifort*) _lt_dar_can_shared=yes ;;
+     *) _lt_dar_can_shared=$GCC ;;
+  esac
+  if test "$_lt_dar_can_shared" = "yes"; then
+    output_verbose_link_cmd=func_echo_all
+    _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+    _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+    _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+    _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+    m4_if([$1], [CXX],
+[   if test "$lt_cv_apple_cc_single_mod" != "yes"; then
+      _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
+      _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
+    fi
+],[])
+  else
+  _LT_TAGVAR(ld_shlibs, $1)=no
+  fi
+])
+
+# _LT_SYS_MODULE_PATH_AIX([TAGNAME])
+# ----------------------------------
+# Links a minimal program and checks the executable
+# for the system default hardcoded library path. In most cases,
+# this is /usr/lib:/lib, but when the MPI compilers are used
+# the location of the communication and MPI libs are included too.
+# If we don't find anything, use the default library path according
+# to the aix ld manual.
+# Store the results from the different compilers for each TAGNAME.
+# Allow to override them for all tags through lt_cv_aix_libpath.
+m4_defun([_LT_SYS_MODULE_PATH_AIX],
+[m4_require([_LT_DECL_SED])dnl
+if test "${lt_cv_aix_libpath+set}" = set; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])],
+  [AC_LINK_IFELSE([AC_LANG_PROGRAM],[
+  lt_aix_libpath_sed='[
+      /Import File Strings/,/^$/ {
+         /^0/ {
+             s/^0  *\([^ ]*\) *$/\1/
+             p
+         }
+      }]'
+  _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
+    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi],[])
+  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
+    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib"
+  fi
+  ])
+  aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])
+fi
+])# _LT_SYS_MODULE_PATH_AIX
+
+
+# _LT_SHELL_INIT(ARG)
+# -------------------
+m4_define([_LT_SHELL_INIT],
+[m4_divert_text([M4SH-INIT], [$1
+])])# _LT_SHELL_INIT
+
+
+
+# _LT_PROG_ECHO_BACKSLASH
+# -----------------------
+# Find how we can fake an echo command that does not interpret backslash.
+# In particular, with Autoconf 2.60 or later we add some code to the start
+# of the generated configure script which will find a shell with a builtin
+# printf (which we can use as an echo command).
+m4_defun([_LT_PROG_ECHO_BACKSLASH],
+[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+
+AC_MSG_CHECKING([how to print strings])
+# Test print first, because it will be a builtin if present.
+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='print -r --'
+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='printf %s\n'
+else
+  # Use this function as a fallback that always works.
+  func_fallback_echo ()
+  {
+    eval 'cat <<_LTECHO_EOF
+$[]1
+_LTECHO_EOF'
+  }
+  ECHO='func_fallback_echo'
+fi
+
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+    $ECHO "$*" 
+}
+
+case "$ECHO" in
+  printf*) AC_MSG_RESULT([printf]) ;;
+  print*) AC_MSG_RESULT([print -r]) ;;
+  *) AC_MSG_RESULT([cat]) ;;
+esac
+
+m4_ifdef([_AS_DETECT_SUGGESTED],
+[_AS_DETECT_SUGGESTED([
+  test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || (
+    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+    PATH=/empty FPATH=/empty; export PATH FPATH
+    test "X`printf %s $ECHO`" = "X$ECHO" \
+      || test "X`print -r -- $ECHO`" = "X$ECHO" )])])
+
+_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
+_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
+])# _LT_PROG_ECHO_BACKSLASH
+
+
+# _LT_WITH_SYSROOT
+# ----------------
+AC_DEFUN([_LT_WITH_SYSROOT],
+[AC_MSG_CHECKING([for sysroot])
+AC_ARG_WITH([sysroot],
+[  --with-sysroot[=DIR] Search for dependent libraries within DIR
+                        (or the compiler's sysroot if not specified).],
+[], [with_sysroot=no])
+
+dnl lt_sysroot will always be passed unquoted.  We quote it here
+dnl in case the user passed a directory name.
+lt_sysroot=
+case ${with_sysroot} in #(
+ yes)
+   if test "$GCC" = yes; then
+     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+   fi
+   ;; #(
+ /*)
+   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+   ;; #(
+ no|'')
+   ;; #(
+ *)
+   AC_MSG_RESULT([${with_sysroot}])
+   AC_MSG_ERROR([The sysroot must be an absolute path.])
+   ;;
+esac
+
+ AC_MSG_RESULT([${lt_sysroot:-no}])
+_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
+[dependent libraries, and in which our libraries should be installed.])])
+
+# _LT_ENABLE_LOCK
+# ---------------
+m4_defun([_LT_ENABLE_LOCK],
+[AC_ARG_ENABLE([libtool-lock],
+  [AS_HELP_STRING([--disable-libtool-lock],
+    [avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.$ac_objext` in
+      *ELF-32*)
+       HPUX_IA64_MODE="32"
+       ;;
+      *ELF-64*)
+       HPUX_IA64_MODE="64"
+       ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    if test "$lt_cv_prog_gnu_ld" = yes; then
+      case `/usr/bin/file conftest.$ac_objext` in
+       *32-bit*)
+         LD="${LD-ld} -melf32bsmip"
+         ;;
+       *N32*)
+         LD="${LD-ld} -melf32bmipn32"
+         ;;
+       *64-bit*)
+         LD="${LD-ld} -melf64bmip"
+       ;;
+      esac
+    else
+      case `/usr/bin/file conftest.$ac_objext` in
+       *32-bit*)
+         LD="${LD-ld} -32"
+         ;;
+       *N32*)
+         LD="${LD-ld} -n32"
+         ;;
+       *64-bit*)
+         LD="${LD-ld} -64"
+         ;;
+      esac
+    fi
+  fi
+  rm -rf conftest*
+  ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.o` in
+      *32-bit*)
+       case $host in
+         x86_64-*kfreebsd*-gnu)
+           LD="${LD-ld} -m elf_i386_fbsd"
+           ;;
+         x86_64-*linux*)
+           LD="${LD-ld} -m elf_i386"
+           ;;
+         ppc64-*linux*|powerpc64-*linux*)
+           LD="${LD-ld} -m elf32ppclinux"
+           ;;
+         s390x-*linux*)
+           LD="${LD-ld} -m elf_s390"
+           ;;
+         sparc64-*linux*)
+           LD="${LD-ld} -m elf32_sparc"
+           ;;
+       esac
+       ;;
+      *64-bit*)
+       case $host in
+         x86_64-*kfreebsd*-gnu)
+           LD="${LD-ld} -m elf_x86_64_fbsd"
+           ;;
+         x86_64-*linux*)
+           LD="${LD-ld} -m elf_x86_64"
+           ;;
+         ppc*-*linux*|powerpc*-*linux*)
+           LD="${LD-ld} -m elf64ppc"
+           ;;
+         s390*-*linux*|s390*-*tpf*)
+           LD="${LD-ld} -m elf64_s390"
+           ;;
+         sparc*-*linux*)
+           LD="${LD-ld} -m elf64_sparc"
+           ;;
+       esac
+       ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
+    [AC_LANG_PUSH(C)
+     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
+     AC_LANG_POP])
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+sparc*-*solaris*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.o` in
+    *64-bit*)
+      case $lt_cv_prog_gnu_ld in
+      yes*) LD="${LD-ld} -m elf64_sparc" ;;
+      *)
+       if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+         LD="${LD-ld} -64"
+       fi
+       ;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+esac
+
+need_locks="$enable_libtool_lock"
+])# _LT_ENABLE_LOCK
+
+
+# _LT_PROG_AR
+# -----------
+m4_defun([_LT_PROG_AR],
+[AC_CHECK_TOOLS(AR, [ar], false)
+: ${AR=ar}
+: ${AR_FLAGS=cru}
+_LT_DECL([], [AR], [1], [The archiver])
+_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive])
+
+AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
+  [lt_cv_ar_at_file=no
+   AC_COMPILE_IFELSE([AC_LANG_PROGRAM],
+     [echo conftest.$ac_objext > conftest.lst
+      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD'
+      AC_TRY_EVAL([lt_ar_try])
+      if test "$ac_status" -eq 0; then
+       # Ensure the archiver fails upon bogus file names.
+       rm -f conftest.$ac_objext libconftest.a
+       AC_TRY_EVAL([lt_ar_try])
+       if test "$ac_status" -ne 0; then
+          lt_cv_ar_at_file=@
+        fi
+      fi
+      rm -f conftest.* libconftest.a
+     ])
+  ])
+
+if test "x$lt_cv_ar_at_file" = xno; then
+  archiver_list_spec=
+else
+  archiver_list_spec=$lt_cv_ar_at_file
+fi
+_LT_DECL([], [archiver_list_spec], [1],
+  [How to feed a file listing to the archiver])
+])# _LT_PROG_AR
+
+
+# _LT_CMD_OLD_ARCHIVE
+# -------------------
+m4_defun([_LT_CMD_OLD_ARCHIVE],
+[_LT_PROG_AR
+
+AC_CHECK_TOOL(STRIP, strip, :)
+test -z "$STRIP" && STRIP=:
+_LT_DECL([], [STRIP], [1], [A symbol stripping program])
+
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+test -z "$RANLIB" && RANLIB=:
+_LT_DECL([], [RANLIB], [1],
+    [Commands used to install an old-style archive])
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  openbsd*)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+    ;;
+  *)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+case $host_os in
+  darwin*)
+    lock_old_archive_extraction=yes ;;
+  *)
+    lock_old_archive_extraction=no ;;
+esac
+_LT_DECL([], [old_postinstall_cmds], [2])
+_LT_DECL([], [old_postuninstall_cmds], [2])
+_LT_TAGDECL([], [old_archive_cmds], [2],
+    [Commands used to build an old-style archive])
+_LT_DECL([], [lock_old_archive_extraction], [0],
+    [Whether to use a lock for old archive extraction])
+])# _LT_CMD_OLD_ARCHIVE
+
+
+# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#              [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([_LT_COMPILER_OPTION],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+   m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$3"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&AS_MESSAGE_LOG_FD
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       $2=yes
+     fi
+   fi
+   $RM conftest*
+])
+
+if test x"[$]$2" = xyes; then
+    m4_if([$5], , :, [$5])
+else
+    m4_if([$6], , :, [$6])
+fi
+])# _LT_COMPILER_OPTION
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [])
+
+
+# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#                  [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------
+# Check whether the given linker option works
+AC_DEFUN([_LT_LINKER_OPTION],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $3"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&AS_MESSAGE_LOG_FD
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         $2=yes
+       fi
+     else
+       $2=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+])
+
+if test x"[$]$2" = xyes; then
+    m4_if([$4], , :, [$4])
+else
+    m4_if([$5], , :, [$5])
+fi
+])# _LT_LINKER_OPTION
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [])
+
+
+# LT_CMD_MAX_LEN
+#---------------
+AC_DEFUN([LT_CMD_MAX_LEN],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+# find the maximum length of command line arguments
+AC_MSG_CHECKING([the maximum length of command line arguments])
+AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
+  i=0
+  teststring="ABCD"
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
+
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
+
+  cygwin* | mingw* | cegcc*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  mint*)
+    # On MiNT this can take a long time and run out of memory.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+    # This has been around since 386BSD, at least.  Likely further.
+    if test -x /sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+    elif test -x /usr/sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+    else
+      lt_cv_sys_max_cmd_len=65536      # usable default for all BSDs
+    fi
+    # And add a safety zone
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    ;;
+
+  interix*)
+    # We know the value 262144 and hardcode it with a safety zone (like BSD)
+    lt_cv_sys_max_cmd_len=196608
+    ;;
+
+  osf*)
+    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+    # nice to cause kernel panics so lets avoid the loop below.
+    # First set a reasonable default.
+    lt_cv_sys_max_cmd_len=16384
+    #
+    if test -x /sbin/sysconfig; then
+      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+        *1*) lt_cv_sys_max_cmd_len=-1 ;;
+      esac
+    fi
+    ;;
+  sco3.2v5*)
+    lt_cv_sys_max_cmd_len=102400
+    ;;
+  sysv5* | sco5v6* | sysv4.2uw2*)
+    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+    if test -n "$kargmax"; then
+      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[        ]]//'`
+    else
+      lt_cv_sys_max_cmd_len=32768
+    fi
+    ;;
+  *)
+    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+    if test -n "$lt_cv_sys_max_cmd_len"; then
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    else
+      # Make teststring a little bigger before we do anything with it.
+      # a 1K string should be a reasonable start.
+      for i in 1 2 3 4 5 6 7 8 ; do
+        teststring=$teststring$teststring
+      done
+      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+      # If test is not a shell built-in, we'll probably end up computing a
+      # maximum length that is only half of the actual maximum length, but
+      # we can't tell.
+      while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
+                = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+             test $i != 17 # 1/2 MB should be enough
+      do
+        i=`expr $i + 1`
+        teststring=$teststring$teststring
+      done
+      # Only check the string length outside the loop.
+      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+      teststring=
+      # Add a significant safety factor because C++ compilers can tack on
+      # massive amounts of additional arguments before passing them to the
+      # linker.  It appears as though 1/2 is a usable value.
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    fi
+    ;;
+  esac
+])
+if test -n $lt_cv_sys_max_cmd_len ; then
+  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
+else
+  AC_MSG_RESULT(none)
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+_LT_DECL([], [max_cmd_len], [0],
+    [What is the maximum length of a command?])
+])# LT_CMD_MAX_LEN
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [])
+
+
+# _LT_HEADER_DLFCN
+# ----------------
+m4_defun([_LT_HEADER_DLFCN],
+[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl
+])# _LT_HEADER_DLFCN
+
+
+# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+#                      ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ----------------------------------------------------------------
+m4_defun([_LT_TRY_DLOPEN_SELF],
+[m4_require([_LT_HEADER_DLFCN])dnl
+if test "$cross_compiling" = yes; then :
+  [$4]
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<_LT_EOF
+[#line $LINENO "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL          RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL                DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL                0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW           RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW         DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW       RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW     DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW     0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+/* When -fvisbility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 42; }
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else
+        {
+         if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+       }
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+  return status;
+}]
+_LT_EOF
+  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) $1 ;;
+      x$lt_dlneed_uscore) $2 ;;
+      x$lt_dlunknown|x*) $3 ;;
+    esac
+  else :
+    # compilation failed
+    $3
+  fi
+fi
+rm -fr conftest*
+])# _LT_TRY_DLOPEN_SELF
+
+
+# LT_SYS_DLOPEN_SELF
+# ------------------
+AC_DEFUN([LT_SYS_DLOPEN_SELF],
+[m4_require([_LT_HEADER_DLFCN])dnl
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32* | cegcc*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+    ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+    ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    AC_CHECK_LIB([dl], [dlopen],
+               [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ])
+    ;;
+
+  *)
+    AC_CHECK_FUNC([shl_load],
+         [lt_cv_dlopen="shl_load"],
+      [AC_CHECK_LIB([dld], [shl_load],
+           [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
+       [AC_CHECK_FUNC([dlopen],
+             [lt_cv_dlopen="dlopen"],
+         [AC_CHECK_LIB([dl], [dlopen],
+               [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+           [AC_CHECK_LIB([svld], [dlopen],
+                 [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+             [AC_CHECK_LIB([dld], [dld_link],
+                   [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
+             ])
+           ])
+         ])
+       ])
+      ])
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    AC_CACHE_CHECK([whether a program can dlopen itself],
+         lt_cv_dlopen_self, [dnl
+         _LT_TRY_DLOPEN_SELF(
+           lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
+           lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
+    ])
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+         lt_cv_dlopen_self_static, [dnl
+         _LT_TRY_DLOPEN_SELF(
+           lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
+           lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
+      ])
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+_LT_DECL([dlopen_support], [enable_dlopen], [0],
+        [Whether dlopen is supported])
+_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
+        [Whether dlopen of programs is supported])
+_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
+        [Whether dlopen of statically linked programs is supported])
+])# LT_SYS_DLOPEN_SELF
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [])
+
+
+# _LT_COMPILER_C_O([TAGNAME])
+# ---------------------------
+# Check to see if options -c and -o are simultaneously supported by compiler.
+# This macro does not hard code the compiler like AC_PROG_CC_C_O.
+m4_defun([_LT_COMPILER_C_O],
+[m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
+  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
+  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&AS_MESSAGE_LOG_FD
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+     fi
+   fi
+   chmod u+w . 2>&AS_MESSAGE_LOG_FD
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+])
+_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1],
+       [Does compiler simultaneously support -c and -o options?])
+])# _LT_COMPILER_C_O
+
+
+# _LT_COMPILER_FILE_LOCKS([TAGNAME])
+# ----------------------------------
+# Check to see if we can do hard links to lock some files if needed
+m4_defun([_LT_COMPILER_FILE_LOCKS],
+[m4_require([_LT_ENABLE_LOCK])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+_LT_COMPILER_C_O([$1])
+
+hard_links="nottested"
+if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  AC_MSG_CHECKING([if we can lock with hard links])
+  hard_links=yes
+  $RM conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  AC_MSG_RESULT([$hard_links])
+  if test "$hard_links" = no; then
+    AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?])
+])# _LT_COMPILER_FILE_LOCKS
+
+
+# _LT_CHECK_OBJDIR
+# ----------------
+m4_defun([_LT_CHECK_OBJDIR],
+[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
+[rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  lt_cv_objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null])
+objdir=$lt_cv_objdir
+_LT_DECL([], [objdir], [0],
+         [The name of the directory that contains temporary libtool files])dnl
+m4_pattern_allow([LT_OBJDIR])dnl
+AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/",
+  [Define to the sub-directory in which libtool stores uninstalled libraries.])
+])# _LT_CHECK_OBJDIR
+
+
+# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
+# --------------------------------------
+# Check hardcoding attributes.
+m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
+[AC_MSG_CHECKING([how to hardcode library paths into programs])
+_LT_TAGVAR(hardcode_action, $1)=
+if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
+   test -n "$_LT_TAGVAR(runpath_var, $1)" ||
+   test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
+
+  # We can hardcode non-existent directories.
+  if test "$_LT_TAGVAR(hardcode_direct, $1)" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
+     test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then
+    # Linking always hardcodes the temporary library directory.
+    _LT_TAGVAR(hardcode_action, $1)=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    _LT_TAGVAR(hardcode_action, $1)=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  _LT_TAGVAR(hardcode_action, $1)=unsupported
+fi
+AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
+
+if test "$_LT_TAGVAR(hardcode_action, $1)" = relink ||
+   test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+_LT_TAGDECL([], [hardcode_action], [0],
+    [How to hardcode a shared library path into an executable])
+])# _LT_LINKER_HARDCODE_LIBPATH
+
+
+# _LT_CMD_STRIPLIB
+# ----------------
+m4_defun([_LT_CMD_STRIPLIB],
+[m4_require([_LT_DECL_EGREP])
+striplib=
+old_striplib=
+AC_MSG_CHECKING([whether stripping libraries is possible])
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  AC_MSG_RESULT([yes])
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+  darwin*)
+    if test -n "$STRIP" ; then
+      striplib="$STRIP -x"
+      old_striplib="$STRIP -S"
+      AC_MSG_RESULT([yes])
+    else
+      AC_MSG_RESULT([no])
+    fi
+    ;;
+  *)
+    AC_MSG_RESULT([no])
+    ;;
+  esac
+fi
+_LT_DECL([], [old_striplib], [1], [Commands to strip libraries])
+_LT_DECL([], [striplib], [1])
+])# _LT_CMD_STRIPLIB
+
+
+# _LT_SYS_DYNAMIC_LINKER([TAG])
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+m4_defun([_LT_SYS_DYNAMIC_LINKER],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_OBJDUMP])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+AC_MSG_CHECKING([dynamic linker characteristics])
+m4_if([$1],
+       [], [
+if test "$GCC" = yes; then
+  case $host_os in
+    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+    *) lt_awk_arg="/^libraries:/" ;;
+  esac
+  case $host_os in
+    mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;;
+    *) lt_sed_strip_eq="s,=/,/,g" ;;
+  esac
+  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
+  case $lt_search_path_spec in
+  *\;*)
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
+    ;;
+  *)
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
+    ;;
+  esac
+  # Ok, now we have the path, separated by spaces, we can step through it
+  # and add multilib dir if necessary.
+  lt_tmp_lt_search_path_spec=
+  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+  for lt_sys_path in $lt_search_path_spec; do
+    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+    else
+      test -d "$lt_sys_path" && \
+       lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+    fi
+  done
+  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+  lt_foo="";
+  lt_count=0;
+  for (lt_i = NF; lt_i > 0; lt_i--) {
+    if ($lt_i != "" && $lt_i != ".") {
+      if ($lt_i == "..") {
+        lt_count++;
+      } else {
+        if (lt_count == 0) {
+          lt_foo="/" $lt_i lt_foo;
+        } else {
+          lt_count--;
+        }
+      }
+    }
+  }
+  if (lt_foo != "") { lt_freq[[lt_foo]]++; }
+  if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
+}'`
+  # AWK program above erroneously prepends '/' to C:/dos/paths
+  # for these hosts.
+  case $host_os in
+    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
+      $SED 's,/\([[A-Za-z]]:\),\1,g'` ;;
+  esac
+  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi])
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix[[4-9]]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[[01]] | aix4.[[01]].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+          echo ' yes '
+          echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+       :
+      else
+       can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  case $host_cpu in
+  powerpc)
+    # Since July 2007 AmigaOS4 officially supports .so libraries.
+    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    ;;
+  m68k)
+    library_names_spec='$libname.ixlibrary $libname.a'
+    # Create ${libname}_ixlibrary.a entries in /sys/libs.
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+    ;;
+  esac
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[[45]]*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$cc_basename in
+  yes,*)
+    # gcc
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname~
+      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+      fi'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+m4_if([$1], [],[
+      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
+      ;;
+    mingw* | cegcc*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    dynamic_linker='Win32 ld.exe'
+    ;;
+
+  *,cl*)
+    # Native MSVC
+    libname_spec='$name'
+    soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+    library_names_spec='${libname}.dll.lib'
+
+    case $build_os in
+    mingw*)
+      sys_lib_search_path_spec=
+      lt_save_ifs=$IFS
+      IFS=';'
+      for lt_path in $LIB
+      do
+        IFS=$lt_save_ifs
+        # Let DOS variable expansion print the short 8.3 style file name.
+        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+      done
+      IFS=$lt_save_ifs
+      # Convert to MSYS style.
+      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'`
+      ;;
+    cygwin*)
+      # Convert to unix form, then to dos form, then back to unix form
+      # but this time dos style (no spaces!) so that the unix form looks
+      # like /cygdrive/c/PROGRA~1:/cygdr...
+      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      ;;
+    *)
+      sys_lib_search_path_spec="$LIB"
+      if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
+        # It is most probably a Windows format PATH.
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      # FIXME: find the short name or the path components, as spaces are
+      # common. (e.g. "Program Files" -> "PROGRA~1")
+      ;;
+    esac
+
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+    dynamic_linker='Win32 link.exe'
+    ;;
+
+  *)
+    # Assume MSVC wrapper
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    dynamic_linker='Win32 ld.exe'
+    ;;
+  esac
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+m4_if([$1], [],[
+  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[[123]]*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[[01]]* | freebsdelf3.[[01]]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
+  freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  *) # from 4.6 on, and DragonFly
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+haiku*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  dynamic_linker="$host_os runtime_loader"
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  hppa*64*)
+    shrext_cmds='.sl'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
+  postinstall_cmds='chmod 555 $lib'
+  # or fails outright, so override atomically:
+  install_override_mode=555
+  ;;
+
+interix[[3-9]]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+       if test "$lt_cv_prog_gnu_ld" = yes; then
+               version_type=linux
+       else
+               version_type=irix
+       fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+
+  # Some binutils ld are patched to set DT_RUNPATH
+  AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath],
+    [lt_cv_shlibpath_overrides_runpath=no
+    save_LDFLAGS=$LDFLAGS
+    save_libdir=$libdir
+    eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
+        LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
+    AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+      [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
+        [lt_cv_shlibpath_overrides_runpath=yes])])
+    LDFLAGS=$save_LDFLAGS
+    libdir=$save_libdir
+    ])
+  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Add ABI-specific directories to the system library path.
+  sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib"
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[  ]*hwcap[        ]/d;s/[:,      ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra"
+
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+*nto* | *qnx*)
+  version_type=qnx
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='ldqnx.so'
+  ;;
+
+openbsd*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+    *)                         need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[[89]] | openbsd2.[[89]].*)
+       shlibpath_overrides_runpath=no
+       ;;
+      *)
+       shlibpath_overrides_runpath=yes
+       ;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+rdos*)
+  dynamic_linker=no
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+       ;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
+tpf*)
+  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+AC_MSG_RESULT([$dynamic_linker])
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+_LT_DECL([], [variables_saved_for_relink], [1],
+    [Variables whose values should be saved in libtool wrapper scripts and
+    restored at link time])
+_LT_DECL([], [need_lib_prefix], [0],
+    [Do we need the "lib" prefix for modules?])
+_LT_DECL([], [need_version], [0], [Do we need a version for libraries?])
+_LT_DECL([], [version_type], [0], [Library versioning type])
+_LT_DECL([], [runpath_var], [0],  [Shared library runtime path variable])
+_LT_DECL([], [shlibpath_var], [0],[Shared library path variable])
+_LT_DECL([], [shlibpath_overrides_runpath], [0],
+    [Is shlibpath searched before the hard-coded library search path?])
+_LT_DECL([], [libname_spec], [1], [Format of library name prefix])
+_LT_DECL([], [library_names_spec], [1],
+    [[List of archive names.  First name is the real one, the rest are links.
+    The last name is the one that the linker finds with -lNAME]])
+_LT_DECL([], [soname_spec], [1],
+    [[The coded name of the library, if different from the real name]])
+_LT_DECL([], [install_override_mode], [1],
+    [Permission mode override for installation of shared libraries])
+_LT_DECL([], [postinstall_cmds], [2],
+    [Command to use after installation of a shared archive])
+_LT_DECL([], [postuninstall_cmds], [2],
+    [Command to use after uninstallation of a shared archive])
+_LT_DECL([], [finish_cmds], [2],
+    [Commands used to finish a libtool library installation in a directory])
+_LT_DECL([], [finish_eval], [1],
+    [[As "finish_cmds", except a single script fragment to be evaled but
+    not shown]])
+_LT_DECL([], [hardcode_into_libs], [0],
+    [Whether we should hardcode library paths into libraries])
+_LT_DECL([], [sys_lib_search_path_spec], [2],
+    [Compile-time system search path for libraries])
+_LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
+    [Run-time system search path for libraries])
+])# _LT_SYS_DYNAMIC_LINKER
+
+
+# _LT_PATH_TOOL_PREFIX(TOOL)
+# --------------------------
+# find a file program which can recognize shared library
+AC_DEFUN([_LT_PATH_TOOL_PREFIX],
+[m4_require([_LT_DECL_EGREP])dnl
+AC_MSG_CHECKING([for $1])
+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
+[case $MAGIC_CMD in
+[[\\/*] |  ?:[\\/]*])
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+dnl $ac_dummy forces splitting on constant user-supplied paths.
+dnl POSIX.2 word splitting is done only on the output of word expansions,
+dnl not every word.  This closes a longstanding sh security hole.
+  ac_dummy="m4_if([$2], , $PATH, [$2])"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$1; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/$1"
+      if test -n "$file_magic_test_file"; then
+       case $deplibs_check_method in
+       "file_magic "*)
+         file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+         MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+         if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+           $EGREP "$file_magic_regex" > /dev/null; then
+           :
+         else
+           cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+         fi ;;
+       esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac])
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  AC_MSG_RESULT($MAGIC_CMD)
+else
+  AC_MSG_RESULT(no)
+fi
+_LT_DECL([], [MAGIC_CMD], [0],
+        [Used to examine libraries when file_magic_cmd begins with "file"])dnl
+])# _LT_PATH_TOOL_PREFIX
+
+# Old name:
+AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
+
+
+# _LT_PATH_MAGIC
+# --------------
+# find a file program which can recognize a shared library
+m4_defun([_LT_PATH_MAGIC],
+[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
+  else
+    MAGIC_CMD=:
+  fi
+fi
+])# _LT_PATH_MAGIC
+
+
+# LT_PATH_LD
+# ----------
+# find the pathname to the GNU or non-GNU linker
+AC_DEFUN([LT_PATH_LD],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_PROG_ECHO_BACKSLASH])dnl
+
+AC_ARG_WITH([gnu-ld],
+    [AS_HELP_STRING([--with-gnu-ld],
+       [assume the C compiler uses GNU ld @<:@default=no@:>@])],
+    [test "$withval" = no || with_gnu_ld=yes],
+    [with_gnu_ld=no])dnl
+
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  AC_MSG_CHECKING([for ld used by $CC])
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [[\\/]]* | ?:[[\\/]]*)
+      re_direlt='/[[^/]][[^/]]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+       ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  AC_MSG_CHECKING([for GNU ld])
+else
+  AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(lt_cv_path_LD,
+[if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_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 `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+       test "$with_gnu_ld" != no && break
+       ;;
+      *)
+       test "$with_gnu_ld" != yes && break
+       ;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  AC_MSG_RESULT($LD)
+else
+  AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+_LT_PATH_LD_GNU
+AC_SUBST([LD])
+
+_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
+])# LT_PATH_LD
+
+# Old names:
+AU_ALIAS([AM_PROG_LD], [LT_PATH_LD])
+AU_ALIAS([AC_PROG_LD], [LT_PATH_LD])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_PROG_LD], [])
+dnl AC_DEFUN([AC_PROG_LD], [])
+
+
+# _LT_PATH_LD_GNU
+#- --------------
+m4_defun([_LT_PATH_LD_GNU],
+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_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` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac])
+with_gnu_ld=$lt_cv_prog_gnu_ld
+])# _LT_PATH_LD_GNU
+
+
+# _LT_CMD_RELOAD
+# --------------
+# find reload flag for linker
+#   -- PORTME Some linkers may need a different reload flag.
+m4_defun([_LT_CMD_RELOAD],
+[AC_CACHE_CHECK([for $LD option to reload object files],
+  lt_cv_ld_reload_flag,
+  [lt_cv_ld_reload_flag='-r'])
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    if test "$GCC" != yes; then
+      reload_cmds=false
+    fi
+    ;;
+  darwin*)
+    if test "$GCC" = yes; then
+      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+    else
+      reload_cmds='$LD$reload_flag -o $output$reload_objs'
+    fi
+    ;;
+esac
+_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl
+_LT_TAGDECL([], [reload_cmds], [2])dnl
+])# _LT_CMD_RELOAD
+
+
+# _LT_CHECK_MAGIC_METHOD
+# ----------------------
+# how to check for library dependencies
+#  -- PORTME fill in with the dynamic library characteristics
+m4_defun([_LT_CHECK_MAGIC_METHOD],
+[m4_require([_LT_DECL_EGREP])
+m4_require([_LT_DECL_OBJDUMP])
+AC_CACHE_CHECK([how to recognize dependent libraries],
+lt_cv_deplibs_check_method,
+[lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix[[4-9]]*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi[[45]]*)
+  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin*)
+  # func_win32_libid is a shell function defined in ltmain.sh
+  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+  lt_cv_file_magic_cmd='func_win32_libid'
+  ;;
+
+mingw* | pw32*)
+  # Base MSYS/MinGW do not provide the 'file' command needed by
+  # func_win32_libid shell function, so use a weaker test based on 'objdump',
+  # unless we find 'file', for example because we are cross-compiling.
+  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
+  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
+    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+    lt_cv_file_magic_cmd='func_win32_libid'
+  else
+    # Keep this pattern in sync with the one in func_win32_libid.
+    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+    lt_cv_file_magic_cmd='$OBJDUMP -f'
+  fi
+  ;;
+
+cegcc*)
+  # use the weaker test based on 'objdump'. See mingw*.
+  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+freebsd* | dragonfly*)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+haiku*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20* | hpux11*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  case $host_cpu in
+  ia64*)
+    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
+    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+    ;;
+  hppa*64*)
+    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]']
+    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+    ;;
+  *)
+    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library'
+    lt_cv_file_magic_test_file=/usr/lib/libc.sl
+    ;;
+  esac
+  ;;
+
+interix[[3-9]]*)
+  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+  lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $LD in
+  *-32|*"-32 ") libmagic=32-bit;;
+  *-n32|*"-n32 ") libmagic=N32;;
+  *-64|*"-64 ") libmagic=64-bit;;
+  *) libmagic=never-match;;
+  esac
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+netbsd*)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+*nto* | *qnx*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+openbsd*)
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+  fi
+  ;;
+
+osf3* | osf4* | osf5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+rdos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.3*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  siemens)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  pc)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
+  ;;
+
+tpf*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+esac
+])
+
+file_magic_glob=
+want_nocaseglob=no
+if test "$build" = "$host"; then
+  case $host_os in
+  mingw* | pw32*)
+    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
+      want_nocaseglob=yes
+    else
+      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"`
+    fi
+    ;;
+  esac
+fi
+
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+_LT_DECL([], [deplibs_check_method], [1],
+    [Method to check whether dependent libraries are shared objects])
+_LT_DECL([], [file_magic_cmd], [1],
+    [Command to use when deplibs_check_method = "file_magic"])
+_LT_DECL([], [file_magic_glob], [1],
+    [How to find potential files when deplibs_check_method = "file_magic"])
+_LT_DECL([], [want_nocaseglob], [1],
+    [Find potential files using nocaseglob when deplibs_check_method = "file_magic"])
+])# _LT_CHECK_MAGIC_METHOD
+
+
+# LT_PATH_NM
+# ----------
+# find the pathname to a BSD- or MS-compatible name lister
+AC_DEFUN([LT_PATH_NM],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
+[if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  lt_nm_to_check="${ac_tool_prefix}nm"
+  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+    lt_nm_to_check="$lt_nm_to_check nm"
+  fi
+  for lt_tmp_nm in $lt_nm_to_check; do
+    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+      IFS="$lt_save_ifs"
+      test -z "$ac_dir" && ac_dir=.
+      tmp_nm="$ac_dir/$lt_tmp_nm"
+      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+       # Check to see if the nm accepts a BSD-compat flag.
+       # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+       #   nm: unknown option "B" ignored
+       # Tru64's nm complains that /dev/null is an invalid object file
+       case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+       */dev/null* | *'Invalid file or object type'*)
+         lt_cv_path_NM="$tmp_nm -B"
+         break
+         ;;
+       *)
+         case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+         */dev/null*)
+           lt_cv_path_NM="$tmp_nm -p"
+           break
+           ;;
+         *)
+           lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+           continue # so that we can try to find one that supports BSD flags
+           ;;
+         esac
+         ;;
+       esac
+      fi
+    done
+    IFS="$lt_save_ifs"
+  done
+  : ${lt_cv_path_NM=no}
+fi])
+if test "$lt_cv_path_NM" != "no"; then
+  NM="$lt_cv_path_NM"
+else
+  # Didn't find any BSD compatible name lister, look for dumpbin.
+  if test -n "$DUMPBIN"; then :
+    # Let the user override the test.
+  else
+    AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
+    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+    *COFF*)
+      DUMPBIN="$DUMPBIN -symbols"
+      ;;
+    *)
+      DUMPBIN=:
+      ;;
+    esac
+  fi
+  AC_SUBST([DUMPBIN])
+  if test "$DUMPBIN" != ":"; then
+    NM="$DUMPBIN"
+  fi
+fi
+test -z "$NM" && NM=nm
+AC_SUBST([NM])
+_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
+
+AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
+  [lt_cv_nm_interface="BSD nm"
+  echo "int some_variable = 0;" > conftest.$ac_ext
+  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
+  (eval "$ac_compile" 2>conftest.err)
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
+  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD)
+  cat conftest.out >&AS_MESSAGE_LOG_FD
+  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+    lt_cv_nm_interface="MS dumpbin"
+  fi
+  rm -f conftest*])
+])# LT_PATH_NM
+
+# Old names:
+AU_ALIAS([AM_PROG_NM], [LT_PATH_NM])
+AU_ALIAS([AC_PROG_NM], [LT_PATH_NM])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_PROG_NM], [])
+dnl AC_DEFUN([AC_PROG_NM], [])
+
+# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
+# --------------------------------
+# how to determine the name of the shared library
+# associated with a specific link library.
+#  -- PORTME fill in with the dynamic library characteristics
+m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB],
+[m4_require([_LT_DECL_EGREP])
+m4_require([_LT_DECL_OBJDUMP])
+m4_require([_LT_DECL_DLLTOOL])
+AC_CACHE_CHECK([how to associate runtime and link libraries],
+lt_cv_sharedlib_from_linklib_cmd,
+[lt_cv_sharedlib_from_linklib_cmd='unknown'
+
+case $host_os in
+cygwin* | mingw* | pw32* | cegcc*)
+  # two different shell functions defined in ltmain.sh
+  # decide which to use based on capabilities of $DLLTOOL
+  case `$DLLTOOL --help 2>&1` in
+  *--identify-strict*)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
+    ;;
+  *)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
+    ;;
+  esac
+  ;;
+*)
+  # fallback: assume linklib IS sharedlib
+  lt_cv_sharedlib_from_linklib_cmd="$ECHO"
+  ;;
+esac
+])
+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
+
+_LT_DECL([], [sharedlib_from_linklib_cmd], [1],
+    [Command to associate shared and link libraries])
+])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
+
+
+# _LT_PATH_MANIFEST_TOOL
+# ----------------------
+# locate the manifest tool
+m4_defun([_LT_PATH_MANIFEST_TOOL],
+[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :)
+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
+AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool],
+  [lt_cv_path_mainfest_tool=no
+  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD
+  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
+    lt_cv_path_mainfest_tool=yes
+  fi
+  rm -f conftest*])
+if test "x$lt_cv_path_mainfest_tool" != xyes; then
+  MANIFEST_TOOL=:
+fi
+_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl
+])# _LT_PATH_MANIFEST_TOOL
+
+
+# LT_LIB_M
+# --------
+# check for math library
+AC_DEFUN([LT_LIB_M],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*)
+  # These system don't have libm, or don't need it
+  ;;
+*-ncr-sysv4.3*)
+  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
+  ;;
+*)
+  AC_CHECK_LIB(m, cos, LIBM="-lm")
+  ;;
+esac
+AC_SUBST([LIBM])
+])# LT_LIB_M
+
+# Old name:
+AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_CHECK_LIBM], [])
+
+
+# _LT_COMPILER_NO_RTTI([TAGNAME])
+# -------------------------------
+m4_defun([_LT_COMPILER_NO_RTTI],
+[m4_require([_LT_TAG_COMPILER])dnl
+
+_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+
+if test "$GCC" = yes; then
+  case $cc_basename in
+  nvcc*)
+    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;;
+  *)
+    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;;
+  esac
+
+  _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
+    lt_cv_prog_compiler_rtti_exceptions,
+    [-fno-rtti -fno-exceptions], [],
+    [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
+fi
+_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
+       [Compiler flag to turn off builtin functions])
+])# _LT_COMPILER_NO_RTTI
+
+
+# _LT_CMD_GLOBAL_SYMBOLS
+# ----------------------
+m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+AC_REQUIRE([LT_PATH_LD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+AC_MSG_CHECKING([command to parse $NM output from $compiler object])
+AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
+[
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[[BCDEGRST]]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[[BCDT]]'
+  ;;
+cygwin* | mingw* | pw32* | cegcc*)
+  symcode='[[ABCDGISTW]]'
+  ;;
+hpux*)
+  if test "$host_cpu" = ia64; then
+    symcode='[[ABCDEGRST]]'
+  fi
+  ;;
+irix* | nonstopux*)
+  symcode='[[BCDEGRST]]'
+  ;;
+osf*)
+  symcode='[[BCDEGQRST]]'
+  ;;
+solaris*)
+  symcode='[[BDRT]]'
+  ;;
+sco3.2v5*)
+  symcode='[[DT]]'
+  ;;
+sysv4.2uw2*)
+  symcode='[[DT]]'
+  ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+  symcode='[[ABDT]]'
+  ;;
+sysv4)
+  symcode='[[DFNSTU]]'
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+  symcode='[[ABCDGIRSTW]]' ;;
+esac
+
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# Try without a prefix underscore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+  symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+  # Write the raw and C identifiers.
+  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+    # Fake it for dumpbin and say T for any non-static function
+    # and D for any global variable.
+    # Also find C++ and __fastcall symbols from MSVC++,
+    # which start with @ or ?.
+    lt_cv_sys_global_symbol_pipe="$AWK ['"\
+"     {last_section=section; section=\$ 3};"\
+"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+"     \$ 0!~/External *\|/{next};"\
+"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+"     {if(hide[section]) next};"\
+"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
+"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
+"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
+"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+"     ' prfx=^$ac_symprfx]"
+  else
+    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[    ]]\($symcode$symcode*\)[[       ]][[    ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+  fi
+  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+
+  rm -f conftest*
+  cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_EOF
+
+  if AC_TRY_EVAL(ac_compile); then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+       mv -f "$nlist"T "$nlist"
+      else
+       rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+       if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+         cat <<_LT_EOF > conftest.$ac_ext
+/* 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 con't be const, because runtime
+   relocations are performed -- see ld's documentation on pseudo-relocs.  */
+# define LT@&t@_DLSYM_CONST
+#elif defined(__osf__)
+/* This system does not cope well with relocations in const data.  */
+# define LT@&t@_DLSYM_CONST
+#else
+# define LT@&t@_DLSYM_CONST const
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_LT_EOF
+         # Now generate the symbol file.
+         eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+
+         cat <<_LT_EOF >> conftest.$ac_ext
+
+/* The mapping between symbol names and symbols.  */
+LT@&t@_DLSYM_CONST struct {
+  const char *name;
+  void       *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[[]] =
+{
+  { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+         $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+         cat <<\_LT_EOF >> conftest.$ac_ext
+  {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+         # Now try linking the two files.
+         mv conftest.$ac_objext conftstm.$ac_objext
+         lt_globsym_save_LIBS=$LIBS
+         lt_globsym_save_CFLAGS=$CFLAGS
+         LIBS="conftstm.$ac_objext"
+         CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
+         if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
+           pipe_works=yes
+         fi
+         LIBS=$lt_globsym_save_LIBS
+         CFLAGS=$lt_globsym_save_CFLAGS
+       else
+         echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
+       fi
+      else
+       echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
+    fi
+  else
+    echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
+    cat conftest.$ac_ext >&5
+  fi
+  rm -rf conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test "$pipe_works" = yes; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
+  fi
+done
+])
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+  AC_MSG_RESULT(failed)
+else
+  AC_MSG_RESULT(ok)
+fi
+
+# Response file support.
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+  nm_file_list_spec='@'
+elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then
+  nm_file_list_spec='@'
+fi
+
+_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
+    [Take the output of nm and produce a listing of raw symbols and C names])
+_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
+    [Transform the output of nm in a proper C declaration])
+_LT_DECL([global_symbol_to_c_name_address],
+    [lt_cv_sys_global_symbol_to_c_name_address], [1],
+    [Transform the output of nm in a C name address pair])
+_LT_DECL([global_symbol_to_c_name_address_lib_prefix],
+    [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
+    [Transform the output of nm in a C name address pair when lib prefix is needed])
+_LT_DECL([], [nm_file_list_spec], [1],
+    [Specify filename containing input files for $NM])
+]) # _LT_CMD_GLOBAL_SYMBOLS
+
+
+# _LT_COMPILER_PIC([TAGNAME])
+# ---------------------------
+m4_defun([_LT_COMPILER_PIC],
+[m4_require([_LT_TAG_COMPILER])dnl
+_LT_TAGVAR(lt_prog_compiler_wl, $1)=
+_LT_TAGVAR(lt_prog_compiler_pic, $1)=
+_LT_TAGVAR(lt_prog_compiler_static, $1)=
+
+m4_if([$1], [CXX], [
+  # C++ specific cases for pic, static, wl, etc.
+  if test "$GXX" = yes; then
+    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+    case $host_os in
+    aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the `-m68020' flag to GCC prevents building anything better,
+            # like `-m68040'.
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    mingw* | cygwin* | os2* | pw32* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      m4_if([$1], [GCJ], [],
+       [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+      ;;
+    *djgpp*)
+      # DJGPP does not support shared libraries at all
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+      ;;
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      _LT_TAGVAR(lt_prog_compiler_static, $1)=
+      ;;
+    interix[[3-9]]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+      fi
+      ;;
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+       ;;
+      *)
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+       ;;
+      esac
+      ;;
+    *qnx* | *nto*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+      ;;
+    *)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+      ;;
+    esac
+  else
+    case $host_os in
+      aix[[4-9]]*)
+       # All AIX code is PIC.
+       if test "$host_cpu" = ia64; then
+         # AIX 5 now supports IA64 processor
+         _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+       else
+         _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+       fi
+       ;;
+      chorus*)
+       case $cc_basename in
+       cxch68*)
+         # Green Hills C++ Compiler
+         # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+         ;;
+       esac
+       ;;
+      mingw* | cygwin* | os2* | pw32* | cegcc*)
+       # This hack is so that the source file can tell whether it is being
+       # built for inclusion in a dll (and should export symbols for example).
+       m4_if([$1], [GCJ], [],
+         [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+       ;;
+      dgux*)
+       case $cc_basename in
+         ec++*)
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+           ;;
+         ghcx*)
+           # Green Hills C++ Compiler
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      freebsd* | dragonfly*)
+       # FreeBSD uses GNU C++
+       ;;
+      hpux9* | hpux10* | hpux11*)
+       case $cc_basename in
+         CC*)
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+           if test "$host_cpu" != ia64; then
+             _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+           fi
+           ;;
+         aCC*)
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+           case $host_cpu in
+           hppa*64*|ia64*)
+             # +Z the default
+             ;;
+           *)
+             _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+             ;;
+           esac
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      interix*)
+       # This is c89, which is MS Visual C++ (no shared libs)
+       # Anyone wants to do a port?
+       ;;
+      irix5* | irix6* | nonstopux*)
+       case $cc_basename in
+         CC*)
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+           # CC pic flag -KPIC is the default.
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+       case $cc_basename in
+         KCC*)
+           # KAI C++ Compiler
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+           ;;
+         ecpc* )
+           # old Intel C++ for x86_64 which still supported -KPIC.
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+           ;;
+         icpc* )
+           # Intel C++, used to be incompatible with GCC.
+           # ICC 10 doesn't accept -KPIC any more.
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+           ;;
+         pgCC* | pgcpp*)
+           # Portland Group C++ compiler
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+           ;;
+         cxx*)
+           # Compaq C++
+           # Make sure the PIC flag is empty.  It appears that all Alpha
+           # Linux and Compaq Tru64 Unix objects are PIC.
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+           ;;
+         xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*)
+           # IBM XL 8.0, 9.0 on PPC and BlueGene
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+           ;;
+         *)
+           case `$CC -V 2>&1 | sed 5q` in
+           *Sun\ C*)
+             # Sun C++ 5.9
+             _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+             _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+             _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+             ;;
+           esac
+           ;;
+       esac
+       ;;
+      lynxos*)
+       ;;
+      m88k*)
+       ;;
+      mvs*)
+       case $cc_basename in
+         cxx*)
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      netbsd*)
+       ;;
+      *qnx* | *nto*)
+        # QNX uses GNU C++, but need to define -shared option too, otherwise
+        # it will coredump.
+        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+        ;;
+      osf3* | osf4* | osf5*)
+       case $cc_basename in
+         KCC*)
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+           ;;
+         RCC*)
+           # Rational C++ 2.4.1
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+           ;;
+         cxx*)
+           # Digital/Compaq C++
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           # Make sure the PIC flag is empty.  It appears that all Alpha
+           # Linux and Compaq Tru64 Unix objects are PIC.
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      psos*)
+       ;;
+      solaris*)
+       case $cc_basename in
+         CC* | sunCC*)
+           # Sun C++ 4.2, 5.x and Centerline C++
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+           ;;
+         gcx*)
+           # Green Hills C++ Compiler
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      sunos4*)
+       case $cc_basename in
+         CC*)
+           # Sun C++ 4.x
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+           ;;
+         lcc*)
+           # Lucid
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+       case $cc_basename in
+         CC*)
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+           ;;
+       esac
+       ;;
+      tandem*)
+       case $cc_basename in
+         NCC*)
+           # NonStop-UX NCC 3.20
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      vxworks*)
+       ;;
+      *)
+       _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+       ;;
+    esac
+  fi
+],
+[
+  if test "$GCC" = yes; then
+    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the `-m68020' flag to GCC prevents building anything better,
+            # like `-m68040'.
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      m4_if([$1], [GCJ], [],
+       [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+      ;;
+
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      _LT_TAGVAR(lt_prog_compiler_static, $1)=
+      ;;
+
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+       # +Z the default
+       ;;
+      *)
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+       ;;
+      esac
+      ;;
+
+    interix[[3-9]]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      enable_shared=no
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+      fi
+      ;;
+
+    *)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+      ;;
+    esac
+
+    case $cc_basename in
+    nvcc*) # Cuda Compiler Driver 2.2
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker '
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      else
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      m4_if([$1], [GCJ], [],
+       [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+       # +Z the default
+       ;;
+      *)
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+       ;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # PIC (with -KPIC) is the default.
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      case $cc_basename in
+      # old Intel for x86_64 which still supported -KPIC.
+      ecc*)
+       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+        ;;
+      # icc used to be incompatible with GCC.
+      # ICC 10 doesn't accept -KPIC any more.
+      icc* | ifort*)
+       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+        ;;
+      # Lahey Fortran 8.1.
+      lf95*)
+       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
+       ;;
+      nagfor*)
+       # NAG Fortran compiler
+       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,'
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+       ;;
+      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+       # which looks to be a dead project)
+       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+        ;;
+      ccc*)
+        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+        # All Alpha code is PIC.
+        _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+        ;;
+      xl* | bgxl* | bgf* | mpixl*)
+       # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
+       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+       ;;
+      *)
+       case `$CC -V 2>&1 | sed 5q` in
+       *Sun\ F* | *Sun*Fortran*)
+         # Sun Fortran 8.3 passes all unrecognized flags to the linker
+         _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+         _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+         _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
+         ;;
+       *Sun\ C*)
+         # Sun C 5.9
+         _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+         _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+         _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+         ;;
+       esac
+       ;;
+      esac
+      ;;
+
+    newsos6)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+      ;;
+
+    osf3* | osf4* | osf5*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # All OSF/1 code is PIC.
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    rdos*)
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    solaris*)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
+      *)
+       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    unicos*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      ;;
+
+    uts4*)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    *)
+      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      ;;
+    esac
+  fi
+])
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+    ;;
+  *)
+    _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
+    ;;
+esac
+
+AC_CACHE_CHECK([for $compiler option to produce PIC],
+  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)],
+  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
+_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
+  _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works],
+    [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)],
+    [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
+    [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in
+     "" | " "*) ;;
+     *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;;
+     esac],
+    [_LT_TAGVAR(lt_prog_compiler_pic, $1)=
+     _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
+fi
+_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
+       [Additional compiler flags for building library objects])
+
+_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
+       [How to pass a linker flag through the compiler])
+#
+# Check to make sure the static flag actually works.
+#
+wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\"
+_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
+  _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1),
+  $lt_tmp_static_flag,
+  [],
+  [_LT_TAGVAR(lt_prog_compiler_static, $1)=])
+_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
+       [Compiler flag to prevent dynamic linking])
+])# _LT_COMPILER_PIC
+
+
+# _LT_LINKER_SHLIBS([TAGNAME])
+# ----------------------------
+# See if the linker supports building shared libraries.
+m4_defun([_LT_LINKER_SHLIBS],
+[AC_REQUIRE([LT_PATH_LD])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+m4_require([_LT_PATH_MANIFEST_TOOL])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+m4_if([$1], [CXX], [
+  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+  case $host_os in
+  aix[[4-9]]*)
+    # If we're using GNU nm, then we don't want the "-C" option.
+    # -C means demangle to AIX nm, but means don't demangle with GNU nm
+    # Also, AIX nm treats weak defined symbols like other global defined
+    # symbols, whereas GNU nm marks them as "W".
+    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+    else
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+    fi
+    ;;
+  pw32*)
+    _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+    ;;
+  cygwin* | mingw* | cegcc*)
+    case $cc_basename in
+    cl*) ;;
+    *)
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
+      ;;
+    esac
+    ;;
+  *)
+    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+    ;;
+  esac
+], [
+  runpath_var=
+  _LT_TAGVAR(allow_undefined_flag, $1)=
+  _LT_TAGVAR(always_export_symbols, $1)=no
+  _LT_TAGVAR(archive_cmds, $1)=
+  _LT_TAGVAR(archive_expsym_cmds, $1)=
+  _LT_TAGVAR(compiler_needs_object, $1)=no
+  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+  _LT_TAGVAR(export_dynamic_flag_spec, $1)=
+  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  _LT_TAGVAR(hardcode_automatic, $1)=no
+  _LT_TAGVAR(hardcode_direct, $1)=no
+  _LT_TAGVAR(hardcode_direct_absolute, $1)=no
+  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+  _LT_TAGVAR(hardcode_libdir_separator, $1)=
+  _LT_TAGVAR(hardcode_minus_L, $1)=no
+  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+  _LT_TAGVAR(inherit_rpath, $1)=no
+  _LT_TAGVAR(link_all_deplibs, $1)=unknown
+  _LT_TAGVAR(module_cmds, $1)=
+  _LT_TAGVAR(module_expsym_cmds, $1)=
+  _LT_TAGVAR(old_archive_from_new_cmds, $1)=
+  _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)=
+  _LT_TAGVAR(thread_safe_flag_spec, $1)=
+  _LT_TAGVAR(whole_archive_flag_spec, $1)=
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  _LT_TAGVAR(include_expsyms, $1)=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  # Exclude shared library initialization/finalization symbols.
+dnl Note also adjust exclude_expsyms for C++ above.
+  extract_expsyms_cmds=
+
+  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
+
+  _LT_TAGVAR(ld_shlibs, $1)=yes
+
+  # On some targets, GNU ld is compatible enough with the native linker
+  # that we're better off using the native interface for both.
+  lt_use_gnu_ld_interface=no
+  if test "$with_gnu_ld" = yes; then
+    case $host_os in
+      aix*)
+       # The AIX port of GNU ld has always aspired to compatibility
+       # with the native linker.  However, as the warning in the GNU ld
+       # block says, versions before 2.19.5* couldn't really create working
+       # shared libraries, regardless of the interface used.
+       case `$LD -v 2>&1` in
+         *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
+         *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;;
+         *\ \(GNU\ Binutils\)\ [[3-9]]*) ;;
+         *)
+           lt_use_gnu_ld_interface=yes
+           ;;
+       esac
+       ;;
+      *)
+       lt_use_gnu_ld_interface=yes
+       ;;
+    esac
+  fi
+
+  if test "$lt_use_gnu_ld_interface" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # 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.
+    runpath_var=LD_RUN_PATH
+    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+      _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    else
+      _LT_TAGVAR(whole_archive_flag_spec, $1)=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>&1` in
+      *GNU\ gold*) supports_anon_versioning=yes ;;
+      *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix[[3-9]]*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+       _LT_TAGVAR(ld_shlibs, $1)=no
+       cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.19, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to install binutils
+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
+*** You will then need to restart the configuration process.
+
+_LT_EOF
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            _LT_TAGVAR(archive_expsym_cmds, $1)=''
+        ;;
+      m68k)
+            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+            _LT_TAGVAR(hardcode_minus_L, $1)=yes
+        ;;
+      esac
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+       _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+       # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+       # support --undefined.  This deserves some investigation.  FIXME
+       _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+       _LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+      # as there is no search path for DLLs.
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
+      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_TAGVAR(always_export_symbols, $1)=no
+      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
+
+      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+       # If the export-symbols file already is a .def file (1st line
+       # is EXPORTS), use it as is; otherwise, prepend...
+       _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+         cp $export_symbols $output_objdir/$soname.def;
+       else
+         echo EXPORTS > $output_objdir/$soname.def;
+         cat $export_symbols >> $output_objdir/$soname.def;
+       fi~
+       $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+      else
+       _LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    haiku*)
+      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    interix[[3-9]]*)
+      _LT_TAGVAR(hardcode_direct, $1)=no
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+      # Instead, shared libraries are loaded at an image base (0x10000000 by
+      # default) and relocated if they conflict, which is a slow very memory
+      # consuming and fragmenting process.  To avoid this, we pick a random,
+      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      ;;
+
+    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+      tmp_diet=no
+      if test "$host_os" = linux-dietlibc; then
+       case $cc_basename in
+         diet\ *) tmp_diet=yes;;       # linux-dietlibc with static linking (!diet-dyn)
+       esac
+      fi
+      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+        && test "$tmp_diet" = no
+      then
+       tmp_addflag=' $pic_flag'
+       tmp_sharedflag='-shared'
+       case $cc_basename,$host_cpu in
+        pgcc*)                         # Portland Group C compiler
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+         tmp_addflag=' $pic_flag'
+         ;;
+       pgf77* | pgf90* | pgf95* | pgfortran*)
+                                       # Portland Group f77 and f90 compilers
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+         tmp_addflag=' $pic_flag -Mnomain' ;;
+       ecc*,ia64* | icc*,ia64*)        # Intel C compiler on ia64
+         tmp_addflag=' -i_dynamic' ;;
+       efc*,ia64* | ifort*,ia64*)      # Intel Fortran compiler on ia64
+         tmp_addflag=' -i_dynamic -nofor_main' ;;
+       ifc* | ifort*)                  # Intel Fortran compiler
+         tmp_addflag=' -nofor_main' ;;
+       lf95*)                          # Lahey Fortran 8.1
+         _LT_TAGVAR(whole_archive_flag_spec, $1)=
+         tmp_sharedflag='--shared' ;;
+       xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+         tmp_sharedflag='-qmkshrobj'
+         tmp_addflag= ;;
+       nvcc*)  # Cuda Compiler Driver 2.2
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+         _LT_TAGVAR(compiler_needs_object, $1)=yes
+         ;;
+       esac
+       case `$CC -V 2>&1 | sed 5q` in
+       *Sun\ C*)                       # Sun C 5.9
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+         _LT_TAGVAR(compiler_needs_object, $1)=yes
+         tmp_sharedflag='-G' ;;
+       *Sun\ F*)                       # Sun Fortran 8.3
+         tmp_sharedflag='-G' ;;
+       esac
+       _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+        if test "x$supports_anon_versioning" = xyes; then
+          _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+           cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+           echo "local: *; };" >> $output_objdir/$libname.ver~
+           $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+        fi
+
+       case $cc_basename in
+       xlf* | bgf* | bgxlf* | mpixlf*)
+         # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+         _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
+         _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+         if test "x$supports_anon_versioning" = xyes; then
+           _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+             cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+             echo "local: *; };" >> $output_objdir/$libname.ver~
+             $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+         fi
+         ;;
+       esac
+      else
+        _LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+       _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+       wlarc=
+      else
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris*)
+      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+       _LT_TAGVAR(ld_shlibs, $1)=no
+       cat <<_LT_EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+       _LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
+       _LT_TAGVAR(ld_shlibs, $1)=no
+       cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+       ;;
+       *)
+         # For security reasons, it is highly recommended that you always
+         # use absolute paths for naming shared libraries, and exclude the
+         # DT_RUNPATH tag from executables and libraries.  But doing so
+         # requires that you compile everything twice, which is a pain.
+         if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+           _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+         else
+           _LT_TAGVAR(ld_shlibs, $1)=no
+         fi
+       ;;
+      esac
+      ;;
+
+    sunos4*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+       _LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+    esac
+
+    if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then
+      runpath_var=
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)=
+      _LT_TAGVAR(whole_archive_flag_spec, $1)=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_TAGVAR(always_export_symbols, $1)=yes
+      _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+       # Neither direct hardcoding nor static linking is supported with a
+       # broken collect2.
+       _LT_TAGVAR(hardcode_direct, $1)=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
+       exp_sym_flag='-Bexport'
+       no_entry_flag=""
+      else
+       # If we're using GNU nm, then we don't want the "-C" option.
+       # -C means demangle to AIX nm, but means don't demangle with GNU nm
+       # Also, AIX nm treats weak defined symbols like other global
+       # defined symbols, whereas GNU nm marks them as "W".
+       if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+         _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+       else
+         _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+       fi
+       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
+
+       exp_sym_flag='-bexport'
+       no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      _LT_TAGVAR(archive_cmds, $1)=''
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+
+      if test "$GCC" = yes; then
+       case $host_os in aix4.[[012]]|aix4.[[012]].*)
+       # We only want to do this on AIX 4.2 and lower, the check
+       # below for broken collect2 doesn't work under 4.3+
+         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
+         _LT_TAGVAR(hardcode_direct, $1)=unsupported
+         # It fails to find uninstalled libraries when the uninstalled
+         # path is not listed in the libpath.  Setting hardcode_minus_L
+         # to unsupported forces relinking
+         _LT_TAGVAR(hardcode_minus_L, $1)=yes
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+         _LT_TAGVAR(hardcode_libdir_separator, $1)=
+         fi
+         ;;
+       esac
+       shared_flag='-shared'
+       if test "$aix_use_runtimelinking" = yes; then
+         shared_flag="$shared_flag "'${wl}-G'
+       fi
+      else
+       # not using gcc
+       if test "$host_cpu" = ia64; then
+       # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+       # chokes on -Wl,-G. The following line is correct:
+         shared_flag='-G'
+       else
+         if test "$aix_use_runtimelinking" = yes; then
+           shared_flag='${wl}-G'
+         else
+           shared_flag='${wl}-bM:SRE'
+         fi
+       fi
+      fi
+
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      _LT_TAGVAR(always_export_symbols, $1)=yes
+      if test "$aix_use_runtimelinking" = yes; then
+       # Warning - without using the other runtime loading flags (-brtl),
+       # -berok will link without error, but may produce a broken library.
+       _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
+        # Determine the default libpath from the value encoded in an
+        # empty executable.
+        _LT_SYS_MODULE_PATH_AIX([$1])
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+      else
+       if test "$host_cpu" = ia64; then
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+         _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+         _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+       else
+        # Determine the default libpath from the value encoded in an
+        # empty executable.
+        _LT_SYS_MODULE_PATH_AIX([$1])
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+         # Warning - without using the other run time loading flags,
+         # -berok will link without error, but may produce a broken library.
+         _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+         _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+         if test "$with_gnu_ld" = yes; then
+           # We only use this code for GNU lds that support --whole-archive.
+           _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+         else
+           # Exported symbols can be pulled into shared objects from archives
+           _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+         fi
+         _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+         # This is similar to how AIX traditionally builds its shared libraries.
+         _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+       fi
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            _LT_TAGVAR(archive_expsym_cmds, $1)=''
+        ;;
+      m68k)
+            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+            _LT_TAGVAR(hardcode_minus_L, $1)=yes
+        ;;
+      esac
+      ;;
+
+    bsdi[[45]]*)
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
+      ;;
+
+    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.
+      case $cc_basename in
+      cl*)
+       # Native MSVC
+       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+       _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+       _LT_TAGVAR(always_export_symbols, $1)=yes
+       _LT_TAGVAR(file_list_spec, $1)='@'
+       # Tell ltmain to make .lib files, not .a files.
+       libext=lib
+       # Tell ltmain to make .dll files, not .so files.
+       shrext_cmds=".dll"
+       # FIXME: Setting linknames here is a bad hack.
+       _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
+       _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+           sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
+         else
+           sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+         fi~
+         $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+         linknames='
+       # The linker will not automatically build a static lib if we build a DLL.
+       # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+       _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+       _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
+       # Don't use ranlib
+       _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
+       _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
+         lt_tool_outputfile="@TOOL_OUTPUT@"~
+         case $lt_outputfile in
+           *.exe|*.EXE) ;;
+           *)
+             lt_outputfile="$lt_outputfile.exe"
+             lt_tool_outputfile="$lt_tool_outputfile.exe"
+             ;;
+         esac~
+         if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
+           $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+           $RM "$lt_outputfile.manifest";
+         fi'
+       ;;
+      *)
+       # Assume MSVC wrapper
+       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+       _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+       # Tell ltmain to make .lib files, not .a files.
+       libext=lib
+       # Tell ltmain to make .dll files, not .so files.
+       shrext_cmds=".dll"
+       # FIXME: Setting linknames here is a bad hack.
+       _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+       # The linker will automatically build a .lib file if we build a DLL.
+       _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+       # FIXME: Should let the user specify the lib program.
+       _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
+       _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+       ;;
+      esac
+      ;;
+
+    darwin* | rhapsody*)
+      _LT_DARWIN_LINKER_FEATURES($1)
+      ;;
+
+    dgux*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    freebsd1*)
+      _LT_TAGVAR(ld_shlibs, $1)=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | dragonfly*)
+      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+       _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+       _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      ;;
+
+    hpux10*)
+      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      if test "$with_gnu_ld" = no; then
+       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+       _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+       _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+       _LT_TAGVAR(hardcode_direct, $1)=yes
+       _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+       _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+       # hardcode_minus_L: Not really in the search PATH,
+       # but as the default location of the library.
+       _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      fi
+      ;;
+
+    hpux11*)
+      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+       case $host_cpu in
+       hppa*64*)
+         _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       ia64*)
+         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       *)
+         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       esac
+      else
+       case $host_cpu in
+       hppa*64*)
+         _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       ia64*)
+         _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       *)
+       m4_if($1, [], [
+         # Older versions of the 11.00 compiler do not understand -b yet
+         # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
+         _LT_LINKER_OPTION([if $CC understands -b],
+           _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b],
+           [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'],
+           [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])],
+         [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'])
+         ;;
+       esac
+      fi
+      if test "$with_gnu_ld" = no; then
+       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+       _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+       case $host_cpu in
+       hppa*64*|ia64*)
+         _LT_TAGVAR(hardcode_direct, $1)=no
+         _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+         ;;
+       *)
+         _LT_TAGVAR(hardcode_direct, $1)=yes
+         _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+         _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+
+         # hardcode_minus_L: Not really in the search PATH,
+         # but as the default location of the library.
+         _LT_TAGVAR(hardcode_minus_L, $1)=yes
+         ;;
+       esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+       # Try to use the -exported_symbol ld option, if it does not
+       # work, assume that -exports_file does not work either and
+       # implicitly export all symbols.
+       # This should be the same for all languages, so no per-tag cache variable.
+       AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol],
+         [lt_cv_irix_exported_symbol],
+         [save_LDFLAGS="$LDFLAGS"
+          LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+          AC_LINK_IFELSE(
+            [AC_LANG_SOURCE(
+               [AC_LANG_CASE([C], [[int foo (void) { return 0; }]],
+                             [C++], [[int foo (void) { return 0; }]],
+                             [Fortran 77], [[
+      subroutine foo
+      end]],
+                             [Fortran], [[
+      subroutine foo
+      end]])])],
+             [lt_cv_irix_exported_symbol=yes],
+             [lt_cv_irix_exported_symbol=no])
+           LDFLAGS="$save_LDFLAGS"])
+       if test "$lt_cv_irix_exported_symbol" = yes; then
+          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+       fi
+      else
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+      fi
+      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_TAGVAR(inherit_rpath, $1)=yes
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+       _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+       _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    newsos6)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *nto* | *qnx*)
+      ;;
+
+    openbsd*)
+      if test -f /usr/libexec/ld.so; then
+       _LT_TAGVAR(hardcode_direct, $1)=yes
+       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+       _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+       if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+         _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+         _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+       else
+         case $host_os in
+          openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+            _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+            ;;
+          *)
+            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+            ;;
+         esac
+       fi
+      else
+       _LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    os2*)
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+       _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+       _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      ;;
+
+    osf4* | osf5*)     # as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+       _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      else
+       _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+       $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+
+       # Both c and cxx compiler support -rpath directly
+       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+      fi
+      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      ;;
+
+    solaris*)
+      _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
+      if test "$GCC" = yes; then
+       wlarc='${wl}'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+         $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+      else
+       case `$CC -V 2>&1` in
+       *"Compilers 5.0"*)
+         wlarc=''
+         _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+         $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+         ;;
+       *)
+         wlarc='${wl}'
+         _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+         _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+         $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+         ;;
+       esac
+      fi
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      case $host_os in
+      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+      *)
+       # The compiler driver will combine and reorder linker options,
+       # but understands `-z linker_flag'.  GCC discards it without `$wl',
+       # but is careful enough not to reorder.
+       # Supported since Solaris 2.6 (maybe 2.5.1?)
+       if test "$GCC" = yes; then
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+       else
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+       fi
+       ;;
+      esac
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+       # Use $CC to link under sequent, because it throws in some extra .o
+       # files that make .init and .fini sections work.
+       _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+       sni)
+         _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true???
+       ;;
+       siemens)
+         ## LD is ld it makes a PLAMLIB
+         ## CC just makes a GrossModule.
+         _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+         _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
+         _LT_TAGVAR(hardcode_direct, $1)=no
+        ;;
+       motorola)
+         _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
+       ;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    sysv4.3*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+       runpath_var=LD_RUN_PATH
+       hardcode_runpath_var=yes
+       _LT_TAGVAR(ld_shlibs, $1)=yes
+      fi
+      ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6*)
+      # Note: We can NOT use -z defs as we might desire, because we do not
+      # link with -lc, and that would cause any symbols used from libc to
+      # always be unresolved, which means just about no library would
+      # ever link correctly.  If we're not using GNU ld we use -z text
+      # though, which does catch some bad symbols but isn't as heavy-handed
+      # as -z defs.
+      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+      _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    uts4*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *)
+      _LT_TAGVAR(ld_shlibs, $1)=no
+      ;;
+    esac
+
+    if test x$host_vendor = xsni; then
+      case $host in
+      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+       _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym'
+       ;;
+      esac
+    fi
+  fi
+])
+AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
+test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
+
+_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl
+_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl
+_LT_DECL([], [extract_expsyms_cmds], [2],
+    [The commands to extract the exported symbol list from a shared archive])
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in
+x|xyes)
+  # Assume -lc should be added
+  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $_LT_TAGVAR(archive_cmds, $1) in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      AC_CACHE_CHECK([whether -lc should be explicitly linked in],
+       [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1),
+       [$RM conftest*
+       echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+       if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
+         soname=conftest
+         lib=conftest
+         libobjs=conftest.$ac_objext
+         deplibs=
+         wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
+         pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
+         compiler_flags=-v
+         linker_flags=-v
+         verstring=
+         output_objdir=.
+         libname=conftest
+         lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
+         _LT_TAGVAR(allow_undefined_flag, $1)=
+         if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
+         then
+           lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+         else
+           lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+         fi
+         _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+       else
+         cat conftest.err 1>&5
+       fi
+       $RM conftest*
+       ])
+      _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0],
+    [Whether or not to add -lc for building shared libraries])
+_LT_TAGDECL([allow_libtool_libs_with_static_runtimes],
+    [enable_shared_with_static_runtimes], [0],
+    [Whether or not to disallow shared libs when runtime libs are static])
+_LT_TAGDECL([], [export_dynamic_flag_spec], [1],
+    [Compiler flag to allow reflexive dlopens])
+_LT_TAGDECL([], [whole_archive_flag_spec], [1],
+    [Compiler flag to generate shared objects directly from archives])
+_LT_TAGDECL([], [compiler_needs_object], [1],
+    [Whether the compiler copes with passing no objects directly])
+_LT_TAGDECL([], [old_archive_from_new_cmds], [2],
+    [Create an old-style archive from a shared archive])
+_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2],
+    [Create a temporary old-style archive to link instead of a shared archive])
+_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive])
+_LT_TAGDECL([], [archive_expsym_cmds], [2])
+_LT_TAGDECL([], [module_cmds], [2],
+    [Commands used to build a loadable module if different from building
+    a shared archive.])
+_LT_TAGDECL([], [module_expsym_cmds], [2])
+_LT_TAGDECL([], [with_gnu_ld], [1],
+    [Whether we are building with GNU ld or not])
+_LT_TAGDECL([], [allow_undefined_flag], [1],
+    [Flag that allows shared libraries with undefined symbols to be built])
+_LT_TAGDECL([], [no_undefined_flag], [1],
+    [Flag that enforces no undefined symbols])
+_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
+    [Flag to hardcode $libdir into a binary during linking.
+    This must work even if $libdir does not exist])
+_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1],
+    [[If ld is used when linking, flag to hardcode $libdir into a binary
+    during linking.  This must work even if $libdir does not exist]])
+_LT_TAGDECL([], [hardcode_libdir_separator], [1],
+    [Whether we need a single "-rpath" flag with a separated argument])
+_LT_TAGDECL([], [hardcode_direct], [0],
+    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
+    DIR into the resulting binary])
+_LT_TAGDECL([], [hardcode_direct_absolute], [0],
+    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
+    DIR into the resulting binary and the resulting library dependency is
+    "absolute", i.e impossible to change by setting ${shlibpath_var} if the
+    library is relocated])
+_LT_TAGDECL([], [hardcode_minus_L], [0],
+    [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+    into the resulting binary])
+_LT_TAGDECL([], [hardcode_shlibpath_var], [0],
+    [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+    into the resulting binary])
+_LT_TAGDECL([], [hardcode_automatic], [0],
+    [Set to "yes" if building a shared library automatically hardcodes DIR
+    into the library and all subsequent libraries and executables linked
+    against it])
+_LT_TAGDECL([], [inherit_rpath], [0],
+    [Set to yes if linker adds runtime paths of dependent libraries
+    to runtime path list])
+_LT_TAGDECL([], [link_all_deplibs], [0],
+    [Whether libtool must link a program against all its dependency libraries])
+_LT_TAGDECL([], [always_export_symbols], [0],
+    [Set to "yes" if exported symbols are required])
+_LT_TAGDECL([], [export_symbols_cmds], [2],
+    [The commands to list exported symbols])
+_LT_TAGDECL([], [exclude_expsyms], [1],
+    [Symbols that should not be listed in the preloaded symbols])
+_LT_TAGDECL([], [include_expsyms], [1],
+    [Symbols that must always be exported])
+_LT_TAGDECL([], [prelink_cmds], [2],
+    [Commands necessary for linking programs (against libraries) with templates])
+_LT_TAGDECL([], [postlink_cmds], [2],
+    [Commands necessary for finishing linking programs])
+_LT_TAGDECL([], [file_list_spec], [1],
+    [Specify filename containing input files])
+dnl FIXME: Not yet implemented
+dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1],
+dnl    [Compiler flag to generate thread safe objects])
+])# _LT_LINKER_SHLIBS
+
+
+# _LT_LANG_C_CONFIG([TAG])
+# ------------------------
+# Ensure that the configuration variables for a C compiler are suitably
+# defined.  These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_C_CONFIG],
+[m4_require([_LT_DECL_EGREP])dnl
+lt_save_CC="$CC"
+AC_LANG_PUSH(C)
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+_LT_TAG_COMPILER
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+  _LT_COMPILER_NO_RTTI($1)
+  _LT_COMPILER_PIC($1)
+  _LT_COMPILER_C_O($1)
+  _LT_COMPILER_FILE_LOCKS($1)
+  _LT_LINKER_SHLIBS($1)
+  _LT_SYS_DYNAMIC_LINKER($1)
+  _LT_LINKER_HARDCODE_LIBPATH($1)
+  LT_SYS_DLOPEN_SELF
+  _LT_CMD_STRIPLIB
+
+  # Report which library types will actually be built
+  AC_MSG_CHECKING([if libtool supports shared libraries])
+  AC_MSG_RESULT([$can_build_shared])
+
+  AC_MSG_CHECKING([whether to build shared libraries])
+  test "$can_build_shared" = "no" && enable_shared=no
+
+  # On AIX, shared libraries and static libraries use the same namespace, and
+  # are all built from PIC.
+  case $host_os in
+  aix3*)
+    test "$enable_shared" = yes && enable_static=no
+    if test -n "$RANLIB"; then
+      archive_cmds="$archive_cmds~\$RANLIB \$lib"
+      postinstall_cmds='$RANLIB $lib'
+    fi
+    ;;
+
+  aix[[4-9]]*)
+    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+      test "$enable_shared" = yes && enable_static=no
+    fi
+    ;;
+  esac
+  AC_MSG_RESULT([$enable_shared])
+
+  AC_MSG_CHECKING([whether to build static libraries])
+  # Make sure either enable_shared or enable_static is yes.
+  test "$enable_shared" = yes || enable_static=yes
+  AC_MSG_RESULT([$enable_static])
+
+  _LT_CONFIG($1)
+fi
+AC_LANG_POP
+CC="$lt_save_CC"
+])# _LT_LANG_C_CONFIG
+
+
+# _LT_LANG_CXX_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a C++ compiler are suitably
+# defined.  These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_CXX_CONFIG],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_PATH_MANIFEST_TOOL])dnl
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+    (test "X$CXX" != "Xg++"))) ; then
+  AC_PROG_CXXCPP
+else
+  _lt_caught_CXX_error=yes
+fi
+
+AC_LANG_PUSH(C++)
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(compiler_needs_object, $1)=no
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the CXX compiler isn't working.  Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_caught_CXX_error" != yes; then
+  # Code to be used in simple compile tests
+  lt_simple_compile_test_code="int some_variable = 0;"
+
+  # Code to be used in simple link tests
+  lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
+
+  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+  _LT_TAG_COMPILER
+
+  # save warnings/boilerplate of simple test code
+  _LT_COMPILER_BOILERPLATE
+  _LT_LINKER_BOILERPLATE
+
+  # Allow CC to be a program name with arguments.
+  lt_save_CC=$CC
+  lt_save_CFLAGS=$CFLAGS
+  lt_save_LD=$LD
+  lt_save_GCC=$GCC
+  GCC=$GXX
+  lt_save_with_gnu_ld=$with_gnu_ld
+  lt_save_path_LD=$lt_cv_path_LD
+  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+    lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+  else
+    $as_unset lt_cv_prog_gnu_ld
+  fi
+  if test -n "${lt_cv_path_LDCXX+set}"; then
+    lt_cv_path_LD=$lt_cv_path_LDCXX
+  else
+    $as_unset lt_cv_path_LD
+  fi
+  test -z "${LDCXX+set}" || LD=$LDCXX
+  CC=${CXX-"c++"}
+  CFLAGS=$CXXFLAGS
+  compiler=$CC
+  _LT_TAGVAR(compiler, $1)=$CC
+  _LT_CC_BASENAME([$compiler])
+
+  if test -n "$compiler"; then
+    # We don't want -fno-exception when compiling C++ code, so set the
+    # no_builtin_flag separately
+    if test "$GXX" = yes; then
+      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+    else
+      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+    fi
+
+    if test "$GXX" = yes; then
+      # Set up default GNU C++ configuration
+
+      LT_PATH_LD
+
+      # Check if GNU C++ uses GNU ld as the underlying linker, since the
+      # archiving commands below assume that GNU ld is being used.
+      if test "$with_gnu_ld" = yes; then
+        _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+        # If archive_cmds runs LD, not CC, wlarc should be empty
+        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+        #     investigate it a little bit more. (MM)
+        wlarc='${wl}'
+
+        # ancient GNU ld didn't support --whole-archive et. al.
+        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
+         $GREP 'no-whole-archive' > /dev/null; then
+          _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+        else
+          _LT_TAGVAR(whole_archive_flag_spec, $1)=
+        fi
+      else
+        with_gnu_ld=no
+        wlarc=
+
+        # A generic and very simple default shared library creation
+        # command for GNU C++ for the case where it uses the native
+        # linker, instead of GNU ld.  If possible, this setting should
+        # overridden to take advantage of the native linker features on
+        # the platform it is being used on.
+        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+      fi
+
+      # Commands to make compiler produce verbose output that lists
+      # what "hidden" libraries, object files and flags are used when
+      # linking a shared library.
+      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+
+    else
+      GXX=no
+      with_gnu_ld=no
+      wlarc=
+    fi
+
+    # PORTME: fill in a description of your system's C++ link characteristics
+    AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+    _LT_TAGVAR(ld_shlibs, $1)=yes
+    case $host_os in
+      aix3*)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+      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
+          exp_sym_flag='-Bexport'
+          no_entry_flag=""
+        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
+             case $ld_flag in
+             *-brtl*)
+               aix_use_runtimelinking=yes
+               break
+               ;;
+             esac
+           done
+           ;;
+          esac
+
+          exp_sym_flag='-bexport'
+          no_entry_flag='-bnoentry'
+        fi
+
+        # When large executables or shared objects are built, AIX ld can
+        # have problems creating the table of contents.  If linking a library
+        # or program results in "error TOC overflow" add -mminimal-toc to
+        # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+        _LT_TAGVAR(archive_cmds, $1)=''
+        _LT_TAGVAR(hardcode_direct, $1)=yes
+        _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+        _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+        _LT_TAGVAR(link_all_deplibs, $1)=yes
+        _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+
+        if test "$GXX" = yes; then
+          case $host_os in aix4.[[012]]|aix4.[[012]].*)
+          # We only want to do this on AIX 4.2 and lower, the check
+          # below for broken collect2 doesn't work under 4.3+
+         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
+           _LT_TAGVAR(hardcode_direct, $1)=unsupported
+           # It fails to find uninstalled libraries when the uninstalled
+           # path is not listed in the libpath.  Setting hardcode_minus_L
+           # to unsupported forces relinking
+           _LT_TAGVAR(hardcode_minus_L, $1)=yes
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+           _LT_TAGVAR(hardcode_libdir_separator, $1)=
+         fi
+          esac
+          shared_flag='-shared'
+         if test "$aix_use_runtimelinking" = yes; then
+           shared_flag="$shared_flag "'${wl}-G'
+         fi
+        else
+          # not using gcc
+          if test "$host_cpu" = ia64; then
+         # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+         # chokes on -Wl,-G. The following line is correct:
+         shared_flag='-G'
+          else
+           if test "$aix_use_runtimelinking" = yes; then
+             shared_flag='${wl}-G'
+           else
+             shared_flag='${wl}-bM:SRE'
+           fi
+          fi
+        fi
+
+        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
+        # It seems that -bexpall does not export symbols beginning with
+        # underscore (_), so it is better to generate a list of symbols to
+       # export.
+        _LT_TAGVAR(always_export_symbols, $1)=yes
+        if test "$aix_use_runtimelinking" = yes; then
+          # Warning - without using the other runtime loading flags (-brtl),
+          # -berok will link without error, but may produce a broken library.
+          _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
+          # Determine the default libpath from the value encoded in an empty
+          # executable.
+          _LT_SYS_MODULE_PATH_AIX([$1])
+          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+        else
+          if test "$host_cpu" = ia64; then
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+           _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+           _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+          else
+           # Determine the default libpath from the value encoded in an
+           # empty executable.
+           _LT_SYS_MODULE_PATH_AIX([$1])
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+           # Warning - without using the other run time loading flags,
+           # -berok will link without error, but may produce a broken library.
+           _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+           _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+           if test "$with_gnu_ld" = yes; then
+             # We only use this code for GNU lds that support --whole-archive.
+             _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+           else
+             # Exported symbols can be pulled into shared objects from archives
+             _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+           fi
+           _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+           # This is similar to how AIX traditionally builds its shared
+           # libraries.
+           _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+          fi
+        fi
+        ;;
+
+      beos*)
+       if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+         _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+         # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+         # support --undefined.  This deserves some investigation.  FIXME
+         _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       else
+         _LT_TAGVAR(ld_shlibs, $1)=no
+       fi
+       ;;
+
+      chorus*)
+        case $cc_basename in
+          *)
+         # FIXME: insert proper C++ library support
+         _LT_TAGVAR(ld_shlibs, $1)=no
+         ;;
+        esac
+        ;;
+
+      cygwin* | mingw* | pw32* | cegcc*)
+       case $GXX,$cc_basename in
+       ,cl* | no,cl*)
+         # Native MSVC
+         # hardcode_libdir_flag_spec is actually meaningless, as there is
+         # no search path for DLLs.
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+         _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+         _LT_TAGVAR(always_export_symbols, $1)=yes
+         _LT_TAGVAR(file_list_spec, $1)='@'
+         # Tell ltmain to make .lib files, not .a files.
+         libext=lib
+         # Tell ltmain to make .dll files, not .so files.
+         shrext_cmds=".dll"
+         # FIXME: Setting linknames here is a bad hack.
+         _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
+         _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+             $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
+           else
+             $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+           fi~
+           $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+           linknames='
+         # The linker will not automatically build a static lib if we build a DLL.
+         # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+         _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+         # Don't use ranlib
+         _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
+         _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
+           lt_tool_outputfile="@TOOL_OUTPUT@"~
+           case $lt_outputfile in
+             *.exe|*.EXE) ;;
+             *)
+               lt_outputfile="$lt_outputfile.exe"
+               lt_tool_outputfile="$lt_tool_outputfile.exe"
+               ;;
+           esac~
+           func_to_tool_file "$lt_outputfile"~
+           if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
+             $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+             $RM "$lt_outputfile.manifest";
+           fi'
+         ;;
+       *)
+         # g++
+         # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+         # as there is no search path for DLLs.
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+         _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
+         _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+         _LT_TAGVAR(always_export_symbols, $1)=no
+         _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+         if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+           _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+           # If the export-symbols file already is a .def file (1st line
+           # is EXPORTS), use it as is; otherwise, prepend...
+           _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+             cp $export_symbols $output_objdir/$soname.def;
+           else
+             echo EXPORTS > $output_objdir/$soname.def;
+             cat $export_symbols >> $output_objdir/$soname.def;
+           fi~
+           $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+         else
+           _LT_TAGVAR(ld_shlibs, $1)=no
+         fi
+         ;;
+       esac
+       ;;
+      darwin* | rhapsody*)
+        _LT_DARWIN_LINKER_FEATURES($1)
+       ;;
+
+      dgux*)
+        case $cc_basename in
+          ec++*)
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+          ghcx*)
+           # Green Hills C++ Compiler
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+          *)
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+        esac
+        ;;
+
+      freebsd[[12]]*)
+        # C++ shared libraries reported to be fairly broken before
+       # switch to ELF
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+
+      freebsd-elf*)
+        _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+        ;;
+
+      freebsd* | dragonfly*)
+        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+        # conventions
+        _LT_TAGVAR(ld_shlibs, $1)=yes
+        ;;
+
+      gnu*)
+        ;;
+
+      haiku*)
+        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+        _LT_TAGVAR(link_all_deplibs, $1)=yes
+        ;;
+
+      hpux9*)
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+        _LT_TAGVAR(hardcode_direct, $1)=yes
+        _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+                                            # but as the default
+                                            # location of the library.
+
+        case $cc_basename in
+          CC*)
+            # FIXME: insert proper C++ library support
+            _LT_TAGVAR(ld_shlibs, $1)=no
+            ;;
+          aCC*)
+            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+            # Commands to make compiler produce verbose output that lists
+            # what "hidden" libraries, object files and flags are used when
+            # linking a shared library.
+            #
+            # There doesn't appear to be a way to prevent this compiler from
+            # explicitly linking system object files so we need to strip them
+            # from the output so that they don't get included in the library
+            # dependencies.
+            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+            ;;
+          *)
+            if test "$GXX" = yes; then
+              _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+            else
+              # FIXME: insert proper C++ library support
+              _LT_TAGVAR(ld_shlibs, $1)=no
+            fi
+            ;;
+        esac
+        ;;
+
+      hpux10*|hpux11*)
+        if test $with_gnu_ld = no; then
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+         _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+          case $host_cpu in
+            hppa*64*|ia64*)
+              ;;
+            *)
+             _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+              ;;
+          esac
+        fi
+        case $host_cpu in
+          hppa*64*|ia64*)
+            _LT_TAGVAR(hardcode_direct, $1)=no
+            _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+            ;;
+          *)
+            _LT_TAGVAR(hardcode_direct, $1)=yes
+            _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+            _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+                                                # but as the default
+                                                # location of the library.
+            ;;
+        esac
+
+        case $cc_basename in
+          CC*)
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+          aCC*)
+           case $host_cpu in
+             hppa*64*)
+               _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+               ;;
+             ia64*)
+               _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+               ;;
+             *)
+               _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+               ;;
+           esac
+           # Commands to make compiler produce verbose output that lists
+           # what "hidden" libraries, object files and flags are used when
+           # linking a shared library.
+           #
+           # There doesn't appear to be a way to prevent this compiler from
+           # explicitly linking system object files so we need to strip them
+           # from the output so that they don't get included in the library
+           # dependencies.
+           output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+           ;;
+          *)
+           if test "$GXX" = yes; then
+             if test $with_gnu_ld = no; then
+               case $host_cpu in
+                 hppa*64*)
+                   _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+                   ;;
+                 ia64*)
+                   _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+                   ;;
+                 *)
+                   _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+                   ;;
+               esac
+             fi
+           else
+             # FIXME: insert proper C++ library support
+             _LT_TAGVAR(ld_shlibs, $1)=no
+           fi
+           ;;
+        esac
+        ;;
+
+      interix[[3-9]]*)
+       _LT_TAGVAR(hardcode_direct, $1)=no
+       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+       _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+       # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+       # Instead, shared libraries are loaded at an image base (0x10000000 by
+       # default) and relocated if they conflict, which is a slow very memory
+       # consuming and fragmenting process.  To avoid this, we pick a random,
+       # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+       # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+       ;;
+      irix5* | irix6*)
+        case $cc_basename in
+          CC*)
+           # SGI C++
+           _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+
+           # Archives containing C++ object files must be created using
+           # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
+           # necessary to make sure instantiated templates are included
+           # in the archive.
+           _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
+           ;;
+          *)
+           if test "$GXX" = yes; then
+             if test "$with_gnu_ld" = no; then
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+             else
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
+             fi
+           fi
+           _LT_TAGVAR(link_all_deplibs, $1)=yes
+           ;;
+        esac
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+        _LT_TAGVAR(inherit_rpath, $1)=yes
+        ;;
+
+      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+        case $cc_basename in
+          KCC*)
+           # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+           # KCC will only create a shared library if the output file
+           # ends with ".so" (or ".sl" for HP-UX), so rename the library
+           # to its proper name (with version) after linking.
+           _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+           _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+           # Commands to make compiler produce verbose output that lists
+           # what "hidden" libraries, object files and flags are used when
+           # linking a shared library.
+           #
+           # There doesn't appear to be a way to prevent this compiler from
+           # explicitly linking system object files so we need to strip them
+           # from the output so that they don't get included in the library
+           # dependencies.
+           output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+           _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+           # Archives containing C++ object files must be created using
+           # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+           _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+           ;;
+         icpc* | ecpc* )
+           # Intel C++
+           with_gnu_ld=yes
+           # version 8.0 and above of icpc choke on multiply defined symbols
+           # if we add $predep_objects and $postdep_objects, however 7.1 and
+           # earlier do not add the objects themselves.
+           case `$CC -V 2>&1` in
+             *"Version 7."*)
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+               _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+               ;;
+             *)  # Version 8.0 or newer
+               tmp_idyn=
+               case $host_cpu in
+                 ia64*) tmp_idyn=' -i_dynamic';;
+               esac
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+               _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+               ;;
+           esac
+           _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+           _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+           _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+           ;;
+          pgCC* | pgcpp*)
+            # Portland Group C++ compiler
+           case `$CC -V` in
+           *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*)
+             _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+               compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
+             _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+               $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
+               $RANLIB $oldlib'
+             _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+               $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+             _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+               $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+             ;;
+           *) # Version 6 and above use weak symbols
+             _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+             _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+             ;;
+           esac
+
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+           _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+           _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+            ;;
+         cxx*)
+           # Compaq C++
+           _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+           runpath_var=LD_RUN_PATH
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+           _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+           # Commands to make compiler produce verbose output that lists
+           # what "hidden" libraries, object files and flags are used when
+           # linking a shared library.
+           #
+           # There doesn't appear to be a way to prevent this compiler from
+           # explicitly linking system object files so we need to strip them
+           # from the output so that they don't get included in the library
+           # dependencies.
+           output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
+           ;;
+         xl* | mpixl* | bgxl*)
+           # IBM XL 8.0 on PPC, with GNU ld
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+           _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+           _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+           if test "x$supports_anon_versioning" = xyes; then
+             _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+               cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+               echo "local: *; };" >> $output_objdir/$libname.ver~
+               $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+           fi
+           ;;
+         *)
+           case `$CC -V 2>&1 | sed 5q` in
+           *Sun\ C*)
+             # Sun C++ 5.9
+             _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+             _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+             _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
+             _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+             _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+             _LT_TAGVAR(compiler_needs_object, $1)=yes
+
+             # Not sure whether something based on
+             # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
+             # would be better.
+             output_verbose_link_cmd='func_echo_all'
+
+             # Archives containing C++ object files must be created using
+             # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+             # necessary to make sure instantiated templates are included
+             # in the archive.
+             _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+             ;;
+           esac
+           ;;
+       esac
+       ;;
+
+      lynxos*)
+        # FIXME: insert proper C++ library support
+       _LT_TAGVAR(ld_shlibs, $1)=no
+       ;;
+
+      m88k*)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+       ;;
+
+      mvs*)
+        case $cc_basename in
+          cxx*)
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+         *)
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+       esac
+       ;;
+
+      netbsd*)
+        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+         _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+         wlarc=
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+         _LT_TAGVAR(hardcode_direct, $1)=yes
+         _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+       fi
+       # Workaround some broken pre-1.5 toolchains
+       output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+       ;;
+
+      *nto* | *qnx*)
+        _LT_TAGVAR(ld_shlibs, $1)=yes
+       ;;
+
+      openbsd2*)
+        # C++ shared libraries are fairly broken
+       _LT_TAGVAR(ld_shlibs, $1)=no
+       ;;
+
+      openbsd*)
+       if test -f /usr/libexec/ld.so; then
+         _LT_TAGVAR(hardcode_direct, $1)=yes
+         _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+         _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+         if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+           _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+           _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+         fi
+         output_verbose_link_cmd=func_echo_all
+       else
+         _LT_TAGVAR(ld_shlibs, $1)=no
+       fi
+       ;;
+
+      osf3* | osf4* | osf5*)
+        case $cc_basename in
+          KCC*)
+           # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+           # KCC will only create a shared library if the output file
+           # ends with ".so" (or ".sl" for HP-UX), so rename the library
+           # to its proper name (with version) after linking.
+           _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+           _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+           # Archives containing C++ object files must be created using
+           # the KAI C++ compiler.
+           case $host in
+             osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;;
+             *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;;
+           esac
+           ;;
+          RCC*)
+           # Rational C++ 2.4.1
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+          cxx*)
+           case $host in
+             osf3*)
+               _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+               _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+               ;;
+             *)
+               _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+               _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+                 echo "-hidden">> $lib.exp~
+                 $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~
+                 $RM $lib.exp'
+               _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+               ;;
+           esac
+
+           _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+           # Commands to make compiler produce verbose output that lists
+           # what "hidden" libraries, object files and flags are used when
+           # linking a shared library.
+           #
+           # There doesn't appear to be a way to prevent this compiler from
+           # explicitly linking system object files so we need to strip them
+           # from the output so that they don't get included in the library
+           # dependencies.
+           output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+           ;;
+         *)
+           if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+             _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+             case $host in
+               osf3*)
+                 _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+                 ;;
+               *)
+                 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+                 ;;
+             esac
+
+             _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+             _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+             # Commands to make compiler produce verbose output that lists
+             # what "hidden" libraries, object files and flags are used when
+             # linking a shared library.
+             output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+
+           else
+             # FIXME: insert proper C++ library support
+             _LT_TAGVAR(ld_shlibs, $1)=no
+           fi
+           ;;
+        esac
+        ;;
+
+      psos*)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+
+      sunos4*)
+        case $cc_basename in
+          CC*)
+           # Sun C++ 4.x
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+          lcc*)
+           # Lucid
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+          *)
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+        esac
+        ;;
+
+      solaris*)
+        case $cc_basename in
+          CC* | sunCC*)
+           # Sun C++ 4.2, 5.x and Centerline C++
+            _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
+           _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+           _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+           _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+             $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+           _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+           case $host_os in
+             solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+             *)
+               # The compiler driver will combine and reorder linker options,
+               # but understands `-z linker_flag'.
+               # Supported since Solaris 2.6 (maybe 2.5.1?)
+               _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+               ;;
+           esac
+           _LT_TAGVAR(link_all_deplibs, $1)=yes
+
+           output_verbose_link_cmd='func_echo_all'
+
+           # Archives containing C++ object files must be created using
+           # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+           # necessary to make sure instantiated templates are included
+           # in the archive.
+           _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+           ;;
+          gcx*)
+           # Green Hills C++ Compiler
+           _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+           # The C++ compiler must be used to create the archive.
+           _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+           ;;
+          *)
+           # GNU C++ compiler with Solaris linker
+           if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+             _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
+             if $CC --version | $GREP -v '^2\.7' > /dev/null; then
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+               _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+                 $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+               # Commands to make compiler produce verbose output that lists
+               # what "hidden" libraries, object files and flags are used when
+               # linking a shared library.
+               output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+             else
+               # g++ 2.7 appears to require `-G' NOT `-shared' on this
+               # platform.
+               _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+               _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+                 $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+               # Commands to make compiler produce verbose output that lists
+               # what "hidden" libraries, object files and flags are used when
+               # linking a shared library.
+               output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+             fi
+
+             _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+             case $host_os in
+               solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+               *)
+                 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+                 ;;
+             esac
+           fi
+           ;;
+        esac
+        ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      runpath_var='LD_RUN_PATH'
+
+      case $cc_basename in
+        CC*)
+         _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+         _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       *)
+         _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+         _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+      esac
+      ;;
+
+      sysv5* | sco3.2v5* | sco5v6*)
+       # Note: We can NOT use -z defs as we might desire, because we do not
+       # link with -lc, and that would cause any symbols used from libc to
+       # always be unresolved, which means just about no library would
+       # ever link correctly.  If we're not using GNU ld we use -z text
+       # though, which does catch some bad symbols but isn't as heavy-handed
+       # as -z defs.
+       _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+       _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+       _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+       _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+       _LT_TAGVAR(link_all_deplibs, $1)=yes
+       _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+       runpath_var='LD_RUN_PATH'
+
+       case $cc_basename in
+          CC*)
+           _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+           _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~
+             '"$_LT_TAGVAR(old_archive_cmds, $1)"
+           _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~
+             '"$_LT_TAGVAR(reload_cmds, $1)"
+           ;;
+         *)
+           _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+           ;;
+       esac
+      ;;
+
+      tandem*)
+        case $cc_basename in
+          NCC*)
+           # NonStop-UX NCC 3.20
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+          *)
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+        esac
+        ;;
+
+      vxworks*)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+
+      *)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+    esac
+
+    AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
+    test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+    _LT_TAGVAR(GCC, $1)="$GXX"
+    _LT_TAGVAR(LD, $1)="$LD"
+
+    ## CAVEAT EMPTOR:
+    ## There is no encapsulation within the following macros, do not change
+    ## the running order or otherwise move them around unless you know exactly
+    ## what you are doing...
+    _LT_SYS_HIDDEN_LIBDEPS($1)
+    _LT_COMPILER_PIC($1)
+    _LT_COMPILER_C_O($1)
+    _LT_COMPILER_FILE_LOCKS($1)
+    _LT_LINKER_SHLIBS($1)
+    _LT_SYS_DYNAMIC_LINKER($1)
+    _LT_LINKER_HARDCODE_LIBPATH($1)
+
+    _LT_CONFIG($1)
+  fi # test -n "$compiler"
+
+  CC=$lt_save_CC
+  CFLAGS=$lt_save_CFLAGS
+  LDCXX=$LD
+  LD=$lt_save_LD
+  GCC=$lt_save_GCC
+  with_gnu_ld=$lt_save_with_gnu_ld
+  lt_cv_path_LDCXX=$lt_cv_path_LD
+  lt_cv_path_LD=$lt_save_path_LD
+  lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+  lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+fi # test "$_lt_caught_CXX_error" != yes
+
+AC_LANG_POP
+])# _LT_LANG_CXX_CONFIG
+
+
+# _LT_FUNC_STRIPNAME_CNF
+# ----------------------
+# func_stripname_cnf prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# 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).
+#
+# This function is identical to the (non-XSI) version of func_stripname,
+# except this one can be used by m4 code that may be executed by configure,
+# rather than the libtool script.
+m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl
+AC_REQUIRE([_LT_DECL_SED])
+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])
+func_stripname_cnf ()
+{
+  case ${2} in
+  .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+  *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+  esac
+} # func_stripname_cnf
+])# _LT_FUNC_STRIPNAME_CNF
+
+# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
+# ---------------------------------
+# Figure out "hidden" library dependencies from verbose
+# compiler output when linking a shared library.
+# Parse the compiler output and extract the necessary
+# objects, libraries and library flags.
+m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl
+# Dependencies to place before and after the object being linked:
+_LT_TAGVAR(predep_objects, $1)=
+_LT_TAGVAR(postdep_objects, $1)=
+_LT_TAGVAR(predeps, $1)=
+_LT_TAGVAR(postdeps, $1)=
+_LT_TAGVAR(compiler_lib_search_path, $1)=
+
+dnl we can't use the lt_simple_compile_test_code here,
+dnl because it contains code intended for an executable,
+dnl not a library.  It's possible we should let each
+dnl tag define a new lt_????_link_test_code variable,
+dnl but it's only used here...
+m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF
+int a;
+void foo (void) { a = 0; }
+_LT_EOF
+], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF
+class Foo
+{
+public:
+  Foo (void) { a = 0; }
+private:
+  int a;
+};
+_LT_EOF
+], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF
+      subroutine foo
+      implicit none
+      integer*4 a
+      a=0
+      return
+      end
+_LT_EOF
+], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF
+      subroutine foo
+      implicit none
+      integer a
+      a=0
+      return
+      end
+_LT_EOF
+], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF
+public class foo {
+  private int a;
+  public void bar (void) {
+    a = 0;
+  }
+};
+_LT_EOF
+])
+
+_lt_libdeps_save_CFLAGS=$CFLAGS
+case "$CC $CFLAGS " in #(
+*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
+*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
+esac
+
+dnl Parse the compiler output and extract the necessary
+dnl objects, libraries and library flags.
+if AC_TRY_EVAL(ac_compile); then
+  # Parse the compiler output and extract the necessary
+  # objects, libraries and library flags.
+
+  # Sentinel used to keep track of whether or not we are before
+  # the conftest object file.
+  pre_test_object_deps_done=no
+
+  for p in `eval "$output_verbose_link_cmd"`; do
+    case ${prev}${p} in
+
+    -L* | -R* | -l*)
+       # Some compilers place space between "-{L,R}" and the path.
+       # Remove the space.
+       if test $p = "-L" ||
+          test $p = "-R"; then
+        prev=$p
+        continue
+       fi
+
+       # Expand the sysroot to ease extracting the directories later.
+       if test -z "$prev"; then
+         case $p in
+         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
+         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
+         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
+         esac
+       fi
+       case $p in
+       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
+       esac
+       if test "$pre_test_object_deps_done" = no; then
+        case ${prev} in
+        -L | -R)
+          # Internal compiler library paths should come after those
+          # provided the user.  The postdeps already come after the
+          # user supplied libs so there is no need to process them.
+          if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
+            _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
+          else
+            _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
+          fi
+          ;;
+        # The "-l" case would never come before the object being
+        # linked, so don't bother handling this case.
+        esac
+       else
+        if test -z "$_LT_TAGVAR(postdeps, $1)"; then
+          _LT_TAGVAR(postdeps, $1)="${prev}${p}"
+        else
+          _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
+        fi
+       fi
+       prev=
+       ;;
+
+    *.lto.$objext) ;; # Ignore GCC LTO objects
+    *.$objext)
+       # This assumes that the test object file only shows up
+       # once in the compiler output.
+       if test "$p" = "conftest.$objext"; then
+        pre_test_object_deps_done=yes
+        continue
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+        if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
+          _LT_TAGVAR(predep_objects, $1)="$p"
+        else
+          _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
+        fi
+       else
+        if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
+          _LT_TAGVAR(postdep_objects, $1)="$p"
+        else
+          _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p"
+        fi
+       fi
+       ;;
+
+    *) ;; # Ignore the rest.
+
+    esac
+  done
+
+  # Clean up.
+  rm -f a.out a.exe
+else
+  echo "libtool.m4: error: problem compiling $1 test program"
+fi
+
+$RM -f confest.$objext
+CFLAGS=$_lt_libdeps_save_CFLAGS
+
+# PORTME: override above test on systems where it is broken
+m4_if([$1], [CXX],
+[case $host_os in
+interix[[3-9]]*)
+  # Interix 3.5 installs completely hosed .la files for C++, so rather than
+  # hack all around it, let's just trust "g++" to DTRT.
+  _LT_TAGVAR(predep_objects,$1)=
+  _LT_TAGVAR(postdep_objects,$1)=
+  _LT_TAGVAR(postdeps,$1)=
+  ;;
+
+linux*)
+  case `$CC -V 2>&1 | sed 5q` in
+  *Sun\ C*)
+    # Sun C++ 5.9
+
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
+
+    if test "$solaris_use_stlport4" != yes; then
+      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+    fi
+    ;;
+  esac
+  ;;
+
+solaris*)
+  case $cc_basename in
+  CC* | sunCC*)
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
+
+    # Adding this requires a known-good setup of shared libraries for
+    # Sun compiler versions before 5.6, else PIC objects from an old
+    # archive will be linked into the output, leading to subtle bugs.
+    if test "$solaris_use_stlport4" != yes; then
+      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+    fi
+    ;;
+  esac
+  ;;
+esac
+])
+
+case " $_LT_TAGVAR(postdeps, $1) " in
+*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+esac
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=
+if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
+fi
+_LT_TAGDECL([], [compiler_lib_search_dirs], [1],
+    [The directories searched by this compiler when creating a shared library])
+_LT_TAGDECL([], [predep_objects], [1],
+    [Dependencies to place before and after the objects being linked to
+    create a shared library])
+_LT_TAGDECL([], [postdep_objects], [1])
+_LT_TAGDECL([], [predeps], [1])
+_LT_TAGDECL([], [postdeps], [1])
+_LT_TAGDECL([], [compiler_lib_search_path], [1],
+    [The library search path used internally by the compiler when linking
+    a shared library])
+])# _LT_SYS_HIDDEN_LIBDEPS
+
+
+# _LT_LANG_F77_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a Fortran 77 compiler are
+# suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_F77_CONFIG],
+[AC_LANG_PUSH(Fortran 77)
+if test -z "$F77" || test "X$F77" = "Xno"; then
+  _lt_disable_F77=yes
+fi
+
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the F77 compiler isn't working.  Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_disable_F77" != yes; then
+  # Code to be used in simple compile tests
+  lt_simple_compile_test_code="\
+      subroutine t
+      return
+      end
+"
+
+  # Code to be used in simple link tests
+  lt_simple_link_test_code="\
+      program t
+      end
+"
+
+  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+  _LT_TAG_COMPILER
+
+  # save warnings/boilerplate of simple test code
+  _LT_COMPILER_BOILERPLATE
+  _LT_LINKER_BOILERPLATE
+
+  # Allow CC to be a program name with arguments.
+  lt_save_CC="$CC"
+  lt_save_GCC=$GCC
+  lt_save_CFLAGS=$CFLAGS
+  CC=${F77-"f77"}
+  CFLAGS=$FFLAGS
+  compiler=$CC
+  _LT_TAGVAR(compiler, $1)=$CC
+  _LT_CC_BASENAME([$compiler])
+  GCC=$G77
+  if test -n "$compiler"; then
+    AC_MSG_CHECKING([if libtool supports shared libraries])
+    AC_MSG_RESULT([$can_build_shared])
+
+    AC_MSG_CHECKING([whether to build shared libraries])
+    test "$can_build_shared" = "no" && enable_shared=no
+
+    # On AIX, shared libraries and static libraries use the same namespace, and
+    # are all built from PIC.
+    case $host_os in
+      aix3*)
+        test "$enable_shared" = yes && enable_static=no
+        if test -n "$RANLIB"; then
+          archive_cmds="$archive_cmds~\$RANLIB \$lib"
+          postinstall_cmds='$RANLIB $lib'
+        fi
+        ;;
+      aix[[4-9]]*)
+       if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+         test "$enable_shared" = yes && enable_static=no
+       fi
+        ;;
+    esac
+    AC_MSG_RESULT([$enable_shared])
+
+    AC_MSG_CHECKING([whether to build static libraries])
+    # Make sure either enable_shared or enable_static is yes.
+    test "$enable_shared" = yes || enable_static=yes
+    AC_MSG_RESULT([$enable_static])
+
+    _LT_TAGVAR(GCC, $1)="$G77"
+    _LT_TAGVAR(LD, $1)="$LD"
+
+    ## CAVEAT EMPTOR:
+    ## There is no encapsulation within the following macros, do not change
+    ## the running order or otherwise move them around unless you know exactly
+    ## what you are doing...
+    _LT_COMPILER_PIC($1)
+    _LT_COMPILER_C_O($1)
+    _LT_COMPILER_FILE_LOCKS($1)
+    _LT_LINKER_SHLIBS($1)
+    _LT_SYS_DYNAMIC_LINKER($1)
+    _LT_LINKER_HARDCODE_LIBPATH($1)
+
+    _LT_CONFIG($1)
+  fi # test -n "$compiler"
+
+  GCC=$lt_save_GCC
+  CC="$lt_save_CC"
+  CFLAGS="$lt_save_CFLAGS"
+fi # test "$_lt_disable_F77" != yes
+
+AC_LANG_POP
+])# _LT_LANG_F77_CONFIG
+
+
+# _LT_LANG_FC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for a Fortran compiler are
+# suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_FC_CONFIG],
+[AC_LANG_PUSH(Fortran)
+
+if test -z "$FC" || test "X$FC" = "Xno"; then
+  _lt_disable_FC=yes
+fi
+
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for fc test sources.
+ac_ext=${ac_fc_srcext-f}
+
+# Object file extension for compiled fc test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the FC compiler isn't working.  Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_disable_FC" != yes; then
+  # Code to be used in simple compile tests
+  lt_simple_compile_test_code="\
+      subroutine t
+      return
+      end
+"
+
+  # Code to be used in simple link tests
+  lt_simple_link_test_code="\
+      program t
+      end
+"
+
+  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+  _LT_TAG_COMPILER
+
+  # save warnings/boilerplate of simple test code
+  _LT_COMPILER_BOILERPLATE
+  _LT_LINKER_BOILERPLATE
+
+  # Allow CC to be a program name with arguments.
+  lt_save_CC="$CC"
+  lt_save_GCC=$GCC
+  lt_save_CFLAGS=$CFLAGS
+  CC=${FC-"f95"}
+  CFLAGS=$FCFLAGS
+  compiler=$CC
+  GCC=$ac_cv_fc_compiler_gnu
+
+  _LT_TAGVAR(compiler, $1)=$CC
+  _LT_CC_BASENAME([$compiler])
+
+  if test -n "$compiler"; then
+    AC_MSG_CHECKING([if libtool supports shared libraries])
+    AC_MSG_RESULT([$can_build_shared])
+
+    AC_MSG_CHECKING([whether to build shared libraries])
+    test "$can_build_shared" = "no" && enable_shared=no
+
+    # On AIX, shared libraries and static libraries use the same namespace, and
+    # are all built from PIC.
+    case $host_os in
+      aix3*)
+        test "$enable_shared" = yes && enable_static=no
+        if test -n "$RANLIB"; then
+          archive_cmds="$archive_cmds~\$RANLIB \$lib"
+          postinstall_cmds='$RANLIB $lib'
+        fi
+        ;;
+      aix[[4-9]]*)
+       if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+         test "$enable_shared" = yes && enable_static=no
+       fi
+        ;;
+    esac
+    AC_MSG_RESULT([$enable_shared])
+
+    AC_MSG_CHECKING([whether to build static libraries])
+    # Make sure either enable_shared or enable_static is yes.
+    test "$enable_shared" = yes || enable_static=yes
+    AC_MSG_RESULT([$enable_static])
+
+    _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu"
+    _LT_TAGVAR(LD, $1)="$LD"
+
+    ## CAVEAT EMPTOR:
+    ## There is no encapsulation within the following macros, do not change
+    ## the running order or otherwise move them around unless you know exactly
+    ## what you are doing...
+    _LT_SYS_HIDDEN_LIBDEPS($1)
+    _LT_COMPILER_PIC($1)
+    _LT_COMPILER_C_O($1)
+    _LT_COMPILER_FILE_LOCKS($1)
+    _LT_LINKER_SHLIBS($1)
+    _LT_SYS_DYNAMIC_LINKER($1)
+    _LT_LINKER_HARDCODE_LIBPATH($1)
+
+    _LT_CONFIG($1)
+  fi # test -n "$compiler"
+
+  GCC=$lt_save_GCC
+  CC=$lt_save_CC
+  CFLAGS=$lt_save_CFLAGS
+fi # test "$_lt_disable_FC" != yes
+
+AC_LANG_POP
+])# _LT_LANG_FC_CONFIG
+
+
+# _LT_LANG_GCJ_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for the GNU Java Compiler compiler
+# are suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_GCJ_CONFIG],
+[AC_REQUIRE([LT_PROG_GCJ])dnl
+AC_LANG_SAVE
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=yes
+CC=${GCJ-"gcj"}
+CFLAGS=$GCJFLAGS
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_TAGVAR(LD, $1)="$LD"
+_LT_CC_BASENAME([$compiler])
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+  _LT_COMPILER_NO_RTTI($1)
+  _LT_COMPILER_PIC($1)
+  _LT_COMPILER_C_O($1)
+  _LT_COMPILER_FILE_LOCKS($1)
+  _LT_LINKER_SHLIBS($1)
+  _LT_LINKER_HARDCODE_LIBPATH($1)
+
+  _LT_CONFIG($1)
+fi
+
+AC_LANG_RESTORE
+
+GCC=$lt_save_GCC
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+])# _LT_LANG_GCJ_CONFIG
+
+
+# _LT_LANG_RC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for the Windows resource compiler
+# are suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_RC_CONFIG],
+[AC_REQUIRE([LT_PROG_RC])dnl
+AC_LANG_SAVE
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=
+CC=${RC-"windres"}
+CFLAGS=
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+
+if test -n "$compiler"; then
+  :
+  _LT_CONFIG($1)
+fi
+
+GCC=$lt_save_GCC
+AC_LANG_RESTORE
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+])# _LT_LANG_RC_CONFIG
+
+
+# LT_PROG_GCJ
+# -----------
+AC_DEFUN([LT_PROG_GCJ],
+[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
+  [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
+    [AC_CHECK_TOOL(GCJ, gcj,)
+      test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+      AC_SUBST(GCJFLAGS)])])[]dnl
+])
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
+
+
+# LT_PROG_RC
+# ----------
+AC_DEFUN([LT_PROG_RC],
+[AC_CHECK_TOOL(RC, windres,)
+])
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_RC], [])
+
+
+# _LT_DECL_EGREP
+# --------------
+# If we don't have a new enough Autoconf to choose the best grep
+# available, choose the one first in the user's PATH.
+m4_defun([_LT_DECL_EGREP],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_REQUIRE([AC_PROG_FGREP])dnl
+test -z "$GREP" && GREP=grep
+_LT_DECL([], [GREP], [1], [A grep program that handles long lines])
+_LT_DECL([], [EGREP], [1], [An ERE matcher])
+_LT_DECL([], [FGREP], [1], [A literal string matcher])
+dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
+AC_SUBST([GREP])
+])
+
+
+# _LT_DECL_OBJDUMP
+# --------------
+# If we don't have a new enough Autoconf to choose the best objdump
+# available, choose the one first in the user's PATH.
+m4_defun([_LT_DECL_OBJDUMP],
+[AC_CHECK_TOOL(OBJDUMP, objdump, false)
+test -z "$OBJDUMP" && OBJDUMP=objdump
+_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
+AC_SUBST([OBJDUMP])
+])
+
+# _LT_DECL_DLLTOOL
+# ----------------
+# Ensure DLLTOOL variable is set.
+m4_defun([_LT_DECL_DLLTOOL],
+[AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+_LT_DECL([], [DLLTOOL], [1], [DLL creation program])
+AC_SUBST([DLLTOOL])
+])
+
+# _LT_DECL_SED
+# ------------
+# Check for a fully-functional sed program, that truncates
+# as few characters as possible.  Prefer GNU sed if found.
+m4_defun([_LT_DECL_SED],
+[AC_PROG_SED
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+_LT_DECL([], [SED], [1], [A sed program that does not truncate output])
+_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
+    [Sed that helps us avoid accidentally triggering echo(1) options like -n])
+])# _LT_DECL_SED
+
+m4_ifndef([AC_PROG_SED], [
+############################################################
+# NOTE: This macro has been submitted for inclusion into   #
+#  GNU Autoconf as AC_PROG_SED.  When it is available in   #
+#  a released version of Autoconf we should remove this    #
+#  macro and use it instead.                               #
+############################################################
+
+m4_defun([AC_PROG_SED],
+[AC_MSG_CHECKING([for a sed that does not truncate output])
+AC_CACHE_VAL(lt_cv_path_SED,
+[# Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for lt_ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+      fi
+    done
+  done
+done
+IFS=$as_save_IFS
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+  test ! -f $lt_ac_sed && continue
+  cat /dev/null > conftest.in
+  lt_ac_count=0
+  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+  # Check for GNU sed and select it if it is found.
+  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+    lt_cv_path_SED=$lt_ac_sed
+    break
+  fi
+  while true; do
+    cat conftest.in conftest.in >conftest.tmp
+    mv conftest.tmp conftest.in
+    cp conftest.in conftest.nl
+    echo >>conftest.nl
+    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+    cmp -s conftest.out conftest.nl || break
+    # 10000 chars as input seems more than enough
+    test $lt_ac_count -gt 10 && break
+    lt_ac_count=`expr $lt_ac_count + 1`
+    if test $lt_ac_count -gt $lt_ac_max; then
+      lt_ac_max=$lt_ac_count
+      lt_cv_path_SED=$lt_ac_sed
+    fi
+  done
+done
+])
+SED=$lt_cv_path_SED
+AC_SUBST([SED])
+AC_MSG_RESULT([$SED])
+])#AC_PROG_SED
+])#m4_ifndef
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_SED], [])
+
+
+# _LT_CHECK_SHELL_FEATURES
+# ------------------------
+# Find out whether the shell is Bourne or XSI compatible,
+# or has some other useful features.
+m4_defun([_LT_CHECK_SHELL_FEATURES],
+[AC_MSG_CHECKING([whether the shell understands some XSI constructs])
+# Try some XSI features
+xsi_shell=no
+( _lt_dummy="a/b/c"
+  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
+      = c,a/b,b/c, \
+    && eval 'test $(( 1 + 1 )) -eq 2 \
+    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+  && xsi_shell=yes
+AC_MSG_RESULT([$xsi_shell])
+_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
+
+AC_MSG_CHECKING([whether the shell understands "+="])
+lt_shell_append=no
+( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \
+    >/dev/null 2>&1 \
+  && lt_shell_append=yes
+AC_MSG_RESULT([$lt_shell_append])
+_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append'])
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  lt_unset=unset
+else
+  lt_unset=false
+fi
+_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl
+
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+  lt_SP2NL='tr \040 \012'
+  lt_NL2SP='tr \015\012 \040\040'
+  ;;
+ *) # EBCDIC based system
+  lt_SP2NL='tr \100 \n'
+  lt_NL2SP='tr \r\n \100\100'
+  ;;
+esac
+_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl
+_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
+])# _LT_CHECK_SHELL_FEATURES
+
+
+# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY)
+# ------------------------------------------------------
+# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and
+# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY.
+m4_defun([_LT_PROG_FUNCTION_REPLACE],
+[dnl {
+sed -e '/^$1 ()$/,/^} # $1 /c\
+$1 ()\
+{\
+m4_bpatsubsts([$2], [$], [\\], [^\([    ]\)], [\\\1])
+} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+])
+
+
+# _LT_PROG_REPLACE_SHELLFNS
+# -------------------------
+# Replace existing portable implementations of several shell functions with
+# equivalent extended shell implementations where those features are available..
+m4_defun([_LT_PROG_REPLACE_SHELLFNS],
+[if test x"$xsi_shell" = xyes; then
+  _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl
+    case ${1} in
+      */*) func_dirname_result="${1%/*}${2}" ;;
+      *  ) func_dirname_result="${3}" ;;
+    esac])
+
+  _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl
+    func_basename_result="${1##*/}"])
+
+  _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl
+    case ${1} in
+      */*) func_dirname_result="${1%/*}${2}" ;;
+      *  ) func_dirname_result="${3}" ;;
+    esac
+    func_basename_result="${1##*/}"])
+
+  _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl
+    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+    # positional parameters, so assign one to ordinary parameter first.
+    func_stripname_result=${3}
+    func_stripname_result=${func_stripname_result#"${1}"}
+    func_stripname_result=${func_stripname_result%"${2}"}])
+
+  _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl
+    func_split_long_opt_name=${1%%=*}
+    func_split_long_opt_arg=${1#*=}])
+
+  _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl
+    func_split_short_opt_arg=${1#??}
+    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}])
+
+  _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl
+    case ${1} in
+      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+      *)    func_lo2o_result=${1} ;;
+    esac])
+
+  _LT_PROG_FUNCTION_REPLACE([func_xform], [    func_xform_result=${1%.*}.lo])
+
+  _LT_PROG_FUNCTION_REPLACE([func_arith], [    func_arith_result=$(( $[*] ))])
+
+  _LT_PROG_FUNCTION_REPLACE([func_len], [    func_len_result=${#1}])
+fi
+
+if test x"$lt_shell_append" = xyes; then
+  _LT_PROG_FUNCTION_REPLACE([func_append], [    eval "${1}+=\\${2}"])
+
+  _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl
+    func_quote_for_eval "${2}"
+dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \
+    eval "${1}+=\\\\ \\$func_quote_for_eval_result"])
+
+  # Save a `func_append' function call where possible by direct use of '+='
+  sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
+    && mv -f "$cfgfile.tmp" "$cfgfile" \
+      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+  test 0 -eq $? || _lt_function_replace_fail=:
+else
+  # Save a `func_append' function call even when '+=' is not available
+  sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
+    && mv -f "$cfgfile.tmp" "$cfgfile" \
+      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+  test 0 -eq $? || _lt_function_replace_fail=:
+fi
+
+if test x"$_lt_function_replace_fail" = x":"; then
+  AC_MSG_WARN([Unable to substitute extended shell functions in $ofile])
+fi
+])
+
+# _LT_PATH_CONVERSION_FUNCTIONS
+# -----------------------------
+# Determine which file name conversion functions should be used by
+# func_to_host_file (and, implicitly, by func_to_host_path).  These are needed
+# for certain cross-compile configurations and native mingw.
+m4_defun([_LT_PATH_CONVERSION_FUNCTIONS],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_MSG_CHECKING([how to convert $build file names to $host format])
+AC_CACHE_VAL(lt_cv_to_host_file_cmd,
+[case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
+        ;;
+    esac
+    ;;
+  *-*-cygwin* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_noop
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
+        ;;
+    esac
+    ;;
+  * ) # unhandled hosts (and "normal" native builds)
+    lt_cv_to_host_file_cmd=func_convert_file_noop
+    ;;
+esac
+])
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+AC_MSG_RESULT([$lt_cv_to_host_file_cmd])
+_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd],
+         [0], [convert $build file names to $host format])dnl
+
+AC_MSG_CHECKING([how to convert $build file names to toolchain format])
+AC_CACHE_VAL(lt_cv_to_tool_file_cmd,
+[#assume ordinary cross tools, or native build.
+lt_cv_to_tool_file_cmd=func_convert_file_noop
+case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
+        ;;
+    esac
+    ;;
+esac
+])
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+AC_MSG_RESULT([$lt_cv_to_tool_file_cmd])
+_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd],
+         [0], [convert $build files to toolchain format])dnl
+])# _LT_PATH_CONVERSION_FUNCTIONS
diff --git a/m4/localcharset.m4 b/m4/localcharset.m4
new file mode 100644 (file)
index 0000000..6801ca9
--- /dev/null
@@ -0,0 +1,17 @@
+# localcharset.m4 serial 7
+dnl Copyright (C) 2002, 2004, 2006, 2009-2011 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.
+
+AC_DEFUN([gl_LOCALCHARSET],
+[
+  dnl Prerequisites of lib/localcharset.c.
+  AC_REQUIRE([AM_LANGINFO_CODESET])
+  AC_REQUIRE([gl_FCNTL_O_FLAGS])
+  AC_CHECK_DECLS_ONCE([getc_unlocked])
+
+  dnl Prerequisites of the lib/Makefile.am snippet.
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  AC_REQUIRE([gl_GLIBC21])
+])
diff --git a/m4/locale-fr.m4 b/m4/locale-fr.m4
new file mode 100644 (file)
index 0000000..3f4f954
--- /dev/null
@@ -0,0 +1,246 @@
+# locale-fr.m4 serial 13
+dnl Copyright (C) 2003, 2005-2011 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 Determine the name of a french locale with traditional encoding.
+AC_DEFUN([gt_LOCALE_FR],
+[
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  AC_REQUIRE([AM_LANGINFO_CODESET])
+  AC_CACHE_CHECK([for a traditional french locale], [gt_cv_locale_fr], [
+    AC_LANG_CONFTEST([AC_LANG_SOURCE([
+changequote(,)dnl
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+  /* Check whether the given locale name is recognized by the system.  */
+#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
+  /* On native Win32, setlocale(category, "") looks at the system settings,
+     not at the environment variables.  Also, when an encoding suffix such
+     as ".65001" or ".54936" is speficied, it succeeds but sets the LC_CTYPE
+     category of the locale to "C".  */
+  if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
+      || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
+    return 1;
+#else
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+#endif
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.
+     On MirBSD 10, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "UTF-8".  */
+#if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0
+        || strcmp (cs, "UTF-8") == 0)
+      return 1;
+  }
+#endif
+#ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+  /* Check whether in the abbreviation of the second month, the second
+     character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is only
+     one byte long. This excludes the UTF-8 encoding.  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+  if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1;
+  /* Check whether the decimal separator is a comma.
+     On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+     are nl_langinfo(RADIXCHAR) are both ".".  */
+  if (localeconv () ->decimal_point[0] != ',') return 1;
+  return 0;
+}
+changequote([,])dnl
+      ])])
+    if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
+      case "$host_os" in
+        # Handle native Windows specially, because there setlocale() interprets
+        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "fr" or "fra" as "French" or "French_France.1252",
+        # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
+        # "ja" as "Japanese" or "Japanese_Japan.932",
+        # and similar.
+        mingw*)
+          # Test for the native Win32 locale name.
+          if (LC_ALL=French_France.1252 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr=French_France.1252
+          else
+            # None found.
+            gt_cv_locale_fr=none
+          fi
+          ;;
+        *)
+          # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+          # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+          # configure script would override the LC_ALL setting. Likewise for
+          # LC_CTYPE, which is also set at the beginning of the configure script.
+          # Test for the usual locale name.
+          if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr=fr_FR
+          else
+            # Test for the locale name with explicit encoding suffix.
+            if (LC_ALL=fr_FR.ISO-8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+              gt_cv_locale_fr=fr_FR.ISO-8859-1
+            else
+              # Test for the AIX, OSF/1, FreeBSD, NetBSD, OpenBSD locale name.
+              if (LC_ALL=fr_FR.ISO8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                gt_cv_locale_fr=fr_FR.ISO8859-1
+              else
+                # Test for the HP-UX locale name.
+                if (LC_ALL=fr_FR.iso88591 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                  gt_cv_locale_fr=fr_FR.iso88591
+                else
+                  # Test for the Solaris 7 locale name.
+                  if (LC_ALL=fr LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                    gt_cv_locale_fr=fr
+                  else
+                    # None found.
+                    gt_cv_locale_fr=none
+                  fi
+                fi
+              fi
+            fi
+          fi
+          ;;
+      esac
+    fi
+    rm -fr conftest*
+  ])
+  LOCALE_FR=$gt_cv_locale_fr
+  AC_SUBST([LOCALE_FR])
+])
+
+dnl Determine the name of a french locale with UTF-8 encoding.
+AC_DEFUN([gt_LOCALE_FR_UTF8],
+[
+  AC_REQUIRE([AM_LANGINFO_CODESET])
+  AC_CACHE_CHECK([for a french Unicode locale], [gt_cv_locale_fr_utf8], [
+    AC_LANG_CONFTEST([AC_LANG_SOURCE([
+changequote(,)dnl
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+  /* On BeOS and Haiku, locales are not implemented in libc.  Rather, libintl
+     imitates locale dependent behaviour by looking at the environment
+     variables, and all locales use the UTF-8 encoding.  */
+#if !(defined __BEOS__ || defined __HAIKU__)
+  /* Check whether the given locale name is recognized by the system.  */
+# if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
+  /* On native Win32, setlocale(category, "") looks at the system settings,
+     not at the environment variables.  Also, when an encoding suffix such
+     as ".65001" or ".54936" is speficied, it succeeds but sets the LC_CTYPE
+     category of the locale to "C".  */
+  if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
+      || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
+    return 1;
+# else
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+# endif
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.  */
+# if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+      return 1;
+  }
+# endif
+# ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+# endif
+  /* Check whether in the abbreviation of the second month, the second
+     character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is
+     two bytes long, with UTF-8 encoding.  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+  if (strftime (buf, sizeof (buf), "%b", &t) < 4
+      || buf[1] != (char) 0xc3 || buf[2] != (char) 0xa9 || buf[3] != 'v')
+    return 1;
+#endif
+  /* Check whether the decimal separator is a comma.
+     On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+     are nl_langinfo(RADIXCHAR) are both ".".  */
+  if (localeconv () ->decimal_point[0] != ',') return 1;
+  return 0;
+}
+changequote([,])dnl
+      ])])
+    if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
+      case "$host_os" in
+        # Handle native Windows specially, because there setlocale() interprets
+        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "fr" or "fra" as "French" or "French_France.1252",
+        # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
+        # "ja" as "Japanese" or "Japanese_Japan.932",
+        # and similar.
+        mingw*)
+          # Test for the hypothetical native Win32 locale name.
+          if (LC_ALL=French_France.65001 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr_utf8=French_France.65001
+          else
+            # None found.
+            gt_cv_locale_fr_utf8=none
+          fi
+          ;;
+        *)
+          # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+          # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+          # configure script would override the LC_ALL setting. Likewise for
+          # LC_CTYPE, which is also set at the beginning of the configure script.
+          # Test for the usual locale name.
+          if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr_utf8=fr_FR
+          else
+            # Test for the locale name with explicit encoding suffix.
+            if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+              gt_cv_locale_fr_utf8=fr_FR.UTF-8
+            else
+              # Test for the Solaris 7 locale name.
+              if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                gt_cv_locale_fr_utf8=fr.UTF-8
+              else
+                # None found.
+                gt_cv_locale_fr_utf8=none
+              fi
+            fi
+          fi
+          ;;
+      esac
+    fi
+    rm -fr conftest*
+  ])
+  LOCALE_FR_UTF8=$gt_cv_locale_fr_utf8
+  AC_SUBST([LOCALE_FR_UTF8])
+])
diff --git a/m4/locale-ja.m4 b/m4/locale-ja.m4
new file mode 100644 (file)
index 0000000..d44c2c8
--- /dev/null
@@ -0,0 +1,135 @@
+# locale-ja.m4 serial 9
+dnl Copyright (C) 2003, 2005-2011 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 Determine the name of a japanese locale with EUC-JP encoding.
+AC_DEFUN([gt_LOCALE_JA],
+[
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  AC_REQUIRE([AM_LANGINFO_CODESET])
+  AC_CACHE_CHECK([for a traditional japanese locale], [gt_cv_locale_ja], [
+    AC_LANG_CONFTEST([AC_LANG_SOURCE([
+changequote(,)dnl
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main ()
+{
+  const char *p;
+  /* Check whether the given locale name is recognized by the system.  */
+#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
+  /* On native Win32, setlocale(category, "") looks at the system settings,
+     not at the environment variables.  Also, when an encoding suffix such
+     as ".65001" or ".54936" is speficied, it succeeds but sets the LC_CTYPE
+     category of the locale to "C".  */
+  if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
+      || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
+    return 1;
+#else
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+#endif
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.
+     On MirBSD 10, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "UTF-8".  */
+#if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0
+        || strcmp (cs, "UTF-8") == 0)
+      return 1;
+  }
+#endif
+#ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+  /* Check whether MB_CUR_MAX is > 1.  This excludes the dysfunctional locales
+     on Cygwin 1.5.x.  */
+  if (MB_CUR_MAX == 1)
+    return 1;
+  /* Check whether in a month name, no byte in the range 0x80..0x9F occurs.
+     This excludes the UTF-8 encoding (except on MirBSD).  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+  if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1;
+  for (p = buf; *p != '\0'; p++)
+    if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0)
+      return 1;
+  return 0;
+}
+changequote([,])dnl
+      ])])
+    if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
+      case "$host_os" in
+        # Handle native Windows specially, because there setlocale() interprets
+        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "fr" or "fra" as "French" or "French_France.1252",
+        # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
+        # "ja" as "Japanese" or "Japanese_Japan.932",
+        # and similar.
+        mingw*)
+          # Note that on native Win32, the Japanese locale is Japanese_Japan.932,
+          # and CP932 is very different from EUC-JP, so we cannot use it here.
+          gt_cv_locale_ja=none
+          ;;
+        *)
+          # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+          # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+          # configure script would override the LC_ALL setting. Likewise for
+          # LC_CTYPE, which is also set at the beginning of the configure script.
+          # Test for the AIX locale name.
+          if (LC_ALL=ja_JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_ja=ja_JP
+          else
+            # Test for the locale name with explicit encoding suffix.
+            if (LC_ALL=ja_JP.EUC-JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+              gt_cv_locale_ja=ja_JP.EUC-JP
+            else
+              # Test for the HP-UX, OSF/1, NetBSD locale name.
+              if (LC_ALL=ja_JP.eucJP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                gt_cv_locale_ja=ja_JP.eucJP
+              else
+                # Test for the IRIX, FreeBSD locale name.
+                if (LC_ALL=ja_JP.EUC LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                  gt_cv_locale_ja=ja_JP.EUC
+                else
+                  # Test for the Solaris 7 locale name.
+                  if (LC_ALL=ja LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                    gt_cv_locale_ja=ja
+                  else
+                    # Special test for NetBSD 1.6.
+                    if test -f /usr/share/locale/ja_JP.eucJP/LC_CTYPE; then
+                      gt_cv_locale_ja=ja_JP.eucJP
+                    else
+                      # None found.
+                      gt_cv_locale_ja=none
+                    fi
+                  fi
+                fi
+              fi
+            fi
+          fi
+          ;;
+      esac
+    fi
+    rm -fr conftest*
+  ])
+  LOCALE_JA=$gt_cv_locale_ja
+  AC_SUBST([LOCALE_JA])
+])
diff --git a/m4/locale-tr.m4 b/m4/locale-tr.m4
new file mode 100644 (file)
index 0000000..19ded1b
--- /dev/null
@@ -0,0 +1,127 @@
+# locale-tr.m4 serial 7
+dnl Copyright (C) 2003, 2005-2011 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 Determine the name of a turkish locale with UTF-8 encoding.
+AC_DEFUN([gt_LOCALE_TR_UTF8],
+[
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  AC_REQUIRE([AM_LANGINFO_CODESET])
+  AC_CACHE_CHECK([for a turkish Unicode locale], [gt_cv_locale_tr_utf8], [
+    AC_LANG_CONFTEST([AC_LANG_SOURCE([
+changequote(,)dnl
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+  /* On BeOS, locales are not implemented in libc.  Rather, libintl
+     imitates locale dependent behaviour by looking at the environment
+     variables, and all locales use the UTF-8 encoding.  But BeOS does not
+     implement the Turkish upper-/lowercase mappings.  Therefore, let this
+     program return 1 on BeOS.  */
+  /* Check whether the given locale name is recognized by the system.  */
+#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
+  /* On native Win32, setlocale(category, "") looks at the system settings,
+     not at the environment variables.  Also, when an encoding suffix such
+     as ".65001" or ".54936" is speficied, it succeeds but sets the LC_CTYPE
+     category of the locale to "C".  */
+  if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
+      || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
+    return 1;
+#else
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+#endif
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the tr_TR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.  */
+#if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+      return 1;
+  }
+#endif
+#ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+  /* Check whether in the abbreviation of the eighth month, the second
+     character (should be U+011F: LATIN SMALL LETTER G WITH BREVE) is
+     two bytes long, with UTF-8 encoding.  */
+  t.tm_year = 1992 - 1900; t.tm_mon = 8 - 1; t.tm_mday = 19;
+  if (strftime (buf, sizeof (buf), "%b", &t) < 4
+      || buf[1] != (char) 0xc4 || buf[2] != (char) 0x9f)
+    return 1;
+  /* Check whether the upper-/lowercase mappings are as expected for
+     Turkish.  */
+  if (towupper ('i') != 0x0130 || towlower (0x0130) != 'i'
+      || towupper(0x0131) != 'I' || towlower ('I') != 0x0131)
+    return 1;
+  return 0;
+}
+changequote([,])dnl
+      ])])
+    if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
+      case "$host_os" in
+        # Handle native Windows specially, because there setlocale() interprets
+        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "fr" or "fra" as "French" or "French_France.1252",
+        # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
+        # "ja" as "Japanese" or "Japanese_Japan.932",
+        # and similar.
+        mingw*)
+          # Test for the hypothetical native Win32 locale name.
+          if (LC_ALL=Turkish_Turkey.65001 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_tr_utf8=Turkish_Turkey.65001
+          else
+            # None found.
+            gt_cv_locale_tr_utf8=none
+          fi
+          ;;
+        *)
+          # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+          # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+          # configure script would override the LC_ALL setting. Likewise for
+          # LC_CTYPE, which is also set at the beginning of the configure script.
+          # Test for the usual locale name.
+          if (LC_ALL=tr_TR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_tr_utf8=tr_TR
+          else
+            # Test for the locale name with explicit encoding suffix.
+            if (LC_ALL=tr_TR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+              gt_cv_locale_tr_utf8=tr_TR.UTF-8
+            else
+              # Test for the Solaris 7 locale name.
+              if (LC_ALL=tr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                gt_cv_locale_tr_utf8=tr.UTF-8
+              else
+                # None found.
+                gt_cv_locale_tr_utf8=none
+              fi
+            fi
+          fi
+          ;;
+      esac
+    else
+      gt_cv_locale_tr_utf8=none
+    fi
+    rm -fr conftest*
+  ])
+  LOCALE_TR_UTF8=$gt_cv_locale_tr_utf8
+  AC_SUBST([LOCALE_TR_UTF8])
+])
diff --git a/m4/locale-zh.m4 b/m4/locale-zh.m4
new file mode 100644 (file)
index 0000000..e03f91f
--- /dev/null
@@ -0,0 +1,124 @@
+# locale-zh.m4 serial 8
+dnl Copyright (C) 2003, 2005-2011 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 Determine the name of a chinese locale with GB18030 encoding.
+AC_DEFUN([gt_LOCALE_ZH_CN],
+[
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  AC_REQUIRE([AM_LANGINFO_CODESET])
+  AC_CACHE_CHECK([for a transitional chinese locale], [gt_cv_locale_zh_CN], [
+    AC_LANG_CONFTEST([AC_LANG_SOURCE([
+changequote(,)dnl
+#include <locale.h>
+#include <stdlib.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main ()
+{
+  const char *p;
+  /* Check whether the given locale name is recognized by the system.  */
+#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
+  /* On native Win32, setlocale(category, "") looks at the system settings,
+     not at the environment variables.  Also, when an encoding suffix such
+     as ".65001" or ".54936" is speficied, it succeeds but sets the LC_CTYPE
+     category of the locale to "C".  */
+  if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
+      || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
+    return 1;
+#else
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+#endif
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.
+     On MirBSD 10, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "UTF-8".  */
+#if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0
+        || strcmp (cs, "UTF-8") == 0)
+      return 1;
+  }
+#endif
+#ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+  /* Check whether in a month name, no byte in the range 0x80..0x9F occurs.
+     This excludes the UTF-8 encoding (except on MirBSD).  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+  if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1;
+  for (p = buf; *p != '\0'; p++)
+    if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0)
+      return 1;
+  /* Check whether a typical GB18030 multibyte sequence is recognized as a
+     single wide character.  This excludes the GB2312 and GBK encodings.  */
+  if (mblen ("\203\062\332\066", 5) != 4)
+    return 1;
+  return 0;
+}
+changequote([,])dnl
+      ])])
+    if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
+      case "$host_os" in
+        # Handle native Windows specially, because there setlocale() interprets
+        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "fr" or "fra" as "French" or "French_France.1252",
+        # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
+        # "ja" as "Japanese" or "Japanese_Japan.932",
+        # and similar.
+        mingw*)
+          # Test for the hypothetical native Win32 locale name.
+          if (LC_ALL=Chinese_China.54936 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_zh_CN=Chinese_China.54936
+          else
+            # None found.
+            gt_cv_locale_zh_CN=none
+          fi
+          ;;
+        *)
+          # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+          # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+          # configure script would override the LC_ALL setting. Likewise for
+          # LC_CTYPE, which is also set at the beginning of the configure script.
+          # Test for the locale name without encoding suffix.
+          if (LC_ALL=zh_CN LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_zh_CN=zh_CN
+          else
+            # Test for the locale name with explicit encoding suffix.
+            if (LC_ALL=zh_CN.GB18030 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+              gt_cv_locale_zh_CN=zh_CN.GB18030
+            else
+              # None found.
+              gt_cv_locale_zh_CN=none
+            fi
+          fi
+          ;;
+      esac
+    else
+      # If there was a link error, due to mblen(), the system is so old that
+      # it certainly doesn't have a chinese locale.
+      gt_cv_locale_zh_CN=none
+    fi
+    rm -fr conftest*
+  ])
+  LOCALE_ZH_CN=$gt_cv_locale_zh_CN
+  AC_SUBST([LOCALE_ZH_CN])
+])
diff --git a/m4/locale_h.m4 b/m4/locale_h.m4
new file mode 100644 (file)
index 0000000..e77a303
--- /dev/null
@@ -0,0 +1,88 @@
+# locale_h.m4 serial 14
+dnl Copyright (C) 2007, 2009-2011 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.
+
+AC_DEFUN([gl_LOCALE_H],
+[
+  dnl Use AC_REQUIRE here, so that the default behavior below is expanded
+  dnl once only, before all statements that occur in other macros.
+  AC_REQUIRE([gl_LOCALE_H_DEFAULTS])
+
+  dnl Persuade glibc <locale.h> to define locale_t.
+  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+
+  dnl If <stddef.h> is replaced, then <locale.h> must also be replaced.
+  AC_REQUIRE([gl_STDDEF_H])
+
+  AC_CACHE_CHECK([whether locale.h conforms to POSIX:2001],
+    [gl_cv_header_locale_h_posix2001],
+    [AC_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[#include <locale.h>
+            int x = LC_MESSAGES;]],
+          [[]])],
+       [gl_cv_header_locale_h_posix2001=yes],
+       [gl_cv_header_locale_h_posix2001=no])])
+
+  dnl Check for <xlocale.h>.
+  AC_CHECK_HEADERS_ONCE([xlocale.h])
+  if test $ac_cv_header_xlocale_h = yes; then
+    HAVE_XLOCALE_H=1
+    dnl Check whether use of locale_t requires inclusion of <xlocale.h>,
+    dnl e.g. on MacOS X 10.5. If <locale.h> does not define locale_t by
+    dnl itself, we assume that <xlocale.h> will do so.
+    AC_CACHE_CHECK([whether locale.h defines locale_t],
+      [gl_cv_header_locale_has_locale_t],
+      [AC_COMPILE_IFELSE(
+         [AC_LANG_PROGRAM(
+            [[#include <locale.h>
+              locale_t x;]],
+            [[]])],
+         [gl_cv_header_locale_has_locale_t=yes],
+         [gl_cv_header_locale_has_locale_t=no])
+      ])
+    if test $gl_cv_header_locale_has_locale_t = yes; then
+      gl_cv_header_locale_h_needs_xlocale_h=no
+    else
+      gl_cv_header_locale_h_needs_xlocale_h=yes
+    fi
+  else
+    HAVE_XLOCALE_H=0
+    gl_cv_header_locale_h_needs_xlocale_h=no
+  fi
+  AC_SUBST([HAVE_XLOCALE_H])
+
+  dnl <locale.h> is always overridden, because of GNULIB_POSIXCHECK.
+  gl_NEXT_HEADERS([locale.h])
+
+  dnl Check for declarations of anything we want to poison if the
+  dnl corresponding gnulib module is not in use.
+  gl_WARN_ON_USE_PREPARE([[#include <locale.h>
+/* Some systems provide declarations in a non-standard header.  */
+#if HAVE_XLOCALE_H
+# include <xlocale.h>
+#endif
+    ]],
+    [setlocale duplocale])
+])
+
+AC_DEFUN([gl_LOCALE_MODULE_INDICATOR],
+[
+  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+  AC_REQUIRE([gl_LOCALE_H_DEFAULTS])
+  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+  dnl Define it also as a C macro, for the benefit of the unit tests.
+  gl_MODULE_INDICATOR_FOR_TESTS([$1])
+])
+
+AC_DEFUN([gl_LOCALE_H_DEFAULTS],
+[
+  GNULIB_SETLOCALE=0;  AC_SUBST([GNULIB_SETLOCALE])
+  GNULIB_DUPLOCALE=0;  AC_SUBST([GNULIB_DUPLOCALE])
+  dnl Assume proper GNU behavior unless another module says otherwise.
+  HAVE_DUPLOCALE=1;    AC_SUBST([HAVE_DUPLOCALE])
+  REPLACE_SETLOCALE=0; AC_SUBST([REPLACE_SETLOCALE])
+  REPLACE_DUPLOCALE=0; AC_SUBST([REPLACE_DUPLOCALE])
+])
diff --git a/m4/localename.m4 b/m4/localename.m4
new file mode 100644 (file)
index 0000000..926ada6
--- /dev/null
@@ -0,0 +1,12 @@
+# localename.m4 serial 2
+dnl Copyright (C) 2007, 2009-2011 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.
+
+AC_DEFUN([gl_LOCALENAME],
+[
+  AC_REQUIRE([gt_LC_MESSAGES])
+  AC_REQUIRE([gt_INTL_MACOSX])
+  AC_CHECK_FUNCS([setlocale uselocale])
+])
diff --git a/m4/lock.m4 b/m4/lock.m4
new file mode 100644 (file)
index 0000000..9111933
--- /dev/null
@@ -0,0 +1,316 @@
+# lock.m4 serial 7 (gettext-0.17)
+dnl Copyright (C) 2005-2007 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 Tests for a multithreading library to be used.
+dnl Defines at most one of the macros USE_POSIX_THREADS, USE_SOLARIS_THREADS,
+dnl USE_PTH_THREADS, USE_WIN32_THREADS
+dnl Sets the variables LIBTHREAD and LTLIBTHREAD to the linker options for use
+dnl in a Makefile (LIBTHREAD for use without libtool, LTLIBTHREAD for use with
+dnl libtool).
+dnl Sets the variables LIBMULTITHREAD and LTLIBMULTITHREAD similarly, for
+dnl programs that really need multithread functionality. The difference
+dnl between LIBTHREAD and LIBMULTITHREAD is that on platforms supporting weak
+dnl symbols, typically LIBTHREAD="" whereas LIBMULTITHREAD="-lpthread".
+dnl Adds to CPPFLAGS the flag -D_REENTRANT or -D_THREAD_SAFE if needed for
+dnl multithread-safe programs.
+
+AC_DEFUN([gl_LOCK_EARLY],
+[
+  AC_REQUIRE([gl_LOCK_EARLY_BODY])
+])
+
+dnl The guts of gl_LOCK_EARLY. Needs to be expanded only once.
+
+AC_DEFUN([gl_LOCK_EARLY_BODY],
+[
+  dnl Ordering constraints: This macro modifies CPPFLAGS in a way that
+  dnl influences the result of the autoconf tests that test for *_unlocked
+  dnl declarations, on AIX 5 at least. Therefore it must come early.
+  AC_BEFORE([$0], [gl_FUNC_GLIBC_UNLOCKED_IO])dnl
+  AC_BEFORE([$0], [gl_ARGP])dnl
+
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  dnl _GNU_SOURCE is needed for pthread_rwlock_t on glibc systems.
+  dnl AC_USE_SYSTEM_EXTENSIONS was introduced in autoconf 2.60 and obsoletes
+  dnl AC_GNU_SOURCE.
+  m4_ifdef([AC_USE_SYSTEM_EXTENSIONS],
+    [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])],
+    [AC_REQUIRE([AC_GNU_SOURCE])])
+  dnl Check for multithreading.
+  AC_ARG_ENABLE(threads,
+AC_HELP_STRING([--enable-threads={posix|solaris|pth|win32}], [specify multithreading API])
+AC_HELP_STRING([--disable-threads], [build without multithread safety]),
+    [gl_use_threads=$enableval],
+    [case "$host_os" in
+       dnl Disable multithreading by default on OSF/1, because it interferes
+       dnl with fork()/exec(): When msgexec is linked with -lpthread, its child
+       dnl process gets an endless segmentation fault inside execvp().
+       osf*) gl_use_threads=no ;;
+       *)    gl_use_threads=yes ;;
+     esac
+    ])
+  if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
+    # For using <pthread.h>:
+    case "$host_os" in
+      osf*)
+        # On OSF/1, the compiler needs the flag -D_REENTRANT so that it
+        # groks <pthread.h>. cc also understands the flag -pthread, but
+        # we don't use it because 1. gcc-2.95 doesn't understand -pthread,
+        # 2. putting a flag into CPPFLAGS that has an effect on the linker
+        # causes the AC_TRY_LINK test below to succeed unexpectedly,
+        # leading to wrong values of LIBTHREAD and LTLIBTHREAD.
+        CPPFLAGS="$CPPFLAGS -D_REENTRANT"
+        ;;
+    esac
+    # Some systems optimize for single-threaded programs by default, and
+    # need special flags to disable these optimizations. For example, the
+    # definition of 'errno' in <errno.h>.
+    case "$host_os" in
+      aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;;
+      solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;;
+    esac
+  fi
+])
+
+dnl The guts of gl_LOCK. Needs to be expanded only once.
+
+AC_DEFUN([gl_LOCK_BODY],
+[
+  AC_REQUIRE([gl_LOCK_EARLY_BODY])
+  gl_threads_api=none
+  LIBTHREAD=
+  LTLIBTHREAD=
+  LIBMULTITHREAD=
+  LTLIBMULTITHREAD=
+  if test "$gl_use_threads" != no; then
+    dnl Check whether the compiler and linker support weak declarations.
+    AC_MSG_CHECKING([whether imported symbols can be declared weak])
+    gl_have_weak=no
+    AC_TRY_LINK([extern void xyzzy ();
+#pragma weak xyzzy], [xyzzy();], [gl_have_weak=yes])
+    AC_MSG_RESULT([$gl_have_weak])
+    if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
+      # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that
+      # it groks <pthread.h>. It's added above, in gl_LOCK_EARLY_BODY.
+      AC_CHECK_HEADER(pthread.h, gl_have_pthread_h=yes, gl_have_pthread_h=no)
+      if test "$gl_have_pthread_h" = yes; then
+        # Other possible tests:
+        #   -lpthreads (FSU threads, PCthreads)
+        #   -lgthreads
+        gl_have_pthread=
+        # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist
+        # in libc. IRIX 6.5 has the first one in both libc and libpthread, but
+        # the second one only in libpthread, and lock.c needs it.
+        AC_TRY_LINK([#include <pthread.h>],
+          [pthread_mutex_lock((pthread_mutex_t*)0);
+           pthread_mutexattr_init((pthread_mutexattr_t*)0);],
+          [gl_have_pthread=yes])
+        # Test for libpthread by looking for pthread_kill. (Not pthread_self,
+        # since it is defined as a macro on OSF/1.)
+        if test -n "$gl_have_pthread"; then
+          # The program links fine without libpthread. But it may actually
+          # need to link with libpthread in order to create multiple threads.
+          AC_CHECK_LIB(pthread, pthread_kill,
+            [LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread
+             # On Solaris and HP-UX, most pthread functions exist also in libc.
+             # Therefore pthread_in_use() needs to actually try to create a
+             # thread: pthread_create from libc will fail, whereas
+             # pthread_create will actually create a thread.
+             case "$host_os" in
+               solaris* | hpux*)
+                 AC_DEFINE([PTHREAD_IN_USE_DETECTION_HARD], 1,
+                   [Define if the pthread_in_use() detection is hard.])
+             esac
+            ])
+        else
+          # Some library is needed. Try libpthread and libc_r.
+          AC_CHECK_LIB(pthread, pthread_kill,
+            [gl_have_pthread=yes
+             LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread
+             LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread])
+          if test -z "$gl_have_pthread"; then
+            # For FreeBSD 4.
+            AC_CHECK_LIB(c_r, pthread_kill,
+              [gl_have_pthread=yes
+               LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r
+               LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r])
+          fi
+        fi
+        if test -n "$gl_have_pthread"; then
+          gl_threads_api=posix
+          AC_DEFINE([USE_POSIX_THREADS], 1,
+            [Define if the POSIX multithreading library can be used.])
+          if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
+            if test $gl_have_weak = yes; then
+              AC_DEFINE([USE_POSIX_THREADS_WEAK], 1,
+                [Define if references to the POSIX multithreading library should be made weak.])
+              LIBTHREAD=
+              LTLIBTHREAD=
+            fi
+          fi
+          # OSF/1 4.0 and MacOS X 10.1 lack the pthread_rwlock_t type and the
+          # pthread_rwlock_* functions.
+          AC_CHECK_TYPE([pthread_rwlock_t],
+            [AC_DEFINE([HAVE_PTHREAD_RWLOCK], 1,
+               [Define if the POSIX multithreading library has read/write locks.])],
+            [],
+            [#include <pthread.h>])
+          # glibc defines PTHREAD_MUTEX_RECURSIVE as enum, not as a macro.
+          AC_TRY_COMPILE([#include <pthread.h>],
+            [#if __FreeBSD__ == 4
+error "No, in FreeBSD 4.0 recursive mutexes actually don't work."
+#else
+int x = (int)PTHREAD_MUTEX_RECURSIVE;
+return !x;
+#endif],
+            [AC_DEFINE([HAVE_PTHREAD_MUTEX_RECURSIVE], 1,
+               [Define if the <pthread.h> defines PTHREAD_MUTEX_RECURSIVE.])])
+        fi
+      fi
+    fi
+    if test -z "$gl_have_pthread"; then
+      if test "$gl_use_threads" = yes || test "$gl_use_threads" = solaris; then
+        gl_have_solaristhread=
+        gl_save_LIBS="$LIBS"
+        LIBS="$LIBS -lthread"
+        AC_TRY_LINK([#include <thread.h>
+#include <synch.h>],
+          [thr_self();],
+          [gl_have_solaristhread=yes])
+        LIBS="$gl_save_LIBS"
+        if test -n "$gl_have_solaristhread"; then
+          gl_threads_api=solaris
+          LIBTHREAD=-lthread
+          LTLIBTHREAD=-lthread
+          LIBMULTITHREAD="$LIBTHREAD"
+          LTLIBMULTITHREAD="$LTLIBTHREAD"
+          AC_DEFINE([USE_SOLARIS_THREADS], 1,
+            [Define if the old Solaris multithreading library can be used.])
+          if test $gl_have_weak = yes; then
+            AC_DEFINE([USE_SOLARIS_THREADS_WEAK], 1,
+              [Define if references to the old Solaris multithreading library should be made weak.])
+            LIBTHREAD=
+            LTLIBTHREAD=
+          fi
+        fi
+      fi
+    fi
+    if test "$gl_use_threads" = pth; then
+      gl_save_CPPFLAGS="$CPPFLAGS"
+      AC_LIB_LINKFLAGS(pth)
+      gl_have_pth=
+      gl_save_LIBS="$LIBS"
+      LIBS="$LIBS -lpth"
+      AC_TRY_LINK([#include <pth.h>], [pth_self();], gl_have_pth=yes)
+      LIBS="$gl_save_LIBS"
+      if test -n "$gl_have_pth"; then
+        gl_threads_api=pth
+        LIBTHREAD="$LIBPTH"
+        LTLIBTHREAD="$LTLIBPTH"
+        LIBMULTITHREAD="$LIBTHREAD"
+        LTLIBMULTITHREAD="$LTLIBTHREAD"
+        AC_DEFINE([USE_PTH_THREADS], 1,
+          [Define if the GNU Pth multithreading library can be used.])
+        if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
+          if test $gl_have_weak = yes; then
+            AC_DEFINE([USE_PTH_THREADS_WEAK], 1,
+              [Define if references to the GNU Pth multithreading library should be made weak.])
+            LIBTHREAD=
+            LTLIBTHREAD=
+          fi
+        fi
+      else
+        CPPFLAGS="$gl_save_CPPFLAGS"
+      fi
+    fi
+    if test -z "$gl_have_pthread"; then
+      if test "$gl_use_threads" = yes || test "$gl_use_threads" = win32; then
+        if { case "$host_os" in
+               mingw*) true;;
+               *) false;;
+             esac
+           }; then
+          gl_threads_api=win32
+          AC_DEFINE([USE_WIN32_THREADS], 1,
+            [Define if the Win32 multithreading API can be used.])
+        fi
+      fi
+    fi
+  fi
+  AC_MSG_CHECKING([for multithread API to use])
+  AC_MSG_RESULT([$gl_threads_api])
+  AC_SUBST(LIBTHREAD)
+  AC_SUBST(LTLIBTHREAD)
+  AC_SUBST(LIBMULTITHREAD)
+  AC_SUBST(LTLIBMULTITHREAD)
+])
+
+AC_DEFUN([gl_LOCK],
+[
+  AC_REQUIRE([gl_LOCK_EARLY])
+  AC_REQUIRE([gl_LOCK_BODY])
+  gl_PREREQ_LOCK
+])
+
+# Prerequisites of lib/lock.c.
+AC_DEFUN([gl_PREREQ_LOCK], [
+  AC_REQUIRE([AC_C_INLINE])
+])
+
+dnl Survey of platforms:
+dnl
+dnl Platform          Available   Compiler    Supports   test-lock
+dnl                   flavours    option      weak       result
+dnl ---------------   ---------   ---------   --------   ---------
+dnl Linux 2.4/glibc   posix       -lpthread       Y      OK
+dnl
+dnl GNU Hurd/glibc    posix
+dnl
+dnl FreeBSD 5.3       posix       -lc_r           Y
+dnl                   posix       -lkse ?         Y
+dnl                   posix       -lpthread ?     Y
+dnl                   posix       -lthr           Y
+dnl
+dnl FreeBSD 5.2       posix       -lc_r           Y
+dnl                   posix       -lkse           Y
+dnl                   posix       -lthr           Y
+dnl
+dnl FreeBSD 4.0,4.10  posix       -lc_r           Y      OK
+dnl
+dnl NetBSD 1.6        --
+dnl
+dnl OpenBSD 3.4       posix       -lpthread       Y      OK
+dnl
+dnl MacOS X 10.[123]  posix       -lpthread       Y      OK
+dnl
+dnl Solaris 7,8,9     posix       -lpthread       Y      Sol 7,8: 0.0; Sol 9: OK
+dnl                   solaris     -lthread        Y      Sol 7,8: 0.0; Sol 9: OK
+dnl
+dnl HP-UX 11          posix       -lpthread       N (cc) OK
+dnl                                               Y (gcc)
+dnl
+dnl IRIX 6.5          posix       -lpthread       Y      0.5
+dnl
+dnl AIX 4.3,5.1       posix       -lpthread       N      AIX 4: 0.5; AIX 5: OK
+dnl
+dnl OSF/1 4.0,5.1     posix       -pthread (cc)   N      OK
+dnl                               -lpthread (gcc) Y
+dnl
+dnl Cygwin            posix       -lpthread       Y      OK
+dnl
+dnl Any of the above  pth         -lpth                  0.0
+dnl
+dnl Mingw             win32                       N      OK
+dnl
+dnl BeOS 5            --
+dnl
+dnl The test-lock result shows what happens if in test-lock.c EXPLICIT_YIELD is
+dnl turned off:
+dnl   OK if all three tests terminate OK,
+dnl   0.5 if the first test terminates OK but the second one loops endlessly,
+dnl   0.0 if the first test already loops endlessly.
diff --git a/m4/long-options.m4 b/m4/long-options.m4
new file mode 100644 (file)
index 0000000..5e8df5e
--- /dev/null
@@ -0,0 +1,13 @@
+# long-options.m4 serial 5
+dnl Copyright (C) 2002-2003, 2005-2006, 2009-2011 Free Software Foundation,
+dnl 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.
+
+AC_DEFUN([gl_LONG_OPTIONS],
+[
+  AC_LIBOBJ([long-options])
+
+  dnl Prerequisites of lib/long-options.c.
+])
diff --git a/m4/longlong.m4 b/m4/longlong.m4
new file mode 100644 (file)
index 0000000..aed816c
--- /dev/null
@@ -0,0 +1,113 @@
+# longlong.m4 serial 16
+dnl Copyright (C) 1999-2007, 2009-2011 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 Paul Eggert.
+
+# Define HAVE_LONG_LONG_INT if 'long long int' works.
+# This fixes a bug in Autoconf 2.61, and can be faster
+# than what's in Autoconf 2.62 through 2.68.
+
+# Note: If the type 'long long int' exists but is only 32 bits large
+# (as on some very old compilers), HAVE_LONG_LONG_INT will not be
+# defined. In this case you can treat 'long long int' like 'long int'.
+
+AC_DEFUN([AC_TYPE_LONG_LONG_INT],
+[
+  AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
+  AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int],
+     [ac_cv_type_long_long_int=yes
+      if test "x${ac_cv_prog_cc_c99-no}" = xno; then
+        ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int
+        if test $ac_cv_type_long_long_int = yes; then
+          dnl Catch a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004.
+          dnl If cross compiling, assume the bug is not important, since
+          dnl nobody cross compiles for this platform as far as we know.
+          AC_RUN_IFELSE(
+            [AC_LANG_PROGRAM(
+               [[@%:@include <limits.h>
+                 @%:@ifndef LLONG_MAX
+                 @%:@ define HALF \
+                          (1LL << (sizeof (long long int) * CHAR_BIT - 2))
+                 @%:@ define LLONG_MAX (HALF - 1 + HALF)
+                 @%:@endif]],
+               [[long long int n = 1;
+                 int i;
+                 for (i = 0; ; i++)
+                   {
+                     long long int m = n << i;
+                     if (m >> i != n)
+                       return 1;
+                     if (LLONG_MAX / 2 < m)
+                       break;
+                   }
+                 return 0;]])],
+            [],
+            [ac_cv_type_long_long_int=no],
+            [:])
+        fi
+      fi])
+  if test $ac_cv_type_long_long_int = yes; then
+    AC_DEFINE([HAVE_LONG_LONG_INT], [1],
+      [Define to 1 if the system has the type `long long int'.])
+  fi
+])
+
+# Define HAVE_UNSIGNED_LONG_LONG_INT if 'unsigned long long int' works.
+# This fixes a bug in Autoconf 2.61, and can be faster
+# than what's in Autoconf 2.62 through 2.68.
+
+# Note: If the type 'unsigned long long int' exists but is only 32 bits
+# large (as on some very old compilers), AC_TYPE_UNSIGNED_LONG_LONG_INT
+# will not be defined. In this case you can treat 'unsigned long long int'
+# like 'unsigned long int'.
+
+AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT],
+[
+  AC_CACHE_CHECK([for unsigned long long int],
+    [ac_cv_type_unsigned_long_long_int],
+    [ac_cv_type_unsigned_long_long_int=yes
+     if test "x${ac_cv_prog_cc_c99-no}" = xno; then
+       AC_LINK_IFELSE(
+         [_AC_TYPE_LONG_LONG_SNIPPET],
+         [],
+         [ac_cv_type_unsigned_long_long_int=no])
+     fi])
+  if test $ac_cv_type_unsigned_long_long_int = yes; then
+    AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], [1],
+      [Define to 1 if the system has the type `unsigned long long int'.])
+  fi
+])
+
+# Expands to a C program that can be used to test for simultaneous support
+# of 'long long' and 'unsigned long long'. We don't want to say that
+# 'long long' is available if 'unsigned long long' is not, or vice versa,
+# because too many programs rely on the symmetry between signed and unsigned
+# integer types (excluding 'bool').
+AC_DEFUN([_AC_TYPE_LONG_LONG_SNIPPET],
+[
+  AC_LANG_PROGRAM(
+    [[/* For now, do not test the preprocessor; as of 2007 there are too many
+         implementations with broken preprocessors.  Perhaps this can
+         be revisited in 2012.  In the meantime, code should not expect
+         #if to work with literals wider than 32 bits.  */
+      /* Test literals.  */
+      long long int ll = 9223372036854775807ll;
+      long long int nll = -9223372036854775807LL;
+      unsigned long long int ull = 18446744073709551615ULL;
+      /* Test constant expressions.   */
+      typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
+                     ? 1 : -1)];
+      typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
+                     ? 1 : -1)];
+      int i = 63;]],
+    [[/* Test availability of runtime routines for shift and division.  */
+      long long int llmax = 9223372036854775807ll;
+      unsigned long long int ullmax = 18446744073709551615ull;
+      return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
+              | (llmax / ll) | (llmax % ll)
+              | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
+              | (ullmax / ull) | (ullmax % ull));]])
+])
diff --git a/m4/lseek.m4 b/m4/lseek.m4
new file mode 100644 (file)
index 0000000..f6452f6
--- /dev/null
@@ -0,0 +1,49 @@
+# lseek.m4 serial 6
+dnl Copyright (C) 2007, 2009-2011 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.
+
+AC_DEFUN([gl_FUNC_LSEEK],
+[
+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+  AC_REQUIRE([AC_PROG_CC])
+  AC_CACHE_CHECK([whether lseek detects pipes], [gl_cv_func_lseek_pipe],
+    [if test $cross_compiling = no; then
+       AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+#include <sys/types.h> /* for off_t */
+#include <stdio.h> /* for SEEK_CUR */
+#include <unistd.h>]], [[
+  /* Exit with success only if stdin is seekable.  */
+  return lseek (0, (off_t)0, SEEK_CUR) < 0;
+]])],
+         [if test -s conftest$ac_exeext \
+             && ./conftest$ac_exeext < conftest.$ac_ext \
+             && test 1 = "`echo hi \
+               | { ./conftest$ac_exeext; echo $?; cat >/dev/null; }`"; then
+            gl_cv_func_lseek_pipe=yes
+          else
+            gl_cv_func_lseek_pipe=no
+          fi],
+         [gl_cv_func_lseek_pipe=no])
+     else
+       AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#if ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) || defined __BEOS__
+/* mingw and BeOS mistakenly return 0 when trying to seek on pipes.  */
+  Choke me.
+#endif]])],
+         [gl_cv_func_lseek_pipe=yes], [gl_cv_func_lseek_pipe=no])
+     fi])
+  if test $gl_cv_func_lseek_pipe = no; then
+    gl_REPLACE_LSEEK
+  fi
+])
+
+AC_DEFUN([gl_REPLACE_LSEEK],
+[
+  AC_LIBOBJ([lseek])
+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+  REPLACE_LSEEK=1
+  AC_DEFINE([LSEEK_PIPE_BROKEN], [1],
+            [Define to 1 if lseek does not detect pipes.])
+])
diff --git a/m4/lstat.m4 b/m4/lstat.m4
new file mode 100644 (file)
index 0000000..b9b22a6
--- /dev/null
@@ -0,0 +1,69 @@
+# serial 21
+
+# Copyright (C) 1997-2001, 2003-2011 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.
+
+dnl From Jim Meyering.
+
+AC_DEFUN([gl_FUNC_LSTAT],
+[
+  AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
+  dnl If lstat does not exist, the replacement <sys/stat.h> does
+  dnl "#define lstat stat", and lstat.c is a no-op.
+  AC_CHECK_FUNCS_ONCE([lstat])
+  if test $ac_cv_func_lstat = yes; then
+    AC_REQUIRE([AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK])
+    if test $ac_cv_func_lstat_dereferences_slashed_symlink = no; then
+      dnl Note: AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK does AC_LIBOBJ([lstat]).
+      REPLACE_LSTAT=1
+    fi
+    # Prerequisites of lib/lstat.c.
+    AC_REQUIRE([AC_C_INLINE])
+  else
+    HAVE_LSTAT=0
+  fi
+])
+
+# Redefine AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK, because it is no longer
+# maintained in Autoconf.
+AC_DEFUN([AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK],
+[
+  AC_CACHE_CHECK([whether lstat correctly handles trailing slash],
+    [ac_cv_func_lstat_dereferences_slashed_symlink],
+    [rm -f conftest.sym conftest.file
+     echo >conftest.file
+     if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then
+       AC_RUN_IFELSE(
+         [AC_LANG_PROGRAM(
+            [AC_INCLUDES_DEFAULT],
+            [[struct stat sbuf;
+              /* Linux will dereference the symlink and fail, as required by
+                 POSIX.  That is better in the sense that it means we will not
+                 have to compile and use the lstat wrapper.  */
+              return lstat ("conftest.sym/", &sbuf) == 0;
+            ]])],
+         [ac_cv_func_lstat_dereferences_slashed_symlink=yes],
+         [ac_cv_func_lstat_dereferences_slashed_symlink=no],
+         [# When cross-compiling, be pessimistic so we will end up using the
+          # replacement version of lstat that checks for trailing slashes and
+          # calls lstat a second time when necessary.
+          ac_cv_func_lstat_dereferences_slashed_symlink=no
+         ])
+     else
+       # If the 'ln -s' command failed, then we probably don't even
+       # have an lstat function.
+       ac_cv_func_lstat_dereferences_slashed_symlink=no
+     fi
+     rm -f conftest.sym conftest.file
+    ])
+  test $ac_cv_func_lstat_dereferences_slashed_symlink = yes &&
+    AC_DEFINE_UNQUOTED([LSTAT_FOLLOWS_SLASHED_SYMLINK], [1],
+      [Define to 1 if `lstat' dereferences a symlink specified
+       with a trailing slash.])
+  if test "x$ac_cv_func_lstat_dereferences_slashed_symlink" = xno; then
+    AC_LIBOBJ([lstat])
+  fi
+])
diff --git a/m4/ltoptions.m4 b/m4/ltoptions.m4
new file mode 100644 (file)
index 0000000..17cfd51
--- /dev/null
@@ -0,0 +1,369 @@
+# Helper functions for option handling.                    -*- Autoconf -*-
+#
+#   Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation,
+#   Inc.
+#   Written by Gary V. Vaughan, 2004
+#
+# 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.
+
+# serial 7 ltoptions.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
+
+
+# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
+# ------------------------------------------
+m4_define([_LT_MANGLE_OPTION],
+[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
+
+
+# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
+# ---------------------------------------
+# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
+# matching handler defined, dispatch to it.  Other OPTION-NAMEs are
+# saved as a flag.
+m4_define([_LT_SET_OPTION],
+[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
+m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
+        _LT_MANGLE_DEFUN([$1], [$2]),
+    [m4_warning([Unknown $1 option `$2'])])[]dnl
+])
+
+
+# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
+# ------------------------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+m4_define([_LT_IF_OPTION],
+[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
+
+
+# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
+# -------------------------------------------------------
+# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
+# are set.
+m4_define([_LT_UNLESS_OPTIONS],
+[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+           [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
+                     [m4_define([$0_found])])])[]dnl
+m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
+])[]dnl
+])
+
+
+# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
+# ----------------------------------------
+# OPTION-LIST is a space-separated list of Libtool options associated
+# with MACRO-NAME.  If any OPTION has a matching handler declared with
+# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
+# the unknown option and exit.
+m4_defun([_LT_SET_OPTIONS],
+[# Set options
+m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+    [_LT_SET_OPTION([$1], _LT_Option)])
+
+m4_if([$1],[LT_INIT],[
+  dnl
+  dnl Simply set some default values (i.e off) if boolean options were not
+  dnl specified:
+  _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
+  ])
+  _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
+  ])
+  dnl
+  dnl If no reference was made to various pairs of opposing options, then
+  dnl we run the default mode handler for the pair.  For example, if neither
+  dnl `shared' nor `disable-shared' was passed, we enable building of shared
+  dnl archives by default:
+  _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
+  _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
+  _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
+  _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
+                  [_LT_ENABLE_FAST_INSTALL])
+  ])
+])# _LT_SET_OPTIONS
+
+
+## --------------------------------- ##
+## Macros to handle LT_INIT options. ##
+## --------------------------------- ##
+
+# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
+# -----------------------------------------
+m4_define([_LT_MANGLE_DEFUN],
+[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
+
+
+# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
+# -----------------------------------------------
+m4_define([LT_OPTION_DEFINE],
+[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
+])# LT_OPTION_DEFINE
+
+
+# dlopen
+# ------
+LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
+])
+
+AU_DEFUN([AC_LIBTOOL_DLOPEN],
+[_LT_SET_OPTION([LT_INIT], [dlopen])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `dlopen' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
+
+
+# win32-dll
+# ---------
+# Declare package support for building win32 dll's.
+LT_OPTION_DEFINE([LT_INIT], [win32-dll],
+[enable_win32_dll=yes
+
+case $host in
+*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
+  AC_CHECK_TOOL(AS, as, false)
+  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+  AC_CHECK_TOOL(OBJDUMP, objdump, false)
+  ;;
+esac
+
+test -z "$AS" && AS=as
+_LT_DECL([], [AS],      [1], [Assembler program])dnl
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
+])# win32-dll
+
+AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+_LT_SET_OPTION([LT_INIT], [win32-dll])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `win32-dll' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
+
+
+# _LT_ENABLE_SHARED([DEFAULT])
+# ----------------------------
+# implement the --enable-shared flag, and supports the `shared' and
+# `disable-shared' LT_INIT options.
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_SHARED],
+[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([shared],
+    [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
+       [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_shared=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
+
+    _LT_DECL([build_libtool_libs], [enable_shared], [0],
+       [Whether or not to build shared libraries])
+])# _LT_ENABLE_SHARED
+
+LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
+
+# Old names:
+AC_DEFUN([AC_ENABLE_SHARED],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
+])
+
+AC_DEFUN([AC_DISABLE_SHARED],
+[_LT_SET_OPTION([LT_INIT], [disable-shared])
+])
+
+AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
+AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_ENABLE_SHARED], [])
+dnl AC_DEFUN([AM_DISABLE_SHARED], [])
+
+
+
+# _LT_ENABLE_STATIC([DEFAULT])
+# ----------------------------
+# implement the --enable-static flag, and support the `static' and
+# `disable-static' LT_INIT options.
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_STATIC],
+[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([static],
+    [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
+       [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
+    *)
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_static=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
+
+    _LT_DECL([build_old_libs], [enable_static], [0],
+       [Whether or not to build static libraries])
+])# _LT_ENABLE_STATIC
+
+LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
+
+# Old names:
+AC_DEFUN([AC_ENABLE_STATIC],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
+])
+
+AC_DEFUN([AC_DISABLE_STATIC],
+[_LT_SET_OPTION([LT_INIT], [disable-static])
+])
+
+AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
+AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_ENABLE_STATIC], [])
+dnl AC_DEFUN([AM_DISABLE_STATIC], [])
+
+
+
+# _LT_ENABLE_FAST_INSTALL([DEFAULT])
+# ----------------------------------
+# implement the --enable-fast-install flag, and support the `fast-install'
+# and `disable-fast-install' LT_INIT options.
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_FAST_INSTALL],
+[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([fast-install],
+    [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
+    [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_fast_install=yes ;;
+    no) enable_fast_install=no ;;
+    *)
+      enable_fast_install=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_fast_install=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
+
+_LT_DECL([fast_install], [enable_fast_install], [0],
+        [Whether or not to optimize for fast installation])dnl
+])# _LT_ENABLE_FAST_INSTALL
+
+LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
+
+# Old names:
+AU_DEFUN([AC_ENABLE_FAST_INSTALL],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `fast-install' option into LT_INIT's first parameter.])
+])
+
+AU_DEFUN([AC_DISABLE_FAST_INSTALL],
+[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `disable-fast-install' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
+dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
+
+
+# _LT_WITH_PIC([MODE])
+# --------------------
+# implement the --with-pic flag, and support the `pic-only' and `no-pic'
+# LT_INIT options.
+# MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
+m4_define([_LT_WITH_PIC],
+[AC_ARG_WITH([pic],
+    [AS_HELP_STRING([--with-pic],
+       [try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
+    [pic_mode="$withval"],
+    [pic_mode=default])
+
+test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
+
+_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
+])# _LT_WITH_PIC
+
+LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
+
+# Old name:
+AU_DEFUN([AC_LIBTOOL_PICMODE],
+[_LT_SET_OPTION([LT_INIT], [pic-only])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `pic-only' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
+
+## ----------------- ##
+## LTDL_INIT Options ##
+## ----------------- ##
+
+m4_define([_LTDL_MODE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
+                [m4_define([_LTDL_MODE], [nonrecursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [recursive],
+                [m4_define([_LTDL_MODE], [recursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [subproject],
+                [m4_define([_LTDL_MODE], [subproject])])
+
+m4_define([_LTDL_TYPE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [installable],
+                [m4_define([_LTDL_TYPE], [installable])])
+LT_OPTION_DEFINE([LTDL_INIT], [convenience],
+                [m4_define([_LTDL_TYPE], [convenience])])
diff --git a/m4/ltsugar.m4 b/m4/ltsugar.m4
new file mode 100644 (file)
index 0000000..9000a05
--- /dev/null
@@ -0,0 +1,123 @@
+# ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
+#
+# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+# Written by Gary V. Vaughan, 2004
+#
+# 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.
+
+# serial 6 ltsugar.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
+
+
+# lt_join(SEP, ARG1, [ARG2...])
+# -----------------------------
+# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
+# associated separator.
+# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
+# versions in m4sugar had bugs.
+m4_define([lt_join],
+[m4_if([$#], [1], [],
+       [$#], [2], [[$2]],
+       [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
+m4_define([_lt_join],
+[m4_if([$#$2], [2], [],
+       [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
+
+
+# lt_car(LIST)
+# lt_cdr(LIST)
+# ------------
+# Manipulate m4 lists.
+# These macros are necessary as long as will still need to support
+# Autoconf-2.59 which quotes differently.
+m4_define([lt_car], [[$1]])
+m4_define([lt_cdr],
+[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
+       [$#], 1, [],
+       [m4_dquote(m4_shift($@))])])
+m4_define([lt_unquote], $1)
+
+
+# lt_append(MACRO-NAME, STRING, [SEPARATOR])
+# ------------------------------------------
+# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
+# Note that neither SEPARATOR nor STRING are expanded; they are appended
+# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
+# No SEPARATOR is output if MACRO-NAME was previously undefined (different
+# than defined and empty).
+#
+# This macro is needed until we can rely on Autoconf 2.62, since earlier
+# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
+m4_define([lt_append],
+[m4_define([$1],
+          m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
+
+
+
+# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
+# ----------------------------------------------------------
+# Produce a SEP delimited list of all paired combinations of elements of
+# PREFIX-LIST with SUFFIX1 through SUFFIXn.  Each element of the list
+# has the form PREFIXmINFIXSUFFIXn.
+# Needed until we can rely on m4_combine added in Autoconf 2.62.
+m4_define([lt_combine],
+[m4_if(m4_eval([$# > 3]), [1],
+       [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
+[[m4_foreach([_Lt_prefix], [$2],
+            [m4_foreach([_Lt_suffix],
+               ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
+       [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
+
+
+# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
+# -----------------------------------------------------------------------
+# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
+# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
+m4_define([lt_if_append_uniq],
+[m4_ifdef([$1],
+         [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
+                [lt_append([$1], [$2], [$3])$4],
+                [$5])],
+         [lt_append([$1], [$2], [$3])$4])])
+
+
+# lt_dict_add(DICT, KEY, VALUE)
+# -----------------------------
+m4_define([lt_dict_add],
+[m4_define([$1($2)], [$3])])
+
+
+# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
+# --------------------------------------------
+m4_define([lt_dict_add_subkey],
+[m4_define([$1($2:$3)], [$4])])
+
+
+# lt_dict_fetch(DICT, KEY, [SUBKEY])
+# ----------------------------------
+m4_define([lt_dict_fetch],
+[m4_ifval([$3],
+       m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
+    m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
+
+
+# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
+# -----------------------------------------------------------------
+m4_define([lt_if_dict_fetch],
+[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
+       [$5],
+    [$6])])
+
+
+# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
+# --------------------------------------------------------------
+m4_define([lt_dict_filter],
+[m4_if([$5], [], [],
+  [lt_join(m4_quote(m4_default([$4], [[, ]])),
+           lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
+                     [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
+])
diff --git a/m4/ltversion.m4 b/m4/ltversion.m4
new file mode 100644 (file)
index 0000000..9c7b5d4
--- /dev/null
@@ -0,0 +1,23 @@
+# ltversion.m4 -- version numbers                      -*- Autoconf -*-
+#
+#   Copyright (C) 2004 Free Software Foundation, Inc.
+#   Written by Scott James Remnant, 2004
+#
+# 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.
+
+# @configure_input@
+
+# serial 3293 ltversion.m4
+# This file is part of GNU Libtool
+
+m4_define([LT_PACKAGE_VERSION], [2.4])
+m4_define([LT_PACKAGE_REVISION], [1.3293])
+
+AC_DEFUN([LTVERSION_VERSION],
+[macro_version='2.4'
+macro_revision='1.3293'
+_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
+_LT_DECL(, macro_revision, 0)
+])
diff --git a/m4/lt~obsolete.m4 b/m4/lt~obsolete.m4
new file mode 100644 (file)
index 0000000..c573da9
--- /dev/null
@@ -0,0 +1,98 @@
+# lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
+#
+#   Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
+#   Written by Scott James Remnant, 2004.
+#
+# 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.
+
+# serial 5 lt~obsolete.m4
+
+# These exist entirely to fool aclocal when bootstrapping libtool.
+#
+# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
+# which have later been changed to m4_define as they aren't part of the
+# exported API, or moved to Autoconf or Automake where they belong.
+#
+# The trouble is, aclocal is a bit thick.  It'll see the old AC_DEFUN
+# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
+# using a macro with the same name in our local m4/libtool.m4 it'll
+# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
+# and doesn't know about Autoconf macros at all.)
+#
+# So we provide this file, which has a silly filename so it's always
+# included after everything else.  This provides aclocal with the
+# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
+# because those macros already exist, or will be overwritten later.
+# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. 
+#
+# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
+# Yes, that means every name once taken will need to remain here until
+# we give up compatibility with versions before 1.7, at which point
+# we need to keep only those names which we still refer to.
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
+
+m4_ifndef([AC_LIBTOOL_LINKER_OPTION],  [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
+m4_ifndef([AC_PROG_EGREP],             [AC_DEFUN([AC_PROG_EGREP])])
+m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH],        [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
+m4_ifndef([_LT_AC_SHELL_INIT],         [AC_DEFUN([_LT_AC_SHELL_INIT])])
+m4_ifndef([_LT_AC_SYS_LIBPATH_AIX],    [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
+m4_ifndef([_LT_PROG_LTMAIN],           [AC_DEFUN([_LT_PROG_LTMAIN])])
+m4_ifndef([_LT_AC_TAGVAR],             [AC_DEFUN([_LT_AC_TAGVAR])])
+m4_ifndef([AC_LTDL_ENABLE_INSTALL],    [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
+m4_ifndef([AC_LTDL_PREOPEN],           [AC_DEFUN([AC_LTDL_PREOPEN])])
+m4_ifndef([_LT_AC_SYS_COMPILER],       [AC_DEFUN([_LT_AC_SYS_COMPILER])])
+m4_ifndef([_LT_AC_LOCK],               [AC_DEFUN([_LT_AC_LOCK])])
+m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE],        [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
+m4_ifndef([_LT_AC_TRY_DLOPEN_SELF],    [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
+m4_ifndef([AC_LIBTOOL_PROG_CC_C_O],    [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
+m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
+m4_ifndef([AC_LIBTOOL_OBJDIR],         [AC_DEFUN([AC_LIBTOOL_OBJDIR])])
+m4_ifndef([AC_LTDL_OBJDIR],            [AC_DEFUN([AC_LTDL_OBJDIR])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
+m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP],  [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
+m4_ifndef([AC_PATH_MAGIC],             [AC_DEFUN([AC_PATH_MAGIC])])
+m4_ifndef([AC_PROG_LD_GNU],            [AC_DEFUN([AC_PROG_LD_GNU])])
+m4_ifndef([AC_PROG_LD_RELOAD_FLAG],    [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
+m4_ifndef([AC_DEPLIBS_CHECK_METHOD],   [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
+m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
+m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
+m4_ifndef([LT_AC_PROG_EGREP],          [AC_DEFUN([LT_AC_PROG_EGREP])])
+m4_ifndef([LT_AC_PROG_SED],            [AC_DEFUN([LT_AC_PROG_SED])])
+m4_ifndef([_LT_CC_BASENAME],           [AC_DEFUN([_LT_CC_BASENAME])])
+m4_ifndef([_LT_COMPILER_BOILERPLATE],  [AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
+m4_ifndef([_LT_LINKER_BOILERPLATE],    [AC_DEFUN([_LT_LINKER_BOILERPLATE])])
+m4_ifndef([_AC_PROG_LIBTOOL],          [AC_DEFUN([_AC_PROG_LIBTOOL])])
+m4_ifndef([AC_LIBTOOL_SETUP],          [AC_DEFUN([AC_LIBTOOL_SETUP])])
+m4_ifndef([_LT_AC_CHECK_DLFCN],                [AC_DEFUN([_LT_AC_CHECK_DLFCN])])
+m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER],     [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
+m4_ifndef([_LT_AC_TAGCONFIG],          [AC_DEFUN([_LT_AC_TAGCONFIG])])
+m4_ifndef([AC_DISABLE_FAST_INSTALL],   [AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
+m4_ifndef([_LT_AC_LANG_CXX],           [AC_DEFUN([_LT_AC_LANG_CXX])])
+m4_ifndef([_LT_AC_LANG_F77],           [AC_DEFUN([_LT_AC_LANG_F77])])
+m4_ifndef([_LT_AC_LANG_GCJ],           [AC_DEFUN([_LT_AC_LANG_GCJ])])
+m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG],  [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
+m4_ifndef([_LT_AC_LANG_C_CONFIG],      [AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG],        [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
+m4_ifndef([_LT_AC_LANG_CXX_CONFIG],    [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG],        [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
+m4_ifndef([_LT_AC_LANG_F77_CONFIG],    [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG],        [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
+m4_ifndef([_LT_AC_LANG_GCJ_CONFIG],    [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
+m4_ifndef([_LT_AC_LANG_RC_CONFIG],     [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
+m4_ifndef([AC_LIBTOOL_CONFIG],         [AC_DEFUN([AC_LIBTOOL_CONFIG])])
+m4_ifndef([_LT_AC_FILE_LTDLL_C],       [AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
+m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS],        [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])])
+m4_ifndef([_LT_AC_PROG_CXXCPP],                [AC_DEFUN([_LT_AC_PROG_CXXCPP])])
+m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS],        [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])])
+m4_ifndef([_LT_PROG_ECHO_BACKSLASH],   [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])])
+m4_ifndef([_LT_PROG_F77],              [AC_DEFUN([_LT_PROG_F77])])
+m4_ifndef([_LT_PROG_FC],               [AC_DEFUN([_LT_PROG_FC])])
+m4_ifndef([_LT_PROG_CXX],              [AC_DEFUN([_LT_PROG_CXX])])
diff --git a/m4/malloc.m4 b/m4/malloc.m4
new file mode 100644 (file)
index 0000000..8094444
--- /dev/null
@@ -0,0 +1,66 @@
+# malloc.m4 serial 12
+dnl Copyright (C) 2007, 2009-2011 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.
+
+# gl_FUNC_MALLOC_GNU
+# ------------------
+# Test whether 'malloc (0)' is handled like in GNU libc, and replace malloc if
+# it is not.
+AC_DEFUN([gl_FUNC_MALLOC_GNU],
+[
+  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+  dnl _AC_FUNC_MALLOC_IF is defined in Autoconf.
+  _AC_FUNC_MALLOC_IF(
+    [AC_DEFINE([HAVE_MALLOC_GNU], [1],
+               [Define to 1 if your system has a GNU libc compatible 'malloc'
+                function, and to 0 otherwise.])],
+    [AC_DEFINE([HAVE_MALLOC_GNU], [0])
+     gl_REPLACE_MALLOC
+    ])
+])
+
+# gl_FUNC_MALLOC_POSIX
+# --------------------
+# Test whether 'malloc' is POSIX compliant (sets errno to ENOMEM when it
+# fails), and replace malloc if it is not.
+AC_DEFUN([gl_FUNC_MALLOC_POSIX],
+[
+  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+  AC_REQUIRE([gl_CHECK_MALLOC_POSIX])
+  if test $gl_cv_func_malloc_posix = yes; then
+    AC_DEFINE([HAVE_MALLOC_POSIX], [1],
+      [Define if the 'malloc' function is POSIX compliant.])
+  else
+    gl_REPLACE_MALLOC
+  fi
+])
+
+# Test whether malloc, realloc, calloc are POSIX compliant,
+# Set gl_cv_func_malloc_posix to yes or no accordingly.
+AC_DEFUN([gl_CHECK_MALLOC_POSIX],
+[
+  AC_CACHE_CHECK([whether malloc, realloc, calloc are POSIX compliant],
+    [gl_cv_func_malloc_posix],
+    [
+      dnl It is too dangerous to try to allocate a large amount of memory:
+      dnl some systems go to their knees when you do that. So assume that
+      dnl all Unix implementations of the function are POSIX compliant.
+      AC_COMPILE_IFELSE(
+        [AC_LANG_PROGRAM(
+           [[]],
+           [[#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+             choke me
+             #endif
+            ]])],
+        [gl_cv_func_malloc_posix=yes],
+        [gl_cv_func_malloc_posix=no])
+    ])
+])
+
+AC_DEFUN([gl_REPLACE_MALLOC],
+[
+  AC_LIBOBJ([malloc])
+  REPLACE_MALLOC=1
+])
diff --git a/m4/malloca.m4 b/m4/malloca.m4
new file mode 100644 (file)
index 0000000..aec43f5
--- /dev/null
@@ -0,0 +1,15 @@
+# malloca.m4 serial 1
+dnl Copyright (C) 2003-2004, 2006-2007, 2009-2011 Free Software Foundation,
+dnl 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.
+
+AC_DEFUN([gl_MALLOCA],
+[
+  dnl Use the autoconf tests for alloca(), but not the AC_SUBSTed variables
+  dnl @ALLOCA@ and @LTALLOCA@.
+  dnl gl_FUNC_ALLOCA   dnl Already brought in by the module dependencies.
+  AC_REQUIRE([gl_EEMALLOC])
+  AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
+])
diff --git a/m4/manywarnings.m4 b/m4/manywarnings.m4
new file mode 100644 (file)
index 0000000..67db064
--- /dev/null
@@ -0,0 +1,158 @@
+# manywarnings.m4 serial 1
+dnl Copyright (C) 2008-2011 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 Simon Josefsson
+
+# gl_MANYWARN_COMPLEMENT(OUTVAR, LISTVAR, REMOVEVAR)
+# --------------------------------------------------
+# Copy LISTVAR to OUTVAR except for the entries in REMOVEVAR.
+# Elements separated by whitespace.  In set logic terms, the function
+# does OUTVAR = LISTVAR \ REMOVEVAR.
+AC_DEFUN([gl_MANYWARN_COMPLEMENT],
+[
+  gl_warn_set=
+  set x $2; shift
+  for gl_warn_item
+  do
+    case " $3 " in
+      *" $gl_warn_item "*)
+        ;;
+      *)
+        gl_warn_set="$gl_warn_set $gl_warn_item"
+        ;;
+    esac
+  done
+  $1=$gl_warn_set
+])
+
+# gl_MANYWARN_ALL_GCC(VARIABLE)
+# -----------------------------
+# Add all documented GCC (currently as per version 4.4) warning
+# parameters to variable VARIABLE.  Note that you need to test them
+# using gl_WARN_ADD if you want to make sure your gcc understands it.
+AC_DEFUN([gl_MANYWARN_ALL_GCC],
+[
+  dnl First, check if -Wno-missing-field-initializers is needed.
+  dnl -Wmissing-field-initializers is implied by -W, but that issues
+  dnl warnings with GCC version before 4.7, for the common idiom
+  dnl of initializing types on the stack to zero, using { 0, }
+  AC_REQUIRE([AC_PROG_CC])
+  if test -n "$GCC"; then
+
+    dnl First, check -W -Werror -Wno-missing-field-initializers is supported
+    dnl with the current $CC $CFLAGS $CPPFLAGS.
+    AC_MSG_CHECKING([whether -Wno-missing-field-initializers is supported])
+    AC_CACHE_VAL([gl_cv_cc_nomfi_supported], [
+      gl_save_CFLAGS="$CFLAGS"
+      CFLAGS="$CFLAGS -W -Werror -Wno-missing-field-initializers"
+      AC_COMPILE_IFELSE(
+        [AC_LANG_PROGRAM([[]], [[]])],
+        [gl_cv_cc_nomfi_supported=yes],
+        [gl_cv_cc_nomfi_supported=no])
+      CFLAGS="$gl_save_CFLAGS"])
+    AC_MSG_RESULT([$gl_cv_cc_nomfi_supported])
+
+    if test "$gl_cv_cc_nomfi_supported" = yes; then
+      dnl Now check whether -Wno-missing-field-initializers is needed
+      dnl for the { 0, } construct.
+      AC_MSG_CHECKING([whether -Wno-missing-field-initializers is needed])
+      AC_CACHE_VAL([gl_cv_cc_nomfi_needed], [
+        gl_save_CFLAGS="$CFLAGS"
+        CFLAGS="$CFLAGS -W -Werror"
+        AC_COMPILE_IFELSE(
+          [AC_LANG_PROGRAM(
+             [[void f (void)
+               {
+                 typedef struct { int a; int b; } s_t;
+                 s_t s1 = { 0, };
+               }
+             ]],
+             [[]])],
+          [gl_cv_cc_nomfi_needed=no],
+          [gl_cv_cc_nomfi_needed=yes])
+        CFLAGS="$gl_save_CFLAGS"
+      ])
+      AC_MSG_RESULT([$gl_cv_cc_nomfi_needed])
+    fi
+  fi
+
+  gl_manywarn_set=
+  for gl_manywarn_item in \
+    -Wall \
+    -W \
+    -Wformat-y2k \
+    -Wformat-nonliteral \
+    -Wformat-security \
+    -Winit-self \
+    -Wmissing-include-dirs \
+    -Wswitch-default \
+    -Wswitch-enum \
+    -Wunused \
+    -Wunknown-pragmas \
+    -Wstrict-aliasing \
+    -Wstrict-overflow \
+    -Wsystem-headers \
+    -Wfloat-equal \
+    -Wtraditional \
+    -Wtraditional-conversion \
+    -Wdeclaration-after-statement \
+    -Wundef \
+    -Wshadow \
+    -Wunsafe-loop-optimizations \
+    -Wpointer-arith \
+    -Wbad-function-cast \
+    -Wc++-compat \
+    -Wcast-qual \
+    -Wcast-align \
+    -Wwrite-strings \
+    -Wconversion \
+    -Wsign-conversion \
+    -Wlogical-op \
+    -Waggregate-return \
+    -Wstrict-prototypes \
+    -Wold-style-definition \
+    -Wmissing-prototypes \
+    -Wmissing-declarations \
+    -Wmissing-noreturn \
+    -Wmissing-format-attribute \
+    -Wpacked \
+    -Wpadded \
+    -Wredundant-decls \
+    -Wnested-externs \
+    -Wunreachable-code \
+    -Winline \
+    -Winvalid-pch \
+    -Wlong-long \
+    -Wvla \
+    -Wvolatile-register-var \
+    -Wdisabled-optimization \
+    -Wstack-protector \
+    -Woverlength-strings \
+    -Wbuiltin-macro-redefined \
+    -Wmudflap \
+    -Wpacked-bitfield-compat \
+    -Wsync-nand \
+    ; do
+    gl_manywarn_set="$gl_manywarn_set $gl_manywarn_item"
+  done
+  # The following are not documented in the manual but are included in
+  # output from gcc --help=warnings.
+  for gl_manywarn_item in \
+    -Wattributes \
+    -Wcoverage-mismatch \
+    -Wmultichar \
+    -Wunused-macros \
+    ; do
+    gl_manywarn_set="$gl_manywarn_set $gl_manywarn_item"
+  done
+
+  # Disable the missing-field-initializers warning if needed
+  if test "$gl_cv_cc_nomfi_needed" = yes; then
+    gl_manywarn_set="$gl_manywarn_set -Wno-missing-field-initializers"
+  fi
+
+  $1=$gl_manywarn_set
+])
diff --git a/m4/mbrtowc.m4 b/m4/mbrtowc.m4
new file mode 100644 (file)
index 0000000..b5b6aaa
--- /dev/null
@@ -0,0 +1,560 @@
+# mbrtowc.m4 serial 23
+dnl Copyright (C) 2001-2002, 2004-2005, 2008-2011 Free Software Foundation,
+dnl 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.
+
+AC_DEFUN([gl_FUNC_MBRTOWC],
+[
+  AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
+
+  AC_REQUIRE([AC_TYPE_MBSTATE_T])
+  gl_MBSTATE_T_BROKEN
+
+  AC_CHECK_FUNCS_ONCE([mbrtowc])
+  if test $ac_cv_func_mbrtowc = no; then
+    HAVE_MBRTOWC=0
+  else
+    if test $REPLACE_MBSTATE_T = 1; then
+      REPLACE_MBRTOWC=1
+    else
+      gl_MBRTOWC_NULL_ARG1
+      gl_MBRTOWC_NULL_ARG2
+      gl_MBRTOWC_RETVAL
+      gl_MBRTOWC_NUL_RETVAL
+      case "$gl_cv_func_mbrtowc_null_arg1" in
+        *yes) ;;
+        *) AC_DEFINE([MBRTOWC_NULL_ARG1_BUG], [1],
+             [Define if the mbrtowc function has the NULL pwc argument bug.])
+           REPLACE_MBRTOWC=1
+           ;;
+      esac
+      case "$gl_cv_func_mbrtowc_null_arg2" in
+        *yes) ;;
+        *) AC_DEFINE([MBRTOWC_NULL_ARG2_BUG], [1],
+             [Define if the mbrtowc function has the NULL string argument bug.])
+           REPLACE_MBRTOWC=1
+           ;;
+      esac
+      case "$gl_cv_func_mbrtowc_retval" in
+        *yes) ;;
+        *) AC_DEFINE([MBRTOWC_RETVAL_BUG], [1],
+             [Define if the mbrtowc function returns a wrong return value.])
+           REPLACE_MBRTOWC=1
+           ;;
+      esac
+      case "$gl_cv_func_mbrtowc_nul_retval" in
+        *yes) ;;
+        *) AC_DEFINE([MBRTOWC_NUL_RETVAL_BUG], [1],
+             [Define if the mbrtowc function does not return 0 for a NUL character.])
+           REPLACE_MBRTOWC=1
+           ;;
+      esac
+    fi
+  fi
+  if test $HAVE_MBRTOWC = 0 || test $REPLACE_MBRTOWC = 1; then
+    AC_LIBOBJ([mbrtowc])
+    gl_PREREQ_MBRTOWC
+  fi
+])
+
+dnl Test whether mbsinit() and mbrtowc() need to be overridden in a way that
+dnl redefines the semantics of the given mbstate_t type.
+dnl Result is REPLACE_MBSTATE_T.
+dnl When this is set to 1, we replace both mbsinit() and mbrtowc(), in order to
+dnl avoid inconsistencies.
+
+AC_DEFUN([gl_MBSTATE_T_BROKEN],
+[
+  AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
+
+  AC_REQUIRE([AC_TYPE_MBSTATE_T])
+  AC_CHECK_FUNCS_ONCE([mbsinit])
+  AC_CHECK_FUNCS_ONCE([mbrtowc])
+  if test $ac_cv_func_mbsinit = yes && test $ac_cv_func_mbrtowc = yes; then
+    gl_MBRTOWC_INCOMPLETE_STATE
+    gl_MBRTOWC_SANITYCHECK
+    REPLACE_MBSTATE_T=0
+    case "$gl_cv_func_mbrtowc_incomplete_state" in
+      *yes) ;;
+      *) REPLACE_MBSTATE_T=1 ;;
+    esac
+    case "$gl_cv_func_mbrtowc_sanitycheck" in
+      *yes) ;;
+      *) REPLACE_MBSTATE_T=1 ;;
+    esac
+  else
+    REPLACE_MBSTATE_T=1
+  fi
+])
+
+dnl Test whether mbrtowc puts the state into non-initial state when parsing an
+dnl incomplete multibyte character.
+dnl Result is gl_cv_func_mbrtowc_incomplete_state.
+
+AC_DEFUN([gl_MBRTOWC_INCOMPLETE_STATE],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([gt_LOCALE_JA])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_CACHE_CHECK([whether mbrtowc handles incomplete characters],
+    [gl_cv_func_mbrtowc_incomplete_state],
+    [
+      dnl Initial guess, used when cross-compiling or when no suitable locale
+      dnl is present.
+changequote(,)dnl
+      case "$host_os" in
+                     # Guess no on AIX and OSF/1.
+        aix* | osf*) gl_cv_func_mbrtowc_incomplete_state="guessing no" ;;
+                     # Guess yes otherwise.
+        *)           gl_cv_func_mbrtowc_incomplete_state="guessing yes" ;;
+      esac
+changequote([,])dnl
+      if test $LOCALE_JA != none; then
+        AC_RUN_IFELSE(
+          [AC_LANG_SOURCE([[
+#include <locale.h>
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int main ()
+{
+  if (setlocale (LC_ALL, "$LOCALE_JA") != NULL)
+    {
+      const char input[] = "B\217\253\344\217\251\316er"; /* "Büßer" */
+      mbstate_t state;
+      wchar_t wc;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2))
+        if (mbsinit (&state))
+          return 1;
+    }
+  return 0;
+}]])],
+          [gl_cv_func_mbrtowc_incomplete_state=yes],
+          [gl_cv_func_mbrtowc_incomplete_state=no],
+          [:])
+      fi
+    ])
+])
+
+dnl Test whether mbrtowc works not worse than mbtowc.
+dnl Result is gl_cv_func_mbrtowc_sanitycheck.
+
+AC_DEFUN([gl_MBRTOWC_SANITYCHECK],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([gt_LOCALE_ZH_CN])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_CACHE_CHECK([whether mbrtowc works as well as mbtowc],
+    [gl_cv_func_mbrtowc_sanitycheck],
+    [
+      dnl Initial guess, used when cross-compiling or when no suitable locale
+      dnl is present.
+changequote(,)dnl
+      case "$host_os" in
+                    # Guess no on Solaris 8.
+        solaris2.8) gl_cv_func_mbrtowc_sanitycheck="guessing no" ;;
+                    # Guess yes otherwise.
+        *)          gl_cv_func_mbrtowc_sanitycheck="guessing yes" ;;
+      esac
+changequote([,])dnl
+      if test $LOCALE_ZH_CN != none; then
+        AC_RUN_IFELSE(
+          [AC_LANG_SOURCE([[
+#include <locale.h>
+#include <stdlib.h>
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int main ()
+{
+  /* This fails on Solaris 8:
+     mbrtowc returns 2, and sets wc to 0x00F0.
+     mbtowc returns 4 (correct) and sets wc to 0x5EDC.  */
+  if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL)
+    {
+      char input[] = "B\250\271\201\060\211\070er"; /* "Büßer" */
+      mbstate_t state;
+      wchar_t wc;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      if (mbrtowc (&wc, input + 3, 6, &state) != 4
+          && mbtowc (&wc, input + 3, 6) == 4)
+        return 1;
+    }
+  return 0;
+}]])],
+          [gl_cv_func_mbrtowc_sanitycheck=yes],
+          [gl_cv_func_mbrtowc_sanitycheck=no],
+          [:])
+      fi
+    ])
+])
+
+dnl Test whether mbrtowc supports a NULL pwc argument correctly.
+dnl Result is gl_cv_func_mbrtowc_null_arg1.
+
+AC_DEFUN([gl_MBRTOWC_NULL_ARG1],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([gt_LOCALE_FR_UTF8])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_CACHE_CHECK([whether mbrtowc handles a NULL pwc argument],
+    [gl_cv_func_mbrtowc_null_arg1],
+    [
+      dnl Initial guess, used when cross-compiling or when no suitable locale
+      dnl is present.
+changequote(,)dnl
+      case "$host_os" in
+                  # Guess no on Solaris.
+        solaris*) gl_cv_func_mbrtowc_null_arg1="guessing no" ;;
+                  # Guess yes otherwise.
+        *)        gl_cv_func_mbrtowc_null_arg1="guessing yes" ;;
+      esac
+changequote([,])dnl
+      if test $LOCALE_FR_UTF8 != none; then
+        AC_RUN_IFELSE(
+          [AC_LANG_SOURCE([[
+#include <locale.h>
+#include <stdlib.h>
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int main ()
+{
+  int result = 0;
+
+  if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+    {
+      char input[] = "\303\237er";
+      mbstate_t state;
+      wchar_t wc;
+      size_t ret;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      wc = (wchar_t) 0xBADFACE;
+      ret = mbrtowc (&wc, input, 5, &state);
+      if (ret != 2)
+        result |= 1;
+      if (!mbsinit (&state))
+        result |= 2;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      ret = mbrtowc (NULL, input, 5, &state);
+      if (ret != 2) /* Solaris 7 fails here: ret is -1.  */
+        result |= 4;
+      if (!mbsinit (&state))
+        result |= 8;
+    }
+  return result;
+}]])],
+          [gl_cv_func_mbrtowc_null_arg1=yes],
+          [gl_cv_func_mbrtowc_null_arg1=no],
+          [:])
+      fi
+    ])
+])
+
+dnl Test whether mbrtowc supports a NULL string argument correctly.
+dnl Result is gl_cv_func_mbrtowc_null_arg2.
+
+AC_DEFUN([gl_MBRTOWC_NULL_ARG2],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([gt_LOCALE_FR_UTF8])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_CACHE_CHECK([whether mbrtowc handles a NULL string argument],
+    [gl_cv_func_mbrtowc_null_arg2],
+    [
+      dnl Initial guess, used when cross-compiling or when no suitable locale
+      dnl is present.
+changequote(,)dnl
+      case "$host_os" in
+              # Guess no on OSF/1.
+        osf*) gl_cv_func_mbrtowc_null_arg2="guessing no" ;;
+              # Guess yes otherwise.
+        *)    gl_cv_func_mbrtowc_null_arg2="guessing yes" ;;
+      esac
+changequote([,])dnl
+      if test $LOCALE_FR_UTF8 != none; then
+        AC_RUN_IFELSE(
+          [AC_LANG_SOURCE([[
+#include <locale.h>
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int main ()
+{
+  if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+    {
+      mbstate_t state;
+      wchar_t wc;
+      int ret;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      wc = (wchar_t) 0xBADFACE;
+      mbrtowc (&wc, NULL, 5, &state);
+      /* Check that wc was not modified.  */
+      if (wc != (wchar_t) 0xBADFACE)
+        return 1;
+    }
+  return 0;
+}]])],
+          [gl_cv_func_mbrtowc_null_arg2=yes],
+          [gl_cv_func_mbrtowc_null_arg2=no],
+          [:])
+      fi
+    ])
+])
+
+dnl Test whether mbrtowc, when parsing the end of a multibyte character,
+dnl correctly returns the number of bytes that were needed to complete the
+dnl character (not the total number of bytes of the multibyte character).
+dnl Result is gl_cv_func_mbrtowc_retval.
+
+AC_DEFUN([gl_MBRTOWC_RETVAL],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([gt_LOCALE_FR_UTF8])
+  AC_REQUIRE([gt_LOCALE_JA])
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  AC_CACHE_CHECK([whether mbrtowc has a correct return value],
+    [gl_cv_func_mbrtowc_retval],
+    [
+      dnl Initial guess, used when cross-compiling or when no suitable locale
+      dnl is present.
+changequote(,)dnl
+      case "$host_os" in
+                                   # Guess no on HP-UX, Solaris, native Windows.
+        hpux* | solaris* | mingw*) gl_cv_func_mbrtowc_retval="guessing no" ;;
+                                   # Guess yes otherwise.
+        *)                         gl_cv_func_mbrtowc_retval="guessing yes" ;;
+      esac
+changequote([,])dnl
+      if test $LOCALE_FR_UTF8 != none || test $LOCALE_JA != none \
+         || { case "$host_os" in mingw*) true;; *) false;; esac; }; then
+        AC_RUN_IFELSE(
+          [AC_LANG_SOURCE([[
+#include <locale.h>
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int main ()
+{
+  int result = 0;
+  int found_some_locale = 0;
+  /* This fails on Solaris.  */
+  if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+    {
+      char input[] = "B\303\274\303\237er"; /* "Büßer" */
+      mbstate_t state;
+      wchar_t wc;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2))
+        {
+          input[1] = '\0';
+          if (mbrtowc (&wc, input + 2, 5, &state) != 1)
+            result |= 1;
+        }
+      found_some_locale = 1;
+    }
+  /* This fails on HP-UX 11.11.  */
+  if (setlocale (LC_ALL, "$LOCALE_JA") != NULL)
+    {
+      char input[] = "B\217\253\344\217\251\316er"; /* "Büßer" */
+      mbstate_t state;
+      wchar_t wc;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2))
+        {
+          input[1] = '\0';
+          if (mbrtowc (&wc, input + 2, 5, &state) != 2)
+            result |= 2;
+        }
+      found_some_locale = 1;
+    }
+  /* This fails on native Windows.  */
+  if (setlocale (LC_ALL, "Japanese_Japan.932") != NULL)
+    {
+      char input[] = "<\223\372\226\173\214\352>"; /* "<日本語>" */
+      mbstate_t state;
+      wchar_t wc;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      if (mbrtowc (&wc, input + 3, 1, &state) == (size_t)(-2))
+        {
+          input[3] = '\0';
+          if (mbrtowc (&wc, input + 4, 4, &state) != 1)
+            result |= 4;
+        }
+      found_some_locale = 1;
+    }
+  if (setlocale (LC_ALL, "Chinese_Taiwan.950") != NULL)
+    {
+      char input[] = "<\244\351\245\273\273\171>"; /* "<日本語>" */
+      mbstate_t state;
+      wchar_t wc;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      if (mbrtowc (&wc, input + 3, 1, &state) == (size_t)(-2))
+        {
+          input[3] = '\0';
+          if (mbrtowc (&wc, input + 4, 4, &state) != 1)
+            result |= 8;
+        }
+      found_some_locale = 1;
+    }
+  if (setlocale (LC_ALL, "Chinese_China.936") != NULL)
+    {
+      char input[] = "<\310\325\261\276\325\132>"; /* "<日本語>" */
+      mbstate_t state;
+      wchar_t wc;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      if (mbrtowc (&wc, input + 3, 1, &state) == (size_t)(-2))
+        {
+          input[3] = '\0';
+          if (mbrtowc (&wc, input + 4, 4, &state) != 1)
+            result |= 16;
+        }
+      found_some_locale = 1;
+    }
+  return (found_some_locale ? result : 77);
+}]])],
+          [gl_cv_func_mbrtowc_retval=yes],
+          [if test $? != 77; then
+             gl_cv_func_mbrtowc_retval=no
+           fi
+          ],
+          [:])
+      fi
+    ])
+])
+
+dnl Test whether mbrtowc, when parsing a NUL character, correctly returns 0.
+dnl Result is gl_cv_func_mbrtowc_nul_retval.
+
+AC_DEFUN([gl_MBRTOWC_NUL_RETVAL],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([gt_LOCALE_ZH_CN])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_CACHE_CHECK([whether mbrtowc returns 0 when parsing a NUL character],
+    [gl_cv_func_mbrtowc_nul_retval],
+    [
+      dnl Initial guess, used when cross-compiling or when no suitable locale
+      dnl is present.
+changequote(,)dnl
+      case "$host_os" in
+                       # Guess no on Solaris 8 and 9.
+        solaris2.[89]) gl_cv_func_mbrtowc_nul_retval="guessing no" ;;
+                       # Guess yes otherwise.
+        *)             gl_cv_func_mbrtowc_nul_retval="guessing yes" ;;
+      esac
+changequote([,])dnl
+      if test $LOCALE_ZH_CN != none; then
+        AC_RUN_IFELSE(
+          [AC_LANG_SOURCE([[
+#include <locale.h>
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int main ()
+{
+  /* This fails on Solaris 8 and 9.  */
+  if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL)
+    {
+      mbstate_t state;
+      wchar_t wc;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      if (mbrtowc (&wc, "", 1, &state) != 0)
+        return 1;
+    }
+  return 0;
+}]])],
+          [gl_cv_func_mbrtowc_nul_retval=yes],
+          [gl_cv_func_mbrtowc_nul_retval=no],
+          [:])
+      fi
+    ])
+])
+
+# Prerequisites of lib/mbrtowc.c.
+AC_DEFUN([gl_PREREQ_MBRTOWC], [
+  :
+])
+
+
+dnl From Paul Eggert
+
+dnl This is an override of an autoconf macro.
+
+AC_DEFUN([AC_FUNC_MBRTOWC],
+[
+  dnl Same as AC_FUNC_MBRTOWC in autoconf-2.60.
+  AC_CACHE_CHECK([whether mbrtowc and mbstate_t are properly declared],
+    gl_cv_func_mbrtowc,
+    [AC_LINK_IFELSE(
+       [AC_LANG_PROGRAM(
+            [[/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be
+                 included before <wchar.h>.
+                 BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h>
+                 must be included before <wchar.h>.  */
+              #include <stddef.h>
+              #include <stdio.h>
+              #include <time.h>
+              #include <wchar.h>]],
+            [[wchar_t wc;
+              char const s[] = "";
+              size_t n = 1;
+              mbstate_t state;
+              return ! (sizeof state && (mbrtowc) (&wc, s, n, &state));]])],
+       gl_cv_func_mbrtowc=yes,
+       gl_cv_func_mbrtowc=no)])
+  if test $gl_cv_func_mbrtowc = yes; then
+    AC_DEFINE([HAVE_MBRTOWC], [1],
+      [Define to 1 if mbrtowc and mbstate_t are properly declared.])
+  fi
+])
diff --git a/m4/mbsinit.m4 b/m4/mbsinit.m4
new file mode 100644 (file)
index 0000000..b42a49a
--- /dev/null
@@ -0,0 +1,39 @@
+# mbsinit.m4 serial 6
+dnl Copyright (C) 2008, 2010-2011 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.
+
+AC_DEFUN([gl_FUNC_MBSINIT],
+[
+  AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
+  AC_REQUIRE([AC_CANONICAL_HOST])
+
+  AC_REQUIRE([AC_TYPE_MBSTATE_T])
+  gl_MBSTATE_T_BROKEN
+
+  AC_CHECK_FUNCS_ONCE([mbsinit])
+  if test $ac_cv_func_mbsinit = no; then
+    HAVE_MBSINIT=0
+  else
+    if test $REPLACE_MBSTATE_T = 1; then
+      REPLACE_MBSINIT=1
+    else
+      dnl On mingw, mbsinit() always returns 1, which is inappropriate for
+      dnl states produced by mbrtowc() for an incomplete multibyte character
+      dnl in multibyte locales.
+      case "$host_os" in
+        mingw*) REPLACE_MBSINIT=1 ;;
+      esac
+    fi
+  fi
+  if test $HAVE_MBSINIT = 0 || test $REPLACE_MBSINIT = 1; then
+    AC_LIBOBJ([mbsinit])
+    gl_PREREQ_MBSINIT
+  fi
+])
+
+# Prerequisites of lib/mbsinit.c.
+AC_DEFUN([gl_PREREQ_MBSINIT], [
+  :
+])
diff --git a/m4/mbstate_t.m4 b/m4/mbstate_t.m4
new file mode 100644 (file)
index 0000000..f7c46b8
--- /dev/null
@@ -0,0 +1,41 @@
+# mbstate_t.m4 serial 13
+dnl Copyright (C) 2000-2002, 2008-2011 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.
+
+# From Paul Eggert.
+
+# BeOS 5 has <wchar.h> but does not define mbstate_t,
+# so you can't declare an object of that type.
+# Check for this incompatibility with Standard C.
+
+# AC_TYPE_MBSTATE_T
+# -----------------
+AC_DEFUN([AC_TYPE_MBSTATE_T],
+[
+   AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) dnl for HP-UX 11.11
+
+   AC_CACHE_CHECK([for mbstate_t], [ac_cv_type_mbstate_t],
+     [AC_COMPILE_IFELSE(
+        [AC_LANG_PROGRAM(
+           [AC_INCLUDES_DEFAULT[
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>]],
+           [[mbstate_t x; return sizeof x;]])],
+        [ac_cv_type_mbstate_t=yes],
+        [ac_cv_type_mbstate_t=no])])
+   if test $ac_cv_type_mbstate_t = yes; then
+     AC_DEFINE([HAVE_MBSTATE_T], [1],
+               [Define to 1 if <wchar.h> declares mbstate_t.])
+   else
+     AC_DEFINE([mbstate_t], [int],
+               [Define to a type if <wchar.h> does not define.])
+   fi
+])
diff --git a/m4/mbtowc.m4 b/m4/mbtowc.m4
new file mode 100644 (file)
index 0000000..9215892
--- /dev/null
@@ -0,0 +1,23 @@
+# mbtowc.m4 serial 1
+dnl Copyright (C) 2011 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.
+
+AC_DEFUN([gl_FUNC_MBTOWC],
+[
+  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+
+  if false; then
+    REPLACE_MBTOWC=1
+  fi
+  if test $REPLACE_MBTOWC = 1; then
+    AC_LIBOBJ([mbtowc])
+    gl_PREREQ_MBTOWC
+  fi
+])
+
+# Prerequisites of lib/mbtowc.c.
+AC_DEFUN([gl_PREREQ_MBTOWC], [
+  :
+])
diff --git a/m4/mkstemp.m4 b/m4/mkstemp.m4
new file mode 100644 (file)
index 0000000..0437f14
--- /dev/null
@@ -0,0 +1,77 @@
+#serial 20
+
+# Copyright (C) 2001, 2003-2007, 2009-2011 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.
+
+# On some hosts (e.g., HP-UX 10.20, SunOS 4.1.4, Solaris 2.5.1), mkstemp has a
+# silly limit that it can create no more than 26 files from a given template.
+# Other systems lack mkstemp altogether.
+# On OSF1/Tru64 V4.0F, the system-provided mkstemp function can create
+# only 32 files per process.
+# On some hosts, mkstemp creates files with mode 0666, which is a security
+# problem and a violation of POSIX 2008.
+# On systems like the above, arrange to use the replacement function.
+AC_DEFUN([gl_FUNC_MKSTEMP],
+[
+  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+  AC_REQUIRE([AC_SYS_LARGEFILE])
+
+  AC_CHECK_FUNCS_ONCE([mkstemp])
+  if test $ac_cv_func_mkstemp = yes; then
+    AC_CACHE_CHECK([for working mkstemp],
+      [gl_cv_func_working_mkstemp],
+      [
+        mkdir conftest.mkstemp
+        AC_RUN_IFELSE(
+          [AC_LANG_PROGRAM(
+            [AC_INCLUDES_DEFAULT],
+            [[int result = 0;
+              int i;
+              off_t large = (off_t) 4294967295u;
+              if (large < 0)
+                large = 2147483647;
+              umask (0);
+              for (i = 0; i < 70; i++)
+                {
+                  char templ[] = "conftest.mkstemp/coXXXXXX";
+                  int (*mkstemp_function) (char *) = mkstemp;
+                  int fd = mkstemp_function (templ);
+                  if (fd < 0)
+                    result |= 1;
+                  else
+                    {
+                      struct stat st;
+                      if (lseek (fd, large, SEEK_SET) != large)
+                        result |= 2;
+                      if (fstat (fd, &st) < 0)
+                        result |= 4;
+                      else if (st.st_mode & 0077)
+                        result |= 8;
+                      if (close (fd))
+                        result |= 16;
+                    }
+                }
+              return result;]])],
+          [gl_cv_func_working_mkstemp=yes],
+          [gl_cv_func_working_mkstemp=no],
+          [gl_cv_func_working_mkstemp="guessing no"])
+        rm -rf conftest.mkstemp
+      ])
+    if test "$gl_cv_func_working_mkstemp" != yes; then
+      REPLACE_MKSTEMP=1
+      AC_LIBOBJ([mkstemp])
+      gl_PREREQ_MKSTEMP
+    fi
+  else
+    HAVE_MKSTEMP=0
+    AC_LIBOBJ([mkstemp])
+    gl_PREREQ_MKSTEMP
+  fi
+])
+
+# Prerequisites of lib/mkstemp.c.
+AC_DEFUN([gl_PREREQ_MKSTEMP],
+[
+])
diff --git a/m4/mmap-anon.m4 b/m4/mmap-anon.m4
new file mode 100644 (file)
index 0000000..7ba7fd2
--- /dev/null
@@ -0,0 +1,55 @@
+# mmap-anon.m4 serial 9
+dnl Copyright (C) 2005, 2007, 2009-2011 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.
+
+# Detect how mmap can be used to create anonymous (not file-backed) memory
+# mappings.
+# - On Linux, AIX, OSF/1, Solaris, Cygwin, Interix, Haiku, both MAP_ANONYMOUS
+#   and MAP_ANON exist and have the same value.
+# - On HP-UX, only MAP_ANONYMOUS exists.
+# - On MacOS X, FreeBSD, NetBSD, OpenBSD, only MAP_ANON exists.
+# - On IRIX, neither exists, and a file descriptor opened to /dev/zero must be
+#   used.
+
+AC_DEFUN([gl_FUNC_MMAP_ANON],
+[
+  dnl Persuade glibc <sys/mman.h> to define MAP_ANONYMOUS.
+  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+
+  # Check for mmap(). Don't use AC_FUNC_MMAP, because it checks too much: it
+  # fails on HP-UX 11, because MAP_FIXED mappings do not work. But this is
+  # irrelevant for anonymous mappings.
+  AC_CHECK_FUNC([mmap], [gl_have_mmap=yes], [gl_have_mmap=no])
+
+  # Try to allow MAP_ANONYMOUS.
+  gl_have_mmap_anonymous=no
+  if test $gl_have_mmap = yes; then
+    AC_MSG_CHECKING([for MAP_ANONYMOUS])
+    AC_EGREP_CPP([I cant identify this map.], [
+#include <sys/mman.h>
+#ifdef MAP_ANONYMOUS
+    I cant identify this map.
+#endif
+],
+      [gl_have_mmap_anonymous=yes])
+    if test $gl_have_mmap_anonymous != yes; then
+      AC_EGREP_CPP([I cant identify this map.], [
+#include <sys/mman.h>
+#ifdef MAP_ANON
+    I cant identify this map.
+#endif
+],
+        [AC_DEFINE([MAP_ANONYMOUS], [MAP_ANON],
+          [Define to a substitute value for mmap()'s MAP_ANONYMOUS flag.])
+         gl_have_mmap_anonymous=yes])
+    fi
+    AC_MSG_RESULT([$gl_have_mmap_anonymous])
+    if test $gl_have_mmap_anonymous = yes; then
+      AC_DEFINE([HAVE_MAP_ANONYMOUS], [1],
+        [Define to 1 if mmap()'s MAP_ANONYMOUS flag is available after including
+         config.h and <sys/mman.h>.])
+    fi
+  fi
+])
diff --git a/m4/mode_t.m4 b/m4/mode_t.m4
new file mode 100644 (file)
index 0000000..f9cf704
--- /dev/null
@@ -0,0 +1,26 @@
+# mode_t.m4 serial 2
+dnl Copyright (C) 2009-2011 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.
+
+# For using mode_t, it's sufficient to use AC_TYPE_MODE_T and
+# include <sys/types.h>.
+
+# Define PROMOTED_MODE_T to the type that is the result of "default argument
+# promotion" (ISO C 6.5.2.2.(6)) of the type mode_t.
+AC_DEFUN([gl_PROMOTED_TYPE_MODE_T],
+[
+  AC_REQUIRE([AC_TYPE_MODE_T])
+  AC_CACHE_CHECK([for promoted mode_t type], [gl_cv_promoted_mode_t], [
+    dnl Assume mode_t promotes to 'int' if and only if it is smaller than 'int',
+    dnl and to itself otherwise. This assumption is not guaranteed by the ISO C
+    dnl standard, but we don't know of any real-world counterexamples.
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>]],
+      [[typedef int array[2 * (sizeof (mode_t) < sizeof (int)) - 1];]])],
+      [gl_cv_promoted_mode_t='int'],
+      [gl_cv_promoted_mode_t='mode_t'])
+  ])
+  AC_DEFINE_UNQUOTED([PROMOTED_MODE_T], [$gl_cv_promoted_mode_t],
+    [Define to the type that is the result of default argument promotions of type mode_t.])
+])
diff --git a/m4/multiarch.m4 b/m4/multiarch.m4
new file mode 100644 (file)
index 0000000..691d892
--- /dev/null
@@ -0,0 +1,62 @@
+# multiarch.m4 serial 6
+dnl Copyright (C) 2008-2011 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.
+
+# Determine whether the compiler is or may be producing universal binaries.
+#
+# On MacOS X 10.5 and later systems, the user can create libraries and
+# executables that work on multiple system types--known as "fat" or
+# "universal" binaries--by specifying multiple '-arch' options to the
+# compiler but only a single '-arch' option to the preprocessor.  Like
+# this:
+#
+#     ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+#                 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+#                 CPP="gcc -E" CXXCPP="g++ -E"
+#
+# Detect this situation and set APPLE_UNIVERSAL_BUILD accordingly.
+
+AC_DEFUN_ONCE([gl_MULTIARCH],
+[
+  dnl Code similar to autoconf-2.63 AC_C_BIGENDIAN.
+  gl_cv_c_multiarch=no
+  AC_COMPILE_IFELSE(
+    [AC_LANG_SOURCE(
+      [[#ifndef __APPLE_CC__
+         not a universal capable compiler
+        #endif
+        typedef int dummy;
+      ]])],
+    [
+     dnl Check for potential -arch flags.  It is not universal unless
+     dnl there are at least two -arch flags with different values.
+     arch=
+     prev=
+     for word in ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}; do
+       if test -n "$prev"; then
+         case $word in
+           i?86 | x86_64 | ppc | ppc64)
+             if test -z "$arch" || test "$arch" = "$word"; then
+               arch="$word"
+             else
+               gl_cv_c_multiarch=yes
+             fi
+             ;;
+         esac
+         prev=
+       else
+         if test "x$word" = "x-arch"; then
+           prev=arch
+         fi
+       fi
+     done
+    ])
+  if test $gl_cv_c_multiarch = yes; then
+    APPLE_UNIVERSAL_BUILD=1
+  else
+    APPLE_UNIVERSAL_BUILD=0
+  fi
+  AC_SUBST([APPLE_UNIVERSAL_BUILD])
+])
diff --git a/m4/nl_langinfo.m4 b/m4/nl_langinfo.m4
new file mode 100644 (file)
index 0000000..ca9d28d
--- /dev/null
@@ -0,0 +1,52 @@
+# nl_langinfo.m4 serial 4
+dnl Copyright (C) 2009-2011 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.
+
+AC_DEFUN([gl_FUNC_NL_LANGINFO],
+[
+  AC_REQUIRE([gl_LANGINFO_H_DEFAULTS])
+  AC_REQUIRE([gl_LANGINFO_H])
+  AC_CHECK_FUNCS_ONCE([nl_langinfo])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  if test $ac_cv_func_nl_langinfo = yes; then
+    # On Irix 6.5, YESEXPR is defined, but nl_langinfo(YESEXPR) is broken.
+    AC_CACHE_CHECK([whether YESEXPR works],
+      [gl_cv_func_nl_langinfo_yesexpr_works],
+      [AC_RUN_IFELSE(
+         [AC_LANG_PROGRAM([[#include <langinfo.h>
+]], [[return !*nl_langinfo(YESEXPR);
+]])],
+         [gl_cv_func_nl_langinfo_yesexpr_works=yes],
+         [gl_cv_func_nl_langinfo_yesexpr_works=no],
+         [
+         case "$host_os" in
+                   # Guess no on irix systems.
+           irix*)  gl_cv_func_nl_langinfo_yesexpr_works="guessing no";;
+                   # Guess yes elsewhere.
+           *)      gl_cv_func_nl_langinfo_yesexpr_works="guessing yes";;
+         esac
+         ])
+      ])
+    case $gl_cv_func_nl_langinfo_yesexpr_works in
+      *yes) FUNC_NL_LANGINFO_YESEXPR_WORKS=1 ;;
+      *)    FUNC_NL_LANGINFO_YESEXPR_WORKS=0 ;;
+    esac
+    AC_DEFINE_UNQUOTED([FUNC_NL_LANGINFO_YESEXPR_WORKS],
+      [$FUNC_NL_LANGINFO_YESEXPR_WORKS],
+      [Define to 1 if nl_langinfo (YESEXPR) returns a non-empty string.])
+    if test $HAVE_LANGINFO_CODESET = 1 && test $HAVE_LANGINFO_ERA = 1 \
+        && test $FUNC_NL_LANGINFO_YESEXPR_WORKS = 1; then
+      :
+    else
+      REPLACE_NL_LANGINFO=1
+      AC_DEFINE([REPLACE_NL_LANGINFO], [1],
+        [Define if nl_langinfo exists but is overridden by gnulib.])
+      AC_LIBOBJ([nl_langinfo])
+    fi
+  else
+    HAVE_NL_LANGINFO=0
+    AC_LIBOBJ([nl_langinfo])
+  fi
+])
diff --git a/m4/nls.m4 b/m4/nls.m4
new file mode 100644 (file)
index 0000000..a02c941
--- /dev/null
+++ b/m4/nls.m4
@@ -0,0 +1,34 @@
+# -*- buffer-read-only: t -*- vi: set ro:
+# DO NOT EDIT! GENERATED AUTOMATICALLY!
+# nls.m4 serial 5 (gettext-0.18)
+dnl Copyright (C) 1995-2003, 2005-2006, 2008-2010 Free Software Foundation,
+dnl 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 can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library 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 Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl   Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
+dnl   Bruno Haible <haible@clisp.cons.org>, 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])
+])
diff --git a/m4/nocrash.m4 b/m4/nocrash.m4
new file mode 100644 (file)
index 0000000..0cc0d53
--- /dev/null
@@ -0,0 +1,102 @@
+# nocrash.m4 serial 2
+dnl Copyright (C) 2005, 2009-2011 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 Based on libsigsegv, from Bruno Haible and Paolo Bonzini.
+
+AC_PREREQ([2.13])
+
+dnl Expands to some code for use in .c programs that will cause the configure
+dnl test to exit instead of crashing. This is useful to avoid triggering
+dnl action from a background debugger and to avoid core dumps.
+dnl Usage:   ...
+dnl          ]GL_NOCRASH[
+dnl          ...
+dnl          int main() { nocrash_init(); ... }
+AC_DEFUN([GL_NOCRASH],[[
+#include <stdlib.h>
+#if defined __MACH__ && defined __APPLE__
+/* Avoid a crash on MacOS X.  */
+#include <mach/mach.h>
+#include <mach/mach_error.h>
+#include <mach/thread_status.h>
+#include <mach/exception.h>
+#include <mach/task.h>
+#include <pthread.h>
+/* The exception port on which our thread listens.  */
+static mach_port_t our_exception_port;
+/* The main function of the thread listening for exceptions of type
+   EXC_BAD_ACCESS.  */
+static void *
+mach_exception_thread (void *arg)
+{
+  /* Buffer for a message to be received.  */
+  struct {
+    mach_msg_header_t head;
+    mach_msg_body_t msgh_body;
+    char data[1024];
+  } msg;
+  mach_msg_return_t retval;
+  /* Wait for a message on the exception port.  */
+  retval = mach_msg (&msg.head, MACH_RCV_MSG | MACH_RCV_LARGE, 0, sizeof (msg),
+                     our_exception_port, MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL);
+  if (retval != MACH_MSG_SUCCESS)
+    abort ();
+  exit (1);
+}
+static void
+nocrash_init (void)
+{
+  mach_port_t self = mach_task_self ();
+  /* Allocate a port on which the thread shall listen for exceptions.  */
+  if (mach_port_allocate (self, MACH_PORT_RIGHT_RECEIVE, &our_exception_port)
+      == KERN_SUCCESS) {
+    /* See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/mach_port_insert_right.html.  */
+    if (mach_port_insert_right (self, our_exception_port, our_exception_port,
+                                MACH_MSG_TYPE_MAKE_SEND)
+        == KERN_SUCCESS) {
+      /* The exceptions we want to catch.  Only EXC_BAD_ACCESS is interesting
+         for us.  */
+      exception_mask_t mask = EXC_MASK_BAD_ACCESS;
+      /* Create the thread listening on the exception port.  */
+      pthread_attr_t attr;
+      pthread_t thread;
+      if (pthread_attr_init (&attr) == 0
+          && pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED) == 0
+          && pthread_create (&thread, &attr, mach_exception_thread, NULL) == 0) {
+        pthread_attr_destroy (&attr);
+        /* Replace the exception port info for these exceptions with our own.
+           Note that we replace the exception port for the entire task, not only
+           for a particular thread.  This has the effect that when our exception
+           port gets the message, the thread specific exception port has already
+           been asked, and we don't need to bother about it.
+           See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/task_set_exception_ports.html.  */
+        task_set_exception_ports (self, mask, our_exception_port,
+                                  EXCEPTION_DEFAULT, MACHINE_THREAD_STATE);
+      }
+    }
+  }
+}
+#else
+/* Avoid a crash on POSIX systems.  */
+#include <signal.h>
+/* A POSIX signal handler.  */
+static void
+exception_handler (int sig)
+{
+  exit (1);
+}
+static void
+nocrash_init (void)
+{
+#ifdef SIGSEGV
+  signal (SIGSEGV, exception_handler);
+#endif
+#ifdef SIGBUS
+  signal (SIGBUS, exception_handler);
+#endif
+}
+#endif
+]])
diff --git a/m4/o-direct.m4 b/m4/o-direct.m4
new file mode 100644 (file)
index 0000000..d408d0d
--- /dev/null
@@ -0,0 +1,252 @@
+#serial 2
+# Find a directory in which a disk-simulating file is usable by parted.
+# The problem is that on systems supporting O_DIRECT, open with O_DIRECT
+# fails for some file system types (e.g., tmpfs on linux-2.6.21).
+
+# Copyright (C) 2007-2011 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.
+
+# From Jim Meyering.
+
+# Set PARTED_USABLE_TEST_DIR to the name of the first usable directory
+# from the list below.  If none is usable, set it to the empty string.
+# Consider $TMPDIR only if it specifies an absolute name, and that
+# name contains no shell meta-character.  Likewise for $HOME.
+
+# This code is pretty picky.  The chosen partition must support aligned reads
+# and writes in blocks of size 512B and 4KB to a file descriptor opened with
+# O_RDWR|O_DIRECT.  Reiserfs doesn't support 512-byte reads.  On tmpfs,
+# the open fails.
+
+# The candidate directories:
+#   . $HOME $TMPDIR /tmp /var/tmp /dev/shm
+AC_DEFUN([parted_FIND_USABLE_TEST_DIR],
+[
+  AC_CACHE_CHECK([for a usable (O_DIRECT-supporting) temporary dir],
+    [parted_cv_func_open_O_DIRECT_temp_dir],
+    [
+      # First of all, if there is no O_DIRECT definition, use ".",
+      # and skip the run-test.
+      AC_EGREP_CPP([frobnozzle], [
+#include <fcntl.h>
+#ifdef O_DIRECT
+frobnozzle
+#endif
+                 ], pe_have_O_DIRECT=yes, pe_have_O_DIRECT=no)
+      if test $pe_have_O_DIRECT = no; then
+         # With no O_DIRECT definition, "." is fine.
+         pe_cand_dirs=.
+      else
+         pe_cand_dirs=.
+         for pe_dir in "$HOME" "$TMPDIR"; do
+             case $pe_dir in
+             /tmp) ;;
+             /var/tmp) ;;
+             /dev/shm) ;;
+             /*) case $pe_dir in
+                 # Accept $HOME or $TMP only if the value is nice and boring.
+                 *[^/a-zA-Z0-9_.-]*) ;;
+                 *) pe_cand_dirs="$pe_cand_dirs $pe_dir";;
+                 esac
+             esac
+         done
+
+         case $PARTED_TMPDIR in
+             *[^/a-zA-Z0-9_.-]*) ;;
+             *) pe_cand_dirs="$PARTED_TMPDIR $pe_cand_dirs";;
+         esac
+
+         # This is the list of candidate directories.
+         pe_cand_dirs="$pe_cand_dirs /tmp /var/tmp /dev/shm"
+
+         PARTED_CANDIDATE_DIRS=$pe_cand_dirs
+         export PARTED_CANDIDATE_DIRS
+
+         AC_RUN_IFELSE(
+           [AC_LANG_SOURCE(
+             [[
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define MAX_LOGICAL_BLOCK_SIZE 4096
+static char g_buf[2 * MAX_LOGICAL_BLOCK_SIZE];
+
+static inline void *
+ptr_align (void const *ptr, size_t alignment)
+{
+  char const *p0 = ptr;
+  char const *p1 = p0 + alignment - 1;
+  return (void *) (p1 - (size_t) p1 % alignment);
+}
+
+static int
+create_input_file (char const *file, char const *buf, size_t n_bytes)
+{
+  int fd = open (file, O_CREAT | O_WRONLY, 0600);
+  if (fd < 0)
+    return 1;
+  if (write (fd, buf, n_bytes) != n_bytes)
+    {
+      close (fd);
+      return 1;
+    }
+  return !! close (fd);
+}
+
+static int
+try_o_direct (char const *file, size_t block_size)
+{
+  char *p = ptr_align (g_buf, MAX_LOGICAL_BLOCK_SIZE);
+  int fd;
+
+  if (!(p + block_size < g_buf + sizeof g_buf))
+    return 4;
+
+  fd = open (file, O_RDWR | O_DIRECT);
+  if (fd < 0)
+    return 1;
+
+  if (write (fd, p, block_size) != block_size)
+    return 1;
+
+  if (lseek (fd, 0, SEEK_SET) != 0)
+    return 1;
+
+  if (read (fd, p, block_size) != block_size)
+    return 1;
+
+  return !! close (fd);
+}
+
+#undef stpcpy
+#define stpcpy(a, b) my_stpcpy (a, b)
+static char *
+my_stpcpy (char *dest, const char *src)
+{
+  char *d = dest;
+  const char *s = src;
+  do *d++ = *s; while (*s++ != '\0');
+  return d - 1;
+}
+
+/* The base name of the file we'll create in the mkdtemp-returned
+   temporary directory.  */
+#define BASENAME "x"
+
+/* Return 0 upon failure, else the 1-based index of the first
+   useful directory name from PARTED_CANDIDATE_DIRS.  */
+int
+main ()
+{
+  char const *env_dirs;
+  char *dirs;
+  char *dir;
+  unsigned int n;
+  int found = 0;
+  size_t dirs_len;
+
+  if ((env_dirs = getenv ("PARTED_CANDIDATE_DIRS")) == NULL)
+    return 0;
+
+  dirs_len = strlen (env_dirs);
+  if ((dirs = strndup (env_dirs, dirs_len)) == NULL)
+    return 0;
+  dir = dirs;
+
+  for (n = 1; ; n++)
+    {
+      size_t dirname_len;
+      char *space;
+
+      /* Skip any leading spaces.  */
+      while (*dir == ' ')
+       ++dir;
+
+      space = strchr (dir, ' ');
+      if (space)
+       {
+         *space = '\0';
+         dirname_len = space - dir;
+       }
+      else
+       {
+         dirname_len = strlen (dir);
+       }
+
+      if (dirname_len != 0)
+       {
+         /* Create an mkdtemp template starting with dir.  */
+         char *tmp;
+         char *endp;
+         char const *base = "partedOD.XXXXXX";
+         /* Allocate enough space not just for the dir name, but
+            also for the name of the file to create within it.  */
+         char *template = malloc (dirname_len + 1 + strlen (base)
+                                  + 1 + strlen (BASENAME) + 1);
+         if (template != NULL
+             && (endp = stpcpy (stpcpy (stpcpy (template, dir), "/"), base))
+             && (tmp = mkdtemp (template)) != NULL)
+           {
+             /* Append "/BASENAME" to create the file name.  */
+             stpcpy (stpcpy (endp, "/"), BASENAME);
+
+             if (create_input_file (tmp, g_buf, sizeof g_buf) == 0
+                 && try_o_direct (tmp, 512) == 0
+                 && try_o_direct (tmp, MAX_LOGICAL_BLOCK_SIZE) == 0)
+               found = 1;
+
+             unlink (tmp); /* ignore failure */
+             *endp = '\0';
+             rmdir (tmp); /* ignore failure */
+           }
+         free (template);
+       }
+
+      if (found)
+       break;
+
+      dir += dirname_len + 1;
+      if (dirs + dirs_len < dir)
+       {
+         n = 0;
+         break;
+       }
+    }
+  free (dirs);
+
+  return n;
+}
+             ]])],
+           # If the above program exits with status 0, then
+           # there it found no useful directory.  Use ".".
+           [parted_cv_func_open_O_DIRECT_temp_dir=.],
+
+           # It found one.  The exit status is an index into the list.
+           # We also run this code when the program fails to compile or
+           # to link, as will happen on systems without a mkdtemp function.
+           [pe_err=$?; set _ $pe_cand_dirs; shift
+             eval parted_cv_func_open_O_DIRECT_temp_dir='$'$pe_err],
+
+           # When cross-compiling, use ".".
+           [parted_cv_func_open_O_DIRECT_temp_dir=.]
+           )
+      fi
+    ])
+  PARTED_USABLE_TEST_DIR=$parted_cv_func_open_O_DIRECT_temp_dir
+  AC_SUBST([PARTED_USABLE_TEST_DIR])
+
+  # If the result is ".", don't cache it.  The next user of
+  # the cache may well be running from a different file system.
+  dnl Here, I'm using "$as_unset", which is a non-published (i.e., internal)
+  dnl part of autoconf, but we don't expect its name to change any time soon.
+  dnl and by then, it'll probably be ok to use "unset" all by itself.
+  if test "$parted_cv_func_open_O_DIRECT_temp_dir" = .; then
+    $as_unset parted_cv_func_open_O_DIRECT_temp_dir
+  fi
+])
diff --git a/m4/open.m4 b/m4/open.m4
new file mode 100644 (file)
index 0000000..690cc64
--- /dev/null
@@ -0,0 +1,90 @@
+# open.m4 serial 12
+dnl Copyright (C) 2007-2011 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.
+
+AC_DEFUN([gl_FUNC_OPEN],
+[
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  case "$host_os" in
+    mingw* | pw*)
+      gl_REPLACE_OPEN
+      ;;
+    *)
+      dnl open("foo/") should not create a file when the file name has a
+      dnl trailing slash.  FreeBSD only has the problem on symlinks.
+      AC_CHECK_FUNCS_ONCE([lstat])
+      AC_CACHE_CHECK([whether open recognizes a trailing slash],
+        [gl_cv_func_open_slash],
+        [# Assume that if we have lstat, we can also check symlinks.
+          if test $ac_cv_func_lstat = yes; then
+            touch conftest.tmp
+            ln -s conftest.tmp conftest.lnk
+          fi
+          AC_RUN_IFELSE(
+            [AC_LANG_SOURCE([[
+#include <fcntl.h>
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+int main ()
+{
+  int result = 0;
+#if HAVE_LSTAT
+  if (open ("conftest.lnk/", O_RDONLY) != -1)
+    result |= 1;
+#endif
+  if (open ("conftest.sl/", O_CREAT, 0600) >= 0)
+    result |= 2;
+  return result;
+}]])],
+            [gl_cv_func_open_slash=yes],
+            [gl_cv_func_open_slash=no],
+            [
+changequote(,)dnl
+             case "$host_os" in
+               freebsd* | aix* | hpux* | solaris2.[0-9] | solaris2.[0-9].*)
+                 gl_cv_func_open_slash="guessing no" ;;
+               *)
+                 gl_cv_func_open_slash="guessing yes" ;;
+             esac
+changequote([,])dnl
+            ])
+          rm -f conftest.sl conftest.tmp conftest.lnk
+        ])
+      case "$gl_cv_func_open_slash" in
+        *no)
+          AC_DEFINE([OPEN_TRAILING_SLASH_BUG], [1],
+            [Define to 1 if open() fails to recognize a trailing slash.])
+          gl_REPLACE_OPEN
+          ;;
+      esac
+      ;;
+  esac
+  dnl Replace open() for supporting the gnulib-defined O_NONBLOCK flag.
+  m4_ifdef([gl_NONBLOCKING_IO], [
+    if test $REPLACE_OPEN = 0; then
+      gl_NONBLOCKING_IO
+      if test $gl_cv_have_open_O_NONBLOCK != yes; then
+        gl_REPLACE_OPEN
+      fi
+    fi
+  ])
+])
+
+AC_DEFUN([gl_REPLACE_OPEN],
+[
+  AC_REQUIRE([gl_FCNTL_H_DEFAULTS])
+  REPLACE_OPEN=1
+  AC_LIBOBJ([open])
+  gl_PREREQ_OPEN
+])
+
+# Prerequisites of lib/open.c.
+AC_DEFUN([gl_PREREQ_OPEN],
+[
+  AC_REQUIRE([AC_C_INLINE])
+  AC_REQUIRE([gl_PROMOTED_TYPE_MODE_T])
+  :
+])
diff --git a/m4/pathmax.m4 b/m4/pathmax.m4
new file mode 100644 (file)
index 0000000..17b3d64
--- /dev/null
@@ -0,0 +1,13 @@
+# pathmax.m4 serial 8
+dnl Copyright (C) 2002-2003, 2005-2006, 2009-2011 Free Software Foundation,
+dnl 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.
+
+AC_DEFUN([gl_PATHMAX],
+[
+  dnl Prerequisites of lib/pathmax.h.
+  AC_CHECK_FUNCS_ONCE([pathconf])
+  AC_CHECK_HEADERS_ONCE([sys/param.h])
+])
diff --git a/m4/po.m4 b/m4/po.m4
new file mode 100644 (file)
index 0000000..da20b36
--- /dev/null
+++ b/m4/po.m4
@@ -0,0 +1,451 @@
+# -*- buffer-read-only: t -*- vi: set ro:
+# DO NOT EDIT! GENERATED AUTOMATICALLY!
+# po.m4 serial 17 (gettext-0.18)
+dnl Copyright (C) 1995-2010 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 can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library 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 Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl   Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
+dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2003.
+
+AC_PREREQ([2.50])
+
+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([AM_PROG_MKDIR_P])dnl defined by automake
+  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.18])
+
+  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 `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;;
+    *) MSGFMT_015=$MSGFMT ;;
+  esac
+changequote([,])dnl
+  AC_SUBST([MSGFMT_015])
+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 Installation directories.
+  dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we
+  dnl have to define it here, so that it can be used in po/Makefile.
+  test -n "$localedir" || localedir='${datadir}/locale'
+  AC_SUBST([localedir])
+
+  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"
+          cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[  ]*\$/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"`
+            # Hide the ALL_LINGUAS assigment from automake < 1.5.
+            eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
+            POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
+          else
+            # The set of available languages was given in configure.in.
+            # Hide the ALL_LINGUAS assigment from automake < 1.5.
+            eval '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. But hide it
+    # from automake < 1.5.
+    eval '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 <<EOT
+$*
+EOT
+      }
+      gt_echo='echo_func'
+    fi
+  fi
+
+  # A sed script that extracts the value of VARIABLE from a Makefile.
+  sed_x_variable='
+# Test if the hold space is empty.
+x
+s/P/P/
+x
+ta
+# Yes it was empty. Look if we have the expected variable definition.
+/^[     ]*VARIABLE[     ]*=/{
+  # Seen the first line of the variable definition.
+  s/^[  ]*VARIABLE[     ]*=//
+  ba
+}
+bd
+:a
+# Here we are processing a line from the variable definition.
+# Remove comment, more precisely replace it with a space.
+s/#.*$/ /
+# See if the line ends in a backslash.
+tb
+:b
+s/\\$//
+# Print the line, without the trailing backslash.
+p
+tc
+# There was no trailing backslash. The end of the variable definition is
+# reached. Clear the hold space.
+s/^.*$//
+x
+bd
+:c
+# A trailing backslash means that the variable definition continues in the
+# next line. Put a nonempty string into the hold space to indicate this.
+s/^.*$/P/
+x
+:d
+'
+changequote([,])dnl
+
+  # Set POTFILES to the value of the Makefile variable POTFILES.
+  sed_x_POTFILES=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/POTFILES/g'`
+  POTFILES=`sed -n -e "$sed_x_POTFILES" < "$ac_file"`
+  # Compute POTFILES_DEPS as
+  #   $(foreach file, $(POTFILES), $(top_srcdir)/$(file))
+  POTFILES_DEPS=
+  for file in $POTFILES; do
+    POTFILES_DEPS="$POTFILES_DEPS "'$(top_srcdir)/'"$file"
+  done
+  POMAKEFILEDEPS=""
+
+  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
+  if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
+    # The LINGUAS file contains the set of available languages.
+    ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
+    POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
+  else
+    # Set ALL_LINGUAS to the value of the Makefile variable LINGUAS.
+    sed_x_LINGUAS=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/LINGUAS/g'`
+    ALL_LINGUAS_=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"`
+  fi
+  # Hide the ALL_LINGUAS assigment from automake < 1.5.
+  eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
+  # 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)
+  # Compute PROPERTIESFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).properties)
+  # Compute CLASSFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).class)
+  # Compute QMFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).qm)
+  # Compute MSGFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang)).msg)
+  # Compute RESOURCESDLLFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang))/$(DOMAIN).resources.dll)
+  case "$ac_given_srcdir" in
+    .) srcdirpre= ;;
+    *) srcdirpre='$(srcdir)/' ;;
+  esac
+  POFILES=
+  UPDATEPOFILES=
+  DUMMYPOFILES=
+  GMOFILES=
+  PROPERTIESFILES=
+  CLASSFILES=
+  QMFILES=
+  MSGFILES=
+  RESOURCESDLLFILES=
+  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"
+    PROPERTIESFILES="$PROPERTIESFILES \$(top_srcdir)/\$(DOMAIN)_$lang.properties"
+    CLASSFILES="$CLASSFILES \$(top_srcdir)/\$(DOMAIN)_$lang.class"
+    QMFILES="$QMFILES $srcdirpre$lang.qm"
+    frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
+    MSGFILES="$MSGFILES $srcdirpre$frobbedlang.msg"
+    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/'`
+    RESOURCESDLLFILES="$RESOURCESDLLFILES $srcdirpre$frobbedlang/\$(DOMAIN).resources.dll"
+  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=
+  JAVACATALOGS=
+  QTCATALOGS=
+  TCLCATALOGS=
+  CSHARPCATALOGS=
+  if test -n "$INST_LINGUAS"; then
+    for lang in $INST_LINGUAS; do
+      CATALOGS="$CATALOGS $lang.gmo"
+      JAVACATALOGS="$JAVACATALOGS \$(DOMAIN)_$lang.properties"
+      QTCATALOGS="$QTCATALOGS $lang.qm"
+      frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
+      TCLCATALOGS="$TCLCATALOGS $frobbedlang.msg"
+      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/'`
+      CSHARPCATALOGS="$CSHARPCATALOGS $frobbedlang/\$(DOMAIN).resources.dll"
+    done
+  fi
+
+  sed -e "s|@POTFILES_DEPS@|$POTFILES_DEPS|g" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@PROPERTIESFILES@|$PROPERTIESFILES|g" -e "s|@CLASSFILES@|$CLASSFILES|g" -e "s|@QMFILES@|$QMFILES|g" -e "s|@MSGFILES@|$MSGFILES|g" -e "s|@RESOURCESDLLFILES@|$RESOURCESDLLFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@JAVACATALOGS@|$JAVACATALOGS|g" -e "s|@QTCATALOGS@|$QTCATALOGS|g" -e "s|@TCLCATALOGS@|$TCLCATALOGS|g" -e "s|@CSHARPCATALOGS@|$CSHARPCATALOGS|g" -e 's,^#distdir:,distdir:,' < "$ac_file" > "$ac_file.tmp"
+  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" <<EOF
+$frobbedlang.msg: $lang.po
+       @echo "\$(MSGFMT) -c --tcl -d \$(srcdir) -l $lang $srcdirpre$lang.po"; \
+       \$(MSGFMT) -c --tcl -d "\$(srcdir)" -l $lang $srcdirpre$lang.po || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
+EOF
+    done
+  fi
+  if grep -l '@CSHARPCATALOGS@' "$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/_/-/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" <<EOF
+$frobbedlang/\$(DOMAIN).resources.dll: $lang.po
+       @echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \
+       \$(MSGFMT) -c --csharp -d "\$(srcdir)" -l $lang $srcdirpre$lang.po -r "\$(DOMAIN)" || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
+EOF
+    done
+  fi
+  if test -n "$POMAKEFILEDEPS"; then
+    cat >> "$ac_file.tmp" <<EOF
+Makefile: $POMAKEFILEDEPS
+EOF
+  fi
+  mv "$ac_file.tmp" "$ac_file"
+])
+
+dnl Initializes the accumulator used by AM_XGETTEXT_OPTION.
+AC_DEFUN([AM_XGETTEXT_OPTION_INIT],
+[
+  XGETTEXT_EXTRA_OPTIONS=
+])
+
+dnl Registers an option to be passed to xgettext in the po subdirectory.
+AC_DEFUN([AM_XGETTEXT_OPTION],
+[
+  AC_REQUIRE([AM_XGETTEXT_OPTION_INIT])
+  XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS $1"
+])
diff --git a/m4/priv-set.m4 b/m4/priv-set.m4
new file mode 100644 (file)
index 0000000..1509ba6
--- /dev/null
@@ -0,0 +1,16 @@
+# serial 7
+
+# Copyright (C) 2009-2011 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.
+
+# Written by David Bartley.
+
+AC_DEFUN([gl_PRIV_SET],
+[
+  AC_REQUIRE([AC_C_INLINE])
+  AC_CHECK_FUNCS([getppriv])
+  AC_CHECK_HEADERS_ONCE([priv.h])
+])
diff --git a/m4/progtest.m4 b/m4/progtest.m4
new file mode 100644 (file)
index 0000000..d423ae8
--- /dev/null
@@ -0,0 +1,94 @@
+# -*- buffer-read-only: t -*- vi: set ro:
+# DO NOT EDIT! GENERATED AUTOMATICALLY!
+# progtest.m4 serial 6 (gettext-0.18)
+dnl Copyright (C) 1996-2003, 2005, 2008-2010 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 can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library 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 Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl   Ulrich Drepper <drepper@cygnus.com>, 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
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+# 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
+])
diff --git a/m4/putenv.m4 b/m4/putenv.m4
new file mode 100644 (file)
index 0000000..de3900b
--- /dev/null
@@ -0,0 +1,41 @@
+# putenv.m4 serial 17
+dnl Copyright (C) 2002-2011 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 Jim Meyering.
+dnl
+dnl Check whether putenv ("FOO") removes FOO from the environment.
+dnl The putenv in libc on at least SunOS 4.1.4 does *not* do that.
+
+AC_DEFUN([gl_FUNC_PUTENV],
+[
+  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+  AC_CACHE_CHECK([for putenv compatible with GNU and SVID],
+   [gl_cv_func_svid_putenv],
+   [AC_RUN_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],[[
+    /* Put it in env.  */
+    if (putenv ("CONFTEST_putenv=val"))
+      return 1;
+
+    /* Try to remove it.  */
+    if (putenv ("CONFTEST_putenv"))
+      return 2;
+
+    /* Make sure it was deleted.  */
+    if (getenv ("CONFTEST_putenv") != 0)
+      return 3;
+
+    return 0;
+              ]])],
+             gl_cv_func_svid_putenv=yes,
+             gl_cv_func_svid_putenv=no,
+             dnl When crosscompiling, assume putenv is broken.
+             gl_cv_func_svid_putenv=no)
+   ])
+  if test $gl_cv_func_svid_putenv = no; then
+    REPLACE_PUTENV=1
+    AC_LIBOBJ([putenv])
+  fi
+])
diff --git a/m4/quote.m4 b/m4/quote.m4
new file mode 100644 (file)
index 0000000..2328684
--- /dev/null
@@ -0,0 +1,14 @@
+# quote.m4 serial 5
+dnl Copyright (C) 2002-2003, 2005-2006, 2009-2011 Free Software Foundation,
+dnl 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.
+
+AC_DEFUN([gl_QUOTE],
+[
+  AC_LIBOBJ([quote])
+
+  dnl Prerequisites of lib/quote.c.
+  dnl (none)
+])
diff --git a/m4/quotearg.m4 b/m4/quotearg.m4
new file mode 100644 (file)
index 0000000..ff4a2fa
--- /dev/null
@@ -0,0 +1,10 @@
+# quotearg.m4 serial 8
+dnl Copyright (C) 2002, 2004-2011 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.
+
+AC_DEFUN([gl_QUOTEARG],
+[
+  AC_LIBOBJ([quotearg])
+])
diff --git a/m4/read.m4 b/m4/read.m4
new file mode 100644 (file)
index 0000000..032761f
--- /dev/null
@@ -0,0 +1,20 @@
+# read.m4 serial 1
+dnl Copyright (C) 2011 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.
+
+AC_DEFUN([gl_FUNC_READ],
+[
+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+  dnl This ifdef is just an optimization, to avoid performing a configure
+  dnl check whose result is not used. It does not make the test of
+  dnl GNULIB_UNISTD_H_NONBLOCKING or GNULIB_NONBLOCKING redundant.
+  m4_ifdef([gl_NONBLOCKING_IO], [
+    gl_NONBLOCKING_IO
+    if test $gl_cv_have_nonblocking != yes; then
+      REPLACE_READ=1
+      AC_LIBOBJ([read])
+    fi
+  ])
+])
diff --git a/m4/readlink.m4 b/m4/readlink.m4
new file mode 100644 (file)
index 0000000..ec737d3
--- /dev/null
@@ -0,0 +1,63 @@
+# readlink.m4 serial 10
+dnl Copyright (C) 2003, 2007, 2009-2011 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.
+
+AC_DEFUN([gl_FUNC_READLINK],
+[
+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+  AC_CHECK_FUNCS_ONCE([readlink])
+  if test $ac_cv_func_readlink = no; then
+    HAVE_READLINK=0
+    AC_LIBOBJ([readlink])
+    gl_PREREQ_READLINK
+  else
+    AC_CACHE_CHECK([whether readlink signature is correct],
+      [gl_cv_decl_readlink_works],
+      [AC_COMPILE_IFELSE(
+         [AC_LANG_PROGRAM(
+           [[#include <unistd.h>
+      /* Cause compilation failure if original declaration has wrong type.  */
+      ssize_t readlink (const char *, char *, size_t);]])],
+         [gl_cv_decl_readlink_works=yes], [gl_cv_decl_readlink_works=no])])
+    dnl Solaris 9 ignores trailing slash.
+    dnl FreeBSD 7.2 dereferences only one level of links with trailing slash.
+    AC_CACHE_CHECK([whether readlink handles trailing slash correctly],
+      [gl_cv_func_readlink_works],
+      [# We have readlink, so assume ln -s works.
+       ln -s conftest.no-such conftest.link
+       ln -s conftest.link conftest.lnk2
+       AC_RUN_IFELSE(
+         [AC_LANG_PROGRAM(
+           [[#include <unistd.h>
+]], [[char buf[20];
+      return readlink ("conftest.lnk2/", buf, sizeof buf) != -1;]])],
+         [gl_cv_func_readlink_works=yes], [gl_cv_func_readlink_works=no],
+         [gl_cv_func_readlink_works="guessing no"])
+      rm -f conftest.link conftest.lnk2])
+    if test "$gl_cv_func_readlink_works" != yes; then
+      AC_DEFINE([READLINK_TRAILING_SLASH_BUG], [1], [Define to 1 if readlink
+        fails to recognize a trailing slash.])
+      REPLACE_READLINK=1
+      AC_LIBOBJ([readlink])
+    elif test "$gl_cv_decl_readlink_works" != yes; then
+      REPLACE_READLINK=1
+      AC_LIBOBJ([readlink])
+    fi
+  fi
+])
+
+# Like gl_FUNC_READLINK, except prepare for separate compilation
+# (no REPLACE_READLINK, no AC_LIBOBJ).
+AC_DEFUN([gl_FUNC_READLINK_SEPARATE],
+[
+  AC_CHECK_FUNCS_ONCE([readlink])
+  gl_PREREQ_READLINK
+])
+
+# Prerequisites of lib/readlink.c.
+AC_DEFUN([gl_PREREQ_READLINK],
+[
+  :
+])
diff --git a/m4/realloc.m4 b/m4/realloc.m4
new file mode 100644 (file)
index 0000000..a403d9f
--- /dev/null
@@ -0,0 +1,44 @@
+# realloc.m4 serial 11
+dnl Copyright (C) 2007, 2009-2011 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.
+
+# gl_FUNC_REALLOC_GNU
+# -------------------
+# Test whether 'realloc (0, 0)' is handled like in GNU libc, and replace
+# realloc if it is not.
+AC_DEFUN([gl_FUNC_REALLOC_GNU],
+[
+  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+  dnl _AC_FUNC_REALLOC_IF is defined in Autoconf.
+  _AC_FUNC_REALLOC_IF(
+    [AC_DEFINE([HAVE_REALLOC_GNU], [1],
+               [Define to 1 if your system has a GNU libc compatible 'realloc'
+                function, and to 0 otherwise.])],
+    [AC_DEFINE([HAVE_REALLOC_GNU], [0])
+     gl_REPLACE_REALLOC
+    ])
+])# gl_FUNC_REALLOC_GNU
+
+# gl_FUNC_REALLOC_POSIX
+# ---------------------
+# Test whether 'realloc' is POSIX compliant (sets errno to ENOMEM when it
+# fails), and replace realloc if it is not.
+AC_DEFUN([gl_FUNC_REALLOC_POSIX],
+[
+  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+  AC_REQUIRE([gl_CHECK_MALLOC_POSIX])
+  if test $gl_cv_func_malloc_posix = yes; then
+    AC_DEFINE([HAVE_REALLOC_POSIX], [1],
+      [Define if the 'realloc' function is POSIX compliant.])
+  else
+    gl_REPLACE_REALLOC
+  fi
+])
+
+AC_DEFUN([gl_REPLACE_REALLOC],
+[
+  AC_LIBOBJ([realloc])
+  REPLACE_REALLOC=1
+])
diff --git a/m4/regex.m4 b/m4/regex.m4
new file mode 100644 (file)
index 0000000..24198b5
--- /dev/null
@@ -0,0 +1,225 @@
+# serial 58
+
+# Copyright (C) 1996-2001, 2003-2011 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.
+
+dnl Initially derived from code in GNU grep.
+dnl Mostly written by Jim Meyering.
+
+AC_PREREQ([2.50])
+
+AC_DEFUN([gl_REGEX],
+[
+  AC_ARG_WITH([included-regex],
+    [AS_HELP_STRING([--without-included-regex],
+                    [don't compile regex; this is the default on systems
+                     with recent-enough versions of the GNU C Library
+                     (use with caution on other systems).])])
+
+  case $with_included_regex in #(
+  yes|no) ac_use_included_regex=$with_included_regex
+        ;;
+  '')
+    # If the system regex support is good enough that it passes the
+    # following run test, then default to *not* using the included regex.c.
+    # If cross compiling, assume the test would fail and use the included
+    # regex.c.
+    AC_CACHE_CHECK([for working re_compile_pattern],
+                   [gl_cv_func_re_compile_pattern_working],
+      [AC_RUN_IFELSE(
+        [AC_LANG_PROGRAM(
+          [AC_INCLUDES_DEFAULT[
+           #include <locale.h>
+           #include <limits.h>
+           #include <regex.h>
+           ]],
+          [[int result = 0;
+            static struct re_pattern_buffer regex;
+            unsigned char folded_chars[UCHAR_MAX + 1];
+            int i;
+            const char *s;
+            struct re_registers regs;
+
+            /* http://sourceware.org/ml/libc-hacker/2006-09/msg00008.html
+               This test needs valgrind to catch the bug on Debian
+               GNU/Linux 3.1 x86, but it might catch the bug better
+               on other platforms and it shouldn't hurt to try the
+               test here.  */
+            if (setlocale (LC_ALL, "en_US.UTF-8"))
+              {
+                static char const pat[] = "insert into";
+                static char const data[] =
+                  "\xFF\0\x12\xA2\xAA\xC4\xB1,K\x12\xC4\xB1*\xACK";
+                re_set_syntax (RE_SYNTAX_GREP | RE_HAT_LISTS_NOT_NEWLINE
+                               | RE_ICASE);
+                memset (&regex, 0, sizeof regex);
+                s = re_compile_pattern (pat, sizeof pat - 1, &regex);
+                if (s)
+                  result |= 1;
+                else if (re_search (&regex, data, sizeof data - 1,
+                                    0, sizeof data - 1, &regs)
+                         != -1)
+                  result |= 1;
+                if (! setlocale (LC_ALL, "C"))
+                  return 1;
+              }
+
+            /* This test is from glibc bug 3957, reported by Andrew Mackey.  */
+            re_set_syntax (RE_SYNTAX_EGREP | RE_HAT_LISTS_NOT_NEWLINE);
+            memset (&regex, 0, sizeof regex);
+            s = re_compile_pattern ("a[^x]b", 6, &regex);
+            if (s)
+              result |= 2;
+            /* This should fail, but succeeds for glibc-2.5.  */
+            else if (re_search (&regex, "a\nb", 3, 0, 3, &regs) != -1)
+              result |= 2;
+
+            /* This regular expression is from Spencer ere test number 75
+               in grep-2.3.  */
+            re_set_syntax (RE_SYNTAX_POSIX_EGREP);
+            memset (&regex, 0, sizeof regex);
+            for (i = 0; i <= UCHAR_MAX; i++)
+              folded_chars[i] = i;
+            regex.translate = folded_chars;
+            s = re_compile_pattern ("a[[:@:>@:]]b\n", 11, &regex);
+            /* This should fail with _Invalid character class name_ error.  */
+            if (!s)
+              result |= 4;
+
+            /* Ensure that [b-a] is diagnosed as invalid, when
+               using RE_NO_EMPTY_RANGES. */
+            re_set_syntax (RE_SYNTAX_POSIX_EGREP | RE_NO_EMPTY_RANGES);
+            memset (&regex, 0, sizeof regex);
+            s = re_compile_pattern ("a[b-a]", 6, &regex);
+            if (s == 0)
+              result |= 8;
+
+            /* This should succeed, but does not for glibc-2.1.3.  */
+            memset (&regex, 0, sizeof regex);
+            s = re_compile_pattern ("{1", 2, &regex);
+            if (s)
+              result |= 8;
+
+            /* The following example is derived from a problem report
+               against gawk from Jorge Stolfi <stolfi@ic.unicamp.br>.  */
+            memset (&regex, 0, sizeof regex);
+            s = re_compile_pattern ("[an\371]*n", 7, &regex);
+            if (s)
+              result |= 8;
+            /* This should match, but does not for glibc-2.2.1.  */
+            else if (re_match (&regex, "an", 2, 0, &regs) != 2)
+              result |= 8;
+
+            memset (&regex, 0, sizeof regex);
+            s = re_compile_pattern ("x", 1, &regex);
+            if (s)
+              result |= 8;
+            /* glibc-2.2.93 does not work with a negative RANGE argument.  */
+            else if (re_search (&regex, "wxy", 3, 2, -2, &regs) != 1)
+              result |= 8;
+
+            /* The version of regex.c in older versions of gnulib
+               ignored RE_ICASE.  Detect that problem too.  */
+            re_set_syntax (RE_SYNTAX_EMACS | RE_ICASE);
+            memset (&regex, 0, sizeof regex);
+            s = re_compile_pattern ("x", 1, &regex);
+            if (s)
+              result |= 16;
+            else if (re_search (&regex, "WXY", 3, 0, 3, &regs) < 0)
+              result |= 16;
+
+            /* Catch a bug reported by Vin Shelton in
+               http://lists.gnu.org/archive/html/bug-coreutils/2007-06/msg00089.html
+               */
+            re_set_syntax (RE_SYNTAX_POSIX_BASIC
+                           & ~RE_CONTEXT_INVALID_DUP
+                           & ~RE_NO_EMPTY_RANGES);
+            memset (&regex, 0, sizeof regex);
+            s = re_compile_pattern ("[[:alnum:]_-]\\\\+$", 16, &regex);
+            if (s)
+              result |= 32;
+
+            /* REG_STARTEND was added to glibc on 2004-01-15.
+               Reject older versions.  */
+            if (! REG_STARTEND)
+              result |= 64;
+
+#if 0
+            /* It would be nice to reject hosts whose regoff_t values are too
+               narrow (including glibc on hosts with 64-bit ptrdiff_t and
+               32-bit int), but we should wait until glibc implements this
+               feature.  Otherwise, support for equivalence classes and
+               multibyte collation symbols would always be broken except
+               when compiling --without-included-regex.   */
+            if (sizeof (regoff_t) < sizeof (ptrdiff_t)
+                || sizeof (regoff_t) < sizeof (ssize_t))
+              result |= 64;
+#endif
+
+            return result;
+          ]])],
+       [gl_cv_func_re_compile_pattern_working=yes],
+       [gl_cv_func_re_compile_pattern_working=no],
+       dnl When crosscompiling, assume it is not working.
+       [gl_cv_func_re_compile_pattern_working=no])])
+    case $gl_cv_func_re_compile_pattern_working in #(
+    yes) ac_use_included_regex=no;; #(
+    no) ac_use_included_regex=yes;;
+    esac
+    ;;
+  *) AC_MSG_ERROR([Invalid value for --with-included-regex: $with_included_regex])
+    ;;
+  esac
+
+  if test $ac_use_included_regex = yes; then
+    AC_DEFINE([_REGEX_LARGE_OFFSETS], [1],
+      [Define if you want regoff_t to be at least as wide POSIX requires.])
+    AC_DEFINE([re_syntax_options], [rpl_re_syntax_options],
+      [Define to rpl_re_syntax_options if the replacement should be used.])
+    AC_DEFINE([re_set_syntax], [rpl_re_set_syntax],
+      [Define to rpl_re_set_syntax if the replacement should be used.])
+    AC_DEFINE([re_compile_pattern], [rpl_re_compile_pattern],
+      [Define to rpl_re_compile_pattern if the replacement should be used.])
+    AC_DEFINE([re_compile_fastmap], [rpl_re_compile_fastmap],
+      [Define to rpl_re_compile_fastmap if the replacement should be used.])
+    AC_DEFINE([re_search], [rpl_re_search],
+      [Define to rpl_re_search if the replacement should be used.])
+    AC_DEFINE([re_search_2], [rpl_re_search_2],
+      [Define to rpl_re_search_2 if the replacement should be used.])
+    AC_DEFINE([re_match], [rpl_re_match],
+      [Define to rpl_re_match if the replacement should be used.])
+    AC_DEFINE([re_match_2], [rpl_re_match_2],
+      [Define to rpl_re_match_2 if the replacement should be used.])
+    AC_DEFINE([re_set_registers], [rpl_re_set_registers],
+      [Define to rpl_re_set_registers if the replacement should be used.])
+    AC_DEFINE([re_comp], [rpl_re_comp],
+      [Define to rpl_re_comp if the replacement should be used.])
+    AC_DEFINE([re_exec], [rpl_re_exec],
+      [Define to rpl_re_exec if the replacement should be used.])
+    AC_DEFINE([regcomp], [rpl_regcomp],
+      [Define to rpl_regcomp if the replacement should be used.])
+    AC_DEFINE([regexec], [rpl_regexec],
+      [Define to rpl_regexec if the replacement should be used.])
+    AC_DEFINE([regerror], [rpl_regerror],
+      [Define to rpl_regerror if the replacement should be used.])
+    AC_DEFINE([regfree], [rpl_regfree],
+      [Define to rpl_regfree if the replacement should be used.])
+    AC_LIBOBJ([regex])
+    gl_PREREQ_REGEX
+  fi
+])
+
+# Prerequisites of lib/regex.c and lib/regex_internal.c.
+AC_DEFUN([gl_PREREQ_REGEX],
+[
+  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+  AC_REQUIRE([AC_C_INLINE])
+  AC_REQUIRE([AC_C_RESTRICT])
+  AC_REQUIRE([AC_TYPE_MBSTATE_T])
+  AC_CHECK_HEADERS([libintl.h])
+  AC_CHECK_FUNCS_ONCE([isblank iswctype wcscoll])
+  AC_CHECK_DECLS([isblank], [], [], [#include <ctype.h>])
+])
diff --git a/m4/rpmatch.m4 b/m4/rpmatch.m4
new file mode 100644 (file)
index 0000000..a8d0f10
--- /dev/null
@@ -0,0 +1,32 @@
+# rpmatch.m4 serial 9
+dnl Copyright (C) 2002-2003, 2007-2011 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.
+
+AC_DEFUN([gl_FUNC_RPMATCH],
+[
+  dnl Persuade glibc <stdlib.h> to declare rpmatch().
+  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+
+  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+  AC_REPLACE_FUNCS([rpmatch])
+  if test $ac_cv_func_rpmatch = no; then
+    HAVE_RPMATCH=0
+    gl_PREREQ_RPMATCH
+  fi
+])
+
+# Prerequisites of lib/rpmatch.c.
+AC_DEFUN([gl_PREREQ_RPMATCH], [
+  AC_CACHE_CHECK([for nl_langinfo and YESEXPR], [gl_cv_langinfo_yesexpr],
+    [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <langinfo.h>]],
+       [[char* cs = nl_langinfo(YESEXPR); return !cs;]])],
+       [gl_cv_langinfo_yesexpr=yes],
+       [gl_cv_langinfo_yesexpr=no])
+    ])
+  if test $gl_cv_langinfo_yesexpr = yes; then
+    AC_DEFINE([HAVE_LANGINFO_YESEXPR], [1],
+      [Define if you have <langinfo.h> and nl_langinfo(YESEXPR).])
+  fi
+])
diff --git a/m4/safe-read.m4 b/m4/safe-read.m4
new file mode 100644 (file)
index 0000000..ea8eedb
--- /dev/null
@@ -0,0 +1,19 @@
+# safe-read.m4 serial 5
+dnl Copyright (C) 2002-2003, 2005-2006, 2009-2011 Free Software Foundation,
+dnl 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.
+
+AC_DEFUN([gl_SAFE_READ],
+[
+  AC_LIBOBJ([safe-read])
+
+  gl_PREREQ_SAFE_READ
+])
+
+# Prerequisites of lib/safe-read.c.
+AC_DEFUN([gl_PREREQ_SAFE_READ],
+[
+  AC_REQUIRE([gt_TYPE_SSIZE_T])
+])
diff --git a/m4/setenv.m4 b/m4/setenv.m4
new file mode 100644 (file)
index 0000000..c8b025c
--- /dev/null
@@ -0,0 +1,149 @@
+# setenv.m4 serial 22
+dnl Copyright (C) 2001-2004, 2006-2011 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.
+
+AC_DEFUN([gl_FUNC_SETENV],
+[
+  AC_REQUIRE([gl_FUNC_SETENV_SEPARATE])
+  if test $ac_cv_func_setenv = no; then
+    HAVE_SETENV=0
+  else
+    AC_CACHE_CHECK([whether setenv validates arguments],
+      [gl_cv_func_setenv_works],
+      [AC_RUN_IFELSE([AC_LANG_PROGRAM([[
+       #include <stdlib.h>
+       #include <errno.h>
+       #include <string.h>
+      ]], [[
+       int result = 0;
+       {
+         if (setenv ("", "", 0) != -1)
+           result |= 1;
+         else if (errno != EINVAL)
+           result |= 2;
+       }
+       {
+         if (setenv ("a", "=", 1) != 0)
+           result |= 4;
+         else if (strcmp (getenv ("a"), "=") != 0)
+           result |= 8;
+       }
+       return result;
+      ]])],
+      [gl_cv_func_setenv_works=yes], [gl_cv_func_setenv_works=no],
+      [gl_cv_func_setenv_works="guessing no"])])
+    if test "$gl_cv_func_setenv_works" != yes; then
+      REPLACE_SETENV=1
+    fi
+  fi
+  if test $HAVE_SETENV$REPLACE_SETENV != 10; then
+    AC_LIBOBJ([setenv])
+  fi
+])
+
+# Like gl_FUNC_SETENV, except prepare for separate compilation
+# (no REPLACE_SETENV, no AC_LIBOBJ).
+AC_DEFUN([gl_FUNC_SETENV_SEPARATE],
+[
+  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+  AC_CHECK_DECLS_ONCE([setenv])
+  if test $ac_cv_have_decl_setenv = no; then
+    HAVE_DECL_SETENV=0
+  fi
+  AC_CHECK_FUNCS_ONCE([setenv])
+  gl_PREREQ_SETENV
+])
+
+AC_DEFUN([gl_FUNC_UNSETENV],
+[
+  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+  AC_CHECK_DECLS_ONCE([unsetenv])
+  if test $ac_cv_have_decl_unsetenv = no; then
+    HAVE_DECL_UNSETENV=0
+  fi
+  AC_CHECK_FUNCS([unsetenv])
+  if test $ac_cv_func_unsetenv = no; then
+    AC_LIBOBJ([unsetenv])
+    gl_PREREQ_UNSETENV
+  else
+    dnl Some BSDs return void, failing to do error checking.
+    AC_CACHE_CHECK([for unsetenv() return type], [gt_cv_func_unsetenv_ret],
+      [AC_COMPILE_IFELSE(
+         [AC_LANG_PROGRAM(
+            [[
+#undef _BSD
+#define _BSD 1 /* unhide unsetenv declaration in OSF/1 5.1 <stdlib.h> */
+#include <stdlib.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+#if defined(__STDC__) || defined(__cplusplus)
+int unsetenv (const char *name);
+#else
+int unsetenv();
+#endif
+            ]],
+            [[]])],
+         [gt_cv_func_unsetenv_ret='int'],
+         [gt_cv_func_unsetenv_ret='void'])])
+    if test $gt_cv_func_unsetenv_ret = 'void'; then
+      AC_DEFINE([VOID_UNSETENV], [1], [Define to 1 if unsetenv returns void
+       instead of int.])
+      REPLACE_UNSETENV=1
+      AC_LIBOBJ([unsetenv])
+    fi
+
+    dnl Solaris 10 unsetenv does not remove all copies of a name.
+    dnl Haiku alpha 2 unsetenv gets confused by assignment to environ.
+    dnl OpenBSD 4.7 unsetenv("") does not fail.
+    AC_CACHE_CHECK([whether unsetenv obeys POSIX],
+      [gl_cv_func_unsetenv_works],
+      [AC_RUN_IFELSE([AC_LANG_PROGRAM([[
+       #include <stdlib.h>
+       #include <errno.h>
+       extern char **environ;
+      ]], [[
+       char entry1[] = "a=1";
+       char entry2[] = "b=2";
+       char *env[] = { entry1, entry2, NULL };
+       if (putenv ((char *) "a=1")) return 1;
+       if (putenv (entry2)) return 2;
+       entry2[0] = 'a';
+       unsetenv ("a");
+       if (getenv ("a")) return 3;
+       if (!unsetenv ("") || errno != EINVAL) return 4;
+       entry2[0] = 'b';
+       environ = env;
+       if (!getenv ("a")) return 5;
+       entry2[0] = 'a';
+       unsetenv ("a");
+       if (getenv ("a")) return 6;
+      ]])],
+      [gl_cv_func_unsetenv_works=yes], [gl_cv_func_unsetenv_works=no],
+      [gl_cv_func_unsetenv_works="guessing no"])])
+    if test "$gl_cv_func_unsetenv_works" != yes; then
+      REPLACE_UNSETENV=1
+      AC_LIBOBJ([unsetenv])
+    fi
+  fi
+])
+
+# Prerequisites of lib/setenv.c.
+AC_DEFUN([gl_PREREQ_SETENV],
+[
+  AC_REQUIRE([AC_FUNC_ALLOCA])
+  AC_REQUIRE([gl_ENVIRON])
+  AC_CHECK_HEADERS_ONCE([unistd.h])
+  AC_CHECK_HEADERS([search.h])
+  AC_CHECK_FUNCS([tsearch])
+])
+
+# Prerequisites of lib/unsetenv.c.
+AC_DEFUN([gl_PREREQ_UNSETENV],
+[
+  AC_REQUIRE([gl_ENVIRON])
+  AC_CHECK_HEADERS_ONCE([unistd.h])
+])
diff --git a/m4/setlocale.m4 b/m4/setlocale.m4
new file mode 100644 (file)
index 0000000..cc3ab77
--- /dev/null
@@ -0,0 +1,26 @@
+# setlocale.m4 serial 2
+dnl Copyright (C) 2011 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.
+
+AC_DEFUN([gl_FUNC_SETLOCALE],
+[
+  AC_REQUIRE([gl_LOCALE_H_DEFAULTS])
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  case "$host_os" in
+    dnl On native Windows systems, setlocale(category,NULL) does not look at
+    dnl the environment variables LC_ALL, category, and LANG.
+    mingw*) REPLACE_SETLOCALE=1 ;;
+  esac
+  if test $REPLACE_SETLOCALE = 1; then
+    AC_LIBOBJ([setlocale])
+    gl_PREREQ_SETLOCALE
+  fi
+])
+
+# Prerequisites of lib/setlocale.c.
+AC_DEFUN([gl_PREREQ_SETLOCALE],
+[
+  :
+])
diff --git a/m4/sleep.m4 b/m4/sleep.m4
new file mode 100644 (file)
index 0000000..4a251da
--- /dev/null
@@ -0,0 +1,54 @@
+# sleep.m4 serial 4
+dnl Copyright (C) 2007-2011 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.
+
+AC_DEFUN([gl_FUNC_SLEEP],
+[
+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+  dnl We expect to see the declaration of sleep() in a header file.
+  dnl Older versions of mingw have a sleep() function that is an alias to
+  dnl _sleep() in MSVCRT. It has a different signature than POSIX sleep():
+  dnl it takes the number of milliseconds as argument and returns void.
+  dnl mingw does not declare this function.
+  AC_CHECK_DECLS([sleep], , , [#include <unistd.h>])
+  AC_CHECK_FUNCS_ONCE([sleep])
+  if test $ac_cv_have_decl_sleep != yes; then
+    HAVE_SLEEP=0
+    AC_LIBOBJ([sleep])
+  else
+    dnl Cygwin 1.5.x has a bug where sleep can't exceed 49.7 days.
+    AC_CACHE_CHECK([for working sleep], [gl_cv_func_sleep_works],
+      [AC_RUN_IFELSE([AC_LANG_PROGRAM([[
+#include <errno.h>
+#include <unistd.h>
+#include <signal.h>
+static void
+handle_alarm (int sig)
+{
+  if (sig != SIGALRM)
+    _exit (2);
+}
+]], [[
+    /* Failure to compile this test due to missing alarm is okay,
+       since all such platforms (mingw) also lack sleep.  */
+    unsigned int pentecost = 50 * 24 * 60 * 60; /* 50 days.  */
+    unsigned int remaining;
+    signal (SIGALRM, handle_alarm);
+    alarm (1);
+    remaining = sleep (pentecost);
+    if (remaining > pentecost)
+      return 3;
+    if (remaining <= pentecost - 10)
+      return 4;
+    return 0;
+    ]])],
+      [gl_cv_func_sleep_works=yes], [gl_cv_func_sleep_works=no],
+      [gl_cv_func_sleep_works="guessing no"])])
+    if test "$gl_cv_func_sleep_works" != yes; then
+      REPLACE_SLEEP=1
+      AC_LIBOBJ([sleep])
+    fi
+  fi
+])
diff --git a/m4/ssize_t.m4 b/m4/ssize_t.m4
new file mode 100644 (file)
index 0000000..d712752
--- /dev/null
@@ -0,0 +1,23 @@
+# ssize_t.m4 serial 5 (gettext-0.18.2)
+dnl Copyright (C) 2001-2003, 2006, 2010-2011 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 Test whether ssize_t is defined.
+
+AC_DEFUN([gt_TYPE_SSIZE_T],
+[
+  AC_CACHE_CHECK([for ssize_t], [gt_cv_ssize_t],
+    [AC_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[#include <sys/types.h>]],
+          [[int x = sizeof (ssize_t *) + sizeof (ssize_t);
+            return !x;]])],
+       [gt_cv_ssize_t=yes], [gt_cv_ssize_t=no])])
+  if test $gt_cv_ssize_t = no; then
+    AC_DEFINE([ssize_t], [int],
+              [Define as a signed type of the same size as size_t.])
+  fi
+])
diff --git a/m4/stat.m4 b/m4/stat.m4
new file mode 100644 (file)
index 0000000..27f82d5
--- /dev/null
@@ -0,0 +1,66 @@
+# serial 7
+
+# Copyright (C) 2009-2011 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.
+
+AC_DEFUN([gl_FUNC_STAT],
+[
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
+  AC_CHECK_FUNCS_ONCE([lstat])
+  dnl mingw is the only known platform where stat(".") and stat("./") differ
+  AC_CACHE_CHECK([whether stat handles trailing slashes on directories],
+      [gl_cv_func_stat_dir_slash],
+      [AC_RUN_IFELSE(
+         [AC_LANG_PROGRAM(
+           [[#include <sys/stat.h>
+]], [[struct stat st; return stat (".", &st) != stat ("./", &st);]])],
+         [gl_cv_func_stat_dir_slash=yes], [gl_cv_func_stat_dir_slash=no],
+         [case $host_os in
+            mingw*) gl_cv_func_stat_dir_slash="guessing no";;
+            *) gl_cv_func_stat_dir_slash="guessing yes";;
+          esac])])
+  dnl AIX 7.1, Solaris 9 mistakenly succeed on stat("file/")
+  dnl FreeBSD 7.2 mistakenly succeeds on stat("link-to-file/")
+  AC_CACHE_CHECK([whether stat handles trailing slashes on files],
+      [gl_cv_func_stat_file_slash],
+      [touch conftest.tmp
+       # Assume that if we have lstat, we can also check symlinks.
+       if test $ac_cv_func_lstat = yes; then
+         ln -s conftest.tmp conftest.lnk
+       fi
+       AC_RUN_IFELSE(
+         [AC_LANG_PROGRAM(
+           [[#include <sys/stat.h>
+]], [[int result = 0;
+      struct stat st;
+      if (!stat ("conftest.tmp/", &st))
+        result |= 1;
+#if HAVE_LSTAT
+      if (!stat ("conftest.lnk/", &st))
+        result |= 2;
+#endif
+      return result;
+           ]])],
+         [gl_cv_func_stat_file_slash=yes], [gl_cv_func_stat_file_slash=no],
+         [gl_cv_func_stat_file_slash="guessing no"])
+       rm -f conftest.tmp conftest.lnk])
+  case $gl_cv_func_stat_dir_slash in
+    *no) REPLACE_STAT=1
+      AC_DEFINE([REPLACE_FUNC_STAT_DIR], [1], [Define to 1 if stat needs
+        help when passed a directory name with a trailing slash]);;
+  esac
+  case $gl_cv_func_stat_file_slash in
+    *no) REPLACE_STAT=1
+      AC_DEFINE([REPLACE_FUNC_STAT_FILE], [1], [Define to 1 if stat needs
+        help when passed a file name with a trailing slash]);;
+  esac
+  if test $REPLACE_STAT = 1; then
+    AC_LIBOBJ([stat])
+    dnl Prerequisites of lib/stat.c.
+    AC_REQUIRE([AC_C_INLINE])
+  fi
+])
diff --git a/m4/stdarg.m4 b/m4/stdarg.m4
new file mode 100644 (file)
index 0000000..5705de9
--- /dev/null
@@ -0,0 +1,78 @@
+# stdarg.m4 serial 6
+dnl Copyright (C) 2006, 2008-2011 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 Provide a working va_copy in combination with <stdarg.h>.
+
+AC_DEFUN([gl_STDARG_H],
+[
+  STDARG_H=''
+  NEXT_STDARG_H='<stdarg.h>'
+  AC_MSG_CHECKING([for va_copy])
+  AC_CACHE_VAL([gl_cv_func_va_copy], [
+    AC_COMPILE_IFELSE(
+      [AC_LANG_PROGRAM(
+         [[#include <stdarg.h>]],
+         [[
+#ifndef va_copy
+void (*func) (va_list, va_list) = va_copy;
+#endif
+         ]])],
+      [gl_cv_func_va_copy=yes],
+      [gl_cv_func_va_copy=no])])
+  AC_MSG_RESULT([$gl_cv_func_va_copy])
+  if test $gl_cv_func_va_copy = no; then
+    dnl Provide a substitute.
+    dnl Usually a simple definition in <config.h> is enough. Not so on AIX 5
+    dnl with some versions of the /usr/vac/bin/cc compiler. It has an <stdarg.h>
+    dnl which does '#undef va_copy', leading to a missing va_copy symbol. For
+    dnl this platform, we use an <stdarg.h> substitute. But we cannot use this
+    dnl approach on other platforms, because <stdarg.h> often defines only
+    dnl preprocessor macros and gl_ABSOLUTE_HEADER, gl_CHECK_NEXT_HEADERS do
+    dnl not work in this situation.
+    AC_EGREP_CPP([vaccine],
+      [#if defined _AIX && !defined __GNUC__
+        AIX vaccine
+       #endif
+      ], [gl_aixcc=yes], [gl_aixcc=no])
+    if test $gl_aixcc = yes; then
+      dnl Provide a substitute <stdarg.h> file.
+      STDARG_H=stdarg.h
+      gl_NEXT_HEADERS([stdarg.h])
+      dnl Fallback for the case when <stdarg.h> contains only macro definitions.
+      if test "$gl_cv_next_stdarg_h" = '""'; then
+        gl_cv_next_stdarg_h='"///usr/include/stdarg.h"'
+        NEXT_STDARG_H="$gl_cv_next_stdarg_h"
+      fi
+    else
+      dnl Provide a substitute in <config.h>, either __va_copy or as a simple
+      dnl assignment.
+      gl_CACHE_VAL_SILENT([gl_cv_func___va_copy], [
+        AC_COMPILE_IFELSE(
+          [AC_LANG_PROGRAM(
+             [[#include <stdarg.h>]],
+             [[
+#ifndef __va_copy
+error, bail out
+#endif
+             ]])],
+          [gl_cv_func___va_copy=yes],
+          [gl_cv_func___va_copy=no])])
+      if test $gl_cv_func___va_copy = yes; then
+        AC_DEFINE([va_copy], [__va_copy],
+          [Define as a macro for copying va_list variables.])
+      else
+        AH_VERBATIM([gl_VA_COPY], [/* A replacement for va_copy, if needed.  */
+#define gl_va_copy(a,b) ((a) = (b))])
+        AC_DEFINE([va_copy], [gl_va_copy],
+          [Define as a macro for copying va_list variables.])
+      fi
+    fi
+  fi
+  AC_SUBST([STDARG_H])
+  AM_CONDITIONAL([GL_GENERATE_STDARG_H], [test -n "$STDARG_H"])
+  AC_SUBST([NEXT_STDARG_H])
+])
diff --git a/m4/stdbool.m4 b/m4/stdbool.m4
new file mode 100644 (file)
index 0000000..1ebf3e6
--- /dev/null
@@ -0,0 +1,100 @@
+# Check for stdbool.h that conforms to C99.
+
+dnl Copyright (C) 2002-2006, 2009-2011 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.
+
+#serial 5
+
+# Prepare for substituting <stdbool.h> if it is not supported.
+
+AC_DEFUN([AM_STDBOOL_H],
+[
+  AC_REQUIRE([AC_CHECK_HEADER_STDBOOL])
+
+  # Define two additional variables used in the Makefile substitution.
+
+  if test "$ac_cv_header_stdbool_h" = yes; then
+    STDBOOL_H=''
+  else
+    STDBOOL_H='stdbool.h'
+  fi
+  AC_SUBST([STDBOOL_H])
+  AM_CONDITIONAL([GL_GENERATE_STDBOOL_H], [test -n "$STDBOOL_H"])
+
+  if test "$ac_cv_type__Bool" = yes; then
+    HAVE__BOOL=1
+  else
+    HAVE__BOOL=0
+  fi
+  AC_SUBST([HAVE__BOOL])
+])
+
+# AM_STDBOOL_H will be renamed to gl_STDBOOL_H in the future.
+AC_DEFUN([gl_STDBOOL_H], [AM_STDBOOL_H])
+
+# This version of the macro is needed in autoconf <= 2.68.
+
+AC_DEFUN([AC_CHECK_HEADER_STDBOOL],
+  [AC_CACHE_CHECK([for stdbool.h that conforms to C99],
+     [ac_cv_header_stdbool_h],
+     [AC_COMPILE_IFELSE(
+        [AC_LANG_PROGRAM(
+           [[
+             #include <stdbool.h>
+             #ifndef bool
+              "error: bool is not defined"
+             #endif
+             #ifndef false
+              "error: false is not defined"
+             #endif
+             #if false
+              "error: false is not 0"
+             #endif
+             #ifndef true
+              "error: true is not defined"
+             #endif
+             #if true != 1
+              "error: true is not 1"
+             #endif
+             #ifndef __bool_true_false_are_defined
+              "error: __bool_true_false_are_defined is not defined"
+             #endif
+
+             struct s { _Bool s: 1; _Bool t; } s;
+
+             char a[true == 1 ? 1 : -1];
+             char b[false == 0 ? 1 : -1];
+             char c[__bool_true_false_are_defined == 1 ? 1 : -1];
+             char d[(bool) 0.5 == true ? 1 : -1];
+             /* See body of main program for 'e'.  */
+             char f[(_Bool) 0.0 == false ? 1 : -1];
+             char g[true];
+             char h[sizeof (_Bool)];
+             char i[sizeof s.t];
+             enum { j = false, k = true, l = false * true, m = true * 256 };
+             /* The following fails for
+                HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */
+             _Bool n[m];
+             char o[sizeof n == m * sizeof n[0] ? 1 : -1];
+             char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+             /* Catch a bug in an HP-UX C compiler.  See
+                http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+                http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+              */
+             _Bool q = true;
+             _Bool *pq = &q;
+           ]],
+           [[
+             bool e = &s;
+             *pq |= q;
+             *pq |= ! q;
+             /* Refer to every declared value, to avoid compiler optimizations.  */
+             return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
+                     + !m + !n + !o + !p + !q + !pq);
+           ]])],
+        [ac_cv_header_stdbool_h=yes],
+        [ac_cv_header_stdbool_h=no])])
+   AC_CHECK_TYPES([_Bool])
+])
diff --git a/m4/stddef_h.m4 b/m4/stddef_h.m4
new file mode 100644 (file)
index 0000000..1ae2344
--- /dev/null
@@ -0,0 +1,47 @@
+dnl A placeholder for POSIX 2008 <stddef.h>, for platforms that have issues.
+# stddef_h.m4 serial 4
+dnl Copyright (C) 2009-2011 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.
+
+AC_DEFUN([gl_STDDEF_H],
+[
+  AC_REQUIRE([gl_STDDEF_H_DEFAULTS])
+  AC_REQUIRE([gt_TYPE_WCHAR_T])
+  STDDEF_H=
+  if test $gt_cv_c_wchar_t = no; then
+    HAVE_WCHAR_T=0
+    STDDEF_H=stddef.h
+  fi
+  AC_CACHE_CHECK([whether NULL can be used in arbitrary expressions],
+    [gl_cv_decl_null_works],
+    [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stddef.h>
+      int test[2 * (sizeof NULL == sizeof (void *)) -1];
+]])],
+      [gl_cv_decl_null_works=yes],
+      [gl_cv_decl_null_works=no])])
+  if test $gl_cv_decl_null_works = no; then
+    REPLACE_NULL=1
+    STDDEF_H=stddef.h
+  fi
+  AC_SUBST([STDDEF_H])
+  AM_CONDITIONAL([GL_GENERATE_STDDEF_H], [test -n "$STDDEF_H"])
+  if test -n "$STDDEF_H"; then
+    gl_NEXT_HEADERS([stddef.h])
+  fi
+])
+
+AC_DEFUN([gl_STDDEF_MODULE_INDICATOR],
+[
+  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+  AC_REQUIRE([gl_STDDEF_H_DEFAULTS])
+  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+])
+
+AC_DEFUN([gl_STDDEF_H_DEFAULTS],
+[
+  dnl Assume proper GNU behavior unless another module says otherwise.
+  REPLACE_NULL=0;                AC_SUBST([REPLACE_NULL])
+  HAVE_WCHAR_T=1;                AC_SUBST([HAVE_WCHAR_T])
+])
diff --git a/m4/stdint.m4 b/m4/stdint.m4
new file mode 100644 (file)
index 0000000..c75e957
--- /dev/null
@@ -0,0 +1,480 @@
+# stdint.m4 serial 41
+dnl Copyright (C) 2001-2011 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 Paul Eggert and Bruno Haible.
+dnl Test whether <stdint.h> is supported or must be substituted.
+
+AC_DEFUN_ONCE([gl_STDINT_H],
+[
+  AC_PREREQ([2.59])dnl
+
+  dnl Check for long long int and unsigned long long int.
+  AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
+  if test $ac_cv_type_long_long_int = yes; then
+    HAVE_LONG_LONG_INT=1
+  else
+    HAVE_LONG_LONG_INT=0
+  fi
+  AC_SUBST([HAVE_LONG_LONG_INT])
+  AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
+  if test $ac_cv_type_unsigned_long_long_int = yes; then
+    HAVE_UNSIGNED_LONG_LONG_INT=1
+  else
+    HAVE_UNSIGNED_LONG_LONG_INT=0
+  fi
+  AC_SUBST([HAVE_UNSIGNED_LONG_LONG_INT])
+
+  dnl Check for <wchar.h>, in the same way as gl_WCHAR_H does.
+  AC_CHECK_HEADERS_ONCE([wchar.h])
+  if test $ac_cv_header_wchar_h = yes; then
+    HAVE_WCHAR_H=1
+  else
+    HAVE_WCHAR_H=0
+  fi
+  AC_SUBST([HAVE_WCHAR_H])
+
+  dnl Check for <inttypes.h>.
+  dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_inttypes_h.
+  if test $ac_cv_header_inttypes_h = yes; then
+    HAVE_INTTYPES_H=1
+  else
+    HAVE_INTTYPES_H=0
+  fi
+  AC_SUBST([HAVE_INTTYPES_H])
+
+  dnl Check for <sys/types.h>.
+  dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_sys_types_h.
+  if test $ac_cv_header_sys_types_h = yes; then
+    HAVE_SYS_TYPES_H=1
+  else
+    HAVE_SYS_TYPES_H=0
+  fi
+  AC_SUBST([HAVE_SYS_TYPES_H])
+
+  gl_CHECK_NEXT_HEADERS([stdint.h])
+  if test $ac_cv_header_stdint_h = yes; then
+    HAVE_STDINT_H=1
+  else
+    HAVE_STDINT_H=0
+  fi
+  AC_SUBST([HAVE_STDINT_H])
+
+  dnl Now see whether we need a substitute <stdint.h>.
+  if test $ac_cv_header_stdint_h = yes; then
+    AC_CACHE_CHECK([whether stdint.h conforms to C99],
+      [gl_cv_header_working_stdint_h],
+      [gl_cv_header_working_stdint_h=no
+       AC_COMPILE_IFELSE([
+         AC_LANG_PROGRAM([[
+#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
+#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */
+#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
+#include <stdint.h>
+/* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in <wchar.h>.  */
+#if !(defined WCHAR_MIN && defined WCHAR_MAX)
+#error "WCHAR_MIN, WCHAR_MAX not defined in <stdint.h>"
+#endif
+]
+gl_STDINT_INCLUDES
+[
+#ifdef INT8_MAX
+int8_t a1 = INT8_MAX;
+int8_t a1min = INT8_MIN;
+#endif
+#ifdef INT16_MAX
+int16_t a2 = INT16_MAX;
+int16_t a2min = INT16_MIN;
+#endif
+#ifdef INT32_MAX
+int32_t a3 = INT32_MAX;
+int32_t a3min = INT32_MIN;
+#endif
+#ifdef INT64_MAX
+int64_t a4 = INT64_MAX;
+int64_t a4min = INT64_MIN;
+#endif
+#ifdef UINT8_MAX
+uint8_t b1 = UINT8_MAX;
+#else
+typedef int b1[(unsigned char) -1 != 255 ? 1 : -1];
+#endif
+#ifdef UINT16_MAX
+uint16_t b2 = UINT16_MAX;
+#endif
+#ifdef UINT32_MAX
+uint32_t b3 = UINT32_MAX;
+#endif
+#ifdef UINT64_MAX
+uint64_t b4 = UINT64_MAX;
+#endif
+int_least8_t c1 = INT8_C (0x7f);
+int_least8_t c1max = INT_LEAST8_MAX;
+int_least8_t c1min = INT_LEAST8_MIN;
+int_least16_t c2 = INT16_C (0x7fff);
+int_least16_t c2max = INT_LEAST16_MAX;
+int_least16_t c2min = INT_LEAST16_MIN;
+int_least32_t c3 = INT32_C (0x7fffffff);
+int_least32_t c3max = INT_LEAST32_MAX;
+int_least32_t c3min = INT_LEAST32_MIN;
+int_least64_t c4 = INT64_C (0x7fffffffffffffff);
+int_least64_t c4max = INT_LEAST64_MAX;
+int_least64_t c4min = INT_LEAST64_MIN;
+uint_least8_t d1 = UINT8_C (0xff);
+uint_least8_t d1max = UINT_LEAST8_MAX;
+uint_least16_t d2 = UINT16_C (0xffff);
+uint_least16_t d2max = UINT_LEAST16_MAX;
+uint_least32_t d3 = UINT32_C (0xffffffff);
+uint_least32_t d3max = UINT_LEAST32_MAX;
+uint_least64_t d4 = UINT64_C (0xffffffffffffffff);
+uint_least64_t d4max = UINT_LEAST64_MAX;
+int_fast8_t e1 = INT_FAST8_MAX;
+int_fast8_t e1min = INT_FAST8_MIN;
+int_fast16_t e2 = INT_FAST16_MAX;
+int_fast16_t e2min = INT_FAST16_MIN;
+int_fast32_t e3 = INT_FAST32_MAX;
+int_fast32_t e3min = INT_FAST32_MIN;
+int_fast64_t e4 = INT_FAST64_MAX;
+int_fast64_t e4min = INT_FAST64_MIN;
+uint_fast8_t f1 = UINT_FAST8_MAX;
+uint_fast16_t f2 = UINT_FAST16_MAX;
+uint_fast32_t f3 = UINT_FAST32_MAX;
+uint_fast64_t f4 = UINT_FAST64_MAX;
+#ifdef INTPTR_MAX
+intptr_t g = INTPTR_MAX;
+intptr_t gmin = INTPTR_MIN;
+#endif
+#ifdef UINTPTR_MAX
+uintptr_t h = UINTPTR_MAX;
+#endif
+intmax_t i = INTMAX_MAX;
+uintmax_t j = UINTMAX_MAX;
+
+#include <limits.h> /* for CHAR_BIT */
+#define TYPE_MINIMUM(t) \
+  ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ TYPE_MAXIMUM (t)))
+#define TYPE_MAXIMUM(t) \
+  ((t) ((t) 0 < (t) -1 \
+        ? (t) -1 \
+        : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1)))
+struct s {
+  int check_PTRDIFF:
+      PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t)
+      && PTRDIFF_MAX == TYPE_MAXIMUM (ptrdiff_t)
+      ? 1 : -1;
+  /* Detect bug in FreeBSD 6.0 / ia64.  */
+  int check_SIG_ATOMIC:
+      SIG_ATOMIC_MIN == TYPE_MINIMUM (sig_atomic_t)
+      && SIG_ATOMIC_MAX == TYPE_MAXIMUM (sig_atomic_t)
+      ? 1 : -1;
+  int check_SIZE: SIZE_MAX == TYPE_MAXIMUM (size_t) ? 1 : -1;
+  int check_WCHAR:
+      WCHAR_MIN == TYPE_MINIMUM (wchar_t)
+      && WCHAR_MAX == TYPE_MAXIMUM (wchar_t)
+      ? 1 : -1;
+  /* Detect bug in mingw.  */
+  int check_WINT:
+      WINT_MIN == TYPE_MINIMUM (wint_t)
+      && WINT_MAX == TYPE_MAXIMUM (wint_t)
+      ? 1 : -1;
+
+  /* Detect bugs in glibc 2.4 and Solaris 10 stdint.h, among others.  */
+  int check_UINT8_C:
+        (-1 < UINT8_C (0)) == (-1 < (uint_least8_t) 0) ? 1 : -1;
+  int check_UINT16_C:
+        (-1 < UINT16_C (0)) == (-1 < (uint_least16_t) 0) ? 1 : -1;
+
+  /* Detect bugs in OpenBSD 3.9 stdint.h.  */
+#ifdef UINT8_MAX
+  int check_uint8: (uint8_t) -1 == UINT8_MAX ? 1 : -1;
+#endif
+#ifdef UINT16_MAX
+  int check_uint16: (uint16_t) -1 == UINT16_MAX ? 1 : -1;
+#endif
+#ifdef UINT32_MAX
+  int check_uint32: (uint32_t) -1 == UINT32_MAX ? 1 : -1;
+#endif
+#ifdef UINT64_MAX
+  int check_uint64: (uint64_t) -1 == UINT64_MAX ? 1 : -1;
+#endif
+  int check_uint_least8: (uint_least8_t) -1 == UINT_LEAST8_MAX ? 1 : -1;
+  int check_uint_least16: (uint_least16_t) -1 == UINT_LEAST16_MAX ? 1 : -1;
+  int check_uint_least32: (uint_least32_t) -1 == UINT_LEAST32_MAX ? 1 : -1;
+  int check_uint_least64: (uint_least64_t) -1 == UINT_LEAST64_MAX ? 1 : -1;
+  int check_uint_fast8: (uint_fast8_t) -1 == UINT_FAST8_MAX ? 1 : -1;
+  int check_uint_fast16: (uint_fast16_t) -1 == UINT_FAST16_MAX ? 1 : -1;
+  int check_uint_fast32: (uint_fast32_t) -1 == UINT_FAST32_MAX ? 1 : -1;
+  int check_uint_fast64: (uint_fast64_t) -1 == UINT_FAST64_MAX ? 1 : -1;
+  int check_uintptr: (uintptr_t) -1 == UINTPTR_MAX ? 1 : -1;
+  int check_uintmax: (uintmax_t) -1 == UINTMAX_MAX ? 1 : -1;
+  int check_size: (size_t) -1 == SIZE_MAX ? 1 : -1;
+};
+         ]])],
+         [dnl Determine whether the various *_MIN, *_MAX macros are usable
+          dnl in preprocessor expression. We could do it by compiling a test
+          dnl program for each of these macros. It is faster to run a program
+          dnl that inspects the macro expansion.
+          dnl This detects a bug on HP-UX 11.23/ia64.
+          AC_RUN_IFELSE([
+            AC_LANG_PROGRAM([[
+#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
+#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */
+#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
+#include <stdint.h>
+]
+gl_STDINT_INCLUDES
+[
+#include <stdio.h>
+#include <string.h>
+#define MVAL(macro) MVAL1(macro)
+#define MVAL1(expression) #expression
+static const char *macro_values[] =
+  {
+#ifdef INT8_MAX
+    MVAL (INT8_MAX),
+#endif
+#ifdef INT16_MAX
+    MVAL (INT16_MAX),
+#endif
+#ifdef INT32_MAX
+    MVAL (INT32_MAX),
+#endif
+#ifdef INT64_MAX
+    MVAL (INT64_MAX),
+#endif
+#ifdef UINT8_MAX
+    MVAL (UINT8_MAX),
+#endif
+#ifdef UINT16_MAX
+    MVAL (UINT16_MAX),
+#endif
+#ifdef UINT32_MAX
+    MVAL (UINT32_MAX),
+#endif
+#ifdef UINT64_MAX
+    MVAL (UINT64_MAX),
+#endif
+    NULL
+  };
+]], [[
+  const char **mv;
+  for (mv = macro_values; *mv != NULL; mv++)
+    {
+      const char *value = *mv;
+      /* Test whether it looks like a cast expression.  */
+      if (strncmp (value, "((unsigned int)"/*)*/, 15) == 0
+          || strncmp (value, "((unsigned short)"/*)*/, 17) == 0
+          || strncmp (value, "((unsigned char)"/*)*/, 16) == 0
+          || strncmp (value, "((int)"/*)*/, 6) == 0
+          || strncmp (value, "((signed short)"/*)*/, 15) == 0
+          || strncmp (value, "((signed char)"/*)*/, 14) == 0)
+        return mv - macro_values + 1;
+    }
+  return 0;
+]])],
+              [gl_cv_header_working_stdint_h=yes],
+              [],
+              [dnl When cross-compiling, assume it works.
+               gl_cv_header_working_stdint_h=yes
+              ])
+         ])
+      ])
+  fi
+  if test "$gl_cv_header_working_stdint_h" = yes; then
+    STDINT_H=
+  else
+    dnl Check for <sys/inttypes.h>, and for
+    dnl <sys/bitypes.h> (used in Linux libc4 >= 4.6.7 and libc5).
+    AC_CHECK_HEADERS([sys/inttypes.h sys/bitypes.h])
+    if test $ac_cv_header_sys_inttypes_h = yes; then
+      HAVE_SYS_INTTYPES_H=1
+    else
+      HAVE_SYS_INTTYPES_H=0
+    fi
+    AC_SUBST([HAVE_SYS_INTTYPES_H])
+    if test $ac_cv_header_sys_bitypes_h = yes; then
+      HAVE_SYS_BITYPES_H=1
+    else
+      HAVE_SYS_BITYPES_H=0
+    fi
+    AC_SUBST([HAVE_SYS_BITYPES_H])
+
+    gl_STDINT_TYPE_PROPERTIES
+    STDINT_H=stdint.h
+  fi
+  AC_SUBST([STDINT_H])
+  AM_CONDITIONAL([GL_GENERATE_STDINT_H], [test -n "$STDINT_H"])
+])
+
+dnl gl_STDINT_BITSIZEOF(TYPES, INCLUDES)
+dnl Determine the size of each of the given types in bits.
+AC_DEFUN([gl_STDINT_BITSIZEOF],
+[
+  dnl Use a shell loop, to avoid bloating configure, and
+  dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into
+  dnl   config.h.in,
+  dnl - extra AC_SUBST calls, so that the right substitutions are made.
+  m4_foreach_w([gltype], [$1],
+    [AH_TEMPLATE([BITSIZEOF_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]),
+       [Define to the number of bits in type ']gltype['.])])
+  for gltype in $1 ; do
+    AC_CACHE_CHECK([for bit size of $gltype], [gl_cv_bitsizeof_${gltype}],
+      [AC_COMPUTE_INT([result], [sizeof ($gltype) * CHAR_BIT],
+         [$2
+#include <limits.h>], [result=unknown])
+       eval gl_cv_bitsizeof_${gltype}=\$result
+      ])
+    eval result=\$gl_cv_bitsizeof_${gltype}
+    if test $result = unknown; then
+      dnl Use a nonempty default, because some compilers, such as IRIX 5 cc,
+      dnl do a syntax check even on unused #if conditions and give an error
+      dnl on valid C code like this:
+      dnl   #if 0
+      dnl   # if  > 32
+      dnl   # endif
+      dnl   #endif
+      result=0
+    fi
+    GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+    AC_DEFINE_UNQUOTED([BITSIZEOF_${GLTYPE}], [$result])
+    eval BITSIZEOF_${GLTYPE}=\$result
+  done
+  m4_foreach_w([gltype], [$1],
+    [AC_SUBST([BITSIZEOF_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))])
+])
+
+dnl gl_CHECK_TYPES_SIGNED(TYPES, INCLUDES)
+dnl Determine the signedness of each of the given types.
+dnl Define HAVE_SIGNED_TYPE if type is signed.
+AC_DEFUN([gl_CHECK_TYPES_SIGNED],
+[
+  dnl Use a shell loop, to avoid bloating configure, and
+  dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into
+  dnl   config.h.in,
+  dnl - extra AC_SUBST calls, so that the right substitutions are made.
+  m4_foreach_w([gltype], [$1],
+    [AH_TEMPLATE([HAVE_SIGNED_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]),
+       [Define to 1 if ']gltype[' is a signed integer type.])])
+  for gltype in $1 ; do
+    AC_CACHE_CHECK([whether $gltype is signed], [gl_cv_type_${gltype}_signed],
+      [AC_COMPILE_IFELSE(
+         [AC_LANG_PROGRAM([$2[
+            int verify[2 * (($gltype) -1 < ($gltype) 0) - 1];]])],
+         result=yes, result=no)
+       eval gl_cv_type_${gltype}_signed=\$result
+      ])
+    eval result=\$gl_cv_type_${gltype}_signed
+    GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+    if test "$result" = yes; then
+      AC_DEFINE_UNQUOTED([HAVE_SIGNED_${GLTYPE}], [1])
+      eval HAVE_SIGNED_${GLTYPE}=1
+    else
+      eval HAVE_SIGNED_${GLTYPE}=0
+    fi
+  done
+  m4_foreach_w([gltype], [$1],
+    [AC_SUBST([HAVE_SIGNED_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))])
+])
+
+dnl gl_INTEGER_TYPE_SUFFIX(TYPES, INCLUDES)
+dnl Determine the suffix to use for integer constants of the given types.
+dnl Define t_SUFFIX for each such type.
+AC_DEFUN([gl_INTEGER_TYPE_SUFFIX],
+[
+  dnl Use a shell loop, to avoid bloating configure, and
+  dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into
+  dnl   config.h.in,
+  dnl - extra AC_SUBST calls, so that the right substitutions are made.
+  m4_foreach_w([gltype], [$1],
+    [AH_TEMPLATE(m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX],
+       [Define to l, ll, u, ul, ull, etc., as suitable for
+        constants of type ']gltype['.])])
+  for gltype in $1 ; do
+    AC_CACHE_CHECK([for $gltype integer literal suffix],
+      [gl_cv_type_${gltype}_suffix],
+      [eval gl_cv_type_${gltype}_suffix=no
+       eval result=\$gl_cv_type_${gltype}_signed
+       if test "$result" = yes; then
+         glsufu=
+       else
+         glsufu=u
+       fi
+       for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do
+         case $glsuf in
+           '')  gltype1='int';;
+           l)   gltype1='long int';;
+           ll)  gltype1='long long int';;
+           i64) gltype1='__int64';;
+           u)   gltype1='unsigned int';;
+           ul)  gltype1='unsigned long int';;
+           ull) gltype1='unsigned long long int';;
+           ui64)gltype1='unsigned __int64';;
+         esac
+         AC_COMPILE_IFELSE(
+           [AC_LANG_PROGRAM([$2[
+              extern $gltype foo;
+              extern $gltype1 foo;]])],
+           [eval gl_cv_type_${gltype}_suffix=\$glsuf])
+         eval result=\$gl_cv_type_${gltype}_suffix
+         test "$result" != no && break
+       done])
+    GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+    eval result=\$gl_cv_type_${gltype}_suffix
+    test "$result" = no && result=
+    eval ${GLTYPE}_SUFFIX=\$result
+    AC_DEFINE_UNQUOTED([${GLTYPE}_SUFFIX], [$result])
+  done
+  m4_foreach_w([gltype], [$1],
+    [AC_SUBST(m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX])])
+])
+
+dnl gl_STDINT_INCLUDES
+AC_DEFUN([gl_STDINT_INCLUDES],
+[[
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+]])
+
+dnl gl_STDINT_TYPE_PROPERTIES
+dnl Compute HAVE_SIGNED_t, BITSIZEOF_t and t_SUFFIX, for all the types t
+dnl of interest to stdint.in.h.
+AC_DEFUN([gl_STDINT_TYPE_PROPERTIES],
+[
+  AC_REQUIRE([gl_MULTIARCH])
+  if test $APPLE_UNIVERSAL_BUILD = 0; then
+    gl_STDINT_BITSIZEOF([ptrdiff_t size_t],
+      [gl_STDINT_INCLUDES])
+  fi
+  gl_STDINT_BITSIZEOF([sig_atomic_t wchar_t wint_t],
+    [gl_STDINT_INCLUDES])
+  gl_CHECK_TYPES_SIGNED([sig_atomic_t wchar_t wint_t],
+    [gl_STDINT_INCLUDES])
+  gl_cv_type_ptrdiff_t_signed=yes
+  gl_cv_type_size_t_signed=no
+  if test $APPLE_UNIVERSAL_BUILD = 0; then
+    gl_INTEGER_TYPE_SUFFIX([ptrdiff_t size_t],
+      [gl_STDINT_INCLUDES])
+  fi
+  gl_INTEGER_TYPE_SUFFIX([sig_atomic_t wchar_t wint_t],
+    [gl_STDINT_INCLUDES])
+])
+
+dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in.
+dnl Remove this when we can assume autoconf >= 2.61.
+m4_ifdef([AC_COMPUTE_INT], [], [
+  AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])])
+])
+
+# Hey Emacs!
+# Local Variables:
+# indent-tabs-mode: nil
+# End:
diff --git a/m4/stdio_h.m4 b/m4/stdio_h.m4
new file mode 100644 (file)
index 0000000..a8326f3
--- /dev/null
@@ -0,0 +1,190 @@
+# stdio_h.m4 serial 37
+dnl Copyright (C) 2007-2011 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.
+
+AC_DEFUN([gl_STDIO_H],
+[
+  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+  AC_REQUIRE([AC_C_INLINE])
+  gl_NEXT_HEADERS([stdio.h])
+
+  dnl No need to create extra modules for these functions. Everyone who uses
+  dnl <stdio.h> likely needs them.
+  GNULIB_FSCANF=1
+  GNULIB_SCANF=1
+  GNULIB_FGETC=1
+  GNULIB_GETC=1
+  GNULIB_GETCHAR=1
+  GNULIB_FGETS=1
+  GNULIB_GETS=1
+  GNULIB_FREAD=1
+  dnl This ifdef is necessary to avoid an error "missing file lib/stdio-read.c"
+  dnl "expected source file, required through AC_LIBSOURCES, not found". It is
+  dnl also an optimization, to avoid performing a configure check whose result
+  dnl is not used. But it does not make the test of GNULIB_STDIO_H_NONBLOCKING
+  dnl or GNULIB_NONBLOCKING redundant.
+  m4_ifdef([gl_NONBLOCKING_IO], [
+    gl_NONBLOCKING_IO
+    if test $gl_cv_have_nonblocking != yes; then
+      REPLACE_STDIO_READ_FUNCS=1
+      AC_LIBOBJ([stdio-read])
+    fi
+  ])
+
+  dnl No need to create extra modules for these functions. Everyone who uses
+  dnl <stdio.h> likely needs them.
+  GNULIB_FPRINTF=1
+  GNULIB_PRINTF=1
+  GNULIB_VFPRINTF=1
+  GNULIB_VPRINTF=1
+  GNULIB_FPUTC=1
+  GNULIB_PUTC=1
+  GNULIB_PUTCHAR=1
+  GNULIB_FPUTS=1
+  GNULIB_PUTS=1
+  GNULIB_FWRITE=1
+  dnl This ifdef is necessary to avoid an error "missing file lib/stdio-write.c"
+  dnl "expected source file, required through AC_LIBSOURCES, not found". It is
+  dnl also an optimization, to avoid performing a configure check whose result
+  dnl is not used. But it does not make the test of GNULIB_STDIO_H_SIGPIPE or
+  dnl GNULIB_SIGPIPE redundant.
+  m4_ifdef([gl_SIGNAL_SIGPIPE], [
+    gl_SIGNAL_SIGPIPE
+    if test $gl_cv_header_signal_h_SIGPIPE != yes; then
+      REPLACE_STDIO_WRITE_FUNCS=1
+      AC_LIBOBJ([stdio-write])
+    fi
+  ])
+  dnl This ifdef is necessary to avoid an error "missing file lib/stdio-write.c"
+  dnl "expected source file, required through AC_LIBSOURCES, not found". It is
+  dnl also an optimization, to avoid performing a configure check whose result
+  dnl is not used. But it does not make the test of GNULIB_STDIO_H_NONBLOCKING
+  dnl or GNULIB_NONBLOCKING redundant.
+  m4_ifdef([gl_NONBLOCKING_IO], [
+    gl_NONBLOCKING_IO
+    if test $gl_cv_have_nonblocking != yes; then
+      REPLACE_STDIO_WRITE_FUNCS=1
+      AC_LIBOBJ([stdio-write])
+    fi
+  ])
+
+  dnl Check for declarations of anything we want to poison if the
+  dnl corresponding gnulib module is not in use, and which is not
+  dnl guaranteed by C89.
+  gl_WARN_ON_USE_PREPARE([[#include <stdio.h>
+    ]], [dprintf fpurge fseeko ftello getdelim getline popen renameat
+    snprintf tmpfile vdprintf vsnprintf])
+])
+
+AC_DEFUN([gl_STDIO_MODULE_INDICATOR],
+[
+  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+  dnl Define it also as a C macro, for the benefit of the unit tests.
+  gl_MODULE_INDICATOR_FOR_TESTS([$1])
+])
+
+AC_DEFUN([gl_STDIO_H_DEFAULTS],
+[
+  GNULIB_DPRINTF=0;              AC_SUBST([GNULIB_DPRINTF])
+  GNULIB_FCLOSE=0;               AC_SUBST([GNULIB_FCLOSE])
+  GNULIB_FFLUSH=0;               AC_SUBST([GNULIB_FFLUSH])
+  GNULIB_FGETC=0;                AC_SUBST([GNULIB_FGETC])
+  GNULIB_FGETS=0;                AC_SUBST([GNULIB_FGETS])
+  GNULIB_FOPEN=0;                AC_SUBST([GNULIB_FOPEN])
+  GNULIB_FPRINTF=0;              AC_SUBST([GNULIB_FPRINTF])
+  GNULIB_FPRINTF_POSIX=0;        AC_SUBST([GNULIB_FPRINTF_POSIX])
+  GNULIB_FPURGE=0;               AC_SUBST([GNULIB_FPURGE])
+  GNULIB_FPUTC=0;                AC_SUBST([GNULIB_FPUTC])
+  GNULIB_FPUTS=0;                AC_SUBST([GNULIB_FPUTS])
+  GNULIB_FREAD=0;                AC_SUBST([GNULIB_FREAD])
+  GNULIB_FREOPEN=0;              AC_SUBST([GNULIB_FREOPEN])
+  GNULIB_FSCANF=0;               AC_SUBST([GNULIB_FSCANF])
+  GNULIB_FSEEK=0;                AC_SUBST([GNULIB_FSEEK])
+  GNULIB_FSEEKO=0;               AC_SUBST([GNULIB_FSEEKO])
+  GNULIB_FTELL=0;                AC_SUBST([GNULIB_FTELL])
+  GNULIB_FTELLO=0;               AC_SUBST([GNULIB_FTELLO])
+  GNULIB_FWRITE=0;               AC_SUBST([GNULIB_FWRITE])
+  GNULIB_GETC=0;                 AC_SUBST([GNULIB_GETC])
+  GNULIB_GETCHAR=0;              AC_SUBST([GNULIB_GETCHAR])
+  GNULIB_GETDELIM=0;             AC_SUBST([GNULIB_GETDELIM])
+  GNULIB_GETLINE=0;              AC_SUBST([GNULIB_GETLINE])
+  GNULIB_GETS=0;                 AC_SUBST([GNULIB_GETS])
+  GNULIB_OBSTACK_PRINTF=0;       AC_SUBST([GNULIB_OBSTACK_PRINTF])
+  GNULIB_OBSTACK_PRINTF_POSIX=0; AC_SUBST([GNULIB_OBSTACK_PRINTF_POSIX])
+  GNULIB_PERROR=0;               AC_SUBST([GNULIB_PERROR])
+  GNULIB_POPEN=0;                AC_SUBST([GNULIB_POPEN])
+  GNULIB_PRINTF=0;               AC_SUBST([GNULIB_PRINTF])
+  GNULIB_PRINTF_POSIX=0;         AC_SUBST([GNULIB_PRINTF_POSIX])
+  GNULIB_PUTC=0;                 AC_SUBST([GNULIB_PUTC])
+  GNULIB_PUTCHAR=0;              AC_SUBST([GNULIB_PUTCHAR])
+  GNULIB_PUTS=0;                 AC_SUBST([GNULIB_PUTS])
+  GNULIB_REMOVE=0;               AC_SUBST([GNULIB_REMOVE])
+  GNULIB_RENAME=0;               AC_SUBST([GNULIB_RENAME])
+  GNULIB_RENAMEAT=0;             AC_SUBST([GNULIB_RENAMEAT])
+  GNULIB_SCANF=0;                AC_SUBST([GNULIB_SCANF])
+  GNULIB_SNPRINTF=0;             AC_SUBST([GNULIB_SNPRINTF])
+  GNULIB_SPRINTF_POSIX=0;        AC_SUBST([GNULIB_SPRINTF_POSIX])
+  GNULIB_STDIO_H_NONBLOCKING=0;  AC_SUBST([GNULIB_STDIO_H_NONBLOCKING])
+  GNULIB_STDIO_H_SIGPIPE=0;      AC_SUBST([GNULIB_STDIO_H_SIGPIPE])
+  GNULIB_TMPFILE=0;              AC_SUBST([GNULIB_TMPFILE])
+  GNULIB_VASPRINTF=0;            AC_SUBST([GNULIB_VASPRINTF])
+  GNULIB_VFSCANF=0;              AC_SUBST([GNULIB_VFSCANF])
+  GNULIB_VSCANF=0;               AC_SUBST([GNULIB_VSCANF])
+  GNULIB_VDPRINTF=0;             AC_SUBST([GNULIB_VDPRINTF])
+  GNULIB_VFPRINTF=0;             AC_SUBST([GNULIB_VFPRINTF])
+  GNULIB_VFPRINTF_POSIX=0;       AC_SUBST([GNULIB_VFPRINTF_POSIX])
+  GNULIB_VPRINTF=0;              AC_SUBST([GNULIB_VPRINTF])
+  GNULIB_VPRINTF_POSIX=0;        AC_SUBST([GNULIB_VPRINTF_POSIX])
+  GNULIB_VSNPRINTF=0;            AC_SUBST([GNULIB_VSNPRINTF])
+  GNULIB_VSPRINTF_POSIX=0;       AC_SUBST([GNULIB_VSPRINTF_POSIX])
+  dnl Assume proper GNU behavior unless another module says otherwise.
+  HAVE_DECL_FPURGE=1;            AC_SUBST([HAVE_DECL_FPURGE])
+  HAVE_DECL_FSEEKO=1;            AC_SUBST([HAVE_DECL_FSEEKO])
+  HAVE_DECL_FTELLO=1;            AC_SUBST([HAVE_DECL_FTELLO])
+  HAVE_DECL_GETDELIM=1;          AC_SUBST([HAVE_DECL_GETDELIM])
+  HAVE_DECL_GETLINE=1;           AC_SUBST([HAVE_DECL_GETLINE])
+  HAVE_DECL_OBSTACK_PRINTF=1;    AC_SUBST([HAVE_DECL_OBSTACK_PRINTF])
+  HAVE_DECL_SNPRINTF=1;          AC_SUBST([HAVE_DECL_SNPRINTF])
+  HAVE_DECL_VSNPRINTF=1;         AC_SUBST([HAVE_DECL_VSNPRINTF])
+  HAVE_DPRINTF=1;                AC_SUBST([HAVE_DPRINTF])
+  HAVE_FSEEKO=1;                 AC_SUBST([HAVE_FSEEKO])
+  HAVE_FTELLO=1;                 AC_SUBST([HAVE_FTELLO])
+  HAVE_RENAMEAT=1;               AC_SUBST([HAVE_RENAMEAT])
+  HAVE_VASPRINTF=1;              AC_SUBST([HAVE_VASPRINTF])
+  HAVE_VDPRINTF=1;               AC_SUBST([HAVE_VDPRINTF])
+  REPLACE_DPRINTF=0;             AC_SUBST([REPLACE_DPRINTF])
+  REPLACE_FCLOSE=0;              AC_SUBST([REPLACE_FCLOSE])
+  REPLACE_FFLUSH=0;              AC_SUBST([REPLACE_FFLUSH])
+  REPLACE_FOPEN=0;               AC_SUBST([REPLACE_FOPEN])
+  REPLACE_FPRINTF=0;             AC_SUBST([REPLACE_FPRINTF])
+  REPLACE_FPURGE=0;              AC_SUBST([REPLACE_FPURGE])
+  REPLACE_FREOPEN=0;             AC_SUBST([REPLACE_FREOPEN])
+  REPLACE_FSEEK=0;               AC_SUBST([REPLACE_FSEEK])
+  REPLACE_FSEEKO=0;              AC_SUBST([REPLACE_FSEEKO])
+  REPLACE_FTELL=0;               AC_SUBST([REPLACE_FTELL])
+  REPLACE_FTELLO=0;              AC_SUBST([REPLACE_FTELLO])
+  REPLACE_GETDELIM=0;            AC_SUBST([REPLACE_GETDELIM])
+  REPLACE_GETLINE=0;             AC_SUBST([REPLACE_GETLINE])
+  REPLACE_OBSTACK_PRINTF=0;      AC_SUBST([REPLACE_OBSTACK_PRINTF])
+  REPLACE_PERROR=0;              AC_SUBST([REPLACE_PERROR])
+  REPLACE_POPEN=0;               AC_SUBST([REPLACE_POPEN])
+  REPLACE_PRINTF=0;              AC_SUBST([REPLACE_PRINTF])
+  REPLACE_REMOVE=0;              AC_SUBST([REPLACE_REMOVE])
+  REPLACE_RENAME=0;              AC_SUBST([REPLACE_RENAME])
+  REPLACE_RENAMEAT=0;            AC_SUBST([REPLACE_RENAMEAT])
+  REPLACE_SNPRINTF=0;            AC_SUBST([REPLACE_SNPRINTF])
+  REPLACE_SPRINTF=0;             AC_SUBST([REPLACE_SPRINTF])
+  REPLACE_STDIO_READ_FUNCS=0;    AC_SUBST([REPLACE_STDIO_READ_FUNCS])
+  REPLACE_STDIO_WRITE_FUNCS=0;   AC_SUBST([REPLACE_STDIO_WRITE_FUNCS])
+  REPLACE_TMPFILE=0;             AC_SUBST([REPLACE_TMPFILE])
+  REPLACE_VASPRINTF=0;           AC_SUBST([REPLACE_VASPRINTF])
+  REPLACE_VDPRINTF=0;            AC_SUBST([REPLACE_VDPRINTF])
+  REPLACE_VFPRINTF=0;            AC_SUBST([REPLACE_VFPRINTF])
+  REPLACE_VPRINTF=0;             AC_SUBST([REPLACE_VPRINTF])
+  REPLACE_VSNPRINTF=0;           AC_SUBST([REPLACE_VSNPRINTF])
+  REPLACE_VSPRINTF=0;            AC_SUBST([REPLACE_VSPRINTF])
+])
diff --git a/m4/stdlib_h.m4 b/m4/stdlib_h.m4
new file mode 100644 (file)
index 0000000..25fdada
--- /dev/null
@@ -0,0 +1,105 @@
+# stdlib_h.m4 serial 37
+dnl Copyright (C) 2007-2011 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.
+
+AC_DEFUN([gl_STDLIB_H],
+[
+  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+  gl_NEXT_HEADERS([stdlib.h])
+
+  dnl Check for declarations of anything we want to poison if the
+  dnl corresponding gnulib module is not in use, and which is not
+  dnl guaranteed by C89.
+  gl_WARN_ON_USE_PREPARE([[#include <stdlib.h>
+#if HAVE_SYS_LOADAVG_H
+# include <sys/loadavg.h>
+#endif
+#if HAVE_RANDOM_H
+# include <random.h>
+#endif
+    ]], [_Exit atoll canonicalize_file_name getloadavg getsubopt grantpt mkdtemp
+    mkostemp mkostemps mkstemp mkstemps ptsname random_r initstat_r srandom_r
+    setstate_r realpath rpmatch setenv strtod strtoll strtoull unlockpt
+    unsetenv])
+])
+
+AC_DEFUN([gl_STDLIB_MODULE_INDICATOR],
+[
+  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+  dnl Define it also as a C macro, for the benefit of the unit tests.
+  gl_MODULE_INDICATOR_FOR_TESTS([$1])
+])
+
+AC_DEFUN([gl_STDLIB_H_DEFAULTS],
+[
+  GNULIB__EXIT=0;         AC_SUBST([GNULIB__EXIT])
+  GNULIB_ATOLL=0;         AC_SUBST([GNULIB_ATOLL])
+  GNULIB_CALLOC_POSIX=0;  AC_SUBST([GNULIB_CALLOC_POSIX])
+  GNULIB_CANONICALIZE_FILE_NAME=0;  AC_SUBST([GNULIB_CANONICALIZE_FILE_NAME])
+  GNULIB_GETLOADAVG=0;    AC_SUBST([GNULIB_GETLOADAVG])
+  GNULIB_GETSUBOPT=0;     AC_SUBST([GNULIB_GETSUBOPT])
+  GNULIB_GRANTPT=0;       AC_SUBST([GNULIB_GRANTPT])
+  GNULIB_MALLOC_POSIX=0;  AC_SUBST([GNULIB_MALLOC_POSIX])
+  GNULIB_MBTOWC=0;        AC_SUBST([GNULIB_MBTOWC])
+  GNULIB_MKDTEMP=0;       AC_SUBST([GNULIB_MKDTEMP])
+  GNULIB_MKOSTEMP=0;      AC_SUBST([GNULIB_MKOSTEMP])
+  GNULIB_MKOSTEMPS=0;     AC_SUBST([GNULIB_MKOSTEMPS])
+  GNULIB_MKSTEMP=0;       AC_SUBST([GNULIB_MKSTEMP])
+  GNULIB_MKSTEMPS=0;      AC_SUBST([GNULIB_MKSTEMPS])
+  GNULIB_PTSNAME=0;       AC_SUBST([GNULIB_PTSNAME])
+  GNULIB_PUTENV=0;        AC_SUBST([GNULIB_PUTENV])
+  GNULIB_RANDOM_R=0;      AC_SUBST([GNULIB_RANDOM_R])
+  GNULIB_REALLOC_POSIX=0; AC_SUBST([GNULIB_REALLOC_POSIX])
+  GNULIB_REALPATH=0;      AC_SUBST([GNULIB_REALPATH])
+  GNULIB_RPMATCH=0;       AC_SUBST([GNULIB_RPMATCH])
+  GNULIB_SETENV=0;        AC_SUBST([GNULIB_SETENV])
+  GNULIB_STRTOD=0;        AC_SUBST([GNULIB_STRTOD])
+  GNULIB_STRTOLL=0;       AC_SUBST([GNULIB_STRTOLL])
+  GNULIB_STRTOULL=0;      AC_SUBST([GNULIB_STRTOULL])
+  GNULIB_SYSTEM_POSIX=0;  AC_SUBST([GNULIB_SYSTEM_POSIX])
+  GNULIB_UNLOCKPT=0;      AC_SUBST([GNULIB_UNLOCKPT])
+  GNULIB_UNSETENV=0;      AC_SUBST([GNULIB_UNSETENV])
+  GNULIB_WCTOMB=0;        AC_SUBST([GNULIB_WCTOMB])
+  dnl Assume proper GNU behavior unless another module says otherwise.
+  HAVE__EXIT=1;              AC_SUBST([HAVE__EXIT])
+  HAVE_ATOLL=1;              AC_SUBST([HAVE_ATOLL])
+  HAVE_CANONICALIZE_FILE_NAME=1;  AC_SUBST([HAVE_CANONICALIZE_FILE_NAME])
+  HAVE_DECL_GETLOADAVG=1;    AC_SUBST([HAVE_DECL_GETLOADAVG])
+  HAVE_GETSUBOPT=1;          AC_SUBST([HAVE_GETSUBOPT])
+  HAVE_GRANTPT=1;            AC_SUBST([HAVE_GRANTPT])
+  HAVE_MKDTEMP=1;            AC_SUBST([HAVE_MKDTEMP])
+  HAVE_MKOSTEMP=1;           AC_SUBST([HAVE_MKOSTEMP])
+  HAVE_MKOSTEMPS=1;          AC_SUBST([HAVE_MKOSTEMPS])
+  HAVE_MKSTEMP=1;            AC_SUBST([HAVE_MKSTEMP])
+  HAVE_MKSTEMPS=1;           AC_SUBST([HAVE_MKSTEMPS])
+  HAVE_PTSNAME=1;            AC_SUBST([HAVE_PTSNAME])
+  HAVE_RANDOM_H=1;           AC_SUBST([HAVE_RANDOM_H])
+  HAVE_RANDOM_R=1;           AC_SUBST([HAVE_RANDOM_R])
+  HAVE_REALPATH=1;           AC_SUBST([HAVE_REALPATH])
+  HAVE_RPMATCH=1;            AC_SUBST([HAVE_RPMATCH])
+  HAVE_SETENV=1;             AC_SUBST([HAVE_SETENV])
+  HAVE_DECL_SETENV=1;        AC_SUBST([HAVE_DECL_SETENV])
+  HAVE_STRTOD=1;             AC_SUBST([HAVE_STRTOD])
+  HAVE_STRTOLL=1;            AC_SUBST([HAVE_STRTOLL])
+  HAVE_STRTOULL=1;           AC_SUBST([HAVE_STRTOULL])
+  HAVE_STRUCT_RANDOM_DATA=1; AC_SUBST([HAVE_STRUCT_RANDOM_DATA])
+  HAVE_SYS_LOADAVG_H=0;      AC_SUBST([HAVE_SYS_LOADAVG_H])
+  HAVE_UNLOCKPT=1;           AC_SUBST([HAVE_UNLOCKPT])
+  HAVE_DECL_UNSETENV=1;      AC_SUBST([HAVE_DECL_UNSETENV])
+  REPLACE_CALLOC=0;          AC_SUBST([REPLACE_CALLOC])
+  REPLACE_CANONICALIZE_FILE_NAME=0;  AC_SUBST([REPLACE_CANONICALIZE_FILE_NAME])
+  REPLACE_MALLOC=0;          AC_SUBST([REPLACE_MALLOC])
+  REPLACE_MBTOWC=0;          AC_SUBST([REPLACE_MBTOWC])
+  REPLACE_MKSTEMP=0;         AC_SUBST([REPLACE_MKSTEMP])
+  REPLACE_PUTENV=0;          AC_SUBST([REPLACE_PUTENV])
+  REPLACE_REALLOC=0;         AC_SUBST([REPLACE_REALLOC])
+  REPLACE_REALPATH=0;        AC_SUBST([REPLACE_REALPATH])
+  REPLACE_SETENV=0;          AC_SUBST([REPLACE_SETENV])
+  REPLACE_STRTOD=0;          AC_SUBST([REPLACE_STRTOD])
+  REPLACE_UNSETENV=0;        AC_SUBST([REPLACE_UNSETENV])
+  REPLACE_WCTOMB=0;          AC_SUBST([REPLACE_WCTOMB])
+])
diff --git a/m4/strdup.m4 b/m4/strdup.m4
new file mode 100644 (file)
index 0000000..3fb36dd
--- /dev/null
@@ -0,0 +1,45 @@
+# strdup.m4 serial 12
+
+dnl Copyright (C) 2002-2011 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.
+
+AC_DEFUN([gl_FUNC_STRDUP],
+[
+  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+  AC_CHECK_FUNCS_ONCE([strdup])
+  if test $ac_cv_func_strdup != yes; then
+    AC_LIBOBJ([strdup])
+    gl_PREREQ_STRDUP
+  fi
+  AC_CHECK_DECLS_ONCE([strdup])
+  if test $ac_cv_have_decl_strdup = no; then
+    HAVE_DECL_STRDUP=0
+  fi
+])
+
+AC_DEFUN([gl_FUNC_STRDUP_POSIX],
+[
+  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+  AC_REQUIRE([gl_CHECK_MALLOC_POSIX])
+  AC_CHECK_FUNCS_ONCE([strdup])
+  if test $ac_cv_func_strdup = yes; then
+    if test $gl_cv_func_malloc_posix != yes; then
+      REPLACE_STRDUP=1
+      AC_LIBOBJ([strdup])
+      gl_PREREQ_STRDUP
+    fi
+  else
+    AC_LIBOBJ([strdup])
+    gl_PREREQ_STRDUP
+  fi
+  AC_CHECK_DECLS_ONCE([strdup])
+  if test $ac_cv_have_decl_strdup = no; then
+    HAVE_DECL_STRDUP=0
+  fi
+])
+
+# Prerequisites of lib/strdup.c.
+AC_DEFUN([gl_PREREQ_STRDUP], [:])
diff --git a/m4/strerror.m4 b/m4/strerror.m4
new file mode 100644 (file)
index 0000000..5e1c011
--- /dev/null
@@ -0,0 +1,57 @@
+# strerror.m4 serial 11
+dnl Copyright (C) 2002, 2007-2011 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.
+
+AC_DEFUN([gl_FUNC_STRERROR],
+[
+  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+  AC_REQUIRE([gl_HEADER_ERRNO_H])
+  if test -z "$ERRNO_H"; then
+    AC_CACHE_CHECK([for working strerror function],
+     [gl_cv_func_working_strerror],
+     [AC_RUN_IFELSE(
+        [AC_LANG_PROGRAM(
+           [[#include <string.h>
+             #include <errno.h>
+           ]],
+           [[int result = 0;
+             if (!*strerror (-2)) result |= 1;
+             errno = 0;
+             if (!*strerror (0)) result |= 2;
+             if (errno) result |= 4;
+             return result;]])],
+        [gl_cv_func_working_strerror=yes],
+        [gl_cv_func_working_strerror=no],
+        [dnl Be pessimistic on cross-compiles for now.
+         gl_cv_func_working_strerror=no])
+    ])
+    if test $gl_cv_func_working_strerror = no; then
+      dnl The system's strerror() fails to return a string for out-of-range
+      dnl integers. Replace it.
+      REPLACE_STRERROR=1
+    fi
+  else
+    dnl The system's strerror() cannot know about the new errno values we add
+    dnl to <errno.h>. Replace it.
+    REPLACE_STRERROR=1
+  fi
+  if test $REPLACE_STRERROR = 1; then
+    AC_LIBOBJ([strerror])
+    gl_PREREQ_STRERROR
+  fi
+])
+
+# Prerequisites of lib/strerror.c.
+AC_DEFUN([gl_PREREQ_STRERROR], [
+  AC_CHECK_DECLS([strerror])
+  AC_CHECK_HEADERS_ONCE([sys/socket.h])
+  if test $ac_cv_header_sys_socket_h != yes; then
+    dnl We cannot use AC_CHECK_HEADERS_ONCE here, because that would make
+    dnl the check for those headers unconditional; yet cygwin reports
+    dnl that the headers are present but cannot be compiled (since on
+    dnl cygwin, all socket information should come from sys/socket.h).
+    AC_CHECK_HEADERS([winsock2.h])
+  fi
+])
diff --git a/m4/strerror_r.m4 b/m4/strerror_r.m4
new file mode 100644 (file)
index 0000000..1c0af36
--- /dev/null
@@ -0,0 +1,109 @@
+# strerror_r.m4 serial 9
+dnl Copyright (C) 2002, 2007-2011 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.
+
+AC_DEFUN([gl_FUNC_STRERROR_R],
+[
+  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+  AC_REQUIRE([gl_HEADER_ERRNO_H])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+
+  dnl Persuade Solaris <string.h> to declare strerror_r().
+  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+
+  dnl Some systems don't declare strerror_r() if _THREAD_SAFE and _REENTRANT
+  dnl are not defined.
+  AC_CHECK_DECLS_ONCE([strerror_r])
+  if test $ac_cv_have_decl_strerror_r = no; then
+    HAVE_DECL_STRERROR_R=0
+  fi
+
+  AC_CHECK_FUNCS([strerror_r])
+  if test $ac_cv_func_strerror_r = yes; then
+    if test -z "$ERRNO_H"; then
+      dnl The POSIX prototype is:  int strerror_r (int, char *, size_t);
+      dnl glibc, Cygwin:           char *strerror_r (int, char *, size_t);
+      dnl AIX 5.1, OSF/1 5.1:      int strerror_r (int, char *, int);
+      AC_CACHE_CHECK([for strerror_r with POSIX signature],
+        [gl_cv_func_strerror_r_posix_signature],
+        [AC_COMPILE_IFELSE(
+           [AC_LANG_PROGRAM(
+              [[#include <string.h>
+                int strerror_r (int, char *, size_t);
+              ]],
+              [])],
+           [gl_cv_func_strerror_r_posix_signature=yes],
+           [gl_cv_func_strerror_r_posix_signature=no])
+        ])
+      if test $gl_cv_func_strerror_r_posix_signature = yes; then
+        dnl AIX 6.1 strerror_r fails by returning -1, not an error number.
+        dnl HP-UX 11.31 strerror_r always fails when the buffer length argument
+        dnl is less than 80.
+        dnl FreeBSD 8.s strerror_r claims failure on 0
+        dnl Solaris 10 strerror_r corrupts errno on failure
+        AC_CACHE_CHECK([whether strerror_r works],
+          [gl_cv_func_strerror_r_works],
+          [AC_RUN_IFELSE(
+             [AC_LANG_PROGRAM(
+                [[#include <errno.h>
+                  #include <string.h>
+                ]],
+                [[int result = 0;
+                  char buf[79];
+                  if (strerror_r (EACCES, buf, 0) < 0)
+                    result |= 1;
+                  errno = 0;
+                  if (strerror_r (EACCES, buf, sizeof buf) != 0)
+                    result |= 2;
+                  if (strerror_r (0, buf, sizeof buf) != 0)
+                    result |= 4;
+                  if (errno)
+                    result |= 8;
+                  errno = 0;
+                  if (strerror_r (-3, buf, sizeof buf) != 0)
+                    result |= 0x10;
+                  if (errno)
+                    result |= 0x20;
+                  return result;
+                ]])],
+             [gl_cv_func_strerror_r_works=yes],
+             [gl_cv_func_strerror_r_works=no],
+             [
+changequote(,)dnl
+              case "$host_os" in
+                       # Guess no on AIX.
+                aix*)  gl_cv_func_strerror_r_works="guessing no";;
+                       # Guess no on HP-UX.
+                hpux*) gl_cv_func_strerror_r_works="guessing no";;
+                       # Guess no on FreeBSD.
+                freebsd*)  gl_cv_func_strerror_r_works="guessing no";;
+                       # Guess yes otherwise.
+                *)     gl_cv_func_strerror_r_works="guessing yes";;
+              esac
+changequote([,])dnl
+             ])
+          ])
+        case "$gl_cv_func_strerror_r_works" in
+          *no) REPLACE_STRERROR_R=1 ;;
+        esac
+      else
+        dnl The system's strerror() has a wrong signature. Replace it.
+        REPLACE_STRERROR_R=1
+        dnl glibc >= 2.3.4 and cygwin 1.7.9 have a function __xpg_strerror_r.
+        AC_CHECK_FUNCS([__xpg_strerror_r])
+      fi
+    else
+      dnl The system's strerror_r() cannot know about the new errno values we
+      dnl add to <errno.h>. Replace it.
+      REPLACE_STRERROR_R=1
+    fi
+  fi
+])
+
+# Prerequisites of lib/strerror_r.c.
+AC_DEFUN([gl_PREREQ_STRERROR_R], [
+  AC_CHECK_FUNCS_ONCE([catgets])
+  :
+])
diff --git a/m4/string_h.m4 b/m4/string_h.m4
new file mode 100644 (file)
index 0000000..df8c403
--- /dev/null
@@ -0,0 +1,116 @@
+# Configure a GNU-like replacement for <string.h>.
+
+# Copyright (C) 2007-2011 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.
+
+# serial 20
+
+# Written by Paul Eggert.
+
+AC_DEFUN([gl_HEADER_STRING_H],
+[
+  dnl Use AC_REQUIRE here, so that the default behavior below is expanded
+  dnl once only, before all statements that occur in other macros.
+  AC_REQUIRE([gl_HEADER_STRING_H_BODY])
+])
+
+AC_DEFUN([gl_HEADER_STRING_H_BODY],
+[
+  AC_REQUIRE([AC_C_RESTRICT])
+  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+  gl_NEXT_HEADERS([string.h])
+
+  dnl Check for declarations of anything we want to poison if the
+  dnl corresponding gnulib module is not in use, and which is not
+  dnl guaranteed by C89.
+  gl_WARN_ON_USE_PREPARE([[#include <string.h>
+    ]],
+    [memmem mempcpy memrchr rawmemchr stpcpy stpncpy strchrnul strdup
+     strncat strndup strnlen strpbrk strsep strcasestr strtok_r strerror_r
+     strsignal strverscmp])
+])
+
+AC_DEFUN([gl_STRING_MODULE_INDICATOR],
+[
+  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+  dnl Define it also as a C macro, for the benefit of the unit tests.
+  gl_MODULE_INDICATOR_FOR_TESTS([$1])
+])
+
+AC_DEFUN([gl_HEADER_STRING_H_DEFAULTS],
+[
+  GNULIB_MEMCHR=0;      AC_SUBST([GNULIB_MEMCHR])
+  GNULIB_MEMMEM=0;      AC_SUBST([GNULIB_MEMMEM])
+  GNULIB_MEMPCPY=0;     AC_SUBST([GNULIB_MEMPCPY])
+  GNULIB_MEMRCHR=0;     AC_SUBST([GNULIB_MEMRCHR])
+  GNULIB_RAWMEMCHR=0;   AC_SUBST([GNULIB_RAWMEMCHR])
+  GNULIB_STPCPY=0;      AC_SUBST([GNULIB_STPCPY])
+  GNULIB_STPNCPY=0;     AC_SUBST([GNULIB_STPNCPY])
+  GNULIB_STRCHRNUL=0;   AC_SUBST([GNULIB_STRCHRNUL])
+  GNULIB_STRDUP=0;      AC_SUBST([GNULIB_STRDUP])
+  GNULIB_STRNCAT=0;     AC_SUBST([GNULIB_STRNCAT])
+  GNULIB_STRNDUP=0;     AC_SUBST([GNULIB_STRNDUP])
+  GNULIB_STRNLEN=0;     AC_SUBST([GNULIB_STRNLEN])
+  GNULIB_STRPBRK=0;     AC_SUBST([GNULIB_STRPBRK])
+  GNULIB_STRSEP=0;      AC_SUBST([GNULIB_STRSEP])
+  GNULIB_STRSTR=0;      AC_SUBST([GNULIB_STRSTR])
+  GNULIB_STRCASESTR=0;  AC_SUBST([GNULIB_STRCASESTR])
+  GNULIB_STRTOK_R=0;    AC_SUBST([GNULIB_STRTOK_R])
+  GNULIB_MBSLEN=0;      AC_SUBST([GNULIB_MBSLEN])
+  GNULIB_MBSNLEN=0;     AC_SUBST([GNULIB_MBSNLEN])
+  GNULIB_MBSCHR=0;      AC_SUBST([GNULIB_MBSCHR])
+  GNULIB_MBSRCHR=0;     AC_SUBST([GNULIB_MBSRCHR])
+  GNULIB_MBSSTR=0;      AC_SUBST([GNULIB_MBSSTR])
+  GNULIB_MBSCASECMP=0;  AC_SUBST([GNULIB_MBSCASECMP])
+  GNULIB_MBSNCASECMP=0; AC_SUBST([GNULIB_MBSNCASECMP])
+  GNULIB_MBSPCASECMP=0; AC_SUBST([GNULIB_MBSPCASECMP])
+  GNULIB_MBSCASESTR=0;  AC_SUBST([GNULIB_MBSCASESTR])
+  GNULIB_MBSCSPN=0;     AC_SUBST([GNULIB_MBSCSPN])
+  GNULIB_MBSPBRK=0;     AC_SUBST([GNULIB_MBSPBRK])
+  GNULIB_MBSSPN=0;      AC_SUBST([GNULIB_MBSSPN])
+  GNULIB_MBSSEP=0;      AC_SUBST([GNULIB_MBSSEP])
+  GNULIB_MBSTOK_R=0;    AC_SUBST([GNULIB_MBSTOK_R])
+  GNULIB_STRERROR=0;    AC_SUBST([GNULIB_STRERROR])
+  GNULIB_STRERROR_R=0;  AC_SUBST([GNULIB_STRERROR_R])
+  GNULIB_STRSIGNAL=0;   AC_SUBST([GNULIB_STRSIGNAL])
+  GNULIB_STRVERSCMP=0;  AC_SUBST([GNULIB_STRVERSCMP])
+  HAVE_MBSLEN=0;        AC_SUBST([HAVE_MBSLEN])
+  dnl Assume proper GNU behavior unless another module says otherwise.
+  HAVE_MEMCHR=1;                AC_SUBST([HAVE_MEMCHR])
+  HAVE_DECL_MEMMEM=1;           AC_SUBST([HAVE_DECL_MEMMEM])
+  HAVE_MEMPCPY=1;               AC_SUBST([HAVE_MEMPCPY])
+  HAVE_DECL_MEMRCHR=1;          AC_SUBST([HAVE_DECL_MEMRCHR])
+  HAVE_RAWMEMCHR=1;             AC_SUBST([HAVE_RAWMEMCHR])
+  HAVE_STPCPY=1;                AC_SUBST([HAVE_STPCPY])
+  HAVE_STPNCPY=1;               AC_SUBST([HAVE_STPNCPY])
+  HAVE_STRCHRNUL=1;             AC_SUBST([HAVE_STRCHRNUL])
+  HAVE_DECL_STRDUP=1;           AC_SUBST([HAVE_DECL_STRDUP])
+  HAVE_DECL_STRNDUP=1;          AC_SUBST([HAVE_DECL_STRNDUP])
+  HAVE_DECL_STRNLEN=1;          AC_SUBST([HAVE_DECL_STRNLEN])
+  HAVE_STRPBRK=1;               AC_SUBST([HAVE_STRPBRK])
+  HAVE_STRSEP=1;                AC_SUBST([HAVE_STRSEP])
+  HAVE_STRCASESTR=1;            AC_SUBST([HAVE_STRCASESTR])
+  HAVE_DECL_STRTOK_R=1;         AC_SUBST([HAVE_DECL_STRTOK_R])
+  HAVE_DECL_STRERROR_R=1;       AC_SUBST([HAVE_DECL_STRERROR_R])
+  HAVE_DECL_STRSIGNAL=1;        AC_SUBST([HAVE_DECL_STRSIGNAL])
+  HAVE_STRVERSCMP=1;            AC_SUBST([HAVE_STRVERSCMP])
+  REPLACE_MEMCHR=0;             AC_SUBST([REPLACE_MEMCHR])
+  REPLACE_MEMMEM=0;             AC_SUBST([REPLACE_MEMMEM])
+  REPLACE_STPNCPY=0;            AC_SUBST([REPLACE_STPNCPY])
+  REPLACE_STRDUP=0;             AC_SUBST([REPLACE_STRDUP])
+  REPLACE_STRSTR=0;             AC_SUBST([REPLACE_STRSTR])
+  REPLACE_STRCASESTR=0;         AC_SUBST([REPLACE_STRCASESTR])
+  REPLACE_STRCHRNUL=0;          AC_SUBST([REPLACE_STRCHRNUL])
+  REPLACE_STRERROR=0;           AC_SUBST([REPLACE_STRERROR])
+  REPLACE_STRERROR_R=0;         AC_SUBST([REPLACE_STRERROR_R])
+  REPLACE_STRNCAT=0;            AC_SUBST([REPLACE_STRNCAT])
+  REPLACE_STRNDUP=0;            AC_SUBST([REPLACE_STRNDUP])
+  REPLACE_STRNLEN=0;            AC_SUBST([REPLACE_STRNLEN])
+  REPLACE_STRSIGNAL=0;          AC_SUBST([REPLACE_STRSIGNAL])
+  REPLACE_STRTOK_R=0;           AC_SUBST([REPLACE_STRTOK_R])
+  UNDEFINE_STRTOK_R=0;          AC_SUBST([UNDEFINE_STRTOK_R])
+])
diff --git a/m4/strndup.m4 b/m4/strndup.m4
new file mode 100644 (file)
index 0000000..d8f00ca
--- /dev/null
@@ -0,0 +1,53 @@
+# strndup.m4 serial 18
+dnl Copyright (C) 2002-2003, 2005-2011 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.
+
+AC_DEFUN([gl_FUNC_STRNDUP],
+[
+  dnl Persuade glibc <string.h> to declare strndup().
+  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+  AC_CHECK_DECLS_ONCE([strndup])
+  AC_CHECK_FUNCS_ONCE([strndup])
+  if test $ac_cv_have_decl_strndup = no; then
+    HAVE_DECL_STRNDUP=0
+  fi
+
+  if test $ac_cv_func_strndup = yes; then
+    # AIX 4.3.3, AIX 5.1 have a function that fails to add the terminating '\0'.
+    AC_CACHE_CHECK([for working strndup], [gl_cv_func_strndup_works],
+      [AC_RUN_IFELSE([
+         AC_LANG_PROGRAM([[#include <string.h>
+                           #include <stdlib.h>]], [[
+#ifndef HAVE_DECL_STRNDUP
+  extern char *strndup (const char *, size_t);
+#endif
+  char *s;
+  s = strndup ("some longer string", 15);
+  free (s);
+  s = strndup ("shorter string", 13);
+  return s[13] != '\0';]])],
+         [gl_cv_func_strndup_works=yes],
+         [gl_cv_func_strndup_works=no],
+         [
+changequote(,)dnl
+          case $host_os in
+            aix | aix[3-6]*) gl_cv_func_strndup_works="guessing no";;
+            *)               gl_cv_func_strndup_works="guessing yes";;
+          esac
+changequote([,])dnl
+         ])])
+    case $gl_cv_func_strndup_works in
+      *no)
+        REPLACE_STRNDUP=1
+        AC_LIBOBJ([strndup])
+        ;;
+    esac
+  else
+    AC_LIBOBJ([strndup])
+  fi
+])
diff --git a/m4/strnlen.m4 b/m4/strnlen.m4
new file mode 100644 (file)
index 0000000..a1c59ac
--- /dev/null
@@ -0,0 +1,32 @@
+# strnlen.m4 serial 12
+dnl Copyright (C) 2002-2003, 2005-2007, 2009-2011 Free Software Foundation,
+dnl 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.
+
+AC_DEFUN([gl_FUNC_STRNLEN],
+[
+  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+
+  dnl Persuade glibc <string.h> to declare strnlen().
+  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+
+  AC_CHECK_DECLS_ONCE([strnlen])
+  if test $ac_cv_have_decl_strnlen = no; then
+    HAVE_DECL_STRNLEN=0
+  else
+    AC_FUNC_STRNLEN
+    dnl Note: AC_FUNC_STRNLEN does AC_LIBOBJ([strnlen]).
+    if test $ac_cv_func_strnlen_working = no; then
+      REPLACE_STRNLEN=1
+    fi
+  fi
+  if test $HAVE_DECL_STRNLEN = 0 || test $REPLACE_STRNLEN = 1; then
+    AC_LIBOBJ([strnlen])
+    gl_PREREQ_STRNLEN
+  fi
+])
+
+# Prerequisites of lib/strnlen.c.
+AC_DEFUN([gl_PREREQ_STRNLEN], [:])
diff --git a/m4/strtoll.m4 b/m4/strtoll.m4
new file mode 100644 (file)
index 0000000..fd0a13d
--- /dev/null
@@ -0,0 +1,25 @@
+# strtoll.m4 serial 6
+dnl Copyright (C) 2002, 2004, 2006, 2008-2011 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.
+
+AC_DEFUN([gl_FUNC_STRTOLL],
+[
+  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+  dnl We don't need (and can't compile) the replacement strtoll
+  dnl unless the type 'long long int' exists.
+  AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
+  if test "$ac_cv_type_long_long_int" = yes; then
+    AC_REPLACE_FUNCS([strtoll])
+    if test $ac_cv_func_strtoll = no; then
+      HAVE_STRTOLL=0
+      gl_PREREQ_STRTOLL
+    fi
+  fi
+])
+
+# Prerequisites of lib/strtoll.c.
+AC_DEFUN([gl_PREREQ_STRTOLL], [
+  :
+])
diff --git a/m4/strtoull.m4 b/m4/strtoull.m4
new file mode 100644 (file)
index 0000000..abf607f
--- /dev/null
@@ -0,0 +1,25 @@
+# strtoull.m4 serial 6
+dnl Copyright (C) 2002, 2004, 2006, 2008-2011 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.
+
+AC_DEFUN([gl_FUNC_STRTOULL],
+[
+  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+  dnl We don't need (and can't compile) the replacement strtoull
+  dnl unless the type 'unsigned long long int' exists.
+  AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
+  if test "$ac_cv_type_unsigned_long_long_int" = yes; then
+    AC_REPLACE_FUNCS([strtoull])
+    if test $ac_cv_func_strtoull = no; then
+      HAVE_STRTOULL=0
+      gl_PREREQ_STRTOULL
+    fi
+  fi
+])
+
+# Prerequisites of lib/strtoull.c.
+AC_DEFUN([gl_PREREQ_STRTOULL], [
+  :
+])
diff --git a/m4/symlink.m4 b/m4/symlink.m4
new file mode 100644 (file)
index 0000000..917d5f0
--- /dev/null
@@ -0,0 +1,45 @@
+# serial 4
+# See if we need to provide symlink replacement.
+
+dnl Copyright (C) 2009-2011 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.
+
+# Written by Eric Blake.
+
+AC_DEFUN([gl_FUNC_SYMLINK],
+[
+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+  AC_CHECK_FUNCS_ONCE([symlink])
+  dnl The best we can do on mingw is provide a dummy that always fails, so
+  dnl that compilation can proceed with fewer ifdefs.  On FreeBSD 7.2, AIX 7.1,
+  dnl and Solaris 9, we want to fix a bug with trailing slash handling.
+  if test $ac_cv_func_symlink = no; then
+    HAVE_SYMLINK=0
+    AC_LIBOBJ([symlink])
+  else
+    AC_CACHE_CHECK([whether symlink handles trailing slash correctly],
+      [gl_cv_func_symlink_works],
+      [AC_RUN_IFELSE(
+         [AC_LANG_PROGRAM(
+           [[#include <unistd.h>
+           ]],
+           [[int result = 0;
+             if (!symlink ("a", "conftest.link/"))
+               result |= 1;
+             if (symlink ("conftest.f", "conftest.lnk2"))
+               result |= 2;
+             else if (!symlink ("a", "conftest.lnk2/"))
+               result |= 4;
+             return result;
+           ]])],
+         [gl_cv_func_symlink_works=yes], [gl_cv_func_symlink_works=no],
+         [gl_cv_func_symlink_works="guessing no"])
+      rm -f conftest.f conftest.link conftest.lnk2])
+    if test "$gl_cv_func_symlink_works" != yes; then
+      REPLACE_SYMLINK=1
+      AC_LIBOBJ([symlink])
+    fi
+  fi
+])
diff --git a/m4/sys_stat_h.m4 b/m4/sys_stat_h.m4
new file mode 100644 (file)
index 0000000..fc41912
--- /dev/null
@@ -0,0 +1,82 @@
+# sys_stat_h.m4 serial 24   -*- Autoconf -*-
+dnl Copyright (C) 2006-2011 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 Eric Blake.
+dnl Provide a GNU-like <sys/stat.h>.
+
+AC_DEFUN([gl_HEADER_SYS_STAT_H],
+[
+  AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
+
+  dnl For the mkdir substitute.
+  AC_REQUIRE([AC_C_INLINE])
+
+  dnl Check for broken stat macros.
+  AC_REQUIRE([AC_HEADER_STAT])
+
+  gl_CHECK_NEXT_HEADERS([sys/stat.h])
+
+  dnl Define types that are supposed to be defined in <sys/types.h> or
+  dnl <sys/stat.h>.
+  AC_CHECK_TYPE([nlink_t], [],
+    [AC_DEFINE([nlink_t], [int],
+       [Define to the type of st_nlink in struct stat, or a supertype.])],
+    [#include <sys/types.h>
+     #include <sys/stat.h>])
+
+  dnl Check for declarations of anything we want to poison if the
+  dnl corresponding gnulib module is not in use.
+  gl_WARN_ON_USE_PREPARE([[#include <sys/stat.h>
+    ]], [fchmodat fstatat futimens lchmod lstat mkdirat mkfifo mkfifoat
+    mknod mknodat stat utimensat])
+]) # gl_HEADER_SYS_STAT_H
+
+AC_DEFUN([gl_SYS_STAT_MODULE_INDICATOR],
+[
+  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+  AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
+  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+  dnl Define it also as a C macro, for the benefit of the unit tests.
+  gl_MODULE_INDICATOR_FOR_TESTS([$1])
+])
+
+AC_DEFUN([gl_SYS_STAT_H_DEFAULTS],
+[
+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) dnl for REPLACE_FCHDIR
+  GNULIB_FCHMODAT=0;    AC_SUBST([GNULIB_FCHMODAT])
+  GNULIB_FSTATAT=0;     AC_SUBST([GNULIB_FSTATAT])
+  GNULIB_FUTIMENS=0;    AC_SUBST([GNULIB_FUTIMENS])
+  GNULIB_LCHMOD=0;      AC_SUBST([GNULIB_LCHMOD])
+  GNULIB_LSTAT=0;       AC_SUBST([GNULIB_LSTAT])
+  GNULIB_MKDIRAT=0;     AC_SUBST([GNULIB_MKDIRAT])
+  GNULIB_MKFIFO=0;      AC_SUBST([GNULIB_MKFIFO])
+  GNULIB_MKFIFOAT=0;    AC_SUBST([GNULIB_MKFIFOAT])
+  GNULIB_MKNOD=0;       AC_SUBST([GNULIB_MKNOD])
+  GNULIB_MKNODAT=0;     AC_SUBST([GNULIB_MKNODAT])
+  GNULIB_STAT=0;        AC_SUBST([GNULIB_STAT])
+  GNULIB_UTIMENSAT=0;   AC_SUBST([GNULIB_UTIMENSAT])
+  dnl Assume proper GNU behavior unless another module says otherwise.
+  HAVE_FCHMODAT=1;      AC_SUBST([HAVE_FCHMODAT])
+  HAVE_FSTATAT=1;       AC_SUBST([HAVE_FSTATAT])
+  HAVE_FUTIMENS=1;      AC_SUBST([HAVE_FUTIMENS])
+  HAVE_LCHMOD=1;        AC_SUBST([HAVE_LCHMOD])
+  HAVE_LSTAT=1;         AC_SUBST([HAVE_LSTAT])
+  HAVE_MKDIRAT=1;       AC_SUBST([HAVE_MKDIRAT])
+  HAVE_MKFIFO=1;        AC_SUBST([HAVE_MKFIFO])
+  HAVE_MKFIFOAT=1;      AC_SUBST([HAVE_MKFIFOAT])
+  HAVE_MKNOD=1;         AC_SUBST([HAVE_MKNOD])
+  HAVE_MKNODAT=1;       AC_SUBST([HAVE_MKNODAT])
+  HAVE_UTIMENSAT=1;     AC_SUBST([HAVE_UTIMENSAT])
+  REPLACE_FSTAT=0;      AC_SUBST([REPLACE_FSTAT])
+  REPLACE_FSTATAT=0;    AC_SUBST([REPLACE_FSTATAT])
+  REPLACE_FUTIMENS=0;   AC_SUBST([REPLACE_FUTIMENS])
+  REPLACE_LSTAT=0;      AC_SUBST([REPLACE_LSTAT])
+  REPLACE_MKDIR=0;      AC_SUBST([REPLACE_MKDIR])
+  REPLACE_MKFIFO=0;     AC_SUBST([REPLACE_MKFIFO])
+  REPLACE_MKNOD=0;      AC_SUBST([REPLACE_MKNOD])
+  REPLACE_STAT=0;       AC_SUBST([REPLACE_STAT])
+  REPLACE_UTIMENSAT=0;  AC_SUBST([REPLACE_UTIMENSAT])
+])
diff --git a/m4/sys_time_h.m4 b/m4/sys_time_h.m4
new file mode 100644 (file)
index 0000000..3a3adc8
--- /dev/null
@@ -0,0 +1,72 @@
+# Configure a replacement for <sys/time.h>.
+# serial 6
+
+# Copyright (C) 2007, 2009-2011 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.
+
+# Written by Paul Eggert and Martin Lambers.
+
+AC_DEFUN([gl_HEADER_SYS_TIME_H],
+[
+  dnl Use AC_REQUIRE here, so that the REPLACE_GETTIMEOFDAY=0 statement
+  dnl below is expanded once only, before all REPLACE_GETTIMEOFDAY=1
+  dnl statements that occur in other macros.
+  AC_REQUIRE([gl_HEADER_SYS_TIME_H_BODY])
+])
+
+AC_DEFUN([gl_HEADER_SYS_TIME_H_BODY],
+[
+  AC_REQUIRE([AC_C_RESTRICT])
+  AC_REQUIRE([gl_HEADER_SYS_TIME_H_DEFAULTS])
+  AC_CHECK_HEADERS_ONCE([sys/time.h])
+  gl_CHECK_NEXT_HEADERS([sys/time.h])
+
+  if test $ac_cv_header_sys_time_h != yes; then
+    HAVE_SYS_TIME_H=0
+  fi
+
+  AC_CACHE_CHECK([for struct timeval], [gl_cv_sys_struct_timeval],
+    [AC_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[#if HAVE_SYS_TIME_H
+             #include <sys/time.h>
+            #endif
+            #include <time.h>
+          ]],
+          [[static struct timeval x; x.tv_sec = x.tv_usec;]])],
+       [gl_cv_sys_struct_timeval=yes],
+       [gl_cv_sys_struct_timeval=no])])
+  if test $gl_cv_sys_struct_timeval != yes; then
+    HAVE_STRUCT_TIMEVAL=0
+  fi
+
+  dnl Check for declarations of anything we want to poison if the
+  dnl corresponding gnulib module is not in use.
+  gl_WARN_ON_USE_PREPARE([[
+#if HAVE_SYS_TIME_H
+# include <sys/time.h>
+#endif
+#include <time.h>
+    ]], [gettimeofday])
+])
+
+AC_DEFUN([gl_SYS_TIME_MODULE_INDICATOR],
+[
+  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+  AC_REQUIRE([gl_HEADER_SYS_TIME_H_DEFAULTS])
+  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+  dnl Define it also as a C macro, for the benefit of the unit tests.
+  gl_MODULE_INDICATOR_FOR_TESTS([$1])
+])
+
+AC_DEFUN([gl_HEADER_SYS_TIME_H_DEFAULTS],
+[
+  GNULIB_GETTIMEOFDAY=0;     AC_SUBST([GNULIB_GETTIMEOFDAY])
+  dnl Assume POSIX behavior unless another module says otherwise.
+  HAVE_GETTIMEOFDAY=1;       AC_SUBST([HAVE_GETTIMEOFDAY])
+  HAVE_STRUCT_TIMEVAL=1;     AC_SUBST([HAVE_STRUCT_TIMEVAL])
+  HAVE_SYS_TIME_H=1;         AC_SUBST([HAVE_SYS_TIME_H])
+  REPLACE_GETTIMEOFDAY=0;    AC_SUBST([REPLACE_GETTIMEOFDAY])
+])
diff --git a/m4/tempname.m4 b/m4/tempname.m4
new file mode 100644 (file)
index 0000000..6bd74ab
--- /dev/null
@@ -0,0 +1,22 @@
+#serial 3
+
+# Copyright (C) 2006-2007, 2009-2011 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.
+
+# glibc provides __gen_tempname as a wrapper for mk[ds]temp.  Expose
+# it as a public API, and provide it on systems that are lacking.
+AC_DEFUN([gl_FUNC_GEN_TEMPNAME],
+[
+  AC_REQUIRE([AC_SYS_LARGEFILE])
+
+  AC_LIBOBJ([tempname])
+  gl_PREREQ_TEMPNAME
+])
+
+# Prerequisites of lib/tempname.c.
+AC_DEFUN([gl_PREREQ_TEMPNAME],
+[
+  :
+])
diff --git a/m4/thread.m4 b/m4/thread.m4
new file mode 100644 (file)
index 0000000..49a4bc7
--- /dev/null
@@ -0,0 +1,18 @@
+# thread.m4 serial 2
+dnl Copyright (C) 2008-2011 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.
+
+AC_DEFUN([gl_THREAD],
+[
+  AC_REQUIRE([gl_THREADLIB])
+  AC_REQUIRE([AC_C_INLINE])
+
+  if test $gl_threads_api = posix; then
+    gl_save_LIBS="$LIBS"
+    LIBS="$LIBS $LIBMULTITHREAD"
+    AC_CHECK_FUNCS([pthread_atfork])
+    LIBS="$gl_save_LIBS"
+  fi
+])
diff --git a/m4/threadlib.m4 b/m4/threadlib.m4
new file mode 100644 (file)
index 0000000..8a621fd
--- /dev/null
@@ -0,0 +1,369 @@
+# threadlib.m4 serial 8 (gettext-0.18.2)
+dnl Copyright (C) 2005-2011 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 gl_THREADLIB
+dnl ------------
+dnl Tests for a multithreading library to be used.
+dnl If the configure.ac contains a definition of the gl_THREADLIB_DEFAULT_NO
+dnl (it must be placed before the invocation of gl_THREADLIB_EARLY!), then the
+dnl default is 'no', otherwise it is system dependent. In both cases, the user
+dnl can change the choice through the options --enable-threads=choice or
+dnl --disable-threads.
+dnl Defines at most one of the macros USE_POSIX_THREADS, USE_SOLARIS_THREADS,
+dnl USE_PTH_THREADS, USE_WIN32_THREADS
+dnl Sets the variables LIBTHREAD and LTLIBTHREAD to the linker options for use
+dnl in a Makefile (LIBTHREAD for use without libtool, LTLIBTHREAD for use with
+dnl libtool).
+dnl Sets the variables LIBMULTITHREAD and LTLIBMULTITHREAD similarly, for
+dnl programs that really need multithread functionality. The difference
+dnl between LIBTHREAD and LIBMULTITHREAD is that on platforms supporting weak
+dnl symbols, typically LIBTHREAD="" whereas LIBMULTITHREAD="-lpthread".
+dnl Adds to CPPFLAGS the flag -D_REENTRANT or -D_THREAD_SAFE if needed for
+dnl multithread-safe programs.
+
+AC_DEFUN([gl_THREADLIB_EARLY],
+[
+  AC_REQUIRE([gl_THREADLIB_EARLY_BODY])
+])
+
+dnl The guts of gl_THREADLIB_EARLY. Needs to be expanded only once.
+
+AC_DEFUN([gl_THREADLIB_EARLY_BODY],
+[
+  dnl Ordering constraints: This macro modifies CPPFLAGS in a way that
+  dnl influences the result of the autoconf tests that test for *_unlocked
+  dnl declarations, on AIX 5 at least. Therefore it must come early.
+  AC_BEFORE([$0], [gl_FUNC_GLIBC_UNLOCKED_IO])dnl
+  AC_BEFORE([$0], [gl_ARGP])dnl
+
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  dnl _GNU_SOURCE is needed for pthread_rwlock_t on glibc systems.
+  dnl AC_USE_SYSTEM_EXTENSIONS was introduced in autoconf 2.60 and obsoletes
+  dnl AC_GNU_SOURCE.
+  m4_ifdef([AC_USE_SYSTEM_EXTENSIONS],
+    [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])],
+    [AC_REQUIRE([AC_GNU_SOURCE])])
+  dnl Check for multithreading.
+  m4_ifdef([gl_THREADLIB_DEFAULT_NO],
+    [m4_divert_text([DEFAULTS], [gl_use_threads_default=no])],
+    [m4_divert_text([DEFAULTS], [gl_use_threads_default=])])
+  AC_ARG_ENABLE([threads],
+AC_HELP_STRING([--enable-threads={posix|solaris|pth|win32}], [specify multithreading API])m4_ifdef([gl_THREADLIB_DEFAULT_NO], [], [
+AC_HELP_STRING([--disable-threads], [build without multithread safety])]),
+    [gl_use_threads=$enableval],
+    [if test -n "$gl_use_threads_default"; then
+       gl_use_threads="$gl_use_threads_default"
+     else
+changequote(,)dnl
+       case "$host_os" in
+         dnl Disable multithreading by default on OSF/1, because it interferes
+         dnl with fork()/exec(): When msgexec is linked with -lpthread, its
+         dnl child process gets an endless segmentation fault inside execvp().
+         dnl Disable multithreading by default on Cygwin 1.5.x, because it has
+         dnl bugs that lead to endless loops or crashes. See
+         dnl <http://cygwin.com/ml/cygwin/2009-08/msg00283.html>.
+         osf*) gl_use_threads=no ;;
+         cygwin*)
+               case `uname -r` in
+                 1.[0-5].*) gl_use_threads=no ;;
+                 *)         gl_use_threads=yes ;;
+               esac
+               ;;
+         *)    gl_use_threads=yes ;;
+       esac
+changequote([,])dnl
+     fi
+    ])
+  if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
+    # For using <pthread.h>:
+    case "$host_os" in
+      osf*)
+        # On OSF/1, the compiler needs the flag -D_REENTRANT so that it
+        # groks <pthread.h>. cc also understands the flag -pthread, but
+        # we don't use it because 1. gcc-2.95 doesn't understand -pthread,
+        # 2. putting a flag into CPPFLAGS that has an effect on the linker
+        # causes the AC_LINK_IFELSE test below to succeed unexpectedly,
+        # leading to wrong values of LIBTHREAD and LTLIBTHREAD.
+        CPPFLAGS="$CPPFLAGS -D_REENTRANT"
+        ;;
+    esac
+    # Some systems optimize for single-threaded programs by default, and
+    # need special flags to disable these optimizations. For example, the
+    # definition of 'errno' in <errno.h>.
+    case "$host_os" in
+      aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;;
+      solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;;
+    esac
+  fi
+])
+
+dnl The guts of gl_THREADLIB. Needs to be expanded only once.
+
+AC_DEFUN([gl_THREADLIB_BODY],
+[
+  AC_REQUIRE([gl_THREADLIB_EARLY_BODY])
+  gl_threads_api=none
+  LIBTHREAD=
+  LTLIBTHREAD=
+  LIBMULTITHREAD=
+  LTLIBMULTITHREAD=
+  if test "$gl_use_threads" != no; then
+    dnl Check whether the compiler and linker support weak declarations.
+    AC_CACHE_CHECK([whether imported symbols can be declared weak],
+      [gl_cv_have_weak],
+      [gl_cv_have_weak=no
+       dnl First, test whether the compiler accepts it syntactically.
+       AC_LINK_IFELSE(
+         [AC_LANG_PROGRAM(
+            [[extern void xyzzy ();
+#pragma weak xyzzy]],
+            [[xyzzy();]])],
+         [gl_cv_have_weak=maybe])
+       if test $gl_cv_have_weak = maybe; then
+         dnl Second, test whether it actually works. On Cygwin 1.7.2, with
+         dnl gcc 4.3, symbols declared weak always evaluate to the address 0.
+         AC_RUN_IFELSE(
+           [AC_LANG_SOURCE([[
+#include <stdio.h>
+#pragma weak fputs
+int main ()
+{
+  return (fputs == NULL);
+}]])],
+           [gl_cv_have_weak=yes],
+           [gl_cv_have_weak=no],
+           [dnl When cross-compiling, assume that only ELF platforms support
+            dnl weak symbols.
+            AC_EGREP_CPP([Extensible Linking Format],
+              [#ifdef __ELF__
+               Extensible Linking Format
+               #endif
+              ],
+              [gl_cv_have_weak="guessing yes"],
+              [gl_cv_have_weak="guessing no"])
+           ])
+       fi
+      ])
+    if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
+      # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that
+      # it groks <pthread.h>. It's added above, in gl_THREADLIB_EARLY_BODY.
+      AC_CHECK_HEADER([pthread.h],
+        [gl_have_pthread_h=yes], [gl_have_pthread_h=no])
+      if test "$gl_have_pthread_h" = yes; then
+        # Other possible tests:
+        #   -lpthreads (FSU threads, PCthreads)
+        #   -lgthreads
+        gl_have_pthread=
+        # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist
+        # in libc. IRIX 6.5 has the first one in both libc and libpthread, but
+        # the second one only in libpthread, and lock.c needs it.
+        AC_LINK_IFELSE(
+          [AC_LANG_PROGRAM(
+             [[#include <pthread.h>]],
+             [[pthread_mutex_lock((pthread_mutex_t*)0);
+               pthread_mutexattr_init((pthread_mutexattr_t*)0);]])],
+          [gl_have_pthread=yes])
+        # Test for libpthread by looking for pthread_kill. (Not pthread_self,
+        # since it is defined as a macro on OSF/1.)
+        if test -n "$gl_have_pthread"; then
+          # The program links fine without libpthread. But it may actually
+          # need to link with libpthread in order to create multiple threads.
+          AC_CHECK_LIB([pthread], [pthread_kill],
+            [LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread
+             # On Solaris and HP-UX, most pthread functions exist also in libc.
+             # Therefore pthread_in_use() needs to actually try to create a
+             # thread: pthread_create from libc will fail, whereas
+             # pthread_create will actually create a thread.
+             case "$host_os" in
+               solaris* | hpux*)
+                 AC_DEFINE([PTHREAD_IN_USE_DETECTION_HARD], [1],
+                   [Define if the pthread_in_use() detection is hard.])
+             esac
+            ])
+        else
+          # Some library is needed. Try libpthread and libc_r.
+          AC_CHECK_LIB([pthread], [pthread_kill],
+            [gl_have_pthread=yes
+             LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread
+             LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread])
+          if test -z "$gl_have_pthread"; then
+            # For FreeBSD 4.
+            AC_CHECK_LIB([c_r], [pthread_kill],
+              [gl_have_pthread=yes
+               LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r
+               LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r])
+          fi
+        fi
+        if test -n "$gl_have_pthread"; then
+          gl_threads_api=posix
+          AC_DEFINE([USE_POSIX_THREADS], [1],
+            [Define if the POSIX multithreading library can be used.])
+          if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
+            if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
+              AC_DEFINE([USE_POSIX_THREADS_WEAK], [1],
+                [Define if references to the POSIX multithreading library should be made weak.])
+              LIBTHREAD=
+              LTLIBTHREAD=
+            fi
+          fi
+        fi
+      fi
+    fi
+    if test -z "$gl_have_pthread"; then
+      if test "$gl_use_threads" = yes || test "$gl_use_threads" = solaris; then
+        gl_have_solaristhread=
+        gl_save_LIBS="$LIBS"
+        LIBS="$LIBS -lthread"
+        AC_LINK_IFELSE(
+          [AC_LANG_PROGRAM(
+             [[
+#include <thread.h>
+#include <synch.h>
+             ]],
+             [[thr_self();]])],
+          [gl_have_solaristhread=yes])
+        LIBS="$gl_save_LIBS"
+        if test -n "$gl_have_solaristhread"; then
+          gl_threads_api=solaris
+          LIBTHREAD=-lthread
+          LTLIBTHREAD=-lthread
+          LIBMULTITHREAD="$LIBTHREAD"
+          LTLIBMULTITHREAD="$LTLIBTHREAD"
+          AC_DEFINE([USE_SOLARIS_THREADS], [1],
+            [Define if the old Solaris multithreading library can be used.])
+          if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
+            AC_DEFINE([USE_SOLARIS_THREADS_WEAK], [1],
+              [Define if references to the old Solaris multithreading library should be made weak.])
+            LIBTHREAD=
+            LTLIBTHREAD=
+          fi
+        fi
+      fi
+    fi
+    if test "$gl_use_threads" = pth; then
+      gl_save_CPPFLAGS="$CPPFLAGS"
+      AC_LIB_LINKFLAGS([pth])
+      gl_have_pth=
+      gl_save_LIBS="$LIBS"
+      LIBS="$LIBS $LIBPTH"
+      AC_LINK_IFELSE(
+        [AC_LANG_PROGRAM([[#include <pth.h>]], [[pth_self();]])],
+        [gl_have_pth=yes])
+      LIBS="$gl_save_LIBS"
+      if test -n "$gl_have_pth"; then
+        gl_threads_api=pth
+        LIBTHREAD="$LIBPTH"
+        LTLIBTHREAD="$LTLIBPTH"
+        LIBMULTITHREAD="$LIBTHREAD"
+        LTLIBMULTITHREAD="$LTLIBTHREAD"
+        AC_DEFINE([USE_PTH_THREADS], [1],
+          [Define if the GNU Pth multithreading library can be used.])
+        if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
+          if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
+            AC_DEFINE([USE_PTH_THREADS_WEAK], [1],
+              [Define if references to the GNU Pth multithreading library should be made weak.])
+            LIBTHREAD=
+            LTLIBTHREAD=
+          fi
+        fi
+      else
+        CPPFLAGS="$gl_save_CPPFLAGS"
+      fi
+    fi
+    if test -z "$gl_have_pthread"; then
+      if test "$gl_use_threads" = yes || test "$gl_use_threads" = win32; then
+        if { case "$host_os" in
+               mingw*) true;;
+               *) false;;
+             esac
+           }; then
+          gl_threads_api=win32
+          AC_DEFINE([USE_WIN32_THREADS], [1],
+            [Define if the Win32 multithreading API can be used.])
+        fi
+      fi
+    fi
+  fi
+  AC_MSG_CHECKING([for multithread API to use])
+  AC_MSG_RESULT([$gl_threads_api])
+  AC_SUBST([LIBTHREAD])
+  AC_SUBST([LTLIBTHREAD])
+  AC_SUBST([LIBMULTITHREAD])
+  AC_SUBST([LTLIBMULTITHREAD])
+])
+
+AC_DEFUN([gl_THREADLIB],
+[
+  AC_REQUIRE([gl_THREADLIB_EARLY])
+  AC_REQUIRE([gl_THREADLIB_BODY])
+])
+
+
+dnl gl_DISABLE_THREADS
+dnl ------------------
+dnl Sets the gl_THREADLIB default so that threads are not used by default.
+dnl The user can still override it at installation time, by using the
+dnl configure option '--enable-threads'.
+
+AC_DEFUN([gl_DISABLE_THREADS], [
+  m4_divert_text([INIT_PREPARE], [gl_use_threads_default=no])
+])
+
+
+dnl Survey of platforms:
+dnl
+dnl Platform          Available   Compiler    Supports   test-lock
+dnl                   flavours    option      weak       result
+dnl ---------------   ---------   ---------   --------   ---------
+dnl Linux 2.4/glibc   posix       -lpthread       Y      OK
+dnl
+dnl GNU Hurd/glibc    posix
+dnl
+dnl FreeBSD 5.3       posix       -lc_r           Y
+dnl                   posix       -lkse ?         Y
+dnl                   posix       -lpthread ?     Y
+dnl                   posix       -lthr           Y
+dnl
+dnl FreeBSD 5.2       posix       -lc_r           Y
+dnl                   posix       -lkse           Y
+dnl                   posix       -lthr           Y
+dnl
+dnl FreeBSD 4.0,4.10  posix       -lc_r           Y      OK
+dnl
+dnl NetBSD 1.6        --
+dnl
+dnl OpenBSD 3.4       posix       -lpthread       Y      OK
+dnl
+dnl MacOS X 10.[123]  posix       -lpthread       Y      OK
+dnl
+dnl Solaris 7,8,9     posix       -lpthread       Y      Sol 7,8: 0.0; Sol 9: OK
+dnl                   solaris     -lthread        Y      Sol 7,8: 0.0; Sol 9: OK
+dnl
+dnl HP-UX 11          posix       -lpthread       N (cc) OK
+dnl                                               Y (gcc)
+dnl
+dnl IRIX 6.5          posix       -lpthread       Y      0.5
+dnl
+dnl AIX 4.3,5.1       posix       -lpthread       N      AIX 4: 0.5; AIX 5: OK
+dnl
+dnl OSF/1 4.0,5.1     posix       -pthread (cc)   N      OK
+dnl                               -lpthread (gcc) Y
+dnl
+dnl Cygwin            posix       -lpthread       Y      OK
+dnl
+dnl Any of the above  pth         -lpth                  0.0
+dnl
+dnl Mingw             win32                       N      OK
+dnl
+dnl BeOS 5            --
+dnl
+dnl The test-lock result shows what happens if in test-lock.c EXPLICIT_YIELD is
+dnl turned off:
+dnl   OK if all three tests terminate OK,
+dnl   0.5 if the first test terminates OK but the second one loops endlessly,
+dnl   0.0 if the first test already loops endlessly.
diff --git a/m4/time_h.m4 b/m4/time_h.m4
new file mode 100644 (file)
index 0000000..615da1c
--- /dev/null
@@ -0,0 +1,109 @@
+# Configure a more-standard replacement for <time.h>.
+
+# Copyright (C) 2000-2001, 2003-2007, 2009-2011 Free Software Foundation, Inc.
+
+# serial 4
+
+# 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.
+
+# Written by Paul Eggert and Jim Meyering.
+
+AC_DEFUN([gl_HEADER_TIME_H],
+[
+  dnl Use AC_REQUIRE here, so that the default behavior below is expanded
+  dnl once only, before all statements that occur in other macros.
+  AC_REQUIRE([gl_HEADER_TIME_H_BODY])
+])
+
+AC_DEFUN([gl_HEADER_TIME_H_BODY],
+[
+  AC_REQUIRE([AC_C_RESTRICT])
+  AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS])
+  gl_NEXT_HEADERS([time.h])
+  AC_REQUIRE([gl_CHECK_TYPE_STRUCT_TIMESPEC])
+])
+
+dnl Define HAVE_STRUCT_TIMESPEC if `struct timespec' is declared
+dnl in time.h, sys/time.h, or pthread.h.
+
+AC_DEFUN([gl_CHECK_TYPE_STRUCT_TIMESPEC],
+[
+  AC_CHECK_HEADERS_ONCE([sys/time.h])
+  AC_CACHE_CHECK([for struct timespec in <time.h>],
+    [gl_cv_sys_struct_timespec_in_time_h],
+    [AC_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[#include <time.h>
+          ]],
+          [[static struct timespec x; x.tv_sec = x.tv_nsec;]])],
+       [gl_cv_sys_struct_timespec_in_time_h=yes],
+       [gl_cv_sys_struct_timespec_in_time_h=no])])
+
+  TIME_H_DEFINES_STRUCT_TIMESPEC=0
+  SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=0
+  PTHREAD_H_DEFINES_STRUCT_TIMESPEC=0
+  if test $gl_cv_sys_struct_timespec_in_time_h = yes; then
+    TIME_H_DEFINES_STRUCT_TIMESPEC=1
+  else
+    AC_CACHE_CHECK([for struct timespec in <sys/time.h>],
+      [gl_cv_sys_struct_timespec_in_sys_time_h],
+      [AC_COMPILE_IFELSE(
+         [AC_LANG_PROGRAM(
+            [[#include <sys/time.h>
+            ]],
+            [[static struct timespec x; x.tv_sec = x.tv_nsec;]])],
+         [gl_cv_sys_struct_timespec_in_sys_time_h=yes],
+         [gl_cv_sys_struct_timespec_in_sys_time_h=no])])
+    if test $gl_cv_sys_struct_timespec_in_sys_time_h = yes; then
+      SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=1
+    else
+      AC_CACHE_CHECK([for struct timespec in <pthread.h>],
+        [gl_cv_sys_struct_timespec_in_pthread_h],
+        [AC_COMPILE_IFELSE(
+           [AC_LANG_PROGRAM(
+              [[#include <pthread.h>
+              ]],
+              [[static struct timespec x; x.tv_sec = x.tv_nsec;]])],
+           [gl_cv_sys_struct_timespec_in_pthread_h=yes],
+           [gl_cv_sys_struct_timespec_in_pthread_h=no])])
+      if test $gl_cv_sys_struct_timespec_in_pthread_h = yes; then
+        PTHREAD_H_DEFINES_STRUCT_TIMESPEC=1
+      fi
+    fi
+  fi
+  AC_SUBST([TIME_H_DEFINES_STRUCT_TIMESPEC])
+  AC_SUBST([SYS_TIME_H_DEFINES_STRUCT_TIMESPEC])
+  AC_SUBST([PTHREAD_H_DEFINES_STRUCT_TIMESPEC])
+])
+
+AC_DEFUN([gl_TIME_MODULE_INDICATOR],
+[
+  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+  AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS])
+  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+  dnl Define it also as a C macro, for the benefit of the unit tests.
+  gl_MODULE_INDICATOR_FOR_TESTS([$1])
+])
+
+AC_DEFUN([gl_HEADER_TIME_H_DEFAULTS],
+[
+  GNULIB_MKTIME=0;                       AC_SUBST([GNULIB_MKTIME])
+  GNULIB_NANOSLEEP=0;                    AC_SUBST([GNULIB_NANOSLEEP])
+  GNULIB_STRPTIME=0;                     AC_SUBST([GNULIB_STRPTIME])
+  GNULIB_TIMEGM=0;                       AC_SUBST([GNULIB_TIMEGM])
+  GNULIB_TIME_R=0;                       AC_SUBST([GNULIB_TIME_R])
+  dnl Assume proper GNU behavior unless another module says otherwise.
+  HAVE_DECL_LOCALTIME_R=1;               AC_SUBST([HAVE_DECL_LOCALTIME_R])
+  HAVE_NANOSLEEP=1;                      AC_SUBST([HAVE_NANOSLEEP])
+  HAVE_STRPTIME=1;                       AC_SUBST([HAVE_STRPTIME])
+  HAVE_TIMEGM=1;                         AC_SUBST([HAVE_TIMEGM])
+  dnl If another module says to replace or to not replace, do that.
+  dnl Otherwise, replace only if someone compiles with -DGNULIB_PORTCHECK;
+  dnl this lets maintainers check for portability.
+  REPLACE_LOCALTIME_R=GNULIB_PORTCHECK;  AC_SUBST([REPLACE_LOCALTIME_R])
+  REPLACE_MKTIME=GNULIB_PORTCHECK;       AC_SUBST([REPLACE_MKTIME])
+  REPLACE_NANOSLEEP=GNULIB_PORTCHECK;    AC_SUBST([REPLACE_NANOSLEEP])
+  REPLACE_TIMEGM=GNULIB_PORTCHECK;       AC_SUBST([REPLACE_TIMEGM])
+])
diff --git a/m4/ungetc.m4 b/m4/ungetc.m4
new file mode 100644 (file)
index 0000000..749f6bd
--- /dev/null
@@ -0,0 +1,36 @@
+# ungetc.m4 serial 2
+dnl Copyright (C) 2009-2011 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.
+
+AC_DEFUN_ONCE([gl_FUNC_UNGETC_WORKS],
+[
+  AC_REQUIRE([AC_PROG_CC])
+
+  AC_CACHE_CHECK([whether ungetc works on arbitrary bytes],
+    [gl_cv_func_ungetc_works],
+    [AC_RUN_IFELSE([AC_LANG_PROGRAM([[
+#include <stdio.h>
+      ]], [FILE *f;
+           if (!(f = fopen ("conftest.tmp", "w+"))) return 1;
+           if (fputs ("abc", f) < 0) return 2;
+           rewind (f);
+           if (fgetc (f) != 'a') return 3;
+           if (fgetc (f) != 'b') return 4;
+           if (ungetc ('d', f) != 'd') return 5;
+           if (ftell (f) != 1) return 6;
+           if (fgetc (f) != 'd') return 7;
+           if (ftell (f) != 2) return 8;
+           if (fseek (f, 0, SEEK_CUR) != 0) return 9;
+           if (ftell (f) != 2) return 10;
+           if (fgetc (f) != 'c') return 11;
+           fclose (f); remove ("conftest.tmp");])],
+        [gl_cv_func_ungetc_works=yes], [gl_cv_func_ungetc_works=no],
+        [gl_cv_func_ungetc_works='guessing no'])
+    ])
+  if test "$gl_cv_func_ungetc_works" != yes; then
+    AC_DEFINE([FUNC_UNGETC_BROKEN], [1],
+      [Define to 1 if ungetc is broken when used on arbitrary bytes.])
+  fi
+])
diff --git a/m4/unistd_h.m4 b/m4/unistd_h.m4
new file mode 100644 (file)
index 0000000..fb6fe07
--- /dev/null
@@ -0,0 +1,167 @@
+# unistd_h.m4 serial 56
+dnl Copyright (C) 2006-2011 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 Written by Simon Josefsson, Bruno Haible.
+
+AC_DEFUN([gl_UNISTD_H],
+[
+  dnl Use AC_REQUIRE here, so that the default behavior below is expanded
+  dnl once only, before all statements that occur in other macros.
+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+  AC_REQUIRE([AC_C_INLINE])
+
+  gl_CHECK_NEXT_HEADERS([unistd.h])
+  if test $ac_cv_header_unistd_h = yes; then
+    HAVE_UNISTD_H=1
+  else
+    HAVE_UNISTD_H=0
+  fi
+  AC_SUBST([HAVE_UNISTD_H])
+
+  dnl Check for declarations of anything we want to poison if the
+  dnl corresponding gnulib module is not in use.
+  gl_WARN_ON_USE_PREPARE([[#include <unistd.h>
+/* Some systems declare various items in the wrong headers.  */
+#if !(defined __GLIBC__ && !defined __UCLIBC__)
+# include <fcntl.h>
+# include <stdio.h>
+# include <stdlib.h>
+# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+#  include <io.h>
+# endif
+#endif
+    ]], [chown dup2 dup3 environ euidaccess faccessat fchdir fchownat
+    fsync ftruncate getcwd getdomainname getdtablesize getgroups
+    gethostname getlogin getlogin_r getpagesize getusershell setusershell
+    endusershell group_member lchown link linkat lseek pipe pipe2 pread pwrite
+    readlink readlinkat rmdir sleep symlink symlinkat ttyname_r unlink unlinkat
+    usleep])
+])
+
+AC_DEFUN([gl_UNISTD_MODULE_INDICATOR],
+[
+  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+  dnl Define it also as a C macro, for the benefit of the unit tests.
+  gl_MODULE_INDICATOR_FOR_TESTS([$1])
+])
+
+AC_DEFUN([gl_UNISTD_H_DEFAULTS],
+[
+  GNULIB_CHOWN=0;                AC_SUBST([GNULIB_CHOWN])
+  GNULIB_CLOSE=0;                AC_SUBST([GNULIB_CLOSE])
+  GNULIB_DUP2=0;                 AC_SUBST([GNULIB_DUP2])
+  GNULIB_DUP3=0;                 AC_SUBST([GNULIB_DUP3])
+  GNULIB_ENVIRON=0;              AC_SUBST([GNULIB_ENVIRON])
+  GNULIB_EUIDACCESS=0;           AC_SUBST([GNULIB_EUIDACCESS])
+  GNULIB_FACCESSAT=0;            AC_SUBST([GNULIB_FACCESSAT])
+  GNULIB_FCHDIR=0;               AC_SUBST([GNULIB_FCHDIR])
+  GNULIB_FCHOWNAT=0;             AC_SUBST([GNULIB_FCHOWNAT])
+  GNULIB_FSYNC=0;                AC_SUBST([GNULIB_FSYNC])
+  GNULIB_FTRUNCATE=0;            AC_SUBST([GNULIB_FTRUNCATE])
+  GNULIB_GETCWD=0;               AC_SUBST([GNULIB_GETCWD])
+  GNULIB_GETDOMAINNAME=0;        AC_SUBST([GNULIB_GETDOMAINNAME])
+  GNULIB_GETDTABLESIZE=0;        AC_SUBST([GNULIB_GETDTABLESIZE])
+  GNULIB_GETGROUPS=0;            AC_SUBST([GNULIB_GETGROUPS])
+  GNULIB_GETHOSTNAME=0;          AC_SUBST([GNULIB_GETHOSTNAME])
+  GNULIB_GETLOGIN=0;             AC_SUBST([GNULIB_GETLOGIN])
+  GNULIB_GETLOGIN_R=0;           AC_SUBST([GNULIB_GETLOGIN_R])
+  GNULIB_GETPAGESIZE=0;          AC_SUBST([GNULIB_GETPAGESIZE])
+  GNULIB_GETUSERSHELL=0;         AC_SUBST([GNULIB_GETUSERSHELL])
+  GNULIB_GROUP_MEMBER=0;         AC_SUBST([GNULIB_GROUP_MEMBER])
+  GNULIB_LCHOWN=0;               AC_SUBST([GNULIB_LCHOWN])
+  GNULIB_LINK=0;                 AC_SUBST([GNULIB_LINK])
+  GNULIB_LINKAT=0;               AC_SUBST([GNULIB_LINKAT])
+  GNULIB_LSEEK=0;                AC_SUBST([GNULIB_LSEEK])
+  GNULIB_PIPE=0;                 AC_SUBST([GNULIB_PIPE])
+  GNULIB_PIPE2=0;                AC_SUBST([GNULIB_PIPE2])
+  GNULIB_PREAD=0;                AC_SUBST([GNULIB_PREAD])
+  GNULIB_PWRITE=0;               AC_SUBST([GNULIB_PWRITE])
+  GNULIB_READ=0;                 AC_SUBST([GNULIB_READ])
+  GNULIB_READLINK=0;             AC_SUBST([GNULIB_READLINK])
+  GNULIB_READLINKAT=0;           AC_SUBST([GNULIB_READLINKAT])
+  GNULIB_RMDIR=0;                AC_SUBST([GNULIB_RMDIR])
+  GNULIB_SLEEP=0;                AC_SUBST([GNULIB_SLEEP])
+  GNULIB_SYMLINK=0;              AC_SUBST([GNULIB_SYMLINK])
+  GNULIB_SYMLINKAT=0;            AC_SUBST([GNULIB_SYMLINKAT])
+  GNULIB_TTYNAME_R=0;            AC_SUBST([GNULIB_TTYNAME_R])
+  GNULIB_UNISTD_H_GETOPT=0;      AC_SUBST([GNULIB_UNISTD_H_GETOPT])
+  GNULIB_UNISTD_H_NONBLOCKING=0; AC_SUBST([GNULIB_UNISTD_H_NONBLOCKING])
+  GNULIB_UNISTD_H_SIGPIPE=0;     AC_SUBST([GNULIB_UNISTD_H_SIGPIPE])
+  GNULIB_UNLINK=0;               AC_SUBST([GNULIB_UNLINK])
+  GNULIB_UNLINKAT=0;             AC_SUBST([GNULIB_UNLINKAT])
+  GNULIB_USLEEP=0;               AC_SUBST([GNULIB_USLEEP])
+  GNULIB_WRITE=0;                AC_SUBST([GNULIB_WRITE])
+  dnl Assume proper GNU behavior unless another module says otherwise.
+  HAVE_CHOWN=1;           AC_SUBST([HAVE_CHOWN])
+  HAVE_DUP2=1;            AC_SUBST([HAVE_DUP2])
+  HAVE_DUP3=1;            AC_SUBST([HAVE_DUP3])
+  HAVE_EUIDACCESS=1;      AC_SUBST([HAVE_EUIDACCESS])
+  HAVE_FACCESSAT=1;       AC_SUBST([HAVE_FACCESSAT])
+  HAVE_FCHDIR=1;          AC_SUBST([HAVE_FCHDIR])
+  HAVE_FCHOWNAT=1;        AC_SUBST([HAVE_FCHOWNAT])
+  HAVE_FSYNC=1;           AC_SUBST([HAVE_FSYNC])
+  HAVE_FTRUNCATE=1;       AC_SUBST([HAVE_FTRUNCATE])
+  HAVE_GETDTABLESIZE=1;   AC_SUBST([HAVE_GETDTABLESIZE])
+  HAVE_GETGROUPS=1;       AC_SUBST([HAVE_GETGROUPS])
+  HAVE_GETHOSTNAME=1;     AC_SUBST([HAVE_GETHOSTNAME])
+  HAVE_GETLOGIN=1;        AC_SUBST([HAVE_GETLOGIN])
+  HAVE_GETPAGESIZE=1;     AC_SUBST([HAVE_GETPAGESIZE])
+  HAVE_GROUP_MEMBER=1;    AC_SUBST([HAVE_GROUP_MEMBER])
+  HAVE_LCHOWN=1;          AC_SUBST([HAVE_LCHOWN])
+  HAVE_LINK=1;            AC_SUBST([HAVE_LINK])
+  HAVE_LINKAT=1;          AC_SUBST([HAVE_LINKAT])
+  HAVE_PIPE=1;            AC_SUBST([HAVE_PIPE])
+  HAVE_PIPE2=1;           AC_SUBST([HAVE_PIPE2])
+  HAVE_PREAD=1;           AC_SUBST([HAVE_PREAD])
+  HAVE_PWRITE=1;          AC_SUBST([HAVE_PWRITE])
+  HAVE_READLINK=1;        AC_SUBST([HAVE_READLINK])
+  HAVE_READLINKAT=1;      AC_SUBST([HAVE_READLINKAT])
+  HAVE_SLEEP=1;           AC_SUBST([HAVE_SLEEP])
+  HAVE_SYMLINK=1;         AC_SUBST([HAVE_SYMLINK])
+  HAVE_SYMLINKAT=1;       AC_SUBST([HAVE_SYMLINKAT])
+  HAVE_UNLINKAT=1;        AC_SUBST([HAVE_UNLINKAT])
+  HAVE_USLEEP=1;          AC_SUBST([HAVE_USLEEP])
+  HAVE_DECL_ENVIRON=1;    AC_SUBST([HAVE_DECL_ENVIRON])
+  HAVE_DECL_FCHDIR=1;     AC_SUBST([HAVE_DECL_FCHDIR])
+  HAVE_DECL_GETDOMAINNAME=1; AC_SUBST([HAVE_DECL_GETDOMAINNAME])
+  HAVE_DECL_GETLOGIN_R=1; AC_SUBST([HAVE_DECL_GETLOGIN_R])
+  HAVE_DECL_GETPAGESIZE=1; AC_SUBST([HAVE_DECL_GETPAGESIZE])
+  HAVE_DECL_GETUSERSHELL=1; AC_SUBST([HAVE_DECL_GETUSERSHELL])
+  HAVE_DECL_TTYNAME_R=1;  AC_SUBST([HAVE_DECL_TTYNAME_R])
+  HAVE_OS_H=0;            AC_SUBST([HAVE_OS_H])
+  HAVE_SYS_PARAM_H=0;     AC_SUBST([HAVE_SYS_PARAM_H])
+  REPLACE_CHOWN=0;        AC_SUBST([REPLACE_CHOWN])
+  REPLACE_CLOSE=0;        AC_SUBST([REPLACE_CLOSE])
+  REPLACE_DUP=0;          AC_SUBST([REPLACE_DUP])
+  REPLACE_DUP2=0;         AC_SUBST([REPLACE_DUP2])
+  REPLACE_FCHOWNAT=0;     AC_SUBST([REPLACE_FCHOWNAT])
+  REPLACE_GETCWD=0;       AC_SUBST([REPLACE_GETCWD])
+  REPLACE_GETDOMAINNAME=0; AC_SUBST([REPLACE_GETDOMAINNAME])
+  REPLACE_GETLOGIN_R=0;   AC_SUBST([REPLACE_GETLOGIN_R])
+  REPLACE_GETGROUPS=0;    AC_SUBST([REPLACE_GETGROUPS])
+  REPLACE_GETPAGESIZE=0;  AC_SUBST([REPLACE_GETPAGESIZE])
+  REPLACE_LCHOWN=0;       AC_SUBST([REPLACE_LCHOWN])
+  REPLACE_LINK=0;         AC_SUBST([REPLACE_LINK])
+  REPLACE_LINKAT=0;       AC_SUBST([REPLACE_LINKAT])
+  REPLACE_LSEEK=0;        AC_SUBST([REPLACE_LSEEK])
+  REPLACE_PREAD=0;        AC_SUBST([REPLACE_PREAD])
+  REPLACE_PWRITE=0;       AC_SUBST([REPLACE_PWRITE])
+  REPLACE_READ=0;         AC_SUBST([REPLACE_READ])
+  REPLACE_READLINK=0;     AC_SUBST([REPLACE_READLINK])
+  REPLACE_RMDIR=0;        AC_SUBST([REPLACE_RMDIR])
+  REPLACE_SLEEP=0;        AC_SUBST([REPLACE_SLEEP])
+  REPLACE_SYMLINK=0;      AC_SUBST([REPLACE_SYMLINK])
+  REPLACE_TTYNAME_R=0;    AC_SUBST([REPLACE_TTYNAME_R])
+  REPLACE_UNLINK=0;       AC_SUBST([REPLACE_UNLINK])
+  REPLACE_UNLINKAT=0;     AC_SUBST([REPLACE_UNLINKAT])
+  REPLACE_USLEEP=0;       AC_SUBST([REPLACE_USLEEP])
+  REPLACE_WRITE=0;        AC_SUBST([REPLACE_WRITE])
+  UNISTD_H_HAVE_WINSOCK2_H=0; AC_SUBST([UNISTD_H_HAVE_WINSOCK2_H])
+  UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS=0;
+                           AC_SUBST([UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS])
+])
diff --git a/m4/unlink.m4 b/m4/unlink.m4
new file mode 100644 (file)
index 0000000..a49a692
--- /dev/null
@@ -0,0 +1,113 @@
+# unlink.m4 serial 7
+dnl Copyright (C) 2009-2011 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.
+
+AC_DEFUN([gl_FUNC_UNLINK],
+[
+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  dnl Detect FreeBSD 7.2, AIX 7.1, Solaris 9 bug.
+  AC_CACHE_CHECK([whether unlink honors trailing slashes],
+    [gl_cv_func_unlink_honors_slashes],
+    [touch conftest.file
+     # Assume that if we have lstat, we can also check symlinks.
+     if test $ac_cv_func_lstat = yes; then
+       ln -s conftest.file conftest.lnk
+     fi
+     AC_RUN_IFELSE(
+       [AC_LANG_PROGRAM(
+         [[#include <unistd.h>
+           #include <errno.h>
+         ]],
+         [[int result = 0;
+           if (!unlink ("conftest.file/"))
+             result |= 1;
+           else if (errno != ENOTDIR)
+             result |= 2;
+#if HAVE_LSTAT
+           if (!unlink ("conftest.lnk/"))
+             result |= 4;
+           else if (errno != ENOTDIR)
+             result |= 8;
+#endif
+           return result;
+         ]])],
+      [gl_cv_func_unlink_honors_slashes=yes],
+      [gl_cv_func_unlink_honors_slashes=no],
+      [gl_cv_func_unlink_honors_slashes="guessing no"])
+     rm -f conftest.file conftest.lnk])
+  dnl Detect MacOS X 10.5.6 bug: On read-write HFS mounts, unlink("..") or
+  dnl unlink("../..") succeeds without doing anything.
+  AC_CACHE_CHECK([whether unlink of a parent directory fails as it should],
+    [gl_cv_func_unlink_parent_fails],
+    [case "$host_os" in
+       darwin*)
+         dnl Try to unlink a subdirectory of /tmp, because /tmp is usually on a
+         dnl HFS mount on MacOS X. Use a subdirectory, owned by the current
+         dnl user, because otherwise unlink() may fail due to permissions
+         dnl reasons, and because when running as root we don't want to risk
+         dnl destroying the entire /tmp.
+         if {
+              # Use the mktemp program if available. If not available, hide the error
+              # message.
+              tmp=`(umask 077 && mktemp -d /tmp/gtXXXXXX) 2>/dev/null` &&
+              test -n "$tmp" && test -d "$tmp"
+            } ||
+            {
+              # Use a simple mkdir command. It is guaranteed to fail if the directory
+              # already exists.  $RANDOM is bash specific and expands to empty in shells
+              # other than bash, ksh and zsh.  Its use does not increase security;
+              # rather, it minimizes the probability of failure in a very cluttered /tmp
+              # directory.
+              tmp=/tmp/gt$$-$RANDOM
+              (umask 077 && mkdir "$tmp")
+            }; then
+           mkdir "$tmp/subdir"
+           GL_SUBDIR_FOR_UNLINK="$tmp/subdir"
+           export GL_SUBDIR_FOR_UNLINK
+           AC_RUN_IFELSE(
+             [AC_LANG_SOURCE([[
+                #include <stdlib.h>
+                #include <unistd.h>
+                int main ()
+                {
+                  int result = 0;
+                  if (chdir (getenv ("GL_SUBDIR_FOR_UNLINK")) != 0)
+                    result |= 1;
+                  else if (unlink ("..") == 0)
+                    result |= 2;
+                  return result;
+                }
+              ]])],
+             [gl_cv_func_unlink_parent_fails=yes],
+             [gl_cv_func_unlink_parent_fails=no],
+             [gl_cv_func_unlink_parent_fails="guessing no"])
+           unset GL_SUBDIR_FOR_UNLINK
+           rm -rf "$tmp"
+         else
+           gl_cv_func_unlink_parent_fails="guessing no"
+         fi
+         ;;
+       *)
+         gl_cv_func_unlink_parent_fails="guessing yes"
+         ;;
+     esac
+    ])
+  case "$gl_cv_func_unlink_parent_fails" in
+    *no)
+      AC_DEFINE([UNLINK_PARENT_BUG], [1],
+        [Define to 1 if unlink() on a parent directory may succeed])
+      ;;
+  esac
+  if test "$gl_cv_func_unlink_honors_slashes" != yes \
+     || { case "$gl_cv_func_unlink_parent_fails" in
+            *yes) false;;
+            *no) true;;
+          esac
+        }; then
+    REPLACE_UNLINK=1
+    AC_LIBOBJ([unlink])
+  fi
+])
diff --git a/m4/unlinkdir.m4 b/m4/unlinkdir.m4
new file mode 100644 (file)
index 0000000..dabe5f4
--- /dev/null
@@ -0,0 +1,34 @@
+# serial 6
+
+# Copyright (C) 2005-2007, 2009-2011 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.
+
+# Written by Paul Eggert.
+
+AC_DEFUN([gl_UNLINKDIR],
+[
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  AC_CHECK_HEADERS_ONCE([priv.h])
+
+  AC_LIBOBJ([unlinkdir])
+
+  # The Hurd, the Linux kernel, the FreeBSD kernel version 2.2 and later,
+  # Cygwin, and mingw never let anyone (even root) unlink directories.
+  # If anyone knows of another system for which unlink can never
+  # remove a directory, please report it to <bug-coreutils@gnu.org>.
+  # Unfortunately this is difficult to test for, since it requires root access
+  # and might create garbage in the file system,
+  # so the code below simply relies on the kernel name and version number.
+  case $host_os in
+  gnu[[0-9]]* | \
+  linux-* | linux | \
+  freebsd2.2* | freebsd[[3-9]]* | freebsd[[1-9]][[0-9]]* | \
+  cygwin | \
+  mingw*)
+    AC_DEFINE([UNLINK_CANNOT_UNLINK_DIR], [1],
+      [Define to 1 if unlink (dir) cannot possibly succeed.]);;
+  esac
+])
diff --git a/m4/usleep.m4 b/m4/usleep.m4
new file mode 100644 (file)
index 0000000..a41cbb1
--- /dev/null
@@ -0,0 +1,37 @@
+# usleep.m4 serial 1
+dnl Copyright (C) 2009-2011 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 This macro intentionally does not check for select or nanosleep;
+dnl both of those modules can require external libraries.
+AC_DEFUN([gl_FUNC_USLEEP],
+[
+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+  dnl usleep was required in POSIX 2001, but dropped as obsolete in
+  dnl POSIX 2008; therefore, it is not always exposed in headers.
+  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+  AC_CHECK_FUNCS_ONCE([usleep])
+  AC_CHECK_TYPE([useconds_t], [],
+    [AC_DEFINE([useconds_t], [unsigned int], [Define to an unsigned 32-bit
+      type if <sys/types.h> lacks this type.])])
+  if test $ac_cv_func_usleep = no; then
+    HAVE_USLEEP=0
+    AC_LIBOBJ([usleep])
+  else
+    dnl POSIX allows implementations to reject arguments larger than
+    dnl 999999, but GNU guarantees it will work.
+    AC_CACHE_CHECK([whether usleep allows large arguments],
+      [gl_cv_func_usleep_works],
+      [AC_RUN_IFELSE([AC_LANG_PROGRAM([[
+#include <unistd.h>
+]], [[return !!usleep (1000000);]])],
+        [gl_cv_func_usleep_works=yes], [gl_cv_func_usleep_works=no],
+        [gl_cv_func_usleep_works="guessing no"])])
+    if test "$gl_cv_func_usleep_works" != yes; then
+      REPLACE_USLEEP=1
+      AC_LIBOBJ([usleep])
+    fi
+  fi
+])
diff --git a/m4/version-etc.m4 b/m4/version-etc.m4
new file mode 100644 (file)
index 0000000..5032bf8
--- /dev/null
@@ -0,0 +1,33 @@
+# version-etc.m4 serial 1
+# Copyright (C) 2009-2011 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.
+
+dnl $1 - configure flag and define name
+dnl $2 - human readable description
+m4_define([gl_VERSION_ETC_FLAG],
+[dnl
+  AC_ARG_WITH([$1], [AS_HELP_STRING([--with-$1], [$2])],
+    [dnl
+      case $withval in
+        yes|no) ;;
+        *) AC_DEFINE_UNQUOTED(AS_TR_CPP([PACKAGE_$1]), ["$withval"], [$2]) ;;
+      esac
+    ])
+])
+
+AC_DEFUN([gl_VERSION_ETC],
+[dnl
+  gl_VERSION_ETC_FLAG([packager],
+                      [String identifying the packager of this software])
+  gl_VERSION_ETC_FLAG([packager-version],
+                      [Packager-specific version information])
+  gl_VERSION_ETC_FLAG([packager-bug-reports],
+                      [Packager info for bug reports (URL/e-mail/...)])
+  if test "X$with_packager" = "X" && \
+     test "X$with_packager_version$with_packager_bug_reports" != "X"
+  then
+    AC_MSG_ERROR([The --with-packager-{bug-reports,version} options require --with-packager])
+  fi
+])
diff --git a/m4/warn-on-use.m4 b/m4/warn-on-use.m4
new file mode 100644 (file)
index 0000000..e0d0f27
--- /dev/null
@@ -0,0 +1,45 @@
+# warn-on-use.m4 serial 2
+dnl Copyright (C) 2010-2011 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.
+
+# gl_WARN_ON_USE_PREPARE(INCLUDES, NAMES)
+# ---------------------------------------
+# For each whitespace-separated element in the list of NAMES, define
+# HAVE_RAW_DECL_name if the function has a declaration among INCLUDES
+# even after being undefined as a macro.
+#
+# See warn-on-use.h for some hints on how to poison function names, as
+# well as ideas on poisoning global variables and macros.  NAMES may
+# include global variables, but remember that only functions work with
+# _GL_WARN_ON_USE.  Typically, INCLUDES only needs to list a single
+# header, but if the replacement header pulls in other headers because
+# some systems declare functions in the wrong header, then INCLUDES
+# should do likewise.
+#
+# If you assume C89, then it is generally safe to assume declarations
+# for functions declared in that standard (such as gets) without
+# needing gl_WARN_ON_USE_PREPARE.
+AC_DEFUN([gl_WARN_ON_USE_PREPARE],
+[
+  m4_foreach_w([gl_decl], [$2],
+    [AH_TEMPLATE([HAVE_RAW_DECL_]AS_TR_CPP(m4_defn([gl_decl])),
+      [Define to 1 if ]m4_defn([gl_decl])[ is declared even after
+       undefining macros.])])dnl
+  for gl_func in m4_flatten([$2]); do
+    AS_VAR_PUSHDEF([gl_Symbol], [gl_cv_have_raw_decl_$gl_func])dnl
+    AC_CACHE_CHECK([whether $gl_func is declared without a macro],
+      gl_Symbol,
+      [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([$1],
+[@%:@undef $gl_func
+  (void) $gl_func;])],
+        [AS_VAR_SET(gl_Symbol, [yes])], [AS_VAR_SET(gl_Symbol, [no])])])
+     AS_VAR_IF(gl_Symbol, [yes],
+       [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_RAW_DECL_$gl_func]), [1])
+       dnl shortcut - if the raw declaration exists, then set a cache
+       dnl variable to allow skipping any later AC_CHECK_DECL efforts
+       eval ac_cv_have_decl_$gl_func=yes])
+    AS_VAR_POPDEF([gl_Symbol])dnl
+  done
+])
diff --git a/m4/warnings.m4 b/m4/warnings.m4
new file mode 100644 (file)
index 0000000..b2d1a29
--- /dev/null
@@ -0,0 +1,36 @@
+# warnings.m4 serial 3
+dnl Copyright (C) 2008-2011 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 Simon Josefsson
+
+# gl_AS_VAR_APPEND(VAR, VALUE)
+# ----------------------------
+# Provide the functionality of AS_VAR_APPEND if Autoconf does not have it.
+m4_ifdef([AS_VAR_APPEND],
+[m4_copy([AS_VAR_APPEND], [gl_AS_VAR_APPEND])],
+[m4_define([gl_AS_VAR_APPEND],
+[AS_VAR_SET([$1], [AS_VAR_GET([$1])$2])])])
+
+# gl_WARN_ADD(PARAMETER, [VARIABLE = WARN_CFLAGS])
+# ------------------------------------------------
+# Adds parameter to WARN_CFLAGS if the compiler supports it.  For example,
+# gl_WARN_ADD([-Wparentheses]).
+AC_DEFUN([gl_WARN_ADD],
+[AS_VAR_PUSHDEF([gl_Warn], [gl_cv_warn_$1])dnl
+AC_CACHE_CHECK([whether compiler handles $1], [gl_Warn], [
+  gl_save_CPPFLAGS="$CPPFLAGS"
+  CPPFLAGS="${CPPFLAGS} $1"
+  AC_PREPROC_IFELSE([AC_LANG_PROGRAM([])],
+                    [AS_VAR_SET([gl_Warn], [yes])],
+                    [AS_VAR_SET([gl_Warn], [no])])
+  CPPFLAGS="$gl_save_CPPFLAGS"
+])
+AS_VAR_PUSHDEF([gl_Flags], m4_if([$2], [], [[WARN_CFLAGS]], [[$2]]))dnl
+AS_VAR_IF([gl_Warn], [yes], [gl_AS_VAR_APPEND([gl_Flags], [" $1"])])
+AS_VAR_POPDEF([gl_Flags])dnl
+AS_VAR_POPDEF([gl_Warn])dnl
+m4_ifval([$2], [AS_LITERAL_IF([$2], [AC_SUBST([$2])], [])])dnl
+])
diff --git a/m4/wchar_h.m4 b/m4/wchar_h.m4
new file mode 100644 (file)
index 0000000..977491f
--- /dev/null
@@ -0,0 +1,225 @@
+dnl A placeholder for ISO C99 <wchar.h>, for platforms that have issues.
+
+dnl Copyright (C) 2007-2011 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 Written by Eric Blake.
+
+# wchar_h.m4 serial 39
+
+AC_DEFUN([gl_WCHAR_H],
+[
+  AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
+  AC_REQUIRE([gl_WCHAR_H_INLINE_OK])
+  dnl Prepare for creating substitute <wchar.h>.
+  dnl Check for <wchar.h> (missing in Linux uClibc when built without wide
+  dnl character support).
+  dnl <wchar.h> is always overridden, because of GNULIB_POSIXCHECK.
+  gl_CHECK_NEXT_HEADERS([wchar.h])
+  if test $ac_cv_header_wchar_h = yes; then
+    HAVE_WCHAR_H=1
+  else
+    HAVE_WCHAR_H=0
+  fi
+  AC_SUBST([HAVE_WCHAR_H])
+
+  AC_REQUIRE([gl_FEATURES_H])
+
+  AC_REQUIRE([gt_TYPE_WINT_T])
+  if test $gt_cv_c_wint_t = yes; then
+    HAVE_WINT_T=1
+  else
+    HAVE_WINT_T=0
+  fi
+  AC_SUBST([HAVE_WINT_T])
+
+  dnl Check for declarations of anything we want to poison if the
+  dnl corresponding gnulib module is not in use.
+  gl_WARN_ON_USE_PREPARE([[
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#if !(defined __GLIBC__ && !defined __UCLIBC__)
+# include <stddef.h>
+# include <stdio.h>
+# include <time.h>
+#endif
+#include <wchar.h>
+    ]],
+    [btowc wctob mbsinit mbrtowc mbrlen mbsrtowcs mbsnrtowcs wcrtomb
+     wcsrtombs wcsnrtombs wcwidth wmemchr wmemcmp wmemcpy wmemmove wmemset
+     wcslen wcsnlen wcscpy wcpcpy wcsncpy wcpncpy wcscat wcsncat wcscmp
+     wcsncmp wcscasecmp wcsncasecmp wcscoll wcsxfrm wcsdup wcschr wcsrchr
+     wcscspn wcsspn wcspbrk wcsstr wcstok wcswidth
+    ])
+])
+
+dnl Check whether <wchar.h> is usable at all.
+AC_DEFUN([gl_WCHAR_H_INLINE_OK],
+[
+  dnl Test whether <wchar.h> suffers due to the transition from '__inline' to
+  dnl 'gnu_inline'. See <http://sourceware.org/bugzilla/show_bug.cgi?id=4022>
+  dnl and <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42440>. In summary,
+  dnl glibc version 2.5 or older, together with gcc version 4.3 or newer and
+  dnl the option -std=c99 or -std=gnu99, leads to a broken <wchar.h>.
+  AC_CACHE_CHECK([whether <wchar.h> uses 'inline' correctly],
+    [gl_cv_header_wchar_h_correct_inline],
+    [gl_cv_header_wchar_h_correct_inline=yes
+     AC_LANG_CONFTEST([
+       AC_LANG_SOURCE([[#define wcstod renamed_wcstod
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+extern int zero (void);
+int main () { return zero(); }
+]])])
+     if AC_TRY_EVAL([ac_compile]); then
+       mv conftest.$ac_objext conftest1.$ac_objext
+       AC_LANG_CONFTEST([
+         AC_LANG_SOURCE([[#define wcstod renamed_wcstod
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int zero (void) { return 0; }
+]])])
+       if AC_TRY_EVAL([ac_compile]); then
+         mv conftest.$ac_objext conftest2.$ac_objext
+         if $CC -o conftest$ac_exeext $CFLAGS $LDFLAGS conftest1.$ac_objext conftest2.$ac_objext $LIBS >&AS_MESSAGE_LOG_FD 2>&1; then
+           :
+         else
+           gl_cv_header_wchar_h_correct_inline=no
+         fi
+       fi
+     fi
+     rm -f conftest1.$ac_objext conftest2.$ac_objext conftest$ac_exeext
+    ])
+  if test $gl_cv_header_wchar_h_correct_inline = no; then
+    AC_MSG_ERROR([<wchar.h> cannot be used with this compiler ($CC $CFLAGS $CPPFLAGS).
+This is a known interoperability problem of glibc <= 2.5 with gcc >= 4.3 in
+C99 mode. You have four options:
+  - Add the flag -fgnu89-inline to CC and reconfigure, or
+  - Fix your include files, using parts of
+    <http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=b037a293a48718af30d706c2e18c929d0e69a621>, or
+  - Use a gcc version older than 4.3, or
+  - Don't use the flags -std=c99 or -std=gnu99.
+Configuration aborted.])
+  fi
+])
+
+AC_DEFUN([gl_WCHAR_MODULE_INDICATOR],
+[
+  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+  AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
+  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+  dnl Define it also as a C macro, for the benefit of the unit tests.
+  gl_MODULE_INDICATOR_FOR_TESTS([$1])
+])
+
+AC_DEFUN([gl_WCHAR_H_DEFAULTS],
+[
+  GNULIB_BTOWC=0;       AC_SUBST([GNULIB_BTOWC])
+  GNULIB_WCTOB=0;       AC_SUBST([GNULIB_WCTOB])
+  GNULIB_MBSINIT=0;     AC_SUBST([GNULIB_MBSINIT])
+  GNULIB_MBRTOWC=0;     AC_SUBST([GNULIB_MBRTOWC])
+  GNULIB_MBRLEN=0;      AC_SUBST([GNULIB_MBRLEN])
+  GNULIB_MBSRTOWCS=0;   AC_SUBST([GNULIB_MBSRTOWCS])
+  GNULIB_MBSNRTOWCS=0;  AC_SUBST([GNULIB_MBSNRTOWCS])
+  GNULIB_WCRTOMB=0;     AC_SUBST([GNULIB_WCRTOMB])
+  GNULIB_WCSRTOMBS=0;   AC_SUBST([GNULIB_WCSRTOMBS])
+  GNULIB_WCSNRTOMBS=0;  AC_SUBST([GNULIB_WCSNRTOMBS])
+  GNULIB_WCWIDTH=0;     AC_SUBST([GNULIB_WCWIDTH])
+  GNULIB_WMEMCHR=0;     AC_SUBST([GNULIB_WMEMCHR])
+  GNULIB_WMEMCMP=0;     AC_SUBST([GNULIB_WMEMCMP])
+  GNULIB_WMEMCPY=0;     AC_SUBST([GNULIB_WMEMCPY])
+  GNULIB_WMEMMOVE=0;    AC_SUBST([GNULIB_WMEMMOVE])
+  GNULIB_WMEMSET=0;     AC_SUBST([GNULIB_WMEMSET])
+  GNULIB_WCSLEN=0;      AC_SUBST([GNULIB_WCSLEN])
+  GNULIB_WCSNLEN=0;     AC_SUBST([GNULIB_WCSNLEN])
+  GNULIB_WCSCPY=0;      AC_SUBST([GNULIB_WCSCPY])
+  GNULIB_WCPCPY=0;      AC_SUBST([GNULIB_WCPCPY])
+  GNULIB_WCSNCPY=0;     AC_SUBST([GNULIB_WCSNCPY])
+  GNULIB_WCPNCPY=0;     AC_SUBST([GNULIB_WCPNCPY])
+  GNULIB_WCSCAT=0;      AC_SUBST([GNULIB_WCSCAT])
+  GNULIB_WCSNCAT=0;     AC_SUBST([GNULIB_WCSNCAT])
+  GNULIB_WCSCMP=0;      AC_SUBST([GNULIB_WCSCMP])
+  GNULIB_WCSNCMP=0;     AC_SUBST([GNULIB_WCSNCMP])
+  GNULIB_WCSCASECMP=0;  AC_SUBST([GNULIB_WCSCASECMP])
+  GNULIB_WCSNCASECMP=0; AC_SUBST([GNULIB_WCSNCASECMP])
+  GNULIB_WCSCOLL=0;     AC_SUBST([GNULIB_WCSCOLL])
+  GNULIB_WCSXFRM=0;     AC_SUBST([GNULIB_WCSXFRM])
+  GNULIB_WCSDUP=0;      AC_SUBST([GNULIB_WCSDUP])
+  GNULIB_WCSCHR=0;      AC_SUBST([GNULIB_WCSCHR])
+  GNULIB_WCSRCHR=0;     AC_SUBST([GNULIB_WCSRCHR])
+  GNULIB_WCSCSPN=0;     AC_SUBST([GNULIB_WCSCSPN])
+  GNULIB_WCSSPN=0;      AC_SUBST([GNULIB_WCSSPN])
+  GNULIB_WCSPBRK=0;     AC_SUBST([GNULIB_WCSPBRK])
+  GNULIB_WCSSTR=0;      AC_SUBST([GNULIB_WCSSTR])
+  GNULIB_WCSTOK=0;      AC_SUBST([GNULIB_WCSTOK])
+  GNULIB_WCSWIDTH=0;    AC_SUBST([GNULIB_WCSWIDTH])
+  dnl Assume proper GNU behavior unless another module says otherwise.
+  HAVE_BTOWC=1;         AC_SUBST([HAVE_BTOWC])
+  HAVE_MBSINIT=1;       AC_SUBST([HAVE_MBSINIT])
+  HAVE_MBRTOWC=1;       AC_SUBST([HAVE_MBRTOWC])
+  HAVE_MBRLEN=1;        AC_SUBST([HAVE_MBRLEN])
+  HAVE_MBSRTOWCS=1;     AC_SUBST([HAVE_MBSRTOWCS])
+  HAVE_MBSNRTOWCS=1;    AC_SUBST([HAVE_MBSNRTOWCS])
+  HAVE_WCRTOMB=1;       AC_SUBST([HAVE_WCRTOMB])
+  HAVE_WCSRTOMBS=1;     AC_SUBST([HAVE_WCSRTOMBS])
+  HAVE_WCSNRTOMBS=1;    AC_SUBST([HAVE_WCSNRTOMBS])
+  HAVE_WMEMCHR=1;       AC_SUBST([HAVE_WMEMCHR])
+  HAVE_WMEMCMP=1;       AC_SUBST([HAVE_WMEMCMP])
+  HAVE_WMEMCPY=1;       AC_SUBST([HAVE_WMEMCPY])
+  HAVE_WMEMMOVE=1;      AC_SUBST([HAVE_WMEMMOVE])
+  HAVE_WMEMSET=1;       AC_SUBST([HAVE_WMEMSET])
+  HAVE_WCSLEN=1;        AC_SUBST([HAVE_WCSLEN])
+  HAVE_WCSNLEN=1;       AC_SUBST([HAVE_WCSNLEN])
+  HAVE_WCSCPY=1;        AC_SUBST([HAVE_WCSCPY])
+  HAVE_WCPCPY=1;        AC_SUBST([HAVE_WCPCPY])
+  HAVE_WCSNCPY=1;       AC_SUBST([HAVE_WCSNCPY])
+  HAVE_WCPNCPY=1;       AC_SUBST([HAVE_WCPNCPY])
+  HAVE_WCSCAT=1;        AC_SUBST([HAVE_WCSCAT])
+  HAVE_WCSNCAT=1;       AC_SUBST([HAVE_WCSNCAT])
+  HAVE_WCSCMP=1;        AC_SUBST([HAVE_WCSCMP])
+  HAVE_WCSNCMP=1;       AC_SUBST([HAVE_WCSNCMP])
+  HAVE_WCSCASECMP=1;    AC_SUBST([HAVE_WCSCASECMP])
+  HAVE_WCSNCASECMP=1;   AC_SUBST([HAVE_WCSNCASECMP])
+  HAVE_WCSCOLL=1;       AC_SUBST([HAVE_WCSCOLL])
+  HAVE_WCSXFRM=1;       AC_SUBST([HAVE_WCSXFRM])
+  HAVE_WCSDUP=1;        AC_SUBST([HAVE_WCSDUP])
+  HAVE_WCSCHR=1;        AC_SUBST([HAVE_WCSCHR])
+  HAVE_WCSRCHR=1;       AC_SUBST([HAVE_WCSRCHR])
+  HAVE_WCSCSPN=1;       AC_SUBST([HAVE_WCSCSPN])
+  HAVE_WCSSPN=1;        AC_SUBST([HAVE_WCSSPN])
+  HAVE_WCSPBRK=1;       AC_SUBST([HAVE_WCSPBRK])
+  HAVE_WCSSTR=1;        AC_SUBST([HAVE_WCSSTR])
+  HAVE_WCSTOK=1;        AC_SUBST([HAVE_WCSTOK])
+  HAVE_WCSWIDTH=1;      AC_SUBST([HAVE_WCSWIDTH])
+  HAVE_DECL_WCTOB=1;    AC_SUBST([HAVE_DECL_WCTOB])
+  HAVE_DECL_WCWIDTH=1;  AC_SUBST([HAVE_DECL_WCWIDTH])
+  REPLACE_MBSTATE_T=0;  AC_SUBST([REPLACE_MBSTATE_T])
+  REPLACE_BTOWC=0;      AC_SUBST([REPLACE_BTOWC])
+  REPLACE_WCTOB=0;      AC_SUBST([REPLACE_WCTOB])
+  REPLACE_MBSINIT=0;    AC_SUBST([REPLACE_MBSINIT])
+  REPLACE_MBRTOWC=0;    AC_SUBST([REPLACE_MBRTOWC])
+  REPLACE_MBRLEN=0;     AC_SUBST([REPLACE_MBRLEN])
+  REPLACE_MBSRTOWCS=0;  AC_SUBST([REPLACE_MBSRTOWCS])
+  REPLACE_MBSNRTOWCS=0; AC_SUBST([REPLACE_MBSNRTOWCS])
+  REPLACE_WCRTOMB=0;    AC_SUBST([REPLACE_WCRTOMB])
+  REPLACE_WCSRTOMBS=0;  AC_SUBST([REPLACE_WCSRTOMBS])
+  REPLACE_WCSNRTOMBS=0; AC_SUBST([REPLACE_WCSNRTOMBS])
+  REPLACE_WCWIDTH=0;    AC_SUBST([REPLACE_WCWIDTH])
+  REPLACE_WCSWIDTH=0;   AC_SUBST([REPLACE_WCSWIDTH])
+])
diff --git a/m4/wchar_t.m4 b/m4/wchar_t.m4
new file mode 100644 (file)
index 0000000..d2c03c4
--- /dev/null
@@ -0,0 +1,24 @@
+# wchar_t.m4 serial 4 (gettext-0.18.2)
+dnl Copyright (C) 2002-2003, 2008-2011 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 Test whether <stddef.h> has the 'wchar_t' type.
+dnl Prerequisite: AC_PROG_CC
+
+AC_DEFUN([gt_TYPE_WCHAR_T],
+[
+  AC_CACHE_CHECK([for wchar_t], [gt_cv_c_wchar_t],
+    [AC_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[#include <stddef.h>
+            wchar_t foo = (wchar_t)'\0';]],
+          [[]])],
+       [gt_cv_c_wchar_t=yes],
+       [gt_cv_c_wchar_t=no])])
+  if test $gt_cv_c_wchar_t = yes; then
+    AC_DEFINE([HAVE_WCHAR_T], [1], [Define if you have the 'wchar_t' type.])
+  fi
+])
diff --git a/m4/wcrtomb.m4 b/m4/wcrtomb.m4
new file mode 100644 (file)
index 0000000..4f58e3f
--- /dev/null
@@ -0,0 +1,100 @@
+# wcrtomb.m4 serial 9
+dnl Copyright (C) 2008-2011 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.
+
+AC_DEFUN([gl_FUNC_WCRTOMB],
+[
+  AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
+
+  AC_REQUIRE([AC_TYPE_MBSTATE_T])
+  gl_MBSTATE_T_BROKEN
+
+  AC_CHECK_FUNCS_ONCE([wcrtomb])
+  if test $ac_cv_func_wcrtomb = no; then
+    HAVE_WCRTOMB=0
+  else
+    if test $REPLACE_MBSTATE_T = 1; then
+      REPLACE_WCRTOMB=1
+    else
+      dnl On AIX 4.3, OSF/1 5.1 and Solaris 10, wcrtomb (NULL, 0, NULL) sometimes
+      dnl returns 0 instead of 1.
+      AC_REQUIRE([AC_PROG_CC])
+      AC_REQUIRE([gt_LOCALE_FR])
+      AC_REQUIRE([gt_LOCALE_FR_UTF8])
+      AC_REQUIRE([gt_LOCALE_JA])
+      AC_REQUIRE([gt_LOCALE_ZH_CN])
+      AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+      AC_CACHE_CHECK([whether wcrtomb return value is correct],
+        [gl_cv_func_wcrtomb_retval],
+        [
+          dnl Initial guess, used when cross-compiling or when no suitable locale
+          dnl is present.
+changequote(,)dnl
+          case "$host_os" in
+                                     # Guess no on AIX 4, OSF/1 and Solaris.
+            aix4* | osf* | solaris*) gl_cv_func_wcrtomb_retval="guessing no" ;;
+                                     # Guess yes otherwise.
+            *)                       gl_cv_func_wcrtomb_retval="guessing yes" ;;
+          esac
+changequote([,])dnl
+          if test $LOCALE_FR != none || test $LOCALE_FR_UTF8 != none || test $LOCALE_JA != none || test $LOCALE_ZH_CN != none; then
+            AC_RUN_IFELSE(
+              [AC_LANG_SOURCE([[
+#include <locale.h>
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int main ()
+{
+  int result = 0;
+  if (setlocale (LC_ALL, "$LOCALE_FR") != NULL)
+    {
+      if (wcrtomb (NULL, 0, NULL) != 1)
+        result |= 1;
+    }
+  if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+    {
+      if (wcrtomb (NULL, 0, NULL) != 1)
+        result |= 2;
+    }
+  if (setlocale (LC_ALL, "$LOCALE_JA") != NULL)
+    {
+      if (wcrtomb (NULL, 0, NULL) != 1)
+        result |= 4;
+    }
+  if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL)
+    {
+      if (wcrtomb (NULL, 0, NULL) != 1)
+        result |= 8;
+    }
+  return result;
+}]])],
+              [gl_cv_func_wcrtomb_retval=yes],
+              [gl_cv_func_wcrtomb_retval=no],
+              [:])
+          fi
+        ])
+      case "$gl_cv_func_wcrtomb_retval" in
+        *yes) ;;
+        *) REPLACE_WCRTOMB=1 ;;
+      esac
+    fi
+  fi
+  if test $HAVE_WCRTOMB = 0 || test $REPLACE_WCRTOMB = 1; then
+    AC_LIBOBJ([wcrtomb])
+    gl_PREREQ_WCRTOMB
+  fi
+])
+
+# Prerequisites of lib/wcrtomb.c.
+AC_DEFUN([gl_PREREQ_WCRTOMB], [
+  :
+])
diff --git a/m4/wctob.m4 b/m4/wctob.m4
new file mode 100644 (file)
index 0000000..b66e755
--- /dev/null
@@ -0,0 +1,130 @@
+# wctob.m4 serial 8
+dnl Copyright (C) 2008-2011 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.
+
+AC_DEFUN([gl_FUNC_WCTOB],
+[
+  AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
+
+  AC_CHECK_FUNCS_ONCE([wctob])
+  if test $ac_cv_func_wctob = no; then
+    HAVE_DECL_WCTOB=0
+    AC_LIBOBJ([wctob])
+    gl_PREREQ_WCTOB
+  else
+
+    dnl Solaris 9 has the wctob() function but it does not work.
+    dnl Cygwin 1.7.2 has the wctob() function but it clobbers caller-owned
+    dnl registers, see <http://cygwin.com/ml/cygwin/2010-05/msg00015.html>.
+    AC_REQUIRE([AC_PROG_CC])
+    AC_REQUIRE([gt_LOCALE_FR])
+    AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+    AC_CACHE_CHECK([whether wctob works],
+      [gl_cv_func_wctob_works],
+      [
+        dnl Initial guess, used when cross-compiling or when no suitable locale
+        dnl is present.
+changequote(,)dnl
+        case "$host_os" in
+            # Guess no on Solaris <= 9 and Cygwin.
+          solaris2.[1-9] | solaris2.[1-9].* | cygwin*)
+            gl_cv_func_wctob_works="guessing no" ;;
+            # Guess yes otherwise.
+          *) gl_cv_func_wctob_works="guessing yes" ;;
+        esac
+changequote([,])dnl
+        case "$host_os" in
+          cygwin*)
+            AC_RUN_IFELSE(
+              [AC_LANG_SOURCE([[
+#include <locale.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+
+register long global __asm__ ("%ebx");
+
+int main ()
+{
+  setlocale (LC_ALL, "en_US.UTF-8");
+
+  global = 0x12345678;
+  if (wctob (0x00FC) != -1)
+    return 1;
+  if (global != 0x12345678)
+    return 2;
+  return 0;
+}]])],
+              [:],
+              [gl_cv_func_wctob_works=no],
+              [:])
+            ;;
+        esac
+        if test "$gl_cv_func_wctob_works" != no && test $LOCALE_FR != none; then
+          AC_RUN_IFELSE(
+            [AC_LANG_SOURCE([[
+#include <locale.h>
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int main ()
+{
+  if (setlocale (LC_ALL, "$LOCALE_FR") != NULL)
+    {
+      wchar_t wc;
+
+      if (mbtowc (&wc, "\374", 1) == 1)
+        if (wctob (wc) != (unsigned char) '\374')
+          return 1;
+    }
+  return 0;
+}]])],
+            [gl_cv_func_wctob_works=yes],
+            [gl_cv_func_wctob_works=no],
+            [:])
+        fi
+      ])
+    case "$gl_cv_func_wctob_works" in
+      *yes) ;;
+      *) REPLACE_WCTOB=1 ;;
+    esac
+    if test $REPLACE_WCTOB = 1; then
+      AC_LIBOBJ([wctob])
+      gl_PREREQ_WCTOB
+    else
+
+      dnl IRIX 6.5 has the wctob() function but does not declare it.
+      AC_CHECK_DECLS([wctob], [], [], [
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+   before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+])
+      if test $ac_cv_have_decl_wctob != yes; then
+        HAVE_DECL_WCTOB=0
+      fi
+    fi
+  fi
+])
+
+# Prerequisites of lib/wctob.c.
+AC_DEFUN([gl_PREREQ_WCTOB], [
+  :
+])
diff --git a/m4/wctomb.m4 b/m4/wctomb.m4
new file mode 100644 (file)
index 0000000..bc21b5b
--- /dev/null
@@ -0,0 +1,23 @@
+# wctomb.m4 serial 1
+dnl Copyright (C) 2011 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.
+
+AC_DEFUN([gl_FUNC_WCTOMB],
+[
+  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+
+  if false; then
+    REPLACE_WCTOMB=1
+  fi
+  if test $REPLACE_WCTOMB = 1; then
+    AC_LIBOBJ([wctomb])
+    gl_PREREQ_WCTOMB
+  fi
+])
+
+# Prerequisites of lib/wctomb.c.
+AC_DEFUN([gl_PREREQ_WCTOMB], [
+  :
+])
diff --git a/m4/wctype_h.m4 b/m4/wctype_h.m4
new file mode 100644 (file)
index 0000000..ef9fb04
--- /dev/null
@@ -0,0 +1,174 @@
+# wctype_h.m4 serial 14
+
+dnl A placeholder for ISO C99 <wctype.h>, for platforms that lack it.
+
+dnl Copyright (C) 2006-2011 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 Written by Paul Eggert.
+
+AC_DEFUN([gl_WCTYPE_H],
+[
+  AC_REQUIRE([gl_WCTYPE_H_DEFAULTS])
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  AC_CHECK_FUNCS_ONCE([iswcntrl])
+  if test $ac_cv_func_iswcntrl = yes; then
+    HAVE_ISWCNTRL=1
+  else
+    HAVE_ISWCNTRL=0
+  fi
+  AC_SUBST([HAVE_ISWCNTRL])
+
+  AC_REQUIRE([AC_C_INLINE])
+
+  AC_REQUIRE([gt_TYPE_WINT_T])
+  if test $gt_cv_c_wint_t = yes; then
+    HAVE_WINT_T=1
+  else
+    HAVE_WINT_T=0
+  fi
+  AC_SUBST([HAVE_WINT_T])
+
+  gl_CHECK_NEXT_HEADERS([wctype.h])
+  if test $ac_cv_header_wctype_h = yes; then
+    if test $ac_cv_func_iswcntrl = yes; then
+      dnl Linux libc5 has an iswprint function that returns 0 for all arguments.
+      dnl The other functions are likely broken in the same way.
+      AC_CACHE_CHECK([whether iswcntrl works], [gl_cv_func_iswcntrl_works],
+        [
+          AC_RUN_IFELSE(
+            [AC_LANG_SOURCE([[
+               /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be
+                  included before <wchar.h>.
+                  BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h>
+                  must be included before <wchar.h>.  */
+               #include <stddef.h>
+               #include <stdio.h>
+               #include <time.h>
+               #include <wchar.h>
+               #include <wctype.h>
+               int main () { return iswprint ('x') == 0; }
+            ]])],
+            [gl_cv_func_iswcntrl_works=yes], [gl_cv_func_iswcntrl_works=no],
+            [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdlib.h>
+                          #if __GNU_LIBRARY__ == 1
+                          Linux libc5 i18n is broken.
+                          #endif]], [])],
+              [gl_cv_func_iswcntrl_works=yes], [gl_cv_func_iswcntrl_works=no])
+            ])
+        ])
+    fi
+    HAVE_WCTYPE_H=1
+  else
+    HAVE_WCTYPE_H=0
+  fi
+  AC_SUBST([HAVE_WCTYPE_H])
+
+  if test "$gl_cv_func_iswcntrl_works" = no; then
+    REPLACE_ISWCNTRL=1
+  else
+    REPLACE_ISWCNTRL=0
+  fi
+  AC_SUBST([REPLACE_ISWCNTRL])
+
+  if test $HAVE_ISWCNTRL = 0 || test $REPLACE_ISWCNTRL = 1; then
+    dnl Redefine all of iswcntrl, ..., towupper in <wctype.h>.
+    :
+  fi
+
+  dnl We assume that the wctype() and iswctype() functions exist if and only
+  dnl if the type wctype_t is defined in <wchar.h> or in <wctype.h> if that
+  dnl exists.
+  dnl HP-UX 11.00 declares all these in <wchar.h> and lacks <wctype.h>.
+  AC_CACHE_CHECK([for wctype_t], [gl_cv_type_wctype_t],
+    [AC_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be
+               included before <wchar.h>.
+               BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h>
+               must be included before <wchar.h>.  */
+            #include <stddef.h>
+            #include <stdio.h>
+            #include <time.h>
+            #include <wchar.h>
+            #if HAVE_WCTYPE_H
+            # include <wctype.h>
+            #endif
+            wctype_t a;
+          ]],
+          [[]])],
+       [gl_cv_type_wctype_t=yes],
+       [gl_cv_type_wctype_t=no])
+    ])
+  if test $gl_cv_type_wctype_t = no; then
+    HAVE_WCTYPE_T=0
+  fi
+
+  dnl We assume that the wctrans() and towctrans() functions exist if and only
+  dnl if the type wctrans_t is defined in <wctype.h>.
+  AC_CACHE_CHECK([for wctrans_t], [gl_cv_type_wctrans_t],
+    [AC_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be
+               included before <wchar.h>.
+               BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h>
+               must be included before <wchar.h>.  */
+            #include <stddef.h>
+            #include <stdio.h>
+            #include <time.h>
+            #include <wchar.h>
+            #include <wctype.h>
+            wctrans_t a;
+          ]],
+          [[]])],
+       [gl_cv_type_wctrans_t=yes],
+       [gl_cv_type_wctrans_t=no])
+    ])
+  if test $gl_cv_type_wctrans_t = no; then
+    HAVE_WCTRANS_T=0
+  fi
+
+  dnl Check for declarations of anything we want to poison if the
+  dnl corresponding gnulib module is not in use.
+  gl_WARN_ON_USE_PREPARE([[
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#if !(defined __GLIBC__ && !defined __UCLIBC__)
+# include <stddef.h>
+# include <stdio.h>
+# include <time.h>
+# include <wchar.h>
+#endif
+#include <wctype.h>
+    ]],
+    [wctype iswctype wctrans towctrans
+    ])
+])
+
+AC_DEFUN([gl_WCTYPE_MODULE_INDICATOR],
+[
+  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+  AC_REQUIRE([gl_WCTYPE_H_DEFAULTS])
+  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+  dnl Define it also as a C macro, for the benefit of the unit tests.
+  gl_MODULE_INDICATOR_FOR_TESTS([$1])
+])
+
+AC_DEFUN([gl_WCTYPE_H_DEFAULTS],
+[
+  GNULIB_ISWBLANK=0;    AC_SUBST([GNULIB_ISWBLANK])
+  GNULIB_WCTYPE=0;      AC_SUBST([GNULIB_WCTYPE])
+  GNULIB_ISWCTYPE=0;    AC_SUBST([GNULIB_ISWCTYPE])
+  GNULIB_WCTRANS=0;     AC_SUBST([GNULIB_WCTRANS])
+  GNULIB_TOWCTRANS=0;   AC_SUBST([GNULIB_TOWCTRANS])
+  dnl Assume proper GNU behavior unless another module says otherwise.
+  HAVE_ISWBLANK=1;      AC_SUBST([HAVE_ISWBLANK])
+  HAVE_WCTYPE_T=1;      AC_SUBST([HAVE_WCTYPE_T])
+  HAVE_WCTRANS_T=1;     AC_SUBST([HAVE_WCTRANS_T])
+  REPLACE_ISWBLANK=0;   AC_SUBST([REPLACE_ISWBLANK])
+])
diff --git a/m4/wint_t.m4 b/m4/wint_t.m4
new file mode 100644 (file)
index 0000000..da1ce3d
--- /dev/null
@@ -0,0 +1,32 @@
+# wint_t.m4 serial 5 (gettext-0.18.2)
+dnl Copyright (C) 2003, 2007-2011 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 Test whether <wchar.h> has the 'wint_t' type.
+dnl Prerequisite: AC_PROG_CC
+
+AC_DEFUN([gt_TYPE_WINT_T],
+[
+  AC_CACHE_CHECK([for wint_t], [gt_cv_c_wint_t],
+    [AC_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+   before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+            wint_t foo = (wchar_t)'\0';]],
+          [[]])],
+       [gt_cv_c_wint_t=yes],
+       [gt_cv_c_wint_t=no])])
+  if test $gt_cv_c_wint_t = yes; then
+    AC_DEFINE([HAVE_WINT_T], [1], [Define if you have the 'wint_t' type.])
+  fi
+])
diff --git a/m4/xalloc.m4 b/m4/xalloc.m4
new file mode 100644 (file)
index 0000000..4900820
--- /dev/null
@@ -0,0 +1,24 @@
+# xalloc.m4 serial 16
+dnl Copyright (C) 2002-2006, 2009-2011 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.
+
+AC_DEFUN([gl_XALLOC],
+[
+  AC_LIBOBJ([xmalloc])
+
+  gl_PREREQ_XALLOC
+  gl_PREREQ_XMALLOC
+])
+
+# Prerequisites of lib/xalloc.h.
+AC_DEFUN([gl_PREREQ_XALLOC], [
+  AC_REQUIRE([gl_INLINE])
+  :
+])
+
+# Prerequisites of lib/xmalloc.c.
+AC_DEFUN([gl_PREREQ_XMALLOC], [
+  :
+])
diff --git a/m4/xstrndup.m4 b/m4/xstrndup.m4
new file mode 100644 (file)
index 0000000..1400b0f
--- /dev/null
@@ -0,0 +1,15 @@
+# xstrndup.m4 serial 2
+dnl Copyright (C) 2003, 2009-2011 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.
+
+AC_DEFUN([gl_XSTRNDUP],
+[
+  gl_PREREQ_XSTRNDUP
+])
+
+# Prerequisites of lib/xstrndup.c.
+AC_DEFUN([gl_PREREQ_XSTRNDUP], [
+  :
+])
diff --git a/m4/xstrtol.m4 b/m4/xstrtol.m4
new file mode 100644 (file)
index 0000000..99b7db4
--- /dev/null
@@ -0,0 +1,12 @@
+#serial 10
+dnl Copyright (C) 2002-2007, 2009-2011 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.
+
+AC_DEFUN([gl_XSTRTOL],
+[
+  AC_LIBOBJ([xstrtol])
+  AC_LIBOBJ([xstrtoul])
+  AC_LIBOBJ([xstrtol-error])
+])
diff --git a/m4/yield.m4 b/m4/yield.m4
new file mode 100644 (file)
index 0000000..15d5ac2
--- /dev/null
@@ -0,0 +1,19 @@
+# yield.m4 serial 2
+dnl Copyright (C) 2005-2011 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.
+
+AC_DEFUN([gl_YIELD],
+[
+  AC_REQUIRE([gl_THREADLIB])
+  dnl On some systems, sched_yield is in librt, rather than in libpthread.
+  YIELD_LIB=
+  if test $gl_threads_api = posix; then
+    dnl Solaris has sched_yield in librt, not in libpthread or libc.
+    AC_CHECK_LIB([rt], [sched_yield], [YIELD_LIB=-lrt],
+      [dnl Solaris 2.5.1, 2.6 has sched_yield in libposix4, not librt.
+       AC_CHECK_LIB([posix4], [sched_yield], [YIELD_LIB=-lposix4])])
+  fi
+  AC_SUBST([YIELD_LIB])
+])
diff --git a/maint.mk b/maint.mk
new file mode 100644 (file)
index 0000000..9f20900
--- /dev/null
+++ b/maint.mk
@@ -0,0 +1,1452 @@
+# -*-Makefile-*-
+# This Makefile fragment tries to be general-purpose enough to be
+# used by many projects via the gnulib maintainer-makefile module.
+
+## Copyright (C) 2001-2011 Free Software Foundation, 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, 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 <http://www.gnu.org/licenses/>.
+
+# This is reported not to work with make-3.79.1
+# ME := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
+ME := maint.mk
+
+# Override this in cfg.mk if you use a non-standard build-aux directory.
+build_aux ?= $(srcdir)/build-aux
+
+# Do not save the original name or timestamp in the .tar.gz file.
+# Use --rsyncable if available.
+gzip_rsyncable := \
+  $(shell gzip --help 2>/dev/null|grep rsyncable >/dev/null \
+    && printf %s --rsyncable)
+GZIP_ENV = '--no-name --best $(gzip_rsyncable)'
+
+GIT = git
+VC = $(GIT)
+
+VC_LIST = $(build_aux)/vc-list-files -C $(srcdir)
+
+# You can override this variable in cfg.mk to set your own regexp
+# matching files to ignore.
+VC_LIST_ALWAYS_EXCLUDE_REGEX ?= ^$$
+
+# This is to preprocess robustly the output of $(VC_LIST), so that even
+# when $(srcdir) is a pathological name like "....", the leading sed command
+# removes only the intended prefix.
+_dot_escaped_srcdir = $(subst .,\.,$(srcdir))
+
+# Post-process $(VC_LIST) output, prepending $(srcdir)/, but only
+# when $(srcdir) is not ".".
+ifeq ($(srcdir),.)
+_prepend_srcdir_prefix =
+else
+_prepend_srcdir_prefix = | sed 's|^|$(srcdir)/|'
+endif
+
+# In order to be able to consistently filter "."-relative names,
+# (i.e., with no $(srcdir) prefix), this definition is careful to
+# remove any $(srcdir) prefix, and to restore what it removes.
+_sc_excl = \
+  $(if $(exclude_file_name_regexp--$@),$(exclude_file_name_regexp--$@),^$$)
+VC_LIST_EXCEPT = \
+  $(VC_LIST) | sed 's|^$(_dot_escaped_srcdir)/||' \
+       | if test -f $(srcdir)/.x-$@; then grep -vEf $(srcdir)/.x-$@; \
+         else grep -Ev -e "$${VC_LIST_EXCEPT_DEFAULT-ChangeLog}"; fi \
+       | grep -Ev -e '($(VC_LIST_ALWAYS_EXCLUDE_REGEX)|$(_sc_excl))' \
+       $(_prepend_srcdir_prefix)
+
+ifeq ($(origin prev_version_file), undefined)
+  prev_version_file = $(srcdir)/.prev-version
+endif
+
+PREV_VERSION := $(shell cat $(prev_version_file) 2>/dev/null)
+VERSION_REGEXP = $(subst .,\.,$(VERSION))
+PREV_VERSION_REGEXP = $(subst .,\.,$(PREV_VERSION))
+
+ifeq ($(VC),$(GIT))
+this-vc-tag = v$(VERSION)
+this-vc-tag-regexp = v$(VERSION_REGEXP)
+else
+tag-package = $(shell echo "$(PACKAGE)" | tr '[:lower:]' '[:upper:]')
+tag-this-version = $(subst .,_,$(VERSION))
+this-vc-tag = $(tag-package)-$(tag-this-version)
+this-vc-tag-regexp = $(this-vc-tag)
+endif
+my_distdir = $(PACKAGE)-$(VERSION)
+
+# Old releases are stored here.
+release_archive_dir ?= ../release
+
+# Override gnu_rel_host and url_dir_list in cfg.mk if these are not right.
+# Use alpha.gnu.org for alpha and beta releases.
+# Use ftp.gnu.org for stable releases.
+gnu_ftp_host-alpha = alpha.gnu.org
+gnu_ftp_host-beta = alpha.gnu.org
+gnu_ftp_host-stable = ftp.gnu.org
+gnu_rel_host ?= $(gnu_ftp_host-$(RELEASE_TYPE))
+
+ifeq ($(gnu_rel_host),ftp.gnu.org)
+url_dir_list ?= http://ftpmirror.gnu.org/$(PACKAGE)
+else
+url_dir_list ?= ftp://$(gnu_rel_host)/gnu/$(PACKAGE)
+endif
+
+# Override this in cfg.mk if you are using a different format in your
+# NEWS file.
+today = $(shell date +%Y-%m-%d)
+
+# Select which lines of NEWS are searched for $(news-check-regexp).
+# This is a sed line number spec.  The default says that we search
+# lines 1..10 of NEWS for $(news-check-regexp).
+# If you want to search only line 3 or only lines 20-22, use "3" or "20,22".
+news-check-lines-spec ?= 1,10
+news-check-regexp ?= '^\*.* $(VERSION_REGEXP) \($(today)\)'
+
+# Prevent programs like 'sort' from considering distinct strings to be equal.
+# Doing it here saves us from having to set LC_ALL elsewhere in this file.
+export LC_ALL = C
+
+## --------------- ##
+## Sanity checks.  ##
+## --------------- ##
+
+_cfg_mk := $(shell test -f $(srcdir)/cfg.mk && echo '$(srcdir)/cfg.mk')
+
+# Collect the names of rules starting with `sc_'.
+syntax-check-rules := $(sort $(shell sed -n 's/^\(sc_[a-zA-Z0-9_-]*\):.*/\1/p' \
+                       $(srcdir)/$(ME) $(_cfg_mk)))
+.PHONY: $(syntax-check-rules)
+
+ifeq ($(shell $(VC_LIST) >/dev/null 2>&1; echo $$?),0)
+local-checks-available += $(syntax-check-rules)
+else
+local-checks-available += no-vc-detected
+no-vc-detected:
+       @echo "No version control files detected; skipping syntax check"
+endif
+.PHONY: $(local-checks-available)
+
+# Arrange to print the name of each syntax-checking rule just before running it.
+$(syntax-check-rules): %: %.m
+sc_m_rules_ = $(patsubst %, %.m, $(syntax-check-rules))
+.PHONY: $(sc_m_rules_)
+$(sc_m_rules_):
+       @echo $(patsubst sc_%.m, %, $@)
+       @date +%s.%N > .sc-start-$(basename $@)
+
+# Compute and print the elapsed time for each syntax-check rule.
+sc_z_rules_ = $(patsubst %, %.z, $(syntax-check-rules))
+.PHONY: $(sc_z_rules_)
+$(sc_z_rules_): %.z: %
+       @end=$$(date +%s.%N);                                           \
+       start=$$(cat .sc-start-$*);                                     \
+       rm -f .sc-start-$*;                                             \
+       awk -v s=$$start -v e=$$end                                     \
+         'END {printf "%.2f $(patsubst sc_%,%,$*)\n", e - s}' < /dev/null
+
+# The patsubst here is to replace each sc_% rule with its sc_%.z wrapper
+# that computes and prints elapsed time.
+local-check :=                                                         \
+  $(patsubst sc_%, sc_%.z,                                             \
+    $(filter-out $(local-checks-to-skip), $(local-checks-available)))
+
+syntax-check: $(local-check)
+
+# _sc_search_regexp
+#
+# This macro searches for a given construct in the selected files and
+# then takes some action.
+#
+# Parameters (shell variables):
+#
+#  prohibit | require
+#
+#     Regular expression (ERE) denoting either a forbidden construct
+#     or a required construct.  Those arguments are exclusive.
+#
+#  in_vc_files | in_files
+#
+#     grep-E-style regexp denoting the files to check.  If no files
+#     are specified the default are all the files that are under
+#     version control.
+#
+#  containing | non_containing
+#
+#     Select the files (non) containing strings matching this regexp.
+#     If both arguments are specified then CONTAINING takes
+#     precedence.
+#
+#  with_grep_options
+#
+#     Extra options for grep.
+#
+#  ignore_case
+#
+#     Ignore case.
+#
+#  halt
+#
+#     Message to display before to halting execution.
+#
+# Finally, you may exempt files based on an ERE matching file names.
+# For example, to exempt from the sc_space_tab check all files with the
+# .diff suffix, set this Make variable:
+#
+# exclude_file_name_regexp--sc_space_tab = \.diff$
+#
+# Note that while this functionality is mostly inherited via VC_LIST_EXCEPT,
+# when filtering by name via in_files, we explicitly filter out matching
+# names here as well.
+
+# By default, _sc_search_regexp does not ignore case.
+export ignore_case =
+_ignore_case = $$(test -n "$$ignore_case" && printf %s -i || :)
+
+define _sc_say_and_exit
+   dummy=; : so we do not need a semicolon before each use;            \
+   { printf '%s\n' "$(ME): $$msg" 1>&2; exit 1; };
+endef
+
+# _sc_search_regexp used to be named _prohibit_regexp.  However,
+# upgrading to the new definition and leaving the old name undefined
+# would usually convert each custom rule using $(_prohibit_regexp)
+# (usually defined in cfg.mk) into a no-op.  This definition ensures
+# that people know right away if they're still using the old name.
+# FIXME: remove in 2012.
+_prohibit_regexp = \
+  $(error '*** you need to s/_prohibit_regexp/_sc_search_regexp/, and adapt')
+
+define _sc_search_regexp
+   dummy=; : so we do not need a semicolon before each use;            \
+                                                                       \
+   : Check arguments;                                                  \
+   test -n "$$prohibit" && test -n "$$require"                         \
+     && { msg='Cannot specify both prohibit and require'               \
+          $(_sc_say_and_exit) } || :;                                  \
+   test -z "$$prohibit" && test -z "$$require"                         \
+     && { msg='Should specify either prohibit or require'              \
+          $(_sc_say_and_exit) } || :;                                  \
+   test -n "$$in_vc_files" && test -n "$$in_files"                     \
+     && { msg='Cannot specify both in_vc_files and in_files'           \
+          $(_sc_say_and_exit) } || :;                                  \
+   test "x$$halt" != x                                                 \
+     || { msg='halt not defined' $(_sc_say_and_exit) };                        \
+                                                                       \
+   : Filter by file name;                                              \
+   if test -n "$$in_files"; then                                       \
+     files=$$(find $(srcdir) | grep -E "$$in_files"                    \
+              | grep -Ev '$(exclude_file_name_regexp--$@)');           \
+   else                                                                        \
+     files=$$($(VC_LIST_EXCEPT));                                      \
+     if test -n "$$in_vc_files"; then                                  \
+       files=$$(echo "$$files" | grep -E "$$in_vc_files");             \
+     fi;                                                               \
+   fi;                                                                 \
+                                                                       \
+   : Filter by content;                                                        \
+   test -n "$$files" && test -n "$$containing"                         \
+     && { files=$$(grep -l "$$containing" $$files); } || :;            \
+   test -n "$$files" && test -n "$$non_containing"                     \
+     && { files=$$(grep -vl "$$non_containing" $$files); } || :;       \
+                                                                       \
+   : Check for the construct;                                          \
+   if test -n "$$files"; then                                          \
+     if test -n "$$prohibit"; then                                     \
+       grep $$with_grep_options $(_ignore_case) -nE "$$prohibit" $$files \
+         && { msg="$$halt" $(_sc_say_and_exit) } || :;                 \
+     else                                                              \
+       grep $$with_grep_options $(_ignore_case) -LE "$$require" $$files \
+           | grep .                                                    \
+         && { msg="$$halt" $(_sc_say_and_exit) } || :;                 \
+     fi                                                                        \
+   else :;                                                             \
+   fi || :;
+endef
+
+sc_avoid_if_before_free:
+       @$(build_aux)/useless-if-before-free                            \
+               $(useless_free_options)                                 \
+           $$($(VC_LIST_EXCEPT) | grep -v useless-if-before-free) &&   \
+         { echo '$(ME): found useless "if" before "free" above' 1>&2;  \
+           exit 1; } || :
+
+sc_cast_of_argument_to_free:
+       @prohibit='\<free *\( *\(' halt='don'\''t cast free argument'   \
+         $(_sc_search_regexp)
+
+sc_cast_of_x_alloc_return_value:
+       @prohibit='\*\) *x(m|c|re)alloc\>'                              \
+       halt='don'\''t cast x*alloc return value'                       \
+         $(_sc_search_regexp)
+
+sc_cast_of_alloca_return_value:
+       @prohibit='\*\) *alloca\>'                                      \
+       halt='don'\''t cast alloca return value'                        \
+         $(_sc_search_regexp)
+
+sc_space_tab:
+       @prohibit='[ ]  '                                               \
+       halt='found SPACE-TAB sequence; remove the SPACE'               \
+         $(_sc_search_regexp)
+
+# Don't use *scanf or the old ato* functions in `real' code.
+# They provide no error checking mechanism.
+# Instead, use strto* functions.
+sc_prohibit_atoi_atof:
+       @prohibit='\<([fs]?scanf|ato([filq]|ll)) *\('                           \
+       halt='do not use *scan''f, ato''f, ato''i, ato''l, ato''ll or ato''q'   \
+         $(_sc_search_regexp)
+
+# Use STREQ rather than comparing strcmp == 0, or != 0.
+sc_prohibit_strcmp:
+       @grep -nE '! *str''cmp *\(|\<str''cmp *\(.+\) *[!=]='   \
+           $$($(VC_LIST_EXCEPT))                                       \
+         | grep -vE ':# *define STRN?EQ\(' &&                          \
+         { echo '$(ME): replace str''cmp calls above with STREQ/STRNEQ' \
+               1>&2; exit 1; } || :
+
+# Pass EXIT_*, not number, to usage, exit, and error (when exiting)
+# Convert all uses automatically, via these two commands:
+# git grep -l '\<exit *(1)' \
+#  | grep -vEf .x-sc_prohibit_magic_number_exit \
+#  | xargs --no-run-if-empty \
+#      perl -pi -e 's/(^|[^.])\b(exit ?)\(1\)/$1$2(EXIT_FAILURE)/'
+# git grep -l '\<exit *(0)' \
+#  | grep -vEf .x-sc_prohibit_magic_number_exit \
+#  | xargs --no-run-if-empty \
+#      perl -pi -e 's/(^|[^.])\b(exit ?)\(0\)/$1$2(EXIT_SUCCESS)/'
+sc_prohibit_magic_number_exit:
+       @prohibit='(^|[^.])\<(usage|exit) ?\([0-9]|\<error ?\([1-9][0-9]*,'     \
+       halt='use EXIT_* values rather than magic number'                       \
+         $(_sc_search_regexp)
+
+# Using EXIT_SUCCESS as the first argument to error is misleading,
+# since when that parameter is 0, error does not exit.  Use `0' instead.
+sc_error_exit_success:
+       @prohibit='error *\(EXIT_SUCCESS,'                              \
+       in_vc_files='\.[chly]$$'                                        \
+       halt='found error (EXIT_SUCCESS'                                \
+        $(_sc_search_regexp)
+
+# `FATAL:' should be fully upper-cased in error messages
+# `WARNING:' should be fully upper-cased, or fully lower-cased
+sc_error_message_warn_fatal:
+       @grep -nEA2 '[^rp]error *\(' $$($(VC_LIST_EXCEPT))              \
+           | grep -E '"Warning|"Fatal|"fatal' &&                       \
+         { echo '$(ME): use FATAL, WARNING or warning' 1>&2;           \
+           exit 1; } || :
+
+# Error messages should not start with a capital letter
+sc_error_message_uppercase:
+       @grep -nEA2 '[^rp]error *\(' $$($(VC_LIST_EXCEPT))              \
+           | grep -E '"[A-Z]'                                          \
+           | grep -vE '"FATAL|"WARNING|"Java|"C#|PRIuMAX' &&           \
+         { echo '$(ME): found capitalized error message' 1>&2;         \
+           exit 1; } || :
+
+# Error messages should not end with a period
+sc_error_message_period:
+       @grep -nEA2 '[^rp]error *\(' $$($(VC_LIST_EXCEPT))              \
+           | grep -E '[^."]\."' &&                                     \
+         { echo '$(ME): found error message ending in period' 1>&2;    \
+           exit 1; } || :
+
+sc_file_system:
+       @prohibit=file''system                                          \
+       ignore_case=1                                                   \
+       halt='found use of "file''system"; spell it "file system"'      \
+         $(_sc_search_regexp)
+
+# Don't use cpp tests of this symbol.  All code assumes config.h is included.
+sc_prohibit_have_config_h:
+       @prohibit='^# *if.*HAVE''_CONFIG_H'                             \
+       halt='found use of HAVE''_CONFIG_H; remove'                     \
+         $(_sc_search_regexp)
+
+# Nearly all .c files must include <config.h>.  However, we also permit this
+# via inclusion of a package-specific header, if cfg.mk specified one.
+# config_h_header must be suitable for grep -E.
+config_h_header ?= <config\.h>
+sc_require_config_h:
+       @require='^# *include $(config_h_header)'                       \
+       in_vc_files='\.c$$'                                             \
+       halt='the above files do not include <config.h>'                \
+         $(_sc_search_regexp)
+
+# You must include <config.h> before including any other header file.
+# This can possibly be via a package-specific header, if given by cfg.mk.
+sc_require_config_h_first:
+       @if $(VC_LIST_EXCEPT) | grep -l '\.c$$' > /dev/null; then       \
+         fail=0;                                                       \
+         for i in $$($(VC_LIST_EXCEPT) | grep '\.c$$'); do             \
+           grep '^# *include\>' $$i | sed 1q                           \
+               | grep -E '^# *include $(config_h_header)' > /dev/null  \
+             || { echo $$i; fail=1; };                                 \
+         done;                                                         \
+         test $$fail = 1 &&                                            \
+           { echo '$(ME): the above files include some other header'   \
+               'before <config.h>' 1>&2; exit 1; } || :;               \
+       else :;                                                         \
+       fi
+
+sc_prohibit_HAVE_MBRTOWC:
+       @prohibit='\bHAVE_MBRTOWC\b'                                    \
+       halt="do not use $$prohibit; it is always defined"              \
+         $(_sc_search_regexp)
+
+# To use this "command" macro, you must first define two shell variables:
+# h: the header, enclosed in <> or ""
+# re: a regular expression that matches IFF something provided by $h is used.
+define _sc_header_without_use
+  dummy=; : so we do not need a semicolon before each use;             \
+  h_esc=`echo "$$h"|sed 's/\./\\\\./g'`;                               \
+  if $(VC_LIST_EXCEPT) | grep -l '\.c$$' > /dev/null; then             \
+    files=$$(grep -l '^# *include '"$$h_esc"                           \
+            $$($(VC_LIST_EXCEPT) | grep '\.c$$')) &&                   \
+    grep -LE "$$re" $$files | grep . &&                                        \
+      { echo "$(ME): the above files include $$h but don't use it"     \
+       1>&2; exit 1; } || :;                                           \
+  else :;                                                              \
+  fi
+endef
+
+# Prohibit the inclusion of assert.h without an actual use of assert.
+sc_prohibit_assert_without_use:
+       @h='<assert.h>' re='\<assert *\(' $(_sc_header_without_use)
+
+# Prohibit the inclusion of close-stream.h without an actual use.
+sc_prohibit_close_stream_without_use:
+       @h='"close-stream.h"' re='\<close_stream *\(' $(_sc_header_without_use)
+
+# Prohibit the inclusion of getopt.h without an actual use.
+sc_prohibit_getopt_without_use:
+       @h='<getopt.h>' re='\<getopt(_long)? *\(' $(_sc_header_without_use)
+
+# Don't include quotearg.h unless you use one of its functions.
+sc_prohibit_quotearg_without_use:
+       @h='"quotearg.h"' re='\<quotearg(_[^ ]+)? *\(' $(_sc_header_without_use)
+
+# Don't include quote.h unless you use one of its functions.
+sc_prohibit_quote_without_use:
+       @h='"quote.h"' re='\<quote(_n)? *\(' $(_sc_header_without_use)
+
+# Don't include this header unless you use one of its functions.
+sc_prohibit_long_options_without_use:
+       @h='"long-options.h"' re='\<parse_long_options *\(' \
+         $(_sc_header_without_use)
+
+# Don't include this header unless you use one of its functions.
+sc_prohibit_inttostr_without_use:
+       @h='"inttostr.h"' re='\<(off|[iu]max|uint)tostr *\(' \
+         $(_sc_header_without_use)
+
+# Don't include this header unless you use one of its functions.
+sc_prohibit_ignore_value_without_use:
+       @h='"ignore-value.h"' re='\<ignore_(value|ptr) *\(' \
+         $(_sc_header_without_use)
+
+# Don't include this header unless you use one of its functions.
+sc_prohibit_error_without_use:
+       @h='"error.h"' \
+       re='\<error(_at_line|_print_progname|_one_per_line|_message_count)? *\('\
+         $(_sc_header_without_use)
+
+# Don't include xalloc.h unless you use one of its functions.
+# Consider these symbols:
+# perl -lne '/^# *define (\w+)\(/ and print $1' lib/xalloc.h|grep -v '^__';
+# perl -lne '/^(?:extern )?(?:void|char) \*?(\w+) *\(/ and print $1' lib/xalloc.h
+# Divide into two sets on case, and filter each through this:
+# | sort | perl -MRegexp::Assemble -le \
+#  'print Regexp::Assemble->new(file => "/dev/stdin")->as_string'|sed 's/\?://g'
+# Note this was produced by the above:
+# _xa1 = \
+#x(((2n?)?re|c(har)?|n(re|m)|z)alloc|alloc_(oversized|die)|m(alloc|emdup)|strdup)
+# But we can do better, in at least two ways:
+# 1) take advantage of two "dup"-suffixed strings:
+# x(((2n?)?re|c(har)?|n(re|m)|[mz])alloc|alloc_(oversized|die)|(mem|str)dup)
+# 2) notice that "c(har)?|[mz]" is equivalent to the shorter and more readable
+# "char|[cmz]"
+# x(((2n?)?re|char|n(re|m)|[cmz])alloc|alloc_(oversized|die)|(mem|str)dup)
+_xa1 = x(((2n?)?re|char|n(re|m)|[cmz])alloc|alloc_(oversized|die)|(mem|str)dup)
+_xa2 = X([CZ]|N?M)ALLOC
+sc_prohibit_xalloc_without_use:
+       @h='"xalloc.h"' \
+       re='\<($(_xa1)|$(_xa2)) *\('\
+         $(_sc_header_without_use)
+
+# Extract function names:
+# perl -lne '/^(?:extern )?(?:void|char) \*?(\w+) *\(/ and print $1' lib/hash.h
+_hash_re = \
+clear|delete|free|get_(first|next)|insert|lookup|print_statistics|reset_tuning
+_hash_fn = \<($(_hash_re)) *\(
+_hash_struct = (struct )?\<[Hh]ash_(table|tuning)\>
+sc_prohibit_hash_without_use:
+       @h='"hash.h"' \
+       re='$(_hash_fn)|$(_hash_struct)'\
+         $(_sc_header_without_use)
+
+sc_prohibit_hash_pjw_without_use:
+       @h='"hash-pjw.h"' \
+       re='\<hash_pjw *\(' \
+         $(_sc_header_without_use)
+
+sc_prohibit_safe_read_without_use:
+       @h='"safe-read.h"' re='(\<SAFE_READ_ERROR\>|\<safe_read *\()' \
+         $(_sc_header_without_use)
+
+sc_prohibit_argmatch_without_use:
+       @h='"argmatch.h"' \
+       re='(\<(ARRAY_CARDINALITY|X?ARGMATCH(|_TO_ARGUMENT|_VERIFY))\>|\<argmatch(_exit_fn|_(in)?valid) *\()' \
+         $(_sc_header_without_use)
+
+sc_prohibit_canonicalize_without_use:
+       @h='"canonicalize.h"' \
+       re='CAN_(EXISTING|ALL_BUT_LAST|MISSING)|canonicalize_(mode_t|filename_mode)' \
+         $(_sc_header_without_use)
+
+sc_prohibit_root_dev_ino_without_use:
+       @h='"root-dev-ino.h"' \
+       re='(\<ROOT_DEV_INO_(CHECK|WARN)\>|\<get_root_dev_ino *\()' \
+         $(_sc_header_without_use)
+
+sc_prohibit_openat_without_use:
+       @h='"openat.h"' \
+       re='\<(openat_(permissive|needs_fchdir|(save|restore)_fail)|l?(stat|ch(own|mod))at|(euid)?accessat)\>' \
+         $(_sc_header_without_use)
+
+# Prohibit the inclusion of c-ctype.h without an actual use.
+ctype_re = isalnum|isalpha|isascii|isblank|iscntrl|isdigit|isgraph|islower\
+|isprint|ispunct|isspace|isupper|isxdigit|tolower|toupper
+sc_prohibit_c_ctype_without_use:
+       @h='[<"]c-ctype.h[">]' re='\<c_($(ctype_re)) *\(' \
+         $(_sc_header_without_use)
+
+_empty =
+_sp = $(_empty) $(_empty)
+# The following list was generated by running:
+# man signal.h|col -b|perl -ne '/bsd_signal.*;/.../sigwaitinfo.*;/ and print' \
+#   | perl -lne '/^\s+(?:int|void).*?(\w+).*/ and print $1' | fmt
+_sig_functions = \
+  bsd_signal kill killpg pthread_kill pthread_sigmask raise sigaction \
+  sigaddset sigaltstack sigdelset sigemptyset sigfillset sighold sigignore \
+  siginterrupt sigismember signal sigpause sigpending sigprocmask sigqueue \
+  sigrelse sigset sigsuspend sigtimedwait sigwait sigwaitinfo
+_sig_function_re = $(subst $(_sp),|,$(strip $(_sig_functions)))
+# The following were extracted from "man signal.h" manually.
+_sig_types_and_consts =                                                        \
+  MINSIGSTKSZ SA_NOCLDSTOP SA_NOCLDWAIT SA_NODEFER SA_ONSTACK          \
+  SA_RESETHAND SA_RESTART SA_SIGINFO SIGEV_NONE SIGEV_SIGNAL           \
+  SIGEV_THREAD SIGSTKSZ SIG_BLOCK SIG_SETMASK SIG_UNBLOCK SS_DISABLE   \
+  SS_ONSTACK mcontext_t pid_t sig_atomic_t sigevent siginfo_t sigset_t \
+  sigstack sigval stack_t ucontext_t
+# generated via this:
+# perl -lne '/^#ifdef (SIG\w+)/ and print $1' lib/sig2str.c|sort -u|fmt -70
+_sig_names =                                                           \
+  SIGABRT SIGALRM SIGALRM1 SIGBUS SIGCANCEL SIGCHLD SIGCLD SIGCONT     \
+  SIGDANGER SIGDIL SIGEMT SIGFPE SIGFREEZE SIGGRANT SIGHUP SIGILL      \
+  SIGINFO SIGINT SIGIO SIGIOT SIGKAP SIGKILL SIGKILLTHR SIGLOST SIGLWP \
+  SIGMIGRATE SIGMSG SIGPHONE SIGPIPE SIGPOLL SIGPRE SIGPROF SIGPWR     \
+  SIGQUIT SIGRETRACT SIGSAK SIGSEGV SIGSOUND SIGSTKFLT SIGSTOP SIGSYS  \
+  SIGTERM SIGTHAW SIGTRAP SIGTSTP SIGTTIN SIGTTOU SIGURG SIGUSR1       \
+  SIGUSR2 SIGVIRT SIGVTALRM SIGWAITING SIGWINCH SIGWIND SIGWINDOW      \
+  SIGXCPU SIGXFSZ
+_sig_syms_re = $(subst $(_sp),|,$(strip $(_sig_names) $(_sig_types_and_consts)))
+
+# Prohibit the inclusion of signal.h without an actual use.
+sc_prohibit_signal_without_use:
+       @h='<signal.h>'                                                 \
+       re='\<($(_sig_function_re)) *\(|\<($(_sig_syms_re))\>'          \
+         $(_sc_header_without_use)
+
+# Don't include stdio--.h unless you use one of its functions.
+sc_prohibit_stdio--_without_use:
+       @h='"stdio--.h"' re='\<((f(re)?|p)open|tmpfile) *\('    \
+         $(_sc_header_without_use)
+
+# Don't include stdio-safer.h unless you use one of its functions.
+sc_prohibit_stdio-safer_without_use:
+       @h='"stdio-safer.h"' re='\<((f(re)?|p)open|tmpfile)_safer *\('  \
+         $(_sc_header_without_use)
+
+# Prohibit the inclusion of strings.h without a sensible use.
+# Using the likes of bcmp, bcopy, bzero, index or rindex is not sensible.
+sc_prohibit_strings_without_use:
+       @h='<strings.h>'                                                \
+       re='\<(strn?casecmp|ffs(ll)?)\>'                                \
+         $(_sc_header_without_use)
+
+# Get the list of symbol names with this:
+# perl -lne '/^# *define (\w+)\(/ and print $1' lib/intprops.h|grep -v '^s'|fmt
+_intprops_names =                                                      \
+  TYPE_IS_INTEGER TYPE_TWOS_COMPLEMENT TYPE_ONES_COMPLEMENT            \
+  TYPE_SIGNED_MAGNITUDE TYPE_SIGNED TYPE_MINIMUM TYPE_MAXIMUM          \
+  INT_STRLEN_BOUND INT_BUFSIZE_BOUND
+_intprops_syms_re = $(subst $(_sp),|,$(strip $(_intprops_names)))
+# Prohibit the inclusion of intprops.h without an actual use.
+sc_prohibit_intprops_without_use:
+       @h='"intprops.h"'                                               \
+       re='\<($(_intprops_syms_re)) *\('                               \
+         $(_sc_header_without_use)
+
+_stddef_syms_re = NULL|offsetof|ptrdiff_t|size_t|wchar_t
+# Prohibit the inclusion of stddef.h without an actual use.
+sc_prohibit_stddef_without_use:
+       @h='<stddef.h>'                                                 \
+       re='\<($(_stddef_syms_re)) *\('                                 \
+         $(_sc_header_without_use)
+
+# Don't include xfreopen.h unless you use one of its functions.
+sc_prohibit_xfreopen_without_use:
+       @h='"xfreopen.h"' re='\<xfreopen *\(' $(_sc_header_without_use)
+
+sc_obsolete_symbols:
+       @prohibit='\<(HAVE''_FCNTL_H|O''_NDELAY)\>'                     \
+       halt='do not use HAVE''_FCNTL_H or O'_NDELAY                    \
+         $(_sc_search_regexp)
+
+# FIXME: warn about definitions of EXIT_FAILURE, EXIT_SUCCESS, STREQ
+
+# Each nonempty ChangeLog line must start with a year number, or a TAB.
+sc_changelog:
+       @prohibit='^[^12        ]'                                      \
+       in_vc_files='^ChangeLog$$'                                      \
+       halt='found unexpected prefix in a ChangeLog'                   \
+         $(_sc_search_regexp)
+
+# Ensure that each .c file containing a "main" function also
+# calls set_program_name.
+sc_program_name:
+       @require='set_program_name *\(m?argv\[0\]\);'                   \
+       in_vc_files='\.c$$'                                             \
+       containing='\<main *('                                          \
+       halt='the above files do not call set_program_name'             \
+         $(_sc_search_regexp)
+
+# Ensure that each .c file containing a "main" function also
+# calls bindtextdomain.
+sc_bindtextdomain:
+       @require='bindtextdomain *\('                                   \
+       in_vc_files='\.c$$'                                             \
+       containing='\<main *('                                          \
+       halt='the above files do not call bindtextdomain'               \
+         $(_sc_search_regexp)
+
+# Require that the final line of each test-lib.sh-using test be this one:
+# Exit $fail
+# Note: this test requires GNU grep's --label= option.
+Exit_witness_file ?= tests/test-lib.sh
+Exit_base := $(notdir $(Exit_witness_file))
+sc_require_test_exit_idiom:
+       @if test -f $(srcdir)/$(Exit_witness_file); then                \
+         die=0;                                                        \
+         for i in $$(grep -l -F 'srcdir/$(Exit_base)'                  \
+               $$($(VC_LIST) tests)); do                               \
+           tail -n1 $$i | grep '^Exit .' > /dev/null                   \
+             && : || { die=1; echo $$i; }                              \
+         done;                                                         \
+         test $$die = 1 &&                                             \
+           { echo 1>&2 '$(ME): the final line in each of the above is not:'; \
+             echo 1>&2 'Exit something';                               \
+             exit 1; } || :;                                           \
+       fi
+
+sc_trailing_blank:
+       @prohibit='[     ]$$'                                           \
+       halt='found trailing blank(s)'                                  \
+         $(_sc_search_regexp)
+
+# Match lines like the following, but where there is only one space
+# between the options and the description:
+#   -D, --all-repeated[=delimit-method]  print all duplicate lines\n
+longopt_re = --[a-z][0-9A-Za-z-]*(\[?=[0-9A-Za-z-]*\]?)?
+sc_two_space_separator_in_usage:
+       @prohibit='^   *(-[A-Za-z],)? $(longopt_re) [^ ].*\\$$'         \
+       halt='help2man requires at least two spaces between an option and its description'\
+         $(_sc_search_regexp)
+
+# Look for diagnostics that aren't marked for translation.
+# This won't find any for which error's format string is on a separate line.
+sc_unmarked_diagnostics:
+       @grep -nE                                                       \
+           '\<error *\([^"]*"[^"]*[a-z]{3}' $$($(VC_LIST_EXCEPT))      \
+         | grep -Ev '(_|ngettext ?)\(' &&                              \
+         { echo '$(ME): found unmarked diagnostic(s)' 1>&2;            \
+           exit 1; } || :
+
+# Avoid useless parentheses like those in this example:
+# #if defined (SYMBOL) || defined (SYM2)
+sc_useless_cpp_parens:
+       @prohibit='^# *if .*defined *\('                                \
+       halt='found useless parentheses in cpp directive'               \
+         $(_sc_search_regexp)
+
+# List headers for which HAVE_HEADER_H is always true, assuming you are
+# using the appropriate gnulib module.  CAUTION: for each "unnecessary"
+# #if HAVE_HEADER_H that you remove, be sure that your project explicitly
+# requires the gnulib module that guarantees the usability of that header.
+gl_assured_headers_ = \
+  cd $(gnulib_dir)/lib && echo *.in.h|sed 's/\.in\.h//g'
+
+# Convert the list of names to upper case, and replace each space with "|".
+az_ = abcdefghijklmnopqrstuvwxyz
+AZ_ = ABCDEFGHIJKLMNOPQRSTUVWXYZ
+gl_header_upper_case_or_ =                                             \
+  $$($(gl_assured_headers_)                                            \
+    | tr $(az_)/.- $(AZ_)___                                           \
+    | tr -s ' ' '|'                                                    \
+    )
+sc_prohibit_always_true_header_tests:
+       @or=$(gl_header_upper_case_or_);                                \
+       re="HAVE_($$or)_H";                                             \
+       prohibit='\<'"$$re"'\>'                                         \
+       halt=$$(printf '%s\n'                                           \
+       'do not test the above HAVE_<header>_H symbol(s);'              \
+       '  with the corresponding gnulib module, they are always true') \
+         $(_sc_search_regexp)
+
+# ==================================================================
+gl_other_headers_ ?= \
+  intprops.h   \
+  openat.h     \
+  stat-macros.h
+
+# Perl -lne code to extract "significant" cpp-defined symbols from a
+# gnulib header file, eliminating a few common false-positives.
+gl_extract_significant_defines_ = \
+  /^\# *define ([^_ (][^ (]*)(\s*\(|\s+\w+)/\
+    && $$2 !~ /(?:rpl_|_used_without_)/\
+    && $$1 !~ /^(?:NSIG|ATTRIBUTE_NORETURN)$$/\
+    and print $$1
+
+# Create a list of regular expressions matching the names
+# of macros that are guaranteed to be defined by parts of gnulib.
+define def_sym_regex
+       gen_h=$(gl_generated_headers_);                                 \
+       (cd $(gnulib_dir)/lib;                                          \
+         for f in *.in.h $(gl_other_headers_); do                      \
+           perl -lne '$(gl_extract_significant_defines_)' $$f;         \
+         done;                                                         \
+       ) | sort -u                                                     \
+         | grep -Ev '^ATTRIBUTE_NORETURN'                              \
+         | sed 's/^/^ *# *(define|undef)  */;s/$$/\\>/'
+endef
+
+# Don't define macros that we already get from gnulib header files.
+sc_prohibit_always-defined_macros:
+       @if test -d $(gnulib_dir); then                                 \
+         case $$(echo all: | grep -l -f - Makefile) in Makefile);; *)  \
+           echo '$(ME): skipping $@: you lack GNU grep' 1>&2; exit 0;; \
+         esac;                                                         \
+         $(def_sym_regex) | grep -E -f - $$($(VC_LIST_EXCEPT))         \
+           && { echo '$(ME): define the above via some gnulib .h file' \
+                 1>&2;  exit 1; } || :;                                \
+       fi
+# ==================================================================
+
+# Prohibit checked in backup files.
+sc_prohibit_backup_files:
+       @$(VC_LIST) | grep '~$$' &&                             \
+         { echo '$(ME): found version controlled backup file' 1>&2;    \
+           exit 1; } || :
+
+# Require the latest GPL.
+sc_GPL_version:
+       @prohibit='either ''version [^3]'                               \
+       halt='GPL vN, N!=3'                                             \
+         $(_sc_search_regexp)
+
+# Require the latest GFDL.  Two regexp, since some .texi files end up
+# line wrapping between 'Free Documentation License,' and 'Version'.
+_GFDL_regexp = (Free ''Documentation.*Version 1\.[^3]|Version 1\.[^3] or any)
+sc_GFDL_version:
+       @prohibit='$(_GFDL_regexp)'                                     \
+       halt='GFDL vN, N!=3'                                            \
+         $(_sc_search_regexp)
+
+# Don't use Texinfo's @acronym{}.
+# http://lists.gnu.org/archive/html/bug-gnulib/2010-03/msg00321.html
+texinfo_suffix_re_ ?= \.(txi|texi(nfo)?)$$
+sc_texinfo_acronym:
+       @prohibit='@acronym\{'                                          \
+       in_vc_files='$(texinfo_suffix_re_)'                             \
+       halt='found use of Texinfo @acronym{}'                          \
+         $(_sc_search_regexp)
+
+cvs_keywords = \
+  Author|Date|Header|Id|Name|Locker|Log|RCSfile|Revision|Source|State
+
+sc_prohibit_cvs_keyword:
+       @prohibit='\$$($(cvs_keywords))\$$'                             \
+       halt='do not use CVS keyword expansion'                         \
+         $(_sc_search_regexp)
+
+# This Perl code is slightly obfuscated.  Not only is each "$" doubled
+# because it's in a Makefile, but the $$c's are comments;  we cannot
+# use "#" due to the way the script ends up concatenated onto one line.
+# It would be much more concise, and would produce better output (including
+# counts) if written as:
+#   perl -ln -0777 -e '/\n(\n+)$/ and print "$ARGV: ".length $1' ...
+# but that would be far less efficient, reading the entire contents
+# of each file, rather than just the last two bytes of each.
+# In addition, while the code below detects both blank lines and a missing
+# newline at EOF, the above detects only the former.
+#
+# This is a perl script that is expected to be the single-quoted argument
+# to a command-line "-le".  The remaining arguments are file names.
+# Print the name of each file that ends in exactly one newline byte.
+# I.e., warn if there are blank lines (2 or more newlines), or if the
+# last byte is not a newline.  However, currently we don't complain
+# about any file that contains exactly one byte.
+# Exit nonzero if at least one such file is found, otherwise, exit 0.
+# Warn about, but otherwise ignore open failure.  Ignore seek/read failure.
+#
+# Use this if you want to remove trailing empty lines from selected files:
+#   perl -pi -0777 -e 's/\n\n+$/\n/' files...
+#
+require_exactly_one_NL_at_EOF_ =                                       \
+  foreach my $$f (@ARGV)                                               \
+    {                                                                  \
+      open F, "<", $$f or (warn "failed to open $$f: $$!\n"), next;    \
+      my $$p = sysseek (F, -2, 2);                                     \
+      my $$c = "seek failure probably means file has < 2 bytes; ignore"; \
+      my $$last_two_bytes;                                             \
+      defined $$p and $$p = sysread F, $$last_two_bytes, 2;            \
+      close F;                                                         \
+      $$c = "ignore read failure";                                     \
+      $$p && ($$last_two_bytes eq "\n\n"                               \
+              || substr ($$last_two_bytes,1) ne "\n")                  \
+          and (print $$f), $$fail=1;                                   \
+    }                                                                  \
+  END { exit defined $$fail }
+sc_prohibit_empty_lines_at_EOF:
+       @perl -le '$(require_exactly_one_NL_at_EOF_)' $$($(VC_LIST_EXCEPT)) \
+         || { echo '$(ME): empty line(s) or no newline at EOF'         \
+               1>&2; exit 1; } || :
+
+# Make sure we don't use st_blocks.  Use ST_NBLOCKS instead.
+# This is a bit of a kludge, since it prevents use of the string
+# even in comments, but for now it does the job with no false positives.
+sc_prohibit_stat_st_blocks:
+       @prohibit='[.>]st_blocks'                                       \
+       halt='do not use st_blocks; use ST_NBLOCKS'                     \
+         $(_sc_search_regexp)
+
+# Make sure we don't define any S_IS* macros in src/*.c files.
+# They're already defined via gnulib's sys/stat.h replacement.
+sc_prohibit_S_IS_definition:
+       @prohibit='^ *# *define  *S_IS'                                 \
+       halt='do not define S_IS* macros; include <sys/stat.h>'         \
+         $(_sc_search_regexp)
+
+# Perl block to convert a match to FILE_NAME:LINENO:TEST,
+# that is shared by two definitions below.
+perl_filename_lineno_text_ =                                           \
+    -e '  {'                                                           \
+    -e '    $$n = ($$` =~ tr/\n/\n/ + 1);'                             \
+    -e '    ($$v = $$&) =~ s/\n/\\n/g;'                                        \
+    -e '    print "$$ARGV:$$n:$$v\n";'                                 \
+    -e '  }'
+
+prohibit_doubled_word_RE_ ?= \
+  /\b(then?|[iao]n|i[fst]|but|f?or|at|and|[dt]o)\s+\1\b/gims
+prohibit_doubled_word_ =                                               \
+    -e 'while ($(prohibit_doubled_word_RE_))'                          \
+    $(perl_filename_lineno_text_)
+
+# Define this to a regular expression that matches
+# any filename:dd:match lines you want to ignore.
+# The default is to ignore no matches.
+ignore_doubled_word_match_RE_ ?= ^$$
+
+sc_prohibit_doubled_word:
+       @perl -n -0777 $(prohibit_doubled_word_) $$($(VC_LIST_EXCEPT))  \
+         | grep -vE '$(ignore_doubled_word_match_RE_)'                 \
+         | grep . && { echo '$(ME): doubled words' 1>&2; exit 1; } || :
+
+# A regular expression matching undesirable combinations of words like
+# "can not"; this matches them even when the two words appear on different
+# lines, but not when there is an intervening delimiter like "#" or "*".
+prohibit_undesirable_word_seq_RE_ ?=                                   \
+  /\bcan\s+not\b/gims
+prohibit_undesirable_word_seq_ =                                       \
+    -e 'while ($(prohibit_undesirable_word_seq_RE_))'                  \
+    $(perl_filename_lineno_text_)
+# Define this to a regular expression that matches
+# any filename:dd:match lines you want to ignore.
+# The default is to ignore no matches.
+ignore_undesirable_word_sequence_RE_ ?= ^$$
+
+sc_prohibit_undesirable_word_seq:
+       @perl -n -0777 $(prohibit_undesirable_word_seq_)                \
+            $$($(VC_LIST_EXCEPT))                                      \
+         | grep -vE '$(ignore_undesirable_word_sequence_RE_)' | grep . \
+         && { echo '$(ME): undesirable word sequence' >&2; exit 1; } || :
+
+_ptm1 = use "test C1 && test C2", not "test C1 -''a C2"
+_ptm2 = use "test C1 || test C2", not "test C1 -''o C2"
+# Using test's -a and -o operators is not portable.
+# We prefer test over [, since the latter is spelled [[ in configure.ac.
+sc_prohibit_test_minus_ao:
+       @prohibit='(\<test| \[+) .+ -[ao] '                             \
+       halt='$(_ptm1); $(_ptm2)'                                       \
+         $(_sc_search_regexp)
+
+# Avoid a test bashism.
+sc_prohibit_test_double_equal:
+       @prohibit='(\<test| \[+) .+ == '                                \
+       containing='#! */bin/[a-z]*sh'                                  \
+       halt='use "test x = x", not "test x =''= x"'                    \
+         $(_sc_search_regexp)
+
+# Each program that uses proper_name_utf8 must link with one of the
+# ICONV libraries.  Otherwise, some ICONV library must appear in LDADD.
+# The perl -0777 invocation below extracts the possibly-multi-line
+# definition of LDADD from the appropriate Makefile.am and exits 0
+# when it contains "ICONV".
+sc_proper_name_utf8_requires_ICONV:
+       @progs=$$(grep -l 'proper_name_utf8 ''("' $$($(VC_LIST_EXCEPT)));\
+       if test "x$$progs" != x; then                                   \
+         fail=0;                                                       \
+         for p in $$progs; do                                          \
+           dir=$$(dirname "$$p");                                      \
+           perl -0777                                                  \
+             -ne 'exit !(/^LDADD =(.+?[^\\]\n)/ms && $$1 =~ /ICONV/)'  \
+             $$dir/Makefile.am && continue;                            \
+           base=$$(basename "$$p" .c);                                 \
+           grep "$${base}_LDADD.*ICONV)" $$dir/Makefile.am > /dev/null \
+             || { fail=1; echo 1>&2 "$(ME): $$p uses proper_name_utf8"; }; \
+         done;                                                         \
+         test $$fail = 1 &&                                            \
+           { echo 1>&2 '$(ME): the above do not link with any ICONV library'; \
+             exit 1; } || :;                                           \
+       fi
+
+# Warn about "c0nst struct Foo const foo[]",
+# but not about "char const *const foo" or "#define const const".
+sc_redundant_const:
+       @prohibit='\bconst\b[[:space:][:alnum:]]{2,}\bconst\b'          \
+       halt='redundant "const" in declarations'                        \
+         $(_sc_search_regexp)
+
+sc_const_long_option:
+       @grep '^ *static.*struct option ' $$($(VC_LIST_EXCEPT))         \
+         | grep -Ev 'const struct option|struct option const' && {     \
+             echo 1>&2 '$(ME): add "const" to the above declarations'; \
+             exit 1; } || :
+
+NEWS_hash =                                                            \
+  $$(sed -n '/^\*.* $(PREV_VERSION_REGEXP) ([0-9-]*)/,$$p'             \
+       $(srcdir)/NEWS                                                  \
+     | perl -0777 -pe                                                  \
+       's/^Copyright.+?Free\sSoftware\sFoundation,\sInc\.\n//ms'       \
+     | md5sum -                                                                \
+     | sed 's/ .*//')
+
+# Ensure that we don't accidentally insert an entry into an old NEWS block.
+sc_immutable_NEWS:
+       @if test -f $(srcdir)/NEWS; then                                \
+         test "$(NEWS_hash)" = '$(old_NEWS_hash)' && : ||              \
+           { echo '$(ME): you have modified old NEWS' 1>&2; exit 1; }; \
+       fi
+
+# Update the hash stored above.  Do this after each release and
+# for any corrections to old entries.
+update-NEWS-hash: NEWS
+       perl -pi -e 's/^(old_NEWS_hash[ \t]+:?=[ \t]+).*/$${1}'"$(NEWS_hash)/" \
+         $(srcdir)/cfg.mk
+
+# Ensure that we use only the standard $(VAR) notation,
+# not @...@ in Makefile.am, now that we can rely on automake
+# to emit a definition for each substituted variable.
+# However, there is still one case in which @VAR@ use is not just
+# legitimate, but actually required: when augmenting an automake-defined
+# variable with a prefix.  For example, gettext uses this:
+# MAKEINFO = env LANG= LC_MESSAGES= LC_ALL= LANGUAGE= @MAKEINFO@
+# otherwise, makeinfo would put German or French (current locale)
+# navigation hints in the otherwise-English documentation.
+#
+# Allow the package to add exceptions via a hook in cfg.mk;
+# for example, @PRAGMA_SYSTEM_HEADER@ can be permitted by
+# setting this to ' && !/PRAGMA_SYSTEM_HEADER/'.
+_makefile_at_at_check_exceptions ?=
+sc_makefile_at_at_check:
+       @perl -ne '/\@[A-Z_0-9]+\@/'                                    \
+          -e ' && !/([A-Z_0-9]+)\s+=.*\@\1\@$$/'                       \
+          -e ''$(_makefile_at_at_check_exceptions)                     \
+         -e 'and (print "$$ARGV:$$.: $$_"), $$m=1; END {exit !$$m}'    \
+           $$($(VC_LIST_EXCEPT) | grep -E '(^|/)(Makefile\.am|[^/]+\.mk)$$') \
+         && { echo '$(ME): use $$(...), not @...@' 1>&2; exit 1; } || :
+
+news-check: NEWS
+       if sed -n $(news-check-lines-spec)p $(srcdir)/NEWS              \
+           | grep -E $(news-check-regexp) >/dev/null; then             \
+         :;                                                            \
+       else                                                            \
+         echo 'NEWS: $$(news-check-regexp) failed to match' 1>&2;      \
+         exit 1;                                                       \
+       fi
+
+sc_makefile_TAB_only_indentation:
+       @prohibit='^    [ ]{8}'                                         \
+       in_vc_files='akefile|\.mk$$'                                    \
+       halt='found TAB-8-space indentation'                            \
+         $(_sc_search_regexp)
+
+sc_m4_quote_check:
+       @prohibit='(AC_DEFINE(_UNQUOTED)?|AC_DEFUN)\([^[]'              \
+       in_vc_files='(^configure\.ac|\.m4)$$'                           \
+       halt='quote the first arg to AC_DEF*'                           \
+         $(_sc_search_regexp)
+
+fix_po_file_diag = \
+'you have changed the set of files with translatable diagnostics;\n\
+apply the above patch\n'
+
+# Verify that all source files using _() are listed in po/POTFILES.in.
+po_file ?= $(srcdir)/po/POTFILES.in
+generated_files ?= $(srcdir)/lib/*.[ch]
+sc_po_check:
+       @if test -f $(po_file); then                                    \
+         grep -E -v '^(#|$$)' $(po_file)                               \
+           | grep -v '^src/false\.c$$' | sort > $@-1;                  \
+         files=;                                                       \
+         for file in $$($(VC_LIST_EXCEPT)) $(generated_files); do      \
+           test -r $$file || continue;                                 \
+           case $$file in                                              \
+             *.m4|*.mk) continue ;;                                    \
+             *.?|*.??) ;;                                              \
+             *) continue;;                                             \
+           esac;                                                       \
+           case $$file in                                              \
+           *.[ch])                                                     \
+             base=`expr " $$file" : ' \(.*\)\..'`;                     \
+             { test -f $$base.l || test -f $$base.y; } && continue;;   \
+           esac;                                                       \
+           files="$$files $$file";                                     \
+         done;                                                         \
+         grep -E -l '\b(N?_|gettext *)\([^)"]*("|$$)' $$files          \
+           | sed 's|^$(_dot_escaped_srcdir)/||' | sort -u > $@-2;      \
+         diff -u -L $(po_file) -L $(po_file) $@-1 $@-2                 \
+           || { printf '$(ME): '$(fix_po_file_diag) 1>&2; exit 1; };   \
+         rm -f $@-1 $@-2;                                              \
+       fi
+
+# Sometimes it is useful to change the PATH environment variable
+# in Makefiles.  When doing so, it's better not to use the Unix-centric
+# path separator of `:', but rather the automake-provided `$(PATH_SEPARATOR)'.
+msg = '$(ME): Do not use `:'\'' above; use $$(PATH_SEPARATOR) instead'
+sc_makefile_path_separator_check:
+       @prohibit='PATH[=].*:'                                          \
+       in_vc_files='akefile|\.mk$$'                                    \
+       halt=$(msg)                                                     \
+         $(_sc_search_regexp)
+
+# Check that `make alpha' will not fail at the end of the process.
+writable-files:
+       if test -d $(release_archive_dir); then :; else                 \
+         for file in $(distdir).tar.gz                                 \
+                     $(release_archive_dir)/$(distdir).tar.gz; do      \
+           test -e $$file || continue;                                 \
+           test -w $$file                                              \
+             || { echo ERROR: $$file is not writable; fail=1; };       \
+         done;                                                         \
+         test "$$fail" && exit 1 || : ;                                \
+       fi
+
+v_etc_file = $(gnulib_dir)/lib/version-etc.c
+sample-test = tests/sample-test
+texi = doc/$(PACKAGE).texi
+# Make sure that the copyright date in $(v_etc_file) is up to date.
+# Do the same for the $(sample-test) and the main doc/.texi file.
+sc_copyright_check:
+       @require='enum { COPYRIGHT_YEAR = '$$(date +%Y)' };'            \
+       in_files=$(v_etc_file)                                          \
+       halt='out of date copyright in $(v_etc_file); update it'        \
+         $(_sc_search_regexp)
+       @require='# Copyright \(C\) '$$(date +%Y)' Free'                \
+       in_vc_files=$(sample-test)                                      \
+       halt='out of date copyright in $(sample-test); update it'       \
+         $(_sc_search_regexp)
+       @require='Copyright @copyright\{\} .*'$$(date +%Y)' Free'       \
+       in_vc_files=$(texi)                                             \
+       halt='out of date copyright in $(texi); update it'              \
+         $(_sc_search_regexp)
+
+# If tests/help-version exists and seems to be new enough, assume that its
+# use of init.sh and path_prepend_ is correct, and ensure that every other
+# use of init.sh is identical.
+# This is useful because help-version cross-checks prog --version
+# with $(VERSION), which verifies that its path_prepend_ invocation
+# sets PATH correctly.  This is an inexpensive way to ensure that
+# the other init.sh-using tests also get it right.
+_hv_file ?= $(srcdir)/tests/help-version
+_hv_regex_weak ?= ^ *\. .*/init\.sh"
+_hv_regex_strong ?= ^ *\. "\$${srcdir=\.}/init\.sh"
+sc_cross_check_PATH_usage_in_tests:
+       @if test -f $(_hv_file); then                                   \
+         grep -l 'VERSION mismatch' $(_hv_file) >/dev/null             \
+           || { echo "$@: skipped: no such file: $(_hv_file)" 1>&2;    \
+                exit 0; };                                             \
+         grep -lE '$(_hv_regex_strong)' $(_hv_file) >/dev/null         \
+           || { echo "$@: $(_hv_file) lacks conforming use of init.sh" 1>&2; \
+                exit 1; };                                             \
+         good=$$(grep -E '$(_hv_regex_strong)' $(_hv_file));           \
+         grep -LFx "$$good"                                            \
+               $$(grep -lE '$(_hv_regex_weak)' $$($(VC_LIST_EXCEPT)))  \
+             | grep . &&                                               \
+           { echo "$(ME): the above files use path_prepend_ inconsistently" \
+               1>&2; exit 1; } || :;                                   \
+       fi
+
+# #if HAVE_... will evaluate to false for any non numeric string.
+# That would be flagged by using -Wundef, however gnulib currently
+# tests many undefined macros, and so we can't enable that option.
+# So at least preclude common boolean strings as macro values.
+sc_Wundef_boolean:
+       @prohibit='^#define.*(yes|no|true|false)$$'                     \
+       in_files='$(CONFIG_INCLUDE)'                                    \
+       halt='Use 0 or 1 for macro values'                              \
+         $(_sc_search_regexp)
+
+sc_vulnerable_makefile_CVE-2009-4029:
+       @prohibit='perm -777 -exec chmod a\+rwx|chmod 777 \$$\(distdir\)' \
+       in_files=$$(find $(srcdir) -name Makefile.in)                   \
+       halt=$$(printf '%s\n'                                           \
+         'the above files are vulnerable; beware of running'           \
+         '  "make dist*" rules, and upgrade to fixed automake'         \
+         '  see http://bugzilla.redhat.com/542609 for details')        \
+         $(_sc_search_regexp)
+
+vc-diff-check:
+       (unset CDPATH; cd $(srcdir) && $(VC) diff) > vc-diffs || :
+       if test -s vc-diffs; then                               \
+         cat vc-diffs;                                         \
+         echo "Some files are locally modified:" 1>&2;         \
+         exit 1;                                               \
+       else                                                    \
+         rm vc-diffs;                                          \
+       fi
+
+rel-files = $(DIST_ARCHIVES)
+
+gnulib_dir ?= $(srcdir)/gnulib
+gnulib-version = $$(cd $(gnulib_dir) && git describe)
+bootstrap-tools ?= autoconf,automake,gnulib
+
+# If it's not already specified, derive the GPG key ID from
+# the signed tag we've just applied to mark this release.
+gpg_key_ID ?= \
+  $$(git cat-file tag v$(VERSION) > .ann-sig \
+     && gpgv .ann-sig - < /dev/null 2>&1 \
+         | sed -n '/.*key ID \([0-9A-F]*\)/s//\1/p'; rm -f .ann-sig)
+
+translation_project_ ?= coordinator@translationproject.org
+
+# Make info-gnu the default only for a stable release.
+ifeq ($(RELEASE_TYPE),stable)
+  announcement_Cc_ ?= $(translation_project_), $(PACKAGE_BUGREPORT)
+  announcement_mail_headers_ ?=                                                \
+    To: info-gnu@gnu.org                                               \
+    Cc: $(announcement_Cc_)                                            \
+    Mail-Followup-To: $(PACKAGE_BUGREPORT)
+else
+  announcement_Cc_ ?= $(translation_project_)
+  announcement_mail_headers_ ?=                                                \
+    To: $(PACKAGE_BUGREPORT)                                           \
+    Cc: $(announcement_Cc_)
+endif
+
+announcement: NEWS ChangeLog $(rel-files)
+       @$(build_aux)/announce-gen                                      \
+           --mail-headers='$(announcement_mail_headers_)'              \
+           --release-type=$(RELEASE_TYPE)                              \
+           --package=$(PACKAGE)                                        \
+           --prev=$(PREV_VERSION)                                      \
+           --curr=$(VERSION)                                           \
+           --gpg-key-id=$(gpg_key_ID)                                  \
+           --news=$(srcdir)/NEWS                                       \
+           --bootstrap-tools=$(bootstrap-tools)                        \
+           --gnulib-version=$(gnulib-version)                          \
+           --no-print-checksums                                        \
+           $(addprefix --url-dir=, $(url_dir_list))
+
+## ---------------- ##
+## Updating files.  ##
+## ---------------- ##
+
+ftp-gnu = ftp://ftp.gnu.org/gnu
+www-gnu = http://www.gnu.org
+
+upload_dest_dir_ ?= $(PACKAGE)
+emit_upload_commands:
+       @echo =====================================
+       @echo =====================================
+       @echo "$(build_aux)/gnupload $(GNUPLOADFLAGS) \\"
+       @echo "    --to $(gnu_rel_host):$(upload_dest_dir_) \\"
+       @echo "  $(rel-files)"
+       @echo '# send the ~/announce-$(my_distdir) e-mail'
+       @echo =====================================
+       @echo =====================================
+
+define emit-commit-log
+  printf '%s\n' 'post-release administrivia' '' \
+    '* NEWS: Add header line for next release.' \
+    '* .prev-version: Record previous version.' \
+    '* cfg.mk (old_NEWS_hash): Auto-update.'
+endef
+
+.PHONY: no-submodule-changes
+no-submodule-changes:
+       if test -d $(srcdir)/.git; then                                 \
+         diff=$$(cd $(srcdir) && git submodule -q foreach              \
+                 git diff-index --name-only HEAD)                      \
+           || exit 1;                                                  \
+         case $$diff in '') ;;                                         \
+           *) echo '$(ME): submodule files are locally modified:';     \
+               echo "$$diff"; exit 1;; esac;                           \
+       else                                                            \
+         : ;                                                           \
+       fi
+
+submodule-checks ?= no-submodule-changes public-submodule-commit
+
+# Ensure that each sub-module commit we're using is public.
+# Without this, it is too easy to tag and release code that
+# cannot be built from a fresh clone.
+.PHONY: public-submodule-commit
+public-submodule-commit:
+       $(AM_V_GEN)if test -d $(srcdir)/.git; then                      \
+         cd $(srcdir) &&                                               \
+         git submodule --quiet foreach test '$$(git rev-parse $$sha1)' \
+             = '$$(git merge-base origin $$sha1)'                      \
+           || { echo '$(ME): found non-public submodule commit' >&2;   \
+                exit 1; };                                             \
+       else                                                            \
+         : ;                                                           \
+       fi
+# This rule has a high enough utility/cost ratio that it should be a
+# dependent of "check" by default.  However, some of us do occasionally
+# commit a temporary change that deliberately points to a non-public
+# submodule commit, and want to be able to use rules like "make check".
+# In that case, run e.g., "make check gl_public_submodule_commit="
+# to disable this test.
+gl_public_submodule_commit ?= public-submodule-commit
+check: $(gl_public_submodule_commit)
+
+.PHONY: alpha beta stable
+ALL_RECURSIVE_TARGETS += alpha beta stable
+alpha beta stable: $(local-check) writable-files $(submodule-checks)
+       test $@ = stable                                                \
+         && { echo $(VERSION) | grep -E '^[0-9]+(\.[0-9]+)+$$'         \
+              || { echo "invalid version string: $(VERSION)" 1>&2; exit 1;};}\
+         || :
+       $(MAKE) vc-diff-check
+       $(MAKE) news-check
+       $(MAKE) distcheck
+       $(MAKE) dist XZ_OPT=-9ev
+       $(MAKE) $(release-prep-hook) RELEASE_TYPE=$@
+       $(MAKE) -s emit_upload_commands RELEASE_TYPE=$@
+
+# Override this in cfg.mk if you follow different procedures.
+release-prep-hook ?= release-prep
+
+gl_noteworthy_news_ = * Noteworthy changes in release ?.? (????-??-??) [?]
+.PHONY: release-prep
+release-prep:
+       case $$RELEASE_TYPE in alpha|beta|stable) ;; \
+         *) echo "invalid RELEASE_TYPE: $$RELEASE_TYPE" 1>&2; exit 1;; esac
+       $(MAKE) --no-print-directory -s announcement > ~/announce-$(my_distdir)
+       if test -d $(release_archive_dir); then                 \
+         ln $(rel-files) $(release_archive_dir);               \
+         chmod a-w $(rel-files);                               \
+       fi
+       echo $(VERSION) > $(prev_version_file)
+       $(MAKE) update-NEWS-hash
+       perl -pi -e '$$. == 3 and print "$(gl_noteworthy_news_)\n\n\n"' NEWS
+       $(emit-commit-log) > .ci-msg
+       $(VC) commit -F .ci-msg -a
+       rm .ci-msg
+
+# Override this with e.g., -s $(srcdir)/some_other_name.texi
+# if the default $(PACKAGE)-derived name doesn't apply.
+gendocs_options_ ?=
+
+.PHONY: web-manual
+web-manual:
+       @test -z "$(manual_title)" \
+         && { echo define manual_title in cfg.mk 1>&2; exit 1; } || :
+       @cd '$(srcdir)/doc'; \
+         $(SHELL) ../build-aux/gendocs.sh $(gendocs_options_) \
+            -o '$(abs_builddir)/doc/manual' \
+            --email $(PACKAGE_BUGREPORT) $(PACKAGE) \
+           "$(PACKAGE_NAME) - $(manual_title)"
+       @echo " *** Upload the doc/manual directory to web-cvs."
+
+# Code Coverage
+
+init-coverage:
+       $(MAKE) $(AM_MAKEFLAGS) clean
+       lcov --directory . --zerocounters
+
+COVERAGE_CCOPTS ?= "-g --coverage"
+COVERAGE_OUT ?= doc/coverage
+
+build-coverage:
+       $(MAKE) $(AM_MAKEFLAGS) CFLAGS=$(COVERAGE_CCOPTS) CXXFLAGS=$(COVERAGE_CCOPTS)
+       $(MAKE) $(AM_MAKEFLAGS) CFLAGS=$(COVERAGE_CCOPTS) CXXFLAGS=$(COVERAGE_CCOPTS) check
+       mkdir -p $(COVERAGE_OUT)
+       lcov --directory . --output-file $(COVERAGE_OUT)/$(PACKAGE).info \
+               --capture
+
+gen-coverage:
+       genhtml --output-directory $(COVERAGE_OUT) \
+               $(COVERAGE_OUT)/$(PACKAGE).info \
+               --highlight --frames --legend \
+               --title "$(PACKAGE_NAME)"
+
+coverage: init-coverage build-coverage gen-coverage
+
+# Update gettext files.
+PACKAGE ?= $(shell basename $(PWD))
+PO_DOMAIN ?= $(PACKAGE)
+POURL = http://translationproject.org/latest/$(PO_DOMAIN)/
+PODIR ?= po
+refresh-po:
+       rm -f $(PODIR)/*.po && \
+       echo "$(ME): getting translations into po (please ignore the robots.txt ERROR 404)..." && \
+       wget --no-verbose --directory-prefix $(PODIR) --no-directories --recursive --level 1 --accept .po --accept .po.1 $(POURL) && \
+       echo 'en@boldquot' > $(PODIR)/LINGUAS && \
+       echo 'en@quot' >> $(PODIR)/LINGUAS && \
+       ls $(PODIR)/*.po | sed 's/\.po//' | sed 's,$(PODIR)/,,' | sort >> $(PODIR)/LINGUAS
+
+ # Running indent once is not idempotent, but running it twice is.
+INDENT_SOURCES ?= $(C_SOURCES)
+.PHONY: indent
+indent:
+       indent $(INDENT_SOURCES)
+       indent $(INDENT_SOURCES)
+
+# If you want to set UPDATE_COPYRIGHT_* environment variables,
+# put the assignments in this variable.
+update-copyright-env ?=
+
+# Run this rule once per year (usually early in January)
+# to update all FSF copyright year lists in your project.
+# If you have an additional project-specific rule,
+# add it in cfg.mk along with a line 'update-copyright: prereq'.
+# By default, exclude all variants of COPYING; you can also
+# add exemptions (such as ChangeLog..* for rotated change logs)
+# in the file .x-update-copyright.
+.PHONY: update-copyright
+update-copyright:
+       grep -l -w Copyright                                             \
+         $$(export VC_LIST_EXCEPT_DEFAULT=COPYING && $(VC_LIST_EXCEPT)) \
+         | $(update-copyright-env) xargs $(build_aux)/$@
+
+# This tight_scope test is skipped with a warning if $(_gl_TS_headers) is not
+# overridden and $(_gl_TS_dir)/Makefile.am does not mention noinst_HEADERS.
+
+# NOTE: to override any _gl_TS_* default value, you must
+# define the variable(s) using "export" in cfg.mk.
+_gl_TS_dir ?= src
+
+ALL_RECURSIVE_TARGETS += sc_tight_scope
+sc_tight_scope: tight-scope.mk
+       @if ! grep '^ *export _gl_TS_headers *=' $(srcdir)/cfg.mk       \
+               > /dev/null                                             \
+          && ! grep -w noinst_HEADERS $(srcdir)/$(_gl_TS_dir)/Makefile.am \
+               > /dev/null 2>&1; then                                  \
+           echo '$(ME): skipping $@';                                  \
+       else                                                            \
+           $(MAKE) -s -C $(_gl_TS_dir)                                 \
+               -f Makefile                                             \
+               -f $(abs_top_srcdir)/cfg.mk                             \
+               -f $(abs_top_builddir)/$<                               \
+             _gl_tight_scope                                           \
+               || fail=1;                                              \
+       fi
+       @rm -f $<
+
+tight-scope.mk: $(ME)
+       @rm -f $@ $@-t
+       @perl -ne '/^# TS-start/.../^# TS-end/ and print' $(ME) > $@-t
+       @chmod a=r $@-t && mv $@-t $@
+
+ifeq (a,b)
+# TS-start
+
+# Most functions should have static scope.
+# Any that don't must be marked with `extern', but `main'
+# and `usage' are exceptions: they're always extern, but
+# do not need to be marked.  Symbols matching `__.*' are
+# reserved by the compiler, so are automatically excluded below.
+_gl_TS_unmarked_extern_functions ?= main usage
+_gl_TS_function_match ?= /^(?:$(_gl_TS_extern)) +.*?(\S+) +\(/
+
+# If your project uses a macro like "XTERN", then put
+# the following in cfg.mk to override this default:
+# export _gl_TS_extern = extern|XTERN
+_gl_TS_extern ?= extern
+
+# The second nm|grep checks for file-scope variables with `extern' scope.
+# Without gnulib's progname module, you might put program_name here.
+# Symbols matching `__.*' are reserved by the compiler,
+# so are automatically excluded below.
+_gl_TS_unmarked_extern_vars ?=
+
+# NOTE: the _match variables are perl expressions -- not mere regular
+# expressions -- so that you can extend them to match other patterns
+# and easily extract matched variable names.
+# For example, if your project declares some global variables via
+# a macro like this: GLOBAL(type, var_name, initializer), then you
+# can override this definition to automatically extract those names:
+# export _gl_TS_var_match = \
+#   /^(?:$(_gl_TS_extern)) .*?\**(\w+)(\[.*?\])?;/ || /\bGLOBAL\(.*?,\s*(.*?),/
+_gl_TS_var_match ?= /^(?:$(_gl_TS_extern)) .*?(\w+)(\[.*?\])?;/
+
+# The names of object files in (or relative to) $(_gl_TS_dir).
+_gl_TS_obj_files ?= *.$(OBJEXT)
+
+# Files in which to search for the one-line style extern declarations.
+# $(_gl_TS_dir)-relative.
+_gl_TS_headers ?= $(noinst_HEADERS)
+
+.PHONY: _gl_tight_scope
+_gl_tight_scope: $(bin_PROGRAMS)
+       t=exceptions-$$$$;                                              \
+       trap 's=$$?; rm -f $$t; exit $$s' 0;                            \
+       for sig in 1 2 3 13 15; do                                      \
+         eval "trap 'v=`expr $$sig + 128`; (exit $$v); exit $$v' $$sig"; \
+       done;                                                           \
+       src=`for f in $(SOURCES); do                                    \
+              test -f $$f && d= || d=$(srcdir)/; echo $$d$$f; done`;   \
+       hdr=`for f in $(_gl_TS_headers); do                             \
+              test -f $$f && d= || d=$(srcdir)/; echo $$d$$f; done`;   \
+       ( printf '^%s$$\n' '__.*' $(_gl_TS_unmarked_extern_functions);  \
+         grep -h -A1 '^extern .*[^;]$$' $$src                          \
+           | grep -vE '^(extern |--)' | sed 's/ .*//';                 \
+         perl -lne                                                     \
+            '$(_gl_TS_function_match) and print "^$$1\$$"' $$hdr;      \
+       ) | sort -u > $$t;                                              \
+       nm -e $(_gl_TS_obj_files) | sed -n 's/.* T //p'|grep -Ev -f $$t \
+         && { echo the above functions should have static scope >&2;   \
+              exit 1; } || : ;                                         \
+       ( printf '^%s$$\n' '__.*' $(_gl_TS_unmarked_extern_vars);       \
+         perl -lne '$(_gl_TS_var_match) and print "^$$1\$$"' $$hdr *.h \
+       ) | sort -u > $$t;                                              \
+       nm -e $(_gl_TS_obj_files) | sed -n 's/.* [BCDGRS] //p'          \
+            | sort -u | grep -Ev -f $$t                                        \
+         && { echo the above variables should have static scope >&2;   \
+              exit 1; } || :
+# TS-end
+endif
diff --git a/packaging/parted.changes b/packaging/parted.changes
new file mode 100644 (file)
index 0000000..f129db1
--- /dev/null
@@ -0,0 +1,17 @@
+* Mon Jun 06 2011 Anas Nashif <anas.nashif@intel.com> - 3.0
+- update to 3.0
+
+* Wed Dec 02 2009 Vivian Zhang <vivian.zhang@intel.com> 1.9.0
+- Merged 9 new upstream patches and dropped 2 old ones
+
+* Sat Aug 22 2009 Anas Nashif <anas.nashif@intel.com> - 1.9.0
+- Update to 1.9.0
+
+* Tue 11 Aug Vivian Zhang <vivian.zhang@intel.com>
+- Add patch for initial btrfs support
+
+* Sun Jul 19 2009 Peter J Zhu <peter.j.zhu@intel.com>
+- Add BuildRequires of libuuid-devel
+
+* Sun Nov 30 2008 Peter J Zhu <peter.j.zhu@intel.com>
+- Remove info install warning
diff --git a/packaging/parted.spec b/packaging/parted.spec
new file mode 100644 (file)
index 0000000..152c07d
--- /dev/null
@@ -0,0 +1,88 @@
+#specfile originally created for Fedora, modified for Moblin Linux
+%define _sbindir /sbin
+#define _libdir /%{_lib}
+
+Summary: The GNU disk partition manipulation program
+Name:    parted
+Version: 3.0
+Release: 1
+License: GPLv3+
+Group:   Applications/System
+URL:     http://www.gnu.org/software/parted
+
+Source0: ftp://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.gz
+
+BuildRequires: e2fsprogs-devel
+BuildRequires: libuuid-devel
+BuildRequires: readline-devel
+BuildRequires: ncurses-devel
+BuildRequires: libtool
+BuildRequires: gettext-devel
+BuildRequires: texinfo
+
+Requires(post): /sbin/ldconfig
+Requires(post): /sbin/install-info
+Requires(preun): /sbin/install-info
+Requires(postun): /sbin/ldconfig
+
+%description
+The GNU Parted program allows you to create, destroy, resize, move,
+and copy hard disk partitions. Parted can be used for creating space
+for new operating systems, reorganizing disk usage, and copying data
+to new hard disks.
+
+%package devel
+Summary:  Files for developing apps which will manipulate disk partitions
+Group:    Development/Libraries
+Requires: %{name} = %{version}-%{release}
+Requires: pkgconfig
+
+%description devel
+The GNU Parted library is a set of routines for hard disk partition
+manipulation. If you want to develop programs that manipulate disk
+partitions and filesystems using the routines provided by the GNU
+Parted library, you need to install this package.
+
+%prep
+%setup -q -n %{name}-%{version}
+
+%build
+%configure --disable-static --disable-device-mapper --with-readline --with-libdir=%{_libdir} --exec-prefix=/usr
+%{__make} %{?_smp_mflags}
+
+%install
+%{__rm} -rf %{buildroot}
+%make_install
+
+# Remove components we do not ship
+%{__rm} -rf %{buildroot}%{_infodir}/dir
+#%{__rm} -rf %{buildroot}%{_bindir}/label
+#%{__rm} -rf %{buildroot}%{_bindir}/disk
+
+%find_lang %{name}
+
+%clean
+%{__rm} -rf %{buildroot}
+
+%post -p /sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+
+%lang_package
+
+%docs_package
+
+%files 
+%defattr(-,root,root,-)
+%doc COPYING
+%{_sbindir}/parted
+%{_sbindir}/partprobe
+%{_libdir}/libparted*.so.*
+
+%files devel
+%defattr(-,root,root,-)
+%{_includedir}/parted
+%{_libdir}/libparted.so
+%{_libdir}/pkgconfig/libparted.pc
+
diff --git a/parted.spec b/parted.spec
new file mode 100644 (file)
index 0000000..e5bf058
--- /dev/null
@@ -0,0 +1,103 @@
+# Default to disabling device-mapper and SELinux
+%define use_devmapper 0
+%define use_selinux 0
+%define use_sepol 0
+
+# Enable device-mapper support if we find devmapper
+%define use_devmapper %(pkg-config --libs devmapper >/dev/null 2>&1; [ $? -eq 0 ] && echo 1)
+
+# Enable SELinux if we find libselinux and libsepol
+%define use_selinux %([ -r %{_libdir}/libselinux.a ] && echo 1)
+%define use_sepol %([ -r %{_libdir}/libsepol.so ] && echo 1)
+
+Summary:   The GNU disk partition manipulation program
+Name:      parted
+Version:   2.3.122-41e1
+Release:   1
+Source:    ftp://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.bz2
+Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+License:   GPL
+Group:     Applications/System
+
+BuildRequires: e2fsprogs-devel readline-devel ncurses-devel gperf
+BuildRequires: automake libtool gettext-devel texinfo pkgconfig
+
+BuildRequires: device-mapper-devel, libselinux-devel libsepol-devel
+
+Prereq: /sbin/install-info
+
+%description
+The GNU Parted program allows you to create, destroy, resize, move,
+and copy hard disk partitions. Parted can be used for creating space
+for new operating systems, reorganizing disk usage, and copying data
+to new hard disks.
+
+%package devel
+Summary:  Files for developing apps which will manipulate disk partitions
+Group:    Development/Libraries
+Requires: %{name}-%{version}-%{release}
+%description devel
+The GNU Parted library is a set of routines for hard disk partition
+manipulation. If you want to develop programs that manipulate disk
+partitions and filesystems using the routines provided by the GNU
+Parted library, you need to install this package.
+
+%prep
+%setup -q
+
+%build
+%configure \
+   --enable-shared \
+%if "%{use_devmapper}" == "1"
+   --enable-device-mapper \
+%else
+   --disable-devmapper \
+%endif
+%if "%{use_selinux}" == "1" && "%{use_sepol}" == "1"
+   --enable-selinux \
+%else
+   --disable-selinux \
+%endif
+   --enable-part-static \
+   --enable-pc98=no \
+   --enable-Werror=no \
+   --disable-dynamic-loading
+%{__make} %{?_smp_mflags}
+
+%install
+%{__rm} -rf %{buildroot}
+%{__make} install DESTDIR=%{buildroot}
+
+%clean
+%{__rm} -rf %{buildroot}
+
+%post -p /sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+%files
+%defattr(-,root,root,-)
+%doc AUTHORS BUGS COPYING ChangeLog NEWS README THANKS TODO doc/API doc/FAT
+%{_sbindir}/parted
+%{_sbindir}/partprobe
+%{_mandir}/man8/parted.8.gz
+%{_mandir}/man8/partprobe.8.gz
+%{_libdir}/libparted-*.so.*
+%{_libdir}/libparted-*.so.*
+%{_infodir}/parted.info.gz
+
+%files devel
+%defattr(-,root,root,-)
+%{_includedir}/parted
+%{_libdir}/libparted.a
+%{_libdir}/libparted.so
+%{_libdir}/pkgconfig/libparted.pc
+
+%changelog
+* Tue Mar 13 2007 David Cantrell <dcantrell@redhat.com>
+- Updated spec file
+
+* Mon Mar 13 2000 Fabian Emmes <fab@orlen.de>
+- changed "unset LINGUAS" line
+- reintroduced %build section ;)
+- started changelog
diff --git a/parted.spec.in b/parted.spec.in
new file mode 100644 (file)
index 0000000..cd5a99a
--- /dev/null
@@ -0,0 +1,103 @@
+# Default to disabling device-mapper and SELinux
+%define use_devmapper 0
+%define use_selinux 0
+%define use_sepol 0
+
+# Enable device-mapper support if we find devmapper
+%define use_devmapper %(pkg-config --libs devmapper >/dev/null 2>&1; [ $? -eq 0 ] && echo 1)
+
+# Enable SELinux if we find libselinux and libsepol
+%define use_selinux %([ -r %{_libdir}/libselinux.a ] && echo 1)
+%define use_sepol %([ -r %{_libdir}/libsepol.so ] && echo 1)
+
+Summary:   The GNU disk partition manipulation program
+Name:      @PACKAGE@
+Version:   @VERSION@
+Release:   1
+Source:    ftp://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.bz2
+Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+License:   GPL
+Group:     Applications/System
+
+BuildRequires: e2fsprogs-devel readline-devel ncurses-devel gperf
+BuildRequires: automake libtool gettext-devel texinfo pkgconfig
+
+BuildRequires: device-mapper-devel, libselinux-devel libsepol-devel
+
+Prereq: /sbin/install-info
+
+%description
+The GNU Parted program allows you to create, destroy, resize, move,
+and copy hard disk partitions. Parted can be used for creating space
+for new operating systems, reorganizing disk usage, and copying data
+to new hard disks.
+
+%package devel
+Summary:  Files for developing apps which will manipulate disk partitions
+Group:    Development/Libraries
+Requires: %{name}-%{version}-%{release}
+%description devel
+The GNU Parted library is a set of routines for hard disk partition
+manipulation. If you want to develop programs that manipulate disk
+partitions and filesystems using the routines provided by the GNU
+Parted library, you need to install this package.
+
+%prep
+%setup -q
+
+%build
+%configure \
+   --enable-shared \
+%if "%{use_devmapper}" == "1"
+   --enable-device-mapper \
+%else
+   --disable-devmapper \
+%endif
+%if "%{use_selinux}" == "1" && "%{use_sepol}" == "1"
+   --enable-selinux \
+%else
+   --disable-selinux \
+%endif
+   --enable-part-static \
+   --enable-pc98=no \
+   --enable-Werror=no \
+   --disable-dynamic-loading
+%{__make} %{?_smp_mflags}
+
+%install
+%{__rm} -rf %{buildroot}
+%{__make} install DESTDIR=%{buildroot}
+
+%clean
+%{__rm} -rf %{buildroot}
+
+%post -p /sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+%files
+%defattr(-,root,root,-)
+%doc AUTHORS BUGS COPYING ChangeLog NEWS README THANKS TODO doc/API doc/FAT
+%{_sbindir}/parted
+%{_sbindir}/partprobe
+%{_mandir}/man8/parted.8.gz
+%{_mandir}/man8/partprobe.8.gz
+%{_libdir}/libparted-*.so.*
+%{_libdir}/libparted-*.so.*
+%{_infodir}/parted.info.gz
+
+%files devel
+%defattr(-,root,root,-)
+%{_includedir}/parted
+%{_libdir}/libparted.a
+%{_libdir}/libparted.so
+%{_libdir}/pkgconfig/libparted.pc
+
+%changelog
+* Tue Mar 13 2007 David Cantrell <dcantrell@redhat.com>
+- Updated spec file
+
+* Mon Mar 13 2000 Fabian Emmes <fab@orlen.de>
+- changed "unset LINGUAS" line
+- reintroduced %build section ;)
+- started changelog
diff --git a/parted/Makefile.am b/parted/Makefile.am
new file mode 100644 (file)
index 0000000..7b093c6
--- /dev/null
@@ -0,0 +1,52 @@
+BUILT_SOURCES =
+
+sbin_PROGRAMS = parted
+
+AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
+partedincludedir      = -I$(top_srcdir)/lib -I$(top_srcdir)/include
+
+parted_SOURCES = command.c     \
+                command.h      \
+                parted.c       \
+                strlist.c      \
+                strlist.h      \
+                ui.c           \
+                ui.h           \
+                table.c        \
+                table.h
+
+noinst_LIBRARIES = libver.a
+nodist_libver_a_SOURCES = version.c version.h
+
+BUILT_SOURCES += version.c
+version.c: Makefile
+       $(AM_V_GEN)rm -f $@
+       $(AM_V_at)printf '#include <config.h>\n' > $@t
+       $(AM_V_at)printf 'char const *Version = "$(PACKAGE_VERSION)";\n' >> $@t
+       $(AM_V_at)chmod a-w $@t
+       $(AM_V_at)mv $@t $@
+
+BUILT_SOURCES += version.h
+version.h: Makefile
+       $(AM_V_GEN)rm -f $@
+       $(AM_V_at)printf 'extern char const *Version;\n' > $@t
+       $(AM_V_at)chmod a-w $@t
+       $(AM_V_at)mv $@t $@
+
+DISTCLEANFILES = version.c version.h
+MAINTAINERCLEANFILES = $(BUILT_SOURCES)
+
+parted_LDADD = \
+  libver.a \
+  $(top_builddir)/libparted/libparted.la \
+  $(INTLLIBS) $(LIBS) \
+  $(PARTED_LIBS)
+
+parted_LDFLAGS = $(PARTEDLDFLAGS)
+
+# Tell the linker to omit references to unused shared libraries.
+parted_LDFLAGS += $(IGNORE_UNUSED_LIBRARIES_CFLAGS)
+
+INCLUDES       = $(partedincludedir) $(INTLINCS)
+
+MAINTAINERCLEANFILES += Makefile.in
diff --git a/parted/Makefile.in b/parted/Makefile.in
new file mode 100644 (file)
index 0000000..1262c6e
--- /dev/null
@@ -0,0 +1,1371 @@
+# Makefile.in generated by automake 1.11a from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in 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.
+
+@SET_MAKE@
+
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+sbin_PROGRAMS = parted$(EXEEXT)
+subdir = parted
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+       $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argmatch.m4 \
+       $(top_srcdir)/m4/assert.m4 $(top_srcdir)/m4/btowc.m4 \
+       $(top_srcdir)/m4/calloc.m4 $(top_srcdir)/m4/canonicalize.m4 \
+       $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
+       $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/configmake.m4 \
+       $(top_srcdir)/m4/dirname.m4 \
+       $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+       $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/environ.m4 \
+       $(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
+       $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fclose.m4 \
+       $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/fcntl_h.m4 \
+       $(top_srcdir)/m4/fflush.m4 $(top_srcdir)/m4/fpending.m4 \
+       $(top_srcdir)/m4/fpurge.m4 $(top_srcdir)/m4/freading.m4 \
+       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/fsync.m4 \
+       $(top_srcdir)/m4/ftell.m4 $(top_srcdir)/m4/ftello.m4 \
+       $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
+       $(top_srcdir)/m4/langinfo_h.m4 $(top_srcdir)/m4/lcmessage.m4 \
+       $(top_srcdir)/m4/lib-ignore.m4 $(top_srcdir)/m4/lib-ld.m4 \
+       $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/localcharset.m4 \
+       $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \
+       $(top_srcdir)/m4/locale-tr.m4 $(top_srcdir)/m4/locale-zh.m4 \
+       $(top_srcdir)/m4/locale_h.m4 $(top_srcdir)/m4/localename.m4 \
+       $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/long-options.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
+       $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+       $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
+       $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+       $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbtowc.m4 \
+       $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+       $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/multiarch.m4 \
+       $(top_srcdir)/m4/nl_langinfo.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/nocrash.m4 $(top_srcdir)/m4/o-direct.m4 \
+       $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/priv-set.m4 \
+       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+       $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+       $(top_srcdir)/m4/read.m4 $(top_srcdir)/m4/readlink.m4 \
+       $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/regex.m4 \
+       $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+       $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/setlocale.m4 \
+       $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/ssize_t.m4 \
+       $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdarg.m4 \
+       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strdup.m4 \
+       $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/strerror_r.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+       $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtoll.m4 \
+       $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/symlink.m4 \
+       $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+       $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/thread.m4 \
+       $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/time_h.m4 \
+       $(top_srcdir)/m4/ungetc.m4 $(top_srcdir)/m4/unistd_h.m4 \
+       $(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkdir.m4 \
+       $(top_srcdir)/m4/usleep.m4 $(top_srcdir)/m4/version-etc.m4 \
+       $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \
+       $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
+       $(top_srcdir)/m4/wcrtomb.m4 $(top_srcdir)/m4/wctob.m4 \
+       $(top_srcdir)/m4/wctomb.m4 $(top_srcdir)/m4/wctype_h.m4 \
+       $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+       $(top_srcdir)/m4/xstrndup.m4 $(top_srcdir)/m4/xstrtol.m4 \
+       $(top_srcdir)/m4/yield.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+ARFLAGS = cru
+AM_V_AR = $(am__v_AR_$(V))
+am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY))
+am__v_AR_0 = @echo "  AR      " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+libver_a_AR = $(AR) $(ARFLAGS)
+libver_a_LIBADD =
+nodist_libver_a_OBJECTS = version.$(OBJEXT)
+libver_a_OBJECTS = $(nodist_libver_a_OBJECTS)
+am__installdirs = "$(DESTDIR)$(sbindir)"
+PROGRAMS = $(sbin_PROGRAMS)
+am_parted_OBJECTS = command.$(OBJEXT) parted.$(OBJEXT) \
+       strlist.$(OBJEXT) ui.$(OBJEXT) table.$(OBJEXT)
+parted_OBJECTS = $(am_parted_OBJECTS)
+am__DEPENDENCIES_1 =
+parted_DEPENDENCIES = libver.a $(top_builddir)/libparted/libparted.la \
+       $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+parted_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(parted_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/lib
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+       $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo "  CC      " $@;
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+SOURCES = $(nodist_libver_a_SOURCES) $(parted_SOURCES)
+DIST_SOURCES = $(parted_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+pkglibexecdir = @pkglibexecdir@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+BUILDINFO = @BUILDINFO@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHECK_CFLAGS = @CHECK_CFLAGS@
+CHECK_LIBS = @CHECK_LIBS@
+CONFIG_INCLUDE = @CONFIG_INCLUDE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DYNAMIC_LOADING = @DYNAMIC_LOADING@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENABLE_DEVICE_MAPPER = @ENABLE_DEVICE_MAPPER@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FACCESSAT = @GNULIB_FACCESSAT@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCHMODAT = @GNULIB_FCHMODAT@
+GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FCNTL = @GNULIB_FCNTL@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FGETC = @GNULIB_FGETC@
+GNULIB_FGETS = @GNULIB_FGETS@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREAD = @GNULIB_FREAD@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSCANF = @GNULIB_FSCANF@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSTATAT = @GNULIB_FSTATAT@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FUTIMENS = @GNULIB_FUTIMENS@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETC = @GNULIB_GETC@
+GNULIB_GETCHAR = @GNULIB_GETCHAR@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETGROUPS = @GNULIB_GETGROUPS@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETS = @GNULIB_GETS@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
+GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_ISWBLANK = @GNULIB_ISWBLANK@
+GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@
+GNULIB_LCHMOD = @GNULIB_LCHMOD@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LINKAT = @GNULIB_LINKAT@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_LSTAT = @GNULIB_LSTAT@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MBTOWC = @GNULIB_MBTOWC@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDIRAT = @GNULIB_MKDIRAT@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKFIFO = @GNULIB_MKFIFO@
+GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@
+GNULIB_MKNOD = @GNULIB_MKNOD@
+GNULIB_MKNODAT = @GNULIB_MKNODAT@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@
+GNULIB_MKTIME = @GNULIB_MKTIME@
+GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@
+GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@
+GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_OPEN = @GNULIB_OPEN@
+GNULIB_OPENAT = @GNULIB_OPENAT@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE = @GNULIB_PIPE@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_PREAD = @GNULIB_PREAD@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READ = @GNULIB_READ@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_READLINKAT = @GNULIB_READLINKAT@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_REALPATH = @GNULIB_REALPATH@
+GNULIB_REMOVE = @GNULIB_REMOVE@
+GNULIB_RENAME = @GNULIB_RENAME@
+GNULIB_RENAMEAT = @GNULIB_RENAMEAT@
+GNULIB_RMDIR = @GNULIB_RMDIR@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SETLOCALE = @GNULIB_SETLOCALE@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STAT = @GNULIB_STAT@
+GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRERROR_R = @GNULIB_STRERROR_R@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRPTIME = @GNULIB_STRPTIME@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_SYMLINK = @GNULIB_SYMLINK@
+GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
+GNULIB_TIMEGM = @GNULIB_TIMEGM@
+GNULIB_TIME_R = @GNULIB_TIME_R@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
+GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
+GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNLINK = @GNULIB_UNLINK@
+GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_USLEEP = @GNULIB_USLEEP@
+GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VFSCANF = @GNULIB_VFSCANF@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSCANF = @GNULIB_VSCANF@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCPCPY = @GNULIB_WCPCPY@
+GNULIB_WCPNCPY = @GNULIB_WCPNCPY@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@
+GNULIB_WCSCAT = @GNULIB_WCSCAT@
+GNULIB_WCSCHR = @GNULIB_WCSCHR@
+GNULIB_WCSCMP = @GNULIB_WCSCMP@
+GNULIB_WCSCOLL = @GNULIB_WCSCOLL@
+GNULIB_WCSCPY = @GNULIB_WCSCPY@
+GNULIB_WCSCSPN = @GNULIB_WCSCSPN@
+GNULIB_WCSDUP = @GNULIB_WCSDUP@
+GNULIB_WCSLEN = @GNULIB_WCSLEN@
+GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@
+GNULIB_WCSNCAT = @GNULIB_WCSNCAT@
+GNULIB_WCSNCMP = @GNULIB_WCSNCMP@
+GNULIB_WCSNCPY = @GNULIB_WCSNCPY@
+GNULIB_WCSNLEN = @GNULIB_WCSNLEN@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSPBRK = @GNULIB_WCSPBRK@
+GNULIB_WCSRCHR = @GNULIB_WCSRCHR@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCSSPN = @GNULIB_WCSSPN@
+GNULIB_WCSSTR = @GNULIB_WCSSTR@
+GNULIB_WCSTOK = @GNULIB_WCSTOK@
+GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@
+GNULIB_WCSXFRM = @GNULIB_WCSXFRM@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCTOMB = @GNULIB_WCTOMB@
+GNULIB_WCTRANS = @GNULIB_WCTRANS@
+GNULIB_WCTYPE = @GNULIB_WCTYPE@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WMEMCHR = @GNULIB_WMEMCHR@
+GNULIB_WMEMCMP = @GNULIB_WMEMCMP@
+GNULIB_WMEMCPY = @GNULIB_WMEMCPY@
+GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@
+GNULIB_WMEMSET = @GNULIB_WMEMSET@
+GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
+HAVE_CHOWN = @HAVE_CHOWN@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@
+HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SETENV = @HAVE_DECL_SETENV@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@
+HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_DUPLOCALE = @HAVE_DUPLOCALE@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
+HAVE_FCHMODAT = @HAVE_FCHMODAT@
+HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
+HAVE_FCNTL = @HAVE_FCNTL@
+HAVE_FEATURES_H = @HAVE_FEATURES_H@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSTATAT = @HAVE_FSTATAT@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_FUTIMENS = @HAVE_FUTIMENS@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETGROUPS = @HAVE_GETGROUPS@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETLOGIN = @HAVE_GETLOGIN@
+HAVE_GETOPT_H = @HAVE_GETOPT_H@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
+HAVE_GRANTPT = @HAVE_GRANTPT@
+HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWBLANK = @HAVE_ISWBLANK@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
+HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
+HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
+HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
+HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
+HAVE_LCHMOD = @HAVE_LCHMOD@
+HAVE_LCHOWN = @HAVE_LCHOWN@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_LSTAT = @HAVE_LSTAT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSLEN = @HAVE_MBSLEN@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMCHR = @HAVE_MEMCHR@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDIRAT = @HAVE_MKDIRAT@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKFIFO = @HAVE_MKFIFO@
+HAVE_MKFIFOAT = @HAVE_MKFIFOAT@
+HAVE_MKNOD = @HAVE_MKNOD@
+HAVE_MKNODAT = @HAVE_MKNODAT@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
+HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
+HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
+HAVE_OPENAT = @HAVE_OPENAT@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PIPE = @HAVE_PIPE@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PWRITE = @HAVE_PWRITE@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_READLINKAT = @HAVE_READLINKAT@
+HAVE_REALPATH = @HAVE_REALPATH@
+HAVE_RENAMEAT = @HAVE_RENAMEAT@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRPTIME = @HAVE_STRPTIME@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYMLINK = @HAVE_SYMLINK@
+HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_TIMEGM = @HAVE_TIMEGM@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_USLEEP = @HAVE_USLEEP@
+HAVE_UTIMENSAT = @HAVE_UTIMENSAT@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCPCPY = @HAVE_WCPCPY@
+HAVE_WCPNCPY = @HAVE_WCPNCPY@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSCASECMP = @HAVE_WCSCASECMP@
+HAVE_WCSCAT = @HAVE_WCSCAT@
+HAVE_WCSCHR = @HAVE_WCSCHR@
+HAVE_WCSCMP = @HAVE_WCSCMP@
+HAVE_WCSCOLL = @HAVE_WCSCOLL@
+HAVE_WCSCPY = @HAVE_WCSCPY@
+HAVE_WCSCSPN = @HAVE_WCSCSPN@
+HAVE_WCSDUP = @HAVE_WCSDUP@
+HAVE_WCSLEN = @HAVE_WCSLEN@
+HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@
+HAVE_WCSNCAT = @HAVE_WCSNCAT@
+HAVE_WCSNCMP = @HAVE_WCSNCMP@
+HAVE_WCSNCPY = @HAVE_WCSNCPY@
+HAVE_WCSNLEN = @HAVE_WCSNLEN@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSPBRK = @HAVE_WCSPBRK@
+HAVE_WCSRCHR = @HAVE_WCSRCHR@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCSSPN = @HAVE_WCSSPN@
+HAVE_WCSSTR = @HAVE_WCSSTR@
+HAVE_WCSTOK = @HAVE_WCSTOK@
+HAVE_WCSWIDTH = @HAVE_WCSWIDTH@
+HAVE_WCSXFRM = @HAVE_WCSXFRM@
+HAVE_WCTRANS_T = @HAVE_WCTRANS_T@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WCTYPE_T = @HAVE_WCTYPE_T@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WMEMCHR = @HAVE_WMEMCHR@
+HAVE_WMEMCMP = @HAVE_WMEMCMP@
+HAVE_WMEMCPY = @HAVE_WMEMCPY@
+HAVE_WMEMMOVE = @HAVE_WMEMMOVE@
+HAVE_WMEMSET = @HAVE_WMEMSET@
+HAVE_XLOCALE_H = @HAVE_XLOCALE_H@
+HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
+IGNORE_UNUSED_LIBRARIES_CFLAGS = @IGNORE_UNUSED_LIBRARIES_CFLAGS@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@
+INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMULTITHREAD = @LIBMULTITHREAD@
+LIBOBJS = @LIBOBJS@
+LIBPTH = @LIBPTH@
+LIBPTH_PREFIX = @LIBPTH_PREFIX@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTHREAD = @LIBTHREAD@
+LIBTOOL = @LIBTOOL@
+LIB_BLKID = @LIB_BLKID@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBMULTITHREAD = @LTLIBMULTITHREAD@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBPTH = @LTLIBPTH@
+LTLIBTHREAD = @LTLIBTHREAD@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
+NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@
+NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
+NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@
+NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FCNTL_H = @NEXT_FCNTL_H@
+NEXT_GETOPT_H = @NEXT_GETOPT_H@
+NEXT_INTTYPES_H = @NEXT_INTTYPES_H@
+NEXT_LANGINFO_H = @NEXT_LANGINFO_H@
+NEXT_LOCALE_H = @NEXT_LOCALE_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@
+NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@
+NEXT_TIME_H = @NEXT_TIME_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PARTED_USABLE_TEST_DIR = @PARTED_USABLE_TEST_DIR@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CALLOC = @REPLACE_CALLOC@
+REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP = @REPLACE_DUP@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@
+REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FCNTL = @REPLACE_FCNTL@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FSTAT = @REPLACE_FSTAT@
+REPLACE_FSTATAT = @REPLACE_FSTATAT@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_FUTIMENS = @REPLACE_FUTIMENS@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETDELIM = @REPLACE_GETDELIM@
+REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@
+REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LINK = @REPLACE_LINK@
+REPLACE_LINKAT = @REPLACE_LINKAT@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_LSTAT = @REPLACE_LSTAT@
+REPLACE_MALLOC = @REPLACE_MALLOC@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MBTOWC = @REPLACE_MBTOWC@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKDIR = @REPLACE_MKDIR@
+REPLACE_MKFIFO = @REPLACE_MKFIFO@
+REPLACE_MKNOD = @REPLACE_MKNOD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_MKTIME = @REPLACE_MKTIME@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_OPEN = @REPLACE_OPEN@
+REPLACE_OPENAT = @REPLACE_OPENAT@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PREAD = @REPLACE_PREAD@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
+REPLACE_READ = @REPLACE_READ@
+REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_REALLOC = @REPLACE_REALLOC@
+REPLACE_REALPATH = @REPLACE_REALPATH@
+REPLACE_REMOVE = @REPLACE_REMOVE@
+REPLACE_RENAME = @REPLACE_RENAME@
+REPLACE_RENAMEAT = @REPLACE_RENAMEAT@
+REPLACE_RMDIR = @REPLACE_RMDIR@
+REPLACE_SETENV = @REPLACE_SETENV@
+REPLACE_SETLOCALE = @REPLACE_SETLOCALE@
+REPLACE_SLEEP = @REPLACE_SLEEP@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STAT = @REPLACE_STAT@
+REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRERROR_R = @REPLACE_STRERROR_R@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
+REPLACE_STRNDUP = @REPLACE_STRNDUP@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
+REPLACE_SYMLINK = @REPLACE_SYMLINK@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
+REPLACE_UNLINK = @REPLACE_UNLINK@
+REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
+REPLACE_UNSETENV = @REPLACE_UNSETENV@
+REPLACE_USLEEP = @REPLACE_USLEEP@
+REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCTOMB = @REPLACE_WCTOMB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SELINUX_LIBS = @SELINUX_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
+UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
+UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+YIELD_LIB = @YIELD_LIB@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+BUILT_SOURCES = version.c version.h
+AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
+partedincludedir = -I$(top_srcdir)/lib -I$(top_srcdir)/include
+parted_SOURCES = command.c     \
+                command.h      \
+                parted.c       \
+                strlist.c      \
+                strlist.h      \
+                ui.c           \
+                ui.h           \
+                table.c        \
+                table.h
+
+noinst_LIBRARIES = libver.a
+nodist_libver_a_SOURCES = version.c version.h
+DISTCLEANFILES = version.c version.h
+MAINTAINERCLEANFILES = $(BUILT_SOURCES) Makefile.in
+parted_LDADD = \
+  libver.a \
+  $(top_builddir)/libparted/libparted.la \
+  $(INTLLIBS) $(LIBS) \
+  $(PARTED_LIBS)
+
+
+# Tell the linker to omit references to unused shared libraries.
+parted_LDFLAGS = $(PARTEDLDFLAGS) $(IGNORE_UNUSED_LIBRARIES_CFLAGS)
+INCLUDES = $(partedincludedir) $(INTLINCS)
+all: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu parted/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu parted/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLIBRARIES:
+       -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+libver.a: $(libver_a_OBJECTS) $(libver_a_DEPENDENCIES) $(EXTRA_libver_a_DEPENDENCIES) 
+       $(AM_V_at)-rm -f libver.a
+       $(AM_V_AR)$(libver_a_AR) libver.a $(libver_a_OBJECTS) $(libver_a_LIBADD)
+       $(AM_V_at)$(RANLIB) libver.a
+install-sbinPROGRAMS: $(sbin_PROGRAMS)
+       @$(NORMAL_INSTALL)
+       test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)"
+       @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
+       for p in $$list; do echo "$$p $$p"; done | \
+       sed 's/$(EXEEXT)$$//' | \
+       while read p p1; do if test -f $$p || test -f $$p1; \
+         then echo "$$p"; echo "$$p"; else :; fi; \
+       done | \
+       sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+           -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+       sed 'N;N;N;s,\n, ,g' | \
+       $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+         { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+           if ($$2 == $$4) files[d] = files[d] " " $$1; \
+           else { print "f", $$3 "/" $$4, $$1; } } \
+         END { for (d in files) print "f", d, files[d] }' | \
+       while read type dir files; do \
+           if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+           test -z "$$files" || { \
+           echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(sbindir)$$dir'"; \
+           $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \
+           } \
+       ; done
+
+uninstall-sbinPROGRAMS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
+       files=`for p in $$list; do echo "$$p"; done | \
+         sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+             -e 's/$$/$(EXEEXT)/' `; \
+       test -n "$$list" || exit 0; \
+       echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(sbindir)" && rm -f $$files
+
+clean-sbinPROGRAMS:
+       @list='$(sbin_PROGRAMS)'; test -n "$$list" || exit 0; \
+       echo " rm -f" $$list; \
+       rm -f $$list || exit $$?; \
+       test -n "$(EXEEXT)" || exit 0; \
+       list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+       echo " rm -f" $$list; \
+       rm -f $$list
+parted$(EXEEXT): $(parted_OBJECTS) $(parted_DEPENDENCIES) $(EXTRA_parted_DEPENDENCIES) 
+       @rm -f parted$(EXEEXT)
+       $(AM_V_CCLD)$(parted_LINK) $(parted_OBJECTS) $(parted_LDADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/command.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parted.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strlist.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/table.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ui.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LIBRARIES) $(PROGRAMS)
+installdirs:
+       for dir in "$(DESTDIR)$(sbindir)"; do \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+       done
+install: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+       -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \
+       clean-sbinPROGRAMS mostlyclean-am
+
+distclean: distclean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-sbinPROGRAMS
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-sbinPROGRAMS
+
+.MAKE: all check install install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+       clean-libtool clean-noinstLIBRARIES clean-sbinPROGRAMS \
+       cscopelist ctags distclean distclean-compile distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-sbinPROGRAMS install-strip \
+       installcheck installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       tags uninstall uninstall-am uninstall-sbinPROGRAMS
+
+version.c: Makefile
+       $(AM_V_GEN)rm -f $@
+       $(AM_V_at)printf '#include <config.h>\n' > $@t
+       $(AM_V_at)printf 'char const *Version = "$(PACKAGE_VERSION)";\n' >> $@t
+       $(AM_V_at)chmod a-w $@t
+       $(AM_V_at)mv $@t $@
+version.h: Makefile
+       $(AM_V_GEN)rm -f $@
+       $(AM_V_at)printf 'extern char const *Version;\n' > $@t
+       $(AM_V_at)chmod a-w $@t
+       $(AM_V_at)mv $@t $@
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/parted/command.c b/parted/command.c
new file mode 100644 (file)
index 0000000..5a05854
--- /dev/null
@@ -0,0 +1,140 @@
+/*
+    parted - a frontend to libparted
+    Copyright (C) 1999-2000, 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#include <config.h>
+#include "command.h"
+#include "ui.h"
+
+#include <parted/debug.h>
+
+#include <stdlib.h>
+#include <string.h>
+#include "xalloc.h"
+
+Command*
+command_create (const StrList* names,
+               int (*method) (PedDevice** dev),
+               const StrList* summary,
+               const StrList* help,
+                const int non_interactive)
+{
+       Command*        cmd;
+
+       cmd = xmalloc (sizeof (Command));
+
+        if (non_interactive)
+                cmd->non_interactive = 1;
+        else
+                cmd->non_interactive = 0;
+
+       cmd->names = (StrList*) names;
+       cmd->method = method;
+       cmd->summary = (StrList*) summary;
+       cmd->help = (StrList*) help;
+
+       return cmd;
+}
+
+void
+command_destroy (Command* cmd)
+{
+       str_list_destroy (cmd->names);
+       str_list_destroy (cmd->summary);
+       str_list_destroy (cmd->help);
+       free (cmd);
+}
+
+void
+command_register (Command** list, Command* cmd)
+{
+       int     i;
+
+       for (i = 0; list [i]; i++);
+
+       list [i] = cmd;
+       list [i + 1] = (Command*) NULL;
+}
+
+Command*
+command_get (Command** list, char* name)
+{
+       int             i;
+       int             partial_match = -1;
+       int             ambiguous = 0;
+
+       if (!name)
+               return NULL;
+
+       for (i=0; list [i]; i++) {
+               switch (str_list_match_any (list [i]->names, name)) {
+               case 2:
+                       return list [i];
+
+               case 1:
+                       if (!ambiguous) {
+                               if (partial_match == -1) {
+                                       partial_match = i;
+                               } else {
+                                       partial_match = -1;
+                                       ambiguous = 1;
+                               }
+                       }
+               }
+       }
+
+       if (partial_match == -1)
+               return NULL;
+       else
+               return list [partial_match];
+}
+
+StrList*
+command_get_names (Command** list)
+{
+       Command**       walk;
+       StrList*        result = NULL;
+
+       for (walk = list; *walk; walk++)
+               result = str_list_join (result,
+                                       str_list_duplicate ((*walk)->names));
+       return result;
+}
+
+void
+command_print_summary (Command* cmd)
+{
+        fputs ("  ", stdout);
+       str_list_print_wrap (cmd->summary, screen_width(), 2, 8);
+       putchar ('\n');
+}
+
+void
+command_print_help (Command* cmd)
+{
+       command_print_summary (cmd);
+       if (cmd->help) {
+                fputs ("\n\t", stdout);
+               str_list_print_wrap (cmd->help, screen_width(), 8, 8);
+       }
+}
+
+int
+command_run (Command* cmd, PedDevice** dev)
+{
+       return cmd->method (dev);
+}
diff --git a/parted/command.h b/parted/command.h
new file mode 100644 (file)
index 0000000..b191126
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+    parted - a frontend to libparted
+    Copyright (C) 1999-2000, 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef COMMAND_H_INCLUDED
+#define COMMAND_H_INCLUDED
+
+#include <parted/parted.h>
+#include "strlist.h"
+
+typedef struct {
+       StrList*        names;
+       int             (*method) (PedDevice** dev);
+       StrList*        summary;
+       StrList*        help;
+        int             non_interactive:1;
+} Command;
+
+extern Command* command_create (const StrList* names,
+                               int (*method) (PedDevice** dev),
+                               const StrList* summary,
+                               const StrList* help,
+                                int non_interactive);
+extern void command_destroy (Command* cmd);
+void command_register (Command** list, Command* cmd);
+
+extern Command* command_get (Command** list, char* name);
+extern StrList* command_get_names (Command** list);
+extern void command_print_summary (Command* cmd);
+extern void command_print_help (Command* cmd);
+extern int command_run (Command* cmd, PedDevice** dev);
+
+#endif /* COMMAND_H_INCLUDED */
diff --git a/parted/parted.c b/parted/parted.c
new file mode 100644 (file)
index 0000000..32c2fcc
--- /dev/null
@@ -0,0 +1,2006 @@
+/*
+    parted - a frontend to libparted
+    Copyright (C) 1999-2003, 2005-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#include <config.h>
+#include <stdbool.h>
+
+#include "argmatch.h"
+#include "closeout.h"
+#include "configmake.h"
+#include "version-etc.h"
+#include "command.h"
+#include "ui.h"
+#include "progname.h"
+#include "table.h"
+#include "version.h"
+
+#define AUTHORS \
+  "<http://git.debian.org/?p=parted/parted.git;a=blob_plain;f=AUTHORS>"
+
+/* The official name of this program (e.g., no `g' prefix).  */
+#define PROGRAM_NAME "parted"
+
+#define N_(String) String
+#if ENABLE_NLS
+#  include <libintl.h>
+#  include <locale.h>
+#  define _(String) dgettext (PACKAGE, String)
+#else
+#  define _(String) (String)
+#endif /* ENABLE_NLS */
+
+#include <parted/parted.h>
+#include <parted/debug.h>
+
+#include <ctype.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <limits.h>
+#include "xalloc.h"
+
+#ifdef ENABLE_MTRACE
+#include <mcheck.h>
+#endif
+
+#include <getopt.h>
+
+/* minimum amount of free space to leave, or maximum amount to gobble up */
+#define MIN_FREESPACE           (1000 * 2)      /* 1000k */
+
+static int MEGABYTE_SECTORS (PedDevice* dev)
+{
+        return PED_MEGABYTE_SIZE / dev->sector_size;
+}
+
+/* For long options that have no equivalent short option, use a
+   non-character as a pseudo short option, starting with CHAR_MAX + 1.  */
+enum
+{
+  PRETEND_INPUT_TTY = CHAR_MAX + 1,
+};
+
+enum
+{
+        ALIGNMENT_NONE = 2,
+        ALIGNMENT_CYLINDER,
+        ALIGNMENT_MINIMAL,
+        ALIGNMENT_OPTIMAL
+};
+
+static char const *const align_args[] =
+{
+  "none",
+  "cylinder",
+  "minimal",
+  "optimal",
+  NULL
+};
+
+static int const align_types[] =
+{
+  ALIGNMENT_NONE,
+  ALIGNMENT_CYLINDER,
+  ALIGNMENT_MINIMAL,
+  ALIGNMENT_OPTIMAL
+};
+ARGMATCH_VERIFY (align_args, align_types);
+
+typedef struct {
+        time_t  last_update;
+        time_t  predicted_time_left;
+} TimerContext;
+
+static struct option const options[] = {
+        /* name, has-arg, string-return-val, char-return-val */
+        {"help",        0, NULL, 'h'},
+        {"list",        0, NULL, 'l'},
+        {"machine",     0, NULL, 'm'},
+        {"script",      0, NULL, 's'},
+        {"version",     0, NULL, 'v'},
+        {"align",       required_argument, NULL, 'a'},
+        {"-pretend-input-tty", 0, NULL, PRETEND_INPUT_TTY},
+        {NULL,          0, NULL, 0}
+};
+
+static const char *const options_help [][2] = {
+        {"help",        N_("displays this help message")},
+        {"list",        N_("lists partition layout on all block devices")},
+        {"machine",     N_("displays machine parseable output")},
+        {"script",      N_("never prompts for user intervention")},
+        {"version",     N_("displays the version")},
+        {"align=[none|cyl|min|opt]", N_("alignment for new partitions")},
+        {NULL,          NULL}
+};
+
+int     opt_script_mode = 0;
+int     pretend_input_tty = 0;
+int     opt_machine_mode = 0;
+int     disk_is_modified = 0;
+int     is_toggle_mode = 0;
+int     alignment = ALIGNMENT_OPTIMAL;
+
+static const char* number_msg = N_(
+"NUMBER is the partition number used by Linux.  On MS-DOS disk labels, the "
+"primary partitions number from 1 to 4, logical partitions from 5 onwards.\n");
+
+static const char* label_type_msg_start = N_("LABEL-TYPE is one of: ");
+static const char* flag_msg_start =   N_("FLAG is one of: ");
+static const char* unit_msg_start =   N_("UNIT is one of: ");
+static const char* min_or_opt_msg = N_("desired alignment: minimum or optimal");
+static const char* part_type_msg =    N_("PART-TYPE is one of: primary, logical, "
+                                   "extended\n");
+static const char* fs_type_msg_start = N_("FS-TYPE is one of: ");
+static const char* start_end_msg =    N_("START and END are disk locations, such as "
+                "4GB or 10%.  Negative values count from the end of the disk.  "
+                "For example, -1s specifies exactly the last sector.\n");
+static const char* state_msg =        N_("STATE is one of: on, off\n");
+static const char* device_msg =       N_("DEVICE is usually /dev/hda or /dev/sda\n");
+static const char* name_msg =         N_("NAME is any word you want\n");
+
+static const char* copyright_msg = N_(
+"Copyright (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"This program is free software, covered by the GNU General Public License.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+"GNU General Public License for more details.\n\n");
+
+static char* label_type_msg;
+static char* flag_msg;
+static char* unit_msg;
+
+static char* mkpart_fs_type_msg;
+
+static Command* commands [256] = {NULL};
+static PedTimer* g_timer;
+static TimerContext timer_context;
+
+static int _print_list ();
+static void _done (PedDevice* dev);
+static bool partition_align_check (PedDisk const *disk,
+                        PedPartition const *part, enum AlignmentType a_type);
+
+static void
+_timer_handler (PedTimer* timer, void* context)
+{
+        TimerContext*   tcontext = (TimerContext*) context;
+        int             draw_this_time;
+
+        if (opt_script_mode || !isatty(fileno(stdout)))
+                return;
+
+        if (tcontext->last_update != timer->now && timer->now > timer->start) {
+                tcontext->predicted_time_left
+                        = timer->predicted_end - timer->now;
+                tcontext->last_update = timer->now;
+                draw_this_time = 1;
+        } else {
+                draw_this_time = 0;
+        }
+
+        if (draw_this_time) {
+                wipe_line ();
+
+                if (timer->state_name)
+                        printf ("%s... ", timer->state_name);
+                printf (_("%0.f%%\t(time left %.2d:%.2d)"),
+                        100.0 * timer->frac,
+                        (int) (tcontext->predicted_time_left / 60),
+                        (int) (tcontext->predicted_time_left % 60));
+
+                fflush (stdout);
+        }
+}
+
+static int
+_partition_warn_busy (PedPartition* part)
+{
+        char* path;
+
+        if (ped_partition_is_busy (part)) {
+                path = ped_partition_get_path (part);
+                ped_exception_throw (
+                        PED_EXCEPTION_ERROR,
+                        PED_EXCEPTION_CANCEL,
+                        _("Partition %s is being used. You must unmount it "
+                          "before you modify it with Parted."),
+                        path);
+                free (path);
+                return 0;
+        }
+        return 1;
+}
+
+static int
+_disk_warn_busy (PedDisk* disk)
+{
+        if (ped_device_is_busy (disk->dev))
+                return ped_exception_throw (
+                        (opt_script_mode
+                         ? PED_EXCEPTION_ERROR
+                         : PED_EXCEPTION_WARNING),
+                        PED_EXCEPTION_IGNORE_CANCEL,
+                        _("Partition(s) on %s are being used."),
+                        disk->dev->path) == PED_EXCEPTION_IGNORE;
+
+        return 1;
+}
+
+static int
+_disk_warn_loss (PedDisk* disk)
+{
+        return ped_exception_throw (
+                PED_EXCEPTION_WARNING,
+                PED_EXCEPTION_YES_NO,
+                _("The existing disk label on %s will be destroyed "
+                  "and all data on this disk will be lost. Do you "
+                  "want to continue?"),
+                disk->dev->path) == PED_EXCEPTION_YES;
+}
+
+/* This function changes "sector" to "new_sector" if the new value lies
+ * within the required range.
+ */
+static int
+snap (PedSector* sector, PedSector new_sector, PedGeometry* range)
+{
+        PED_ASSERT (ped_geometry_test_sector_inside (range, *sector));
+        if (!ped_geometry_test_sector_inside (range, new_sector))
+                return 0;
+        *sector = new_sector;
+        return 1;
+}
+
+typedef enum {
+        MOVE_NO         = 0,
+        MOVE_STILL      = 1,
+        MOVE_UP         = 2,
+        MOVE_DOWN       = 4
+} EMoves;
+
+enum { /* Don't change these values */
+        SECT_START      =  0,
+        SECT_END        = -1
+};
+
+/* Find the preferred way to adjust the sector s inside range.
+ * If a move isn't allowed or is out of range it can't be selected.
+ * what contains SECT_START if the sector to adjust is a start sector
+ * or SECT_END if it's an end one.
+ * The preferred move is to the nearest allowed boundary of the part
+ * partition (if at equal distance: to start if SECT_START or to end
+ * if SECT_END).
+ * The distance is returned in dist.
+ */
+static EMoves
+prefer_snap (PedSector s, int what, PedGeometry* range, EMoves* allow,
+             PedPartition* part, PedSector* dist)
+{
+        PedSector up_dist = -1, down_dist = -1;
+        PedSector new_sect;
+        EMoves move;
+
+        PED_ASSERT (what == SECT_START || what == SECT_END);
+
+        if (!(*allow & (MOVE_UP | MOVE_DOWN))) {
+                *dist = 0;
+                return MOVE_STILL;
+        }
+
+        if (*allow & MOVE_UP) {
+                new_sect = part->geom.end + 1 + what;
+                if (ped_geometry_test_sector_inside (range, new_sect))
+                        up_dist = new_sect - s;
+                else
+                        *allow &= ~MOVE_UP;
+        }
+
+        if (*allow & MOVE_DOWN) {
+                new_sect = part->geom.start + what;
+                if (ped_geometry_test_sector_inside (range, new_sect))
+                        down_dist = s - new_sect;
+                else
+                        *allow &= ~MOVE_DOWN;
+        }
+
+        move = MOVE_STILL;
+        if ((*allow & MOVE_UP) && (*allow & MOVE_DOWN)) {
+                if (down_dist < up_dist || (down_dist == up_dist
+                                            && what == SECT_START) )
+                        move = MOVE_DOWN;
+                else if (up_dist < down_dist || (down_dist == up_dist
+                                                 && what == SECT_END) )
+                        move = MOVE_UP;
+                else
+                        PED_ASSERT (0);
+        } else if (*allow & MOVE_UP)
+                move = MOVE_UP;
+        else if (*allow & MOVE_DOWN)
+                move = MOVE_DOWN;
+
+        *dist = ( move == MOVE_DOWN ? down_dist :
+                ( move == MOVE_UP   ? up_dist   :
+                  0 ) );
+        return move;
+}
+
+/* Snaps a partition to nearby partition boundaries.  This is useful for
+ * gobbling up small amounts of free space, and also for reinterpreting small
+ * changes to a partition as non-changes (eg: perhaps the user only wanted to
+ * resize the end of a partition).
+ *      Note that this isn't the end of the story... this function is
+ * always called before the constraint solver kicks in.  So you don't need to
+ * worry too much about inadvertantly creating overlapping partitions, etc.
+ */
+static void
+snap_to_boundaries (PedGeometry* new_geom, PedGeometry* old_geom,
+                    PedDisk* disk,
+                    PedGeometry* start_range, PedGeometry* end_range)
+{
+        PedPartition*   start_part;
+        PedPartition*   end_part;
+        PedSector       start = new_geom->start;
+        PedSector       end = new_geom->end;
+        PedSector       start_dist = -1, end_dist = -1;
+        EMoves          start_allow, end_allow, start_want, end_want;
+        int             adjacent;
+
+        start_allow = end_allow = MOVE_STILL | MOVE_UP | MOVE_DOWN;
+
+        start_part = ped_disk_get_partition_by_sector (disk, start);
+        end_part = ped_disk_get_partition_by_sector (disk, end);
+        adjacent = (start_part->geom.end + 1 == end_part->geom.start);
+
+        /* If we can snap to old_geom, then we will... */
+        /* and this will enforce the snapped positions  */
+        if (old_geom) {
+                if (snap (&start, old_geom->start, start_range))
+                        start_allow = MOVE_STILL;
+                if (snap (&end, old_geom->end, end_range))
+                        end_allow = MOVE_STILL;
+        }
+
+        /* If start and end are on the same partition, we */
+        /* don't allow them to cross. */
+        if (start_part == end_part) {
+                start_allow &= ~MOVE_UP;
+                end_allow &= ~MOVE_DOWN;
+        }
+
+        /* Let's find our way */
+        start_want = prefer_snap (start, SECT_START, start_range, &start_allow,
+                                  start_part, &start_dist );
+        end_want = prefer_snap (end, SECT_END, end_range, &end_allow,
+                                end_part, &end_dist );
+
+        PED_ASSERT (start_dist >= 0 && end_dist >= 0);
+
+        /* If start and end are on adjacent partitions,    */
+        /* and if they would prefer crossing, then refrain */
+        /* the farthest to do so. */
+        if (adjacent && start_want == MOVE_UP && end_want == MOVE_DOWN) {
+                if (end_dist < start_dist) {
+                        start_allow &= ~MOVE_UP;
+                        start_want = prefer_snap (start, SECT_START,
+                                                  start_range, &start_allow,
+                                                  start_part, &start_dist );
+                        PED_ASSERT (start_dist >= 0);
+                } else {
+                        end_allow &= ~MOVE_DOWN;
+                        end_want = prefer_snap (end, SECT_END,
+                                                end_range, &end_allow,
+                                                end_part, &end_dist );
+                        PED_ASSERT (end_dist >= 0);
+                }
+        }
+
+        /* New positions */
+        start = ( start_want == MOVE_DOWN ? start_part->geom.start :
+                ( start_want == MOVE_UP ? start_part->geom.end + 1 :
+                  start ) );
+        end = ( end_want == MOVE_DOWN ? end_part->geom.start - 1 :
+              ( end_want == MOVE_UP ? end_part->geom.end :
+                end ) );
+        PED_ASSERT (ped_geometry_test_sector_inside(start_range,start));
+        PED_ASSERT (ped_geometry_test_sector_inside (end_range, end));
+        PED_ASSERT (start <= end);
+        ped_geometry_set (new_geom, start, end - start + 1);
+}
+
+/* This functions constructs a constraint from the following information:
+ *      start, is_start_exact, end, is_end_exact.
+ *
+ * If is_start_exact == 1, then the constraint requires start be as given in
+ * "start".  Otherwise, the constraint does not set any requirements on the
+ * start.
+ */
+static PedConstraint*
+constraint_from_start_end (PedDevice* dev, PedGeometry* range_start,
+                           PedGeometry* range_end)
+{
+        return ped_constraint_new (ped_alignment_any, ped_alignment_any,
+                range_start, range_end, 1, dev->length);
+}
+
+void
+help_on (char* topic)
+{
+        Command*        cmd;
+
+        cmd = command_get (commands, topic);
+        if (!cmd) return;
+
+        command_print_help (cmd);
+}
+
+void
+print_commands_help ()
+{
+        int             i;
+
+        for (i=0; commands [i]; i++)
+                command_print_summary (commands [i]);
+}
+
+void
+print_options_help ()
+{
+        int             i;
+
+        for (i=0; options_help [i][0]; i++) {
+                printf ("  -%c, --%-25.25s %s\n",
+                        options_help [i][0][0],
+                        options_help [i][0],
+                        _(options_help [i][1]));
+        }
+}
+
+int
+do_help (PedDevice** dev)
+{
+        if (command_line_get_word_count ()) {
+                char*   word = command_line_pop_word ();
+                if (word) {
+                        help_on (word);
+                        free (word);
+                }
+        } else {
+                print_commands_help();
+        }
+        return 1;
+}
+
+static int
+do_mklabel (PedDevice** dev)
+{
+        PedDisk*                disk;
+        const PedDiskType*      type = NULL;
+
+        ped_exception_fetch_all ();
+        disk = ped_disk_new (*dev);
+        if (!disk) ped_exception_catch ();
+        ped_exception_leave_all ();
+
+        if (!command_line_get_disk_type (_("New disk label type?"), &type))
+                goto error;
+
+        if (disk) {
+                if (!_disk_warn_busy (disk))
+                        goto error_destroy_disk;
+                if (!opt_script_mode && !_disk_warn_loss (disk))
+                        goto error_destroy_disk;
+
+                ped_disk_destroy (disk);
+        }
+
+        disk = ped_disk_new_fresh (*dev, type);
+        if (!disk)
+                goto error;
+
+        if (!ped_disk_commit (disk))
+                goto error_destroy_disk;
+        ped_disk_destroy (disk);
+
+        if ((*dev)->type != PED_DEVICE_FILE)
+                disk_is_modified = 1;
+
+        return 1;
+
+error_destroy_disk:
+        ped_disk_destroy (disk);
+error:
+        return 0;
+}
+
+static int
+do_mkpart (PedDevice** dev)
+{
+        PedDisk*                 disk;
+        PedPartition*            part;
+        PedPartitionType         part_type;
+        const PedFileSystemType* fs_type = ped_file_system_type_get ("ext2");
+        PedSector                start = 0, end = 0;
+        PedGeometry              *range_start = NULL, *range_end = NULL;
+        PedConstraint*           user_constraint;
+        PedConstraint*           dev_constraint;
+        PedConstraint*           final_constraint;
+        char*                    peek_word;
+        char*                    part_name = NULL;
+        char                     *start_usr = NULL, *end_usr = NULL;
+        char                     *start_sol = NULL, *end_sol = NULL;
+
+        disk = ped_disk_new (*dev);
+        if (!disk)
+                goto error;
+
+        if (ped_disk_is_flag_available(disk, PED_DISK_CYLINDER_ALIGNMENT))
+                if (!ped_disk_set_flag(disk, PED_DISK_CYLINDER_ALIGNMENT,
+                                       alignment == ALIGNMENT_CYLINDER))
+                        goto error_destroy_disk;
+
+        if (!ped_disk_type_check_feature (disk->type, PED_DISK_TYPE_EXTENDED)) {
+                part_type = PED_PARTITION_NORMAL;
+        } else {
+                if (!command_line_get_part_type (_("Partition type?"),
+                                                disk, &part_type))
+                        goto error_destroy_disk;
+        }
+
+        /* The undocumented feature that mkpart sometimes takes a
+           partition name is next to useless, at least with a dvh
+           partition table, since it makes the "mkpart" command
+           fail unconditionally for a primary partition.  E.g.,
+           mkpart primary any-name xfs 4096s 5000s
+           requires the name, yet always fails, saying that only
+           logical partitions may have names.
+           If you want a name, use parted's separate "name" command.  */
+
+        if (ped_disk_type_check_feature (disk->type,
+                                         PED_DISK_TYPE_PARTITION_NAME)
+            && ! (strcmp (disk->type->name, "dvh") == 0
+                  && part_type != PED_PARTITION_LOGICAL))
+                part_name = command_line_get_word (_("Partition name?"),
+                                                   "", NULL, 1);
+
+        peek_word = command_line_peek_word ();
+        if (part_type == PED_PARTITION_EXTENDED
+            || (peek_word && isdigit (peek_word[0]))) {
+                fs_type = NULL;
+        } else {
+                if (!command_line_get_fs_type (_("File system type?"),
+                                               &fs_type))
+                        goto error_destroy_disk;
+        }
+        free (peek_word);
+
+        if (!command_line_get_sector (_("Start?"), *dev, &start, &range_start))
+                goto error_destroy_disk;
+        if (!command_line_get_sector (_("End?"), *dev, &end, &range_end))
+                goto error_destroy_disk;
+
+        /* processing starts here */
+        part = ped_partition_new (disk, part_type, fs_type, start, end);
+        if (!part)
+                goto error_destroy_disk;
+
+        snap_to_boundaries (&part->geom, NULL, disk, range_start, range_end);
+
+        /* create constraints */
+        user_constraint = constraint_from_start_end (*dev, range_start,
+                        range_end);
+        PED_ASSERT (user_constraint != NULL);
+
+        if (alignment == ALIGNMENT_OPTIMAL)
+                dev_constraint =
+                        ped_device_get_optimal_aligned_constraint(*dev);
+        else if (alignment == ALIGNMENT_MINIMAL)
+                dev_constraint =
+                        ped_device_get_minimal_aligned_constraint(*dev);
+        else
+                dev_constraint = ped_device_get_constraint(*dev);
+        PED_ASSERT (dev_constraint != NULL);
+
+        final_constraint = ped_constraint_intersect (user_constraint,
+                        dev_constraint);
+        ped_constraint_destroy (user_constraint);
+        ped_constraint_destroy (dev_constraint);
+        if (!final_constraint)
+                goto error_destroy_simple_constraints;
+
+        /* subject to partition constraint */
+        ped_exception_fetch_all();
+        bool added_ok = ped_disk_add_partition (disk, part, final_constraint);
+        ped_constraint_destroy (final_constraint);
+        if (!added_ok) {
+                ped_exception_leave_all();
+
+                PedConstraint *constraint_any = ped_constraint_any (*dev);
+                added_ok = ped_disk_add_partition (disk, part,
+                                                        constraint_any);
+                ped_constraint_destroy (constraint_any);
+
+                if (!added_ok)
+                        goto error_remove_part;
+
+                if (!ped_geometry_test_sector_inside(range_start, part->geom.start) ||
+                    !ped_geometry_test_sector_inside(range_end, part->geom.end)) {
+                        start_usr = ped_unit_format (*dev, start);
+                        end_usr   = ped_unit_format (*dev, end);
+                        start_sol = ped_unit_format (*dev, part->geom.start);
+                        end_sol   = ped_unit_format (*dev, part->geom.end);
+
+                        /* In script mode failure to use specified values is fatal.
+                         * However, in interactive mode, it merely elicits a warning
+                         * and a prompt for whether to proceed.
+                         */
+                        switch (ped_exception_throw (
+                                (opt_script_mode
+                                 ? PED_EXCEPTION_ERROR
+                                 : PED_EXCEPTION_WARNING),
+                                (opt_script_mode
+                                 ? PED_EXCEPTION_CANCEL
+                                 : PED_EXCEPTION_YES_NO),
+                                _("You requested a partition from %s to %s.\n"
+                                  "The closest location we can manage is "
+                                  "%s to %s.%s"),
+                                start_usr, end_usr, start_sol, end_sol,
+                                (opt_script_mode ? ""
+                                 : _("\nIs this still acceptable to you?"))))
+                        {
+                                case PED_EXCEPTION_YES:
+                                        /* all is well in this state */
+                                        break;
+                                case PED_EXCEPTION_NO:
+                                case PED_EXCEPTION_UNHANDLED:
+                                default:
+                                        /* undo partition addition */
+                                        goto error_remove_part;
+                        }
+                }
+
+                if ((alignment == ALIGNMENT_OPTIMAL &&
+                     !partition_align_check(disk, part, PA_OPTIMUM)) ||
+                    (alignment == ALIGNMENT_MINIMAL &&
+                     !partition_align_check(disk, part, PA_MINIMUM))) {
+                        if (ped_exception_throw(
+                                PED_EXCEPTION_WARNING,
+                                (opt_script_mode
+                                 ? PED_EXCEPTION_OK
+                                 : PED_EXCEPTION_IGNORE_CANCEL),
+                                _("The resulting partition is not properly "
+                                  "aligned for best performance.")) ==
+                            PED_EXCEPTION_CANCEL) {
+                                /* undo partition addition */
+                                goto error_remove_part;
+                        }
+                }
+        } else {
+                ped_exception_leave_all();
+        }
+        ped_exception_catch();
+
+        /* set minor attributes */
+        if (part_name)
+                PED_ASSERT (ped_partition_set_name (part, part_name));
+        free (part_name);  /* avoid double-free upon failure */
+        part_name = NULL;
+        if (!ped_partition_set_system (part, fs_type))
+                goto error_destroy_disk;
+        if (ped_partition_is_flag_available (part, PED_PARTITION_LBA))
+                ped_partition_set_flag (part, PED_PARTITION_LBA, 1);
+
+        if (!ped_disk_commit (disk))
+                goto error_destroy_disk;
+
+        /* clean up */
+        ped_disk_destroy (disk);
+
+        if (range_start != NULL)
+                ped_geometry_destroy (range_start);
+        if (range_end != NULL)
+                ped_geometry_destroy (range_end);
+
+        free (start_usr);
+        free (end_usr);
+        free (start_sol);
+        free (end_sol);
+
+        if ((*dev)->type != PED_DEVICE_FILE)
+                disk_is_modified = 1;
+
+        return 1;
+
+error_remove_part:
+        ped_disk_remove_partition (disk, part);
+error_destroy_simple_constraints:
+        ped_partition_destroy (part);
+error_destroy_disk:
+        free (part_name);
+        ped_disk_destroy (disk);
+error:
+        if (range_start != NULL)
+                ped_geometry_destroy (range_start);
+        if (range_end != NULL)
+                ped_geometry_destroy (range_end);
+
+        free (start_usr);
+        free (end_usr);
+        free (start_sol);
+        free (end_sol);
+
+        return 0;
+}
+
+static int
+do_name (PedDevice** dev)
+{
+        PedDisk*        disk;
+        PedPartition*   part = NULL;
+        char*           name;
+
+        disk = ped_disk_new (*dev);
+        if (!disk)
+                goto error;
+
+        if (!command_line_get_partition (_("Partition number?"), disk, &part))
+                goto error_destroy_disk;
+
+        name = command_line_get_word (_("Partition name?"),
+                        ped_partition_get_name (part), NULL, 0);
+        if (!name)
+                goto error_destroy_disk;
+        if (!ped_partition_set_name (part, name))
+                goto error_free_name;
+        free (name);
+
+        if (!ped_disk_commit (disk))
+                goto error_destroy_disk;
+        ped_disk_destroy (disk);
+        return 1;
+
+error_free_name:
+        free (name);
+error_destroy_disk:
+        ped_disk_destroy (disk);
+error:
+        return 0;
+}
+
+static char*
+partition_print_flags (PedPartition* part)
+{
+        PedPartitionFlag        flag;
+        int                     first_flag;
+        const char*             name;
+        char*                   res = ped_malloc(1);
+        void*                   _res = res;
+
+        *res = '\0';
+
+        first_flag = 1;
+        for (flag = ped_partition_flag_next (0); flag;
+             flag = ped_partition_flag_next (flag)) {
+                if (ped_partition_get_flag (part, flag)) {
+                        if (first_flag)
+                                first_flag = 0;
+                        else {
+                                _res = res;
+                                ped_realloc (&_res, strlen (res) + 1 + 2);
+                                res = _res;
+                                strncat (res, ", ", 2);
+                        }
+
+                        name = _(ped_partition_flag_get_name (flag));
+                        _res = res;
+                        ped_realloc (&_res, strlen (res) + 1 + strlen (name));
+                        res = _res;
+                        strcat(res, name);
+                }
+        }
+
+        return res;
+}
+
+static int
+partition_print (PedPartition* part)
+{
+        return 1;
+}
+
+static void
+_print_disk_geometry (const PedDevice *dev)
+{
+        PED_ASSERT (dev != NULL);
+        const PedCHSGeometry* chs = &dev->bios_geom;
+        char* cyl_size = ped_unit_format_custom (dev,
+                                chs->heads * chs->sectors,
+                                PED_UNIT_KILOBYTE);
+
+        if (opt_machine_mode) {
+            printf ("%d:%d:%d:%s;\n",
+                    chs->cylinders, chs->heads, chs->sectors, cyl_size);
+        } else {
+            printf (_("BIOS cylinder,head,sector geometry: %d,%d,%d.  "
+                      "Each cylinder is %s.\n"),
+                    chs->cylinders, chs->heads, chs->sectors, cyl_size);
+        }
+
+        free (cyl_size);
+}
+
+static void
+_print_disk_info (const PedDevice *dev, const PedDisk *disk)
+{
+        char const *const transport[] = {"unknown", "scsi", "ide", "dac960",
+                                         "cpqarray", "file", "ataraid", "i2o",
+                                         "ubd", "dasd", "viodasd", "sx8", "dm",
+                                         "xvd", "sd/mmc", "virtblk", "aoe",
+                                         "md"};
+
+        char* start = ped_unit_format (dev, 0);
+        PedUnit default_unit = ped_unit_get_default ();
+        char* end = ped_unit_format_byte (dev, dev->length * dev->sector_size
+                                    - (default_unit == PED_UNIT_CHS ||
+                                       default_unit == PED_UNIT_CYLINDER));
+
+        const char* pt_name = disk ? disk->type->name : "unknown";
+
+        if (opt_machine_mode) {
+            switch (default_unit) {
+                case PED_UNIT_CHS:      puts ("CHS;");
+                                        break;
+                case PED_UNIT_CYLINDER: puts ("CYL;");
+                                        break;
+                default:                puts ("BYT;");
+                                        break;
+
+            }
+            printf ("%s:%s:%s:%lld:%lld:%s:%s;\n",
+                    dev->path, end, transport[dev->type],
+                    dev->sector_size, dev->phys_sector_size,
+                    pt_name, dev->model);
+        } else {
+            printf (_("Model: %s (%s)\n"),
+                    dev->model, transport[dev->type]);
+            printf (_("Disk %s: %s\n"), dev->path, end);
+            printf (_("Sector size (logical/physical): %lldB/%lldB\n"),
+                    dev->sector_size, dev->phys_sector_size);
+        }
+
+        free (start);
+        free (end);
+
+        if (ped_unit_get_default () == PED_UNIT_CHS
+            || ped_unit_get_default () == PED_UNIT_CYLINDER)
+                _print_disk_geometry (dev);
+
+        if (!opt_machine_mode) {
+            printf (_("Partition Table: %s\n"), pt_name);
+        }
+}
+
+static int
+do_print (PedDevice** dev)
+{
+        PedDisk*        disk = NULL;
+        Table*          table;
+        int             has_extended;
+        int             has_name;
+        int             has_devices_arg = 0;
+        int             has_free_arg = 0;
+        int             has_list_arg = 0;
+        int             has_num_arg = 0;
+        char*           peek_word;
+        char*           start;
+        char*           end;
+        char*           size;
+        const char*     name;
+        char*           tmp;
+        wchar_t*        table_rendered;
+
+        peek_word = command_line_peek_word ();
+        if (peek_word) {
+                if (strncmp (peek_word, "devices", 7) == 0) {
+                        char *w = command_line_pop_word();
+                        free (w);
+                        has_devices_arg = 1;
+                }
+                else if (strncmp (peek_word, "free", 4) == 0) {
+                        char *w = command_line_pop_word ();
+                        free (w);
+                        has_free_arg = 1;
+                }
+                else if (strncmp (peek_word, "list", 4) == 0 ||
+                         strncmp (peek_word, "all", 3) == 0) {
+                        char *w = command_line_pop_word();
+                        free (w);
+                        has_list_arg = 1;
+                }
+                else
+                        has_num_arg = isdigit(peek_word[0]);
+
+                free (peek_word);
+        }
+
+        if (!has_devices_arg && !has_list_arg)
+                disk = ped_disk_new (*dev);
+        if (disk &&
+            ped_disk_is_flag_available(disk, PED_DISK_CYLINDER_ALIGNMENT))
+                if (!ped_disk_set_flag(disk, PED_DISK_CYLINDER_ALIGNMENT,
+                                       alignment == ALIGNMENT_CYLINDER))
+                        goto error_destroy_disk;
+
+        if (has_devices_arg) {
+                char*           dev_name;
+                PedDevice*      current_dev = NULL;
+
+                ped_device_probe_all();
+
+                while ((current_dev = ped_device_get_next(current_dev))) {
+                        end = ped_unit_format_byte (current_dev,
+                                             current_dev->length
+                                             * current_dev->sector_size);
+                        printf ("%s (%s)\n", current_dev->path, end);
+                        free (end);
+                }
+
+                dev_name = xstrdup ((*dev)->path);
+                ped_device_free_all ();
+
+                *dev = ped_device_get (dev_name);
+                if (!*dev)
+                       return 0;
+                if (!ped_device_open (*dev))
+                        return 0;
+
+                free (dev_name);
+
+                return 1;
+        }
+
+        else if (has_list_arg)
+                return _print_list ();
+
+        else if (disk && has_num_arg) {
+                PedPartition*   part = NULL;
+                int             status = 0;
+                if (command_line_get_partition ("", disk, &part))
+                        status = partition_print (part);
+                ped_disk_destroy (disk);
+                return status;
+        }
+
+        _print_disk_info (*dev, disk);
+        if (!disk)
+                goto nopt;
+        if (!opt_machine_mode)
+                putchar ('\n');
+
+        has_extended = ped_disk_type_check_feature (disk->type,
+                                         PED_DISK_TYPE_EXTENDED);
+        has_name = ped_disk_type_check_feature (disk->type,
+                                         PED_DISK_TYPE_PARTITION_NAME);
+
+        PedPartition* part;
+        if (!opt_machine_mode) {
+            StrList *row1;
+
+            if (ped_unit_get_default() == PED_UNIT_CHS) {
+                    row1 = str_list_create (_("Number"), _("Start"),
+                                               _("End"), NULL);
+            } else {
+                    row1 = str_list_create (_("Number"), _("Start"),
+                                               _("End"), _("Size"), NULL);
+            }
+
+            if (has_extended)
+                    str_list_append (row1, _("Type"));
+
+            str_list_append (row1, _("File system"));
+
+            if (has_name)
+                    str_list_append (row1, _("Name"));
+
+            str_list_append (row1, _("Flags"));
+
+
+            table = table_new (str_list_length(row1));
+
+            table_add_row_from_strlist (table, row1);
+
+            for (part = ped_disk_next_partition (disk, NULL); part;
+                 part = ped_disk_next_partition (disk, part)) {
+
+                    if ((!has_free_arg && !ped_partition_is_active(part)) ||
+                        part->type & PED_PARTITION_METADATA)
+                            continue;
+
+                    tmp = ped_malloc (4);
+
+                    if (part->num >= 0)
+                            sprintf (tmp, "%2d ", part->num);
+                    else
+                            sprintf (tmp, "%2s ", "");
+
+                    StrList *row = str_list_create (tmp, NULL);
+
+                    start = ped_unit_format (*dev, part->geom.start);
+                    end = ped_unit_format_byte (
+                            *dev,
+                            (part->geom.end + 1) * (*dev)->sector_size - 1);
+                    size = ped_unit_format (*dev, part->geom.length);
+                    if (ped_unit_get_default() == PED_UNIT_CHS) {
+                            str_list_append (row, start);
+                            str_list_append (row, end);
+                    } else {
+                            str_list_append (row, start);
+                            str_list_append (row, end);
+                            str_list_append (row, size);
+                    }
+
+                    if (!(part->type & PED_PARTITION_FREESPACE)) {
+                            if (has_extended) {
+                                name = ped_partition_type_get_name (part->type);
+                                str_list_append (row, name);
+                            }
+
+                            str_list_append (row, part->fs_type ?
+                                             part->fs_type->name : "");
+
+                            if (has_name) {
+                                    name = ped_partition_get_name (part);
+                                    str_list_append (row, name);
+                            }
+
+                            char *flags = partition_print_flags (part);
+                            str_list_append (row, flags);
+                            free (flags);
+                    } else {
+                            if (has_extended)
+                                    str_list_append (row, "");
+                            str_list_append (row, _("Free Space"));
+                            if (has_name)
+                                    str_list_append (row, "");
+                            str_list_append (row, "");
+                    }
+
+                    //PED_ASSERT (row.cols == caption.cols)
+                    table_add_row_from_strlist (table, row);
+                    str_list_destroy (row);
+                    free (tmp);
+                    free (start);
+                    free (end);
+                    free (size);
+            }
+
+            table_rendered = table_render (table);
+#ifdef ENABLE_NLS
+            printf("%ls\n", table_rendered);
+#else
+            printf("%s\n", table_rendered);
+#endif
+            free (table_rendered);
+            table_destroy (table);
+            str_list_destroy (row1);
+
+        } else {
+
+            for (part = ped_disk_next_partition (disk, NULL); part;
+                 part = ped_disk_next_partition (disk, part)) {
+
+                if ((!has_free_arg && !ped_partition_is_active(part)) ||
+                        part->type & PED_PARTITION_METADATA)
+                            continue;
+
+                if (part->num >= 0)
+                    printf ("%d:", part->num);
+                else
+                    fputs ("1:", stdout);
+
+                char *s = ped_unit_format (*dev, part->geom.start);
+                printf ("%s:", s);
+                free (s);
+                s = ped_unit_format_byte (*dev,
+                                          (part->geom.end + 1) *
+                                          (*dev)->sector_size - 1);
+                printf ("%s:", s);
+                free (s);
+
+                if (ped_unit_get_default() != PED_UNIT_CHS) {
+                    s = ped_unit_format (*dev, part->geom.length);
+                    printf ("%s:", s);
+                    free (s);
+                }
+
+                if (!(part->type & PED_PARTITION_FREESPACE)) {
+
+                    if (part->fs_type)
+                        printf ("%s:", part->fs_type->name);
+                    else
+                        putchar (':');
+
+                    if (has_name)
+                        printf ("%s:", _(ped_partition_get_name (part)));
+                    else
+                        putchar (':');
+
+                    char *flags = partition_print_flags (part);
+                    printf ("%s;\n", flags);
+                    free (flags);
+
+                } else {
+                    puts ("free;");
+                }
+            }
+        }
+
+        ped_disk_destroy (disk);
+
+        return 1;
+
+error_destroy_disk:
+        ped_disk_destroy (disk);
+        return 0;
+nopt:
+        return 1;
+}
+
+static int
+_print_list ()
+{
+        PedDevice *current_dev = NULL;
+
+        ped_device_probe_all();
+
+        while ((current_dev = ped_device_get_next(current_dev))) {
+                do_print (&current_dev);
+                putchar ('\n');
+        }
+
+        return 1;
+}
+
+static int
+do_quit (PedDevice** dev)
+{
+        _done (*dev);
+        exit (EXIT_SUCCESS);
+}
+
+static PedPartitionType
+_disk_get_part_type_for_sector (PedDisk* disk, PedSector sector)
+{
+        PedPartition*   extended;
+
+        extended = ped_disk_extended_partition (disk);
+        if (!extended
+            || !ped_geometry_test_sector_inside (&extended->geom, sector))
+                return 0;
+
+        return PED_PARTITION_LOGICAL;
+}
+
+/* This function checks if "part" contains a file system, and returs
+ *      0 if either no file system was found, or the user declined to add it.
+ *      1 if a file system was found, and the user chose to add it.
+ *      -1 if the user chose to cancel the entire search.
+ */
+static int
+_rescue_add_partition (PedPartition* part)
+{
+        const PedFileSystemType*        fs_type;
+        PedGeometry*                    probed;
+        PedExceptionOption              ex_opt;
+        PedConstraint*                  constraint;
+        char*                           found_start;
+        char*                           found_end;
+
+        fs_type = ped_file_system_probe (&part->geom);
+        if (!fs_type)
+                return 0;
+        probed = ped_file_system_probe_specific (fs_type, &part->geom);
+        if (!probed)
+                return 0;
+
+        if (!ped_geometry_test_inside (&part->geom, probed)) {
+                ped_geometry_destroy (probed);
+                return 0;
+        }
+
+        constraint = ped_constraint_exact (probed);
+        if (!ped_disk_set_partition_geom (part->disk, part, constraint,
+                                          probed->start, probed->end)) {
+                ped_constraint_destroy (constraint);
+                return 0;
+        }
+        ped_constraint_destroy (constraint);
+
+        found_start = ped_unit_format (probed->dev, probed->start);
+        found_end = ped_unit_format (probed->dev, probed->end);
+        ex_opt = ped_exception_throw (
+                PED_EXCEPTION_INFORMATION,
+                PED_EXCEPTION_YES_NO_CANCEL,
+                _("A %s %s partition was found at %s -> %s.  "
+                  "Do you want to add it to the partition table?"),
+                fs_type->name, ped_partition_type_get_name (part->type),
+                found_start, found_end);
+        ped_geometry_destroy (probed);
+        free (found_start);
+        free (found_end);
+
+        switch (ex_opt) {
+                case PED_EXCEPTION_CANCEL: return -1;
+                case PED_EXCEPTION_NO: return 0;
+                default: break;
+        }
+
+        ped_partition_set_system (part, fs_type);
+        ped_disk_commit (part->disk);
+        return 1;
+}
+
+/* hack: we only iterate through the start, since most (all) fs's have their
+ * superblocks at the start.  We'll need to change this if we generalize
+ * for RAID, or something...
+ */
+static int
+_rescue_pass (PedDisk* disk, PedGeometry* start_range, PedGeometry* end_range)
+{
+        PedSector               start;
+        PedGeometry             start_geom_exact;
+        PedGeometry             entire_dev;
+        PedConstraint           constraint;
+        PedPartition*           part;
+        PedPartitionType        part_type;
+
+        part_type = _disk_get_part_type_for_sector (
+                        disk, (start_range->start + end_range->end) / 2);
+
+        ped_geometry_init (&entire_dev, disk->dev, 0, disk->dev->length);
+
+        ped_timer_reset (g_timer);
+        ped_timer_set_state_name (g_timer, _("searching for file systems"));
+        for (start = start_range->start; start <= start_range->end; start++) {
+                ped_timer_update (g_timer, 1.0 * (start - start_range->start)
+                                         / start_range->length);
+
+                ped_geometry_init (&start_geom_exact, disk->dev, start, 1);
+                ped_constraint_init (
+                        &constraint, ped_alignment_any, ped_alignment_any,
+                        &start_geom_exact, &entire_dev,
+                        1, disk->dev->length);
+                part = ped_partition_new (disk, part_type, NULL, start,
+                                end_range->end);
+                if (!part) {
+                        ped_constraint_done (&constraint);
+                        continue;
+                }
+
+                ped_exception_fetch_all ();
+                if (ped_disk_add_partition (disk, part, &constraint)) {
+                        ped_exception_leave_all ();
+                        switch (_rescue_add_partition (part)) {
+                        case 1:
+                                ped_constraint_done (&constraint);
+                                return 1;
+
+                        case 0:
+                                ped_disk_remove_partition (disk, part);
+                                break;
+
+                        case -1:
+                                goto error_remove_partition;
+                        }
+                } else {
+                        ped_exception_leave_all ();
+                }
+                ped_partition_destroy (part);
+                ped_constraint_done (&constraint);
+        }
+        ped_timer_update (g_timer, 1.0);
+
+        return 1;
+
+error_remove_partition:
+        ped_disk_remove_partition (disk, part);
+        ped_partition_destroy (part);
+        ped_constraint_done (&constraint);
+        return 0;
+}
+
+static int
+do_rescue (PedDevice** dev)
+{
+        PedDisk*                disk;
+        PedSector               start = 0, end = 0;
+        PedSector               fuzz;
+        PedGeometry             probe_start_region;
+        PedGeometry             probe_end_region;
+
+        disk = ped_disk_new (*dev);
+        if (!disk)
+                goto error;
+
+        if (!command_line_get_sector (_("Start?"), *dev, &start, NULL))
+                goto error_destroy_disk;
+        if (!command_line_get_sector (_("End?"), *dev, &end, NULL))
+                goto error_destroy_disk;
+
+        fuzz = PED_MAX (PED_MIN ((end - start) / 10, MEGABYTE_SECTORS(*dev)),
+                        MEGABYTE_SECTORS(*dev) * 16);
+
+        ped_geometry_init (&probe_start_region, *dev,
+                           PED_MAX(start - fuzz, 0),
+                           PED_MIN(2 * fuzz, (*dev)->length - (start - fuzz)));
+        ped_geometry_init (&probe_end_region, *dev,
+                           PED_MAX(end - fuzz, 0),
+                           PED_MIN(2 * fuzz, (*dev)->length - (end - fuzz)));
+
+        if (!_rescue_pass (disk, &probe_start_region, &probe_end_region))
+                goto error_destroy_disk;
+
+        ped_disk_destroy (disk);
+
+        if ((*dev)->type != PED_DEVICE_FILE)
+                disk_is_modified = 1;
+
+        return 1;
+
+error_destroy_disk:
+        ped_disk_destroy (disk);
+error:
+        return 0;
+}
+
+static int
+do_rm (PedDevice** dev)
+{
+        PedDisk*                disk;
+        PedPartition*           part = NULL;
+
+        disk = ped_disk_new (*dev);
+        if (!disk)
+                goto error;
+
+        if (!command_line_get_partition (_("Partition number?"), disk, &part))
+                goto error_destroy_disk;
+        if (!_partition_warn_busy (part))
+                goto error_destroy_disk;
+
+        ped_disk_delete_partition (disk, part);
+        ped_disk_commit (disk);
+        ped_disk_destroy (disk);
+
+        if ((*dev)->type != PED_DEVICE_FILE)
+                disk_is_modified = 1;
+
+        return 1;
+
+error_destroy_disk:
+        ped_disk_destroy (disk);
+error:
+        return 0;
+}
+
+static int
+do_select (PedDevice** dev)
+{
+        PedDevice*      new_dev = *dev;
+
+        if (!command_line_get_device (_("New device?"), &new_dev))
+                return 0;
+        if (!ped_device_open (new_dev))
+                return 0;
+
+        ped_device_close (*dev);
+        *dev = new_dev;
+        print_using_dev (*dev);
+        return 1;
+}
+
+/* Return true if partition PART is consistent with DISK's selected
+   offset and alignment requirements.  Also return true if there is
+   insufficient kernel support to determine DISK's alignment requirements.
+   Otherwise, return false.  A_TYPE selects whether to check for minimal
+   or optimal alignment requirements.  */
+static bool
+partition_align_check (PedDisk const *disk, PedPartition const *part,
+                      enum AlignmentType a_type)
+{
+  PED_ASSERT (part->disk == disk);
+  PedDevice const *dev = disk->dev;
+
+  PedAlignment *pa = (a_type == PA_MINIMUM
+                     ? ped_device_get_minimum_alignment (dev)
+                     : ped_device_get_optimum_alignment (dev));
+  if (pa == NULL)
+    return true;
+
+  PED_ASSERT (pa->grain_size != 0);
+  bool ok = (part->geom.start % pa->grain_size == pa->offset);
+  free (pa);
+  return ok;
+}
+
+static int
+do_align_check (PedDevice **dev)
+{
+  PedDisk *disk = ped_disk_new (*dev);
+  if (!disk)
+    goto error;
+
+  enum AlignmentType align_type = PA_OPTIMUM;
+  PedPartition *part = NULL;
+
+  if (!command_line_get_align_type (_("alignment type(min/opt)"), &align_type))
+    goto error_destroy_disk;
+  if (!command_line_get_partition (_("Partition number?"), disk, &part))
+    goto error_destroy_disk;
+
+  bool aligned = partition_align_check (disk, part, align_type);
+  if (!opt_script_mode)
+    printf(aligned ? _("%d aligned\n") : _("%d not aligned\n"), part->num);
+
+  ped_disk_destroy (disk);
+
+  if (opt_script_mode)
+    return aligned ? 1 : 0;
+
+  /* Always return 1 in interactive mode, to be consistent
+     with the other modes.  */
+  return 1;
+
+error_destroy_disk:
+  ped_disk_destroy (disk);
+error:
+  return 0;
+}
+
+static int
+do_set (PedDevice** dev)
+{
+        PedDisk*                disk;
+        PedPartition*           part = NULL;
+        PedPartitionFlag        flag;
+        int                     state;
+
+        disk = ped_disk_new (*dev);
+        if (!disk)
+                goto error;
+
+        if (!command_line_get_partition (_("Partition number?"), disk, &part))
+                goto error_destroy_disk;
+        if (!command_line_get_part_flag (_("Flag to Invert?"), part, &flag))
+                goto error_destroy_disk;
+        state = (ped_partition_get_flag (part, flag) == 0 ? 1 : 0);
+
+        if (!is_toggle_mode) {
+                if (!command_line_get_state (_("New state?"), &state))
+                           goto error_destroy_disk;
+        }
+
+        if (!ped_partition_set_flag (part, flag, state))
+                       goto error_destroy_disk;
+       if (!ped_disk_commit (disk))
+                       goto error_destroy_disk;
+       ped_disk_destroy (disk);
+
+        if ((*dev)->type != PED_DEVICE_FILE)
+                disk_is_modified = 1;
+
+           return 1;
+
+error_destroy_disk:
+        ped_disk_destroy (disk);
+error:
+        return 0;
+}
+
+static int
+do_toggle (PedDevice **dev)
+{
+        int result;
+
+        is_toggle_mode = 1;
+        result = do_set (dev);
+        is_toggle_mode = 0;
+
+        return result;
+}
+
+static int
+do_unit (PedDevice** dev)
+{
+        PedUnit unit = ped_unit_get_default ();
+        if (!command_line_get_unit (_("Unit?"), &unit))
+                return 0;
+        ped_unit_set_default (unit);
+        return 1;
+}
+
+static int
+do_version ()
+{
+    printf ("\n%s\n%s",
+            prog_name,
+            _(copyright_msg));
+    return 1;
+}
+
+static void
+_init_messages ()
+{
+        StrList*                list;
+        int                     first;
+        PedFileSystemType*      fs_type;
+        PedFileSystemAlias*     fs_alias;
+        PedDiskType*            disk_type;
+        PedPartitionFlag        part_flag;
+        PedUnit                 unit;
+
+/* flags */
+        first = 1;
+        list = str_list_create (_(flag_msg_start), NULL);
+        for (part_flag = ped_partition_flag_next (0); part_flag;
+                        part_flag = ped_partition_flag_next (part_flag)) {
+                if (first)
+                        first = 0;
+                else
+                        str_list_append (list, ", ");
+                str_list_append (list,
+                                 _(ped_partition_flag_get_name (part_flag)));
+        }
+        str_list_append (list, "\n");
+
+        flag_msg = str_list_convert (list);
+        str_list_destroy (list);
+
+/* units */
+        first = 1;
+        list = str_list_create (_(unit_msg_start), NULL);
+        for (unit = PED_UNIT_FIRST; unit <= PED_UNIT_LAST; unit++) {
+                if (first)
+                        first = 0;
+                else
+                        str_list_append (list, ", ");
+                str_list_append (list, ped_unit_get_name (unit));
+        }
+        str_list_append (list, "\n");
+
+        unit_msg = str_list_convert (list);
+        str_list_destroy (list);
+
+/* disk type */
+        list = str_list_create (_(label_type_msg_start), NULL);
+
+        first = 1;
+        for (disk_type = ped_disk_type_get_next (NULL);
+             disk_type; disk_type = ped_disk_type_get_next (disk_type)) {
+                if (disk_type->ops->write == NULL)
+                        continue;
+
+                if (first)
+                        first = 0;
+                else
+                        str_list_append (list, ", ");
+                str_list_append (list, disk_type->name);
+        }
+        str_list_append (list, "\n");
+
+        label_type_msg = str_list_convert (list);
+        str_list_destroy (list);
+
+/* mkpart - file system types and aliases */
+        list = str_list_create (_(fs_type_msg_start), NULL);
+
+        first = 1;
+        for (fs_type = ped_file_system_type_get_next (NULL);
+             fs_type; fs_type = ped_file_system_type_get_next (fs_type)) {
+                if (first)
+                        first = 0;
+                else
+                        str_list_append (list, ", ");
+                str_list_append (list, fs_type->name);
+        }
+        for (fs_alias = ped_file_system_alias_get_next (NULL);
+             fs_alias; fs_alias = ped_file_system_alias_get_next (fs_alias)) {
+                if (first)
+                        first = 0;
+                else
+                        str_list_append (list, ", ");
+                str_list_append (list, fs_alias->alias);
+        }
+        str_list_append (list, "\n");
+
+        mkpart_fs_type_msg = str_list_convert (list);
+        str_list_destroy (list);
+}
+
+static void
+_done_messages ()
+{
+        free (flag_msg);
+        free (unit_msg);
+        free (mkpart_fs_type_msg);
+        free (label_type_msg);
+}
+
+static void
+_init_commands ()
+{
+  command_register (commands,
+    command_create ( str_list_create_unique ("align-check",
+                                            _("align-check"), NULL),
+                    do_align_check,
+                    str_list_create (
+                                     _("align-check TYPE N"
+                                       "                        "
+                                       "check partition N for"
+                                       " TYPE(min|opt) alignment"), NULL),
+
+                    str_list_create (_(number_msg), _(min_or_opt_msg),
+                                     NULL), 1));
+        command_register (commands, command_create (
+                str_list_create_unique ("help", _("help"), NULL),
+                do_help,
+                str_list_create (
+_("help [COMMAND]                           print general help, or help "
+  "on COMMAND"),
+NULL),
+                NULL, 1));
+
+        command_register (commands, command_create (
+                str_list_create_unique ("mklabel", _("mklabel"), "mktable", _("mktable"), NULL),
+                do_mklabel,
+                str_list_create (
+_("mklabel,mktable LABEL-TYPE               create a new disklabel "
+  "(partition table)"),
+NULL),
+                str_list_create (label_type_msg, NULL), 1));
+
+        command_register (commands, command_create (
+                str_list_create_unique ("mkpart", _("mkpart"), NULL),
+                do_mkpart,
+                str_list_create (
+_("mkpart PART-TYPE [FS-TYPE] START END     make a partition"),
+NULL),
+                str_list_create (_(part_type_msg),
+                                 _(mkpart_fs_type_msg),
+                                 _(start_end_msg),
+                                 "\n",
+_("'mkpart' makes a partition without creating a new file system on the "
+  "partition.  FS-TYPE may be specified to set an appropriate partition ID.\n"),
+NULL), 1));
+
+command_register (commands, command_create (
+        str_list_create_unique ("name", _("name"), NULL),
+        do_name,
+        str_list_create (
+_("name NUMBER NAME                         name partition NUMBER as NAME"),
+NULL),
+        str_list_create (_(number_msg), _(name_msg), NULL), 1));
+
+command_register (commands, command_create (
+        str_list_create_unique ("print", _("print"), NULL),
+        do_print,
+        str_list_create (
+_("print [devices|free|list,all|NUMBER]     display the partition table, "
+  "available devices, free space, all found partitions, or a particular "
+  "partition"),
+NULL),
+        str_list_create (
+_("Without arguments, 'print' displays the entire partition table. However "
+  "with the following arguments it performs various other actions.\n"),
+_("  devices   : display all active block devices\n"),
+_("  free      : display information about free unpartitioned space on the "
+  "current block device\n"),
+_("  list, all : display the partition tables of all active block devices\n"),
+_("  NUMBER    : display more detailed information about this particular "
+  "partition\n"),
+NULL), 1));
+
+command_register (commands, command_create (
+        str_list_create_unique ("quit", _("quit"), NULL),
+        do_quit,
+        str_list_create (
+_("quit                                     exit program"),
+NULL),
+        NULL, 1));
+
+command_register (commands, command_create (
+        str_list_create_unique ("rescue", _("rescue"), NULL),
+        do_rescue,
+        str_list_create (
+_("rescue START END                         rescue a lost partition near "
+"START and END"),
+NULL),
+        str_list_create (_(start_end_msg), NULL), 1));
+
+command_register (commands, command_create (
+        str_list_create_unique ("rm", _("rm"), NULL),
+        do_rm,
+        str_list_create (
+_("rm NUMBER                                delete partition NUMBER"),
+NULL),
+        str_list_create (_(number_msg), NULL), 1));
+
+command_register (commands, command_create (
+        str_list_create_unique ("select", _("select"), NULL),
+        do_select,
+        str_list_create (
+_("select DEVICE                            choose the device to edit"),
+NULL),
+        str_list_create (_(device_msg), NULL), 1));
+
+command_register (commands, command_create (
+               str_list_create_unique ("set", _("set"), NULL),
+               do_set,
+               str_list_create (
+_("set NUMBER FLAG STATE                    change the FLAG on partition "
+  "NUMBER"),
+NULL),
+        str_list_create (_(number_msg), flag_msg, _(state_msg), NULL), 1));
+
+command_register (commands, command_create (
+        str_list_create_unique ("toggle", _("toggle"), NULL),
+        do_toggle,
+        str_list_create (
+_("toggle [NUMBER [FLAG]]                   toggle the state of FLAG on "
+  "partition NUMBER"),
+NULL),
+        str_list_create (_(number_msg), flag_msg, NULL), 1));
+
+command_register (commands, command_create (
+        str_list_create_unique ("unit", _("unit"), NULL),
+        do_unit,
+        str_list_create (
+_("unit UNIT                                set the default unit to UNIT"),
+NULL),
+        str_list_create (unit_msg, NULL), 1));
+
+command_register (commands, command_create (
+        str_list_create_unique ("version", _("version"), NULL),
+        do_version,
+        str_list_create (
+_("version                                  display the version number "
+"and copyright information of GNU Parted"),
+NULL),
+        str_list_create (
+_("'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"),
+NULL), 1));
+
+}
+
+static void
+_done_commands ()
+{
+Command**       walk;
+
+for (walk = commands; *walk; walk++) {
+        command_destroy (*walk);
+        *walk = NULL;
+}
+}
+
+static void
+_init_i18n ()
+{
+/* intialize i18n */
+#ifdef ENABLE_NLS
+setlocale(LC_ALL, "");
+bindtextdomain(PACKAGE, LOCALEDIR);
+textdomain(PACKAGE);
+#endif /* ENABLE_NLS */
+}
+
+void
+_version ()
+{
+  version_etc (stdout, PROGRAM_NAME, PACKAGE_NAME, Version, AUTHORS,
+               (char *) NULL);
+}
+
+static int
+_parse_options (int* argc_ptr, char*** argv_ptr)
+{
+int     opt, help = 0, list = 0, version = 0, wrong = 0;
+
+while (1)
+{
+        opt = getopt_long (*argc_ptr, *argv_ptr, "hlmsva:",
+                           options, NULL);
+        if (opt == -1)
+                break;
+
+        switch (opt) {
+                case 'h': help = 1; break;
+                case 'l': list = 1; break;
+                case 'm': opt_machine_mode = 1; break;
+                case 's': opt_script_mode = 1; break;
+                case 'v': version = 1; break;
+                case 'a':
+                  alignment = XARGMATCH ("--align", optarg,
+                                         align_args, align_types);
+                  break;
+                case PRETEND_INPUT_TTY:
+                  pretend_input_tty = 1;
+                  break;
+                default:
+                  wrong = 1;
+                  break;
+        }
+}
+
+if (wrong == 1) {
+        fprintf (stderr,
+                 _("Usage: %s [-hlmsv] [-a<align>] [DEVICE [COMMAND [PARAMETERS]]...]\n"),
+                 program_name);
+        return 0;
+}
+
+if (version == 1) {
+        _version ();
+        exit (EXIT_SUCCESS);
+}
+
+if (help == 1) {
+        help_msg ();
+        exit (EXIT_SUCCESS);
+}
+
+if (list == 1) {
+        _print_list ();
+        exit (EXIT_SUCCESS);
+}
+
+*argc_ptr -= optind;
+*argv_ptr += optind;
+return 1;
+}
+
+static PedDevice*
+_choose_device (int* argc_ptr, char*** argv_ptr)
+{
+PedDevice*      dev;
+
+/* specified on comand line? */
+if (*argc_ptr) {
+        dev = ped_device_get ((*argv_ptr) [0]);
+        if (!dev)
+                return NULL;
+        (*argc_ptr)--;
+        (*argv_ptr)++;
+} else {
+retry:
+        ped_device_probe_all ();
+        dev = ped_device_get_next (NULL);
+        if (!dev) {
+                if (ped_exception_throw (PED_EXCEPTION_ERROR,
+                        PED_EXCEPTION_RETRY_CANCEL,
+                        _("No device found"))
+                                == PED_EXCEPTION_RETRY)
+                        goto retry;
+                else
+                        return NULL;
+        }
+}
+
+if (!ped_device_open (dev))
+        return NULL;
+return dev;
+}
+
+static PedDevice*
+_init (int* argc_ptr, char*** argv_ptr)
+{
+PedDevice*      dev;
+
+#ifdef ENABLE_MTRACE
+mtrace();
+#endif
+
+_init_i18n ();
+if (!init_ui ())
+        goto error;
+_init_messages ();
+_init_commands ();
+
+if (!_parse_options (argc_ptr, argv_ptr))
+        goto error_done_commands;
+
+if (!opt_script_mode)
+        if (init_readline ())
+                goto error_done_commands;
+
+#ifdef HAVE_GETUID
+        if (getuid() != 0 && !opt_script_mode) {
+            puts (_("WARNING: You are not superuser.  Watch out for "
+                    "permissions."));
+        }
+#endif
+
+dev = _choose_device (argc_ptr, argv_ptr);
+if (!dev)
+        goto error_done_commands;
+
+g_timer = ped_timer_new (_timer_handler, &timer_context);
+if (!g_timer)
+        goto error_done_commands;
+timer_context.last_update = 0;
+
+return dev;
+
+error_done_commands:
+_done_commands ();
+_done_messages ();
+done_ui ();
+error:
+return NULL;
+}
+
+static void
+_done (PedDevice* dev)
+{
+if (dev->boot_dirty && dev->type != PED_DEVICE_FILE) {
+        ped_exception_throw (
+                PED_EXCEPTION_WARNING,
+                PED_EXCEPTION_OK,
+        _("You should reinstall your boot loader before "
+          "rebooting.  Read section 4 of the Parted User "
+          "documentation for more information."));
+}
+if (!opt_script_mode && !opt_machine_mode && disk_is_modified) {
+        ped_exception_throw (
+                PED_EXCEPTION_INFORMATION, PED_EXCEPTION_OK,
+                _("You may need to update /etc/fstab.\n"));
+}
+
+ped_device_close (dev);
+
+ped_timer_destroy (g_timer);
+_done_commands ();
+_done_messages ();
+done_ui();
+}
+
+int
+main (int argc, char** argv)
+{
+        PedDevice*      dev;
+        int             status;
+
+        set_program_name (argv[0]);
+        atexit (close_stdout);
+
+        dev = _init (&argc, &argv);
+        if (!dev)
+                return 1;
+
+        if (argc || opt_script_mode)
+                status = non_interactive_mode (&dev, commands, argc, argv);
+        else
+                status = interactive_mode (&dev, commands);
+
+        _done (dev);
+
+        return !status;
+}
diff --git a/parted/strlist.c b/parted/strlist.c
new file mode 100644 (file)
index 0000000..798d5ae
--- /dev/null
@@ -0,0 +1,579 @@
+/*
+    parted - a frontend to libparted
+    Copyright (C) 1999-2001, 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#include <config.h>
+
+#include <parted/debug.h>
+
+#include <ctype.h>
+#include <errno.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <limits.h>
+#include "xalloc.h"
+
+#ifdef ENABLE_NLS
+
+#undef __USE_GNU
+#define __USE_GNU
+
+#include <wchar.h>
+#include <wctype.h>
+
+#endif /* !ENABLE_NLS */
+
+#include "strlist.h"
+
+#define MIN(a,b)       ( (a<b)?  a : b )
+
+int
+wchar_strlen (const wchar_t* str)
+{
+#ifdef ENABLE_NLS
+       return wcslen (str);
+#else
+       return strlen (str);
+#endif
+}
+
+wchar_t*
+wchar_strchr (const wchar_t* str, char ch)
+{
+#ifdef ENABLE_NLS
+       return wcschr (str, ch);
+#else
+       return strchr (str, ch);
+#endif
+}
+
+int
+wchar_strcasecmp (const wchar_t* a, const wchar_t* b)
+{
+#ifdef ENABLE_NLS
+       return wcscasecmp (a, b);
+#else
+       return strcasecmp (a, b);
+#endif
+}
+
+int
+wchar_strncasecmp (const wchar_t* a, const wchar_t* b, size_t n)
+{
+#ifdef ENABLE_NLS
+       return wcsncasecmp (a, b, n);
+#else
+       return strncasecmp (a, b, n);
+#endif
+}
+
+wchar_t*
+wchar_strdup (const wchar_t* str)
+{
+#ifdef ENABLE_NLS
+       return wcsdup (str);
+#else
+       return xstrdup (str);
+#endif
+}
+
+/* converts a string from the encoding in the gettext catalogues to wide
+ * character strings (of type wchar_t*).
+ */
+#ifdef ENABLE_NLS
+static wchar_t*
+gettext_to_wchar (const char* str)
+{
+       int             count;
+       wchar_t*        result;
+       size_t          status;
+       mbstate_t       ps;
+
+       count = strlen (str) + 1;
+       result = malloc (count * sizeof (wchar_t));
+       if (!result)
+               goto error;
+
+       memset(&ps, 0, sizeof (ps));
+       status = mbsrtowcs(result, &str, count, &ps);
+       if (status == (size_t) -1)
+               goto error;
+
+       result = xrealloc (result, (wcslen (result) + 1) * sizeof (wchar_t));
+       return result;
+
+error:
+       printf ("Error during translation: %s\n", strerror (errno));
+       exit (EXIT_FAILURE);
+}
+
+#else /* ENABLE_NLS */
+
+static wchar_t*
+gettext_to_wchar (const char* str)
+{
+       return xstrdup (str);
+}
+
+#endif /* !ENABLE_NLS */
+
+
+#ifdef ENABLE_NLS
+static char*
+wchar_to_str (const wchar_t* str, size_t count)
+{
+       char*           result;
+       char*           out_buf;
+       size_t          status;
+       mbstate_t       ps;
+       size_t          i;
+
+       if (count == 0 || wcslen(str) < count)
+               count = wcslen (str);
+
+       out_buf = result = malloc ((count + 1) *  MB_LEN_MAX);
+       if (!result)
+               goto error;
+
+       memset(&ps, 0, sizeof(ps));
+
+       for (i = 0; i < count; i++) {
+               status = wcrtomb (out_buf, str[i], &ps);
+               if (status == (size_t) -1)
+                       goto error;
+               out_buf += status;
+       }
+
+       status = wcrtomb (out_buf, 0, &ps);
+       if (status == (size_t) -1)
+               goto error;
+
+       result = realloc (result, strlen (result) + 1);
+       return result;
+
+error:
+       printf ("Error during translation: %s\n", strerror (errno));
+       exit (EXIT_FAILURE);
+}
+
+#else /* ENABLE_NLS */
+
+static char*
+wchar_to_str (const wchar_t* str, size_t count)
+{
+       char*           result;
+
+       result = xstrdup (str);
+       if (count && count < strlen (result))
+               result [count] = 0;
+       return result;
+}
+
+#endif /* !ENABLE_NLS */
+
+static void
+print_wchar (const wchar_t* str, size_t count)
+{
+       char*   tmp = wchar_to_str (str, count);
+       printf ("%s", tmp);
+       free (tmp);
+}
+
+static StrList*
+str_list_alloc ()
+{
+       StrList*        list;
+
+       list = xmalloc (sizeof (StrList));
+       list->next = NULL;
+
+       return list;
+}
+
+void
+str_list_destroy (StrList* list)
+{
+       if (list) {
+               str_list_destroy (list->next);
+               str_list_destroy_node (list);
+       }
+}
+
+void
+str_list_destroy_node (StrList* list)
+{
+       void *p = (char *) (list->str); /* discard const */
+       free (p);
+       free (list);
+}
+
+StrList*
+str_list_duplicate_node (const StrList* node)
+{
+       StrList*        result = str_list_alloc ();
+       result->str = wchar_strdup (node->str);
+       return result;
+}
+
+StrList*
+str_list_duplicate (const StrList* list)
+{
+       if (list)
+               return str_list_join (str_list_duplicate_node (list),
+                                     str_list_duplicate (list->next));
+       else
+               return NULL;
+}
+
+StrList*
+str_list_join (StrList* a, StrList* b)
+{
+       StrList*        walk;
+
+       for (walk = a; walk && walk->next; walk = walk->next);
+
+       if (walk) {
+               walk->next = b;
+               return a;
+       } else {
+               return b;
+       }
+}
+
+static StrList*
+_str_list_append (StrList* list, const wchar_t* str)
+{
+       StrList*        walk;
+
+       if (list) {
+               for (walk = list; walk->next; walk = walk->next);
+               walk->next = str_list_alloc ();
+               walk = walk->next;
+       } else {
+               walk = list = str_list_alloc ();
+       }
+       walk->str = str;
+
+       return list;
+}
+
+StrList*
+str_list_append (StrList* list, const char* str)
+{
+       return _str_list_append (list, gettext_to_wchar (str));
+}
+
+StrList*
+str_list_append_unique (StrList* list, const char* str)
+{
+       StrList*        walk;
+       wchar_t*        new_str = gettext_to_wchar (str);
+
+       for (walk=list; walk; walk=walk->next) {
+               if (walk->str) {
+                       if (wchar_strcasecmp (new_str, walk->str) == 0) {
+                               free (new_str);
+                               return list;
+                       }
+               }
+       }
+
+       return _str_list_append (list, new_str);
+}
+
+StrList*
+str_list_insert (StrList* list, const char* str)
+{
+       return str_list_join (str_list_create (str, NULL), list);
+}
+
+StrList*
+str_list_create (const char* first, ...)
+{
+       va_list         args;
+       char*           str;
+       StrList*        list;
+
+       list = str_list_append (NULL, first);
+
+       if (first) {
+               va_start (args, first);
+               while ( (str = va_arg (args, char*)) )
+                       str_list_append (list, str);
+               va_end (args);
+       }
+
+       return list;
+}
+
+StrList*
+str_list_create_unique (const char* first, ...)
+{
+       va_list         args;
+       char*           str;
+       StrList*        list;
+
+       list = str_list_append (NULL, first);
+
+       if (first) {
+               va_start (args, first);
+               while ( (str = va_arg (args, char*)) )
+                       str_list_append_unique (list, str);
+               va_end (args);
+       }
+
+       return list;
+}
+
+char*
+str_list_convert_node (const StrList* list)
+{
+       return wchar_to_str (list->str, 0);
+}
+
+char*
+str_list_convert (const StrList* list)
+{
+       const StrList*  walk;
+       int             pos = 0;
+       int             length = 1;
+       char*           str = xstrdup ("");
+
+       for (walk = list; walk; walk = walk->next) {
+               if (walk->str) {
+                       char*   tmp = wchar_to_str (walk->str, 0);
+
+                       length += strlen (tmp);
+
+                       str = realloc (str, length);
+                       strcpy (str + pos, tmp);
+
+                       pos = length - 1;
+                       free (tmp);
+               }
+       }
+
+       return str;
+}
+
+void
+str_list_print (const StrList* list)
+{
+       const StrList*  walk;
+
+       for (walk=list; walk; walk=walk->next) {
+               if (walk->str)
+                       print_wchar (walk->str, 0);
+       }
+}
+
+static int
+str_search (const wchar_t* str, int n, wchar_t c)
+{
+       int     i;
+
+       for (i=0; i<n; i++)
+               if (str [i] == c)
+                       return i;
+       return -1;
+}
+
+
+/* Japanese don't leave spaces between words, so ALL Japanese characters
+ * are treated as delimiters.  Note: since the translations should already
+ * be properly formatted (eg: spaces after commas), there should be no
+ * need to include them.  Best not to avoid side effects, like 3.
+14159 :-)
+ * FIXME: how do we exclude "." and "(" ?
+ * FIXME: glibc doesn't like umlaute.  i.e. \"o (TeX notation), which should
+ * look like: ö
+ */
+
+static int
+is_break_point (wchar_t c)
+{
+#ifdef ENABLE_NLS
+       return !iswalnum (c) && !iswpunct (c);
+#else
+       return !isalnum (c) && !ispunct (c);
+#endif
+}
+
+/* NOTE: this should not return '\n' as a space, because explicit '\n' may
+ * be placed inside strings.
+ */
+static int
+is_space (wchar_t c)
+{
+#ifdef ENABLE_NLS
+       return c == (wchar_t) btowc(' ');
+#else
+       return c == ' ';
+#endif
+}
+
+void
+str_list_print_wrap (const StrList* list, int line_length, int offset,
+                    int indent)
+{
+       const StrList*  walk;
+       const wchar_t*  str;
+       int             str_len;
+       int             cut_right;
+       int             cut_left;
+       int             line_left;
+       int             search_result;
+       int             line_break;
+
+       PED_ASSERT (line_length - indent > 10);
+
+       line_left = line_length - offset;
+
+       for (walk=list; walk; walk=walk->next) {
+               if (!walk->str)
+                       continue;
+               str = walk->str;
+               str_len = wchar_strlen (str);
+
+               while (line_left < str_len || wchar_strchr (str, '\n')) {
+                       line_break = 0;
+
+                       cut_left = MIN (line_left - 1, str_len - 1);
+
+                       /* we can have a space "over", but not a comma */
+                       if (cut_left < str_len
+                                       && is_space (str [cut_left + 1]))
+                               cut_left++;
+
+                       while (cut_left && !is_break_point (str [cut_left]))
+                               cut_left--;
+                       while (cut_left && is_space (str [cut_left]))
+                               cut_left--;
+
+               /* str [cut_left] is either the end of a word, or a
+                * Japanese character, or the start of a blank line.
+                */
+
+                       search_result = str_search (str, cut_left + 1, '\n');
+                       if (search_result != -1) {
+                               cut_left = search_result - 1;
+                               line_break = 1;
+                       }
+
+                       for (cut_right = cut_left + (line_break ? 2 : 1);
+                            cut_right < str_len && is_space (str [cut_right]);
+                            cut_right++);
+
+                       if (cut_left > 0)
+                               print_wchar (str, cut_left + 1);
+
+                       str += cut_right;
+                       str_len -= cut_right;
+                       line_left = line_length - indent;
+
+                       if (walk->next || *str)
+                               printf ("\n%*s", indent, "");
+                       else if (line_break)
+                               putchar ('\n');
+               }
+
+               print_wchar (str, 0);
+               line_left -= wchar_strlen (str);
+       }
+}
+
+static int
+_str_list_match_node (const StrList* list, const wchar_t* str)
+{
+       if (wchar_strcasecmp (list->str, str) == 0)
+               return 2;
+       if (wchar_strncasecmp (list->str, str, wchar_strlen (str)) == 0)
+               return 1;
+       return 0;
+}
+
+int
+str_list_match_node (const StrList* list, const char* str)
+{
+       wchar_t*        wc_str = gettext_to_wchar (str);        /* FIXME */
+       int             status;
+
+       status = _str_list_match_node (list, wc_str);
+       free (wc_str);
+
+       return status;
+}
+
+/* returns:  2 for full match
+            1 for partial match
+            0 for no match
+ */
+int
+str_list_match_any (const StrList* list, const char* str)
+{
+       const StrList*  walk;
+       int             best_status = 0;
+       wchar_t*        wc_str = gettext_to_wchar (str);
+
+       for (walk = list; walk; walk = walk->next) {
+               int     this_status = _str_list_match_node (walk, wc_str);
+               if (this_status > best_status)
+                       best_status = this_status;
+       }
+
+       free (wc_str);
+       return best_status;
+}
+
+StrList*
+str_list_match (const StrList* list, const char* str)
+{
+       const StrList*  walk;
+       const StrList*  partial_match = NULL;
+       int             ambiguous = 0;
+       wchar_t*        wc_str = gettext_to_wchar (str);
+
+       for (walk = list; walk; walk = walk->next) {
+               switch (_str_list_match_node (walk, wc_str)) {
+                       case 2:
+                               free (wc_str);
+                               return (StrList*) walk;
+
+                       case 1:
+                               if (partial_match)
+                                       ambiguous = 1;
+                               partial_match = walk;
+               }
+       }
+
+       free (wc_str);
+       return ambiguous ? NULL : (StrList*) partial_match;
+}
+
+int
+str_list_length (const StrList* list)
+{
+       int             length = 0;
+       const StrList*  walk;
+
+       for (walk = list; walk; walk = walk->next)
+               length++;
+
+       return length;
+}
diff --git a/parted/strlist.h b/parted/strlist.h
new file mode 100644 (file)
index 0000000..32ad8cc
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+    parted - a frontend to libparted
+    Copyright (C) 1999-2001, 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef STRLIST_H_INCLUDED
+#define STRLIST_H_INCLUDED
+
+#include <wchar.h>
+
+#ifndef ENABLE_NLS
+#      define L_(str) str
+#       ifdef wchar_t
+#               undef wchar_t
+#       endif
+#       define wchar_t char
+#endif
+
+typedef struct _StrList StrList;
+struct _StrList {
+       StrList*        next;
+       const wchar_t*  str;
+};
+
+extern char* language;
+extern char* gettext_charset;
+extern char* term_charset;
+
+extern StrList* str_list_create (const char* first, ...);
+extern StrList* str_list_create_unique (const char* first, ...);
+extern void str_list_destroy (StrList* list);
+extern void str_list_destroy_node (StrList* list);
+
+extern StrList* str_list_duplicate (const StrList* list);
+extern StrList* str_list_duplicate_node (const StrList* list);
+extern StrList* str_list_insert (StrList* list, const char* str);
+extern StrList* str_list_append (StrList* list, const char* str);
+extern StrList* str_list_append_unique (StrList* list, const char* str);
+extern StrList* str_list_join (StrList* a, StrList* b);
+extern char* str_list_convert (const StrList* list);
+extern char* str_list_convert_node (const StrList* list);
+
+extern void str_list_print (const StrList* list);
+extern void str_list_print_wrap (const StrList* list, int line_length,
+                                int offset, int indent);
+extern int str_list_match_any (const StrList* list, const char* str);
+extern int str_list_match_node (const StrList* list, const char* str);
+extern StrList* str_list_match (const StrList* list, const char* str);
+
+extern int str_list_length (const StrList* list);
+
+#endif /* STRLIST_H_INCLUDED */
diff --git a/parted/table.c b/parted/table.c
new file mode 100644 (file)
index 0000000..cb1d447
--- /dev/null
@@ -0,0 +1,245 @@
+/*
+ * TODO: - make right and centered alignment possible
+ */
+/*
+    parted - a frontend to libparted
+    Copyright (C) 2006-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <assert.h>
+#include <wchar.h>
+#include <string.h>
+
+#include "xalloc.h"
+#include "strlist.h"
+
+#ifdef ENABLE_NLS
+#      define L_(str) L##str
+#else
+#      define L_(str) str
+#       define wcslen strlen
+#       define wcswidth strnlen
+#       define wcscat strcat
+#       define wcsdup xstrdup
+#endif
+
+
+static const unsigned int       MAX_WIDTH = 512;
+static const wchar_t*           DELIMITER = L_("  ");
+static const wchar_t*           COLSUFFIX = L_("\n");
+
+typedef struct
+{
+        unsigned int    ncols;
+        unsigned int    nrows;
+        wchar_t***      rows;
+        int*            widths;
+} Table;
+
+
+Table* table_new(int ncols)
+{
+        assert ( ncols >= 0 );
+
+        Table *t = xmalloc (sizeof(*t));
+
+        t->ncols = ncols;
+        t->nrows = 0;
+        t->rows = (wchar_t***)NULL;
+        t->widths = NULL;
+
+        return t;
+}
+
+
+void table_destroy (Table* t)
+{
+        unsigned int r, c;
+
+        assert (t);
+        assert (t->ncols > 0);
+
+        for (r = 0; r < t->nrows; ++r)
+        {
+                for (c = 0; c < t->ncols; ++c)
+                        free (t->rows[r][c]);
+                free (t->rows[r]);
+        }
+
+        free (t->rows);
+        free (t->widths);
+        free (t);
+}
+
+
+static int max (int x, int y)
+{
+        return x > y ? x : y;
+}
+
+
+static void table_calc_column_widths (Table* t)
+{
+        unsigned int r, c;
+
+        assert(t);
+        assert(t->ncols > 0);
+
+        if (!t->widths)
+                t->widths = xmalloc (t->ncols * sizeof(t->widths[0]));
+
+        for (c = 0; c < t->ncols; ++c)
+                t->widths[c] = 0;
+
+        for (r = 0; r < t->nrows; ++r)
+                for (c = 0; c < t->ncols; ++c)
+                {
+                        t->widths[c] = max ( t->widths[c],
+                                             wcswidth(t->rows[r][c],
+                                                      MAX_WIDTH) );
+                }
+}
+
+
+/*
+ * add a row which is a string array of ncols elements.
+ * 'row' will get freed by table_destroy;  you must not free it
+ * yourself.
+ */
+void table_add_row (Table* t, wchar_t** row)
+{
+        assert(t);
+
+        /*unsigned int i;
+        fputs ("adding row: ", stdout);
+        for (i = 0; i < t->ncols; ++i)
+                printf("[%s]", row[i]);
+        putchar ('\n');*/
+
+        t->rows = xrealloc (t->rows, (t->nrows + 1) * sizeof(*(t->rows)));
+
+        t->rows[t->nrows] = row;
+
+        ++t->nrows;
+
+        table_calc_column_widths (t);
+}
+
+
+void table_add_row_from_strlist (Table* t, StrList* list)
+{
+        wchar_t** row = xmalloc (str_list_length(list) * sizeof(*row));
+        int i = 0;
+
+        while (list)
+        {
+                row[i] = wcsdup (list->str);
+                if (row[i] == NULL)
+                        xalloc_die ();
+
+
+                list = list->next;
+                ++i;
+        }
+
+        table_add_row (t, row);
+}
+
+
+/* render a row */
+static void table_render_row (Table* t, int rownum, int ncols, wchar_t** s)
+{
+        wchar_t** row = t->rows[rownum];
+        size_t len = 1, i;
+        size_t newsize;
+
+        assert(t);
+        assert(s != NULL);
+
+        for (i = 0; i < ncols; ++i)
+                len += t->widths[i] + wcslen(DELIMITER);
+
+        len += wcslen(COLSUFFIX);
+
+        newsize = (wcslen(*s) + len + 1) * sizeof(wchar_t);
+        *s = xrealloc (*s, newsize);
+
+        for (i = 0; i < ncols; ++i)
+        {
+                wcscat (*s, row[i]);
+                if (ncols <= i + 1)
+                        break;
+
+                int j;
+                int nspaces = max(t->widths[i] - wcswidth(row[i], MAX_WIDTH),
+                                  0);
+                wchar_t* pad = xmalloc ((nspaces + 1) * sizeof(*pad));
+
+                for (j = 0; j < nspaces; ++j)
+                       pad[j] = L' ';
+
+                pad[nspaces] = L_('\0');
+
+                wcscat (*s, pad);
+                if (i + 1 < ncols)
+                        wcscat (*s, DELIMITER);
+
+                free (pad);
+        }
+
+        /* Remove any trailing blanks.  */
+        wchar_t *p = *s;
+        size_t k = wcslen (p);
+        while (k && p[k-1] == L_(' '))
+                --k;
+        p[k] = L_('\0');
+
+
+        wcscat (*s, COLSUFFIX);
+}
+
+
+/*
+ * Render the rows.
+ * \p s must be a null-terminated string.
+ */
+static void table_render_rows (Table* t, wchar_t** s)
+{
+        unsigned int i;
+
+        assert (**s == L_('\0'));
+        for (i = 0; i < t->nrows; ++i)
+                table_render_row (t, i, t->ncols, s);
+}
+
+/*
+ * Render the table to a string.
+ * You are responsible for freeing the returned string.
+ */
+wchar_t* table_render(Table* t)
+{
+        wchar_t* s = xmalloc (sizeof(*s));
+
+        *s = L_('\0');
+        table_render_rows (t, &s);
+        return s;
+}
diff --git a/parted/table.h b/parted/table.h
new file mode 100644 (file)
index 0000000..fe8f755
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+    parted - a frontend to libparted
+    Copyright (C) 2006-2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#include <wchar.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <assert.h>
+
+#include "strlist.h"
+
+#ifdef ENABLE_NLS
+#       include <wchar.h>
+#else
+#       ifdef wchar_t
+#               undef wchar_t
+#       endif
+#       define wchar_t char
+#endif
+
+
+/* opaque data type */
+typedef void Table;
+
+Table* table_new(int ncols);
+void table_destroy (Table* t);
+
+/*
+ * you must not free neither 'row' nor 'list'
+ *      -- this will be done by table_destroy()
+ */
+void table_add_row (Table* t, wchar_t** row);
+void table_add_row_from_strlist (Table* t, StrList* list);
+
+wchar_t* table_render(Table* t);
diff --git a/parted/ui.c b/parted/ui.c
new file mode 100644 (file)
index 0000000..6d2fde1
--- /dev/null
@@ -0,0 +1,1615 @@
+/*
+    parted - a frontend to libparted
+    Copyright (C) 1999-2002, 2006-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+#include <config.h>
+
+#include <config.h>
+
+#include <parted/parted.h>
+#include <parted/debug.h>
+
+#include <ctype.h>
+#include <signal.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <setjmp.h>
+#include <assert.h>
+
+#include "command.h"
+#include "strlist.h"
+#include "ui.h"
+#include "error.h"
+
+#define N_(String) String
+#if ENABLE_NLS
+#  include <libintl.h>
+#  include <locale.h>
+#  define _(String) dgettext (PACKAGE, String)
+#else
+#  define _(String) (String)
+#endif /* ENABLE_NLS */
+
+#ifdef HAVE_LIBREADLINE
+
+#ifdef HAVE_TERMCAP_H
+#include <termcap.h>
+#else
+extern int tgetnum (char* key);
+#endif
+
+#include <readline/readline.h>
+#include <readline/history.h>
+
+#ifndef HAVE_RL_COMPLETION_MATCHES
+#define rl_completion_matches completion_matches
+#endif
+
+#ifndef rl_compentry_func_t
+#define rl_compentry_func_t void
+#endif
+
+#endif /* HAVE_LIBREADLINE */
+
+#ifndef SA_SIGINFO
+#  ifndef HAVE_SIGACTION
+
+struct sigaction {
+};
+
+static inline int
+sigaction (int signum, const struct* sigaction, struct* sigaction)
+{
+}
+
+#  endif /* HAVE_SIGACTON */
+
+struct siginfo_t {
+        int si_code;
+};
+
+#endif /* SA_SIGINFO */
+
+#ifndef SEGV_MAPERR
+#  define SEGV_MAPERR (INTMAX - 1)
+#endif
+
+#ifndef SEGV_ACCERR
+#  define SEGV_ACCERR (INTMAX - 2)
+#endif
+
+#ifndef FPE_INTDIV
+#  define FPE_INTDIV (INTMAX - 1)
+#endif
+
+#ifndef FPE_INTOVF
+#  define FPE_INTOVF (INTMAX - 2)
+#endif
+
+#ifndef FPE_FLTDIV
+#  define FPE_FLTDIV (INTMAX - 3)
+#endif
+
+#ifndef FPE_FLTOVF
+#  define FPE_FLTOVF (INTMAX - 4)
+#endif
+
+#ifndef FPE_FLTUND
+#  define FPE_FLTUND (INTMAX - 5)
+#endif
+
+#ifndef FPE_FLTRES
+#  define FPE_FLTRES (INTMAX - 6)
+#endif
+
+#ifndef FPE_FLTINV
+#  define FPE_FLTINV (INTMAX - 7)
+#endif
+
+#ifndef FPE_FLTSUB
+#  define FPE_FLTSUB (INTMAX - 8)
+#endif
+
+#ifndef ILL_ILLOPC
+#  define ILL_ILLOPC (INTMAX - 1)
+#endif
+
+#ifndef ILL_ILLOPN
+#  define ILL_ILLOPN (INTMAX - 2)
+#endif
+
+#ifndef ILL_ILLADR
+#  define ILL_ILLADR (INTMAX - 3)
+#endif
+
+#ifndef ILL_ILLTRP
+#  define ILL_ILLTRP (INTMAX - 4)
+#endif
+
+#ifndef ILL_PRVOPC
+#  define ILL_PRVOPC (INTMAX - 5)
+#endif
+
+#ifndef ILL_PRVREG
+#  define ILL_PRVREG (INTMAX - 6)
+#endif
+
+#ifndef ILL_COPROC
+#  define ILL_COPROC (INTMAX - 7)
+#endif
+
+#ifndef ILL_BADSTK
+#  define ILL_BADSTK (INTMAX - 8)
+#endif
+
+const char* prog_name = "GNU Parted " VERSION "\n";
+
+static const char* banner_msg = N_(
+"Welcome to GNU Parted! Type 'help' to view a list of commands.\n");
+
+static const char* usage_msg = N_(
+"Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]\n"
+"Apply COMMANDs with PARAMETERS to DEVICE.  If no COMMAND(s) are given, "
+"run in\ninteractive mode.\n");
+
+static const char* bug_msg = N_(
+"\n\nYou found a bug in GNU Parted! Here's what you have to do:\n\n"
+"Don't panic! The bug has most likely not affected any of your data.\n"
+"Help us to fix this bug by doing the following:\n\n"
+"Check whether the bug has already been fixed by checking\n"
+"the last version of GNU Parted that you can find at:\n\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n\n"
+"Please check this version prior to bug reporting.\n\n"
+"If this has not been fixed yet or if you don't know how to check,\n"
+"please visit the GNU Parted website:\n\n"
+"\thttp://www.gnu.org/software/parted\n\n"
+"for further information.\n\n"
+"Your report should contain the version of this release (%s)\n"
+"along with the error message below, the output of\n\n"
+"\tparted DEVICE unit co print unit s print\n\n"
+"and the following history of commands you entered.\n"
+"Also include any additional information about your setup you\n"
+"consider important.\n");
+
+#define MAX_WORDS    1024
+
+static StrList*     command_line;
+static Command**    commands;
+static StrList*     ex_opt_str [64];
+static StrList*     on_list;
+static StrList*     off_list;
+static StrList*     on_off_list;
+
+static StrList*     align_opt_list;
+static StrList*     align_min_list;
+static StrList*     align_opt_min_list;
+
+static StrList*     fs_type_list;
+static StrList*     disk_type_list;
+
+static struct {
+        const StrList*    possibilities;
+        const StrList*    cur_pos;
+        int               in_readline;
+        sigjmp_buf        jmp_state;
+} readline_state;
+
+static struct sigaction    sig_segv;
+static struct sigaction    sig_int;
+static struct sigaction    sig_fpe;
+static struct sigaction    sig_ill;
+
+volatile int got_ctrl_c = 0;    /* used in exception_handler */
+
+int
+screen_width ()
+{
+        int    width = 0;
+
+        if (opt_script_mode || pretend_input_tty)
+                return 32768;    /* no wrapping ;) */
+
+/* HACK: don't specify termcap separately - it'll annoy the users. */
+#ifdef HAVE_LIBREADLINE
+        width = tgetnum ((char *) "co");
+#endif
+
+        if (width <= 0)
+                width = 80;
+
+        return width;
+}
+
+void
+wipe_line ()
+{
+        if (opt_script_mode)
+                return;
+
+        /* yuck */
+        fputs ("\r                                     "
+               "                                     \r", stdout);
+}
+
+#ifdef HAVE_LIBREADLINE
+/* returns matching commands for text */
+static char*
+command_generator (char* text, int state)
+{
+        if (!state)
+                readline_state.cur_pos = readline_state.possibilities;
+
+        while (readline_state.cur_pos) {
+                const StrList*    cur = readline_state.cur_pos;
+                readline_state.cur_pos = cur->next;
+                if (str_list_match_node (cur, text))
+                        return str_list_convert_node (cur);
+        }
+
+        return NULL;
+}
+
+/* completion function for readline() */
+char**
+complete_function (char* text, int start, int end)
+{
+        return rl_completion_matches (text,
+                (rl_compentry_func_t*) command_generator);
+}
+
+static void
+_add_history_unique (const char* line)
+{
+        HIST_ENTRY*    last_entry = current_history ();
+        if (!strlen (line))
+                return;
+        if (!last_entry || strcmp (last_entry->line, line))
+                add_history ((char*) line);
+}
+
+/* Prints command history, to be used before aborting */
+static void
+_dump_history ()
+{
+        int             i = 0;
+        HIST_ENTRY**    all_entries = history_list ();
+
+        fputs (_("\nCommand History:\n"), stdout);
+        while (all_entries[i]) {
+                puts(all_entries[i++]->line);
+        }
+}
+
+#else
+
+/* Print nothing because Readline is absent. */
+static inline void
+_dump_history (void)
+{
+}
+
+#endif /* HAVE_LIBREADLINE */
+
+/* Resets the environment by jumping to the initial state
+ * saved during ui intitialisation.
+ * Pass 1 as the parameter if you want to quit parted,
+ * 0 if you just want to reset to the command prompt.
+ */
+static void
+reset_env (int quit)
+{
+        int    in_readline = readline_state.in_readline;
+
+        readline_state.in_readline = 0;
+
+        if (in_readline) {
+                putchar ('\n');
+                if (quit)
+                        exit (EXIT_SUCCESS);
+
+                siglongjmp (readline_state.jmp_state, 1);
+        }
+}
+
+/* Signal handler for SIGINT using 'sigaction'. */
+static void
+sa_sigint_handler (int signum, siginfo_t* info, void *ucontext)
+{
+        if (info)
+                sigaction (SIGINT, &sig_int, NULL);
+
+        got_ctrl_c = 1;
+        reset_env (0);
+}
+
+/* Signal handler for SIGSEGV using 'sigaction'. */
+static void
+sa_sigsegv_handler (int signum, siginfo_t* info, void* ucontext)
+{
+        printf (bug_msg, VERSION);
+        _dump_history ();
+
+        if (!info)
+                abort ();
+
+        sigaction (SIGSEGV, &sig_segv, NULL);
+
+        switch (info->si_code) {
+
+                case SEGV_MAPERR:
+                        fputs(_("\nError: SEGV_MAPERR (Address not mapped "
+                                "to object)\n"), stdout);
+                        PED_ASSERT(0); /* Force a backtrace */
+                        break;
+
+                case SEGV_ACCERR:
+                        fputs(_("\nError: SEGV_ACCERR (Invalid permissions "
+                                "for mapped object)\n"), stdout);
+                        break;
+
+                default:
+                        fputs(_("\nError: A general SIGSEGV signal was "
+                                "encountered.\n"), stdout);
+                        PED_ASSERT(0); /* Force a backtrace */
+                        break;
+        }
+
+        abort ();
+}
+
+/* Signal handler for SIGFPE using 'sigaction'. */
+static void
+sa_sigfpe_handler (int signum, siginfo_t* info, void* ucontext)
+{
+        printf (bug_msg, VERSION);
+        _dump_history ();
+
+        if (!info)
+                abort ();
+
+        sigaction (SIGFPE, &sig_fpe, NULL);
+
+        switch (info->si_code) {
+
+                case FPE_INTDIV:
+                        fputs(_("\nError: FPE_INTDIV (Integer: "
+                                "divide by zero)"), stdout);
+                        break;
+
+                case FPE_INTOVF:
+                        fputs(_("\nError: FPE_INTOVF (Integer: "
+                                "overflow)"), stdout);
+                        break;
+
+                case FPE_FLTDIV:
+                        fputs(_("\nError: FPE_FLTDIV (Float: "
+                                "divide by zero)"), stdout);
+                        break;
+
+                case FPE_FLTOVF:
+                        fputs(_("\nError: FPE_FLTOVF (Float: "
+                                "overflow)"), stdout);
+                        break;
+
+                case FPE_FLTUND:
+                        fputs(_("\nError: FPE_FLTUND (Float: "
+                                "underflow)"), stdout);
+                        break;
+
+                case FPE_FLTRES:
+                        fputs(_("\nError: FPE_FLTRES (Float: "
+                                "inexact result)"), stdout);
+                        break;
+
+                case FPE_FLTINV:
+                        fputs(_("\nError: FPE_FLTINV (Float: "
+                                "invalid operation)"), stdout);
+                        break;
+
+                case FPE_FLTSUB:
+                        fputs(_("\nError: FPE_FLTSUB (Float: "
+                                "subscript out of range)"), stdout);
+                        break;
+
+                default:
+                        fputs(_("\nError: A general SIGFPE signal "
+                                "was encountered."), stdout);
+                        break;
+
+        }
+
+        abort ();
+}
+
+/* Signal handler for SIGILL using 'sigaction'. */
+static void
+sa_sigill_handler (int signum, siginfo_t* info, void* ucontext)
+{
+        printf (bug_msg, VERSION);
+        _dump_history ();
+
+        if (!info)
+                abort();
+
+        sigaction (SIGILL, &sig_ill, NULL);
+
+        switch (info->si_code) {
+
+                case ILL_ILLOPC:
+                        fputs(_("\nError: ILL_ILLOPC "
+                                "(Illegal Opcode)"), stdout);
+                        break;
+
+                case ILL_ILLOPN:
+                        fputs(_("\nError: ILL_ILLOPN "
+                                "(Illegal Operand)"), stdout);
+                        break;
+
+                case ILL_ILLADR:
+                        fputs(_("\nError: ILL_ILLADR "
+                                "(Illegal addressing mode)"), stdout);
+                        break;
+
+                case ILL_ILLTRP:
+                        fputs(_("\nError: ILL_ILLTRP "
+                                "(Illegal Trap)"), stdout);
+                        break;
+
+                case ILL_PRVOPC:
+                        fputs(_("\nError: ILL_PRVOPC "
+                                "(Privileged Opcode)"), stdout);
+                        break;
+
+                case ILL_PRVREG:
+                        fputs(_("\nError: ILL_PRVREG "
+                                "(Privileged Register)"), stdout);
+                        break;
+
+                case ILL_COPROC:
+                        fputs(_("\nError: ILL_COPROC "
+                                "(Coprocessor Error)"), stdout);
+                        break;
+
+                case ILL_BADSTK:
+                        fputs(_("\nError: ILL_BADSTK "
+                                "(Internal Stack Error)"), stdout);
+                        break;
+
+                default:
+                        fputs(_("\nError: A general SIGILL "
+                                "signal was encountered."), stdout);
+                        break;
+        }
+
+        abort ();
+}
+
+#ifndef SA_SIGINFO
+
+static void
+mask_signal()
+{
+        sigset_t    curr;
+        sigset_t    prev;
+
+        sigfillset(&curr);
+        sigprocmask(SIG_SETMASK, &curr, &prev);
+}
+
+/* Signal handler for SIGINT using 'signal'. */
+static void
+s_sigint_handler (int signum)
+{
+        signal (SIGINT, &s_sigint_handler);
+        mask_signal ();
+        sa_sigint_handler (signum, NULL, NULL);
+}
+
+/* Signal handler for SIGILL using 'signal'. */
+static void
+s_sigill_handler (int signum)
+{
+        signal (SIGILL, &s_sigill_handler);
+        mask_signal ();
+        sa_sigill_handler (signum, NULL, NULL);
+}
+
+/* Signal handler for SIGSEGV using 'signal'. */
+static void
+s_sigsegv_handler (int signum)
+{
+        signal (SIGSEGV, &s_sigsegv_handler);
+        mask_signal ();
+        sa_sigsegv_handler (signum, NULL, NULL);
+}
+
+/* Signal handler for SIGFPE using 'signal'. */
+static void
+s_sigfpe_handler (int signum)
+{
+        signal (SIGFPE, &s_sigfpe_handler);
+        mask_signal ();
+        sa_sigfpe_handler (signum, NULL, NULL);
+}
+#endif
+
+static char*
+_readline (const char* prompt, const StrList* possibilities)
+{
+        char*    line;
+
+        readline_state.possibilities = possibilities;
+        readline_state.cur_pos = NULL;
+        readline_state.in_readline = 1;
+
+        if (sigsetjmp (readline_state.jmp_state,1))
+                return NULL;
+
+        wipe_line ();
+#ifdef HAVE_LIBREADLINE
+        if (!opt_script_mode) {
+                /* XXX: why isn't prompt const? */
+                line = readline ((char*) prompt);
+                if (line)
+                        _add_history_unique (line);
+        } else
+#endif
+        {
+                fputs (prompt, stdout);
+                fflush (stdout);
+                line = (char*) malloc (256);
+                if (fgets (line, 256, stdin) && strcmp (line, "") != 0) {
+#ifndef HAVE_LIBREADLINE
+                        /* Echo the input line, to be consistent with
+                           how readline-5.2 works.  */
+                        fputs (line, stdout);
+                        fflush (stdout);
+#endif
+                        /* kill trailing NL */
+                        if (strlen (line))
+                                line [strlen (line) - 1] = 0;
+                } else {
+                        free (line);
+                        line = NULL;
+                }
+        }
+
+        readline_state.in_readline = 0;
+        return line;
+}
+
+static PedExceptionOption
+option_get_next (PedExceptionOption options, PedExceptionOption current)
+{
+        PedExceptionOption    i;
+
+        if (current == 0)
+                i = PED_EXCEPTION_OPTION_FIRST;
+        else
+                i = current * 2;
+
+        for (; i <= options; i *= 2) {
+                if (options & i)
+                        return i;
+        }
+        return 0;
+}
+
+static void
+_print_exception_text (PedException* ex)
+{
+        StrList*    text;
+
+        wipe_line ();
+
+        if (ex->type == PED_EXCEPTION_BUG) {
+                printf (bug_msg, VERSION);
+                text = str_list_create ("\n", ex->message, "\n\n", NULL);
+        } else {
+                text = str_list_create (
+                           _(ped_exception_get_type_string (ex->type)),
+                           ": ", ex->message, "\n", NULL);
+        }
+
+        str_list_print_wrap (text, screen_width (), 0, 0);
+        str_list_destroy (text);
+}
+
+static PedExceptionOption
+exception_handler (PedException* ex)
+{
+        PedExceptionOption    opt;
+
+        _print_exception_text (ex);
+
+        /* only one choice?  Take it ;-) */
+        opt = option_get_next (ex->options, 0);
+        if (!option_get_next (ex->options, opt))
+                return opt;
+
+        /* script-mode: don't handle the exception */
+        if (opt_script_mode || (!isatty (0) && !pretend_input_tty))
+                return PED_EXCEPTION_UNHANDLED;
+
+        got_ctrl_c = 0;
+
+        do {
+                opt = command_line_get_ex_opt ("", ex->options);
+        } while (opt == PED_EXCEPTION_UNHANDLED
+                 && (isatty (0) || pretend_input_tty) && !got_ctrl_c);
+
+        if (got_ctrl_c) {
+                got_ctrl_c = 0;
+                opt = PED_EXCEPTION_UNHANDLED;
+        }
+
+        return opt;
+}
+
+void
+command_line_push_word (const char* word)
+{
+        command_line = str_list_append (command_line, word);
+}
+
+char*
+command_line_pop_word ()
+{
+        char*       result;
+        StrList*    next;
+
+        PED_ASSERT (command_line != NULL);
+
+        result = str_list_convert_node (command_line);
+        next = command_line->next;
+
+        str_list_destroy_node (command_line);
+        command_line = next;
+        return result;
+}
+
+void
+command_line_flush ()
+{
+        str_list_destroy (command_line);
+        command_line = NULL;
+}
+
+char*
+command_line_peek_word ()
+{
+        if (command_line)
+                return str_list_convert_node (command_line);
+        else
+                return NULL;
+}
+
+int
+command_line_get_word_count ()
+{
+        return str_list_length (command_line);
+}
+
+static int
+_str_is_spaces (const char* str)
+{
+        while (isspace (*str))
+                str++;
+
+        return *str == 0;
+}
+
+/* "multi_word mode" is the "normal" mode... many words can be typed,
+ * delimited by spaces, etc.
+ *         In single-word mode, only one word is parsed per line.
+ * Leading and trailing spaces are removed.  For example: " a b c "
+ * is a single word "a b c".  The motivation for this mode is partition
+ * names, etc.  In single-word mode, the empty string is a word.
+ * (but not in multi-word mode).
+ */
+void
+command_line_push_line (const char* line, int multi_word)
+{
+        int     quoted = 0;
+        char    quote_char = 0;
+        char    this_word [256];
+        int     i;
+
+        do {
+                while (*line == ' ')
+                        line++;
+
+                i = 0;
+                for (; *line; line++) {
+                        if (*line == ' ' && !quoted) {
+                                if (multi_word)
+                                        break;
+
+                        /* single word: check for trailing spaces + eol */
+                                if (_str_is_spaces (line))
+                                        break;
+                        }
+
+                        if (!quoted && strchr ("'\"", *line)) {
+                                quoted = 1;
+                                quote_char = *line;
+                                continue;
+                        }
+
+                        if (quoted && *line == quote_char) {
+                                quoted = 0;
+                                continue;
+                        }
+
+                        /* hack: escape characters */
+                        if (quoted && line[0] == '\\' && line[1])
+                                line++;
+
+                        this_word [i++] = *line;
+                }
+                if (i || !multi_word) {
+                        this_word [i] = 0;
+                        command_line_push_word (this_word);
+                }
+        } while (*line && multi_word);
+}
+
+static char*
+realloc_and_cat (char* str, const char* append)
+{
+        int      length = strlen (str) + strlen (append) + 1;
+        char*    new_str = realloc (str, length);
+
+        strcat (new_str, append);
+        return new_str;
+}
+
+static char*
+_construct_prompt (const char* head, const char* def,
+                   const StrList* possibilities)
+{
+        char*    prompt = strdup (head);
+
+        if (def && possibilities)
+                PED_ASSERT (str_list_match_any (possibilities, def));
+
+        if (possibilities && str_list_length (possibilities) < 8) {
+                const StrList*    walk;
+
+                if (strlen (prompt))
+                        prompt = realloc_and_cat (prompt, "  ");
+
+                for (walk = possibilities; walk; walk = walk->next) {
+                        if (walk != possibilities)
+                                prompt = realloc_and_cat (prompt, "/");
+
+                        if (def && str_list_match_node (walk, def) == 2) {
+                                prompt = realloc_and_cat (prompt, "[");
+                                prompt = realloc_and_cat (prompt, def);
+                                prompt = realloc_and_cat (prompt, "]");
+                        } else {
+                                char*    text = str_list_convert_node (walk);
+                                prompt = realloc_and_cat (prompt, text);
+                                free (text);
+                        }
+                }
+                prompt = realloc_and_cat (prompt, "? ");
+        } else if (def) {
+                if (strlen (prompt))
+                        prompt = realloc_and_cat (prompt, "  ");
+                prompt = realloc_and_cat (prompt, "[");
+                prompt = realloc_and_cat (prompt, def);
+                prompt = realloc_and_cat (prompt, "]? ");
+        } else {
+                if (strlen (prompt))
+                        prompt = realloc_and_cat (prompt, " ");
+        }
+
+        return prompt;
+}
+
+void
+command_line_prompt_words (const char* prompt, const char* def,
+                           const StrList* possibilities, int multi_word)
+{
+        char*    line;
+        char*    real_prompt;
+        char*    _def = (char*) def;
+        int      _def_needs_free = 0;
+
+        if (!def && str_list_length (possibilities) == 1) {
+                _def = str_list_convert_node (possibilities);
+                _def_needs_free = 1;
+        }
+
+        if (opt_script_mode) {
+                if (_def)
+                        command_line_push_line (_def, 0);
+                return;
+        }
+
+        do {
+                real_prompt = _construct_prompt (prompt, _def, possibilities);
+                line = _readline (real_prompt, possibilities);
+                free (real_prompt);
+                if (!line) {
+                        /* readline returns NULL to indicate EOF.
+                           Treat that like an interrupt.  */
+                        got_ctrl_c = 1;
+                        break;
+                }
+
+                if (!strlen (line)) {
+                        if (_def)
+                                command_line_push_line (_def, 0);
+                } else {
+                        command_line_push_line (line, multi_word);
+                }
+                free (line);
+        } while (!command_line_get_word_count () && !_def);
+
+        if (_def_needs_free)
+                free (_def);
+}
+
+/**
+ * Get a word from command line.
+ *
+ * \param possibilities a StrList of valid strings, NULL if all are valid.
+ * \param multi_word whether multiple words are allowed.
+ *
+ * \return The word(s), or NULL if empty.
+ */
+char*
+command_line_get_word (const char* prompt, const char* def,
+                       const StrList* possibilities, int multi_word)
+{
+        do {
+                if (command_line_get_word_count ()) {
+                        char*       result = command_line_pop_word ();
+                        StrList*    result_node;
+
+                        if (!possibilities)
+                                return result;
+
+                        result_node = str_list_match (possibilities, result);
+                        if (result_node == NULL)
+                                error (0, 0, _("invalid token: %s"), result);
+                        free (result);
+                        if (result_node)
+                                return str_list_convert_node (result_node);
+
+                        command_line_flush ();
+                        if (opt_script_mode)
+                                return NULL;
+                }
+
+                command_line_prompt_words (prompt, def, possibilities,
+                                           multi_word);
+        } while (command_line_get_word_count ());
+
+        return NULL;
+}
+
+int
+command_line_get_integer (const char* prompt, int* value)
+{
+        char     def_str [10];
+        char*    input;
+        int      valid;
+
+        snprintf (def_str, 10, "%d", *value);
+        input = command_line_get_word (prompt, *value ? def_str : NULL,
+                                       NULL, 1);
+        if (!input)
+                return 0;
+        valid = sscanf (input, "%d", value);
+        free (input);
+        return valid;
+}
+
+int
+command_line_get_sector (const char* prompt, PedDevice* dev, PedSector* value,
+                         PedGeometry** range)
+{
+        char*    def_str;
+        char*    input;
+        int      valid;
+
+        def_str = ped_unit_format (dev, *value);
+        input = command_line_get_word (prompt, *value ? def_str : NULL,
+                                       NULL, 1);
+
+        /* def_str might have rounded *value a little bit.  If the user picked
+         * the default, make sure the selected sector is identical to the
+         * default.
+         */
+        if (input && *value && !strcmp (input, def_str)) {
+                if (range) {
+                        *range = ped_geometry_new (dev, *value, 1);
+                        free (def_str);
+                        return *range != NULL;
+                }
+
+                free (def_str);
+                free (input);
+                return 1;
+        }
+
+        free (def_str);
+        if (!input) {
+                *value = 0;
+                if (range)
+                        *range = NULL;
+                return 0;
+        }
+
+        valid = ped_unit_parse (input, dev, value, range);
+
+        free (input);
+        return valid;
+}
+
+int
+command_line_get_state (const char* prompt, int* value)
+{
+        char*    def_word;
+        char*    input;
+
+        if (*value)
+                def_word = str_list_convert_node (on_list);
+        else
+                def_word = str_list_convert_node (off_list);
+        input = command_line_get_word (prompt, def_word, on_off_list, 1);
+        free (def_word);
+        if (!input)
+                return 0;
+        if (str_list_match_any (on_list, input))
+                *value = 1;
+        else
+                *value = 0;
+        free (input);
+        return 1;
+}
+
+int
+command_line_get_device (const char* prompt, PedDevice** value)
+{
+        char *def_dev_name = *value ? (*value)->path : NULL;
+        char *dev_name = command_line_get_word (prompt, def_dev_name, NULL, 1);
+        if (!dev_name)
+                return 0;
+
+        PedDevice *dev = ped_device_get (dev_name);
+        free (dev_name);
+        if (!dev)
+                return 0;
+
+        *value = dev;
+        return 1;
+}
+
+int
+command_line_get_disk (const char* prompt, PedDisk** value)
+{
+        PedDevice*    dev = *value ? (*value)->dev : NULL;
+
+        if (!command_line_get_device (prompt, &dev))
+                return 0;
+
+        assert (*value);
+        if (dev != (*value)->dev) {
+                PedDisk*    new_disk = ped_disk_new (dev);
+                if (!new_disk)
+                        return 0;
+                *value = new_disk;
+        }
+        return 1;
+}
+
+int
+command_line_get_partition (const char* prompt, PedDisk* disk,
+                            PedPartition** value)
+{
+        PedPartition*    part;
+
+        /* Flawed logic, doesn't seem to work?!
+        check = ped_disk_next_partition (disk, part);
+        part  = ped_disk_next_partition (disk, check);
+
+        if (part == NULL) {
+
+        *value = check;
+        printf (_("The (only) primary partition has "
+                  "been automatically selected\n"));
+        return 1;
+
+        } else {
+        */
+        int num = (*value) ? (*value)->num : 0;
+
+        if (!command_line_get_integer (prompt, &num)) {
+                ped_exception_throw (PED_EXCEPTION_ERROR,
+                                     PED_EXCEPTION_CANCEL,
+                                     _("Expecting a partition number."));
+                return 0;
+        }
+
+        part = ped_disk_get_partition (disk, num);
+
+        if (!part) {
+                ped_exception_throw (PED_EXCEPTION_ERROR,
+                                     PED_EXCEPTION_CANCEL,
+                                     _("Partition doesn't exist."));
+            return 0;
+        }
+
+        *value = part;
+        return 1;
+        //}
+}
+
+int
+command_line_get_fs_type (const char* prompt, const PedFileSystemType*(* value))
+{
+        char*                 fs_type_name;
+        PedFileSystemType*    fs_type;
+
+        fs_type_name = command_line_get_word (prompt,
+                                              *value ? (*value)->name : NULL,
+                                                     fs_type_list, 1);
+        if (!fs_type_name) {
+                ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                                     _("Expecting a file system type."));
+                return 0;
+        }
+
+        fs_type = ped_file_system_type_get (fs_type_name);
+        if (!fs_type) {
+                ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                                     _("Unknown file system type \"%s\"."),
+                                     fs_type_name);
+                free (fs_type_name);
+                return 0;
+        }
+
+        free (fs_type_name);
+        *value = fs_type;
+        return 1;
+}
+
+int
+command_line_get_disk_type (const char* prompt, const PedDiskType*(* value))
+{
+        char*    disk_type_name;
+
+        disk_type_name = command_line_get_word (prompt,
+                                                *value ? (*value)->name : NULL,
+                                                disk_type_list, 1);
+        if (!disk_type_name) {
+                ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                                     _("Expecting a disk label type."));
+                return 0;
+        }
+
+        *value = ped_disk_type_get (disk_type_name);
+        free (disk_type_name);
+        PED_ASSERT (*value != NULL);
+        return 1;
+}
+
+int
+command_line_get_part_flag (const char* prompt, const PedPartition* part,
+                            PedPartitionFlag* flag)
+{
+        StrList*            opts = NULL;
+        PedPartitionFlag    walk = 0;
+        char*               flag_name;
+
+        while ( (walk = ped_partition_flag_next (walk)) ) {
+                if (ped_partition_is_flag_available (part, walk)) {
+                        const char*        walk_name;
+
+                        walk_name = ped_partition_flag_get_name (walk);
+                        opts = str_list_append (opts, walk_name);
+                        opts = str_list_append_unique (opts, _(walk_name));
+                }
+        }
+
+        flag_name = command_line_get_word (prompt, NULL, opts, 1);
+        str_list_destroy (opts);
+
+        if (flag_name) {
+                *flag = ped_partition_flag_get_by_name (flag_name);
+                free (flag_name);
+                return 1;
+        } else
+                return 0;
+}
+
+static int
+_can_create_primary (const PedDisk* disk)
+{
+        int    i;
+
+        for (i = 1; i <= ped_disk_get_max_primary_partition_count (disk); i++) {
+                if (!ped_disk_get_partition (disk, i))
+                        return 1;
+        }
+
+        return 0;
+}
+
+static int
+_can_create_extended (const PedDisk* disk)
+{
+        if (!_can_create_primary (disk))
+                return 0;
+
+        if (!ped_disk_type_check_feature (disk->type, PED_DISK_TYPE_EXTENDED))
+                return 0;
+
+        if (ped_disk_extended_partition (disk))
+                return 0;
+
+        return 1;
+}
+
+static int
+_can_create_logical (const PedDisk* disk)
+{
+        if (!ped_disk_type_check_feature (disk->type, PED_DISK_TYPE_EXTENDED))
+                return 0;
+
+        return ped_disk_extended_partition (disk) != 0;
+}
+
+int
+command_line_get_part_type (const char* prompt, const PedDisk* disk,
+                                   PedPartitionType* type)
+{
+        StrList*    opts = NULL;
+        char*       type_name;
+
+        if (_can_create_primary (disk)) {
+                opts = str_list_append_unique (opts, "primary");
+                opts = str_list_append_unique (opts, _("primary"));
+        }
+        if (_can_create_extended (disk)) {
+                opts = str_list_append_unique (opts, "extended");
+                opts = str_list_append_unique (opts, _("extended"));
+        }
+        if (_can_create_logical (disk)) {
+                opts = str_list_append_unique (opts, "logical");
+                opts = str_list_append_unique (opts, _("logical"));
+        }
+        if (!opts) {
+                ped_exception_throw (
+                        PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                        _("Can't create any more partitions."));
+                return 0;
+        }
+
+        type_name = command_line_get_word (prompt, NULL, opts, 1);
+        str_list_destroy (opts);
+
+        if (!type_name) {
+                ped_exception_throw (
+                        PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                        _("Expecting a partition type."));
+                return 0;
+        }
+
+        if (!strcmp (type_name, "primary")
+                        || !strcmp (type_name, _("primary"))) {
+                *type = 0;
+        }
+        if (!strcmp (type_name, "extended")
+                        || !strcmp (type_name, _("extended"))) {
+                *type = PED_PARTITION_EXTENDED;
+        }
+        if (!strcmp (type_name, "logical")
+                        || !strcmp (type_name, _("logical"))) {
+                *type = PED_PARTITION_LOGICAL;
+        }
+
+        free (type_name);
+        return 1;
+}
+
+PedExceptionOption
+command_line_get_ex_opt (const char* prompt, PedExceptionOption options)
+{
+        StrList*              options_strlist = NULL;
+        PedExceptionOption    opt;
+        char*                 opt_name;
+
+        for (opt = option_get_next (options, 0); opt;
+             opt = option_get_next (options, opt)) {
+                options_strlist = str_list_append_unique (options_strlist,
+                                     _(ped_exception_get_option_string (opt)));
+                options_strlist = str_list_append_unique (options_strlist,
+                                     ped_exception_get_option_string (opt));
+        }
+
+        opt_name = command_line_get_word (prompt, NULL, options_strlist, 1);
+        if (!opt_name)
+                return PED_EXCEPTION_UNHANDLED;
+        str_list_destroy (options_strlist);
+
+        opt = PED_EXCEPTION_OPTION_FIRST;
+        while (1) {
+                if (strcmp (opt_name,
+                            ped_exception_get_option_string (opt)) == 0)
+                        break;
+                if (strcmp (opt_name,
+                            _(ped_exception_get_option_string (opt))) == 0)
+                        break;
+                opt = option_get_next (options, opt);
+        }
+        free (opt_name);
+        return opt;
+}
+
+int
+command_line_get_align_type (const char *prompt, enum AlignmentType *align_type)
+{
+  char*    def_word;
+  char*    input;
+
+  if (*align_type)
+    def_word = str_list_convert_node (align_opt_list);
+  else
+    def_word = str_list_convert_node (align_min_list);
+  input = command_line_get_word (prompt, def_word, align_opt_min_list, 1);
+  free (def_word);
+  if (!input)
+    return 0;
+  *align_type = (str_list_match_any (align_opt_list, input)
+            ? PA_OPTIMUM
+            : PA_MINIMUM);
+  free (input);
+  return 1;
+}
+
+int
+command_line_get_unit (const char* prompt, PedUnit* unit)
+{
+        StrList*       opts = NULL;
+        PedUnit        walk;
+        char*          unit_name;
+        const char*    default_unit_name;
+
+        for (walk = PED_UNIT_FIRST; walk <= PED_UNIT_LAST; walk++)
+                opts = str_list_append (opts, ped_unit_get_name (walk));
+
+        default_unit_name = ped_unit_get_name (ped_unit_get_default ());
+        unit_name = command_line_get_word (prompt, default_unit_name, opts, 1);
+        str_list_destroy (opts);
+
+        if (unit_name) {
+                *unit = ped_unit_get_by_name (unit_name);
+                free (unit_name);
+                return 1;
+        } else
+                return 0;
+}
+
+int
+command_line_is_integer ()
+{
+        char*    word;
+        int      is_integer;
+        int      scratch;
+
+        word = command_line_peek_word ();
+        if (!word)
+                return 0;
+
+        is_integer = sscanf (word, "%d", &scratch);
+        free (word);
+        return is_integer;
+}
+
+static int
+init_ex_opt_str ()
+{
+        int                   i;
+        PedExceptionOption    opt;
+
+        for (i = 0; (1 << i) <= PED_EXCEPTION_OPTION_LAST; i++) {
+                opt = (1 << i);
+                ex_opt_str [i]
+                        = str_list_create (
+                                ped_exception_get_option_string (opt),
+                                _(ped_exception_get_option_string (opt)),
+                                NULL);
+                if (!ex_opt_str [i])
+                        return 0;
+        }
+
+        ex_opt_str [i] = NULL;
+        return 1;
+}
+
+static void
+done_ex_opt_str ()
+{
+        int    i;
+
+        for (i=0; ex_opt_str [i]; i++)
+                str_list_destroy (ex_opt_str [i]);
+}
+
+static int
+init_state_str ()
+{
+        on_list = str_list_create_unique (_("on"), "on", NULL);
+        off_list = str_list_create_unique (_("off"), "off", NULL);
+        on_off_list = str_list_join (str_list_duplicate (on_list),
+                                     str_list_duplicate (off_list));
+        return 1;
+}
+
+static void
+done_state_str ()
+{
+        str_list_destroy (on_list);
+        str_list_destroy (off_list);
+        str_list_destroy (on_off_list);
+}
+
+static int
+init_alignment_type_str ()
+{
+        align_opt_list = str_list_create_unique (_("optimal"), "optimal", NULL);
+        align_min_list = str_list_create_unique (_("minimal"), "minimal", NULL);
+        align_opt_min_list = str_list_join (str_list_duplicate (align_opt_list),
+                                           str_list_duplicate (align_min_list));
+        return 1;
+}
+
+static void
+done_alignment_type_str ()
+{
+        str_list_destroy (align_opt_list);
+        str_list_destroy (align_min_list);
+        str_list_destroy (align_opt_min_list);
+}
+
+static int
+init_fs_type_str ()
+{
+        PedFileSystemType*    walk;
+        PedFileSystemAlias*   alias_walk;
+
+        fs_type_list = NULL;
+
+        for (walk = ped_file_system_type_get_next (NULL); walk;
+             walk = ped_file_system_type_get_next (walk))
+        {
+                fs_type_list = str_list_insert (fs_type_list, walk->name);
+                if (!fs_type_list)
+                        return 0;
+        }
+        for (alias_walk = ped_file_system_alias_get_next (NULL); alias_walk;
+             alias_walk = ped_file_system_alias_get_next (alias_walk))
+        {
+                fs_type_list = str_list_insert (fs_type_list,
+                                                alias_walk->alias);
+                if (!fs_type_list)
+                        return 0;
+        }
+
+        return 1;
+}
+
+static int
+init_disk_type_str ()
+{
+        PedDiskType*    walk;
+
+        disk_type_list = NULL;
+
+        for (walk = ped_disk_type_get_next (NULL); walk;
+             walk = ped_disk_type_get_next (walk))
+        {
+                disk_type_list = str_list_insert (disk_type_list, walk->name);
+                if (!disk_type_list)
+                        return 0;
+        }
+
+        return 1;
+}
+
+int
+init_readline (void)
+{
+#ifdef HAVE_LIBREADLINE
+  if (!opt_script_mode) {
+    rl_initialize ();
+    rl_attempted_completion_function = (CPPFunction*) complete_function;
+    readline_state.in_readline = 0;
+  }
+#endif
+  return 0;
+}
+
+int
+init_ui ()
+{
+        if (!init_ex_opt_str ()
+            || !init_state_str ()
+            || !init_alignment_type_str ()
+            || !init_fs_type_str ()
+            || !init_disk_type_str ())
+                return 0;
+        ped_exception_set_handler (exception_handler);
+
+#ifdef SA_SIGINFO
+        sigset_t curr;
+        sigfillset (&curr);
+
+        sig_segv.sa_sigaction = &sa_sigsegv_handler;
+        sig_int.sa_sigaction = &sa_sigint_handler;
+        sig_fpe.sa_sigaction = &sa_sigfpe_handler;
+        sig_ill.sa_sigaction = &sa_sigill_handler;
+
+        sig_segv.sa_mask =
+                sig_int.sa_mask =
+                        sig_fpe.sa_mask =
+                                sig_ill.sa_mask = curr;
+
+        sig_segv.sa_flags =
+                sig_int.sa_flags =
+                        sig_fpe.sa_flags =
+                                sig_ill.sa_flags = SA_SIGINFO;
+
+        sigaction (SIGSEGV, &sig_segv, NULL);
+        sigaction (SIGINT, &sig_int, NULL);
+        sigaction (SIGFPE, &sig_fpe, NULL);
+        sigaction (SIGILL, &sig_ill, NULL);
+#else
+        signal (SIGSEGV, s_sigsegv_handler);
+        signal (SIGINT, s_sigint_handler);
+        signal (SIGFPE, s_sigfpe_handler);
+        signal (SIGILL, s_sigill_handler);
+#endif /* SA_SIGINFO */
+
+        return 1;
+}
+
+void
+done_ui ()
+{
+        ped_exception_set_handler (NULL);
+        done_ex_opt_str ();
+        done_state_str ();
+        done_alignment_type_str ();
+        str_list_destroy (fs_type_list);
+        str_list_destroy (disk_type_list);
+}
+
+void
+help_msg ()
+{
+        fputs (_(usage_msg), stdout);
+
+        putchar ('\n');
+        fputs (_("OPTIONs:"), stdout);
+        putchar ('\n');
+        print_options_help ();
+
+        putchar ('\n');
+        fputs (_("COMMANDs:"), stdout);
+        putchar ('\n');
+        print_commands_help ();
+        printf (_("\nReport bugs to %s\n"), PACKAGE_BUGREPORT);
+        exit (EXIT_SUCCESS);
+}
+
+void
+print_using_dev (PedDevice* dev)
+{
+        printf (_("Using %s\n"), dev->path);
+}
+
+int
+interactive_mode (PedDevice** dev, Command* cmd_list[])
+{
+        StrList*    list;
+        StrList*    command_names = command_get_names (cmd_list);
+
+        commands = cmd_list;    /* FIXME yucky, nasty, evil hack */
+
+        fputs (prog_name, stdout);
+
+        print_using_dev (*dev);
+
+        list = str_list_create (_(banner_msg), NULL);
+        str_list_print_wrap (list, screen_width (), 0, 0);
+        str_list_destroy (list);
+
+        while (1) {
+                char*       word;
+                Command*    cmd;
+
+                while (!command_line_get_word_count ()) {
+                        if (feof (stdin)) {
+                                putchar ('\n');
+                                return 1;
+                        }
+                        command_line_prompt_words ("(parted)", NULL,
+                                                   command_names, 1);
+                }
+
+                word = command_line_pop_word ();
+                if (word) {
+                        cmd = command_get (commands, word);
+                        free (word);
+                        if (cmd) {
+                                if (!command_run (cmd, dev))
+                                        command_line_flush ();
+                        } else
+                                print_commands_help ();
+                }
+        }
+
+        return 1;
+}
+
+
+int
+non_interactive_mode (PedDevice** dev, Command* cmd_list[],
+                      int argc, char* argv[])
+{
+        int         i;
+        Command*    cmd;
+
+        commands = cmd_list;    /* FIXME yucky, nasty, evil hack */
+
+        for (i = 0; i < argc; i++)
+                command_line_push_line (argv [i], 1);
+
+        while (command_line_get_word_count ()) {
+                char*    word;
+
+                word = command_line_pop_word ();
+                if (!word)
+                        break;
+
+                cmd = command_get (commands, word);
+                free (word);
+                if (!cmd) {
+                        help_msg ();
+                        goto error;
+                }
+                if (!(cmd->non_interactive)) {
+                        fputs(_("This command does not make sense in "
+                                "non-interactive mode.\n"), stdout);
+                        exit(EXIT_FAILURE);
+                        goto error;
+                }
+
+                if (!command_run (cmd, dev))
+                        goto error;
+        }
+        return 1;
+
+error:
+        return 0;
+}
diff --git a/parted/ui.h b/parted/ui.h
new file mode 100644 (file)
index 0000000..44b521a
--- /dev/null
@@ -0,0 +1,91 @@
+/*
+    parted - a frontend to libparted
+    Copyright (C) 1999-2001, 2007-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef UI_H_INCLUDED
+#define UI_H_INCLUDED
+
+#include "strlist.h"
+
+enum AlignmentType
+  {
+    PA_MINIMUM = 1,
+    PA_OPTIMUM
+  };
+
+extern const char *prog_name;
+
+extern int init_ui ();
+extern int init_readline ();
+extern int non_interactive_mode (PedDevice** dev, Command* cmd_list[],
+                                int argc, char* argv[]);
+extern int interactive_mode (PedDevice** dev, Command* cmd_list[]);
+extern void done_ui ();
+
+extern int screen_width ();
+extern void wipe_line ();
+
+extern void command_line_push_word (const char* word);
+extern char* command_line_pop_word ();
+extern char* command_line_peek_word ();
+extern void command_line_flush ();
+extern int command_line_get_word_count ();
+extern void command_line_prompt_words (const char* prompt, const char* def,
+                                      const StrList* possibilities,
+                                      int multi_word);
+extern char* command_line_get_word (const char* prompt, const char* def,
+                                   const StrList* possibilities,
+                                   int multi_word);
+extern int command_line_get_integer (const char* prompt, int* value);
+extern int command_line_get_sector (const char* prompt, PedDevice* dev,
+                                   PedSector* value, PedGeometry** range);
+extern int command_line_get_state (const char* prompt, int* value);
+extern int command_line_get_device (const char* prompt, PedDevice** value);
+extern int command_line_get_disk (const char* prompt, PedDisk** value)
+  __attribute__((__nonnull__(2)));
+extern int command_line_get_partition (const char* prompt, PedDisk* disk,
+                                      PedPartition** value);
+extern int command_line_get_fs_type (const char* prompt,
+                                    const PedFileSystemType*(* value));
+extern int command_line_get_disk_type (const char* prompt,
+                                      const PedDiskType*(* value));
+extern int command_line_get_part_flag (const char* prompt,
+                                      const PedPartition* part,
+                                      PedPartitionFlag* flag);
+extern int command_line_get_part_type (const char* prompt, const PedDisk* disk,
+                                      PedPartitionType* type);
+extern PedExceptionOption command_line_get_ex_opt (const char* prompt,
+                                                  PedExceptionOption options);
+extern int command_line_get_unit (const char* prompt, PedUnit* unit);
+extern int command_line_get_align_type (const char *prompt,
+                                       enum AlignmentType *align_type);
+
+extern int command_line_is_integer ();
+extern int command_line_is_sector ();
+
+extern void help_msg ();
+
+extern void print_using_dev (PedDevice* dev);
+
+/* in parted.c */
+extern int     opt_script_mode;
+extern int     pretend_input_tty;
+
+extern void print_options_help ();
+extern void print_commands_help ();
+
+#endif /* UI_H_INCLUDED */
diff --git a/partprobe/Makefile.am b/partprobe/Makefile.am
new file mode 100644 (file)
index 0000000..f140991
--- /dev/null
@@ -0,0 +1,17 @@
+partedincludedir      = -I$(top_srcdir)/lib -I$(top_srcdir)/include
+
+AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
+sbin_PROGRAMS = partprobe
+
+partprobe_SOURCES = partprobe.c
+
+partprobe_LDADD = \
+  $(top_builddir)/libparted/libparted.la \
+  $(INTLLIBS) $(LIBS) \
+  $(PARTED_LIBS)
+
+partprobe_LDFLAGS = $(PARTEDLDFLAGS)
+
+INCLUDES       = $(partedincludedir) $(INTLINCS)
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/partprobe/Makefile.in b/partprobe/Makefile.in
new file mode 100644 (file)
index 0000000..5796bc7
--- /dev/null
@@ -0,0 +1,1316 @@
+# Makefile.in generated by automake 1.11a from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in 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.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+sbin_PROGRAMS = partprobe$(EXEEXT)
+subdir = partprobe
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+       $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argmatch.m4 \
+       $(top_srcdir)/m4/assert.m4 $(top_srcdir)/m4/btowc.m4 \
+       $(top_srcdir)/m4/calloc.m4 $(top_srcdir)/m4/canonicalize.m4 \
+       $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
+       $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/configmake.m4 \
+       $(top_srcdir)/m4/dirname.m4 \
+       $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+       $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/environ.m4 \
+       $(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
+       $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fclose.m4 \
+       $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/fcntl_h.m4 \
+       $(top_srcdir)/m4/fflush.m4 $(top_srcdir)/m4/fpending.m4 \
+       $(top_srcdir)/m4/fpurge.m4 $(top_srcdir)/m4/freading.m4 \
+       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/fsync.m4 \
+       $(top_srcdir)/m4/ftell.m4 $(top_srcdir)/m4/ftello.m4 \
+       $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
+       $(top_srcdir)/m4/langinfo_h.m4 $(top_srcdir)/m4/lcmessage.m4 \
+       $(top_srcdir)/m4/lib-ignore.m4 $(top_srcdir)/m4/lib-ld.m4 \
+       $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/localcharset.m4 \
+       $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \
+       $(top_srcdir)/m4/locale-tr.m4 $(top_srcdir)/m4/locale-zh.m4 \
+       $(top_srcdir)/m4/locale_h.m4 $(top_srcdir)/m4/localename.m4 \
+       $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/long-options.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
+       $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+       $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
+       $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+       $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbtowc.m4 \
+       $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+       $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/multiarch.m4 \
+       $(top_srcdir)/m4/nl_langinfo.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/nocrash.m4 $(top_srcdir)/m4/o-direct.m4 \
+       $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/priv-set.m4 \
+       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+       $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+       $(top_srcdir)/m4/read.m4 $(top_srcdir)/m4/readlink.m4 \
+       $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/regex.m4 \
+       $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+       $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/setlocale.m4 \
+       $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/ssize_t.m4 \
+       $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdarg.m4 \
+       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strdup.m4 \
+       $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/strerror_r.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+       $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtoll.m4 \
+       $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/symlink.m4 \
+       $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+       $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/thread.m4 \
+       $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/time_h.m4 \
+       $(top_srcdir)/m4/ungetc.m4 $(top_srcdir)/m4/unistd_h.m4 \
+       $(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkdir.m4 \
+       $(top_srcdir)/m4/usleep.m4 $(top_srcdir)/m4/version-etc.m4 \
+       $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \
+       $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
+       $(top_srcdir)/m4/wcrtomb.m4 $(top_srcdir)/m4/wctob.m4 \
+       $(top_srcdir)/m4/wctomb.m4 $(top_srcdir)/m4/wctype_h.m4 \
+       $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+       $(top_srcdir)/m4/xstrndup.m4 $(top_srcdir)/m4/xstrtol.m4 \
+       $(top_srcdir)/m4/yield.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__installdirs = "$(DESTDIR)$(sbindir)"
+PROGRAMS = $(sbin_PROGRAMS)
+am_partprobe_OBJECTS = partprobe.$(OBJEXT)
+partprobe_OBJECTS = $(am_partprobe_OBJECTS)
+am__DEPENDENCIES_1 =
+partprobe_DEPENDENCIES = $(top_builddir)/libparted/libparted.la \
+       $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+partprobe_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(partprobe_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/lib
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+       $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo "  CC      " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+SOURCES = $(partprobe_SOURCES)
+DIST_SOURCES = $(partprobe_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+pkglibexecdir = @pkglibexecdir@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+BUILDINFO = @BUILDINFO@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHECK_CFLAGS = @CHECK_CFLAGS@
+CHECK_LIBS = @CHECK_LIBS@
+CONFIG_INCLUDE = @CONFIG_INCLUDE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DYNAMIC_LOADING = @DYNAMIC_LOADING@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENABLE_DEVICE_MAPPER = @ENABLE_DEVICE_MAPPER@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FACCESSAT = @GNULIB_FACCESSAT@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCHMODAT = @GNULIB_FCHMODAT@
+GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FCNTL = @GNULIB_FCNTL@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FGETC = @GNULIB_FGETC@
+GNULIB_FGETS = @GNULIB_FGETS@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREAD = @GNULIB_FREAD@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSCANF = @GNULIB_FSCANF@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSTATAT = @GNULIB_FSTATAT@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FUTIMENS = @GNULIB_FUTIMENS@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETC = @GNULIB_GETC@
+GNULIB_GETCHAR = @GNULIB_GETCHAR@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETGROUPS = @GNULIB_GETGROUPS@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETS = @GNULIB_GETS@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
+GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_ISWBLANK = @GNULIB_ISWBLANK@
+GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@
+GNULIB_LCHMOD = @GNULIB_LCHMOD@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LINKAT = @GNULIB_LINKAT@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_LSTAT = @GNULIB_LSTAT@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MBTOWC = @GNULIB_MBTOWC@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDIRAT = @GNULIB_MKDIRAT@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKFIFO = @GNULIB_MKFIFO@
+GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@
+GNULIB_MKNOD = @GNULIB_MKNOD@
+GNULIB_MKNODAT = @GNULIB_MKNODAT@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@
+GNULIB_MKTIME = @GNULIB_MKTIME@
+GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@
+GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@
+GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_OPEN = @GNULIB_OPEN@
+GNULIB_OPENAT = @GNULIB_OPENAT@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE = @GNULIB_PIPE@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_PREAD = @GNULIB_PREAD@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READ = @GNULIB_READ@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_READLINKAT = @GNULIB_READLINKAT@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_REALPATH = @GNULIB_REALPATH@
+GNULIB_REMOVE = @GNULIB_REMOVE@
+GNULIB_RENAME = @GNULIB_RENAME@
+GNULIB_RENAMEAT = @GNULIB_RENAMEAT@
+GNULIB_RMDIR = @GNULIB_RMDIR@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SETLOCALE = @GNULIB_SETLOCALE@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STAT = @GNULIB_STAT@
+GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRERROR_R = @GNULIB_STRERROR_R@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRPTIME = @GNULIB_STRPTIME@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_SYMLINK = @GNULIB_SYMLINK@
+GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
+GNULIB_TIMEGM = @GNULIB_TIMEGM@
+GNULIB_TIME_R = @GNULIB_TIME_R@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
+GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
+GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNLINK = @GNULIB_UNLINK@
+GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_USLEEP = @GNULIB_USLEEP@
+GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VFSCANF = @GNULIB_VFSCANF@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSCANF = @GNULIB_VSCANF@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCPCPY = @GNULIB_WCPCPY@
+GNULIB_WCPNCPY = @GNULIB_WCPNCPY@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@
+GNULIB_WCSCAT = @GNULIB_WCSCAT@
+GNULIB_WCSCHR = @GNULIB_WCSCHR@
+GNULIB_WCSCMP = @GNULIB_WCSCMP@
+GNULIB_WCSCOLL = @GNULIB_WCSCOLL@
+GNULIB_WCSCPY = @GNULIB_WCSCPY@
+GNULIB_WCSCSPN = @GNULIB_WCSCSPN@
+GNULIB_WCSDUP = @GNULIB_WCSDUP@
+GNULIB_WCSLEN = @GNULIB_WCSLEN@
+GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@
+GNULIB_WCSNCAT = @GNULIB_WCSNCAT@
+GNULIB_WCSNCMP = @GNULIB_WCSNCMP@
+GNULIB_WCSNCPY = @GNULIB_WCSNCPY@
+GNULIB_WCSNLEN = @GNULIB_WCSNLEN@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSPBRK = @GNULIB_WCSPBRK@
+GNULIB_WCSRCHR = @GNULIB_WCSRCHR@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCSSPN = @GNULIB_WCSSPN@
+GNULIB_WCSSTR = @GNULIB_WCSSTR@
+GNULIB_WCSTOK = @GNULIB_WCSTOK@
+GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@
+GNULIB_WCSXFRM = @GNULIB_WCSXFRM@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCTOMB = @GNULIB_WCTOMB@
+GNULIB_WCTRANS = @GNULIB_WCTRANS@
+GNULIB_WCTYPE = @GNULIB_WCTYPE@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WMEMCHR = @GNULIB_WMEMCHR@
+GNULIB_WMEMCMP = @GNULIB_WMEMCMP@
+GNULIB_WMEMCPY = @GNULIB_WMEMCPY@
+GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@
+GNULIB_WMEMSET = @GNULIB_WMEMSET@
+GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
+HAVE_CHOWN = @HAVE_CHOWN@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@
+HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SETENV = @HAVE_DECL_SETENV@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@
+HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_DUPLOCALE = @HAVE_DUPLOCALE@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
+HAVE_FCHMODAT = @HAVE_FCHMODAT@
+HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
+HAVE_FCNTL = @HAVE_FCNTL@
+HAVE_FEATURES_H = @HAVE_FEATURES_H@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSTATAT = @HAVE_FSTATAT@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_FUTIMENS = @HAVE_FUTIMENS@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETGROUPS = @HAVE_GETGROUPS@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETLOGIN = @HAVE_GETLOGIN@
+HAVE_GETOPT_H = @HAVE_GETOPT_H@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
+HAVE_GRANTPT = @HAVE_GRANTPT@
+HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWBLANK = @HAVE_ISWBLANK@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
+HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
+HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
+HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
+HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
+HAVE_LCHMOD = @HAVE_LCHMOD@
+HAVE_LCHOWN = @HAVE_LCHOWN@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_LSTAT = @HAVE_LSTAT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSLEN = @HAVE_MBSLEN@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMCHR = @HAVE_MEMCHR@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDIRAT = @HAVE_MKDIRAT@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKFIFO = @HAVE_MKFIFO@
+HAVE_MKFIFOAT = @HAVE_MKFIFOAT@
+HAVE_MKNOD = @HAVE_MKNOD@
+HAVE_MKNODAT = @HAVE_MKNODAT@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
+HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
+HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
+HAVE_OPENAT = @HAVE_OPENAT@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PIPE = @HAVE_PIPE@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PWRITE = @HAVE_PWRITE@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_READLINKAT = @HAVE_READLINKAT@
+HAVE_REALPATH = @HAVE_REALPATH@
+HAVE_RENAMEAT = @HAVE_RENAMEAT@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRPTIME = @HAVE_STRPTIME@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYMLINK = @HAVE_SYMLINK@
+HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_TIMEGM = @HAVE_TIMEGM@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_USLEEP = @HAVE_USLEEP@
+HAVE_UTIMENSAT = @HAVE_UTIMENSAT@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCPCPY = @HAVE_WCPCPY@
+HAVE_WCPNCPY = @HAVE_WCPNCPY@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSCASECMP = @HAVE_WCSCASECMP@
+HAVE_WCSCAT = @HAVE_WCSCAT@
+HAVE_WCSCHR = @HAVE_WCSCHR@
+HAVE_WCSCMP = @HAVE_WCSCMP@
+HAVE_WCSCOLL = @HAVE_WCSCOLL@
+HAVE_WCSCPY = @HAVE_WCSCPY@
+HAVE_WCSCSPN = @HAVE_WCSCSPN@
+HAVE_WCSDUP = @HAVE_WCSDUP@
+HAVE_WCSLEN = @HAVE_WCSLEN@
+HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@
+HAVE_WCSNCAT = @HAVE_WCSNCAT@
+HAVE_WCSNCMP = @HAVE_WCSNCMP@
+HAVE_WCSNCPY = @HAVE_WCSNCPY@
+HAVE_WCSNLEN = @HAVE_WCSNLEN@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSPBRK = @HAVE_WCSPBRK@
+HAVE_WCSRCHR = @HAVE_WCSRCHR@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCSSPN = @HAVE_WCSSPN@
+HAVE_WCSSTR = @HAVE_WCSSTR@
+HAVE_WCSTOK = @HAVE_WCSTOK@
+HAVE_WCSWIDTH = @HAVE_WCSWIDTH@
+HAVE_WCSXFRM = @HAVE_WCSXFRM@
+HAVE_WCTRANS_T = @HAVE_WCTRANS_T@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WCTYPE_T = @HAVE_WCTYPE_T@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WMEMCHR = @HAVE_WMEMCHR@
+HAVE_WMEMCMP = @HAVE_WMEMCMP@
+HAVE_WMEMCPY = @HAVE_WMEMCPY@
+HAVE_WMEMMOVE = @HAVE_WMEMMOVE@
+HAVE_WMEMSET = @HAVE_WMEMSET@
+HAVE_XLOCALE_H = @HAVE_XLOCALE_H@
+HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
+IGNORE_UNUSED_LIBRARIES_CFLAGS = @IGNORE_UNUSED_LIBRARIES_CFLAGS@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@
+INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMULTITHREAD = @LIBMULTITHREAD@
+LIBOBJS = @LIBOBJS@
+LIBPTH = @LIBPTH@
+LIBPTH_PREFIX = @LIBPTH_PREFIX@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTHREAD = @LIBTHREAD@
+LIBTOOL = @LIBTOOL@
+LIB_BLKID = @LIB_BLKID@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBMULTITHREAD = @LTLIBMULTITHREAD@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBPTH = @LTLIBPTH@
+LTLIBTHREAD = @LTLIBTHREAD@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
+NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@
+NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
+NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@
+NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FCNTL_H = @NEXT_FCNTL_H@
+NEXT_GETOPT_H = @NEXT_GETOPT_H@
+NEXT_INTTYPES_H = @NEXT_INTTYPES_H@
+NEXT_LANGINFO_H = @NEXT_LANGINFO_H@
+NEXT_LOCALE_H = @NEXT_LOCALE_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@
+NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@
+NEXT_TIME_H = @NEXT_TIME_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PARTED_USABLE_TEST_DIR = @PARTED_USABLE_TEST_DIR@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CALLOC = @REPLACE_CALLOC@
+REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP = @REPLACE_DUP@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@
+REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FCNTL = @REPLACE_FCNTL@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FSTAT = @REPLACE_FSTAT@
+REPLACE_FSTATAT = @REPLACE_FSTATAT@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_FUTIMENS = @REPLACE_FUTIMENS@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETDELIM = @REPLACE_GETDELIM@
+REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@
+REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LINK = @REPLACE_LINK@
+REPLACE_LINKAT = @REPLACE_LINKAT@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_LSTAT = @REPLACE_LSTAT@
+REPLACE_MALLOC = @REPLACE_MALLOC@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MBTOWC = @REPLACE_MBTOWC@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKDIR = @REPLACE_MKDIR@
+REPLACE_MKFIFO = @REPLACE_MKFIFO@
+REPLACE_MKNOD = @REPLACE_MKNOD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_MKTIME = @REPLACE_MKTIME@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_OPEN = @REPLACE_OPEN@
+REPLACE_OPENAT = @REPLACE_OPENAT@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PREAD = @REPLACE_PREAD@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
+REPLACE_READ = @REPLACE_READ@
+REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_REALLOC = @REPLACE_REALLOC@
+REPLACE_REALPATH = @REPLACE_REALPATH@
+REPLACE_REMOVE = @REPLACE_REMOVE@
+REPLACE_RENAME = @REPLACE_RENAME@
+REPLACE_RENAMEAT = @REPLACE_RENAMEAT@
+REPLACE_RMDIR = @REPLACE_RMDIR@
+REPLACE_SETENV = @REPLACE_SETENV@
+REPLACE_SETLOCALE = @REPLACE_SETLOCALE@
+REPLACE_SLEEP = @REPLACE_SLEEP@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STAT = @REPLACE_STAT@
+REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRERROR_R = @REPLACE_STRERROR_R@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
+REPLACE_STRNDUP = @REPLACE_STRNDUP@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
+REPLACE_SYMLINK = @REPLACE_SYMLINK@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
+REPLACE_UNLINK = @REPLACE_UNLINK@
+REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
+REPLACE_UNSETENV = @REPLACE_UNSETENV@
+REPLACE_USLEEP = @REPLACE_USLEEP@
+REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCTOMB = @REPLACE_WCTOMB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SELINUX_LIBS = @SELINUX_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
+UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
+UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+YIELD_LIB = @YIELD_LIB@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+partedincludedir = -I$(top_srcdir)/lib -I$(top_srcdir)/include
+AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
+partprobe_SOURCES = partprobe.c
+partprobe_LDADD = \
+  $(top_builddir)/libparted/libparted.la \
+  $(INTLLIBS) $(LIBS) \
+  $(PARTED_LIBS)
+
+partprobe_LDFLAGS = $(PARTEDLDFLAGS)
+INCLUDES = $(partedincludedir) $(INTLINCS)
+MAINTAINERCLEANFILES = Makefile.in
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu partprobe/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu partprobe/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-sbinPROGRAMS: $(sbin_PROGRAMS)
+       @$(NORMAL_INSTALL)
+       test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)"
+       @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
+       for p in $$list; do echo "$$p $$p"; done | \
+       sed 's/$(EXEEXT)$$//' | \
+       while read p p1; do if test -f $$p || test -f $$p1; \
+         then echo "$$p"; echo "$$p"; else :; fi; \
+       done | \
+       sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+           -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+       sed 'N;N;N;s,\n, ,g' | \
+       $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+         { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+           if ($$2 == $$4) files[d] = files[d] " " $$1; \
+           else { print "f", $$3 "/" $$4, $$1; } } \
+         END { for (d in files) print "f", d, files[d] }' | \
+       while read type dir files; do \
+           if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+           test -z "$$files" || { \
+           echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(sbindir)$$dir'"; \
+           $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \
+           } \
+       ; done
+
+uninstall-sbinPROGRAMS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
+       files=`for p in $$list; do echo "$$p"; done | \
+         sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+             -e 's/$$/$(EXEEXT)/' `; \
+       test -n "$$list" || exit 0; \
+       echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(sbindir)" && rm -f $$files
+
+clean-sbinPROGRAMS:
+       @list='$(sbin_PROGRAMS)'; test -n "$$list" || exit 0; \
+       echo " rm -f" $$list; \
+       rm -f $$list || exit $$?; \
+       test -n "$(EXEEXT)" || exit 0; \
+       list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+       echo " rm -f" $$list; \
+       rm -f $$list
+partprobe$(EXEEXT): $(partprobe_OBJECTS) $(partprobe_DEPENDENCIES) $(EXTRA_partprobe_DEPENDENCIES) 
+       @rm -f partprobe$(EXEEXT)
+       $(AM_V_CCLD)$(partprobe_LINK) $(partprobe_OBJECTS) $(partprobe_LDADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/partprobe.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS)
+installdirs:
+       for dir in "$(DESTDIR)$(sbindir)"; do \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+       done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-sbinPROGRAMS \
+       mostlyclean-am
+
+distclean: distclean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-sbinPROGRAMS
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-sbinPROGRAMS
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+       clean-libtool clean-sbinPROGRAMS cscopelist ctags distclean \
+       distclean-compile distclean-generic distclean-libtool \
+       distclean-tags distdir dvi dvi-am html html-am info info-am \
+       install install-am install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-ps install-ps-am \
+       install-sbinPROGRAMS install-strip installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       tags uninstall uninstall-am uninstall-sbinPROGRAMS
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/partprobe/partprobe.c b/partprobe/partprobe.c
new file mode 100644 (file)
index 0000000..405f6ab
--- /dev/null
@@ -0,0 +1,215 @@
+/*
+    partprobe - informs the OS kernel of partition layout
+    Copyright (C) 2001-2002, 2007-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+*/
+
+/* it's best to compile this with:
+ *
+ *      CFLAGS=-Os ./configure --disable-nls --disable-shared --disable-debug
+ *                 --enable-discover-only
+ *
+ * And strip(1) afterwards!
+ */
+
+#include <config.h>
+
+#include <parted/parted.h>
+
+#include <stdio.h>
+#include <string.h>
+#include <getopt.h>
+
+#include "closeout.h"
+#include "configmake.h"
+#include "progname.h"
+#include "version-etc.h"
+
+#include <locale.h>
+#include "gettext.h"
+#if ! ENABLE_NLS
+# undef textdomain
+# define textdomain(Domainname) /* empty */
+# undef bindtextdomain
+# define bindtextdomain(Domainname, Dirname) /* empty */
+#endif
+
+#undef _
+#define _(msgid) gettext (msgid)
+
+#define AUTHORS \
+  "<http://git.debian.org/?p=parted/parted.git;a=blob_plain;f=AUTHORS>"
+
+/* The official name of this program (e.g., no `g' prefix).  */
+#define PROGRAM_NAME "partprobe"
+
+static struct option const long_options[] =
+  {
+    /* Note: the --no-update option is deprecated, and deliberately
+     * not documented.  FIXME: remove --no-update in 2009. */
+    {"no-update", no_argument, NULL, 'd'},
+    {"dry-run", no_argument, NULL, 'd'},
+    {"summary", no_argument, NULL, 's'},
+    {"help", no_argument, NULL, 'h'},
+    {"version", no_argument, NULL, 'v'},
+    {NULL, 0, NULL, 0}
+  };
+
+/* initialized to 0 according to the language lawyers */
+static int     opt_no_inform;
+static int     opt_summary;
+
+static void
+summary (PedDisk* disk)
+{
+       PedPartition*   walk;
+
+       printf ("%s: %s partitions", disk->dev->path, disk->type->name);
+       for (walk = disk->part_list; walk; walk = walk->next) {
+               if (!ped_partition_is_active (walk))
+                       continue;
+
+               printf (" %d", walk->num);
+               if (walk->type & PED_PARTITION_EXTENDED) {
+                       PedPartition*   log_walk;
+                       int             is_first = 1;
+
+                       printf (" <");
+                       for (log_walk = walk->part_list; log_walk;
+                            log_walk = log_walk->next) {
+                               if (!ped_partition_is_active (log_walk))
+                                       continue;
+                               if (!is_first)
+                                       printf (" ");
+                               printf ("%d", log_walk->num);
+                               is_first = 0;
+                       }
+                       printf (">");
+               }
+       }
+       printf ("\n");
+}
+
+static int
+process_dev (PedDevice* dev)
+{
+       PedDiskType*    disk_type;
+       PedDisk*        disk;
+
+       disk_type = ped_disk_probe (dev);
+       if (!disk_type || !strcmp (disk_type->name, "loop"))
+               return 1;
+
+       disk = ped_disk_new (dev);
+       if (!disk)
+               goto error;
+       if (!opt_no_inform) {
+               if (!ped_disk_commit_to_os (disk))
+                       goto error_destroy_disk;
+       }
+       if (opt_summary)
+               summary (disk);
+       ped_disk_destroy (disk);
+       return 1;
+
+error_destroy_disk:
+       ped_disk_destroy (disk);
+error:
+       return 0;
+}
+
+static void
+usage (int status)
+{
+  if (status != EXIT_SUCCESS)
+    fprintf (stderr, _("Try `%s --help' for more information.\n"),
+            program_name);
+  else
+    {
+      printf (_("Usage: %s [OPTION] [DEVICE]...\n"), PROGRAM_NAME);
+      fputs (_("\
+Inform the operating system about partition table changes.\n\
+\n\
+  -d, --dry-run    do not actually inform the operating system\n\
+  -s, --summary    print a summary of contents\n\
+  -h, --help       display this help and exit\n\
+  -v, --version    output version information and exit\n\
+"), stdout);
+      fputs (_("\
+\n\
+When no DEVICE is given, probe all partitions.\n\
+"), stdout);
+      printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+    }
+  exit (status);
+}
+
+int
+main (int argc, char* argv[])
+{
+       int             status = 0;
+
+       set_program_name (argv[0]);
+
+       setlocale (LC_ALL, "");
+       bindtextdomain (PACKAGE, LOCALEDIR);
+       textdomain (PACKAGE);
+
+       atexit (close_stdout);
+
+       int c;
+       while ((c = getopt_long (argc, argv, "dhsv", long_options, NULL)) != -1)
+               switch (c) {
+                       case 'd':
+                               opt_no_inform = 1;
+                               break;
+
+                       case 's':
+                               opt_summary = 1;
+                               break;
+
+                       case 'h':
+                               usage (EXIT_SUCCESS);
+                               break;
+
+                       case 'v':
+                               version_etc (stdout, PROGRAM_NAME, PACKAGE_NAME,
+                                            VERSION, AUTHORS, (char *) NULL);
+                               exit (EXIT_SUCCESS);
+                               break;
+
+                       default:
+                               usage (EXIT_FAILURE);
+                }
+
+        int n_dev = argc - optind;
+       if (n_dev != 0) {
+               int i;
+               for (i = optind; i < argc; i++) {
+                       PedDevice *dev = ped_device_get (argv[i]);
+                       if (dev == NULL || process_dev (dev) == 0)
+                               status = 1;
+               }
+       } else {
+               ped_device_probe_all ();
+               PedDevice *dev;
+               for (dev = ped_device_get_next (NULL); dev;
+                    dev = ped_device_get_next (dev))
+                       if (process_dev (dev) == 0)
+                               status = 1;
+       }
+
+       return status;
+}
diff --git a/po/ChangeLog.0 b/po/ChangeLog.0
new file mode 100644 (file)
index 0000000..df19c9f
--- /dev/null
@@ -0,0 +1,52 @@
+2004-03-11  gettextize  <bug-gnu-gettext@gnu.org>
+
+       * Makefile.in.in: Upgrade to gettext-0.14.1.
+       * boldquot.sed: New file, from gettext-0.14.1.
+       * en@boldquot.header: New file, from gettext-0.14.1.
+       * en@quot.header: New file, from gettext-0.14.1.
+       * insert-header.sin: New file, from gettext-0.14.1.
+       * quot.sed: New file, from gettext-0.14.1.
+       * remove-potcdate.sin: New file, from gettext-0.14.1.
+       * Rules-quot: New file, from gettext-0.14.1.
+
+2003-06-13  gettextize  <bug-gnu-utils@gnu.org>
+
+       * Makefile.in.in: Upgrade to gettext-0.10.40.
+
+2002-11-15  gettextize  <bug-gnu-utils@gnu.org>
+
+       * Makefile.in.in: Upgrade to gettext-0.10.40.
+
+2001-12-31  gettextize  <bug-gnu-utils@gnu.org>
+
+       * Makefile.in.in: Upgrade to gettext-0.10.40.
+
+2001-12-27  gettextize  <bug-gnu-utils@gnu.org>
+
+       * Makefile.in.in: Upgrade to gettext-0.10.40.
+
+2001-12-16  gettextize  <bug-gnu-utils@gnu.org>
+
+       * Makefile.in.in: Upgrade to gettext-0.10.40.
+
+2001-12-12  gettextize  <bug-gnu-utils@gnu.org>
+
+       * Makefile.in.in: Upgrade to gettext-0.10.40.
+
+2001-11-09  gettextize  <bug-gnu-utils@gnu.org>
+
+       * Makefile.in.in: Upgrade to gettext-0.10.40.
+
+2001-07-14  gettextize  <bug-gnu-utils@gnu.org>
+
+       * Makefile.in.in: Upgrade to gettext-0.10.38.
+       * cat-id-tbl.c: Remove file.
+       * stamp-cat-id: Remove file.
+
+-----------------------------------------------------------------------------
+
+This file is part of GNU Parted
+Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation Inc.
+
+This file may be modified and/or distributed without restriction.  This is
+not an invitation to misrepresent the history of GNU Parted.
diff --git a/po/LINGUAS b/po/LINGUAS
new file mode 100644 (file)
index 0000000..b6325a0
--- /dev/null
@@ -0,0 +1,26 @@
+ca
+cs
+da
+de
+es
+fr
+gl
+id
+it
+ja
+nl
+nn
+pl
+pt
+pt_BR
+ro
+ru
+rw
+sk
+sl
+sv
+tr
+uk
+vi
+zh_CN
+zh_TW
diff --git a/po/Makefile.in.in b/po/Makefile.in.in
new file mode 100644 (file)
index 0000000..89a55c7
--- /dev/null
@@ -0,0 +1,446 @@
+# -*- buffer-read-only: t -*- vi: set ro:
+# DO NOT EDIT! GENERATED AUTOMATICALLY!
+# Makefile for PO directory in any package using GNU gettext.
+# Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
+#
+# This file can be copied and used freely without restrictions.  It can
+# be used in projects which are not available under the GNU General Public
+# License but which still want to provide support for the GNU gettext
+# functionality.
+# Please note that the actual code of GNU gettext is covered by the GNU
+# General Public License and is *not* in the public domain.
+#
+# Origin: gettext-0.18
+GETTEXT_MACRO_VERSION = 0.18
+
+PACKAGE = @PACKAGE@
+VERSION = @VERSION@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+
+SHELL = /bin/sh
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+datarootdir = @datarootdir@
+datadir = @datadir@
+localedir = @localedir@
+gettextsrcdir = $(datadir)/gettext/po
+
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+
+# We use $(mkdir_p).
+# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as
+# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions,
+# @install_sh@ does not start with $(SHELL), so we add it.
+# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined
+# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake
+# versions, $(mkinstalldirs) and $(install_sh) are unused.
+mkinstalldirs = $(SHELL) @install_sh@ -d
+install_sh = $(SHELL) @install_sh@
+MKDIR_P = @MKDIR_P@
+mkdir_p = @mkdir_p@
+
+GMSGFMT_ = @GMSGFMT@
+GMSGFMT_no = @GMSGFMT@
+GMSGFMT_yes = @GMSGFMT_015@
+GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT))
+MSGFMT_ = @MSGFMT@
+MSGFMT_no = @MSGFMT@
+MSGFMT_yes = @MSGFMT_015@
+MSGFMT = $(MSGFMT_$(USE_MSGCTXT))
+XGETTEXT_ = @XGETTEXT@
+XGETTEXT_no = @XGETTEXT@
+XGETTEXT_yes = @XGETTEXT_015@
+XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT))
+MSGMERGE = msgmerge
+MSGMERGE_UPDATE = @MSGMERGE@ --update
+MSGINIT = msginit
+MSGCONV = msgconv
+MSGFILTER = msgfilter
+
+POFILES = @POFILES@
+GMOFILES = @GMOFILES@
+UPDATEPOFILES = @UPDATEPOFILES@
+DUMMYPOFILES = @DUMMYPOFILES@
+DISTFILES.common = Makefile.in.in remove-potcdate.sin \
+$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3)
+DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \
+$(POFILES) $(GMOFILES) \
+$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3)
+
+POTFILES = \
+
+CATALOGS = @CATALOGS@
+
+# Makevars gets inserted here. (Don't remove this line!)
+
+.SUFFIXES:
+.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update
+
+.po.mo:
+       @echo "$(MSGFMT) -c -o $@ $<"; \
+       $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@
+
+.po.gmo:
+       @lang=`echo $* | sed -e 's,.*/,,'`; \
+       test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+       echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \
+       cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
+
+.sin.sed:
+       sed -e '/^#/d' $< > t-$@
+       mv t-$@ $@
+
+
+all: check-macro-version all-@USE_NLS@
+
+all-yes: stamp-po
+all-no:
+
+# Ensure that the gettext macros and this Makefile.in.in are in sync.
+check-macro-version:
+       @test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \
+         || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \
+              exit 1; \
+            }
+
+# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no
+# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because
+# we don't want to bother translators with empty POT files). We assume that
+# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty.
+# In this case, stamp-po is a nop (i.e. a phony target).
+
+# stamp-po is a timestamp denoting the last time at which the CATALOGS have
+# been loosely updated. Its purpose is that when a developer or translator
+# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS,
+# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent
+# invocations of "make" will do nothing. This timestamp would not be necessary
+# if updating the $(CATALOGS) would always touch them; however, the rule for
+# $(POFILES) has been designed to not touch files that don't need to be
+# changed.
+stamp-po: $(srcdir)/$(DOMAIN).pot
+       test ! -f $(srcdir)/$(DOMAIN).pot || \
+         test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES)
+       @test ! -f $(srcdir)/$(DOMAIN).pot || { \
+         echo "touch stamp-po" && \
+         echo timestamp > stamp-poT && \
+         mv stamp-poT stamp-po; \
+       }
+
+# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
+# otherwise packages like GCC can not be built if only parts of the source
+# have been downloaded.
+
+# This target rebuilds $(DOMAIN).pot; it is an expensive operation.
+# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed.
+$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
+       if LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null | grep -v 'libtool:' >/dev/null; then \
+         package_gnu='GNU '; \
+       else \
+         package_gnu=''; \
+       fi; \
+       if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \
+         msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \
+       else \
+         msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \
+       fi; \
+       case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
+         '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \
+           $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
+             --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
+             --files-from=$(srcdir)/POTFILES.in \
+             --copyright-holder='$(COPYRIGHT_HOLDER)' \
+             --msgid-bugs-address="$$msgid_bugs_address" \
+           ;; \
+         *) \
+           $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
+             --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
+             --files-from=$(srcdir)/POTFILES.in \
+             --copyright-holder='$(COPYRIGHT_HOLDER)' \
+             --package-name="$${package_gnu}@PACKAGE@" \
+             --package-version='@VERSION@' \
+             --msgid-bugs-address="$$msgid_bugs_address" \
+           ;; \
+       esac
+       test ! -f $(DOMAIN).po || { \
+         if test -f $(srcdir)/$(DOMAIN).pot; then \
+           sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
+           sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \
+           if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \
+             rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \
+           else \
+             rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \
+             mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
+           fi; \
+         else \
+           mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
+         fi; \
+       }
+
+# This rule has no dependencies: we don't need to update $(DOMAIN).pot at
+# every "make" invocation, only create it when it is missing.
+# Only "make $(DOMAIN).pot-update" or "make dist" will force an update.
+$(srcdir)/$(DOMAIN).pot:
+       $(MAKE) $(DOMAIN).pot-update
+
+# This target rebuilds a PO file if $(DOMAIN).pot has changed.
+# Note that a PO file is not touched if it doesn't need to be changed.
+$(POFILES): $(srcdir)/$(DOMAIN).pot
+       @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
+       if test -f "$(srcdir)/$${lang}.po"; then \
+         test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+         echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \
+         cd $(srcdir) \
+           && { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
+                  '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
+                    $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \
+                  *) \
+                    $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot;; \
+                esac; \
+              }; \
+       else \
+         $(MAKE) $${lang}.po-create; \
+       fi
+
+
+install: install-exec install-data
+install-exec:
+install-data: install-data-@USE_NLS@
+       if test "$(PACKAGE)" = "gettext-tools"; then \
+         $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
+         for file in $(DISTFILES.common) Makevars.template; do \
+           $(INSTALL_DATA) $(srcdir)/$$file \
+                           $(DESTDIR)$(gettextsrcdir)/$$file; \
+         done; \
+         for file in Makevars; do \
+           rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
+         done; \
+       else \
+         : ; \
+       fi
+install-data-no: all
+install-data-yes: all
+       @catalogs='$(CATALOGS)'; \
+       for cat in $$catalogs; do \
+         cat=`basename $$cat`; \
+         lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+         dir=$(localedir)/$$lang/LC_MESSAGES; \
+         $(mkdir_p) $(DESTDIR)$$dir; \
+         if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \
+         $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
+         echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
+         for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
+           if test -n "$$lc"; then \
+             if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
+               link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
+               mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+               mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+               (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
+                for file in *; do \
+                  if test -f $$file; then \
+                    ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
+                  fi; \
+                done); \
+               rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+             else \
+               if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
+                 :; \
+               else \
+                 rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
+                 mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+               fi; \
+             fi; \
+             rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+             ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
+             ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
+             cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+             echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \
+           fi; \
+         done; \
+       done
+
+install-strip: install
+
+installdirs: installdirs-exec installdirs-data
+installdirs-exec:
+installdirs-data: installdirs-data-@USE_NLS@
+       if test "$(PACKAGE)" = "gettext-tools"; then \
+         $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
+       else \
+         : ; \
+       fi
+installdirs-data-no:
+installdirs-data-yes:
+       @catalogs='$(CATALOGS)'; \
+       for cat in $$catalogs; do \
+         cat=`basename $$cat`; \
+         lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+         dir=$(localedir)/$$lang/LC_MESSAGES; \
+         $(mkdir_p) $(DESTDIR)$$dir; \
+         for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
+           if test -n "$$lc"; then \
+             if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
+               link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
+               mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+               mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+               (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
+                for file in *; do \
+                  if test -f $$file; then \
+                    ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
+                  fi; \
+                done); \
+               rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+             else \
+               if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
+                 :; \
+               else \
+                 rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
+                 mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+               fi; \
+             fi; \
+           fi; \
+         done; \
+       done
+
+# Define this as empty until I found a useful application.
+installcheck:
+
+uninstall: uninstall-exec uninstall-data
+uninstall-exec:
+uninstall-data: uninstall-data-@USE_NLS@
+       if test "$(PACKAGE)" = "gettext-tools"; then \
+         for file in $(DISTFILES.common) Makevars.template; do \
+           rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
+         done; \
+       else \
+         : ; \
+       fi
+uninstall-data-no:
+uninstall-data-yes:
+       catalogs='$(CATALOGS)'; \
+       for cat in $$catalogs; do \
+         cat=`basename $$cat`; \
+         lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+         for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \
+           rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+         done; \
+       done
+
+check: all
+
+info dvi ps pdf html tags TAGS ctags CTAGS ID:
+
+mostlyclean:
+       rm -f remove-potcdate.sed
+       rm -f stamp-poT
+       rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
+       rm -fr *.o
+
+clean: mostlyclean
+
+distclean: clean
+       rm -f Makefile Makefile.in POTFILES *.mo
+
+maintainer-clean: distclean
+       @echo "This command is intended for maintainers to use;"
+       @echo "it deletes files that may require special tools to rebuild."
+       rm -f stamp-po $(GMOFILES)
+
+distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
+dist distdir:
+       $(MAKE) update-po
+       @$(MAKE) dist2
+# This is a separate target because 'update-po' must be executed before.
+dist2: stamp-po $(DISTFILES)
+       dists="$(DISTFILES)"; \
+       if test "$(PACKAGE)" = "gettext-tools"; then \
+         dists="$$dists Makevars.template"; \
+       fi; \
+       if test -f $(srcdir)/$(DOMAIN).pot; then \
+         dists="$$dists $(DOMAIN).pot stamp-po"; \
+       fi; \
+       if test -f $(srcdir)/ChangeLog; then \
+         dists="$$dists ChangeLog"; \
+       fi; \
+       for i in 0 1 2 3 4 5 6 7 8 9; do \
+         if test -f $(srcdir)/ChangeLog.$$i; then \
+           dists="$$dists ChangeLog.$$i"; \
+         fi; \
+       done; \
+       if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \
+       for file in $$dists; do \
+         if test -f $$file; then \
+           cp -p $$file $(distdir) || exit 1; \
+         else \
+           cp -p $(srcdir)/$$file $(distdir) || exit 1; \
+         fi; \
+       done
+
+update-po: Makefile
+       $(MAKE) $(DOMAIN).pot-update
+       test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES)
+       $(MAKE) update-gmo
+
+# General rule for creating PO files.
+
+.nop.po-create:
+       @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \
+       echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \
+       exit 1
+
+# General rule for updating PO files.
+
+.nop.po-update:
+       @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \
+       if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \
+       tmpdir=`pwd`; \
+       echo "$$lang:"; \
+       test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+       echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
+       cd $(srcdir); \
+       if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
+              '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
+                $(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
+              *) \
+                $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
+            esac; \
+          }; then \
+         if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
+           rm -f $$tmpdir/$$lang.new.po; \
+         else \
+           if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
+             :; \
+           else \
+             echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
+             exit 1; \
+           fi; \
+         fi; \
+       else \
+         echo "msgmerge for $$lang.po failed!" 1>&2; \
+         rm -f $$tmpdir/$$lang.new.po; \
+       fi
+
+$(DUMMYPOFILES):
+
+update-gmo: Makefile $(GMOFILES)
+       @:
+
+# Recreate Makefile by invoking config.status. Explicitly invoke the shell,
+# because execution permission bits may not work on the current file system.
+# Use @SHELL@, which is the shell determined by autoconf for the use by its
+# scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient.
+Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@
+       cd $(top_builddir) \
+         && @SHELL@ ./config.status $(subdir)/$@.in po-directories
+
+force:
+
+# Tell versions [3.59,3.63) of GNU make not to export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/po/Makevars b/po/Makevars
new file mode 100644 (file)
index 0000000..a1ceb0e
--- /dev/null
@@ -0,0 +1,63 @@
+# -*- buffer-read-only: t -*- vi: set ro:
+# DO NOT EDIT! GENERATED AUTOMATICALLY!
+# Makefile variables for PO directory in any package using GNU gettext.
+
+# Usually the message domain is the same as the package name.
+DOMAIN = $(PACKAGE)
+
+# These two variables depend on the location of this directory.
+subdir = po
+top_builddir = ..
+
+# These options get passed to xgettext.
+XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ \
+          \
+ --flag=_:1:pass-c-format\
+ --flag=N_:1:pass-c-format\
+ --flag=error:3:c-format --flag=error_at_line:5:c-format\
+\
+ --from-code=UTF-8\
+ --flag=asprintf:2:c-format\
+ --flag=asnprintf:3:c-format\
+ --flag=error:3:c-format\
+ --flag=error_at_line:5:c-format\
+ --flag=vasprintf:2:c-format\
+ --flag=vasnprintf:3:c-format\
+ --flag=wrapf:1:c-format\
+ --flag=xasprintf:1:c-format\
+ --flag=xfprintf:2:c-format\
+ --flag=xprintf:1:c-format\
+\
+ --keyword=proper_name:1,'"This is a proper name. See the gettext manual, section Names."'\
+ --keyword=proper_name_utf8:1,'"This is a proper name. See the gettext manual, section Names."'\
+ $${end_of_xgettext_options+}
+
+# This is the copyright holder that gets inserted into the header of the
+# $(DOMAIN).pot file.  Set this to the copyright holder of the surrounding
+# package.  (Note that the msgstr strings, extracted from the package's
+# sources, belong to the copyright holder of the package.)  Translators are
+# expected to transfer the copyright for their translations to this person
+# or entity, or to disclaim their copyright.  The empty string stands for
+# the public domain; in this case the translators are expected to disclaim
+# their copyright.
+COPYRIGHT_HOLDER = Free Software Foundation, Inc.
+
+# This is the email address or URL to which the translators shall report
+# bugs in the untranslated strings:
+# - Strings which are not entire sentences, see the maintainer guidelines
+#   in the GNU gettext documentation, section 'Preparing Strings'.
+# - Strings which use unclear terms or require additional context to be
+#   understood.
+# - Strings which make invalid assumptions about notation of date, time or
+#   money.
+# - Pluralisation problems.
+# - Incorrect English spelling.
+# - Incorrect formatting.
+# It can be your email address, or a mailing list address where translators
+# can write to without being subscribed, or the URL of a web page through
+# which the translators can contact you.
+MSGID_BUGS_ADDRESS = bug-parted@gnu.org
+
+# This is the list of locale categories, beyond LC_MESSAGES, for which the
+# message catalogs shall be used.  It is usually empty.
+EXTRA_LOCALE_CATEGORIES = 
diff --git a/po/POTFILES.in b/po/POTFILES.in
new file mode 100644 (file)
index 0000000..eaa1f71
--- /dev/null
@@ -0,0 +1,58 @@
+# libparted
+# Copyright (C) 1999-2001, 2006-2011 Free Software Foundation, Inc.
+# This file may be modified and/or copied without restriction.
+
+# list of files containing translatable strings
+
+# lib
+lib/argmatch.c
+lib/closeout.c
+lib/error.c
+lib/getopt.c
+lib/quotearg.c
+lib/regcomp.c
+lib/rpmatch.c
+lib/version-etc.c
+lib/xalloc-die.c
+lib/xstrtol-error.c
+libparted/arch/beos.c
+
+partprobe/partprobe.c
+
+# libparted
+libparted/arch/gnu.c
+libparted/arch/linux.c
+libparted/cs/geom.c
+libparted/debug.c
+libparted/disk.c
+libparted/exception.c
+libparted/labels/aix.c
+libparted/labels/bsd.c
+libparted/labels/dasd.c
+libparted/labels/dos.c
+libparted/labels/dvh.c
+libparted/labels/fdasd.c
+libparted/labels/gpt.c
+libparted/labels/loop.c
+libparted/labels/mac.c
+libparted/labels/pc98.c
+libparted/labels/pt-tools.c
+libparted/labels/rdb.c
+libparted/labels/sun.c
+libparted/labels/vtoc.c
+libparted/libparted.c
+libparted/unit.c
+
+libparted/fs/amiga/affs.c
+libparted/fs/amiga/amiga.c
+libparted/fs/amiga/apfs.c
+libparted/fs/amiga/asfs.c
+
+libparted/fs/fat/fat.c
+libparted/fs/fat/bootsector.c
+libparted/fs/linux_swap/linux_swap.c
+libparted/fs/hfs/probe.c
+
+# parted
+parted/parted.c
+parted/ui.c
diff --git a/po/Rules-quot b/po/Rules-quot
new file mode 100644 (file)
index 0000000..af52487
--- /dev/null
@@ -0,0 +1,47 @@
+# Special Makefile rules for English message catalogs with quotation marks.
+
+DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot
+
+.SUFFIXES: .insert-header .po-update-en
+
+en@quot.po-create:
+       $(MAKE) en@quot.po-update
+en@boldquot.po-create:
+       $(MAKE) en@boldquot.po-update
+
+en@quot.po-update: en@quot.po-update-en
+en@boldquot.po-update: en@boldquot.po-update-en
+
+.insert-header.po-update-en:
+       @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \
+       if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \
+       tmpdir=`pwd`; \
+       echo "$$lang:"; \
+       ll=`echo $$lang | sed -e 's/@.*//'`; \
+       LC_ALL=C; export LC_ALL; \
+       cd $(srcdir); \
+       if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$lang -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \
+         if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
+           rm -f $$tmpdir/$$lang.new.po; \
+         else \
+           if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
+             :; \
+           else \
+             echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
+             exit 1; \
+           fi; \
+         fi; \
+       else \
+         echo "creation of $$lang.po failed!" 1>&2; \
+         rm -f $$tmpdir/$$lang.new.po; \
+       fi
+
+en@quot.insert-header: insert-header.sin
+       sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header
+
+en@boldquot.insert-header: insert-header.sin
+       sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header
+
+mostlyclean: mostlyclean-quot
+mostlyclean-quot:
+       rm -f *.insert-header
diff --git a/po/boldquot.sed b/po/boldquot.sed
new file mode 100644 (file)
index 0000000..4b937aa
--- /dev/null
@@ -0,0 +1,10 @@
+s/"\([^"]*\)"/“\1”/g
+s/`\([^`']*\)'/‘\1’/g
+s/ '\([^`']*\)' / ‘\1’ /g
+s/ '\([^`']*\)'$/ ‘\1’/g
+s/^'\([^`']*\)' /‘\1’ /g
+s/“”/""/g
+s/“/“\e[1m/g
+s/”/\e[0m”/g
+s/‘/‘\e[1m/g
+s/’/\e[0m’/g
diff --git a/po/ca.gmo b/po/ca.gmo
new file mode 100644 (file)
index 0000000..e96c46f
Binary files /dev/null and b/po/ca.gmo differ
diff --git a/po/ca.po b/po/ca.po
new file mode 100644 (file)
index 0000000..aeb6182
--- /dev/null
+++ b/po/ca.po
@@ -0,0 +1,3181 @@
+# GNU Parted en català
+# Copyright (C) 2002 Free Software Foundation, Inc.
+# Miquel Matas <miquelmatas@wanadoo.es>, 2002.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: parted 1.6.0\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2011-05-30 13:45+0200\n"
+"PO-Revision-Date: 2002-05-05 14:47+0100\n"
+"Last-Translator: Miquel Matas <miquelmatas@wanadoo.es>\n"
+"Language-Team: Catalan <ca@dodds.net>\n"
+"Language: ca\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 0.7\n"
+
+#: lib/argmatch.c:133
+#, fuzzy, c-format
+msgid "invalid argument %s for %s"
+msgstr "No s'ha pogut obrir %s"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr ""
+
+#: lib/argmatch.c:153
+#, fuzzy, c-format
+msgid "Valid arguments are:"
+msgstr "No s'ha pogut obrir %s"
+
+#: lib/closeout.c:112 libparted/labels/fdasd.c:107
+msgid "write error"
+msgstr ""
+
+#: lib/error.c:181
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Tipus de sistema de fitxers desconegut \"%s\"."
+
+#: lib/getopt.c:548 lib/getopt.c:577
+#, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
+msgstr ""
+
+#: lib/getopt.c:625 lib/getopt.c:629
+#, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:638 lib/getopt.c:643
+#, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:686 lib/getopt.c:705
+#, c-format
+msgid "%s: option '--%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:743 lib/getopt.c:746
+#, fuzzy, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "No s'ha pogut obrir %s - etiqueta de disc desconeguda."
+
+#: lib/getopt.c:754 lib/getopt.c:757
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "No s'ha pogut obrir %s - etiqueta de disc desconeguda."
+
+#: lib/getopt.c:806 lib/getopt.c:809
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr ""
+
+#: lib/getopt.c:859 lib/getopt.c:876 lib/getopt.c:1084 lib/getopt.c:1102
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr ""
+
+#: lib/getopt.c:932 lib/getopt.c:948
+#, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:972 lib/getopt.c:990
+#, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:1011 lib/getopt.c:1029
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr ""
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:271
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:272
+msgid "'"
+msgstr ""
+
+#: lib/regcomp.c:133
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:136
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:139
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:142
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:145
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:148
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:151
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:154
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:157
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:160
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:163
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:166
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:169
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:172
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:175
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:178
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:181
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:702
+msgid "No previous regular expression"
+msgstr ""
+
+#. TRANSLATORS: A regular expression testing for an affirmative answer
+#. (english: "yes").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^yesexpr='
+#: lib/rpmatch.c:147
+msgid "^[yY]"
+msgstr ""
+
+#. TRANSLATORS: A regular expression testing for a negative answer
+#. (english: "no").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^noexpr='
+#: lib/rpmatch.c:160
+msgid "^[nN]"
+msgstr ""
+
+#: lib/version-etc.c:74
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr ""
+
+#: lib/version-etc.c:77
+#, c-format
+msgid "Packaged by %s\n"
+msgstr ""
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale.  Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:84
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:86
+msgid ""
+"\n"
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:102
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:106
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:110
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:131
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:139
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:147
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:156
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:167
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package.  Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:245
+#, c-format
+msgid ""
+"\n"
+"Report bugs to: %s\n"
+msgstr ""
+
+#: lib/version-etc.c:247
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr ""
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr ""
+
+#: lib/version-etc.c:253
+#, c-format
+msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
+msgstr ""
+
+#: lib/version-etc.c:256
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr ""
+
+#: lib/xstrtol-error.c:63
+#, fuzzy, c-format
+msgid "invalid %s%s argument `%s'"
+msgstr "No s'ha pogut obrir %s"
+
+#: lib/xstrtol-error.c:68
+#, fuzzy, c-format
+msgid "invalid suffix in %s%s argument `%s'"
+msgstr "No s'ha pogut obrir %s"
+
+#: lib/xstrtol-error.c:72
+#, fuzzy, c-format
+msgid "%s%s argument `%s' too large"
+msgstr "No s'ha pogut obrir %s"
+
+#: libparted/arch/beos.c:245
+msgid "Disk Image"
+msgstr ""
+
+#: libparted/arch/beos.c:346 libparted/arch/gnu.c:277
+#: libparted/arch/linux.c:1545
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "Error obrint %s: %s"
+
+#: libparted/arch/beos.c:357 libparted/arch/gnu.c:287
+#: libparted/arch/linux.c:1556
+#, c-format
+msgid "Unable to open %s read-write (%s).  %s has been opened read-only."
+msgstr ""
+"No s'ha pogut obrir %s lectura/escritura (%s). %s s'ha obert només lectura. "
+
+#: libparted/arch/beos.c:419 libparted/arch/linux.c:1714
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s mentre es preparava per llegir a %s"
+
+#: libparted/arch/beos.c:452 libparted/arch/gnu.c:465 libparted/arch/gnu.c:564
+#: libparted/arch/gnu.c:692 libparted/arch/linux.c:1674
+#: libparted/arch/linux.c:1755
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s mentre s'estava llegint a %s"
+
+#: libparted/arch/beos.c:488 libparted/arch/gnu.c:525
+#: libparted/arch/linux.c:1831
+#, c-format
+msgid "Can't write to %s, because it is opened read-only."
+msgstr "No s'ha pogut escriure a %s, ja que era obert per només lectura"
+
+#: libparted/arch/beos.c:504 libparted/arch/linux.c:1856
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s mentre es preparava per escruire a %s"
+
+#: libparted/arch/beos.c:541 libparted/arch/gnu.c:601 libparted/arch/gnu.c:646
+#: libparted/arch/gnu.c:723 libparted/arch/linux.c:1804
+#: libparted/arch/linux.c:1898 libparted/arch/linux.c:1970
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s mentre s'estava escrivint a %s"
+
+#: partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr ""
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the operating system about partition table changes.\n"
+"\n"
+"  -d, --dry-run    do not actually inform the operating system\n"
+"  -s, --summary    print a summary of contents\n"
+"  -h, --help       display this help and exit\n"
+"  -v, --version    output version information and exit\n"
+msgstr ""
+
+#: partprobe/partprobe.c:150
+msgid ""
+"\n"
+"When no DEVICE is given, probe all partitions.\n"
+msgstr ""
+
+#: partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: libparted/arch/gnu.c:110
+#, c-format
+msgid "Unable to open %s."
+msgstr "No s'ha pogut obrir %s"
+
+#: libparted/arch/gnu.c:130
+msgid "Unable to probe store."
+msgstr "No s'ha pogut provar d'emmagatzemar."
+
+#: libparted/arch/gnu.c:368
+#, fuzzy
+msgid ""
+"The partition table cannot be re-read.  This means you need to reboot before "
+"mounting any modified partitions.  You also need to reinstall your boot "
+"loader before you reboot (which may require mounting modified partitions).  "
+"It is impossible do both things!  So you'll need to boot off a rescue disk, "
+"and reinstall your boot loader from the rescue disk.  Read section 4 of the "
+"Parted User documentation for more information."
+msgstr ""
+"La taula de particions no s'ha pogut rellegir, per tant es necessita fer "
+"reboot abans de muntar una partició modificada. També es necessita "
+"reinstal·lar el carregador d'arrencada abans de reinicialitzar ( que pot "
+"necessitar el muntatge de les particions modificades ). No és possible fer "
+"les dues coses! Per tant, necessites arrencar amb un disquet de rescat i "
+"reinstal·lar el carregador d'arrencada des del disc de rescat. Llegeix la "
+"secció 4 de la documentació de l'Usuari de Parted per més informació. "
+
+#: libparted/arch/gnu.c:385
+#, fuzzy, c-format
+msgid ""
+"The partition table on %s cannot be re-read (%s).  This means the Hurd knows "
+"nothing about any modifications you made.  You should reboot your computer "
+"before doing anything with %s."
+msgstr ""
+"La taula de particions a %s (%s).Aixó vol dir que Linux no reconeixerà cap "
+"de les modificacions fetes. S'ha de re-arrencar la màquina abans de fer res "
+"amb %s."
+
+#: libparted/arch/gnu.c:396 parted/parted.c:1967
+msgid ""
+"You should reinstall your boot loader before rebooting.  Read section 4 of "
+"the Parted User documentation for more information."
+msgstr ""
+"S'ha de reinstal·lar el carregador d'arrencada abans de rearrencar llegir la "
+"secció 4 de la documentació de l'Usuari de Parted per més informació."
+
+#: libparted/arch/gnu.c:788
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%s intentant de sincronitzar %s al dics"
+
+#: libparted/arch/linux.c:520
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "Impossible d'inicialitzar el dispositiu %s - %s."
+
+#: libparted/arch/linux.c:577
+#, fuzzy, c-format
+msgid "Unable to determine the dm type of %s."
+msgstr "No s'ha pogut determinar la mida de %s (%s)"
+
+#: libparted/arch/linux.c:669
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+
+#: libparted/arch/linux.c:690
+#, c-format
+msgid ""
+"Could not determine physical sector size for %s.\n"
+"Using the logical sector size (%lld)."
+msgstr ""
+
+#: libparted/arch/linux.c:746
+#, fuzzy, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "No s'ha pogut determinar la mida de %s (%s)"
+
+#: libparted/arch/linux.c:832
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "No s'ha pogut obtenir la identitat del dispositiu %s - %s"
+
+#: libparted/arch/linux.c:841
+msgid "Generic IDE"
+msgstr ""
+
+#: libparted/arch/linux.c:862
+#, c-format
+msgid ""
+"Device %s has multiple (%d) logical sectors per physical sector.\n"
+"GNU Parted supports this EXPERIMENTALLY for some special disk label/file "
+"system combinations, e.g. GPT and ext2/3.\n"
+"Please consult the web site for up-to-date information."
+msgstr ""
+
+#: libparted/arch/linux.c:1039
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "Error inicialitzant el dispositiu SCSI %s - %s"
+
+#: libparted/arch/linux.c:1103
+#, c-format
+msgid ""
+"The device %s is so small that it cannot possibly store a file system or "
+"partition table.  Perhaps you selected the wrong device?"
+msgstr ""
+
+#: libparted/arch/linux.c:1216
+#, fuzzy, c-format
+msgid ""
+"Unable to determine geometry of file/device %s.  You should not use Parted "
+"unless you REALLY know what you're doing!"
+msgstr ""
+"No s'ha pogut determinar la geometria del fitxer/dispositiu. No s'hauria de "
+"fer servir Parted EXCEPTE que se sàpiga el que s'està fent!"
+
+#: libparted/arch/linux.c:1276
+msgid "Generic SD/MMC Storage Card"
+msgstr ""
+
+#: libparted/arch/linux.c:1329
+msgid "DAC960 RAID controller"
+msgstr "Controlador RAID DAC960"
+
+#: libparted/arch/linux.c:1334
+msgid "Promise SX8 SATA Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1339
+msgid "ATA over Ethernet Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1345
+msgid "IBM S390 DASD drive"
+msgstr ""
+
+#: libparted/arch/linux.c:1351
+msgid "IBM iSeries Virtual DASD"
+msgstr ""
+
+#: libparted/arch/linux.c:1356
+msgid "Compaq Smart Array"
+msgstr "Compaq Smart Array"
+
+#: libparted/arch/linux.c:1361
+msgid "ATARAID Controller"
+msgstr "Controlador ATARAID"
+
+#: libparted/arch/linux.c:1366
+msgid "I2O Controller"
+msgstr "Controlador I20"
+
+#: libparted/arch/linux.c:1371
+msgid "User-Mode Linux UBD"
+msgstr ""
+
+#: libparted/arch/linux.c:1384
+#, c-format
+msgid "Linux device-mapper (%s)"
+msgstr ""
+
+#: libparted/arch/linux.c:1395
+msgid "Xen Virtual Block Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1400
+msgid "Unknown"
+msgstr "Desconegut"
+
+#: libparted/arch/linux.c:1409
+msgid "Virtio Block Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1414
+msgid "Linux Software RAID Array"
+msgstr ""
+
+#: libparted/arch/linux.c:1421
+msgid "ped_device_new()  Unsupported device type"
+msgstr "ped_device_new()  Dispositiu no suportat"
+
+#: libparted/arch/linux.c:1518 libparted/arch/linux.c:1590
+#, fuzzy, c-format
+msgid "Error fsyncing/closing %s: %s"
+msgstr "Error obrint %s: %s"
+
+#: libparted/arch/linux.c:1754
+#, c-format
+msgid "end of file while reading %s"
+msgstr ""
+
+#: libparted/arch/linux.c:2390
+#, fuzzy, c-format
+msgid ""
+"Error informing the kernel about modifications to partition %s -- %s.  This "
+"means Linux won't know about any changes you made to %s until you reboot -- "
+"so you shouldn't mount it or use it in any way before rebooting."
+msgstr ""
+"Error informant el kernel sobre modificacions a la partició %s - %s. Això "
+"vol dir que Linux no reconeixerà cap canvi que haveu fet a %s fins que no "
+"reinicieu - per tant no podeu muntar-la o utilitzar-la en cap sentit abans "
+"d'inicialitzar la màquina. "
+
+#: libparted/arch/linux.c:2528
+#, fuzzy, c-format
+msgid "Unable to determine the size and length of %s."
+msgstr "No s'ha pogut determinar la mida de %s (%s)"
+
+#: libparted/arch/linux.c:2553
+#, fuzzy, c-format
+msgid "Failed to add partition %d (%s)"
+msgstr "No s'ha pogut determinar si la partició està muntada."
+
+#: libparted/arch/linux.c:2580
+#, c-format
+msgid ""
+"Partition(s) %s on %s have been written, but we have been unable to inform "
+"the kernel of the change, probably because it/they are in use.  As a result, "
+"the old partition(s) will remain in use.  You should reboot now before "
+"making further changes."
+msgstr ""
+
+#: libparted/arch/linux.c:2706
+#, fuzzy, c-format
+msgid ""
+"parted was unable to re-read the partition table on %s (%s).  This means "
+"Linux won't know anything about the modifications you made. "
+msgstr ""
+"El kernel no ha pogut rellegir la taula de particions a %s (%s).Aixó vol dir "
+"que Linux no reconeixerà cap de les modificacions fetes. Heu d'arrencar la "
+"màquina abans de fer res amb %s."
+
+#: libparted/cs/geom.c:161
+#, fuzzy, c-format
+msgid "Can't have the end before the start! (start sector=%jd length=%jd)"
+msgstr "No es pot acabar abans de començar!"
+
+#: libparted/cs/geom.c:169
+msgid "Can't have a partition outside the disk!"
+msgstr "No es pot fer una partició fora del disc!"
+
+#: libparted/cs/geom.c:384
+#, fuzzy, c-format
+msgid "Attempt to write sectors %ld-%ld outside of partition on %s."
+msgstr "S'ha intentat escriure sectors %ld-%ld fora de la partició a %s"
+
+#: libparted/cs/geom.c:424
+msgid "checking for bad blocks"
+msgstr "comprovant blocs errònis"
+
+#: libparted/debug.c:96
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:109
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr ""
+
+#: libparted/disk.c:192
+#, fuzzy, c-format
+msgid "%s: unrecognised disk label"
+msgstr "No s'ha pogut obrir %s - etiqueta de disc desconeguda."
+
+#: libparted/disk.c:484
+#, c-format
+msgid ""
+"This libparted doesn't have write support for %s.  Perhaps it was compiled "
+"read-only."
+msgstr ""
+"Aquesta libparted no té suport per escriure a %s. Potser va ser compilada "
+"per només lectura."
+
+#: libparted/disk.c:629
+#, fuzzy, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "La partició %d és de %.3fMb, però el sistema de fitxers és de %.3fMb."
+
+#: libparted/disk.c:838
+msgid "cylinder_alignment"
+msgstr ""
+
+#: libparted/disk.c:844
+#, fuzzy, c-format
+msgid "Unknown disk flag, %d."
+msgstr "Flag desconegut a %d."
+
+#: libparted/disk.c:1283
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "Les etiquetes de disc de %s no suporten particions exteses."
+
+#: libparted/disk.c:1858
+#, c-format
+msgid "%s disk labels don't support logical or extended partitions."
+msgstr "Les etiquetes de disc de %s no suporten particions lògiques o exteses."
+
+#: libparted/disk.c:1871
+#, fuzzy
+msgid "Too many primary partitions."
+msgstr "Massa particions primàries."
+
+#: libparted/disk.c:1880
+#, c-format
+msgid ""
+"Can't add a logical partition to %s, because there is no extended partition."
+msgstr ""
+"No es pot afegir una partició lògica a %s, ja que no hi ha una partició "
+"extesa"
+
+#: libparted/disk.c:1904
+#, fuzzy, c-format
+msgid "Can't have more than one extended partition on %s."
+msgstr "No pot haver més d'una partició extesa a %s"
+
+#: libparted/disk.c:1914
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr "No poden haver particions lògiques fora de la partició extesa."
+
+#: libparted/disk.c:1939
+#, c-format
+msgid "Can't have a logical partition outside of the extended partition on %s."
+msgstr "No pot haver una partició lògica fora de la partició extesa a %s."
+
+#: libparted/disk.c:1949 libparted/disk.c:2008 libparted/disk.c:2186
+#, fuzzy
+msgid "Can't have overlapping partitions."
+msgstr "No poden haver particions solapades."
+
+#: libparted/disk.c:1957
+msgid "Can't have a primary partition inside an extended partition."
+msgstr "No pot haver una partició primaria dins d'una partició extesa."
+
+#: libparted/disk.c:2387
+msgid "metadata"
+msgstr "metadata"
+
+#: libparted/disk.c:2389
+msgid "free"
+msgstr "lliure"
+
+#: libparted/disk.c:2391 parted/ui.c:1194 parted/ui.c:1222
+msgid "extended"
+msgstr "extesa"
+
+#: libparted/disk.c:2393 parted/ui.c:1198 parted/ui.c:1226
+msgid "logical"
+msgstr "lògica"
+
+#: libparted/disk.c:2395 parted/ui.c:1190 parted/ui.c:1218
+msgid "primary"
+msgstr "primària"
+
+#: libparted/disk.c:2411
+msgid "boot"
+msgstr "boot"
+
+#: libparted/disk.c:2413
+msgid "bios_grub"
+msgstr ""
+
+#: libparted/disk.c:2415
+msgid "root"
+msgstr "root"
+
+#: libparted/disk.c:2417
+msgid "swap"
+msgstr "swap"
+
+#: libparted/disk.c:2419
+msgid "hidden"
+msgstr "oculta"
+
+#: libparted/disk.c:2421
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2423
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2425
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2427
+msgid "hp-service"
+msgstr "servei-hp"
+
+#: libparted/disk.c:2429
+msgid "palo"
+msgstr ""
+
+#: libparted/disk.c:2431
+msgid "prep"
+msgstr ""
+
+#: libparted/disk.c:2433
+msgid "msftres"
+msgstr ""
+
+#: libparted/disk.c:2435
+msgid "atvrecv"
+msgstr ""
+
+#: libparted/disk.c:2437
+msgid "diag"
+msgstr ""
+
+#: libparted/disk.c:2439
+msgid "legacy_boot"
+msgstr ""
+
+#: libparted/disk.c:2445
+#, fuzzy, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Flag desconegut a %d."
+
+#: libparted/exception.c:77
+msgid "Information"
+msgstr "Informació"
+
+#: libparted/exception.c:78
+msgid "Warning"
+msgstr "Perill"
+
+#: libparted/exception.c:79
+msgid "Error"
+msgstr "Error"
+
+#: libparted/exception.c:80
+msgid "Fatal"
+msgstr "Fatal"
+
+#: libparted/exception.c:81
+msgid "Bug"
+msgstr "Bug"
+
+#: libparted/exception.c:82
+msgid "No Implementation"
+msgstr "No Implementat"
+
+#: libparted/exception.c:86
+msgid "Fix"
+msgstr "Fix"
+
+#: libparted/exception.c:87
+msgid "Yes"
+msgstr "Sí"
+
+#: libparted/exception.c:88
+msgid "No"
+msgstr "No"
+
+#: libparted/exception.c:89
+msgid "OK"
+msgstr "D'accord"
+
+#: libparted/exception.c:90
+msgid "Retry"
+msgstr "Reintentar"
+
+#: libparted/exception.c:91
+msgid "Ignore"
+msgstr "Ignorar"
+
+#: libparted/exception.c:92
+msgid "Cancel"
+msgstr "Cancel·lar"
+
+#: libparted/exception.c:132
+#, fuzzy, c-format
+msgid ""
+"A bug has been detected in GNU Parted.  Refer to the web site of parted "
+"http://www.gnu.org/software/parted/parted.html for more information of what "
+"could be useful for bug submitting!  Please email a bug report to %s "
+"containing at least the version (%s) and the following message:  "
+msgstr ""
+"S'ha detectat un bug a GNU Parted. Si-us-plau, envieu un e-mail a bug-"
+"parted@gnu.org que contingui la versió (%s) i el següent missatge:"
+
+#: libparted/labels/aix.c:103
+#, fuzzy
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr ""
+"El suport per crear sistemes de fitxers de %s encara no està implementat."
+
+#: libparted/labels/aix.c:114
+#, fuzzy
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr ""
+"El suport per crear sistemes de fitxers de %s encara no està implementat."
+
+#: libparted/labels/aix.c:127
+#, fuzzy
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr ""
+"El suport per crear sistemes de fitxers de %s encara no està implementat."
+
+#: libparted/labels/aix.c:137
+#, fuzzy
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr ""
+"El suport per crear sistemes de fitxers de %s encara no està implementat."
+
+#: libparted/labels/aix.c:155
+#, fuzzy
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr ""
+"El suport per crear sistemes de fitxers de %s encara no està implementat."
+
+#: libparted/labels/aix.c:165
+#, fuzzy
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr ""
+"El suport per crear sistemes de fitxers de %s encara no està implementat."
+
+#: libparted/labels/bsd.c:571 libparted/labels/dasd.c:833
+#: libparted/labels/dos.c:2176 libparted/labels/dvh.c:787
+#: libparted/labels/gpt.c:1782 libparted/labels/loop.c:247
+#: libparted/labels/mac.c:1426 libparted/labels/pc98.c:748
+#: libparted/labels/rdb.c:1052 libparted/labels/sun.c:780
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "No s'ha pogut satisfer les limitacions a la partició"
+
+#: libparted/labels/bsd.c:596
+#, fuzzy
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "No s'ha pogut reservar una etiqueta bsd"
+
+#: libparted/labels/dasd.c:859
+#, fuzzy
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "No s'ha pogut reservar una etiqueta bsd"
+
+#: libparted/labels/dos.c:966
+#, fuzzy, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr "Taula de particions invàlida a %s - signatura dolenta %x."
+
+#: libparted/labels/dos.c:994
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "Taula de particions invàlida - partició recursiva a %s."
+
+#: libparted/labels/dos.c:1504
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr ""
+
+#: libparted/labels/dos.c:2158
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+
+#: libparted/labels/dvh.c:200
+#, fuzzy, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr ""
+"%s no té partició extesa (partició de capçalera de volum).  Si ignoreu, tots "
+"els volums d'arrencada seràn esborrats. "
+
+#: libparted/labels/dvh.c:326
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr ""
+"Checksum incorrecte, la qual cosa indica que la taula de particions és "
+"corrupte."
+
+#: libparted/labels/dvh.c:631
+msgid "Only primary partitions can be root partitions."
+msgstr "Només les particions primàries poden ser particions root."
+
+#: libparted/labels/dvh.c:645
+msgid "Only primary partitions can be swap partitions."
+msgstr "Només les particions primàries poden ser particions swap."
+
+#: libparted/labels/dvh.c:659
+msgid "Only logical partitions can be a boot file."
+msgstr "Només les particions lògiques poden ser un fitxer d'arrencada."
+
+#: libparted/labels/dvh.c:736
+#, fuzzy, c-format
+msgid ""
+"failed to set dvh partition name to %s:\n"
+"Only logical partitions (boot files) have a name."
+msgstr "Només les particions lògiques (fitxers d'arrencada) tenen nom."
+
+#: libparted/labels/dvh.c:829
+msgid "Too many primary partitions"
+msgstr "Massa particions primàries."
+
+#: libparted/labels/fdasd.c:98
+msgid "open error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:101
+msgid "seek error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:104
+msgid "read error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:110
+msgid "ioctl() error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:114
+msgid "API version mismatch"
+msgstr ""
+
+#: libparted/labels/fdasd.c:118
+#, fuzzy
+msgid "Unsupported disk type"
+msgstr "ped_device_new()  Dispositiu no suportat"
+
+#: libparted/labels/fdasd.c:122
+msgid "Unsupported disk format"
+msgstr ""
+
+#: libparted/labels/fdasd.c:126
+msgid "Disk is in use"
+msgstr ""
+
+#: libparted/labels/fdasd.c:130
+msgid "Syntax error in config file"
+msgstr ""
+
+#: libparted/labels/fdasd.c:134
+msgid "Volume label is corrupted"
+msgstr ""
+
+#: libparted/labels/fdasd.c:138
+msgid "A data set name is corrupted"
+msgstr ""
+
+#: libparted/labels/fdasd.c:142
+msgid "Memory allocation failed"
+msgstr ""
+
+#: libparted/labels/fdasd.c:146
+msgid "Device verification failed"
+msgstr ""
+
+#: libparted/labels/fdasd.c:147
+msgid "The specified device is not a valid DASD device"
+msgstr ""
+
+#: libparted/labels/fdasd.c:150 libparted/labels/vtoc.c:179
+#, fuzzy
+msgid "Fatal error"
+msgstr "Fatal"
+
+#: libparted/labels/fdasd.c:226
+msgid "No room for volume label."
+msgstr ""
+
+#: libparted/labels/fdasd.c:234
+#, fuzzy
+msgid "No room for partition info."
+msgstr "No s'ha trobat un mapa de particions vàlid."
+
+#: libparted/labels/fdasd.c:709
+msgid "Invalid VTOC."
+msgstr ""
+
+#: libparted/labels/fdasd.c:766
+msgid "Could not retrieve API version."
+msgstr ""
+
+#: libparted/labels/fdasd.c:769
+#, c-format
+msgid ""
+"The current API version '%d' doesn't match dasd driver API version '%d'!"
+msgstr ""
+
+#: libparted/labels/fdasd.c:806
+#, fuzzy
+msgid "Could not retrieve disk geometry information."
+msgstr "No s'ha pogut llegir la geometria de %s - %s"
+
+#: libparted/labels/fdasd.c:810
+msgid "Could not retrieve blocksize information."
+msgstr ""
+
+#: libparted/labels/fdasd.c:815
+msgid "Could not retrieve disk information."
+msgstr ""
+
+#: libparted/labels/gpt.c:493
+#, fuzzy, c-format
+msgid ""
+"%s contains GPT signatures, indicating that it has a GPT table.  However, it "
+"does not have a valid fake msdos partition table, as it should.  Perhaps it "
+"was corrupted -- possibly by a program that doesn't understand GPT partition "
+"tables.  Or perhaps you deleted the GPT table, and are now using an msdos "
+"partition table.  Is this a GPT partition table?"
+msgstr ""
+"%s conté signatures GPT, la qual cosa indica que té una taula GPT. No "
+"obstant, no té una taula de particions msdos imitada, com hauria de ser.  "
+"Potser és corrupte - possiblement per un programa que no és capaç d'entendre "
+"les taules de partició GPT. O potser, també, heu esborrat la taula GPT i ara "
+"feu servir una taula de particions msdos. És aquesta una partició GPT? "
+
+#: libparted/labels/gpt.c:693
+#, fuzzy, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise.  Please report this!"
+msgstr ""
+"El format de la taula de particions GPT és més nou que el que Parted pot "
+"reconeixer. Si-us-plau, diga'ns-ho a  bug-parted@gnu.org"
+
+#: libparted/labels/gpt.c:740
+#, c-format
+msgid ""
+"Not all of the space available to %s appears to be used, you can fix the GPT "
+"to use all of the space (an extra %llu blocks) or continue with the current "
+"setting? "
+msgstr ""
+
+#: libparted/labels/gpt.c:952
+msgid ""
+"The backup GPT table is not at the end of the disk, as it should be.  This "
+"might mean that another operating system believes the disk is smaller.  Fix, "
+"by moving the backup to the end (and removing the old backup)?"
+msgstr ""
+"La còpia de la taula GPT no és al final del disc com hauriea d'ser. Això pot "
+"voler dir que un altre sistema operatiu creu que el disc és més petit. Ho "
+"voleu arreglar novent la còpia al final ( i esborrant la còpia antiga)?"
+
+#: libparted/labels/gpt.c:976
+#, fuzzy
+msgid ""
+"Both the primary and backup GPT tables are corrupt.  Try making a fresh "
+"table, and using Parted's rescue feature to recover partitions."
+msgstr ""
+"Tant la taula primària GPT com la còpia són corruptes.  Intenteu crear una "
+"taula actualitzada, i fent servir la opció de rescat de Parted per "
+"reconstruïr les particions."
+
+#: libparted/labels/gpt.c:987
+#, fuzzy
+msgid ""
+"The backup GPT table is corrupt, but the primary appears OK, so that will be "
+"used."
+msgstr ""
+"La taula primària GPT és corrupte, però la còpia sembla correcta, per tant "
+"es farà servir aquesta."
+
+#: libparted/labels/gpt.c:999
+#, fuzzy
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr ""
+"La taula primària GPT és corrupte, però la còpia sembla correcta, per tant "
+"es farà servir aquesta."
+
+#: libparted/labels/gpt.c:1023
+msgid "primary partition table array CRC mismatch"
+msgstr ""
+
+#: libparted/labels/mac.c:184
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Signatura invàlida %x per etiquetes de discs Mac."
+
+#: libparted/labels/mac.c:231
+msgid "Partition map has no partition map entry!"
+msgstr "El Mapa de particions no té entrada de mapa de particions!"
+
+#: libparted/labels/mac.c:279
+#, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr "%s massa petita per una etiqueta d'un disc Mac."
+
+#: libparted/labels/mac.c:508
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "La partició %d té una signatura invàlida %x."
+
+#: libparted/labels/mac.c:526
+#, c-format
+msgid "Partition %d has an invalid length of 0 bytes!"
+msgstr "La partició %d té una logitud invàlida de 0 bytes!"
+
+#: libparted/labels/mac.c:557
+#, fuzzy
+msgid "The data region doesn't start at the start of the partition."
+msgstr "La regió de dades no comença al principi de la partició"
+
+#: libparted/labels/mac.c:574
+#, fuzzy
+msgid "The boot region doesn't start at the start of the partition."
+msgstr "La regió d'arrencada no comemça al principi de la partició"
+
+#: libparted/labels/mac.c:588
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr "La regió d'arrencada de la partició no ocupa la partició sencera."
+
+#: libparted/labels/mac.c:599
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr "La regió de dades de la partició no ocupa la partició sencera."
+
+#: libparted/labels/mac.c:652
+#, c-format
+msgid ""
+"Weird block size on device descriptor: %d bytes is not divisible by 512."
+msgstr ""
+"La mida de bloc extrany al dispositiu: %d bytes no és divisible per 512."
+
+#: libparted/labels/mac.c:665
+#, c-format
+msgid ""
+"The driver descriptor says the physical block size is %d bytes, but Linux "
+"says it is %d bytes."
+msgstr ""
+"El controlador diu que el tamany de bloc físic és de %d bytes, però Linux "
+"troba que és de %d bytes."
+
+#: libparted/labels/mac.c:719
+msgid "No valid partition map found."
+msgstr "No s'ha trobat un mapa de particions vàlid."
+
+#: libparted/labels/mac.c:780
+#, fuzzy, c-format
+msgid ""
+"Conflicting partition map entry sizes!  Entry 1 says it is %d, but entry %d "
+"says it is %d!"
+msgstr ""
+"Conflicte de mida de entrada del mapa de particions! La entrada 1 diu que és "
+"%d, però la entrada %d diu que és %d!"
+
+#: libparted/labels/mac.c:811
+#, fuzzy
+msgid "Weird!  There are 2 partitions map entries!"
+msgstr "Estrany - 2 entrades de mapes de particions!"
+
+#: libparted/labels/mac.c:1357
+msgid ""
+"Changing the name of a root or swap partition will prevent Linux from "
+"recognising it as such."
+msgstr ""
+"Canviar el nom d'una partició root o swap impedirà que Linux les reconeixi "
+"com a tals."
+
+#: libparted/labels/mac.c:1461
+#, fuzzy
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr ""
+"No es pot afegir una altra partició - el mapa de particions és massa petit!"
+
+#: libparted/labels/pc98.c:331
+#, fuzzy, c-format
+msgid "Invalid partition table on %s."
+msgstr "Taula de particions invàlida a %s"
+
+#: libparted/labels/pc98.c:384 libparted/labels/pc98.c:462
+#, fuzzy, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries.  This is still "
+"unsupported."
+msgstr ""
+"La partició %d no està aliniada als límits dels cilindres. Cal afegir suport "
+"per aquesta característica."
+
+#: libparted/labels/pc98.c:780
+msgid "Can't add another partition."
+msgstr "No es pot afegir un altra partició."
+
+#: libparted/labels/pt-tools.c:125
+#, c-format
+msgid ""
+"partition length of %jd sectors exceeds the %s-partition-table-imposed "
+"maximum of %jd"
+msgstr ""
+
+#: libparted/labels/pt-tools.c:138
+#, c-format
+msgid ""
+"starting sector number, %jd exceeds the %s-partition-table-imposed maximum "
+"of %jd"
+msgstr ""
+
+#: libparted/labels/rdb.c:169
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:484
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr ""
+
+#: libparted/labels/rdb.c:573
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr ""
+
+#: libparted/labels/rdb.c:592
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:691
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:699
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:707
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:715
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:742
+#, fuzzy, c-format
+msgid "Failed to write partition block at %d."
+msgstr "No s'ha pogut determinar si la partició està muntada."
+
+#: libparted/labels/rdb.c:1080
+#, fuzzy
+msgid "Unable to allocate a partition number."
+msgstr "S'esperava un múmero de partició."
+
+#: libparted/labels/sun.c:161
+msgid "Corrupted Sun disk label detected."
+msgstr "S'ha detectat una etiqueta Sun corrupte."
+
+#: libparted/labels/sun.c:276
+#, fuzzy, c-format
+msgid ""
+"The disk CHS geometry (%d,%d,%d) reported by the operating system does not "
+"match the geometry stored on the disk label (%d,%d,%d)."
+msgstr ""
+"La geometria del disc CHS (%d,%d,%d) no coincideix amb la geometria "
+"emmagatzemada a la etiqueta del disc (%d,%d,%d)."
+
+#: libparted/labels/sun.c:298
+#, c-format
+msgid "The disk label describes a disk bigger than %s."
+msgstr "La etiqueta del disc descriu un disc més gran de %s."
+
+#: libparted/labels/sun.c:473
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr ""
+
+#: libparted/labels/sun.c:812
+msgid ""
+"The Whole Disk partition is the only available one left.  Generally, it is "
+"not a good idea to overwrite this partition with a real one.  Solaris may "
+"not be able to boot without it, and SILO (the sparc boot loader) appreciates "
+"it as well."
+msgstr ""
+"La partició sencera de disk és la única disponible que queda. Generalment, "
+"no és una bona idea sobreescriure aquesta partició amb una d'autèntica. "
+"Solaris pot no ser capaç d'arrencar sense ella i SILO ( el gestor "
+"d'arrencada d'sparc) també la té en compte."
+
+#: libparted/labels/sun.c:827
+msgid "Sun disk label is full."
+msgstr "La etiqueta del disc de Sun està plena."
+
+#: libparted/labels/vtoc.c:164
+msgid "opening of device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:168
+msgid "seeking on device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:172
+msgid "writing to device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:176
+msgid "reading from device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:299 libparted/labels/vtoc.c:308
+#: libparted/labels/vtoc.c:329 libparted/labels/vtoc.c:336
+#, fuzzy
+msgid "Could not read volume label."
+msgstr "No s'ha pogut llegir la geometria de %s - %s"
+
+#: libparted/labels/vtoc.c:356 libparted/labels/vtoc.c:363
+#, fuzzy
+msgid "Could not write volume label."
+msgstr "No s'ha pogut detectar el sistema de fitxers."
+
+#: libparted/labels/vtoc.c:469
+msgid "Could not read VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:496
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:516
+msgid "Could not write VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:522
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:529
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:536
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:543
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/libparted.c:230 libparted/libparted.c:245
+msgid "Out of memory."
+msgstr "Sense memòria."
+
+#: libparted/unit.c:138
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr ""
+
+#: libparted/unit.c:384
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr ""
+
+#: libparted/unit.c:392
+#, c-format
+msgid "The maximum head value is %d."
+msgstr ""
+
+#: libparted/unit.c:399
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr ""
+
+#: libparted/unit.c:411 libparted/unit.c:556
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr ""
+
+#: libparted/unit.c:531
+msgid "Invalid number."
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:62 libparted/fs/amiga/apfs.c:55
+#: libparted/fs/amiga/asfs.c:69
+#, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:77 libparted/fs/amiga/apfs.c:68
+#: libparted/fs/amiga/asfs.c:81
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:82 libparted/fs/amiga/apfs.c:73
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:98 libparted/fs/amiga/apfs.c:84
+#: libparted/fs/amiga/asfs.c:87 libparted/fs/amiga/asfs.c:101
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:71
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:188
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:201
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:211
+#, fuzzy, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s mentre s'estava escrivint a %s"
+
+#: libparted/fs/amiga/amiga.c:277
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:288
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:317
+#, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr ""
+
+#: libparted/fs/fat/fat.c:174
+#, fuzzy
+msgid ""
+"GNU Parted was miscompiled: the FAT boot sector should be 512 bytes.  FAT "
+"support will be disabled."
+msgstr ""
+"GNU Parted va ser mal compilat: el sector boot de FAT ha de ser de 512 "
+"bytes. El suport per FAT serà desactivat."
+
+#: libparted/fs/fat/bootsector.c:49 libparted/fs/fat/bootsector.c:56
+msgid "File system has an invalid signature for a FAT file system."
+msgstr ""
+"El sistema de fitxers té una signatura invàlida per a un sistema de fitxers "
+"FAT."
+
+#: libparted/fs/fat/bootsector.c:64
+msgid "File system has an invalid sector size for a FAT file system."
+msgstr ""
+"El sistema de fitxers té una mida de sector invàlida per a un sistema de "
+"fitxers FAT."
+
+#: libparted/fs/fat/bootsector.c:71
+#, fuzzy
+msgid "File system has an invalid cluster size for a FAT file system."
+msgstr ""
+"El sistema de fitxers té una mida de sector invàlida per a un sistema de "
+"fitxers FAT."
+
+#: libparted/fs/fat/bootsector.c:78
+#, fuzzy
+msgid ""
+"File system has an invalid number of reserved sectors for a FAT file system."
+msgstr ""
+"El sistema de fitxers té un número de sectors reservats per a un sistema de "
+"fitxers FAT."
+
+#: libparted/fs/fat/bootsector.c:85
+#, fuzzy
+msgid "File system has an invalid number of FATs."
+msgstr "El sistema de fitxers té un número de FATS invàlid."
+
+#: libparted/fs/fat/bootsector.c:156
+#, c-format
+msgid ""
+"This file system has a logical sector size of %d.  GNU Parted is known not "
+"to work properly with sector sizes other than 512 bytes."
+msgstr ""
+"Aquest sistema de fitxers té una mida de sector lògic de %d. GNU Parted no "
+"treballarà correctament amb mides de sectors diferents de 512 bytes."
+
+#: libparted/fs/fat/bootsector.c:181
+#, c-format
+msgid ""
+"The file system's CHS geometry is (%d, %d, %d), which is invalid.  The "
+"partition table's CHS geometry is (%d, %d, %d).  If you select Ignore, the "
+"file system's CHS geometry will be left unchanged.  If you select Fix, the "
+"file system's CHS geometry will be set to match the partition table's CHS "
+"geometry."
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:230
+msgid "FAT boot sector says logical sector size is 0.  This is weird. "
+msgstr ""
+"El sector boot de la FAT diu que la mida del sector lògic és 0. Això és "
+"extrany."
+
+#: libparted/fs/fat/bootsector.c:236
+msgid "FAT boot sector says there are no FAT tables.  This is weird. "
+msgstr ""
+"El sector boot de la FAT diu que no hi ha taules FAT.  Això és extrany."
+
+#: libparted/fs/fat/bootsector.c:242
+msgid "FAT boot sector says clusters are 0 sectors.  This is weird. "
+msgstr ""
+"El sector boot de la FAT diu que els clústers tenen 0 sectors. Això és "
+"extrany."
+
+#: libparted/fs/fat/bootsector.c:252
+#, fuzzy
+msgid "File system is FAT12, which is unsupported."
+msgstr "El sistema de fitxers és FAT12, que no està suportat."
+
+#: libparted/fs/fat/bootsector.c:428
+#, c-format
+msgid ""
+"The information sector has the wrong signature (%x).  Select cancel for now, "
+"and send in a bug report.  If you're desperate, it's probably safe to ignore."
+msgstr ""
+"El sector d'informació té una signatura incorrecta (%x).  Selecciona "
+"cancel·la ara mateix, i envia-ns un informe.  Si estas desesperat, el més "
+"segur és Ignorar."
+
+#: libparted/fs/linux_swap/linux_swap.c:247
+#, fuzzy, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "Signatura de linux swap '%10s' no reconeguda."
+
+#: libparted/fs/linux_swap/linux_swap.c:290
+#, fuzzy, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "Signatura de linux swap '%10s' no reconeguda."
+
+#: libparted/fs/linux_swap/linux_swap.c:330
+#, fuzzy, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Signatura de linux swap '%10s' no reconeguda."
+
+#: libparted/fs/hfs/probe.c:50
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to "
+"%d bytes."
+msgstr ""
+
+#: parted/parted.c:123
+msgid "displays this help message"
+msgstr "mostra aquest missatge d'ajuda"
+
+#: parted/parted.c:124
+msgid "lists partition layout on all block devices"
+msgstr ""
+
+#: parted/parted.c:125
+msgid "displays machine parseable output"
+msgstr ""
+
+#: parted/parted.c:126
+msgid "never prompts for user intervention"
+msgstr "mai pregunta a l'usuari"
+
+#: parted/parted.c:127
+msgid "displays the version"
+msgstr "mostra la versió"
+
+#: parted/parted.c:128
+#, fuzzy
+msgid "alignment for new partitions"
+msgstr "No es pot crear cap més partició."
+
+#: parted/parted.c:140
+#, fuzzy
+msgid ""
+"NUMBER is the partition number used by Linux.  On MS-DOS disk labels, the "
+"primary partitions number from 1 to 4, logical partitions from 5 onwards.\n"
+msgstr ""
+"MINOR és el número de partició utilitzada per Linux. A etiquetes de disk "
+"msdos, les particions primàries són numeradas de 1 a 4, i les particions "
+"lògiques de la 5 en davant.\n"
+
+#: parted/parted.c:143
+msgid "LABEL-TYPE is one of: "
+msgstr "TIPUS-ETI és una d'aquestes: "
+
+#: parted/parted.c:144
+msgid "FLAG is one of: "
+msgstr "FLAG és una d'aquests:"
+
+#: parted/parted.c:145
+#, fuzzy
+msgid "UNIT is one of: "
+msgstr "FLAG és una d'aquests:"
+
+#: parted/parted.c:146
+msgid "desired alignment: minimum or optimal"
+msgstr ""
+
+#: parted/parted.c:147
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "TIPUS-PART és una d'aquestes: primària, lògica, extesa\n"
+
+#: parted/parted.c:149
+msgid "FS-TYPE is one of: "
+msgstr "TIPUS-SF és un d'aquests: "
+
+#: parted/parted.c:150
+msgid ""
+"START and END are disk locations, such as 4GB or 10%.  Negative values count "
+"from the end of the disk.  For example, -1s specifies exactly the last "
+"sector.\n"
+msgstr ""
+
+#: parted/parted.c:153
+msgid "STATE is one of: on, off\n"
+msgstr "ESTAT és un d'aquests: on, off\n"
+
+#: parted/parted.c:154
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "DISPOS és, normalment, /dev/hda o /dev/sda\n"
+
+#: parted/parted.c:155
+msgid "NAME is any word you want\n"
+msgstr "NOM és qualsevol paraula que vulguis\n"
+
+#: parted/parted.c:158
+#, fuzzy
+msgid ""
+"Copyright (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"This program is free software, covered by the GNU General Public License.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+msgstr ""
+"Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.\n"
+"Aquest programa és programari obert sota Llicència Pública General GNU.\n"
+"\n"
+"Aquest programa es distribueix en la esperança que sigui útil, però SENSE "
+"CAP GARANTIA; sense la garantia implícita de COMERCIALITZACIO ni que "
+"CUMPLEIXI CAP PROPOSIT PARTICULAR.  Per més detalls, vegeu la Llicència "
+"General Pública GNU.\n"
+"\n"
+
+#: parted/parted.c:204
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(temps que queda %.2d:%.2d)"
+
+#: parted/parted.c:223
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+
+#: parted/parted.c:241
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "La(s) partició(ns) a %s s'està utilitzant."
+
+#: parted/parted.c:253
+#, c-format
+msgid ""
+"The existing disk label on %s will be destroyed and all data on this disk "
+"will be lost. Do you want to continue?"
+msgstr ""
+
+#: parted/parted.c:502
+msgid "New disk label type?"
+msgstr "Nou tipus d'etiqueta?"
+
+#: parted/parted.c:562
+msgid "Partition type?"
+msgstr "Tipus de partició?"
+
+#: parted/parted.c:580 parted/parted.c:766
+msgid "Partition name?"
+msgstr "Nom de la partició?"
+
+#: parted/parted.c:588
+msgid "File system type?"
+msgstr "Sistema de fitxers?"
+
+#: parted/parted.c:594 parted/parted.c:1342
+msgid "Start?"
+msgstr "Inici?"
+
+#: parted/parted.c:596 parted/parted.c:1344
+msgid "End?"
+msgstr "Fi?"
+
+#: parted/parted.c:661
+#, fuzzy, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s.%s"
+msgstr ""
+"Has demanat de crear una partició a %.3f-%.3fMb. El més proper que Parted "
+"pot manegar és %.3f-%.3fMb."
+
+#: parted/parted.c:666
+msgid ""
+"\n"
+"Is this still acceptable to you?"
+msgstr ""
+
+#: parted/parted.c:688
+msgid "The resulting partition is not properly aligned for best performance."
+msgstr ""
+
+#: parted/parted.c:763 parted/parted.c:1383 parted/parted.c:1455
+#: parted/parted.c:1489
+msgid "Partition number?"
+msgstr "Número de partició?"
+
+#: parted/parted.c:841
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d.  Each cylinder is %s.\n"
+msgstr ""
+
+#: parted/parted.c:881
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr ""
+
+#: parted/parted.c:883
+#, fuzzy, c-format
+msgid "Disk %s: %s\n"
+msgstr "%s  %s  %s"
+
+#: parted/parted.c:884
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr ""
+
+#: parted/parted.c:896
+#, fuzzy, c-format
+msgid "Partition Table: %s\n"
+msgstr "Nom de la partició?"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Number"
+msgstr ""
+
+#: parted/parted.c:1007 parted/parted.c:1010
+#, fuzzy
+msgid "Start"
+msgstr "Inici?"
+
+#: parted/parted.c:1008 parted/parted.c:1011
+#, fuzzy
+msgid "End"
+msgstr "Fi?"
+
+#: parted/parted.c:1011
+#, fuzzy
+msgid "Size"
+msgstr "resize"
+
+#: parted/parted.c:1015
+msgid "Type"
+msgstr ""
+
+#: parted/parted.c:1017
+#, fuzzy
+msgid "File system"
+msgstr "Sistema de fitxers?"
+
+#: parted/parted.c:1020
+#, fuzzy
+msgid "Name"
+msgstr "name"
+
+#: parted/parted.c:1022
+msgid "Flags"
+msgstr "Flags"
+
+#: parted/parted.c:1079
+msgid "Free Space"
+msgstr ""
+
+#: parted/parted.c:1241
+#, fuzzy, c-format
+msgid ""
+"A %s %s partition was found at %s -> %s.  Do you want to add it to the "
+"partition table?"
+msgstr ""
+"Una partició %s %s ha estat trobada a %.3fMb -> %.3fMb.  Vols afegir-la a la "
+"taula de particions?"
+
+#: parted/parted.c:1280
+#, fuzzy
+msgid "searching for file systems"
+msgstr "sistema de fitxers creixent"
+
+#: parted/parted.c:1408
+msgid "New device?"
+msgstr "Nou dispositiu?"
+
+#: parted/parted.c:1453
+msgid "alignment type(min/opt)"
+msgstr ""
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d aligned\n"
+msgstr ""
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d not aligned\n"
+msgstr ""
+
+#: parted/parted.c:1491
+#, fuzzy
+msgid "Flag to Invert?"
+msgstr "Flag a canviar?"
+
+#: parted/parted.c:1496
+msgid "New state?"
+msgstr "Nou estat?"
+
+#: parted/parted.c:1533
+msgid "Unit?"
+msgstr ""
+
+#: parted/parted.c:1651
+#, fuzzy
+msgid "align-check"
+msgstr "comprova"
+
+#: parted/parted.c:1654
+msgid ""
+"align-check TYPE N                        check partition N for TYPE(min|"
+"opt) alignment"
+msgstr ""
+
+#: parted/parted.c:1662
+msgid "help"
+msgstr "ajuda"
+
+#: parted/parted.c:1665
+#, fuzzy
+msgid ""
+"help [COMMAND]                           print general help, or help on "
+"COMMAND"
+msgstr "Ajuda [ORDRE]                 imprimeix ajuda general, o ajuda d'ORDRE"
+
+#: parted/parted.c:1671
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:1671
+#, fuzzy
+msgid "mktable"
+msgstr "mklabel"
+
+#: parted/parted.c:1674
+#, fuzzy
+msgid ""
+"mklabel,mktable LABEL-TYPE               create a new disklabel (partition "
+"table)"
+msgstr ""
+"mklabel TIPUS-ETI        crea una nova etiqueta de disc (taula de partició)"
+
+#: parted/parted.c:1680
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:1683
+#, fuzzy
+msgid "mkpart PART-TYPE [FS-TYPE] START END     make a partition"
+msgstr "mkpart TIPUS-PART [TIPUS-SF] INICI FI      crea una partició"
+
+#: parted/parted.c:1689
+#, fuzzy
+msgid ""
+"'mkpart' makes a partition without creating a new file system on the "
+"partition.  FS-TYPE may be specified to set an appropriate partition ID.\n"
+msgstr ""
+"mkpart crea una partició sense crear cap sistema de fitxers a la partició. "
+"TIPUS-SF ha de ser especificat per assignar una ID de partició.\n"
+
+#: parted/parted.c:1694
+msgid "name"
+msgstr "name"
+
+#: parted/parted.c:1697
+#, fuzzy
+msgid "name NUMBER NAME                         name partition NUMBER as NAME"
+msgstr "name MINOR NOM               anomena la partició MINOR NOM"
+
+#: parted/parted.c:1702
+msgid "print"
+msgstr "print"
+
+#: parted/parted.c:1705
+msgid ""
+"print [devices|free|list,all|NUMBER]     display the partition table, "
+"available devices, free space, all found partitions, or a particular "
+"partition"
+msgstr ""
+
+#: parted/parted.c:1710
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+
+#: parted/parted.c:1712
+msgid "  devices   : display all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:1713
+msgid ""
+"  free      : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+
+#: parted/parted.c:1715
+msgid ""
+"  list, all : display the partition tables of all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:1716
+msgid ""
+"  NUMBER    : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+
+#: parted/parted.c:1721
+msgid "quit"
+msgstr "quit"
+
+#: parted/parted.c:1724
+#, fuzzy
+msgid "quit                                     exit program"
+msgstr "quit                          surt del programa"
+
+#: parted/parted.c:1729
+msgid "rescue"
+msgstr "rescatar"
+
+#: parted/parted.c:1732
+#, fuzzy
+msgid ""
+"rescue START END                         rescue a lost partition near START "
+"and END"
+msgstr "rescatar INICI FI        rescata particions perdudes entre INICI i FI"
+
+#: parted/parted.c:1738
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:1741
+#, fuzzy
+msgid "rm NUMBER                                delete partition NUMBER"
+msgstr "rm MINOR                      suprimeix la partició MINOR"
+
+#: parted/parted.c:1746
+msgid "select"
+msgstr "select"
+
+#: parted/parted.c:1749
+#, fuzzy
+msgid "select DEVICE                            choose the device to edit"
+msgstr "select DISPOSITIU                 escollir el dispositiu a editar"
+
+#: parted/parted.c:1754
+msgid "set"
+msgstr "set"
+
+#: parted/parted.c:1757
+#, fuzzy
+msgid ""
+"set NUMBER FLAG STATE                    change the FLAG on partition NUMBER"
+msgstr "set MINOR FLAG ESTAT          canvia un flag a la partició MINOR"
+
+#: parted/parted.c:1763
+msgid "toggle"
+msgstr ""
+
+#: parted/parted.c:1766
+msgid ""
+"toggle [NUMBER [FLAG]]                   toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+
+#: parted/parted.c:1772
+#, fuzzy
+msgid "unit"
+msgstr "quit"
+
+#: parted/parted.c:1775
+#, fuzzy
+msgid "unit UNIT                                set the default unit to UNIT"
+msgstr "quit                          surt del programa"
+
+#: parted/parted.c:1780
+msgid "version"
+msgstr ""
+
+#: parted/parted.c:1783
+msgid ""
+"version                                  display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+
+#: parted/parted.c:1787
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+
+#: parted/parted.c:1855
+#, c-format
+msgid "Usage: %s [-hlmsv] [-a<align>] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+
+#: parted/parted.c:1899
+msgid "No device found"
+msgstr "No s'ha trobat el dispositiu"
+
+#: parted/parted.c:1936
+msgid "WARNING: You are not superuser.  Watch out for permissions."
+msgstr ""
+
+#: parted/parted.c:1974
+#, fuzzy
+msgid "You may need to update /etc/fstab.\n"
+msgstr "No us oblideu d'actualitzar /etc/fstab si cal.\n"
+
+#: parted/ui.c:162
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+
+#: parted/ui.c:165
+#, fuzzy
+msgid ""
+"Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]\n"
+"Apply COMMANDs with PARAMETERS to DEVICE.  If no COMMAND(s) are given, run "
+"in\n"
+"interactive mode.\n"
+msgstr ""
+"Ús: parted [OPCIÓ]... [DISPOSITIU [ORDRE [PARAMETRES]...]...]\n"
+"Aplica les ORDRES amb PARAMETRES al DISPOSITIU.  Si no s'especifiquen "
+"ORDRES, s'executa en\n"
+"mode interactiu.\n"
+
+#: parted/ui.c:170
+#, c-format
+msgid ""
+"\n"
+"\n"
+"You found a bug in GNU Parted! Here's what you have to do:\n"
+"\n"
+"Don't panic! The bug has most likely not affected any of your data.\n"
+"Help us to fix this bug by doing the following:\n"
+"\n"
+"Check whether the bug has already been fixed by checking\n"
+"the last version of GNU Parted that you can find at:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Please check this version prior to bug reporting.\n"
+"\n"
+"If this has not been fixed yet or if you don't know how to check,\n"
+"please visit the GNU Parted website:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"for further information.\n"
+"\n"
+"Your report should contain the version of this release (%s)\n"
+"along with the error message below, the output of\n"
+"\n"
+"\tparted DEVICE unit co print unit s print\n"
+"\n"
+"and the following history of commands you entered.\n"
+"Also include any additional information about your setup you\n"
+"consider important.\n"
+msgstr ""
+
+#: parted/ui.c:291
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+
+#: parted/ui.c:354
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+
+#: parted/ui.c:360
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+
+#: parted/ui.c:365
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+
+#: parted/ui.c:389
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:394
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+
+#: parted/ui.c:399
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:404
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+
+#: parted/ui.c:409
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+
+#: parted/ui.c:414
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+
+#: parted/ui.c:419
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+
+#: parted/ui.c:424
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+
+#: parted/ui.c:429
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+
+#: parted/ui.c:453
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+
+#: parted/ui.c:458
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+
+#: parted/ui.c:463
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+
+#: parted/ui.c:468
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+
+#: parted/ui.c:473
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+
+#: parted/ui.c:478
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+
+#: parted/ui.c:891
+#, fuzzy, c-format
+msgid "invalid token: %s"
+msgstr "No s'ha pogut obrir %s"
+
+#: parted/ui.c:1048
+msgid "Expecting a partition number."
+msgstr "S'esperava un múmero de partició."
+
+#: parted/ui.c:1057
+msgid "Partition doesn't exist."
+msgstr "La partició no existeix."
+
+#: parted/ui.c:1077
+msgid "Expecting a file system type."
+msgstr "S'esperava un tipus de sistema de fitxers."
+
+#: parted/ui.c:1084
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Tipus de sistema de fitxers desconegut \"%s\"."
+
+#: parted/ui.c:1105
+msgid "Expecting a disk label type."
+msgstr "S'esperava un tipus de etiqueta de dics."
+
+#: parted/ui.c:1203
+msgid "Can't create any more partitions."
+msgstr "No es pot crear cap més partició."
+
+#: parted/ui.c:1213
+msgid "Expecting a partition type."
+msgstr "S'esperava un tipus de partició."
+
+#: parted/ui.c:1361
+msgid "on"
+msgstr "on"
+
+#: parted/ui.c:1362
+msgid "off"
+msgstr "off"
+
+#: parted/ui.c:1379
+msgid "optimal"
+msgstr ""
+
+#: parted/ui.c:1380
+msgid "minimal"
+msgstr ""
+
+#: parted/ui.c:1513
+msgid "OPTIONs:"
+msgstr "OPCIONS:"
+
+#: parted/ui.c:1518
+msgid "COMMANDs:"
+msgstr "ORDRES:"
+
+#: parted/ui.c:1521
+#, c-format
+msgid ""
+"\n"
+"Report bugs to %s\n"
+msgstr ""
+
+#: parted/ui.c:1528
+#, c-format
+msgid "Using %s\n"
+msgstr "Utilitzant %s\n"
+
+#: parted/ui.c:1602
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr ""
+
+#, fuzzy
+#~ msgid "too few arguments"
+#~ msgstr "Massa pàgines incorrectes."
+
+#, fuzzy
+#~ msgid "too many arguments"
+#~ msgstr "Massa pàgines incorrectes."
+
+#, fuzzy
+#~ msgid "invalid minor device number: %s"
+#~ msgstr "No s'ha pogut obrir %s"
+
+#~ msgid "Could not detect file system."
+#~ msgstr "No s'ha pogut detectar el sistema de fitxers."
+
+#, fuzzy
+#~ msgid "The file system is bigger than its volume!"
+#~ msgstr "El sistema de fitxers és més gran que ho és el volum!"
+
+#~ msgid "Support for opening %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "El suport per obrir sistemes de fitxers de %s encara no està implementat."
+
+#~ msgid "Support for creating %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "El suport per crear sistemes de fitxers de %s encara no està implementat."
+
+#~ msgid "Support for checking %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "El suport per comprovar sistemes de fitxers de %s encara no està "
+#~ "implementat."
+
+#~ msgid "raw block copying"
+#~ msgstr "copiant bloc raw"
+
+#~ msgid "growing file system"
+#~ msgstr "sistema de fitxers creixent"
+
+#~ msgid "Can't copy onto an overlapping partition."
+#~ msgstr "No es pot copiar a una partició solapada."
+
+#, fuzzy
+#~ msgid ""
+#~ "Direct support for copying file systems is not yet implemented for %s.  "
+#~ "However, support for resizing is implemented.  Therefore, the file system "
+#~ "can be copied if the new partition is at least as big as the old one.  "
+#~ "So, either shrink the partition you are trying to copy, or copy to a "
+#~ "bigger partition."
+#~ msgstr ""
+#~ "Support directe per copiar sistemes de fitxers encara no ha estat "
+#~ "implementada per %s. No obstant, si que està implementat el suport per el "
+#~ "redimensionament. Per tant, el sistema de fitxers pot ser copiat si la "
+#~ "nova partició és, com a mínim, tant gran com la antiga. Per tant, o es "
+#~ "contrau la partició que es vol copiar o es copia a una partició més gran."
+
+#~ msgid "Support for copying %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Suport per copiar sistemes de fitxers %s encara no està implementat."
+
+#~ msgid "Support for resizing %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "El suport per redimensionar sistemes de fitxers de %s encara no està "
+#~ "implementat."
+
+#, fuzzy
+#~ msgid "The file system is in an invalid state.  Perhaps it is mounted?"
+#~ msgstr ""
+#~ "El sistema de fitxers té una signatura invàlida per a un sistema de "
+#~ "fitxers FAT."
+
+#, fuzzy
+#~ msgid "checking"
+#~ msgstr "comprova"
+
+#, fuzzy
+#~ msgid ""
+#~ "The reiserfs file system passed a basic check.  For a more comprehensive "
+#~ "check, run reiserfsck --check."
+#~ msgstr ""
+#~ "El sistema de fitxers ext2 ha passat una comprovació bàsica. Per una "
+#~ "comprovació més completa utilitzar el programa e2fsck."
+
+#, fuzzy
+#~ msgid "Sorry, can't move the start of reiserfs partitions yet."
+#~ msgstr ""
+#~ "Ho sento, no es pot moure encara el començament de les particions ext2"
+
+#~ msgid "shrinking"
+#~ msgstr "encongint"
+
+#, fuzzy
+#~ msgid "expanding"
+#~ msgstr "Perill"
+
+#, fuzzy
+#~ msgid "Device is too small for %lu blocks."
+#~ msgstr "Sistema de fitxers massa petit per ext2."
+
+#~ msgid "Inconsistent group descriptors!"
+#~ msgstr "Grup de descriptors inconsistent!"
+
+#, fuzzy
+#~ msgid "File system full!"
+#~ msgstr "Sistema de fitxers ple!"
+
+#, fuzzy
+#~ msgid "Invalid superblock.  Are you sure this is an ext2 file system?"
+#~ msgstr "Superblock invàlid. Segur que és un sistema de fitxers ext2?"
+
+#, fuzzy
+#~ msgid "File system has errors!  You should run e2fsck."
+#~ msgstr "El sistema de fitxers té errors! Has d'executar e2fsck."
+
+#, fuzzy
+#~ msgid ""
+#~ "File system was not cleanly unmounted!  You should run e2fsck.  Modifying "
+#~ "an unclean file system could cause severe corruption."
+#~ msgstr ""
+#~ "El sistema de fitxers no ha estat desmuntat correctament! S'ha d'executar "
+#~ "e2fsck."
+
+#~ msgid "Error allocating buffer cache."
+#~ msgstr "Error en la reserva de la memòria cau de la memòria intermèdia"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found an inode with a incorrect link count.  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "S'ha trobat un inode amb un número d'enllaços incorrecte. Millor que "
+#~ "primer s'executi e2fsck."
+
+#~ msgid "Not enough free inodes!"
+#~ msgstr "No hi ha suficients inodes lliures!"
+
+#, fuzzy
+#~ msgid "File system is too full to remove a group!"
+#~ msgstr "El sistema de fitxers està massa ocupat a suprimir un grup!"
+
+#, fuzzy
+#~ msgid "File system has too many allocated inodes to remove a group!"
+#~ msgstr ""
+#~ "El sistema de fitxers té massa inodes reservats per suprimir un grup!"
+
+#~ msgid "adding groups"
+#~ msgstr "afegint grups"
+
+#, fuzzy
+#~ msgid "Your file system is too full to resize it to %i blocks.  Sorry."
+#~ msgstr ""
+#~ "El sistema de fitxers està massa ocupat en redimensionar-se a %i blocs.Ho "
+#~ "sento."
+
+#, fuzzy
+#~ msgid ""
+#~ "Your file system has too many occupied inodes to resize it to %i blocks.  "
+#~ "Sorry."
+#~ msgstr ""
+#~ "El sistema de fitxers té massa inodes ocupats per redimensionar-se a %i "
+#~ "blocs.Ho sento."
+
+#, fuzzy
+#~ msgid "File system was not cleanly unmounted!  You should run e2fsck."
+#~ msgstr ""
+#~ "El sistema de fitxers no ha estat desmuntat correctament! S'ha d'executar "
+#~ "e2fsck."
+
+#, fuzzy
+#~ msgid "Cross-linked blocks found!  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "S'ha trobat blocs amb enllaços creuats! Millor que primer s'executi "
+#~ "e2fsck!"
+
+#, fuzzy
+#~ msgid "Block %i has no reference?  Weird."
+#~ msgstr "El bloc %i no té referència? Extrany"
+
+#, fuzzy
+#~ msgid "Block %i shouldn't have been marked (%d, %d)!"
+#~ msgstr "El bloc %i no hauria d'estar marcat!"
+
+#, fuzzy
+#~ msgid ""
+#~ "The ext2 file system passed a basic check.  For a more comprehensive "
+#~ "check, use the e2fsck program."
+#~ msgstr ""
+#~ "El sistema de fitxers ext2 ha passat una comprovació bàsica. Per una "
+#~ "comprovació més completa utilitzar el programa e2fsck."
+
+#~ msgid "Sorry, can't move the start of ext2 partitions yet!"
+#~ msgstr ""
+#~ "Ho sento, no es pot moure encara el començament de les particions ext2"
+
+#~ msgid "Couldn't flush buffer cache!"
+#~ msgstr "No s'ha pogut buidar la memòria cau de la memòria intermèdia!"
+
+#~ msgid "writing per-group metadata"
+#~ msgstr "escribint metadata per-grup"
+
+#~ msgid "File system too small for ext2."
+#~ msgstr "Sistema de fitxers massa petit per ext2."
+
+#, fuzzy
+#~ msgid ""
+#~ "You need %s of free disk space to shrink this partition to this size.  "
+#~ "Currently, only %s is free."
+#~ msgstr ""
+#~ "Es necessiten %dM d'espai lliure per contraure aquesta partició a aquesta "
+#~ "mida (actualment només hi ha %dM lliures)"
+
+#~ msgid ""
+#~ "Cluster start delta = %d, which is not a multiple of the cluster size %d."
+#~ msgstr ""
+#~ "El començament delta de cluster = %d, que no és multiple de la mida de "
+#~ "cluster %d. "
+
+#, fuzzy
+#~ msgid "Partition too big/small for a %s file system."
+#~ msgstr "Partició massa gran/petita per un sistema de fitxers %s"
+
+#~ msgid ""
+#~ "The FATs don't match.  If you don't know what this means, then select "
+#~ "cancel, run scandisk on the file system, and then come back."
+#~ msgstr ""
+#~ "Les FATs no coincideixen. Si no saps què vols dir aixó, llavors "
+#~ "selecciona cancelar, executa scandisk al sistema de fitxers, i després "
+#~ "torna."
+
+#~ msgid "There are no possible configurations for this FAT type."
+#~ msgstr "No hi ha configuracions possibles per aquest tipus de FAT."
+
+#~ msgid ""
+#~ "File system doesn't have expected sizes for Windows to like it.  Cluster "
+#~ "size is %dk (%dk expected); number of clusters is %d (%d expected); size "
+#~ "of FATs is %d sectors (%d expected)."
+#~ msgstr ""
+#~ "El sistema de fitxers no té unes mides que agradin a Windows. La mida de "
+#~ "clúster es %dk (hauria de ser de %dk); el número de clústers és de %d "
+#~ "(hauria de ser de %d); la mida de FAT és de %d sectors ( hauria de ser de "
+#~ "%d sectors)."
+
+#~ msgid ""
+#~ "File system is reporting the free space as %d clusters, not %d clusters."
+#~ msgstr ""
+#~ "El sistema de fitxers diu que la mida de l'espai lliure en clústers és de "
+#~ "%d, no de %d clústers."
+
+#, fuzzy
+#~ msgid ""
+#~ "There's not enough room in the root directory for all of the files.  "
+#~ "Either cancel, or ignore to lose the files."
+#~ msgstr ""
+#~ "No hi ha espai suficient al directori root, per a tots els fitxers. O bé, "
+#~ "cancel·lar, o bé, Ignorar perdent els fitxers. "
+
+#~ msgid "Error writing to the root directory."
+#~ msgstr "Error escribint al directori root."
+
+#, fuzzy
+#~ msgid ""
+#~ "If you leave your file system as FAT16, then you will have no problems."
+#~ msgstr ""
+#~ "Si deixes el sistema de fitxers com FAT16, llavors no tindràs problemes"
+
+#~ msgid ""
+#~ "If you convert to FAT16, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual)."
+#~ msgstr ""
+#~ "Si converteixes a FAT16, i MS Windows està instal·lat a aquesta partició, "
+#~ "llavors hauràs de reinstal·lar el carregador d'arrencada de MS Windows. "
+#~ "Si vols fer aixó, hauries de consultar el manual de Parted ( o el manual "
+#~ "de la teva distribució)."
+
+#~ msgid ""
+#~ "If you leave your file system as FAT32, then you will not introduce any "
+#~ "new problems."
+#~ msgstr ""
+#~ "Si deixes el teu sistema de fitxers com a FAT32, llavors no tindràs més "
+#~ "problemes."
+
+#~ msgid ""
+#~ "If you convert to FAT32, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual).  Also, converting to FAT32 will make the file system unreadable "
+#~ "by MS DOS, MS Windows 95a, and MS Windows NT."
+#~ msgstr ""
+#~ "Si converteixes a FAT32, i MS Windows està instal·lat a aquesta partició, "
+#~ "llavors hauràs de reinstal·lar el carregador d'arrencada de MS Windows. "
+#~ "Si vols fer aixó, hauries de consultar el manual de Parted ( o el manual "
+#~ "de la teva distribució). També, convertint a FAT32 faràs que MS DOS, MS "
+#~ "Windows 95a i Windows NT no puguin llegir el sistema de fitxers "
+
+#~ msgid "%s  %s  %s"
+#~ msgstr "%s  %s  %s"
+
+#~ msgid "Would you like to use FAT32?"
+#~ msgstr "Vol fer servir FAT32?"
+
+#~ msgid "%s  %s"
+#~ msgstr "%s  %s"
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT16."
+#~ msgstr ""
+#~ "El sistema de fitxers només pot ser redimensionada a aquesta mida "
+#~ "covertint-la a FAT16."
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT32."
+#~ msgstr ""
+#~ "El sistema de fitxers només pot ser redimensionada a aquesta mida "
+#~ "covertint-la a FAT32."
+
+#, fuzzy
+#~ msgid ""
+#~ "GNU Parted cannot resize this partition to this size.  We're working on "
+#~ "it!"
+#~ msgstr ""
+#~ "GNU Parted no por redimensionar aquesta partició a aquesta mida. Estem "
+#~ "treballant en aixó!"
+
+#~ msgid "Bad directory entry for %s: first cluster is the end of file marker."
+#~ msgstr ""
+#~ "Entrada de directori incorrecta per %s: el primer clúster és el final de "
+#~ "la marca de fitxer."
+
+#~ msgid ""
+#~ "Bad FAT: unterminated chain for %s.  You should run dosfsck or scandisk."
+#~ msgstr ""
+#~ "FAT incorrecta: cadena sense acabar per %s. Has de executar dosfsck o "
+#~ "scandisk."
+
+#, fuzzy
+#~ msgid ""
+#~ "Bad FAT: cluster %d outside file system in chain for %s.  You should run "
+#~ "dosfsck or scandisk."
+#~ msgstr ""
+#~ "FAT incorrecta: clúster %d fora del sistema de fitxers a la cadena per "
+#~ "%s. Has de executar dosfsck o scandisk."
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d is cross-linked for %s.  You should run dosfsck or "
+#~ "scandisk."
+#~ msgstr ""
+#~ "FAT incorrecta: clúster %d té un enllaç creuat per %s. Has d'executar "
+#~ "dosfsck o scandisk."
+
+#, fuzzy
+#~ msgid "%s is %dk, but it has %d clusters (%dk)."
+#~ msgstr "%s és %dk, però té %d clústers (%dk)."
+
+#~ msgid ""
+#~ "The file %s is marked as a system file.  This means moving it could cause "
+#~ "some programs to stop working."
+#~ msgstr ""
+#~ "El fitxer %s està marcat com un sistema de fitxers.  Això vol dir que si "
+#~ "el moveu por ocasionar que alguns programes no funcionin."
+
+#~ msgid ""
+#~ "FAT %d media %x doesn't match the boot sector's media %x.  You should "
+#~ "probably run scandisk."
+#~ msgstr ""
+#~ "La FAT %d del medi %x no coincideix amb sector boot del medi %x.  Hauries "
+#~ "d'executar scandisk."
+
+#, fuzzy
+#~ msgid "fat_table_set: cluster %ld outside file system"
+#~ msgstr "fat_table_set: clúster %ld fora del sistema de fitxers"
+
+#, fuzzy
+#~ msgid "fat_table_get: cluster %ld outside file system"
+#~ msgstr "fat_table_get: clúster %ld fora del sistema de fitxers"
+
+#~ msgid "fat_table_alloc_cluster: no free clusters"
+#~ msgstr "fat_table_alloc_cluster: no hi ha clústers lliures"
+
+#~ msgid "Too many bad pages."
+#~ msgstr "Massa pàgines incorrectes."
+
+#, fuzzy
+#~ msgid "writing HFS Master Directory Block"
+#~ msgstr "Error escribint al directori root."
+
+#, fuzzy
+#~ msgid "Error while writing the allocation file."
+#~ msgstr "Error escribint al directori root."
+
+#, fuzzy
+#~ msgid "Error while writing the compatibility part of the allocation file."
+#~ msgstr "Error escribint al directori root."
+
+#, fuzzy
+#~ msgid "shrinking HFS wrapper"
+#~ msgstr "encongint"
+
+#, fuzzy
+#~ msgid "Journal offset or size is not multiple of the sector size."
+#~ msgstr ""
+#~ "El començament delta de cluster = %d, que no és multiple de la mida de "
+#~ "cluster %d. "
+
+#, fuzzy
+#~ msgid "Some header fields are not multiple of the sector size."
+#~ msgstr ""
+#~ "El començament delta de cluster = %d, que no és multiple de la mida de "
+#~ "cluster %d. "
+
+#, fuzzy
+#~ msgid "Could not cache the file system in memory."
+#~ msgstr "No s'ha pogut detectar el sistema de fitxers."
+
+#~ msgid "Source device?"
+#~ msgstr "Dispositiu d'origen?"
+
+#~ msgid "Source partition number?"
+#~ msgstr "Número de partició d'origen?"
+
+#, fuzzy
+#~ msgid "Can't copy an extended partition."
+#~ msgstr "No es poden copiar particions exteses."
+
+#~ msgid "Destination partition number?"
+#~ msgstr "Número de partició destí?"
+
+#, fuzzy
+#~ msgid ""
+#~ "An extended partition cannot hold a file system.  Did you want mkpart?"
+#~ msgstr ""
+#~ "Les particions exteses no poden tenir sistemes de fitxers.  Voleu "
+#~ "executar mkpart?"
+
+#, fuzzy
+#~ msgid "Can't move an extended partition."
+#~ msgstr "No es poden moure particions exteses"
+
+#~ msgid "Can't move a partition onto itself.  Try using resize, perhaps?"
+#~ msgstr ""
+#~ "No es por moure una partició a ella mateixa.  Vols redimensionar-la, "
+#~ "potser?"
+
+#~ msgid "Minor: %d\n"
+#~ msgstr "Minor: %d\n"
+
+#, fuzzy
+#~ msgid "Flags: %s\n"
+#~ msgstr "Flags:"
+
+#~ msgid "File System: %s\n"
+#~ msgstr "Sistema de fitxers:%s\n"
+
+#, fuzzy
+#~ msgid "Size:         "
+#~ msgstr "Mida:         %10.3fMb (%d%%)\n"
+
+#, fuzzy
+#~ msgid "Minimum size: "
+#~ msgstr "Mida mínima: %10.3fMb (%d%%)\n"
+
+#, fuzzy
+#~ msgid "Maximum size: "
+#~ msgstr "Mida màxima: %10.3fMb (%d%%)\n"
+
+#~ msgid "check"
+#~ msgstr "comprova"
+
+#, fuzzy
+#~ msgid ""
+#~ "check NUMBER                             do a simple check on the file "
+#~ "system"
+#~ msgstr ""
+#~ "comprova MINOR                 fa una simple comprovació al sistema de "
+#~ "fitxers"
+
+#~ msgid "cp"
+#~ msgstr "cp"
+
+#, fuzzy
+#~ msgid ""
+#~ "cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   copy file system to another "
+#~ "partition"
+#~ msgstr ""
+#~ "cp [DESDE-DISPOS] DE-MINOR A-MINOR      copia un sistema de fitxers a una "
+#~ "altra partició"
+
+#~ msgid "mkfs"
+#~ msgstr "mkfs"
+
+#, fuzzy
+#~ msgid ""
+#~ "mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on "
+#~ "partition NUMBER"
+#~ msgstr ""
+#~ "mkfs MINOR TIPUS-SF      crea un sistema de fitxers TIPUS-SF a la "
+#~ "partició MINOR"
+
+#~ msgid "mkpartfs"
+#~ msgstr "mkpartfs"
+
+#, fuzzy
+#~ msgid ""
+#~ "mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file "
+#~ "system"
+#~ msgstr ""
+#~ "mkpartfs TIPUS-PART TIPUS-SF INICI FI      crea una partició amb un "
+#~ "sistema de fitxers"
+
+#~ msgid "move"
+#~ msgstr "move"
+
+#, fuzzy
+#~ msgid "move NUMBER START END                    move partition NUMBER"
+#~ msgstr "move MINOR INICI FI          mou la partició MINOR"
+
+#~ msgid "resize"
+#~ msgstr "resize"
+
+#, fuzzy
+#~ msgid ""
+#~ "resize NUMBER START END                  resize partition NUMBER and its "
+#~ "file system"
+#~ msgstr ""
+#~ "rescatar INICI FI        rescata particions perdudes entre INICI i FI"
+
+#, fuzzy
+#~ msgid "Unable to determine the block size of this dasd"
+#~ msgstr "No s'ha pogut determinar la mida de %s (%s)"
+
+#, fuzzy
+#~ msgid ""
+#~ "The kernel was unable to re-read the partition table on %s (%s).  This "
+#~ "means Linux won't know anything about the modifications you made until "
+#~ "you reboot.  You should reboot your computer before doing anything with "
+#~ "%s."
+#~ msgstr ""
+#~ "El kernel no ha pogut rellegir la taula de particions a %s (%s).Aixó vol "
+#~ "dir que Linux no reconeixerà cap de les modificacions fetes. Heu "
+#~ "d'arrencar la màquina abans de fer res amb %s."
+
+#~ msgid ""
+#~ "The sector size on %s is %d bytes.  Parted is known not to work properly "
+#~ "with drives with sector sizes other than %d bytes"
+#~ msgstr ""
+#~ "La mida del sector a %s és de %d bytes. Parted no funcionarà correctament "
+#~ "amb discs d'una mida de sector diferent de %d bytes"
+
+#~ msgid "Device %s has dodgey geometry."
+#~ msgstr "El dispositiu %s té una geometria incorrecte."
+
+#~ msgid "IDE"
+#~ msgstr "IDE"
+
+#~ msgid "SCSI"
+#~ msgstr "SCSI"
+
+#~ msgid "Device %s is neither a SCSI nor IDE drive."
+#~ msgstr "El dispositiu %s no és ni SCSI ni IDE"
+
+#~ msgid "Error reading %s (%s) to determine if partition is mounted."
+#~ msgstr "Error al llegir %s (%s) per determinar si la partició està muntada."
+
+#~ msgid ""
+#~ "The partition table on %s is inconsistent.  There are many reasons why "
+#~ "this might be the case.  However, the most likely reason is that Linux "
+#~ "detected the BIOS geometry for %s incorrectly.  GNU Parted suspects the "
+#~ "real geometry should be %d/%d/%d (not %d/%d/%d).  You should check with "
+#~ "your BIOS first, as this may not be correct.  You can inform Linux by "
+#~ "adding the parameter %s=%d,%d,%d to the command line.  See the LILO or "
+#~ "GRUB documentation for more information.  If you think Parted's suggested "
+#~ "geometry is correct, you may select Ignore to continue (and fix Linux "
+#~ "later).  Otherwise, select Cancel (and fix Linux and/or the BIOS now)."
+#~ msgstr ""
+#~ "La taula de particions a %s és inconsistent.  Hi ha diverses raons per "
+#~ "les quals es pot donar aquest error.  Però la més comú sol ser que Linux "
+#~ "ha detectat la geometria de la BIOS de %s incorrectament. GNU Parted creu "
+#~ "que la autèntica geometria ha de ser %d/%d/%d ( i no %d/%d/%d). Primer "
+#~ "s'ha de comprovar la BIOS que sigui correcta. Es pot especificar a Linux "
+#~ "afegint el paràmetre %s=%d,%d,%d a la línia de comandes. Veieu la "
+#~ "documentació de LILO o GRUB per més informació. Si es creu que la "
+#~ "geometria que suggereix Parted és correcta, seleccioneu Ignorar per "
+#~ "continuar ( i arregleu Linux després). Si no, seleccioneu Cancel·lar ( i "
+#~ "arregleu Linux i/o la BIOS ara mateix)."
+
+#~ msgid ""
+#~ "The partition table on %s is inconsistent.  There are many reasons why "
+#~ "this might be the case.  Often, the reason is that Linux detected the "
+#~ "BIOS geometry incorrectly.  However, this does not appear to be the case "
+#~ "here.  It is safe to ignore,but ignoring may cause (fixable) problems "
+#~ "with some boot loaders, and may cause problems with FAT file systems.  "
+#~ "Using LBA is recommended."
+#~ msgstr ""
+#~ "La taula de particions a %s és inconsistent. Hi ha diverses raons per les "
+#~ "quals es pot donar aquest error. Però la més comú sol ser que Linux ha "
+#~ "detectat la geometria de la BIOS incorrectament. No obstant, no sembla "
+#~ "ser el cas aqui. El més segur és Ignorar, però ignorant pot causar "
+#~ "problemes (que es podren arreglar) en alguns carregadors d'arrencada i "
+#~ "també pot donar problemes amb sistemes de fitxers FAT. Es recomana "
+#~ "utilitzar LBA."
+
+#~ msgid ""
+#~ "Unable to align partition properly.  This probably means that another "
+#~ "partitioning tool generated an incorrect partition table, because it "
+#~ "didn't have the correct BIOS geometry.  It is safe to ignore,but ignoring "
+#~ "may cause (fixable) problems with some boot loaders."
+#~ msgstr ""
+#~ "No s'ha pogut aliniar la partició correctament. Aixó vol dir que, "
+#~ "probablement, que un altre gestor de particions ha generat una taula de "
+#~ "particions incorrecta ja que no té una correcta geometria a la BIOS. El "
+#~ "més segur és Ignorar, però si s'ignora pot causar problemes (que es "
+#~ "podren arreglar)amb alguns carregadors d'arrencada."
+
+#~ msgid "Attempt to read sectors %ld-%ld outside of partition on %s"
+#~ msgstr "S'ha intentat llegir sectors %ld-%ld fora de la partició a %s"
+
+#~ msgid ""
+#~ "This ext2 filesystem has a rather strange layout!  Parted can't resize "
+#~ "this (yet)."
+#~ msgstr ""
+#~ "Aquest sistema de fitxers ext2 té un disseny bastant extrany! Parted "
+#~ "(encara) no el pot redimensionar."
+
+#~ msgid "Filesystem has incompatible feature enabled"
+#~ msgstr "El sistema de fitxers té una característica incompatible activada"
+
+#~ msgid "File system has an invalid signature for a FAT file systems."
+#~ msgstr ""
+#~ "El sistema de fitxers té una signatura invàlida per a un sistema de "
+#~ "fitxers FAT."
+
+#~ msgid ""
+#~ "The FATs aren't big enough to describe all clusters!  Each FAT is %d "
+#~ "sectors.  There are %d clusters, which would require each FAT to be %d "
+#~ "sectors.  This is REALLY weird.  You might want to write us an email: bug-"
+#~ "parted@gnu.org"
+#~ msgstr ""
+#~ "Les FATs no són el suficientment grans per descriure tots els clústers!  "
+#~ "Cada FAT és de %d sectors.  Hi ha %d clústers, que vol dir que cada FAT "
+#~ "tingui %d sectors.  Això és molt extrany. Ens podries escriure un e-mail "
+#~ "a: bug-parted@gnu.org"
+
+#~ msgid "where necessary, prompts for user intervention"
+#~ msgstr "quan és necessari, pregunta a l'usuari"
+
+#~ msgid "START and END are in megabytes\n"
+#~ msgstr "INICI i FI són en megabytes\n"
+
+#~ msgid "Partition is being used."
+#~ msgstr "La partició s'està utilitzant."
+
+#~ msgid ""
+#~ "You requested to move the partition to %.3f-%.3fMb. The closest Parted "
+#~ "can manage is %.3f-%.3fMb."
+#~ msgstr ""
+#~ "Has demanat de moure una partició a %.3f-%.3fMb. El més proper que Parted "
+#~ "pot manegar és %.3f-%.3fMb."
+
+#~ msgid "Disk geometry for %s: 0.000-%.3f megabytes\n"
+#~ msgstr "La geometria del disc per %s: 0.000-%.3f megabytes\n"
+
+#~ msgid "Disk label type: %s\n"
+#~ msgstr "Tipus d'etiqueta: %s\n"
+
+#~ msgid "Minor    Start       End     "
+#~ msgstr "Minor    Inici       Fi     "
+
+#~ msgid "Type      "
+#~ msgstr "Tipus      "
+
+#~ msgid "Filesystem  "
+#~ msgstr "Sistema de fitxers  "
+
+#~ msgid "Name                  "
+#~ msgstr "Nom                   "
+
+#~ msgid ""
+#~ "You requested to resize the partition to %.3f-%.3fMb. The closest Parted "
+#~ "can manage is %.3f-%.3fMb."
+#~ msgstr ""
+#~ "Has demanat redimensionar una partició a %.3f-%.3fMb. El més proper que "
+#~ "Parted pot manegar és %.3f-%.3fMb."
+
+#~ msgid ""
+#~ "print [MINOR]                 display the partition table, or a partition"
+#~ msgstr ""
+#~ "print[MINOR]                  mostra la taula de particions; o una "
+#~ "partició"
+
+#~ msgid "resize MINOR START END        resize filesystem on partition MINOR"
+#~ msgstr ""
+#~ "resize MINOR INICI FI        redimensiona el sistema de fitxers a la "
+#~ "partició MINOR"
+
+#~ msgid ""
+#~ "You found a bug in GNU Parted.  Please email a bug report to bug-"
+#~ "parted@gnu.org containing the version (%s), and the following message:\n"
+#~ msgstr ""
+#~ "Has trobat un bug a GNU Parted. Si-us-plau, envia-ns un e-mail amb un "
+#~ "informe a bug-parted@gnu.org que inclogui la versió (%s), i el següent "
+#~ "missatge:\n"
+
+#~ msgid ""
+#~ "  You have Windows FAT partition(s) that are not using LBA.  If your BIOS "
+#~ "supports LBA, then you should switch to LBA by setting the LBA flag on "
+#~ "all FAT partitions.  Otherwise, make sure the operating system and the "
+#~ "BIOS have the same geometry before resizing any FAT partitions."
+#~ msgstr ""
+#~ "  Tens particion(s) Windows FAT que no fan servir LBA. Si la teva BIOS "
+#~ "suporta LBA, llavors hauries d'activar el flag LBA a totes les particions "
+#~ "FAT. D'altra manera, assegura't que el sistema operatiu i la BIOS tenen "
+#~ "la mateixa geometria abans de canviar de mida qualservol partició FAT."
+
+#~ msgid ""
+#~ "The operating system thinks the geometry on %s is %d/%d/%d.  Therefore, "
+#~ "cylinder 1024 ends at %.3fM.%s"
+#~ msgstr ""
+#~ "El sistema operatiu creu que la geometria a %s és %d/%d/%d.  El cilindre "
+#~ "1024 acaba a %.3fM.%s"
+
+#~ msgid "The operating system thinks the geometry on %s is %d/%d/%d.%s"
+#~ msgstr "El sistema operatiu creu que la geometria a %s és %d/%d/%d.%s"
diff --git a/po/cs.gmo b/po/cs.gmo
new file mode 100644 (file)
index 0000000..1b9fa28
Binary files /dev/null and b/po/cs.gmo differ
diff --git a/po/cs.po b/po/cs.po
new file mode 100644 (file)
index 0000000..ba69242
--- /dev/null
+++ b/po/cs.po
@@ -0,0 +1,3426 @@
+# Czech translation of parted.
+# Copyright (C) 2003, 2007 Miloslav Trmac <mitr@volny.cz>
+# Miloslav Trmac <mitr@volny.cz>, 2003, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: parted 1.8.8\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2011-05-30 13:45+0200\n"
+"PO-Revision-Date: 2007-09-11 14:02+0200\n"
+"Last-Translator: Miloslav Trmac <mitr@volny.cz>\n"
+"Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n"
+"Language: cs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/argmatch.c:133
+#, fuzzy, c-format
+msgid "invalid argument %s for %s"
+msgstr "neplatný token: %s"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr ""
+
+#: lib/argmatch.c:153
+#, fuzzy, c-format
+msgid "Valid arguments are:"
+msgstr "neplatný token: %s"
+
+#: lib/closeout.c:112 libparted/labels/fdasd.c:107
+msgid "write error"
+msgstr "chyba při zápisu"
+
+#: lib/error.c:181
+msgid "Unknown system error"
+msgstr "Neznámá chyba systému"
+
+#: lib/getopt.c:548 lib/getopt.c:577
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
+msgstr "%s: přepínač `%s' není jednoznačný\n"
+
+#: lib/getopt.c:625 lib/getopt.c:629
+#, fuzzy, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s: přepínač `--%s' nepovoluje parametr\n"
+
+#: lib/getopt.c:638 lib/getopt.c:643
+#, fuzzy, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr "%s: přepínač `%c%s' nepovoluje parametr\n"
+
+#: lib/getopt.c:686 lib/getopt.c:705
+#, fuzzy, c-format
+msgid "%s: option '--%s' requires an argument\n"
+msgstr "%s: přepínač `%s' vyžaduje parametr\n"
+
+#: lib/getopt.c:743 lib/getopt.c:746
+#, fuzzy, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s: neznámý přepínač `--%s'\n"
+
+#: lib/getopt.c:754 lib/getopt.c:757
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "%s: neznámý přepínač `%c%s'\n"
+
+#: lib/getopt.c:806 lib/getopt.c:809
+#, fuzzy, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: neplatný přepínač -- %c\n"
+
+#: lib/getopt.c:859 lib/getopt.c:876 lib/getopt.c:1084 lib/getopt.c:1102
+#, fuzzy, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: přepínač vyžaduje parametr -- %c\n"
+
+#: lib/getopt.c:932 lib/getopt.c:948
+#, fuzzy, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s: přepínač `-W %s' není jednoznačný\n"
+
+#: lib/getopt.c:972 lib/getopt.c:990
+#, fuzzy, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr "%s: přepínač `-W %s' nepovoluje parametr\n"
+
+#: lib/getopt.c:1011 lib/getopt.c:1029
+#, fuzzy, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: přepínač `%s' vyžaduje parametr\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:271
+msgid "`"
+msgstr "„"
+
+#: lib/quotearg.c:272
+msgid "'"
+msgstr "”"
+
+#: lib/regcomp.c:133
+msgid "Success"
+msgstr "Úspěch"
+
+#: lib/regcomp.c:136
+msgid "No match"
+msgstr "Žádný výskyt"
+
+#: lib/regcomp.c:139
+msgid "Invalid regular expression"
+msgstr "Neplatný regulární výraz"
+
+#: lib/regcomp.c:142
+msgid "Invalid collation character"
+msgstr "Neplatný řadicí znak"
+
+#: lib/regcomp.c:145
+msgid "Invalid character class name"
+msgstr "Neplatný název třídy znaků"
+
+#: lib/regcomp.c:148
+msgid "Trailing backslash"
+msgstr "Koncové zpětné lomítko"
+
+#: lib/regcomp.c:151
+msgid "Invalid back reference"
+msgstr "Neplatný odkaz zpět"
+
+#: lib/regcomp.c:154
+msgid "Unmatched [ or [^"
+msgstr "Nepárová [ nebo [^"
+
+#: lib/regcomp.c:157
+msgid "Unmatched ( or \\("
+msgstr "Nepárová ( nebo \\("
+
+#: lib/regcomp.c:160
+msgid "Unmatched \\{"
+msgstr "Nepárová \\{"
+
+#: lib/regcomp.c:163
+msgid "Invalid content of \\{\\}"
+msgstr "Neplatný obsah \\{\\}"
+
+#: lib/regcomp.c:166
+msgid "Invalid range end"
+msgstr "Neplatný konec rozsahu"
+
+#: lib/regcomp.c:169
+msgid "Memory exhausted"
+msgstr "Došla paměť"
+
+#: lib/regcomp.c:172
+msgid "Invalid preceding regular expression"
+msgstr "Neplatný předchozí regulární výraz"
+
+#: lib/regcomp.c:175
+msgid "Premature end of regular expression"
+msgstr "Předčasný konec regulárního výrazu"
+
+#: lib/regcomp.c:178
+msgid "Regular expression too big"
+msgstr "Regulární výraz je příliš velký"
+
+#: lib/regcomp.c:181
+msgid "Unmatched ) or \\)"
+msgstr "Nepárová ) nebo \\)"
+
+#: lib/regcomp.c:702
+msgid "No previous regular expression"
+msgstr "Žádný předchozí regulární výraz"
+
+#. TRANSLATORS: A regular expression testing for an affirmative answer
+#. (english: "yes").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^yesexpr='
+#: lib/rpmatch.c:147
+msgid "^[yY]"
+msgstr "^[aA]"
+
+#. TRANSLATORS: A regular expression testing for a negative answer
+#. (english: "no").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^noexpr='
+#: lib/rpmatch.c:160
+msgid "^[nN]"
+msgstr "^[nN]"
+
+#: lib/version-etc.c:74
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr ""
+
+#: lib/version-etc.c:77
+#, c-format
+msgid "Packaged by %s\n"
+msgstr ""
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale.  Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:84
+msgid "(C)"
+msgstr "©"
+
+#: lib/version-etc.c:86
+#, fuzzy
+msgid ""
+"\n"
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"\n"
+"License GPLv3+: GNU GPL verze 3 nebo novější <http://gnu.org/licenses/gpl."
+"html>\n"
+"Toto je free software: můžete je měnit a dále šířit.\n"
+"Není poskytována ŽÁDNÁ ZÁRUKA, v rozsahu povoleném zákonem.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:102
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Napsal(a) %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:106
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Napsali %s a %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:110
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Napsali %s, %s a %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Napsali %s, %s, %s\n"
+"a %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Napsali %s, %s, %s,\n"
+"%s a %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:131
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Napsali %s, %s, %s,\n"
+"%s, %s a %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:139
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Napsali %s, %s, %s,\n"
+"%s, %s, %s a %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:147
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Napsali %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"a %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:156
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Napsali %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s a %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:167
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Napsali %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s a další.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package.  Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:245
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Report bugs to: %s\n"
+msgstr ""
+"\n"
+"Chyby hlaste na <%s>.\n"
+
+#: lib/version-etc.c:247
+#, fuzzy, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr ""
+"\n"
+"Chyby hlaste na <%s>.\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr ""
+
+#: lib/version-etc.c:253
+#, c-format
+msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
+msgstr ""
+
+#: lib/version-etc.c:256
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "došla paměť"
+
+#: lib/xstrtol-error.c:63
+#, fuzzy, c-format
+msgid "invalid %s%s argument `%s'"
+msgstr "neplatný token: %s"
+
+#: lib/xstrtol-error.c:68
+#, fuzzy, c-format
+msgid "invalid suffix in %s%s argument `%s'"
+msgstr "neplatný token: %s"
+
+#: lib/xstrtol-error.c:72
+#, fuzzy, c-format
+msgid "%s%s argument `%s' too large"
+msgstr "neplatný token: %s"
+
+#: libparted/arch/beos.c:245
+msgid "Disk Image"
+msgstr "Obraz disku"
+
+#: libparted/arch/beos.c:346 libparted/arch/gnu.c:277
+#: libparted/arch/linux.c:1545
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "Chyba při otevírání %s: %s"
+
+#: libparted/arch/beos.c:357 libparted/arch/gnu.c:287
+#: libparted/arch/linux.c:1556
+#, c-format
+msgid "Unable to open %s read-write (%s).  %s has been opened read-only."
+msgstr ""
+"Nemohu otevřít %s pro čtení/zápis (%s). %s bylo otevřeno jen pro čtení."
+
+#: libparted/arch/beos.c:419 libparted/arch/linux.c:1714
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s při seek pro čtení %s"
+
+#: libparted/arch/beos.c:452 libparted/arch/gnu.c:465 libparted/arch/gnu.c:564
+#: libparted/arch/gnu.c:692 libparted/arch/linux.c:1674
+#: libparted/arch/linux.c:1755
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s při čtení %s"
+
+#: libparted/arch/beos.c:488 libparted/arch/gnu.c:525
+#: libparted/arch/linux.c:1831
+#, c-format
+msgid "Can't write to %s, because it is opened read-only."
+msgstr "Nemohu zapisovat na %s, protože je otevřen jen pro čtení."
+
+#: libparted/arch/beos.c:504 libparted/arch/linux.c:1856
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s při seek pro zápis na %s"
+
+#: libparted/arch/beos.c:541 libparted/arch/gnu.c:601 libparted/arch/gnu.c:646
+#: libparted/arch/gnu.c:723 libparted/arch/linux.c:1804
+#: libparted/arch/linux.c:1898 libparted/arch/linux.c:1970
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s při zápisu na %s"
+
+#: partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Pro více informací zkuste `%s --help'.\n"
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr "použití: %s [PŘEPÍNAČ] [ZAŘÍZENÍ]...\n"
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the operating system about partition table changes.\n"
+"\n"
+"  -d, --dry-run    do not actually inform the operating system\n"
+"  -s, --summary    print a summary of contents\n"
+"  -h, --help       display this help and exit\n"
+"  -v, --version    output version information and exit\n"
+msgstr ""
+"Informovat operační systém o změnách tabulky oddílů.\n"
+"\n"
+"  -d, --dry-run    ve skutečnosti operační systém neinformovat\n"
+"  -s, --summary    vypsat souhrn obsahu\n"
+"  -h, --help       zobrazit tuto nápovědu a skončit\n"
+"  -v, --version    vypsat informace o verzi a skončit\n"
+
+#: partprobe/partprobe.c:150
+msgid ""
+"\n"
+"When no DEVICE is given, probe all partitions.\n"
+msgstr ""
+"\n"
+"Když není zadáno ZAŘÍZENÍ, prozkoumat všechny oddíly.\n"
+
+#: partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Chyby hlaste na <%s>.\n"
+
+#: libparted/arch/gnu.c:110
+#, c-format
+msgid "Unable to open %s."
+msgstr "Nemohu otevřít %s."
+
+#: libparted/arch/gnu.c:130
+msgid "Unable to probe store."
+msgstr "Nemohu prozkoumat úložný prostor."
+
+#: libparted/arch/gnu.c:368
+msgid ""
+"The partition table cannot be re-read.  This means you need to reboot before "
+"mounting any modified partitions.  You also need to reinstall your boot "
+"loader before you reboot (which may require mounting modified partitions).  "
+"It is impossible do both things!  So you'll need to boot off a rescue disk, "
+"and reinstall your boot loader from the rescue disk.  Read section 4 of the "
+"Parted User documentation for more information."
+msgstr ""
+"Nebylo možné znovu načíst tabulku oddílů. To znamená, že budete muset před "
+"připojením změněných oddílů restartovat počítač. Také musíte před restartem "
+"reinstalovat svůj zavaděč systému (což může vyžadovat připojení změněných "
+"oddílů). Nelze provést obojí! Takže budete muset zavést systém ze "
+"záchranného disku a reinstalovat svůj zavaděč systému odtud. Pro více "
+"informací si přečtěte oddíl 4 Uživatelské dokumentace Parted."
+
+#: libparted/arch/gnu.c:385
+#, c-format
+msgid ""
+"The partition table on %s cannot be re-read (%s).  This means the Hurd knows "
+"nothing about any modifications you made.  You should reboot your computer "
+"before doing anything with %s."
+msgstr ""
+"Tabulku oddílů na %s nelze znovu načíst (%s). To znamená, že Hurd neví nic o "
+"změnách, které jste provedli. Než budete cokoli dělat s %s, měli byste "
+"restartovat svůj počítač."
+
+#: libparted/arch/gnu.c:396 parted/parted.c:1967
+msgid ""
+"You should reinstall your boot loader before rebooting.  Read section 4 of "
+"the Parted User documentation for more information."
+msgstr ""
+"Před restartem byste měli reinstalovat svůj zavaděč systému. Pro více "
+"informací si přečtěte oddíl 4 Uživatelské dokumentace Parted."
+
+#: libparted/arch/gnu.c:788
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%s při pokusu sync %s na disk"
+
+#: libparted/arch/linux.c:520
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "Nemohu stat zařízení %s - %s."
+
+#: libparted/arch/linux.c:577
+#, fuzzy, c-format
+msgid "Unable to determine the dm type of %s."
+msgstr "Nemohu určit velikost %s (%s)."
+
+#: libparted/arch/linux.c:669
+#, fuzzy, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+"Nemohu zjistit velikost sektoru pro %s: %s.\n"
+"Používám implicitní velikost sektoru (%lld)."
+
+#: libparted/arch/linux.c:690
+#, fuzzy, c-format
+msgid ""
+"Could not determine physical sector size for %s.\n"
+"Using the logical sector size (%lld)."
+msgstr ""
+"Nemohu zjistit velikost sektoru pro %s: %s.\n"
+"Používám implicitní velikost sektoru (%lld)."
+
+#: libparted/arch/linux.c:746
+#, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "Nemohu určit velikost %s (%s)."
+
+#: libparted/arch/linux.c:832
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "Nemohu získat identitu zařízení %s - %s"
+
+#: libparted/arch/linux.c:841
+msgid "Generic IDE"
+msgstr "Obecné IDE"
+
+#: libparted/arch/linux.c:862
+#, c-format
+msgid ""
+"Device %s has multiple (%d) logical sectors per physical sector.\n"
+"GNU Parted supports this EXPERIMENTALLY for some special disk label/file "
+"system combinations, e.g. GPT and ext2/3.\n"
+"Please consult the web site for up-to-date information."
+msgstr ""
+"Zařízení %s má několik (%d) logických sektorů na fyzický sektor.\n"
+"GNU Parted to EXPERIMENTÁLNĚ podporuje pro některé konkrétní kombinace "
+"jmenovky disku/systému souborů, např. GPT a ext2/3.\n"
+"Pro aktuální informace prosím navštivte WWW server."
+
+#: libparted/arch/linux.c:1039
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "Chyba při inicializaci zařízení SCSI %s - %s"
+
+#: libparted/arch/linux.c:1103
+#, fuzzy, c-format
+msgid ""
+"The device %s is so small that it cannot possibly store a file system or "
+"partition table.  Perhaps you selected the wrong device?"
+msgstr ""
+"Zařízení %s má nulovou délku a nemůže obsahovat systém souborů nebo tabulku "
+"oddílů. Možná jste vybrali špatné zařízení?"
+
+#: libparted/arch/linux.c:1216
+#, c-format
+msgid ""
+"Unable to determine geometry of file/device %s.  You should not use Parted "
+"unless you REALLY know what you're doing!"
+msgstr ""
+"Nemohu určit geometrii souboru/zařízení %s. Neměli byste používat Parted, "
+"pokud OPRAVDU nevíte, co děláte!"
+
+#: libparted/arch/linux.c:1276
+msgid "Generic SD/MMC Storage Card"
+msgstr ""
+
+#: libparted/arch/linux.c:1329
+msgid "DAC960 RAID controller"
+msgstr "Řadič RAID DAC960"
+
+#: libparted/arch/linux.c:1334
+msgid "Promise SX8 SATA Device"
+msgstr "Zařízení Promise SX8 SATA"
+
+#: libparted/arch/linux.c:1339
+msgid "ATA over Ethernet Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1345
+msgid "IBM S390 DASD drive"
+msgstr "Disk IBM S390 DASD"
+
+#: libparted/arch/linux.c:1351
+msgid "IBM iSeries Virtual DASD"
+msgstr "Virtuální DASD IBM iSeries"
+
+#: libparted/arch/linux.c:1356
+msgid "Compaq Smart Array"
+msgstr "Compaq Smart Array"
+
+#: libparted/arch/linux.c:1361
+msgid "ATARAID Controller"
+msgstr "Řadič ATARAID"
+
+#: libparted/arch/linux.c:1366
+msgid "I2O Controller"
+msgstr "Řadič I2O"
+
+#: libparted/arch/linux.c:1371
+msgid "User-Mode Linux UBD"
+msgstr "UBD User-mode Linuxu"
+
+#: libparted/arch/linux.c:1384
+#, fuzzy, c-format
+msgid "Linux device-mapper (%s)"
+msgstr "Linux device-mapper"
+
+#: libparted/arch/linux.c:1395
+msgid "Xen Virtual Block Device"
+msgstr "Virtuální blokové zařízení Xenu"
+
+#: libparted/arch/linux.c:1400
+msgid "Unknown"
+msgstr "Neznámý"
+
+#: libparted/arch/linux.c:1409
+#, fuzzy
+msgid "Virtio Block Device"
+msgstr "Virtuální blokové zařízení Xenu"
+
+#: libparted/arch/linux.c:1414
+msgid "Linux Software RAID Array"
+msgstr ""
+
+#: libparted/arch/linux.c:1421
+msgid "ped_device_new()  Unsupported device type"
+msgstr "ped_device_new()  Nepodporovaný typ zařízení"
+
+#: libparted/arch/linux.c:1518 libparted/arch/linux.c:1590
+#, fuzzy, c-format
+msgid "Error fsyncing/closing %s: %s"
+msgstr "Chyba při otevírání %s: %s"
+
+#: libparted/arch/linux.c:1754
+#, c-format
+msgid "end of file while reading %s"
+msgstr ""
+
+#: libparted/arch/linux.c:2390
+#, c-format
+msgid ""
+"Error informing the kernel about modifications to partition %s -- %s.  This "
+"means Linux won't know about any changes you made to %s until you reboot -- "
+"so you shouldn't mount it or use it in any way before rebooting."
+msgstr ""
+"Chyba při informování jádra o změnách oddílu %s — %s. To znamená, že Linux "
+"nebude vědět o změnách, které provedli na %s, dokud nerestartujete systém — "
+"takže byste jej neměli připojovat nebo jej před restartem jakkoli používat."
+
+#: libparted/arch/linux.c:2528
+#, fuzzy, c-format
+msgid "Unable to determine the size and length of %s."
+msgstr "Nemohu určit velikost %s (%s)."
+
+#: libparted/arch/linux.c:2553
+#, fuzzy, c-format
+msgid "Failed to add partition %d (%s)"
+msgstr "%s : Nemohučíst blok oddílu %llu\n"
+
+#: libparted/arch/linux.c:2580
+#, c-format
+msgid ""
+"Partition(s) %s on %s have been written, but we have been unable to inform "
+"the kernel of the change, probably because it/they are in use.  As a result, "
+"the old partition(s) will remain in use.  You should reboot now before "
+"making further changes."
+msgstr ""
+
+#: libparted/arch/linux.c:2706
+#, c-format
+msgid ""
+"parted was unable to re-read the partition table on %s (%s).  This means "
+"Linux won't know anything about the modifications you made. "
+msgstr ""
+"parted nemohl znovu načíst tabulku oddílů na %s (%s). To znamená, že Linux "
+"nebude vědět nic o změnách, které jste provedli."
+
+#: libparted/cs/geom.c:161
+#, fuzzy, c-format
+msgid "Can't have the end before the start! (start sector=%jd length=%jd)"
+msgstr "Nemohu mít konec před začátkem!"
+
+#: libparted/cs/geom.c:169
+msgid "Can't have a partition outside the disk!"
+msgstr "Nemohu mít oddíl mimo disk!"
+
+#: libparted/cs/geom.c:384
+#, c-format
+msgid "Attempt to write sectors %ld-%ld outside of partition on %s."
+msgstr "Pokus zapisovat sektory %ld-%ld mimo oddíl na %s."
+
+#: libparted/cs/geom.c:424
+msgid "checking for bad blocks"
+msgstr "hledám špatné bloky"
+
+#: libparted/debug.c:96
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr "Backtrace má na zásobníku %d volání:\n"
+
+#: libparted/debug.c:109
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr "Tvrzení (%s) na %s:%d ve funkci %s() selhalo."
+
+#: libparted/disk.c:192
+#, c-format
+msgid "%s: unrecognised disk label"
+msgstr "%s: neznámá jmenovka disku"
+
+#: libparted/disk.c:484
+#, c-format
+msgid ""
+"This libparted doesn't have write support for %s.  Perhaps it was compiled "
+"read-only."
+msgstr ""
+"Tato libparted nemá podporu pro zápis pro %s. Možná byla přeložena jen pro "
+"čtení."
+
+#: libparted/disk.c:629
+#, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "Oddíl %d je %s, ale systém souborů je %s."
+
+#: libparted/disk.c:838
+msgid "cylinder_alignment"
+msgstr ""
+
+#: libparted/disk.c:844
+#, fuzzy, c-format
+msgid "Unknown disk flag, %d."
+msgstr "Neznámý příznak oddílu, %d."
+
+#: libparted/disk.c:1283
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "Jmenovky disku %s nepodporují rozšířené oddíly."
+
+#: libparted/disk.c:1858
+#, c-format
+msgid "%s disk labels don't support logical or extended partitions."
+msgstr "Jmenovky disku %s nepodporují logické nebo rozšířené oddíly."
+
+#: libparted/disk.c:1871
+msgid "Too many primary partitions."
+msgstr "Příliš mnoho primárních oddílů."
+
+#: libparted/disk.c:1880
+#, c-format
+msgid ""
+"Can't add a logical partition to %s, because there is no extended partition."
+msgstr "Nemohu přidat logický oddíl do %s, protože neexistuje rozšířený oddíl."
+
+#: libparted/disk.c:1904
+#, c-format
+msgid "Can't have more than one extended partition on %s."
+msgstr "Nemohu mít více než jeden rozšířený oddíl na %s."
+
+#: libparted/disk.c:1914
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr "Nemohu mít logické oddíly mimo rozšířený oddíl."
+
+#: libparted/disk.c:1939
+#, c-format
+msgid "Can't have a logical partition outside of the extended partition on %s."
+msgstr "Nemohu mít logický oddíl mimo rozšířený oddíl na %s."
+
+#: libparted/disk.c:1949 libparted/disk.c:2008 libparted/disk.c:2186
+msgid "Can't have overlapping partitions."
+msgstr "Nemohu mít překrývající se oddíly."
+
+#: libparted/disk.c:1957
+msgid "Can't have a primary partition inside an extended partition."
+msgstr "Nemohu mít primární oddíl uvnitř rozšířeného oddílu."
+
+#: libparted/disk.c:2387
+msgid "metadata"
+msgstr "metadata"
+
+#: libparted/disk.c:2389
+msgid "free"
+msgstr "volné"
+
+#: libparted/disk.c:2391 parted/ui.c:1194 parted/ui.c:1222
+msgid "extended"
+msgstr "rozšířený"
+
+#: libparted/disk.c:2393 parted/ui.c:1198 parted/ui.c:1226
+msgid "logical"
+msgstr "logický"
+
+#: libparted/disk.c:2395 parted/ui.c:1190 parted/ui.c:1218
+msgid "primary"
+msgstr "primární"
+
+#: libparted/disk.c:2411
+msgid "boot"
+msgstr "boot"
+
+#: libparted/disk.c:2413
+msgid "bios_grub"
+msgstr ""
+
+#: libparted/disk.c:2415
+msgid "root"
+msgstr "root"
+
+#: libparted/disk.c:2417
+msgid "swap"
+msgstr "swap"
+
+#: libparted/disk.c:2419
+msgid "hidden"
+msgstr "skrytý"
+
+#: libparted/disk.c:2421
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2423
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2425
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2427
+msgid "hp-service"
+msgstr "hp-service"
+
+#: libparted/disk.c:2429
+msgid "palo"
+msgstr "palo"
+
+#: libparted/disk.c:2431
+msgid "prep"
+msgstr "prep"
+
+#: libparted/disk.c:2433
+msgid "msftres"
+msgstr "msftres"
+
+#: libparted/disk.c:2435
+msgid "atvrecv"
+msgstr ""
+
+#: libparted/disk.c:2437
+msgid "diag"
+msgstr ""
+
+#: libparted/disk.c:2439
+msgid "legacy_boot"
+msgstr ""
+
+#: libparted/disk.c:2445
+#, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Neznámý příznak oddílu, %d."
+
+#: libparted/exception.c:77
+msgid "Information"
+msgstr "Informace"
+
+#: libparted/exception.c:78
+msgid "Warning"
+msgstr "Varování"
+
+#: libparted/exception.c:79
+msgid "Error"
+msgstr "Chyba"
+
+#: libparted/exception.c:80
+msgid "Fatal"
+msgstr "Fatální"
+
+#: libparted/exception.c:81
+msgid "Bug"
+msgstr "Chyba"
+
+#: libparted/exception.c:82
+msgid "No Implementation"
+msgstr "Neimplementováno"
+
+#: libparted/exception.c:86
+msgid "Fix"
+msgstr "Opravit"
+
+#: libparted/exception.c:87
+msgid "Yes"
+msgstr "Ano"
+
+#: libparted/exception.c:88
+msgid "No"
+msgstr "Ne"
+
+#: libparted/exception.c:89
+msgid "OK"
+msgstr "OK"
+
+#: libparted/exception.c:90
+msgid "Retry"
+msgstr "Znovu"
+
+#: libparted/exception.c:91
+msgid "Ignore"
+msgstr "Ignorovat"
+
+#: libparted/exception.c:92
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: libparted/exception.c:132
+#, fuzzy, c-format
+msgid ""
+"A bug has been detected in GNU Parted.  Refer to the web site of parted "
+"http://www.gnu.org/software/parted/parted.html for more information of what "
+"could be useful for bug submitting!  Please email a bug report to %s "
+"containing at least the version (%s) and the following message:  "
+msgstr ""
+"Byla detekována chyba v GNU parted. Pro více informací o tom, co je užitečné "
+"při hlášení chyb, viz WWW server partedu http://www.gnu.org/software/parted/"
+"parted.html! Pošlete prosím e-mailem hlášení o chybě na bug-parted@gnu.org "
+"obsahující alespoň verzi (%s) a následující zprávu:"
+
+#: libparted/labels/aix.c:103
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr "Podpora pro čtení jmenovek disku AIXu ještě není implementována."
+
+#: libparted/labels/aix.c:114
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr "Podpora pro zápis jmenovek disku AIXu ještě není implementována."
+
+#: libparted/labels/aix.c:127
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr ""
+"Podpora pro přidávání oddílů do jmenovek disku AIXu ještě není "
+"implementována."
+
+#: libparted/labels/aix.c:137
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr ""
+"Podpora pro duplikování oddílů ve jmenovkách disku AIXu ještě není "
+"implementována."
+
+#: libparted/labels/aix.c:155
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr ""
+"Podpora pro nastavování typu systému oddílů ve jmenovkách disku AIXu ještě "
+"není implementována."
+
+#: libparted/labels/aix.c:165
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr ""
+"Podpora pro nastavování přepínačů ve jmenovkách disku AIXu ještě není "
+"implementována."
+
+#: libparted/labels/bsd.c:571 libparted/labels/dasd.c:833
+#: libparted/labels/dos.c:2176 libparted/labels/dvh.c:787
+#: libparted/labels/gpt.c:1782 libparted/labels/loop.c:247
+#: libparted/labels/mac.c:1426 libparted/labels/pc98.c:748
+#: libparted/labels/rdb.c:1052 libparted/labels/sun.c:780
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "Nemohu splnit všechna omezení na oddíl."
+
+#: libparted/labels/bsd.c:596
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "Nemohu alokovat položku jmenovky disku bsd."
+
+#: libparted/labels/dasd.c:859
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "Nemohu alokovat položku jmenovky disku dasd"
+
+#: libparted/labels/dos.c:966
+#, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr "Neplatná tabulka oddílů na %s - nesprávný podpis %x."
+
+#: libparted/labels/dos.c:994
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "Neplatná tabulka oddílů - rekurzivní oddíl na %s."
+
+#: libparted/labels/dos.c:1504
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr "Rozšířené oddíly nelze na jmenovkách disku msdos skrývat."
+
+#: libparted/labels/dos.c:2158
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+"Parted neumí měnit velikost oddílů spravovaných pomocí Windows Dynamic Disk."
+
+#: libparted/labels/dvh.c:200
+#, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr "%s nemá rozšířený oddíl (oddíl hlavičky svazku)."
+
+#: libparted/labels/dvh.c:326
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr ""
+"Kontrolní součet je špatně, což indikuje, že tabulka oddílů je poškozená."
+
+#: libparted/labels/dvh.c:631
+msgid "Only primary partitions can be root partitions."
+msgstr "Jen primární oddíly mohou být kořenové oddíly."
+
+#: libparted/labels/dvh.c:645
+msgid "Only primary partitions can be swap partitions."
+msgstr "Jen primární oddíly mohou být odkládací oddíly."
+
+#: libparted/labels/dvh.c:659
+msgid "Only logical partitions can be a boot file."
+msgstr "Jen logické oddíly mohou být zaváděcí soubor."
+
+#: libparted/labels/dvh.c:736
+#, fuzzy, c-format
+msgid ""
+"failed to set dvh partition name to %s:\n"
+"Only logical partitions (boot files) have a name."
+msgstr "Jen logické oddíly (zaváděcí soubory) mají název."
+
+#: libparted/labels/dvh.c:829
+msgid "Too many primary partitions"
+msgstr "Příliš mnoho primárních oddílů"
+
+#: libparted/labels/fdasd.c:98
+msgid "open error"
+msgstr "chyba při otevírání"
+
+#: libparted/labels/fdasd.c:101
+msgid "seek error"
+msgstr "chyba při posunu"
+
+#: libparted/labels/fdasd.c:104
+msgid "read error"
+msgstr "chyba při čtení"
+
+#: libparted/labels/fdasd.c:110
+msgid "ioctl() error"
+msgstr "chyba při ioctl()"
+
+#: libparted/labels/fdasd.c:114
+msgid "API version mismatch"
+msgstr "Nesoulad verzí API"
+
+#: libparted/labels/fdasd.c:118
+msgid "Unsupported disk type"
+msgstr "Nepodporovaný typ disku"
+
+#: libparted/labels/fdasd.c:122
+msgid "Unsupported disk format"
+msgstr "Nepodporovaný formát disku"
+
+#: libparted/labels/fdasd.c:126
+msgid "Disk is in use"
+msgstr "Disk se používá"
+
+#: libparted/labels/fdasd.c:130
+msgid "Syntax error in config file"
+msgstr "Chyba syntaxe v souboru s nastavením"
+
+#: libparted/labels/fdasd.c:134
+msgid "Volume label is corrupted"
+msgstr "Jmenovka svazku je poškozena"
+
+#: libparted/labels/fdasd.c:138
+msgid "A data set name is corrupted"
+msgstr "Název sady dat je poškozen"
+
+#: libparted/labels/fdasd.c:142
+msgid "Memory allocation failed"
+msgstr "Alokace paměti selhala"
+
+#: libparted/labels/fdasd.c:146
+msgid "Device verification failed"
+msgstr "Ověřování zařízení selhalo"
+
+#: libparted/labels/fdasd.c:147
+msgid "The specified device is not a valid DASD device"
+msgstr "Zadané zařízení není platné zařízení DASD"
+
+#: libparted/labels/fdasd.c:150 libparted/labels/vtoc.c:179
+msgid "Fatal error"
+msgstr "Fatální chyba"
+
+#: libparted/labels/fdasd.c:226
+msgid "No room for volume label."
+msgstr "Není místo na jmenovku svazku."
+
+#: libparted/labels/fdasd.c:234
+msgid "No room for partition info."
+msgstr "Není místo pro informace o oddílech."
+
+#: libparted/labels/fdasd.c:709
+msgid "Invalid VTOC."
+msgstr "Neplatná VTOC."
+
+#: libparted/labels/fdasd.c:766
+msgid "Could not retrieve API version."
+msgstr "Nemohu získat verzi API."
+
+#: libparted/labels/fdasd.c:769
+#, c-format
+msgid ""
+"The current API version '%d' doesn't match dasd driver API version '%d'!"
+msgstr "Aktuální verze API '%d' neodpovídá verzi API ovladače '%d'!"
+
+#: libparted/labels/fdasd.c:806
+msgid "Could not retrieve disk geometry information."
+msgstr "Nemohu získat informace o geometrii disku."
+
+#: libparted/labels/fdasd.c:810
+msgid "Could not retrieve blocksize information."
+msgstr "Nemohu získat informace o velikosti bloku."
+
+#: libparted/labels/fdasd.c:815
+msgid "Could not retrieve disk information."
+msgstr "Nemohu získat informace o disku."
+
+#: libparted/labels/gpt.c:493
+#, c-format
+msgid ""
+"%s contains GPT signatures, indicating that it has a GPT table.  However, it "
+"does not have a valid fake msdos partition table, as it should.  Perhaps it "
+"was corrupted -- possibly by a program that doesn't understand GPT partition "
+"tables.  Or perhaps you deleted the GPT table, and are now using an msdos "
+"partition table.  Is this a GPT partition table?"
+msgstr ""
+"%s obsahuje podpisy GPT, což naznačuje, že má tabulku GPT. Nemá ale platnou "
+"falešnou tabulku oddílů msdos, kterou by měl mít. Možná byla poškozena — "
+"např. programem, který nerozumí tabulkám oddílů GPT. Nebo jste možná "
+"odstranili tabulku oddílů GPT a nyní používáte tabulku oddílů msdos. Je toto "
+"tabulka oddílů GPT?"
+
+#: libparted/labels/gpt.c:693
+#, fuzzy, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise.  Please report this!"
+msgstr ""
+"Formát tabulky oddílů GPT je verze %x, což je novější, než kterou umí "
+"rozpoznat Parted. Oznamte nám to prosím! bug-parted@gnu.org"
+
+#: libparted/labels/gpt.c:740
+#, c-format
+msgid ""
+"Not all of the space available to %s appears to be used, you can fix the GPT "
+"to use all of the space (an extra %llu blocks) or continue with the current "
+"setting? "
+msgstr ""
+"Zřejmě se nepoužívá všechno dostupné místo na %s, můžete opravit GPT, aby "
+"používala všechno místo (dalších %llu bloků) nebo pokračovat se současným "
+"nasatvením? "
+
+#: libparted/labels/gpt.c:952
+msgid ""
+"The backup GPT table is not at the end of the disk, as it should be.  This "
+"might mean that another operating system believes the disk is smaller.  Fix, "
+"by moving the backup to the end (and removing the old backup)?"
+msgstr ""
+"Záložní tabulka GPT není na konci disku, jak by měla být. To možná znamená, "
+"že jiný operační systém si myslí, že disk je menší. Mám to opravit "
+"přesunutím zálohy na konec (a odstraněním staré zálohy)?"
+
+#: libparted/labels/gpt.c:976
+msgid ""
+"Both the primary and backup GPT tables are corrupt.  Try making a fresh "
+"table, and using Parted's rescue feature to recover partitions."
+msgstr ""
+"Primární i záložní tabulka GPT je poškozena. Zkuste vytvořit novou tabulku a "
+"obnovit oddíly pomocí schopnosti Partedu rescue."
+
+#: libparted/labels/gpt.c:987
+#, fuzzy
+msgid ""
+"The backup GPT table is corrupt, but the primary appears OK, so that will be "
+"used."
+msgstr ""
+"Primární tabulka GPT je poškozena, ale záloha se zdá být v pořádku, takže "
+"bude použita záloha."
+
+#: libparted/labels/gpt.c:999
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr ""
+"Primární tabulka GPT je poškozena, ale záloha se zdá být v pořádku, takže "
+"bude použita záloha."
+
+#: libparted/labels/gpt.c:1023
+msgid "primary partition table array CRC mismatch"
+msgstr ""
+
+#: libparted/labels/mac.c:184
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Neplatný podpis %x pro jmenovky disku Mac."
+
+#: libparted/labels/mac.c:231
+msgid "Partition map has no partition map entry!"
+msgstr "Mapa oddílů nemá žádnou položku mapy oddílů!"
+
+#: libparted/labels/mac.c:279
+#, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr "%s je příliš malý pro jmenovku disku Mac!"
+
+#: libparted/labels/mac.c:508
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "Oddíl %d má neplatný podpis %x."
+
+#: libparted/labels/mac.c:526
+#, c-format
+msgid "Partition %d has an invalid length of 0 bytes!"
+msgstr "Oddíl %d má neplatnou délku 0 bajtů."
+
+#: libparted/labels/mac.c:557
+msgid "The data region doesn't start at the start of the partition."
+msgstr "Datový region nezačíná na začátku oddílu."
+
+#: libparted/labels/mac.c:574
+msgid "The boot region doesn't start at the start of the partition."
+msgstr "Zaváděcí region nezačíná na začátku oddílu."
+
+#: libparted/labels/mac.c:588
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr "Zaváděcí region oddílu nezabírá celý oddíl."
+
+#: libparted/labels/mac.c:599
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr "Datový region oddílu nezabírá celý oddíl."
+
+#: libparted/labels/mac.c:652
+#, c-format
+msgid ""
+"Weird block size on device descriptor: %d bytes is not divisible by 512."
+msgstr ""
+"Podivná velikost bloku v deskriptoru zařízení: %d bajtů není dělitelné 512."
+
+#: libparted/labels/mac.c:665
+#, c-format
+msgid ""
+"The driver descriptor says the physical block size is %d bytes, but Linux "
+"says it is %d bytes."
+msgstr ""
+"Deskriptor ovladače říká, že fyzická velikost bloku je %d bajtů ale Linux "
+"říká, že je to %d bajtů."
+
+#: libparted/labels/mac.c:719
+msgid "No valid partition map found."
+msgstr "Nenalezena platná mapa oddílů."
+
+#: libparted/labels/mac.c:780
+#, c-format
+msgid ""
+"Conflicting partition map entry sizes!  Entry 1 says it is %d, but entry %d "
+"says it is %d!"
+msgstr ""
+"Kolidující velikosti položek mapy oddílů! Položka 1 říká, že je to %d, ale "
+"položka %d říká, že je to %d!"
+
+#: libparted/labels/mac.c:811
+msgid "Weird!  There are 2 partitions map entries!"
+msgstr "Podivné! Existují 2 položky mapy oddílu!"
+
+#: libparted/labels/mac.c:1357
+msgid ""
+"Changing the name of a root or swap partition will prevent Linux from "
+"recognising it as such."
+msgstr ""
+"Změna názvu kořenového nebo odkládacího oddílu zabrání Linuxu v jeho "
+"rozpoznání."
+
+#: libparted/labels/mac.c:1461
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr "Nemohu přidat další oddíl — mapa oddílů je příliš malá!"
+
+#: libparted/labels/pc98.c:331
+#, c-format
+msgid "Invalid partition table on %s."
+msgstr "Neplatná tabulka oddílů na %s."
+
+#: libparted/labels/pc98.c:384 libparted/labels/pc98.c:462
+#, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries.  This is still "
+"unsupported."
+msgstr ""
+"Oddíl %d není zarovnán na hranice cylindru. To pořád ještě není podporováno."
+
+#: libparted/labels/pc98.c:780
+msgid "Can't add another partition."
+msgstr "Nemohu přidat další oddíl."
+
+#: libparted/labels/pt-tools.c:125
+#, c-format
+msgid ""
+"partition length of %jd sectors exceeds the %s-partition-table-imposed "
+"maximum of %jd"
+msgstr ""
+
+#: libparted/labels/pt-tools.c:138
+#, c-format
+msgid ""
+"starting sector number, %jd exceeds the %s-partition-table-imposed maximum "
+"of %jd"
+msgstr ""
+
+#: libparted/labels/rdb.c:169
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr "%s : Špatný kontrolní součet bloku %llu typu %s."
+
+#: libparted/labels/rdb.c:484
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr "%s : Nenašel jsem blok rdb, to by se nemělo nikdy stát."
+
+#: libparted/labels/rdb.c:573
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr "%s : Na bloku %d detekována smyčka."
+
+#: libparted/labels/rdb.c:592
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr "%s : Seznam %s je zřejmě v bloku %s špatný."
+
+#: libparted/labels/rdb.c:691
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr "%s : Nemohu vypsat špatné bloky."
+
+#: libparted/labels/rdb.c:699
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr "%s : Nemohu vypsat bloky oddílu."
+
+#: libparted/labels/rdb.c:707
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr "%s : Nemohu vypsat bloky systému souborů."
+
+#: libparted/labels/rdb.c:715
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr "%s : Nemohu vypsat zaváděcí bloky."
+
+#: libparted/labels/rdb.c:742
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr "Nemohu zapsat blok oddílu na %d."
+
+#: libparted/labels/rdb.c:1080
+msgid "Unable to allocate a partition number."
+msgstr "Nemohu alokovat číslo oddílu."
+
+#: libparted/labels/sun.c:161
+msgid "Corrupted Sun disk label detected."
+msgstr "Detekována poškozená jmenovka disku Sun."
+
+#: libparted/labels/sun.c:276
+#, c-format
+msgid ""
+"The disk CHS geometry (%d,%d,%d) reported by the operating system does not "
+"match the geometry stored on the disk label (%d,%d,%d)."
+msgstr ""
+"Geometrie disku CHS (%d,%d,%d) ohlášená operačním systémem neodpovídá "
+"geometrii uložené v jmenovce disku (%d,%d,%d)."
+
+#: libparted/labels/sun.c:298
+#, c-format
+msgid "The disk label describes a disk bigger than %s."
+msgstr "Jmenovka disku popisuje disk větší než %s."
+
+#: libparted/labels/sun.c:473
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr "Disk má %d cylindrů, což je více než maximum 65536."
+
+#: libparted/labels/sun.c:812
+msgid ""
+"The Whole Disk partition is the only available one left.  Generally, it is "
+"not a good idea to overwrite this partition with a real one.  Solaris may "
+"not be able to boot without it, and SILO (the sparc boot loader) appreciates "
+"it as well."
+msgstr ""
+"Jediný zbývající oddíl je oddíl Celý disk. Obecně není dobrý nápad tento "
+"oddíl přepsat skutečným oddílem. Bez něj možná nebude možné zavést Solaris a "
+"SILO (zavaděč systému pro sparc) jej také ocení."
+
+#: libparted/labels/sun.c:827
+msgid "Sun disk label is full."
+msgstr "Jmenovka disku Sun je plná."
+
+#: libparted/labels/vtoc.c:164
+msgid "opening of device failed"
+msgstr "otevírání zařízení selhalo"
+
+#: libparted/labels/vtoc.c:168
+msgid "seeking on device failed"
+msgstr "posun v zařízení selhal"
+
+#: libparted/labels/vtoc.c:172
+msgid "writing to device failed"
+msgstr "zápis na zařízení selhal"
+
+#: libparted/labels/vtoc.c:176
+msgid "reading from device failed"
+msgstr "čtení ze zařízení selhalo"
+
+#: libparted/labels/vtoc.c:299 libparted/labels/vtoc.c:308
+#: libparted/labels/vtoc.c:329 libparted/labels/vtoc.c:336
+msgid "Could not read volume label."
+msgstr "Nemohu číst jmenovku svazku."
+
+#: libparted/labels/vtoc.c:356 libparted/labels/vtoc.c:363
+msgid "Could not write volume label."
+msgstr "Nemohu zapsat jmenovku svazku."
+
+#: libparted/labels/vtoc.c:469
+msgid "Could not read VTOC labels."
+msgstr "Nemohu číst jmenovky VTOC."
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr "Nemohu číst FMT1 DSCB VTOC."
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr "Nemohu číst FMT4 DSCB VTOC."
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr "Nemohu číst FMT5 DSCB VTOC."
+
+#: libparted/labels/vtoc.c:496
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr "Nemohu číst FMT7 DSCB VTOC."
+
+#: libparted/labels/vtoc.c:516
+msgid "Could not write VTOC labels."
+msgstr "Nemohu zapisovat jmenovky VTOC."
+
+#: libparted/labels/vtoc.c:522
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr "Nemohu zapisovat FMT1 DSCB VTOC."
+
+#: libparted/labels/vtoc.c:529
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr "Nemohu zapisovat FMT4 DSCB VTOC."
+
+#: libparted/labels/vtoc.c:536
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr "Nemohu zapisovat FMT5 DSCB VTOC."
+
+#: libparted/labels/vtoc.c:543
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr "Nemohu zapisovat FMT7 DSCB VTOC."
+
+#: libparted/libparted.c:230 libparted/libparted.c:245
+msgid "Out of memory."
+msgstr "Nedostatek paměti."
+
+#: libparted/unit.c:138
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr "Nemohu získat velikost jednotky pro speciální jednotku 'COMPACT'."
+
+#: libparted/unit.c:384
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr "\"%s\" má neplatnou syntax umístění."
+
+#: libparted/unit.c:392
+#, c-format
+msgid "The maximum head value is %d."
+msgstr "Maximální hodnota hlavy je %d."
+
+#: libparted/unit.c:399
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr "Maximální hodnota sektoru je %d."
+
+#: libparted/unit.c:411 libparted/unit.c:556
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr "Umístění %s je mimo zařízení %s."
+
+#: libparted/unit.c:531
+msgid "Invalid number."
+msgstr "Neplatné číslo."
+
+#: libparted/fs/amiga/affs.c:62 libparted/fs/amiga/apfs.c:55
+#: libparted/fs/amiga/asfs.c:69
+#, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "%s : Nemohu alokovat blok oddílu\n"
+
+#: libparted/fs/amiga/affs.c:77 libparted/fs/amiga/apfs.c:68
+#: libparted/fs/amiga/asfs.c:81
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr "%s : Nemohu alokovat blok\n"
+
+#: libparted/fs/amiga/affs.c:82 libparted/fs/amiga/apfs.c:73
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr "%s : Nemohu číst zaváděcí blok %llu\n"
+
+#: libparted/fs/amiga/affs.c:98 libparted/fs/amiga/apfs.c:84
+#: libparted/fs/amiga/asfs.c:87 libparted/fs/amiga/asfs.c:101
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr "%s : Nemohu číst kořenový blok %llu\n"
+
+#: libparted/fs/amiga/amiga.c:71
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr "%s : Nemohu alokovat prvek seznamu id\n"
+
+#: libparted/fs/amiga/amiga.c:188
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr "%s : Nemohu číst blok %llu\n"
+
+#: libparted/fs/amiga/amiga.c:201
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr "%s : Špatný kontrolní součet bloku %llu typu %s\n"
+
+#: libparted/fs/amiga/amiga.c:211
+#, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s : Nemohu zapsat blok %d\n"
+
+#: libparted/fs/amiga/amiga.c:277
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr "%s : Nemohu alokovat disk_specific blok rdb\n"
+
+#: libparted/fs/amiga/amiga.c:288
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr "%s : Nenašeljsem blok rdb, to by se nemělo nikdy stát\n"
+
+#: libparted/fs/amiga/amiga.c:317
+#, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr "%s : Nemohučíst blok oddílu %llu\n"
+
+#: libparted/fs/fat/fat.c:174
+msgid ""
+"GNU Parted was miscompiled: the FAT boot sector should be 512 bytes.  FAT "
+"support will be disabled."
+msgstr ""
+"GNU Parted byl nesprávně přeložen: zaváděcí sektor FAT by měl být 512 bajtů. "
+"Podpora FAT bude zakázána."
+
+#: libparted/fs/fat/bootsector.c:49 libparted/fs/fat/bootsector.c:56
+msgid "File system has an invalid signature for a FAT file system."
+msgstr "Systém souborů má neplatný podpis pro systém souborů FAT."
+
+#: libparted/fs/fat/bootsector.c:64
+msgid "File system has an invalid sector size for a FAT file system."
+msgstr "Systém souborů má neplatnou velikost sektoru pro systém souborů FAT."
+
+#: libparted/fs/fat/bootsector.c:71
+msgid "File system has an invalid cluster size for a FAT file system."
+msgstr "Systém souborů má neplatnou velikost clusteru pro systém souborů FAT."
+
+#: libparted/fs/fat/bootsector.c:78
+msgid ""
+"File system has an invalid number of reserved sectors for a FAT file system."
+msgstr ""
+"Systém souborů má neplatný počet rezervovaných sektorů pro systém souborů "
+"FAT."
+
+#: libparted/fs/fat/bootsector.c:85
+msgid "File system has an invalid number of FATs."
+msgstr "Systém souborů má neplatný počet FAT."
+
+#: libparted/fs/fat/bootsector.c:156
+#, c-format
+msgid ""
+"This file system has a logical sector size of %d.  GNU Parted is known not "
+"to work properly with sector sizes other than 512 bytes."
+msgstr ""
+"Systém souborů má logickou velikost sektoru %d. Ví se, že GNU Parted "
+"nepracuje správně s velikostí sektoru jinou než 512 bajtů."
+
+#: libparted/fs/fat/bootsector.c:181
+#, c-format
+msgid ""
+"The file system's CHS geometry is (%d, %d, %d), which is invalid.  The "
+"partition table's CHS geometry is (%d, %d, %d).  If you select Ignore, the "
+"file system's CHS geometry will be left unchanged.  If you select Fix, the "
+"file system's CHS geometry will be set to match the partition table's CHS "
+"geometry."
+msgstr ""
+"Geometrie CHS systému souborů je (%d, %d, %d), což není platné. Geometrie "
+"CHS tabulky oddílů je (%d, %d, %d). Zvolíte-li Ignorovat, geometrie CHS "
+"systému souborů bude ponechána beze změny. Zvolíte-li Opravit, geometrie CHS "
+"systému souborů bude nastavena tak, aby odpovídala geometrii CHS tabulky "
+"oddílů."
+
+#: libparted/fs/fat/bootsector.c:230
+msgid "FAT boot sector says logical sector size is 0.  This is weird. "
+msgstr ""
+"Zaváděcí sektor FAT říká, že logická velikost sektoru je 0. To je divné. "
+
+#: libparted/fs/fat/bootsector.c:236
+msgid "FAT boot sector says there are no FAT tables.  This is weird. "
+msgstr ""
+"Zaváděcí sektor FAT říká, že neexistuje žádná tabulka FAT. To je divné. "
+
+#: libparted/fs/fat/bootsector.c:242
+msgid "FAT boot sector says clusters are 0 sectors.  This is weird. "
+msgstr "Zaváděcí sektor FAT říká, že cluster je 0 sektorů. To je divné. "
+
+#: libparted/fs/fat/bootsector.c:252
+msgid "File system is FAT12, which is unsupported."
+msgstr "Systém souborů je FAT12, což není podporováno."
+
+#: libparted/fs/fat/bootsector.c:428
+#, c-format
+msgid ""
+"The information sector has the wrong signature (%x).  Select cancel for now, "
+"and send in a bug report.  If you're desperate, it's probably safe to ignore."
+msgstr ""
+"Sektor informací má nesprávný podpis (%x). Zatím zvolte Zrušit a pošlete "
+"hlášení o chybě. Pokud jste v úzkých, můžete to pravděpodobně bez obav "
+"ignorovat."
+
+#: libparted/fs/linux_swap/linux_swap.c:247
+#, fuzzy, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "Nerozpoznaný podpis odkládacího oddílu linuxu '%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:290
+#, fuzzy, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "Nerozpoznaný podpis odkládacího oddílu linuxu '%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:330
+#, fuzzy, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Nerozpoznaný podpis odkládacího oddílu linuxu '%10s'."
+
+#: libparted/fs/hfs/probe.c:50
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to "
+"%d bytes."
+msgstr ""
+"Parted nemůže používat systémy souborů HFS na disků s velikostí sektoru "
+"jinou než %d bajtů."
+
+#: parted/parted.c:123
+msgid "displays this help message"
+msgstr "zobrazí tuto zprávu nápovědy"
+
+#: parted/parted.c:124
+msgid "lists partition layout on all block devices"
+msgstr "vypíše rozložení oddílů na všech blokových zařízeních"
+
+#: parted/parted.c:125
+msgid "displays machine parseable output"
+msgstr "zobrazí strojově zpracovatelný výstup"
+
+#: parted/parted.c:126
+msgid "never prompts for user intervention"
+msgstr "nikdy nežádá o intervenci uživatele"
+
+#: parted/parted.c:127
+msgid "displays the version"
+msgstr "zobrazí verzi"
+
+#: parted/parted.c:128
+#, fuzzy
+msgid "alignment for new partitions"
+msgstr "Nemohu vytvářet další oddíly."
+
+#: parted/parted.c:140
+msgid ""
+"NUMBER is the partition number used by Linux.  On MS-DOS disk labels, the "
+"primary partitions number from 1 to 4, logical partitions from 5 onwards.\n"
+msgstr ""
+"ČÍSLO je číslo oddílu používané Linuxem. Na jmenovkách disku MS-DOS mají "
+"primární oddíly čísla 1-4 a logické oddíly od 5 dál.\n"
+
+#: parted/parted.c:143
+msgid "LABEL-TYPE is one of: "
+msgstr "TYP-JMENOVKY je jeden z: "
+
+#: parted/parted.c:144
+msgid "FLAG is one of: "
+msgstr "PŘEPÍNAČ je jeden z: "
+
+#: parted/parted.c:145
+msgid "UNIT is one of: "
+msgstr "JEDNOTKA je jedna z: "
+
+#: parted/parted.c:146
+msgid "desired alignment: minimum or optimal"
+msgstr ""
+
+#: parted/parted.c:147
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "TYP-ODDÍLU je jeden z: primary, logical, extended\n"
+
+#: parted/parted.c:149
+msgid "FS-TYPE is one of: "
+msgstr "TYP-FS je jeden z: "
+
+#: parted/parted.c:150
+msgid ""
+"START and END are disk locations, such as 4GB or 10%.  Negative values count "
+"from the end of the disk.  For example, -1s specifies exactly the last "
+"sector.\n"
+msgstr ""
+"ZAČÁTEK a KONEC jsou místa na disku, např. 4GB nebo 10%. Záporné hodnoty se "
+"počítají od konce disku. Například -1s určuje přesně poslední sektor.\n"
+
+#: parted/parted.c:153
+msgid "STATE is one of: on, off\n"
+msgstr "STAV je jeden z: on, off\n"
+
+#: parted/parted.c:154
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "ZAŘÍZENÍ je obvykle /dev/hda nebo /dev/sda\n"
+
+#: parted/parted.c:155
+msgid "NAME is any word you want\n"
+msgstr "NÁZEV je libovolné slovo\n"
+
+#: parted/parted.c:158
+msgid ""
+"Copyright (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"This program is free software, covered by the GNU General Public License.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+msgstr ""
+"Copyright © 1998 — 2006 Free Software Foundation, Inc.\n"
+"Toto je volné programové vybavení podle GNU General Public License.\n"
+"\n"
+"Tento program je rozšiřován v naději, že bude užitečný,\n"
+"ale BEZ JAKÉKOLI ZÁRUKY; ani bez předpokládané záruky\n"
+"PRODEJNOSTI nebo VHODNOSTI PRO KONKRÉTNÍ ÚČEL. Další\n"
+"podrobnosti najdete v GNU General Public License.\n"
+"\n"
+
+#: parted/parted.c:204
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(zbylý čas %.2d:%.2d)"
+
+#: parted/parted.c:223
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+"Oddíl %s se používá. Než jej budete upravovat Partedem, musíte jej odpojit."
+
+#: parted/parted.c:241
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "Oddíl(a) na %s jsou používány."
+
+#: parted/parted.c:253
+#, c-format
+msgid ""
+"The existing disk label on %s will be destroyed and all data on this disk "
+"will be lost. Do you want to continue?"
+msgstr ""
+"Existující jmenovka disku na %s bude zničena a všechna data na tomto disku "
+"budou ztracena. Chcete pokračovat?"
+
+#: parted/parted.c:502
+msgid "New disk label type?"
+msgstr "Typ nové jmenovky disku?"
+
+#: parted/parted.c:562
+msgid "Partition type?"
+msgstr "Typ oddílu?"
+
+#: parted/parted.c:580 parted/parted.c:766
+msgid "Partition name?"
+msgstr "Název oddílu?"
+
+#: parted/parted.c:588
+msgid "File system type?"
+msgstr "Typ souborového systému?"
+
+#: parted/parted.c:594 parted/parted.c:1342
+msgid "Start?"
+msgstr "Začátek?"
+
+#: parted/parted.c:596 parted/parted.c:1344
+msgid "End?"
+msgstr "Konec?"
+
+#: parted/parted.c:661
+#, fuzzy, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s.%s"
+msgstr ""
+"Požádali jste o oddíl od %s do %s.\n"
+"Nejbližší umístění, které zvládneme, je %s až %s. Je to pro vás ještě "
+"přijatelné?"
+
+#: parted/parted.c:666
+msgid ""
+"\n"
+"Is this still acceptable to you?"
+msgstr ""
+
+#: parted/parted.c:688
+msgid "The resulting partition is not properly aligned for best performance."
+msgstr ""
+
+#: parted/parted.c:763 parted/parted.c:1383 parted/parted.c:1455
+#: parted/parted.c:1489
+msgid "Partition number?"
+msgstr "Číslo oddílu?"
+
+#: parted/parted.c:841
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d.  Each cylinder is %s.\n"
+msgstr "Geometrie cylindr,hlava,sektor BIOSu: %d,%d,%d. Každý cylindr je %s.\n"
+
+#: parted/parted.c:881
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr "Model: %s (%s)\n"
+
+#: parted/parted.c:883
+#, c-format
+msgid "Disk %s: %s\n"
+msgstr "Disk %s: %s\n"
+
+#: parted/parted.c:884
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr "Sector size (logical/physical): %lldB/%lldB\n"
+
+#: parted/parted.c:896
+#, c-format
+msgid "Partition Table: %s\n"
+msgstr "Tabulka oddílů: %s\n"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Number"
+msgstr "Číslo"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Start"
+msgstr "Začátek"
+
+#: parted/parted.c:1008 parted/parted.c:1011
+msgid "End"
+msgstr "Konec"
+
+#: parted/parted.c:1011
+msgid "Size"
+msgstr "Velikost"
+
+#: parted/parted.c:1015
+msgid "Type"
+msgstr "Typ"
+
+#: parted/parted.c:1017
+msgid "File system"
+msgstr "Systém souborů"
+
+#: parted/parted.c:1020
+msgid "Name"
+msgstr "Název"
+
+#: parted/parted.c:1022
+msgid "Flags"
+msgstr "Přepínače"
+
+#: parted/parted.c:1079
+msgid "Free Space"
+msgstr "Volné místo"
+
+#: parted/parted.c:1241
+#, c-format
+msgid ""
+"A %s %s partition was found at %s -> %s.  Do you want to add it to the "
+"partition table?"
+msgstr ""
+"Byl nalezen oddíl %s %s na %s -> %s. Chcete jej přidat do tabulky oddílů?"
+
+#: parted/parted.c:1280
+msgid "searching for file systems"
+msgstr "hledám systémy souborů"
+
+#: parted/parted.c:1408
+msgid "New device?"
+msgstr "Nové zařízení?"
+
+#: parted/parted.c:1453
+msgid "alignment type(min/opt)"
+msgstr ""
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d aligned\n"
+msgstr ""
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d not aligned\n"
+msgstr ""
+
+#: parted/parted.c:1491
+msgid "Flag to Invert?"
+msgstr "Přepínač, který změnit?"
+
+#: parted/parted.c:1496
+msgid "New state?"
+msgstr "Nový stav?"
+
+#: parted/parted.c:1533
+msgid "Unit?"
+msgstr "Jednotka?"
+
+#: parted/parted.c:1651
+#, fuzzy
+msgid "align-check"
+msgstr "check"
+
+#: parted/parted.c:1654
+msgid ""
+"align-check TYPE N                        check partition N for TYPE(min|"
+"opt) alignment"
+msgstr ""
+
+#: parted/parted.c:1662
+msgid "help"
+msgstr "help"
+
+#: parted/parted.c:1665
+msgid ""
+"help [COMMAND]                           print general help, or help on "
+"COMMAND"
+msgstr ""
+"help [PŘÍKAZ]                            vypsat obecnou nápovědu nebo "
+"nápovědu o PŘÍKAZu"
+
+#: parted/parted.c:1671
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:1671
+msgid "mktable"
+msgstr "mktable"
+
+#: parted/parted.c:1674
+msgid ""
+"mklabel,mktable LABEL-TYPE               create a new disklabel (partition "
+"table)"
+msgstr ""
+"mklabel,mktable TYP-JMENOVKY             vytvořit novou jmenovku disku "
+"(tabulku oddílů)"
+
+#: parted/parted.c:1680
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:1683
+msgid "mkpart PART-TYPE [FS-TYPE] START END     make a partition"
+msgstr "mkpart TYP-ODDÍLU [TYP-FS] ZAČÁTEK KONEC  vytvořit oddíl"
+
+#: parted/parted.c:1689
+msgid ""
+"'mkpart' makes a partition without creating a new file system on the "
+"partition.  FS-TYPE may be specified to set an appropriate partition ID.\n"
+msgstr ""
+"'mkpart' vytvoří oddíl bez vytvoření nového systému souborů na něm. TYP-FS "
+"může být určen pro nastavení odpovídajícího ID oddílu.\n"
+
+#: parted/parted.c:1694
+msgid "name"
+msgstr "name"
+
+#: parted/parted.c:1697
+msgid "name NUMBER NAME                         name partition NUMBER as NAME"
+msgstr "name ČÍSLO NÁZEV                         pojmenovat oddíl ČÍSLO NÁZEV"
+
+#: parted/parted.c:1702
+msgid "print"
+msgstr "print"
+
+#: parted/parted.c:1705
+msgid ""
+"print [devices|free|list,all|NUMBER]     display the partition table, "
+"available devices, free space, all found partitions, or a particular "
+"partition"
+msgstr ""
+"print [devices|free|list,all|ČÍSLO]      zobrazit tabulku oddílů, dostupná "
+"zařízení, volné místo, všechny nalezené oddíly, nebo konkrétní oddíl"
+
+#: parted/parted.c:1710
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+"'print' bez parametrů zobrazí celou tabulku oddílů. S následujícími "
+"parametry ale provede různé jiné akce.\n"
+
+#: parted/parted.c:1712
+msgid "  devices   : display all active block devices\n"
+msgstr "  devices   : zobrazit všechna aktivní bloková zařízení\n"
+
+#: parted/parted.c:1713
+msgid ""
+"  free      : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+"  free      : zobrazit informace o volném místě mimo oddíly na aktuálním "
+"blokovém zařízení\n"
+
+#: parted/parted.c:1715
+msgid ""
+"  list, all : display the partition tables of all active block devices\n"
+msgstr ""
+"  list, all : zobrazit tabulky oddílů všech aktivních blokových zařízení\n"
+
+#: parted/parted.c:1716
+msgid ""
+"  NUMBER    : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+"  ČÍSLO     : zobrazit podrobnější informace o tomto konkrétním oddílu\n"
+
+#: parted/parted.c:1721
+msgid "quit"
+msgstr "quit"
+
+#: parted/parted.c:1724
+msgid "quit                                     exit program"
+msgstr "quit                                     ukončit program"
+
+#: parted/parted.c:1729
+msgid "rescue"
+msgstr "rescue"
+
+#: parted/parted.c:1732
+msgid ""
+"rescue START END                         rescue a lost partition near START "
+"and END"
+msgstr ""
+"rescue ZAČÁTEK KONEC                     zachránit ztracený oddíl poblíž "
+"ZAČÁTKU a KONCE"
+
+#: parted/parted.c:1738
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:1741
+msgid "rm NUMBER                                delete partition NUMBER"
+msgstr "rm ČÍSLO                                 odstranit oddíl ČÍSLO"
+
+#: parted/parted.c:1746
+msgid "select"
+msgstr "select"
+
+#: parted/parted.c:1749
+msgid "select DEVICE                            choose the device to edit"
+msgstr "select ZAŘÍZENÍ                          zvolit upravované zařízení"
+
+#: parted/parted.c:1754
+msgid "set"
+msgstr "set"
+
+#: parted/parted.c:1757
+msgid ""
+"set NUMBER FLAG STATE                    change the FLAG on partition NUMBER"
+msgstr ""
+"set ČÍSLO PŘEPÍNAČ STAV                  změnit PŘEPÍNAČ na oddílu ČÍSLO"
+
+#: parted/parted.c:1763
+msgid "toggle"
+msgstr "toggle"
+
+#: parted/parted.c:1766
+msgid ""
+"toggle [NUMBER [FLAG]]                   toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+"toggle [ČÍSLO [PŘEPÍNAČ]]                přepnout stav PŘEPÍNAČE na oddílu "
+"ČÍSLO"
+
+#: parted/parted.c:1772
+msgid "unit"
+msgstr "unit"
+
+#: parted/parted.c:1775
+msgid "unit UNIT                                set the default unit to UNIT"
+msgstr ""
+"unit JEDNOTKA                            nastavit implicitní jednotku na "
+"JEDNOTKA"
+
+#: parted/parted.c:1780
+msgid "version"
+msgstr "version"
+
+#: parted/parted.c:1783
+msgid ""
+"version                                  display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+"version                                  zobrazit číslo verze a informace o "
+"copyrightu GNU Parted"
+
+#: parted/parted.c:1787
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+"'version' zobrazí informace o copyrightu a informace o verzi odpovídající "
+"této kopii GNU Parted\n"
+
+#: parted/parted.c:1855
+#, fuzzy, c-format
+msgid "Usage: %s [-hlmsv] [-a<align>] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr "Použití: %s [-hlmsv] [ZAŘÍZENÍ [PŘÍKAZ [PARAMETRY]]...]\n"
+
+#: parted/parted.c:1899
+msgid "No device found"
+msgstr "Nenalezeno žádné zařízení"
+
+#: parted/parted.c:1936
+msgid "WARNING: You are not superuser.  Watch out for permissions."
+msgstr "VAROVÁNÍ: Nejste superuživatel. Pozor na oprávnění."
+
+#: parted/parted.c:1974
+msgid "You may need to update /etc/fstab.\n"
+msgstr "Možná budete potřebovat aktualizovat /etc/fstab.\n"
+
+#: parted/ui.c:162
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr "Vítá vás GNU Parted! Zobrazte seznam příkazů napsáním 'help'.\n"
+
+#: parted/ui.c:165
+msgid ""
+"Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]\n"
+"Apply COMMANDs with PARAMETERS to DEVICE.  If no COMMAND(s) are given, run "
+"in\n"
+"interactive mode.\n"
+msgstr ""
+"Použití: parted [PŘEPÍNAČ]... [ZAŘÍZENÍ [PŘÍKAZ [PARAMETRY]...]...]\n"
+"Provést PŘÍKAZy s PARAMETRY na ZAŘÍZENÍ. Není-li zadán PŘÍKAZ, spustit\n"
+"v interaktivním režimu.\n"
+
+#: parted/ui.c:170
+#, c-format
+msgid ""
+"\n"
+"\n"
+"You found a bug in GNU Parted! Here's what you have to do:\n"
+"\n"
+"Don't panic! The bug has most likely not affected any of your data.\n"
+"Help us to fix this bug by doing the following:\n"
+"\n"
+"Check whether the bug has already been fixed by checking\n"
+"the last version of GNU Parted that you can find at:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Please check this version prior to bug reporting.\n"
+"\n"
+"If this has not been fixed yet or if you don't know how to check,\n"
+"please visit the GNU Parted website:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"for further information.\n"
+"\n"
+"Your report should contain the version of this release (%s)\n"
+"along with the error message below, the output of\n"
+"\n"
+"\tparted DEVICE unit co print unit s print\n"
+"\n"
+"and the following history of commands you entered.\n"
+"Also include any additional information about your setup you\n"
+"consider important.\n"
+msgstr ""
+"\n"
+"\n"
+"Našli jste chybu v GNU Parted! Musíte udělat toto:\n"
+"\n"
+"Nepanikařte! Chyba pravděpodobně neměla vliv na žádná vaše data.\n"
+"Pomozte nám opravit tuto chybu takto:\n"
+"\n"
+"Zkontrolujte, jestli již byla chyba opravena, zkontrolováním\n"
+"nejnovější verze GNU Parted, kterou můžete najít na:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Před hlášením chyby prosím zkontrolujte tuto verzi.\n"
+"\n"
+"Pokud to ještě nebylo opraveno nebo pokud nevíte, jak to zkontrolovat,\n"
+"navštivte prosím WWW server GNU Parted:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"pro více informací.\n"
+"\n"
+"Vaše zpráva by měla obsahovat verzi tohoto programu (%s)\n"
+"a zprávu o chybě níže, výstup\n"
+"\n"
+"\tparted ZAŘÍZENÍ unit co print unit s print\n"
+"\n"
+"a následující historii příkazů, které jste zadali.\n"
+"Také přidejte další informace o vaší konfiguraci, které\n"
+"považujete za důležité.\n"
+
+#: parted/ui.c:291
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+"\n"
+"Historie příkazů:\n"
+
+#: parted/ui.c:354
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+"\n"
+"Chyba: SEGV_MAPERR (Adresa nepřiřazena objektu)\n"
+
+#: parted/ui.c:360
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+"\n"
+"Chyba: SEGV_ACCERR (Neplatné oprávnění namapovaného objektu)\n"
+
+#: parted/ui.c:365
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+"\n"
+"Chyba: Byl přijat obecný signál SIGSEGV.\n"
+
+#: parted/ui.c:389
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+"\n"
+"Chyba: FPE_INTDIV (Celá čísla: dělení nulou)"
+
+#: parted/ui.c:394
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+"\n"
+"Chyba: FPE_INTOVF (Celá čísla: přetečení)"
+
+#: parted/ui.c:399
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+"\n"
+"Chyba: FPE_FLTDIV (Plovoucí: dělení nulou)"
+
+#: parted/ui.c:404
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+"\n"
+"Chyba: FPE_FLTOVF (Plovoucí: přetečení)"
+
+#: parted/ui.c:409
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+"\n"
+"Chyba: FPE_FLTUND (Plovoucí: podtečení)"
+
+#: parted/ui.c:414
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+"\n"
+"Chyba: FPE_FLTRES (Plovoucí: nepřesný výsledek)"
+
+#: parted/ui.c:419
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+"\n"
+"Chyba: FPE_FLTINV (Plovoucí: neplatný výsledek)"
+
+#: parted/ui.c:424
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+"\n"
+"Chyba: FPE_FLTSUB (Plovoucí: index mimo rozsah)"
+
+#: parted/ui.c:429
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+"\n"
+"Chyba: Byl přijat obecný signál SIGFPE."
+
+#: parted/ui.c:453
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+"\n"
+"Chyba: ILL_ILLOPC (Neplatný kód operace)"
+
+#: parted/ui.c:458
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+"\n"
+"Chyba: ILL_ILLOPN (Neplatný parametr)"
+
+#: parted/ui.c:463
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+"\n"
+"Chyba: ILL_ILLADR (Neplatný režim adresování)"
+
+#: parted/ui.c:468
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+"\n"
+"Chyba: ILL_ILLTRP (Neplatné zachycení)"
+
+#: parted/ui.c:473
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+"\n"
+"Chyba: ILL_PRVOPC (Privilegovaný kód operace)"
+
+#: parted/ui.c:478
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+"\n"
+"Chyba: ILL_PRVREG (Privilegovaný registr)"
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+"\n"
+"Chyba: ILL_COPROC (Chyba koprocesoru)"
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+"\n"
+"Chyba: ILL_BADSTK (Interní chyba zásobníku)"
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+"\n"
+"Chyba: Byl přijat obecný signál SIGILL."
+
+#: parted/ui.c:891
+#, c-format
+msgid "invalid token: %s"
+msgstr "neplatný token: %s"
+
+#: parted/ui.c:1048
+msgid "Expecting a partition number."
+msgstr "Očekávám číslo oddílu."
+
+#: parted/ui.c:1057
+msgid "Partition doesn't exist."
+msgstr "Oddíl neexistuje."
+
+#: parted/ui.c:1077
+msgid "Expecting a file system type."
+msgstr "Očekávám typ systému souborů."
+
+#: parted/ui.c:1084
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Neznámý typ systému souborů \"%s\"."
+
+#: parted/ui.c:1105
+msgid "Expecting a disk label type."
+msgstr "Očekávám typ jmenovky disku."
+
+#: parted/ui.c:1203
+msgid "Can't create any more partitions."
+msgstr "Nemohu vytvářet další oddíly."
+
+#: parted/ui.c:1213
+msgid "Expecting a partition type."
+msgstr "Očekávám typ oddílu."
+
+#: parted/ui.c:1361
+msgid "on"
+msgstr "on"
+
+#: parted/ui.c:1362
+msgid "off"
+msgstr "off"
+
+#: parted/ui.c:1379
+msgid "optimal"
+msgstr ""
+
+#: parted/ui.c:1380
+msgid "minimal"
+msgstr ""
+
+#: parted/ui.c:1513
+msgid "OPTIONs:"
+msgstr "PŘEPÍNAČe:"
+
+#: parted/ui.c:1518
+msgid "COMMANDs:"
+msgstr "PŘÍKAZy:"
+
+#: parted/ui.c:1521
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Report bugs to %s\n"
+msgstr ""
+"\n"
+"Chyby hlaste na <%s>.\n"
+
+#: parted/ui.c:1528
+#, c-format
+msgid "Using %s\n"
+msgstr "Používám %s\n"
+
+#: parted/ui.c:1602
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr "Tento příkaz nedává smysl v neinteraktivním režimu.\n"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]\n"
+#~ "  or:  %s DEVICE MINOR\n"
+#~ msgstr ""
+#~ "Použití: %s [PŘEPÍNAČ]\n"
+#~ "  nebo:  %s ZAŘÍZENÍ MINOR\n"
+
+#~ msgid ""
+#~ "Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Vymazat nepoužívané místo na oddílu FAT (nástroj pro testování GNU "
+#~ "Parted).\n"
+#~ "\n"
+
+#~ msgid "      --help     display this help and exit\n"
+#~ msgstr "      --help     zobrazit tuto nápovědu a skončit\n"
+
+#~ msgid "      --version  output version information and exit\n"
+#~ msgstr "      --version  vypsat informace o verzi a skončit\n"
+
+#~ msgid "too few arguments"
+#~ msgstr "příliš málo parametrů"
+
+#~ msgid "too many arguments"
+#~ msgstr "příliš mnoho parametrů"
+
+#, fuzzy
+#~ msgid "invalid minor device number: %s"
+#~ msgstr "neplatný token: %s"
+
+#~ msgid "Could not detect file system."
+#~ msgstr "Nemohu detekovat systém souborů."
+
+#~ msgid "The file system is bigger than its volume!"
+#~ msgstr "Systém souborů je větší než jeho obsah!"
+
+#~ msgid "Support for opening %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Podpora pro otevírání souborových systémů %s ještě není implementována."
+
+#~ msgid "Support for creating %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Podpora pro vytváření souborových systémů %s ještě není implementována."
+
+#~ msgid "Support for checking %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Podpora pro kontrolu souborových systémů %s ještě není implementována."
+
+#~ msgid "raw block copying"
+#~ msgstr "přímé kopírování bloků"
+
+#~ msgid "growing file system"
+#~ msgstr "zvětšování systému souborů"
+
+#~ msgid "Can't copy onto an overlapping partition."
+#~ msgstr "Nemohu kopírovat do překrývajícího se oddílu."
+
+#~ msgid ""
+#~ "Direct support for copying file systems is not yet implemented for %s.  "
+#~ "However, support for resizing is implemented.  Therefore, the file system "
+#~ "can be copied if the new partition is at least as big as the old one.  "
+#~ "So, either shrink the partition you are trying to copy, or copy to a "
+#~ "bigger partition."
+#~ msgstr ""
+#~ "Pro %s není ještě implementována přímá podpora pro kopírování systémů "
+#~ "souborů. Je ale implementována podpora pro změnu velikosti. Systém "
+#~ "souborů tedy může být zkopírován, je-li nový oddíl alespoň tak velký jako "
+#~ "starý. Takže buď zmenšete oddíl, který se pokoušíte zkopírovat, nebo "
+#~ "kopírujte do většího oddílu."
+
+#~ msgid "Support for copying %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Podpora pro kopírování souborových systémů %s ještě není implementována."
+
+#~ msgid "Support for resizing %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Podpora pro změnu velikosti souborových systémů %s ještě není "
+#~ "implementována."
+
+#~ msgid "creating"
+#~ msgstr "vytváření"
+
+#~ msgid "The file system is in an invalid state.  Perhaps it is mounted?"
+#~ msgstr "Systém souborů je v neplatném stavu. Možná je připojen?"
+
+#~ msgid "The file system is in old (unresizeable) format."
+#~ msgstr "Systém souborů má starý formát (nepodporující změnu velikosti)."
+
+#~ msgid "Invalid free blocks count.  Run reiserfsck --check first."
+#~ msgstr "Neplatný počet volných bloků. Nejdřív spusťte reiserfsck --check."
+
+#~ msgid "checking"
+#~ msgstr "kontroluji"
+
+#~ msgid "Reiserfs tree seems to be corrupted.  Run reiserfsck --check first."
+#~ msgstr ""
+#~ "Strom reiserfs je zřejmě poškozen. Nejdřív spusťte reiserfsck --check."
+
+#~ msgid ""
+#~ "The reiserfs file system passed a basic check.  For a more comprehensive "
+#~ "check, run reiserfsck --check."
+#~ msgstr ""
+#~ "Systém souborů reiserfs prošel základní kontrolou. Pro podrobnější "
+#~ "kontrolu spusťte reiserfsck --check."
+
+#~ msgid "Sorry, can't move the start of reiserfs partitions yet."
+#~ msgstr "Lituji, ještě neumím přesunout začátek oddílů reiserfs."
+
+#~ msgid "Couldn't reopen device abstraction layer for read/write."
+#~ msgstr "Nemohu znovu otevřít vrstvu abstrakce zařízení pro čtení/zápis."
+
+#~ msgid "shrinking"
+#~ msgstr "zmenšuji"
+
+#~ msgid "expanding"
+#~ msgstr "zvětšuji"
+
+#~ msgid "Couldn't create reiserfs device abstraction handler."
+#~ msgstr "Nemohu vytvořit vrtsvu abstrakce zařízení reiserfs."
+
+#~ msgid "Device is too small for %lu blocks."
+#~ msgstr "Zařízení pro %lu bloků příliš malé."
+
+#~ msgid "copying"
+#~ msgstr "kopíruji"
+
+#~ msgid "Couldn't resolve symbol %s.  Error: %s."
+#~ msgstr "Nemohu nalézt symbol %s. Chyba: %s."
+
+#~ msgid "GNU Parted found an invalid libreiserfs library."
+#~ msgstr "GNU Parted nalezl neplatnou knihovnu libreiserfs."
+
+#~ msgid ""
+#~ "GNU Parted has detected libreiserfs interface version mismatch.  Found %d-"
+#~ "%d, required %d. ReiserFS support will be disabled."
+#~ msgstr ""
+#~ "GNU Parted detekoval nesoulad ve verzích rozhraní libreiserfs. Nalezeno "
+#~ "%d-%d, vyžadováno %d. Podpora ReiserFS bude zakázána."
+
+#~ msgid "Inconsistent group descriptors!"
+#~ msgstr "Nekonzistentní deskriptory skupin!"
+
+#~ msgid "File system full!"
+#~ msgstr "Systém souborů plný!"
+
+#~ msgid "Invalid superblock.  Are you sure this is an ext2 file system?"
+#~ msgstr "Neplatný superblok. Opravdu to je systém souborů ext2?"
+
+#~ msgid "File system has errors!  You should run e2fsck."
+#~ msgstr "Systém souborů má chyby! Měli byste spustit e2fsck."
+
+#~ msgid ""
+#~ "File system was not cleanly unmounted!  You should run e2fsck.  Modifying "
+#~ "an unclean file system could cause severe corruption."
+#~ msgstr ""
+#~ "Systém souborů nebyl čistě odpojen! Měli byste spustit e2fsck. Úpravy "
+#~ "nečistého systému souborů mohou způsobit vážné poškození dat."
+
+#~ msgid "Error allocating buffer cache."
+#~ msgstr "Chyba při alokaci buffer cache."
+
+#~ msgid ""
+#~ "Found an inode with a incorrect link count.  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "Našel jsem inode s nesprávným počtem odkazů. Radši nejdřív spusťte e2fsck!"
+
+#~ msgid "Not enough free inodes!"
+#~ msgstr "Nedostatek volných inodů!"
+
+#~ msgid "File system is too full to remove a group!"
+#~ msgstr "Systém souborů je příliš plný na to, abych mohl odstranit skupinu!"
+
+#~ msgid "File system has too many allocated inodes to remove a group!"
+#~ msgstr ""
+#~ "Systém souborů má příliš mnoho alokovaných inodů na to, abych mohl "
+#~ "odstranit skupinu!"
+
+#~ msgid "adding groups"
+#~ msgstr "přidávám skupiny"
+
+#~ msgid "Your file system is too full to resize it to %i blocks.  Sorry."
+#~ msgstr ""
+#~ "Váš systém souborů je příliš plný na to, abych mohl změnit jeho velikost "
+#~ "na %i bloků. Lituji."
+
+#~ msgid ""
+#~ "Your file system has too many occupied inodes to resize it to %i blocks.  "
+#~ "Sorry."
+#~ msgstr ""
+#~ "Váš systém souborů má příliš mnoho použitých inodů na to, abych mohl "
+#~ "změnit jeho velikost na %i bloků. Lituji."
+
+#~ msgid "File system was not cleanly unmounted!  You should run e2fsck."
+#~ msgstr "Systém souborů nebyl správně odpojen! Měli byste spustit e2fsck."
+
+#~ msgid ""
+#~ "The file system has the 'dir_index' feature enabled.  Parted can only "
+#~ "resize the file system if it disables this feature.  You can enable it "
+#~ "later by running 'tune2fs -O dir_index DEVICE' and then 'e2fsck -fD "
+#~ "DEVICE'."
+#~ msgstr ""
+#~ "Systém souborů má povolenu vlastnost 'dir_index'. Parted může změnit "
+#~ "velikost systému souborů, jen pokud tuto vlastnost zakáže. Můžete ji "
+#~ "později povolit spuštěním 'tune2fs -O dir_index ZAŘÍZENÍ' a pak 'e2fsck -"
+#~ "fD ZAŘÍZENÍ'."
+
+#~ msgid ""
+#~ "A resize operation on this file system will use EXPERIMENTAL code\n"
+#~ "that MAY CORRUPT it (although no one has reported any such damage yet).\n"
+#~ "You should at least backup your data first, and run 'e2fsck -f' "
+#~ "afterwards."
+#~ msgstr ""
+#~ "Operace změny velikosti na tomto systému souborů bude používat "
+#~ "EXPERIMENTÁLNÍ\n"
+#~ "kód, který jej MŮŽE POŠKODIT (i když zatím nikdo takové poškození "
+#~ "nehlásil).\n"
+#~ "Přinejmenším byste měli nejdřív zazálohovat svá data, a potom spustit\n"
+#~ "'e2fsck -f'."
+
+#~ msgid "Cross-linked blocks found!  Better go run e2fsck first!"
+#~ msgstr "Nalezeny bloky s křížovými odkazy! Radši nejdřív spusťte e2fsck!"
+
+#~ msgid "Block %i has no reference?  Weird."
+#~ msgstr "Blok %i nemá odkaz? Divné."
+
+#~ msgid "Block %i shouldn't have been marked (%d, %d)!"
+#~ msgstr "Blok %i by neměl být označen (%d, %d)!"
+
+#~ msgid ""
+#~ "The ext2 file system passed a basic check.  For a more comprehensive "
+#~ "check, use the e2fsck program."
+#~ msgstr ""
+#~ "Systém souborů ext2 prošel základní kontrolou. Pro podrobnější kontrolu "
+#~ "použijte program e2fsck."
+
+#~ msgid "Sorry, can't move the start of ext2 partitions yet!"
+#~ msgstr "Lituji, ještě neumím přesunout začátek oddílů ext2!"
+
+#~ msgid "Couldn't flush buffer cache!"
+#~ msgstr "Nemohu vyprázdnit buffer cache!"
+
+#~ msgid "writing per-group metadata"
+#~ msgstr "zapisuji metadata skupin"
+
+#~ msgid "File system too small for ext2."
+#~ msgstr "Systém souborů příliš malý pro ext2."
+
+#~ msgid ""
+#~ "You need %s of free disk space to shrink this partition to this size.  "
+#~ "Currently, only %s is free."
+#~ msgstr ""
+#~ "Pro zmenšení tohoto oddílu na tuto velikost potřebujete %s volného místa. "
+#~ "Momentálně je volné jen %s."
+
+#~ msgid ""
+#~ "Cluster start delta = %d, which is not a multiple of the cluster size %d."
+#~ msgstr ""
+#~ "Změna začátku clusteru = %d, což není násobek velikosti clusteru %d."
+
+#~ msgid "Partition too big/small for a %s file system."
+#~ msgstr "Oddíl je příliš velký/malý pro systém souborů %s."
+
+#~ msgid ""
+#~ "The FATs don't match.  If you don't know what this means, then select "
+#~ "cancel, run scandisk on the file system, and then come back."
+#~ msgstr ""
+#~ "Tabulky FAT si neodpovídají. Pokud nevíte, co to znamená, zvolte Zrušit, "
+#~ "spusťte na systému souborů scandisk a pak se vraťte."
+
+#~ msgid "There are no possible configurations for this FAT type."
+#~ msgstr "Pro tento typ FAT neexistuje možná konfigurace."
+
+#~ msgid ""
+#~ "File system doesn't have expected sizes for Windows to like it.  Cluster "
+#~ "size is %dk (%dk expected); number of clusters is %d (%d expected); size "
+#~ "of FATs is %d sectors (%d expected)."
+#~ msgstr ""
+#~ "Systém souborů nemá očekávané velikosti, aby jej Windows měly rády. "
+#~ "Velikost clusteru je %dk (očekáváno %dk); počet clusterů je %d (očekáváno "
+#~ "%d); velikost FAT je %d sektorů (očekáváno %d)."
+
+#~ msgid ""
+#~ "File system is reporting the free space as %d clusters, not %d clusters."
+#~ msgstr ""
+#~ "Systém souborů oznamuje volné místo jako %d clusterů, ne %d clusterů."
+
+#~ msgid ""
+#~ "There's not enough room in the root directory for all of the files.  "
+#~ "Either cancel, or ignore to lose the files."
+#~ msgstr ""
+#~ "V kořenovém adresáři není dostatek místa pro všechny souborů. Zvolte buď "
+#~ "Zrušit, nebo Ignorovat pro ztrátu těchto souborů."
+
+#~ msgid "Error writing to the root directory."
+#~ msgstr "Chyba při zápisu do kořenového adresáře."
+
+#~ msgid ""
+#~ "If you leave your file system as FAT16, then you will have no problems."
+#~ msgstr ""
+#~ "Pokud svůj systém souborů ponecháte jako FAT16, nebudete mít žádné "
+#~ "problémy."
+
+#~ msgid ""
+#~ "If you convert to FAT16, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual)."
+#~ msgstr ""
+#~ "Pokud převedete na FAT16 a na tomto oddílu jsou nainstalovány MS Windows, "
+#~ "musíte reinstalovat zavaděč systému MS Windows. Pokud to chcete udělat, "
+#~ "měli byste si přečíst manuál Partedu (nebo manuál své distribuce)."
+
+#~ msgid ""
+#~ "If you leave your file system as FAT32, then you will not introduce any "
+#~ "new problems."
+#~ msgstr ""
+#~ "Pokud svůj systém souborů ponecháte jako FAT16, nezpůsobíte žádné nové "
+#~ "problémy."
+
+#~ msgid ""
+#~ "If you convert to FAT32, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual).  Also, converting to FAT32 will make the file system unreadable "
+#~ "by MS DOS, MS Windows 95a, and MS Windows NT."
+#~ msgstr ""
+#~ "Pokud převedete na FAT32 a na tomto oddílu jsou nainstalovány MS Windows, "
+#~ "musíte reinstalovat zavaděč systému MS Windows. Pokud to chcete udělat, "
+#~ "měli byste si přečíst manuál Partedu (nebo manuál své distribuce). "
+#~ "Převedení na FAT32 také učiní systém souborů nečitelným pro MS DOS, MS "
+#~ "Windows 95a a MS Windows NT."
+
+#~ msgid "%s  %s  %s"
+#~ msgstr "%s  %s  %s"
+
+#~ msgid "Would you like to use FAT32?"
+#~ msgstr "Chcete použít FAT32?"
+
+#~ msgid "%s  %s"
+#~ msgstr "%s  %s"
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT16."
+#~ msgstr ""
+#~ "Velikost systému souborů může být na tuto hodnotu změněna jen převodem na "
+#~ "FAT16."
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT32."
+#~ msgstr ""
+#~ "Velikost systému souborů může být na tuto hodnotu změněna jen převodem na "
+#~ "FAT32."
+
+#~ msgid ""
+#~ "GNU Parted cannot resize this partition to this size.  We're working on "
+#~ "it!"
+#~ msgstr ""
+#~ "GNU Parted neumí změnit velikost tohoto oddílu na tuto hodnotu. Pracujeme "
+#~ "na tom!"
+
+#~ msgid "Bad directory entry for %s: first cluster is the end of file marker."
+#~ msgstr ""
+#~ "Špatná položka adresáře pro %s: první cluster je značka konce souboru."
+
+#~ msgid ""
+#~ "Bad FAT: unterminated chain for %s.  You should run dosfsck or scandisk."
+#~ msgstr ""
+#~ "Špatná FAT: neukončený řetězec pro %s. Měli byste spustit dosfsck nebo "
+#~ "scandisk."
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d outside file system in chain for %s.  You should run "
+#~ "dosfsck or scandisk."
+#~ msgstr ""
+#~ "Špatná FAT: cluster %d je mimo systém souborů v řetězci pro %s. Měli "
+#~ "byste spustit dosfsck nebo scandisk."
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d is cross-linked for %s.  You should run dosfsck or "
+#~ "scandisk."
+#~ msgstr ""
+#~ "Špatná FAT: cluster %d pro %s má křížové odkazy. Měli byste spustit "
+#~ "dosfsck nebo scandisk."
+
+#~ msgid "%s is %dk, but it has %d clusters (%dk)."
+#~ msgstr "%s je %dk, ale má %d clusterů (%dk)."
+
+#~ msgid ""
+#~ "The file %s is marked as a system file.  This means moving it could cause "
+#~ "some programs to stop working."
+#~ msgstr ""
+#~ "Soubor %s je označen jako systémový soubor. To znamená, že jeho přesun "
+#~ "může způsobit, že některé programy přestanou fungovat."
+
+#~ msgid ""
+#~ "FAT %d media %x doesn't match the boot sector's media %x.  You should "
+#~ "probably run scandisk."
+#~ msgstr ""
+#~ "FAT %d media %x neodpovídá media %x zaváděcího sektoru. Pravděpodobně "
+#~ "byste měli spustit scandisk."
+
+#~ msgid "fat_table_set: cluster %ld outside file system"
+#~ msgstr "fat_table_set: cluster %ld mimo systém souborů"
+
+#~ msgid "fat_table_get: cluster %ld outside file system"
+#~ msgstr "fat_table_get: cluster %ld mimo systém souborů"
+
+#~ msgid "fat_table_alloc_cluster: no free clusters"
+#~ msgstr "fat_table_alloc_cluster: nejsou volné clustery"
+
+#~ msgid "Too many bad pages."
+#~ msgstr "Příliš mnoho špatných stránek."
+
+#~ msgid "The file system contains errors."
+#~ msgstr "Systém souborů obsahuje chyby."
+
+#~ msgid "Bad blocks could not be read."
+#~ msgstr "Nelze číst špatné bloky."
+
+#~ msgid ""
+#~ "Trying to register an extent starting at block 0x%X, but another one "
+#~ "already exists at this position.  You should check the file system!"
+#~ msgstr ""
+#~ "Pokouším se zaregistrovat rozsah začínající na bloku 0x%X, ale v tomto "
+#~ "umístění již jeden existuje. Měli byste zkontrolovat systém souborů!"
+
+#~ msgid ""
+#~ "Trying to move an extent from block Ox%X to block Ox%X, but another one "
+#~ "already exists at this position.  This should not happen!"
+#~ msgstr ""
+#~ "Pokouším se přesunout rozsah z bloku 0x%X do bloku 0x%X, ale v tomto "
+#~ "umístění již jeden existuje. To by se nemělo stát!"
+
+#~ msgid "Could not update the extent cache for HFS file with CNID %X."
+#~ msgstr "Nemohu aktualizovat cache rozsahů pro soubor HFS s CNID %X."
+
+#~ msgid "Trying to read HFS file with CNID %X behind EOF."
+#~ msgstr "Pokus číst soubor HFS s CNID %X za koncem souboru."
+
+#~ msgid "Could not find sector %lli of HFS file with CNID %X."
+#~ msgstr "Nemohu najít sektor %lli souboru HFS s CNID %X."
+
+#~ msgid "Trying to write HFS file with CNID %X behind EOF."
+#~ msgstr "Pokus zapisovat do souboru HFS s CNID %X za konec souboru."
+
+#~ msgid "Could not update the extent cache for HFS+ file with CNID %X."
+#~ msgstr "Nemohu aktualizovat cache rozsahů pro soubor HFS+ s CNID %X."
+
+#~ msgid "Trying to read HFS+ file with CNID %X behind EOF."
+#~ msgstr "Pokus číst soubor HFS+ s CNID %X za koncem souboru."
+
+#~ msgid "Could not find sector %lli of HFS+ file with CNID %X."
+#~ msgstr "Nemohu najít sektor %lli souboru HFS+ s CNID %X."
+
+#~ msgid "Trying to write HFS+ file with CNID %X behind EOF."
+#~ msgstr "Pokus zapisovat do souboru HFS+ s CNID %X za konec souboru."
+
+#~ msgid "Sorry, HFS cannot be resized that way yet."
+#~ msgstr "Lituji, HFS zatím nelze takto měnit velikost."
+
+#~ msgid "Data relocation has failed."
+#~ msgstr "Přesun dat selhal."
+
+#~ msgid "Data relocation left some data in the end of the volume."
+#~ msgstr "Přesun dat nechal na konci svazku nějaká data."
+
+#~ msgid "writing HFS Master Directory Block"
+#~ msgstr "zapisuhi blok hlavního adresáře HFS"
+
+#~ msgid "No valid HFS[+X] signature has been found while opening."
+#~ msgstr "Při otevírání nebyl nalezen platný podpis HFS[+X]."
+
+#~ msgid "Version %d of HFS+ isn't supported."
+#~ msgstr "Verze %d HFS+ není podporována."
+
+#~ msgid "Version %d of HFSX isn't supported."
+#~ msgstr "Verze %d HFSX není podporována."
+
+#~ msgid "Data relocation left some data at the end of the volume."
+#~ msgstr "Přesun dat nechal na konci svazku nějaká data."
+
+#~ msgid "Error while writing the allocation file."
+#~ msgstr "Chyba při zápisu do souboru alokací."
+
+#~ msgid "Error while writing the compatibility part of the allocation file."
+#~ msgstr "Chyba při zápisu do části pro kompatibilitu souboru alokací."
+
+#~ msgid "writing HFS+ Volume Header"
+#~ msgstr "zapisuji hlavičku svazku HFS+"
+
+#~ msgid "An error occurred while looking for the mandatory bad blocks file."
+#~ msgstr "Při hledání povinného souboru špatných bloků došlo k chybě."
+
+#~ msgid ""
+#~ "It seems there is an error in the HFS wrapper: the bad blocks file "
+#~ "doesn't contain the embedded HFS+ volume."
+#~ msgstr ""
+#~ "V obalu HFS je zřejmě chyba: soubor špatných bloků neobsahuje vložený "
+#~ "svazek HFS+."
+
+#~ msgid "Sorry, HFS+ cannot be resized that way yet."
+#~ msgstr "Lituji, HFS+ zatím nelze takto měnit velikost."
+
+#~ msgid "shrinking embedded HFS+ volume"
+#~ msgstr "zmenšuji vložený svazek HFS+"
+
+#~ msgid "Resizing the HFS+ volume has failed."
+#~ msgstr "Změna velikosti svazku HFS+ selhala."
+
+#~ msgid "shrinking HFS wrapper"
+#~ msgstr "zmenšuji obal HFS"
+
+#~ msgid "Updating the HFS wrapper has failed."
+#~ msgstr "Aktualizace obalu HFS selhala."
+
+#~ msgid ""
+#~ "This is not a real %s check.  This is going to extract special low level "
+#~ "files for debugging purposes."
+#~ msgstr ""
+#~ "Toto není skutečná kontrola %s. Toto pro ladicí účely extrahuje speciální "
+#~ "nízkoúrovňové soubory."
+
+#~ msgid "Bad block list header checksum."
+#~ msgstr "Kontrolní součet hlavičky seznamu špatných bloků."
+
+#~ msgid ""
+#~ "Invalid size of a transaction block while replaying the journal (%i "
+#~ "bytes)."
+#~ msgstr ""
+#~ "Neplatná velikost bloku transakce při přehrávání žurnálu (%i bajtů)."
+
+#~ msgid ""
+#~ "Journal stored outside of the volume are not supported.  Try to "
+#~ "desactivate the journal and run Parted again."
+#~ msgstr ""
+#~ "Žurnály uložené mimo svazek nejsou podporovány. Zkuste deaktivovat žurnál "
+#~ "a spusťte Parted znovu."
+
+#~ msgid "Journal offset or size is not multiple of the sector size."
+#~ msgstr "Posun nebo velikost žurnálu není násobek velikosti sektoru."
+
+#~ msgid "Incorrect magic values in the journal header."
+#~ msgstr "Neplatné kouzelné hodnoty v hlavičce žurnálu."
+
+#~ msgid "Journal size mismatch between journal info block and journal header."
+#~ msgstr ""
+#~ "Nesoulad velikosti žurnálu mezi blokem informací o žurnálu a hlavičkou "
+#~ "žurnálu."
+
+#~ msgid "Some header fields are not multiple of the sector size."
+#~ msgstr "Některé pole hlavičky nejsou násobek velikosti sektoru."
+
+#~ msgid ""
+#~ "The sector size stored in the journal is not 512 bytes.  Parted only "
+#~ "supports 512 bytes length sectors."
+#~ msgstr ""
+#~ "Velikost sektoru uložená v žurnálunení 512. Parted podporuje jen sektory "
+#~ "velké 512 bajtů."
+
+#~ msgid "Bad journal checksum."
+#~ msgstr "Špatný kontrolní součet žurnálu."
+
+#~ msgid ""
+#~ "The journal is not empty.  Parted must replay the transactions before "
+#~ "opening the file system.  This will modify the file system."
+#~ msgstr ""
+#~ "Žurnál není prázdný. Před otevřením systému souborů musí Parted přehrát "
+#~ "transakce. To změní systém souborů."
+
+#~ msgid ""
+#~ "The volume header or the master directory block has changed while "
+#~ "replaying the journal.  You should restart Parted."
+#~ msgstr ""
+#~ "Hlavička svazku nebo hlavní blok adresáře se při přehrávání žurnálu "
+#~ "změnil. Měli byste restartovat Parted."
+
+#~ msgid "An extent has not been relocated."
+#~ msgstr "Rozsah nebyl přesunut."
+
+#~ msgid ""
+#~ "A reference to an extent comes from a place it should not.  You should "
+#~ "check the file system!"
+#~ msgstr ""
+#~ "Odkaz na rozsah přichází z místa, ze kterého by neměla. Měli byste "
+#~ "zkontrolovat systém souborů!"
+
+#~ msgid "This HFS volume has no catalog file.  This is very unusual!"
+#~ msgstr "Tento svazek HFS nemá soubor katalogu. To je velice neobvyklé!"
+
+#~ msgid ""
+#~ "This HFS volume has no extents overflow file.  This is quite unusual!"
+#~ msgstr ""
+#~ "Tento svazek HFS nemá soubor přetečení rozsahů. To je celkem neobvyklé!"
+
+#~ msgid ""
+#~ "The extents overflow file should not contain its own extents!  You should "
+#~ "check the file system."
+#~ msgstr ""
+#~ "Soubor přetečení rozsahů by neměl obsahovat své vlastní rozsahy! Měli "
+#~ "byste zkontrolovat systém souborů."
+
+#~ msgid "Could not cache the file system in memory."
+#~ msgstr "Nemohu kešovat systém souborů v paměti."
+
+#~ msgid "Bad blocks list could not be loaded."
+#~ msgstr "Seznam špatných bloků nelze načíst."
+
+#~ msgid "An error occurred during extent relocation."
+#~ msgstr "Při přesunu rozsahu došlo k chybě."
+
+#~ msgid "This HFS+ volume has no catalog file.  This is very unusual!"
+#~ msgstr "Tento svazek HFS+ nemá soubor katalogu. To je velice neobvyklé!"
+
+#~ msgid ""
+#~ "This HFS+ volume has no extents overflow file.  This is quite unusual!"
+#~ msgstr ""
+#~ "Tento svazek HFS+ nemá soubor přetečení rozsahů. To je celkem neobvyklé!"
+
+#~ msgid "The partition must have one of the following FS-TYPEs: "
+#~ msgstr "Oddíl musí mít jeden z následujících TYPů-FS:"
+
+#~ msgid ""
+#~ "The existing file system will be destroyed and all data on the partition "
+#~ "will be lost. Do you want to continue?"
+#~ msgstr ""
+#~ "Existující systém souborů bude zničen a všechna data v oddílu budou "
+#~ "ztracena. Chcete pokračovat?"
+
+#~ msgid "Source device?"
+#~ msgstr "Zdrojové zařízení?"
+
+#~ msgid "Source partition number?"
+#~ msgstr "Číslo zdrojového oddílu?"
+
+#~ msgid "Can't copy an extended partition."
+#~ msgstr "Nemohu kopírovat rozšířený oddíl."
+
+#~ msgid "Destination partition number?"
+#~ msgstr "Číslo cílového oddílu?"
+
+#~ msgid ""
+#~ "An extended partition cannot hold a file system.  Did you want mkpart?"
+#~ msgstr ""
+#~ "Rozšířený oddíl nemůže obsahovat systém souborů. Chtěli jste mkpart?"
+
+#~ msgid "Can't move an extended partition."
+#~ msgstr "Nemohu přesouvat rozšířený oddíl."
+
+#~ msgid "Can't move a partition onto itself.  Try using resize, perhaps?"
+#~ msgstr "Nemohu přesunout oddíl na sebe. Možná zkuste použít resize?"
+
+#~ msgid "Minor: %d\n"
+#~ msgstr "Minor: %d\n"
+
+#~ msgid "Flags: %s\n"
+#~ msgstr "Přepínače: %s\n"
+
+#~ msgid "File System: %s\n"
+#~ msgstr "Systém souborů: %s\n"
+
+#~ msgid "Size:         "
+#~ msgstr "Velikost:           "
+
+#~ msgid "Minimum size: "
+#~ msgstr "Minimální velikost: "
+
+#~ msgid "Maximum size: "
+#~ msgstr "Maximální velikost: "
+
+#~ msgid "check"
+#~ msgstr "check"
+
+#~ msgid ""
+#~ "check NUMBER                             do a simple check on the file "
+#~ "system"
+#~ msgstr ""
+#~ "check ČÍSLO                              provést jednoduchou kontrolu "
+#~ "systému souborů"
+
+#~ msgid "cp"
+#~ msgstr "cp"
+
+#~ msgid ""
+#~ "cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   copy file system to another "
+#~ "partition"
+#~ msgstr ""
+#~ "cp [Z-ZAŘÍZENÍ] Z-ČÍSLA NA-ČÍSLO         zkopírovat systém souborů na "
+#~ "jiný oddíl"
+
+#~ msgid "mkfs"
+#~ msgstr "mkfs"
+
+#, fuzzy
+#~ msgid ""
+#~ "mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on "
+#~ "partition NUMBER"
+#~ msgstr ""
+#~ "mkfs ČÍSLO TYP-FS                        vytvořit systém souborů TYP-FS "
+#~ "na oddílu ČÍSLO"
+
+#~ msgid "mkpartfs"
+#~ msgstr "mkpartfs"
+
+#~ msgid ""
+#~ "mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file "
+#~ "system"
+#~ msgstr ""
+#~ "mkpartfs TYP-ODDÍLU TYP-FS ZAČÁTEK KONEC  vytvořit oddíl se systémem "
+#~ "souborů"
+
+#~ msgid "move"
+#~ msgstr "move"
+
+#~ msgid "move NUMBER START END                    move partition NUMBER"
+#~ msgstr "move ČÍSLO ZAČÁTEK KONEC                 přesunout oddíl ČÍSLO"
+
+#~ msgid "resize"
+#~ msgstr "resize"
+
+#~ msgid ""
+#~ "resize NUMBER START END                  resize partition NUMBER and its "
+#~ "file system"
+#~ msgstr ""
+#~ "resize ČÍSLO ZAČÁTEK KONEC               změnit velikost oddílu ČÍSLO a "
+#~ "jeho systému souborů"
+
+#~ msgid "This is not an ECKD disk!  This disk type is not supported!"
+#~ msgstr "Toto není disk ECKD! Tento typ disku není podporován!"
+
+#~ msgid ""
+#~ "Device %s has a logical sector size of %lld.  Not all parts of GNU Parted "
+#~ "support this at the moment, and the working code is HIGHLY EXPERIMENTAL.\n"
+#~ msgstr ""
+#~ "Zařízení %s má logickou velikost sektoru %lld. Ne všechny části GNU "
+#~ "Parted to momentálně podporují, a fungující kód je VELICE "
+#~ "EXPERIMENTÁLNÍ.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Could not determine minimum io size for %s: %s.\n"
+#~ "Using the default size (%lld)."
+#~ msgstr ""
+#~ "Nemohu zjistit velikost sektoru pro %s: %s.\n"
+#~ "Používám implicitní velikost sektoru (%lld)."
+
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: neplatný přepínač -- %c\n"
+
+#~ msgid "Unable to determine the block size of this dasd"
+#~ msgstr "Nemohu určit bloku tohoto dasd"
+
+#~ msgid ""
+#~ "The kernel was unable to re-read the partition table on %s (%s).  This "
+#~ "means Linux won't know anything about the modifications you made until "
+#~ "you reboot.  You should reboot your computer before doing anything with "
+#~ "%s."
+#~ msgstr ""
+#~ "Jádro nemohlo znovu načíst tabulku oddílů na %s (%s). To znamená, že "
+#~ "Linux nebude vědět nic o změnách, které jste provedli, dokud "
+#~ "nerestartujete systém. Měli byste svůj počítač restartovat, než budete s "
+#~ "%s něco dělat."
+
+#~ msgid "File system has an incompatible feature enabled."
+#~ msgstr "Systém souborů má povolenou nekompatibilní vlastnost."
+
+#~ msgid "IDE"
+#~ msgstr "IDE"
+
+#~ msgid "SCSI"
+#~ msgstr "SCSI"
+
+#~ msgid "Device %s is neither a SCSI nor IDE drive."
+#~ msgstr "Zařízení %s není disk SCSI ani IDE."
+
+#~ msgid "Error reading %s (%s) to determine if partition is mounted."
+#~ msgstr "Chyba při čtení %s (%s) pro určení, jestli je oddíl připojen."
+
+#~ msgid ""
+#~ "Unable to determine if partitions are mounted via /proc/mounts or /etc/"
+#~ "mtab.  Make sure you don't attempt to resize or modify mounted file "
+#~ "systems.  (Even read-only mounted)"
+#~ msgstr ""
+#~ "Nemohu určit pomocí /proc/mounts nebo /etc/mtab, jestli jsou oddíly "
+#~ "připojeny. Přesvědčte se, že se nepokoušíte změnit velikost nebo měnit "
+#~ "připojené soubory souborů. (I připojené jen pro čtení)"
+
+#~ msgid ""
+#~ "The partition table on %s is inconsistent.  There are many reasons why "
+#~ "this might be the case.  However, the most likely reason is that Linux "
+#~ "detected the BIOS geometry for %s incorrectly.  GNU Parted suspects the "
+#~ "real geometry should be %d/%d/%d (not %d/%d/%d).  You should check with "
+#~ "your BIOS first, as this may not be correct.  You can inform Linux by "
+#~ "adding the parameter %s=%d,%d,%d to the command line.  See the LILO or "
+#~ "GRUB documentation for more information.  If you think Parted's suggested "
+#~ "geometry is correct, you may select Ignore to continue (and fix Linux "
+#~ "later).  Otherwise, select Cancel (and fix Linux and/or the BIOS now)."
+#~ msgstr ""
+#~ "Tabulka oddílů na %s není konzistentní. To se může stát z mnoha důvodů. "
+#~ "Nejpravděpodobnější důvod je, že Linux nesprávně detekoval geometrii "
+#~ "BIOSu pro %s. GNU Parted má podezření, že skutečná geometrie by měla být "
+#~ "%d/%d/%d (ne %d/%d/%d). Měli byste to nejdřív zkontrolovat ve svém BIOSu, "
+#~ "protože to možná není správně. Linux můžete informovat přidáním parametru "
+#~ "%s=%d,%d%d na příkazovém řádku. Pro více informací viz dokumentaci o LILO "
+#~ "nebo GRUB. Jestliže si myslíte, že geometrie Partedu je správná, můžete "
+#~ "pokračovat zvolením Ignorovat (a opravit Linux později). V opačném "
+#~ "případě zvolte Zrušit (a opravte Linux a/nebo BIOS hned)."
+
+#~ msgid ""
+#~ "The partition table on %s is inconsistent.  There are many reasons why "
+#~ "this might be the case.  Often, the reason is that Linux detected the "
+#~ "BIOS geometry incorrectly.  However, this does not appear to be the case "
+#~ "here.  It is safe to ignore,but ignoring may cause (fixable) problems "
+#~ "with some boot loaders, and may cause problems with FAT file systems.  "
+#~ "Using LBA is recommended."
+#~ msgstr ""
+#~ "Tabulka oddílů na %s není konzistentní. To se může stát z mnoha důvodů. "
+#~ "Často se stává, že Linux nesprávně detekuje geometrii BIOSu. To ale není "
+#~ "tento případ. Můžete problém bez obav ignorovat, ale jeho ignorování může "
+#~ "způsobit (opravitelné) problémy s některými zavaděči systému a může "
+#~ "způsobit problémy se systémy souborů FAT. Doporučuje se používat LBA."
+
+#~ msgid ""
+#~ "Unable to align partition properly.  This probably means that another "
+#~ "partitioning tool generated an incorrect partition table, because it "
+#~ "didn't have the correct BIOS geometry.  It is safe to ignore,but ignoring "
+#~ "may cause (fixable) problems with some boot loaders."
+#~ msgstr ""
+#~ "Nemohu správně zarovnat oddíl. To pravděpodobně znamená, že jiný nástroj "
+#~ "na tvorbu oddílů vygeneroval nesprávnou tabulku oddílů, protože neměl "
+#~ "správnou geometrii BIOSu. Tento problém můžete bez obav ignorovat, ale "
+#~ "jeho ignorování může způsobit (opravitelné) problémy s některými zavaděči "
+#~ "systému."
+
+#~ msgid "Attempt to read sectors %ld-%ld outside of partition on %s"
+#~ msgstr "Pokus číst sektory %ld-%ld mimo oddíl na %s"
+
+#~ msgid ""
+#~ "This ext2 filesystem has a rather strange layout!  Parted can't resize "
+#~ "this (yet)."
+#~ msgstr ""
+#~ "Tento systém souborů ext2 má poněkud zvláštní rozložení! Parted (ještě) "
+#~ "neumí změnit jeho velikost."
+
+#~ msgid "File system has an invalid signature for a FAT file systems."
+#~ msgstr "Systém souborů má neplatný podpis pro systémy souborů FAT."
+
+#~ msgid "where necessary, prompts for user intervention"
+#~ msgstr "je-li potřeba, požádá o intervenci uživatele"
+
+#~ msgid ""
+#~ "Partition %s is being used.  Modifying it while it is in use could cause "
+#~ "severe corruption."
+#~ msgstr ""
+#~ "Oddíl %s je používán. Úpravy oddílu, který je používán, mohou vést k "
+#~ "vážnému poškození dat."
+
+#~ msgid "Disk geometry for %s: 0.000-%.3f megabytes\n"
+#~ msgstr "Geometrie disku pro %s: 0.000-%.3f megabajtů\n"
+
+#~ msgid "Disk label type: %s\n"
+#~ msgstr "Typ jmenovky disku: %s\n"
+
+#~ msgid "Type      "
+#~ msgstr "Typ       "
+
+#~ msgid "Name                  "
+#~ msgstr "Název                 "
+
+#~ msgid ""
+#~ "  You have Windows FAT partition(s) that are not using LBA.  If your BIOS "
+#~ "supports LBA, then you should switch to LBA by setting the LBA flag on "
+#~ "all FAT partitions.  Otherwise, make sure the operating system and the "
+#~ "BIOS have the same geometry before resizing any FAT partitions."
+#~ msgstr ""
+#~ "Máte oddíl(y) Windows FAT, které nepoužívají LBA. Pokud váš BIOS "
+#~ "podporuje LBA, měli byste přejít na LBA nastavením přepínače LBA na všech "
+#~ "oddílech FAT. V opačném případě se před změnou velikosti oddílů FAT "
+#~ "přesvědčete, že operační systém a BIOS mají stejnou geometrii."
diff --git a/po/da.gmo b/po/da.gmo
new file mode 100644 (file)
index 0000000..6ca7203
Binary files /dev/null and b/po/da.gmo differ
diff --git a/po/da.po b/po/da.po
new file mode 100644 (file)
index 0000000..a2e18c5
--- /dev/null
+++ b/po/da.po
@@ -0,0 +1,3230 @@
+# Danish messages for parted
+# Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
+# This file is distributed under the same license as the parted package.
+# Daniel Nylander <po@danielnylander.se>, 2009.
+# Keld Simonsen <keld@keldix.com>, 2001-2002,2011
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: parted 2.4\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2011-05-30 13:45+0200\n"
+"PO-Revision-Date: 2011-05-21 17:09+0100\n"
+"Last-Translator: Keld Simonsen <keld@keldix.com>\n"
+"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
+"Language: da\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "Ugyldigt argument %s for %s"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "flertydigt argument %s for %s"
+
+#: lib/argmatch.c:153
+#, c-format
+msgid "Valid arguments are:"
+msgstr "Gyldige argumenter er:"
+
+#: lib/closeout.c:112 libparted/labels/fdasd.c:107
+msgid "write error"
+msgstr "skrivefejl"
+
+#: lib/error.c:181
+msgid "Unknown system error"
+msgstr "Ukendt systemfejl"
+
+#: lib/getopt.c:548 lib/getopt.c:577
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
+msgstr "%s: flaget '%s' er flertydigt\n"
+
+#: lib/getopt.c:625 lib/getopt.c:629
+#, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s: flaget '--%s' tillader intet argument\n"
+
+#: lib/getopt.c:638 lib/getopt.c:643
+#, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr "%s: flaget '%c%s' tillader intet argument\n"
+
+#: lib/getopt.c:686 lib/getopt.c:705
+#, c-format
+msgid "%s: option '--%s' requires an argument\n"
+msgstr "%s: flaget '--%s' kræver et argument\n"
+
+#: lib/getopt.c:743 lib/getopt.c:746
+#, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s: ukendt flag '--%s'\n"
+
+#: lib/getopt.c:754 lib/getopt.c:757
+#, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "%s: ukendt flag '%c%s'\n"
+
+#: lib/getopt.c:806 lib/getopt.c:809
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: ugyldig flag -- '%c'\n"
+
+#: lib/getopt.c:859 lib/getopt.c:876 lib/getopt.c:1084 lib/getopt.c:1102
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: flaget kræver et argument -- '%c'\n"
+
+#: lib/getopt.c:932 lib/getopt.c:948
+#, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s: flaget '-W %s' er flertydigt\n"
+
+#: lib/getopt.c:972 lib/getopt.c:990
+#, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr "%s: flaget '-W %s' tillader intet argument\n"
+
+#: lib/getopt.c:1011 lib/getopt.c:1029
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: flaget '-W %s' kræver et argument\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:271
+msgid "`"
+msgstr "'"
+
+#: lib/quotearg.c:272
+msgid "'"
+msgstr "'"
+
+#: lib/regcomp.c:133
+msgid "Success"
+msgstr "Lykkedes"
+
+#: lib/regcomp.c:136
+msgid "No match"
+msgstr "Ingen træffer"
+
+#: lib/regcomp.c:139
+msgid "Invalid regular expression"
+msgstr "Ugyldigt regulært udtryk"
+
+#: lib/regcomp.c:142
+msgid "Invalid collation character"
+msgstr "Ugyldigt sorteringstegn"
+
+#: lib/regcomp.c:145
+msgid "Invalid character class name"
+msgstr "Ugyldigt tegnklassnavn"
+
+#: lib/regcomp.c:148
+msgid "Trailing backslash"
+msgstr "Efterfølgende omvendt skråstreg"
+
+#: lib/regcomp.c:151
+msgid "Invalid back reference"
+msgstr "Ugyldig bagudreference"
+
+#: lib/regcomp.c:154
+msgid "Unmatched [ or [^"
+msgstr "Ensomt [ eller [^"
+
+#: lib/regcomp.c:157
+msgid "Unmatched ( or \\("
+msgstr "Ensomt ( eller \\("
+
+#: lib/regcomp.c:160
+msgid "Unmatched \\{"
+msgstr "Ensomt \\{"
+
+#: lib/regcomp.c:163
+msgid "Invalid content of \\{\\}"
+msgstr "Ugyldigt indhold i \\{\\}"
+
+#: lib/regcomp.c:166
+msgid "Invalid range end"
+msgstr "Ugyldig intervalslut"
+
+#: lib/regcomp.c:169
+msgid "Memory exhausted"
+msgstr "Slut på hukommelse"
+
+#: lib/regcomp.c:172
+msgid "Invalid preceding regular expression"
+msgstr "Ugyldigt foregående regulært udtryk"
+
+#: lib/regcomp.c:175
+msgid "Premature end of regular expression"
+msgstr "For tidlig slutning på regulært udtryk"
+
+#: lib/regcomp.c:178
+msgid "Regular expression too big"
+msgstr "Regulært udtryk er for stort"
+
+#: lib/regcomp.c:181
+msgid "Unmatched ) or \\)"
+msgstr "Ensomt ) eller \\)"
+
+#: lib/regcomp.c:702
+msgid "No previous regular expression"
+msgstr "Ingen tidligere regulære udtryk"
+
+#. TRANSLATORS: A regular expression testing for an affirmative answer
+#. (english: "yes").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^yesexpr='
+#: lib/rpmatch.c:147
+msgid "^[yY]"
+msgstr "^[jJyY]"
+
+#. TRANSLATORS: A regular expression testing for a negative answer
+#. (english: "no").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^noexpr='
+#: lib/rpmatch.c:160
+msgid "^[nN]"
+msgstr "^[nN]"
+
+#: lib/version-etc.c:74
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Pakket af %s (%s)\n"
+
+#: lib/version-etc.c:77
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Pakket af %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale.  Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:84
+msgid "(C)"
+msgstr "©"
+
+#: lib/version-etc.c:86
+msgid ""
+"\n"
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"\n"
+"Licens GPLv3+: GNU GPL version 3 eller senere <http://gnu.org/licenses/gpl."
+"html>.\n"
+"Dette er frit programmel: du må ændre og distribuere det\n"
+"Der gives INGEN GARANTIER, så vidt som lov tillader.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:102
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Skrevet af %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:106
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Skrevet af %s og %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:110
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Skrevet af %s, %s og %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Skrevet af %s, %s, %s\n"
+"og %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Skrevet af %s, %s, %s,\n"
+"%s og %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:131
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Skrevet af %s, %s, %s,\n"
+"%s, %s og %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:139
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Skrevet af %s, %s, %s,\n"
+"%s, %s, %s og %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:147
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Skrevet af %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"og %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:156
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Skrevet af %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s og %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:167
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Skrevet af %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s og andre.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package.  Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:245
+#, c-format
+msgid ""
+"\n"
+"Report bugs to: %s\n"
+msgstr ""
+"\n"
+"Rapportér fejl til: %s\n"
+"Send synspunkter på oversættelsen til <dansk@dansk-gruppen.dk>\n"
+
+#: lib/version-etc.c:247
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "Rapporteér fejl i %s til: %s\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Hjemmeside for %s: <%s>\n"
+
+#: lib/version-etc.c:253
+#, c-format
+msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
+msgstr "Hjemmeside for %s: <http://www.gnu.org/software/%s/>\n"
+
+#: lib/version-etc.c:256
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
+msgstr ""
+"Generel hjælp for hvordan man bruger GNU-programmer: <http://www.gnu.org/"
+"gethelp/>\n"
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "slut på hukommelse"
+
+#: lib/xstrtol-error.c:63
+#, c-format
+msgid "invalid %s%s argument `%s'"
+msgstr "ugyldigt %s%s-argument '%s'"
+
+#: lib/xstrtol-error.c:68
+#, c-format
+msgid "invalid suffix in %s%s argument `%s'"
+msgstr "ugyldigt suffiks i %s%s-argumentet '%s'"
+
+#: lib/xstrtol-error.c:72
+#, c-format
+msgid "%s%s argument `%s' too large"
+msgstr "%s%s-argumentet '%s' er for stort"
+
+#: libparted/arch/beos.c:245
+msgid "Disk Image"
+msgstr "Diskafbildning"
+
+#: libparted/arch/beos.c:346 libparted/arch/gnu.c:277
+#: libparted/arch/linux.c:1545
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "En fejl opstod da %s åbnedes: %s"
+
+#: libparted/arch/beos.c:357 libparted/arch/gnu.c:287
+#: libparted/arch/linux.c:1556
+#, c-format
+msgid "Unable to open %s read-write (%s).  %s has been opened read-only."
+msgstr ""
+"Kunne ikke åbne %s for både læsning og skrivning (%s). %s åbnedes i "
+"læsetilstand."
+
+#: libparted/arch/beos.c:419 libparted/arch/linux.c:1714
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s under positionering for at læse på %s"
+
+#: libparted/arch/beos.c:452 libparted/arch/gnu.c:465 libparted/arch/gnu.c:564
+#: libparted/arch/gnu.c:692 libparted/arch/linux.c:1674
+#: libparted/arch/linux.c:1755
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s under læsning på %s"
+
+#: libparted/arch/beos.c:488 libparted/arch/gnu.c:525
+#: libparted/arch/linux.c:1831
+#, c-format
+msgid "Can't write to %s, because it is opened read-only."
+msgstr "Kan ikke skrive til %s eftersom den kun er åbnet i læsetilstand."
+
+#: libparted/arch/beos.c:504 libparted/arch/linux.c:1856
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s under positionering for at skrive på %s"
+
+#: libparted/arch/beos.c:541 libparted/arch/gnu.c:601 libparted/arch/gnu.c:646
+#: libparted/arch/gnu.c:723 libparted/arch/linux.c:1804
+#: libparted/arch/linux.c:1898 libparted/arch/linux.c:1970
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s under skrivning på %s"
+
+#: partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Prøv '%s --help' for mere information.\n"
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr "Brug: %s [FLAG] [ENHED]...\n"
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the operating system about partition table changes.\n"
+"\n"
+"  -d, --dry-run    do not actually inform the operating system\n"
+"  -s, --summary    print a summary of contents\n"
+"  -h, --help       display this help and exit\n"
+"  -v, --version    output version information and exit\n"
+msgstr ""
+"Informér operativsystemet om ændringer i partitionstabel.\n"
+"\n"
+"  -d, --dry-run    test, men informér ikke operativsystemet\n"
+"  -s, --summary    udskriv et sammendrag af indholdet\n"
+"  -h, --help       vis denne hjælpetekst og afslut\n"
+"  -v, --version    vis versionsinformation og afslut\n"
+
+#: partprobe/partprobe.c:150
+msgid ""
+"\n"
+"When no DEVICE is given, probe all partitions.\n"
+msgstr ""
+"\n"
+"Når ingen ENHED er sngivet, så undersøg alle partitioner.\n"
+
+#: partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Rapportér fejl til <%s>.\n"
+"Send synspunkter på oversættelsen til <dansk@dansk-gruppen.dk>.\n"
+
+#: libparted/arch/gnu.c:110
+#, c-format
+msgid "Unable to open %s."
+msgstr "Kunne ikke åbne %s."
+
+#: libparted/arch/gnu.c:130
+msgid "Unable to probe store."
+msgstr "Kunne ikke undersøge lageret."
+
+#: libparted/arch/gnu.c:368
+msgid ""
+"The partition table cannot be re-read.  This means you need to reboot before "
+"mounting any modified partitions.  You also need to reinstall your boot "
+"loader before you reboot (which may require mounting modified partitions).  "
+"It is impossible do both things!  So you'll need to boot off a rescue disk, "
+"and reinstall your boot loader from the rescue disk.  Read section 4 of the "
+"Parted User documentation for more information."
+msgstr ""
+"Partitionstabellen kan ikke genindlæses. Dette betyder at du skal starte "
+"maskinen op igen inden du kan montere nogen ændrede partitioner. Du skal "
+"også geninstallere opstartsprogrammet inden du genstarter (hvilket kan "
+"indebære montering af ændrede partitioner). Det er umuligt at gøre begge "
+"dele! Så du skal starte fra en redningsdiskette og geninstallere "
+"opstartsprogrammet fra redningsdisketten. Læs kapitel 4 i Parteds "
+"brugermanual for mere information."
+
+#: libparted/arch/gnu.c:385
+#, c-format
+msgid ""
+"The partition table on %s cannot be re-read (%s).  This means the Hurd knows "
+"nothing about any modifications you made.  You should reboot your computer "
+"before doing anything with %s."
+msgstr ""
+"Partitionstabellen på %s kan ikke genindlæses (%s). Det betyder at Hurd ikke "
+"véd noget som helst om de ændringer du lavede. Du bør genstarte maskinen "
+"inden du gør noget som helst med %s."
+
+#: libparted/arch/gnu.c:396 parted/parted.c:1967
+msgid ""
+"You should reinstall your boot loader before rebooting.  Read section 4 of "
+"the Parted User documentation for more information."
+msgstr ""
+"Du bør geninstallere opstartsprogrammet inden du genopstarter. Læs sektion 4 "
+"i Parteds brugermanual for mere information."
+
+#: libparted/arch/gnu.c:788
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%s prøver at synkronisere %s med disk"
+
+#: libparted/arch/linux.c:520
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "Kunne ikke tage status på enheden %s - %s."
+
+#: libparted/arch/linux.c:577
+#, c-format
+msgid "Unable to determine the dm type of %s."
+msgstr "Kunne ikke bestemme dm-typen på %s."
+
+#: libparted/arch/linux.c:669
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+"Kunne ikke bestemme sektorstørrelse for %s: %s.\n"
+"Bruger standardsektorstørrelsen (%lld)."
+
+#: libparted/arch/linux.c:690
+#, c-format
+msgid ""
+"Could not determine physical sector size for %s.\n"
+"Using the logical sector size (%lld)."
+msgstr ""
+"Kunne ikke bestemme fysisk sektorstørrelse for %s.\n"
+"Bruger den logiske sektorstørrelse (%lld)."
+
+#: libparted/arch/linux.c:746
+#, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "Kunne ikke bestemme størrelsen på %s (%s)."
+
+#: libparted/arch/linux.c:832
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "Kunne ikke finde identitet for enhed %s - %s"
+
+#: libparted/arch/linux.c:841
+msgid "Generic IDE"
+msgstr "Generisk IDE"
+
+#: libparted/arch/linux.c:862
+#, c-format
+msgid ""
+"Device %s has multiple (%d) logical sectors per physical sector.\n"
+"GNU Parted supports this EXPERIMENTALLY for some special disk label/file "
+"system combinations, e.g. GPT and ext2/3.\n"
+"Please consult the web site for up-to-date information."
+msgstr ""
+"Enheden %s har flere (%d) logiske sektorer per fysisk sektor.\n"
+"GNU Parted har EKSPERIMENTIEL understøttelse for dette for visse specielle "
+"kombinationer af disketikette/filsystem, fx GPT og ext2/3.\n"
+"Referér til webstedet for opdateret information."
+
+#: libparted/arch/linux.c:1039
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "En fejl opstod ved initiering af SCSI-enheden %s - %s"
+
+#: libparted/arch/linux.c:1103
+#, c-format
+msgid ""
+"The device %s is so small that it cannot possibly store a file system or "
+"partition table.  Perhaps you selected the wrong device?"
+msgstr ""
+"Enheden %s har så lille at den slet ikke kan indeholde et filsystem eller en "
+"partitionstabel. Måske har du valgt den forkerte enhed?"
+
+#: libparted/arch/linux.c:1216
+#, c-format
+msgid ""
+"Unable to determine geometry of file/device %s.  You should not use Parted "
+"unless you REALLY know what you're doing!"
+msgstr ""
+"Kunne ikke bestemme geometrien på fil/enhed %s. Du bør ikke bruge Parted "
+"hvis du ikke er RIGTIGT sikker på hvad du gør!"
+
+#: libparted/arch/linux.c:1276
+msgid "Generic SD/MMC Storage Card"
+msgstr "Generelt SD/MMC-lagringskort"
+
+#: libparted/arch/linux.c:1329
+msgid "DAC960 RAID controller"
+msgstr "Styrekort for DAC960 RAID"
+
+#: libparted/arch/linux.c:1334
+msgid "Promise SX8 SATA Device"
+msgstr "Promise SX8 SATA-enhed"
+
+#: libparted/arch/linux.c:1339
+msgid "ATA over Ethernet Device"
+msgstr "ATA over Ethernet-enhed"
+
+#: libparted/arch/linux.c:1345
+msgid "IBM S390 DASD drive"
+msgstr "IBM S390 DASD-enhed"
+
+#: libparted/arch/linux.c:1351
+msgid "IBM iSeries Virtual DASD"
+msgstr "IBM iSeries virtuel DASD"
+
+#: libparted/arch/linux.c:1356
+msgid "Compaq Smart Array"
+msgstr "Compaq Smart Array"
+
+#: libparted/arch/linux.c:1361
+msgid "ATARAID Controller"
+msgstr "Styrekort for ATARAID"
+
+#: libparted/arch/linux.c:1366
+msgid "I2O Controller"
+msgstr "I2O-styrekort"
+
+#: libparted/arch/linux.c:1371
+msgid "User-Mode Linux UBD"
+msgstr ""
+
+#: libparted/arch/linux.c:1384
+#, c-format
+msgid "Linux device-mapper (%s)"
+msgstr "Linux device-mapper (%s)"
+
+#: libparted/arch/linux.c:1395
+msgid "Xen Virtual Block Device"
+msgstr "Xen virtuel blokenhed"
+
+#: libparted/arch/linux.c:1400
+msgid "Unknown"
+msgstr "Ukendt"
+
+#: libparted/arch/linux.c:1409
+msgid "Virtio Block Device"
+msgstr "Virtio-blokenhed"
+
+#: libparted/arch/linux.c:1414
+msgid "Linux Software RAID Array"
+msgstr "Linux programmeret RAID"
+
+#: libparted/arch/linux.c:1421
+msgid "ped_device_new()  Unsupported device type"
+msgstr "ped_device_new() Understøttelse mangler for denne enhedstype"
+
+#: libparted/arch/linux.c:1518 libparted/arch/linux.c:1590
+#, c-format
+msgid "Error fsyncing/closing %s: %s"
+msgstr "fejl ved fsync/close på %s: %s"
+
+#: libparted/arch/linux.c:1754
+#, c-format
+msgid "end of file while reading %s"
+msgstr "filslutning ved læsning af %s"
+
+#: libparted/arch/linux.c:2390
+#, c-format
+msgid ""
+"Error informing the kernel about modifications to partition %s -- %s.  This "
+"means Linux won't know about any changes you made to %s until you reboot -- "
+"so you shouldn't mount it or use it in any way before rebooting."
+msgstr ""
+"Fejl ved underretning af kernen om ændringer på partition %s - %s. Dette "
+"betyder at Linux ikke véd noget som helst om de ændringer du lavede på %s "
+"før du genopstarter - så du bør ikke montere den eller bruge den på nogen "
+"måde før du har genstartet."
+
+#: libparted/arch/linux.c:2528
+#, c-format
+msgid "Unable to determine the size and length of %s."
+msgstr "Kunne ikke bestemme størrelsen eller længden af %s."
+
+#: libparted/arch/linux.c:2553
+#, c-format
+msgid "Failed to add partition %d (%s)"
+msgstr "Mislykkedes med at tilføje partition %d (%s)"
+
+#: libparted/arch/linux.c:2580
+#, c-format
+msgid ""
+"Partition(s) %s on %s have been written, but we have been unable to inform "
+"the kernel of the change, probably because it/they are in use.  As a result, "
+"the old partition(s) will remain in use.  You should reboot now before "
+"making further changes."
+msgstr ""
+
+#: libparted/arch/linux.c:2706
+#, c-format
+msgid ""
+"parted was unable to re-read the partition table on %s (%s).  This means "
+"Linux won't know anything about the modifications you made. "
+msgstr ""
+"parted kunne ikke genindlæse partitionstabellen på %s (%s). Det betyder at "
+"Linux ikke véd noget som helst om de ændringer du lavede. "
+
+#: libparted/cs/geom.c:161
+#, c-format
+msgid "Can't have the end before the start! (start sector=%jd length=%jd)"
+msgstr "Kan ikke have slutningen før begyndelsen! (startsektor=%jd længde=%jd)"
+
+#: libparted/cs/geom.c:169
+msgid "Can't have a partition outside the disk!"
+msgstr "Kan ikke have en partition udenfor disken!"
+
+#: libparted/cs/geom.c:384
+#, c-format
+msgid "Attempt to write sectors %ld-%ld outside of partition on %s."
+msgstr "Forsøg på at skrive sektorerne %ld-%ld udenfor partitionen på %s"
+
+#: libparted/cs/geom.c:424
+msgid "checking for bad blocks"
+msgstr "kontrollerer for dårlige blokke"
+
+#: libparted/debug.c:96
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:109
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr "Påstand (%s) på %s:%d i funktionen %s() mislykkedes."
+
+#: libparted/disk.c:192
+#, c-format
+msgid "%s: unrecognised disk label"
+msgstr "%s: ukendt diskmærke"
+
+#: libparted/disk.c:484
+#, c-format
+msgid ""
+"This libparted doesn't have write support for %s.  Perhaps it was compiled "
+"read-only."
+msgstr ""
+"Denne libparted har ikke skriveunderstøttelse for %s. Måske var den oversat "
+"skrivebeskyttet."
+
+#: libparted/disk.c:629
+#, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "Partition %d er %s, men filsystemet er %s."
+
+#: libparted/disk.c:838
+msgid "cylinder_alignment"
+msgstr ""
+
+#: libparted/disk.c:844
+#, c-format
+msgid "Unknown disk flag, %d."
+msgstr "Ukendt diskflag, %d."
+
+#: libparted/disk.c:1283
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "Filallokeringstabeller for %s understøtter ikke udvidede partitioner."
+
+#: libparted/disk.c:1858
+#, c-format
+msgid "%s disk labels don't support logical or extended partitions."
+msgstr ""
+"Filallokeringstabeller for %s understøtter ikke logiske eller udvidede "
+"partitioner."
+
+#: libparted/disk.c:1871
+msgid "Too many primary partitions."
+msgstr "For mange primære partitioner."
+
+#: libparted/disk.c:1880
+#, c-format
+msgid ""
+"Can't add a logical partition to %s, because there is no extended partition."
+msgstr ""
+"Kan ikke tilføje en logisk partition til %s, da der mangler en udvidet "
+"partition."
+
+#: libparted/disk.c:1904
+#, c-format
+msgid "Can't have more than one extended partition on %s."
+msgstr "Kan ikke have mere end én udvidet partition på %s."
+
+#: libparted/disk.c:1914
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr "Kan ikke have logiske partitioner udenfor den udvidede partition."
+
+#: libparted/disk.c:1939
+#, c-format
+msgid "Can't have a logical partition outside of the extended partition on %s."
+msgstr ""
+"Kan ikke have en logisk partition udenfor den udvidede partition på %s."
+
+#: libparted/disk.c:1949 libparted/disk.c:2008 libparted/disk.c:2186
+msgid "Can't have overlapping partitions."
+msgstr "Kan ikke have overlappende partitioner."
+
+#: libparted/disk.c:1957
+msgid "Can't have a primary partition inside an extended partition."
+msgstr "Kan ikke have en primær partition inden i en udvidet partition."
+
+#: libparted/disk.c:2387
+msgid "metadata"
+msgstr "metadata"
+
+#: libparted/disk.c:2389
+msgid "free"
+msgstr "ledigt"
+
+#: libparted/disk.c:2391 parted/ui.c:1194 parted/ui.c:1222
+msgid "extended"
+msgstr "udvidet"
+
+#: libparted/disk.c:2393 parted/ui.c:1198 parted/ui.c:1226
+msgid "logical"
+msgstr "logisk"
+
+#: libparted/disk.c:2395 parted/ui.c:1190 parted/ui.c:1218
+msgid "primary"
+msgstr "primær"
+
+#: libparted/disk.c:2411
+msgid "boot"
+msgstr "start"
+
+#: libparted/disk.c:2413
+msgid "bios_grub"
+msgstr "bios_grub"
+
+#: libparted/disk.c:2415
+msgid "root"
+msgstr "rod"
+
+#: libparted/disk.c:2417
+msgid "swap"
+msgstr "swapplads"
+
+#: libparted/disk.c:2419
+msgid "hidden"
+msgstr "skjult"
+
+#: libparted/disk.c:2421
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2423
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2425
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2427
+msgid "hp-service"
+msgstr "hp-service"
+
+#: libparted/disk.c:2429
+msgid "palo"
+msgstr "palo"
+
+#: libparted/disk.c:2431
+msgid "prep"
+msgstr "prep"
+
+#: libparted/disk.c:2433
+msgid "msftres"
+msgstr "msftres"
+
+#: libparted/disk.c:2435
+msgid "atvrecv"
+msgstr "atvrecv"
+
+#: libparted/disk.c:2437
+msgid "diag"
+msgstr "diag"
+
+#: libparted/disk.c:2439
+msgid "legacy_boot"
+msgstr ""
+
+#: libparted/disk.c:2445
+#, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Ukendt partitionsflag, %d."
+
+#: libparted/exception.c:77
+msgid "Information"
+msgstr "Information"
+
+#: libparted/exception.c:78
+msgid "Warning"
+msgstr "Advarsel"
+
+#: libparted/exception.c:79
+msgid "Error"
+msgstr "Fejl"
+
+#: libparted/exception.c:80
+msgid "Fatal"
+msgstr "Fatal"
+
+#: libparted/exception.c:81
+msgid "Bug"
+msgstr "Programfejl"
+
+#: libparted/exception.c:82
+msgid "No Implementation"
+msgstr "Ikke implementeret"
+
+#: libparted/exception.c:86
+msgid "Fix"
+msgstr "Reparér"
+
+#: libparted/exception.c:87
+msgid "Yes"
+msgstr "Ja"
+
+#: libparted/exception.c:88
+msgid "No"
+msgstr "Nej"
+
+#: libparted/exception.c:89
+msgid "OK"
+msgstr "O.k."
+
+#: libparted/exception.c:90
+msgid "Retry"
+msgstr "Forsøg igen"
+
+#: libparted/exception.c:91
+msgid "Ignore"
+msgstr "Ignorér"
+
+#: libparted/exception.c:92
+msgid "Cancel"
+msgstr "Annullér"
+
+#: libparted/exception.c:132
+#, c-format
+msgid ""
+"A bug has been detected in GNU Parted.  Refer to the web site of parted "
+"http://www.gnu.org/software/parted/parted.html for more information of what "
+"could be useful for bug submitting!  Please email a bug report to %s "
+"containing at least the version (%s) and the following message:  "
+msgstr ""
+"En fejl er blevet fundet i GNU Parted. Se Parted's websted http://www.gnu."
+"org/software/parted/parted.html for mere information om hvad der kan være "
+"nyttigt for fejlrapportering! Send en fejlrapport med e-post til %s hvor du "
+"angiver versionsnumret (%s) og følgende meddelelse:"
+
+#: libparted/labels/aix.c:103
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr ""
+"Understøttelse for at læse AIX disketiketter er ikke implementeret endnu."
+
+#: libparted/labels/aix.c:114
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr ""
+"Understøttelse for at skrive AIX disketiketter er ikke implementeret endnu."
+
+#: libparted/labels/aix.c:127
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr ""
+"Understøttelse for at tilføje AIX disketiketter er ikke implementeret endnu."
+
+#: libparted/labels/aix.c:137
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr ""
+"Understøttelse for at duplikere AIX disketiketter er ikke implementeret "
+"endnu."
+
+#: libparted/labels/aix.c:155
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr ""
+"Understøttelse for at sætte systemtype på partitioner i AIX disketiketter er "
+"ikke implementeret endnu."
+
+#: libparted/labels/aix.c:165
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr ""
+"Understøttelse for at sætte flag i AIX disketiketter er ikke implementeret "
+"endnu."
+
+#: libparted/labels/bsd.c:571 libparted/labels/dasd.c:833
+#: libparted/labels/dos.c:2176 libparted/labels/dvh.c:787
+#: libparted/labels/gpt.c:1782 libparted/labels/loop.c:247
+#: libparted/labels/mac.c:1426 libparted/labels/pc98.c:748
+#: libparted/labels/rdb.c:1052 libparted/labels/sun.c:780
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "Kunne ikke opfylde alle begrænsninger på partitionen."
+
+#: libparted/labels/bsd.c:596
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "Kan ikke tildele en plads til bsd-disketikette."
+
+#: libparted/labels/dasd.c:859
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "Kan ikke tildele en plads til dasd-disketikette"
+
+#: libparted/labels/dos.c:966
+#, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr "Ugyldig partitionstabel på %s - fejlagtig signatur %x."
+
+#: libparted/labels/dos.c:994
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "Ugyldig partitionstabel - rekursiv partition på %s."
+
+#: libparted/labels/dos.c:1504
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr "Udvidede partitioner kan ikke være skjulte i etiketter af typen msdos."
+
+#: libparted/labels/dos.c:2158
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+"Parted kan ikke ændre størrelse på partitioner som håndteres af Windows "
+"Dynamic Disk."
+
+#: libparted/labels/dvh.c:200
+#, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr "%s har ingen udvidet partition (bindhoved-partition)."
+
+#: libparted/labels/dvh.c:326
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr ""
+"Tjeksummen er forkert, og det tyder på at partitionstabellen er ødelagt."
+
+#: libparted/labels/dvh.c:631
+msgid "Only primary partitions can be root partitions."
+msgstr "Kun primære partitioner kan være rod-partitioner."
+
+#: libparted/labels/dvh.c:645
+msgid "Only primary partitions can be swap partitions."
+msgstr "Kun primære partitioner kan være swap-partitioner."
+
+#: libparted/labels/dvh.c:659
+msgid "Only logical partitions can be a boot file."
+msgstr "Kun logiske partitioner kan være en opstatsfil."
+
+#: libparted/labels/dvh.c:736
+#, c-format
+msgid ""
+"failed to set dvh partition name to %s:\n"
+"Only logical partitions (boot files) have a name."
+msgstr ""
+"mislykkedes med at sætte navn på dvh-partition %s:\n"
+"Kun logiske partitioner (opstartsfiler) har et navn."
+
+#: libparted/labels/dvh.c:829
+msgid "Too many primary partitions"
+msgstr "For mange primære partitioner"
+
+#: libparted/labels/fdasd.c:98
+msgid "open error"
+msgstr "fejl ved åbning (open)"
+
+#: libparted/labels/fdasd.c:101
+msgid "seek error"
+msgstr "fejl ved søgning (seek)"
+
+#: libparted/labels/fdasd.c:104
+msgid "read error"
+msgstr "fejl ved læsning (read)"
+
+#: libparted/labels/fdasd.c:110
+msgid "ioctl() error"
+msgstr "ioctl()-fejl"
+
+#: libparted/labels/fdasd.c:114
+msgid "API version mismatch"
+msgstr "API-versionen stemmer ikke"
+
+#: libparted/labels/fdasd.c:118
+msgid "Unsupported disk type"
+msgstr "Disktypen understøttes ikke"
+
+#: libparted/labels/fdasd.c:122
+msgid "Unsupported disk format"
+msgstr "Diskformatet understøttes ikke"
+
+#: libparted/labels/fdasd.c:126
+msgid "Disk is in use"
+msgstr "Disken er i brug"
+
+#: libparted/labels/fdasd.c:130
+msgid "Syntax error in config file"
+msgstr "Syntaksfejl i konfigurationsfilen"
+
+#: libparted/labels/fdasd.c:134
+msgid "Volume label is corrupted"
+msgstr "Volumetiketten er skaded"
+
+#: libparted/labels/fdasd.c:138
+msgid "A data set name is corrupted"
+msgstr "Et datasætnavn er skadet"
+
+#: libparted/labels/fdasd.c:142
+msgid "Memory allocation failed"
+msgstr "Hukommelsesallokeringen mislykkedes"
+
+#: libparted/labels/fdasd.c:146
+msgid "Device verification failed"
+msgstr "Enhedsverificeringen mislykkedes"
+
+#: libparted/labels/fdasd.c:147
+msgid "The specified device is not a valid DASD device"
+msgstr "Den angivne enhed er ikke en gyldig DASD-enhed"
+
+#: libparted/labels/fdasd.c:150 libparted/labels/vtoc.c:179
+msgid "Fatal error"
+msgstr "Fatal fejl"
+
+#: libparted/labels/fdasd.c:226
+msgid "No room for volume label."
+msgstr "Ingen plads for volumetikette."
+
+#: libparted/labels/fdasd.c:234
+msgid "No room for partition info."
+msgstr "Ingen plads for partitionsinformation."
+
+#: libparted/labels/fdasd.c:709
+msgid "Invalid VTOC."
+msgstr "Ugyldig VTOC."
+
+#: libparted/labels/fdasd.c:766
+msgid "Could not retrieve API version."
+msgstr "Kunne ikke få fat på API-versionen."
+
+#: libparted/labels/fdasd.c:769
+#, c-format
+msgid ""
+"The current API version '%d' doesn't match dasd driver API version '%d'!"
+msgstr ""
+"Den aktuelle API-version '%d' passer ikke med API-versionen '%d' for dasd-"
+"drivrutinen!"
+
+#: libparted/labels/fdasd.c:806
+msgid "Could not retrieve disk geometry information."
+msgstr "Kunne ikke få fat på information om diskgeometri."
+
+#: libparted/labels/fdasd.c:810
+msgid "Could not retrieve blocksize information."
+msgstr "Kunne ikke få fat på information om blokstørrelse."
+
+#: libparted/labels/fdasd.c:815
+msgid "Could not retrieve disk information."
+msgstr "Kunne ikke få fat på diskinformation."
+
+#: libparted/labels/gpt.c:493
+#, c-format
+msgid ""
+"%s contains GPT signatures, indicating that it has a GPT table.  However, it "
+"does not have a valid fake msdos partition table, as it should.  Perhaps it "
+"was corrupted -- possibly by a program that doesn't understand GPT partition "
+"tables.  Or perhaps you deleted the GPT table, and are now using an msdos "
+"partition table.  Is this a GPT partition table?"
+msgstr ""
+"%s indeholder GPT-signaturer, der tyder på at den har en GPT-tabel. "
+"Imidlertid har den ikke en gyldig falsk msdos-partitionstabel som den burde. "
+"Måske er den ødelagt - muligvis af et program der ikke forstår GPT-"
+"partitionstabeller. Eller måske slettede du GPT-tabellen, og bruger nu en "
+"msdos-partitionstabel. Er dette en GPT-tabel?"
+
+#: libparted/labels/gpt.c:693
+#, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise.  Please report this!"
+msgstr ""
+"Formatet på GPT-partitionstabellen er version %x, hvilket er nyere end hvad "
+"Parted kan genkende. Rapportér gerne dette!"
+
+#: libparted/labels/gpt.c:740
+#, c-format
+msgid ""
+"Not all of the space available to %s appears to be used, you can fix the GPT "
+"to use all of the space (an extra %llu blocks) or continue with the current "
+"setting? "
+msgstr ""
+
+#: libparted/labels/gpt.c:952
+msgid ""
+"The backup GPT table is not at the end of the disk, as it should be.  This "
+"might mean that another operating system believes the disk is smaller.  Fix, "
+"by moving the backup to the end (and removing the old backup)?"
+msgstr ""
+"Sikkerhedskopien af GPT-tabellen er ikke i slutningen af disken, som den "
+"burde være. Dette kan betyde at et andet styresystem tror disken er mindre. "
+"Skal det rettes ved at flytte sikkerhedskopien til slutningen (og fjerne den "
+"gamle sikkerhedskopi)?"
+
+#: libparted/labels/gpt.c:976
+msgid ""
+"Both the primary and backup GPT tables are corrupt.  Try making a fresh "
+"table, and using Parted's rescue feature to recover partitions."
+msgstr ""
+"Både den primære GPT-tabel og sikkerhedskopien er ødelagt. Prøv at lave en "
+"frisk tabel, og at genskabe partitioner med Parteds redningsfacilitet."
+
+#: libparted/labels/gpt.c:987
+msgid ""
+"The backup GPT table is corrupt, but the primary appears OK, so that will be "
+"used."
+msgstr ""
+"Sikkerhedskopien af GPT-tabellen er ødelagt, men den primære tabel ser ud "
+"til at være i orden, så den vil blive brugt."
+
+#: libparted/labels/gpt.c:999
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr ""
+"Den primære GPT-tabel er ødelagt, men sikkerhedskopien ser ud til at være i "
+"orden, så den vil blive brugt."
+
+#: libparted/labels/gpt.c:1023
+msgid "primary partition table array CRC mismatch"
+msgstr "Uoverensstemmelse for CRC på primær partitionstabel"
+
+#: libparted/labels/mac.c:184
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Ugyldig signatur %x for en filallokeringstabel for Mac."
+
+#: libparted/labels/mac.c:231
+msgid "Partition map has no partition map entry!"
+msgstr "Partitionstabellen mangler oplysninger om sig selv!"
+
+#: libparted/labels/mac.c:279
+#, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr "%s er for lille for en filallokeringstabel for Mac!"
+
+#: libparted/labels/mac.c:508
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "Partition %d har en ugyldig signatur %x."
+
+#: libparted/labels/mac.c:526
+#, c-format
+msgid "Partition %d has an invalid length of 0 bytes!"
+msgstr "Partition %d har en ugyldig længde, 0 byte!"
+
+#: libparted/labels/mac.c:557
+msgid "The data region doesn't start at the start of the partition."
+msgstr "Dataområdet begynder ikke ved partitionens begyndelse."
+
+#: libparted/labels/mac.c:574
+msgid "The boot region doesn't start at the start of the partition."
+msgstr "Startområdet begynder ikke ved partitionens begyndelse"
+
+#: libparted/labels/mac.c:588
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr "Partitionens opstartområde optager ikke hele partitionens plads."
+
+#: libparted/labels/mac.c:599
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr "Partitionens dataområde optager ikke hele partitionens plads."
+
+#: libparted/labels/mac.c:652
+#, c-format
+msgid ""
+"Weird block size on device descriptor: %d bytes is not divisible by 512."
+msgstr ""
+"Mærkelig blokstørrelse på enhedens beskriver: %d byte er ikke helt delbart "
+"med 512."
+
+#: libparted/labels/mac.c:665
+#, c-format
+msgid ""
+"The driver descriptor says the physical block size is %d bytes, but Linux "
+"says it is %d bytes."
+msgstr ""
+"Enhedens beskriver påstår at den fysiske blokstørrelse er %d byte, men Linux "
+"påstår at den er %d byte."
+
+#: libparted/labels/mac.c:719
+msgid "No valid partition map found."
+msgstr "Ingen gyldig partitionstabel kunne findes."
+
+#: libparted/labels/mac.c:780
+#, c-format
+msgid ""
+"Conflicting partition map entry sizes!  Entry 1 says it is %d, but entry %d "
+"says it is %d!"
+msgstr ""
+"Konfliktende størrelsesdata i partitionstabellen! Post 1 påstår den er %d, "
+"mens post %d påstår den er %d!"
+
+#: libparted/labels/mac.c:811
+msgid "Weird!  There are 2 partitions map entries!"
+msgstr "Mærkeligt! Der er 2 poster i partitionstabellen!"
+
+#: libparted/labels/mac.c:1357
+msgid ""
+"Changing the name of a root or swap partition will prevent Linux from "
+"recognising it as such."
+msgstr ""
+"At ændre navnet på en rod- eller swappartition gør at Linux ikke kan "
+"genkende dem."
+
+#: libparted/labels/mac.c:1461
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr "Kan ikke tilføje endnu en partition - partitionstabellen er for lille!"
+
+#: libparted/labels/pc98.c:331
+#, c-format
+msgid "Invalid partition table on %s."
+msgstr "Ugyldig partitionstabel på %s."
+
+#: libparted/labels/pc98.c:384 libparted/labels/pc98.c:462
+#, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries.  This is still "
+"unsupported."
+msgstr ""
+"Partitionen %d ligger ikke på hel cylindergrænse. Dette er stadig ikke "
+"understøttelset."
+
+#: libparted/labels/pc98.c:780
+msgid "Can't add another partition."
+msgstr "Kan ikke tilføje endnu en partition."
+
+#: libparted/labels/pt-tools.c:125
+#, c-format
+msgid ""
+"partition length of %jd sectors exceeds the %s-partition-table-imposed "
+"maximum of %jd"
+msgstr ""
+"partitionslængden på %jd sektorer overstiger maksimum for %s-partition-table-"
+"imposed på %jd"
+
+#: libparted/labels/pt-tools.c:138
+#, c-format
+msgid ""
+"starting sector number, %jd exceeds the %s-partition-table-imposed maximum "
+"of %jd"
+msgstr ""
+"sektornumret for begyndelsen, %jd overstiger maksimum for %s-partition-table-"
+"imposed maksimum på %jd"
+
+#: libparted/labels/rdb.c:169
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr "%s : Fejlagtig kontrolsum på blok %llu af typen %s."
+
+#: libparted/labels/rdb.c:484
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr "%s : Fandt ikke rdb-blok. Dette bør aldrig ske."
+
+#: libparted/labels/rdb.c:573
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr "%s : løkke opdaget ved blok %d."
+
+#: libparted/labels/rdb.c:592
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr "%s : %s-listen ser ud til at være fejlagtig på blok %s."
+
+#: libparted/labels/rdb.c:691
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr "%s : Mislykkedes med at liste fejlagtige blokke."
+
+#: libparted/labels/rdb.c:699
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr "%s : Mislykkedes med at liste partitionsblokke."
+
+#: libparted/labels/rdb.c:707
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr "%s : Mislykkedes med at liste filsystemsblokke."
+
+#: libparted/labels/rdb.c:715
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr "%s : Mislykkedes med at liste opstartsblokke."
+
+#: libparted/labels/rdb.c:742
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr "Mislykkedes med at skrive partitionsblok på %d."
+
+#: libparted/labels/rdb.c:1080
+msgid "Unable to allocate a partition number."
+msgstr "Kan ikke tildele et partitionsnummer."
+
+#: libparted/labels/sun.c:161
+msgid "Corrupted Sun disk label detected."
+msgstr "En beskadiget Sun disk-etikette blev fundet."
+
+#: libparted/labels/sun.c:276
+#, c-format
+msgid ""
+"The disk CHS geometry (%d,%d,%d) reported by the operating system does not "
+"match the geometry stored on the disk label (%d,%d,%d)."
+msgstr ""
+"Disk CHS-geometrien (%d,%d,%d) som opgivet af styresystemet passer ikke med "
+"geometrien gemt på disk-etiketten (%d,%d,%d)."
+
+#: libparted/labels/sun.c:298
+#, c-format
+msgid "The disk label describes a disk bigger than %s."
+msgstr "Disk-etiketten beskriver en disk større end %s."
+
+#: libparted/labels/sun.c:473
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr "Disken har %d cylindre, hvilket er større end maksimum som er 65536."
+
+#: libparted/labels/sun.c:812
+msgid ""
+"The Whole Disk partition is the only available one left.  Generally, it is "
+"not a good idea to overwrite this partition with a real one.  Solaris may "
+"not be able to boot without it, and SILO (the sparc boot loader) appreciates "
+"it as well."
+msgstr ""
+"Hele disk-partitionen er den eneste tilbageværende, der er tilgængelig. "
+"Generelt er det ikke en god idé at overskrive denne partition med en rigtig "
+"én. Solaris vil muligvis ikke kunne starte op uden den, og SILO "
+"(opstartsprogrammet for Sparc) sætter også pris på den."
+
+#: libparted/labels/sun.c:827
+msgid "Sun disk label is full."
+msgstr "Sun disk-etikette er fuld."
+
+#: libparted/labels/vtoc.c:164
+msgid "opening of device failed"
+msgstr "åbning af enheden mislykkedes"
+
+#: libparted/labels/vtoc.c:168
+msgid "seeking on device failed"
+msgstr "søgning på enhed mislykkedes"
+
+#: libparted/labels/vtoc.c:172
+msgid "writing to device failed"
+msgstr "skrivning til enheden mislykkedes"
+
+#: libparted/labels/vtoc.c:176
+msgid "reading from device failed"
+msgstr "læsning fra enheden mislykkedes"
+
+#: libparted/labels/vtoc.c:299 libparted/labels/vtoc.c:308
+#: libparted/labels/vtoc.c:329 libparted/labels/vtoc.c:336
+msgid "Could not read volume label."
+msgstr "Kunne ikke læse volumetikette."
+
+#: libparted/labels/vtoc.c:356 libparted/labels/vtoc.c:363
+msgid "Could not write volume label."
+msgstr "Kunne ikke skrive volumetikette."
+
+#: libparted/labels/vtoc.c:469
+msgid "Could not read VTOC labels."
+msgstr "Kunne ikke læse VTOC-etiketter."
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr "Kunne ikke læse VTOC FMT1 DSCB."
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr "Kunne ikke læse VTOC FMT4 DSCB."
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr "Kunne ikke læse VTOC FMT5 DSCB."
+
+#: libparted/labels/vtoc.c:496
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr "Kunne ikke læse VTOC FMT7 DSCB."
+
+#: libparted/labels/vtoc.c:516
+msgid "Could not write VTOC labels."
+msgstr "Kunne ikke skrive VTOC-etiketter."
+
+#: libparted/labels/vtoc.c:522
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr "Kunne ikke skrive VTOC FMT1 DSCB."
+
+#: libparted/labels/vtoc.c:529
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr "Kunne ikke skrive VTOC FMT4 DSCB."
+
+#: libparted/labels/vtoc.c:536
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr "Kunne ikke skrive VTOC FMT5 DSCB."
+
+#: libparted/labels/vtoc.c:543
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr "Kunne ikke skrive VTOC FMT7 DSCB."
+
+#: libparted/libparted.c:230 libparted/libparted.c:245
+msgid "Out of memory."
+msgstr "Ikke mere hukommelse."
+
+#: libparted/unit.c:138
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr "Kan ikke få fat på enhedsstørrelse på specialenhed 'COMPACT'."
+
+#: libparted/unit.c:384
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr "'%s' indeholder en ugyldig syntaks for placeringer."
+
+#: libparted/unit.c:392
+#, c-format
+msgid "The maximum head value is %d."
+msgstr "Den maksimale værdi for hoved er %d."
+
+#: libparted/unit.c:399
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr "Den maksimale sektor-værdi er %d."
+
+#: libparted/unit.c:411 libparted/unit.c:556
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr "Placeringen %s er udenfor enheden %s."
+
+#: libparted/unit.c:531
+msgid "Invalid number."
+msgstr "Ugyldigt nummer."
+
+#: libparted/fs/amiga/affs.c:62 libparted/fs/amiga/apfs.c:55
+#: libparted/fs/amiga/asfs.c:69
+#, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "%s : Mislykkedes med at allokere partitionsblok\n"
+
+#: libparted/fs/amiga/affs.c:77 libparted/fs/amiga/apfs.c:68
+#: libparted/fs/amiga/asfs.c:81
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr "%s : Mislykkedes med at allokere blok\n"
+
+#: libparted/fs/amiga/affs.c:82 libparted/fs/amiga/apfs.c:73
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr "%s : Kunne ikke læse startblok %llu\n"
+
+#: libparted/fs/amiga/affs.c:98 libparted/fs/amiga/apfs.c:84
+#: libparted/fs/amiga/asfs.c:87 libparted/fs/amiga/asfs.c:101
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr "%s : Kunne ikke læse rodblok %llu\n"
+
+#: libparted/fs/amiga/amiga.c:71
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr "%s : Mislykkedes med at allokere id liste-element\n"
+
+#: libparted/fs/amiga/amiga.c:188
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr "%s : Kunne ikke læse blok %llu\n"
+
+#: libparted/fs/amiga/amiga.c:201
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr "%s : Fejlagtig kontrolsum på blok %llu af typen %s\n"
+
+#: libparted/fs/amiga/amiga.c:211
+#, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s : Kunne ikke skrive blok %d\n"
+
+#: libparted/fs/amiga/amiga.c:277
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr "%s : Mislykkedes med at allokere dikspecifik rdb-blok\n"
+
+#: libparted/fs/amiga/amiga.c:288
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr "%s :Fandt ikke rdb-blok, dette burde aldig kunne ske\n"
+
+#: libparted/fs/amiga/amiga.c:317
+#, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr "%s : Mislykkedes med at læse partitionsblok %llu\n"
+
+#: libparted/fs/fat/fat.c:174
+msgid ""
+"GNU Parted was miscompiled: the FAT boot sector should be 512 bytes.  FAT "
+"support will be disabled."
+msgstr ""
+"GNU Parted kompileredes fejlagtigt: FAT's startsektor skal være 512 byte. "
+"Understøttelsen for FAT vil være deaktiveret."
+
+#: libparted/fs/fat/bootsector.c:49 libparted/fs/fat/bootsector.c:56
+msgid "File system has an invalid signature for a FAT file system."
+msgstr "Filsystemet har en ugyldig signatur for filsystemer af typen FAT."
+
+#: libparted/fs/fat/bootsector.c:64
+msgid "File system has an invalid sector size for a FAT file system."
+msgstr ""
+"Filsystemet har en ugyldig sektorstørrelse for et filsystem af typen FAT."
+
+#: libparted/fs/fat/bootsector.c:71
+msgid "File system has an invalid cluster size for a FAT file system."
+msgstr ""
+"Filsystemet har en ugyldig klyngestørrelse for et filsystem af typen FAT."
+
+#: libparted/fs/fat/bootsector.c:78
+msgid ""
+"File system has an invalid number of reserved sectors for a FAT file system."
+msgstr ""
+"Filsystemet har et ugyldigt antal reserverede sektorer for et filsystem af "
+"typen FAT."
+
+#: libparted/fs/fat/bootsector.c:85
+msgid "File system has an invalid number of FATs."
+msgstr "Filsystemet har et fejlagtigt antal filallokeringstabeller (FAT)."
+
+#: libparted/fs/fat/bootsector.c:156
+#, c-format
+msgid ""
+"This file system has a logical sector size of %d.  GNU Parted is known not "
+"to work properly with sector sizes other than 512 bytes."
+msgstr ""
+"Filsystemet har en logisk sektorstørrelse på %d. Det er kendt at GNU Parted "
+"ikke fungerer godt med andre sektorstørrelser end 512 byte."
+
+#: libparted/fs/fat/bootsector.c:181
+#, c-format
+msgid ""
+"The file system's CHS geometry is (%d, %d, %d), which is invalid.  The "
+"partition table's CHS geometry is (%d, %d, %d).  If you select Ignore, the "
+"file system's CHS geometry will be left unchanged.  If you select Fix, the "
+"file system's CHS geometry will be set to match the partition table's CHS "
+"geometry."
+msgstr ""
+"Filsystemets CHS-geometri er (%d, %d, %d), hvilket er ugyldigt.  "
+"Partitionstabellens CHS-geometri er (%d, %d, %d). Hvis du vælger Ignorér så "
+"vil filsystemets CHS-geometri ikke blive ændret. Hvis du vælger Reparér så "
+"vil filsystemets CHS-geometri bilve sat til at matche partitionstabellens "
+"CHS-geometri."
+
+#: libparted/fs/fat/bootsector.c:230
+msgid "FAT boot sector says logical sector size is 0.  This is weird. "
+msgstr ""
+"FAT's startsektor mener at den logiske sektorstørrelse er 0. Mærkeligt."
+
+#: libparted/fs/fat/bootsector.c:236
+msgid "FAT boot sector says there are no FAT tables.  This is weird. "
+msgstr "FAT's startsektor mener at der mangler FAT-tabeller. Mærkeligt."
+
+#: libparted/fs/fat/bootsector.c:242
+msgid "FAT boot sector says clusters are 0 sectors.  This is weird. "
+msgstr "FAT's startsektor mener at en klynge består af 0 sektorer. Mærkeligt."
+
+#: libparted/fs/fat/bootsector.c:252
+msgid "File system is FAT12, which is unsupported."
+msgstr "Filsystemet er FAT12, som ikke understøttes."
+
+#: libparted/fs/fat/bootsector.c:428
+#, c-format
+msgid ""
+"The information sector has the wrong signature (%x).  Select cancel for now, "
+"and send in a bug report.  If you're desperate, it's probably safe to ignore."
+msgstr ""
+"Informationssektoren har forkert signatur (%x). Vælg annullér og indsend en "
+"fejlrapport. Hvis du er desperat så er det formodentlig sikkert at ignorere "
+"fejlen."
+
+#: libparted/fs/linux_swap/linux_swap.c:247
+#, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "Ukendt signatur '%10s' for gammel type Linux swapplads."
+
+#: libparted/fs/linux_swap/linux_swap.c:290
+#, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "Ukendt signatur '%10s' for ny type Linux swapplads."
+
+#: libparted/fs/linux_swap/linux_swap.c:330
+#, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Ukendt Linux swsup signatur '%9s'."
+
+#: libparted/fs/hfs/probe.c:50
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to "
+"%d bytes."
+msgstr ""
+
+#: parted/parted.c:123
+msgid "displays this help message"
+msgstr "viser denne hjælpetekst"
+
+#: parted/parted.c:124
+msgid "lists partition layout on all block devices"
+msgstr "lister partitionslayout for alle blokenheder"
+
+#: parted/parted.c:125
+msgid "displays machine parseable output"
+msgstr "viser udskriften på maskintolkningsbar måde"
+
+#: parted/parted.c:126
+msgid "never prompts for user intervention"
+msgstr "spørger aldrig brugeren om alternativer"
+
+#: parted/parted.c:127
+msgid "displays the version"
+msgstr "viser versionen"
+
+#: parted/parted.c:128
+msgid "alignment for new partitions"
+msgstr ""
+
+#: parted/parted.c:140
+msgid ""
+"NUMBER is the partition number used by Linux.  On MS-DOS disk labels, the "
+"primary partitions number from 1 to 4, logical partitions from 5 onwards.\n"
+msgstr ""
+"NUMMER er partitionsnumret som Linux bruger. På filsystemer af type MS-DOS "
+"er de primære partitioner numrerede fra 1 til 4, og de logiske partitioner "
+"fra 5 og opad.\n"
+
+#: parted/parted.c:143
+msgid "LABEL-TYPE is one of: "
+msgstr "LABEL-TYPE er en af:"
+
+#: parted/parted.c:144
+msgid "FLAG is one of: "
+msgstr "FLAG er et af: "
+
+#: parted/parted.c:145
+msgid "UNIT is one of: "
+msgstr "ENHED er et af: "
+
+#: parted/parted.c:146
+msgid "desired alignment: minimum or optimal"
+msgstr "ønsket tilpasning: mindste eller bedste"
+
+#: parted/parted.c:147
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "PART-TYPE er en af: primær, logisk, udvidet\n"
+
+#: parted/parted.c:149
+msgid "FS-TYPE is one of: "
+msgstr "FS-TYPE er en af: "
+
+#: parted/parted.c:150
+msgid ""
+"START and END are disk locations, such as 4GB or 10%.  Negative values count "
+"from the end of the disk.  For example, -1s specifies exactly the last "
+"sector.\n"
+msgstr ""
+"START og SLUT er steder på disken, såsom 4GB eller 10%.  Negative værdier "
+"regnes fra slutningen på disken. For eksempel angiver -1s præcist den sidste "
+"sektor.\n"
+
+#: parted/parted.c:153
+msgid "STATE is one of: on, off\n"
+msgstr "TILSTAND er en af: på, af\n"
+
+#: parted/parted.c:154
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "ENHED er normalt /dev/hda eller /dev/sda\n"
+
+#: parted/parted.c:155
+msgid "NAME is any word you want\n"
+msgstr "NAVN er et vilkårligt ord\n"
+
+#: parted/parted.c:158
+msgid ""
+"Copyright (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"This program is free software, covered by the GNU General Public License.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+msgstr ""
+"Ophavsret © 1998 - 2006 Free Software Foundation, Inc.\n"
+"Dette program er frit programmel, dækket af GNU General Public License.\n"
+"\n"
+"Dette program distribueres i håb om at det vil være nyttigt, men\n"
+"UDEN NOGEN SOM HELST GARANTI, endog uden underforstået garanti om\n"
+"SALGBARHED eller EGNETHED FOR NOGET SPECIELT FORMÅL. Se GNU General\n"
+"Public License for yderligere information.\n"
+
+#: parted/parted.c:204
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(tid tilbage %.2d:%.2d)"
+
+#: parted/parted.c:223
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+"Partitionen %s bruges. Du skal afmontere den inden du kan ændre den med "
+"Parted."
+
+#: parted/parted.c:241
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "Partitionen på %s er i brug."
+
+#: parted/parted.c:253
+#, c-format
+msgid ""
+"The existing disk label on %s will be destroyed and all data on this disk "
+"will be lost. Do you want to continue?"
+msgstr ""
+"Den eksisterende disketikette på %s vil blive ødelagt og alle data på denne "
+"disk vil gå tabt. Vil du fortsætte?"
+
+#: parted/parted.c:502
+msgid "New disk label type?"
+msgstr "Type på ny disketikette?"
+
+#: parted/parted.c:562
+msgid "Partition type?"
+msgstr "Type på partitionen"
+
+#: parted/parted.c:580 parted/parted.c:766
+msgid "Partition name?"
+msgstr "Navn på partitionen?"
+
+#: parted/parted.c:588
+msgid "File system type?"
+msgstr "Type på filsystemet?"
+
+#: parted/parted.c:594 parted/parted.c:1342
+msgid "Start?"
+msgstr "Start?"
+
+#: parted/parted.c:596 parted/parted.c:1344
+msgid "End?"
+msgstr "Slut?"
+
+#: parted/parted.c:661
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s.%s"
+msgstr ""
+"Du bad om at oprette en partition fra %s til %s.\n"
+"Det nærmeste Parted kan klare er fra %s til %s.%s"
+
+#: parted/parted.c:666
+msgid ""
+"\n"
+"Is this still acceptable to you?"
+msgstr ""
+"\n"
+"Er dette stadigvæk acceptabelt for dig?"
+
+#: parted/parted.c:688
+msgid "The resulting partition is not properly aligned for best performance."
+msgstr ""
+
+#: parted/parted.c:763 parted/parted.c:1383 parted/parted.c:1455
+#: parted/parted.c:1489
+msgid "Partition number?"
+msgstr "Nummer på partitionen?"
+
+#: parted/parted.c:841
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d.  Each cylinder is %s.\n"
+msgstr ""
+"BIOS-geometri for cylinder,hoved,sektor: %d,%d,%d. Hver cylinder er %s.\n"
+
+#: parted/parted.c:881
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr "Model: %s (%s)\n"
+
+#: parted/parted.c:883
+#, c-format
+msgid "Disk %s: %s\n"
+msgstr "Disk %s: %s\n"
+
+#: parted/parted.c:884
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr "Sektorstørrelse (logisk/fysisk): %lldB/%lldB\n"
+
+#: parted/parted.c:896
+#, c-format
+msgid "Partition Table: %s\n"
+msgstr "Partitionstabel: %s\n"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Number"
+msgstr "Nummer"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Start"
+msgstr "Start"
+
+#: parted/parted.c:1008 parted/parted.c:1011
+msgid "End"
+msgstr "Slut"
+
+#: parted/parted.c:1011
+msgid "Size"
+msgstr "Størrelse"
+
+#: parted/parted.c:1015
+msgid "Type"
+msgstr "Type"
+
+#: parted/parted.c:1017
+msgid "File system"
+msgstr "Filsystem"
+
+#: parted/parted.c:1020
+msgid "Name"
+msgstr "Name"
+
+#: parted/parted.c:1022
+msgid "Flags"
+msgstr "Flag"
+
+#: parted/parted.c:1079
+msgid "Free Space"
+msgstr "Fri plads"
+
+#: parted/parted.c:1241
+#, c-format
+msgid ""
+"A %s %s partition was found at %s -> %s.  Do you want to add it to the "
+"partition table?"
+msgstr ""
+"En %s %s partition blev fundet på %s -> %s. Ønsker du at tilføje den til "
+"partitionstabellen?"
+
+#: parted/parted.c:1280
+msgid "searching for file systems"
+msgstr "leder efter filsystemer"
+
+#: parted/parted.c:1408
+msgid "New device?"
+msgstr "Ny enhed?"
+
+#: parted/parted.c:1453
+msgid "alignment type(min/opt)"
+msgstr ""
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d aligned\n"
+msgstr ""
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d not aligned\n"
+msgstr ""
+
+#: parted/parted.c:1491
+msgid "Flag to Invert?"
+msgstr "Flag at invertere?"
+
+#: parted/parted.c:1496
+msgid "New state?"
+msgstr "Ny tilstand?"
+
+#: parted/parted.c:1533
+msgid "Unit?"
+msgstr "Enhed?"
+
+#: parted/parted.c:1651
+msgid "align-check"
+msgstr ""
+
+#: parted/parted.c:1654
+msgid ""
+"align-check TYPE N                        check partition N for TYPE(min|"
+"opt) alignment"
+msgstr ""
+
+#: parted/parted.c:1662
+msgid "help"
+msgstr "hjælp"
+
+#: parted/parted.c:1665
+msgid ""
+"help [COMMAND]                           print general help, or help on "
+"COMMAND"
+msgstr ""
+"hjælp [KOMMANDO]                         udskriver generel hjælp, eller "
+"speciel hjælp for KOMMANDO"
+
+#: parted/parted.c:1671
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:1671
+msgid "mktable"
+msgstr "mktable"
+
+#: parted/parted.c:1674
+msgid ""
+"mklabel,mktable LABEL-TYPE               create a new disklabel (partition "
+"table)"
+msgstr ""
+"mklabel,mktable ETIKETTE-TYPE            opret en ny disketikette "
+"(partitionstabel)"
+
+#: parted/parted.c:1680
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:1683
+msgid "mkpart PART-TYPE [FS-TYPE] START END     make a partition"
+msgstr "mkpart PARTITIONSTYPE [FS-TYPE] START SLUT    lav en partition"
+
+#: parted/parted.c:1689
+msgid ""
+"'mkpart' makes a partition without creating a new file system on the "
+"partition.  FS-TYPE may be specified to set an appropriate partition ID.\n"
+msgstr ""
+"'mkpart' laver en partition uden at oprette et nyt filsystem på partitionen. "
+"FS-TYPE kan angives for at sætte en passende identitet på partitionen.\n"
+
+#: parted/parted.c:1694
+msgid "name"
+msgstr "name"
+
+#: parted/parted.c:1697
+msgid "name NUMBER NAME                         name partition NUMBER as NAME"
+msgstr ""
+"name NUMMER NAVN                         navngiv partition NUMMER som NAVN"
+
+#: parted/parted.c:1702
+msgid "print"
+msgstr "print"
+
+#: parted/parted.c:1705
+msgid ""
+"print [devices|free|list,all|NUMBER]     display the partition table, "
+"available devices, free space, all found partitions, or a particular "
+"partition"
+msgstr ""
+"print [devices|free|list,all|NUMMER]      vis partitionstabellen, "
+"tilgængelige enheder, ledig plads, alle partitioner som blev fundet, eller "
+"en specifik partition"
+
+#: parted/parted.c:1710
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+"Uden argumenter udskriver 'skriv' hele partitionstabellen. Hvis et nummer på "
+"en partition er angivet vil mere detaljeret information om denne partition "
+"blive vist.\n"
+
+#: parted/parted.c:1712
+msgid "  devices   : display all active block devices\n"
+msgstr "  devices   : vis alle aktive blokenheder\n"
+
+#: parted/parted.c:1713
+msgid ""
+"  free      : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+"  free      : vis information om ledig upartitioneret plads på den aktuelle "
+"blokenhed\n"
+
+#: parted/parted.c:1715
+msgid ""
+"  list, all : display the partition tables of all active block devices\n"
+msgstr "  list, all : vis partitionstabellerne på alle aktive blokenheder\n"
+
+#: parted/parted.c:1716
+msgid ""
+"  NUMBER    : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+"  NUMMER    : vis mere detaljeret information om denne specifikke partition\n"
+
+#: parted/parted.c:1721
+msgid "quit"
+msgstr "quit"
+
+#: parted/parted.c:1724
+msgid "quit                                     exit program"
+msgstr "quit                                     afslut programmet"
+
+#: parted/parted.c:1729
+msgid "rescue"
+msgstr "rescue"
+
+#: parted/parted.c:1732
+msgid ""
+"rescue START END                         rescue a lost partition near START "
+"and END"
+msgstr ""
+"rescue START SLUT                        red tabte partitioner nær ved START "
+"og SLUT"
+
+#: parted/parted.c:1738
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:1741
+msgid "rm NUMBER                                delete partition NUMBER"
+msgstr "rm NUMMER                                slet partition NUMMER"
+
+#: parted/parted.c:1746
+msgid "select"
+msgstr "vælg"
+
+#: parted/parted.c:1749
+msgid "select DEVICE                            choose the device to edit"
+msgstr "vælg ENHED                               vælg enhed at redigere"
+
+#: parted/parted.c:1754
+msgid "set"
+msgstr "sæt"
+
+#: parted/parted.c:1757
+msgid ""
+"set NUMBER FLAG STATE                    change the FLAG on partition NUMBER"
+msgstr ""
+"sæt NUMMER FLAG TILSTAND                 ændr et flag på partition NUMMER"
+
+#: parted/parted.c:1763
+msgid "toggle"
+msgstr "skift"
+
+#: parted/parted.c:1766
+msgid ""
+"toggle [NUMBER [FLAG]]                   toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+"skift [NUMMER [FLAG]]                  væxla tilstandet for FLAG på "
+"partition NUMMER"
+
+#: parted/parted.c:1772
+msgid "unit"
+msgstr "unit"
+
+#: parted/parted.c:1775
+msgid "unit UNIT                                set the default unit to UNIT"
+msgstr "enhed ENHED                              sæt standardenheden til ENHED"
+
+#: parted/parted.c:1780
+msgid "version"
+msgstr "version"
+
+#: parted/parted.c:1783
+msgid ""
+"version                                  display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+"version                                  vis versionsnummeret og "
+"ophavsretlig information om GNU Parted"
+
+#: parted/parted.c:1787
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+"'version' viser information om version og ophavsret for denne kopi af GNU "
+"Parted\n"
+
+#: parted/parted.c:1855
+#, c-format
+msgid "Usage: %s [-hlmsv] [-a<align>] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr "Usage: %s [-hlmsv] [-a<align>] [ENHED [KOMMANDO [PARAMETRE]]...]\n"
+
+#: parted/parted.c:1899
+msgid "No device found"
+msgstr "Ingen enhed fundet"
+
+#: parted/parted.c:1936
+msgid "WARNING: You are not superuser.  Watch out for permissions."
+msgstr ""
+"ADVARSEL: Du er ikke superbruger. Vær opmærksom på rettighedsproblemer."
+
+#: parted/parted.c:1974
+msgid "You may need to update /etc/fstab.\n"
+msgstr "Glem ikke at opdatere /etc/fstab, om nødvendigt.\n"
+
+#: parted/ui.c:162
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+"Velkommen til GNU Parted! Skriv 'hjælp' for at vise en liste med "
+"kommandoer.\n"
+
+#: parted/ui.c:165
+msgid ""
+"Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]\n"
+"Apply COMMANDs with PARAMETERS to DEVICE.  If no COMMAND(s) are given, run "
+"in\n"
+"interactive mode.\n"
+msgstr ""
+"Brug: parted [FLAG]... [ENHED [KOMMANDO [PARAMETRE]...]...]\n"
+"Kør KOMMANDO med PARAMETRE på ENHED. Hvis ingen KOMMANDOER angives køres\n"
+"programmet i interaktiv tilstand.\n"
+
+#: parted/ui.c:170
+#, c-format
+msgid ""
+"\n"
+"\n"
+"You found a bug in GNU Parted! Here's what you have to do:\n"
+"\n"
+"Don't panic! The bug has most likely not affected any of your data.\n"
+"Help us to fix this bug by doing the following:\n"
+"\n"
+"Check whether the bug has already been fixed by checking\n"
+"the last version of GNU Parted that you can find at:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Please check this version prior to bug reporting.\n"
+"\n"
+"If this has not been fixed yet or if you don't know how to check,\n"
+"please visit the GNU Parted website:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"for further information.\n"
+"\n"
+"Your report should contain the version of this release (%s)\n"
+"along with the error message below, the output of\n"
+"\n"
+"\tparted DEVICE unit co print unit s print\n"
+"\n"
+"and the following history of commands you entered.\n"
+"Also include any additional information about your setup you\n"
+"consider important.\n"
+msgstr ""
+"\n"
+"\n"
+"Du har fundet en fejl i GNU Parted! Dette bør du gøre:\n"
+"\n"
+"Gå ikke i panik! Fejlen har antagligt ikke påvirket noget af dine data.\n"
+"Hjælp os med at rette denne fejl ved at gøre følgende:\n"
+"\n"
+"Kontrollér om fejlen allerede er rettet ved at tjekke\n"
+"den seneste version af GNU Parted som du kan finde på:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Vær sød at tjekke med denne version inden du rapporterer fejlen.\n"
+"\n"
+"Hvis det ikke er rettet til endnu, eller hvis du ikke véd hvordan du skal\n"
+"tjekke det, så besøg webbsiden for GNU Parted:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"for yderligere information.\n"
+"\n"
+"Din rapport bør indeholde versionsnumret for denne udgave (%s)\n"
+"sammen med fejlmeddelelsen nedenfor samt udskriften fra\n"
+"\n"
+"\tparted ENHED unit co print unit s print\n"
+"\n"
+"og følgende kommandohistorik som du angav.\n"
+"Inkludér også yderligere information om din konfiguration som\n"
+"du mener er vigtigt at vide.\n"
+
+#: parted/ui.c:291
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+"\n"
+"Kommandohistorik:\n"
+
+#: parted/ui.c:354
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+"\n"
+"Fejl: SEGV_MAPERR (Adresse ikke mappet to objekt)\n"
+
+#: parted/ui.c:360
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+"\n"
+"Fejl: SEGV_ACCERR (Ugyldige rettigheder for mappet object)\n"
+
+#: parted/ui.c:365
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+"\n"
+"Fejl: Et generelt SIGSEGV-signal indtraf.\n"
+
+#: parted/ui.c:389
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+"\n"
+"Fejl: FPE_INTDIV (heltal: division med nul)"
+
+#: parted/ui.c:394
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+"\n"
+"Fejl: FPE_INTOVF (Integer: overløb)"
+
+#: parted/ui.c:399
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+"\n"
+"Fejl: FPE_FLTDIV (Float: division med nul)"
+
+#: parted/ui.c:404
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+"\n"
+"Fejl: FPE_FLTOVF (Float: overløb)"
+
+#: parted/ui.c:409
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+"\n"
+"Fejl: FPE_FLTUND (Float: underløb)"
+
+#: parted/ui.c:414
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+"\n"
+"Fejl: FPE_FLTRES (Float: unøjagtigt resultat)"
+
+#: parted/ui.c:419
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+"\n"
+"Fejl: FPE_FLTINV (Float: ugyldig operation)"
+
+#: parted/ui.c:424
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+"\n"
+"Fejl: FPE_FLTSUB (Float: subskript uden for område)"
+
+#: parted/ui.c:429
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+"\n"
+"Fejl: Et generelt SIGFPE-signal indtraf."
+
+#: parted/ui.c:453
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+"\n"
+"Fejl: ILL_ILLOPC (Ugyldig Opcode)"
+
+#: parted/ui.c:458
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+"\n"
+"Fejl: ILL_ILLOPN (Ugyldig Operand)"
+
+#: parted/ui.c:463
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+"\n"
+"Fejl: ILL_ILLADR (Ugyldig adressingstilstand)"
+
+#: parted/ui.c:468
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+"\n"
+"Fejl: ILL_ILLTRP (Ugyldig Fælde)"
+
+#: parted/ui.c:473
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+"\n"
+"Fejl: ILL_PRVOPC (Privilligeret Opkode)"
+
+#: parted/ui.c:478
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+"\n"
+"Fejl: ILL_PRVREG (Privilligeret Register)"
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+"\n"
+"Fejl: ILL_COPROC (Coprocessor fejl)"
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+"\n"
+"Fejl: ILL_BADSTK (Intern stakfejl)"
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+"\n"
+"Fejl: Et generelt SIGILL-signal indtraf."
+
+#: parted/ui.c:891
+#, c-format
+msgid "invalid token: %s"
+msgstr "ugyldigt token: %s"
+
+#: parted/ui.c:1048
+msgid "Expecting a partition number."
+msgstr "Forventer et partitionsnummer."
+
+#: parted/ui.c:1057
+msgid "Partition doesn't exist."
+msgstr "Partitionen findes ikke."
+
+#: parted/ui.c:1077
+msgid "Expecting a file system type."
+msgstr "Forventer en filsystemstype."
+
+#: parted/ui.c:1084
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Ukendt filsystemstype '%s'."
+
+#: parted/ui.c:1105
+msgid "Expecting a disk label type."
+msgstr "Forventer en disketikettetype."
+
+#: parted/ui.c:1203
+msgid "Can't create any more partitions."
+msgstr "Kan ikke tilføje flere partitioner."
+
+#: parted/ui.c:1213
+msgid "Expecting a partition type."
+msgstr "Forventer eN partitionstype."
+
+#: parted/ui.c:1361
+msgid "on"
+msgstr "på"
+
+#: parted/ui.c:1362
+msgid "off"
+msgstr "fra"
+
+#: parted/ui.c:1379
+msgid "optimal"
+msgstr "optimal"
+
+#: parted/ui.c:1380
+msgid "minimal"
+msgstr "minimal"
+
+#: parted/ui.c:1513
+msgid "OPTIONs:"
+msgstr "FLAG:"
+
+#: parted/ui.c:1518
+msgid "COMMANDs:"
+msgstr "KOMMANDOer:"
+
+#: parted/ui.c:1521
+#, c-format
+msgid ""
+"\n"
+"Report bugs to %s\n"
+msgstr ""
+"\n"
+"Rapportér fejl til %s\n"
+
+#: parted/ui.c:1528
+#, c-format
+msgid "Using %s\n"
+msgstr "Bruger %s\n"
+
+#: parted/ui.c:1602
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr "Denne kommando er meningsløs i ikke-interaktiv tilstand.\n"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]\n"
+#~ "  or:  %s DEVICE MINOR\n"
+#~ msgstr ""
+#~ "Brug: %s [FLAG]\n"
+#~ "  eller:  %s ENHED LILLE\n"
+
+#~ msgid ""
+#~ "Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Tøm ubrugt plads på en FAT-partition (et testværktøj for GNU Parted).\n"
+#~ "\n"
+
+#~ msgid "      --help     display this help and exit\n"
+#~ msgstr "      --help     vis denne hjælpetekst og afslut\n"
+
+#~ msgid "      --version  output version information and exit\n"
+#~ msgstr "      --version  vis versionsinformation og afslut\n"
+
+#~ msgid "too few arguments"
+#~ msgstr "for få argumenter"
+
+#~ msgid "too many arguments"
+#~ msgstr "For mange argumenter"
+
+#~ msgid "invalid minor device number: %s"
+#~ msgstr "ugyldigt lille enhedsnummer: %s"
+
+#~ msgid "Could not detect file system."
+#~ msgstr "Kunne ikke finde noget filsystem."
+
+#~ msgid "The file system is bigger than its volume!"
+#~ msgstr "Filsystemet er større end pladsen på dets diskdrev!"
+
+#~ msgid "Support for opening %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Understøttelse for at åbne filsystemer af type %s er ikke implementeret "
+#~ "endnu."
+
+#~ msgid "Support for creating %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Understøttelse for at oprette filsystemer af type %s er ikke "
+#~ "implementeret endnu."
+
+#~ msgid "Support for checking %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Understøttelse for at kontrollere filsystemer af type %s er ikke "
+#~ "implementeret endnu."
+
+#~ msgid "raw block copying"
+#~ msgstr "kopiering af rå blokke"
+
+#~ msgid "growing file system"
+#~ msgstr "udvider filsystem"
+
+#~ msgid "Can't copy onto an overlapping partition."
+#~ msgstr "Kan ikke kopiere til en overlappende partition."
+
+#~ msgid ""
+#~ "Direct support for copying file systems is not yet implemented for %s.  "
+#~ "However, support for resizing is implemented.  Therefore, the file system "
+#~ "can be copied if the new partition is at least as big as the old one.  "
+#~ "So, either shrink the partition you are trying to copy, or copy to a "
+#~ "bigger partition."
+#~ msgstr ""
+#~ "Direkte understøttelse for at kopiere filsystemer af typen %s er ikke "
+#~ "implementeret endnu. Understøttelse for at ændre størrelse findes dog. "
+#~ "Derfor kan filsystemet kopieres hvis den nye partition er mindst lige så "
+#~ "stor som den gamle. Så enten skal du formindske partitionen som du "
+#~ "forsøger kopiere, eller også kopierer du til en større partition."
+
+#~ msgid "Support for copying %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Understøttelse for at kopiere filsystemer af type %s er ikke "
+#~ "implementeret endnu."
+
+#~ msgid "Support for resizing %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Understøttelse for at ændre størrelse på filsystem af type %s er ikke "
+#~ "implementeret endnu."
+
+#~ msgid "creating"
+#~ msgstr "opretter"
+
+#~ msgid "The file system is in an invalid state.  Perhaps it is mounted?"
+#~ msgstr "Filsystemet er i en ugyldig tilstand. Måske er det monteret?"
+
+#~ msgid "The file system is in old (unresizeable) format."
+#~ msgstr ""
+#~ "Filsystemet anvender et gammelt format (ikke muligt at ændre størrelse "
+#~ "på)."
+
+#~ msgid "Invalid free blocks count.  Run reiserfsck --check first."
+#~ msgstr "Ugyldigt antal lediga blokke. Kør reiserfsck --check først."
+
+#~ msgid "checking"
+#~ msgstr "tjekker"
+
+#~ msgid "Reiserfs tree seems to be corrupted.  Run reiserfsck --check first."
+#~ msgstr ""
+#~ "Reiserfs-træet ser ud til at være skadet. Kør reiserfsck --check først."
+
+#~ msgid ""
+#~ "The reiserfs file system passed a basic check.  For a more comprehensive "
+#~ "check, run reiserfsck --check."
+#~ msgstr ""
+#~ "reiserfs-filsystemet klarede et grundlæggende test. For et mere "
+#~ "gennemgående test, brug programmet reiserfsck --check."
+
+#~ msgid "Sorry, can't move the start of reiserfs partitions yet."
+#~ msgstr "Kan desværre ikke flytte begyndelsen af reiserfs-partitioner endnu!"
+
+#, fuzzy
+#~ msgid "Couldn't reopen device abstraction layer for read/write."
+#~ msgstr "Kunne ikke oprette reiserfs device abstraction handler."
+
+#~ msgid "shrinking"
+#~ msgstr "krymper"
+
+#~ msgid "expanding"
+#~ msgstr "udvider"
+
+#~ msgid "Couldn't create reiserfs device abstraction handler."
+#~ msgstr "Kunne ikke oprette reiserfs device abstraction handler."
+
+#~ msgid "Device is too small for %lu blocks."
+#~ msgstr "Enhed for lille til %lu blokke."
+
+#~ msgid "copying"
+#~ msgstr "kopierer"
+
+#~ msgid "Couldn't resolve symbol %s.  Error: %s."
+#~ msgstr "Kunne ikke slå symbolet %s op. Fejl: %s."
+
+#~ msgid "GNU Parted found an invalid libreiserfs library."
+#~ msgstr "GNU Parted fandt et ugyldigt libreiserfs-bibliotek."
+
+#~ msgid ""
+#~ "GNU Parted has detected libreiserfs interface version mismatch.  Found %d-"
+#~ "%d, required %d. ReiserFS support will be disabled."
+#~ msgstr ""
+#~ "GNU Parted har opdaget en versionsfejl i grænsefladen til libreiserfs.  "
+#~ "Fandt %d-%d, men kræver %d. ReiserFS-understøttelsen vil være deaktiveret."
+
+#~ msgid "Inconsistent group descriptors!"
+#~ msgstr "Inkonsistente gruppebeskrivere!"
+
+#~ msgid "File system full!"
+#~ msgstr "Filsystemet er fuldt!"
+
+#~ msgid "Invalid superblock.  Are you sure this is an ext2 file system?"
+#~ msgstr "Ugyldig superblok. Er du sikker på at dette er et ext2-filsystem?"
+
+#~ msgid "File system has errors!  You should run e2fsck."
+#~ msgstr "Filsystemet indholder fejl! du bør køre e2fsck først."
+
+#~ msgid ""
+#~ "File system was not cleanly unmounted!  You should run e2fsck.  Modifying "
+#~ "an unclean file system could cause severe corruption."
+#~ msgstr ""
+#~ "Filsystemet er ikke afmonteret på rette måde! Du bør bruge e2fsck. "
+#~ "Ændring af et urent filsystem kan give alvorlig ødelæggelse."
+
+#~ msgid ""
+#~ "File system has an incompatible feature enabled.  Compatible features are "
+#~ "has_journal, dir_index, filetype, sparse_super and large_file.  Use "
+#~ "tune2fs or debugfs to remove features."
+#~ msgstr ""
+#~ "Filsystemet har en inkompatibel funktion aktiveret. Kompatible funktioner "
+#~ "er has_journal, dir_index, filetype, sparse_super og large_file. Brug "
+#~ "tune2fs eller debugfs for at fjerne funktioner."
+
+#~ msgid "Error allocating buffer cache."
+#~ msgstr "Kunne ikke reservere buffercache"
+
+#~ msgid ""
+#~ "Found an inode with a incorrect link count.  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "Fandt en inode med fejlagtigt antal lænker. Du bør køre e2fsck først."
+
+#~ msgid "Not enough free inodes!"
+#~ msgstr "Der findes ikke tilstrækkeligt mange frie inoder!"
+
+#~ msgid "File system is too full to remove a group!"
+#~ msgstr "Filsystemet er for fuldt til at fjerne en gruppe!"
+
+#~ msgid "File system has too many allocated inodes to remove a group!"
+#~ msgstr "Filsystemet har for mange tildelte inoder til at fjerne en gruppe!"
+
+#~ msgid "adding groups"
+#~ msgstr "tilføjer grupper"
+
+#~ msgid "Your file system is too full to resize it to %i blocks.  Sorry."
+#~ msgstr ""
+#~ "Filsystemet er desværre for fuldt til at ændre dets størrelse til %i "
+#~ "blokke."
+
+#~ msgid ""
+#~ "Your file system has too many occupied inodes to resize it to %i blocks.  "
+#~ "Sorry."
+#~ msgstr ""
+#~ "Filsystemet har desværre for mange optagede inoder til at ændre dets "
+#~ "størrelse til %i blokke."
+
+#~ msgid "File system was not cleanly unmounted!  You should run e2fsck."
+#~ msgstr "Filsystemet er ikke afmonteret på rette måde! Du bør køre e2fsck."
+
+#~ msgid ""
+#~ "The file system has the 'dir_index' feature enabled.  Parted can only "
+#~ "resize the file system if it disables this feature.  You can enable it "
+#~ "later by running 'tune2fs -O dir_index DEVICE' and then 'e2fsck -fD "
+#~ "DEVICE'."
+#~ msgstr ""
+#~ "Filsystemet har funktionen 'dir_index' aktiveret. Parted kan kun ændre "
+#~ "størrelse på filsystemet hvis denne funktion er deaktiveret.  Du kan "
+#~ "aktivere den senere ved at køre 'tune2fs -O dir_index ENHED' og siden "
+#~ "'e2fsck -fD ENHED'."
+
+#~ msgid "Cross-linked blocks found!  Better go run e2fsck first!"
+#~ msgstr "Krydslænkede blokke fundet! Du bør køre e2fsck først!"
+
+#~ msgid "Block %i has no reference?  Weird."
+#~ msgstr "Blok %i har ingen reference? Mærkeligt."
+
+#~ msgid "Block %i shouldn't have been marked (%d, %d)!"
+#~ msgstr "Blok %i burde ikke være mærket (%d, %d)!"
+
+#~ msgid ""
+#~ "The ext2 file system passed a basic check.  For a more comprehensive "
+#~ "check, use the e2fsck program."
+#~ msgstr ""
+#~ "ext2-filsystemet klarede et grundlæggende test. For et mere gennemgående "
+#~ "test, brug programmet e2fsck."
+
+#~ msgid "Sorry, can't move the start of ext2 partitions yet!"
+#~ msgstr "Kan desværrre ikke flytte begyndelsen på ext2-partitioner endnu!"
+
+#~ msgid "Couldn't flush buffer cache!"
+#~ msgstr "Kunne ikke rense buffercachen!"
+
+#~ msgid "writing per-group metadata"
+#~ msgstr "skriver metadata for hver gruppe"
+
+#~ msgid "File system too small for ext2."
+#~ msgstr "Filsystem for lille til ext2."
+
+#~ msgid ""
+#~ "You need %s of free disk space to shrink this partition to this size.  "
+#~ "Currently, only %s is free."
+#~ msgstr ""
+#~ "Du behøver %s ledig plads for at formindske størrelsen på denne partition "
+#~ "til denne størrelse. Der er kun %s ledigt nu."
+
+#~ msgid ""
+#~ "Cluster start delta = %d, which is not a multiple of the cluster size %d."
+#~ msgstr ""
+#~ "Klynge-startforskel er %d, hvilket ikke er en multipel af "
+#~ "klyngestørrelsen %d"
+
+#~ msgid "Partition too big/small for a %s file system."
+#~ msgstr "Partitionen for stor eller lille til at indeholde et %s-filsystem."
+
+#~ msgid ""
+#~ "The FATs don't match.  If you don't know what this means, then select "
+#~ "cancel, run scandisk on the file system, and then come back."
+#~ msgstr ""
+#~ "Filallokeringstabellerne stemmer ikke overens. Hvis du ikke véd hvad "
+#~ "dette betyder, vælg annullér, kør scandisk på filsystemet og forsøg igen."
+
+#~ msgid "There are no possible configurations for this FAT type."
+#~ msgstr "Det findes ingen mulige kombinationer for denne FAT-type."
+
+#~ msgid ""
+#~ "File system doesn't have expected sizes for Windows to like it.  Cluster "
+#~ "size is %dk (%dk expected); number of clusters is %d (%d expected); size "
+#~ "of FATs is %d sectors (%d expected)."
+#~ msgstr ""
+#~ "Filsystemet har ikke en størrelse som Windows kan lide. Klyngestørrelsen "
+#~ "er %dk (%dk forventet); antal klynger er %d (%d forventet); størrelsen på "
+#~ "FAT-erne er %d sektorer (%d forventet)."
+
+#~ msgid ""
+#~ "File system is reporting the free space as %d clusters, not %d clusters."
+#~ msgstr "Filsystemet mener at den frie plads er %d klynger, ikke %d."
+
+#~ msgid ""
+#~ "There's not enough room in the root directory for all of the files.  "
+#~ "Either cancel, or ignore to lose the files."
+#~ msgstr ""
+#~ "Der er ikke tilstrækkeligt med plads for alle filer i rodkataloget. Vælg "
+#~ "enten at annullere, eller ignorere og tabe filerne."
+
+#~ msgid "Error writing to the root directory."
+#~ msgstr "En fejl opstod ved skrivning til rodkataloget."
+
+#~ msgid ""
+#~ "If you leave your file system as FAT16, then you will have no problems."
+#~ msgstr ""
+#~ "Hvis du lader filsystemet fortsætte med at være FAT16 vil du ikke få "
+#~ "nogen problemer."
+
+#~ msgid ""
+#~ "If you convert to FAT16, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual)."
+#~ msgstr ""
+#~ "Hvis du konverterer til FAT16 og MS Windows er installeret på denne "
+#~ "partition så skal du geninstallere MS Windows opstartsprogram. Hvis du "
+#~ "gør det bør du studere Parteds manual (eller din distributions manual)."
+
+#~ msgid ""
+#~ "If you leave your file system as FAT32, then you will not introduce any "
+#~ "new problems."
+#~ msgstr ""
+#~ "Hvis du lader filsystemet fortsætte med at være FAT32 vil du ikke "
+#~ "introducere nogen nye problemer."
+
+#~ msgid ""
+#~ "If you convert to FAT32, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual).  Also, converting to FAT32 will make the file system unreadable "
+#~ "by MS DOS, MS Windows 95a, and MS Windows NT."
+#~ msgstr ""
+#~ "Hvis du konverterer til FAT32, og MS Windows er installeret på denne "
+#~ "partition, skal du geninstallere MS Windows opstartsprogram. Hvis du gør "
+#~ "det bør du studere Parteds manual (eller din distributions manual). "
+#~ "Bemærk at ved at konvertere filsystemet til FAT32 vil det ikke kunne "
+#~ "læses af MS DOS, MS Windows 95a og MS Windows NT."
+
+#~ msgid "%s  %s  %s"
+#~ msgstr "%s  %s  %s"
+
+#~ msgid "Would you like to use FAT32?"
+#~ msgstr "Ønsker du at bruge FAT32?"
+
+#~ msgid "%s  %s"
+#~ msgstr "%s  %s"
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT16."
+#~ msgstr ""
+#~ "Filsystemet kan kun ændres til denne størrelse ved at konvertere til "
+#~ "FAT16."
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT32."
+#~ msgstr ""
+#~ "Filsystemet kan kun ændres til denne størrelse ved at konvertere til "
+#~ "FAT32."
+
+#~ msgid ""
+#~ "GNU Parted cannot resize this partition to this size.  We're working on "
+#~ "it!"
+#~ msgstr ""
+#~ "GNU Parted kan ikke ændre partitionen til denne størrelse. Vi arbejder på "
+#~ "en løsning!"
+
+#~ msgid "Bad directory entry for %s: first cluster is the end of file marker."
+#~ msgstr ""
+#~ "Fejlagtig katalogindgang for %s: første klynge er en filslutsmarkering."
+
+#~ msgid ""
+#~ "Bad FAT: unterminated chain for %s.  You should run dosfsck or scandisk."
+#~ msgstr ""
+#~ "Dårlig filallokeringstabel: ej afsluttet kæde for %s. Du bør køre dosfsck "
+#~ "eller scandisk."
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d outside file system in chain for %s.  You should run "
+#~ "dosfsck or scandisk."
+#~ msgstr ""
+#~ "Dårlig filallokeringstabel: klynge %d ligger udenfor filsystemet i kæde "
+#~ "for %s. Du bør køre dosfsck eller scandisk."
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d is cross-linked for %s.  You should run dosfsck or "
+#~ "scandisk."
+#~ msgstr ""
+#~ "Dårlig filallokeringstabel: klynge %d er krydslænket for %s. Du bør køre "
+#~ "dosfsck eller scandisk."
+
+#~ msgid "%s is %dk, but it has %d clusters (%dk)."
+#~ msgstr "%s er %dk, men den har %d klynger (%dk)."
+
+#~ msgid ""
+#~ "The file %s is marked as a system file.  This means moving it could cause "
+#~ "some programs to stop working."
+#~ msgstr ""
+#~ "Filen %s er markeret som en systemfil. Dette betyder at flytning af den "
+#~ "kan bevirke at nogen programmer ikke længere vil virke."
+
+#~ msgid ""
+#~ "FAT %d media %x doesn't match the boot sector's media %x.  You should "
+#~ "probably run scandisk."
+#~ msgstr ""
+#~ "FAT %d medie %x passer ikke med startsektorns medie %x. Du bør nok køre "
+#~ "scandisk."
+
+#~ msgid "fat_table_set: cluster %ld outside file system"
+#~ msgstr "fat_table_set: klynge %ld ligger udenfor filsystemet"
+
+#~ msgid "fat_table_get: cluster %ld outside file system"
+#~ msgstr "fat_table_get: klynge %ld ligger udenfor filsystemet"
+
+#~ msgid "fat_table_alloc_cluster: no free clusters"
+#~ msgstr "fat_table_alloc_cluster: ingen ledige klynger"
+
+#~ msgid "Too many bad pages."
+#~ msgstr "For mange dårlige sider."
+
+#~ msgid "The file system contains errors."
+#~ msgstr "Filsystemet indeholder fejl."
+
+#~ msgid "Bad blocks could not be read."
+#~ msgstr "Fejlagtige blokke kunne ikke læses."
+
+#, fuzzy
+#~ msgid "Could not update the extent cache for HFS file with CNID %X."
+#~ msgstr "Kunne ikke finde sektor %lli of HFS-fil med CNID %X"
+
+#~ msgid "Trying to read HFS file with CNID %X behind EOF."
+#~ msgstr "Prøver på at læse HFS-fil med CNID %X bagefter EOF."
+
+#~ msgid "Could not find sector %lli of HFS file with CNID %X."
+#~ msgstr "Kunne ikke finde sektor %lli of HFS-fil med CNID %X"
+
+#~ msgid "Trying to write HFS file with CNID %X behind EOF."
+#~ msgstr "Prøver på at skrive HFS-fil med CNID %X bagefter EOF"
+
+#, fuzzy
+#~ msgid "Could not update the extent cache for HFS+ file with CNID %X."
+#~ msgstr "Kunne ikke finde sektor %lli of HFS+-fil med CNID %X"
+
+#~ msgid "Trying to read HFS+ file with CNID %X behind EOF."
+#~ msgstr "Prøver på at læse HFS+-fil med CNID %X bagefter EOF"
+
+#~ msgid "Could not find sector %lli of HFS+ file with CNID %X."
+#~ msgstr "Kunne ikke finde sektor %lli of HFS+-fil med CNID %X"
+
+#~ msgid "Trying to write HFS+ file with CNID %X behind EOF."
+#~ msgstr "Prøver på at skrive HFS+-fil med CNID %X bagefter EOF"
+
+#~ msgid "Sorry, HFS cannot be resized that way yet."
+#~ msgstr "Desværre kan størrelsen på HFS endnu ikke laves om på den måde"
+
+#~ msgid "Data relocation has failed."
+#~ msgstr "Flytning af data mislykkedes"
+
+#~ msgid "Data relocation left some data in the end of the volume."
+#~ msgstr "Flytning af data efterlod noget data ved slutningen af volume"
+
+#, fuzzy
+#~ msgid "writing HFS Master Directory Block"
+#~ msgstr "En fejl opstod ved skrivning til rodkataloget."
+
+#~ msgid "Version %d of HFS+ isn't supported."
+#~ msgstr "Version %d af HFS+ understøttes ikke."
+
+#~ msgid "Version %d of HFSX isn't supported."
+#~ msgstr "Version %d af HFSX understøttes ikke."
+
+#, fuzzy
+#~ msgid "Data relocation left some data at the end of the volume."
+#~ msgstr "Flytning af data efterlod noget data ved slutningen af volume"
+
+#~ msgid "Error while writing the allocation file."
+#~ msgstr "Fejl ved skrivning af allokeringsfilen."
+
+#, fuzzy
+#~ msgid "Error while writing the compatibility part of the allocation file."
+#~ msgstr "Fejl ved skrivning af allokeringsfilen."
+
+#, fuzzy
+#~ msgid "Sorry, HFS+ cannot be resized that way yet."
+#~ msgstr "Desværre kan størrelsen på HFS endnu ikke laves om på den måde"
+
+#~ msgid "shrinking embedded HFS+ volume"
+#~ msgstr "formindsker indlejret HFS+-volumen"
+
+#~ msgid "Resizing the HFS+ volume has failed."
+#~ msgstr "Størrelsesændring af HFS+-volumen mislykkedes."
+
+#~ msgid "shrinking HFS wrapper"
+#~ msgstr "krymper HFS-wrapper"
+
+#, fuzzy
+#~ msgid "Updating the HFS wrapper has failed."
+#~ msgstr "Størrelsesændring af HFS+-volumen mislykkedes."
+
+#~ msgid "Bad block list header checksum."
+#~ msgstr "Dårlig header-tjeksum på blokliste"
+
+#~ msgid ""
+#~ "Invalid size of a transaction block while replaying the journal (%i "
+#~ "bytes)."
+#~ msgstr ""
+#~ "Ugyldig størrelse på en transaktionsblok ved genafspilning af journalen "
+#~ "(%i byte)."
+
+#~ msgid "Journal offset or size is not multiple of the sector size."
+#~ msgstr ""
+#~ "Journal-afsæt eller -størrelse er ikke et helt antal gange "
+#~ "sektorstørrelsen"
+
+#~ msgid "Incorrect magic values in the journal header."
+#~ msgstr "Ukorrekte magiske værdier i journal-hovedet."
+
+#~ msgid "Some header fields are not multiple of the sector size."
+#~ msgstr "Nogen headerfelter er ikke en multipel af sektorstørrelsen."
+
+#~ msgid "Bad journal checksum."
+#~ msgstr "Dårlig journal-tjeksum."
+
+#~ msgid ""
+#~ "The journal is not empty.  Parted must replay the transactions before "
+#~ "opening the file system.  This will modify the file system."
+#~ msgstr ""
+#~ "Journalen er ikke tom. Parted må ganafspille transaktionerne før "
+#~ "filsystemet kan åbnes. Dette vil ændre filsystemet."
+
+#~ msgid "This HFS volume has no catalog file.  This is very unusual!"
+#~ msgstr ""
+#~ "Dette HFS-afsnit har ikke nogen katalogfil. Dette er meget usædvanligt!"
+
+#, fuzzy
+#~ msgid ""
+#~ "This HFS volume has no extents overflow file.  This is quite unusual!"
+#~ msgstr ""
+#~ "Dette HFS-afsnit har ikke nogen katalogfil. Dette er meget usædvanligt!"
+
+#~ msgid "Could not cache the file system in memory."
+#~ msgstr "Kunne ikke mellemlagre filsystemet i hukommelsen."
+
+#~ msgid "Bad blocks list could not be loaded."
+#~ msgstr "Listen over fejlagtige blokke kunne ikke indlæses."
+
+#~ msgid "This HFS+ volume has no catalog file.  This is very unusual!"
+#~ msgstr ""
+#~ "Dette HFS+-afsnit har ikke nogen katalogfil. Dette er meget usædvanligt!"
+
+#, fuzzy
+#~ msgid ""
+#~ "This HFS+ volume has no extents overflow file.  This is quite unusual!"
+#~ msgstr ""
+#~ "Dette HFS+-afsnit har ikke nogen katalogfil. Dette er meget usædvanligt!"
+
+#~ msgid "The partition must have one of the following FS-TYPEs: "
+#~ msgstr "Partitionen skal have en af følgende FS-TYPEr: "
+
+#~ msgid ""
+#~ "The existing file system will be destroyed and all data on the partition "
+#~ "will be lost. Do you want to continue?"
+#~ msgstr ""
+#~ "Det eksisterende filsystem vil blive ødelagt og alle data på partitionen "
+#~ "vil gå tabt. Vil du fortsætte?"
+
+#~ msgid "Source device?"
+#~ msgstr "Kildeenhed?"
+
+#~ msgid "Source partition number?"
+#~ msgstr "Nummer på kildepartitionen?"
+
+#~ msgid "Can't copy an extended partition."
+#~ msgstr "Kan ikke kopiere en udvidet partition."
+
+#~ msgid "Destination partition number?"
+#~ msgstr "Nummer på målpartitionen?"
+
+#~ msgid ""
+#~ "An extended partition cannot hold a file system.  Did you want mkpart?"
+#~ msgstr ""
+#~ "En udvidet partition kan ikke indeholde et filsystem. Ønskede du mkpart?"
+
+#~ msgid "Can't move an extended partition."
+#~ msgstr "Kan ikke flytte en udvidet partition."
+
+#~ msgid "Can't move a partition onto itself.  Try using resize, perhaps?"
+#~ msgstr ""
+#~ "Kan ikke flytte en partition til sig selv. Prøv at ændre størrelsen i "
+#~ "stedet"
+
+#~ msgid "Minor: %d\n"
+#~ msgstr "Lille: %d\n"
+
+#~ msgid "Flags: %s\n"
+#~ msgstr "Flag: %s\n"
+
+#~ msgid "File System: %s\n"
+#~ msgstr "Filsystem: %s\n"
+
+#~ msgid "Size:         "
+#~ msgstr "Størrelse:    "
+
+#~ msgid "Minimum size: "
+#~ msgstr "Mindste størrelse: "
+
+#~ msgid "Maximum size: "
+#~ msgstr "Største størrelse: "
+
+#~ msgid "check"
+#~ msgstr "tjek"
+
+#~ msgid ""
+#~ "check NUMBER                             do a simple check on the file "
+#~ "system"
+#~ msgstr ""
+#~ "tjek NUMMER                              lav en simpel test af filsystemet"
+
+#~ msgid "cp"
+#~ msgstr "cp"
+
+#~ msgid ""
+#~ "cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   copy file system to another "
+#~ "partition"
+#~ msgstr ""
+#~ "cp [FRA-ENHED] FRA-NUMMER TIL-NUMMER     kopiér et filsystem til et andet"
+
+#~ msgid "mkfs"
+#~ msgstr "mkfs"
+
+#~ msgid ""
+#~ "mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on "
+#~ "partition NUMBER"
+#~ msgstr ""
+#~ "mkfs NUMMER FS-TYPE                      lav et filsystem af typen TYPE "
+#~ "på partition NUMMER"
+
+#~ msgid "mkpartfs"
+#~ msgstr "mkpartfs"
+
+#~ msgid ""
+#~ "mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file "
+#~ "system"
+#~ msgstr ""
+#~ "mkpartfs PARTITIONSTYPE FILSYSTEMSTYPE START SLUT   lav en partition med "
+#~ "et filsystem"
+
+#~ msgid "move"
+#~ msgstr "move"
+
+#~ msgid "move NUMBER START END                    move partition NUMBER"
+#~ msgstr "move NUMMER START SLUT                   flyt partition NUMMER"
+
+#~ msgid "resize"
+#~ msgstr "ændr_størrelse"
+
+#~ msgid ""
+#~ "resize NUMBER START END                  resize partition NUMBER and its "
+#~ "file system"
+#~ msgstr ""
+#~ "ændr_størrelse NUMMER START SLUT         ændr størrelse på partition "
+#~ "NUMMER og dets filsystem"
+
+#~ msgid "This is not an ECKD disk!  This disk type is not supported!"
+#~ msgstr "Dette er ikke en ECKD-disk! Denne disktype understøttes ikke!"
diff --git a/po/de.gmo b/po/de.gmo
new file mode 100644 (file)
index 0000000..6c5745b
Binary files /dev/null and b/po/de.gmo differ
diff --git a/po/de.po b/po/de.po
new file mode 100644 (file)
index 0000000..f23e522
--- /dev/null
+++ b/po/de.po
@@ -0,0 +1,3416 @@
+# translation of parted-1.8.8.po to German
+# German message for GNU parted.
+# Copyright (C) 1999, 2000, 2001, 2002, 2007 Free Software Foundation, Inc.
+#
+#
+# Martin Ereth <martin.ereth@arcor.de>, 2007.
+# Martin von Löwis <martin@v.loewis.de>, 1999, 2000, 2001, 2002.
+msgid ""
+msgstr ""
+"Project-Id-Version: parted-1.8.8\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2011-05-30 13:45+0200\n"
+"PO-Revision-Date: 2007-08-15 12:16+0200\n"
+"Last-Translator: Martin Ereth <martin.ereth@arcor.de>\n"
+"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: lib/argmatch.c:133
+#, fuzzy, c-format
+msgid "invalid argument %s for %s"
+msgstr "Unbekanntes Zeichen: %s"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr ""
+
+#: lib/argmatch.c:153
+#, fuzzy, c-format
+msgid "Valid arguments are:"
+msgstr "Unbekanntes Zeichen: %s"
+
+#: lib/closeout.c:112 libparted/labels/fdasd.c:107
+msgid "write error"
+msgstr "Schreibfehler"
+
+#: lib/error.c:181
+msgid "Unknown system error"
+msgstr "Unbekannter Systemfehler"
+
+#: lib/getopt.c:548 lib/getopt.c:577
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
+msgstr "%s: Die Option `%s' ist mehrdeutig\n"
+
+#: lib/getopt.c:625 lib/getopt.c:629
+#, fuzzy, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s: Die Option `%s' erlaubt kein Argument\n"
+
+#: lib/getopt.c:638 lib/getopt.c:643
+#, fuzzy, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr "%s: Die Option `%c%s' erlaubt kein Argument\n"
+
+#: lib/getopt.c:686 lib/getopt.c:705
+#, fuzzy, c-format
+msgid "%s: option '--%s' requires an argument\n"
+msgstr "%s: Die Option `%s' benötigt ein Argument\n"
+
+#: lib/getopt.c:743 lib/getopt.c:746
+#, fuzzy, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s: Unbekannte Option `--%s'\n"
+
+#: lib/getopt.c:754 lib/getopt.c:757
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "%s: unbekannte Option `%c%s'\n"
+
+#: lib/getopt.c:806 lib/getopt.c:809
+#, fuzzy, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: ungültige Option -- %c\n"
+
+#: lib/getopt.c:859 lib/getopt.c:876 lib/getopt.c:1084 lib/getopt.c:1102
+#, fuzzy, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: Die Option benötigt ein Argument -- %c\n"
+
+#: lib/getopt.c:932 lib/getopt.c:948
+#, fuzzy, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s: Die Option `-W %s' ist mehrdeutig\n"
+
+#: lib/getopt.c:972 lib/getopt.c:990
+#, fuzzy, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr "%s: Die Option `-W %s' erlaubt kein Argument\n"
+
+#: lib/getopt.c:1011 lib/getopt.c:1029
+#, fuzzy, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: Die Option `%s' benötigt ein Argument\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:271
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:272
+msgid "'"
+msgstr "'"
+
+#: lib/regcomp.c:133
+msgid "Success"
+msgstr "Erfolg"
+
+#: lib/regcomp.c:136
+msgid "No match"
+msgstr "Keine Übereinstimmung"
+
+#: lib/regcomp.c:139
+msgid "Invalid regular expression"
+msgstr "Ungültiger regulärer Ausdruck"
+
+#: lib/regcomp.c:142
+msgid "Invalid collation character"
+msgstr "Ungültiger Sortierbuchstabe"
+
+#: lib/regcomp.c:145
+msgid "Invalid character class name"
+msgstr "Ungültiger Klassenname des Buchstabens"
+
+#: lib/regcomp.c:148
+msgid "Trailing backslash"
+msgstr "Angehängter umgekehrter Schrägstrich"
+
+#: lib/regcomp.c:151
+msgid "Invalid back reference"
+msgstr "Ungültige Zurück-Referenz"
+
+#: lib/regcomp.c:154
+msgid "Unmatched [ or [^"
+msgstr "Nicht gefunden: [ oder [^"
+
+#: lib/regcomp.c:157
+msgid "Unmatched ( or \\("
+msgstr "Nicht gefunden: ( oder \\("
+
+#: lib/regcomp.c:160
+msgid "Unmatched \\{"
+msgstr "Nicht gefunden: \\{"
+
+#: lib/regcomp.c:163
+msgid "Invalid content of \\{\\}"
+msgstr "Ungültiger Inhalt in \\{\\}"
+
+#: lib/regcomp.c:166
+msgid "Invalid range end"
+msgstr "Ungültiges Ende des Bereichs"
+
+#: lib/regcomp.c:169
+msgid "Memory exhausted"
+msgstr "Speicher erschöpft"
+
+#: lib/regcomp.c:172
+msgid "Invalid preceding regular expression"
+msgstr "Vorrausgehender ungültiger regülärer Ausdruck"
+
+#: lib/regcomp.c:175
+msgid "Premature end of regular expression"
+msgstr "Verfrühtes Ende des regülären Ausdrucks"
+
+#: lib/regcomp.c:178
+msgid "Regular expression too big"
+msgstr "Regulärer Ausdruck zu groß"
+
+#: lib/regcomp.c:181
+msgid "Unmatched ) or \\)"
+msgstr "Nicht gefunden: ) oder \\)"
+
+#: lib/regcomp.c:702
+msgid "No previous regular expression"
+msgstr "Kein regulärer Ausdruck vorher"
+
+#. TRANSLATORS: A regular expression testing for an affirmative answer
+#. (english: "yes").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^yesexpr='
+#: lib/rpmatch.c:147
+msgid "^[yY]"
+msgstr "^[jJ]"
+
+#. TRANSLATORS: A regular expression testing for a negative answer
+#. (english: "no").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^noexpr='
+#: lib/rpmatch.c:160
+msgid "^[nN]"
+msgstr "^[nN]"
+
+#: lib/version-etc.c:74
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr ""
+
+#: lib/version-etc.c:77
+#, c-format
+msgid "Packaged by %s\n"
+msgstr ""
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale.  Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:84
+msgid "(C)"
+msgstr "(C)"
+
+#: lib/version-etc.c:86
+#, fuzzy
+msgid ""
+"\n"
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"\n"
+"Lizenz GPLv3+: GNU GPL Version 3 oder später <http://gnu.org/licenses/gpl."
+"html>\n"
+"Dies ist freie Software: Es ist Ihnen freigestellt sie zu verändern und zu "
+"verbreiten.\n"
+"Es gibt in dem gesetzlichen gegebenen Umfang KEINE GARANTIE.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:102
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Geschrieben von %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:106
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Geschrieben von %s und %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:110
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Geschrieben von %s, %s und %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr "Geschrieben von %s, %s, %s und %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Geschrieben von %s, %s, %s,\n"
+"%s und %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:131
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Geschrieben von %s, %s, %s,\n"
+"%s, %s und %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:139
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Geschrieben von %s, %s, %s,\n"
+"%s, %s, %s und %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:147
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Geschrieben von %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"und %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:156
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Geschrieben von %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s und %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:167
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Geschrieben von %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s und anderen.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package.  Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:245
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Report bugs to: %s\n"
+msgstr ""
+"\n"
+"Fehler an <%s> berichten.\n"
+
+#: lib/version-etc.c:247
+#, fuzzy, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr ""
+"\n"
+"Fehler an <%s> berichten.\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr ""
+
+#: lib/version-etc.c:253
+#, c-format
+msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
+msgstr ""
+
+#: lib/version-etc.c:256
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "Speicher erschöpft"
+
+#: lib/xstrtol-error.c:63
+#, fuzzy, c-format
+msgid "invalid %s%s argument `%s'"
+msgstr "Unbekanntes Zeichen: %s"
+
+#: lib/xstrtol-error.c:68
+#, fuzzy, c-format
+msgid "invalid suffix in %s%s argument `%s'"
+msgstr "Unbekanntes Zeichen: %s"
+
+#: lib/xstrtol-error.c:72
+#, fuzzy, c-format
+msgid "%s%s argument `%s' too large"
+msgstr "Unbekanntes Zeichen: %s"
+
+#: libparted/arch/beos.c:245
+msgid "Disk Image"
+msgstr "Speicherabbild"
+
+#: libparted/arch/beos.c:346 libparted/arch/gnu.c:277
+#: libparted/arch/linux.c:1545
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "Fehler beim Öffnen von %s: %s"
+
+#: libparted/arch/beos.c:357 libparted/arch/gnu.c:287
+#: libparted/arch/linux.c:1556
+#, c-format
+msgid "Unable to open %s read-write (%s).  %s has been opened read-only."
+msgstr "Kann %s nicht zum Schreiben öffnen (%s). %s wurde nur lesbar geöffnet."
+
+#: libparted/arch/beos.c:419 libparted/arch/linux.c:1714
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s, während %s zum Lesen positioniert wurde"
+
+#: libparted/arch/beos.c:452 libparted/arch/gnu.c:465 libparted/arch/gnu.c:564
+#: libparted/arch/gnu.c:692 libparted/arch/linux.c:1674
+#: libparted/arch/linux.c:1755
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s, während von %s gelesen wurde"
+
+#: libparted/arch/beos.c:488 libparted/arch/gnu.c:525
+#: libparted/arch/linux.c:1831
+#, c-format
+msgid "Can't write to %s, because it is opened read-only."
+msgstr ""
+"Auf %s kann nicht geschrieben werden, weil es nur-lesend geöffnet wurde."
+
+#: libparted/arch/beos.c:504 libparted/arch/linux.c:1856
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s, während %s zum Schreiben positioniert wurde"
+
+#: libparted/arch/beos.c:541 libparted/arch/gnu.c:601 libparted/arch/gnu.c:646
+#: libparted/arch/gnu.c:723 libparted/arch/linux.c:1804
+#: libparted/arch/linux.c:1898 libparted/arch/linux.c:1970
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s, während auf %s geschrieben wurde"
+
+#: partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Versuchen Sie `%s --help' für mehr Informationen\n"
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr "Aufruf: %s [OPTION] [GERÄT]...\n"
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the operating system about partition table changes.\n"
+"\n"
+"  -d, --dry-run    do not actually inform the operating system\n"
+"  -s, --summary    print a summary of contents\n"
+"  -h, --help       display this help and exit\n"
+"  -v, --version    output version information and exit\n"
+msgstr ""
+"Dem Betriebssystem Änderungen an der Partitionstabelle mitteilen.\n"
+"\n"
+"  -d, --dry-run  das Betriebssystem nicht informieren\n"
+"  -s, --summary    eine Zusammenfassung der Inhalte ausgeben\n"
+"  -h, --help       diese Hilfe anzeigen und beenden\n"
+"  -v, --version    Versionsangaben ausgeben und beenden\n"
+
+#: partprobe/partprobe.c:150
+msgid ""
+"\n"
+"When no DEVICE is given, probe all partitions.\n"
+msgstr ""
+"\n"
+"Ohne GERÄT, alle Partitionen testen.\n"
+
+#: partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Fehler an <%s> berichten.\n"
+
+#: libparted/arch/gnu.c:110
+#, c-format
+msgid "Unable to open %s."
+msgstr "%s kann nicht geöffnet werden."
+
+#: libparted/arch/gnu.c:130
+msgid "Unable to probe store."
+msgstr "Der Speicher konnte nicht untersucht werden."
+
+#: libparted/arch/gnu.c:368
+msgid ""
+"The partition table cannot be re-read.  This means you need to reboot before "
+"mounting any modified partitions.  You also need to reinstall your boot "
+"loader before you reboot (which may require mounting modified partitions).  "
+"It is impossible do both things!  So you'll need to boot off a rescue disk, "
+"and reinstall your boot loader from the rescue disk.  Read section 4 of the "
+"Parted User documentation for more information."
+msgstr ""
+"Die Partitionstabelle konnte nicht neu gelesen werden. Sie müssen also den "
+"Rechner neu hochfahren, bevor Sie geänderte Partitionen einhängen. Sie "
+"müssen auch Ihren Bootlader vor dem Booten neu installieren (was u.U. das "
+"Einhängen geänderter Partitionen erfordert). Man kann nicht beides tun! Also "
+"müssen Sie von einer Rettungsdiskette booten und ihren Bootlader von dort "
+"neu installieren. Lesen Sie Abschnitt 4 der Benutzerdokumentation von Parted "
+"für mehr Informationen."
+
+#: libparted/arch/gnu.c:385
+#, c-format
+msgid ""
+"The partition table on %s cannot be re-read (%s).  This means the Hurd knows "
+"nothing about any modifications you made.  You should reboot your computer "
+"before doing anything with %s."
+msgstr ""
+"Die Partitionstabelle auf %s konnte nicht neu eingelesen werden (%s). Das "
+"bedeutet, dass das Hurd nichts über Ihre Änderungen weiss. Sie sollten den "
+"Computer neu starten, bevor Sie irgendwas mit %s machen."
+
+#: libparted/arch/gnu.c:396 parted/parted.c:1967
+msgid ""
+"You should reinstall your boot loader before rebooting.  Read section 4 of "
+"the Parted User documentation for more information."
+msgstr ""
+"Vor einem Neustart sollten Sie Ihren Bootlader neu installieren.  Lesen Sie "
+"den Abschnitt 4 der Benutzerdokumentation von Parted für mehr Informationen."
+
+#: libparted/arch/gnu.c:788
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%s beim Versuch, %s auf die Platte zu speichern (sync)"
+
+# cformat removed for testing
+#: libparted/arch/linux.c:520
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "Ruf von stat für Gerät %s schlug fehl - %s."
+
+#: libparted/arch/linux.c:577
+#, fuzzy, c-format
+msgid "Unable to determine the dm type of %s."
+msgstr "Die Größe von %s kann nicht festgestellt werden (%s)."
+
+#: libparted/arch/linux.c:669
+#, fuzzy, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+"Die Sektorgröße von %s konnte nicht ermittelt werden: %s.\n"
+"Es wird die Standardsektorgröße verwendet (%lld)."
+
+#: libparted/arch/linux.c:690
+#, fuzzy, c-format
+msgid ""
+"Could not determine physical sector size for %s.\n"
+"Using the logical sector size (%lld)."
+msgstr ""
+"Die Sektorgröße von %s konnte nicht ermittelt werden: %s.\n"
+"Es wird die Standardsektorgröße verwendet (%lld)."
+
+#: libparted/arch/linux.c:746
+#, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "Die Größe von %s kann nicht festgestellt werden (%s)."
+
+#: libparted/arch/linux.c:832
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "Die Identität von Gerät %s konnte nicht ermittelt werden - %s"
+
+#: libparted/arch/linux.c:841
+msgid "Generic IDE"
+msgstr "Standard IDE"
+
+#: libparted/arch/linux.c:862
+#, c-format
+msgid ""
+"Device %s has multiple (%d) logical sectors per physical sector.\n"
+"GNU Parted supports this EXPERIMENTALLY for some special disk label/file "
+"system combinations, e.g. GPT and ext2/3.\n"
+"Please consult the web site for up-to-date information."
+msgstr ""
+"Das Gerät %s hat mehrere (%d) logische Sektoren pro physischem Sektor.\n"
+"GNU Parted unterstützt dies EXPERIMENTELL für einige spezielle "
+"Plattenkennungen/Dateisystem-Kombinationen, z.B.: GPT und ext2/3.\n"
+"Bitte besuchen Sie die Webseite für aktuelle Informationen."
+
+#: libparted/arch/linux.c:1039
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "Fehler in der Initialisierung von SCSI-Gerät %s - %s"
+
+#: libparted/arch/linux.c:1103
+#, fuzzy, c-format
+msgid ""
+"The device %s is so small that it cannot possibly store a file system or "
+"partition table.  Perhaps you selected the wrong device?"
+msgstr ""
+"Das Gerät %s hat die Länge 0 und kann unmöglich ein Dateisystem oder eine "
+"Partitionstabelle speichern. Vielleicht haben Sie das falsche Gerät "
+"ausgewählt?"
+
+#: libparted/arch/linux.c:1216
+#, c-format
+msgid ""
+"Unable to determine geometry of file/device %s.  You should not use Parted "
+"unless you REALLY know what you're doing!"
+msgstr ""
+"Geometrie von Datei/Gerät %s konnte nicht ermittelt werden. Sie sollten "
+"Parted nicht verwenden, wenn sie nicht WIRKLICH wissen, was Sie tun!"
+
+#: libparted/arch/linux.c:1276
+msgid "Generic SD/MMC Storage Card"
+msgstr ""
+
+#: libparted/arch/linux.c:1329
+msgid "DAC960 RAID controller"
+msgstr "DAC960 RAID controller"
+
+#: libparted/arch/linux.c:1334
+msgid "Promise SX8 SATA Device"
+msgstr "Promise SX8 SATA Device"
+
+#: libparted/arch/linux.c:1339
+msgid "ATA over Ethernet Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1345
+msgid "IBM S390 DASD drive"
+msgstr "IBM S390 DASD drive"
+
+#: libparted/arch/linux.c:1351
+msgid "IBM iSeries Virtual DASD"
+msgstr "IBM iSeries Virtual DASD"
+
+#: libparted/arch/linux.c:1356
+msgid "Compaq Smart Array"
+msgstr "Compaq Smart Array"
+
+#: libparted/arch/linux.c:1361
+msgid "ATARAID Controller"
+msgstr "ATARAID Controller"
+
+#: libparted/arch/linux.c:1366
+msgid "I2O Controller"
+msgstr "I20 controller"
+
+#: libparted/arch/linux.c:1371
+msgid "User-Mode Linux UBD"
+msgstr "User-Mode Linux UBD"
+
+#: libparted/arch/linux.c:1384
+#, fuzzy, c-format
+msgid "Linux device-mapper (%s)"
+msgstr "Linux device-mapper"
+
+#: libparted/arch/linux.c:1395
+msgid "Xen Virtual Block Device"
+msgstr "Xen Virtuelles Blockorientiertes Gerät"
+
+#: libparted/arch/linux.c:1400
+msgid "Unknown"
+msgstr "Unbekannt"
+
+#: libparted/arch/linux.c:1409
+#, fuzzy
+msgid "Virtio Block Device"
+msgstr "Xen Virtuelles Blockorientiertes Gerät"
+
+#: libparted/arch/linux.c:1414
+msgid "Linux Software RAID Array"
+msgstr ""
+
+#: libparted/arch/linux.c:1421
+msgid "ped_device_new()  Unsupported device type"
+msgstr "ped_device_new()  Nicht unterstützter Gerätetyp"
+
+#: libparted/arch/linux.c:1518 libparted/arch/linux.c:1590
+#, fuzzy, c-format
+msgid "Error fsyncing/closing %s: %s"
+msgstr "Fehler beim Öffnen von %s: %s"
+
+#: libparted/arch/linux.c:1754
+#, c-format
+msgid "end of file while reading %s"
+msgstr ""
+
+#: libparted/arch/linux.c:2390
+#, c-format
+msgid ""
+"Error informing the kernel about modifications to partition %s -- %s.  This "
+"means Linux won't know about any changes you made to %s until you reboot -- "
+"so you shouldn't mount it or use it in any way before rebooting."
+msgstr ""
+"Fehler beim Informieren des Kernels über Änderungen an der Partition %s -- "
+"%s. Das bedeutet, dass Linux Ihre Änderungen an %s vor einem Neustart nicht "
+"sehen wird. Sie sollten daher die Partition nicht einhängen oder sonst "
+"irgendwie benutzen, bis Sie den Rechner neu gestartet haben."
+
+#: libparted/arch/linux.c:2528
+#, fuzzy, c-format
+msgid "Unable to determine the size and length of %s."
+msgstr "Die Größe von %s kann nicht festgestellt werden (%s)."
+
+#: libparted/arch/linux.c:2553
+#, fuzzy, c-format
+msgid "Failed to add partition %d (%s)"
+msgstr "%s : Der Partitionsblock %llu kann nicht gelesen werden\n"
+
+#: libparted/arch/linux.c:2580
+#, c-format
+msgid ""
+"Partition(s) %s on %s have been written, but we have been unable to inform "
+"the kernel of the change, probably because it/they are in use.  As a result, "
+"the old partition(s) will remain in use.  You should reboot now before "
+"making further changes."
+msgstr ""
+
+#: libparted/arch/linux.c:2706
+#, c-format
+msgid ""
+"parted was unable to re-read the partition table on %s (%s).  This means "
+"Linux won't know anything about the modifications you made. "
+msgstr ""
+"Parted konnte die Partitionstabelle von %s nicht neu einlesen (%s). Das "
+"bedeutet, dass Linux bis zum Neustart nichts über Ihrer Modifikationen "
+"weiss. "
+
+#: libparted/cs/geom.c:161
+#, fuzzy, c-format
+msgid "Can't have the end before the start! (start sector=%jd length=%jd)"
+msgstr "Das Ende kommt nicht vor dem Anfang!"
+
+#: libparted/cs/geom.c:169
+msgid "Can't have a partition outside the disk!"
+msgstr "Partitionen ausserhalb der Festplatte sind nicht möglich!"
+
+#: libparted/cs/geom.c:384
+#, c-format
+msgid "Attempt to write sectors %ld-%ld outside of partition on %s."
+msgstr ""
+"Versuch, die Sektoren %ld-%ld außerhalb der Partition auf %s zu schreiben."
+
+#: libparted/cs/geom.c:424
+msgid "checking for bad blocks"
+msgstr "Suche nach defekten Blöcken"
+
+#: libparted/debug.c:96
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr "Die Ablaufverfolgung hat %d Aufrufe auf dem Stack:\n"
+
+#: libparted/debug.c:109
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr "Aussage (%s) bei %s:%d in der Funktion %s() fehlgeschlagen."
+
+#: libparted/disk.c:192
+#, c-format
+msgid "%s: unrecognised disk label"
+msgstr "%s: unbekannte Partitionstabelle"
+
+#: libparted/disk.c:484
+#, c-format
+msgid ""
+"This libparted doesn't have write support for %s.  Perhaps it was compiled "
+"read-only."
+msgstr ""
+"Der libparted fehlt die Schreibunterstützung für %s. Vielleicht wurde sie "
+"nur lesbar übersetzt."
+
+#: libparted/disk.c:629
+#, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "Die Partition %d hat %s, aber das Dateisystem hat %s."
+
+#: libparted/disk.c:838
+msgid "cylinder_alignment"
+msgstr ""
+
+#: libparted/disk.c:844
+#, fuzzy, c-format
+msgid "Unknown disk flag, %d."
+msgstr "Unbekanntes Partitionsflag %d."
+
+#: libparted/disk.c:1283
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "%s-Disk-Labels unterstützen keine erweiterten Partitionen."
+
+#: libparted/disk.c:1858
+#, c-format
+msgid "%s disk labels don't support logical or extended partitions."
+msgstr ""
+"%s-Disk-Labels unterstützen keine logischen oder erweiterten Partitionen."
+
+#: libparted/disk.c:1871
+msgid "Too many primary partitions."
+msgstr "Zu viele primäre Partitionen."
+
+#: libparted/disk.c:1880
+#, c-format
+msgid ""
+"Can't add a logical partition to %s, because there is no extended partition."
+msgstr ""
+"Zu %s kann keine logische Partition hinzugefügt werden, da es keine "
+"erweiterte Partition gibt."
+
+#: libparted/disk.c:1904
+#, c-format
+msgid "Can't have more than one extended partition on %s."
+msgstr "Auf %s kann es nicht mehr als eine erweiterte Partition geben."
+
+#: libparted/disk.c:1914
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr ""
+"Logische Partitionen können nicht außerhalb der erweiterten Partition sein."
+
+#: libparted/disk.c:1939
+#, c-format
+msgid "Can't have a logical partition outside of the extended partition on %s."
+msgstr ""
+"Außerhalb der erweiterten Partition auf %s kann keine logische Partition "
+"existieren."
+
+#: libparted/disk.c:1949 libparted/disk.c:2008 libparted/disk.c:2186
+msgid "Can't have overlapping partitions."
+msgstr "Es können keine überlappenden Partitionen existieren."
+
+#: libparted/disk.c:1957
+msgid "Can't have a primary partition inside an extended partition."
+msgstr "Es kann keine primäre Partition in einer erweiterten Partition sein."
+
+#: libparted/disk.c:2387
+msgid "metadata"
+msgstr "Metadaten"
+
+#: libparted/disk.c:2389
+msgid "free"
+msgstr "frei"
+
+#: libparted/disk.c:2391 parted/ui.c:1194 parted/ui.c:1222
+msgid "extended"
+msgstr "erweitert"
+
+#: libparted/disk.c:2393 parted/ui.c:1198 parted/ui.c:1226
+msgid "logical"
+msgstr "logisch"
+
+#: libparted/disk.c:2395 parted/ui.c:1190 parted/ui.c:1218
+msgid "primary"
+msgstr "primär"
+
+#: libparted/disk.c:2411
+msgid "boot"
+msgstr "boot"
+
+#: libparted/disk.c:2413
+msgid "bios_grub"
+msgstr ""
+
+#: libparted/disk.c:2415
+msgid "root"
+msgstr "root"
+
+#: libparted/disk.c:2417
+msgid "swap"
+msgstr "swap"
+
+#: libparted/disk.c:2419
+msgid "hidden"
+msgstr "versteckt"
+
+#: libparted/disk.c:2421
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2423
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2425
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2427
+msgid "hp-service"
+msgstr "hp-service"
+
+#: libparted/disk.c:2429
+msgid "palo"
+msgstr "palo"
+
+#: libparted/disk.c:2431
+msgid "prep"
+msgstr "prep"
+
+#: libparted/disk.c:2433
+msgid "msftres"
+msgstr "msftres"
+
+#: libparted/disk.c:2435
+msgid "atvrecv"
+msgstr ""
+
+#: libparted/disk.c:2437
+msgid "diag"
+msgstr ""
+
+#: libparted/disk.c:2439
+msgid "legacy_boot"
+msgstr ""
+
+#: libparted/disk.c:2445
+#, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Unbekanntes Partitionsflag %d."
+
+#: libparted/exception.c:77
+msgid "Information"
+msgstr "Information"
+
+#: libparted/exception.c:78
+msgid "Warning"
+msgstr "Warnung"
+
+#: libparted/exception.c:79
+msgid "Error"
+msgstr "Fehler"
+
+#: libparted/exception.c:80
+msgid "Fatal"
+msgstr "Fataler Fehler"
+
+#: libparted/exception.c:81
+msgid "Bug"
+msgstr "Bug"
+
+#: libparted/exception.c:82
+msgid "No Implementation"
+msgstr "Keine Implementierung"
+
+#: libparted/exception.c:86
+msgid "Fix"
+msgstr "Fix"
+
+#: libparted/exception.c:87
+msgid "Yes"
+msgstr "Ja"
+
+#: libparted/exception.c:88
+msgid "No"
+msgstr "Nein"
+
+#: libparted/exception.c:89
+msgid "OK"
+msgstr "OK"
+
+#: libparted/exception.c:90
+msgid "Retry"
+msgstr "Wiederholen"
+
+#: libparted/exception.c:91
+msgid "Ignore"
+msgstr "Ignorieren"
+
+#: libparted/exception.c:92
+msgid "Cancel"
+msgstr "Abbrechen"
+
+#: libparted/exception.c:132
+#, fuzzy, c-format
+msgid ""
+"A bug has been detected in GNU Parted.  Refer to the web site of parted "
+"http://www.gnu.org/software/parted/parted.html for more information of what "
+"could be useful for bug submitting!  Please email a bug report to %s "
+"containing at least the version (%s) and the following message:  "
+msgstr ""
+"Es wurde ein Bug in GNU parted entdeckt. Bitte lesen Sie die Webseite http://"
+"www.gnu.org/software/parted/parted.html für Informationen, was wichtig für "
+"einen Fehlerbericht sein könnte. Bitte senden Sie einen Fehlerbericht an bug-"
+"parted@gnu.org unter Angabe der Version (%s) und der folgenden Meldung:  "
+
+#: libparted/labels/aix.c:103
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr ""
+"Unterstützung für das Lesen von AIX-Partitionstabellen ist noch nicht "
+"implementiert."
+
+#: libparted/labels/aix.c:114
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr ""
+"Unterstützung für das Schreiben von AIX-Partitionstabellen ist noch nicht "
+"implementiert."
+
+#: libparted/labels/aix.c:127
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr ""
+"Unterstützung für das Hinzufügen von Partitionen zu AIX-Partitionstabellen "
+"ist noch nicht implementiert."
+
+#: libparted/labels/aix.c:137
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr ""
+"Unterstützung für das Verdoppeln von Partitionen in AIX-Partitionstabellen "
+"ist noch nicht implementiert."
+
+#: libparted/labels/aix.c:155
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr ""
+"Unterstützung für das Setzen des Systemtyps von Partitionen in AIX-"
+"Partitionstabellen ist noch nicht implementiert."
+
+#: libparted/labels/aix.c:165
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr ""
+"Unterstützung für das Setzen von Bitschaltern in AIX-Partitionstabellen ist "
+"noch nicht implementiert."
+
+#: libparted/labels/bsd.c:571 libparted/labels/dasd.c:833
+#: libparted/labels/dos.c:2176 libparted/labels/dvh.c:787
+#: libparted/labels/gpt.c:1782 libparted/labels/loop.c:247
+#: libparted/labels/mac.c:1426 libparted/labels/pc98.c:748
+#: libparted/labels/rdb.c:1052 libparted/labels/sun.c:780
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "Es können nicht alle Anforderungen an die Partition erfüllt werden."
+
+#: libparted/labels/bsd.c:596
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "Kann keine BSD-Disklabel-Zeile belegen."
+
+#: libparted/labels/dasd.c:859
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "Kann keine dasd Disklabel-Zeile belegen"
+
+#: libparted/labels/dos.c:966
+#, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr "Ungültige Partitionstabelle auf %s -- falsche Signatur %x."
+
+#: libparted/labels/dos.c:994
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "Ungültige Partitionstabelle - Rekursive Partition auf %s."
+
+#: libparted/labels/dos.c:1504
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr ""
+"Erweiterte Partitionen können in MS-DOS-Disk-Labels nicht versteckt werden."
+
+#: libparted/labels/dos.c:2158
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+"Parted kann von Windows Dynamic Disk verwaltete Partitionen nicht in der "
+"Größe verändern."
+
+#: libparted/labels/dvh.c:200
+#, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr "%s hat keine erweiterte Partition (volume header partition)."
+
+#: libparted/labels/dvh.c:326
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr ""
+"Die Prüfsumme ist falsch. Das weist auf eine defekte Partitionstabelle hin."
+
+#: libparted/labels/dvh.c:631
+msgid "Only primary partitions can be root partitions."
+msgstr "Nur primäre Partitionen können Root-Partitionen sein."
+
+#: libparted/labels/dvh.c:645
+msgid "Only primary partitions can be swap partitions."
+msgstr "Nur primäre Partitionen können Swap-Partitionen sein."
+
+#: libparted/labels/dvh.c:659
+msgid "Only logical partitions can be a boot file."
+msgstr "Nur logische Partitionen können Boot-Dateien sein."
+
+#: libparted/labels/dvh.c:736
+#, fuzzy, c-format
+msgid ""
+"failed to set dvh partition name to %s:\n"
+"Only logical partitions (boot files) have a name."
+msgstr "Nur logische Partitionen (Boot-Dateien) haben einen Namen."
+
+#: libparted/labels/dvh.c:829
+msgid "Too many primary partitions"
+msgstr "Zu viele primäre Partitionen"
+
+#: libparted/labels/fdasd.c:98
+msgid "open error"
+msgstr "Fehler beim Öffnen"
+
+#: libparted/labels/fdasd.c:101
+msgid "seek error"
+msgstr "Fehler beim Suchen"
+
+#: libparted/labels/fdasd.c:104
+msgid "read error"
+msgstr "Lesefehler"
+
+#: libparted/labels/fdasd.c:110
+msgid "ioctl() error"
+msgstr "ioctl() Fehler"
+
+#: libparted/labels/fdasd.c:114
+msgid "API version mismatch"
+msgstr "Versionsunterschied der API"
+
+#: libparted/labels/fdasd.c:118
+msgid "Unsupported disk type"
+msgstr " Nicht unterstützter Festplattentyp"
+
+#: libparted/labels/fdasd.c:122
+msgid "Unsupported disk format"
+msgstr "Nicht unterstütztes Festplattenfomat"
+
+#: libparted/labels/fdasd.c:126
+msgid "Disk is in use"
+msgstr "Festplatte ist in Verwendung"
+
+#: libparted/labels/fdasd.c:130
+msgid "Syntax error in config file"
+msgstr "Syntaxfehler in der Konfigurationsdatei"
+
+#: libparted/labels/fdasd.c:134
+msgid "Volume label is corrupted"
+msgstr "Die Volumenbezeichnung ist beschädigt"
+
+#: libparted/labels/fdasd.c:138
+msgid "A data set name is corrupted"
+msgstr "Ein Datensatzname ist beschädigt"
+
+#: libparted/labels/fdasd.c:142
+msgid "Memory allocation failed"
+msgstr "Speicherreservierung ist fehlgeschlagen"
+
+#: libparted/labels/fdasd.c:146
+msgid "Device verification failed"
+msgstr "Geräteprüfung fehlgeschlagen"
+
+#: libparted/labels/fdasd.c:147
+msgid "The specified device is not a valid DASD device"
+msgstr "Das angegebene Gerät ist kein gültiges DASD-Gerät"
+
+#: libparted/labels/fdasd.c:150 libparted/labels/vtoc.c:179
+msgid "Fatal error"
+msgstr "Fataler Fehler"
+
+#: libparted/labels/fdasd.c:226
+msgid "No room for volume label."
+msgstr "Kein Platz für eine Volumenbezeichnung."
+
+#: libparted/labels/fdasd.c:234
+msgid "No room for partition info."
+msgstr "Kein Platz für Partitionsinformationen."
+
+#: libparted/labels/fdasd.c:709
+msgid "Invalid VTOC."
+msgstr "Ungültiges VTOC."
+
+#: libparted/labels/fdasd.c:766
+msgid "Could not retrieve API version."
+msgstr "Die API-Version kann nicht abgefragt werden."
+
+#: libparted/labels/fdasd.c:769
+#, c-format
+msgid ""
+"The current API version '%d' doesn't match dasd driver API version '%d'!"
+msgstr ""
+"Die aktuelle API-Version '%d' stimmt nicht mit der dasd-Treiber API '%d' "
+"überein!"
+
+#: libparted/labels/fdasd.c:806
+msgid "Could not retrieve disk geometry information."
+msgstr "Die Festplattengeometrie konnte nicht gelesen werden."
+
+#: libparted/labels/fdasd.c:810
+msgid "Could not retrieve blocksize information."
+msgstr "Die Blöckgröße konnte nicht gelesen werden."
+
+#: libparted/labels/fdasd.c:815
+msgid "Could not retrieve disk information."
+msgstr "Die Festplatteninformationen konnten nicht gelesen werden."
+
+#: libparted/labels/gpt.c:493
+#, c-format
+msgid ""
+"%s contains GPT signatures, indicating that it has a GPT table.  However, it "
+"does not have a valid fake msdos partition table, as it should.  Perhaps it "
+"was corrupted -- possibly by a program that doesn't understand GPT partition "
+"tables.  Or perhaps you deleted the GPT table, and are now using an msdos "
+"partition table.  Is this a GPT partition table?"
+msgstr ""
+"%s enthält GPT-Signaturen, die anzeigen, dass es eine GPT-Tabelle hat. Es "
+"ist jedoch keine gültige vorgetäuschte MSDOS-Partitionstabelle vorhanden, "
+"die erforderlich wäre. Vielleicht wurde diese zerstört -- eventuell durch "
+"ein Programm, das GPT-Partitionstabellen nicht versteht. Oder vielleicht "
+"haben Sie die GPT-Tabelle gelöscht, und verwenden jetzt eine MS-DOS-"
+"Partitions-Tabelle. Ist dies eine GPT-Partitionstabelle?"
+
+#: libparted/labels/gpt.c:693
+#, fuzzy, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise.  Please report this!"
+msgstr ""
+"Das Format der GPT-Partitionstabelle (%x) ist neuer als das von Parted "
+"verstandene. Bitte melden Sie das an: bug-parted@gnu.org"
+
+#: libparted/labels/gpt.c:740
+#, c-format
+msgid ""
+"Not all of the space available to %s appears to be used, you can fix the GPT "
+"to use all of the space (an extra %llu blocks) or continue with the current "
+"setting? "
+msgstr ""
+"Nicht der gesamte verfügbare Platz von %s scheint verwendet. Sie können die "
+"GPT reparieren, damit der gesamte Platz verwendet wird (zusätzlich %llu "
+"Blöcke) oder Sie können mit den aktuellen Einstellungen fortfahren."
+
+#: libparted/labels/gpt.c:952
+msgid ""
+"The backup GPT table is not at the end of the disk, as it should be.  This "
+"might mean that another operating system believes the disk is smaller.  Fix, "
+"by moving the backup to the end (and removing the old backup)?"
+msgstr ""
+"Die Sicherung der GPT-Tabelle ist nicht am Ende der Festplatte, wo sie "
+"normalerweise sein sollte. Das kann bedeuten, dass ein anderes "
+"Betriebssystem glaubt, die Festplatte sei kleiner. Soll das durch "
+"Verschieben der Sicherung zum Ende (und löschen der alten Sicherung) "
+"korrigiert werden?"
+
+#: libparted/labels/gpt.c:976
+msgid ""
+"Both the primary and backup GPT tables are corrupt.  Try making a fresh "
+"table, and using Parted's rescue feature to recover partitions."
+msgstr ""
+"Sowohl die primäre als auch die Backup-GPT-Tabelle sind defekt. Versuchen "
+"Sie, eine neue Tabelle anzulegen und die Partititionen mit Hilfe von "
+"Parted's Rettungsmöglichkeiten zu restaurieren."
+
+#: libparted/labels/gpt.c:987
+#, fuzzy
+msgid ""
+"The backup GPT table is corrupt, but the primary appears OK, so that will be "
+"used."
+msgstr ""
+"Die primäre GPT-Tabelle ist defekt, aber die Sicherung scheint in Ordnung zu "
+"sein. Daher wird die Sicherung verwendet."
+
+#: libparted/labels/gpt.c:999
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr ""
+"Die primäre GPT-Tabelle ist defekt, aber die Sicherung scheint in Ordnung zu "
+"sein. Daher wird die Sicherung verwendet."
+
+#: libparted/labels/gpt.c:1023
+msgid "primary partition table array CRC mismatch"
+msgstr ""
+
+#: libparted/labels/mac.c:184
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Ungültige Signatur %x für Mac-Partitionstabellen."
+
+#: libparted/labels/mac.c:231
+msgid "Partition map has no partition map entry!"
+msgstr "Die Partitionskarte hat keinen Partitionskarteneintrag!"
+
+#: libparted/labels/mac.c:279
+#, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr "%s ist zu klein für eine Mac-Partitionstabelle!"
+
+#: libparted/labels/mac.c:508
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "Partition %d hat eine ungültige Signatur %x."
+
+#: libparted/labels/mac.c:526
+#, c-format
+msgid "Partition %d has an invalid length of 0 bytes!"
+msgstr "Partition %d hat eine ungültige Länge von 0 Bytes!"
+
+#: libparted/labels/mac.c:557
+msgid "The data region doesn't start at the start of the partition."
+msgstr "Die Datenregion beginnt nicht am Anfang der Partition."
+
+#: libparted/labels/mac.c:574
+msgid "The boot region doesn't start at the start of the partition."
+msgstr "Die Bootregion beginnt nicht am Anfang der Partition."
+
+#: libparted/labels/mac.c:588
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr "Die Bootregion der Partition belegt nicht die ganze Partition."
+
+#: libparted/labels/mac.c:599
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr "Die Datenregion der Partition belegt nicht die ganze Partition."
+
+#: libparted/labels/mac.c:652
+#, c-format
+msgid ""
+"Weird block size on device descriptor: %d bytes is not divisible by 512."
+msgstr ""
+"Seltsame Blockgröße auf dem Gerätedeskriptor: %d Bytes ist nicht durch 512 "
+"teilbar."
+
+#: libparted/labels/mac.c:665
+#, c-format
+msgid ""
+"The driver descriptor says the physical block size is %d bytes, but Linux "
+"says it is %d bytes."
+msgstr ""
+"Der Treiberdeskriptor sagt, dass die physische Blockgröße %d Bytes ist. "
+"Linux sagt, dass es %d Bytes sind."
+
+#: libparted/labels/mac.c:719
+msgid "No valid partition map found."
+msgstr "Keine gültige Partitionskarte gefunden."
+
+#: libparted/labels/mac.c:780
+#, c-format
+msgid ""
+"Conflicting partition map entry sizes!  Entry 1 says it is %d, but entry %d "
+"says it is %d!"
+msgstr ""
+"Widersprüchliche Größen in den Partitionskarteneinträgen! Eintrag 1 sagt, "
+"dass es %d Bytes sind, Eintrag %d sagt aber, dass es %d Bytes sind!"
+
+#: libparted/labels/mac.c:811
+msgid "Weird!  There are 2 partitions map entries!"
+msgstr "Seltsam! Es gibt 2 Partitionskarteneinträge!"
+
+#: libparted/labels/mac.c:1357
+msgid ""
+"Changing the name of a root or swap partition will prevent Linux from "
+"recognising it as such."
+msgstr ""
+"Eine Änderung des Namens der Root- oder Swap-Partition verhindert, dass "
+"Linux sie als solche erkennt."
+
+#: libparted/labels/mac.c:1461
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr ""
+"Eine weitere Partition kann nicht hinzugefügt werden -- die Partitionskarte "
+"ist zu klein!"
+
+#: libparted/labels/pc98.c:331
+#, c-format
+msgid "Invalid partition table on %s."
+msgstr "Ungültige Partitionstabelle auf %s."
+
+#: libparted/labels/pc98.c:384 libparted/labels/pc98.c:462
+#, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries.  This is still "
+"unsupported."
+msgstr ""
+"Partition %d ist nicht auf Zylindergrenzen ausgerichtet. Das ist immer noch "
+"nicht unterstützt."
+
+#: libparted/labels/pc98.c:780
+msgid "Can't add another partition."
+msgstr "Es kann keine weitere Partition hinzugefügt werden."
+
+#: libparted/labels/pt-tools.c:125
+#, c-format
+msgid ""
+"partition length of %jd sectors exceeds the %s-partition-table-imposed "
+"maximum of %jd"
+msgstr ""
+
+#: libparted/labels/pt-tools.c:138
+#, c-format
+msgid ""
+"starting sector number, %jd exceeds the %s-partition-table-imposed maximum "
+"of %jd"
+msgstr ""
+
+#: libparted/labels/rdb.c:169
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr "%s : Schlechte Prüfsumme bei Block %llu vom Typ %s."
+
+#: libparted/labels/rdb.c:484
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr "%s : Konnte rdb-Block nicht finden. Das sollte niemals passieren."
+
+#: libparted/labels/rdb.c:573
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr "%s : Schleife bei Block %d gefunden."
+
+#: libparted/labels/rdb.c:592
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr "%s : Die %s-Liste scheint am Block %s fehlerhaft zu sein."
+
+#: libparted/labels/rdb.c:691
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr "%s : Die fehlerhaften Blöcke konnten nicht angezeigt werden."
+
+#: libparted/labels/rdb.c:699
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr "%s : Die Partitionsblöcke konnten nicht angezeigt werden."
+
+#: libparted/labels/rdb.c:707
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr "%s : Die Dateisystemblöcke konnten nicht angezeigt werden."
+
+#: libparted/labels/rdb.c:715
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr "%s : Die Bootblöcke konnten nicht angezeigt werden."
+
+#: libparted/labels/rdb.c:742
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr "Der Partitionsblock konnte an %d nicht geschrieben werden."
+
+#: libparted/labels/rdb.c:1080
+msgid "Unable to allocate a partition number."
+msgstr "Die Partitionsnummer konnte nicht zugewiesen werden."
+
+#: libparted/labels/sun.c:161
+msgid "Corrupted Sun disk label detected."
+msgstr "Defektes Sun-Disklabel gefunden."
+
+#: libparted/labels/sun.c:276
+#, c-format
+msgid ""
+"The disk CHS geometry (%d,%d,%d) reported by the operating system does not "
+"match the geometry stored on the disk label (%d,%d,%d)."
+msgstr ""
+"Die vom System gemeldete CHS-Geometrie (%d,%d,%d) der Festplatte stimmt "
+"nicht mit der gespeicherten Geometrie in der Partitionstabelle (%d,%d,%d) "
+"überein."
+
+#: libparted/labels/sun.c:298
+#, c-format
+msgid "The disk label describes a disk bigger than %s."
+msgstr "Das Disklabel beschreibt eine Festplatte größer als %s."
+
+#: libparted/labels/sun.c:473
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr ""
+"Die Festplatte hat %d Zylinder, was größer ist als das Maximum von 65536."
+
+#: libparted/labels/sun.c:812
+msgid ""
+"The Whole Disk partition is the only available one left.  Generally, it is "
+"not a good idea to overwrite this partition with a real one.  Solaris may "
+"not be able to boot without it, and SILO (the sparc boot loader) appreciates "
+"it as well."
+msgstr ""
+"Die Whole-Disk-Partition ist die einzig verbleibende. Es ist normalerweise "
+"keine gute Idee, diese Partition mit einer echten zu überschreiben. Solaris "
+"bootet ohne vielleicht nicht mehr, und SILO (der Sparc-Bootlader) schätzt "
+"sie auch."
+
+#: libparted/labels/sun.c:827
+msgid "Sun disk label is full."
+msgstr "Das Sun-Disklabel ist voll."
+
+#: libparted/labels/vtoc.c:164
+msgid "opening of device failed"
+msgstr "Fehler beim Öffnen des Geräts"
+
+#: libparted/labels/vtoc.c:168
+msgid "seeking on device failed"
+msgstr "Fehler beim Suchen auf dem Gerät"
+
+#: libparted/labels/vtoc.c:172
+msgid "writing to device failed"
+msgstr "Fehler beim Schreiben auf das Gerät"
+
+#: libparted/labels/vtoc.c:176
+msgid "reading from device failed"
+msgstr "Fehler beim Lesen vom Gerät"
+
+#: libparted/labels/vtoc.c:299 libparted/labels/vtoc.c:308
+#: libparted/labels/vtoc.c:329 libparted/labels/vtoc.c:336
+msgid "Could not read volume label."
+msgstr "Volumenbezeichnung kann nicht gelesen werden."
+
+#: libparted/labels/vtoc.c:356 libparted/labels/vtoc.c:363
+msgid "Could not write volume label."
+msgstr "Volumenbeschriftung kann nicht geschrieben werden."
+
+#: libparted/labels/vtoc.c:469
+msgid "Could not read VTOC labels."
+msgstr "VTOC-Beschriftung kann nicht gelesen werden."
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr "Konnte das VTOC FMT1 DSCB nicht lesen."
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr "Konnte das VTOC FMT4 DSCB nicht lesen."
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr "Konnte das VTOC FMT5 DSCB nicht lesen."
+
+#: libparted/labels/vtoc.c:496
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr "Konnte das VTOC FMT7 DSCB nicht lesen."
+
+#: libparted/labels/vtoc.c:516
+msgid "Could not write VTOC labels."
+msgstr "VTOC-Beschriftung kann nicht geschrieben werden."
+
+#: libparted/labels/vtoc.c:522
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr "Konnte das VTOC FMT1 DSCB nicht schreiben."
+
+#: libparted/labels/vtoc.c:529
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr "Konnte das VTOC FMT4 DSCB nicht schreiben."
+
+#: libparted/labels/vtoc.c:536
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr "Konnte das VTOC FMT5 DSCB nicht schreiben."
+
+#: libparted/labels/vtoc.c:543
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr "Konnte das VTOC FMT7 DSCB nicht schreiben."
+
+#: libparted/libparted.c:230 libparted/libparted.c:245
+msgid "Out of memory."
+msgstr "Speicher erschöpft."
+
+#: libparted/unit.c:138
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr "Konnte die Größe der speziellen Einheit 'COMPACT' nicht bekommen."
+
+#: libparted/unit.c:384
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr "\"%s\" hat eine ungültige Syntax für Orte."
+
+#: libparted/unit.c:392
+#, c-format
+msgid "The maximum head value is %d."
+msgstr "Die maximale Zahl der Köpfe ist %d."
+
+#: libparted/unit.c:399
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr "Die maximale Zahl der Sektoren ist %d."
+
+#: libparted/unit.c:411 libparted/unit.c:556
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr "Der Ort %s ist außerhalb des Geräts %s."
+
+#: libparted/unit.c:531
+msgid "Invalid number."
+msgstr "Ungültige Nummer."
+
+#: libparted/fs/amiga/affs.c:62 libparted/fs/amiga/apfs.c:55
+#: libparted/fs/amiga/asfs.c:69
+#, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "%s : Der Partitionsblock konnte nicht belegt werden\n"
+
+#: libparted/fs/amiga/affs.c:77 libparted/fs/amiga/apfs.c:68
+#: libparted/fs/amiga/asfs.c:81
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr "%s : Der Block konnte nicht belegt werden\n"
+
+#: libparted/fs/amiga/affs.c:82 libparted/fs/amiga/apfs.c:73
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr "%s : Der Boot-Block %llu konnte nicht gelesen werden\n"
+
+#: libparted/fs/amiga/affs.c:98 libparted/fs/amiga/apfs.c:84
+#: libparted/fs/amiga/asfs.c:87 libparted/fs/amiga/asfs.c:101
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr "%s : Der Root-Block %llu konnte nicht gelesen werden\n"
+
+#: libparted/fs/amiga/amiga.c:71
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr "%s : Das Id-Listen-Element konnte nicht belegt werden\n"
+
+#: libparted/fs/amiga/amiga.c:188
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr "%s: Der Block %llu konnte nicht gelesen werden\n"
+
+#: libparted/fs/amiga/amiga.c:201
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr "%s : Schlechte Prüfsumme bei Block %llu vom Typ %s\n"
+
+#: libparted/fs/amiga/amiga.c:211
+#, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s : Konnte den Block %d nicht schreiben\n"
+
+#: libparted/fs/amiga/amiga.c:277
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr ""
+"%s : Der Festplatten-spezifische rdb-Block konnte nicht belegt werden\n"
+
+#: libparted/fs/amiga/amiga.c:288
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr "%s : Konnte rdb-Block nicht finden. Das sollte niemals passieren\n"
+
+#: libparted/fs/amiga/amiga.c:317
+#, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr "%s : Der Partitionsblock %llu kann nicht gelesen werden\n"
+
+#: libparted/fs/fat/fat.c:174
+msgid ""
+"GNU Parted was miscompiled: the FAT boot sector should be 512 bytes.  FAT "
+"support will be disabled."
+msgstr ""
+"GNU parted ist fehlerhaft übersetzt: Der FAT-Bootsektor sollte 512 Bytes "
+"sein. FAT-Unterstützung wird deaktiviert."
+
+#: libparted/fs/fat/bootsector.c:49 libparted/fs/fat/bootsector.c:56
+msgid "File system has an invalid signature for a FAT file system."
+msgstr "Das Dateisystem hat eine ungültige Signatur für ein FAT-Dateisystem."
+
+#: libparted/fs/fat/bootsector.c:64
+msgid "File system has an invalid sector size for a FAT file system."
+msgstr ""
+"Das Dateisystem hat eine ungültige Sektorgröße für ein FAT-Dateisystem."
+
+#: libparted/fs/fat/bootsector.c:71
+msgid "File system has an invalid cluster size for a FAT file system."
+msgstr ""
+"Das Dateisystem hat eine ungültige Clustergröße für ein FAT-Dateisystem."
+
+#: libparted/fs/fat/bootsector.c:78
+msgid ""
+"File system has an invalid number of reserved sectors for a FAT file system."
+msgstr ""
+"Das Dateisystem hat eine ungültige Zahl von reservierten Sektoren für ein "
+"FAT-Dateisystem."
+
+#: libparted/fs/fat/bootsector.c:85
+msgid "File system has an invalid number of FATs."
+msgstr "Das Dateisystem hat eine ungültige Anzahl von FATs."
+
+#: libparted/fs/fat/bootsector.c:156
+#, c-format
+msgid ""
+"This file system has a logical sector size of %d.  GNU Parted is known not "
+"to work properly with sector sizes other than 512 bytes."
+msgstr ""
+"Dieses Dateisystem hat eine logische Sektorgröße von %d. GNU Parted "
+"funktioniert mit anderen Sektorgrößen als 512 Bytes nicht richtig."
+
+#: libparted/fs/fat/bootsector.c:181
+#, c-format
+msgid ""
+"The file system's CHS geometry is (%d, %d, %d), which is invalid.  The "
+"partition table's CHS geometry is (%d, %d, %d).  If you select Ignore, the "
+"file system's CHS geometry will be left unchanged.  If you select Fix, the "
+"file system's CHS geometry will be set to match the partition table's CHS "
+"geometry."
+msgstr ""
+"Die CHS-Geometrie des Dateisystems ist ungültig (%d, %d, %d). Die CHS-"
+"Geometrie der Partitionstabelle ist (%d, %d, %d). Wenn Sie Abbrechen "
+"auswählen, wird die CHS-Geometrie des Dateisystem nicht verändert. Wenn Sie "
+"Reparieren auswählen, wird die CHS-Geometrie des Dateisystems so gesetzt, "
+"dass sie mit der CHS-Geometrie der Partitionstabelle übereinstimmt."
+
+#: libparted/fs/fat/bootsector.c:230
+msgid "FAT boot sector says logical sector size is 0.  This is weird. "
+msgstr ""
+"Der FAT-Bootsektor sagt, die logische Sektorgröße sei 0. Das ist seltsam."
+
+#: libparted/fs/fat/bootsector.c:236
+msgid "FAT boot sector says there are no FAT tables.  This is weird. "
+msgstr "Der FAT-Bootsektor sagt, es gäbe keine FAT-Tabellen. Das ist seltsam."
+
+#: libparted/fs/fat/bootsector.c:242
+msgid "FAT boot sector says clusters are 0 sectors.  This is weird. "
+msgstr ""
+"Der FAT-Bootsektor sagt, Cluster seien 0 Sektoren groß. Das ist seltsam."
+
+#: libparted/fs/fat/bootsector.c:252
+msgid "File system is FAT12, which is unsupported."
+msgstr "Das Dateisystem ist FAT12, welches nicht unterstützt wird."
+
+#: libparted/fs/fat/bootsector.c:428
+#, c-format
+msgid ""
+"The information sector has the wrong signature (%x).  Select cancel for now, "
+"and send in a bug report.  If you're desperate, it's probably safe to ignore."
+msgstr ""
+"Der Informationssektor hat die falsche Signatur (%x). Wählen Sie jetzt "
+"Abbrechen und senden Sie einen Fehlerbericht. Wenn es sein muß, können Sie "
+"das auch ignorieren."
+
+#: libparted/fs/linux_swap/linux_swap.c:247
+#, fuzzy, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "Unbekannte Linux-Swap-Signatur '%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:290
+#, fuzzy, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "Unbekannte Linux-Swap-Signatur '%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:330
+#, fuzzy, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Unbekannte Linux-Swap-Signatur '%10s'."
+
+#: libparted/fs/hfs/probe.c:50
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to "
+"%d bytes."
+msgstr ""
+"Parted kann das HFS-Dateisystem nicht auf Festplatten mit einer Sektorgröße "
+"ungleich %d Bytes verwenden."
+
+#: parted/parted.c:123
+msgid "displays this help message"
+msgstr "zeigt diese Hilfe"
+
+#: parted/parted.c:124
+msgid "lists partition layout on all block devices"
+msgstr "zeigt das Partitionslayout aller blockorientierten Geräte"
+
+#: parted/parted.c:125
+msgid "displays machine parseable output"
+msgstr "zeigt maschinenlesbare Ausgaben"
+
+#: parted/parted.c:126
+msgid "never prompts for user intervention"
+msgstr "bittet nie um Eingriff des Benutzers"
+
+#: parted/parted.c:127
+msgid "displays the version"
+msgstr "zeigt die Version"
+
+#: parted/parted.c:128
+#, fuzzy
+msgid "alignment for new partitions"
+msgstr "Kann keine weitere Partition erzeugen."
+
+#: parted/parted.c:140
+msgid ""
+"NUMBER is the partition number used by Linux.  On MS-DOS disk labels, the "
+"primary partitions number from 1 to 4, logical partitions from 5 onwards.\n"
+msgstr ""
+"NUMMER ist die von Linux verwendete Partitionsnummer. Bei MS-DOS-"
+"Partitionstabellen ist für Primärpartitionen die Nummer zwischen 1 und 4, "
+"für logische Partitionen größer 5.\n"
+
+#: parted/parted.c:143
+msgid "LABEL-TYPE is one of: "
+msgstr "LABEL-TYP ist eines aus: "
+
+#: parted/parted.c:144
+msgid "FLAG is one of: "
+msgstr "FLAG ist eines aus: "
+
+#: parted/parted.c:145
+msgid "UNIT is one of: "
+msgstr "EINHEIT ist eines aus: "
+
+#: parted/parted.c:146
+msgid "desired alignment: minimum or optimal"
+msgstr ""
+
+#: parted/parted.c:147
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "PART-TYP ist eines aus: primär, logisch, erweitert\n"
+
+#: parted/parted.c:149
+msgid "FS-TYPE is one of: "
+msgstr "FS-TYP ist eines aus: "
+
+#: parted/parted.c:150
+msgid ""
+"START and END are disk locations, such as 4GB or 10%.  Negative values count "
+"from the end of the disk.  For example, -1s specifies exactly the last "
+"sector.\n"
+msgstr ""
+"ANFANG und ENDE sind Stellen auf der Festplatte, z.B. 4GB oder 10%. Negative "
+"Werte zählen vom Ende der Festplatte aus. Beispielsweise steht -1s für genau "
+"den letzen Sektor.\n"
+
+#: parted/parted.c:153
+msgid "STATE is one of: on, off\n"
+msgstr "STATUS ist eines aus: an, aus\n"
+
+#: parted/parted.c:154
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "GERÄT ist normalerweise /dev/hda oder /dev/sda\n"
+
+#: parted/parted.c:155
+msgid "NAME is any word you want\n"
+msgstr "NAME ist ein beliebiges Wort Ihrer Wahl\n"
+
+#: parted/parted.c:158
+msgid ""
+"Copyright (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"This program is free software, covered by the GNU General Public License.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+msgstr ""
+"Copyright (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"Dieses Programm ist freie Software unter den Regeln der GNU General Public "
+"License.\n"
+"\n"
+"Dieses Programm wird in der Hoffnung verteilt, daß es nützlich ist,\n"
+"jedoch OHNE JEGLICHE GARANTIE; sogar ohne die implizite Garantie der\n"
+"MARKTFÄHIGKEIT oder der ERFÜLLUNG EINES BESTIMMTEN ZWECKES.  In der\n"
+"\"GNU General Public License\" können weitere Einzelheiten nachgelesen\n"
+"werden.\n"
+
+#: parted/parted.c:204
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(Restzeit %.2d:%.2d)"
+
+#: parted/parted.c:223
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+"Die Partition %s wird gerade verwendet. Sie müssen sie aushängen, bevor Sie "
+"sie mit Parted verändern."
+
+#: parted/parted.c:241
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "Partition(en) auf %s werden verwendet."
+
+#: parted/parted.c:253
+#, c-format
+msgid ""
+"The existing disk label on %s will be destroyed and all data on this disk "
+"will be lost. Do you want to continue?"
+msgstr ""
+"Die bestehende Partitionstabelle und alle Daten auf %s werden gelöscht. "
+"Wollen Sie fortfahren?"
+
+#: parted/parted.c:502
+msgid "New disk label type?"
+msgstr "Neuer Disk-Label-Typ?"
+
+#: parted/parted.c:562
+msgid "Partition type?"
+msgstr "Partitionstyp?"
+
+#: parted/parted.c:580 parted/parted.c:766
+msgid "Partition name?"
+msgstr "Partitionsname?"
+
+#: parted/parted.c:588
+msgid "File system type?"
+msgstr "Dateisystemtyp?"
+
+#: parted/parted.c:594 parted/parted.c:1342
+msgid "Start?"
+msgstr "Anfang?"
+
+#: parted/parted.c:596 parted/parted.c:1344
+msgid "End?"
+msgstr "Ende?"
+
+#: parted/parted.c:661
+#, fuzzy, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s.%s"
+msgstr ""
+"Sie wollen eine Partition von %s bis %s. Das Beste, was Parted bieten kann, "
+"ist von %s nach %s. Ist das in Ordnung?"
+
+#: parted/parted.c:666
+msgid ""
+"\n"
+"Is this still acceptable to you?"
+msgstr ""
+
+#: parted/parted.c:688
+msgid "The resulting partition is not properly aligned for best performance."
+msgstr ""
+
+#: parted/parted.c:763 parted/parted.c:1383 parted/parted.c:1455
+#: parted/parted.c:1489
+msgid "Partition number?"
+msgstr "Partitionsnummer?"
+
+#: parted/parted.c:841
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d.  Each cylinder is %s.\n"
+msgstr ""
+"BIOS Zylinder-, Kopf-, Sektor-Geometrie: %d, %d, %d. Jeder Zylinder ist %s "
+"groß.\n"
+
+#: parted/parted.c:881
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr "Modell: %s (%s)\n"
+
+#: parted/parted.c:883
+#, c-format
+msgid "Disk %s: %s\n"
+msgstr "Festplatte  %s:  %s\n"
+
+#: parted/parted.c:884
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr "Sektorgröße (logisch/physisch): %lldB/%lldB\n"
+
+#: parted/parted.c:896
+#, c-format
+msgid "Partition Table: %s\n"
+msgstr "Partitionstabelle: %s\n"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Number"
+msgstr "Nummer"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Start"
+msgstr "Anfang"
+
+#: parted/parted.c:1008 parted/parted.c:1011
+msgid "End"
+msgstr "Ende"
+
+#: parted/parted.c:1011
+msgid "Size"
+msgstr "Größe"
+
+#: parted/parted.c:1015
+msgid "Type"
+msgstr "Typ"
+
+#: parted/parted.c:1017
+msgid "File system"
+msgstr "Dateisystem"
+
+#: parted/parted.c:1020
+msgid "Name"
+msgstr "Name"
+
+#: parted/parted.c:1022
+msgid "Flags"
+msgstr "Flags"
+
+#: parted/parted.c:1079
+msgid "Free Space"
+msgstr "Freier Platz"
+
+#: parted/parted.c:1241
+#, c-format
+msgid ""
+"A %s %s partition was found at %s -> %s.  Do you want to add it to the "
+"partition table?"
+msgstr ""
+"Eine %s %s-Partition wurde bei %s -> %s gefunden. Wollen Sie diese Partition "
+"zur Partitionstabelle hinzufügen?"
+
+#: parted/parted.c:1280
+msgid "searching for file systems"
+msgstr "Suche nach Dateisystemen"
+
+#: parted/parted.c:1408
+msgid "New device?"
+msgstr "Neues Gerät?"
+
+#: parted/parted.c:1453
+msgid "alignment type(min/opt)"
+msgstr ""
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d aligned\n"
+msgstr ""
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d not aligned\n"
+msgstr ""
+
+#: parted/parted.c:1491
+msgid "Flag to Invert?"
+msgstr "Umzukehrendes Flag?"
+
+#: parted/parted.c:1496
+msgid "New state?"
+msgstr "Neuer Zustand?"
+
+#: parted/parted.c:1533
+msgid "Unit?"
+msgstr "Einheit?"
+
+#: parted/parted.c:1651
+#, fuzzy
+msgid "align-check"
+msgstr "Prüfen"
+
+#: parted/parted.c:1654
+msgid ""
+"align-check TYPE N                        check partition N for TYPE(min|"
+"opt) alignment"
+msgstr ""
+
+#: parted/parted.c:1662
+msgid "help"
+msgstr "help"
+
+#: parted/parted.c:1665
+msgid ""
+"help [COMMAND]                           print general help, or help on "
+"COMMAND"
+msgstr ""
+"help [KOMMANDO]                          Allgemeine Hilfe, oder Hilfe zu "
+"KOMMANDO"
+
+#: parted/parted.c:1671
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:1671
+msgid "mktable"
+msgstr "mktable"
+
+#: parted/parted.c:1674
+msgid ""
+"mklabel,mktable LABEL-TYPE               create a new disklabel (partition "
+"table)"
+msgstr ""
+"mklabel,mktable LABEL-TYP                Neues Disklabel (Partitionstabelle) "
+"erzeugen"
+
+#: parted/parted.c:1680
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:1683
+msgid "mkpart PART-TYPE [FS-TYPE] START END     make a partition"
+msgstr "mkpart PART-TYP [FS-TYP] ANFANG ENDE    Partition erzeugen"
+
+#: parted/parted.c:1689
+msgid ""
+"'mkpart' makes a partition without creating a new file system on the "
+"partition.  FS-TYPE may be specified to set an appropriate partition ID.\n"
+msgstr ""
+"'mkpart' erzeugt eine Partition ohne ein neues Dateisystem auf der Partition "
+"zu erzeugen. FS-TYP kann angegeben werden, um eine geeignete Partitions-ID "
+"zu setzen.\n"
+
+#: parted/parted.c:1694
+msgid "name"
+msgstr "name"
+
+#: parted/parted.c:1697
+msgid "name NUMBER NAME                         name partition NUMBER as NAME"
+msgstr ""
+"name NUMMER NAME                         Partition NUMMER mit NAME benennen"
+
+#: parted/parted.c:1702
+msgid "print"
+msgstr "print"
+
+#: parted/parted.c:1705
+msgid ""
+"print [devices|free|list,all|NUMBER]     display the partition table, "
+"available devices, free space, all found partitions, or a particular "
+"partition"
+msgstr ""
+"print [devices|free|list,all|NUMMER]     Partitionstabelle, verfügbare "
+"Geräte, freien Speicher, alle Paritionen oder eine bestimmte Partition "
+"anzeigen"
+
+#: parted/parted.c:1710
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+"Ohne Argumente zeigt 'print' die komplette Partitionstabelle an. Mit den "
+"folgenden Argumenten verrichtet es die zahlreichen anderen Aktionen.\n"
+
+#: parted/parted.c:1712
+msgid "  devices   : display all active block devices\n"
+msgstr "  devices   : zeigt alle aktiven blockorientierten Geräte an\n"
+
+#: parted/parted.c:1713
+msgid ""
+"  free      : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+"  free      : zeigt Informationen über freien, unpartitionierten Platz auf "
+"dem aktuellen blockorientierten Gerät an\n"
+
+#: parted/parted.c:1715
+msgid ""
+"  list, all : display the partition tables of all active block devices\n"
+msgstr ""
+"  list, all : anzeigen der Partitionstabellen aller aktiven "
+"blockorientierten Geräte\n"
+
+#: parted/parted.c:1716
+msgid ""
+"  NUMBER    : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+"  NUMMER    : Detailiertere Informationen über diese Partition anzeigen\n"
+
+#: parted/parted.c:1721
+msgid "quit"
+msgstr "quit"
+
+#: parted/parted.c:1724
+msgid "quit                                     exit program"
+msgstr "quit                                     Programm beenden"
+
+#: parted/parted.c:1729
+msgid "rescue"
+msgstr "rescue"
+
+#: parted/parted.c:1732
+msgid ""
+"rescue START END                         rescue a lost partition near START "
+"and END"
+msgstr ""
+"rescue ANFANG ENDE                       Eine verlorene Partitionen zwischen "
+"ANFANG und ENDE retten"
+
+#: parted/parted.c:1738
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:1741
+msgid "rm NUMBER                                delete partition NUMBER"
+msgstr "rm NUMMER                                Partion NUMMER löschen"
+
+#: parted/parted.c:1746
+msgid "select"
+msgstr "select"
+
+#: parted/parted.c:1749
+msgid "select DEVICE                            choose the device to edit"
+msgstr ""
+"select GERÄT                             Wählen Sie ein GERÄT zur Bearbeitung"
+
+#: parted/parted.c:1754
+msgid "set"
+msgstr "set"
+
+#: parted/parted.c:1757
+msgid ""
+"set NUMBER FLAG STATE                    change the FLAG on partition NUMBER"
+msgstr ""
+"set NUMMER FLAG STATUS                   ändern des FLAGs auf der Partition "
+"NUMMER"
+
+#: parted/parted.c:1763
+msgid "toggle"
+msgstr "toggle"
+
+#: parted/parted.c:1766
+msgid ""
+"toggle [NUMBER [FLAG]]                   toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+"toggle [NUMMER [FLAG]]                   umschalten des FLAGs von Partition "
+"NUMMER"
+
+#: parted/parted.c:1772
+msgid "unit"
+msgstr "unit"
+
+#: parted/parted.c:1775
+msgid "unit UNIT                                set the default unit to UNIT"
+msgstr ""
+"unit EINHEIT                             die Standardgröße auf EINHEIT setzen"
+
+#: parted/parted.c:1780
+msgid "version"
+msgstr "version"
+
+#: parted/parted.c:1783
+msgid ""
+"version                                  display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+"version                                  zeigt die Versions- und Copyright-"
+"Informationen von GNU Parted an"
+
+#: parted/parted.c:1787
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+"'version' zeigt die Versions- und Copyright-Informationen zu dieser Kopie "
+"von GNU Parted an\n"
+
+#: parted/parted.c:1855
+#, fuzzy, c-format
+msgid "Usage: %s [-hlmsv] [-a<align>] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr "Aufruf: %s [-hlmsv] [GERÄT [KOMMANDO [PARAMETER]]...]\n"
+
+#: parted/parted.c:1899
+msgid "No device found"
+msgstr "Kein Gerät gefunden"
+
+#: parted/parted.c:1936
+msgid "WARNING: You are not superuser.  Watch out for permissions."
+msgstr "WARNUNG: Sie sind nicht root. Achten Sie auf Ihre Rechte."
+
+#: parted/parted.c:1974
+msgid "You may need to update /etc/fstab.\n"
+msgstr "Möglicherweise müssen Sie /etc/fstab anpassen.\n"
+
+#: parted/ui.c:162
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+"Willkommen zu GNU Parted! Geben Sie 'help' ein, um eine Liste der "
+"verfügbaren Kommados zu erhalten.\n"
+
+#: parted/ui.c:165
+msgid ""
+"Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]\n"
+"Apply COMMANDs with PARAMETERS to DEVICE.  If no COMMAND(s) are given, run "
+"in\n"
+"interactive mode.\n"
+msgstr ""
+"Aufruf: parted [OPTION]... [GERÄT [KOMMANDO [PARAMETER]...]...]\n"
+"KOMMANDOs mit PARAMETERn für GERÄT ausführen. Wenn keine KOMMANDOs angegeben "
+"sind,\n"
+" interaktiv arbeiten.\n"
+
+#: parted/ui.c:170
+#, c-format
+msgid ""
+"\n"
+"\n"
+"You found a bug in GNU Parted! Here's what you have to do:\n"
+"\n"
+"Don't panic! The bug has most likely not affected any of your data.\n"
+"Help us to fix this bug by doing the following:\n"
+"\n"
+"Check whether the bug has already been fixed by checking\n"
+"the last version of GNU Parted that you can find at:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Please check this version prior to bug reporting.\n"
+"\n"
+"If this has not been fixed yet or if you don't know how to check,\n"
+"please visit the GNU Parted website:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"for further information.\n"
+"\n"
+"Your report should contain the version of this release (%s)\n"
+"along with the error message below, the output of\n"
+"\n"
+"\tparted DEVICE unit co print unit s print\n"
+"\n"
+"and the following history of commands you entered.\n"
+"Also include any additional information about your setup you\n"
+"consider important.\n"
+msgstr ""
+"\n"
+"\n"
+"Sie haben einen Fehler in GNU Parted gefunden! Hier steht, was Sie tun "
+"sollten:\n"
+"\n"
+"Bleiben Sie ruhig! Der Fehler sollte Ihre Daten nicht beeinträchtigt haben.\n"
+"Helfen Sie uns, den Fehler zu beseitigen, indem Sie folgendes tun:\n"
+"\n"
+"Überprüfen Sie, ob der Fehler bereits ausgebesert wurde, indem Sie die \n"
+"neueste Version von GNU Parted verwenden:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Bitte überprüfen Sie diese Version, bevor Sie einen Fehlerbericht "
+"einreichen.\n"
+"\n"
+"Falls der Fehler noch nicht beseitigt sein sollte, oder falls Sie nicht "
+"wissen sollten, wie Sie das überprüfen soll,\n"
+" besuchen Sie bitte die GNU Parted- Webseite:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"für weitere Informationen.\n"
+"\n"
+"Ihr Bericht sollte die Version dieser Fregabe beinhalten (%s),\n"
+"die untenstehende Fehlermeldung und die Ausgabe von \n"
+"\n"
+"\tparted GERÄT unit co print unit s print\n"
+"\n"
+"und die folgende Befehlsgeschichte, die sie eingegeben haben.\n"
+"Nehmen Sie auch noch weitere Informationen über Ihr System auf, die Sie als "
+"wichtig empfinden.\n"
+
+#: parted/ui.c:291
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+"\n"
+"Befehlsgeschichte:\n"
+
+#: parted/ui.c:354
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+"\n"
+"Fehler: SEGV_MAPERR (Adresse nicht an ein Objekt gebunden)\n"
+
+#: parted/ui.c:360
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+"\n"
+"Fehler: SEGV_ACCERR (Ungültige Berechtigung für gebundenes Objekt)\n"
+
+#: parted/ui.c:365
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+"\n"
+"Fehler: Ein genereller SIGSEGV-Signal wurde empfangen.\n"
+
+#: parted/ui.c:389
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+"\n"
+"Fehler: FPE_INTDIV (Ganzzahl: Division durch Null)"
+
+#: parted/ui.c:394
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+"\n"
+"Fehler: FPE_INTOVF (Ganzzahl: Overflow)"
+
+#: parted/ui.c:399
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+"\n"
+"Fehler: FPE_FLTDIV (Fließkommazahl: Division durch Null)"
+
+#: parted/ui.c:404
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+"\n"
+"Fehler: FPE_FLTOVF (Fließkommazahl: Overflow)"
+
+#: parted/ui.c:409
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+"\n"
+"Fehler: FPE_FLTUND (Fließkommazahl: Underflow)"
+
+#: parted/ui.c:414
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+"\n"
+"Fehler: FPE_FLTRES (Fließkommazahl ungenaues Ergebnis)"
+
+#: parted/ui.c:419
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+"\n"
+"Fehler: FPE_FLTINV (Fließkommazahl: ungültige Operation)"
+
+#: parted/ui.c:424
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+"\n"
+"Fehler: FPE_FLTSUB (Fließkommazahl: Index außerhalb des zulässigen Bereichs)"
+
+#: parted/ui.c:429
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+"\n"
+"Fehler: Ein generelles SIGFPE-Signal wurde empfangen."
+
+#: parted/ui.c:453
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+"\n"
+"Fehler: ILL_ILLOPC (Nicht erlaubter Opcode)"
+
+#: parted/ui.c:458
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+"\n"
+"Fehler: ILL_ILLOPN (Nicht erlaubter Operand)"
+
+#: parted/ui.c:463
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+"\n"
+"Fehler: ILL_ILLADR (Nicht erlaubter Adressierungsmodus)"
+
+#: parted/ui.c:468
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+"\n"
+"Fehler: ILL_ILLTRP (Nicht erlaubte Falle)"
+
+#: parted/ui.c:473
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+"\n"
+"Fehler: ILL_PRVOPC (Privilegierter Opcode)"
+
+#: parted/ui.c:478
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+"\n"
+"Fehler: ILL_PRVREG (Privilegiertes Register)"
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+"\n"
+"Fehler: ILL_COPROC (Coprozessor-Fehler)"
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+"\n"
+"Fehler: ILL_BADSTK (Interner Stack-Fehler)"
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+"\n"
+"Fehler: Ein generelles SIGILL-Signal wurde empfangen."
+
+#: parted/ui.c:891
+#, c-format
+msgid "invalid token: %s"
+msgstr "Unbekanntes Zeichen: %s"
+
+#: parted/ui.c:1048
+msgid "Expecting a partition number."
+msgstr "Es wird eine Partitionsnummer erwartet."
+
+#: parted/ui.c:1057
+msgid "Partition doesn't exist."
+msgstr "Die Partition existiert nicht."
+
+#: parted/ui.c:1077
+msgid "Expecting a file system type."
+msgstr "Es wird ein Dateisystemtyp erwartet."
+
+#: parted/ui.c:1084
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Unbekannter Dateisystemtyp \"%s\"."
+
+#: parted/ui.c:1105
+msgid "Expecting a disk label type."
+msgstr "Es wird ein Disklabeltyp erwartet."
+
+#: parted/ui.c:1203
+msgid "Can't create any more partitions."
+msgstr "Kann keine weitere Partition erzeugen."
+
+#: parted/ui.c:1213
+msgid "Expecting a partition type."
+msgstr "Es wird ein Partitionstyp erwartet."
+
+#: parted/ui.c:1361
+msgid "on"
+msgstr "an"
+
+#: parted/ui.c:1362
+msgid "off"
+msgstr "aus"
+
+#: parted/ui.c:1379
+msgid "optimal"
+msgstr ""
+
+#: parted/ui.c:1380
+msgid "minimal"
+msgstr ""
+
+#: parted/ui.c:1513
+msgid "OPTIONs:"
+msgstr "OPTIONen:"
+
+#: parted/ui.c:1518
+msgid "COMMANDs:"
+msgstr "KOMMANDOs:"
+
+#: parted/ui.c:1521
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Report bugs to %s\n"
+msgstr ""
+"\n"
+"Fehler an <%s> berichten.\n"
+
+#: parted/ui.c:1528
+#, c-format
+msgid "Using %s\n"
+msgstr "Verwende %s\n"
+
+#: parted/ui.c:1602
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr "Dieses Kommando macht im nicht-interaktiven Modus keinen Sinn.\n"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]\n"
+#~ "  or:  %s DEVICE MINOR\n"
+#~ msgstr ""
+#~ "Aufruf: %s [OPTION]\n"
+#~ "  oder:  %s GERÄT NUMMER\n"
+
+#~ msgid ""
+#~ "Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Unbenutzten Speicherplatz auf einer FAT-Partiton löschen (ein GNU Parted-"
+#~ "Test-Programm)\n"
+#~ "\n"
+
+#~ msgid "      --help     display this help and exit\n"
+#~ msgstr "      --help     diese Hilfe anzeigen und beenden\n"
+
+#~ msgid "      --version  output version information and exit\n"
+#~ msgstr "      --version  Versionsangaben ausgeben und beenden\n"
+
+#~ msgid "too few arguments"
+#~ msgstr "zu wenige Argumente"
+
+#~ msgid "too many arguments"
+#~ msgstr "Zu viele falsche Argumente"
+
+#, fuzzy
+#~ msgid "invalid minor device number: %s"
+#~ msgstr "Unbekanntes Zeichen: %s"
+
+#~ msgid "Could not detect file system."
+#~ msgstr "Dateisystem wurde nicht erkannt."
+
+#~ msgid "The file system is bigger than its volume!"
+#~ msgstr "Das Dateisystem ist größer als sein Datenträger!"
+
+#~ msgid "Support for opening %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Die Unterstützung für das Öffnen von Dateisystemen ist für %s noch nicht "
+#~ "implementiert."
+
+#~ msgid "Support for creating %s file systems is not implemented yet."
+#~ msgstr "Erzeugung von Dateisystemen ist für %s noch nicht implementiert."
+
+#~ msgid "Support for checking %s file systems is not implemented yet."
+#~ msgstr "Überprüfung von Dateisystemen ist für %s noch nicht implementiert."
+
+#~ msgid "raw block copying"
+#~ msgstr "Kopieren von Blöcken vom Typ \"raw\""
+
+#~ msgid "growing file system"
+#~ msgstr "Dateisystem wird vergrößert"
+
+#~ msgid "Can't copy onto an overlapping partition."
+#~ msgstr "Auf überlappende Partitionen kann nicht kopiert werden."
+
+#~ msgid ""
+#~ "Direct support for copying file systems is not yet implemented for %s.  "
+#~ "However, support for resizing is implemented.  Therefore, the file system "
+#~ "can be copied if the new partition is at least as big as the old one.  "
+#~ "So, either shrink the partition you are trying to copy, or copy to a "
+#~ "bigger partition."
+#~ msgstr ""
+#~ "Direkte Unterstützung für das Kopieren von Dateisystemen ist für %s noch "
+#~ "nicht implementiert, Größenänderungen sind aber unterstützt. Deshalb kann "
+#~ "das Dateisystem kopiert werden, wenn die neue Partition mindestens so "
+#~ "groß ist, wie die alte. Also sollten Sie entweder die Partition, die Sie "
+#~ "kopieren wollen, verkleinern, oder auf eine größere Partition kopieren."
+
+#~ msgid "Support for copying %s file systems is not implemented yet."
+#~ msgstr "Kopieren von Dateisystemen ist für %s noch nicht implementiert."
+
+#~ msgid "Support for resizing %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Größenänderung von Dateisystemen ist für %s noch nicht implementiert."
+
+#~ msgid "creating"
+#~ msgstr "erstellen"
+
+#~ msgid "The file system is in an invalid state.  Perhaps it is mounted?"
+#~ msgstr ""
+#~ "Das Dateisystem hat einen ungültigen Status. Ist es vielleicht "
+#~ "eingebunden?"
+
+#~ msgid "The file system is in old (unresizeable) format."
+#~ msgstr ""
+#~ "Das Dateisystem ist in einem alten (nicht vergrößerbaren/verkleinerbaren) "
+#~ "Format."
+
+#~ msgid "Invalid free blocks count.  Run reiserfsck --check first."
+#~ msgstr ""
+#~ "Ungültige Anzahl freier Blöcke. Führen Sie zuerst reiserfsck --check aus."
+
+#~ msgid "checking"
+#~ msgstr "prüfen"
+
+#~ msgid "Reiserfs tree seems to be corrupted.  Run reiserfsck --check first."
+#~ msgstr ""
+#~ "Der Reiserfs-Baum scheint beschädigt zu sein. Führen Sie zuerst "
+#~ "reiserfsck --check aus."
+
+#~ msgid ""
+#~ "The reiserfs file system passed a basic check.  For a more comprehensive "
+#~ "check, run reiserfsck --check."
+#~ msgstr ""
+#~ "Das Reiserfs-Dateisystem hat die Basisprüfung bestanden. Um eine "
+#~ "ausführlichere Prüfung auszuführen, führen Sie reiserfsck --check aus."
+
+#~ msgid "Sorry, can't move the start of reiserfs partitions yet."
+#~ msgstr ""
+#~ "Leider kann der Anfang von Reiserfs-Partitionen noch nicht verschoben "
+#~ "werden."
+
+#~ msgid "Couldn't reopen device abstraction layer for read/write."
+#~ msgstr ""
+#~ "Die Abstraktionsschicht kann nicht erneut zum lesen/schreiben geöffnet "
+#~ "werden."
+
+#~ msgid "shrinking"
+#~ msgstr "verkleinern"
+
+#~ msgid "expanding"
+#~ msgstr "vergrößern"
+
+#~ msgid "Couldn't create reiserfs device abstraction handler."
+#~ msgstr ""
+#~ "Der Reiserfs-Gerät-Abstraktions-Handhaber konnte nicht erstellt werden."
+
+#~ msgid "Device is too small for %lu blocks."
+#~ msgstr "Das Gerät ist für %lu Blöcke zu klein."
+
+#~ msgid "copying"
+#~ msgstr "kopieren"
+
+#~ msgid "Couldn't resolve symbol %s.  Error: %s."
+#~ msgstr "Das Symbol %s konnte nicht aufgelöst werden. Fehler: %s."
+
+#~ msgid "GNU Parted found an invalid libreiserfs library."
+#~ msgstr "GNU Parted hat eine ungültige libreiserfs-Bibliothek gefunden."
+
+#~ msgid ""
+#~ "GNU Parted has detected libreiserfs interface version mismatch.  Found %d-"
+#~ "%d, required %d. ReiserFS support will be disabled."
+#~ msgstr ""
+#~ "GNU Parted hat einen Versionskonflikt mit dem libreiserfs-Interface "
+#~ "festgestellt. Gefunden: %d-%d, benötigt: %d. ReiserFS-Unterstützung wird "
+#~ "deaktiviert."
+
+#~ msgid "Inconsistent group descriptors!"
+#~ msgstr "Inkonsistente Gruppendeskriptoren!"
+
+#~ msgid "File system full!"
+#~ msgstr "Dateisystem voll!"
+
+#~ msgid "Invalid superblock.  Are you sure this is an ext2 file system?"
+#~ msgstr ""
+#~ "Ungültiger Superblock. Sind Sie sicher, dass das ein ext2-Dateisystem ist?"
+
+#~ msgid "File system has errors!  You should run e2fsck."
+#~ msgstr "Das Dateisystem hat Fehler! Sie sollten e2fsck aufrufen."
+
+#~ msgid ""
+#~ "File system was not cleanly unmounted!  You should run e2fsck.  Modifying "
+#~ "an unclean file system could cause severe corruption."
+#~ msgstr ""
+#~ "Das Dateisystem wurde nicht sauber ausgehängt! Sie sollten e2fsck "
+#~ "ausführen. Das Bearbeiten eines unsauberen Dateisystems kann zu schweren "
+#~ "Beschädigungen führen."
+
+#~ msgid "Error allocating buffer cache."
+#~ msgstr "Fehler beim Belegen des Puffercaches."
+
+#~ msgid ""
+#~ "Found an inode with a incorrect link count.  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "I-Node mit ungültigem Linkzähler gefunden. Führen Sie besser zuerst "
+#~ "e2fsck aus!"
+
+#~ msgid "Not enough free inodes!"
+#~ msgstr "Nicht genügend freie I-Nodes!"
+
+#~ msgid "File system is too full to remove a group!"
+#~ msgstr "Dateisystem ist zu voll, um eine Gruppe entfernen zu können!"
+
+#~ msgid "File system has too many allocated inodes to remove a group!"
+#~ msgstr ""
+#~ "Dateisystem hat zu viele belegte I-Nodes, um eine Gruppe entfernen zu "
+#~ "können!"
+
+#~ msgid "adding groups"
+#~ msgstr "Gruppen hinzufügen"
+
+#~ msgid "Your file system is too full to resize it to %i blocks.  Sorry."
+#~ msgstr ""
+#~ "Ihr Dateisystem ist zu voll, um es auf %i Blöcke verkleinern zu können. "
+#~ "Entschuldigung."
+
+#~ msgid ""
+#~ "Your file system has too many occupied inodes to resize it to %i blocks.  "
+#~ "Sorry."
+#~ msgstr ""
+#~ "Ihr Dateisystem hat zu viele belegt I-Nodes, um es auf %i Blöcke "
+#~ "reduzieren zu können. Entschuldigung."
+
+#~ msgid "File system was not cleanly unmounted!  You should run e2fsck."
+#~ msgstr ""
+#~ "Das Dateisystem wurde nicht sauber ausgehängt! Sie sollten e2fsck "
+#~ "ausführen."
+
+#~ msgid ""
+#~ "The file system has the 'dir_index' feature enabled.  Parted can only "
+#~ "resize the file system if it disables this feature.  You can enable it "
+#~ "later by running 'tune2fs -O dir_index DEVICE' and then 'e2fsck -fD "
+#~ "DEVICE'."
+#~ msgstr ""
+#~ "Das Dateisystem hat 'dir_index' eingeschaltet. Parted kann nur die Größe "
+#~ "des Dateisystems ändern, wenn diese Eigenschaft ausgeschaltet ist. Sie "
+#~ "können die Fähigkeit später mit 'tune2fs -O dir_index GERÄT' und dann "
+#~ "'e2fsck -fD GERÄT' wieder einschalten."
+
+#~ msgid ""
+#~ "A resize operation on this file system will use EXPERIMENTAL code\n"
+#~ "that MAY CORRUPT it (although no one has reported any such damage yet).\n"
+#~ "You should at least backup your data first, and run 'e2fsck -f' "
+#~ "afterwards."
+#~ msgstr ""
+#~ "Eine Größenänderungsoperation an diesem Dateisystem wird EXPERIMENTELLEN "
+#~ "Code verwenden,\n"
+#~ " der es beschädigen kann (obwohl niemand bisher eine solche Beschädigung "
+#~ "gemeldet hat).\n"
+#~ "Sie sollten zumindest zuvor ihre Daten sichern und danach 'e2fsck -f' "
+#~ "ausführen."
+
+#~ msgid "Cross-linked blocks found!  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "Querverbundene Blöcke gefunden! Führen Sie lieber zuerst e2fsck aus!"
+
+#~ msgid "Block %i has no reference?  Weird."
+#~ msgstr "Block %i hat keine Referenz? Seltsam."
+
+#~ msgid "Block %i shouldn't have been marked (%d, %d)!"
+#~ msgstr "Block %i dürfte nicht markiert sein (%d, %d)!"
+
+#~ msgid ""
+#~ "The ext2 file system passed a basic check.  For a more comprehensive "
+#~ "check, use the e2fsck program."
+#~ msgstr ""
+#~ "Das ext2-Dateisystem hat die Basisprüfung bestanden. Für eine "
+#~ "ausführlichere Prüfungverwenden Sie bitte e2fsck."
+
+#~ msgid "Sorry, can't move the start of ext2 partitions yet!"
+#~ msgstr ""
+#~ "Leider kann der Anfang von ext2-Partitionen noch nicht verschoben werden."
+
+#~ msgid "Couldn't flush buffer cache!"
+#~ msgstr "Der Puffercache konnte nicht geleert werden."
+
+#~ msgid "writing per-group metadata"
+#~ msgstr "Schreiben der Meta-Daten pro Gruppe"
+
+#~ msgid "File system too small for ext2."
+#~ msgstr "Das Dateisystem ist für ext2 zu klein."
+
+#~ msgid ""
+#~ "You need %s of free disk space to shrink this partition to this size.  "
+#~ "Currently, only %s is free."
+#~ msgstr ""
+#~ "Sie benötigen %s freien Platz, um diese Partition auf diese Größe zu "
+#~ "verkleinern.Momentan ist nur %s frei."
+
+#~ msgid ""
+#~ "Cluster start delta = %d, which is not a multiple of the cluster size %d."
+#~ msgstr "Clusteranfang delta = %d ist kein Vielfaches der Clustergröße %d."
+
+#~ msgid "Partition too big/small for a %s file system."
+#~ msgstr "Die Partition ist für ein %s-Dateisystem zu groß/klein."
+
+#~ msgid ""
+#~ "The FATs don't match.  If you don't know what this means, then select "
+#~ "cancel, run scandisk on the file system, and then come back."
+#~ msgstr ""
+#~ "Die FATs stimmen nicht überein. Wenn Sie nicht wissen, was das bedeutet, "
+#~ "brechen Sie ab, rufen Scandisk für das Dateisystem auf und versuchen es "
+#~ "nochmal."
+
+#~ msgid "There are no possible configurations for this FAT type."
+#~ msgstr "Es gibt keine möglichen Konfigurationen für diesen FAT-Typ."
+
+#~ msgid ""
+#~ "File system doesn't have expected sizes for Windows to like it.  Cluster "
+#~ "size is %dk (%dk expected); number of clusters is %d (%d expected); size "
+#~ "of FATs is %d sectors (%d expected)."
+#~ msgstr ""
+#~ "Das Dateisystem hat nicht die Größe, die Windows mag. Die Clustergröße "
+#~ "ist %dk (%dk erwartet); die Clusterzahl ist %d (%d erwartet); die FAT-"
+#~ "Größe ist %d Sektoren (%d erwartet)."
+
+#~ msgid ""
+#~ "File system is reporting the free space as %d clusters, not %d clusters."
+#~ msgstr "Dateisystem meldet freien Platz als %d Cluster, nicht %d Cluster."
+
+#~ msgid ""
+#~ "There's not enough room in the root directory for all of the files.  "
+#~ "Either cancel, or ignore to lose the files."
+#~ msgstr ""
+#~ "Es gibt im Root-Verzeichnis nicht genügend Platz für alle Dateien. "
+#~ "Entweder abbrechen, oder ignorieren und die Dateien verlieren."
+
+#~ msgid "Error writing to the root directory."
+#~ msgstr "Fehler beim Schreiben in das Root-Verzeichnis."
+
+#~ msgid ""
+#~ "If you leave your file system as FAT16, then you will have no problems."
+#~ msgstr ""
+#~ "Wenn Sie Ihr Dateisystem als FAT16 lassen, werden Sie keine Probleme "
+#~ "haben."
+
+#~ msgid ""
+#~ "If you convert to FAT16, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual)."
+#~ msgstr ""
+#~ "Wenn Sie in FAT16 konvertieren und MS-Windows auf dieser Partition "
+#~ "installiert ist, müssen Sie den MS-Windows-Bootlader neu installieren. "
+#~ "Wenn Sie das tun wollen, sollten Sie das Handbuch von Parted lesen (oder "
+#~ "das Handbuch Ihrer Distribution)."
+
+#~ msgid ""
+#~ "If you leave your file system as FAT32, then you will not introduce any "
+#~ "new problems."
+#~ msgstr ""
+#~ "Wenn Sie Ihr Dateisystem als FAT32 lassen, werden Sie keine neuen "
+#~ "Probleme herbeiführen."
+
+#~ msgid ""
+#~ "If you convert to FAT32, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual).  Also, converting to FAT32 will make the file system unreadable "
+#~ "by MS DOS, MS Windows 95a, and MS Windows NT."
+#~ msgstr ""
+#~ "Wenn Sie zu FAT32 konvertieren und MS-Windows auf dieser Partition "
+#~ "installiert ist, müssen Sie den MS-Windows-Bootlader neu installieren. "
+#~ "Wenn Sie das tun wollen, sollten Sie das Handbuch von Parted lesen (oder "
+#~ "das Ihrer Distribution). Außerdem kann nach einer Konvertierung zu FAT32 "
+#~ "das Dateisystem nicht mehr von MS-DOS, MS-Windows 95a und MS-Windows NT "
+#~ "gelesen werden."
+
+#~ msgid "%s  %s  %s"
+#~ msgstr "%s  %s  %s"
+
+#~ msgid "Would you like to use FAT32?"
+#~ msgstr "Wollen Sie FAT32 verwenden?"
+
+#~ msgid "%s  %s"
+#~ msgstr "%s  %s"
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT16."
+#~ msgstr ""
+#~ "Das Dateisystem kann nur durch Konvertierung zu FAT16 in der Größe "
+#~ "verändert werden."
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT32."
+#~ msgstr ""
+#~ "Das Dateisystem kann nur durch Konvertierung zu FAT32 in der Größe "
+#~ "verändert werden."
+
+#~ msgid ""
+#~ "GNU Parted cannot resize this partition to this size.  We're working on "
+#~ "it!"
+#~ msgstr ""
+#~ "GNU Parted kann diese Partition nicht auf diese Größe verändern. Wir "
+#~ "arbeiten dran!"
+
+#~ msgid "Bad directory entry for %s: first cluster is the end of file marker."
+#~ msgstr ""
+#~ "Falscher Verzeichniseintrag für %s: Erster Cluster ist am Ende des "
+#~ "Dateimarkers."
+
+#~ msgid ""
+#~ "Bad FAT: unterminated chain for %s.  You should run dosfsck or scandisk."
+#~ msgstr ""
+#~ "Schlechte FAT: unbeendete Kette für %s. Sie sollten dosfsck oder Scandisk "
+#~ "ausführen."
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d outside file system in chain for %s.  You should run "
+#~ "dosfsck or scandisk."
+#~ msgstr ""
+#~ "Schlechte FAT: Cluster %d ist außerhalb des Dateisystems in Kette %s. Sie "
+#~ "sollten dosfsck oder Scandisk ausführen."
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d is cross-linked for %s.  You should run dosfsck or "
+#~ "scandisk."
+#~ msgstr ""
+#~ "Schlechte FAT: Cluster %d ist querverbunden für %s. Sie sollten dosfsck "
+#~ "oder Scandisk ausführen."
+
+#~ msgid "%s is %dk, but it has %d clusters (%dk)."
+#~ msgstr "%s ist %dk, hat aber %d Cluster (%dk)."
+
+#~ msgid ""
+#~ "The file %s is marked as a system file.  This means moving it could cause "
+#~ "some programs to stop working."
+#~ msgstr ""
+#~ "Die Datei %s ist als Systemdatei markiert. Das bedeutet, dass nach dem "
+#~ "Verschieben einige Programme nicht mehr funktionieren können."
+
+#~ msgid ""
+#~ "FAT %d media %x doesn't match the boot sector's media %x.  You should "
+#~ "probably run scandisk."
+#~ msgstr ""
+#~ "FAT %d Medium %x stimmt nicht mit dem Bootsektor von Medium %x überein. "
+#~ "Sie sollten Scandisk ausführen."
+
+#~ msgid "fat_table_set: cluster %ld outside file system"
+#~ msgstr "fat_table_set: Cluster %ld ist außerhalb des Dateisystems"
+
+#~ msgid "fat_table_get: cluster %ld outside file system"
+#~ msgstr "fat_table_get: Cluster %ld ist außerhalb des Dateisystems"
+
+#~ msgid "fat_table_alloc_cluster: no free clusters"
+#~ msgstr "fat_table_alloc_cluster: Keine freien Cluster"
+
+#~ msgid "Too many bad pages."
+#~ msgstr "Zu viele falsche Seiten."
+
+#~ msgid "The file system contains errors."
+#~ msgstr "Das Dateisystem enthält Fehler."
+
+#~ msgid "Bad blocks could not be read."
+#~ msgstr "Fehlerhafte Blöcke konnten nicht gelesen werden."
+
+#~ msgid ""
+#~ "Trying to register an extent starting at block 0x%X, but another one "
+#~ "already exists at this position.  You should check the file system!"
+#~ msgstr ""
+#~ "Es wurde versucht, einen erweiterten Anfang bei Block 0x%X zu "
+#~ "registrieren, aber es existiert bereits ein anderer an dieser Stelle. Sie "
+#~ "sollten das Dateisystem überprüfen lassen!"
+
+#~ msgid ""
+#~ "Trying to move an extent from block Ox%X to block Ox%X, but another one "
+#~ "already exists at this position.  This should not happen!"
+#~ msgstr ""
+#~ "Es wurde versucht, einen erweiterten Block von 0x%X nach 0X%X zu "
+#~ "verschieben, aber ein anderer existiert bereits an dieser Stelle. Das "
+#~ "sollte nicht passieren!"
+
+#~ msgid "Could not update the extent cache for HFS file with CNID %X."
+#~ msgstr ""
+#~ "Der erweiterte Cache der HFS-Datei mit der CNID %X konnte nicht "
+#~ "aktualisiert werden."
+
+#~ msgid "Trying to read HFS file with CNID %X behind EOF."
+#~ msgstr ""
+#~ "Die HFS-Datei mit der CNID %X kann nicht hinter dem Ende gelesen werden."
+
+#~ msgid "Could not find sector %lli of HFS file with CNID %X."
+#~ msgstr "Konnte den Sektor %lli der HFS-Datei mit der CNID %X nicht finden."
+
+#~ msgid "Trying to write HFS file with CNID %X behind EOF."
+#~ msgstr ""
+#~ "Die HFS-Datei mit der CNID %X kann nicht hinter dem Ende geschrieben "
+#~ "werden."
+
+#~ msgid "Could not update the extent cache for HFS+ file with CNID %X."
+#~ msgstr ""
+#~ "Der erweiterte Cache der HFS+-Datei mit der CNID %X konnte nicht "
+#~ "aktualisiert werden."
+
+#~ msgid "Trying to read HFS+ file with CNID %X behind EOF."
+#~ msgstr ""
+#~ "Die HFS+-Datei mit der CNID %X kann nicht hinter dem Ende gelesen werden."
+
+#~ msgid "Could not find sector %lli of HFS+ file with CNID %X."
+#~ msgstr "Konnte den Sektor %lli der HFS+-Datei mit der CNID %X nicht finden."
+
+#~ msgid "Trying to write HFS+ file with CNID %X behind EOF."
+#~ msgstr ""
+#~ "Die HFS+-Datei mit der CNID %X kann nicht hinter dem Ende geschrieben "
+#~ "werden."
+
+#~ msgid "Sorry, HFS cannot be resized that way yet."
+#~ msgstr ""
+#~ "Entschuldigung, HFS kann so noch nicht in der Größe verändert werden."
+
+#~ msgid "Data relocation has failed."
+#~ msgstr "Die Umlagerung der Daten ist fehlgeschlagen."
+
+#~ msgid "Data relocation left some data in the end of the volume."
+#~ msgstr ""
+#~ "Die Umlagerung der Daten hat einige Daten am Ende des Datenträgers "
+#~ "gelassen."
+
+#~ msgid "writing HFS Master Directory Block"
+#~ msgstr "Schreiben des HFS Master Directory Block"
+
+#~ msgid "No valid HFS[+X] signature has been found while opening."
+#~ msgstr "Beim Öffnen wurde keine gültige HFS[+X]-Signatur gefunden."
+
+#~ msgid "Version %d of HFS+ isn't supported."
+#~ msgstr "Die HFS+-Version %d ist nicht unterstützt."
+
+#~ msgid "Version %d of HFSX isn't supported."
+#~ msgstr "Die HFSX-Version %d ist nicht unterstützt."
+
+#~ msgid "Data relocation left some data at the end of the volume."
+#~ msgstr ""
+#~ "Die Umlagerung der Daten hat einige Daten am Ende des Datenträgers "
+#~ "gelassen."
+
+#~ msgid "Error while writing the allocation file."
+#~ msgstr "Fehler beim Schreiben der Belegungsdatei."
+
+#~ msgid "Error while writing the compatibility part of the allocation file."
+#~ msgstr "Fehler beim Schreiben des Verträglichkeitsteils der Belegungsdatei."
+
+#~ msgid "writing HFS+ Volume Header"
+#~ msgstr "Schreiben des HFS+-Datenträger-Kopfes"
+
+#~ msgid "An error occurred while looking for the mandatory bad blocks file."
+#~ msgstr ""
+#~ "Beim Suchen nach der notwendigen Datei, die schlechte Blöcke enthält, "
+#~ "trat ein Fehler auf."
+
+#~ msgid ""
+#~ "It seems there is an error in the HFS wrapper: the bad blocks file "
+#~ "doesn't contain the embedded HFS+ volume."
+#~ msgstr ""
+#~ "Es scheint, als wäre im HFS-Wrapper ein Fehler: die Datei der schlechten "
+#~ "Blöcke enthält nicht den eingebetteten HFS+-Datenträger."
+
+#~ msgid "Sorry, HFS+ cannot be resized that way yet."
+#~ msgstr "Entschuldigung, HFS+ kann so nicht in der Größe verändert werden."
+
+#~ msgid "shrinking embedded HFS+ volume"
+#~ msgstr "Verkleinern des eingebetteten HFS+-Datenträgers"
+
+#~ msgid "Resizing the HFS+ volume has failed."
+#~ msgstr "Verkleinern des HFS+-Datenträgers ist fehlgeschlagen."
+
+#~ msgid "shrinking HFS wrapper"
+#~ msgstr "Verkleinern des HFS-Wrappers"
+
+#~ msgid "Updating the HFS wrapper has failed."
+#~ msgstr "Aktualisieren des HFS-Wrappers ist fehlgeschlagen."
+
+#~ msgid ""
+#~ "This is not a real %s check.  This is going to extract special low level "
+#~ "files for debugging purposes."
+#~ msgstr ""
+#~ "Das ist keine echte Prüfung von %s. Es werden spezielle Dateien einer "
+#~ "tiefen Ebene zu Fehlerbeseitigungszwecken extrahiert."
+
+#~ msgid "Bad block list header checksum."
+#~ msgstr "Prüfsummenfehler im Kopf der Liste der schlechten Blöcke."
+
+#~ msgid ""
+#~ "Invalid size of a transaction block while replaying the journal (%i "
+#~ "bytes)."
+#~ msgstr ""
+#~ "Ungültige Größe eines Vorgangsblocks während das Journal überprüft wurde "
+#~ "(%i Bytes)."
+
+#~ msgid ""
+#~ "Journal stored outside of the volume are not supported.  Try to "
+#~ "desactivate the journal and run Parted again."
+#~ msgstr ""
+#~ "Ein Journal außerhalb des Datenträgers ist nicht unterstützt. Versuchen "
+#~ "Sie, das Journal zu deaktivieren und führen Sie Parted dann erneut aus."
+
+#~ msgid "Journal offset or size is not multiple of the sector size."
+#~ msgstr "Journal-Abstand oder Größe ist kein Vielfaches der Sektorgröße."
+
+#~ msgid "Incorrect magic values in the journal header."
+#~ msgstr "Falsche Magic-Zahl im Kopf des Journals."
+
+#~ msgid "Journal size mismatch between journal info block and journal header."
+#~ msgstr ""
+#~ "Versatz der Größe des Journals zwischen Infoblock und dem Kopf des "
+#~ "Journals."
+
+#~ msgid "Some header fields are not multiple of the sector size."
+#~ msgstr "Einige Einträge im Kopf sind kein Vielfaches der Clustergröße."
+
+#~ msgid ""
+#~ "The sector size stored in the journal is not 512 bytes.  Parted only "
+#~ "supports 512 bytes length sectors."
+#~ msgstr ""
+#~ "Die im Journal gespeicherte Sektorgröße ist ungleich 512 Bytes. Parted "
+#~ "unterstützt nur Sektoren mit einer Länge von 512 Bytes."
+
+#~ msgid "Bad journal checksum."
+#~ msgstr "Schlechte Prüfsumme des Journals."
+
+#~ msgid ""
+#~ "The journal is not empty.  Parted must replay the transactions before "
+#~ "opening the file system.  This will modify the file system."
+#~ msgstr ""
+#~ "Das Journal ist nicht leer. Parted muss die Vorgänge überprüfen, bevor "
+#~ "das Dateisystem geöffnet werden kann. Das wird das Dateisystem verändern."
+
+#~ msgid ""
+#~ "The volume header or the master directory block has changed while "
+#~ "replaying the journal.  You should restart Parted."
+#~ msgstr ""
+#~ "Der Kopf des Datenträgers oder der Block des Hauptverzeichnisses hat sich "
+#~ "während dem Überprüfen der Vorgänge geändert. Sie sollten Parted "
+#~ "neustarten."
+
+#~ msgid "An extent has not been relocated."
+#~ msgstr "Eine Erweiterung wurde nicht umgelagert."
+
+#~ msgid ""
+#~ "A reference to an extent comes from a place it should not.  You should "
+#~ "check the file system!"
+#~ msgstr ""
+#~ "Ein Verweis einer Erweiterung kam von einem Ort, von des er nicht kommen "
+#~ "sollte. Sie sollten das Dateisystem überprüfen lassen!"
+
+#~ msgid "This HFS volume has no catalog file.  This is very unusual!"
+#~ msgstr ""
+#~ "Dieser HFS-Datenträger hat keine Katalog-Datei. Das ist sehr unüblich!"
+
+#~ msgid ""
+#~ "This HFS volume has no extents overflow file.  This is quite unusual!"
+#~ msgstr ""
+#~ "Dieser HFS-Datenträger hat keine Überlaufdatei für Erweiterungen. Das ist "
+#~ "schon ungewöhnlich!"
+
+#~ msgid ""
+#~ "The extents overflow file should not contain its own extents!  You should "
+#~ "check the file system."
+#~ msgstr ""
+#~ "Die Überlaufdatei der Erweiterungen sollte nicht seine eigenen "
+#~ "Erweiterungen enthalten! Sie sollten das Dateisystem überprüfen lassen."
+
+#~ msgid "Could not cache the file system in memory."
+#~ msgstr "Das Dateisystem konnte nicht zwischengespeichert werden."
+
+#~ msgid "Bad blocks list could not be loaded."
+#~ msgstr "Die Liste der schlechten Blöcke konnte nicht geladen werden."
+
+#~ msgid "An error occurred during extent relocation."
+#~ msgstr "Während der Umlagerung der Erweiterungen trat ein Fehler auf."
+
+#~ msgid "This HFS+ volume has no catalog file.  This is very unusual!"
+#~ msgstr ""
+#~ "Dieser HFS+-Datenträger hat keine Katalog-Datei. Das ist sehr "
+#~ "ungewöhnlich!"
+
+#~ msgid ""
+#~ "This HFS+ volume has no extents overflow file.  This is quite unusual!"
+#~ msgstr ""
+#~ "Dieser HFS-Datenträger hat keine Überlaufdatei für Erweiterungen. Das ist "
+#~ "schon ungewöhnlich!"
+
+#~ msgid "The partition must have one of the following FS-TYPEs: "
+#~ msgstr "Die Partition muss eines der folgenden FS-TYPe haben: "
+
+#~ msgid ""
+#~ "The existing file system will be destroyed and all data on the partition "
+#~ "will be lost. Do you want to continue?"
+#~ msgstr ""
+#~ "Das existierende Dateisystem wird zerstört und alle Daten in der "
+#~ "Partition werden gelöscht. Wollen Sie fortfahren?"
+
+#~ msgid "Source device?"
+#~ msgstr "Quellgerät?"
+
+#~ msgid "Source partition number?"
+#~ msgstr "Quellpartitionsnummer?"
+
+#~ msgid "Can't copy an extended partition."
+#~ msgstr "Eine erweiterte Partition kann nicht kopiert werden."
+
+#~ msgid "Destination partition number?"
+#~ msgstr "Zielpartitionsnummer?"
+
+#~ msgid ""
+#~ "An extended partition cannot hold a file system.  Did you want mkpart?"
+#~ msgstr ""
+#~ "Eine erweiterte Partition kann kein Dateisystem beinhalten. Wollten Sie "
+#~ "eine Partition erstellen (mkpart)?"
+
+#~ msgid "Can't move an extended partition."
+#~ msgstr "Eine erweiterte Partition kann nicht verschoben werden."
+
+#~ msgid "Can't move a partition onto itself.  Try using resize, perhaps?"
+#~ msgstr ""
+#~ "Die Partition kann nicht auf sich selbst verschoben werden. Vielleicht "
+#~ "wollen Sie eine Größenänderung (resize) versuchen?"
+
+#~ msgid "Minor: %d\n"
+#~ msgstr "Nummer: %d\n"
+
+#~ msgid "Flags: %s\n"
+#~ msgstr "Flags: %s\n"
+
+#~ msgid "File System: %s\n"
+#~ msgstr "Dateisystem: %s\n"
+
+#~ msgid "Size:         "
+#~ msgstr "Größe:         "
+
+#~ msgid "Minimum size: "
+#~ msgstr "Minimale Größe: "
+
+#~ msgid "Maximum size: "
+#~ msgstr "Maximale Größe: "
+
+#~ msgid "check"
+#~ msgstr "Prüfen"
+
+#~ msgid ""
+#~ "check NUMBER                             do a simple check on the file "
+#~ "system"
+#~ msgstr ""
+#~ "check NUMMER                             Einen einfachen Test auf dem "
+#~ "Dateisystem ausführen."
+
+#~ msgid "cp"
+#~ msgstr "cp"
+
+#~ msgid ""
+#~ "cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   copy file system to another "
+#~ "partition"
+#~ msgstr ""
+#~ "cp [VON-GERÄT] VON-NUMMER AUF-NUMMER   Dateisystem auf andere Partition "
+#~ "kopieren"
+
+#~ msgid "mkfs"
+#~ msgstr "mkfs"
+
+#, fuzzy
+#~ msgid ""
+#~ "mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on "
+#~ "partition NUMBER"
+#~ msgstr ""
+#~ "mkfs NUMMER FS-TYP                       Dateisystem FS-TYP auf Partition "
+#~ "NUMMER erzeugen"
+
+#~ msgid "mkpartfs"
+#~ msgstr "mkpartfs"
+
+#~ msgid ""
+#~ "mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file "
+#~ "system"
+#~ msgstr ""
+#~ "mkpartfs PART-TYP FS-TYP ANFANG ENDE     Partition mit Dateisystem "
+#~ "erzeugen"
+
+#~ msgid "move"
+#~ msgstr "move"
+
+#~ msgid "move NUMBER START END                    move partition NUMBER"
+#~ msgstr ""
+#~ "move NUMMER ANFANG ENDE                  Partition NUMBER verschieben"
+
+#~ msgid "resize"
+#~ msgstr "resize"
+
+#~ msgid ""
+#~ "resize NUMBER START END                  resize partition NUMBER and its "
+#~ "file system"
+#~ msgstr ""
+#~ "resize NUMMER ANFANG ENDE                Dateisystem- und Partitionsgröße "
+#~ "auf Partition NUMMER ändern"
+
+#~ msgid "This is not an ECKD disk!  This disk type is not supported!"
+#~ msgstr ""
+#~ "Dies ist keine ECKD-Festplatte!  Dieser Festplattentyp wird nicht "
+#~ "unterstützt!"
+
+#~ msgid ""
+#~ "Device %s has a logical sector size of %lld.  Not all parts of GNU Parted "
+#~ "support this at the moment, and the working code is HIGHLY EXPERIMENTAL.\n"
+#~ msgstr ""
+#~ "Das Gerät %s hat eine logische Sektorgröße von %lld. Nicht alle Teile von "
+#~ "GNU Parted unterstützen dies im Moment und der funktionierende Code ist "
+#~ "HOCH EXPERIMENTELL.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Could not determine minimum io size for %s: %s.\n"
+#~ "Using the default size (%lld)."
+#~ msgstr ""
+#~ "Die Sektorgröße von %s konnte nicht ermittelt werden: %s.\n"
+#~ "Es wird die Standardsektorgröße verwendet (%lld)."
+
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: unerlaubte Option -- %c\n"
+
+#~ msgid "Unable to determine the block size of this dasd"
+#~ msgstr "Die Blockgröße dieses dasd kann nicht kann nicht bestimmt werden"
+
+#~ msgid ""
+#~ "The kernel was unable to re-read the partition table on %s (%s).  This "
+#~ "means Linux won't know anything about the modifications you made until "
+#~ "you reboot.  You should reboot your computer before doing anything with "
+#~ "%s."
+#~ msgstr ""
+#~ "Der Kernel konnte die Partitionstabelle von %s nicht neu einlesen (%s). "
+#~ "Das bedeutet, dass Linux bis zum Neustart nichts über Ihrer "
+#~ "Modifikationen weiss. Sie sollten den Rechner neu starten, bevor Sie %s "
+#~ "irgendwie verwenden."
+
+#~ msgid "File system has an incompatible feature enabled."
+#~ msgstr "Das Dateisystem hat eine inkompatible Funktion aktiviert."
diff --git a/po/en@boldquot.header b/po/en@boldquot.header
new file mode 100644 (file)
index 0000000..fedb6a0
--- /dev/null
@@ -0,0 +1,25 @@
+# All this catalog "translates" are quotation characters.
+# The msgids must be ASCII and therefore cannot contain real quotation
+# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
+# and double quote (0x22). These substitutes look strange; see
+# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
+#
+# This catalog translates grave accent (0x60) and apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019).
+# It also translates pairs of apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019)
+# and pairs of quotation mark (0x22) to
+# left double quotation mark (U+201C) and right double quotation mark (U+201D).
+#
+# When output to an UTF-8 terminal, the quotation characters appear perfectly.
+# When output to an ISO-8859-1 terminal, the single quotation marks are
+# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
+# grave/acute accent (by libiconv), and the double quotation marks are
+# transliterated to 0x22.
+# When output to an ASCII terminal, the single quotation marks are
+# transliterated to apostrophes, and the double quotation marks are
+# transliterated to 0x22.
+#
+# This catalog furthermore displays the text between the quotation marks in
+# bold face, assuming the VT100/XTerm escape sequences.
+#
diff --git a/po/en@quot.header b/po/en@quot.header
new file mode 100644 (file)
index 0000000..a9647fc
--- /dev/null
@@ -0,0 +1,22 @@
+# All this catalog "translates" are quotation characters.
+# The msgids must be ASCII and therefore cannot contain real quotation
+# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
+# and double quote (0x22). These substitutes look strange; see
+# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
+#
+# This catalog translates grave accent (0x60) and apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019).
+# It also translates pairs of apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019)
+# and pairs of quotation mark (0x22) to
+# left double quotation mark (U+201C) and right double quotation mark (U+201D).
+#
+# When output to an UTF-8 terminal, the quotation characters appear perfectly.
+# When output to an ISO-8859-1 terminal, the single quotation marks are
+# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
+# grave/acute accent (by libiconv), and the double quotation marks are
+# transliterated to 0x22.
+# When output to an ASCII terminal, the single quotation marks are
+# transliterated to apostrophes, and the double quotation marks are
+# transliterated to 0x22.
+#
diff --git a/po/es.gmo b/po/es.gmo
new file mode 100644 (file)
index 0000000..ee03a81
Binary files /dev/null and b/po/es.gmo differ
diff --git a/po/es.po b/po/es.po
new file mode 100644 (file)
index 0000000..369d538
--- /dev/null
+++ b/po/es.po
@@ -0,0 +1,3248 @@
+# Mensajes en español para GNU parted.
+# Copyright (C) 2002 Free Software Foundation, Inc.
+# Vicente E. Llorens <vllorens@mundofree.com>, 2002.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU parted 1.6.23\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2011-05-30 13:45+0200\n"
+"PO-Revision-Date: 2005-09-18 20:05+0100\n"
+"Last-Translator: Vicente E. Llorens <vllorens@mundofree.com>\n"
+"Language-Team: Spanish <es@li.org>\n"
+"Language: es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8-bit\n"
+
+#: lib/argmatch.c:133
+#, fuzzy, c-format
+msgid "invalid argument %s for %s"
+msgstr "No se puede abrir %s."
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr ""
+
+#: lib/argmatch.c:153
+#, fuzzy, c-format
+msgid "Valid arguments are:"
+msgstr "No se puede abrir %s."
+
+#: lib/closeout.c:112 libparted/labels/fdasd.c:107
+msgid "write error"
+msgstr ""
+
+#: lib/error.c:181
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Tipo de sistema de ficheros \"%s\" desconocido."
+
+#: lib/getopt.c:548 lib/getopt.c:577
+#, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
+msgstr ""
+
+#: lib/getopt.c:625 lib/getopt.c:629
+#, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:638 lib/getopt.c:643
+#, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:686 lib/getopt.c:705
+#, c-format
+msgid "%s: option '--%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:743 lib/getopt.c:746
+#, fuzzy, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "No se puede abrir %s - etiqueta de disco desconocida."
+
+#: lib/getopt.c:754 lib/getopt.c:757
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "No se puede abrir %s - etiqueta de disco desconocida."
+
+#: lib/getopt.c:806 lib/getopt.c:809
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr ""
+
+#: lib/getopt.c:859 lib/getopt.c:876 lib/getopt.c:1084 lib/getopt.c:1102
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr ""
+
+#: lib/getopt.c:932 lib/getopt.c:948
+#, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:972 lib/getopt.c:990
+#, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:1011 lib/getopt.c:1029
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr ""
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:271
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:272
+msgid "'"
+msgstr ""
+
+#: lib/regcomp.c:133
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:136
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:139
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:142
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:145
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:148
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:151
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:154
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:157
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:160
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:163
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:166
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:169
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:172
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:175
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:178
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:181
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:702
+msgid "No previous regular expression"
+msgstr ""
+
+#. TRANSLATORS: A regular expression testing for an affirmative answer
+#. (english: "yes").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^yesexpr='
+#: lib/rpmatch.c:147
+msgid "^[yY]"
+msgstr ""
+
+#. TRANSLATORS: A regular expression testing for a negative answer
+#. (english: "no").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^noexpr='
+#: lib/rpmatch.c:160
+msgid "^[nN]"
+msgstr ""
+
+#: lib/version-etc.c:74
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr ""
+
+#: lib/version-etc.c:77
+#, c-format
+msgid "Packaged by %s\n"
+msgstr ""
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale.  Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:84
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:86
+msgid ""
+"\n"
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:102
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:106
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:110
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:131
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:139
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:147
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:156
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:167
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package.  Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:245
+#, c-format
+msgid ""
+"\n"
+"Report bugs to: %s\n"
+msgstr ""
+
+#: lib/version-etc.c:247
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr ""
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr ""
+
+#: lib/version-etc.c:253
+#, c-format
+msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
+msgstr ""
+
+#: lib/version-etc.c:256
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr ""
+
+#: lib/xstrtol-error.c:63
+#, fuzzy, c-format
+msgid "invalid %s%s argument `%s'"
+msgstr "No se puede abrir %s."
+
+#: lib/xstrtol-error.c:68
+#, fuzzy, c-format
+msgid "invalid suffix in %s%s argument `%s'"
+msgstr "No se puede abrir %s."
+
+#: lib/xstrtol-error.c:72
+#, fuzzy, c-format
+msgid "%s%s argument `%s' too large"
+msgstr "No se puede abrir %s."
+
+#: libparted/arch/beos.c:245
+msgid "Disk Image"
+msgstr ""
+
+# o también "al abrir"
+#: libparted/arch/beos.c:346 libparted/arch/gnu.c:277
+#: libparted/arch/linux.c:1545
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "Error al abrir %s: %s"
+
+#: libparted/arch/beos.c:357 libparted/arch/gnu.c:287
+#: libparted/arch/linux.c:1556
+#, c-format
+msgid "Unable to open %s read-write (%s).  %s has been opened read-only."
+msgstr ""
+"No se puede abrir %s en modo lectura-escritura (%s). %s ha sido abierto en "
+"modo de sólo lectura."
+
+#: libparted/arch/beos.c:419 libparted/arch/linux.c:1714
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s durante la preparación para lectura en %s"
+
+#: libparted/arch/beos.c:452 libparted/arch/gnu.c:465 libparted/arch/gnu.c:564
+#: libparted/arch/gnu.c:692 libparted/arch/linux.c:1674
+#: libparted/arch/linux.c:1755
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s durante la lectura en %s"
+
+# para sólo lectura.
+#: libparted/arch/beos.c:488 libparted/arch/gnu.c:525
+#: libparted/arch/linux.c:1831
+#, c-format
+msgid "Can't write to %s, because it is opened read-only."
+msgstr "No se puede escribir en %s, porque está abierto para sólo lectura."
+
+#: libparted/arch/beos.c:504 libparted/arch/linux.c:1856
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s durante la preparación para escribir en %s"
+
+#: libparted/arch/beos.c:541 libparted/arch/gnu.c:601 libparted/arch/gnu.c:646
+#: libparted/arch/gnu.c:723 libparted/arch/linux.c:1804
+#: libparted/arch/linux.c:1898 libparted/arch/linux.c:1970
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s durante la escritura en %s"
+
+#: partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr ""
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the operating system about partition table changes.\n"
+"\n"
+"  -d, --dry-run    do not actually inform the operating system\n"
+"  -s, --summary    print a summary of contents\n"
+"  -h, --help       display this help and exit\n"
+"  -v, --version    output version information and exit\n"
+msgstr ""
+
+#: partprobe/partprobe.c:150
+msgid ""
+"\n"
+"When no DEVICE is given, probe all partitions.\n"
+msgstr ""
+
+#: partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: libparted/arch/gnu.c:110
+#, c-format
+msgid "Unable to open %s."
+msgstr "No se puede abrir %s."
+
+# Unable to -> No se puede.
+#: libparted/arch/gnu.c:130
+msgid "Unable to probe store."
+msgstr "No se puede probar el guardar."
+
+# cargador "de" aranque (no del)
+#: libparted/arch/gnu.c:368
+msgid ""
+"The partition table cannot be re-read.  This means you need to reboot before "
+"mounting any modified partitions.  You also need to reinstall your boot "
+"loader before you reboot (which may require mounting modified partitions).  "
+"It is impossible do both things!  So you'll need to boot off a rescue disk, "
+"and reinstall your boot loader from the rescue disk.  Read section 4 of the "
+"Parted User documentation for more information."
+msgstr ""
+"No se pudo releer la tabla de particiones, por lo tanto es necesario "
+"reiniciar antes de montar alguna partición modificada.  ¡También necesita "
+"reinstalar su cargador de arranque antes de reiniciar (que puede requerir "
+"montar las particiones modificadas).  ¡Es imposible hacer ambas cosas!  Así "
+"que necesitará arrancar con un disco de rescate y reinstalar su cargador de "
+"arranque desde el disco de rescate.  Lea la sección 4 de la documentación "
+"del Usuario de Parted para obtener más información."
+
+#: libparted/arch/gnu.c:385
+#, c-format
+msgid ""
+"The partition table on %s cannot be re-read (%s).  This means the Hurd knows "
+"nothing about any modifications you made.  You should reboot your computer "
+"before doing anything with %s."
+msgstr ""
+"La tabla de particiones en %s no puede ser releida(%s).  Esto significa que "
+"Hurd (o Linux) no reconocerá las modificaciones que hizo.  Debe reiniciar su "
+"computadora antes de hacer nada con %s."
+
+# boot loader -> cargador de arranque.
+#: libparted/arch/gnu.c:396 parted/parted.c:1967
+msgid ""
+"You should reinstall your boot loader before rebooting.  Read section 4 of "
+"the Parted User documentation for more information."
+msgstr ""
+"Debe reinstalar su cargador de arranque antes de reiniciar.  Lea la sección "
+"4 de la documentación del Usuario de Parted para obtener más información."
+
+#: libparted/arch/gnu.c:788
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%s intentando sincronizar %s al disco"
+
+#: libparted/arch/linux.c:520
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "No se puede hacer `stat' sobre el dispositivo %s - %s."
+
+#: libparted/arch/linux.c:577
+#, fuzzy, c-format
+msgid "Unable to determine the dm type of %s."
+msgstr "No se puede determinar el tamaño de %s (%s)."
+
+#: libparted/arch/linux.c:669
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+
+#: libparted/arch/linux.c:690
+#, c-format
+msgid ""
+"Could not determine physical sector size for %s.\n"
+"Using the logical sector size (%lld)."
+msgstr ""
+
+#: libparted/arch/linux.c:746
+#, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "No se puede determinar el tamaño de %s (%s)."
+
+#: libparted/arch/linux.c:832
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "No se puede obtener la identidad del dispositivo %s - %s"
+
+#: libparted/arch/linux.c:841
+msgid "Generic IDE"
+msgstr ""
+
+#: libparted/arch/linux.c:862
+#, c-format
+msgid ""
+"Device %s has multiple (%d) logical sectors per physical sector.\n"
+"GNU Parted supports this EXPERIMENTALLY for some special disk label/file "
+"system combinations, e.g. GPT and ext2/3.\n"
+"Please consult the web site for up-to-date information."
+msgstr ""
+
+#: libparted/arch/linux.c:1039
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "Error iniciando el dispositivo SCSI %s - %s"
+
+#: libparted/arch/linux.c:1103
+#, c-format
+msgid ""
+"The device %s is so small that it cannot possibly store a file system or "
+"partition table.  Perhaps you selected the wrong device?"
+msgstr ""
+
+# el Parted -> Parted. No se suelen poner artículos a los nombres de
+# los programas. queda un poco despectivo
+#: libparted/arch/linux.c:1216
+#, fuzzy, c-format
+msgid ""
+"Unable to determine geometry of file/device %s.  You should not use Parted "
+"unless you REALLY know what you're doing!"
+msgstr ""
+"No se puede determinar la geometría del fichero/dispositivo.  ¡No debería "
+"utilizar Parted a no ser que REALMENTE sepa lo que está haciendo!"
+
+#: libparted/arch/linux.c:1276
+msgid "Generic SD/MMC Storage Card"
+msgstr ""
+
+#: libparted/arch/linux.c:1329
+msgid "DAC960 RAID controller"
+msgstr "Controladora RAID DAC960"
+
+#: libparted/arch/linux.c:1334
+msgid "Promise SX8 SATA Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1339
+msgid "ATA over Ethernet Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1345
+msgid "IBM S390 DASD drive"
+msgstr ""
+
+#: libparted/arch/linux.c:1351
+msgid "IBM iSeries Virtual DASD"
+msgstr ""
+
+# de Compaq
+#: libparted/arch/linux.c:1356
+msgid "Compaq Smart Array"
+msgstr "Estructura Smart de Compaq"
+
+#: libparted/arch/linux.c:1361
+msgid "ATARAID Controller"
+msgstr "Controladora ATARAID"
+
+#: libparted/arch/linux.c:1366
+msgid "I2O Controller"
+msgstr "Controladora I20"
+
+#: libparted/arch/linux.c:1371
+msgid "User-Mode Linux UBD"
+msgstr ""
+
+#: libparted/arch/linux.c:1384
+#, c-format
+msgid "Linux device-mapper (%s)"
+msgstr ""
+
+#: libparted/arch/linux.c:1395
+msgid "Xen Virtual Block Device"
+msgstr ""
+
+# ¿Qué, exactamente, es desconocido? ¿No será desconocida?
+#: libparted/arch/linux.c:1400
+msgid "Unknown"
+msgstr "Desconocida"
+
+#: libparted/arch/linux.c:1409
+msgid "Virtio Block Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1414
+msgid "Linux Software RAID Array"
+msgstr ""
+
+#: libparted/arch/linux.c:1421
+msgid "ped_device_new()  Unsupported device type"
+msgstr "ped_device_new()  Tipo de dispositivo no soportado"
+
+# o también "al abrir"
+#: libparted/arch/linux.c:1518 libparted/arch/linux.c:1590
+#, fuzzy, c-format
+msgid "Error fsyncing/closing %s: %s"
+msgstr "Error al abrir %s: %s"
+
+#: libparted/arch/linux.c:1754
+#, c-format
+msgid "end of file while reading %s"
+msgstr ""
+
+# informing the kernel -> al informar al núcleo
+# in any way -> de ninguna forma
+#: libparted/arch/linux.c:2390
+#, c-format
+msgid ""
+"Error informing the kernel about modifications to partition %s -- %s.  This "
+"means Linux won't know about any changes you made to %s until you reboot -- "
+"so you shouldn't mount it or use it in any way before rebooting."
+msgstr ""
+"Error al informar el núcleo sobre las modificaciones en la partición %s -- "
+"%s.  Esto significa que Linux no reconocerá ningún cambio que haya hecho en "
+"%s hasta que lo reinicie -- por lo tanto no puede montarla o utilizarla "
+"antes de reiniciarla."
+
+#: libparted/arch/linux.c:2528
+#, fuzzy, c-format
+msgid "Unable to determine the size and length of %s."
+msgstr "No se puede determinar el tamaño de %s (%s)."
+
+#: libparted/arch/linux.c:2553
+#, fuzzy, c-format
+msgid "Failed to add partition %d (%s)"
+msgstr "Fallo al escribir el bloque de la partición en %d."
+
+#: libparted/arch/linux.c:2580
+#, c-format
+msgid ""
+"Partition(s) %s on %s have been written, but we have been unable to inform "
+"the kernel of the change, probably because it/they are in use.  As a result, "
+"the old partition(s) will remain in use.  You should reboot now before "
+"making further changes."
+msgstr ""
+
+#: libparted/arch/linux.c:2706
+#, fuzzy, c-format
+msgid ""
+"parted was unable to re-read the partition table on %s (%s).  This means "
+"Linux won't know anything about the modifications you made. "
+msgstr ""
+"El núcleo no pudo releer la tabla de particiones en %s (%s).  Esto significa "
+"que Linux no reconocerá las modificaciones que hizo.  Debe reiniciarlo antes "
+"de hacer cualquier uso con %s."
+
+#: libparted/cs/geom.c:161
+#, fuzzy, c-format
+msgid "Can't have the end before the start! (start sector=%jd length=%jd)"
+msgstr "¡No se puede tener el final de la partición antes del inicio!"
+
+#: libparted/cs/geom.c:169
+msgid "Can't have a partition outside the disk!"
+msgstr "¡No se puede hacer una partición fuera del disco!"
+
+#: libparted/cs/geom.c:384
+#, c-format
+msgid "Attempt to write sectors %ld-%ld outside of partition on %s."
+msgstr ""
+"Se intentaron escribir los sectores %ld-%ld fuera de la partición en %s."
+
+#: libparted/cs/geom.c:424
+msgid "checking for bad blocks"
+msgstr "comprobando bloques erroneos"
+
+#: libparted/debug.c:96
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:109
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr ""
+
+#: libparted/disk.c:192
+#, fuzzy, c-format
+msgid "%s: unrecognised disk label"
+msgstr "No se puede abrir %s - etiqueta de disco desconocida."
+
+# para sólo lectura.
+#: libparted/disk.c:484
+#, c-format
+msgid ""
+"This libparted doesn't have write support for %s.  Perhaps it was compiled "
+"read-only."
+msgstr ""
+"Esta libparted no tiene soporte para escritura en %s.  Quizás fue compilada "
+"para sólo lectura."
+
+#: libparted/disk.c:629
+#, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "La partición %d es %s, pero el sistema de ficheros es de %s."
+
+#: libparted/disk.c:838
+msgid "cylinder_alignment"
+msgstr ""
+
+#: libparted/disk.c:844
+#, fuzzy, c-format
+msgid "Unknown disk flag, %d."
+msgstr "Modificador de particiones desconocido, %d."
+
+#: libparted/disk.c:1283
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "Las etiquetas de disco de %s no soportan particiones extendidas."
+
+#: libparted/disk.c:1858
+#, c-format
+msgid "%s disk labels don't support logical or extended partitions."
+msgstr ""
+"Las etiquetas de disco %s no soportan particiones extendidas o lógicas."
+
+#: libparted/disk.c:1871
+msgid "Too many primary partitions."
+msgstr "Demasiadas particiones primarias."
+
+#: libparted/disk.c:1880
+#, c-format
+msgid ""
+"Can't add a logical partition to %s, because there is no extended partition."
+msgstr ""
+"No se puede añadir una partición lógica en %s, porque no hay una partición "
+"extendida."
+
+#: libparted/disk.c:1904
+#, c-format
+msgid "Can't have more than one extended partition on %s."
+msgstr "No se puede tener más de una partición extendida en %s."
+
+#: libparted/disk.c:1914
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr ""
+"No se puede tener una partición lógica fuera de la partición extendida."
+
+#: libparted/disk.c:1939
+#, c-format
+msgid "Can't have a logical partition outside of the extended partition on %s."
+msgstr ""
+"No se puede tener una partición lógica fuera de la partición extendida en %s."
+
+#: libparted/disk.c:1949 libparted/disk.c:2008 libparted/disk.c:2186
+msgid "Can't have overlapping partitions."
+msgstr "No se puede tener particiones superpuestas."
+
+#: libparted/disk.c:1957
+msgid "Can't have a primary partition inside an extended partition."
+msgstr ""
+"No se puede tener una partición primaria dentro de una partición extendida."
+
+#: libparted/disk.c:2387
+msgid "metadata"
+msgstr "metadata"
+
+#: libparted/disk.c:2389
+msgid "free"
+msgstr "libre"
+
+#: libparted/disk.c:2391 parted/ui.c:1194 parted/ui.c:1222
+msgid "extended"
+msgstr "extendida"
+
+#: libparted/disk.c:2393 parted/ui.c:1198 parted/ui.c:1226
+msgid "logical"
+msgstr "lógica"
+
+#: libparted/disk.c:2395 parted/ui.c:1190 parted/ui.c:1218
+msgid "primary"
+msgstr "primaria"
+
+#: libparted/disk.c:2411
+msgid "boot"
+msgstr "arranque"
+
+#: libparted/disk.c:2413
+msgid "bios_grub"
+msgstr ""
+
+#: libparted/disk.c:2415
+msgid "root"
+msgstr "raíz"
+
+#: libparted/disk.c:2417
+msgid "swap"
+msgstr "swap"
+
+#: libparted/disk.c:2419
+msgid "hidden"
+msgstr "oculta"
+
+#: libparted/disk.c:2421
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2423
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2425
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2427
+msgid "hp-service"
+msgstr "utilidad-hp"
+
+#: libparted/disk.c:2429
+msgid "palo"
+msgstr "palo"
+
+#: libparted/disk.c:2431
+msgid "prep"
+msgstr "prep"
+
+#: libparted/disk.c:2433
+msgid "msftres"
+msgstr ""
+
+#: libparted/disk.c:2435
+msgid "atvrecv"
+msgstr ""
+
+#: libparted/disk.c:2437
+msgid "diag"
+msgstr ""
+
+#: libparted/disk.c:2439
+msgid "legacy_boot"
+msgstr ""
+
+#: libparted/disk.c:2445
+#, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Modificador de particiones desconocido, %d."
+
+#: libparted/exception.c:77
+msgid "Information"
+msgstr "Información"
+
+#: libparted/exception.c:78
+msgid "Warning"
+msgstr "Aviso"
+
+#: libparted/exception.c:79
+msgid "Error"
+msgstr "Error"
+
+#: libparted/exception.c:80
+msgid "Fatal"
+msgstr "Fatal"
+
+#: libparted/exception.c:81
+msgid "Bug"
+msgstr "Bicho"
+
+#: libparted/exception.c:82
+msgid "No Implementation"
+msgstr "Sin Implementación"
+
+#: libparted/exception.c:86
+msgid "Fix"
+msgstr "Arreglar"
+
+#: libparted/exception.c:87
+msgid "Yes"
+msgstr "Sí"
+
+#: libparted/exception.c:88
+msgid "No"
+msgstr "No"
+
+#: libparted/exception.c:89
+msgid "OK"
+msgstr "De acuerdo"
+
+#: libparted/exception.c:90
+msgid "Retry"
+msgstr "Reintentar"
+
+#: libparted/exception.c:91
+msgid "Ignore"
+msgstr "Descartar"
+
+#: libparted/exception.c:92
+msgid "Cancel"
+msgstr "Cancelar"
+
+# bicho :-)
+#: libparted/exception.c:132
+#, fuzzy, c-format
+msgid ""
+"A bug has been detected in GNU Parted.  Refer to the web site of parted "
+"http://www.gnu.org/software/parted/parted.html for more information of what "
+"could be useful for bug submitting!  Please email a bug report to %s "
+"containing at least the version (%s) and the following message:  "
+msgstr ""
+"Si detectó un bicho en GNU parted. Por favor, envíe un informe del bicho a "
+"bug-parted@gnu.org conteniendo la versión (%s) y el mensaje siguiente:"
+
+#: libparted/labels/aix.c:103
+#, fuzzy
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr ""
+"El soporte para crear el sistema de ficheros %s aún no está implementado."
+
+#: libparted/labels/aix.c:114
+#, fuzzy
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr ""
+"El soporte para crear el sistema de ficheros %s aún no está implementado."
+
+#: libparted/labels/aix.c:127
+#, fuzzy
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr ""
+"El soporte para crear el sistema de ficheros %s aún no está implementado."
+
+#: libparted/labels/aix.c:137
+#, fuzzy
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr ""
+"El soporte para crear el sistema de ficheros %s aún no está implementado."
+
+#: libparted/labels/aix.c:155
+#, fuzzy
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr ""
+"El soporte para crear el sistema de ficheros %s aún no está implementado."
+
+#: libparted/labels/aix.c:165
+#, fuzzy
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr ""
+"El soporte para crear el sistema de ficheros %s aún no está implementado."
+
+# No se pueden, con N.
+# no pongas dos espacios seguidos
+#: libparted/labels/bsd.c:571 libparted/labels/dasd.c:833
+#: libparted/labels/dos.c:2176 libparted/labels/dvh.c:787
+#: libparted/labels/gpt.c:1782 libparted/labels/loop.c:247
+#: libparted/labels/mac.c:1426 libparted/labels/pc98.c:748
+#: libparted/labels/rdb.c:1052 libparted/labels/sun.c:780
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "No se pueden satisfacer todas las restricciones en la partición."
+
+#: libparted/labels/bsd.c:596
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "No se puede asignar una ranura de la etiqueta de disco bsd"
+
+#: libparted/labels/dasd.c:859
+#, fuzzy
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "No se puede asignar una ranura de la etiqueta de disco bsd"
+
+# te doy permiso para poner inválida
+#: libparted/labels/dos.c:966
+#, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr "Tabla de particiones inválida en %s -- firma errónea %x."
+
+#: libparted/labels/dos.c:994
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "Tabla de particiones inválida - partición recursiva en %s."
+
+#: libparted/labels/dos.c:1504
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr ""
+"No pueden esconderse particiones extendidas en etiquetas de disco msdos."
+
+#: libparted/labels/dos.c:2158
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+"Parted no puede redimensionar particiones manejadas por Windows Dynamic Disk."
+
+# to ignore no es ignorar, es descartar, pasar por alto, hacer la vista
+# gorda, etc.  ingorar es no saber, y eso se dice "not to know".
+# La segunda acepción de ignorar (según el diccionario) también es pasar
+# por alto. vll
+# volumenes -> volúmenes
+#: libparted/labels/dvh.c:200
+#, fuzzy, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr ""
+"%s no tiene partición extendida (partición de cabecera de volumen).  Si lo "
+"descarta, todos volúmenes de arranque serán borrados."
+
+# suma de comprobación
+#: libparted/labels/dvh.c:326
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr ""
+"La suma de comprobación es incorrecta, lo cual indica que la tabla de "
+"particiones está corrupta."
+
+#: libparted/labels/dvh.c:631
+msgid "Only primary partitions can be root partitions."
+msgstr "Sólo las particiones primarias pueden ser particiones raíz."
+
+#: libparted/labels/dvh.c:645
+msgid "Only primary partitions can be swap partitions."
+msgstr "Sólo las particiones primarias pueden ser particiones de intercambio."
+
+#: libparted/labels/dvh.c:659
+msgid "Only logical partitions can be a boot file."
+msgstr "Sólo las particiones lógicas pueden ser un fichero de arranque."
+
+#: libparted/labels/dvh.c:736
+#, fuzzy, c-format
+msgid ""
+"failed to set dvh partition name to %s:\n"
+"Only logical partitions (boot files) have a name."
+msgstr "Sólo las particiones lógicas (ficheros de arranque) tienen un nombre."
+
+#: libparted/labels/dvh.c:829
+msgid "Too many primary partitions"
+msgstr "Demasiadas particiones primarias"
+
+#: libparted/labels/fdasd.c:98
+msgid "open error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:101
+msgid "seek error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:104
+msgid "read error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:110
+msgid "ioctl() error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:114
+msgid "API version mismatch"
+msgstr ""
+
+#: libparted/labels/fdasd.c:118
+#, fuzzy
+msgid "Unsupported disk type"
+msgstr "ped_device_new()  Tipo de dispositivo no soportado"
+
+#: libparted/labels/fdasd.c:122
+msgid "Unsupported disk format"
+msgstr ""
+
+#: libparted/labels/fdasd.c:126
+msgid "Disk is in use"
+msgstr ""
+
+#: libparted/labels/fdasd.c:130
+msgid "Syntax error in config file"
+msgstr ""
+
+#: libparted/labels/fdasd.c:134
+msgid "Volume label is corrupted"
+msgstr ""
+
+#: libparted/labels/fdasd.c:138
+msgid "A data set name is corrupted"
+msgstr ""
+
+#: libparted/labels/fdasd.c:142
+msgid "Memory allocation failed"
+msgstr ""
+
+#: libparted/labels/fdasd.c:146
+msgid "Device verification failed"
+msgstr ""
+
+#: libparted/labels/fdasd.c:147
+msgid "The specified device is not a valid DASD device"
+msgstr ""
+
+#: libparted/labels/fdasd.c:150 libparted/labels/vtoc.c:179
+#, fuzzy
+msgid "Fatal error"
+msgstr "Fatal"
+
+#: libparted/labels/fdasd.c:226
+msgid "No room for volume label."
+msgstr ""
+
+#: libparted/labels/fdasd.c:234
+#, fuzzy
+msgid "No room for partition info."
+msgstr "Se encontró una tabla de particiones inválida."
+
+#: libparted/labels/fdasd.c:709
+msgid "Invalid VTOC."
+msgstr ""
+
+#: libparted/labels/fdasd.c:766
+msgid "Could not retrieve API version."
+msgstr ""
+
+#: libparted/labels/fdasd.c:769
+#, c-format
+msgid ""
+"The current API version '%d' doesn't match dasd driver API version '%d'!"
+msgstr ""
+
+# No se puede.
+#: libparted/labels/fdasd.c:806
+#, fuzzy
+msgid "Could not retrieve disk geometry information."
+msgstr "No se puede leer la geometría de %s - %s."
+
+#: libparted/labels/fdasd.c:810
+msgid "Could not retrieve blocksize information."
+msgstr ""
+
+#: libparted/labels/fdasd.c:815
+msgid "Could not retrieve disk information."
+msgstr ""
+
+#: libparted/labels/gpt.c:493
+#, c-format
+msgid ""
+"%s contains GPT signatures, indicating that it has a GPT table.  However, it "
+"does not have a valid fake msdos partition table, as it should.  Perhaps it "
+"was corrupted -- possibly by a program that doesn't understand GPT partition "
+"tables.  Or perhaps you deleted the GPT table, and are now using an msdos "
+"partition table.  Is this a GPT partition table?"
+msgstr ""
+"%s contiene firmas GPT, lo cual indica que tiene una tabla GPT.  No "
+"obstante, no tiene una tabla de particiones msdos de imitación válida, como "
+"habría de ser.  Quizás esta corrupta -- posiblemente por un programa que no "
+"es capaz de enterder las tablas de partición GPT.  O quizás borró la tabla "
+"GPT y ahora está usando una tabla de particiones msdos.  ¿Es esta una tabla "
+"de partición GPT?"
+
+#: libparted/labels/gpt.c:693
+#, fuzzy, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise.  Please report this!"
+msgstr ""
+"El formato de la tabla de particiones GPT es la versión %x, el cual es más "
+"nuevo que lo que Parted puede reconocer.  Por favor, díganoslo a bug-"
+"parted@gnu.org"
+
+#: libparted/labels/gpt.c:740
+#, c-format
+msgid ""
+"Not all of the space available to %s appears to be used, you can fix the GPT "
+"to use all of the space (an extra %llu blocks) or continue with the current "
+"setting? "
+msgstr ""
+
+#: libparted/labels/gpt.c:952
+msgid ""
+"The backup GPT table is not at the end of the disk, as it should be.  This "
+"might mean that another operating system believes the disk is smaller.  Fix, "
+"by moving the backup to the end (and removing the old backup)?"
+msgstr ""
+"La copia de la tabla GPT no está al final disco, como debería ser.  Esto "
+"quiere decir que otro sistema operativo cree que el disco es más pequeño.  "
+"¿Lo quiere arreglar moviendo la copia al final (y borrando la copia vieja)?"
+
+#: libparted/labels/gpt.c:976
+msgid ""
+"Both the primary and backup GPT tables are corrupt.  Try making a fresh "
+"table, and using Parted's rescue feature to recover partitions."
+msgstr ""
+"La tabla primaria y la copia de respaldo GPT están corruptas.  Intente crear "
+"una tabla actualizada, y utilice la opción de rescate de Parted para "
+"reconstruir las particiones."
+
+#: libparted/labels/gpt.c:987
+#, fuzzy
+msgid ""
+"The backup GPT table is corrupt, but the primary appears OK, so that will be "
+"used."
+msgstr ""
+"La tabla primaria GPT está corrupta, pero la copia de respaldo parece "
+"correcta, por lo tanto se usará esta."
+
+#: libparted/labels/gpt.c:999
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr ""
+"La tabla primaria GPT está corrupta, pero la copia de respaldo parece "
+"correcta, por lo tanto se usará esta."
+
+#: libparted/labels/gpt.c:1023
+msgid "primary partition table array CRC mismatch"
+msgstr ""
+
+#: libparted/labels/mac.c:184
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Firma inválida %x para etiquetas de discos Mac."
+
+# Map es asignación o tabla. Mapa es un barbarismo.
+#: libparted/labels/mac.c:231
+msgid "Partition map has no partition map entry!"
+msgstr ""
+"¡La tabla de particiones no tiene una entrada de la tabla de particiones!"
+
+#: libparted/labels/mac.c:279
+#, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr "¡%s es demasiado pequeño para una etiqueta de disco Mac!"
+
+#: libparted/labels/mac.c:508
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "La partición %d tiene una firma inválida %x."
+
+#: libparted/labels/mac.c:526
+#, c-format
+msgid "Partition %d has an invalid length of 0 bytes!"
+msgstr "¡La partición %d tiene una longitud inválida de 0 bytes!"
+
+#: libparted/labels/mac.c:557
+msgid "The data region doesn't start at the start of the partition."
+msgstr "La región de datos no empieza al principio de la partición."
+
+#: libparted/labels/mac.c:574
+msgid "The boot region doesn't start at the start of the partition."
+msgstr "La región de arranque no empieza al principio de la partición."
+
+#: libparted/labels/mac.c:588
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr "La región de arranque de la partición no ocupa toda la partición."
+
+#: libparted/labels/mac.c:599
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr "La región de datos de la partición no ocupa toda la partición."
+
+#: libparted/labels/mac.c:652
+#, c-format
+msgid ""
+"Weird block size on device descriptor: %d bytes is not divisible by 512."
+msgstr ""
+"Tamaño de bloque extraño en el descriptor del dispositivo: %d bytes no es "
+"divisible por 512."
+
+#: libparted/labels/mac.c:665
+#, c-format
+msgid ""
+"The driver descriptor says the physical block size is %d bytes, but Linux "
+"says it is %d bytes."
+msgstr ""
+"El descriptor del controlador dice que el tamaño del bloque físico es de %d "
+"bytes, pero Linux dice que es de %d bytes."
+
+#: libparted/labels/mac.c:719
+msgid "No valid partition map found."
+msgstr "Se encontró una tabla de particiones inválida."
+
+#: libparted/labels/mac.c:780
+#, c-format
+msgid ""
+"Conflicting partition map entry sizes!  Entry 1 says it is %d, but entry %d "
+"says it is %d!"
+msgstr ""
+"¡Conflicto en el tamaño de la entrada de la tabla de particiones! ¡La "
+"entrada 1 dice que es %d, pero la entrada %d dice que es %d!"
+
+#: libparted/labels/mac.c:811
+msgid "Weird!  There are 2 partitions map entries!"
+msgstr "¡Extraño!  ¡Hay 2 entradas de tabla de particiones!"
+
+#: libparted/labels/mac.c:1357
+msgid ""
+"Changing the name of a root or swap partition will prevent Linux from "
+"recognising it as such."
+msgstr ""
+"Cambiando el nombre de una partición raíz o de intercambio impedirán a Linux "
+"de reconocela como tal."
+
+#: libparted/labels/mac.c:1461
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr ""
+"¡No se puede añadir otra partición -- la tabla de las particiones es "
+"demasiado pequeña!"
+
+#: libparted/labels/pc98.c:331
+#, c-format
+msgid "Invalid partition table on %s."
+msgstr "Tabla de partición inválida en %s."
+
+#: libparted/labels/pc98.c:384 libparted/labels/pc98.c:462
+#, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries.  This is still "
+"unsupported."
+msgstr ""
+"La partición %d no está alineada a los límites del cilindro.  Necesita "
+"añadirle soporte."
+
+# No se puede.
+#: libparted/labels/pc98.c:780
+msgid "Can't add another partition."
+msgstr "No se puede añadir otra partición."
+
+#: libparted/labels/pt-tools.c:125
+#, c-format
+msgid ""
+"partition length of %jd sectors exceeds the %s-partition-table-imposed "
+"maximum of %jd"
+msgstr ""
+
+#: libparted/labels/pt-tools.c:138
+#, c-format
+msgid ""
+"starting sector number, %jd exceeds the %s-partition-table-imposed maximum "
+"of %jd"
+msgstr ""
+
+#: libparted/labels/rdb.c:169
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr "%s : Suma de comprobación mala en el bloque %llu de tipo %s."
+
+#: libparted/labels/rdb.c:484
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr "%s : No se encuentra el bloque rdb, nunca debería ocurrir."
+
+#: libparted/labels/rdb.c:573
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr "%s : Bucle detectado en el bloque %d."
+
+#: libparted/labels/rdb.c:592
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr "%s : La lista %s parece mala en el bloque %s."
+
+#: libparted/labels/rdb.c:691
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:699
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:707
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:715
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:742
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr "Fallo al escribir el bloque de la partición en %d."
+
+#: libparted/labels/rdb.c:1080
+msgid "Unable to allocate a partition number."
+msgstr "No se puede asignar un número de partición."
+
+#: libparted/labels/sun.c:161
+msgid "Corrupted Sun disk label detected."
+msgstr "Se ha detectado una etiqueta de disco Sun corrupta."
+
+#: libparted/labels/sun.c:276
+#, c-format
+msgid ""
+"The disk CHS geometry (%d,%d,%d) reported by the operating system does not "
+"match the geometry stored on the disk label (%d,%d,%d)."
+msgstr ""
+"La geometría de disco CHS (%d,%d,%d) informado por el sistema operativo no "
+"parece coincidir con la geometría guardada en la etiqueta de disco (%d,%d,"
+"%d)."
+
+#: libparted/labels/sun.c:298
+#, c-format
+msgid "The disk label describes a disk bigger than %s."
+msgstr "La etiqueta de disco describe un disco mayor que %s."
+
+#: libparted/labels/sun.c:473
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr "El disco tiene %d cilindros que son mayores que el máximo de 65536."
+
+#: libparted/labels/sun.c:812
+msgid ""
+"The Whole Disk partition is the only available one left.  Generally, it is "
+"not a good idea to overwrite this partition with a real one.  Solaris may "
+"not be able to boot without it, and SILO (the sparc boot loader) appreciates "
+"it as well."
+msgstr ""
+"La partición Entera del Disco es la única que queda disponible.  "
+"Generalmente, no es una buena idea sobrescribir esta partición con una "
+"verdadera. Solaris no se puede arrancar sin ella, y SILO (el cargador de "
+"arranque de sparc) también la agradece."
+
+#: libparted/labels/sun.c:827
+msgid "Sun disk label is full."
+msgstr "La etiqueta de disco Sun está llena."
+
+#: libparted/labels/vtoc.c:164
+msgid "opening of device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:168
+msgid "seeking on device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:172
+msgid "writing to device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:176
+msgid "reading from device failed"
+msgstr ""
+
+# No se puede.
+#: libparted/labels/vtoc.c:299 libparted/labels/vtoc.c:308
+#: libparted/labels/vtoc.c:329 libparted/labels/vtoc.c:336
+#, fuzzy
+msgid "Could not read volume label."
+msgstr "No se puede leer la geometría de %s - %s."
+
+#: libparted/labels/vtoc.c:356 libparted/labels/vtoc.c:363
+#, fuzzy
+msgid "Could not write volume label."
+msgstr "No se puede detectar el sistema de ficheros."
+
+#: libparted/labels/vtoc.c:469
+msgid "Could not read VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:496
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:516
+msgid "Could not write VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:522
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:529
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:536
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:543
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/libparted.c:230 libparted/libparted.c:245
+msgid "Out of memory."
+msgstr "No hay memoria."
+
+#: libparted/unit.c:138
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr ""
+
+#: libparted/unit.c:384
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr ""
+
+#: libparted/unit.c:392
+#, c-format
+msgid "The maximum head value is %d."
+msgstr ""
+
+#: libparted/unit.c:399
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr ""
+
+#: libparted/unit.c:411 libparted/unit.c:556
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr ""
+
+#: libparted/unit.c:531
+msgid "Invalid number."
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:62 libparted/fs/amiga/apfs.c:55
+#: libparted/fs/amiga/asfs.c:69
+#, fuzzy, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "Fallo al escribir el bloque de la partición en %d."
+
+#: libparted/fs/amiga/affs.c:77 libparted/fs/amiga/apfs.c:68
+#: libparted/fs/amiga/asfs.c:81
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:82 libparted/fs/amiga/apfs.c:73
+#, fuzzy, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr "%s : Bucle detectado en el bloque %d."
+
+#: libparted/fs/amiga/affs.c:98 libparted/fs/amiga/apfs.c:84
+#: libparted/fs/amiga/asfs.c:87 libparted/fs/amiga/asfs.c:101
+#, fuzzy, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr "%s : Bucle detectado en el bloque %d."
+
+#: libparted/fs/amiga/amiga.c:71
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:188
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:201
+#, fuzzy, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr "%s : Suma de comprobación mala en el bloque %llu de tipo %s."
+
+#: libparted/fs/amiga/amiga.c:211
+#, fuzzy, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s : Bucle detectado en el bloque %d."
+
+#: libparted/fs/amiga/amiga.c:277
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:288
+#, fuzzy, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr "%s : No se encuentra el bloque rdb, nunca debería ocurrir."
+
+#: libparted/fs/amiga/amiga.c:317
+#, fuzzy, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr "Fallo al escribir el bloque de la partición en %d."
+
+#: libparted/fs/fat/fat.c:174
+msgid ""
+"GNU Parted was miscompiled: the FAT boot sector should be 512 bytes.  FAT "
+"support will be disabled."
+msgstr ""
+"GNU parted fue mal compilado: el sector de arranque FAT debería ser de 512 "
+"bytes. El soporte a FAT será desabilitado."
+
+#: libparted/fs/fat/bootsector.c:49 libparted/fs/fat/bootsector.c:56
+msgid "File system has an invalid signature for a FAT file system."
+msgstr ""
+"El sistema de ficheros tiene una firma inválida para un sistema de ficheros "
+"FAT."
+
+#: libparted/fs/fat/bootsector.c:64
+msgid "File system has an invalid sector size for a FAT file system."
+msgstr ""
+"El sistema de ficheros tiene un tamaño de sector inválido para un sistema de "
+"ficheros FAT."
+
+#: libparted/fs/fat/bootsector.c:71
+msgid "File system has an invalid cluster size for a FAT file system."
+msgstr ""
+"El sistema de ficheros tiene un tamaño de cluster inválido para un sistema "
+"de ficheros FAT."
+
+#: libparted/fs/fat/bootsector.c:78
+msgid ""
+"File system has an invalid number of reserved sectors for a FAT file system."
+msgstr ""
+"El sistema de ficheros tiene un número inválido de sectores reservados para "
+"un sistema de ficheros FAT."
+
+#: libparted/fs/fat/bootsector.c:85
+msgid "File system has an invalid number of FATs."
+msgstr "El sistema de ficheros tiene un número de FATS inválido."
+
+#: libparted/fs/fat/bootsector.c:156
+#, c-format
+msgid ""
+"This file system has a logical sector size of %d.  GNU Parted is known not "
+"to work properly with sector sizes other than 512 bytes."
+msgstr ""
+"El sistema de ficheros tiene el tamaño del sector lógico de %d.  GNU Parted "
+"es conocido por no funcionar adecuadamente con tamaños de sector distintos "
+"de 512 bytes."
+
+#: libparted/fs/fat/bootsector.c:181
+#, c-format
+msgid ""
+"The file system's CHS geometry is (%d, %d, %d), which is invalid.  The "
+"partition table's CHS geometry is (%d, %d, %d).  If you select Ignore, the "
+"file system's CHS geometry will be left unchanged.  If you select Fix, the "
+"file system's CHS geometry will be set to match the partition table's CHS "
+"geometry."
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:230
+msgid "FAT boot sector says logical sector size is 0.  This is weird. "
+msgstr ""
+"El sector de arranque de la FAT dice que el tamaño lógico del sector es 0.  "
+"Esto es extraño. "
+
+#: libparted/fs/fat/bootsector.c:236
+msgid "FAT boot sector says there are no FAT tables.  This is weird. "
+msgstr ""
+"El sector de arranque de la FAT dice que no hay tablas FAT.  Esto es "
+"extraño. "
+
+#: libparted/fs/fat/bootsector.c:242
+msgid "FAT boot sector says clusters are 0 sectors.  This is weird. "
+msgstr ""
+"El sector de arranque de la FAT dice que los clusters tienen 0 sectores.  "
+"Esto es extraño. "
+
+#: libparted/fs/fat/bootsector.c:252
+msgid "File system is FAT12, which is unsupported."
+msgstr "El sistema de ficheros es FAT12, el cuál no está soportado."
+
+#: libparted/fs/fat/bootsector.c:428
+#, c-format
+msgid ""
+"The information sector has the wrong signature (%x).  Select cancel for now, "
+"and send in a bug report.  If you're desperate, it's probably safe to ignore."
+msgstr ""
+"El sector de información tiene una firma errónea (%x).  Seleccione cancelar "
+"por ahora, y mande un informe del fallo. Si está desesperado, es más seguro "
+"descartar."
+
+#: libparted/fs/linux_swap/linux_swap.c:247
+#, fuzzy, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "Firma de la partición de intercambio de linux '%10s' no reconocida."
+
+#: libparted/fs/linux_swap/linux_swap.c:290
+#, fuzzy, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "Firma de la partición de intercambio de linux '%10s' no reconocida."
+
+#: libparted/fs/linux_swap/linux_swap.c:330
+#, fuzzy, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Firma de la partición de intercambio de linux '%10s' no reconocida."
+
+#: libparted/fs/hfs/probe.c:50
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to "
+"%d bytes."
+msgstr ""
+
+#: parted/parted.c:123
+msgid "displays this help message"
+msgstr "mostrar este mensaje de ayuda"
+
+#: parted/parted.c:124
+msgid "lists partition layout on all block devices"
+msgstr ""
+
+#: parted/parted.c:125
+msgid "displays machine parseable output"
+msgstr ""
+
+#: parted/parted.c:126
+msgid "never prompts for user intervention"
+msgstr "no pedir nunca la intervención del usuario"
+
+#: parted/parted.c:127
+msgid "displays the version"
+msgstr "mostrar la versión"
+
+# No se puede.
+#: parted/parted.c:128
+#, fuzzy
+msgid "alignment for new partitions"
+msgstr "No se puede crear más particiones."
+
+#: parted/parted.c:140
+#, fuzzy
+msgid ""
+"NUMBER is the partition number used by Linux.  On MS-DOS disk labels, the "
+"primary partitions number from 1 to 4, logical partitions from 5 onwards.\n"
+msgstr ""
+"NUMERO es el número de la partición usada por Linux. En las etiquetas de "
+"disco msdos, las particiones primarias van del 1 al 4, y las particiones "
+"lógicas de 5 en adelante.\n"
+
+#: parted/parted.c:143
+msgid "LABEL-TYPE is one of: "
+msgstr "TIPO_ETIQUETA es uno de: "
+
+#: parted/parted.c:144
+msgid "FLAG is one of: "
+msgstr "FLAG es uno de: "
+
+#: parted/parted.c:145
+#, fuzzy
+msgid "UNIT is one of: "
+msgstr "FLAG es uno de: "
+
+#: parted/parted.c:146
+msgid "desired alignment: minimum or optimal"
+msgstr ""
+
+#: parted/parted.c:147
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "TIPO-PART es uno de: primário, lógico, extendido\n"
+
+#: parted/parted.c:149
+msgid "FS-TYPE is one of: "
+msgstr "TIPO-SF es uno de: "
+
+#: parted/parted.c:150
+msgid ""
+"START and END are disk locations, such as 4GB or 10%.  Negative values count "
+"from the end of the disk.  For example, -1s specifies exactly the last "
+"sector.\n"
+msgstr ""
+
+#: parted/parted.c:153
+msgid "STATE is one of: on, off\n"
+msgstr "ESTADO es uno de: on, off\n"
+
+#: parted/parted.c:154
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "DISPOSITIVO es normalmente /dev/hda o /dev/sda\n"
+
+#: parted/parted.c:155
+msgid "NAME is any word you want\n"
+msgstr "NOMBRE es cualquier palabra que quiera\n"
+
+# Please, busca este mismo texto en el .po de fileutils o textutils e intenta
+# que se parezca en la terminología,
+# por ejemplo: is distributed -> se distribuye
+#: parted/parted.c:158
+#, fuzzy
+msgid ""
+"Copyright (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"This program is free software, covered by the GNU General Public License.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+msgstr ""
+"Copyright (C) 1998 -2005 Free Software Foundation, Inc.\n"
+"Este programa es software libre, cubierto por la Licencia Pública General de "
+"GNU.\n"
+"\n"
+"Este programa se distribuye con la esperanza de que sea útil, pero SIN "
+"NINGUNA GARANTÍA; ni siquiera la garantía implícita de COMERCIABILIDAD o "
+"IDONEIDAD PARA UN FIN DETERMINADO.  Vea la Licencia Pública General de GNU "
+"para obtener más detalles.\n"
+"\n"
+
+#: parted/parted.c:204
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(tiempo que queda %.2d:%.2d)"
+
+#: parted/parted.c:223
+#, fuzzy, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+"La partición %s está usandose.  Debe desmontarla antes de modificarla con "
+"Parted."
+
+#: parted/parted.c:241
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "La(s) partición(es) en %s está(n) siendo usada(s)."
+
+#: parted/parted.c:253
+#, c-format
+msgid ""
+"The existing disk label on %s will be destroyed and all data on this disk "
+"will be lost. Do you want to continue?"
+msgstr ""
+
+#: parted/parted.c:502
+msgid "New disk label type?"
+msgstr "¿Nuevo tipo de etiqueta de disco?"
+
+#: parted/parted.c:562
+msgid "Partition type?"
+msgstr "¿Tipo de partición?"
+
+#: parted/parted.c:580 parted/parted.c:766
+msgid "Partition name?"
+msgstr "¿Nombre de la partición?"
+
+#: parted/parted.c:588
+msgid "File system type?"
+msgstr "¿Tipo de sistema de ficheros?"
+
+#: parted/parted.c:594 parted/parted.c:1342
+msgid "Start?"
+msgstr "¿Inicio?"
+
+#: parted/parted.c:596 parted/parted.c:1344
+msgid "End?"
+msgstr "¿Fin?"
+
+#: parted/parted.c:661
+#, fuzzy, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s.%s"
+msgstr ""
+"Pidió crear una partición en %s - %s. Lo más cerca que Parted puede manejar "
+"es %s - %s."
+
+#: parted/parted.c:666
+msgid ""
+"\n"
+"Is this still acceptable to you?"
+msgstr ""
+
+#: parted/parted.c:688
+msgid "The resulting partition is not properly aligned for best performance."
+msgstr ""
+
+#: parted/parted.c:763 parted/parted.c:1383 parted/parted.c:1455
+#: parted/parted.c:1489
+msgid "Partition number?"
+msgstr "¿Número de la partición?"
+
+#: parted/parted.c:841
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d.  Each cylinder is %s.\n"
+msgstr ""
+
+#: parted/parted.c:881
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr ""
+
+#: parted/parted.c:883
+#, fuzzy, c-format
+msgid "Disk %s: %s\n"
+msgstr "%s  %s  %s"
+
+#: parted/parted.c:884
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr ""
+
+#: parted/parted.c:896
+#, fuzzy, c-format
+msgid "Partition Table: %s\n"
+msgstr "¿Nombre de la partición?"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Number"
+msgstr "Numero"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Start"
+msgstr "Inicio"
+
+#: parted/parted.c:1008 parted/parted.c:1011
+msgid "End"
+msgstr "Fin"
+
+#: parted/parted.c:1011
+msgid "Size"
+msgstr "Tamaño"
+
+#: parted/parted.c:1015
+msgid "Type"
+msgstr "Typo"
+
+#: parted/parted.c:1017
+msgid "File system"
+msgstr "Sistema de ficheros"
+
+#: parted/parted.c:1020
+msgid "Name"
+msgstr "Nombre"
+
+#: parted/parted.c:1022
+msgid "Flags"
+msgstr "Banderas"
+
+#: parted/parted.c:1079
+msgid "Free Space"
+msgstr ""
+
+#: parted/parted.c:1241
+#, c-format
+msgid ""
+"A %s %s partition was found at %s -> %s.  Do you want to add it to the "
+"partition table?"
+msgstr ""
+"Ha sido encontrada una partición %s %s en %s -> %s.  ¿Quiere añadirla a la "
+"tabla de particiones?"
+
+#: parted/parted.c:1280
+msgid "searching for file systems"
+msgstr "buscando los sistemas de ficheros"
+
+#: parted/parted.c:1408
+msgid "New device?"
+msgstr "¿Nuevo dispositivo?"
+
+#: parted/parted.c:1453
+msgid "alignment type(min/opt)"
+msgstr ""
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d aligned\n"
+msgstr ""
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d not aligned\n"
+msgstr ""
+
+#: parted/parted.c:1491
+#, fuzzy
+msgid "Flag to Invert?"
+msgstr "¿Bandera a cambiar?"
+
+#: parted/parted.c:1496
+msgid "New state?"
+msgstr "¿Nuevo estado?"
+
+#: parted/parted.c:1533
+msgid "Unit?"
+msgstr "¿Unidad?"
+
+#: parted/parted.c:1651
+#, fuzzy
+msgid "align-check"
+msgstr "comprobar"
+
+#: parted/parted.c:1654
+msgid ""
+"align-check TYPE N                        check partition N for TYPE(min|"
+"opt) alignment"
+msgstr ""
+
+#: parted/parted.c:1662
+msgid "help"
+msgstr "help"
+
+#: parted/parted.c:1665
+#, fuzzy
+msgid ""
+"help [COMMAND]                           print general help, or help on "
+"COMMAND"
+msgstr ""
+"help [ORDEN]                 muestra la ayuda general, o la ayuda sobre la "
+"ORDEN"
+
+#: parted/parted.c:1671
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:1671
+#, fuzzy
+msgid "mktable"
+msgstr "mklabel"
+
+#: parted/parted.c:1674
+#, fuzzy
+msgid ""
+"mklabel,mktable LABEL-TYPE               create a new disklabel (partition "
+"table)"
+msgstr ""
+"mklabel TIPO-ETIQUETA        crea una nueva etiqueta de disco (en la tabla "
+"de partición)"
+
+#: parted/parted.c:1680
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:1683
+msgid "mkpart PART-TYPE [FS-TYPE] START END     make a partition"
+msgstr "mkpart TIPO-PART [TIPO-SF] INICIO FIN     crea una partición"
+
+#: parted/parted.c:1689
+#, fuzzy
+msgid ""
+"'mkpart' makes a partition without creating a new file system on the "
+"partition.  FS-TYPE may be specified to set an appropriate partition ID.\n"
+msgstr ""
+"mkpart crea una partición sin crear un nuevo sistema de ficheros en la "
+"partición. Debe ser especificado el TIPO-SF para asignar una ID de "
+"partición.\n"
+
+#: parted/parted.c:1694
+msgid "name"
+msgstr "name"
+
+#: parted/parted.c:1697
+#, fuzzy
+msgid "name NUMBER NAME                         name partition NUMBER as NAME"
+msgstr "name NUMERO NOMBRE            nombra la partición NUMERO como NOMBRE"
+
+#: parted/parted.c:1702
+msgid "print"
+msgstr "print"
+
+#: parted/parted.c:1705
+msgid ""
+"print [devices|free|list,all|NUMBER]     display the partition table, "
+"available devices, free space, all found partitions, or a particular "
+"partition"
+msgstr ""
+
+#: parted/parted.c:1710
+#, fuzzy
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+"Sin argumentos, print muestra la tabla de particiones entera.  Si se\n"
+"da un número de partición, se muestra la información más detallada\n"
+"sobre esa particion.\n"
+
+#: parted/parted.c:1712
+msgid "  devices   : display all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:1713
+msgid ""
+"  free      : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+
+#: parted/parted.c:1715
+msgid ""
+"  list, all : display the partition tables of all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:1716
+msgid ""
+"  NUMBER    : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+
+#: parted/parted.c:1721
+msgid "quit"
+msgstr "quit"
+
+#: parted/parted.c:1724
+#, fuzzy
+msgid "quit                                     exit program"
+msgstr "quit                          sale del programa"
+
+#: parted/parted.c:1729
+msgid "rescue"
+msgstr "rescue"
+
+#: parted/parted.c:1732
+#, fuzzy
+msgid ""
+"rescue START END                         rescue a lost partition near START "
+"and END"
+msgstr ""
+"rescue INICIO FIN       recupera las particiones perdidas entre INICIO y FIN"
+
+#: parted/parted.c:1738
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:1741
+#, fuzzy
+msgid "rm NUMBER                                delete partition NUMBER"
+msgstr "rm NUMERO                      borra la partición NUMERO"
+
+#: parted/parted.c:1746
+msgid "select"
+msgstr "select"
+
+#: parted/parted.c:1749
+#, fuzzy
+msgid "select DEVICE                            choose the device to edit"
+msgstr "select DISPOSITIVO           elegir el dispositivo a editar"
+
+#: parted/parted.c:1754
+msgid "set"
+msgstr "set"
+
+#: parted/parted.c:1757
+#, fuzzy
+msgid ""
+"set NUMBER FLAG STATE                    change the FLAG on partition NUMBER"
+msgstr ""
+"set NUMERO MODIF ESTADO        cambia un modificador de la partición NUMERO"
+
+#: parted/parted.c:1763
+msgid "toggle"
+msgstr ""
+
+#: parted/parted.c:1766
+#, fuzzy
+msgid ""
+"toggle [NUMBER [FLAG]]                   toggle the state of FLAG on "
+"partition NUMBER"
+msgstr "rm NUMERO                      borra la partición NUMERO"
+
+#: parted/parted.c:1772
+msgid "unit"
+msgstr "unit"
+
+#: parted/parted.c:1775
+#, fuzzy
+msgid "unit UNIT                                set the default unit to UNIT"
+msgstr ""
+"unit UNIDAD                     configura la unidad por defecto para UNIDAD"
+
+#: parted/parted.c:1780
+msgid "version"
+msgstr ""
+
+#: parted/parted.c:1783
+msgid ""
+"version                                  display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+
+#: parted/parted.c:1787
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+
+#: parted/parted.c:1855
+#, c-format
+msgid "Usage: %s [-hlmsv] [-a<align>] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+
+#: parted/parted.c:1899
+msgid "No device found"
+msgstr "No se encontró el dispositivo"
+
+#: parted/parted.c:1936
+msgid "WARNING: You are not superuser.  Watch out for permissions."
+msgstr ""
+
+#: parted/parted.c:1974
+#, fuzzy
+msgid "You may need to update /etc/fstab.\n"
+msgstr "No se olvide de actualizar /etc/fstab, si es necesario.\n"
+
+#: parted/ui.c:162
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+
+# Uso: o Modo de empleo:
+#: parted/ui.c:165
+#, fuzzy
+msgid ""
+"Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]\n"
+"Apply COMMANDs with PARAMETERS to DEVICE.  If no COMMAND(s) are given, run "
+"in\n"
+"interactive mode.\n"
+msgstr ""
+"Modo de Empleo: parted [OPCIÓN]... [DISPOSITIVO [ORDEN [PARÁMETROS]...]...]\n"
+"Aplica la(s) ORDENes con PARÁMETROS al DISPOSITIVO.  Si no se da ninguna(s) "
+"ORDEN(es), se ejecuta en\n"
+"modo interactivo.\n"
+
+#: parted/ui.c:170
+#, c-format
+msgid ""
+"\n"
+"\n"
+"You found a bug in GNU Parted! Here's what you have to do:\n"
+"\n"
+"Don't panic! The bug has most likely not affected any of your data.\n"
+"Help us to fix this bug by doing the following:\n"
+"\n"
+"Check whether the bug has already been fixed by checking\n"
+"the last version of GNU Parted that you can find at:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Please check this version prior to bug reporting.\n"
+"\n"
+"If this has not been fixed yet or if you don't know how to check,\n"
+"please visit the GNU Parted website:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"for further information.\n"
+"\n"
+"Your report should contain the version of this release (%s)\n"
+"along with the error message below, the output of\n"
+"\n"
+"\tparted DEVICE unit co print unit s print\n"
+"\n"
+"and the following history of commands you entered.\n"
+"Also include any additional information about your setup you\n"
+"consider important.\n"
+msgstr ""
+
+#: parted/ui.c:291
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+
+#: parted/ui.c:354
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+
+#: parted/ui.c:360
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+
+#: parted/ui.c:365
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+
+#: parted/ui.c:389
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:394
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+
+#: parted/ui.c:399
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:404
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+
+#: parted/ui.c:409
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+
+#: parted/ui.c:414
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+
+#: parted/ui.c:419
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+
+#: parted/ui.c:424
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+
+#: parted/ui.c:429
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+
+#: parted/ui.c:453
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+
+#: parted/ui.c:458
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+
+#: parted/ui.c:463
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+
+#: parted/ui.c:468
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+
+#: parted/ui.c:473
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+
+#: parted/ui.c:478
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+
+#: parted/ui.c:891
+#, fuzzy, c-format
+msgid "invalid token: %s"
+msgstr "No se puede abrir %s."
+
+#: parted/ui.c:1048
+msgid "Expecting a partition number."
+msgstr "Se esperaba un número de partición."
+
+#: parted/ui.c:1057
+msgid "Partition doesn't exist."
+msgstr "La partición no existe."
+
+#: parted/ui.c:1077
+msgid "Expecting a file system type."
+msgstr "Se esperaba un tipo de sistema de ficheros."
+
+#: parted/ui.c:1084
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Tipo de sistema de ficheros \"%s\" desconocido."
+
+#: parted/ui.c:1105
+msgid "Expecting a disk label type."
+msgstr "Se esperaba un tipo de etiqueta de disco."
+
+# No se puede.
+#: parted/ui.c:1203
+msgid "Can't create any more partitions."
+msgstr "No se puede crear más particiones."
+
+#: parted/ui.c:1213
+msgid "Expecting a partition type."
+msgstr "Se esperaba un tipo de partición."
+
+#: parted/ui.c:1361
+msgid "on"
+msgstr "on"
+
+#: parted/ui.c:1362
+msgid "off"
+msgstr "off"
+
+#: parted/ui.c:1379
+msgid "optimal"
+msgstr ""
+
+#: parted/ui.c:1380
+msgid "minimal"
+msgstr ""
+
+#: parted/ui.c:1513
+msgid "OPTIONs:"
+msgstr "OPCIÓNes:"
+
+# Comando es una barbaridad. En es@li.org usamos "orden".
+#: parted/ui.c:1518
+msgid "COMMANDs:"
+msgstr "ORDENes:"
+
+#: parted/ui.c:1521
+#, c-format
+msgid ""
+"\n"
+"Report bugs to %s\n"
+msgstr ""
+
+#: parted/ui.c:1528
+#, c-format
+msgid "Using %s\n"
+msgstr "Usando %s\n"
+
+#: parted/ui.c:1602
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr ""
+
+#, fuzzy
+#~ msgid "too few arguments"
+#~ msgstr "Demasiadas páginas incorrectas."
+
+#, fuzzy
+#~ msgid "too many arguments"
+#~ msgstr "Demasiadas páginas incorrectas."
+
+#, fuzzy
+#~ msgid "invalid minor device number: %s"
+#~ msgstr "No se puede abrir %s."
+
+#~ msgid "Could not detect file system."
+#~ msgstr "No se puede detectar el sistema de ficheros."
+
+#~ msgid "The file system is bigger than its volume!"
+#~ msgstr "¡El sistema de ficheros es más grande que su volumen!"
+
+#~ msgid "Support for opening %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "El soporte para abrir el sistema de ficheros %s aún no está implementado."
+
+#~ msgid "Support for creating %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "El soporte para crear el sistema de ficheros %s aún no está implementado."
+
+#~ msgid "Support for checking %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "El soporte para comprobar el sistema de ficheros %s aún no está "
+#~ "implementado."
+
+#~ msgid "raw block copying"
+#~ msgstr "copiando los bloque en bruto"
+
+#~ msgid "growing file system"
+#~ msgstr "sistema de ficheros creciendo"
+
+#~ msgid "Can't copy onto an overlapping partition."
+#~ msgstr "No se puede copiar sobre una partición superpuesta."
+
+#~ msgid ""
+#~ "Direct support for copying file systems is not yet implemented for %s.  "
+#~ "However, support for resizing is implemented.  Therefore, the file system "
+#~ "can be copied if the new partition is at least as big as the old one.  "
+#~ "So, either shrink the partition you are trying to copy, or copy to a "
+#~ "bigger partition."
+#~ msgstr ""
+#~ "El soporte directo para copiar sistemas de ficheros aún no está "
+#~ "implementado para %s.  Sin embargo, el soporte para redimensionar está "
+#~ "implementado.  Por lo tanto, el sistema de ficheros se puede copiar si la "
+#~ "nueva partición es por lo menos tan grande como la vieja. Así, o reduce "
+#~ "la partición que está intentando copiar o copie en una partición más "
+#~ "grande."
+
+#~ msgid "Support for copying %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "El soporte para copiar el sistema de ficheros %s aún no está implementado."
+
+#~ msgid "Support for resizing %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "El soporte para redimensionar el sistema de ficheros %s aún no está "
+#~ "implementado."
+
+#, fuzzy
+#~ msgid "The file system is in an invalid state.  Perhaps it is mounted?"
+#~ msgstr "¡El sistema de ficheros es más grande que su volumen!"
+
+#, fuzzy
+#~ msgid "checking"
+#~ msgstr "comprobar"
+
+#, fuzzy
+#~ msgid ""
+#~ "The reiserfs file system passed a basic check.  For a more comprehensive "
+#~ "check, run reiserfsck --check."
+#~ msgstr ""
+#~ "El sistema de ficheros ext2 pasó una comprobación básica. Para una "
+#~ "comprobación más a fondo, utilize el programa e2fsck."
+
+#, fuzzy
+#~ msgid "Sorry, can't move the start of reiserfs partitions yet."
+#~ msgstr ""
+#~ "¡Disculpe, aún no se puede mover el principio de las particiones ext2!"
+
+#~ msgid "shrinking"
+#~ msgstr "contrayendo"
+
+#, fuzzy
+#~ msgid "expanding"
+#~ msgstr "Aviso"
+
+#, fuzzy
+#~ msgid "Device is too small for %lu blocks."
+#~ msgstr "Sistema de ficheros demasiado pequeño para ext2."
+
+#~ msgid "Inconsistent group descriptors!"
+#~ msgstr "¡Descriptores de grupo inconsistentes!"
+
+#~ msgid "File system full!"
+#~ msgstr "¡Sistema de ficheros lleno!"
+
+#~ msgid "Invalid superblock.  Are you sure this is an ext2 file system?"
+#~ msgstr ""
+#~ "Superbloque inválido.  ¿Está seguro de que este es un sistema de ficheros "
+#~ "ext2?"
+
+#~ msgid "File system has errors!  You should run e2fsck."
+#~ msgstr "¡El sistema de ficheros tiene errores!  Debería ejecutar e2fsck."
+
+#~ msgid ""
+#~ "File system was not cleanly unmounted!  You should run e2fsck.  Modifying "
+#~ "an unclean file system could cause severe corruption."
+#~ msgstr ""
+#~ "¡El sistema de ficheros no fue desmontado limpiamente!  Debería ejecutar "
+#~ "e2fsck.  Modificar un sistema de ficheros sucio podría causar una "
+#~ "corrupción grave."
+
+#~ msgid "Error allocating buffer cache."
+#~ msgstr "Error asignando espacio en la caché del búfer."
+
+#~ msgid ""
+#~ "Found an inode with a incorrect link count.  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "Encontrado un nodo-i con una cuenta de enlace incorrecta.  ¡Mejor "
+#~ "ejecutar primero e2fsck!"
+
+#~ msgid "Not enough free inodes!"
+#~ msgstr "¡No hay suficientes nodos-i libres!"
+
+#~ msgid "File system is too full to remove a group!"
+#~ msgstr ""
+#~ "¡El sistema de ficheros está demasiado ocupado para borrar un grupo!"
+
+#~ msgid "File system has too many allocated inodes to remove a group!"
+#~ msgstr ""
+#~ "¡El sistema de ficheros tiene demasiados nodos-i asignados para borrar un "
+#~ "grupo!"
+
+#~ msgid "adding groups"
+#~ msgstr "añadiendo grupos"
+
+#~ msgid "Your file system is too full to resize it to %i blocks.  Sorry."
+#~ msgstr ""
+#~ "Su sistema de ficheros está demasiado lleno para redimensionarlo a %i "
+#~ "bloques.  Disculpe."
+
+#~ msgid ""
+#~ "Your file system has too many occupied inodes to resize it to %i blocks.  "
+#~ "Sorry."
+#~ msgstr ""
+#~ "Su sistema de ficheros tiene demasiados nodos-i ocupados para "
+#~ "redimensionarlo a %i bloques.  Disculpe."
+
+#~ msgid "File system was not cleanly unmounted!  You should run e2fsck."
+#~ msgstr ""
+#~ "¡El sistema de ficheros no fue desmontado limpiamente!  Debería ejecutar "
+#~ "e2fsck."
+
+#~ msgid ""
+#~ "The file system has the 'dir_index' feature enabled.  Parted can only "
+#~ "resize the file system if it disables this feature.  You can enable it "
+#~ "later by running 'tune2fs -O dir_index DEVICE' and then 'e2fsck -fD "
+#~ "DEVICE'."
+#~ msgstr ""
+#~ "El sistema de ficheros tiene la opción 'dir_index' habilitada.  Parted "
+#~ "sólo pude redimensionar el sistema de ficheros si desactiva esta opción.  "
+#~ "Puede habilitarla después ejecutando 'tune2fs -O dir_index UNIDAD' y "
+#~ "luego 'e2fsck -fD UNIDAD'."
+
+#~ msgid "Cross-linked blocks found!  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "¡Se encontraron bloques con referencia cruzada!  ¡Mejor ejecutar primero "
+#~ "e2fsck!"
+
+#~ msgid "Block %i has no reference?  Weird."
+#~ msgstr "¿El bloque %i no tiene una referencia?  Estraño."
+
+#, fuzzy
+#~ msgid "Block %i shouldn't have been marked (%d, %d)!"
+#~ msgstr "¡El bloque %i no debería haber sido marcado!"
+
+#~ msgid ""
+#~ "The ext2 file system passed a basic check.  For a more comprehensive "
+#~ "check, use the e2fsck program."
+#~ msgstr ""
+#~ "El sistema de ficheros ext2 pasó una comprobación básica. Para una "
+#~ "comprobación más a fondo, utilize el programa e2fsck."
+
+#~ msgid "Sorry, can't move the start of ext2 partitions yet!"
+#~ msgstr ""
+#~ "¡Disculpe, aún no se puede mover el principio de las particiones ext2!"
+
+#~ msgid "Couldn't flush buffer cache!"
+#~ msgstr "¡No se pudo vaciar la caché del búfer!"
+
+#~ msgid "writing per-group metadata"
+#~ msgstr "escribiendo metadatos por-grupo"
+
+#~ msgid "File system too small for ext2."
+#~ msgstr "Sistema de ficheros demasiado pequeño para ext2."
+
+#~ msgid ""
+#~ "You need %s of free disk space to shrink this partition to this size.  "
+#~ "Currently, only %s is free."
+#~ msgstr ""
+#~ "Necesita %s de espacio disco libre para reducir esta partición a este "
+#~ "tamaño. Actualmente, sólo %s está libre."
+
+#~ msgid ""
+#~ "Cluster start delta = %d, which is not a multiple of the cluster size %d."
+#~ msgstr ""
+#~ "El inicio delta del cluster = %d, que no es un múltiplo del tamaño de "
+#~ "cluster %d."
+
+#~ msgid "Partition too big/small for a %s file system."
+#~ msgstr "Partición demasiado grande/pequeña para un sistema de ficheros %s."
+
+#~ msgid ""
+#~ "The FATs don't match.  If you don't know what this means, then select "
+#~ "cancel, run scandisk on the file system, and then come back."
+#~ msgstr ""
+#~ "Las FATs no son iguales.  Si no sabe que significa esto, seleccione "
+#~ "cancelar, ejecute scandisk en el sistema de ficheros, y después vuelva."
+
+#~ msgid "There are no possible configurations for this FAT type."
+#~ msgstr "No hay configuraciones posibles para este tipo de FAT."
+
+#~ msgid ""
+#~ "File system doesn't have expected sizes for Windows to like it.  Cluster "
+#~ "size is %dk (%dk expected); number of clusters is %d (%d expected); size "
+#~ "of FATs is %d sectors (%d expected)."
+#~ msgstr ""
+#~ "El sistema de ficheros no tiene los tamaños esperados para que los "
+#~ "utilize Windows.  El tamaño del cluster es %dk (se esperaba %dk); el "
+#~ "número de clusters es de %d (se esperaba %d); el tamaño de la FAT es de "
+#~ "%d sectores (se esperaba %d)."
+
+#~ msgid ""
+#~ "File system is reporting the free space as %d clusters, not %d clusters."
+#~ msgstr ""
+#~ "El sistema de ficheros está informando que el espacio libre de clusters "
+#~ "es de %d, no de %d clusters."
+
+#~ msgid ""
+#~ "There's not enough room in the root directory for all of the files.  "
+#~ "Either cancel, or ignore to lose the files."
+#~ msgstr ""
+#~ "No hay espacio suficiente en el directorio root para todos los ficheros.  "
+#~ "Puede cancelar o descartar perdiendo los ficheros."
+
+#~ msgid "Error writing to the root directory."
+#~ msgstr "Error al escribir en el directorio root."
+
+#~ msgid ""
+#~ "If you leave your file system as FAT16, then you will have no problems."
+#~ msgstr ""
+#~ "Si deja su sistema de ficheros como FAT16, entonces no tendrá problemas."
+
+#~ msgid ""
+#~ "If you convert to FAT16, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual)."
+#~ msgstr ""
+#~ "Si convierte a FAT16, y MS Windows está instalado en esa partición, "
+#~ "entonces debería re-instalar el cargador de arranque de MS Windows.  Si "
+#~ "quiere hacer esto, debería consultar el manual de Parted (o el manual de "
+#~ "su distribución)."
+
+#~ msgid ""
+#~ "If you leave your file system as FAT32, then you will not introduce any "
+#~ "new problems."
+#~ msgstr ""
+#~ "Si deja su sistema de ficheros como FAT32, entonces no tendrá nuevos "
+#~ "problemas."
+
+#~ msgid ""
+#~ "If you convert to FAT32, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual).  Also, converting to FAT32 will make the file system unreadable "
+#~ "by MS DOS, MS Windows 95a, and MS Windows NT."
+#~ msgstr ""
+#~ "Si convierte a FAT32, y MS Windows está instalado en la partición, tiene "
+#~ "que re-instalar el cargador de arranque de MS Windows. Si quiere hacerlo, "
+#~ "debería consultar el manual de Parted (o el manual de su distribución). "
+#~ "También, la conversión a FAT32 hará ilegible el sistema de ficheros para "
+#~ "MS DOS, MS Windows 95a y MS Windows NT."
+
+#~ msgid "%s  %s  %s"
+#~ msgstr "%s  %s  %s"
+
+#~ msgid "Would you like to use FAT32?"
+#~ msgstr "¿Le gustaría usar FAT32?"
+
+#~ msgid "%s  %s"
+#~ msgstr "%s  %s"
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT16."
+#~ msgstr ""
+#~ "El sistema de ficheros sólo puede ser redimensionado a este tamaño para "
+#~ "convertirlo a FAT16."
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT32."
+#~ msgstr ""
+#~ "El sistema de ficheros sólo puede ser redimensionado a este tamaño para "
+#~ "convertirlo a FAT32."
+
+#~ msgid ""
+#~ "GNU Parted cannot resize this partition to this size.  We're working on "
+#~ "it!"
+#~ msgstr ""
+#~ "GNU Parted no puede redimensionar esta partición a ese tamaño. ¡Estamos "
+#~ "trabajando en ello!"
+
+#~ msgid "Bad directory entry for %s: first cluster is the end of file marker."
+#~ msgstr ""
+#~ "Entrada de directorio incorrecta para %s: el primer cluster es el final "
+#~ "de la marca del fichero."
+
+#~ msgid ""
+#~ "Bad FAT: unterminated chain for %s.  You should run dosfsck or scandisk."
+#~ msgstr ""
+#~ "FAT incorrecta: cadena no terminada para %s.  Debería ejecutar dosfsck o "
+#~ "scandisck."
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d outside file system in chain for %s.  You should run "
+#~ "dosfsck or scandisk."
+#~ msgstr ""
+#~ "FAT incorrecta: el cluster %d está fuera del sistema de ficheros en la "
+#~ "cadena para %s.  Debería ejecutar dosfsck o scandisk."
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d is cross-linked for %s.  You should run dosfsck or "
+#~ "scandisk."
+#~ msgstr ""
+#~ "FAT incorrecta: el cluster %d tiene enlaces cruzados para %s.  Debería "
+#~ "ejecutar dosfsck o scandisck."
+
+#~ msgid "%s is %dk, but it has %d clusters (%dk)."
+#~ msgstr "%s es %dk, pero tiene %d clusters (%dk)."
+
+#~ msgid ""
+#~ "The file %s is marked as a system file.  This means moving it could cause "
+#~ "some programs to stop working."
+#~ msgstr ""
+#~ "El fichero %s está marcado como un fichero del sistema.  Esto quiere "
+#~ "decir que si lo mueve puede ocurrir que algunos programas no funcionen."
+
+#~ msgid ""
+#~ "FAT %d media %x doesn't match the boot sector's media %x.  You should "
+#~ "probably run scandisk."
+#~ msgstr ""
+#~ "La FAT %d del medio %x no coincide con los sectores de arranque del medio "
+#~ "%x.  Debería, probablemente, ejecutar scandisk."
+
+#, fuzzy
+#~ msgid "fat_table_set: cluster %ld outside file system"
+#~ msgstr "fat_table_set: el cluster %ld está fuera del sistema de ficheros"
+
+#, fuzzy
+#~ msgid "fat_table_get: cluster %ld outside file system"
+#~ msgstr "fat_table_get: el cluster %ld está fuera del sistema de ficheros"
+
+#~ msgid "fat_table_alloc_cluster: no free clusters"
+#~ msgstr "fat_table_alloc_cluster: no quedan clusters libres"
+
+#~ msgid "Too many bad pages."
+#~ msgstr "Demasiadas páginas incorrectas."
+
+#~ msgid "The file system contains errors."
+#~ msgstr "El sistema de ficheros contiene errores."
+
+#~ msgid "Bad blocks could not be read."
+#~ msgstr "No pueden leerse los bloques incorrectos."
+
+#~ msgid ""
+#~ "Trying to register an extent starting at block 0x%X, but another one "
+#~ "already exists at this position.  You should check the file system!"
+#~ msgstr ""
+#~ "Intentando registrar una extensión que empieza en el bloque 0x%X, pero ya "
+#~ "existe otra en esta posición.  ¡Debería verificar el sistema de ficheros!"
+
+#~ msgid ""
+#~ "Trying to move an extent from block Ox%X to block Ox%X, but another one "
+#~ "already exists at this position.  This should not happen!"
+#~ msgstr ""
+#~ "Intentando mover una extensión desde el bloque Ox%X para bloquear Ox%X, "
+#~ "pero ya existe otra en esta posición.  ¡Esto no debería pasar!"
+
+#, fuzzy
+#~ msgid "writing HFS Master Directory Block"
+#~ msgstr "Error al escribir en el directorio raíz."
+
+#, fuzzy
+#~ msgid "Error while writing the allocation file."
+#~ msgstr "Error al escribir en el directorio raíz."
+
+#, fuzzy
+#~ msgid "Error while writing the compatibility part of the allocation file."
+#~ msgstr "Error al escribir en el directorio raíz."
+
+#, fuzzy
+#~ msgid "shrinking HFS wrapper"
+#~ msgstr "contrayendo"
+
+#, fuzzy
+#~ msgid "Journal offset or size is not multiple of the sector size."
+#~ msgstr ""
+#~ "El inicio delta del cluster = %d, que no es un múltiplo del tamaño de "
+#~ "cluster %d."
+
+#, fuzzy
+#~ msgid "Some header fields are not multiple of the sector size."
+#~ msgstr ""
+#~ "El inicio delta del cluster = %d, que no es un múltiplo del tamaño de "
+#~ "cluster %d."
+
+#, fuzzy
+#~ msgid ""
+#~ "A reference to an extent comes from a place it should not.  You should "
+#~ "check the file system!"
+#~ msgstr ""
+#~ "Intentando registrar una extensión que empieza en el bloque 0x%X, pero ya "
+#~ "existe otra en esta posición.  ¡Debería verificar el sistema de ficheros!"
+
+#, fuzzy
+#~ msgid "Could not cache the file system in memory."
+#~ msgstr "No se puede detectar el sistema de ficheros."
+
+#, fuzzy
+#~ msgid "Bad blocks list could not be loaded."
+#~ msgstr "No pueden leerse los bloques incorrectos."
+
+#~ msgid "An error occurred during extent relocation."
+#~ msgstr "Ocurrió un error durante la relocalización de la extensión."
+
+#~ msgid "The partition must have one of the following FS-TYPEs: "
+#~ msgstr "La partición debe tener uno de los siguientes TIPOS de SF: "
+
+#~ msgid "Source device?"
+#~ msgstr "¿Dispositivo de origen?"
+
+#~ msgid "Source partition number?"
+#~ msgstr "¿Número de la partición de origen?"
+
+#, fuzzy
+#~ msgid "Can't copy an extended partition."
+#~ msgstr "No es pueden copiar las particiones extendidas."
+
+#~ msgid "Destination partition number?"
+#~ msgstr "¿Número de la partición de destino?"
+
+#, fuzzy
+#~ msgid ""
+#~ "An extended partition cannot hold a file system.  Did you want mkpart?"
+#~ msgstr ""
+#~ "La particiones extendidas no puede sostener un sistema de ficheros.  "
+#~ "¿Quiere mkpart?"
+
+#~ msgid "Can't move an extended partition."
+#~ msgstr "No se pueden mover una partición extendida."
+
+#~ msgid "Can't move a partition onto itself.  Try using resize, perhaps?"
+#~ msgstr ""
+#~ "No se puede mover una partición sobre sí misma.  ¿Pruebe a usar "
+#~ "redimensionar, quizás?"
+
+#~ msgid "Minor: %d\n"
+#~ msgstr "Minor: %d\n"
+
+#, fuzzy
+#~ msgid "Flags: %s\n"
+#~ msgstr "Banderas: "
+
+#~ msgid "File System: %s\n"
+#~ msgstr "Sistema de ficheros: %s\n"
+
+#, fuzzy
+#~ msgid "Size:         "
+#~ msgstr "Tamaño:         %10.3fMb (%d%%)\n"
+
+#~ msgid "Minimum size: "
+#~ msgstr "Tamaño mínimo: "
+
+#~ msgid "Maximum size: "
+#~ msgstr "Tamaño máximo: "
+
+#~ msgid "check"
+#~ msgstr "comprobar"
+
+#, fuzzy
+#~ msgid ""
+#~ "check NUMBER                             do a simple check on the file "
+#~ "system"
+#~ msgstr ""
+#~ "comprueba NUMERO                   hace una comprobación simple del "
+#~ "sistema de ficheros"
+
+#~ msgid "cp"
+#~ msgstr "cp"
+
+#~ msgid ""
+#~ "cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   copy file system to another "
+#~ "partition"
+#~ msgstr ""
+#~ "cp [DESDE-DISPOSITIVO] DE-NUMERO A-NUMERO   copia el sistema de ficheros "
+#~ "a otra partición"
+
+#~ msgid "mkfs"
+#~ msgstr "mkfs"
+
+#, fuzzy
+#~ msgid ""
+#~ "mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on "
+#~ "partition NUMBER"
+#~ msgstr ""
+#~ "mkfs NUMERO TIPO-SF           crea un sistema de ficheros TIPO-SF en la "
+#~ "partición NUMERO"
+
+#~ msgid "mkpartfs"
+#~ msgstr "mkpartfs"
+
+#~ msgid ""
+#~ "mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file "
+#~ "system"
+#~ msgstr ""
+#~ "mkpartfs TIPO-PART TIPO-SF INICIO FIN     crear una partición con un "
+#~ "sistema de ficheros"
+
+#~ msgid "move"
+#~ msgstr "move"
+
+#, fuzzy
+#~ msgid "move NUMBER START END                    move partition NUMBER"
+#~ msgstr "move NUMERO INICIO FIN        mueve la partición NUMERO"
+
+#~ msgid "resize"
+#~ msgstr "resize"
+
+#, fuzzy
+#~ msgid ""
+#~ "resize NUMBER START END                  resize partition NUMBER and its "
+#~ "file system"
+#~ msgstr ""
+#~ "resize NUMERO INICIO FIN       redimensiona el sistema de ficheros y la "
+#~ "partición NUMERO"
+
+#, fuzzy
+#~ msgid "Unable to determine the block size of this dasd"
+#~ msgstr "No se puede determinar el tamaño de %s (%s)."
+
+#~ msgid ""
+#~ "The kernel was unable to re-read the partition table on %s (%s).  This "
+#~ "means Linux won't know anything about the modifications you made until "
+#~ "you reboot.  You should reboot your computer before doing anything with "
+#~ "%s."
+#~ msgstr ""
+#~ "El núcleo no pudo releer la tabla de particiones en %s (%s).  Esto "
+#~ "significa que Linux no reconocerá las modificaciones que hizo.  Debe "
+#~ "reiniciarlo antes de hacer cualquier uso con %s."
+
+# drives -> unidades
+#~ msgid ""
+#~ "The sector size on %s is %d bytes.  Parted is known not to work properly "
+#~ "with drives with sector sizes other than %d bytes."
+#~ msgstr ""
+#~ "El tamaño del sector en %s es de %d bytes.  Parted no funciona "
+#~ "correctamente con unidades que tengan un tamaño de sector distinto de %d "
+#~ "bytes"
+
+#~ msgid "IDE"
+#~ msgstr "IDE"
+
+#~ msgid "Attempt to read sectors %ld-%ld outside of partition on %s."
+#~ msgstr ""
+#~ "Se intentaron leer los sectores %ld-%ld fuera de la partición en %s."
+
+#~ msgid ""
+#~ "This ext2 file system has a rather strange layout!  Parted can't resize "
+#~ "this (yet)."
+#~ msgstr ""
+#~ "¡Este sistema de ficheros ext2 tiene un diseño muy estraño!  Parted (aún) "
+#~ "no puede redimensionarlo."
+
+#~ msgid "File system has an incompatible feature enabled."
+#~ msgstr ""
+#~ "El sistema de ficheros tiene activada una característica incompatible."
+
+#~ msgid "where necessary, prompts for user intervention"
+#~ msgstr "donde sea necesario, pedir la intervención del usuario"
+
+#~ msgid "File system?"
+#~ msgstr "¿Sistema de ficheros?"
+
+#~ msgid ""
+#~ "You requested to move the partition to %s - %s. The closest Parted can "
+#~ "manage is %s - %s."
+#~ msgstr ""
+#~ "Pidió mover la partición a %s - %s. Lo más cerca que Parted puede manejar "
+#~ "es %s - %s."
+
+#~ msgid "Disk geometry for %s: %s - %s\n"
+#~ msgstr "Geometría de disco para %s: %s - %s\n"
+
+#~ msgid "Disk label type: %s\n"
+#~ msgstr "Tipo de etiqueta de disco: %s\n"
+
+#~ msgid ""
+#~ "You requested to resize the partition to %s - %s.  The closest Parted can "
+#~ "manage is %s - %s."
+#~ msgstr ""
+#~ "Pidió redimensionar la partición para %s - %s. Lo más cerca que Parted "
+#~ "puede manejar es %s - %s."
+
+#~ msgid ""
+#~ "print [NUMBER]                display the partition table, or a partition"
+#~ msgstr ""
+#~ "print [NUMERO]               muestra la tabla de las particiones, o una "
+#~ "partición"
+
+#~ msgid ""
+#~ "You found a bug in GNU Parted.  Please email a bug report to bug-"
+#~ "parted@gnu.org containing the version (%s), and the following message:\n"
+#~ msgstr ""
+#~ "Encontró un bicho en GNU parted.  Por favor, envíe un informe del bicho a "
+#~ "bug-parted@gnu.org conteniedo la versión (%s), y el siguiente mensaje:\n"
+
+# Pon `dodgey' entre comitas, por lo menos mientras no se encuentre una
+# traducción.
+# En otras traducciones definen dodgey como inadmisible o extraña. vll
+#~ msgid "Device %s has dodgey geometry."
+#~ msgstr "El dispositivo %s tiene una geometría incorrecta."
+
+#~ msgid "SCSI"
+#~ msgstr "SCSI"
+
+# ninguna + ni doble negación
+# Yo lo dejaría en "no es una unidad SCSI ni IDE"
+#~ msgid "Device %s is neither a SCSI nor IDE drive."
+#~ msgstr "El dispositivo %s no es una unidad SCSI ni IDE."
+
+#~ msgid "Error reading %s (%s) to determine if partition is mounted."
+#~ msgstr "Error leyendo %s (%s) para determinar si la partición está montada."
+
+# detectara -> detectó (se entiende mejor)
+# BIOS es masculino pues se trata del Sistema Básico de Entrada/Salida
+#~ msgid ""
+#~ "The partition table on %s is inconsistent.  There are many reasons why "
+#~ "this might be the case.  However, the most likely reason is that Linux "
+#~ "detected the BIOS geometry for %s incorrectly.  GNU Parted suspects the "
+#~ "real geometry should be %d/%d/%d (not %d/%d/%d).  You should check with "
+#~ "your BIOS first, as this may not be correct.  You can inform Linux by "
+#~ "adding the parameter %s=%d,%d,%d to the command line.  See the LILO or "
+#~ "GRUB documentation for more information.  If you think Parted's suggested "
+#~ "geometry is correct, you may select Ignore to continue (and fix Linux "
+#~ "later).  Otherwise, select Cancel (and fix Linux and/or the BIOS now)."
+#~ msgstr ""
+#~ "La tabla de particiones en %s es inconsistente.  Hay varias razones para "
+#~ "que ocurra esto. Sin embargo, la razón más probable es que Linux detectó "
+#~ "la geometría de la BIOS para %s incorrectamente.  GNU Parted sospecha que "
+#~ "la geometría real debería ser %d/%d/%d (y no %d/%d/%d).  Debería "
+#~ "comprobar su BIOS primero, pues esta puede no ser correcta. Puede "
+#~ "informar a Linux añadiendo el parámetro %s=%d,%d,%d en la línea de "
+#~ "órdenes.  Vea la documentación de LILO o GRUB para obtener más "
+#~ "información.  Si cree que la geometría sugerida por Parted es correcta, "
+#~ "puede seleccionar Ignorar para continuar (y arreglar Linux después).  De "
+#~ "lo contrario, seleccione Cancelar (y repare Linux y/o la BIOS ahora)."
+
+# tabla de particiones
+#~ msgid ""
+#~ "The partition table on %s is inconsistent.  There are many reasons why "
+#~ "this might be the case.  Often, the reason is that Linux detected the "
+#~ "BIOS geometry incorrectly.  However, this does not appear to be the case "
+#~ "here.  It is safe to ignore,but ignoring may cause (fixable) problems "
+#~ "with some boot loaders, and may cause problems with FAT file systems.  "
+#~ "Using LBA is recommended."
+#~ msgstr ""
+#~ "La tabla de particiones en %s es inconsistente.  Hay varias razones para "
+#~ "que esto ocurra. Muchas veces, la razón es que Linux detecta la geometría "
+#~ "de la BIOS incorrectamente. Sin embargo, este no parece ser el caso aquí. "
+#~ "Puede estar seguro ignorándolo, pero el ignorarlo puede causar problemas "
+#~ "(reparables) con algunos cargadores de arranque, y puede causar problemas "
+#~ "con sistemas de ficheros FAT. Es recomendable usar LBA."
+
+# partitioning tool -> herramienta de particionado.
+#~ msgid ""
+#~ "Unable to align partition properly.  This probably means that another "
+#~ "partitioning tool generated an incorrect partition table, because it "
+#~ "didn't have the correct BIOS geometry.  It is safe to ignore,but ignoring "
+#~ "may cause (fixable) problems with some boot loaders."
+#~ msgstr ""
+#~ "No se puede alinear correctamente la partición. Esto probablemente "
+#~ "significa que otra herramienta de particionado ha generado una tabla de "
+#~ "la partición incorrecta, porque no tiene correcta la geometría de la "
+#~ "BIOS. Puede estar seguro ignorándolo, pero el ignorarlo puede causar "
+#~ "problemas (reparables) con algunos cargadores de arranque."
+
+#~ msgid "File system has an invalid signature for a FAT file systems."
+#~ msgstr ""
+#~ "El sistema de ficheros tiene una firma inválida para un sistema de "
+#~ "ficheros FAT."
+
+#~ msgid "START and END are in megabytes\n"
+#~ msgstr "INICIO y FIN son en megabytes\n"
+
+#~ msgid "Partition is being used."
+#~ msgstr "La partición está siendo usada."
+
+#~ msgid "Minor    Start       End     "
+#~ msgstr "Minor   Inicio      Fin     "
+
+#~ msgid "Type      "
+#~ msgstr "Tipo      "
+
+#~ msgid "Filesystem  "
+#~ msgstr "Sistema de ficheros  "
+
+#~ msgid "Name                  "
+#~ msgstr "Nombre               "
+
+#~ msgid ""
+#~ "  You have Windows FAT partition(s) that are not using LBA.  If your BIOS "
+#~ "supports LBA, then you should switch to LBA by setting the LBA flag on "
+#~ "all FAT partitions.  Otherwise, make sure the operating system and the "
+#~ "BIOS have the same geometry before resizing any FAT partitions."
+#~ msgstr ""
+#~ "  Tiene particiones FAT Windows que no están usando LBA.  Si su BIOS "
+#~ "soporta LBA, debería cambiarse a LBA poniendo el modificador LBA en todas "
+#~ "las particiones FAT. De otro modo, asegúrese de que el sistema operativo "
+#~ "y la BIOS tienen la misma geometría antes de redimensionar cualquiera de "
+#~ "las particiones FAT."
+
+#~ msgid ""
+#~ "The operating system thinks the geometry on %s is %d/%d/%d.  Therefore, "
+#~ "cylinder 1024 ends at %.3fM.%s"
+#~ msgstr ""
+#~ "El sistema operativo opina que la geometría en %s es %d/%d/%d.  Por "
+#~ "consiguiente, el cilindro 1024 termina en %.3fM.%s"
+
+# cree, piensa (no sé, eso de "opina" no me pega, ya sé que los ordenadores
+# no piensan ni tienen creencias, pero me pega menos todavía que tengan
+# opiniones).
+#~ msgid "The operating system thinks the geometry on %s is %d/%d/%d.%s"
+#~ msgstr "El sistema operativo cree que la geometría en %s es %d/%d/%d.%s"
diff --git a/po/fr.gmo b/po/fr.gmo
new file mode 100644 (file)
index 0000000..f0c9c54
Binary files /dev/null and b/po/fr.gmo differ
diff --git a/po/fr.po b/po/fr.po
new file mode 100644 (file)
index 0000000..5988510
--- /dev/null
+++ b/po/fr.po
@@ -0,0 +1,4016 @@
+# translation of parted to Français.
+# Copyright (C) 2009 Free Software Foundation, Inc.
+# This file is distributed under the same license as the parted package.
+# Michel Robitaille <robitail@IRO.UMontreal.CA>, traducteur since/depuis 1996.
+# Laurent Marsac <laurent DOT marsac AT laposte DOT net> 2006.
+# Nicolas Provost <nprovost AT quadriv DOT com>, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: parted 2.4\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2011-05-30 13:45+0200\n"
+"PO-Revision-Date: 2011-05-26 15:15+0100\n"
+"Last-Translator: Nicolas Provost <nprovost@quadriv.com>\n"
+"Language-Team: French <traduc@traduc.org>\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "argument non valide %s pour %s"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "argument ambigu %s pour %s"
+
+#: lib/argmatch.c:153
+#, c-format
+msgid "Valid arguments are:"
+msgstr "Arguments valides : "
+
+#: lib/closeout.c:112 libparted/labels/fdasd.c:107
+msgid "write error"
+msgstr "erreur d'écriture"
+
+#: lib/error.c:181
+msgid "Unknown system error"
+msgstr "Erreur système inconnue"
+
+#: lib/getopt.c:548 lib/getopt.c:577
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
+msgstr "%s : l'option '%s' est ambiguë\n"
+
+#: lib/getopt.c:625 lib/getopt.c:629
+#, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s : l'option '--%s' ne prend pas d'argument\n"
+
+#: lib/getopt.c:638 lib/getopt.c:643
+#, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr "%s: l'option '%c%s' ne prend pas d'argument\n"
+
+#: lib/getopt.c:686 lib/getopt.c:705
+#, c-format
+msgid "%s: option '--%s' requires an argument\n"
+msgstr "%s : l'option '--%s' requiert un argument\n"
+
+#: lib/getopt.c:743 lib/getopt.c:746
+#, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s : option inconnue '--%s'\n"
+
+#: lib/getopt.c:754 lib/getopt.c:757
+#, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "%s : option inconnue '%c%s'\n"
+
+#: lib/getopt.c:806 lib/getopt.c:809
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s : option non valide -- '%c'\n"
+
+#: lib/getopt.c:859 lib/getopt.c:876 lib/getopt.c:1084 lib/getopt.c:1102
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s : cette option requiert un argument -- '%c'\n"
+
+#: lib/getopt.c:932 lib/getopt.c:948
+#, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s : l'option '-W %s' est ambiguë\n"
+
+#: lib/getopt.c:972 lib/getopt.c:990
+#, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr "%s : l'option '-W %s' ne nécessite pas d'argument\n"
+
+#: lib/getopt.c:1011 lib/getopt.c:1029
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s : l'option '-W %s' requiert un argument\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:271
+msgid "`"
+msgstr "«"
+
+#: lib/quotearg.c:272
+msgid "'"
+msgstr "»"
+
+#: lib/regcomp.c:133
+msgid "Success"
+msgstr "Succès"
+
+#: lib/regcomp.c:136
+msgid "No match"
+msgstr "Non trouvé"
+
+#: lib/regcomp.c:139
+msgid "Invalid regular expression"
+msgstr "Expression régulière incorrecte"
+
+#: lib/regcomp.c:142
+msgid "Invalid collation character"
+msgstr "Suite de caractères invalide"
+
+#: lib/regcomp.c:145
+msgid "Invalid character class name"
+msgstr "Nom de classe de caractères invalide"
+
+#: lib/regcomp.c:148
+msgid "Trailing backslash"
+msgstr "Problème d'antislash"
+
+#: lib/regcomp.c:151
+msgid "Invalid back reference"
+msgstr "Référence invalide"
+
+#: lib/regcomp.c:154
+msgid "Unmatched [ or [^"
+msgstr "Non trouvé : [ ou [^"
+
+#: lib/regcomp.c:157
+msgid "Unmatched ( or \\("
+msgstr "Non trouvé : ( ou \\("
+
+#: lib/regcomp.c:160
+msgid "Unmatched \\{"
+msgstr "Non trouvé : \\{"
+
+#: lib/regcomp.c:163
+msgid "Invalid content of \\{\\}"
+msgstr "Contenu invalide de \\{\\}"
+
+#: lib/regcomp.c:166
+msgid "Invalid range end"
+msgstr "Nombre ou intervalle invalide."
+
+#: lib/regcomp.c:169
+msgid "Memory exhausted"
+msgstr "Mémoire épuisée"
+
+#: lib/regcomp.c:172
+msgid "Invalid preceding regular expression"
+msgstr "L'expression régulière précédente est incorrecte"
+
+#: lib/regcomp.c:175
+msgid "Premature end of regular expression"
+msgstr "Fin prématurée de l'expression régulière"
+
+#: lib/regcomp.c:178
+msgid "Regular expression too big"
+msgstr "Expression régulière trop longue"
+
+#: lib/regcomp.c:181
+msgid "Unmatched ) or \\)"
+msgstr "Non trouvé : ) ou \\)"
+
+#: lib/regcomp.c:702
+msgid "No previous regular expression"
+msgstr "Expression régulière manquante"
+
+#. TRANSLATORS: A regular expression testing for an affirmative answer
+#. (english: "yes").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^yesexpr='
+#: lib/rpmatch.c:147
+msgid "^[yY]"
+msgstr "^[oO]"
+
+#. TRANSLATORS: A regular expression testing for a negative answer
+#. (english: "no").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^noexpr='
+#: lib/rpmatch.c:160
+msgid "^[nN]"
+msgstr "^[nN]"
+
+#: lib/version-etc.c:74
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Empaqueté par %s (%s)\n"
+
+#: lib/version-etc.c:77
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Empaqueté par %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale.  Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:84
+msgid "(C)"
+msgstr "(C)"
+
+#: lib/version-etc.c:86
+msgid ""
+"\n"
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"\n"
+"Licence GPLv3+: GNU GPL version 3 ou ultérieure <http://gnu.org/licenses/gpl."
+"html>\n"
+"Logiciel libre : vous êtes libre de le modifier et de le redistribuer.\n"
+"Il n'y a AUCUNE GARANTIE, dans les limites autorisées par la loi.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:102
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Ecrit par %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:106
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Ecrit par %s et %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:110
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Ecrit par %s, %s, et %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Ecrit par %s, %s, %s,\n"
+"et %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Ecrit par %s, %s, %s,\n"
+"%s, et %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:131
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Ecrit par %s, %s, %s,\n"
+"%s, %s, et %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:139
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Ecrit par %s, %s, %s,\n"
+"%s, %s, %s, et %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:147
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Ecrit par %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"et %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:156
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Ecrit par %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, et %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:167
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Ecrit par %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, et autres auteurs.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package.  Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:245
+#, c-format
+msgid ""
+"\n"
+"Report bugs to: %s\n"
+msgstr ""
+"\n"
+"Rapports de bugs à %s\n"
+
+#: lib/version-etc.c:247
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "Envoi des rapports de bugs %s à <%s>\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "page web %s : <%s>\n"
+
+#: lib/version-etc.c:253
+#, c-format
+msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
+msgstr "%s page web : <http://www.gnu.org/software/%s/>\n"
+
+#: lib/version-etc.c:256
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
+msgstr "Aide générale des logiciels GNU : <http://www.gnu.org/gethelp/>\n"
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "mémoire épuisée"
+
+#: lib/xstrtol-error.c:63
+#, c-format
+msgid "invalid %s%s argument `%s'"
+msgstr "argument non valide `%s' pour %s%s"
+
+#: lib/xstrtol-error.c:68
+#, c-format
+msgid "invalid suffix in %s%s argument `%s'"
+msgstr "suffixe non valide dans %s%s argument `%s'"
+
+#: lib/xstrtol-error.c:72
+#, c-format
+msgid "%s%s argument `%s' too large"
+msgstr "%s%s argument `%s' trop grand"
+
+#: libparted/arch/beos.c:245
+msgid "Disk Image"
+msgstr "Image Disque"
+
+#: libparted/arch/beos.c:346 libparted/arch/gnu.c:277
+#: libparted/arch/linux.c:1545
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "Erreur pendant l'ouverture de %s: %s"
+
+#: libparted/arch/beos.c:357 libparted/arch/gnu.c:287
+#: libparted/arch/linux.c:1556
+#, c-format
+msgid "Unable to open %s read-write (%s).  %s has been opened read-only."
+msgstr ""
+"Impossible d'ouvrir %s en lecture-écriture (%s). %s a été ouvert en lecture "
+"seule."
+
+#: libparted/arch/beos.c:419 libparted/arch/linux.c:1714
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s lors d'un positionnement pour lecture sur %s"
+
+#: libparted/arch/beos.c:452 libparted/arch/gnu.c:465 libparted/arch/gnu.c:564
+#: libparted/arch/gnu.c:692 libparted/arch/linux.c:1674
+#: libparted/arch/linux.c:1755
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s lors de la lecture sur %s"
+
+#: libparted/arch/beos.c:488 libparted/arch/gnu.c:525
+#: libparted/arch/linux.c:1831
+#, c-format
+msgid "Can't write to %s, because it is opened read-only."
+msgstr "Ne peut écrire sur %s car il est ouvert en lecture seule."
+
+#: libparted/arch/beos.c:504 libparted/arch/linux.c:1856
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s lors d'un positionnement pour écriture sur %s"
+
+#: libparted/arch/beos.c:541 libparted/arch/gnu.c:601 libparted/arch/gnu.c:646
+#: libparted/arch/gnu.c:723 libparted/arch/linux.c:1804
+#: libparted/arch/linux.c:1898 libparted/arch/linux.c:1970
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s lors de l'écriture sur %s"
+
+#: partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Essayez `%s --help' pour plus d'informations.\n"
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr "Usage: %s [OPTION] [PERIPHERIQUE]...\n"
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the operating system about partition table changes.\n"
+"\n"
+"  -d, --dry-run    do not actually inform the operating system\n"
+"  -s, --summary    print a summary of contents\n"
+"  -h, --help       display this help and exit\n"
+"  -v, --version    output version information and exit\n"
+msgstr ""
+"Informe le système d'exploitation des changements survenus dans la table de "
+"partitions.\n"
+"\n"
+"  -d, --dry-run    ne pas informer le système d'exploitation pour le moment\n"
+"  -s, --summary    affiche un résumé\n"
+"  -h, --help       affiche l'aide et quitte\n"
+"  -v, --version    affiche les informations de version et quitte\n"
+
+#: partprobe/partprobe.c:150
+msgid ""
+"\n"
+"When no DEVICE is given, probe all partitions.\n"
+msgstr ""
+"\n"
+"Quand aucun PERIPHERIQUE n'est précisé, teste toutes les partitions.\n"
+
+#: partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Envoyer les rapports de bugs à <%s>.\n"
+
+#: libparted/arch/gnu.c:110
+#, c-format
+msgid "Unable to open %s."
+msgstr "Impossible d'ouvrir %s."
+
+#: libparted/arch/gnu.c:130
+msgid "Unable to probe store."
+msgstr "Impossible de tester le stockage."
+
+#: libparted/arch/gnu.c:368
+msgid ""
+"The partition table cannot be re-read.  This means you need to reboot before "
+"mounting any modified partitions.  You also need to reinstall your boot "
+"loader before you reboot (which may require mounting modified partitions).  "
+"It is impossible do both things!  So you'll need to boot off a rescue disk, "
+"and reinstall your boot loader from the rescue disk.  Read section 4 of the "
+"Parted User documentation for more information."
+msgstr ""
+"La table de partition ne peut être relue, vous avez donc besoin de "
+"redémarrer avant de monter toute partition modifiée. Vous devez aussi "
+"réinstaller le gestionnaire de démarrage avant de redémarrer (ce qui peut "
+"nécessiter de monter les partitions modifiées). Il est impossible de faire "
+"ces deux choses à la fois ! C'est pourquoi vous aurez besoin de démarrer à "
+"partir d'un disque de secours et de ré-installer le gestionnaire de "
+"démarrage à partir de ce disque. Consultez la section 4 de la documentation "
+"utilisateur de Parted pour plus de détails."
+
+#: libparted/arch/gnu.c:385
+#, c-format
+msgid ""
+"The partition table on %s cannot be re-read (%s).  This means the Hurd knows "
+"nothing about any modifications you made.  You should reboot your computer "
+"before doing anything with %s."
+msgstr ""
+"La table de partition sur %s ne peut être relue (%s). Cela signifie que Hurd "
+"ne connaît rien des modifications effectuées. Vous devriez redémarrer "
+"l'ordinateur avant de faire quoi que ce soit avec %s."
+
+#: libparted/arch/gnu.c:396 parted/parted.c:1967
+msgid ""
+"You should reinstall your boot loader before rebooting.  Read section 4 of "
+"the Parted User documentation for more information."
+msgstr ""
+"Vous devriez réinstaller le gestionnaire de démarrage avant de redémarrer. "
+"Consultez la section 4 de la documentation utilisateur de Parted pour plus "
+"d'informations."
+
+#: libparted/arch/gnu.c:788
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%s essaie de synchroniser %s sur le disque"
+
+#: libparted/arch/linux.c:520
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "Ne peut évaluer le statut du périphérique %s - %s."
+
+#: libparted/arch/linux.c:577
+#, c-format
+msgid "Unable to determine the dm type of %s."
+msgstr "Impossible de déterminer le type dm de %s."
+
+#: libparted/arch/linux.c:669
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+"Impossible de déterminer la taille des secteurs de %s : %s.\n"
+"Utilisation de la taille des secteurs par défaut (%lld)."
+
+#: libparted/arch/linux.c:690
+#, c-format
+msgid ""
+"Could not determine physical sector size for %s.\n"
+"Using the logical sector size (%lld)."
+msgstr ""
+"Impossible de déterminer la taille des secteurs physiques de %s.\n"
+"Utilisation de la taille des secteurs logiques (%lld)."
+
+#: libparted/arch/linux.c:746
+#, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "Impossible de déterminer la taille de %s (%s)."
+
+#: libparted/arch/linux.c:832
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "Impossible d'obtenir l'identité du périphérique %s - %s"
+
+#: libparted/arch/linux.c:841
+msgid "Generic IDE"
+msgstr "IDE générique"
+
+#: libparted/arch/linux.c:862
+#, c-format
+msgid ""
+"Device %s has multiple (%d) logical sectors per physical sector.\n"
+"GNU Parted supports this EXPERIMENTALLY for some special disk label/file "
+"system combinations, e.g. GPT and ext2/3.\n"
+"Please consult the web site for up-to-date information."
+msgstr ""
+"Le périphérique %s a de multiples (%d) secteurs logiques par secteur "
+"physique.\n"
+"GNU Parted supporte cela de manière EXPERIMENTALE pour certaines étiquettes "
+"de disque / combinaisons spéciales de systèmes de fichiers, i.e. GPT et "
+"ext2/3.\n"
+"Merci de consulter le site web pour des informations à jour."
+
+#: libparted/arch/linux.c:1039
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "Erreur d'initialisation du périphérique SCSI %s - %s"
+
+#: libparted/arch/linux.c:1103
+#, c-format
+msgid ""
+"The device %s is so small that it cannot possibly store a file system or "
+"partition table.  Perhaps you selected the wrong device?"
+msgstr ""
+"Le périphérique %s est de si petite taille qu'il ne peut pas stocker un "
+"système de fichiers ou une table de partition. Peut-être avez-vous "
+"sélectionné le mauvais périphérique ?"
+
+#: libparted/arch/linux.c:1216
+#, c-format
+msgid ""
+"Unable to determine geometry of file/device %s.  You should not use Parted "
+"unless you REALLY know what you're doing!"
+msgstr ""
+"Impossible de déterminer la géométrie du fichier/périphérique %s. Vous ne "
+"devriez pas utiliser Parted sans VRAIMENT savoir ce que vous faites !"
+
+#: libparted/arch/linux.c:1276
+msgid "Generic SD/MMC Storage Card"
+msgstr "Carte de stockage SD/MMC générique"
+
+#: libparted/arch/linux.c:1329
+msgid "DAC960 RAID controller"
+msgstr "Contrôleur RAID DAC960"
+
+#: libparted/arch/linux.c:1334
+msgid "Promise SX8 SATA Device"
+msgstr "Périphérique Promise SX8 SATA"
+
+#: libparted/arch/linux.c:1339
+msgid "ATA over Ethernet Device"
+msgstr "Périph. ATA sur Ethernet"
+
+#: libparted/arch/linux.c:1345
+msgid "IBM S390 DASD drive"
+msgstr "Disque IBM S390 DASD"
+
+#: libparted/arch/linux.c:1351
+msgid "IBM iSeries Virtual DASD"
+msgstr "IBM iSeries Virtual DASD"
+
+#: libparted/arch/linux.c:1356
+msgid "Compaq Smart Array"
+msgstr "Compaq Smart Array"
+
+#: libparted/arch/linux.c:1361
+msgid "ATARAID Controller"
+msgstr "Contrôleur ATARAID"
+
+#: libparted/arch/linux.c:1366
+msgid "I2O Controller"
+msgstr "Contrôleur I2O"
+
+#: libparted/arch/linux.c:1371
+msgid "User-Mode Linux UBD"
+msgstr "User-Mode Linux UBD"
+
+#: libparted/arch/linux.c:1384
+#, c-format
+msgid "Linux device-mapper (%s)"
+msgstr "Mappeur de périphériques Linux (%s)"
+
+#: libparted/arch/linux.c:1395
+msgid "Xen Virtual Block Device"
+msgstr "Périphérique par blocs virtuel Xen"
+
+#: libparted/arch/linux.c:1400
+msgid "Unknown"
+msgstr "Inconnu"
+
+#: libparted/arch/linux.c:1409
+msgid "Virtio Block Device"
+msgstr "Périphérique par blocs Virtio"
+
+#: libparted/arch/linux.c:1414
+msgid "Linux Software RAID Array"
+msgstr "Grappe RAID logiciel Linux"
+
+#: libparted/arch/linux.c:1421
+msgid "ped_device_new()  Unsupported device type"
+msgstr "ped_device_new()  Type de périphérique non supporté"
+
+#: libparted/arch/linux.c:1518 libparted/arch/linux.c:1590
+#, c-format
+msgid "Error fsyncing/closing %s: %s"
+msgstr "Erreur de synchronisation/fermeture %s: %s"
+
+#: libparted/arch/linux.c:1754
+#, c-format
+msgid "end of file while reading %s"
+msgstr "fin de fichier atteinte en lisant %s"
+
+#: libparted/arch/linux.c:2390
+#, c-format
+msgid ""
+"Error informing the kernel about modifications to partition %s -- %s.  This "
+"means Linux won't know about any changes you made to %s until you reboot -- "
+"so you shouldn't mount it or use it in any way before rebooting."
+msgstr ""
+"Erreur lors de la transmission au kernel des modifications de la partition "
+"%s - %s. Cela signifie que Linux ne reconnaîtra aucun des changements faits "
+"sur %s avant de redémarrer - vous ne devriez donc pas le monter ou "
+"l'utiliser avant de redémarrer."
+
+#: libparted/arch/linux.c:2528
+#, c-format
+msgid "Unable to determine the size and length of %s."
+msgstr "Impossible de déterminer la taille de %s."
+
+#: libparted/arch/linux.c:2553
+#, c-format
+msgid "Failed to add partition %d (%s)"
+msgstr "Impossible d'ajouter la partition %d (%s)"
+
+#: libparted/arch/linux.c:2580
+#, c-format
+msgid ""
+"Partition(s) %s on %s have been written, but we have been unable to inform "
+"the kernel of the change, probably because it/they are in use.  As a result, "
+"the old partition(s) will remain in use.  You should reboot now before "
+"making further changes."
+msgstr ""
+"La (les) partition(s) %s a (ont) été écrite(s) sur %s, mais impossible "
+"d'informer le système des changements, sans doute à cause de son (leur) "
+"utilisation. Ainsi, les anciennes partitions restent en usage. Vous devriez "
+"redémarrer maintenant avant d'effectuer d'autres changements."
+
+#: libparted/arch/linux.c:2706
+#, c-format
+msgid ""
+"parted was unable to re-read the partition table on %s (%s).  This means "
+"Linux won't know anything about the modifications you made. "
+msgstr ""
+"Parted a été incapable de relire la table de partition sur %s (%s). Cela "
+"signifie que Linux ne reconnaîtra aucune des modifications effectuées avant "
+"de redémarrer. Vous devriez redémarrer votre ordinateur."
+
+#: libparted/cs/geom.c:161
+#, c-format
+msgid "Can't have the end before the start! (start sector=%jd length=%jd)"
+msgstr ""
+"La fin ne peut pas être avant le début ! (secteur début=%jd longueur=%jd)"
+
+#: libparted/cs/geom.c:169
+msgid "Can't have a partition outside the disk!"
+msgstr "La partition ne peut pas être en dehors du disque !"
+
+#: libparted/cs/geom.c:384
+#, c-format
+msgid "Attempt to write sectors %ld-%ld outside of partition on %s."
+msgstr ""
+"Tentative d'écriture des secteurs %ld-%ld en dehors de la partition sur %s."
+
+#: libparted/cs/geom.c:424
+msgid "checking for bad blocks"
+msgstr "recherche de blocs défectueux"
+
+#: libparted/debug.c:96
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr "Backtrace : %d appels sur la pile:\n"
+
+#: libparted/debug.c:109
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr "Assertion (%s) à %s: échec de %d dans la fonction %s()."
+
+#: libparted/disk.c:192
+#, c-format
+msgid "%s: unrecognised disk label"
+msgstr "Impossible d'ouvrir %s - étiquette de disque non reconnue."
+
+#: libparted/disk.c:484
+#, c-format
+msgid ""
+"This libparted doesn't have write support for %s.  Perhaps it was compiled "
+"read-only."
+msgstr ""
+"Cette librairie \"libparted\" n'a pas de support pour l'écriture sur %s. "
+"Peut-être a-t-elle été compilée pour la lecture seulement."
+
+#: libparted/disk.c:629
+#, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "La partition %d est %s mais le système de fichiers est %s."
+
+#: libparted/disk.c:838
+msgid "cylinder_alignment"
+msgstr "alignement_cylindre"
+
+#: libparted/disk.c:844
+#, c-format
+msgid "Unknown disk flag, %d."
+msgstr "Drapeau de partition inconnu, %d."
+
+#: libparted/disk.c:1283
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "Les étiquettes du disque %s ne supportent pas les partitions étendues."
+
+#: libparted/disk.c:1858
+#, c-format
+msgid "%s disk labels don't support logical or extended partitions."
+msgstr ""
+"Les étiquettes du disque %s ne supportent pas les partitions logiques ou "
+"étendues."
+
+#: libparted/disk.c:1871
+msgid "Too many primary partitions."
+msgstr "Trop de partitions primaires."
+
+#: libparted/disk.c:1880
+#, c-format
+msgid ""
+"Can't add a logical partition to %s, because there is no extended partition."
+msgstr ""
+"Impossible d'ajouter une partition logique sur %s parce qu'il n'y a pas de "
+"partition étendue."
+
+#: libparted/disk.c:1904
+#, c-format
+msgid "Can't have more than one extended partition on %s."
+msgstr "On ne peut avoir plus d'une partition étendue sur %s"
+
+#: libparted/disk.c:1914
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr "Ne peut avoir de partition logique en dehors de la partition étendue."
+
+#: libparted/disk.c:1939
+#, c-format
+msgid "Can't have a logical partition outside of the extended partition on %s."
+msgstr ""
+"Ne peut avoir une partition logique en dehors de la partition étendue sur %s."
+
+#: libparted/disk.c:1949 libparted/disk.c:2008 libparted/disk.c:2186
+msgid "Can't have overlapping partitions."
+msgstr "Impossible d'avoir des partitions qui se chevauchent."
+
+#: libparted/disk.c:1957
+msgid "Can't have a primary partition inside an extended partition."
+msgstr ""
+"Impossible d'avoir une partition primaire à l'intérieur d'une partition "
+"étendue."
+
+#: libparted/disk.c:2387
+msgid "metadata"
+msgstr "méta-données"
+
+#: libparted/disk.c:2389
+msgid "free"
+msgstr "libre"
+
+#: libparted/disk.c:2391 parted/ui.c:1194 parted/ui.c:1222
+msgid "extended"
+msgstr "étendue"
+
+#: libparted/disk.c:2393 parted/ui.c:1198 parted/ui.c:1226
+msgid "logical"
+msgstr "logique"
+
+#: libparted/disk.c:2395 parted/ui.c:1190 parted/ui.c:1218
+msgid "primary"
+msgstr "primaire"
+
+#: libparted/disk.c:2411
+msgid "boot"
+msgstr "démarrage"
+
+#: libparted/disk.c:2413
+msgid "bios_grub"
+msgstr "bios_grub"
+
+#: libparted/disk.c:2415
+msgid "root"
+msgstr "racine"
+
+#: libparted/disk.c:2417
+msgid "swap"
+msgstr "partition d'échange (swap)"
+
+#: libparted/disk.c:2419
+msgid "hidden"
+msgstr "caché"
+
+#: libparted/disk.c:2421
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2423
+msgid "lvm"
+msgstr "lvm (gestionnaire de volumes logiques)"
+
+#: libparted/disk.c:2425
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2427
+msgid "hp-service"
+msgstr "hp-service"
+
+#: libparted/disk.c:2429
+msgid "palo"
+msgstr "palo"
+
+#: libparted/disk.c:2431
+msgid "prep"
+msgstr "prep"
+
+#: libparted/disk.c:2433
+msgid "msftres"
+msgstr "msftres"
+
+#: libparted/disk.c:2435
+msgid "atvrecv"
+msgstr "atvrecv"
+
+#: libparted/disk.c:2437
+msgid "diag"
+msgstr "diag"
+
+#: libparted/disk.c:2439
+msgid "legacy_boot"
+msgstr "legacy_boot"
+
+#: libparted/disk.c:2445
+#, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Fanion de partition inconnu %d."
+
+#: libparted/exception.c:77
+msgid "Information"
+msgstr "Information"
+
+#: libparted/exception.c:78
+msgid "Warning"
+msgstr "Avertissement"
+
+#: libparted/exception.c:79
+msgid "Error"
+msgstr "Erreur"
+
+#: libparted/exception.c:80
+msgid "Fatal"
+msgstr "Fatal"
+
+#: libparted/exception.c:81
+msgid "Bug"
+msgstr "Bug"
+
+#: libparted/exception.c:82
+msgid "No Implementation"
+msgstr "Pas d'implémentation"
+
+#: libparted/exception.c:86
+msgid "Fix"
+msgstr "Réparer"
+
+#: libparted/exception.c:87
+msgid "Yes"
+msgstr "Oui"
+
+#: libparted/exception.c:88
+msgid "No"
+msgstr "Non"
+
+#: libparted/exception.c:89
+msgid "OK"
+msgstr "OK"
+
+#: libparted/exception.c:90
+msgid "Retry"
+msgstr "Réessayer"
+
+#: libparted/exception.c:91
+msgid "Ignore"
+msgstr "Ignorer"
+
+#: libparted/exception.c:92
+msgid "Cancel"
+msgstr "Annuler"
+
+#: libparted/exception.c:132
+#, c-format
+msgid ""
+"A bug has been detected in GNU Parted.  Refer to the web site of parted "
+"http://www.gnu.org/software/parted/parted.html for more information of what "
+"could be useful for bug submitting!  Please email a bug report to %s "
+"containing at least the version (%s) and the following message:  "
+msgstr ""
+"Une anomalie a été détectée dans GNU Parted. Reportez-vous au site de Parted "
+"http://www.gnu.org/software/parted/parted.html pour plus d'informations sur "
+"ce qui pourrait être utile pour le signalement de l'anomalie ! SVP rapportez "
+"celle-ci à %s en précisant au moins la version (%s) et le message suivant : "
+
+#: libparted/labels/aix.c:103
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr ""
+"Le support pour la lecture du système de fichiers AIX n'est pas encore "
+"implanté."
+
+#: libparted/labels/aix.c:114
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr ""
+"Le support pour l'écriture du système de fichiers AIX n'est pas encore "
+"implanté."
+
+#: libparted/labels/aix.c:127
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr ""
+"Le support pour la création de partitions AIX n'est pas encore implanté."
+
+#: libparted/labels/aix.c:137
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr "Le support pour la copie de partitions AIX n'est pas encore implanté."
+
+#: libparted/labels/aix.c:155
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr ""
+"Le support pour la création du type de système de fichiers AIX n'est pas "
+"encore implanté."
+
+#: libparted/labels/aix.c:165
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr ""
+"Le support pour la modification des drapeaux du système de fichiers AIX "
+"n'est pas encore implanté."
+
+#: libparted/labels/bsd.c:571 libparted/labels/dasd.c:833
+#: libparted/labels/dos.c:2176 libparted/labels/dvh.c:787
+#: libparted/labels/gpt.c:1782 libparted/labels/loop.c:247
+#: libparted/labels/mac.c:1426 libparted/labels/pc98.c:748
+#: libparted/labels/rdb.c:1052 libparted/labels/sun.c:780
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "Impossible de satisfaire toutes les contraintes sur la partition."
+
+#: libparted/labels/bsd.c:596
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "Impossible d'allouer l'entrée d'une étiquette de disque BSD."
+
+#: libparted/labels/dasd.c:859
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "Impossible d'allouer l'entrée d'une étiquette de disque DASD."
+
+#: libparted/labels/dos.c:966
+#, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr "Table de partition invalide sur %s - signature erronée %x."
+
+#: libparted/labels/dos.c:994
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "Table de partition invalide - partition récursive sur %s."
+
+#: libparted/labels/dos.c:1504
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr ""
+"Les partitions étendues ne peuvent être cachées sur les disques étiquetés MS-"
+"DOS."
+
+#: libparted/labels/dos.c:2158
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+"Parted ne peut redimensionner les partitions gérées par Windows Dynamic Disk."
+
+#: libparted/labels/dvh.c:200
+#, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr "%s n'a pas de partition étendue (partition d'en-tête de volume)."
+
+#: libparted/labels/dvh.c:326
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr ""
+"La somme de contrôle est erronée, cela indique que la table de partition est "
+"corrompue."
+
+#: libparted/labels/dvh.c:631
+msgid "Only primary partitions can be root partitions."
+msgstr "Seules les partitions primaires peuvent être des partitions racines."
+
+#: libparted/labels/dvh.c:645
+msgid "Only primary partitions can be swap partitions."
+msgstr "Seules les partitions primaires peuvent être des partitions d'échange."
+
+#: libparted/labels/dvh.c:659
+msgid "Only logical partitions can be a boot file."
+msgstr "Seules les partitions logiques peuvent être amorçables."
+
+#: libparted/labels/dvh.c:736
+#, c-format
+msgid ""
+"failed to set dvh partition name to %s:\n"
+"Only logical partitions (boot files) have a name."
+msgstr ""
+"impossible de fixer le nom de la partition dvh en %s :\n"
+"Seules les partitions logiques (d'amorçage) ont un nom."
+
+#: libparted/labels/dvh.c:829
+msgid "Too many primary partitions"
+msgstr "Trop de partitions primaires"
+
+#: libparted/labels/fdasd.c:98
+msgid "open error"
+msgstr "erreur d'ouverture"
+
+#: libparted/labels/fdasd.c:101
+msgid "seek error"
+msgstr "erreur de positionnement"
+
+#: libparted/labels/fdasd.c:104
+msgid "read error"
+msgstr "erreur de lecture"
+
+#: libparted/labels/fdasd.c:110
+msgid "ioctl() error"
+msgstr "erreur ioctl()"
+
+#: libparted/labels/fdasd.c:114
+msgid "API version mismatch"
+msgstr "mauvaise version d'API"
+
+#: libparted/labels/fdasd.c:118
+msgid "Unsupported disk type"
+msgstr "Type de disque non supporté"
+
+#: libparted/labels/fdasd.c:122
+msgid "Unsupported disk format"
+msgstr "Format de disque non supporté"
+
+#: libparted/labels/fdasd.c:126
+msgid "Disk is in use"
+msgstr "Disque en cours d'utilisation"
+
+#: libparted/labels/fdasd.c:130
+msgid "Syntax error in config file"
+msgstr "Erreur de syntaxe dans le fichier de configuration"
+
+#: libparted/labels/fdasd.c:134
+msgid "Volume label is corrupted"
+msgstr "Etiquette de volume corrompue"
+
+#: libparted/labels/fdasd.c:138
+msgid "A data set name is corrupted"
+msgstr "Un ensemble de données (noms) est corrompu"
+
+#: libparted/labels/fdasd.c:142
+msgid "Memory allocation failed"
+msgstr "Echec d'une allocation de mémoire"
+
+#: libparted/labels/fdasd.c:146
+msgid "Device verification failed"
+msgstr "Echec de vérification du périphérique"
+
+#: libparted/labels/fdasd.c:147
+msgid "The specified device is not a valid DASD device"
+msgstr "Le périphérique spécifié n'est pas un périphérique DASD valide"
+
+#: libparted/labels/fdasd.c:150 libparted/labels/vtoc.c:179
+msgid "Fatal error"
+msgstr "Erreur fatale"
+
+#: libparted/labels/fdasd.c:226
+msgid "No room for volume label."
+msgstr "Pas de place pour l'étiquette de volume."
+
+#: libparted/labels/fdasd.c:234
+msgid "No room for partition info."
+msgstr "Pas de place pour les informations de partition."
+
+#: libparted/labels/fdasd.c:709
+msgid "Invalid VTOC."
+msgstr "Table de volume (VTOC) incorrecte."
+
+#: libparted/labels/fdasd.c:766
+msgid "Could not retrieve API version."
+msgstr "Impossible de détecter la version de l'API."
+
+#: libparted/labels/fdasd.c:769
+#, c-format
+msgid ""
+"The current API version '%d' doesn't match dasd driver API version '%d'!"
+msgstr ""
+"La version courante de l'API '%d' ne correspond pas avec celle du pilote "
+"DASD '%d' !"
+
+#: libparted/labels/fdasd.c:806
+msgid "Could not retrieve disk geometry information."
+msgstr "Impossible d'analyser la géométrie du disque."
+
+#: libparted/labels/fdasd.c:810
+msgid "Could not retrieve blocksize information."
+msgstr "Impossible de trouver la taille de bloc."
+
+#: libparted/labels/fdasd.c:815
+msgid "Could not retrieve disk information."
+msgstr "Impossible de trouver les informations sur le disque."
+
+#: libparted/labels/gpt.c:493
+#, c-format
+msgid ""
+"%s contains GPT signatures, indicating that it has a GPT table.  However, it "
+"does not have a valid fake msdos partition table, as it should.  Perhaps it "
+"was corrupted -- possibly by a program that doesn't understand GPT partition "
+"tables.  Or perhaps you deleted the GPT table, and are now using an msdos "
+"partition table.  Is this a GPT partition table?"
+msgstr ""
+"%s contient des signatures GPT, indiquant qu'il a une table GPT. Cependant, "
+"il n'a pas de table fictive de partitions MSDOS valide tel qu'il le devrait. "
+"Peut-être a-t-elle été corrompue - peut-être par un programme qui ne "
+"comprend pas les tables de partitions GPT. Ou peut-être avez-vous supprimé "
+"la table GPT et utilisez-vous une table de partition MS-DOS. Ceci est-il une "
+"table de partitions GPT ?"
+
+#: libparted/labels/gpt.c:693
+#, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise.  Please report this!"
+msgstr ""
+"Le format de la table de partitions GPT est de version %x, ce qui est plus "
+"récent que ce que Parted peut reconnaître. SVP prévenez-nous !"
+
+#: libparted/labels/gpt.c:740
+#, c-format
+msgid ""
+"Not all of the space available to %s appears to be used, you can fix the GPT "
+"to use all of the space (an extra %llu blocks) or continue with the current "
+"setting? "
+msgstr ""
+"Il semble que l'espace disponible sur %s ne soit pas totalement utilisé, "
+"voulez-vous ajuster la table GPT pour utiliser tout l'espace (%llu blocs en "
+"plus) ou continuer ainsi ?"
+
+#: libparted/labels/gpt.c:952
+msgid ""
+"The backup GPT table is not at the end of the disk, as it should be.  This "
+"might mean that another operating system believes the disk is smaller.  Fix, "
+"by moving the backup to the end (and removing the old backup)?"
+msgstr ""
+"La sauvegarde de la table GPT n'est pas à la fin du disque ainsi qu'elle le "
+"devrait. Cela peut vouloir dire qu'un autre sytème d'exploitation croit que "
+"le disque est plus petit. Faut-il corriger en déplaçant la copie à la fin du "
+"disque (et enlever la vieille sauvegarde) ?"
+
+#: libparted/labels/gpt.c:976
+msgid ""
+"Both the primary and backup GPT tables are corrupt.  Try making a fresh "
+"table, and using Parted's rescue feature to recover partitions."
+msgstr ""
+"Les tables GPT primaire et secondaire (sauvegarde) sont corrompues toutes "
+"les deux. Essayer d'écrire une nouvelle table et d'utiliser le mode de "
+"secours de Parted pour recupérer les partitions."
+
+#: libparted/labels/gpt.c:987
+msgid ""
+"The backup GPT table is corrupt, but the primary appears OK, so that will be "
+"used."
+msgstr ""
+"La sauvegarde de table GPT est corrompue mais l'originale semble valide et "
+"sera donc utilisée."
+
+#: libparted/labels/gpt.c:999
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr ""
+"La table primaire GPT est corrompue mais sa sauvegarde semble valide, elle "
+"sera donc utilisée."
+
+#: libparted/labels/gpt.c:1023
+msgid "primary partition table array CRC mismatch"
+msgstr "erreur CRC sur la table primaire de partitions"
+
+#: libparted/labels/mac.c:184
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Signature invalide %x pour une étiquette de disque Mac."
+
+#: libparted/labels/mac.c:231
+msgid "Partition map has no partition map entry!"
+msgstr "La table de partitions n'a pas d'entrée de table de partition !"
+
+#: libparted/labels/mac.c:279
+#, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr "%s est trop petit pour une étiquette de disque Mac !"
+
+#: libparted/labels/mac.c:508
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "La partition %d a une signature invalide %x."
+
+#: libparted/labels/mac.c:526
+#, c-format
+msgid "Partition %d has an invalid length of 0 bytes!"
+msgstr "La partition %d a une longueur invalide de 0 octet !"
+
+#: libparted/labels/mac.c:557
+msgid "The data region doesn't start at the start of the partition."
+msgstr "La zone de données ne commence pas au début de la partition."
+
+#: libparted/labels/mac.c:574
+msgid "The boot region doesn't start at the start of the partition."
+msgstr "La zone d'amorce n'est pas au début de la partition."
+
+#: libparted/labels/mac.c:588
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr ""
+"La zone d'amorce de la partition ne couvre pas entièrement la partition."
+
+#: libparted/labels/mac.c:599
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr ""
+"La zone de données de la partition ne couvre pas entièrement la partition."
+
+#: libparted/labels/mac.c:652
+#, c-format
+msgid ""
+"Weird block size on device descriptor: %d bytes is not divisible by 512."
+msgstr ""
+"Taille bizarre de bloc sur le descripteur de périphérique : %d octets n'est "
+"pas divisible par 512."
+
+#: libparted/labels/mac.c:665
+#, c-format
+msgid ""
+"The driver descriptor says the physical block size is %d bytes, but Linux "
+"says it is %d bytes."
+msgstr ""
+"Le descripteur du pilote indique une taille physique de bloc de %d octets, "
+"mais Linux lui indique %d octets."
+
+#: libparted/labels/mac.c:719
+msgid "No valid partition map found."
+msgstr "Aucune table de partitions valide n'a été trouvée."
+
+#: libparted/labels/mac.c:780
+#, c-format
+msgid ""
+"Conflicting partition map entry sizes!  Entry 1 says it is %d, but entry %d "
+"says it is %d!"
+msgstr ""
+"Tailles conflictuelles des entrées de la table de partition ! L'entrée 1 "
+"indique %d alors que l'entrée %d indique %d !"
+
+#: libparted/labels/mac.c:811
+msgid "Weird!  There are 2 partitions map entries!"
+msgstr "Bizarre - Il y a 2 entrées de table de partitions !"
+
+#: libparted/labels/mac.c:1357
+msgid ""
+"Changing the name of a root or swap partition will prevent Linux from "
+"recognising it as such."
+msgstr ""
+"Changer le nom d'une partition racine (root) ou d'échange (swap) empêchera "
+"Linux de les reconnaître en tant que telles."
+
+#: libparted/labels/mac.c:1461
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr ""
+"Impossible d'ajouter une autre partition - la table de partition est trop "
+"petite !"
+
+#: libparted/labels/pc98.c:331
+#, c-format
+msgid "Invalid partition table on %s."
+msgstr "Table de partition invalide sur %s."
+
+#: libparted/labels/pc98.c:384 libparted/labels/pc98.c:462
+#, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries.  This is still "
+"unsupported."
+msgstr ""
+"La partition %d n'est pas alignée sur une frontière de cylindre. Ce cas de "
+"figure n'est pas supporté."
+
+#: libparted/labels/pc98.c:780
+msgid "Can't add another partition."
+msgstr "Impossible d'ajouter une autre partition."
+
+#: libparted/labels/pt-tools.c:125
+#, c-format
+msgid ""
+"partition length of %jd sectors exceeds the %s-partition-table-imposed "
+"maximum of %jd"
+msgstr ""
+"la longueur de la partition, %jd secteurs, excède le max. imposé par la "
+"table de partitions %s : %jd"
+
+#: libparted/labels/pt-tools.c:138
+#, c-format
+msgid ""
+"starting sector number, %jd exceeds the %s-partition-table-imposed maximum "
+"of %jd"
+msgstr ""
+"le n° du secteur de départ %jd excède le max. imposé par la table de "
+"partitions %s : %jd"
+
+#: libparted/labels/rdb.c:169
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr "%s : Mauvaise somme de contrôle sur le bloc %llu de type %s."
+
+#: libparted/labels/rdb.c:484
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr ""
+"%s : Impossible de trouver le bloc RDB, cela ne devrait jamais arriver."
+
+#: libparted/labels/rdb.c:573
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr "%s : Boucle detectée sur le bloc %d."
+
+#: libparted/labels/rdb.c:592
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr "%s : La liste %s semble être erronée sur le bloc %s."
+
+#: libparted/labels/rdb.c:691
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr "%s : N'a pas pu détecter les blocs défectueux"
+
+#: libparted/labels/rdb.c:699
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr "%s : Impossible de lister les blocs de la partition."
+
+#: libparted/labels/rdb.c:707
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr "%s : Impossible de lister les blocs du système de fichiers."
+
+#: libparted/labels/rdb.c:715
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr "%s : Impossible de lister les blocs de démarrage."
+
+#: libparted/labels/rdb.c:742
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr "N'a pas pu écrire le bloc descripteur de partition sur %d."
+
+#: libparted/labels/rdb.c:1080
+msgid "Unable to allocate a partition number."
+msgstr "Impossible d'allouer un numéro de partition."
+
+#: libparted/labels/sun.c:161
+msgid "Corrupted Sun disk label detected."
+msgstr "Étiquette de disque Sun corrompue."
+
+#: libparted/labels/sun.c:276
+#, c-format
+msgid ""
+"The disk CHS geometry (%d,%d,%d) reported by the operating system does not "
+"match the geometry stored on the disk label (%d,%d,%d)."
+msgstr ""
+"La géométrie CHS du disque (%d,%d,%d) donnée par le système d'exploitation "
+"ne concorde pas avec la géométrie stockée sur l'étiquette de disque (%d,%d,"
+"%d)."
+
+#: libparted/labels/sun.c:298
+#, c-format
+msgid "The disk label describes a disk bigger than %s."
+msgstr "L'étiquette de disque décrit un disque plus gros que %s."
+
+#: libparted/labels/sun.c:473
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr ""
+"Le disque a %d cylindres, ce qui est plus grand que le maximum : 65536."
+
+#: libparted/labels/sun.c:812
+msgid ""
+"The Whole Disk partition is the only available one left.  Generally, it is "
+"not a good idea to overwrite this partition with a real one.  Solaris may "
+"not be able to boot without it, and SILO (the sparc boot loader) appreciates "
+"it as well."
+msgstr ""
+"La partition représentant le disque entier est la seule encore disponible. "
+"Généralement, ce n'est pas une bonne idée d'écraser cette partition avec une "
+"vraie. Solaris ne pourra pas démarrer sans elle et SILO (le gestionnaire de "
+"démarrage sur Sparc) en a besoin."
+
+#: libparted/labels/sun.c:827
+msgid "Sun disk label is full."
+msgstr "L'étiquette de disque Sun est remplie."
+
+#: libparted/labels/vtoc.c:164
+msgid "opening of device failed"
+msgstr "échec de l'ouverture du périphérique"
+
+#: libparted/labels/vtoc.c:168
+msgid "seeking on device failed"
+msgstr "erreur de positionnement sur le périphérique"
+
+#: libparted/labels/vtoc.c:172
+msgid "writing to device failed"
+msgstr "échec d'écriture sur le périphérique"
+
+#: libparted/labels/vtoc.c:176
+msgid "reading from device failed"
+msgstr "échec de lecture sur le périphérique"
+
+#: libparted/labels/vtoc.c:299 libparted/labels/vtoc.c:308
+#: libparted/labels/vtoc.c:329 libparted/labels/vtoc.c:336
+msgid "Could not read volume label."
+msgstr "Impossible de lire l'étiquette du volume."
+
+#: libparted/labels/vtoc.c:356 libparted/labels/vtoc.c:363
+msgid "Could not write volume label."
+msgstr "Impossible d'écrire l'étiquette du volume."
+
+#: libparted/labels/vtoc.c:469
+msgid "Could not read VTOC labels."
+msgstr "Impossible de lire les étiquettes de la table de volume (VTOC)."
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr "Impossible de lire la table de volume VTOC FMT1 DSCB."
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr "Impossible de lire la table de volume VTOC FMT4 DSCB."
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr "Impossible de lire la table de volume VTOC FMT5 DSCB."
+
+#: libparted/labels/vtoc.c:496
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr "Impossible de lire la table de volume VTOC FMT7 DSCB."
+
+#: libparted/labels/vtoc.c:516
+msgid "Could not write VTOC labels."
+msgstr "Impossible d'écrire les étiquettes de la table de volume (VTOC)."
+
+#: libparted/labels/vtoc.c:522
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr "Impossible d'écrire la table de volume VTOC FMT1 DSCB."
+
+#: libparted/labels/vtoc.c:529
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr "Impossible d'écrire la table de volume VTOC FMT4 DSCB."
+
+#: libparted/labels/vtoc.c:536
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr "Impossible d'écrire la table de volume VTOC FMT5 DSCB."
+
+#: libparted/labels/vtoc.c:543
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr "Impossible d'écrire la table de volume VTOC FMT7 DSCB."
+
+#: libparted/libparted.c:230 libparted/libparted.c:245
+msgid "Out of memory."
+msgstr "Mémoire insuffisante."
+
+#: libparted/unit.c:138
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr "Impossible d'obtenir la taille de l'unité spéciale 'COMPACT'."
+
+#: libparted/unit.c:384
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr "\"%s\" a une syntaxe de localisation invalide."
+
+#: libparted/unit.c:392
+#, c-format
+msgid "The maximum head value is %d."
+msgstr "Le nombre maximum de têtes est %d."
+
+#: libparted/unit.c:399
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr "Le nombre maximum de secteurs est %d."
+
+#: libparted/unit.c:411 libparted/unit.c:556
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr "La localisation %s est en dehors du périphérique %s."
+
+#: libparted/unit.c:531
+msgid "Invalid number."
+msgstr "Nombre invalide."
+
+#: libparted/fs/amiga/affs.c:62 libparted/fs/amiga/apfs.c:55
+#: libparted/fs/amiga/asfs.c:69
+#, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "%s : Impossible d'allouer un bloc de partition\n"
+
+#: libparted/fs/amiga/affs.c:77 libparted/fs/amiga/apfs.c:68
+#: libparted/fs/amiga/asfs.c:81
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr "%s : Impossible d'allouer un bloc\n"
+
+#: libparted/fs/amiga/affs.c:82 libparted/fs/amiga/apfs.c:73
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr "%s : Impossible de lire le bloc de démarrage %llu\n"
+
+#: libparted/fs/amiga/affs.c:98 libparted/fs/amiga/apfs.c:84
+#: libparted/fs/amiga/asfs.c:87 libparted/fs/amiga/asfs.c:101
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr "%s : Impossible de lire le bloc racine %llu\n"
+
+#: libparted/fs/amiga/amiga.c:71
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr "%s : Impossible d'allouer un élément de la liste des identifiants\n"
+
+#: libparted/fs/amiga/amiga.c:188
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr "%s : impossible de lire le bloc %llu\n"
+
+#: libparted/fs/amiga/amiga.c:201
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr "%s : Mauvaise somme de contrôle sur le bloc %llu de type %s\n"
+
+#: libparted/fs/amiga/amiga.c:211
+#, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s : impossible d'écrire le bloc %d\n"
+
+#: libparted/fs/amiga/amiga.c:277
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr "%s : impossible d'allouer le bloc RDB spécifique\n"
+
+#: libparted/fs/amiga/amiga.c:288
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr ""
+"%s : impossible de trouver le bloc RDB, cela ne devrait jamais arriver\n"
+
+#: libparted/fs/amiga/amiga.c:317
+#, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr "%s : Impossible de lire les blocs de la partition %llu\n"
+
+#: libparted/fs/fat/fat.c:174
+msgid ""
+"GNU Parted was miscompiled: the FAT boot sector should be 512 bytes.  FAT "
+"support will be disabled."
+msgstr ""
+"GNU Parted a été mal compilé : le secteur d'amorce FAT devrait être de 512 "
+"octets. Le support du système de fichiers FAT sera désactivé."
+
+#: libparted/fs/fat/bootsector.c:49 libparted/fs/fat/bootsector.c:56
+msgid "File system has an invalid signature for a FAT file system."
+msgstr ""
+"Le système de fichiers a une signature invalide pour un système de fichiers "
+"FAT."
+
+#: libparted/fs/fat/bootsector.c:64
+msgid "File system has an invalid sector size for a FAT file system."
+msgstr ""
+"Le système de fichiers a une taille de secteur invalide pour un système de "
+"fichiers FAT."
+
+#: libparted/fs/fat/bootsector.c:71
+msgid "File system has an invalid cluster size for a FAT file system."
+msgstr ""
+"Le système de fichiers a une taille de cluster invalide pour un système de "
+"fichiers FAT."
+
+#: libparted/fs/fat/bootsector.c:78
+msgid ""
+"File system has an invalid number of reserved sectors for a FAT file system."
+msgstr ""
+"Le système de fichiers a un nombre invalide de secteurs réservés pour un "
+"système de fichiers FAT."
+
+#: libparted/fs/fat/bootsector.c:85
+msgid "File system has an invalid number of FATs."
+msgstr "Le système de fichiers a un nombre incorrect de tables FAT."
+
+#: libparted/fs/fat/bootsector.c:156
+#, c-format
+msgid ""
+"This file system has a logical sector size of %d.  GNU Parted is known not "
+"to work properly with sector sizes other than 512 bytes."
+msgstr ""
+"Ce système de fichier a une taille de secteur logique de %d. GNU Parted ne "
+"traite pas correctement les tailles de secteurs différentes de 512 octets."
+
+#: libparted/fs/fat/bootsector.c:181
+#, c-format
+msgid ""
+"The file system's CHS geometry is (%d, %d, %d), which is invalid.  The "
+"partition table's CHS geometry is (%d, %d, %d).  If you select Ignore, the "
+"file system's CHS geometry will be left unchanged.  If you select Fix, the "
+"file system's CHS geometry will be set to match the partition table's CHS "
+"geometry."
+msgstr ""
+"La géométrie CHS du système de fichiers est (%d, %d, %d), ce qui est "
+"invalide. La géométrie CHS de la table des partitions est (%d, %d, %d). Si "
+"vous choisissez d'ignorer (Ignore), la géométrie CHS du système de fichiers "
+"restera inchangée. Si vous choisissez de réparer (Fix), la géométrie CHS du "
+"système de fichiers sera modifiée de manière à concorder avec la géométrie "
+"CHS de la table des partitions."
+
+#: libparted/fs/fat/bootsector.c:230
+msgid "FAT boot sector says logical sector size is 0.  This is weird. "
+msgstr ""
+"Le secteur d'amorce FAT indique une taille de secteur logique de 0. Ceci est "
+"bizarre."
+
+#: libparted/fs/fat/bootsector.c:236
+msgid "FAT boot sector says there are no FAT tables.  This is weird. "
+msgstr ""
+"Le secteur d'amorce FAT indique qu'il n'y a pas de tables FAT. Ceci est "
+"bizarre."
+
+#: libparted/fs/fat/bootsector.c:242
+msgid "FAT boot sector says clusters are 0 sectors.  This is weird. "
+msgstr ""
+"Le secteur d'amorce FAT indique des clusters ayant 0 secteur. Ceci est "
+"curieux."
+
+#: libparted/fs/fat/bootsector.c:252
+msgid "File system is FAT12, which is unsupported."
+msgstr "Le système de fichiers est FAT12, lequel n'est pas supporté."
+
+#: libparted/fs/fat/bootsector.c:428
+#, c-format
+msgid ""
+"The information sector has the wrong signature (%x).  Select cancel for now, "
+"and send in a bug report.  If you're desperate, it's probably safe to ignore."
+msgstr ""
+"L'information de secteur contient une signature erronée (%x). Sélectionner « "
+"annuler » (cancel) pour le moment et transmettre un rapport d'anomalie. Si "
+"vous êtes désespéré, il est probablement prudent de sélectionner « ignorer »."
+
+#: libparted/fs/linux_swap/linux_swap.c:247
+#, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr ""
+"Signature de partition d'échange Linux (swap) de type ancien non reconnue  "
+"'%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:290
+#, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr ""
+"Signature de partition d'échange Linux (swap) de type nouveau non reconnue "
+"'%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:330
+#, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr ""
+"Signature de partition d'échange Linux (swap) de type swsusp non reconnue "
+"'%9s'."
+
+#: libparted/fs/hfs/probe.c:50
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to "
+"%d bytes."
+msgstr ""
+"Parted ne peut utiliser des systèmes de fichiers HFS sur les disques dont la "
+"taille des secteurs n'est pas égale à %d octets."
+
+#: parted/parted.c:123
+msgid "displays this help message"
+msgstr "affiche ce message d'aide"
+
+#: parted/parted.c:124
+msgid "lists partition layout on all block devices"
+msgstr "liste la structure des partitions sur tous les périphériques par blocs"
+
+#: parted/parted.c:125
+msgid "displays machine parseable output"
+msgstr "sortie dans un style lisible par une machine"
+
+#: parted/parted.c:126
+msgid "never prompts for user intervention"
+msgstr "ne demande jamais l'intervention de l'utilisateur"
+
+#: parted/parted.c:127
+msgid "displays the version"
+msgstr "affiche la version"
+
+#: parted/parted.c:128
+msgid "alignment for new partitions"
+msgstr "alignement des nouvelles partitions"
+
+#: parted/parted.c:140
+msgid ""
+"NUMBER is the partition number used by Linux.  On MS-DOS disk labels, the "
+"primary partitions number from 1 to 4, logical partitions from 5 onwards.\n"
+msgstr ""
+"NOMBRE est le numéro de partition utilisé par Linux. Avec une étiquette de "
+"disque MS-DOS, les partitions primaires sont numérotées de 1 à 4 et les "
+"partitions logiques à partir de 5.\n"
+
+#: parted/parted.c:143
+msgid "LABEL-TYPE is one of: "
+msgstr "LABEL-TYPE est une des valeurs : "
+
+#: parted/parted.c:144
+msgid "FLAG is one of: "
+msgstr "FANION est une des valeurs : "
+
+#: parted/parted.c:145
+msgid "UNIT is one of: "
+msgstr "UNITE est parmi : "
+
+#: parted/parted.c:146
+msgid "desired alignment: minimum or optimal"
+msgstr "alignement souhaité : minimum ou optimal"
+
+#: parted/parted.c:147
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "PART-TYPE est une des valeurs : primary, logical, extended\n"
+
+#: parted/parted.c:149
+msgid "FS-TYPE is one of: "
+msgstr "FS-TYPE est parmi : "
+
+#: parted/parted.c:150
+msgid ""
+"START and END are disk locations, such as 4GB or 10%.  Negative values count "
+"from the end of the disk.  For example, -1s specifies exactly the last "
+"sector.\n"
+msgstr ""
+"DEBUT et FIN sont des emplacements sur un disque, comme 4GB ou 10%. Les "
+"valeurs négatives se comptent à partir de la fin du disque. Par exemple, "
+"=-1s spécifie précisément le dernier secteur.\n"
+
+#: parted/parted.c:153
+msgid "STATE is one of: on, off\n"
+msgstr "ETAT est une des valeurs : on, off\n"
+
+#: parted/parted.c:154
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "PERIPHERIQUE est habituellement du genre /dev/hda ou /dev/sda\n"
+
+#: parted/parted.c:155
+msgid "NAME is any word you want\n"
+msgstr "NOM est un mot de votre choix\n"
+
+#: parted/parted.c:158
+msgid ""
+"Copyright (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"This program is free software, covered by the GNU General Public License.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+msgstr ""
+"Copyright (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"Ce programme est un logiciel libre, sous la Licence Publique Générale GNU "
+"(GNU General Public License).\n"
+"Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE "
+"GARANTIE ; sans même une garantie implicite de COMMERCIABILITÉ ou DE "
+"CONFORMITÉ À UNE UTILISATION PARTICULIÈRE. Voir la Licence Publique Générale "
+"GNU pour plus de détails.\n"
+"\n"
+
+#: parted/parted.c:204
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(temps restant %.2d:%.2d)"
+
+#: parted/parted.c:223
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+"La partition %s est en cours d'utilisation. Vous devez la démonter avant de "
+"la modifier avec Parted."
+
+#: parted/parted.c:241
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "Au moins une partition de %s est en cours d'utilisation."
+
+#: parted/parted.c:253
+#, c-format
+msgid ""
+"The existing disk label on %s will be destroyed and all data on this disk "
+"will be lost. Do you want to continue?"
+msgstr ""
+"Le type du disque %s va être effacé et toutes les données vont être perdues. "
+"Voulez-vous continuer ?"
+
+#: parted/parted.c:502
+msgid "New disk label type?"
+msgstr "Nouveau type d'étiquette de disque ?"
+
+#: parted/parted.c:562
+msgid "Partition type?"
+msgstr "Type de partition ?"
+
+#: parted/parted.c:580 parted/parted.c:766
+msgid "Partition name?"
+msgstr "Nom de la partition ?"
+
+#: parted/parted.c:588
+msgid "File system type?"
+msgstr "Type de système de fichiers ?"
+
+#: parted/parted.c:594 parted/parted.c:1342
+msgid "Start?"
+msgstr "Début ?"
+
+#: parted/parted.c:596 parted/parted.c:1344
+msgid "End?"
+msgstr "Fin ?"
+
+#: parted/parted.c:661
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s.%s"
+msgstr ""
+"Vous voulez établir une partition de %s à %s.\n"
+"La position la plus proche gérable est %s à %s. %s"
+
+#: parted/parted.c:666
+msgid ""
+"\n"
+"Is this still acceptable to you?"
+msgstr ""
+"\n"
+"Est-ce acceptable pour vous ?"
+
+#: parted/parted.c:688
+msgid "The resulting partition is not properly aligned for best performance."
+msgstr ""
+"L'alignement de la partition ainsi définie n'est pas optimal au niveau "
+"performance."
+
+#: parted/parted.c:763 parted/parted.c:1383 parted/parted.c:1455
+#: parted/parted.c:1489
+msgid "Partition number?"
+msgstr "Numéro de partition ?"
+
+#: parted/parted.c:841
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d.  Each cylinder is %s.\n"
+msgstr ""
+"Géométrie BIOS cylindre,tête,secteur : %d,%d,%d. Chaque cylindre : %s.\n"
+
+#: parted/parted.c:881
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr "Modèle: %s (%s)\n"
+
+#: parted/parted.c:883
+#, c-format
+msgid "Disk %s: %s\n"
+msgstr "Disque %s : %s\n"
+
+#: parted/parted.c:884
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr "Taille des secteurs (logiques/physiques): %lldB/%lldB\n"
+
+#: parted/parted.c:896
+#, c-format
+msgid "Partition Table: %s\n"
+msgstr "Table de partitions : %s\n"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Number"
+msgstr "Numéro"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Start"
+msgstr "Début"
+
+#: parted/parted.c:1008 parted/parted.c:1011
+msgid "End"
+msgstr "Fin"
+
+#: parted/parted.c:1011
+msgid "Size"
+msgstr "Taille"
+
+#: parted/parted.c:1015
+msgid "Type"
+msgstr "Type"
+
+#: parted/parted.c:1017
+msgid "File system"
+msgstr "Système de fichiers"
+
+#: parted/parted.c:1020
+msgid "Name"
+msgstr "Nom"
+
+#: parted/parted.c:1022
+msgid "Flags"
+msgstr "Fanions"
+
+#: parted/parted.c:1079
+msgid "Free Space"
+msgstr "Espace libre"
+
+#: parted/parted.c:1241
+#, c-format
+msgid ""
+"A %s %s partition was found at %s -> %s.  Do you want to add it to the "
+"partition table?"
+msgstr ""
+"Une partition %s %s a été localisée de %s à %s. Voulez-vous l'ajouter à la "
+"table de partition ?"
+
+#: parted/parted.c:1280
+msgid "searching for file systems"
+msgstr "recherche des systèmes de fichiers"
+
+#: parted/parted.c:1408
+msgid "New device?"
+msgstr "Nouveau périphérique ?"
+
+#: parted/parted.c:1453
+msgid "alignment type(min/opt)"
+msgstr "type d'alignement (min/opt)"
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d aligned\n"
+msgstr "%d aligné(es)\n"
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d not aligned\n"
+msgstr "%d non aligné(es)\n"
+
+#: parted/parted.c:1491
+msgid "Flag to Invert?"
+msgstr "Fanion à inverser ?"
+
+#: parted/parted.c:1496
+msgid "New state?"
+msgstr "Nouvel état ?"
+
+#: parted/parted.c:1533
+msgid "Unit?"
+msgstr "Unité ?"
+
+#: parted/parted.c:1651
+msgid "align-check"
+msgstr "align-check"
+
+#: parted/parted.c:1654
+msgid ""
+"align-check TYPE N                        check partition N for TYPE(min|"
+"opt) alignment"
+msgstr ""
+"align-check TYPE N                        contrôle l'alignement de type TYPE "
+"(min|opt) de la partition N"
+
+#: parted/parted.c:1662
+msgid "help"
+msgstr "aide"
+
+#: parted/parted.c:1665
+msgid ""
+"help [COMMAND]                           print general help, or help on "
+"COMMAND"
+msgstr ""
+"help [COMMANDE]                          affiche l'aide générale ou l'aide "
+"concernant la COMMANDE"
+
+#: parted/parted.c:1671
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:1671
+msgid "mktable"
+msgstr "mktable"
+
+#: parted/parted.c:1674
+msgid ""
+"mklabel,mktable LABEL-TYPE               create a new disklabel (partition "
+"table)"
+msgstr ""
+"mklabel,mktable LABEL-TYPE                crée une nouvelle étiquette de "
+"disque (table de partition)"
+
+#: parted/parted.c:1680
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:1683
+msgid "mkpart PART-TYPE [FS-TYPE] START END     make a partition"
+msgstr "mkpart PART-TYPE [FS-TYPE] DEBUT FIN      créer une partition"
+
+#: parted/parted.c:1689
+msgid ""
+"'mkpart' makes a partition without creating a new file system on the "
+"partition.  FS-TYPE may be specified to set an appropriate partition ID.\n"
+msgstr ""
+"'mkpart' crée une partition sans créer un nouveau système de fichiers sur la "
+"partition. FS-TYPE doit être spécifié pour initialiser le type de partition "
+"approprié.\n"
+
+#: parted/parted.c:1694
+msgid "name"
+msgstr "nommer"
+
+#: parted/parted.c:1697
+msgid "name NUMBER NAME                         name partition NUMBER as NAME"
+msgstr ""
+"name NOMBRE NOM                           donner le nom NOM la partition "
+"numéro NOMBRE"
+
+#: parted/parted.c:1702
+msgid "print"
+msgstr "afficher"
+
+#: parted/parted.c:1705
+msgid ""
+"print [devices|free|list,all|NUMBER]     display the partition table, "
+"available devices, free space, all found partitions, or a particular "
+"partition"
+msgstr ""
+"print [devices|free|list,all|NOMBRE]     affiche la table des partitions, "
+"les périphériques disponibles, l'espace libre, toutes les partitions ou une "
+"partition précise"
+
+#: parted/parted.c:1710
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+"Sans argument, 'print' affiche toute la table de partitions. Toutefois avec "
+"les arguments suivants, elle permet bien d'autres actions.\n"
+
+#: parted/parted.c:1712
+msgid "  devices   : display all active block devices\n"
+msgstr "  devices : affiche tous les périphériques par blocs actifs\n"
+
+#: parted/parted.c:1713
+msgid ""
+"  free      : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+"  free : affiche l'information sur l'espace libre non partitionné du "
+"périphérique courant\n"
+
+#: parted/parted.c:1715
+msgid ""
+"  list, all : display the partition tables of all active block devices\n"
+msgstr ""
+"  list,all : afficher la table de partitions de tous les périphériques par "
+"blocs actifs\n"
+
+#: parted/parted.c:1716
+msgid ""
+"  NUMBER    : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+"  NOMBRE : affiche les informations détaillées sur la partition numéro "
+"NOMBRE\n"
+
+#: parted/parted.c:1721
+msgid "quit"
+msgstr "quitter"
+
+#: parted/parted.c:1724
+msgid "quit                                     exit program"
+msgstr "quit                                    quitter le programme"
+
+#: parted/parted.c:1729
+msgid "rescue"
+msgstr "rescue"
+
+#: parted/parted.c:1732
+msgid ""
+"rescue START END                         rescue a lost partition near START "
+"and END"
+msgstr ""
+"rescue DEBUT FIN                         restaurer une partition perdue "
+"entre DEBUT et FIN"
+
+#: parted/parted.c:1738
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:1741
+msgid "rm NUMBER                                delete partition NUMBER"
+msgstr ""
+"rm NOMBRE                                détruire la partition numéro NOMBRE"
+
+#: parted/parted.c:1746
+msgid "select"
+msgstr "sélectionner"
+
+#: parted/parted.c:1749
+msgid "select DEVICE                            choose the device to edit"
+msgstr ""
+"select PÉRIPHÉRIQUE                     sélectionner le périphérique à éditer"
+
+#: parted/parted.c:1754
+msgid "set"
+msgstr "positionner"
+
+#: parted/parted.c:1757
+msgid ""
+"set NUMBER FLAG STATE                    change the FLAG on partition NUMBER"
+msgstr ""
+"set NOMBRE FANION ETAT                  positionner le FANION à l'état ETAT "
+"sur la partition numéro NOMBRE"
+
+#: parted/parted.c:1763
+msgid "toggle"
+msgstr "inverser"
+
+#: parted/parted.c:1766
+msgid ""
+"toggle [NUMBER [FLAG]]                   toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+"toggle [NOMBRE [FANION]]               inverser l'état du fanion sur la "
+"partition numéro NOMBRE"
+
+#: parted/parted.c:1772
+msgid "unit"
+msgstr "unit"
+
+#: parted/parted.c:1775
+msgid "unit UNIT                                set the default unit to UNIT"
+msgstr ""
+"unit UNITE                             affecte l'unité par défaut à UNITE"
+
+#: parted/parted.c:1780
+msgid "version"
+msgstr "version"
+
+#: parted/parted.c:1783
+msgid ""
+"version                                  display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+"version                                  affiche la version courante de GNU "
+"Parted ainsi que l'information sur le copyright"
+
+#: parted/parted.c:1787
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+"'version' affiche le copyright et la version de cette copie de GNU Parted\n"
+
+#: parted/parted.c:1855
+#, c-format
+msgid "Usage: %s [-hlmsv] [-a<align>] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+"Usage : %s [-hlmsv] [-a <alignement>] [PERIPHERIQUE [COMMANDE "
+"[PARAMETRES]]...]\n"
+
+#: parted/parted.c:1899
+msgid "No device found"
+msgstr "Aucun périphérique trouvé"
+
+#: parted/parted.c:1936
+msgid "WARNING: You are not superuser.  Watch out for permissions."
+msgstr ""
+"ATTENTION : vous n'êtes pas superutilisateur. Contrôlez les permissions."
+
+#: parted/parted.c:1974
+msgid "You may need to update /etc/fstab.\n"
+msgstr "Ne pas oublier de mettre à jour /etc/fstab si nécessaire.\n"
+
+#: parted/ui.c:162
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+"Bievenue sur GNU Parted ! Tapez 'help' pour voir la liste des commandes.\n"
+
+#: parted/ui.c:165
+msgid ""
+"Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]\n"
+"Apply COMMANDs with PARAMETERS to DEVICE.  If no COMMAND(s) are given, run "
+"in\n"
+"interactive mode.\n"
+msgstr ""
+"Usage : parted [OPTION]... [PÉRIPHÉRIQUE [COMMANDES[PARAMÈTRES]...]...]\n"
+"Appliquer les COMMANDES avec les PARAMÈTRES au PÉRIPHÉRIQUE. Si aucune "
+"COMMANDE n'est fournie\n"
+"l'exécution se fait en mode intéractif.\n"
+
+#: parted/ui.c:170
+#, c-format
+msgid ""
+"\n"
+"\n"
+"You found a bug in GNU Parted! Here's what you have to do:\n"
+"\n"
+"Don't panic! The bug has most likely not affected any of your data.\n"
+"Help us to fix this bug by doing the following:\n"
+"\n"
+"Check whether the bug has already been fixed by checking\n"
+"the last version of GNU Parted that you can find at:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Please check this version prior to bug reporting.\n"
+"\n"
+"If this has not been fixed yet or if you don't know how to check,\n"
+"please visit the GNU Parted website:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"for further information.\n"
+"\n"
+"Your report should contain the version of this release (%s)\n"
+"along with the error message below, the output of\n"
+"\n"
+"\tparted DEVICE unit co print unit s print\n"
+"\n"
+"and the following history of commands you entered.\n"
+"Also include any additional information about your setup you\n"
+"consider important.\n"
+msgstr ""
+"\n"
+"\n"
+"Vous avez trouvé un bug dans GNU Parted ! Voici ce que vous devez faire :\n"
+"\n"
+"Ne paniquez pas ! Le bug n'a probablement pas affecté vos données.\n"
+"Aidez nous à résoudre ce bug en faisant ce qui suit:\n"
+"\n"
+"Vérifiez si le bug n'a pas déjà été résolu dans la dernière version de GNU\n"
+"Parted que vous pouvez trouver à :\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"SVP vérifiez cette version avant de reporter tout bug.\n"
+"\n"
+"S'il n'a pas encore été résolu ou si vous ne savez pas comment vérifier,\n"
+"SVP visitez le site web de GNU Parted :\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"pour plus d'informations.\n"
+"\n"
+"Votre rapport doit contenir la version de cette release (%s)\n"
+"accompagnée du message d'erreur dessous, le résultat de\n"
+"\n"
+"\tparted PÉRIPHÉRIQUE unit co print unit s print\n"
+"\n"
+"et l'historique des commandes saisies.\n"
+"Plus toutes les informations supplémentaires que vous trouverez importantes "
+"à propos de votre configuration.\n"
+
+#: parted/ui.c:291
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+"\n"
+"Historique des commandes:\n"
+
+#: parted/ui.c:354
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+"\n"
+"Erreur : SEGV_MAPERR (l'adresse n'est pas associée à un objet)\n"
+
+#: parted/ui.c:360
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+"\n"
+"Erreur : SEGV_ACCERR (permissions invalides pour l'objet associé)\n"
+
+#: parted/ui.c:365
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+"\n"
+"Erreur : un signal SIGSEGV général est survenu.\n"
+
+#: parted/ui.c:389
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+"\n"
+"Erreur : FPE_INTDIV (Entier: division par zéro)"
+
+#: parted/ui.c:394
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+"\n"
+"Erreur : FPE_INTOVF (Entier: dépassement)"
+
+#: parted/ui.c:399
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+"\n"
+"Erreur : FPE_INTDIV (division par zéro en nombres flottants)"
+
+#: parted/ui.c:404
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+"\n"
+"Erreur : FPE_FLTOVF (Flottant: dépassement)"
+
+#: parted/ui.c:409
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+"\n"
+"Erreur : FPE_FLTUND (Flottant: dépassement de précision)"
+
+#: parted/ui.c:414
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+"\n"
+"Erreur : PE_FLTRES (Flottant: résultat inexact)"
+
+#: parted/ui.c:419
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+"\n"
+"Erreur : (Flottant: opération invalide)"
+
+#: parted/ui.c:424
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+"\n"
+"Erreur : FPE_FLTSUB (Flottant: débordement de plage)"
+
+#: parted/ui.c:429
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+"\n"
+"Erreur : Un signal SIGFPE général est survenu."
+
+#: parted/ui.c:453
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+"\n"
+"Erreur : ILL_ILLOPC (Opcode illégal)"
+
+#: parted/ui.c:458
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+"\n"
+"Erreur : ILL_ILLOPN (Opérande illégal)"
+
+#: parted/ui.c:463
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+"\n"
+"Erreur : ILL_ILLADR (Mode d'adressage illégal)"
+
+#: parted/ui.c:468
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+"\n"
+"Erreur : ILL_ILLTRP (Déroutement illégal)"
+
+#: parted/ui.c:473
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+"\n"
+"Erreur : ILL_PRVOPC (Opcode privilégié)"
+
+#: parted/ui.c:478
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+"\n"
+"Erreur : ILL_PRVREG (Registre privilégié)"
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+"\n"
+"Erreur : ILL_COPROC (Erreur du coprocesseur)"
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+"\n"
+"Erreur : ILL_BADSTK (Erreur de pile interne)"
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+"\n"
+"Erreur : un signal SIGILL général est survenu."
+
+#: parted/ui.c:891
+#, c-format
+msgid "invalid token: %s"
+msgstr "élément incorrect: %s"
+
+#: parted/ui.c:1048
+msgid "Expecting a partition number."
+msgstr "Numéro de partition attendu."
+
+#: parted/ui.c:1057
+msgid "Partition doesn't exist."
+msgstr "La partition n'existe pas."
+
+#: parted/ui.c:1077
+msgid "Expecting a file system type."
+msgstr "Type de système de fichiers attendu."
+
+#: parted/ui.c:1084
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Type de système de fichiers inconnu \"%s\"."
+
+#: parted/ui.c:1105
+msgid "Expecting a disk label type."
+msgstr "Type d'étiquette de disque attendu."
+
+#: parted/ui.c:1203
+msgid "Can't create any more partitions."
+msgstr "Ne peut ajouter de nouvelle partition."
+
+#: parted/ui.c:1213
+msgid "Expecting a partition type."
+msgstr "Type de partition attendu."
+
+#: parted/ui.c:1361
+msgid "on"
+msgstr "on"
+
+#: parted/ui.c:1362
+msgid "off"
+msgstr "off"
+
+#: parted/ui.c:1379
+msgid "optimal"
+msgstr "optimal"
+
+#: parted/ui.c:1380
+msgid "minimal"
+msgstr "minimal"
+
+#: parted/ui.c:1513
+msgid "OPTIONs:"
+msgstr "OPTIONS :"
+
+#: parted/ui.c:1518
+msgid "COMMANDs:"
+msgstr "COMMANDES :"
+
+#: parted/ui.c:1521
+#, c-format
+msgid ""
+"\n"
+"Report bugs to %s\n"
+msgstr ""
+"\n"
+"Rapporter les anomalies à %s\n"
+
+#: parted/ui.c:1528
+#, c-format
+msgid "Using %s\n"
+msgstr "Utilisation de %s\n"
+
+#: parted/ui.c:1602
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr "Cette commande n'a pas de sens en mode non-interactif.\n"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]\n"
+#~ "  or:  %s DEVICE MINOR\n"
+#~ msgstr ""
+#~ "Usage: %s [OPTION]\n"
+#~ "  ou:  %s PERIPHERIQUE MINEUR\n"
+
+#~ msgid ""
+#~ "Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Nettoie l'espace inutilisé d'une partition FAT (outil de test GNU "
+#~ "Parted).\n"
+#~ "\n"
+
+#~ msgid "      --help     display this help and exit\n"
+#~ msgstr "      --help     affiche cette aide et quitte\n"
+
+#~ msgid "      --version  output version information and exit\n"
+#~ msgstr "      --version  affiche les informations de version et quitte\n"
+
+#~ msgid "too few arguments"
+#~ msgstr "pas assez d'arguments"
+
+#~ msgid "too many arguments"
+#~ msgstr "arguments trop nombreux"
+
+#~ msgid "invalid minor device number: %s"
+#~ msgstr "n° mineur de périphérique non valide : %s"
+
+#~ msgid "Could not detect file system."
+#~ msgstr "Ne peut détecter le système de fichiers."
+
+#~ msgid "The file system is bigger than its volume!"
+#~ msgstr "Le système de fichiers est plus gros que le volume physique !"
+
+#~ msgid "Support for opening %s file systems is not implemented yet."
+#~ msgstr "L'ouverture du système de fichiers %s n'est pas encore supportée."
+
+#~ msgid "Support for creating %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Le support pour la création du système de fichiers %s n'est pas encore "
+#~ "implanté."
+
+#~ msgid "Support for checking %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Le support pour la vérification du système de fichiers %s n'est pas "
+#~ "encore implanté."
+
+#~ msgid "raw block copying"
+#~ msgstr "copie brute de blocs"
+
+#~ msgid "growing file system"
+#~ msgstr "augmentation de taille du système de fichiers"
+
+#~ msgid "Can't copy onto an overlapping partition."
+#~ msgstr "Impossible de copier sur une partition qui en chevauche une autre."
+
+#~ msgid ""
+#~ "Direct support for copying file systems is not yet implemented for %s.  "
+#~ "However, support for resizing is implemented.  Therefore, the file system "
+#~ "can be copied if the new partition is at least as big as the old one.  "
+#~ "So, either shrink the partition you are trying to copy, or copy to a "
+#~ "bigger partition."
+#~ msgstr ""
+#~ "Le support direct pour la copie de système de fichiers n'est pas encore "
+#~ "implanté pour %s. Cependant le support pour le redimensionnement l'est. "
+#~ "Par conséquent, le système de fichiers peut être copié si la nouvelle "
+#~ "partition est au moins aussi grande que l'ancienne. Donc, vous pouvez "
+#~ "soit réduire la partition que vous tenter de copier, soit la copier vers "
+#~ "une partition plus grande."
+
+#~ msgid "Support for copying %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Le support pour la copie du système de fichiers %s n'est pas encore "
+#~ "implanté."
+
+#~ msgid "Support for resizing %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Le support pour la modification de la taille du système de fichiers %s "
+#~ "n'est pas encore implanté."
+
+#~ msgid "creating"
+#~ msgstr "création en cours"
+
+#~ msgid "The file system is in an invalid state.  Perhaps it is mounted?"
+#~ msgstr ""
+#~ "Le système de fichiers est dans un état incorrect. Peut-être est-il "
+#~ "monté ?"
+
+#~ msgid "The file system is in old (unresizeable) format."
+#~ msgstr ""
+#~ "Le système de fichiers est d'un format ancien (non redimensionnable)."
+
+#~ msgid "Invalid free blocks count.  Run reiserfsck --check first."
+#~ msgstr ""
+#~ "Nombre de blocs libres incorrect. Exécutez d'abord reiserfsck --check."
+
+#~ msgid "checking"
+#~ msgstr "contrôle en cours"
+
+#~ msgid "Reiserfs tree seems to be corrupted.  Run reiserfsck --check first."
+#~ msgstr ""
+#~ "L'arbre du système de fichiers Reiser semble corrompu. Exécutez d'abord "
+#~ "reiserfsck --check."
+
+#~ msgid ""
+#~ "The reiserfs file system passed a basic check.  For a more comprehensive "
+#~ "check, run reiserfsck --check."
+#~ msgstr ""
+#~ "Le système de fichiers Reiser a passé la vérification de base. Pour une "
+#~ "vérification plus approfondie, utilisez reiserfsck --check."
+
+#~ msgid "Sorry, can't move the start of reiserfs partitions yet."
+#~ msgstr ""
+#~ "Désolé, impossible de déplacer le début d'une partition Reiser pour "
+#~ "l'instant."
+
+#~ msgid "Couldn't reopen device abstraction layer for read/write."
+#~ msgstr ""
+#~ "Impossible de réouvrir le gestionnaire virtuel de lecture/écriture pour "
+#~ "ce périphérique."
+
+#~ msgid "shrinking"
+#~ msgstr "réduction en cours"
+
+#~ msgid "expanding"
+#~ msgstr "agrandissement en cours"
+
+#~ msgid "Couldn't create reiserfs device abstraction handler."
+#~ msgstr ""
+#~ "Impossible de créer le gestionnaire virtuel Reiser sur ce périphérique."
+
+#~ msgid "Device is too small for %lu blocks."
+#~ msgstr "Périphérique trop petit pour %lu blocs."
+
+#~ msgid "copying"
+#~ msgstr "copie en cours"
+
+#~ msgid "Couldn't resolve symbol %s.  Error: %s."
+#~ msgstr "Impossible de résoudre le symbole %s.  Erreur: %s."
+
+#~ msgid "GNU Parted found an invalid libreiserfs library."
+#~ msgstr "GNU Parted a trouvé une librairie \"libreiserfs\" invalide."
+
+#~ msgid ""
+#~ "GNU Parted has detected libreiserfs interface version mismatch.  Found %d-"
+#~ "%d, required %d. ReiserFS support will be disabled."
+#~ msgstr ""
+#~ "GNU Parted a détecté un problème de version de l'interface de la "
+#~ "librairie \"libreiserfs\".  Trouvé %d-%d, %d requis. Le support du "
+#~ "système de fichiers Reiser est désactivé."
+
+#~ msgid "Inconsistent group descriptors!"
+#~ msgstr "Descripteurs de groupe incohérents !"
+
+#~ msgid "File system full!"
+#~ msgstr "Le système de fichiers est plein !"
+
+#~ msgid "Invalid superblock.  Are you sure this is an ext2 file system?"
+#~ msgstr ""
+#~ "Super bloc invalide. Êtes-vous certain qu'il s'agisse d'un système de "
+#~ "fichiers ext2 ?"
+
+#~ msgid "File system has errors!  You should run e2fsck."
+#~ msgstr ""
+#~ "Le système de fichiers contient des erreurs ! Vous devriez exécuter "
+#~ "e2fsck."
+
+#~ msgid ""
+#~ "File system was not cleanly unmounted!  You should run e2fsck.  Modifying "
+#~ "an unclean file system could cause severe corruption."
+#~ msgstr ""
+#~ "Le système de fichiers n'a pas été démonté proprement ! Vous devriez "
+#~ "exécuter e2fsck. Modifier un système de fichiers non sain pourrait "
+#~ "provoquer de sérieux problèmes de corruption."
+
+#~ msgid ""
+#~ "File system has an incompatible feature enabled.  Compatible features are "
+#~ "has_journal, dir_index, filetype, sparse_super and large_file.  Use "
+#~ "tune2fs or debugfs to remove features."
+#~ msgstr ""
+#~ "Une fonction incompatible est activée sur le système de fichiers. Les "
+#~ "fonctions compatibles sont has_journal, dir_index, filetype, sparse_super "
+#~ "et large_file. Utiliser tune2fs ou debugfs pour retirer les autres."
+
+#~ msgid "Error allocating buffer cache."
+#~ msgstr "Erreur lors de l'allocation d'un tampon de cache."
+
+#~ msgid ""
+#~ "Found an inode with a incorrect link count.  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "Inode repéré avec un nombre incorrect de liens. Il serait préférable "
+#~ "d'exécuter e2fsck avant tout !"
+
+#~ msgid "Not enough free inodes!"
+#~ msgstr "Pas assez d'inodes libres !"
+
+#~ msgid "File system is too full to remove a group!"
+#~ msgstr ""
+#~ "Le système de fichiers est trop plein pour pouvoir enlever un groupe !"
+
+#~ msgid "File system has too many allocated inodes to remove a group!"
+#~ msgstr ""
+#~ "Le système de fichiers a trop d'inodes alloués pour pouvoir enlever un "
+#~ "groupe !"
+
+#~ msgid "adding groups"
+#~ msgstr "ajout de groupes"
+
+#~ msgid "Your file system is too full to resize it to %i blocks.  Sorry."
+#~ msgstr ""
+#~ "Votre système de fichiers est trop plein pour pouvoir le redimensionner "
+#~ "en %i blocs. Désolé."
+
+#~ msgid ""
+#~ "Your file system has too many occupied inodes to resize it to %i blocks.  "
+#~ "Sorry."
+#~ msgstr ""
+#~ "Le système de fichiers n'a pas assez d'inodes libres pour pouvoir le "
+#~ "redimensionner en %i blocs. Désolé."
+
+#~ msgid "File system was not cleanly unmounted!  You should run e2fsck."
+#~ msgstr ""
+#~ "Le système de fichiers n'a pas été démonté proprement ! Vous devriez "
+#~ "exécuter e2fsck."
+
+#~ msgid ""
+#~ "The file system has the 'dir_index' feature enabled.  Parted can only "
+#~ "resize the file system if it disables this feature.  You can enable it "
+#~ "later by running 'tune2fs -O dir_index DEVICE' and then 'e2fsck -fD "
+#~ "DEVICE'."
+#~ msgstr ""
+#~ "Le système de fichiers a l'option 'dir_index' activée. Parted ne peut "
+#~ "redimensionner ce système de fichiers que s'il désactive cette option. "
+#~ "Vous pourrez l'activer ensuite avec la commande 'tune2fs -O dir_index "
+#~ "PERIPHERIQUE' puis 'e2fsck -fD PERIPHERIQUE'."
+
+#~ msgid ""
+#~ "A resize operation on this file system will use EXPERIMENTAL code\n"
+#~ "that MAY CORRUPT it (although no one has reported any such damage yet).\n"
+#~ "You should at least backup your data first, and run 'e2fsck -f' "
+#~ "afterwards."
+#~ msgstr ""
+#~ "Une opération de redimentionnement sur ce système de fichiers utilisera "
+#~ "un code EXPERIMENTAL qui POURRAIT le CORROMPRE (bien que personne n'ait "
+#~ "signalé un tel problème pour l'instant). Vous devriez au moins "
+#~ "sauvegarder vos données et ensuite lancer 'e2fsck -f'."
+
+#~ msgid "Cross-linked blocks found!  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "Blocs liés de façon croisée repérés ! Il serait préférable d'exécuter "
+#~ "e2fsck d'abord !"
+
+#~ msgid "Block %i has no reference?  Weird."
+#~ msgstr "Le bloc %i n'a pas de référence ? Bizarre."
+
+#~ msgid "Block %i shouldn't have been marked (%d, %d)!"
+#~ msgstr "Le bloc %i ne devrait pas avoir été marqué (%d, %d) !"
+
+#~ msgid ""
+#~ "The ext2 file system passed a basic check.  For a more comprehensive "
+#~ "check, use the e2fsck program."
+#~ msgstr ""
+#~ "Le système de fichiers ext2 a passé la vérification de base. Pour une "
+#~ "vérification plus approfondie, utilisez e2fsck."
+
+#~ msgid "Sorry, can't move the start of ext2 partitions yet!"
+#~ msgstr ""
+#~ "Désolé, on ne peut pas déplacer le début d'une partition ext2 pour le "
+#~ "moment !"
+
+#~ msgid "Couldn't flush buffer cache!"
+#~ msgstr "Impossible de vider le tampon de mémoire cache !"
+
+#~ msgid "writing per-group metadata"
+#~ msgstr "écriture des métadonnées de groupes"
+
+#~ msgid "File system too small for ext2."
+#~ msgstr "Système de fichiers trop petit pour ext2."
+
+#~ msgid ""
+#~ "You need %s of free disk space to shrink this partition to this size.  "
+#~ "Currently, only %s is free."
+#~ msgstr ""
+#~ "Vous avez besoin de %s d'espace libre pour réduire cette partition à "
+#~ "cette taille. Pour l'instant il n'y a que de %s de libre."
+
+#~ msgid ""
+#~ "Cluster start delta = %d, which is not a multiple of the cluster size %d."
+#~ msgstr ""
+#~ "Delta de départ du cluster = %d , lequel n'est pas un multiple de la "
+#~ "taille d'un cluster %d."
+
+#~ msgid "Partition too big/small for a %s file system."
+#~ msgstr ""
+#~ "La partition est trop grande ou trop petite pour un système de fichiers "
+#~ "%s."
+
+#~ msgid ""
+#~ "The FATs don't match.  If you don't know what this means, then select "
+#~ "cancel, run scandisk on the file system, and then come back."
+#~ msgstr ""
+#~ "Les tables FAT ne concordent pas. Si vous ne savez pas ce que cela "
+#~ "signifie alors sélectionnez « annuler » (cancel) et exécutez scandisk sur "
+#~ "le système de fichiers, puis réessayez."
+
+#~ msgid "There are no possible configurations for this FAT type."
+#~ msgstr "Il n'y a pas de configuration possible pour ce type FAT."
+
+#~ msgid ""
+#~ "File system doesn't have expected sizes for Windows to like it.  Cluster "
+#~ "size is %dk (%dk expected); number of clusters is %d (%d expected); size "
+#~ "of FATs is %d sectors (%d expected)."
+#~ msgstr ""
+#~ "Le système de fichiers ne correspond pas à des tailles compatibles avec "
+#~ "Windows. La taille du cluster est %dk (%dk attendu). Le nombre de "
+#~ "clusters est %d (%d attendu). La taille des FAT est de %d secteurs (%d "
+#~ "attendu)."
+
+#~ msgid ""
+#~ "File system is reporting the free space as %d clusters, not %d clusters."
+#~ msgstr ""
+#~ "Le système de fichiers annonce un espace libre de %d clusters et non pas "
+#~ "%d clusters."
+
+#~ msgid ""
+#~ "There's not enough room in the root directory for all of the files.  "
+#~ "Either cancel, or ignore to lose the files."
+#~ msgstr ""
+#~ "Il n'y a pas assez d'espace dans le répertoire racine (root) pour tous "
+#~ "les fichiers. Soit annuler (cancel), soit ignorer (ignore) avec perte de "
+#~ "fichiers."
+
+#~ msgid "Error writing to the root directory."
+#~ msgstr "Erreur d'écriture du répertoire racine (root)."
+
+#~ msgid ""
+#~ "If you leave your file system as FAT16, then you will have no problems."
+#~ msgstr ""
+#~ "Si vous conservez votre système de fichiers en FAT16, vous n'aurez pas de "
+#~ "problème."
+
+#~ msgid ""
+#~ "If you convert to FAT16, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual)."
+#~ msgstr ""
+#~ "Si vous convertissez le système de fichiers en FAT16 et que MS WIndows "
+#~ "est installé sur cette partition alors vous devrez réinstaller le "
+#~ "gestionnaire de démarrage de MS Windows. Si vous désirez faire cela, vous "
+#~ "devriez consulter le manuel de Parted (ou le manuel de votre "
+#~ "distribution)."
+
+#~ msgid ""
+#~ "If you leave your file system as FAT32, then you will not introduce any "
+#~ "new problems."
+#~ msgstr ""
+#~ "Si vous conservez votre système de fichiers en FAT32 alors vous "
+#~ "n'introduirez pas de nouveaux problèmes."
+
+#~ msgid ""
+#~ "If you convert to FAT32, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual).  Also, converting to FAT32 will make the file system unreadable "
+#~ "by MS DOS, MS Windows 95a, and MS Windows NT."
+#~ msgstr ""
+#~ "Si vous convertissez en FAT32 et que MS Windows est installé sur cette "
+#~ "partition, alors vous devrez réinstaller le gestionnaire de démarrage de "
+#~ "MS Windows. Si vous désirez faire cela, vous devriez consulter le manuel "
+#~ "de Parted (ou le manuel de votre distribution). Notez que la conversion "
+#~ "en FAT32 rendra le système de fichiers illisible par MS DOS, MS Windows "
+#~ "95a et MS Windows NT."
+
+#~ msgid "%s  %s  %s"
+#~ msgstr "%s  %s  %s"
+
+#~ msgid "Would you like to use FAT32?"
+#~ msgstr "Voulez-vous utiliser FAT32 ?"
+
+#~ msgid "%s  %s"
+#~ msgstr "%s  %s"
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT16."
+#~ msgstr ""
+#~ "Le système de fichiers peut seulement être redimensionné à cette taille "
+#~ "en le convertissant en FAT16."
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT32."
+#~ msgstr ""
+#~ "Le système de fichiers peut seulement être redimensionné à cette taille "
+#~ "en le convertissant en FAT32."
+
+#~ msgid ""
+#~ "GNU Parted cannot resize this partition to this size.  We're working on "
+#~ "it!"
+#~ msgstr ""
+#~ "GNU Parted ne peut redimensionner cette partition à cette taille. Nous y "
+#~ "travaillons !"
+
+#~ msgid "Bad directory entry for %s: first cluster is the end of file marker."
+#~ msgstr ""
+#~ "Entrée de répertoire erronée pour %s : le premier cluster est à la fin du "
+#~ "marqueur de fichiers."
+
+#~ msgid ""
+#~ "Bad FAT: unterminated chain for %s.  You should run dosfsck or scandisk."
+#~ msgstr ""
+#~ "Table FAT erronée : chaîne non terminée pour %s. Vous devriez exécuter "
+#~ "dosfsck ou scandisk."
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d outside file system in chain for %s.  You should run "
+#~ "dosfsck or scandisk."
+#~ msgstr ""
+#~ "Table FAT erronée : le cluster %d est en dehors du système de fichiers "
+#~ "dans la chaîne associée à %s. Vous devriez exécuter dosfsck ou scandisk."
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d is cross-linked for %s.  You should run dosfsck or "
+#~ "scandisk."
+#~ msgstr ""
+#~ "Table FAT erronée : le cluster %d a des liens croisés pour %s. Vous "
+#~ "devriez exécuter dosfsck ou scandisk."
+
+#~ msgid "%s is %dk, but it has %d clusters (%dk)."
+#~ msgstr "%s est %dk, mais il a %d clusters (%dk)."
+
+#~ msgid ""
+#~ "The file %s is marked as a system file.  This means moving it could cause "
+#~ "some programs to stop working."
+#~ msgstr ""
+#~ "Le fichier %s est marqué comme fichier système. Cela signifie que son "
+#~ "déplacement pourrait amener certains programmes à cesser de fonctionner."
+
+#~ msgid ""
+#~ "FAT %d media %x doesn't match the boot sector's media %x.  You should "
+#~ "probably run scandisk."
+#~ msgstr ""
+#~ "La table FAT %d du média %x ne concorde pas avec le secteur d'amorce du "
+#~ "média %x. Vous devriez probablement exécuter scandisk."
+
+#~ msgid "fat_table_set: cluster %ld outside file system"
+#~ msgstr "fat_table_set: cluster %ld en dehors du système de fichiers"
+
+#~ msgid "fat_table_get: cluster %ld outside file system"
+#~ msgstr "fat_table_get: cluster %ld en dehors du système de fichiers"
+
+#~ msgid "fat_table_alloc_cluster: no free clusters"
+#~ msgstr "fat_table_alloc_cluster: pas de cluster disponible"
+
+#~ msgid "Too many bad pages."
+#~ msgstr "Trop de pages erronées."
+
+#~ msgid "The file system contains errors."
+#~ msgstr "Le système de fichiers contient des erreurs."
+
+#~ msgid "Bad blocks could not be read."
+#~ msgstr "Les blocs défectueux ne peuvent pas être lus."
+
+#~ msgid ""
+#~ "Trying to register an extent starting at block 0x%X, but another one "
+#~ "already exists at this position.  You should check the file system!"
+#~ msgstr ""
+#~ "Tentative d'enregistrement d'une zone débutant au bloc 0x%X, mais une "
+#~ "autre existe déjà à cette position. Vous devriez vérifier le système de "
+#~ "fichiers !"
+
+#~ msgid ""
+#~ "Trying to move an extent from block Ox%X to block Ox%X, but another one "
+#~ "already exists at this position.  This should not happen!"
+#~ msgstr ""
+#~ "Tentative de déplacement d'une zone du bloc 0x%X au bloc 0x%X, mais une "
+#~ "autre existe déjà à cette position. Cela ne devrait pas arriver !"
+
+#~ msgid "Could not update the extent cache for HFS file with CNID %X."
+#~ msgstr ""
+#~ "Impossible de mettre à jour le cache des fragments du fichier HFS ayant "
+#~ "le CNID %X."
+
+#~ msgid "Trying to read HFS file with CNID %X behind EOF."
+#~ msgstr ""
+#~ "Tentative de lecture d'un fichier HFS ayant un CNID %X après la fin du "
+#~ "fichier."
+
+#~ msgid "Could not find sector %lli of HFS file with CNID %X."
+#~ msgstr ""
+#~ "Impossible de trouver le secteur %lli du fichier HFS ayant le CNID %X."
+
+#~ msgid "Trying to write HFS file with CNID %X behind EOF."
+#~ msgstr ""
+#~ "Tentative d'écriture d'un fichier HFS ayant un CNID %X après la fin du "
+#~ "fichier."
+
+#~ msgid "Could not update the extent cache for HFS+ file with CNID %X."
+#~ msgstr ""
+#~ "Impossible de mettre à jour le cache des fragments du fichier HFS+ ayant "
+#~ "le CNID %X."
+
+#~ msgid "Trying to read HFS+ file with CNID %X behind EOF."
+#~ msgstr ""
+#~ "Tentative de lecture d'un fichier HFS+ ayant un CNID %X après la fin du "
+#~ "fichier."
+
+#~ msgid "Could not find sector %lli of HFS+ file with CNID %X."
+#~ msgstr ""
+#~ "Impossible de trouver le secteur %lli du fichier HFS+ ayant le CNID %X."
+
+#~ msgid "Trying to write HFS+ file with CNID %X behind EOF."
+#~ msgstr ""
+#~ "Tentative d'écriture d'un fichier HFS+ ayant un CNID %X après la fin du "
+#~ "fichier."
+
+#~ msgid "Sorry, HFS cannot be resized that way yet."
+#~ msgstr ""
+#~ "Désolé, le système de fichiers HFS ne peut être redimensionné de cette "
+#~ "manière pour le moment."
+
+#~ msgid "Data relocation has failed."
+#~ msgstr "Le déplacement des données a échoué."
+
+#~ msgid "Data relocation left some data in the end of the volume."
+#~ msgstr ""
+#~ "Le déplacement des données a laissé certaines données à la fin du volume."
+
+#~ msgid "writing HFS Master Directory Block"
+#~ msgstr "écriture du Master Directory Block HFS"
+
+#~ msgid "No valid HFS[+X] signature has been found while opening."
+#~ msgstr ""
+#~ "Aucune signature HFS[+X] valide n'a été trouvée lors de l'ouverture."
+
+#~ msgid "Version %d of HFS+ isn't supported."
+#~ msgstr "La version %d du système de fichiers HFS+ n'est pas supportée."
+
+#~ msgid "Version %d of HFSX isn't supported."
+#~ msgstr "La version %d du système de fichiers HFSX n'est pas supportée."
+
+#~ msgid "Data relocation left some data at the end of the volume."
+#~ msgstr ""
+#~ "Le déplacement des données a laissé certaines données à la fin du volume."
+
+#~ msgid "Error while writing the allocation file."
+#~ msgstr "Erreur lors de l'écriture du fichier d'allocation."
+
+#~ msgid "Error while writing the compatibility part of the allocation file."
+#~ msgstr ""
+#~ "Erreur durant l'écriture de la zone de compatibilité du fichier "
+#~ "d'allocation."
+
+#~ msgid "writing HFS+ Volume Header"
+#~ msgstr "écriture de l'entête de volume HFS+"
+
+#~ msgid "An error occurred while looking for the mandatory bad blocks file."
+#~ msgstr ""
+#~ "Une erreur est survenue lors de la recherche du fichier de gestion des "
+#~ "blocs défectueux."
+
+#~ msgid ""
+#~ "It seems there is an error in the HFS wrapper: the bad blocks file "
+#~ "doesn't contain the embedded HFS+ volume."
+#~ msgstr ""
+#~ "Il semble qu'il y ait une erreur dans le gestionnaire HFS : le fichier "
+#~ "des blocs défectueux contient le volume HFS+ ."
+
+#~ msgid "Sorry, HFS+ cannot be resized that way yet."
+#~ msgstr ""
+#~ "Désolé, le système de fichiers HFS+ ne peut être redimensionné de cette "
+#~ "manière pour le moment."
+
+#~ msgid "shrinking embedded HFS+ volume"
+#~ msgstr "réduction du volume HFS+"
+
+#~ msgid "Resizing the HFS+ volume has failed."
+#~ msgstr "Le redimensionnement du volume HFS+ a échoué."
+
+#~ msgid "shrinking HFS wrapper"
+#~ msgstr "réajustement du conteneur HFS"
+
+#~ msgid "Updating the HFS wrapper has failed."
+#~ msgstr "La mise à jour du conteneur HFS a échoué."
+
+#~ msgid ""
+#~ "This is not a real %s check.  This is going to extract special low level "
+#~ "files for debugging purposes."
+#~ msgstr ""
+#~ "Ceci n'est pas un test réel de %s . Il s'agit d'extraire des fichiers "
+#~ "spéciaux de bas niveau pour débogage."
+
+#~ msgid "Bad block list header checksum."
+#~ msgstr "Mauvaise somme de contrôle de l'entête de la liste des blocs."
+
+#~ msgid ""
+#~ "Invalid size of a transaction block while replaying the journal (%i "
+#~ "bytes)."
+#~ msgstr ""
+#~ "Taille de bloc de transaction invalide durant le rejeu (reprise) du "
+#~ "journal (%i octets)."
+
+#~ msgid ""
+#~ "Journal stored outside of the volume are not supported.  Try to "
+#~ "desactivate the journal and run Parted again."
+#~ msgstr ""
+#~ "Le placement du journal à l'extérieur du volume n'est pas supporté. "
+#~ "Essayez de désactiver la journalisation et de relancer Parted."
+
+#~ msgid "Journal offset or size is not multiple of the sector size."
+#~ msgstr ""
+#~ "Le déplacement ou la taille du journal n'est pas un multiple de la taille "
+#~ "d'un secteur."
+
+#~ msgid "Incorrect magic values in the journal header."
+#~ msgstr "Valeurs magiques incorrectes dans l'entête du journal."
+
+#~ msgid "Journal size mismatch between journal info block and journal header."
+#~ msgstr ""
+#~ "Erreur de correspondance de la taille du journal entre le bloc "
+#~ "d'information du journal et l'entête du journal."
+
+#~ msgid "Some header fields are not multiple of the sector size."
+#~ msgstr ""
+#~ "Certains champs de l'entête ne sont pas des multiples de la taille du "
+#~ "secteur."
+
+#~ msgid ""
+#~ "The sector size stored in the journal is not 512 bytes.  Parted only "
+#~ "supports 512 bytes length sectors."
+#~ msgstr ""
+#~ "La taille de secteur stockée dans le journal n'est pas 512 octets. Parted "
+#~ "ne supporte que les secteurs dont la taille est 512 octets."
+
+#~ msgid "Bad journal checksum."
+#~ msgstr "Mauvaise somme de contrôle du journal."
+
+#~ msgid ""
+#~ "The journal is not empty.  Parted must replay the transactions before "
+#~ "opening the file system.  This will modify the file system."
+#~ msgstr ""
+#~ "Le journal n'est pas vide. Parted doit rejouer les transactions avant "
+#~ "d'ouvrir le système de fichiers. Cela modifiera le système de fichiers."
+
+#~ msgid ""
+#~ "The volume header or the master directory block has changed while "
+#~ "replaying the journal.  You should restart Parted."
+#~ msgstr ""
+#~ "L'entête du volume ou le master directory block a changé pendant le rejeu "
+#~ "du journal. Vous devriez relancer Parted."
+
+#~ msgid "An extent has not been relocated."
+#~ msgstr "Une zone n'a pas été réallouée."
+
+#~ msgid ""
+#~ "A reference to an extent comes from a place it should not.  You should "
+#~ "check the file system!"
+#~ msgstr ""
+#~ "Une référence à une zone correspond à une localisation qui ne devrait pas "
+#~ "y être associée. Vous devriez vérifier le système de fichiers."
+
+#~ msgid "This HFS volume has no catalog file.  This is very unusual!"
+#~ msgstr ""
+#~ "Ce volume HFS n'a pas de fichier catalogue. C'est vraiment inhabituel !"
+
+#~ msgid ""
+#~ "This HFS volume has no extents overflow file.  This is quite unusual!"
+#~ msgstr ""
+#~ "Ce volume HFS n'a pas de fichier de zones additionnelles. C'est plutôt "
+#~ "inhabituel !"
+
+#~ msgid ""
+#~ "The extents overflow file should not contain its own extents!  You should "
+#~ "check the file system."
+#~ msgstr ""
+#~ "Le fichier de zones additionnelles ne devrait pas contenir sa propre "
+#~ "zone ! Vous devriez vérifier le système de fichiers."
+
+#~ msgid "Could not cache the file system in memory."
+#~ msgstr "Impossible d'indexer le système de fichiers en mémoire."
+
+#~ msgid "Bad blocks list could not be loaded."
+#~ msgstr "La liste des blocs défectueux ne peut être chargée."
+
+#~ msgid "An error occurred during extent relocation."
+#~ msgstr "Une erreur est survenue pendant le déplacement de la zone."
+
+#~ msgid "This HFS+ volume has no catalog file.  This is very unusual!"
+#~ msgstr ""
+#~ "Ce volume HFS+ n'a pas de fichier catalogue. C'est vraiment inhabituel !"
+
+#~ msgid ""
+#~ "This HFS+ volume has no extents overflow file.  This is quite unusual!"
+#~ msgstr ""
+#~ "Ce volume HFS+ n'a pas de fichier de zones additionnelles. C'est plutôt "
+#~ "inhabituel !"
+
+#~ msgid "The partition must have one of the following FS-TYPEs: "
+#~ msgstr "La partition doit avoir un des FS-TYPEs suivants : "
+
+#~ msgid ""
+#~ "The existing file system will be destroyed and all data on the partition "
+#~ "will be lost. Do you want to continue?"
+#~ msgstr ""
+#~ "Le système de fichier existant va être détruit et toutes les données de "
+#~ "la partition vont être perdues. Voulez-vous continuer ?"
+
+#~ msgid ""
+#~ "WARNING: you are attempting to use %s to operate on (%s) a file system.\n"
+#~ "%s's file system manipulation code is not as robust as what you'll find "
+#~ "in\n"
+#~ "dedicated, file-system-specific packages like e2fsprogs.  We recommend\n"
+#~ "you use %s only to manipulate partition tables, whenever possible.\n"
+#~ "Support for performing most operations on most types of file systems\n"
+#~ "will be removed in an upcoming release.\n"
+#~ msgstr ""
+#~ "ATTENTION : vous tentez d'utiliser %s pour agir sur un système de "
+#~ "fichiers\n"
+#~ "(%s). Le code de manipulation du syst. de fichiers %s n'est pas aussi \n"
+#~ "abouti que celui des paquets dédiés tels e2fsprogs. Nous conseillons\n"
+#~ "d'utiliser %s seulement pour manipuler les tables de partitions, si "
+#~ "possible.\n"
+#~ "Le support de la plupart des opérations/systèmes de fichiers sera\n"
+#~ "abandonné dans une version ultérieure.\n"
+
+#~ msgid "Source device?"
+#~ msgstr "Périphérique source ?"
+
+#~ msgid "Source partition number?"
+#~ msgstr "Numéro de la partition source ?"
+
+#~ msgid "Can't copy an extended partition."
+#~ msgstr "Impossible de copier une partition étendue."
+
+#~ msgid "Destination partition number?"
+#~ msgstr "Numéro de la partition de destination ?"
+
+#~ msgid ""
+#~ "An extended partition cannot hold a file system.  Did you want mkpart?"
+#~ msgstr ""
+#~ "Une partition étendue ne peut avoir de système de fichiers. Vouliez-vous "
+#~ "utiliser mkpart ?"
+
+#~ msgid "Can't move an extended partition."
+#~ msgstr "Impossible de déplacer une partition étendue."
+
+#~ msgid "Can't move a partition onto itself.  Try using resize, perhaps?"
+#~ msgstr ""
+#~ "Impossible de déplacer une partition sur elle-même. Essayez peut-être un "
+#~ "redimensionnement ?"
+
+#~ msgid "Minor: %d\n"
+#~ msgstr "Mineure : %d\n"
+
+#~ msgid "Flags: %s\n"
+#~ msgstr "Fanions : %s\n"
+
+#~ msgid "File System: %s\n"
+#~ msgstr "Système de fichiers : %s\n"
+
+#~ msgid "Size:         "
+#~ msgstr "Taille:         "
+
+#~ msgid "Minimum size: "
+#~ msgstr "Taille minimum : "
+
+#~ msgid "Maximum size: "
+#~ msgstr "Taille maximum : "
+
+#~ msgid "check"
+#~ msgstr "contrôler"
+
+#~ msgid ""
+#~ "check NUMBER                             do a simple check on the file "
+#~ "system"
+#~ msgstr ""
+#~ "check NOMBRE                            faire une vérification simple du "
+#~ "système de fichiers"
+
+#~ msgid "cp"
+#~ msgstr "cp"
+
+#~ msgid ""
+#~ "cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   copy file system to another "
+#~ "partition"
+#~ msgstr ""
+#~ "cp [PERIPHERIQUE] NOMBRE_SOURCE NOMBRE_DESTINATION\n"
+#~ "                                     copier le système de fichiers SOURCE "
+#~ "vers une autre partition DESTINATION"
+
+#~ msgid "mkfs"
+#~ msgstr "mkfs"
+
+#~ msgid ""
+#~ "mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on "
+#~ "partition NUMBER"
+#~ msgstr ""
+#~ "mkfs NOMBRE TYPE-FS                     créer un système de fichiers de "
+#~ "type TYPE-FS sur la partition NOMBRE"
+
+#~ msgid "mkpartfs"
+#~ msgstr "mkpartfs"
+
+#~ msgid ""
+#~ "mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file "
+#~ "system"
+#~ msgstr ""
+#~ "mkpartfs PART-TYPE FS-TYPE DEBUT FIN      créer une partition avec un "
+#~ "système de fichiers"
+
+#~ msgid "move"
+#~ msgstr "déplacer"
+
+#~ msgid "move NUMBER START END                    move partition NUMBER"
+#~ msgstr ""
+#~ "move NOMBRE DEBUT FIN                    déplacer la partition numéro "
+#~ "NOMBRE"
+
+#~ msgid "resize"
+#~ msgstr "redimentionner"
+
+#~ msgid ""
+#~ "resize NUMBER START END                  resize partition NUMBER and its "
+#~ "file system"
+#~ msgstr ""
+#~ "resize NOMBRE DEBUT FIN                   modifier la taille de la "
+#~ "partition (et du système de fichiers) numéro NOMBRE"
+
+#~ msgid "This is not an ECKD disk!  This disk type is not supported!"
+#~ msgstr ""
+#~ "Ce n'est pas un disque ECKD ! Ce type de disque n'est pas supporté !"
+
+#~ msgid ""
+#~ "Device %s has a logical sector size of %lld.  Not all parts of GNU Parted "
+#~ "support this at the moment, and the working code is HIGHLY EXPERIMENTAL.\n"
+#~ msgstr ""
+#~ "La taille des secteurs logiques pour le périphérique %s est %lld. Tous "
+#~ "les modules de GNU Parted ne supportent pas cela pour l'instant : "
+#~ "fonction EXPERIMENTALE.\n"
+
+#~ msgid ""
+#~ "WARNING: the kernel failed to re-read the partition table on %s (%s).  As "
+#~ "a result, it may not reflect all of your changes until after reboot."
+#~ msgstr ""
+#~ "ATTENTION : le noyau n'a pas pu relire la table de partitions sur %s "
+#~ "(%s). En conséquence, vos changements n'apparaitront pas avant le "
+#~ "prochain redémarrage."
+
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: option incorrecte -- %c\n"
+
+#~ msgid ""
+#~ "Could not determine minimum io size for %s: %s.\n"
+#~ "Using the default size (%lld)."
+#~ msgstr ""
+#~ "Impossible de trouver la taille min. d'E/S pour %s : %s.\n"
+#~ "Utilisation de la taille par défaut (%lld)."
+
+#~ msgid ""
+#~ "The kernel was unable to re-read the partition table on %s (%s).  This "
+#~ "means Linux won't know anything about the modifications you made until "
+#~ "you reboot.  You should reboot your computer before doing anything with "
+#~ "%s."
+#~ msgstr ""
+#~ "Le kernel a été incapable de relire la table de partition sur %s (%s). "
+#~ "Cela signifie que Linux ne reconnaîtra aucune des modifications "
+#~ "effectuées avant de redémarrer. Vous devriez redémarrer votre ordinateur "
+#~ "avant de faire quoi que ce soit avec %s."
+
+#~ msgid "Unable to determine the block size of this dasd"
+#~ msgstr ""
+#~ "Impossible de déterminer la taille des blocs de ce périphérique DASD."
+
+#~ msgid "File system has an incompatible feature enabled."
+#~ msgstr "Le système de fichiers a une option incompatible activée."
+
+#~ msgid "Attempt to read sectors %ld-%ld outside of partition on %s."
+#~ msgstr ""
+#~ "Tentative de lecture des secteurs %ld-%ld en dehors de la partition sur "
+#~ "%s."
+
+#~ msgid "where necessary, prompts for user intervention"
+#~ msgstr "lorsque nécessaire, demande l'intervention de l'utilisateur"
+
+#~ msgid "GNU Parted Version information:\n"
+#~ msgstr "Information sur la version de GNU Parted:\n"
+
+#~ msgid "File system?"
+#~ msgstr "Système de fichiers ?"
+
+#~ msgid ""
+#~ "Without arguments, print displays the entire partition table. With "
+#~ "'free'\n"
+#~ "argument, information about free space will be displayed otherwise if a\n"
+#~ "partition number is given, then more detailed information is displayed\n"
+#~ "about that partition. If the 'all' argument is passed instead, partition\n"
+#~ "information for all devices will be displayed."
+#~ msgstr ""
+#~ "Sans argument, print affiche la table complète de partitions. Avec "
+#~ "'free'\n"
+#~ "comme argument, l'infomation sur l'espace libre sera affichée, sinon, si "
+#~ "un\n"
+#~ " numéro de partition est fourni alors des informations supplémentaires\n"
+#~ "détaillées sont affichées à propos de cette partition. Si l'argument "
+#~ "'all'\n"
+#~ "est fournit, l'information sur tous les périphériques sera affichée."
+
+#, fuzzy
+#~ msgid ""
+#~ "The sector size on %s is %d bytes.  Parted is known not to work properly "
+#~ "with drives with sector sizes other than %d bytes."
+#~ msgstr ""
+#~ "La taille de secteurs sur %s est de %d octets. Parted est reconnu pour ne "
+#~ "pas fonctionner correctement avec des périphériques dont la taille des "
+#~ "secteurs est différente de %d octets."
+
+#~ msgid "IDE"
+#~ msgstr "IDE"
+
+#, fuzzy
+#~ msgid ""
+#~ "This ext2 file system has a rather strange layout!  Parted can't resize "
+#~ "this (yet)."
+#~ msgstr ""
+#~ "Ce système de fichiers ext2 a une structure étrange ! Parted ne peut (pas "
+#~ "encore)le redimensionner."
+
+#~ msgid ""
+#~ "You have an HFS+ file system that has a feature that I haven't seen used "
+#~ "anywhere.  Parted can theoretically handle it, but the corresponding code "
+#~ "has never been tested, so this might be risky.  Please email me so I can "
+#~ "see how it works!  <xxx@yyy.zz>"
+#~ msgstr ""
+#~ "Vous avez un système de fichiers HFS+ qui a une option que je n'ai jamais "
+#~ "vue ailleurs. Parted peut théoriquement gérer cela, mais le code "
+#~ "correspondant n'a jamais été testé, donc cela peut être risqué. Merci de "
+#~ "me mailer pour que je puisse voir comment cela fonctionne ! <xxx@yyy.zz>"
+
+#~ msgid ""
+#~ "The extents overflow file should not contain its own extents.  You should "
+#~ "check the file system."
+#~ msgstr ""
+#~ "Le fichier des zones additionnelles ne devrait pas contenir sa propre "
+#~ "zone. Vous devriez vérifier le système de fichiers."
+
+#, fuzzy
+#~ msgid "Disk geometry for %s: %s - %s\n"
+#~ msgstr "Géométrie du disque pour %s : %s - %s\n"
+
+#~ msgid "Disk label type: %s\n"
+#~ msgstr "Type d'étiquette de disque : %s\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "\n"
+#~ "You found a bug in GNU Parted.\n"
+#~ "This may have been fixed in the last version of GNU Parted that you can "
+#~ "find at:\n"
+#~ "\thttp://ftp.gnu.org/gnu/parted/\n"
+#~ "If this has not been fixed or if you don't know how to check, please "
+#~ "email:\n"
+#~ "\tbug-parted@gnu.org\n"
+#~ "or (preferably) file a bug report at:\n"
+#~ "\thttp://parted.alioth.debian.org/bugs/\n"
+#~ "Your report should contain the version of this release (%s) along with "
+#~ "the\n"
+#~ "following message and preferably additional information about your "
+#~ "setup.\n"
+#~ "Refer to the web site of parted\n"
+#~ "\thttp://www.gnu.org/software/parted/parted.html\n"
+#~ "for more informations of what could be useful for bug submitting!\n"
+#~ msgstr ""
+#~ "\n"
+#~ "\n"
+#~ "Vous avez trouvé un bug dans GNU Parted.\n"
+#~ "Il est possible qu'il ait été corrigé dans la dernière version de GNU "
+#~ "Parted que vous pouvez trouver sur :\n"
+#~ "\thttp://ftp.gnu.org/gnu/parted/\n"
+#~ "S'il n'a pas été corrigé ou si vous ne savez pas comment vérifier, "
+#~ "envoyez un email :\n"
+#~ "\tbug-parted@gnu.org\n"
+#~ "ou (de préférence) remplissez un rapport de bug à :\n"
+#~ "\thttp://parted.alioth.debian.org/bugs/\n"
+#~ "Votre rapport de bug doit contenir la version de ce programme (%s) "
+#~ "accompagné du message suivant et de préférence d'informations "
+#~ "supplémentaires sur votre configuration.\n"
+#~ "Reportez vous au site web de Parted\n"
+#~ "\thttp://www.gnu.org/software/parted/parted.html\n"
+#~ "pour d'autres informations qui pourraient être utiles pour le rapport de "
+#~ "bug !"
+
+#~ msgid "SCSI"
+#~ msgstr "SCSI"
+
+#~ msgid "Device %s is neither a SCSI nor IDE drive."
+#~ msgstr "Le périphérique %s n'est ni un disque SCSI ni un disque IDE."
+
+#~ msgid "File system has an invalid signature for a FAT file systems."
+#~ msgstr ""
+#~ "Le système de fichiers a une signature invalide pour des systèmes de "
+#~ "fichiers FAT."
+
+#~ msgid ""
+#~ "START and END are in megabytes.  Negative values count from the end of "
+#~ "the disk.\n"
+#~ msgstr ""
+#~ "DÉBUT et FIN sont en mégaoctets. Les valeurs négatives se décomptent "
+#~ "depuis la fin du disque.\n"
+
+#~ msgid ""
+#~ "You requested to create a partition at %.3f-%.3fMb. The closest Parted "
+#~ "can manage is %.3f-%.3fMb."
+#~ msgstr ""
+#~ "Vous avez demandé de créer une partition à %.3f-%.3fMo. Le plus près que "
+#~ "Parted peut traiter est %.3f-%.3fMo."
+
+#~ msgid ""
+#~ "You requested to move the partition to %.3f-%.3fMb. The closest Parted "
+#~ "can manage is %.3f-%.3fMb."
+#~ msgstr ""
+#~ "Vous avez demandé de déplacer une partition à %.3f-%.3fMo. Le plus près "
+#~ "que Parted peut traiter est %.3f-%.3fMo."
+
+#~ msgid "Minor    Start       End     "
+#~ msgstr "Mineure   Départ      Fin     "
+
+#~ msgid "Type      "
+#~ msgstr "Type      "
+
+#~ msgid "Filesystem  "
+#~ msgstr "Sys.fichiers"
+
+#~ msgid "Name                  "
+#~ msgstr "Nom                   "
+
+#~ msgid ""
+#~ "You requested to resize the partition to %.3f-%.3fMb. The closest Parted "
+#~ "can manage is %.3f-%.3fMb."
+#~ msgstr ""
+#~ "Vous avez demandé de modifier la taille de la partition à %.3f-%.3fMo. Le "
+#~ "plus près que Parted peut traiter est %.3f-%.3fMo."
+
+#~ msgid ""
+#~ "You found a bug in GNU Parted.  Please email a bug report to bug-"
+#~ "parted@gnu.org containing the version (%s), and the following message:\n"
+#~ msgstr ""
+#~ "Vous avez trouvé une anomalie dans GNU Parted. SVP rapportez celle-ci à "
+#~ "bug-parted@gnu.org en donnant la version (%s) et le message qui suit:\n"
+
+#~ msgid "Error reading %s (%s) to determine if partition is mounted."
+#~ msgstr ""
+#~ "Erreur de lecture %s (%s) afin de déterminer si la partition est montée."
+
+#~ msgid ""
+#~ "Unable to determine if partitions are mounted via /proc/mounts or /etc/"
+#~ "mtab.  Make sure you don't attempt to resize or modify mounted file "
+#~ "systems.  (Even read-only mounted)"
+#~ msgstr ""
+#~ "Incapable de déterminer si des partitions sont montées via /proc/mounts "
+#~ "ou /etc/mtab.  Assurez-vous de ne pas tenter de modifier la taille ou de "
+#~ "modifier le système de fichiers (même montés en lecture seulement)"
+
+#~ msgid ""
+#~ "Partition %s is being used.  Modifying it while it is in use could cause "
+#~ "severe corruption."
+#~ msgstr ""
+#~ "La partition %s est utilisée. La modifier alors qu'elle est en usage peut "
+#~ "provoquer un problème sévère de corruption."
+
+#~ msgid "Device %s has dodgey geometry."
+#~ msgstr "Le périphérique %s à une géométrie douteuse."
+
+#~ msgid ""
+#~ "The partition table on %s is inconsistent.  There are many reasons why "
+#~ "this might be the case.  However, the most likely reason is that Linux "
+#~ "detected the BIOS geometry for %s incorrectly.  GNU Parted suspects the "
+#~ "real geometry should be %d/%d/%d (not %d/%d/%d).  You should check with "
+#~ "your BIOS first, as this may not be correct.  You can inform Linux by "
+#~ "adding the parameter %s=%d,%d,%d to the command line.  See the LILO or "
+#~ "GRUB documentation for more information.  If you think Parted's suggested "
+#~ "geometry is correct, you may select Ignore to continue (and fix Linux "
+#~ "later).  Otherwise, select Cancel (and fix Linux and/or the BIOS now)."
+#~ msgstr ""
+#~ "La table de partition sur %s est inconsistante. Il y a plusieurs raisons "
+#~ "pouvant expliquer ce cas. Cependant, la raison la plus probable est que "
+#~ "Linux a détecté incorrectement la géométrie du BIOS pour %s. GNU parted "
+#~ "suspecte que la vraie géométrie devrait être %d/%d/%d (not %d/%d/%d). "
+#~ "Vous devriez vérifier celle du BIOS d'abord puisque celle-ci peut ne pas "
+#~ "être correcte. Vous pouvez informer Linux en fournissant le paramètre %s="
+#~ "%d,%d,%d sur la ligne de commande. Consultez la documentation de LILO ou "
+#~ "de GRUB pour plus de détails. Si vous pensez que la géométrie suggérée "
+#~ "par Parted est correcte, vous pouvez sélectionner « ignore » pour "
+#~ "poursuivre (et corriger plus tard avec Linux). Autrement, sélectionner « "
+#~ "Cancel » (et corriger Linux et/ou le BIOS maintenant)."
+
+#~ msgid ""
+#~ "The partition table on %s is inconsistent.  There are many reasons why "
+#~ "this might be the case.  Often, the reason is that Linux detected the "
+#~ "BIOS geometry incorrectly.  However, this does not appear to be the case "
+#~ "here.  It is safe to ignore,but ignoring may cause (fixable) problems "
+#~ "with some boot loaders, and may cause problems with FAT file systems.  "
+#~ "Using LBA is recommended."
+#~ msgstr ""
+#~ "La table de partition sur %s est inconsistante.  Il existe plusieurs "
+#~ "raisons expliquant ce cas.  Souvent la raison est que Linux a détecté une "
+#~ "géométrie du BIOS incorrecte. Cependant cela ne semble pas être le cas "
+#~ "ici.  Il est prudent de l'ignorer mais l'ignorer pourrait causer certains "
+#~ "problèmes (corrigeables) avec certains chargeurs d'amorce et les systèmes "
+#~ "de fichiers FAT. L'utilisation de LBA est recommandée."
+
+#~ msgid ""
+#~ "Unable to align partition properly.  This probably means that another "
+#~ "partitioning tool generated an incorrect partition table, because it "
+#~ "didn't have the correct BIOS geometry.  It is safe to ignore,but ignoring "
+#~ "may cause (fixable) problems with some boot loaders."
+#~ msgstr ""
+#~ "Incapable d'aligner la partition correctement. Ceci indique probablement "
+#~ "qu'un autre outil de partionnage a fabriqué une table de partition "
+#~ "incorrecte, parce qu'il n'utilisait pas la bonne géométrie du BIOS. Il "
+#~ "est prudent de l'ignorer mais l'ignorer peut causer des problèmes "
+#~ "(corrigeables) avec certains chargeurs d'amorce."
+
+#~ msgid ""
+#~ "  You have Windows FAT partition(s) that are not using LBA.  If your BIOS "
+#~ "supports LBA, then you should switch to LBA by setting the LBA flag on "
+#~ "all FAT partitions.  Otherwise, make sure the operating system and the "
+#~ "BIOS have the same geometry before resizing any FAT partitions."
+#~ msgstr ""
+#~ "  Vous avez des partitions FAT Windows qui n'utilisent pas LBA.  Si le "
+#~ "BIOS supporte LBA alors vous devriez sélectionner LBA en l'activant pour "
+#~ "toutes les partitions FAT.  Autrement, assurez-vous que le système "
+#~ "d'exploitation et le BIOS ont la même géométrie avant de modifier la "
+#~ "taille de n'importe quelle partition FAT."
+
+#~ msgid ""
+#~ "The operating system thinks the geometry on %s is %d/%d/%d.  Therefore, "
+#~ "cylinder 1024 ends at %.3fM.%s"
+#~ msgstr ""
+#~ "Le système d'exploitation croit que le géométrie sur %s est %d/%d/%d.  "
+#~ "Par conséquent le cylindre 1024 se termine à %.3fM.%s"
+
+#~ msgid "The operating system thinks the geometry on %s is %d/%d/%d.%s"
+#~ msgstr ""
+#~ "Le système d'exploitation croit que le géométrie sur %s est %d/%d/%d.%s"
+
+#~ msgid "START and END are in megabytes\n"
+#~ msgstr "DÉBUT et FIN sont en mégaoctets\n"
+
+#~ msgid "Partition %s is being used."
+#~ msgstr "La partition %s est déjà utilisée."
+
+#~ msgid ""
+#~ "The FATs aren't big enough to describe all clusters!  Each FAT is %d "
+#~ "sectors.  There are %d clusters, which would require each FAT to be %d "
+#~ "sectors.  This is REALLY weird.  You might want to write us an email: bug-"
+#~ "parted@gnu.org"
+#~ msgstr ""
+#~ "Les FAT ne sont pas assez grandes pour décrire tous les clusters! Chaque "
+#~ "FAT a %d secteurs. Il y a %d clusters lesquels nécessiteront que chaque "
+#~ "FAT ait %d secteurs. Cela est vraiment bizarre. Vous pouvez nous écrire: "
+#~ "bug-parted@gnu.org"
+
+#~ msgid ""
+#~ "This swap partition is not compatible with Linux version 2.1.117 or "
+#~ "earlier.  Use a smaller partition (maximum size 128mb) if you want to use "
+#~ "old versions of Linux."
+#~ msgstr ""
+#~ "Cette partition swap n'est pas compatible avec la version 2.1.117 de "
+#~ "Linux (ou précédente). Utilisez une partition de plus petite taille "
+#~ "(taille maximum 128Mo) si vous désirez utiliser une version plus ancienne "
+#~ "de Linux"
+
+#~ msgid ""
+#~ "The new partition overlaps with another partition so badly that it isn't "
+#~ "obvious want you want!"
+#~ msgstr ""
+#~ "La nouvelle partition en chevauche une autre de façon telle qu'il est "
+#~ "difficile de savoir ce que vous désirez!."
+
+#~ msgid ""
+#~ "Can't resize an extended partition so as to exclude a logical partition."
+#~ msgstr ""
+#~ "Ne peut modifier la taille d'une partition étendue en excluant une "
+#~ "partition logique."
+
+#~ msgid "Can't grow a partition onto used space."
+#~ msgstr "Ne peut accroître une partition sur de l'espace utilisé."
+
+#~ msgid "unknown"
+#~ msgstr "inconnu"
+
+#~ msgid "Unknown SCSI"
+#~ msgstr "SCSI inconnu"
+
+#~ msgid "GUID Partition Table Header Signature is wrong: "
+#~ msgstr "Signature erronée de l'entête de la table de partition GUID: "
+
+#~ msgid " should be "
+#~ msgstr " devrait être "
+
+#~ msgid "GPT Header CRC check failed, %x should be %x."
+#~ msgstr "Erreur de vérification du CRC de l'entête GPT, %x devrait être %x."
+
+#~ msgid "GPT Partition Entry Array CRC check failed, %x should be %x."
+#~ msgstr ""
+#~ "Erreur de vérification du CRC de l'entrée de la partition GPT, %x devrait "
+#~ "être %x."
+
+#~ msgid ""
+#~ "This disk contains a valid Primary and Alternate GUID Partition Table but "
+#~ "the Protective MBR is invalid.  This generally means that the disk had "
+#~ "GPT partitions on it, but then a legacy partition editing tool was used "
+#~ "to change the partition table stored in the MBR.\n"
+#~ "Which data is valid,  GPT or MBR?\n"
+#~ "Yes will assume that the GPT information is correct, and rewrite the "
+#~ "PMBR.\n"
+#~ "No will assume that the MBR is correct, and erase the GPT information.\n"
+#~ "Ignore will assume that the MBR is correct, but not change the disk."
+#~ msgstr ""
+#~ "Ce disque contient une table de partitions Primaire et Alternative GUID "
+#~ "valides mais le MBR Protectif est invalide. Cela signifie généralement "
+#~ "que le disque contient des partitions GPT mais qu'un ancien logiciel "
+#~ "d'édition de partitions a été utilisé pour modifier la table de "
+#~ "partitions stockée dans le MBR.\n"
+#~ "Lequel est valide GPT ou MBR?\n"
+#~ "La réponse Yes (oui) indique que l'on suppose que l'information de type "
+#~ "GPT est correcte et réécrira le PMBR.\n"
+#~ "La réponse No (non) indique que l'on assume que l'information de type MBR "
+#~ "est correcte et effacera l'information GPT\n"
+#~ "La réponse Ignore (ignorez) indique que l'on suppose que l'information de "
+#~ "type MBR est correcte mais aucun changement ne sera apporté au disque."
+
+#~ msgid ""
+#~ "This disk contains a valid Alternate GUID Partition Table but the Primary "
+#~ "GPT and Protective MBR are invalid.  This generally means that the disk "
+#~ "had GPT partitions on it, but then a legacy partition editing tool was "
+#~ "used to change the partition table stored in the MBR.\n"
+#~ "Which data is valid,  GPT or MBR?\n"
+#~ "Yes will assume that the GPT information is correct, and will rewrite the "
+#~ "PMBR and Primary GPT.\n"
+#~ "No will assume that the MBR is correct, and erase the GPT information.\n"
+#~ "Ignore will assume that the MBR is correct, but not change the disk."
+#~ msgstr ""
+#~ "Ce disque contient une table de partition Alternate GUID valide mais la "
+#~ "partition primaire GPT et le MBR Protectif sont invalides. Cela signifie "
+#~ "généralement que le disque contient des partitions GPT mais qu'un ancien "
+#~ "logiciel d'édition de partitions a été utilisé pour modifier la table de "
+#~ "partitions stockée dans le MBR.\n"
+#~ "Lequel est valide GPT ou MBR?\n"
+#~ "La réponse Yes (oui) indique que l'on suppose que l'information de type "
+#~ "GPT est correcte et réécrira le PMBR et la partition primaire GPT.\n"
+#~ "La réponse No (non) indique que l'on suppose que l'information de type "
+#~ "MBR est correcte et effacera l'information GPT\n"
+#~ "La réponse Ignore (ignorez) indique que l'on suppose que l'information de "
+#~ "type MBR est correcte mais aucun changement ne sera apporté au disque."
+
+#~ msgid ""
+#~ "This disk contains a valid Primary GUID Partition Table but the Alternate "
+#~ "GPT and Protective MBR are invalid.  This generally means that the disk "
+#~ "had GPT partitions on it, but then a legacy partition editing tool was "
+#~ "used to change the partition table stored in the MBR.\n"
+#~ "Which data is valid,  GPT or MBR?\n"
+#~ "Yes will assume that the GPT information is correct, and will rewrite the "
+#~ "PMBR and Alternate GPT.\n"
+#~ "No will assume that the MBR is correct, and erase the GPT information.\n"
+#~ "Ignore will assume that the MBR is correct, but not change the disk.\n"
+#~ msgstr ""
+#~ "Ce disque contient une table de partition primaire GUID valide mais la "
+#~ "partition alternative GPT et le MBR Protectif sont invalides. Cela "
+#~ "signifie généralement que le disque contient des partitions GPT mais "
+#~ "qu'un ancien logiciel d'édition de partitions a été utilisé pour modifier "
+#~ "la table de partitions stockée dans le MBR.\n"
+#~ "Lequel est valide GPT ou MBR?\n"
+#~ "La réponse Yes (oui) indique que l'on suppose que l'information de type "
+#~ "GPT est correcte et réécrira le PMBR et la partition alternative GPT.\n"
+#~ "La réponse No (non) indique que l'on suppose que l'information de type "
+#~ "MBR est correcte et effacera l'information GPT\n"
+#~ "La réponse Ignore (ignorez) indique que l'on suppose que l'information de "
+#~ "type MBR est correcte mais aucun changement ne sera apporté au disque.\n"
+
+#~ msgid "Can't set non-Linux partitions as a root device."
+#~ msgstr "Ne peut définir des partitions non-Linux pour un périphérique root"
+
+#~ msgid "Can't set non-Linux partitions as a swap device."
+#~ msgstr ""
+#~ "Ne peut définir des partitions non-Linux pour un périphérique pour le swap"
+
+#~ msgid "No get_resize_constraint for %s!"
+#~ msgstr "Aucun get_resize_constraint pour %s!"
+
+#~ msgid "The %s file system code doesn't support %s disk labels."
+#~ msgstr ""
+#~ "Le code du système de fichiers %s ne supporte pas les étiquettes de "
+#~ "disque %s"
+
+#~ msgid "Creating new %s disklabels is not implemented yet."
+#~ msgstr ""
+#~ "La création d'une nouvelle étiquette pour le système de fichiers %s n'est "
+#~ "pas encore implantée."
+
+#~ msgid "The code to write the partition table hasn't been written for %s yet"
+#~ msgstr ""
+#~ "Le code pour écrire la table de partition n'a pas encore été écrit pour %s"
+
+#~ msgid "Insane!  %d clusters!"
+#~ msgstr "Insensé!  %d clusters!"
+
+#~ msgid ""
+#~ "The filesystem is going to be too big for FAT16, so FAT32 will be used.  "
+#~ "This is not compatible with MS-DOS, early versions of MS-Windows 95 and "
+#~ "Windows NT.  If you use these operating systems, then select cancel, and "
+#~ "create a smaller partition.  If you only use Linux, BSD, MS Windows 98 "
+#~ "and/or MS Windows 95 B, then select OK."
+#~ msgstr ""
+#~ "Le système de fichiers sera trop gros pour FAT16, aussi FAT32 sera "
+#~ "utilisé. Il n'est pas compatible avec MS-DOS et les premières versions de "
+#~ "MS-Windows 95 et Windows NT. Si vous utilisez ces systèmes d'exploitation "
+#~ "alors sélectionne 'annuler' (cancel) et créez une partition plus petite. "
+#~ "Si vous utilisez seulement Linux, BSD, MS Windows 98 et/ou MS Windows 95 "
+#~ "B alors sélectionner 'OK'."
+
+#~ msgid "Weird: fat_calc_sizes() failed for FAT32!"
+#~ msgstr "Bizarre: fat_calc_sizes() a échoué pour un FAT32!"
+
+#~ msgid ""
+#~ "Would you like to use FAT32 for this filesystem?  It is much more "
+#~ "efficient with your disk space, but is not compatible with early versions "
+#~ "of Windows 95 and Windows NT.  Only select yes if you only use Linux, "
+#~ "BSD, MS Windows 98 and/or MS Windows 95 B."
+#~ msgstr ""
+#~ "Préférez-vous utiliser FAT32 pour ce système de fichiers? C'est plus "
+#~ "efficace avec votre espace disque mais non compatible avec les premières "
+#~ "version de Windows 95 et Windows NT. Sélectionner seulement si vous "
+#~ "utilisez Linux, BSD, MS Windows 98 et/ou MS Windows 95 B."
+
+#~ msgid ""
+#~ "File system doesn't have expected sizes for Windows to like it.  Number "
+#~ "of clusters is %d (%d expected); size of FATs is %d sectors (%d expected)."
+#~ msgstr ""
+#~ "Le système de fichiers n'était pas prévu pour des tailles compatibles "
+#~ "avec Windows.  Le nombre de clusters est %d (%d attendu). La taille des "
+#~ "FAT est de %d secteurs (%d attendu)"
+
+#~ msgid ""
+#~ "Partition size (%ld sectors) and filesystem size (%ld sectors) do not "
+#~ "match."
+#~ msgstr ""
+#~ "La taille de partition (%ld secteurs) et la taille du système de fichiers "
+#~ "(%ld secteurs) ne concordent pas."
+
+#~ msgid "Linux-swap partitions can not be hidden on msdos disk labels."
+#~ msgstr ""
+#~ "Les partitions Linux-swap ne peuvent être cachées pour une étiquette de "
+#~ "disque MS-DOS"
+
+#~ msgid "Linux-swap partitions can not be bootable on pc98 disk labels."
+#~ msgstr ""
+#~ "Les partitions Linux-swap ne peuvent être amorçables pour une étiquette "
+#~ "de disque pc98."
+
+#~ msgid "HFS partitions can't be hidden on msdos disk labels."
+#~ msgstr ""
+#~ "Les partitions HFS ne peuvent être cachées pour une étiquette de disque "
+#~ "MS-DOS."
+
+#~ msgid "JFS partitions can't be hidden on msdos disk labels."
+#~ msgstr ""
+#~ "Les partitions JFS ne peuvent être cachées pour une étiquette de disque "
+#~ "MS-DOS."
+
+#~ msgid "Reiserfs partitions can't be hidden on msdos disk labels."
+#~ msgstr ""
+#~ "Les partitions Reiserfs ne peuvent être cachées pour une étiquette de "
+#~ "disque MS-DOS."
+
+#~ msgid "Reiserfs partitions must be bootable on pc98 disk labels."
+#~ msgstr ""
+#~ "Les partitions Reiserfs doivent être amorçables pour une étiquette de "
+#~ "disque pc98."
+
+#~ msgid "XFS partitions can't be hidden on msdos disk labels."
+#~ msgstr ""
+#~ "Les partitions XFS ne peuvent être cachées pour une étiquette de disque "
+#~ "MS-DOS."
diff --git a/po/gl.gmo b/po/gl.gmo
new file mode 100644 (file)
index 0000000..02d9764
Binary files /dev/null and b/po/gl.gmo differ
diff --git a/po/gl.po b/po/gl.po
new file mode 100644 (file)
index 0000000..bed5dcc
--- /dev/null
+++ b/po/gl.po
@@ -0,0 +1,3545 @@
+# Galician translation of GNU parted
+# Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
+# Jacobo Tarrío Barreiro <jtarrio@trasno.net>, 2000, 2001, 2002.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: parted 1.6.4-pre2\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2011-05-30 13:45+0200\n"
+"PO-Revision-Date: 2002-12-07 01:30+0100\n"
+"Last-Translator: Jacobo Tarrío Barreiro <jtarrio@trasno.net>\n"
+"Language-Team: Galician <gpul-traduccion@ceu.fi.udc.es>\n"
+"Language: gl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/argmatch.c:133
+#, fuzzy, c-format
+msgid "invalid argument %s for %s"
+msgstr "Non se puido abrir %s."
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr ""
+
+#: lib/argmatch.c:153
+#, fuzzy, c-format
+msgid "Valid arguments are:"
+msgstr "Non se puido abrir %s."
+
+#: lib/closeout.c:112 libparted/labels/fdasd.c:107
+msgid "write error"
+msgstr ""
+
+#: lib/error.c:181
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Tipo de sistema de ficheiros descoñecido."
+
+#: lib/getopt.c:548 lib/getopt.c:577
+#, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
+msgstr ""
+
+#: lib/getopt.c:625 lib/getopt.c:629
+#, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:638 lib/getopt.c:643
+#, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:686 lib/getopt.c:705
+#, c-format
+msgid "%s: option '--%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:743 lib/getopt.c:746
+#, fuzzy, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "Non se puido abrir %s - etiqueta de disco non recoñecida."
+
+#: lib/getopt.c:754 lib/getopt.c:757
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "Non se puido abrir %s - etiqueta de disco non recoñecida."
+
+#: lib/getopt.c:806 lib/getopt.c:809
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr ""
+
+#: lib/getopt.c:859 lib/getopt.c:876 lib/getopt.c:1084 lib/getopt.c:1102
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr ""
+
+#: lib/getopt.c:932 lib/getopt.c:948
+#, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:972 lib/getopt.c:990
+#, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:1011 lib/getopt.c:1029
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr ""
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:271
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:272
+msgid "'"
+msgstr ""
+
+#: lib/regcomp.c:133
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:136
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:139
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:142
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:145
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:148
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:151
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:154
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:157
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:160
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:163
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:166
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:169
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:172
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:175
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:178
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:181
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:702
+msgid "No previous regular expression"
+msgstr ""
+
+#. TRANSLATORS: A regular expression testing for an affirmative answer
+#. (english: "yes").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^yesexpr='
+#: lib/rpmatch.c:147
+msgid "^[yY]"
+msgstr ""
+
+#. TRANSLATORS: A regular expression testing for a negative answer
+#. (english: "no").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^noexpr='
+#: lib/rpmatch.c:160
+msgid "^[nN]"
+msgstr ""
+
+#: lib/version-etc.c:74
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr ""
+
+#: lib/version-etc.c:77
+#, c-format
+msgid "Packaged by %s\n"
+msgstr ""
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale.  Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:84
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:86
+msgid ""
+"\n"
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:102
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:106
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:110
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:131
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:139
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:147
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:156
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:167
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package.  Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:245
+#, c-format
+msgid ""
+"\n"
+"Report bugs to: %s\n"
+msgstr ""
+
+#: lib/version-etc.c:247
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr ""
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr ""
+
+#: lib/version-etc.c:253
+#, c-format
+msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
+msgstr ""
+
+#: lib/version-etc.c:256
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr ""
+
+#: lib/xstrtol-error.c:63
+#, fuzzy, c-format
+msgid "invalid %s%s argument `%s'"
+msgstr "Non se puido abrir %s."
+
+#: lib/xstrtol-error.c:68
+#, fuzzy, c-format
+msgid "invalid suffix in %s%s argument `%s'"
+msgstr "Non se puido abrir %s."
+
+#: lib/xstrtol-error.c:72
+#, fuzzy, c-format
+msgid "%s%s argument `%s' too large"
+msgstr "Non se puido abrir %s."
+
+#: libparted/arch/beos.c:245
+msgid "Disk Image"
+msgstr ""
+
+#: libparted/arch/beos.c:346 libparted/arch/gnu.c:277
+#: libparted/arch/linux.c:1545
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "Erro ao abrir %s: %s"
+
+#: libparted/arch/beos.c:357 libparted/arch/gnu.c:287
+#: libparted/arch/linux.c:1556
+#, c-format
+msgid "Unable to open %s read-write (%s).  %s has been opened read-only."
+msgstr ""
+"Non se puido abrir %s para lectura-escritura (%s). Abriuse %s para só "
+"lectura."
+
+#: libparted/arch/beos.c:419 libparted/arch/linux.c:1714
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s mentres se ía á posición da que ler en %s"
+
+#: libparted/arch/beos.c:452 libparted/arch/gnu.c:465 libparted/arch/gnu.c:564
+#: libparted/arch/gnu.c:692 libparted/arch/linux.c:1674
+#: libparted/arch/linux.c:1755
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s durante a lectura en %s"
+
+#: libparted/arch/beos.c:488 libparted/arch/gnu.c:525
+#: libparted/arch/linux.c:1831
+#, c-format
+msgid "Can't write to %s, because it is opened read-only."
+msgstr "Non se puido escribir en %s, porque está aberto para só lectura."
+
+#: libparted/arch/beos.c:504 libparted/arch/linux.c:1856
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s mentres se ía á posición na que escribir en %s"
+
+#: libparted/arch/beos.c:541 libparted/arch/gnu.c:601 libparted/arch/gnu.c:646
+#: libparted/arch/gnu.c:723 libparted/arch/linux.c:1804
+#: libparted/arch/linux.c:1898 libparted/arch/linux.c:1970
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s durante a escritura en %s"
+
+#: partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr ""
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the operating system about partition table changes.\n"
+"\n"
+"  -d, --dry-run    do not actually inform the operating system\n"
+"  -s, --summary    print a summary of contents\n"
+"  -h, --help       display this help and exit\n"
+"  -v, --version    output version information and exit\n"
+msgstr ""
+
+#: partprobe/partprobe.c:150
+msgid ""
+"\n"
+"When no DEVICE is given, probe all partitions.\n"
+msgstr ""
+
+#: partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: libparted/arch/gnu.c:110
+#, c-format
+msgid "Unable to open %s."
+msgstr "Non se puido abrir %s."
+
+#: libparted/arch/gnu.c:130
+msgid "Unable to probe store."
+msgstr "Non se puido sondea-lo armacén."
+
+#: libparted/arch/gnu.c:368
+#, fuzzy
+msgid ""
+"The partition table cannot be re-read.  This means you need to reboot before "
+"mounting any modified partitions.  You also need to reinstall your boot "
+"loader before you reboot (which may require mounting modified partitions).  "
+"It is impossible do both things!  So you'll need to boot off a rescue disk, "
+"and reinstall your boot loader from the rescue disk.  Read section 4 of the "
+"Parted User documentation for more information."
+msgstr ""
+"Non se puido volver le-la táboa de particións, así que ten que reiniciar "
+"antes de montar calquera partición modificada. Tamén precisa reinstala-lo "
+"cargador de inicio antes de reiniciar (o que pode precisa-la montaxe de "
+"particións modificadas). É imposible facer ámbalas dúas cousas, así que ha "
+"ter que arrincar cun disco de rescate, e reinstala-lo cargador de inicio "
+"dende o disco de rescate. Lea a sección 4 da documentación do Usuario de "
+"Parted para obter máis información."
+
+#: libparted/arch/gnu.c:385
+#, fuzzy, c-format
+msgid ""
+"The partition table on %s cannot be re-read (%s).  This means the Hurd knows "
+"nothing about any modifications you made.  You should reboot your computer "
+"before doing anything with %s."
+msgstr ""
+"A táboa de particións de %s (%s). Isto quere dicir que Hurd non sabe nada "
+"das modificacións que Vd. fixo. Debería reinicia-lo seu ordenador antes de "
+"facer nada con %s."
+
+#: libparted/arch/gnu.c:396 parted/parted.c:1967
+msgid ""
+"You should reinstall your boot loader before rebooting.  Read section 4 of "
+"the Parted User documentation for more information."
+msgstr ""
+"Debería reinstala-lo cargador de inicio antes de reiniciar. Lea a sección 4 "
+"da documentación do Usuario de Parted para obter máis información."
+
+#: libparted/arch/gnu.c:788
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%s tentando sincronizar %s no disco"
+
+#: libparted/arch/linux.c:520
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "Non se puido facer \"stat\" sobre o dispositivo %s - %s."
+
+#: libparted/arch/linux.c:577
+#, fuzzy, c-format
+msgid "Unable to determine the dm type of %s."
+msgstr "Non se puido determina-lo tamaño de %s (%s)"
+
+#: libparted/arch/linux.c:669
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+
+#: libparted/arch/linux.c:690
+#, c-format
+msgid ""
+"Could not determine physical sector size for %s.\n"
+"Using the logical sector size (%lld)."
+msgstr ""
+
+#: libparted/arch/linux.c:746
+#, fuzzy, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "Non se puido determina-lo tamaño de %s (%s)"
+
+#: libparted/arch/linux.c:832
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "Non se puido obte-la identidade do dispositivo %s - %s"
+
+#: libparted/arch/linux.c:841
+msgid "Generic IDE"
+msgstr ""
+
+#: libparted/arch/linux.c:862
+#, c-format
+msgid ""
+"Device %s has multiple (%d) logical sectors per physical sector.\n"
+"GNU Parted supports this EXPERIMENTALLY for some special disk label/file "
+"system combinations, e.g. GPT and ext2/3.\n"
+"Please consult the web site for up-to-date information."
+msgstr ""
+
+#: libparted/arch/linux.c:1039
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "Erro ao inicializa-lo dispositivo SCSI %s - %s"
+
+#: libparted/arch/linux.c:1103
+#, fuzzy, c-format
+msgid ""
+"The device %s is so small that it cannot possibly store a file system or "
+"partition table.  Perhaps you selected the wrong device?"
+msgstr ""
+"O dispositivo %s ten lonxitude cero, e non pode armacenar un sistema de "
+"ficheiros ou táboa de particións. ¿Non seleccionaría un dispositivo "
+"equivocado?"
+
+#: libparted/arch/linux.c:1216
+#, fuzzy, c-format
+msgid ""
+"Unable to determine geometry of file/device %s.  You should not use Parted "
+"unless you REALLY know what you're doing!"
+msgstr ""
+"Non se puido determina-la xeometría do ficheiro/dispositivo. ¡Non debería "
+"usar Parted se non sabe DE VERDADE o que está a facer!"
+
+#: libparted/arch/linux.c:1276
+msgid "Generic SD/MMC Storage Card"
+msgstr ""
+
+#: libparted/arch/linux.c:1329
+msgid "DAC960 RAID controller"
+msgstr "Controladora RAID DAC960"
+
+#: libparted/arch/linux.c:1334
+msgid "Promise SX8 SATA Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1339
+msgid "ATA over Ethernet Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1345
+msgid "IBM S390 DASD drive"
+msgstr ""
+
+#: libparted/arch/linux.c:1351
+msgid "IBM iSeries Virtual DASD"
+msgstr ""
+
+#: libparted/arch/linux.c:1356
+msgid "Compaq Smart Array"
+msgstr "Compaq Smart Array"
+
+#: libparted/arch/linux.c:1361
+msgid "ATARAID Controller"
+msgstr "Controladora ATARAID"
+
+#: libparted/arch/linux.c:1366
+msgid "I2O Controller"
+msgstr "Controladora I2O"
+
+#: libparted/arch/linux.c:1371
+msgid "User-Mode Linux UBD"
+msgstr ""
+
+#: libparted/arch/linux.c:1384
+#, c-format
+msgid "Linux device-mapper (%s)"
+msgstr ""
+
+#: libparted/arch/linux.c:1395
+#, fuzzy
+msgid "Xen Virtual Block Device"
+msgstr "%s non é un dispositivo de bloques."
+
+#: libparted/arch/linux.c:1400
+msgid "Unknown"
+msgstr "Descoñecido"
+
+#: libparted/arch/linux.c:1409
+#, fuzzy
+msgid "Virtio Block Device"
+msgstr "%s non é un dispositivo de bloques."
+
+#: libparted/arch/linux.c:1414
+msgid "Linux Software RAID Array"
+msgstr ""
+
+#: libparted/arch/linux.c:1421
+msgid "ped_device_new()  Unsupported device type"
+msgstr "ped_device_new()  Tipo de dispositivo non soportado"
+
+#: libparted/arch/linux.c:1518 libparted/arch/linux.c:1590
+#, fuzzy, c-format
+msgid "Error fsyncing/closing %s: %s"
+msgstr "Erro ao abrir %s: %s"
+
+#: libparted/arch/linux.c:1754
+#, c-format
+msgid "end of file while reading %s"
+msgstr ""
+
+#: libparted/arch/linux.c:2390
+#, fuzzy, c-format
+msgid ""
+"Error informing the kernel about modifications to partition %s -- %s.  This "
+"means Linux won't know about any changes you made to %s until you reboot -- "
+"so you shouldn't mount it or use it in any way before rebooting."
+msgstr ""
+"Erro ao informar ao núcleo sobre as modificacións feitas na partición %s - "
+"%s. Isto quere dicir que Linux non ha saber nada dos cambios que lle fixo a "
+"%s ata que reinicie - así que non debería montalo ou empregalo de ningún "
+"xeito antes de reiniciar."
+
+#: libparted/arch/linux.c:2528
+#, fuzzy, c-format
+msgid "Unable to determine the size and length of %s."
+msgstr "Non se puido determina-lo tamaño de %s (%s)"
+
+#: libparted/arch/linux.c:2553
+#, fuzzy, c-format
+msgid "Failed to add partition %d (%s)"
+msgstr "Non se puido determinar se a partición está montada."
+
+#: libparted/arch/linux.c:2580
+#, c-format
+msgid ""
+"Partition(s) %s on %s have been written, but we have been unable to inform "
+"the kernel of the change, probably because it/they are in use.  As a result, "
+"the old partition(s) will remain in use.  You should reboot now before "
+"making further changes."
+msgstr ""
+
+#: libparted/arch/linux.c:2706
+#, fuzzy, c-format
+msgid ""
+"parted was unable to re-read the partition table on %s (%s).  This means "
+"Linux won't know anything about the modifications you made. "
+msgstr ""
+"O kernel non puido volver le-la táboa de particións de %s (%s). Isto quere "
+"dicir que Linux non sabe nada das modificacións que Vd. fixo, ata que "
+"reinicie. Debería reinicia-lo seu ordenador antes de facer nada con %s."
+
+#: libparted/cs/geom.c:161
+#, fuzzy, c-format
+msgid "Can't have the end before the start! (start sector=%jd length=%jd)"
+msgstr "¡A fin da partición non pode estar detrás do comezo!"
+
+#: libparted/cs/geom.c:169
+msgid "Can't have a partition outside the disk!"
+msgstr "¡Non se pode ter unha partición fóra do disco!"
+
+#: libparted/cs/geom.c:384
+#, fuzzy, c-format
+msgid "Attempt to write sectors %ld-%ld outside of partition on %s."
+msgstr "Tentáronse escribi-los sectores %ld-%ld fóra da partición en %s"
+
+#: libparted/cs/geom.c:424
+msgid "checking for bad blocks"
+msgstr "buscando os bloques erróneos"
+
+#: libparted/debug.c:96
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:109
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr ""
+
+#: libparted/disk.c:192
+#, fuzzy, c-format
+msgid "%s: unrecognised disk label"
+msgstr "Non se puido abrir %s - etiqueta de disco non recoñecida."
+
+#: libparted/disk.c:484
+#, c-format
+msgid ""
+"This libparted doesn't have write support for %s.  Perhaps it was compiled "
+"read-only."
+msgstr ""
+"Esta versión de libparted non tén soporte de escritura para %s. Se cadra "
+"está compilado para só lectura."
+
+#: libparted/disk.c:629
+#, fuzzy, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "A partición %d ten %.3fMb, pero o sistema de ficheiros ten %.3fMb."
+
+#: libparted/disk.c:838
+msgid "cylinder_alignment"
+msgstr ""
+
+#: libparted/disk.c:844
+#, fuzzy, c-format
+msgid "Unknown disk flag, %d."
+msgstr "Modificador de particións descoñecido, %d."
+
+#: libparted/disk.c:1283
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "As etiquetas de disco %s non soportan particións extendidas."
+
+#: libparted/disk.c:1858
+#, c-format
+msgid "%s disk labels don't support logical or extended partitions."
+msgstr ""
+"As etiquetas de disco %s non soportan particións lóxicas ou extendidas."
+
+#: libparted/disk.c:1871
+#, fuzzy
+msgid "Too many primary partitions."
+msgstr "Demasiadas particións primarias."
+
+#: libparted/disk.c:1880
+#, c-format
+msgid ""
+"Can't add a logical partition to %s, because there is no extended partition."
+msgstr ""
+"Non se pode engadir unha partición lóxica a %s, porque non hai unha "
+"partición estendida."
+
+#: libparted/disk.c:1904
+#, fuzzy, c-format
+msgid "Can't have more than one extended partition on %s."
+msgstr "Non se pode ter máis de unha partición estendida en %s"
+
+#: libparted/disk.c:1914
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr "Non se poden ter particións lóxicas fóra da partición estendida."
+
+#: libparted/disk.c:1939
+#, c-format
+msgid "Can't have a logical partition outside of the extended partition on %s."
+msgstr ""
+"Non se pode ter unha partición lóxica fóra da partición estendida en %s."
+
+#: libparted/disk.c:1949 libparted/disk.c:2008 libparted/disk.c:2186
+#, fuzzy
+msgid "Can't have overlapping partitions."
+msgstr "Non se poden ter particións solapándose."
+
+#: libparted/disk.c:1957
+msgid "Can't have a primary partition inside an extended partition."
+msgstr ""
+"Non se pode ter unha partición primaria dentro dunha partición estendida."
+
+#: libparted/disk.c:2387
+msgid "metadata"
+msgstr "metadatos"
+
+#: libparted/disk.c:2389
+msgid "free"
+msgstr "libre"
+
+#: libparted/disk.c:2391 parted/ui.c:1194 parted/ui.c:1222
+msgid "extended"
+msgstr "estendida"
+
+#: libparted/disk.c:2393 parted/ui.c:1198 parted/ui.c:1226
+msgid "logical"
+msgstr "lóxica"
+
+#: libparted/disk.c:2395 parted/ui.c:1190 parted/ui.c:1218
+msgid "primary"
+msgstr "primaria"
+
+#: libparted/disk.c:2411
+msgid "boot"
+msgstr "inicio"
+
+#: libparted/disk.c:2413
+msgid "bios_grub"
+msgstr ""
+
+#: libparted/disk.c:2415
+msgid "root"
+msgstr "raiz"
+
+#: libparted/disk.c:2417
+msgid "swap"
+msgstr "intercambio"
+
+#: libparted/disk.c:2419
+msgid "hidden"
+msgstr "oculta"
+
+#: libparted/disk.c:2421
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2423
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2425
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2427
+msgid "hp-service"
+msgstr "hp-service"
+
+#: libparted/disk.c:2429
+msgid "palo"
+msgstr ""
+
+#: libparted/disk.c:2431
+msgid "prep"
+msgstr ""
+
+#: libparted/disk.c:2433
+msgid "msftres"
+msgstr ""
+
+#: libparted/disk.c:2435
+msgid "atvrecv"
+msgstr ""
+
+#: libparted/disk.c:2437
+msgid "diag"
+msgstr ""
+
+#: libparted/disk.c:2439
+msgid "legacy_boot"
+msgstr ""
+
+#: libparted/disk.c:2445
+#, fuzzy, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Modificador de particións descoñecido, %d."
+
+#: libparted/exception.c:77
+msgid "Information"
+msgstr "Información"
+
+#: libparted/exception.c:78
+msgid "Warning"
+msgstr "Aviso"
+
+#: libparted/exception.c:79
+msgid "Error"
+msgstr "Erro"
+
+#: libparted/exception.c:80
+msgid "Fatal"
+msgstr "Moi grave"
+
+#: libparted/exception.c:81
+msgid "Bug"
+msgstr "Erro"
+
+#: libparted/exception.c:82
+msgid "No Implementation"
+msgstr "Sen Implementación"
+
+#: libparted/exception.c:86
+msgid "Fix"
+msgstr "Arranxar"
+
+#: libparted/exception.c:87
+msgid "Yes"
+msgstr "Si"
+
+#: libparted/exception.c:88
+msgid "No"
+msgstr "Non"
+
+#: libparted/exception.c:89
+msgid "OK"
+msgstr "Aceptar"
+
+#: libparted/exception.c:90
+msgid "Retry"
+msgstr "Reintentar"
+
+#: libparted/exception.c:91
+msgid "Ignore"
+msgstr "Ignorar"
+
+#: libparted/exception.c:92
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: libparted/exception.c:132
+#, fuzzy, c-format
+msgid ""
+"A bug has been detected in GNU Parted.  Refer to the web site of parted "
+"http://www.gnu.org/software/parted/parted.html for more information of what "
+"could be useful for bug submitting!  Please email a bug report to %s "
+"containing at least the version (%s) and the following message:  "
+msgstr ""
+"Detectouse un erro en GNU parted. Por favor, envíe un informe de erro a bug-"
+"parted@gnu.org que conteña a versión (%s) e a seguinte mensaxe:"
+
+#: libparted/labels/aix.c:103
+#, fuzzy
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr ""
+"O soporte de creación de sistemas de ficheiros %s non está implementado "
+"aínda."
+
+#: libparted/labels/aix.c:114
+#, fuzzy
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr ""
+"O soporte de creación de sistemas de ficheiros %s non está implementado "
+"aínda."
+
+#: libparted/labels/aix.c:127
+#, fuzzy
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr ""
+"O soporte de creación de sistemas de ficheiros %s non está implementado "
+"aínda."
+
+#: libparted/labels/aix.c:137
+#, fuzzy
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr ""
+"O soporte de creación de sistemas de ficheiros %s non está implementado "
+"aínda."
+
+#: libparted/labels/aix.c:155
+#, fuzzy
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr ""
+"O soporte de creación de sistemas de ficheiros %s non está implementado "
+"aínda."
+
+#: libparted/labels/aix.c:165
+#, fuzzy
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr ""
+"O soporte de creación de sistemas de ficheiros %s non está implementado "
+"aínda."
+
+#: libparted/labels/bsd.c:571 libparted/labels/dasd.c:833
+#: libparted/labels/dos.c:2176 libparted/labels/dvh.c:787
+#: libparted/labels/gpt.c:1782 libparted/labels/loop.c:247
+#: libparted/labels/mac.c:1426 libparted/labels/pc98.c:748
+#: libparted/labels/rdb.c:1052 libparted/labels/sun.c:780
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "Non se puideron satisfacer tódalas restriccións da partición."
+
+#: libparted/labels/bsd.c:596
+#, fuzzy
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "Non se puido reservar unha rañura de etiqueta de disco BSD"
+
+#: libparted/labels/dasd.c:859
+#, fuzzy
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "Non se puido reservar unha rañura de etiqueta de disco BSD"
+
+#: libparted/labels/dos.c:966
+#, fuzzy, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr "Táboa de particións incorrecta en %s - sinatura %x incorrecta"
+
+#: libparted/labels/dos.c:994
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "Táboa de particións incorrecta - partición recursiva en %s."
+
+#: libparted/labels/dos.c:1504
+#, fuzzy
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr ""
+"As particións ext2 non poden estar ocultas en etiquetas de disco msdos."
+
+#: libparted/labels/dos.c:2158
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+
+#: libparted/labels/dvh.c:200
+#, fuzzy, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr ""
+"%s non ten unha partición estendida (partición de cabeceira de volume). Se "
+"ignora, hanse borrar os volumes de inicio."
+
+#: libparted/labels/dvh.c:326
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr ""
+"A suma de comprobación é incorrecta, o que indica que a táboa de partición "
+"está corrompida."
+
+#: libparted/labels/dvh.c:631
+msgid "Only primary partitions can be root partitions."
+msgstr "Só as particións primarias poden ser particións raiz."
+
+#: libparted/labels/dvh.c:645
+msgid "Only primary partitions can be swap partitions."
+msgstr "Só as particións primarias poden ser particións de intercambio."
+
+#: libparted/labels/dvh.c:659
+msgid "Only logical partitions can be a boot file."
+msgstr "Só as particións lóxicas poden ser un ficheiro de inicio."
+
+#: libparted/labels/dvh.c:736
+#, fuzzy, c-format
+msgid ""
+"failed to set dvh partition name to %s:\n"
+"Only logical partitions (boot files) have a name."
+msgstr "Só as particións lóxicas (ficheiros de inicio) poden ter un nome."
+
+#: libparted/labels/dvh.c:829
+msgid "Too many primary partitions"
+msgstr "Demasiadas particións primarias."
+
+#: libparted/labels/fdasd.c:98
+msgid "open error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:101
+msgid "seek error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:104
+msgid "read error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:110
+msgid "ioctl() error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:114
+msgid "API version mismatch"
+msgstr ""
+
+#: libparted/labels/fdasd.c:118
+#, fuzzy
+msgid "Unsupported disk type"
+msgstr "ped_device_new()  Tipo de dispositivo non soportado"
+
+#: libparted/labels/fdasd.c:122
+msgid "Unsupported disk format"
+msgstr ""
+
+#: libparted/labels/fdasd.c:126
+msgid "Disk is in use"
+msgstr ""
+
+#: libparted/labels/fdasd.c:130
+msgid "Syntax error in config file"
+msgstr ""
+
+#: libparted/labels/fdasd.c:134
+msgid "Volume label is corrupted"
+msgstr ""
+
+#: libparted/labels/fdasd.c:138
+msgid "A data set name is corrupted"
+msgstr ""
+
+#: libparted/labels/fdasd.c:142
+msgid "Memory allocation failed"
+msgstr ""
+
+#: libparted/labels/fdasd.c:146
+msgid "Device verification failed"
+msgstr ""
+
+#: libparted/labels/fdasd.c:147
+msgid "The specified device is not a valid DASD device"
+msgstr ""
+
+#: libparted/labels/fdasd.c:150 libparted/labels/vtoc.c:179
+#, fuzzy
+msgid "Fatal error"
+msgstr "Moi grave"
+
+#: libparted/labels/fdasd.c:226
+msgid "No room for volume label."
+msgstr ""
+
+#: libparted/labels/fdasd.c:234
+#, fuzzy
+msgid "No room for partition info."
+msgstr "Non se atopou un mapa de particións válido."
+
+#: libparted/labels/fdasd.c:709
+msgid "Invalid VTOC."
+msgstr ""
+
+#: libparted/labels/fdasd.c:766
+msgid "Could not retrieve API version."
+msgstr ""
+
+#: libparted/labels/fdasd.c:769
+#, c-format
+msgid ""
+"The current API version '%d' doesn't match dasd driver API version '%d'!"
+msgstr ""
+
+#: libparted/labels/fdasd.c:806
+#, fuzzy
+msgid "Could not retrieve disk geometry information."
+msgstr "Non se puido le-la xeometría de %s - %s."
+
+#: libparted/labels/fdasd.c:810
+msgid "Could not retrieve blocksize information."
+msgstr ""
+
+#: libparted/labels/fdasd.c:815
+msgid "Could not retrieve disk information."
+msgstr ""
+
+#: libparted/labels/gpt.c:493
+#, fuzzy, c-format
+msgid ""
+"%s contains GPT signatures, indicating that it has a GPT table.  However, it "
+"does not have a valid fake msdos partition table, as it should.  Perhaps it "
+"was corrupted -- possibly by a program that doesn't understand GPT partition "
+"tables.  Or perhaps you deleted the GPT table, and are now using an msdos "
+"partition table.  Is this a GPT partition table?"
+msgstr ""
+"%s contén sinaturas GPT, o que indica que ten unha táboa GPT. Nembargantes, "
+"non ten unha táboa de partición msdos falsa válida, tal como debería. Se "
+"cadra está corrompida - posiblemente por un programa que non entende as "
+"táboas de partición GPT. Ou se cadra borrou a táboa GPT e agora emprega unha "
+"táboa de partición msdos. ¿É esta unha táboa de partición GPT?"
+
+#: libparted/labels/gpt.c:693
+#, fuzzy, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise.  Please report this!"
+msgstr ""
+"O formato da táboa de partición GPT é máis recente do que Parted pode "
+"recoñecer. Por favor, indíquenolo: bug-parted@gnu.org (en inglés)"
+
+#: libparted/labels/gpt.c:740
+#, c-format
+msgid ""
+"Not all of the space available to %s appears to be used, you can fix the GPT "
+"to use all of the space (an extra %llu blocks) or continue with the current "
+"setting? "
+msgstr ""
+
+#: libparted/labels/gpt.c:952
+msgid ""
+"The backup GPT table is not at the end of the disk, as it should be.  This "
+"might mean that another operating system believes the disk is smaller.  Fix, "
+"by moving the backup to the end (and removing the old backup)?"
+msgstr ""
+"A copia de seguridade da táboa GPT non está na fin do disco, tal como "
+"debería. Isto pode significar que outro sistema operativo cre que o disco é "
+"máis pequeno. ¿Quere arranxalo, movendo a copia de seguridade á final (e "
+"eliminando a copia vella)?"
+
+#: libparted/labels/gpt.c:976
+#, fuzzy
+msgid ""
+"Both the primary and backup GPT tables are corrupt.  Try making a fresh "
+"table, and using Parted's rescue feature to recover partitions."
+msgstr ""
+"Ambalas dúas táboas GPT, primaria e copia, están corrompidas. Probe a crear "
+"unha táboa nova e a emprega-la característica de rescate (rescue) de Parted "
+"para recupera-las particións."
+
+#: libparted/labels/gpt.c:987
+#, fuzzy
+msgid ""
+"The backup GPT table is corrupt, but the primary appears OK, so that will be "
+"used."
+msgstr ""
+"A táboa GPT primaria está corrompida, pero a copia de seguridade semella "
+"estar ben, así que é a que se ha empregar."
+
+#: libparted/labels/gpt.c:999
+#, fuzzy
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr ""
+"A táboa GPT primaria está corrompida, pero a copia de seguridade semella "
+"estar ben, así que é a que se ha empregar."
+
+#: libparted/labels/gpt.c:1023
+msgid "primary partition table array CRC mismatch"
+msgstr ""
+
+#: libparted/labels/mac.c:184
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Sinatura %x non válida para etiquetas de disco Mac."
+
+#: libparted/labels/mac.c:231
+msgid "Partition map has no partition map entry!"
+msgstr "¡O mapa de particións non ten unha entrada do mapa de particións!"
+
+#: libparted/labels/mac.c:279
+#, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr "¡%s é pequeno de máis para unha etiqueta de disco Mac!"
+
+#: libparted/labels/mac.c:508
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "A partición %d ten unha sinatura %x non válida."
+
+#: libparted/labels/mac.c:526
+#, c-format
+msgid "Partition %d has an invalid length of 0 bytes!"
+msgstr "¡A partición %d ten unha lonxitude non válida de 0 bytes!"
+
+#: libparted/labels/mac.c:557
+#, fuzzy
+msgid "The data region doesn't start at the start of the partition."
+msgstr "A rexión de datos non comeza no principio da partición"
+
+#: libparted/labels/mac.c:574
+#, fuzzy
+msgid "The boot region doesn't start at the start of the partition."
+msgstr "A rexión de inicio non comeza no principio da partición"
+
+#: libparted/labels/mac.c:588
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr "A rexión de inicio da partición non ocupa toda a partición."
+
+#: libparted/labels/mac.c:599
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr "A rexión de datos da partición non ocupa toda a partición."
+
+#: libparted/labels/mac.c:652
+#, c-format
+msgid ""
+"Weird block size on device descriptor: %d bytes is not divisible by 512."
+msgstr ""
+"Tamaño de bloque estraño no descriptor do dispositivo: %d bytes non é "
+"divisible por 512."
+
+#: libparted/labels/mac.c:665
+#, c-format
+msgid ""
+"The driver descriptor says the physical block size is %d bytes, but Linux "
+"says it is %d bytes."
+msgstr ""
+"O descriptor do controlador di que o tamaño do bloque físico é %d bytes, "
+"pero Linux di que é de %d bytes."
+
+#: libparted/labels/mac.c:719
+msgid "No valid partition map found."
+msgstr "Non se atopou un mapa de particións válido."
+
+#: libparted/labels/mac.c:780
+#, fuzzy, c-format
+msgid ""
+"Conflicting partition map entry sizes!  Entry 1 says it is %d, but entry %d "
+"says it is %d!"
+msgstr ""
+"¡Tamaños das entradas do mapa de particións conflictivos! ¡A entrada 1 di "
+"que é de %d, pero a entrada %d di que é %d!"
+
+#: libparted/labels/mac.c:811
+#, fuzzy
+msgid "Weird!  There are 2 partitions map entries!"
+msgstr "Estraño - ¡hai dúas entradas de mapa de particións!"
+
+#: libparted/labels/mac.c:1357
+msgid ""
+"Changing the name of a root or swap partition will prevent Linux from "
+"recognising it as such."
+msgstr ""
+"Cambia-lo nome dunha partición raiz ou de intercambio ha impedir que Linux a "
+"recoñeza coma tal."
+
+#: libparted/labels/mac.c:1461
+#, fuzzy
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr ""
+"Non se pode engadir outra partición - o mapa de particións é pequeno de máis."
+
+#: libparted/labels/pc98.c:331
+#, fuzzy, c-format
+msgid "Invalid partition table on %s."
+msgstr "Táboa de particións incorrecta en %s"
+
+#: libparted/labels/pc98.c:384 libparted/labels/pc98.c:462
+#, fuzzy, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries.  This is still "
+"unsupported."
+msgstr ""
+"A partición %d non está aliñada nos límites dos cilindros. Hai que engadir "
+"soporte para isto."
+
+#: libparted/labels/pc98.c:780
+msgid "Can't add another partition."
+msgstr "Non se pode engadir máis particións."
+
+#: libparted/labels/pt-tools.c:125
+#, c-format
+msgid ""
+"partition length of %jd sectors exceeds the %s-partition-table-imposed "
+"maximum of %jd"
+msgstr ""
+
+#: libparted/labels/pt-tools.c:138
+#, c-format
+msgid ""
+"starting sector number, %jd exceeds the %s-partition-table-imposed maximum "
+"of %jd"
+msgstr ""
+
+#: libparted/labels/rdb.c:169
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:484
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr ""
+
+#: libparted/labels/rdb.c:573
+#, fuzzy, c-format
+msgid "%s : Loop detected at block %d."
+msgstr "%s non é un dispositivo de bloques."
+
+#: libparted/labels/rdb.c:592
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:691
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:699
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:707
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:715
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:742
+#, fuzzy, c-format
+msgid "Failed to write partition block at %d."
+msgstr "Non se puido determinar se a partición está montada."
+
+#: libparted/labels/rdb.c:1080
+#, fuzzy
+msgid "Unable to allocate a partition number."
+msgstr "Espérase un número de partición."
+
+#: libparted/labels/sun.c:161
+msgid "Corrupted Sun disk label detected."
+msgstr "Detectouse unha etiqueta de disco Sun corrompida."
+
+#: libparted/labels/sun.c:276
+#, fuzzy, c-format
+msgid ""
+"The disk CHS geometry (%d,%d,%d) reported by the operating system does not "
+"match the geometry stored on the disk label (%d,%d,%d)."
+msgstr ""
+"A xeometría CHS do disco (%d,%d,%d) non encaixa coa xeometría armacenada na "
+"etiqueta de disco (%d,%d,%d)."
+
+#: libparted/labels/sun.c:298
+#, c-format
+msgid "The disk label describes a disk bigger than %s."
+msgstr "A etiqueta de disco describe un disco maior de %s."
+
+#: libparted/labels/sun.c:473
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr ""
+
+#: libparted/labels/sun.c:812
+msgid ""
+"The Whole Disk partition is the only available one left.  Generally, it is "
+"not a good idea to overwrite this partition with a real one.  Solaris may "
+"not be able to boot without it, and SILO (the sparc boot loader) appreciates "
+"it as well."
+msgstr ""
+"A partición de Disco Completo é a única que queda dispoñible. Normalmente "
+"non é unha boa idea sobrescribir esta partición cunha de verdade. Solaris "
+"pode non arrincar sen ela, e SILO (o cargador de sparc) tamén a aprecia."
+
+#: libparted/labels/sun.c:827
+msgid "Sun disk label is full."
+msgstr "A etiqueta de disco Sun está chea."
+
+#: libparted/labels/vtoc.c:164
+msgid "opening of device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:168
+msgid "seeking on device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:172
+msgid "writing to device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:176
+msgid "reading from device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:299 libparted/labels/vtoc.c:308
+#: libparted/labels/vtoc.c:329 libparted/labels/vtoc.c:336
+#, fuzzy
+msgid "Could not read volume label."
+msgstr "Non se puido le-la xeometría de %s - %s."
+
+#: libparted/labels/vtoc.c:356 libparted/labels/vtoc.c:363
+#, fuzzy
+msgid "Could not write volume label."
+msgstr "Non se pode detectar un sistema de ficheiros."
+
+#: libparted/labels/vtoc.c:469
+msgid "Could not read VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:496
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:516
+msgid "Could not write VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:522
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:529
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:536
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:543
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/libparted.c:230 libparted/libparted.c:245
+msgid "Out of memory."
+msgstr "Memoria esgotada."
+
+#: libparted/unit.c:138
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr ""
+
+#: libparted/unit.c:384
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr ""
+
+#: libparted/unit.c:392
+#, c-format
+msgid "The maximum head value is %d."
+msgstr ""
+
+#: libparted/unit.c:399
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr ""
+
+#: libparted/unit.c:411 libparted/unit.c:556
+#, fuzzy, c-format
+msgid "The location %s is outside of the device %s."
+msgstr "Non se pode crear unha partición fóra do dispositivo."
+
+#: libparted/unit.c:531
+msgid "Invalid number."
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:62 libparted/fs/amiga/apfs.c:55
+#: libparted/fs/amiga/asfs.c:69
+#, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:77 libparted/fs/amiga/apfs.c:68
+#: libparted/fs/amiga/asfs.c:81
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:82 libparted/fs/amiga/apfs.c:73
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:98 libparted/fs/amiga/apfs.c:84
+#: libparted/fs/amiga/asfs.c:87 libparted/fs/amiga/asfs.c:101
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:71
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:188
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:201
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:211
+#, fuzzy, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s durante a escritura en %s"
+
+#: libparted/fs/amiga/amiga.c:277
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:288
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:317
+#, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr ""
+
+#: libparted/fs/fat/fat.c:174
+#, fuzzy
+msgid ""
+"GNU Parted was miscompiled: the FAT boot sector should be 512 bytes.  FAT "
+"support will be disabled."
+msgstr ""
+"GNU parted foi compilado incorrectamente: o sector de inicio FAT debería ter "
+"512 bytes. O soporte FAT será desactivado."
+
+#: libparted/fs/fat/bootsector.c:49 libparted/fs/fat/bootsector.c:56
+msgid "File system has an invalid signature for a FAT file system."
+msgstr ""
+"O sistema de ficheiros ten unha sinatura incorrecta para un sistema de "
+"ficheiros FAT."
+
+#: libparted/fs/fat/bootsector.c:64
+msgid "File system has an invalid sector size for a FAT file system."
+msgstr ""
+"O sistema de ficheiros ten un tamaño de sector incorrecto para un sistema de "
+"ficheiros FAT."
+
+#: libparted/fs/fat/bootsector.c:71
+msgid "File system has an invalid cluster size for a FAT file system."
+msgstr ""
+"O sistema de ficheiros ten un tamaño de bloque non válido para un sistema de "
+"ficheiros FAT."
+
+#: libparted/fs/fat/bootsector.c:78
+#, fuzzy
+msgid ""
+"File system has an invalid number of reserved sectors for a FAT file system."
+msgstr ""
+"O sistema de ficheiros ten un número de sectores reservados incorrecto para "
+"un sistema de ficheiros FAT."
+
+#: libparted/fs/fat/bootsector.c:85
+#, fuzzy
+msgid "File system has an invalid number of FATs."
+msgstr "O sistema de ficheiros ten un número de FATs incorrecto."
+
+#: libparted/fs/fat/bootsector.c:156
+#, c-format
+msgid ""
+"This file system has a logical sector size of %d.  GNU Parted is known not "
+"to work properly with sector sizes other than 512 bytes."
+msgstr ""
+"Este sistema de ficheiros ten un tamaño de sector lóxico de %d. Sábese que "
+"GNU Parted non traballa correctamente con tamaños de sector distintos de 512 "
+"bytes."
+
+#: libparted/fs/fat/bootsector.c:181
+#, c-format
+msgid ""
+"The file system's CHS geometry is (%d, %d, %d), which is invalid.  The "
+"partition table's CHS geometry is (%d, %d, %d).  If you select Ignore, the "
+"file system's CHS geometry will be left unchanged.  If you select Fix, the "
+"file system's CHS geometry will be set to match the partition table's CHS "
+"geometry."
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:230
+msgid "FAT boot sector says logical sector size is 0.  This is weird. "
+msgstr ""
+"O sector de inicio FAT di que o tamaño lóxico de sector é 0. Isto é moi "
+"estraño. "
+
+#: libparted/fs/fat/bootsector.c:236
+msgid "FAT boot sector says there are no FAT tables.  This is weird. "
+msgstr "O sector de inicio FAT di que non hai táboas FAT. Isto é moi estraño. "
+
+#: libparted/fs/fat/bootsector.c:242
+msgid "FAT boot sector says clusters are 0 sectors.  This is weird. "
+msgstr ""
+"O sector de inicio FAT di que os clusters teñen 0 sectores. Isto é moi "
+"estraño. "
+
+#: libparted/fs/fat/bootsector.c:252
+#, fuzzy
+msgid "File system is FAT12, which is unsupported."
+msgstr "O sistema de ficheiros é FAT12, que non está soportado."
+
+#: libparted/fs/fat/bootsector.c:428
+#, c-format
+msgid ""
+"The information sector has the wrong signature (%x).  Select cancel for now, "
+"and send in a bug report.  If you're desperate, it's probably safe to ignore."
+msgstr ""
+"O sector de información ten unha sinatura incorrecta (%x). Escolla \"Cancelar"
+"\" polo de agora, e envíe un informe de erro. Se está desesperado, pode que "
+"sexa seguro ignorar."
+
+#: libparted/fs/linux_swap/linux_swap.c:247
+#, fuzzy, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "Sinatura \"%10s\" da partición de intercambio de linux non recoñecida."
+
+#: libparted/fs/linux_swap/linux_swap.c:290
+#, fuzzy, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "Sinatura \"%10s\" da partición de intercambio de linux non recoñecida."
+
+#: libparted/fs/linux_swap/linux_swap.c:330
+#, fuzzy, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Sinatura \"%10s\" da partición de intercambio de linux non recoñecida."
+
+#: libparted/fs/hfs/probe.c:50
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to "
+"%d bytes."
+msgstr ""
+
+#: parted/parted.c:123
+msgid "displays this help message"
+msgstr "amosar esta mensaxe de axuda"
+
+#: parted/parted.c:124
+#, fuzzy
+msgid "lists partition layout on all block devices"
+msgstr "%s non é un dispositivo de bloques."
+
+#: parted/parted.c:125
+msgid "displays machine parseable output"
+msgstr ""
+
+#: parted/parted.c:126
+msgid "never prompts for user intervention"
+msgstr "non pedir nunca a intervención do usuario"
+
+#: parted/parted.c:127
+msgid "displays the version"
+msgstr "amosa-la versión"
+
+#: parted/parted.c:128
+#, fuzzy
+msgid "alignment for new partitions"
+msgstr "Non se poden crear máis particións."
+
+#: parted/parted.c:140
+#, fuzzy
+msgid ""
+"NUMBER is the partition number used by Linux.  On MS-DOS disk labels, the "
+"primary partitions number from 1 to 4, logical partitions from 5 onwards.\n"
+msgstr ""
+"MENOR é o número de partición que usa Linux. Nas etiquetas de disco msdos, "
+"as particións primarias teñen números de 1 a 4, e as lóxicas téñenos do 5 en "
+"diante.\n"
+
+#: parted/parted.c:143
+msgid "LABEL-TYPE is one of: "
+msgstr "TIPO-ETIQUETA é un destes: "
+
+#: parted/parted.c:144
+msgid "FLAG is one of: "
+msgstr "MODIF é un destes: "
+
+#: parted/parted.c:145
+#, fuzzy
+msgid "UNIT is one of: "
+msgstr "MODIF é un destes: "
+
+#: parted/parted.c:146
+msgid "desired alignment: minimum or optimal"
+msgstr ""
+
+#: parted/parted.c:147
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr ""
+"TIPO-PARTICION é: primary (primaria), logical (lóxica), extended "
+"(estendida)\n"
+
+#: parted/parted.c:149
+msgid "FS-TYPE is one of: "
+msgstr "TIPO-SF é un destes: "
+
+#: parted/parted.c:150
+msgid ""
+"START and END are disk locations, such as 4GB or 10%.  Negative values count "
+"from the end of the disk.  For example, -1s specifies exactly the last "
+"sector.\n"
+msgstr ""
+
+#: parted/parted.c:153
+msgid "STATE is one of: on, off\n"
+msgstr "ESTADO é un destes: on, off\n"
+
+#: parted/parted.c:154
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "DISPOSITIVO adoita ser /dev/hda ou /dev/sda\n"
+
+#: parted/parted.c:155
+msgid "NAME is any word you want\n"
+msgstr "NOME é calquera palabra que queira\n"
+
+#: parted/parted.c:158
+#, fuzzy
+msgid ""
+"Copyright (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"This program is free software, covered by the GNU General Public License.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+msgstr ""
+"Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.\n"
+"Este programa é software libre, coberto pola Licencia Pública Xeral de GNU.\n"
+"\n"
+"Este programa é distribuído coa esperanza de que sexa útil, pero SEN "
+"NINGUNHA GARANTÍA; nin sequera a garantía implícita de COMERCIABILIDADE ou "
+"APTITUDE PARA UN FIN EN PARTICULAR. Vexa a Licencia Pública Xeral de GNU "
+"para ter máis detalles.\n"
+
+#: parted/parted.c:204
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(tempo restante %.2d:%.2d)"
+
+#: parted/parted.c:223
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+
+#: parted/parted.c:241
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "Esta(n)se a usa-la(s) partición(s) de %s."
+
+#: parted/parted.c:253
+#, c-format
+msgid ""
+"The existing disk label on %s will be destroyed and all data on this disk "
+"will be lost. Do you want to continue?"
+msgstr ""
+
+#: parted/parted.c:502
+msgid "New disk label type?"
+msgstr "¿Novo tipo de etiqueta de disco?"
+
+#: parted/parted.c:562
+msgid "Partition type?"
+msgstr "¿Tipo de partición?"
+
+#: parted/parted.c:580 parted/parted.c:766
+msgid "Partition name?"
+msgstr "¿Nome da partición?"
+
+#: parted/parted.c:588
+msgid "File system type?"
+msgstr "¿Tipo de sistema de ficheiros?"
+
+#: parted/parted.c:594 parted/parted.c:1342
+msgid "Start?"
+msgstr "¿Inicio?"
+
+#: parted/parted.c:596 parted/parted.c:1344
+msgid "End?"
+msgstr "¿Fin?"
+
+#: parted/parted.c:661
+#, fuzzy, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s.%s"
+msgstr ""
+"Solicitou crear unha partición en %.3f-%.3fMb. O máis semellante que pode "
+"manexar Parted é %.3f-%.3fMb."
+
+#: parted/parted.c:666
+msgid ""
+"\n"
+"Is this still acceptable to you?"
+msgstr ""
+
+#: parted/parted.c:688
+msgid "The resulting partition is not properly aligned for best performance."
+msgstr ""
+
+#: parted/parted.c:763 parted/parted.c:1383 parted/parted.c:1455
+#: parted/parted.c:1489
+msgid "Partition number?"
+msgstr "¿Número de partición?"
+
+#: parted/parted.c:841
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d.  Each cylinder is %s.\n"
+msgstr ""
+
+#: parted/parted.c:881
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr ""
+
+#: parted/parted.c:883
+#, fuzzy, c-format
+msgid "Disk %s: %s\n"
+msgstr "%s  %s  %s"
+
+#: parted/parted.c:884
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr ""
+
+#: parted/parted.c:896
+#, fuzzy, c-format
+msgid "Partition Table: %s\n"
+msgstr "¿Nome da partición?"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Number"
+msgstr ""
+
+#: parted/parted.c:1007 parted/parted.c:1010
+#, fuzzy
+msgid "Start"
+msgstr "¿Inicio?"
+
+#: parted/parted.c:1008 parted/parted.c:1011
+#, fuzzy
+msgid "End"
+msgstr "¿Fin?"
+
+#: parted/parted.c:1011
+#, fuzzy
+msgid "Size"
+msgstr "resize"
+
+#: parted/parted.c:1015
+msgid "Type"
+msgstr ""
+
+#: parted/parted.c:1017
+#, fuzzy
+msgid "File system"
+msgstr "¿Sistema de ficheiros?"
+
+#: parted/parted.c:1020
+#, fuzzy
+msgid "Name"
+msgstr "name"
+
+#: parted/parted.c:1022
+msgid "Flags"
+msgstr "Modificadores"
+
+#: parted/parted.c:1079
+msgid "Free Space"
+msgstr ""
+
+#: parted/parted.c:1241
+#, fuzzy, c-format
+msgid ""
+"A %s %s partition was found at %s -> %s.  Do you want to add it to the "
+"partition table?"
+msgstr ""
+"Atopouse unha partición %s %s en %.3fMb -> %.3fMb. ¿Quere engadila á táboa "
+"de particións?"
+
+#: parted/parted.c:1280
+msgid "searching for file systems"
+msgstr "buscando sistemas de ficheiros"
+
+#: parted/parted.c:1408
+msgid "New device?"
+msgstr "¿Novo dispositivo?"
+
+#: parted/parted.c:1453
+msgid "alignment type(min/opt)"
+msgstr ""
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d aligned\n"
+msgstr ""
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d not aligned\n"
+msgstr ""
+
+#: parted/parted.c:1491
+#, fuzzy
+msgid "Flag to Invert?"
+msgstr "¿Modificador a cambiar?"
+
+#: parted/parted.c:1496
+msgid "New state?"
+msgstr "¿Novo estado?"
+
+#: parted/parted.c:1533
+msgid "Unit?"
+msgstr ""
+
+#: parted/parted.c:1651
+#, fuzzy
+msgid "align-check"
+msgstr "check"
+
+#: parted/parted.c:1654
+msgid ""
+"align-check TYPE N                        check partition N for TYPE(min|"
+"opt) alignment"
+msgstr ""
+
+#: parted/parted.c:1662
+msgid "help"
+msgstr "help"
+
+#: parted/parted.c:1665
+#, fuzzy
+msgid ""
+"help [COMMAND]                           print general help, or help on "
+"COMMAND"
+msgstr "help [COMANDO]           amosar axuda xeral, ou axuda sobre o COMANDO"
+
+#: parted/parted.c:1671
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:1671
+#, fuzzy
+msgid "mktable"
+msgstr "mklabel"
+
+#: parted/parted.c:1674
+#, fuzzy
+msgid ""
+"mklabel,mktable LABEL-TYPE               create a new disklabel (partition "
+"table)"
+msgstr ""
+"mklabel TIPO-ETIQUETA    crear unha nova etiqueta de disco/táboa de partición"
+
+#: parted/parted.c:1680
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:1683
+#, fuzzy
+msgid "mkpart PART-TYPE [FS-TYPE] START END     make a partition"
+msgstr "mkpart TIPO-PARTICION [TIPO-FS] INICIO FIN        crear unha partición"
+
+#: parted/parted.c:1689
+#, fuzzy
+msgid ""
+"'mkpart' makes a partition without creating a new file system on the "
+"partition.  FS-TYPE may be specified to set an appropriate partition ID.\n"
+msgstr ""
+"mkpart crea unha partición sen crear un novo sistema de ficheiros na "
+"partición. Debe especificarse TIPO-SF para estabrecer un ID de partición "
+"axeitado.\n"
+
+#: parted/parted.c:1694
+msgid "name"
+msgstr "name"
+
+#: parted/parted.c:1697
+#, fuzzy
+msgid "name NUMBER NAME                         name partition NUMBER as NAME"
+msgstr "name MENOR NOME               poñe-lo NOME á partición MENOR"
+
+#: parted/parted.c:1702
+msgid "print"
+msgstr "print"
+
+#: parted/parted.c:1705
+msgid ""
+"print [devices|free|list,all|NUMBER]     display the partition table, "
+"available devices, free space, all found partitions, or a particular "
+"partition"
+msgstr ""
+
+#: parted/parted.c:1710
+#, fuzzy
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+"Sen argumentos, print amosa toda a táboa de particións. Se se dá\n"
+"un número de partición, hase amosar información máis detallada sobre\n"
+"esa partición.\n"
+
+#: parted/parted.c:1712
+msgid "  devices   : display all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:1713
+msgid ""
+"  free      : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+
+#: parted/parted.c:1715
+msgid ""
+"  list, all : display the partition tables of all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:1716
+msgid ""
+"  NUMBER    : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+
+#: parted/parted.c:1721
+msgid "quit"
+msgstr "quit"
+
+#: parted/parted.c:1724
+#, fuzzy
+msgid "quit                                     exit program"
+msgstr "quit                          saír do programa"
+
+#: parted/parted.c:1729
+msgid "rescue"
+msgstr "rescue"
+
+#: parted/parted.c:1732
+#, fuzzy
+msgid ""
+"rescue START END                         rescue a lost partition near START "
+"and END"
+msgstr ""
+"rescue INICIO FIN           recupera unha partición perdida entre INICIO e "
+"FIN"
+
+#: parted/parted.c:1738
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:1741
+#, fuzzy
+msgid "rm NUMBER                                delete partition NUMBER"
+msgstr "rm MENOR                 borra-la partición MENOR"
+
+#: parted/parted.c:1746
+msgid "select"
+msgstr "select"
+
+#: parted/parted.c:1749
+#, fuzzy
+msgid "select DEVICE                            choose the device to edit"
+msgstr "select DISPOSITIVO            escolle-lo dispositivo a editar"
+
+#: parted/parted.c:1754
+msgid "set"
+msgstr "set"
+
+#: parted/parted.c:1757
+#, fuzzy
+msgid ""
+"set NUMBER FLAG STATE                    change the FLAG on partition NUMBER"
+msgstr "set MENOR MODIF ESTADO       cambiar un MODIFicador na partición MENOR"
+
+#: parted/parted.c:1763
+msgid "toggle"
+msgstr ""
+
+#: parted/parted.c:1766
+#, fuzzy
+msgid ""
+"toggle [NUMBER [FLAG]]                   toggle the state of FLAG on "
+"partition NUMBER"
+msgstr "boot MENOR               establece-la partición de arrinque a MENOR"
+
+#: parted/parted.c:1772
+#, fuzzy
+msgid "unit"
+msgstr "quit"
+
+#: parted/parted.c:1775
+#, fuzzy
+msgid "unit UNIT                                set the default unit to UNIT"
+msgstr "quit                          saír do programa"
+
+#: parted/parted.c:1780
+msgid "version"
+msgstr ""
+
+#: parted/parted.c:1783
+msgid ""
+"version                                  display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+
+#: parted/parted.c:1787
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+
+#: parted/parted.c:1855
+#, c-format
+msgid "Usage: %s [-hlmsv] [-a<align>] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+
+#: parted/parted.c:1899
+msgid "No device found"
+msgstr "Non se atopou o dispositivo."
+
+#: parted/parted.c:1936
+msgid "WARNING: You are not superuser.  Watch out for permissions."
+msgstr ""
+
+#: parted/parted.c:1974
+#, fuzzy
+msgid "You may need to update /etc/fstab.\n"
+msgstr "Non esqueza actualizar /etc/fstab, se é necesario.\n"
+
+#: parted/ui.c:162
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+
+#: parted/ui.c:165
+#, fuzzy
+msgid ""
+"Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]\n"
+"Apply COMMANDs with PARAMETERS to DEVICE.  If no COMMAND(s) are given, run "
+"in\n"
+"interactive mode.\n"
+msgstr ""
+"Uso: parted [OPCIÓN]... [DISPOSITIVO [COMANDO [PARÁMETROS]...]...]\n"
+"Aplica-lo COMANDO cos PARÁMETROS ao DISPOSITIVO. Se non se indica ningún\n"
+"COMANDO, funciona en modo interactivo.\n"
+
+#: parted/ui.c:170
+#, c-format
+msgid ""
+"\n"
+"\n"
+"You found a bug in GNU Parted! Here's what you have to do:\n"
+"\n"
+"Don't panic! The bug has most likely not affected any of your data.\n"
+"Help us to fix this bug by doing the following:\n"
+"\n"
+"Check whether the bug has already been fixed by checking\n"
+"the last version of GNU Parted that you can find at:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Please check this version prior to bug reporting.\n"
+"\n"
+"If this has not been fixed yet or if you don't know how to check,\n"
+"please visit the GNU Parted website:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"for further information.\n"
+"\n"
+"Your report should contain the version of this release (%s)\n"
+"along with the error message below, the output of\n"
+"\n"
+"\tparted DEVICE unit co print unit s print\n"
+"\n"
+"and the following history of commands you entered.\n"
+"Also include any additional information about your setup you\n"
+"consider important.\n"
+msgstr ""
+
+#: parted/ui.c:291
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+
+#: parted/ui.c:354
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+
+#: parted/ui.c:360
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+
+#: parted/ui.c:365
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+
+#: parted/ui.c:389
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:394
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+
+#: parted/ui.c:399
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:404
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+
+#: parted/ui.c:409
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+
+#: parted/ui.c:414
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+
+#: parted/ui.c:419
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+
+#: parted/ui.c:424
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+
+#: parted/ui.c:429
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+
+#: parted/ui.c:453
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+
+#: parted/ui.c:458
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+
+#: parted/ui.c:463
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+
+#: parted/ui.c:468
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+
+#: parted/ui.c:473
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+
+#: parted/ui.c:478
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+
+#: parted/ui.c:891
+#, fuzzy, c-format
+msgid "invalid token: %s"
+msgstr "Non se puido abrir %s."
+
+#: parted/ui.c:1048
+msgid "Expecting a partition number."
+msgstr "Espérase un número de partición."
+
+#: parted/ui.c:1057
+msgid "Partition doesn't exist."
+msgstr "A partición non existe."
+
+#: parted/ui.c:1077
+msgid "Expecting a file system type."
+msgstr "Espérase un tipo de sistema de ficheiros."
+
+#: parted/ui.c:1084
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Tipo de sistema de ficheiros \"%s\" descoñecido."
+
+#: parted/ui.c:1105
+msgid "Expecting a disk label type."
+msgstr "Espérase un tipo de etiqueta de disco."
+
+#: parted/ui.c:1203
+msgid "Can't create any more partitions."
+msgstr "Non se poden crear máis particións."
+
+#: parted/ui.c:1213
+msgid "Expecting a partition type."
+msgstr "Espérase un tipo de partición."
+
+#: parted/ui.c:1361
+msgid "on"
+msgstr "on"
+
+#: parted/ui.c:1362
+msgid "off"
+msgstr "off"
+
+#: parted/ui.c:1379
+msgid "optimal"
+msgstr ""
+
+#: parted/ui.c:1380
+msgid "minimal"
+msgstr ""
+
+#: parted/ui.c:1513
+msgid "OPTIONs:"
+msgstr "OPCIÓNs:"
+
+#: parted/ui.c:1518
+msgid "COMMANDs:"
+msgstr "COMANDOs:"
+
+#: parted/ui.c:1521
+#, c-format
+msgid ""
+"\n"
+"Report bugs to %s\n"
+msgstr ""
+
+#: parted/ui.c:1528
+#, c-format
+msgid "Using %s\n"
+msgstr "Usando %s\n"
+
+#: parted/ui.c:1602
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr ""
+
+#, fuzzy
+#~ msgid "too few arguments"
+#~ msgstr "Demasiadas páxinas incorrectas."
+
+#, fuzzy
+#~ msgid "too many arguments"
+#~ msgstr "Demasiadas páxinas incorrectas."
+
+#, fuzzy
+#~ msgid "invalid minor device number: %s"
+#~ msgstr "Non se puido abrir %s."
+
+#~ msgid "Could not detect file system."
+#~ msgstr "Non se pode detectar un sistema de ficheiros."
+
+#, fuzzy
+#~ msgid "The file system is bigger than its volume!"
+#~ msgstr "O sistema de ficheiros é maior có seu volume."
+
+#~ msgid "Support for opening %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "O soporte de apertura de sistemas de ficheiros %s non está implementado "
+#~ "aínda."
+
+#~ msgid "Support for creating %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "O soporte de creación de sistemas de ficheiros %s non está implementado "
+#~ "aínda."
+
+#~ msgid "Support for checking %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "O soporte de comprobación de sistemas de ficheiros %s non está "
+#~ "implementado aínda."
+
+#~ msgid "raw block copying"
+#~ msgstr "copiando bloque a bloque"
+
+#~ msgid "growing file system"
+#~ msgstr "aumentando o sistema de ficheiros"
+
+#~ msgid "Can't copy onto an overlapping partition."
+#~ msgstr "Non se pode copiar nunha partición que se solapa."
+
+#, fuzzy
+#~ msgid ""
+#~ "Direct support for copying file systems is not yet implemented for %s.  "
+#~ "However, support for resizing is implemented.  Therefore, the file system "
+#~ "can be copied if the new partition is at least as big as the old one.  "
+#~ "So, either shrink the partition you are trying to copy, or copy to a "
+#~ "bigger partition."
+#~ msgstr ""
+#~ "O soporte directo de copia de sistemas de ficheiros non está implementado "
+#~ "aínda para %s. Nembargantes, o soporte para o cambio de tamaño sí está. "
+#~ "Polo tanto, pódese copia-lo sistema de ficheiros se a partición nova é "
+#~ "alomenos tan grande coma a vella. Así que, ou ben reduza a partición que "
+#~ "quere copiar, ou copie nunha partición máis grande."
+
+#~ msgid "Support for copying %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "O soporte de copia de sistemas de ficheiros %s non está implementado "
+#~ "aínda."
+
+#~ msgid "Support for resizing %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "O soporte de modificación do tamaño de sistemas de ficheiros %s non está "
+#~ "implementado aínda."
+
+#, fuzzy
+#~ msgid "The file system is in an invalid state.  Perhaps it is mounted?"
+#~ msgstr ""
+#~ "O sistema de ficheiros ten unha sinatura incorrecta para un sistema de "
+#~ "ficheiros FAT."
+
+#, fuzzy
+#~ msgid "checking"
+#~ msgstr "check"
+
+#, fuzzy
+#~ msgid ""
+#~ "The reiserfs file system passed a basic check.  For a more comprehensive "
+#~ "check, run reiserfsck --check."
+#~ msgstr ""
+#~ "O sistema de ficheiros ext2 pasou unha comprobación básica. Para unha "
+#~ "comprobación máis a fondo, empregue o programa e2fsck."
+
+#, fuzzy
+#~ msgid "Sorry, can't move the start of reiserfs partitions yet."
+#~ msgstr "¡Síntoo, ainda non podo move-lo principio das particións ext2!"
+
+#~ msgid "shrinking"
+#~ msgstr "encollendo"
+
+#, fuzzy
+#~ msgid "expanding"
+#~ msgstr "Aviso"
+
+#, fuzzy
+#~ msgid "Device is too small for %lu blocks."
+#~ msgstr "O sistema de ficheiros é pequeno de máis para ext2."
+
+#~ msgid "Inconsistent group descriptors!"
+#~ msgstr "¡Descriptores de grupo non consistentes!"
+
+#, fuzzy
+#~ msgid "File system full!"
+#~ msgstr "¡Sistema de ficheiros cheo!"
+
+#, fuzzy
+#~ msgid "Invalid superblock.  Are you sure this is an ext2 file system?"
+#~ msgstr ""
+#~ "Superbloque incorrecto. ¿Está seguro de que este é un sistema de "
+#~ "ficheiros ext2?"
+
+#, fuzzy
+#~ msgid "File system has errors!  You should run e2fsck."
+#~ msgstr "¡O sistema de ficheiros ten erros! Debería executar e2fsck."
+
+#, fuzzy
+#~ msgid ""
+#~ "File system was not cleanly unmounted!  You should run e2fsck.  Modifying "
+#~ "an unclean file system could cause severe corruption."
+#~ msgstr ""
+#~ "¡O sistema de ficheiros non foi desmontado limpamente! Debería executar "
+#~ "e2fsck."
+
+#~ msgid "Error allocating buffer cache."
+#~ msgstr "Erro ao buscar espacio para o buffer cache."
+
+#, fuzzy
+#~ msgid ""
+#~ "Found an inode with a incorrect link count.  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "Atopei un inode cunha conta de ligazóns incorrecta. Mellor será que "
+#~ "empregue e2fsck antes."
+
+#~ msgid "Not enough free inodes!"
+#~ msgstr "¡Non hai inodes libres dabondo!"
+
+#, fuzzy
+#~ msgid "File system is too full to remove a group!"
+#~ msgstr ""
+#~ "¡O sistema de ficheiros está demasiado ocupado para eliminar un grupo!"
+
+#, fuzzy
+#~ msgid "File system has too many allocated inodes to remove a group!"
+#~ msgstr ""
+#~ "¡O sistema de ficheiros ten demasiados inodes ocupados para eliminar un "
+#~ "grupo!"
+
+#~ msgid "adding groups"
+#~ msgstr "engadindo grupos"
+
+#, fuzzy
+#~ msgid "Your file system is too full to resize it to %i blocks.  Sorry."
+#~ msgstr ""
+#~ "O seu sistema de ficheiros está demasiado ocupado para cambiarlle o "
+#~ "tamaño a %i bloques. Síntoo."
+
+#, fuzzy
+#~ msgid ""
+#~ "Your file system has too many occupied inodes to resize it to %i blocks.  "
+#~ "Sorry."
+#~ msgstr ""
+#~ "O seu sistema de ficheiros ten demasiados inodes ocupados para cambiarlle "
+#~ "o tamaño a %i bloques. Síntoo."
+
+#, fuzzy
+#~ msgid "File system was not cleanly unmounted!  You should run e2fsck."
+#~ msgstr ""
+#~ "¡O sistema de ficheiros non foi desmontado limpamente! Debería executar "
+#~ "e2fsck."
+
+#, fuzzy
+#~ msgid "Cross-linked blocks found!  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "¡Atopáronse bloques ligados entre si! ¡Mellor será que empregue e2fsck "
+#~ "antes!"
+
+#, fuzzy
+#~ msgid "Block %i has no reference?  Weird."
+#~ msgstr "¿O bloque %i non ten unha referencia? Moi raro."
+
+#, fuzzy
+#~ msgid "Block %i shouldn't have been marked (%d, %d)!"
+#~ msgstr "¡O bloque %i non debería estar marcado!"
+
+#, fuzzy
+#~ msgid ""
+#~ "The ext2 file system passed a basic check.  For a more comprehensive "
+#~ "check, use the e2fsck program."
+#~ msgstr ""
+#~ "O sistema de ficheiros ext2 pasou unha comprobación básica. Para unha "
+#~ "comprobación máis a fondo, empregue o programa e2fsck."
+
+#~ msgid "Sorry, can't move the start of ext2 partitions yet!"
+#~ msgstr "¡Síntoo, ainda non podo move-lo principio das particións ext2!"
+
+#~ msgid "Couldn't flush buffer cache!"
+#~ msgstr "¡Non se puido baleira-lo buffer cache!"
+
+#~ msgid "writing per-group metadata"
+#~ msgstr "gravando os metadatos por grupos"
+
+#~ msgid "File system too small for ext2."
+#~ msgstr "O sistema de ficheiros é pequeno de máis para ext2."
+
+#, fuzzy
+#~ msgid ""
+#~ "You need %s of free disk space to shrink this partition to this size.  "
+#~ "Currently, only %s is free."
+#~ msgstr ""
+#~ "Precisa %dM de espacio libre para reducir esta partición a este tamaño "
+#~ "(actualmente ten só %dM libres)"
+
+#~ msgid ""
+#~ "Cluster start delta = %d, which is not a multiple of the cluster size %d."
+#~ msgstr ""
+#~ "Delta do comezo do cluster = %d, que non é un múltiplo do tamaño do "
+#~ "cluster %d."
+
+#, fuzzy
+#~ msgid "Partition too big/small for a %s file system."
+#~ msgstr ""
+#~ "A partición é grande/pequena de máis para un sistema de ficheiros %s"
+
+#~ msgid ""
+#~ "The FATs don't match.  If you don't know what this means, then select "
+#~ "cancel, run scandisk on the file system, and then come back."
+#~ msgstr ""
+#~ "As FATs non coinciden. Se non sabe o que isto significa, escolla "
+#~ "\"Cancelar\", empregue \"scandisk\" no sistema de ficheiros, e logo volte."
+
+#~ msgid "There are no possible configurations for this FAT type."
+#~ msgstr "Non hai configuracións posibles para este tipo de FAT."
+
+#~ msgid ""
+#~ "File system doesn't have expected sizes for Windows to like it.  Cluster "
+#~ "size is %dk (%dk expected); number of clusters is %d (%d expected); size "
+#~ "of FATs is %d sectors (%d expected)."
+#~ msgstr ""
+#~ "O sistema de ficheiros non ten os tamaños esperados para que a Windows "
+#~ "lle goste. O tamaño do cluster é %dk (esperábase %dk); o número de "
+#~ "clusters é %d (esperábanse %d); o tamaño das FATs é de %d sectores "
+#~ "(esperábanse %d)."
+
+#~ msgid ""
+#~ "File system is reporting the free space as %d clusters, not %d clusters."
+#~ msgstr ""
+#~ "O sistema de ficheiros di que o espacio libre é de %d clusters, non %d "
+#~ "clusters."
+
+#, fuzzy
+#~ msgid ""
+#~ "There's not enough room in the root directory for all of the files.  "
+#~ "Either cancel, or ignore to lose the files."
+#~ msgstr ""
+#~ "Non hai espacio dabondo no directorio raiz para tódolos ficheiros. Pode "
+#~ "ou ben cancelar, ou ben ignorar e perde-los ficheiros."
+
+#~ msgid "Error writing to the root directory."
+#~ msgstr "Erro ao escribir no directorio raiz."
+
+#, fuzzy
+#~ msgid ""
+#~ "If you leave your file system as FAT16, then you will have no problems."
+#~ msgstr "Se deixa o sistema de ficheiros coma FAT16, non ha ter problemas."
+
+#~ msgid ""
+#~ "If you convert to FAT16, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual)."
+#~ msgstr ""
+#~ "Se convirte a FAT16, e MS Windows está instalado na partición, ha ter que "
+#~ "reinstala-lo cargador de inicio de MS Windows. Se quere facelo, debería "
+#~ "consulta-lo manual de Parted (ou o manual da súa distribución)."
+
+#~ msgid ""
+#~ "If you leave your file system as FAT32, then you will not introduce any "
+#~ "new problems."
+#~ msgstr ""
+#~ "Se deixa o sistema de ficheiros coma FAT32, non ha introducir novos "
+#~ "problemas."
+
+#~ msgid ""
+#~ "If you convert to FAT32, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual).  Also, converting to FAT32 will make the file system unreadable "
+#~ "by MS DOS, MS Windows 95a, and MS Windows NT."
+#~ msgstr ""
+#~ "Se convirte a FAT32, e MS Windows está instalado na partición, ha ter que "
+#~ "reinstala-lo cargador de inicio de MS Windows. Se quere facelo, debería "
+#~ "consulta-lo manual de Parted (ou o manual da súa distribución). Tamén, a "
+#~ "conversión a FAT32 fará o sistema de ficheiros ilexible para MS DOS, MS "
+#~ "Windows 95a e MS Windows NT."
+
+#~ msgid "%s  %s  %s"
+#~ msgstr "%s  %s  %s"
+
+#~ msgid "Would you like to use FAT32?"
+#~ msgstr "¿Quere usar FAT32?"
+
+#~ msgid "%s  %s"
+#~ msgstr "%s  %s"
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT16."
+#~ msgstr ""
+#~ "O sistema de ficheiros só pode alcanzar este tamaño convertindo a FAT16."
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT32."
+#~ msgstr ""
+#~ "O sistema de ficheiros só pode alcanzar este tamaño convertindo a FAT32."
+
+#, fuzzy
+#~ msgid ""
+#~ "GNU Parted cannot resize this partition to this size.  We're working on "
+#~ "it!"
+#~ msgstr ""
+#~ "GNU Parted non pode cambiar esta partición a este tamaño. ¡Estamos "
+#~ "traballando niso!"
+
+#~ msgid "Bad directory entry for %s: first cluster is the end of file marker."
+#~ msgstr ""
+#~ "Entrada de directorio incorrecta para %s: o primeiro cluster é o marcador "
+#~ "de fin de ficheiro."
+
+#~ msgid ""
+#~ "Bad FAT: unterminated chain for %s.  You should run dosfsck or scandisk."
+#~ msgstr ""
+#~ "FAT incorrecta: cadea non rematada para %s. Debería executar dosfsck ou "
+#~ "scandisk."
+
+#, fuzzy
+#~ msgid ""
+#~ "Bad FAT: cluster %d outside file system in chain for %s.  You should run "
+#~ "dosfsck or scandisk."
+#~ msgstr ""
+#~ "FAT incorrecta: o cluster %d está fóra do sistema de ficheiros na cadea "
+#~ "para %s. Debería executar dosfsck ou scandisk."
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d is cross-linked for %s.  You should run dosfsck or "
+#~ "scandisk."
+#~ msgstr ""
+#~ "FAT incorrecta: o cluster %d ten ligazóns cruzadas para %s. Debería "
+#~ "executar dosfsck ou scandisk."
+
+#~ msgid "%s is %dk, but it has %d clusters (%dk)."
+#~ msgstr "%s é de %dk, pero ten %d clusters (%dk)."
+
+#~ msgid ""
+#~ "The file %s is marked as a system file.  This means moving it could cause "
+#~ "some programs to stop working."
+#~ msgstr ""
+#~ "O ficheiro %s está marcado coma ficheiro de sistema. Isto significa que "
+#~ "movelo podería facer que outros programas deixaran de traballar."
+
+#~ msgid ""
+#~ "FAT %d media %x doesn't match the boot sector's media %x.  You should "
+#~ "probably run scandisk."
+#~ msgstr ""
+#~ "Na FAT %d, o soporte %x non coincide co soporte do sector de inicio, %x. "
+#~ "Seguramente debería executar scandisk."
+
+#, fuzzy
+#~ msgid "fat_table_set: cluster %ld outside file system"
+#~ msgstr "fat_table_set: o cluster %ld está fóra do sistema de ficheiros"
+
+#, fuzzy
+#~ msgid "fat_table_get: cluster %ld outside file system"
+#~ msgstr "fat_table_get: o cluster %ld está fóra do sistema de ficheiros"
+
+#~ msgid "fat_table_alloc_cluster: no free clusters"
+#~ msgstr "fat_table_alloc_cluster: non hai clusters libres"
+
+#~ msgid "Too many bad pages."
+#~ msgstr "Demasiadas páxinas incorrectas."
+
+#, fuzzy
+#~ msgid "writing HFS Master Directory Block"
+#~ msgstr "Erro ao escribir no directorio raiz."
+
+#, fuzzy
+#~ msgid "Error while writing the allocation file."
+#~ msgstr "Erro ao escribir no directorio raiz."
+
+#, fuzzy
+#~ msgid "Error while writing the compatibility part of the allocation file."
+#~ msgstr "Erro ao escribir no directorio raiz."
+
+#, fuzzy
+#~ msgid "shrinking HFS wrapper"
+#~ msgstr "encollendo"
+
+#, fuzzy
+#~ msgid "Journal offset or size is not multiple of the sector size."
+#~ msgstr ""
+#~ "Delta do comezo do cluster = %d, que non é un múltiplo do tamaño do "
+#~ "cluster %d."
+
+#, fuzzy
+#~ msgid "Some header fields are not multiple of the sector size."
+#~ msgstr ""
+#~ "Delta do comezo do cluster = %d, que non é un múltiplo do tamaño do "
+#~ "cluster %d."
+
+#, fuzzy
+#~ msgid "Could not cache the file system in memory."
+#~ msgstr "Non se pode detectar un sistema de ficheiros."
+
+#~ msgid "Source device?"
+#~ msgstr "¿Dispositivo orixe?"
+
+#~ msgid "Source partition number?"
+#~ msgstr "¿Número da partición orixe?"
+
+#, fuzzy
+#~ msgid "Can't copy an extended partition."
+#~ msgstr "Non se poden copiar particións estendidas."
+
+#~ msgid "Destination partition number?"
+#~ msgstr "¿Número da partición de destino?"
+
+#, fuzzy
+#~ msgid ""
+#~ "An extended partition cannot hold a file system.  Did you want mkpart?"
+#~ msgstr ""
+#~ "As particións estendidass non poden ter sistemas de ficheiros. ¿Quería "
+#~ "executar mkpart?"
+
+#, fuzzy
+#~ msgid "Can't move an extended partition."
+#~ msgstr "Non se poden move-las particións extendidas."
+
+#~ msgid "Can't move a partition onto itself.  Try using resize, perhaps?"
+#~ msgstr ""
+#~ "Non se pode mover unha partición a si mesma. ¿Non quererá usar resize?"
+
+#~ msgid "Minor: %d\n"
+#~ msgstr "Menor: %d\n"
+
+#, fuzzy
+#~ msgid "Flags: %s\n"
+#~ msgstr "Modificadores: "
+
+#~ msgid "File System: %s\n"
+#~ msgstr "Sistema de Ficheiros: %s\n"
+
+#, fuzzy
+#~ msgid "Size:         "
+#~ msgstr "Tamaño:       %10.3fMb (%d%%)\n"
+
+#, fuzzy
+#~ msgid "Minimum size: "
+#~ msgstr "Tam. mínimo:  %10.3fMb (%d%%)\n"
+
+#, fuzzy
+#~ msgid "Maximum size: "
+#~ msgstr "Tam. Máximo:  %10.3fMb (%d%%)\n"
+
+#~ msgid "check"
+#~ msgstr "check"
+
+#, fuzzy
+#~ msgid ""
+#~ "check NUMBER                             do a simple check on the file "
+#~ "system"
+#~ msgstr ""
+#~ "check MENOR              facer unha comprobación simple no sistema de "
+#~ "ficheiros"
+
+#~ msgid "cp"
+#~ msgstr "cp"
+
+#, fuzzy
+#~ msgid ""
+#~ "cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   copy file system to another "
+#~ "partition"
+#~ msgstr ""
+#~ "cp [DE-DISPOSITIVO] DE-MENOR A-MENOR  copiar sistema de fich. noutra "
+#~ "partición"
+
+#~ msgid "mkfs"
+#~ msgstr "mkfs"
+
+#, fuzzy
+#~ msgid ""
+#~ "mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on "
+#~ "partition NUMBER"
+#~ msgstr ""
+#~ "mkfs MENOR TIPO-SF     crear un sistema de ficheiros TIPO-SF na partición "
+#~ "MENOR"
+
+#~ msgid "mkpartfs"
+#~ msgstr "mkpartfs"
+
+#, fuzzy
+#~ msgid ""
+#~ "mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file "
+#~ "system"
+#~ msgstr ""
+#~ "mkpartfs TIPO-PARTICION TIPO-SF INICIO FIN\n"
+#~ "                                  crear unha partición cun sistema de "
+#~ "ficheiros"
+
+#~ msgid "move"
+#~ msgstr "move"
+
+#, fuzzy
+#~ msgid "move NUMBER START END                    move partition NUMBER"
+#~ msgstr "move MENOR INICIO FIN         move-la partición MENOR"
+
+#~ msgid "resize"
+#~ msgstr "resize"
+
+#, fuzzy
+#~ msgid ""
+#~ "resize NUMBER START END                  resize partition NUMBER and its "
+#~ "file system"
+#~ msgstr ""
+#~ "rescue INICIO FIN           recupera unha partición perdida entre INICIO "
+#~ "e FIN"
+
+#, fuzzy
+#~ msgid "Unable to determine the block size of this dasd"
+#~ msgstr "Non se puido determina-lo tamaño de %s (%s)"
+
+#, fuzzy
+#~ msgid ""
+#~ "The kernel was unable to re-read the partition table on %s (%s).  This "
+#~ "means Linux won't know anything about the modifications you made until "
+#~ "you reboot.  You should reboot your computer before doing anything with "
+#~ "%s."
+#~ msgstr ""
+#~ "O kernel non puido volver le-la táboa de particións de %s (%s). Isto "
+#~ "quere dicir que Linux non sabe nada das modificacións que Vd. fixo, ata "
+#~ "que reinicie. Debería reinicia-lo seu ordenador antes de facer nada con "
+#~ "%s."
+
+#~ msgid ""
+#~ "The sector size on %s is %d bytes.  Parted is known not to work properly "
+#~ "with drives with sector sizes other than %d bytes"
+#~ msgstr ""
+#~ "O tamaño dos sectores de %s é de %d bytes. Sábese que parted non traballa "
+#~ "correctamente con unidades que teñan un tamaño de sector distinto de %d "
+#~ "bytes"
+
+#~ msgid "Device %s has dodgey geometry."
+#~ msgstr "O dispositivo %s ten unha xeometría moi estraña."
+
+#~ msgid "IDE"
+#~ msgstr "IDE"
+
+#~ msgid "SCSI"
+#~ msgstr "SCSI"
+
+#~ msgid "Device %s is neither a SCSI nor IDE drive."
+#~ msgstr "O dispositivo %s non é unha unidade SCSI nin IDE."
+
+#~ msgid "Error reading %s (%s) to determine if partition is mounted."
+#~ msgstr "Erro ao ler %s (%s) para determinar se a partición está montada."
+
+#~ msgid ""
+#~ "Unable to determine if partitions are mounted via /proc/mounts or /etc/"
+#~ "mtab.  Make sure you don't attempt to resize or modify mounted file "
+#~ "systems.  (Even read-only mounted)"
+#~ msgstr ""
+#~ "Non se puido determinar se as particións están montadas mediante /proc/"
+#~ "mounts ou /etc/mtab. Asegúrese de que non tenta cambia-lo tamaño ou "
+#~ "modificar sistemas de ficheiros montados (incluso se están montados en só-"
+#~ "lectura)."
+
+#~ msgid ""
+#~ "The partition table on %s is inconsistent.  There are many reasons why "
+#~ "this might be the case.  However, the most likely reason is that Linux "
+#~ "detected the BIOS geometry for %s incorrectly.  GNU Parted suspects the "
+#~ "real geometry should be %d/%d/%d (not %d/%d/%d).  You should check with "
+#~ "your BIOS first, as this may not be correct.  You can inform Linux by "
+#~ "adding the parameter %s=%d,%d,%d to the command line.  See the LILO or "
+#~ "GRUB documentation for more information.  If you think Parted's suggested "
+#~ "geometry is correct, you may select Ignore to continue (and fix Linux "
+#~ "later).  Otherwise, select Cancel (and fix Linux and/or the BIOS now)."
+#~ msgstr ""
+#~ "A táboa de particións de %s non é consistente. Hai moitos motivos polos "
+#~ "que isto puido pasar. Nembargantes, o motivo máis probable é que Linux "
+#~ "detectara a xeometría da BIOS de %s incorrectamente. GNU Parted sospeita "
+#~ "que a verdadeira xeometría debería ser %d/%d/%d (e non %d/%d/%d). Debería "
+#~ "comprobar isto coa BIOS primeiro, porque todo isto podería non ser "
+#~ "correcto. Pode informar a Linux engadindo o parámetro %s=%d,%d,%d na liña "
+#~ "de comando. Vexa a documentación de LILO ou GRUB para obter máis "
+#~ "información. Se cre que a xeometría suxerida por Parted é correcta, pode "
+#~ "escoller \"Ignorar\" para continuar (e arranxar Linux despois). Noutro "
+#~ "caso, escolla \"Cancelar\" (e arranxe Linux e/ou a BIOS agora)."
+
+#~ msgid ""
+#~ "The partition table on %s is inconsistent.  There are many reasons why "
+#~ "this might be the case.  Often, the reason is that Linux detected the "
+#~ "BIOS geometry incorrectly.  However, this does not appear to be the case "
+#~ "here.  It is safe to ignore,but ignoring may cause (fixable) problems "
+#~ "with some boot loaders, and may cause problems with FAT file systems.  "
+#~ "Using LBA is recommended."
+#~ msgstr ""
+#~ "A táboa de particións de %s non é consistente. Hai moitos motivos polos "
+#~ "que isto puido pasar. Moitas veces, o motivo é que Linux detectou a "
+#~ "xeometría da BIOS incorrectamente. Nembargantes, este non parece se-lo "
+#~ "caso agora. Pódese ignorar isto de xeito seguro pero facelo pode causar "
+#~ "problemas (que se poden arranxar) con algúns cargadores de inicio, e "
+#~ "tamén pode causar problemas con sistemas de ficheiros FAT. Recoméndase o "
+#~ "emprego de LBA."
+
+#~ msgid ""
+#~ "Unable to align partition properly.  This probably means that another "
+#~ "partitioning tool generated an incorrect partition table, because it "
+#~ "didn't have the correct BIOS geometry.  It is safe to ignore,but ignoring "
+#~ "may cause (fixable) problems with some boot loaders."
+#~ msgstr ""
+#~ "Non se puido aliña-la partición correctamente. Isto, seguramente, "
+#~ "signifique que outra ferramenta de particionamento xerou unha táboa de "
+#~ "particións incorrecta, porque non tiña a xeometría da BIOS correcta. "
+#~ "Pódese ignorar de xeito seguro, pero facelo pode provocar problemas (que "
+#~ "se poden arranxar) con algúns cargadores de inicio."
+
+#~ msgid "Attempt to read sectors %ld-%ld outside of partition on %s"
+#~ msgstr "Tentáronse le-los sectores %ld-%ld fóra da partición en %s"
+
+#~ msgid ""
+#~ "This ext2 filesystem has a rather strange layout!  Parted can't resize "
+#~ "this (yet)."
+#~ msgstr ""
+#~ "¡Este sistema de ficheiros ten unha organización moi estraña! Parted non "
+#~ "lle pode cambia-lo tamaño a isto (aínda)."
+
+#~ msgid "Filesystem has incompatible feature enabled"
+#~ msgstr ""
+#~ "O sistema de ficheiros ten unha característica incompatible activada."
+
+#~ msgid "File system has an invalid signature for a FAT file systems."
+#~ msgstr ""
+#~ "O sistema de ficheiros ten unha sinatura incorrecta para un sistema de "
+#~ "ficheiros FAT."
+
+#~ msgid "where necessary, prompts for user intervention"
+#~ msgstr "onde sexa necesario, pedi-la intervención do usuario"
+
+#~ msgid "START and END are in megabytes\n"
+#~ msgstr "INICIO e FIN indícanse en megabytes\n"
+
+#~ msgid "Partition %s is being used."
+#~ msgstr "Estase a usa-la partición %s."
+
+#~ msgid ""
+#~ "You requested to move the partition to %.3f-%.3fMb. The closest Parted "
+#~ "can manage is %.3f-%.3fMb."
+#~ msgstr ""
+#~ "Solicitou move-la partición a %.3f-%.3fMb. O máis semellante que pode "
+#~ "manexar Parted é %.3f-%.3fMb."
+
+#~ msgid "Disk geometry for %s: 0.000-%.3f megabytes\n"
+#~ msgstr "Xeometría de disco de %s: 0.000-%.3f megabytes\n"
+
+#~ msgid "Disk label type: %s\n"
+#~ msgstr "Tipo de etiqueta de disco: %s\n"
+
+#~ msgid "Minor    Start       End     "
+#~ msgstr "Menor    Inicio     Fin     "
+
+#~ msgid "Type      "
+#~ msgstr "Tipo      "
+
+#~ msgid "Filesystem  "
+#~ msgstr "Sistema de ficheiros  "
+
+#~ msgid "Name                  "
+#~ msgstr "Nome                  "
+
+#~ msgid ""
+#~ "You requested to resize the partition to %.3f-%.3fMb. The closest Parted "
+#~ "can manage is %.3f-%.3fMb."
+#~ msgstr ""
+#~ "Solicitou cambia-lo tamaño da partición a %.3f-%.3fMb. O máis semellante "
+#~ "que pode manexar Parted é %.3f-%.3fMb."
+
+#~ msgid ""
+#~ "print [MINOR]                 display the partition table, or a partition"
+#~ msgstr ""
+#~ "print [MENOR]                 amosa-la táboa de particións ou unha "
+#~ "partición"
+
+#~ msgid "resize MINOR START END        resize filesystem on partition MINOR"
+#~ msgstr ""
+#~ "resize MENOR INICIO FIN  cambia o tamaño do sistema de ficheiros da part. "
+#~ "MENOR"
+
+#~ msgid ""
+#~ "You found a bug in GNU Parted.  Please email a bug report to bug-"
+#~ "parted@gnu.org containing the version (%s), and the following message:\n"
+#~ msgstr ""
+#~ "Atopou un erro en GNU parted. Por favor, envíe un informe de erro a bug-"
+#~ "parted@gnu.org que conteña a versión (%s) e a seguinte mensaxe:\n"
+
+#~ msgid ""
+#~ "  You have Windows FAT partition(s) that are not using LBA.  If your BIOS "
+#~ "supports LBA, then you should switch to LBA by setting the LBA flag on "
+#~ "all FAT partitions.  Otherwise, make sure the operating system and the "
+#~ "BIOS have the same geometry before resizing any FAT partitions."
+#~ msgstr ""
+#~ " Ten particións FAT de Windows que non empregan LBA. Se a BIOS soporta "
+#~ "LBA debería cambiar a LBA estabrecendo o modificador LBA en tódalas "
+#~ "particións FAT. Noutro caso, asegúrese de que o sistema operativo e a "
+#~ "BIOS teñen a mesma xeometría antes de cambia-lo tamaño de ningunha "
+#~ "partición FAT."
+
+#~ msgid ""
+#~ "The operating system thinks the geometry on %s is %d/%d/%d.  Therefore, "
+#~ "cylinder 1024 ends at %.3fM.%s"
+#~ msgstr ""
+#~ "O sistema operativo cre que a xeometría de %s é %d/%d/%d. Polo tanto, o "
+#~ "cilindro 1024 remata en %.3fM.%s"
+
+#~ msgid "The operating system thinks the geometry on %s is %d/%d/%d.%s"
+#~ msgstr "O sistema operativo cre que a xeometría de %s é %d/%d/%d.%s"
+
+#~ msgid ""
+#~ "The FATs aren't big enough to describe all clusters!  Each FAT is %d "
+#~ "sectors.  There are %d clusters, which would require each FAT to be %d "
+#~ "sectors.  This is REALLY weird.  You might want to write us an email: bug-"
+#~ "parted@gnu.org"
+#~ msgstr ""
+#~ "¡As FATs non son grandes dabondo para describir tódolos clusters! Cada "
+#~ "FAT ten %d sectores. Hai %d clusters, que precisan que cada FAT teña %d "
+#~ "sectores. Isto SI que é estraño. Se cadra debería mandarnos unha mensaxe "
+#~ "electrónica: bug-parted@gnu.org"
+
+# ¿Para que carallo pon este a abreviatura MB en minúsculas,
+# cando todo o mundo sabe que é en maiúsculas? - jt
+#~ msgid ""
+#~ "This swap partition is not compatible with Linux version 2.1.117 or "
+#~ "earlier.  Use a smaller partition (maximum size 128mb) if you want to use "
+#~ "old versions of Linux."
+#~ msgstr ""
+#~ "Esta partición de intercambio non é compatible con Linux versión 2.1.117 "
+#~ "ou anterior. Empregue unha partición máis pequena (tamaño máximo 128MB) "
+#~ "se quere usar versións antigas de Linux."
+
+#~ msgid "unknown"
+#~ msgstr "descoñecido"
+
+#~ msgid "Unknown SCSI"
+#~ msgstr "SCSI descoñecido"
+
+#~ msgid "GUID Partition Table Header Signature is wrong: "
+#~ msgstr "A Sinatura Cabeceira da Táboa de Particións GUID é incorrecta: "
+
+#~ msgid " should be "
+#~ msgstr " debía ser "
+
+#~ msgid "GPT Header CRC check failed, %x should be %x."
+#~ msgstr "A comprobación CRC da Cabeceira GPT, %x debía ser %x."
+
+#~ msgid "GPT Partition Entry Array CRC check failed, %x should be %x."
+#~ msgstr ""
+#~ "A comprobación CRC do Array de Entradas da Partición GPT fallou, %x debía "
+#~ "ser %x."
+
+#~ msgid ""
+#~ "This disk contains a valid Primary and Alternate GUID Partition Table but "
+#~ "the Protective MBR is invalid.  This generally means that the disk had "
+#~ "GPT partitions on it, but then a legacy partition editing tool was used "
+#~ "to change the partition table stored in the MBR.\n"
+#~ "Which data is valid,  GPT or MBR?\n"
+#~ "Yes will assume that the GPT information is correct, and rewrite the "
+#~ "PMBR.\n"
+#~ "No will assume that the MBR is correct, and erase the GPT information.\n"
+#~ "Ignore will assume that the MBR is correct, but not change the disk."
+#~ msgstr ""
+#~ "Este disco contén unha Táboa de Partición GUID Primaria e Alternativa, "
+#~ "pero o MBR Protector non é válido. Isto adoita significar que o disco "
+#~ "tiña particións GPT, pero despois empregouse unha ferramenta de "
+#~ "particionamento antiga para cambia-la táboa de particións armacenada no "
+#~ "MBR.\n"
+#~ "¿Que datos son válidos, GPT ou MBR?\n"
+#~ "Si ha supor que a información GPT é correcta, e ha regrava-lo PMBR.\n"
+#~ "Non ha supor que o MBR é correcto, e ha borra-la información GPT.\n"
+#~ "Ignorar ha supor que o MBR é correcto, pero non ha cambia-lo disco."
+
+#~ msgid ""
+#~ "This disk contains a valid Alternate GUID Partition Table but the Primary "
+#~ "GPT and Protective MBR are invalid.  This generally means that the disk "
+#~ "had GPT partitions on it, but then a legacy partition editing tool was "
+#~ "used to change the partition table stored in the MBR.\n"
+#~ "Which data is valid,  GPT or MBR?\n"
+#~ "Yes will assume that the GPT information is correct, and will rewrite the "
+#~ "PMBR and Primary GPT.\n"
+#~ "No will assume that the MBR is correct, and erase the GPT information.\n"
+#~ "Ignore will assume that the MBR is correct, but not change the disk."
+#~ msgstr ""
+#~ "Este disco contén unha Taboa de Particións GUID Alternativa válida, pero "
+#~ "a GPT Primaria e o MBR Protector non son válidos. Isto adoita significar "
+#~ "que o disco tivo particións GPT pero despois empregouse unha ferramenta "
+#~ "de particionamento antiga para cambia-la táboa de particións armacenada "
+#~ "no MBR.\n"
+#~ "¿Que datos son válidos, GPT ou MBR?\n"
+#~ "Si ha supor que a información GPT é correcta, e ha regrava-lo PMBR e a "
+#~ "GPT Primaria.\n"
+#~ "Non ha supor que o MBR é correcto, e ha borra-la información GPT.\n"
+#~ "Ignorar ha supor que o MBR é correcto, pero non ha cambia-lo disco."
+
+#~ msgid ""
+#~ "This disk contains a valid Primary GUID Partition Table but the Alternate "
+#~ "GPT and Protective MBR are invalid.  This generally means that the disk "
+#~ "had GPT partitions on it, but then a legacy partition editing tool was "
+#~ "used to change the partition table stored in the MBR.\n"
+#~ "Which data is valid,  GPT or MBR?\n"
+#~ "Yes will assume that the GPT information is correct, and will rewrite the "
+#~ "PMBR and Alternate GPT.\n"
+#~ "No will assume that the MBR is correct, and erase the GPT information.\n"
+#~ "Ignore will assume that the MBR is correct, but not change the disk.\n"
+#~ msgstr ""
+#~ "Este disco contén unha Taboa de Particións GUID Primaria válida, pero a "
+#~ "GPT Alternativa e o MBR Protector non son válidos. Isto adoita significar "
+#~ "que o disco tivo particións GPT pero despois empregouse unha ferramenta "
+#~ "de particionamento antiga para cambia-la táboa de particións armacenada "
+#~ "no MBR.\n"
+#~ "¿Que datos son válidos, GPT ou MBR?\n"
+#~ "Si ha supor que a información GPT é correcta, e ha regrava-lo PMBR e a "
+#~ "GPT Alternativa.\n"
+#~ "Non ha supor que o MBR é correcto, e ha borra-la información GPT.\n"
+#~ "Ignorar ha supor que o MBR é correcto, pero non ha cambia-lo disco.\n"
+
+#~ msgid "The new partition overlaps with another partition."
+#~ msgstr "A nova partición superponse con outra partición."
+
+#~ msgid "Can't set non-Linux partitions as a root device."
+#~ msgstr "Non se poden estabrecer particións non Linux coma dispositivo raiz."
+
+#~ msgid "Can't set non-Linux partitions as a swap device."
+#~ msgstr ""
+#~ "Non se poden estabrecer particións non Linux coma dispositivo de "
+#~ "intercambio."
+
+#~ msgid "No get_resize_constraint for %s!"
+#~ msgstr "¡%s non ten get_resize_constraint!"
+
+#~ msgid "The %s file system code doesn't support %s disk labels."
+#~ msgstr ""
+#~ "O código do sistema de ficheiros %s non soporta etiquetas de disco %s."
+
+#~ msgid "Creating new %s disklabels is not implemented yet."
+#~ msgstr ""
+#~ "A creación de novas etiquetas de disco %s non está implementado ainda."
+
+#~ msgid "The code to write the partition table hasn't been written for %s yet"
+#~ msgstr ""
+#~ "Ainda non se escribíu o código de escritura de táboas de particións para "
+#~ "%s"
+
+#~ msgid ""
+#~ "Can't resize an extended partition so as to exclude a logical partition."
+#~ msgstr ""
+#~ "Non se pode cambia-lo tamaño dunha partición estendida escluindo unha "
+#~ "partición lóxica."
+
+#~ msgid "Can't grow a partition onto used space."
+#~ msgstr "Non se pode facer medra-la partición sobre espacio usado."
+
+#~ msgid "Insane!  %d clusters!"
+#~ msgstr "¡Isto é unha toleada! ¡%d clusters!"
+
+#~ msgid ""
+#~ "The filesystem is going to be too big for FAT16, so FAT32 will be used.  "
+#~ "This is not compatible with MS-DOS, early versions of MS-Windows 95 and "
+#~ "Windows NT.  If you use these operating systems, then select cancel, and "
+#~ "create a smaller partition.  If you only use Linux, BSD, MS Windows 98 "
+#~ "and/or MS Windows 95 B, then select OK."
+#~ msgstr ""
+#~ "O sistema de ficheiros vai ser grande de máis para FAT16, así que usarase "
+#~ "FAT32. Isto non é compatible con MS-DOS, versións antigas de MS-Windows "
+#~ "95 e Windows NT. Se usa eses sistemas operativos, escolla `Cancelar', e "
+#~ "cree unha partición máis pequena. Se só usa Linux, BSD, MS Windows 98 e/"
+#~ "ou MS Windows 95 B, entón escolla `Aceptar'."
+
+#~ msgid "Weird: fat_calc_sizes() failed for FAT32!"
+#~ msgstr "Estraño: ¡fallou a chamada a fat_calc_sizes() para FAT32!"
+
+#~ msgid ""
+#~ "Would you like to use FAT32 for this filesystem?  It is much more "
+#~ "efficient with your disk space, but is not compatible with early versions "
+#~ "of Windows 95 and Windows NT.  Only select yes if you only use Linux, "
+#~ "BSD, MS Windows 98 and/or MS Windows 95 B."
+#~ msgstr ""
+#~ "¿Quere usar FAT32 neste sistema de ficheiros? É moito máis eficiente co "
+#~ "seu espacio en disco, pero non é compatible con versións antigas de "
+#~ "Windows 95 e Windows NT. Escolla `Si' só se só usa Linux, BSD, MS Windows "
+#~ "98 e/ou MS Windows 95 B."
+
+#~ msgid ""
+#~ "File system doesn't have expected sizes for Windows to like it.  Number "
+#~ "of clusters is %d (%d expected); size of FATs is %d sectors (%d expected)."
+#~ msgstr ""
+#~ "O sistema de ficheiros non ten os tamaños esperados para que a Windows "
+#~ "lle goste. O número de clusters é %d (esperábanse %d); o tamaño das FATs "
+#~ "é de %d sectores (esperábanse %d)."
+
+#~ msgid ""
+#~ "Partition size (%ld sectors) and filesystem size (%ld sectors) do not "
+#~ "match."
+#~ msgstr ""
+#~ "O tamaño da partición (%ld sectores) e o do sistema de ficheiros (%ld "
+#~ "sectores) non coinciden."
+
+#~ msgid "Linux-swap partitions can not be hidden on msdos disk labels."
+#~ msgstr ""
+#~ "As particións de intercambio de Linux non poden estar ocultas nas "
+#~ "etiquetas de disco msdos."
+
+#~ msgid "Linux-swap partitions can not be bootable on pc98 disk labels."
+#~ msgstr ""
+#~ "As particións de intercambio de Linux non poden ser de inicio nas "
+#~ "etiquetas de disco msdos."
+
+#~ msgid "HFS partitions can't be hidden on msdos disk labels."
+#~ msgstr ""
+#~ "As particións HFS non poden estar ocultas nas etiquetas de disco msdos."
+
+#~ msgid "JFS partitions can't be hidden on msdos disk labels."
+#~ msgstr ""
+#~ "As particións JFS non poden estar ocultas nas etiquetas de disco msdos."
+
+#~ msgid "Reiserfs partitions can't be hidden on msdos disk labels."
+#~ msgstr ""
+#~ "As particións Reiserfs non poden estar ocultas nas etiquetas de disco "
+#~ "msdos."
+
+#~ msgid "Reiserfs partitions must be bootable on pc98 disk labels."
+#~ msgstr ""
+#~ "As particións Reiserfs deben ser de inicio nas etiquetas de disco pc98."
+
+#~ msgid "XFS partitions can't be hidden on msdos disk labels."
+#~ msgstr ""
+#~ "As particións XFS non poden estar ocultas nas etiquetas de disco msdos."
+
+#~ msgid ""
+#~ "The operating system thinks the geometry on %s is %d/%d/%d.  You should "
+#~ "check that this matches the BIOS geometry before using this program."
+#~ msgstr ""
+#~ "O sistema operativo cre que a xeometría de %s é %d/%d/%d. Debería "
+#~ "comprobar que isto coincide coa xeometría da BIOS antes de usar este "
+#~ "programa."
+
+#~ msgid ""
+#~ "There is no boot code on this disk.  Would you like to use GNU parted's "
+#~ "boot loader?"
+#~ msgstr ""
+#~ "Non hai un programa de arrinque neste disco. ¿Quere usa-lo cargador de "
+#~ "GNU parted?"
+
+#~ msgid "No get_system() for %s!"
+#~ msgstr "¡Non hai unha chamada get_system() para %s!"
+
+#~ msgid "Can't create a partition with the start after the end."
+#~ msgstr "Non se pode crear unha partición co comezo despois da fin."
+
+#~ msgid ""
+#~ "No filesystem found on partition.  Can't determine what partition system "
+#~ "to use."
+#~ msgstr ""
+#~ "Non se atopou un sistema de ficheiros na partición. Non se puido "
+#~ "determina-lo sistema de particións a usar."
+
+#~ msgid "FAT filesystems don't have an id for non-msdos partition tables"
+#~ msgstr ""
+#~ "Os sistemas de ficheiros FAT non teñen un identificador para táboas de "
+#~ "particións que non son de msdos."
+
+#~ msgid ""
+#~ "Would you like to use FAT32?  It is more efficient, but it is not "
+#~ "compatible with MS-DOS, early versions of MS-Windows 95 and Windows NT.  "
+#~ "If you use these operating systems, then select No.  If you only use "
+#~ "Linux, BSD, MS Windows 98 and/or MS Windows 95 B, then you may select Yes."
+#~ msgstr ""
+#~ "¿Quere usar FAT32? É Moi eficiente, pero non é compatible con MS-DOS, "
+#~ "versións antigas de MS-Windows 95 e Windows NT. Se usa eses sistemas "
+#~ "operativos, escolla `Non'. Se só usa Linux, BSD, MS Windows 98 e/ou MS "
+#~ "Windows 95 B, entón pode escoller `Si'."
+
+#~ msgid ""
+#~ "The filesystem is going to be too big for FAT16, so FAT32 must be used.  "
+#~ "This is not compatible with MS-DOS, early versions of MS-Windows 95 and "
+#~ "Windows NT.  If you use these operating systems, then select Cancel, and "
+#~ "create a smaller partition.  If you only use Linux, BSD, MS Windows 98 "
+#~ "and/or MS Windows 95 B, then select OK."
+#~ msgstr ""
+#~ "O sistema de ficheiros vai ser grande de máis para FAT16, así que se ha "
+#~ "usar FAT32. Isto non é compatible con MS-DOS, versións antigas de MS-"
+#~ "Windows 95 e Windows NT. Se usa eses sistemas operativos, escolla "
+#~ "`Cancelar', e cree unha partición máis pequena. Se só usa Linux, BSD, MS "
+#~ "Windows 98 e/ou MS Windows 95 B, entón escolla `Aceptar'."
+
+#~ msgid "hide"
+#~ msgstr "hide"
+
+#~ msgid "Disk geometry: 1-%d, %dk cylinders\n"
+#~ msgstr "Xeometría de disco: 1-%d, %dk cilindros\n"
+
+#~ msgid "Minor    Start    End      Type            Filesystem     Flags\n"
+#~ msgstr ""
+#~ "Menor    Inicio   Fin      Tipo            Sist.Ficheiros Modificadores\n"
+
+#~ msgid "unhide"
+#~ msgstr "unhide"
+
+#~ msgid "hide MINOR                    hides partition MINOR"
+#~ msgstr "hide MENOR               agocha-la partición MENOR"
+
+#~ msgid "Partition length of %dk is too small."
+#~ msgstr "A lonxitude da partición de %dk é moi pequena."
+
+#~ msgid "There are no possible configurations for this cluster size."
+#~ msgstr "Non hai configuracións posibles para este tamaño de cluster."
+
+#~ msgid ""
+#~ "To resize this filesystem to this size, the cluster size must be changed "
+#~ "from %d bytes to %d bytes.  This functionality is not yet implemented.  "
+#~ "Note that there are many weird different sizes that can be achieved with "
+#~ "the same cluster size - if you keep experimenting with different "
+#~ "partition sizes, you might be lucky!!!"
+#~ msgstr ""
+#~ "Para cambiar este sistema de ficheiros a este tamaño, o tamaño do cluster "
+#~ "debe ser cambiado de %d bytes a %d bytes. Esta funcionalidade non está "
+#~ "implementada ainda. Teña en conta que hai moitos tamaños diferentes que "
+#~ "se poden conseguir co mesmo tamaño de cluster - ¡se segue a experimentar "
+#~ "con diferentes tamaños de partición, podería ter sorte!"
+
+#~ msgid ""
+#~ "The filesystem is going to be too big for FAT16, (with a cluster size of "
+#~ "%dk, anyway) so FAT32 will be used.  This is not compatible with MS-DOS, "
+#~ "early versions of MS-Windows 95 and Windows NT.  If you use these "
+#~ "operating systems, then select cancel, and create a smaller partition.  "
+#~ "If you only use Linux, BSD, MS Windows 98 and/or MS Windows 95 B, then "
+#~ "select OK."
+#~ msgstr ""
+#~ "O sistema de ficheiros ha ser grande de máis para FAT16 (cun tamaño de "
+#~ "cluster de %d, de tódolos xeitos), así que se ha usar FAT32. Isto non é "
+#~ "compatible con MS-DOS, versións antigas de MS-Windows 95 e Windows NT. Se "
+#~ "usa estes sistemas operativos, escolla `Cancelar' e cree unha partición "
+#~ "máis pequena. Se só usa Linux, BSD, MS Windows 98 e/ou MS Windows 95 B, "
+#~ "escolla `Aceptar'."
+
+#~ msgid "the root directory"
+#~ msgstr "o directorio raiz"
+
+#~ msgid "fat_read_clusters: clusters %ld-%ld outside filesystem"
+#~ msgstr ""
+#~ "fat_read_clusters: os clusters %ld-%ld están fóra do sistema de ficheiros"
+
+#~ msgid "fat_write_clusters: clusters %ld-%ld outside filesystem"
+#~ msgstr ""
+#~ "fat_write_clusters: os clusters %ld-%ld están fóra do sistema de ficheiros"
diff --git a/po/id.gmo b/po/id.gmo
new file mode 100644 (file)
index 0000000..d48b2b2
Binary files /dev/null and b/po/id.gmo differ
diff --git a/po/id.po b/po/id.po
new file mode 100644 (file)
index 0000000..1b5146b
--- /dev/null
+++ b/po/id.po
@@ -0,0 +1,3593 @@
+# Pesan Bahasa Indonesia untuk GNU parted
+# Copyright (C) 2006 Free Software Foundation, Inc.
+# This file is distributed under the same license as the parted package.
+# Arif E. Nugroho <arif_endro@yahoo.com>, 2006.
+# Andhika Padmawan <andhika.padmawan@gmail.com>, 2009.
+# Arif E. Nugroho <arif_endro@yahoo.com>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU parted 2.1\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2011-05-30 13:45+0200\n"
+"PO-Revision-Date: 2010-01-27 07:30+0700\n"
+"Last-Translator: Arif E. Nugroho <arif_endro@yahoo.com>\n"
+"Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
+"Language: id\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "argumen `%s' tidak sah %s"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "argumen %s ambigu untuk %s"
+
+#: lib/argmatch.c:153
+#, c-format
+msgid "Valid arguments are:"
+msgstr "Argumen yang sah adalah:"
+
+#: lib/closeout.c:112 libparted/labels/fdasd.c:107
+msgid "write error"
+msgstr "gagal menulis"
+
+#: lib/error.c:181
+msgid "Unknown system error"
+msgstr "Error dari sistem tidak diketahui penyebabnya"
+
+#: lib/getopt.c:548 lib/getopt.c:577
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
+msgstr "%s: pilihan `%s' adalah ambigu\n"
+
+#: lib/getopt.c:625 lib/getopt.c:629
+#, fuzzy, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s: pilihan `--%s' tidak memperbolehkan adanya argumen\n"
+
+#: lib/getopt.c:638 lib/getopt.c:643
+#, fuzzy, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr "%s: pilihan `%c%s' tidak memperbolehkan adanya sebuah argumen\n"
+
+#: lib/getopt.c:686 lib/getopt.c:705
+#, fuzzy, c-format
+msgid "%s: option '--%s' requires an argument\n"
+msgstr "%s: pilihan `%s' membutuhkan sebuah argument\n"
+
+#: lib/getopt.c:743 lib/getopt.c:746
+#, fuzzy, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s: pilihan `--%s' tidak dikenali\n"
+
+#: lib/getopt.c:754 lib/getopt.c:757
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "%s: pilihan `%c%s' tidak dikenali\n"
+
+#: lib/getopt.c:806 lib/getopt.c:809
+#, fuzzy, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: -- %c pilihan tidak valid\n"
+
+#: lib/getopt.c:859 lib/getopt.c:876 lib/getopt.c:1084 lib/getopt.c:1102
+#, fuzzy, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: pilihan membutuhkan sebuah argumen -- %c\n"
+
+#: lib/getopt.c:932 lib/getopt.c:948
+#, fuzzy, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s: pilihan `-W %s' adalah abigu\n"
+
+#: lib/getopt.c:972 lib/getopt.c:990
+#, fuzzy, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr "%s: pilihan `-W %s' tidak memperbolehkan adanya sebuah argument\n"
+
+#: lib/getopt.c:1011 lib/getopt.c:1029
+#, fuzzy, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: pilihan `%s' membutuhkan sebuah argument\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:271
+msgid "`"
+msgstr "U+2018"
+
+#: lib/quotearg.c:272
+msgid "'"
+msgstr "U+2019"
+
+#: lib/regcomp.c:133
+msgid "Success"
+msgstr "Sukses"
+
+#: lib/regcomp.c:136
+msgid "No match"
+msgstr "Tidak cocok"
+
+#: lib/regcomp.c:139
+msgid "Invalid regular expression"
+msgstr "Ekspresi regular tidak valid"
+
+#: lib/regcomp.c:142
+msgid "Invalid collation character"
+msgstr "Character collation tidak valid"
+
+#: lib/regcomp.c:145
+msgid "Invalid character class name"
+msgstr "Character class name tidak valid"
+
+#: lib/regcomp.c:148
+msgid "Trailing backslash"
+msgstr "Ada sisa backslash"
+
+#: lib/regcomp.c:151
+msgid "Invalid back reference"
+msgstr "Back reference tidak valid"
+
+#: lib/regcomp.c:154
+msgid "Unmatched [ or [^"
+msgstr "Tidak cocok [ atau [^"
+
+#: lib/regcomp.c:157
+msgid "Unmatched ( or \\("
+msgstr "Tidak cocok ( atau \\("
+
+#: lib/regcomp.c:160
+msgid "Unmatched \\{"
+msgstr "Tidak cocok \\{"
+
+#: lib/regcomp.c:163
+msgid "Invalid content of \\{\\}"
+msgstr "Isi tidak valid untuk \\{\\}"
+
+#: lib/regcomp.c:166
+msgid "Invalid range end"
+msgstr "Batas ujung tidak valid"
+
+#: lib/regcomp.c:169
+msgid "Memory exhausted"
+msgstr "Kehabisan memory"
+
+#: lib/regcomp.c:172
+msgid "Invalid preceding regular expression"
+msgstr "Ekspresi regular pendahulu tidak valid"
+
+#: lib/regcomp.c:175
+msgid "Premature end of regular expression"
+msgstr "Regular ekspresi berakhir secara premature (tidak normal)"
+
+#: lib/regcomp.c:178
+msgid "Regular expression too big"
+msgstr "Ekspresi regular terlalu besar"
+
+#: lib/regcomp.c:181
+msgid "Unmatched ) or \\)"
+msgstr "Tidak cocok ) atau \\)"
+
+#: lib/regcomp.c:702
+msgid "No previous regular expression"
+msgstr "Tidak ada ekpresi regular sebelumnya"
+
+#. TRANSLATORS: A regular expression testing for an affirmative answer
+#. (english: "yes").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^yesexpr='
+#: lib/rpmatch.c:147
+msgid "^[yY]"
+msgstr "^[yY]"
+
+#. TRANSLATORS: A regular expression testing for a negative answer
+#. (english: "no").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^noexpr='
+#: lib/rpmatch.c:160
+msgid "^[nN]"
+msgstr "^[nN]"
+
+#: lib/version-etc.c:74
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Dipaketkan oleh %s (%s)\n"
+
+#: lib/version-etc.c:77
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Dipaketkan oleh %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale.  Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:84
+msgid "(C)"
+msgstr "(C)"
+
+#: lib/version-etc.c:86
+msgid ""
+"\n"
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"\n"
+"Lisensi GPLv3+: GNU GPL versi 3 atau yang lebih baru <http://gnu.org/"
+"licenses/gpl.html>\n"
+"Ini merupakan free software: anda dapat secara bebas mengubah dan "
+"mendistribusikan ulang.\n"
+"Tidak ada GARANSI, yang dilindungi oleh hukum yang berlaku.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:102
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Ditulis oleh %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:106
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Ditulis oleh %s dan %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:110
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Ditulis oleh %s, %s, dan %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Ditulis oleh %s, %s, %s,\n"
+"dan %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Ditulis oleh %s, %s, %s,\n"
+"%s, dan %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:131
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Ditulis oleh %s, %s, %s,\n"
+"%s, %s, dan %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:139
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Ditulis oleh %s, %s, %s,\n"
+"%s, %s, %s, dan %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:147
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Ditulis oleh %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"dan %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:156
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Ditulis oleh %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, dan %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:167
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Ditulis oleh %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, dan yang lainnya.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package.  Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:245
+#, c-format
+msgid ""
+"\n"
+"Report bugs to: %s\n"
+msgstr ""
+"\n"
+"Laporkan bugs ke: %s\n"
+
+#: lib/version-etc.c:247
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "Laporkan %s bug ke: %s\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s halaman rumah: <%s>\n"
+
+#: lib/version-etc.c:253
+#, c-format
+msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
+msgstr "%s halaman rumah: <http://www.gnu.org/software/%s/>\n"
+
+#: lib/version-etc.c:256
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
+msgstr ""
+"Bantuan umum dalam menggunakan peranti lunak GNU: <http://www.gnu.org/"
+"gethelp/>\n"
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "kehabisan memory"
+
+#: lib/xstrtol-error.c:63
+#, c-format
+msgid "invalid %s%s argument `%s'"
+msgstr "argumen `%s' tidak sah %s%s"
+
+#: lib/xstrtol-error.c:68
+#, c-format
+msgid "invalid suffix in %s%s argument `%s'"
+msgstr "akhiran tidak sah di %s%s argumen `%s'"
+
+#: lib/xstrtol-error.c:72
+#, c-format
+msgid "%s%s argument `%s' too large"
+msgstr "%s%s argumen `%s' terlalu besar"
+
+#: libparted/arch/beos.c:245
+msgid "Disk Image"
+msgstr "Salinan dari disk"
+
+#: libparted/arch/beos.c:346 libparted/arch/gnu.c:277
+#: libparted/arch/linux.c:1545
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "Error membuka %s: %s"
+
+#: libparted/arch/beos.c:357 libparted/arch/gnu.c:287
+#: libparted/arch/linux.c:1556
+#, c-format
+msgid "Unable to open %s read-write (%s).  %s has been opened read-only."
+msgstr ""
+"Tidak dapat membuka %s dengan mode read-write (%s). %s telah dibuka read-"
+"only."
+
+#: libparted/arch/beos.c:419 libparted/arch/linux.c:1714
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s selama pencarian untuk dibaca pada %s"
+
+#: libparted/arch/beos.c:452 libparted/arch/gnu.c:465 libparted/arch/gnu.c:564
+#: libparted/arch/gnu.c:692 libparted/arch/linux.c:1674
+#: libparted/arch/linux.c:1755
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s selama pembacaan pada %s"
+
+#: libparted/arch/beos.c:488 libparted/arch/gnu.c:525
+#: libparted/arch/linux.c:1831
+#, c-format
+msgid "Can't write to %s, because it is opened read-only."
+msgstr "Tidak dapat menulis pada %s, karena ini dibuka secara read-only."
+
+#: libparted/arch/beos.c:504 libparted/arch/linux.c:1856
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s selama pencarian untuk menulis pada %s"
+
+#: libparted/arch/beos.c:541 libparted/arch/gnu.c:601 libparted/arch/gnu.c:646
+#: libparted/arch/gnu.c:723 libparted/arch/linux.c:1804
+#: libparted/arch/linux.c:1898 libparted/arch/linux.c:1970
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s selama penulisan pada %s"
+
+#: partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Coba `%s --help' untuk informasi lebih lanjut.\n"
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr "Penggunaan: %s [OPSI] [PERANGKAT]...\n"
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the operating system about partition table changes.\n"
+"\n"
+"  -d, --dry-run    do not actually inform the operating system\n"
+"  -s, --summary    print a summary of contents\n"
+"  -h, --help       display this help and exit\n"
+"  -v, --version    output version information and exit\n"
+msgstr ""
+"Beritahukan sistem operasi tentang perubahan tabel partisi.\n"
+"\n"
+"  -d, --no-update  jangan informasikan sistem operasi\n"
+"  -s, --summary    tampilkan rangkuman dari isi\n"
+"  -h, --help       tampilkan bantuan ini dan keluar\n"
+"  -v, --version    keluarkan informasi versi dan keluar\n"
+
+#: partprobe/partprobe.c:150
+msgid ""
+"\n"
+"When no DEVICE is given, probe all partitions.\n"
+msgstr ""
+"\n"
+"Jika tak ada PERANGKAT yang diberikan, pindai seluruh partisi.\n"
+
+#: partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Laporkan bugs kepada <%s>.\n"
+
+#: libparted/arch/gnu.c:110
+#, c-format
+msgid "Unable to open %s."
+msgstr "Tidak dapat membuka %s."
+
+#: libparted/arch/gnu.c:130
+msgid "Unable to probe store."
+msgstr "Tidak dapat memprobe store."
+
+#: libparted/arch/gnu.c:368
+msgid ""
+"The partition table cannot be re-read.  This means you need to reboot before "
+"mounting any modified partitions.  You also need to reinstall your boot "
+"loader before you reboot (which may require mounting modified partitions).  "
+"It is impossible do both things!  So you'll need to boot off a rescue disk, "
+"and reinstall your boot loader from the rescue disk.  Read section 4 of the "
+"Parted User documentation for more information."
+msgstr ""
+"Tabel partisi tidak dapat dibaca ulang. Ini berarti anda perlu untuk me-"
+"reboot terlebih dahulu sebelum me-mount semua partisi yang dimodifikasi. "
+"Anda juga perlu menginstall kembali bootloader anda sebelum me-reboot "
+"komputer anda (yang memerlukan untuk me-mount partisi yang dimodifikasi). "
+"Ini tidak mungkin untuk melakukan keduanya secara sekaligus! Jadi anda perlu "
+"membuat sebuah disket penolong (rescue), dan menginstall bootloader anda "
+"dari disket penolong tersebut. Baca bagian 4 dari dokumentasi pengguna "
+"Parted untuk informasi lebih lanjut."
+
+#: libparted/arch/gnu.c:385
+#, c-format
+msgid ""
+"The partition table on %s cannot be re-read (%s).  This means the Hurd knows "
+"nothing about any modifications you made.  You should reboot your computer "
+"before doing anything with %s."
+msgstr ""
+"Tabel partisi pada %s tidak dapat dibaca kembali (%s). Ini berarti hurd "
+"tidak tahu apa-apa tentang modifikasi yang anda buat. Anda seharusnya "
+"mereboot komputer anda sebelum melakukan apapun dengan %s."
+
+#: libparted/arch/gnu.c:396 parted/parted.c:1967
+msgid ""
+"You should reinstall your boot loader before rebooting.  Read section 4 of "
+"the Parted User documentation for more information."
+msgstr ""
+"Anda seharusnya menginstall ulang boot loader anda sebelum merebootnya. Baca "
+"bagian 4 dari Parted dokumentasi pengguna untuk informasi lebih lanjut."
+
+#: libparted/arch/gnu.c:788
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%s mencoba untuk mensinkronisasi %s pada disk"
+
+#: libparted/arch/linux.c:520
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "Tidak dapat memperoleh statistik perangkat %s - %s."
+
+#: libparted/arch/linux.c:577
+#, c-format
+msgid "Unable to determine the dm type of %s."
+msgstr "Tidak dapat menentukan tipe dm dari %s."
+
+#: libparted/arch/linux.c:669
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+"Tidak dapat menentukan ukuran sektor untuk %s: %s.\n"
+"Menggunakan baku ukuran sektor (%lld)."
+
+#: libparted/arch/linux.c:690
+#, fuzzy, c-format
+msgid ""
+"Could not determine physical sector size for %s.\n"
+"Using the logical sector size (%lld)."
+msgstr ""
+"Tidak dapat menentukan ukuran sektor untuk %s: %s.\n"
+"Menggunakan baku ukuran sektor (%lld)."
+
+#: libparted/arch/linux.c:746
+#, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "Tidak dapat menentukan ukuran dari %s (%s)."
+
+#: libparted/arch/linux.c:832
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "Tidak dapat memperoleh identitas dari perangkat %s - %s"
+
+#: libparted/arch/linux.c:841
+msgid "Generic IDE"
+msgstr "IDE umum"
+
+#: libparted/arch/linux.c:862
+#, c-format
+msgid ""
+"Device %s has multiple (%d) logical sectors per physical sector.\n"
+"GNU Parted supports this EXPERIMENTALLY for some special disk label/file "
+"system combinations, e.g. GPT and ext2/3.\n"
+"Please consult the web site for up-to-date information."
+msgstr ""
+"Perangkat %s memiliki beberapa (%d) logical sektor dalam setiap physical "
+"sektor.\n"
+"GNU Parted support untuk hal ini dalam tahap PERCOBAAN untuk beberapa disk "
+"label spesial / kombinasi file system, contoh GPT dan ext2/3.\n"
+"Tolong lihat web site untuk informasi terbaru."
+
+#: libparted/arch/linux.c:1039
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "Error menginisialisasi perangkat SCSI %s - %s"
+
+#: libparted/arch/linux.c:1103
+#, fuzzy, c-format
+msgid ""
+"The device %s is so small that it cannot possibly store a file system or "
+"partition table.  Perhaps you selected the wrong device?"
+msgstr ""
+"Perangkat %s memiliki panjang kosong, dan tidak mungkin menyimpan file "
+"system dan tabel partisi didalamnya. Mungkin anda telah memilih perangkat "
+"yang salah?"
+
+#: libparted/arch/linux.c:1216
+#, c-format
+msgid ""
+"Unable to determine geometry of file/device %s.  You should not use Parted "
+"unless you REALLY know what you're doing!"
+msgstr ""
+"Tidak dapat menentukan geometri dari file/perangkat %s. Anda seharusnya "
+"tidak  menggunakan Parted kecuali anda BENAR - BENAR tahu apa yang anda "
+"lakukan!"
+
+#: libparted/arch/linux.c:1276
+msgid "Generic SD/MMC Storage Card"
+msgstr "Kartu Penyimpanan SD/MMC Generik"
+
+#: libparted/arch/linux.c:1329
+msgid "DAC960 RAID controller"
+msgstr "DAC960 RAID controller"
+
+#: libparted/arch/linux.c:1334
+msgid "Promise SX8 SATA Device"
+msgstr "Perangkat Promise SX8 SATA"
+
+#: libparted/arch/linux.c:1339
+msgid "ATA over Ethernet Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1345
+msgid "IBM S390 DASD drive"
+msgstr "IBM S390 DASD drive"
+
+#: libparted/arch/linux.c:1351
+msgid "IBM iSeries Virtual DASD"
+msgstr "IBM iSeries Virtual DASD"
+
+#: libparted/arch/linux.c:1356
+msgid "Compaq Smart Array"
+msgstr "Compaq Smart Array"
+
+#: libparted/arch/linux.c:1361
+msgid "ATARAID Controller"
+msgstr "ATARAID Controller"
+
+#: libparted/arch/linux.c:1366
+msgid "I2O Controller"
+msgstr "I2O Controller"
+
+#: libparted/arch/linux.c:1371
+msgid "User-Mode Linux UBD"
+msgstr "Mode-Pengguna Linux UBD"
+
+#: libparted/arch/linux.c:1384
+#, c-format
+msgid "Linux device-mapper (%s)"
+msgstr "Linux device-mapper (%s)"
+
+#: libparted/arch/linux.c:1395
+msgid "Xen Virtual Block Device"
+msgstr "Divasi Blok Virtual Xen"
+
+#: libparted/arch/linux.c:1400
+msgid "Unknown"
+msgstr "Tidak diketahui"
+
+#: libparted/arch/linux.c:1409
+msgid "Virtio Block Device"
+msgstr "Divais Blok Virtio"
+
+#: libparted/arch/linux.c:1414
+msgid "Linux Software RAID Array"
+msgstr ""
+
+#: libparted/arch/linux.c:1421
+msgid "ped_device_new()  Unsupported device type"
+msgstr "ped_device_new() Tipe perangkat tidak disupport"
+
+#: libparted/arch/linux.c:1518 libparted/arch/linux.c:1590
+#, c-format
+msgid "Error fsyncing/closing %s: %s"
+msgstr "Error fsyncing/menutup %s: %s"
+
+#: libparted/arch/linux.c:1754
+#, c-format
+msgid "end of file while reading %s"
+msgstr "akhir dari berkas ketika membaca %s"
+
+#: libparted/arch/linux.c:2390
+#, c-format
+msgid ""
+"Error informing the kernel about modifications to partition %s -- %s.  This "
+"means Linux won't know about any changes you made to %s until you reboot -- "
+"so you shouldn't mount it or use it in any way before rebooting."
+msgstr ""
+"Gagal memberitahukan kernel mengenai modifikasi yang telah dilakukan pada "
+"partisi %s -- %s. Ini berarti Linux tidak tahu tentang segala perubahan yang "
+"anda buat pada %s sampai anda mereboot komputer anda -- jadi anda seharusnya "
+"tidak me-mount-nya atau menggunakannya dalam segala cara sebelum mereboot "
+"komputer anda."
+
+#: libparted/arch/linux.c:2528
+#, fuzzy, c-format
+msgid "Unable to determine the size and length of %s."
+msgstr "Tidak dapat menentukan ukuran dari %s (%s)."
+
+#: libparted/arch/linux.c:2553
+#, fuzzy, c-format
+msgid "Failed to add partition %d (%s)"
+msgstr "%s : Gagal untuk menbaca blok partisi %llu\n"
+
+#: libparted/arch/linux.c:2580
+#, c-format
+msgid ""
+"Partition(s) %s on %s have been written, but we have been unable to inform "
+"the kernel of the change, probably because it/they are in use.  As a result, "
+"the old partition(s) will remain in use.  You should reboot now before "
+"making further changes."
+msgstr ""
+
+#: libparted/arch/linux.c:2706
+#, c-format
+msgid ""
+"parted was unable to re-read the partition table on %s (%s).  This means "
+"Linux won't know anything about the modifications you made. "
+msgstr ""
+"parted tidak dapat membaca kembali tabel partisi pada %s (%s). Ini berarti "
+"Linux tidak akan tahu apapun tentang modifikasi yang telah anda buat."
+
+#: libparted/cs/geom.c:161
+#, c-format
+msgid "Can't have the end before the start! (start sector=%jd length=%jd)"
+msgstr ""
+"Tidak dapat memiliki akhir sebelum start! (sektor start=%jd panjang=%jd)"
+
+#: libparted/cs/geom.c:169
+msgid "Can't have a partition outside the disk!"
+msgstr "Tidak dapat memiliki partisi diluar dari disk!"
+
+#: libparted/cs/geom.c:384
+#, c-format
+msgid "Attempt to write sectors %ld-%ld outside of partition on %s."
+msgstr "Mencoba untuk menulis sektor %ld-%ld diluar dari partisi pada %s."
+
+#: libparted/cs/geom.c:424
+msgid "checking for bad blocks"
+msgstr "Mengecheck bad blocks"
+
+#: libparted/debug.c:96
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr "Backtrace memiliki %d panggilan di stack:\n"
+
+#: libparted/debug.c:109
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr "Assertion (%s) di %s:%d dalam fungsi %s() gagal."
+
+#: libparted/disk.c:192
+#, c-format
+msgid "%s: unrecognised disk label"
+msgstr "%s: label cakram tidak dikenal"
+
+#: libparted/disk.c:484
+#, c-format
+msgid ""
+"This libparted doesn't have write support for %s.  Perhaps it was compiled "
+"read-only."
+msgstr ""
+"libparted ini tidak memiliki write support untuk %s. Mungkin ini dikompilasi "
+"untuk mode read-only."
+
+#: libparted/disk.c:629
+#, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "Partisi %d adalah %s, tetapi file system-nya adalah %s."
+
+#: libparted/disk.c:838
+msgid "cylinder_alignment"
+msgstr "penyesuaian_silinder"
+
+#: libparted/disk.c:844
+#, c-format
+msgid "Unknown disk flag, %d."
+msgstr "tanda disk tidak diketahui, %d."
+
+#: libparted/disk.c:1283
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "%s disk label tidak mensupport partisi extended."
+
+#: libparted/disk.c:1858
+#, c-format
+msgid "%s disk labels don't support logical or extended partitions."
+msgstr "%s disk labels tidak mensupport partisi logical atau extended."
+
+#: libparted/disk.c:1871
+msgid "Too many primary partitions."
+msgstr "Terlalu banyak primary partisi."
+
+#: libparted/disk.c:1880
+#, c-format
+msgid ""
+"Can't add a logical partition to %s, because there is no extended partition."
+msgstr ""
+"Tidak dapat menambahkan sebuah partisi logical pada %s, karena disana tidak "
+"ada partisi extended."
+
+#: libparted/disk.c:1904
+#, c-format
+msgid "Can't have more than one extended partition on %s."
+msgstr "Tidak dapat memiliki lebih dari satu partisi extended pada %s."
+
+#: libparted/disk.c:1914
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr "Tidak dapat memiliki partisi logical diluar dari partisi extended."
+
+#: libparted/disk.c:1939
+#, c-format
+msgid "Can't have a logical partition outside of the extended partition on %s."
+msgstr "Tidak dapat memiliki partisi logical diluar partisi extended pada %s."
+
+#: libparted/disk.c:1949 libparted/disk.c:2008 libparted/disk.c:2186
+msgid "Can't have overlapping partitions."
+msgstr "Tidak dapat memiliki partisi yang beroverlap."
+
+#: libparted/disk.c:1957
+msgid "Can't have a primary partition inside an extended partition."
+msgstr "Tidak dapat memiliki primary partisi didalam sebuah partisi extended."
+
+#: libparted/disk.c:2387
+msgid "metadata"
+msgstr "metadata"
+
+#: libparted/disk.c:2389
+msgid "free"
+msgstr "free"
+
+#: libparted/disk.c:2391 parted/ui.c:1194 parted/ui.c:1222
+msgid "extended"
+msgstr "extended"
+
+#: libparted/disk.c:2393 parted/ui.c:1198 parted/ui.c:1226
+msgid "logical"
+msgstr "logical"
+
+#: libparted/disk.c:2395 parted/ui.c:1190 parted/ui.c:1218
+msgid "primary"
+msgstr "primary"
+
+#: libparted/disk.c:2411
+msgid "boot"
+msgstr "boot"
+
+#: libparted/disk.c:2413
+msgid "bios_grub"
+msgstr "bios_grub"
+
+#: libparted/disk.c:2415
+msgid "root"
+msgstr "root"
+
+#: libparted/disk.c:2417
+msgid "swap"
+msgstr "swap"
+
+#: libparted/disk.c:2419
+msgid "hidden"
+msgstr "tersembunyi"
+
+#: libparted/disk.c:2421
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2423
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2425
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2427
+msgid "hp-service"
+msgstr "hp-service"
+
+#: libparted/disk.c:2429
+msgid "palo"
+msgstr "palo"
+
+#: libparted/disk.c:2431
+msgid "prep"
+msgstr "prep"
+
+#: libparted/disk.c:2433
+msgid "msftres"
+msgstr "msftres"
+
+#: libparted/disk.c:2435
+msgid "atvrecv"
+msgstr "atvrecv"
+
+#: libparted/disk.c:2437
+msgid "diag"
+msgstr ""
+
+#: libparted/disk.c:2439
+msgid "legacy_boot"
+msgstr ""
+
+#: libparted/disk.c:2445
+#, c-format
+msgid "Unknown partition flag, %d."
+msgstr "flag partisi tidak diketahui, %d."
+
+#: libparted/exception.c:77
+msgid "Information"
+msgstr "Informasi"
+
+#: libparted/exception.c:78
+msgid "Warning"
+msgstr "Peringatan"
+
+#: libparted/exception.c:79
+msgid "Error"
+msgstr "Error"
+
+#: libparted/exception.c:80
+msgid "Fatal"
+msgstr "Fatal"
+
+#: libparted/exception.c:81
+msgid "Bug"
+msgstr "Bug"
+
+#: libparted/exception.c:82
+msgid "No Implementation"
+msgstr "Tidak ada Implementasi"
+
+#: libparted/exception.c:86
+msgid "Fix"
+msgstr "Betulkan"
+
+#: libparted/exception.c:87
+msgid "Yes"
+msgstr "Ya"
+
+#: libparted/exception.c:88
+msgid "No"
+msgstr "Tidak"
+
+#: libparted/exception.c:89
+msgid "OK"
+msgstr "OK"
+
+#: libparted/exception.c:90
+msgid "Retry"
+msgstr "Coba"
+
+#: libparted/exception.c:91
+msgid "Ignore"
+msgstr "Hiraukan"
+
+#: libparted/exception.c:92
+msgid "Cancel"
+msgstr "Batal"
+
+#: libparted/exception.c:132
+#, fuzzy, c-format
+msgid ""
+"A bug has been detected in GNU Parted.  Refer to the web site of parted "
+"http://www.gnu.org/software/parted/parted.html for more information of what "
+"could be useful for bug submitting!  Please email a bug report to %s "
+"containing at least the version (%s) and the following message:  "
+msgstr ""
+"Sebuah bug telah terdeteksi dalam GNU parted. Lihat ke web site dari parted "
+"di http://www.gnu.org/software/parted/parted.html untuk informasi lebih "
+"lanjut tentang apa yang berguna dalam mengirimkan laporan bug! Tolong email "
+"laporan bug ke bug-parted@gnu.org berisi setidaknya versi (%s) dan pesan "
+"berikut ini:"
+
+#: libparted/labels/aix.c:103
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr "Support untuk membaca AIX disk label belum diimplementasikan."
+
+#: libparted/labels/aix.c:114
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr "Support untuk menulis AIX disk label belum diimplementasikan."
+
+#: libparted/labels/aix.c:127
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr ""
+"Support untuk menambah partisi di AIX disk label belum diimplementasikan."
+
+#: libparted/labels/aix.c:137
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr ""
+"Support untuk menduplikasi partisi di AIX disk label belum diimplementasikan."
+
+#: libparted/labels/aix.c:155
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr ""
+"Support untuk menset tipe partisi sistem di AIX disk label belum "
+"diimplementasikan."
+
+#: libparted/labels/aix.c:165
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr "Support untuk menset tanda di AIX disk label belum diimplementasikan."
+
+#: libparted/labels/bsd.c:571 libparted/labels/dasd.c:833
+#: libparted/labels/dos.c:2176 libparted/labels/dvh.c:787
+#: libparted/labels/gpt.c:1782 libparted/labels/loop.c:247
+#: libparted/labels/mac.c:1426 libparted/labels/pc98.c:748
+#: libparted/labels/rdb.c:1052 libparted/labels/sun.c:780
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "Tidak dapat memenuhi semua constraints pada partisi."
+
+#: libparted/labels/bsd.c:596
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "Tidak dapat mengalokasikan sebuah slot untuk bsd disklabel."
+
+#: libparted/labels/dasd.c:859
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "Tidak dapat mengalokasikan sebuah DASD slot disklabel."
+
+#: libparted/labels/dos.c:966
+#, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr "Table partisi tidak valid pada %s -- signature salah %x."
+
+#: libparted/labels/dos.c:994
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "Table partisi tidak valid - rekursif partisi pada %s."
+
+#: libparted/labels/dos.c:1504
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr "Partisi extended tidak dapat disembunyikan pada msdos disk labels."
+
+#: libparted/labels/dos.c:2158
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+"Parted tidak dapat men-resize partisi yang diatur oleh Windows Dynamic Disk."
+
+#: libparted/labels/dvh.c:200
+#, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr "%s tidak memiliki partisi extended (volume header partisi)."
+
+#: libparted/labels/dvh.c:326
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr "Checksum salah, mengindikasikan bahwa tabel partisi corrupt."
+
+#: libparted/labels/dvh.c:631
+msgid "Only primary partitions can be root partitions."
+msgstr "Hanya primary partisi yang dapat menjadi partisi root."
+
+#: libparted/labels/dvh.c:645
+msgid "Only primary partitions can be swap partitions."
+msgstr "Hanya primary partisi yang dapat menjadi partisi swap."
+
+#: libparted/labels/dvh.c:659
+msgid "Only logical partitions can be a boot file."
+msgstr "Hanya logical partisi yang dapat menjadi boot file."
+
+#: libparted/labels/dvh.c:736
+#, c-format
+msgid ""
+"failed to set dvh partition name to %s:\n"
+"Only logical partitions (boot files) have a name."
+msgstr ""
+"gagal mengatur nama partisi dvh ke %s:\n"
+"Hanya logical partisi (boot files) yang memiliki nama."
+
+#: libparted/labels/dvh.c:829
+msgid "Too many primary partitions"
+msgstr "Terlalu banyak primary partisi"
+
+#: libparted/labels/fdasd.c:98
+msgid "open error"
+msgstr "gagal membuka"
+
+#: libparted/labels/fdasd.c:101
+msgid "seek error"
+msgstr "gagal mencari"
+
+#: libparted/labels/fdasd.c:104
+msgid "read error"
+msgstr "gagal menulis"
+
+#: libparted/labels/fdasd.c:110
+msgid "ioctl() error"
+msgstr "gagal ioctl()"
+
+#: libparted/labels/fdasd.c:114
+msgid "API version mismatch"
+msgstr "versi API tidak cocok"
+
+#: libparted/labels/fdasd.c:118
+msgid "Unsupported disk type"
+msgstr "Tipe disk tidak disupport"
+
+#: libparted/labels/fdasd.c:122
+msgid "Unsupported disk format"
+msgstr "Format disk tidak disupport"
+
+#: libparted/labels/fdasd.c:126
+msgid "Disk is in use"
+msgstr "Disk sedang digunakan"
+
+#: libparted/labels/fdasd.c:130
+msgid "Syntax error in config file"
+msgstr "Galat sintaks di berkas konfigurasi"
+
+#: libparted/labels/fdasd.c:134
+msgid "Volume label is corrupted"
+msgstr "Volume label terkorupsi"
+
+#: libparted/labels/fdasd.c:138
+msgid "A data set name is corrupted"
+msgstr "Sebuah nama data set terkorupsi"
+
+#: libparted/labels/fdasd.c:142
+msgid "Memory allocation failed"
+msgstr "Alokasi memori gagal"
+
+#: libparted/labels/fdasd.c:146
+msgid "Device verification failed"
+msgstr "Verifikasi perangkat telah gagal"
+
+#: libparted/labels/fdasd.c:147
+msgid "The specified device is not a valid DASD device"
+msgstr "Perangkat yang dimaksud tidak memiliki perangkat DASD yang valid"
+
+#: libparted/labels/fdasd.c:150 libparted/labels/vtoc.c:179
+msgid "Fatal error"
+msgstr "Error fatal"
+
+#: libparted/labels/fdasd.c:226
+msgid "No room for volume label."
+msgstr "Tak ada ruang untuk label volume."
+
+#: libparted/labels/fdasd.c:234
+msgid "No room for partition info."
+msgstr "Tak ada ruang untuk info partisi."
+
+#: libparted/labels/fdasd.c:709
+msgid "Invalid VTOC."
+msgstr "VTOC tidak valid."
+
+#: libparted/labels/fdasd.c:766
+msgid "Could not retrieve API version."
+msgstr "Tidak dapat menerima versi API."
+
+#: libparted/labels/fdasd.c:769
+#, c-format
+msgid ""
+"The current API version '%d' doesn't match dasd driver API version '%d'!"
+msgstr ""
+"Versi API saat ini '%d' tidak cocok dengan versi API penggerak dasd '%d'!"
+
+#: libparted/labels/fdasd.c:806
+msgid "Could not retrieve disk geometry information."
+msgstr "Tak dapat menerima informasi geometri cakram."
+
+#: libparted/labels/fdasd.c:810
+msgid "Could not retrieve blocksize information."
+msgstr "Tak dapat menerima infomrasi ukuran blok."
+
+#: libparted/labels/fdasd.c:815
+msgid "Could not retrieve disk information."
+msgstr "Tak dapat menerima informasi cakram."
+
+#: libparted/labels/gpt.c:493
+#, c-format
+msgid ""
+"%s contains GPT signatures, indicating that it has a GPT table.  However, it "
+"does not have a valid fake msdos partition table, as it should.  Perhaps it "
+"was corrupted -- possibly by a program that doesn't understand GPT partition "
+"tables.  Or perhaps you deleted the GPT table, and are now using an msdos "
+"partition table.  Is this a GPT partition table?"
+msgstr ""
+"%s berisi GPT signatures, menunjukkan bahwa ini adalah tabel GPT. Akan "
+"tetapi, ini tidak memiliki valid fake msdos tabel partisi, seperti "
+"seharusnya. Mungkin ini sudah terkorupsi -- mungkin oleh program yang tidak "
+"mengerti tabel partisi GPT. Atau mungkin anda menghapus tabel GPT, dan "
+"sekarang menggunakan sebuah tabel partisi msdos. Apakah ini sebuah tabel "
+"partisi GPT?"
+
+#: libparted/labels/gpt.c:693
+#, fuzzy, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise.  Please report this!"
+msgstr ""
+"Format dari tabel partisi GPT adalah dari versi %x, dimana ini lebih baru "
+"dari format yang Parted dapat mengenalnya. Tolong beritahu kami! bug-"
+"parted@gnu.org"
+
+#: libparted/labels/gpt.c:740
+#, c-format
+msgid ""
+"Not all of the space available to %s appears to be used, you can fix the GPT "
+"to use all of the space (an extra %llu blocks) or continue with the current "
+"setting? "
+msgstr ""
+"Tidak semua dari ruang kosong yang tersedia di %s dapat digunakan, anda "
+"dapat membetulkan GPT untuk menggunakan semuar ruang kosong yang tersedia "
+"(kosong %llu blocks) atau melanjutkan dengan konfigurasi saat ini?"
+
+#: libparted/labels/gpt.c:952
+msgid ""
+"The backup GPT table is not at the end of the disk, as it should be.  This "
+"might mean that another operating system believes the disk is smaller.  Fix, "
+"by moving the backup to the end (and removing the old backup)?"
+msgstr ""
+"Tabel GPT backup tidak ada pada akhir dari disk, seperti seharusnya ada "
+"disana. Ini mungkin berarti sistem operasi lain percaya bahwa ukuran disk "
+"lebih kecil. Betulkan, dengan memindahkan tabel backup ke akhir dari disk "
+"(dan menghapus backup yang lama)?"
+
+#: libparted/labels/gpt.c:976
+msgid ""
+"Both the primary and backup GPT tables are corrupt.  Try making a fresh "
+"table, and using Parted's rescue feature to recover partitions."
+msgstr ""
+"Kedua tabel GPT primer dan backup sudah terkorupsi. Coba untuk membuat "
+"sebuah tabel yang baru, dan gunakan Parted's rescue feature untuk merecover "
+"partisi."
+
+#: libparted/labels/gpt.c:987
+msgid ""
+"The backup GPT table is corrupt, but the primary appears OK, so that will be "
+"used."
+msgstr ""
+"Tabel GPT cadangan telah terkorupsi, tetapi yang utama kelihatan BAIK, jadi "
+"ini yang akan digunakan"
+
+#: libparted/labels/gpt.c:999
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr ""
+"Tabel GPT primer telah terkorupsi, tetapi backup-nya kelihatan BAIK, jadi "
+"ini yang akan digunakan"
+
+#: libparted/labels/gpt.c:1023
+msgid "primary partition table array CRC mismatch"
+msgstr "kumpulan CRC tabel partisi utama tidak cocok"
+
+#: libparted/labels/mac.c:184
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Signature tidak valid %x untuk disklabels Mac."
+
+#: libparted/labels/mac.c:231
+msgid "Partition map has no partition map entry!"
+msgstr "Map partisi tidak memiliki masukan untuk map partisi!"
+
+#: libparted/labels/mac.c:279
+#, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr "%s terlalu kecil untuk sebuah disklabel Mac!"
+
+#: libparted/labels/mac.c:508
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "Partisi %d memiliki signature yang tidak valid %x."
+
+#: libparted/labels/mac.c:526
+#, c-format
+msgid "Partition %d has an invalid length of 0 bytes!"
+msgstr "Partisi %d memiliki panjang 0 bytes yang tidak valid!"
+
+#: libparted/labels/mac.c:557
+msgid "The data region doesn't start at the start of the partition."
+msgstr "Daerah data tidak dimulai pada awal dari partisi."
+
+#: libparted/labels/mac.c:574
+msgid "The boot region doesn't start at the start of the partition."
+msgstr "Daerah boot tidak dimulai pada awal dari partisi."
+
+#: libparted/labels/mac.c:588
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr "Daerah boot partisi tidak menggunakan seluruh partisi."
+
+#: libparted/labels/mac.c:599
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr "Daerah data partisi tidak menggunakan seluruh partisi."
+
+#: libparted/labels/mac.c:652
+#, c-format
+msgid ""
+"Weird block size on device descriptor: %d bytes is not divisible by 512."
+msgstr ""
+"Ukuran block aneh pada deskripsi perangkat: %d bytes tidak terbagi oleh 512."
+
+#: libparted/labels/mac.c:665
+#, c-format
+msgid ""
+"The driver descriptor says the physical block size is %d bytes, but Linux "
+"says it is %d bytes."
+msgstr ""
+"driver descriptor mengatakan bahwa ukuran physical block adalah %d bytes, "
+"tetapi Linux mengatakan ukurannya %d bytes."
+
+#: libparted/labels/mac.c:719
+msgid "No valid partition map found."
+msgstr "Tidak ditemukan map partisi yang valid."
+
+#: libparted/labels/mac.c:780
+#, c-format
+msgid ""
+"Conflicting partition map entry sizes!  Entry 1 says it is %d, but entry %d "
+"says it is %d!"
+msgstr ""
+"Konflik masukan ukuran peta partisi! Masukan 1 mengatakan %d, tetapi "
+"masukan  %d mengatakan %d!"
+
+#: libparted/labels/mac.c:811
+msgid "Weird!  There are 2 partitions map entries!"
+msgstr "Aneh!  Ada 2 masukan map partisi!"
+
+#: libparted/labels/mac.c:1357
+msgid ""
+"Changing the name of a root or swap partition will prevent Linux from "
+"recognising it as such."
+msgstr ""
+"Mengubah nama dari root atau partisi swap akan membuat Linux tidak dapat "
+"mengenalinya."
+
+#: libparted/labels/mac.c:1461
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr "Tidak dapat lagi menambah partisi -- peta partisi terlalu kecil!"
+
+#: libparted/labels/pc98.c:331
+#, c-format
+msgid "Invalid partition table on %s."
+msgstr "Tabel partisi tidak valid pada %s."
+
+#: libparted/labels/pc98.c:384 libparted/labels/pc98.c:462
+#, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries.  This is still "
+"unsupported."
+msgstr ""
+"Partisi %d tidak di align ke cylinder boundaries. Ini tetap tidak disupport"
+
+#: libparted/labels/pc98.c:780
+msgid "Can't add another partition."
+msgstr "Tidak dapat menambah partisi yang lain."
+
+#: libparted/labels/pt-tools.c:125
+#, c-format
+msgid ""
+"partition length of %jd sectors exceeds the %s-partition-table-imposed "
+"maximum of %jd"
+msgstr ""
+"panjang partisi dari sektor %jd melampaui %s-partition-table-imposed "
+"maksimum dari %jd"
+
+#: libparted/labels/pt-tools.c:138
+#, c-format
+msgid ""
+"starting sector number, %jd exceeds the %s-partition-table-imposed maximum "
+"of %jd"
+msgstr ""
+"memulai penomoran sektor, %jd melampaui %s-partition-table-imposed maksimum "
+"dari %jd"
+
+#: libparted/labels/rdb.c:169
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr "%s : Checksum pada block %llu dengan tipe %s tidak baik."
+
+#: libparted/labels/rdb.c:484
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr "%s : Tidak menemukan rdb block, seharusnya tidak pernah terjadi."
+
+#: libparted/labels/rdb.c:573
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr "%s : Loop terdeteksi pada block %d."
+
+#: libparted/labels/rdb.c:592
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr "%s : List %s kelihatannya tidak baik pada block %s."
+
+#: libparted/labels/rdb.c:691
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr "%s : Gagal untuk men-list bad blocks."
+
+#: libparted/labels/rdb.c:699
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr "%s : Gagal untuk men-list block partisi."
+
+#: libparted/labels/rdb.c:707
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr "%s : Gagal untuk men-list file system blocks."
+
+#: libparted/labels/rdb.c:715
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr "%s : Gagal untuk men-list boot blocks."
+
+#: libparted/labels/rdb.c:742
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr "Gagal untuk menulis block partisi pada %d."
+
+#: libparted/labels/rdb.c:1080
+msgid "Unable to allocate a partition number."
+msgstr "Tidak dapat mengalokasikan sebuah nomor partisi."
+
+#: libparted/labels/sun.c:161
+msgid "Corrupted Sun disk label detected."
+msgstr "Sun disk label terdeteksi terkorupsi."
+
+#: libparted/labels/sun.c:276
+#, c-format
+msgid ""
+"The disk CHS geometry (%d,%d,%d) reported by the operating system does not "
+"match the geometry stored on the disk label (%d,%d,%d)."
+msgstr ""
+"Geometri CHS dari disk (%d,%d,%d) dilaporkan oleh sistem operasi tidak cocok "
+"dengan geometri yang disimpan pada disk label (%d,%d,%d)."
+
+#: libparted/labels/sun.c:298
+#, c-format
+msgid "The disk label describes a disk bigger than %s."
+msgstr "Disk label mendeskripsikan disk lebih besar dari %s."
+
+#: libparted/labels/sun.c:473
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr ""
+"Disk memiliki %d cylinders, dimana ini lebih besar dari maksimum 65536."
+
+#: libparted/labels/sun.c:812
+msgid ""
+"The Whole Disk partition is the only available one left.  Generally, it is "
+"not a good idea to overwrite this partition with a real one.  Solaris may "
+"not be able to boot without it, and SILO (the sparc boot loader) appreciates "
+"it as well."
+msgstr ""
+"Yang tersisa hanya seluruh partisi Disk. Umumnya, ini bukan ide yang baik "
+"untuk menulis kembali partisi ini dengan yang nyata. Solaris mungkin tidak "
+"dapat di-boot tanpanya, dan SILO (boot loader untuk SPARC) menghargainya "
+"dengan baik."
+
+#: libparted/labels/sun.c:827
+msgid "Sun disk label is full."
+msgstr "Sun disk label sudah penuh"
+
+#: libparted/labels/vtoc.c:164
+msgid "opening of device failed"
+msgstr "gagal membuka perangkat"
+
+#: libparted/labels/vtoc.c:168
+msgid "seeking on device failed"
+msgstr "pencarian perangkat gagal"
+
+#: libparted/labels/vtoc.c:172
+msgid "writing to device failed"
+msgstr "gagal menulis ke perangkat"
+
+#: libparted/labels/vtoc.c:176
+msgid "reading from device failed"
+msgstr "gagal membaca dari perangkat"
+
+#: libparted/labels/vtoc.c:299 libparted/labels/vtoc.c:308
+#: libparted/labels/vtoc.c:329 libparted/labels/vtoc.c:336
+msgid "Could not read volume label."
+msgstr "Tidak dapat membaca label volume."
+
+#: libparted/labels/vtoc.c:356 libparted/labels/vtoc.c:363
+msgid "Could not write volume label."
+msgstr "Tidak dapat menulis label volume."
+
+#: libparted/labels/vtoc.c:469
+msgid "Could not read VTOC labels."
+msgstr "Tidak dapat membaca label VTOC"
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr "Tidak dapat membaca VTOC FMT1 DSCB."
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr "Tidak dapat membaca VTOC FMT4 DSCB."
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr "Tidak dapat membaca VTOC FMT5 DSCB."
+
+#: libparted/labels/vtoc.c:496
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr "Tidak dapat membaca VTOC FMT7 DSCB."
+
+#: libparted/labels/vtoc.c:516
+msgid "Could not write VTOC labels."
+msgstr "Tidak dapat menulis label VTOC."
+
+#: libparted/labels/vtoc.c:522
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr "Tidak dapat menulis VTOC FMT1 DSCB."
+
+#: libparted/labels/vtoc.c:529
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr "Tidak dapat menulis VTOC FMT4 DSCB."
+
+#: libparted/labels/vtoc.c:536
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr "Tidak dapat menulis VTOC FMT5 DSCB."
+
+#: libparted/labels/vtoc.c:543
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr "Tidak dapat menulis VTOC FMT7 DSCB."
+
+#: libparted/libparted.c:230 libparted/libparted.c:245
+msgid "Out of memory."
+msgstr "Kehabisan memori"
+
+#: libparted/unit.c:138
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr "Tidak dapat mendapatkan ukuran unit untuk spesial unit 'COMPAT'."
+
+#: libparted/unit.c:384
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr "\"%s\" memiliki syntax yang tidak valid untuk lokasi."
+
+#: libparted/unit.c:392
+#, c-format
+msgid "The maximum head value is %d."
+msgstr "Nilai head maksimum adalah %d."
+
+#: libparted/unit.c:399
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr "Nilai maksimum dari sektor adalah %d."
+
+#: libparted/unit.c:411 libparted/unit.c:556
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr "Lokasi %s terletak diluar dari perangkat %s."
+
+#: libparted/unit.c:531
+msgid "Invalid number."
+msgstr "nomor tidak valid."
+
+#: libparted/fs/amiga/affs.c:62 libparted/fs/amiga/apfs.c:55
+#: libparted/fs/amiga/asfs.c:69
+#, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "%s : Gagal untuk mengalokasikan blok partisi\n"
+
+#: libparted/fs/amiga/affs.c:77 libparted/fs/amiga/apfs.c:68
+#: libparted/fs/amiga/asfs.c:81
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr "%s : Gagal untuk mengalokasikan blok\n"
+
+#: libparted/fs/amiga/affs.c:82 libparted/fs/amiga/apfs.c:73
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr "%s : Tidak dapat membaca boot blok %llu\n"
+
+#: libparted/fs/amiga/affs.c:98 libparted/fs/amiga/apfs.c:84
+#: libparted/fs/amiga/asfs.c:87 libparted/fs/amiga/asfs.c:101
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr "%s : Tidak dapat membaca root blok %llu\n"
+
+#: libparted/fs/amiga/amiga.c:71
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr "%s : Gagal mengalokasikan id elemen list\n"
+
+#: libparted/fs/amiga/amiga.c:188
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr "%s : Tidak dapat membaca blok %llu\n"
+
+#: libparted/fs/amiga/amiga.c:201
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr "%s : Checksum pada block %llu dengan tipe %s tidak baik\n"
+
+#: libparted/fs/amiga/amiga.c:211
+#, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s : Tidak dapat menulis blok %d\n"
+
+#: libparted/fs/amiga/amiga.c:277
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr "%s : Gagal untuk mengalokasikan disk_specific rdb blok\n"
+
+#: libparted/fs/amiga/amiga.c:288
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr "%s : Tidak dapa menemukan rdb blok, seharusnya tidak pernah terjadi\n"
+
+#: libparted/fs/amiga/amiga.c:317
+#, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr "%s : Gagal untuk menbaca blok partisi %llu\n"
+
+#: libparted/fs/fat/fat.c:174
+msgid ""
+"GNU Parted was miscompiled: the FAT boot sector should be 512 bytes.  FAT "
+"support will be disabled."
+msgstr ""
+"GNU Parted telah salah dikompile: FAT boot sektor seharusnya 512 bytes. FAT "
+"support akan di nonaktifkan."
+
+#: libparted/fs/fat/bootsector.c:49 libparted/fs/fat/bootsector.c:56
+msgid "File system has an invalid signature for a FAT file system."
+msgstr ""
+"File system memiliki sebuah signature yang tidak valid untuk sebuah FAT file "
+"system."
+
+#: libparted/fs/fat/bootsector.c:64
+msgid "File system has an invalid sector size for a FAT file system."
+msgstr ""
+"File system memiliki ukuran sektor yang tidak valid untuk sebuah FAT file "
+"system."
+
+#: libparted/fs/fat/bootsector.c:71
+msgid "File system has an invalid cluster size for a FAT file system."
+msgstr ""
+"File system memiliki ukuran cluster yang tidak valid untuk file system FAT."
+
+#: libparted/fs/fat/bootsector.c:78
+msgid ""
+"File system has an invalid number of reserved sectors for a FAT file system."
+msgstr ""
+"File system memiliki nomor yang tidak valid untuk reserverd sector dari "
+"sebuah FAT file system."
+
+#: libparted/fs/fat/bootsector.c:85
+msgid "File system has an invalid number of FATs."
+msgstr "File system memiliki nomor yang tidak valid untuk FATs."
+
+#: libparted/fs/fat/bootsector.c:156
+#, c-format
+msgid ""
+"This file system has a logical sector size of %d.  GNU Parted is known not "
+"to work properly with sector sizes other than 512 bytes."
+msgstr ""
+"File system ini memiliki sektor logical yang berukuran %d. GNU Parted tidak "
+"bekerja dengan baik dengan ukuran sektor selain 512 bytes."
+
+#: libparted/fs/fat/bootsector.c:181
+#, c-format
+msgid ""
+"The file system's CHS geometry is (%d, %d, %d), which is invalid.  The "
+"partition table's CHS geometry is (%d, %d, %d).  If you select Ignore, the "
+"file system's CHS geometry will be left unchanged.  If you select Fix, the "
+"file system's CHS geometry will be set to match the partition table's CHS "
+"geometry."
+msgstr ""
+"File system's CHS geometry adalah (%d, %d, %d), ini tidak valid. Tabel "
+"partisi dari CHS geometry adalah (%d, %d, %d). Jika anda memilih Ignore, "
+"file system's CHS geometry akan ditinggalkan tanpa diubah. Jika anda memilih "
+"Betulkan, file system CHS geomtry akan diset sehingga cocok dengan tabel "
+"partisi dari CHS geometry."
+
+#: libparted/fs/fat/bootsector.c:230
+msgid "FAT boot sector says logical sector size is 0.  This is weird. "
+msgstr "FAT boot sector mengatakan ukuran sektor logical adalah 0. Ini aneh"
+
+#: libparted/fs/fat/bootsector.c:236
+msgid "FAT boot sector says there are no FAT tables.  This is weird. "
+msgstr "FAT boot sector mengatakan disana tidak ada tabel FAT. Ini aneh."
+
+#: libparted/fs/fat/bootsector.c:242
+msgid "FAT boot sector says clusters are 0 sectors.  This is weird. "
+msgstr "FAT boot sector mengatakan clusters adalah 0 sectors. Ini aneh."
+
+#: libparted/fs/fat/bootsector.c:252
+msgid "File system is FAT12, which is unsupported."
+msgstr "File system adalah FAT12, dimana file system ini tidak disupport."
+
+#: libparted/fs/fat/bootsector.c:428
+#, c-format
+msgid ""
+"The information sector has the wrong signature (%x).  Select cancel for now, "
+"and send in a bug report.  If you're desperate, it's probably safe to ignore."
+msgstr ""
+"Informasi sektor memiliki signature (%x) yang salah. Pilih cancel sekarang, "
+"dan kirim dalam laporan bug. Jika anda putus asa, mungkin lebih aman untuk "
+"menghiraukannya."
+
+#: libparted/fs/linux_swap/linux_swap.c:247
+#, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "Tipe linux swap signature lama tidak diketahui '%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:290
+#, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "Tipe linux swap signature baru tidak diketahui '%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:330
+#, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Tipe linux swap signature swsusp tidak diketahui '%9s'."
+
+#: libparted/fs/hfs/probe.c:50
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to "
+"%d bytes."
+msgstr ""
+"Parted tidak dapat menggunakan file systems tipe HFS di dist dengan ukuran "
+"sektor tidak sama dengan %d bytes."
+
+#: parted/parted.c:123
+msgid "displays this help message"
+msgstr "tampilkan pesan bantuan ini"
+
+#: parted/parted.c:124
+msgid "lists partition layout on all block devices"
+msgstr "tampilkan layout partisi di seluruh perangkat blok"
+
+#: parted/parted.c:125
+msgid "displays machine parseable output"
+msgstr "tampilkan keluaran mesin yang dapat diinputkan (parseable)"
+
+#: parted/parted.c:126
+msgid "never prompts for user intervention"
+msgstr "jangan menanyakan intervensi pengguna"
+
+#: parted/parted.c:127
+msgid "displays the version"
+msgstr "tampilkan versi dari program ini"
+
+#: parted/parted.c:128
+msgid "alignment for new partitions"
+msgstr "penyesuaian untuk partisi baru"
+
+#: parted/parted.c:140
+msgid ""
+"NUMBER is the partition number used by Linux.  On MS-DOS disk labels, the "
+"primary partitions number from 1 to 4, logical partitions from 5 onwards.\n"
+msgstr ""
+"NOMOR adalah nomor partisi yang biasa digunakan oleh Linux. Pada MS-DOS disk "
+"label, penomoran partisi utama (primary) dari 1 sampai 4, partisi logical "
+"dari 5 keatas.\n"
+
+#: parted/parted.c:143
+msgid "LABEL-TYPE is one of: "
+msgstr "TIPE-LABEL adalah salah satu dari: "
+
+#: parted/parted.c:144
+msgid "FLAG is one of: "
+msgstr "TANDA adalah salah satu dari: "
+
+#: parted/parted.c:145
+msgid "UNIT is one of: "
+msgstr "SATUAN adalah salah satu dari: "
+
+#: parted/parted.c:146
+msgid "desired alignment: minimum or optimal"
+msgstr "penyesuaian yang diinginkan: minimal atau optimal"
+
+#: parted/parted.c:147
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "TIPE-PART adalah salah satu dari: primary, logical, extended\n"
+
+#: parted/parted.c:149
+msgid "FS-TYPE is one of: "
+msgstr "TIPE-FS adalah salah satu dari: "
+
+#: parted/parted.c:150
+msgid ""
+"START and END are disk locations, such as 4GB or 10%.  Negative values count "
+"from the end of the disk.  For example, -1s specifies exactly the last "
+"sector.\n"
+msgstr ""
+"AWAL dan AKHIR adalah lokasi dari disk, seperti 4GB atau 10%. Nilai negatif "
+"dihitung dari akhir alamat disk. sebagai contoh, =-1s menyatakan lokasi "
+"sektor terakhir.\n"
+
+#: parted/parted.c:153
+msgid "STATE is one of: on, off\n"
+msgstr "STATUS adalah salah satu dari: on, off\n"
+
+#: parted/parted.c:154
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "PERANGKAT biasanya menggunakan nama /dev/hda atau /dev/sda\n"
+
+#: parted/parted.c:155
+msgid "NAME is any word you want\n"
+msgstr "NAMA adalah kata apapun yang anda inginkan\n"
+
+#: parted/parted.c:158
+msgid ""
+"Copyright (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"This program is free software, covered by the GNU General Public License.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+msgstr ""
+"Hak Cipta (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"Aplikasi ini adalah free software, dilindungi oleh GNU General Public "
+"Licence.\n"
+"\n"
+"Aplikasi ini didistribusikan dengan harapan akan berguna,\n"
+"tetapi TANPA ADANYA GARANSI; bahkan untuk garansi dalam hal\n"
+"PENJUALAN atau KESESUAIAN UNTUK TUJUAN TERTENTU. Lihat\n"
+"GNU General Public License untuk informasi yang lebih detail.\n"
+"\n"
+
+#: parted/parted.c:204
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(waktu tersisa %.2d:%.2d)"
+
+#: parted/parted.c:223
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+"Partisi %s sedang digunakan. Anda harus meng-umount terlebih dahulu sebelum "
+"memodifikasinya dengan menggunakan Parted."
+
+#: parted/parted.c:241
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "Partisi pada %s sedang digunakan."
+
+#: parted/parted.c:253
+#, c-format
+msgid ""
+"The existing disk label on %s will be destroyed and all data on this disk "
+"will be lost. Do you want to continue?"
+msgstr ""
+"Disk label yang ada di %s akan dihapus dan seluruh data di disk ini akan "
+"hilang. Apakah anda ingin melanjutkan?"
+
+#: parted/parted.c:502
+msgid "New disk label type?"
+msgstr "Tipe disk label baru?"
+
+#: parted/parted.c:562
+msgid "Partition type?"
+msgstr "Tipe partisi?"
+
+#: parted/parted.c:580 parted/parted.c:766
+msgid "Partition name?"
+msgstr "Nama partisi?"
+
+#: parted/parted.c:588
+msgid "File system type?"
+msgstr "Tipe file system?"
+
+#: parted/parted.c:594 parted/parted.c:1342
+msgid "Start?"
+msgstr "Awal?"
+
+#: parted/parted.c:596 parted/parted.c:1344
+msgid "End?"
+msgstr "Akhir?"
+
+#: parted/parted.c:661
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s.%s"
+msgstr ""
+"Anda meminta sebuah partisi dari %s sampai %s.\n"
+"Lokasi terdekat yang dapat kami tangani adalah %s sampai %s.%s"
+
+#: parted/parted.c:666
+msgid ""
+"\n"
+"Is this still acceptable to you?"
+msgstr ""
+"\n"
+"Apakah ini masih dapat anda terima?"
+
+#: parted/parted.c:688
+msgid "The resulting partition is not properly aligned for best performance."
+msgstr ""
+
+#: parted/parted.c:763 parted/parted.c:1383 parted/parted.c:1455
+#: parted/parted.c:1489
+msgid "Partition number?"
+msgstr "Nomor partisi?"
+
+#: parted/parted.c:841
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d.  Each cylinder is %s.\n"
+msgstr ""
+"BIOS cylinder,head,sector geometry: %d,%d,%d. Setiap cylinder adalah %s.\n"
+
+#: parted/parted.c:881
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr "Model: %s (%s)\n"
+
+#: parted/parted.c:883
+#, c-format
+msgid "Disk %s: %s\n"
+msgstr "Disk %s: %s\n"
+
+#: parted/parted.c:884
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr "Ukuran sektor (logical/physical): %lldB/%lldB\n"
+
+#: parted/parted.c:896
+#, c-format
+msgid "Partition Table: %s\n"
+msgstr "Tabel Partisi: %s\n"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Number"
+msgstr "Nomor"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Start"
+msgstr "Awal"
+
+#: parted/parted.c:1008 parted/parted.c:1011
+msgid "End"
+msgstr "Akhir"
+
+#: parted/parted.c:1011
+msgid "Size"
+msgstr "Ukuran"
+
+#: parted/parted.c:1015
+msgid "Type"
+msgstr "Tipe"
+
+#: parted/parted.c:1017
+msgid "File system"
+msgstr "File system"
+
+#: parted/parted.c:1020
+msgid "Name"
+msgstr "Nama"
+
+#: parted/parted.c:1022
+msgid "Flags"
+msgstr "Tanda"
+
+#: parted/parted.c:1079
+msgid "Free Space"
+msgstr "Ruang Kosong"
+
+#: parted/parted.c:1241
+#, c-format
+msgid ""
+"A %s %s partition was found at %s -> %s.  Do you want to add it to the "
+"partition table?"
+msgstr ""
+"Sebuah %s %s partisi ditemukan pada %s -> %s. Anda ingin menambahkan ini "
+"pada tabel partisi?"
+
+#: parted/parted.c:1280
+msgid "searching for file systems"
+msgstr "mencari untuk file systems"
+
+#: parted/parted.c:1408
+msgid "New device?"
+msgstr "Perangkat baru?"
+
+#: parted/parted.c:1453
+msgid "alignment type(min/opt)"
+msgstr "tipe penyesuaian(min/opt)"
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d aligned\n"
+msgstr ""
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d not aligned\n"
+msgstr ""
+
+#: parted/parted.c:1491
+msgid "Flag to Invert?"
+msgstr "Tanda yang akan dirubah?"
+
+#: parted/parted.c:1496
+msgid "New state?"
+msgstr "Status baru?"
+
+#: parted/parted.c:1533
+msgid "Unit?"
+msgstr "Satuan?"
+
+#: parted/parted.c:1651
+msgid "align-check"
+msgstr "pemeriksaan-penyesuaian"
+
+#: parted/parted.c:1654
+msgid ""
+"align-check TYPE N                        check partition N for TYPE(min|"
+"opt) alignment"
+msgstr ""
+"pemeriksaan-penyesuaian TIPE N            periksa partisi N untuk "
+"penyesuaian TIPE(min|opt)"
+
+#: parted/parted.c:1662
+msgid "help"
+msgstr "bantuan"
+
+#: parted/parted.c:1665
+msgid ""
+"help [COMMAND]                           print general help, or help on "
+"COMMAND"
+msgstr ""
+"bantuan [PERINTAH]                       menampilkan bantuan umum, atau "
+"bantuan pada PERINTAH"
+
+#: parted/parted.c:1671
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:1671
+msgid "mktable"
+msgstr "mktable"
+
+#: parted/parted.c:1674
+msgid ""
+"mklabel,mktable LABEL-TYPE               create a new disklabel (partition "
+"table)"
+msgstr ""
+"mklabel,mktable TIPE-LABEL               membuat sebuah disklabel baru "
+"(tabel partisi)"
+
+#: parted/parted.c:1680
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:1683
+msgid "mkpart PART-TYPE [FS-TYPE] START END     make a partition"
+msgstr "mkpart TIPE-PART [TIPE-FS] AWAL AKHIR    membuat sebuah partisi"
+
+#: parted/parted.c:1689
+msgid ""
+"'mkpart' makes a partition without creating a new file system on the "
+"partition.  FS-TYPE may be specified to set an appropriate partition ID.\n"
+msgstr ""
+"'mkpart' membuat sebuah partisi tanpa membuat sebuah file system baru pada "
+"partisi. TIPE-FS mungkin dispesifikasikan untuk mengeset ID partisi.\n"
+
+#: parted/parted.c:1694
+msgid "name"
+msgstr "nama"
+
+#: parted/parted.c:1697
+msgid "name NUMBER NAME                         name partition NUMBER as NAME"
+msgstr ""
+"nama NOMOR NAMA                          memberi nama partisi NOMOR dengan "
+"NAMA"
+
+#: parted/parted.c:1702
+msgid "print"
+msgstr "cetak"
+
+#: parted/parted.c:1705
+msgid ""
+"print [devices|free|list,all|NUMBER]     display the partition table, "
+"available devices, free space, all found partitions, or a particular "
+"partition"
+msgstr ""
+"print [devices|free|list,all|NUMBER]     tampilkan tabel partisi, perangkat "
+"yang bisa dipakai, ruang kosong, seluruh partisi yang ditemukan, atau untuk "
+"partisi tertentu"
+
+#: parted/parted.c:1710
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+"Tanpa argumen, 'print' menampilkan seluruh tabel partisi. Akan tetapi dengan "
+"diikuti argument ini akan melakukan beberapa aksi yang berbeda.\n"
+
+#: parted/parted.c:1712
+msgid "  devices   : display all active block devices\n"
+msgstr "  devices   : menampilkan seluruh perangkat blok yang aktif\n"
+
+#: parted/parted.c:1713
+msgid ""
+"  free      : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+"  free      : menampilkan informasi tentang ruang partisi kosong di perngkat "
+"blok yang sedang dipakai\n"
+
+#: parted/parted.c:1715
+msgid ""
+"  list, all : display the partition tables of all active block devices\n"
+msgstr ""
+"  list, all : tampilkan tabel partisi dari seluruh perangkat blok yang "
+"aktif\n"
+
+#: parted/parted.c:1716
+msgid ""
+"  NUMBER    : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+"  NUMBER    : tampilkan informasi yang lebih detail tentang partisi yang "
+"terpilih\n"
+
+#: parted/parted.c:1721
+msgid "quit"
+msgstr "berhenti"
+
+#: parted/parted.c:1724
+msgid "quit                                     exit program"
+msgstr "berhenti                                 keluar dari program"
+
+#: parted/parted.c:1729
+msgid "rescue"
+msgstr "selamatkan"
+
+#: parted/parted.c:1732
+msgid ""
+"rescue START END                         rescue a lost partition near START "
+"and END"
+msgstr ""
+"selamatkan AWAL AKHIR                    menyelamatkan partisi yang hilang "
+"didekat alamat AWAL dan AKHIR"
+
+#: parted/parted.c:1738
+msgid "rm"
+msgstr "hapus"
+
+#: parted/parted.c:1741
+msgid "rm NUMBER                                delete partition NUMBER"
+msgstr "hapus NOMOR                              hapus partisi NOMOR"
+
+#: parted/parted.c:1746
+msgid "select"
+msgstr "pilih"
+
+#: parted/parted.c:1749
+msgid "select DEVICE                            choose the device to edit"
+msgstr ""
+"pilih PERANGKAT                          pilih perangkat yang akan di edit"
+
+#: parted/parted.c:1754
+msgid "set"
+msgstr "set"
+
+#: parted/parted.c:1757
+msgid ""
+"set NUMBER FLAG STATE                    change the FLAG on partition NUMBER"
+msgstr ""
+"set NOMOR FLAG STATUS                    merubah tanda pada partisi NOMOR"
+
+#: parted/parted.c:1763
+msgid "toggle"
+msgstr "ubah"
+
+#: parted/parted.c:1766
+msgid ""
+"toggle [NUMBER [FLAG]]                   toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+"ubah [NOMOR [TANDA]]                     ubah keadaan dari TANDA di partisi "
+"NOMOR"
+
+#: parted/parted.c:1772
+msgid "unit"
+msgstr "satuan"
+
+#: parted/parted.c:1775
+msgid "unit UNIT                                set the default unit to UNIT"
+msgstr ""
+"satuan SATUAN                            mengeset satuan baku pada SATUAN"
+
+#: parted/parted.c:1780
+msgid "version"
+msgstr "versi"
+
+#: parted/parted.c:1783
+msgid ""
+"version                                  display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+"versi                                    menampilkan versi dari GNU Parted "
+"dan informasi hak cipta"
+
+#: parted/parted.c:1787
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+"'versi' menampilkan hak cipta dan informasi versi sesuai dengan kopi dari "
+"GNU Parted ini\n"
+
+#: parted/parted.c:1855
+#, c-format
+msgid "Usage: %s [-hlmsv] [-a<align>] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+"Penggunaan: %s [-hlmsv] [-a<penyesuaian>] [PERANGKAT [PERINTAH "
+"[PARAMETER]]...]\n"
+
+#: parted/parted.c:1899
+msgid "No device found"
+msgstr "Tidak ditemukan perangkat"
+
+#: parted/parted.c:1936
+msgid "WARNING: You are not superuser.  Watch out for permissions."
+msgstr "PERINGATAN: Anda bukan superuser. Perhatikan permisi anda."
+
+#: parted/parted.c:1974
+msgid "You may need to update /etc/fstab.\n"
+msgstr "Anda mungkin perlu untuk memperbarui /etc/fstab.\n"
+
+#: parted/ui.c:162
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+"Selamat datang di GNU Parted| Ketik 'bantuan' untuk melihat daftar dari "
+"perintah yang tersedia.\n"
+
+#: parted/ui.c:165
+msgid ""
+"Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]\n"
+"Apply COMMANDs with PARAMETERS to DEVICE.  If no COMMAND(s) are given, run "
+"in\n"
+"interactive mode.\n"
+msgstr ""
+"Penggunaan: parted [OPSI]... [PERANGKAT [PERINTAH [PARAMETERS]...]...]\n"
+"Berikan PERINTAH dengan PARAMETER ke PERANGKAT. Jika tidak ada PERINTAH yang "
+"diberikan,\n"
+"maka parted akan berjalan dengan menggunakan mode interaktif.\n"
+
+#: parted/ui.c:170
+#, c-format
+msgid ""
+"\n"
+"\n"
+"You found a bug in GNU Parted! Here's what you have to do:\n"
+"\n"
+"Don't panic! The bug has most likely not affected any of your data.\n"
+"Help us to fix this bug by doing the following:\n"
+"\n"
+"Check whether the bug has already been fixed by checking\n"
+"the last version of GNU Parted that you can find at:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Please check this version prior to bug reporting.\n"
+"\n"
+"If this has not been fixed yet or if you don't know how to check,\n"
+"please visit the GNU Parted website:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"for further information.\n"
+"\n"
+"Your report should contain the version of this release (%s)\n"
+"along with the error message below, the output of\n"
+"\n"
+"\tparted DEVICE unit co print unit s print\n"
+"\n"
+"and the following history of commands you entered.\n"
+"Also include any additional information about your setup you\n"
+"consider important.\n"
+msgstr ""
+"\n"
+"\n"
+"Anda menemukan sebuah bug dalam GNU Parted! Ini yang harus anda lakukan:\n"
+"\n"
+"Jangan panic! Bug yang ada biasanya tidak mempengaruhi data anda.\n"
+"Bantu kami untuk membetulkan bug ini dengan melakukan hal berikut:\n"
+"\n"
+"Check apakah bug telah dibetulkan dengan mengecheck\n"
+"versi terbaru dari GNU Parted yang dapat anda temukan di:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Tolong periksa versi ini terlebih dahulu sebelum melaporkan bug.\n"
+"\n"
+"Jika bug ini belum dibetulkan atau jika anda tidak tahu bagaimana cara "
+"mengechecknya,\n"
+"kunjungi GNU Parted website:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"untuk informasi lebih lanjut.\n"
+"\n"
+"Laporan anda seharusnya berisi versi dari release ini (%s)\n"
+"dengan pesan error dibawah ini, dan output dari perintah berikut ini\n"
+"\n"
+"\tparted DEVICE unit co print unit s print\n"
+"\n"
+"dan history dari perintah yang telah anda jalankan.\n"
+"dan beberapa informasi tambahan mengenai setting yang telah\n"
+"anda lakukan yang menurut anda penting.\n"
+
+#: parted/ui.c:291
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+"\n"
+"Perintah yang pernah dijalankan:\n"
+
+#: parted/ui.c:354
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+"\n"
+"Error: SEGV_MAPPER (Alamat tidak di map ke objek)\n"
+
+#: parted/ui.c:360
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+"\n"
+"Error: SEGV_ACCER (Permisi tidak sah untuk objek yang dimap)\n"
+
+#: parted/ui.c:365
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+"\n"
+"Error: Sebuah sinyal SIGSEGV umum telah ditemui.\n"
+
+#: parted/ui.c:389
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+"\n"
+"Error: FPE_INTDIV (Integer: dibagi dengan nol)"
+
+#: parted/ui.c:394
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+
+#: parted/ui.c:399
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+"\n"
+"Error: FPE_FLTDIV (Float: dibagi dengan nol)"
+
+#: parted/ui.c:404
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+
+#: parted/ui.c:409
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+
+#: parted/ui.c:414
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+"\n"
+"Error: FPE_FLTRES (Float: hasil tidak eksak)"
+
+#: parted/ui.c:419
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+"\n"
+"Error: FPE_FLTINV (Float: operasi tidak valid)"
+
+#: parted/ui.c:424
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript diluar dari jangkauan)"
+
+#: parted/ui.c:429
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+"\n"
+"Error: Sebuah sinyal SIGFPE umum telah ditemukan."
+
+#: parted/ui.c:453
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+
+#: parted/ui.c:458
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+
+#: parted/ui.c:463
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+"\n"
+"Error: ILL_ILLADDR (Illegal mode pengalamatan)"
+
+#: parted/ui.c:468
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+
+#: parted/ui.c:473
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+
+#: parted/ui.c:478
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+"\n"
+"Error: Sebuah sinyal SIGILL umum telah ditemukan."
+
+#: parted/ui.c:891
+#, c-format
+msgid "invalid token: %s"
+msgstr "token tidak valid: %s"
+
+#: parted/ui.c:1048
+msgid "Expecting a partition number."
+msgstr "Memperkirakan sebuah nomor partisi."
+
+#: parted/ui.c:1057
+msgid "Partition doesn't exist."
+msgstr "Partisi tidak ada."
+
+#: parted/ui.c:1077
+msgid "Expecting a file system type."
+msgstr "Memperkirakan sebuah tipe filesystem."
+
+#: parted/ui.c:1084
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Tipe filesystem tidak diketahui \"%s\"."
+
+#: parted/ui.c:1105
+msgid "Expecting a disk label type."
+msgstr "Memperkirakan sebuah tipe disk label."
+
+#: parted/ui.c:1203
+msgid "Can't create any more partitions."
+msgstr "Tidak dapat membuat partisi lagi."
+
+#: parted/ui.c:1213
+msgid "Expecting a partition type."
+msgstr "Memperkirakan sebuah tipe partisi."
+
+#: parted/ui.c:1361
+msgid "on"
+msgstr "nyala"
+
+#: parted/ui.c:1362
+msgid "off"
+msgstr "mati"
+
+#: parted/ui.c:1379
+msgid "optimal"
+msgstr "optimal"
+
+#: parted/ui.c:1380
+msgid "minimal"
+msgstr "minimal"
+
+#: parted/ui.c:1513
+msgid "OPTIONs:"
+msgstr "PILIHAN:"
+
+#: parted/ui.c:1518
+msgid "COMMANDs:"
+msgstr "PERINTAH:"
+
+#: parted/ui.c:1521
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Report bugs to %s\n"
+msgstr ""
+"\n"
+"Laporkan bugs ke: %s\n"
+
+#: parted/ui.c:1528
+#, c-format
+msgid "Using %s\n"
+msgstr "Menggunakan perangkat %s\n"
+
+#: parted/ui.c:1602
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr "Perintah ini tidak mempunyai arti dalam mode non-interaktif.\n"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]\n"
+#~ "  or:  %s DEVICE MINOR\n"
+#~ msgstr ""
+#~ "Penggunaan: %s [OPSI]\n"
+#~ "      atau: %s PERANGKAT MINOR\n"
+
+#~ msgid ""
+#~ "Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Bersihkan ruang yang tidak digunakan di parttisi FAT (sebuah perangkat "
+#~ "pengetes di GNU Parted).\n"
+#~ "\n"
+
+#~ msgid "      --help     display this help and exit\n"
+#~ msgstr "      --help     menampilkan bantuan ini dan keluar\n"
+
+#~ msgid "      --version  output version information and exit\n"
+#~ msgstr "      --version  menampilkan informasi versi dan keluar\n"
+
+#~ msgid "too few arguments"
+#~ msgstr "argumen terlalu sedikit"
+
+#~ msgid "too many arguments"
+#~ msgstr "Terlalu banyak argument."
+
+#~ msgid "invalid minor device number: %s"
+#~ msgstr "nomor divais minor tidak sah: %s"
+
+#~ msgid "Could not detect file system."
+#~ msgstr "Tidak dapat mendeteksi filesystem."
+
+#~ msgid "The file system is bigger than its volume!"
+#~ msgstr "File system lebih besar dari volumenya!"
+
+#~ msgid "Support for opening %s file systems is not implemented yet."
+#~ msgstr "Support untuk membuka file systems %s belum diimplementasikan."
+
+#~ msgid "Support for creating %s file systems is not implemented yet."
+#~ msgstr "Support untuk membuat file systems %s belum diimplementasikan."
+
+#~ msgid "Support for checking %s file systems is not implemented yet."
+#~ msgstr "Support untuk mengecheck file systems %s belum diimplementasikan."
+
+#~ msgid "raw block copying"
+#~ msgstr "raw block copying"
+
+#~ msgid "growing file system"
+#~ msgstr "memperbesar file system"
+
+#~ msgid "Can't copy onto an overlapping partition."
+#~ msgstr "Tidak dapat menyalin kedalam partisi yang overlap."
+
+#~ msgid ""
+#~ "Direct support for copying file systems is not yet implemented for %s.  "
+#~ "However, support for resizing is implemented.  Therefore, the file system "
+#~ "can be copied if the new partition is at least as big as the old one.  "
+#~ "So, either shrink the partition you are trying to copy, or copy to a "
+#~ "bigger partition."
+#~ msgstr ""
+#~ "Layanan langsung untuk menyalin file system belum diimplementasikan untuk "
+#~ "%s. Akan tetapi, layanan untuk me-resize-nya sudah diimplementasikan. "
+#~ "Oleh karena itu, file system dapat disalin jika partisi baru berukuran "
+#~ "sama besar dengan partisi lama. Jadi, bisa dilakukan dengan mengecilkan "
+#~ "partisi yang akan disalin, atau menyalin ke partisi yang lebih besar."
+
+#~ msgid "Support for copying %s file systems is not implemented yet."
+#~ msgstr "Support untuk menyalin filesystem %s belum diimplementasikan."
+
+#~ msgid "Support for resizing %s file systems is not implemented yet."
+#~ msgstr "Support untuk men-resize filesystem %s belum diimplementasikan."
+
+#~ msgid "creating"
+#~ msgstr "membuat"
+
+#~ msgid "The file system is in an invalid state.  Perhaps it is mounted?"
+#~ msgstr "File system dalam keadaan tidak valid. Mungkin sedang dimount?"
+
+#~ msgid "The file system is in old (unresizeable) format."
+#~ msgstr "File system dalam format lama (tidak dapat diubah ukurannya)."
+
+#~ msgid "Invalid free blocks count.  Run reiserfsck --check first."
+#~ msgstr ""
+#~ "Jumlah blok bebas tidak valid. Jalankan reiserfsck --check terlebih "
+#~ "dahulu."
+
+#~ msgid "checking"
+#~ msgstr "memeriksa"
+
+#~ msgid "Reiserfs tree seems to be corrupted.  Run reiserfsck --check first."
+#~ msgstr ""
+#~ "Reiserfs tree kelihatannya terkorupsi. Jalankan reiserfsck --check "
+#~ "terlebih dahulu."
+
+#~ msgid ""
+#~ "The reiserfs file system passed a basic check.  For a more comprehensive "
+#~ "check, run reiserfsck --check."
+#~ msgstr ""
+#~ "File system reiserfs lolos dari pemeriksaan dasar. Untuk pemeriksaan yang "
+#~ "lebih komprehensif , jalankan reiserfsck --check."
+
+#~ msgid "Sorry, can't move the start of reiserfs partitions yet."
+#~ msgstr "Maaf, belum dapat memindahkan awal dari partisi reiserfs."
+
+#~ msgid "Couldn't reopen device abstraction layer for read/write."
+#~ msgstr "Tidak dapat membuka device abstraction layer untuk baca/tulis."
+
+#~ msgid "shrinking"
+#~ msgstr "mengecilkan"
+
+#~ msgid "expanding"
+#~ msgstr "membesarkan"
+
+#~ msgid "Couldn't create reiserfs device abstraction handler."
+#~ msgstr "Tidak dapat membuat reiserfs device abstraction handler."
+
+#~ msgid "Device is too small for %lu blocks."
+#~ msgstr "Perangkat terlalu kecil untuk %lu blok."
+
+#~ msgid "copying"
+#~ msgstr "menyalin"
+
+#~ msgid "Couldn't resolve symbol %s.  Error: %s."
+#~ msgstr "Tidak dapat menresolv simbol %s. Error: %s."
+
+#~ msgid "GNU Parted found an invalid libreiserfs library."
+#~ msgstr "GNU Parted menemukan sebuah library libreiserfs yang tidak valid."
+
+#~ msgid ""
+#~ "GNU Parted has detected libreiserfs interface version mismatch.  Found %d-"
+#~ "%d, required %d. ReiserFS support will be disabled."
+#~ msgstr ""
+#~ "GNU Parted telah mendeteksi ketidak cocokan versi libreiserfs interface. "
+#~ "Ditemukan %d-%d, dibutuhkan %d. ReiserFS support akan dinonaktifkan. "
+
+#~ msgid "Inconsistent group descriptors!"
+#~ msgstr "group descriptors tidak konsistent!"
+
+#~ msgid "File system full!"
+#~ msgstr "File system full!"
+
+#~ msgid "Invalid superblock.  Are you sure this is an ext2 file system?"
+#~ msgstr ""
+#~ "Superblock tidak valid. Apakah anda yakin ini merupakan sebuah ext2 file "
+#~ "system?"
+
+#~ msgid "File system has errors!  You should run e2fsck."
+#~ msgstr "File system memiliki errors! Anda seharusnya menjalankan e2fsck."
+
+#~ msgid ""
+#~ "File system was not cleanly unmounted!  You should run e2fsck.  Modifying "
+#~ "an unclean file system could cause severe corruption."
+#~ msgstr ""
+#~ "File system tidak di-unmount secara bersih! Anda seharusnya menjalankan "
+#~ "e2fsck. Memodifikasi sebuah file system yang tidak bersih dapat "
+#~ "menyebabkan file system tersebut terkorupsi."
+
+#~ msgid ""
+#~ "File system has an incompatible feature enabled.  Compatible features are "
+#~ "has_journal, dir_index, filetype, sparse_super and large_file.  Use "
+#~ "tune2fs or debugfs to remove features."
+#~ msgstr ""
+#~ "File system memiliki fitur yang tidak kompatibel yang diaktifkan. Fitur "
+#~ "kompatibel adalah has_journal, dir_index, filetype, sparse_super dan "
+#~ "large_file. Gunakan tune2fs atau debugfs untuk menghapus fitur."
+
+#~ msgid "Error allocating buffer cache."
+#~ msgstr "Error mengalokasikan buffer cache."
+
+#~ msgid ""
+#~ "Found an inode with a incorrect link count.  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "Ditemukan sebuah inode dengan link count yang tidak benar. Lebih baik "
+#~ "menjalankan e2fsck terlebih dahulu!"
+
+#~ msgid "Not enough free inodes!"
+#~ msgstr "Tidak cukup free inodes!"
+
+#~ msgid "File system is too full to remove a group!"
+#~ msgstr "File system terlalu penuh untuk menghapus sebuah group!"
+
+#~ msgid "File system has too many allocated inodes to remove a group!"
+#~ msgstr ""
+#~ "File system memiliki terlalu banyak inode yang sudah dialokasikan untuk "
+#~ "menghapus sebuah group!"
+
+#~ msgid "adding groups"
+#~ msgstr "menambahkan groups"
+
+#~ msgid "Your file system is too full to resize it to %i blocks.  Sorry."
+#~ msgstr ""
+#~ "File system anda terlalu penuh untuk men-resize-nya menjadi %i blocks. "
+#~ "Maaf."
+
+#~ msgid ""
+#~ "Your file system has too many occupied inodes to resize it to %i blocks.  "
+#~ "Sorry."
+#~ msgstr ""
+#~ "File system anda memiliki terlalu banyak inode yang terisi untuk diresize "
+#~ "menjadi %i block. Maaf"
+
+#~ msgid "File system was not cleanly unmounted!  You should run e2fsck."
+#~ msgstr ""
+#~ "File system tidak di-unmount secara bersih! Anda seharusnya menjalankan "
+#~ "e2fsck."
+
+#~ msgid ""
+#~ "The file system has the 'dir_index' feature enabled.  Parted can only "
+#~ "resize the file system if it disables this feature.  You can enable it "
+#~ "later by running 'tune2fs -O dir_index DEVICE' and then 'e2fsck -fD "
+#~ "DEVICE'."
+#~ msgstr ""
+#~ "File system memiliki 'dir_index' featur enabled. Parted hanya bisa me-"
+#~ "resize file system jika ini feature ini dimatikan. Anda dapat "
+#~ "menghidupkannya kembali nanti dengan menjalankan 'tune2fs -O dir_index "
+#~ "PERANGKAT' dan kemudian 'e2fsck -fD PERANGKAT'."
+
+#~ msgid ""
+#~ "A resize operation on this file system will use EXPERIMENTAL code\n"
+#~ "that MAY CORRUPT it (although no one has reported any such damage yet).\n"
+#~ "You should at least backup your data first, and run 'e2fsck -f' "
+#~ "afterwards."
+#~ msgstr ""
+#~ "Sebuah operasi perubahan ukuran di file system ini akan menggunakan kode "
+#~ "PERCOBAAN\n"
+#~ "yang mungkin akan mengkorupsi file system ini (walaupun belum ada yang "
+#~ "melaporkan adanya kerusakan seperti itu).\n"
+#~ "Anda seharusnya melakukan backup terlebih dahulu terhadap data anda dan "
+#~ "menjalankan 'e2fsck -f' sesudahnya."
+
+#~ msgid "Cross-linked blocks found!  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "Cross-linked blocks ditemukan! Lebih baik menjalankan e2fsck terlebih "
+#~ "daulu!"
+
+#~ msgid "Block %i has no reference?  Weird."
+#~ msgstr "Block %i tidak memiliki reference? Aneh."
+
+#~ msgid "Block %i shouldn't have been marked (%d, %d)!"
+#~ msgstr "Block %i seharusnya tidak memiliki tanda (%d, %d)!"
+
+#~ msgid ""
+#~ "The ext2 file system passed a basic check.  For a more comprehensive "
+#~ "check, use the e2fsck program."
+#~ msgstr ""
+#~ "File system ext2 lolos dari pengecheckan dasar. Untuk lebih komprehensif "
+#~ "check, gunakan aplikasi e2fsck."
+
+#~ msgid "Sorry, can't move the start of ext2 partitions yet!"
+#~ msgstr "Maaf, tidak dapat memindahkan awal dari partisi ext2!"
+
+#~ msgid "Couldn't flush buffer cache!"
+#~ msgstr "Tidak dapat menflush buffer cache!"
+
+#~ msgid "writing per-group metadata"
+#~ msgstr "menulis per-group metadata"
+
+#~ msgid "File system too small for ext2."
+#~ msgstr "File system terlalu kecil untuk ext2."
+
+#~ msgid ""
+#~ "You need %s of free disk space to shrink this partition to this size.  "
+#~ "Currently, only %s is free."
+#~ msgstr ""
+#~ "Anda butuh %s ruang kosong dari disk untuk mengecilkan partisi ini. Saat "
+#~ "ini hanya %s yang kosong."
+
+#~ msgid ""
+#~ "Cluster start delta = %d, which is not a multiple of the cluster size %d."
+#~ msgstr ""
+#~ "Cluster awal delta = %d, dimana bukan kelipatan dari ukuran cluster %d."
+
+#~ msgid "Partition too big/small for a %s file system."
+#~ msgstr "Partisi terlalu besar/kecil untuk sebuah file system %s."
+
+#~ msgid ""
+#~ "The FATs don't match.  If you don't know what this means, then select "
+#~ "cancel, run scandisk on the file system, and then come back."
+#~ msgstr ""
+#~ "FAT tidak cocok. Jika anda tidak tahu apa artinya ini, maka pilih cancel, "
+#~ "jalankan scandisk pada file system, dan coba lagi."
+
+#~ msgid "There are no possible configurations for this FAT type."
+#~ msgstr "Tidak ada konfigurasi yang mungkin untuk tipe FAT ini."
+
+#~ msgid ""
+#~ "File system doesn't have expected sizes for Windows to like it.  Cluster "
+#~ "size is %dk (%dk expected); number of clusters is %d (%d expected); size "
+#~ "of FATs is %d sectors (%d expected)."
+#~ msgstr ""
+#~ "Ukuran file system tidak berukuran seperti yang diperkirakan oleh "
+#~ "Windows. Ukuran cluster adalah %dk (%dk diperkirakan); jumlah dari "
+#~ "cluster adalah %d (%d diperkirakan); ukuran dari FATs adalah %d sektor "
+#~ "(%d diperkirakan)."
+
+#~ msgid ""
+#~ "File system is reporting the free space as %d clusters, not %d clusters."
+#~ msgstr ""
+#~ "File system melaporkan ruang kosong sebagai %d clusters, bukan %d "
+#~ "clusters."
+
+#~ msgid ""
+#~ "There's not enough room in the root directory for all of the files.  "
+#~ "Either cancel, or ignore to lose the files."
+#~ msgstr ""
+#~ "Tidak terdapat ruangan yang cukup untuk direktori root untuk semua file. "
+#~ "Pilih cancel, atau ignore untuk menggagalkan files."
+
+#~ msgid "Error writing to the root directory."
+#~ msgstr "Error menulis pada direktori root."
+
+#~ msgid ""
+#~ "If you leave your file system as FAT16, then you will have no problems."
+#~ msgstr ""
+#~ "Jika anda meninggalkan file system anda sebagai FAT16, maka anda mungkin "
+#~ "tidak akan menemui masalah"
+
+#~ msgid ""
+#~ "If you convert to FAT16, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual)."
+#~ msgstr ""
+#~ "Jika anda mengubah ke FAT16, dan MS Windows terinstall pada partisi "
+#~ "tersebut, maka anda harus meninstall kembali MS Windows boot loader. Jika "
+#~ "anda ingin melakukan ini, anda seharusnya berkonsultasi terlebih dahulu "
+#~ "pada manual dari Parted (atau manual dari distribusi anda)."
+
+#~ msgid ""
+#~ "If you leave your file system as FAT32, then you will not introduce any "
+#~ "new problems."
+#~ msgstr ""
+#~ "Jika anda meninggalkan file system sebagai FAT32, mungkin anda tidak "
+#~ "menemui masalah baru."
+
+#~ msgid ""
+#~ "If you convert to FAT32, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual).  Also, converting to FAT32 will make the file system unreadable "
+#~ "by MS DOS, MS Windows 95a, and MS Windows NT."
+#~ msgstr ""
+#~ "Jika anda mengubah ke FAT32, dan MS Windows terinstall pada partisi "
+#~ "tersebut, maka anda harus meninstall kembali MS Windows boot loader. Jika "
+#~ "anda ingin ingin melakukan ini, anda harus berkonsultasi terlebih dahulu "
+#~ "dengan manual dari Parted (atau manual dari distribusi anda). Juga, "
+#~ "mengubah ke FAT32 akan membuat file system tidak dapat dibaca oleh MS "
+#~ "DOS, MS Windows 95a, dan MS Windows NT."
+
+#~ msgid "%s  %s  %s"
+#~ msgstr "%s  %s  %s"
+
+#~ msgid "Would you like to use FAT32?"
+#~ msgstr "Maukah anda menggunakan FAT32?"
+
+#~ msgid "%s  %s"
+#~ msgstr "%s  %s"
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT16."
+#~ msgstr ""
+#~ "File system hanya dapat diresize ke ukuran ini dengan mengubahnya ke "
+#~ "FAT16."
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT32."
+#~ msgstr ""
+#~ "The file system hanya dapat di-resize untuk ukuran ini hanya dengan "
+#~ "mengubahnya menjadi FAT32."
+
+#~ msgid ""
+#~ "GNU Parted cannot resize this partition to this size.  We're working on "
+#~ "it!"
+#~ msgstr ""
+#~ "GNU Parted tidak dapat men-resize partisi ini untuk ukuran ini. Kita "
+#~ "sedang mengusahkannya untuk bisa!"
+
+#~ msgid "Bad directory entry for %s: first cluster is the end of file marker."
+#~ msgstr ""
+#~ "Bad directory entry untuk %s: cluster pertama merupakan akhir dari file "
+#~ "marker"
+
+#~ msgid ""
+#~ "Bad FAT: unterminated chain for %s.  You should run dosfsck or scandisk."
+#~ msgstr ""
+#~ "Bad FAT: unterminated chain untuk %s. Anda seharusnya menjalankan dosfsck "
+#~ "atau scandisk."
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d outside file system in chain for %s.  You should run "
+#~ "dosfsck or scandisk."
+#~ msgstr ""
+#~ "Bad FAT: cluster %d diluar dari file system dalam rantai untuk %s. Anda "
+#~ "seharusnya menjalankan dosfsck atau scandisk."
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d is cross-linked for %s.  You should run dosfsck or "
+#~ "scandisk."
+#~ msgstr ""
+#~ "Bad FAT: cluster %d adalah cross-linked untuk %s. Anda seharusnya "
+#~ "menjalankan dosfsck atan scandisk."
+
+#~ msgid "%s is %dk, but it has %d clusters (%dk)."
+#~ msgstr "%s adalah %dk, tetapi ini memiliki %d clusters (%dk)."
+
+#~ msgid ""
+#~ "The file %s is marked as a system file.  This means moving it could cause "
+#~ "some programs to stop working."
+#~ msgstr ""
+#~ "File %s ditandai sebagai sistem file. Ini berarti memindahkannya dapat "
+#~ "menyebabkan beberapa aplikasi untuk tidak dapat bekerja."
+
+#~ msgid ""
+#~ "FAT %d media %x doesn't match the boot sector's media %x.  You should "
+#~ "probably run scandisk."
+#~ msgstr ""
+#~ "FAT %d media %x tidak cocok dengan boot sector's media %x. Anda "
+#~ "seharusnya menjalankan scandisk."
+
+#~ msgid "fat_table_set: cluster %ld outside file system"
+#~ msgstr "fat_table_set: cluster %ld diluar file system"
+
+#~ msgid "fat_table_get: cluster %ld outside file system"
+#~ msgstr "fat_table_get: cluster %ld diluar file system"
+
+#~ msgid "fat_table_alloc_cluster: no free clusters"
+#~ msgstr "fat_table_alloc_cluster: tidak ada cluster yang kosong"
+
+#~ msgid "Too many bad pages."
+#~ msgstr "Terlalu banyak bad pages."
+
+#~ msgid "The file system contains errors."
+#~ msgstr "File system memiliki kerusakan."
+
+#~ msgid "Bad blocks could not be read."
+#~ msgstr "Bad blocks tidak dapat dibaca."
+
+#~ msgid ""
+#~ "Trying to register an extent starting at block 0x%X, but another one "
+#~ "already exists at this position.  You should check the file system!"
+#~ msgstr ""
+#~ "Mencoba untuk menregister sebuah extent dimulai dari block 0x%X, tetapi "
+#~ "yang lain sudah ada di partisi ini. Anda seharusnya mengecheck file "
+#~ "system !"
+
+#~ msgid ""
+#~ "Trying to move an extent from block Ox%X to block Ox%X, but another one "
+#~ "already exists at this position.  This should not happen!"
+#~ msgstr ""
+#~ "Mencoba untuk memindahkan sebuah extent dari block 0x%X ke block 0x%X, "
+#~ "tetapi yang lain sudah ada di partisi ini. Ini seharusnya tidak terjadi!"
+
+#~ msgid "Could not update the extent cache for HFS file with CNID %X."
+#~ msgstr "Tidak dapat meng-update extent cache untuk file HFS dengan CNID %X."
+
+#~ msgid "Trying to read HFS file with CNID %X behind EOF."
+#~ msgstr "Mencoba untuk membaca file HFS dengan CNID %X dibelakang EOF."
+
+#~ msgid "Could not find sector %lli of HFS file with CNID %X."
+#~ msgstr "Tidak dapat menemukan sekto %lli dari file HFS dengan CNID %X."
+
+#~ msgid "Trying to write HFS file with CNID %X behind EOF."
+#~ msgstr "Mencoba untuk menulis file HFS dengan CNID %X dibelakang EOF."
+
+#~ msgid "Could not update the extent cache for HFS+ file with CNID %X."
+#~ msgstr ""
+#~ "Tidak dapat meng-update extent cache untuk file HFS+ dengan CNID %X."
+
+#~ msgid "Trying to read HFS+ file with CNID %X behind EOF."
+#~ msgstr "Mencoba untuk membaca file HFS+ dengan CNID %X dibelakang EOF."
+
+#~ msgid "Could not find sector %lli of HFS+ file with CNID %X."
+#~ msgstr "Tidak dapat menemukan sekto %lli dari file HFS+ dengan CNID %X."
+
+#~ msgid "Trying to write HFS+ file with CNID %X behind EOF."
+#~ msgstr "Mencoba untuk menulis file HFS+ dengan CNID %X dibelakang EOF."
+
+#~ msgid "Sorry, HFS cannot be resized that way yet."
+#~ msgstr "Maaf, HFS tidak dapat di-resize."
+
+#~ msgid "Data relocation has failed."
+#~ msgstr "Data relocation telah gagal."
+
+#~ msgid "Data relocation left some data in the end of the volume."
+#~ msgstr "Data relocation meninggalkan beberapa data pada akhir dari volume."
+
+#~ msgid "writing HFS Master Directory Block"
+#~ msgstr "menulis HFS Master Directory Block"
+
+#~ msgid "No valid HFS[+X] signature has been found while opening."
+#~ msgstr "Tanda tangan HFS[+X] tidak valid telah ditemukan ketika membuka."
+
+#~ msgid "Version %d of HFS+ isn't supported."
+#~ msgstr "HFS+ versi %d tidak disupport."
+
+#~ msgid "Version %d of HFSX isn't supported."
+#~ msgstr "HFS+ versi %d tidak disupport."
+
+#~ msgid "Data relocation left some data at the end of the volume."
+#~ msgstr "Data relocation meninggalkan beberapa data pada akhir dari volume."
+
+#~ msgid "Error while writing the allocation file."
+#~ msgstr "Error ketika menulis alokasi file."
+
+#~ msgid "Error while writing the compatibility part of the allocation file."
+#~ msgstr "Error ketika menulis bagian kompatibilitas dari alokasi file."
+
+#~ msgid "writing HFS+ Volume Header"
+#~ msgstr "menulis HFS+ Volume Header"
+
+#~ msgid "An error occurred while looking for the mandatory bad blocks file."
+#~ msgstr "Sebuah error terjadi ketika mencari mandatory bad blocks file."
+
+#~ msgid ""
+#~ "It seems there is an error in the HFS wrapper: the bad blocks file "
+#~ "doesn't contain the embedded HFS+ volume."
+#~ msgstr ""
+#~ "Kelihatannya terjadi kesalahan dalam HFS wrapper: file bad blocks tidak "
+#~ "berisi embedded HFS+ volume."
+
+#~ msgid "Sorry, HFS+ cannot be resized that way yet."
+#~ msgstr "Maaf, HFS+ tidak dapat di-resize dengan cara itu saat ini."
+
+#~ msgid "shrinking embedded HFS+ volume"
+#~ msgstr "mengecilkan embedded HFS+ volume"
+
+#~ msgid "Resizing the HFS+ volume has failed."
+#~ msgstr "Resizing dari HFS+ volume telah gagal."
+
+#~ msgid "shrinking HFS wrapper"
+#~ msgstr "mengecilkan HFS wrapper"
+
+#~ msgid "Updating the HFS wrapper has failed."
+#~ msgstr "Update dari HFS wrapper telah gagal."
+
+#~ msgid ""
+#~ "This is not a real %s check.  This is going to extract special low level "
+#~ "files for debugging purposes."
+#~ msgstr ""
+#~ "Ini bukan sebuah pengecheckan %s nyata. Ini akan mengekstrak files "
+#~ "spesial level bawah untuk tujuan debugging."
+
+#~ msgid "Bad block list header checksum."
+#~ msgstr "Daftar bad block header checksum."
+
+#~ msgid ""
+#~ "Invalid size of a transaction block while replaying the journal (%i "
+#~ "bytes)."
+#~ msgstr ""
+#~ "Ukuran tidak sah dalam transaksi blok ketika membalas transaksi journal "
+#~ "(%i bytes)."
+
+#~ msgid ""
+#~ "Journal stored outside of the volume are not supported.  Try to "
+#~ "desactivate the journal and run Parted again."
+#~ msgstr ""
+#~ "Journal disimpan diluar dari volume tidak disupport. Coba untuk "
+#~ "menonaktifkan journal dan jalankan Parted lagi sesudah itu."
+
+#~ msgid "Journal offset or size is not multiple of the sector size."
+#~ msgstr "Ukuran atau offset dari journal bukan kelipatan dari ukuran sektor"
+
+#~ msgid "Incorrect magic values in the journal header."
+#~ msgstr "Nilai magic tidak benar dalam header journal."
+
+#~ msgid "Journal size mismatch between journal info block and journal header."
+#~ msgstr ""
+#~ "Ukuran journal tidak cocok diantara journal info block dan journal header."
+
+#~ msgid "Some header fields are not multiple of the sector size."
+#~ msgstr "Beberapa fields header bukan kelipatan dari ukuran sektor."
+
+#~ msgid ""
+#~ "The sector size stored in the journal is not 512 bytes.  Parted only "
+#~ "supports 512 bytes length sectors."
+#~ msgstr ""
+#~ "Ukuran sektor yang disimpan dalam journal tidak sebesar 512 bytes. Parted "
+#~ "hanya mendukung ukuran sektor 512 bytes."
+
+#~ msgid "Bad journal checksum."
+#~ msgstr "Journal checksum jelek."
+
+#~ msgid ""
+#~ "The journal is not empty.  Parted must replay the transactions before "
+#~ "opening the file system.  This will modify the file system."
+#~ msgstr ""
+#~ "Journal tidak kosong. Parted harus membalas transaksi sebelum membuka "
+#~ "file system. Ini akan memodifikasi file system."
+
+#~ msgid ""
+#~ "The volume header or the master directory block has changed while "
+#~ "replaying the journal.  You should restart Parted."
+#~ msgstr ""
+#~ "Volume header atau direktori master block telah berubah ketika membalas "
+#~ "transaksi journal. Anda seharusnya merestart Parted."
+
+#~ msgid "An extent has not been relocated."
+#~ msgstr "Sebuah extent tidak dapat direlokasikan."
+
+#~ msgid ""
+#~ "A reference to an extent comes from a place it should not.  You should "
+#~ "check the file system!"
+#~ msgstr ""
+#~ "Sebuah referensi untuk sebuah extent datang dari tempat yang tidak "
+#~ "seharusnya. Anda harus mengecheck filesystem!"
+
+#~ msgid "This HFS volume has no catalog file.  This is very unusual!"
+#~ msgstr "HFS volume tidak memiliki catalog file. Ini sangat tidak biasa!"
+
+#~ msgid ""
+#~ "This HFS volume has no extents overflow file.  This is quite unusual!"
+#~ msgstr ""
+#~ "HFS+ volume ini tidak memiliki extent overflow file. Ini tidak biasa!"
+
+#~ msgid ""
+#~ "The extents overflow file should not contain its own extents!  You should "
+#~ "check the file system."
+#~ msgstr ""
+#~ "Extent overflow file seharusnya tidak berisi extentnya sendiri! Anda "
+#~ "seharusnya mengecheck filesystem."
+
+#~ msgid "Could not cache the file system in memory."
+#~ msgstr "Tidak dapat men-cache filesystem dalam memori."
+
+#~ msgid "Bad blocks list could not be loaded."
+#~ msgstr "Daftar bad blocks tidak dapat diload."
+
+#~ msgid "An error occurred during extent relocation."
+#~ msgstr "Terjadi error ketika extent relocation."
+
+#~ msgid "This HFS+ volume has no catalog file.  This is very unusual!"
+#~ msgstr "HFS+ volume tidak memiliki catalog file. Ini sangat tidak biasa!"
+
+#~ msgid ""
+#~ "This HFS+ volume has no extents overflow file.  This is quite unusual!"
+#~ msgstr "HFS+ volume tidak memiliki extent overflow file. Ini tidak biasa!"
+
+#~ msgid "The partition must have one of the following FS-TYPEs: "
+#~ msgstr "Partisi harus memiliki salah satu dari TIPE-FS berikut ini: "
+
+#~ msgid ""
+#~ "The existing file system will be destroyed and all data on the partition "
+#~ "will be lost. Do you want to continue?"
+#~ msgstr ""
+#~ "Filesystem yang ada akan dihapus dan seluruh data yang ada di partisi "
+#~ "tersebut akan hilang. Apakah anda ingin melanjutkan?"
+
+#~ msgid ""
+#~ "WARNING: you are attempting to use %s to operate on (%s) a file system.\n"
+#~ "%s's file system manipulation code is not as robust as what you'll find "
+#~ "in\n"
+#~ "dedicated, file-system-specific packages like e2fsprogs.  We recommend\n"
+#~ "you use %s only to manipulate partition tables, whenever possible.\n"
+#~ "Support for performing most operations on most types of file systems\n"
+#~ "will be removed in an upcoming release.\n"
+#~ msgstr ""
+#~ "PERINGATAN: anda sedang coba untuk menggunakan %s untuk beroperasi di\n"
+#~ "(%s) sebuah sistem berkas. Kode manipulasi sistem berkas %s tidak sebaik\n"
+#~ "dengan apa yang akan anda temukan dalam aplikasi khusus untuk sistem "
+#~ "berkas\n"
+#~ "seperti e2fsprogs.  Kami merekomendasikan supaya anda menggunakan %s "
+#~ "hanya\n"
+#~ "untuk memanipulasi tabel partisi, kapanpun memungkinkan. Dukungan untuk\n"
+#~ "melakukan operasi mendalam di banyak tipe dari sistem berkas\n"
+#~ "akan dihilangkan pada keluaran selanjutnya.\n"
+
+#~ msgid "Source device?"
+#~ msgstr "Perangkat asal?"
+
+#~ msgid "Source partition number?"
+#~ msgstr "Nomor partisi asal?"
+
+#~ msgid "Can't copy an extended partition."
+#~ msgstr "Tidak dapat mengkopi sebuah partisi extended."
+
+#~ msgid "Destination partition number?"
+#~ msgstr "Nomor partisi tujuan?"
+
+#~ msgid ""
+#~ "An extended partition cannot hold a file system.  Did you want mkpart?"
+#~ msgstr ""
+#~ "Sebuah partisi extended tidak dapat berisi sebuah file system. Anda ingin "
+#~ "melakukan mkpart?"
+
+#~ msgid "Can't move an extended partition."
+#~ msgstr "Tidak dapat memindahkan sebuah partisi extended."
+
+#~ msgid "Can't move a partition onto itself.  Try using resize, perhaps?"
+#~ msgstr ""
+#~ "Tidak dapat memindahkan partisi ke partisi itu sendiri. Coba menggunakan "
+#~ "resize, mungkin?"
+
+#~ msgid "Minor: %d\n"
+#~ msgstr "Minor: %d\n"
+
+#~ msgid "Flags: %s\n"
+#~ msgstr "Tanda: %s\n"
+
+#~ msgid "File System: %s\n"
+#~ msgstr "File System: %s\n"
+
+#~ msgid "Size:         "
+#~ msgstr "Ukuran:        "
+
+#~ msgid "Minimum size: "
+#~ msgstr "Ukuran minimal: "
+
+#~ msgid "Maximum size: "
+#~ msgstr "Ukuran maksimal: "
+
+#~ msgid "check"
+#~ msgstr "periksa"
+
+#~ msgid ""
+#~ "check NUMBER                             do a simple check on the file "
+#~ "system"
+#~ msgstr ""
+#~ "periksa NOMOR                             pemeriksaan sederhana pada file "
+#~ "system"
+
+#~ msgid "cp"
+#~ msgstr "salin"
+
+#~ msgid ""
+#~ "cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   copy file system to another "
+#~ "partition"
+#~ msgstr ""
+#~ "salin [ASAL-PERANGKAT] ASAL-NOMOR KE-NOMOR  menyalin file system ke "
+#~ "partisi yang lain"
+
+#~ msgid "mkfs"
+#~ msgstr "mkfs"
+
+#~ msgid ""
+#~ "mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on "
+#~ "partition NUMBER"
+#~ msgstr ""
+#~ "mkfs NOMOR TIPE-FS                       membuat sistem berkas TIPE-FS "
+#~ "pada partisi NOMOR"
+
+#~ msgid "mkpartfs"
+#~ msgstr "mkpartfs"
+
+#~ msgid ""
+#~ "mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file "
+#~ "system"
+#~ msgstr ""
+#~ "mkpartfs TIPE-PART TIPE-FS AWAL AKHIR    membuat sebuah partisi dengan "
+#~ "filesystem"
+
+#~ msgid "move"
+#~ msgstr "pindah"
+
+#~ msgid "move NUMBER START END                    move partition NUMBER"
+#~ msgstr "pindah NOMOR AWAL AKHIR                  memindahkan partisi NOMOR"
+
+#~ msgid "resize"
+#~ msgstr "resize"
+
+#~ msgid ""
+#~ "resize NUMBER START END                  resize partition NUMBER and its "
+#~ "file system"
+#~ msgstr ""
+#~ "resize NOMOR AWAL AKHIR                  merubah ukuran partisi NOMOR dan "
+#~ "isi filesystemnya"
+
+#~ msgid "This is not an ECKD disk!  This disk type is not supported!"
+#~ msgstr "Ini bukan cakram ECKD! Tipe cakram ini tak didukung!"
+
+#~ msgid ""
+#~ "WARNING: the kernel failed to re-read the partition table on %s (%s).  As "
+#~ "a result, it may not reflect all of your changes until after reboot."
+#~ msgstr ""
+#~ "PERINGATAN: kernel gagal untuk membaca kembali tabel partisi di %s (%s). "
+#~ "Hasilnya, ini mungkin tidak merefleksikan semua perubahan yang anda "
+#~ "lakukan sampai anda melakukan reboot."
+
+#~ msgid ""
+#~ "Device %s has a logical sector size of %lld.  Not all parts of GNU Parted "
+#~ "support this at the moment, and the working code is HIGHLY EXPERIMENTAL.\n"
+#~ msgstr ""
+#~ "Perangkat %s memiliki ukuran logical sektor %lld. Tidak semua bagian dari "
+#~ "GNU Parted support akan hal ini pada saat ini, dan kode program yang "
+#~ "digunakan saat ini masih TAHAP PERCOBAAN.\n"
+
+#~ msgid ""
+#~ "Could not determine minimum io size for %s: %s.\n"
+#~ "Using the default size (%lld)."
+#~ msgstr ""
+#~ "Tidak dapat menentukan ukuran sektor minimum untuk %s: %s.\n"
+#~ "Menggunakan ukuran sektor baku (%lld)."
+
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: pilihan -- %c tidak valid\n"
+
+#~ msgid ""
+#~ "The kernel was unable to re-read the partition table on %s (%s).  This "
+#~ "means Linux won't know anything about the modifications you made until "
+#~ "you reboot.  You should reboot your computer before doing anything with "
+#~ "%s."
+#~ msgstr ""
+#~ "Kernel tidak dapat membaca kembali tabel partisi pada %s (%s). Ini "
+#~ "berarti Linux tidak akan tahu apapun tentang modifikasi yang anda buat "
+#~ "sampai anda reboot. Anda seharusnya mereboot komputer anda sebelum "
+#~ "melakukan apapun dengan %s."
+
+#~ msgid "Unable to determine the block size of this dasd"
+#~ msgstr "Tidak dapat menentukan ukuran blok dari DASD ini"
+
+#~ msgid "File system has an incompatible feature enabled."
+#~ msgstr "File system memiliki sebuah feature aktif yang tidak kompatibel."
+
+#~ msgid "Unrecognised linux swap signature '%10s'."
+#~ msgstr "linux swap signature tidak diketahui '%10s'."
+
+#~ msgid ""
+#~ "%s read error\n"
+#~ "%s\n"
+#~ msgstr ""
+#~ "%s gagal membaca\n"
+#~ "%s\n"
+
+#~ msgid ""
+#~ "%s write error\n"
+#~ "%s\n"
+#~ msgstr ""
+#~ "%s gagal menulis\n"
+#~ "%s\n"
+
+#~ msgid ""
+#~ "%s IOCTL error\n"
+#~ "%s\n"
+#~ msgstr ""
+#~ "%s IOCTL error\n"
+#~ "%s\n"
+
+#~ msgid ""
+#~ "%s Config file syntax error\n"
+#~ "%s\n"
+#~ msgstr ""
+#~ "%s Terdapat kesalahan di config file\n"
+#~ "%s\n"
+
+#~ msgid ""
+#~ "%s space allocation\n"
+#~ "%s\n"
+#~ msgstr ""
+#~ "%s alokasi ruang\n"
+#~ "%s\n"
+
+#~ msgid ""
+#~ "%s Fatal error\n"
+#~ "%s\n"
+#~ msgstr ""
+#~ "%s Fatal error\n"
+#~ "%s\n"
+
+#~ msgid "File system?"
+#~ msgstr "File system?"
+
+#~ msgid "GNU Parted cannot resize this file system, please useresize2fs."
+#~ msgstr ""
+#~ "GNU Parted tidak dapat mengubah ukuran dari filesystem ini, tolong "
+#~ "gunakan useresize2fs."
+
+#~ msgid "where necessary, prompts for user intervention"
+#~ msgstr "jika diperlukan, tanyakan intervensi pengguna"
+
+#~ msgid "GNU Parted Version information:\n"
+#~ msgstr "Informasi versi dari GNU Parted:\n"
+
+#~ msgid ""
+#~ "print [free|NUMBER|all]                  display the partition table, a "
+#~ "partition, or all devices"
+#~ msgstr ""
+#~ "cetak [NOMOR]                            menampilkan tabel partisi, atau "
+#~ "sebuah partisi"
+
+#~ msgid ""
+#~ "Without arguments, print displays the entire partition table. With "
+#~ "'free'\n"
+#~ "argument, information about free space will be displayed otherwise if a\n"
+#~ "partition number is given, then more detailed information is displayed\n"
+#~ "about that partition. If the 'all' argument is passed instead, partition\n"
+#~ "information for all devices will be displayed.\n"
+#~ msgstr ""
+#~ "Tanpa argumen, menampilkan seluruh tabel partisi. Dengan 'free' "
+#~ "argumen, \n"
+#~ "maka informasi mengenai free space akan ditampilkan sebaliknya jika "
+#~ "sebuah \n"
+#~ "nomor partisi diberikan, maka informasi lebih detail mengenai partisi "
+#~ "tersebut\n"
+#~ "ditampilkan. Jika 'all' argumen di berikan, maka informasi seluruh "
+#~ "partisi pada\n"
+#~ "perangkat akan ditampilkan.\n"
+
+#~ msgid ""
+#~ "The sector size on %s is %d bytes.  Parted is known not to work properly "
+#~ "with drives with sector sizes other than %d bytes."
+#~ msgstr ""
+#~ "Ukuran sektor pada %s adalah %d bytes. Parted tidak dapat bekerja secara "
+#~ "normal dengan drives dengan ukuran sektor selain dari %d bytes."
+
+#~ msgid "IDE"
+#~ msgstr "IDE"
+
+#~ msgid "Attempt to read sectors %ld-%ld outside of partition on %s."
+#~ msgstr "Mencoba untuk membaca sektor %ld-%ld diluar dari partisi pada %s."
+
+#~ msgid ""
+#~ "This ext2 file system has a rather strange layout!  Parted can't resize "
+#~ "this (yet)."
+#~ msgstr ""
+#~ "File system ext2 ini memiliki sebuah layout yang aneh! Parted tidak dapat "
+#~ "menresize ini"
+
+#~ msgid ""
+#~ "You have an HFS+ file system that has a feature that I haven't seen used "
+#~ "anywhere.  Parted can theoretically handle it, but the corresponding code "
+#~ "has never been tested, so this might be risky.  Please email me so I can "
+#~ "see how it works!  <xxx@yyy.zz>"
+#~ msgstr ""
+#~ "Anda memiliki sebuah HFS+ file system yang memiliki feature yang saya "
+#~ "belum pernah lihat sebelumnya dimanapun. Parted secara teori dapat "
+#~ "menanganinya, tetapi kode yang berhubungan dengan itu belum ditest, jadi "
+#~ "ini mungkin beresiko. Tolong email saya sehingga saya bisa tahu jika ini "
+#~ "bekerja! <xxx@yyy.zz>"
+
+#~ msgid ""
+#~ "The extents overflow file should not contain its own extents.  You should "
+#~ "check the file system."
+#~ msgstr ""
+#~ "Extent overflow file seharusnya tidak berisi its own extents. Anda "
+#~ "sebaiknya mengecheck file system."
+
+#~ msgid "Disk geometry for %s: %s - %s\n"
+#~ msgstr "Geometri untuk disk %s: %s - %s\n"
+
+#~ msgid "Disk label type: %s\n"
+#~ msgstr "Tipe disk label: %s\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "\n"
+#~ "You found a bug in GNU Parted.\n"
+#~ "This may have been fixed in the last version of GNU Parted that you can "
+#~ "find at:\n"
+#~ "\thttp://ftp.gnu.org/gnu/parted/\n"
+#~ "If this has not been fixed or if you don't know how to check, please "
+#~ "email:\n"
+#~ "\tbug-parted@gnu.org\n"
+#~ "or (preferably) file a bug report at:\n"
+#~ "\thttp://parted.alioth.debian.org/bugs/\n"
+#~ "Your report should contain the version of this release (%s) along with "
+#~ "the\n"
+#~ "following message and preferably additional information about your "
+#~ "setup.\n"
+#~ "Refer to the web site of parted\n"
+#~ "\thttp://www.gnu.org/software/parted/parted.html\n"
+#~ "for more informations of what could be useful for bug submitting!\n"
+#~ msgstr ""
+#~ "\n"
+#~ "\n"
+#~ "Anda menemukan sebuah bug (kutu) dalam GNU Parted.\n"
+#~ "Ini mungkin sudah dibetulkan dalam versi terakhir dari GNU Parted yang "
+#~ "akan anda temukan di:\n"
+#~ "\thttp://ftp.gnu.org/gnu/parted/\n"
+#~ "Jika ini belum dibetulkan atau anda tidak tahu bagaimana untuk "
+#~ "mengecheck, mohon email:\n"
+#~ "\tbug-parted@gnu.org\n"
+#~ "atau (anda lebih suka) untuk mengirim laporan bug pada:\n"
+#~ "\thttp://parted.alioth.debian.org/bugs/\n"
+#~ "Laporan anda seharusnya berisi versi dari release ini (%s) dengan pesan\n"
+#~ "berikut ini dan lebih disukai dengan informasi tambahan mengenai setup "
+#~ "anda.\n"
+#~ "Lihat ke alamat web site dari parted untuk informasi lebih lanjut\n"
+#~ "\thttp://www.gnu.org/software/parted/parted.html\n"
+#~ "Untuk informasi yang lebih berguna dalam mengirimkan laporan bug (kutu)!\n"
+
+#~ msgid ""
+#~ "This HFS volume has no extents overflow file. This is quite unusual !"
+#~ msgstr "HFS volume tidak memiliki extents overflow file. Ini tidak biasa !"
+
+#~ msgid ""
+#~ "You requested to create a partition at %s - %s. The closest Parted can "
+#~ "manage is %s - %s."
+#~ msgstr ""
+#~ "Anda meminta untuk membuat sebuah partisi pada %s - %s. Pendekatan Parted "
+#~ "yang paling dekat adalah %s - %s."
+
+#~ msgid ""
+#~ "You requested to resize the partition to %s - %s.  The closest Parted can "
+#~ "manage is %s - %s."
+#~ msgstr ""
+#~ "Anda meminta untuk meresize partisi menjadi %s - %s. Parted hanya dapat "
+#~ "mengatasi menjadi yang terdekat adalah %s - %s."
+
+#~ msgid ""
+#~ "You found a bug in GNU Parted.  Please email a bug report to bug-"
+#~ "parted@gnu.org containing the version (%s), and the following message:\n"
+#~ msgstr ""
+#~ "Anda menemukan sebuah bug dalam GNU Parted. Tolong email laporan bug ke  "
+#~ "bug-parted@gnu.org yang berisi versi (%s), dan pesan berikut ini:\n"
diff --git a/po/insert-header.sin b/po/insert-header.sin
new file mode 100644 (file)
index 0000000..b26de01
--- /dev/null
@@ -0,0 +1,23 @@
+# Sed script that inserts the file called HEADER before the header entry.
+#
+# At each occurrence of a line starting with "msgid ", we execute the following
+# commands. At the first occurrence, insert the file. At the following
+# occurrences, do nothing. The distinction between the first and the following
+# occurrences is achieved by looking at the hold space.
+/^msgid /{
+x
+# Test if the hold space is empty.
+s/m/m/
+ta
+# Yes it was empty. First occurrence. Read the file.
+r HEADER
+# Output the file's contents by reading the next line. But don't lose the
+# current line while doing this.
+g
+N
+bb
+:a
+# The hold space was nonempty. Following occurrences. Do nothing.
+x
+:b
+}
diff --git a/po/it.gmo b/po/it.gmo
new file mode 100644 (file)
index 0000000..71aff27
Binary files /dev/null and b/po/it.gmo differ
diff --git a/po/it.po b/po/it.po
new file mode 100644 (file)
index 0000000..632308f
--- /dev/null
+++ b/po/it.po
@@ -0,0 +1,3401 @@
+# Italian translation for the parted package
+# Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+# This file is distributed under the same license as the parted package.
+# Giuseppe Sacco <eppesuig@debian.org>, 2004-2006.
+# Milo Casagrande <milo@casagrande.name>, 2008, 2009, 2010, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: parted 2.4\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2011-05-30 13:45+0200\n"
+"PO-Revision-Date: 2011-05-22 22:28+0200\n"
+"Last-Translator: Milo Casagrande <milo@casagrande.name>\n"
+"Language-Team: Italian <tp@lists.linux.it>\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "argomento %s per %s non valido"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "argomento %s per %s ambiguo"
+
+#: lib/argmatch.c:153
+#, c-format
+msgid "Valid arguments are:"
+msgstr "Argomenti validi sono:"
+
+#: lib/closeout.c:112 libparted/labels/fdasd.c:107
+msgid "write error"
+msgstr "errore di scrittura"
+
+#: lib/error.c:181
+msgid "Unknown system error"
+msgstr "Errore di sistema sconosciuto"
+
+#: lib/getopt.c:548 lib/getopt.c:577
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
+msgstr "%s: l'opzione \"%s\" è ambigua\n"
+
+#: lib/getopt.c:625 lib/getopt.c:629
+#, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s: l'opzione \"--%s\" non accetta un argomento\n"
+
+#: lib/getopt.c:638 lib/getopt.c:643
+#, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr "%s: l'opzione \"%c%s\" non accetta un argomento\n"
+
+#: lib/getopt.c:686 lib/getopt.c:705
+#, c-format
+msgid "%s: option '--%s' requires an argument\n"
+msgstr "%s: l'opzione \"--%s\" richiede un argomento\n"
+
+#: lib/getopt.c:743 lib/getopt.c:746
+#, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s: opzione \"--%s\" non riconosciuta\n"
+
+#: lib/getopt.c:754 lib/getopt.c:757
+#, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "%s: opzione \"%c%s\" non riconosciuta\n"
+
+#: lib/getopt.c:806 lib/getopt.c:809
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: opzione non valida -- \"%c\"\n"
+
+#: lib/getopt.c:859 lib/getopt.c:876 lib/getopt.c:1084 lib/getopt.c:1102
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: l'opzione richiede un argomento -- \"%c\"\n"
+
+#: lib/getopt.c:932 lib/getopt.c:948
+#, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s: l'opzione \"-W %s\" è ambigua\n"
+
+#: lib/getopt.c:972 lib/getopt.c:990
+#, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr "%s: l'opzione \"-W %s\" non accetta un argomento\n"
+
+#: lib/getopt.c:1011 lib/getopt.c:1029
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: l'opzione \"-W %s\" richiede un argomento\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:271
+msgid "`"
+msgstr "\""
+
+#: lib/quotearg.c:272
+msgid "'"
+msgstr "\""
+
+#: lib/regcomp.c:133
+msgid "Success"
+msgstr "Successo"
+
+#: lib/regcomp.c:136
+msgid "No match"
+msgstr "Nessuna corrispondenza"
+
+#: lib/regcomp.c:139
+msgid "Invalid regular expression"
+msgstr "Espressione regolare non valida"
+
+# (ndt) http://en.wikipedia.org/wiki/Collation
+#: lib/regcomp.c:142
+msgid "Invalid collation character"
+msgstr "Carattere di collazione non valido"
+
+#: lib/regcomp.c:145
+msgid "Invalid character class name"
+msgstr "Nome classe del carattere non valida"
+
+#: lib/regcomp.c:148
+msgid "Trailing backslash"
+msgstr "Backslash finale"
+
+# (ndt) hmmm....
+#: lib/regcomp.c:151
+msgid "Invalid back reference"
+msgstr "Riferimento all'indietro non valido"
+
+#: lib/regcomp.c:154
+msgid "Unmatched [ or [^"
+msgstr "[ o [^ senza corrispondenza"
+
+#: lib/regcomp.c:157
+msgid "Unmatched ( or \\("
+msgstr "( o \\( senza corrispondenza"
+
+#: lib/regcomp.c:160
+msgid "Unmatched \\{"
+msgstr "\\{ senza corrispondenza"
+
+#: lib/regcomp.c:163
+msgid "Invalid content of \\{\\}"
+msgstr "Contenuto di \\{\\} non valido"
+
+#: lib/regcomp.c:166
+msgid "Invalid range end"
+msgstr "Limite massimo non valido"
+
+#: lib/regcomp.c:169
+msgid "Memory exhausted"
+msgstr "Memoria esaurita"
+
+#: lib/regcomp.c:172
+msgid "Invalid preceding regular expression"
+msgstr "Espressione regolare precedente non valida"
+
+#: lib/regcomp.c:175
+msgid "Premature end of regular expression"
+msgstr "Fine prematura dell'espressione regolare"
+
+#: lib/regcomp.c:178
+msgid "Regular expression too big"
+msgstr "Espressione regolare troppo grande"
+
+#: lib/regcomp.c:181
+msgid "Unmatched ) or \\)"
+msgstr ") o \\) senza corrispondenza"
+
+#: lib/regcomp.c:702
+msgid "No previous regular expression"
+msgstr "Nessuna espressione regolare precedente"
+
+#. TRANSLATORS: A regular expression testing for an affirmative answer
+#. (english: "yes").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^yesexpr='
+#: lib/rpmatch.c:147
+msgid "^[yY]"
+msgstr "^[sSyY]"
+
+#. TRANSLATORS: A regular expression testing for a negative answer
+#. (english: "no").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^noexpr='
+#: lib/rpmatch.c:160
+msgid "^[nN]"
+msgstr "^[nN]"
+
+#: lib/version-etc.c:74
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Pacchetto creato da %s (%s)\n"
+
+#: lib/version-etc.c:77
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Pacchetto creato da %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale.  Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:84
+msgid "(C)"
+msgstr "©"
+
+#: lib/version-etc.c:86
+msgid ""
+"\n"
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"\n"
+"Licenza GPLv3+: GNU GPL versione 3 o successiva <http://gnu.org/licenses/gpl."
+"html>.\n"
+"Questo programma è software libero: siete liberi di modificarlo e "
+"ridistribuirlo.\n"
+"Non c'è ALCUNA GARANZIA, per quanto consentito dalle vigenti normative.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:102
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Scritto da %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:106
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Scritto da %s e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:110
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Scritto da %s, %s e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Scritto da %s, %s, %s\n"
+"e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Scritto da %s, %s, %s,\n"
+"%s e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:131
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Scritto da %s, %s, %s,\n"
+"%s, %s e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:139
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Scritto da %s, %s, %s,\n"
+"%s, %s, %s e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:147
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Scritto da %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:156
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Scritto da %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:167
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Scritto da %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s e altri.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package.  Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:245
+#, c-format
+msgid ""
+"\n"
+"Report bugs to: %s\n"
+msgstr ""
+"\n"
+"Segnalare i bug a: %s\n"
+
+#: lib/version-etc.c:247
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "Segnalare i bug di %s a: %s\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Sito web di %s: <%s>\n"
+
+#: lib/version-etc.c:253
+#, c-format
+msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
+msgstr "Sito web di %s: <http://www.gnu.org/software/%s/>\n"
+
+#: lib/version-etc.c:256
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
+msgstr "Aiuto per l'utilizzo di software GNU: <http://www.gnu.org/gethelp/>\n"
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "memoria esaurita"
+
+#: lib/xstrtol-error.c:63
+#, c-format
+msgid "invalid %s%s argument `%s'"
+msgstr "l'argomento \"%3$s\" di %1$s%2$s non è valido"
+
+#: lib/xstrtol-error.c:68
+#, c-format
+msgid "invalid suffix in %s%s argument `%s'"
+msgstr "il suffisso nell'argomento \"%3$s\" di %1$s%2$s non è valido"
+
+#: lib/xstrtol-error.c:72
+#, c-format
+msgid "%s%s argument `%s' too large"
+msgstr "l'argomento \"%3$s\" di %1$s%2$s è troppo grande"
+
+#: libparted/arch/beos.c:245
+msgid "Disk Image"
+msgstr "Immagine disco"
+
+#: libparted/arch/beos.c:346 libparted/arch/gnu.c:277
+#: libparted/arch/linux.c:1545
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "Errore nell'aprire %s: %s"
+
+#: libparted/arch/beos.c:357 libparted/arch/gnu.c:287
+#: libparted/arch/linux.c:1556
+#, c-format
+msgid "Unable to open %s read-write (%s).  %s has been opened read-only."
+msgstr ""
+"Impossibile aprire %s in lettura-scrittura (%s). %s è stato aperto in sola "
+"lettura."
+
+#: libparted/arch/beos.c:419 libparted/arch/linux.c:1714
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s durante il posizionamento per la lettura su %s"
+
+#: libparted/arch/beos.c:452 libparted/arch/gnu.c:465 libparted/arch/gnu.c:564
+#: libparted/arch/gnu.c:692 libparted/arch/linux.c:1674
+#: libparted/arch/linux.c:1755
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s durante la lettura su %s"
+
+#: libparted/arch/beos.c:488 libparted/arch/gnu.c:525
+#: libparted/arch/linux.c:1831
+#, c-format
+msgid "Can't write to %s, because it is opened read-only."
+msgstr "Impossibile scrivere su %s poiché è stato aperto in sola lettura."
+
+#: libparted/arch/beos.c:504 libparted/arch/linux.c:1856
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s durante il posizionamento per la scrittura su %s"
+
+#: libparted/arch/beos.c:541 libparted/arch/gnu.c:601 libparted/arch/gnu.c:646
+#: libparted/arch/gnu.c:723 libparted/arch/linux.c:1804
+#: libparted/arch/linux.c:1898 libparted/arch/linux.c:1970
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s durante la scrittura su %s"
+
+#: partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Usare \"%s --help\" per ulteriori informazioni.\n"
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr "Uso: %s [OPZIONI] [DEVICE]...\n"
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the operating system about partition table changes.\n"
+"\n"
+"  -d, --dry-run    do not actually inform the operating system\n"
+"  -s, --summary    print a summary of contents\n"
+"  -h, --help       display this help and exit\n"
+"  -v, --version    output version information and exit\n"
+msgstr ""
+"Informa il sistema operativo riguardo i cambiamenti nella tabella delle "
+"partizioni.\n"
+"\n"
+"  -d, --dry-run    Non informa il sistema operativo\n"
+"  -s, --summary    Stampa un sommario dei contenuti\n"
+"  -h, --help       Visualizza questo aiuto ed esce\n"
+"  -v, --version    Stampa la versione ed esce\n"
+
+#: partprobe/partprobe.c:150
+msgid ""
+"\n"
+"When no DEVICE is given, probe all partitions.\n"
+msgstr ""
+"\n"
+"Quando non viene fornito alcun DEVICE, rileva tutte le partizioni.\n"
+
+#: partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Segnalare i bug a <%s>.\n"
+
+#: libparted/arch/gnu.c:110
+#, c-format
+msgid "Unable to open %s."
+msgstr "Impossibile aprire %s."
+
+#: libparted/arch/gnu.c:130
+msgid "Unable to probe store."
+msgstr "Impossibile rilevare il dispositivo di archiviazione."
+
+#: libparted/arch/gnu.c:368
+msgid ""
+"The partition table cannot be re-read.  This means you need to reboot before "
+"mounting any modified partitions.  You also need to reinstall your boot "
+"loader before you reboot (which may require mounting modified partitions).  "
+"It is impossible do both things!  So you'll need to boot off a rescue disk, "
+"and reinstall your boot loader from the rescue disk.  Read section 4 of the "
+"Parted User documentation for more information."
+msgstr ""
+"Impossibile rileggere la tabella delle partizioni; per poter montare le "
+"partizioni modificate è necessario riavviare il computer. Prima del riavvio "
+"è anche necessario installare nuovamente il \"boot loader\" (potrebbe "
+"richiedere di montare le partizioni modificate). Poiché non è possibile "
+"svolgere entrambe le operazioni, avviare il computer da un disco di "
+"ripristino e installare il \"boot loader\" da tale disco. Per maggiori "
+"informazioni, consultare la sezione 4 della documentazione di Parted."
+
+#: libparted/arch/gnu.c:385
+#, c-format
+msgid ""
+"The partition table on %s cannot be re-read (%s).  This means the Hurd knows "
+"nothing about any modifications you made.  You should reboot your computer "
+"before doing anything with %s."
+msgstr ""
+"La tabella delle partizioni su %s (%s) non può essere riletta. Questo "
+"significa che le modifiche effettuate non saranno note a Hurd. Riavviare il "
+"computer prima di fare qualsiasi cosa con %s."
+
+#: libparted/arch/gnu.c:396 parted/parted.c:1967
+msgid ""
+"You should reinstall your boot loader before rebooting.  Read section 4 of "
+"the Parted User documentation for more information."
+msgstr ""
+"Prima di riavviare è utile reinstallare il \"boot loader\". Per maggiori "
+"informazioni, consultare la sezione 4 della documentazione di Parted."
+
+#: libparted/arch/gnu.c:788
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%s nel tentativo di sincronizzare %s sul disco"
+
+#: libparted/arch/linux.c:520
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "Impossibile fare stat del device %s - %s."
+
+#: libparted/arch/linux.c:577
+#, c-format
+msgid "Unable to determine the dm type of %s."
+msgstr "Impossibile determinare il tipo dm di %s."
+
+#: libparted/arch/linux.c:669
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+"Impossibile determinare la dimensione del settore per %s: %s.\n"
+"Verrà utilizzata la dimensione predefinita (%lld)."
+
+#: libparted/arch/linux.c:690
+#, c-format
+msgid ""
+"Could not determine physical sector size for %s.\n"
+"Using the logical sector size (%lld)."
+msgstr ""
+"Impossibile determinare la dimensione fisica del settore per %s.\n"
+"Verrà utilizzata la dimensione logica (%lld)."
+
+#: libparted/arch/linux.c:746
+#, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "Impossibile determinare la dimensione di %s (%s)."
+
+#: libparted/arch/linux.c:832
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "Impossibile identificare il device %s -%s"
+
+#: libparted/arch/linux.c:841
+msgid "Generic IDE"
+msgstr "IDE generico"
+
+#: libparted/arch/linux.c:862
+#, c-format
+msgid ""
+"Device %s has multiple (%d) logical sectors per physical sector.\n"
+"GNU Parted supports this EXPERIMENTALLY for some special disk label/file "
+"system combinations, e.g. GPT and ext2/3.\n"
+"Please consult the web site for up-to-date information."
+msgstr ""
+"Il device %s ha settori logici multipli (%d) per ogni settore fisico.\n"
+"Il supporto a questa configurazione è SPERIMENTALE e solo per alcune "
+"combinazioni di tipi di etichetta/file system, come GPT ed ext2/3.\n"
+"Per maggiori informazioni, consultare il sito web."
+
+#: libparted/arch/linux.c:1039
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "Errore nell'inizializzare il device SCSI %s - %s"
+
+#: libparted/arch/linux.c:1103
+#, c-format
+msgid ""
+"The device %s is so small that it cannot possibly store a file system or "
+"partition table.  Perhaps you selected the wrong device?"
+msgstr ""
+"Il device %s è così piccolo che probabilmente non può contenere un file "
+"system o una tabella delle partizioni. È stato selezionato il device errato?"
+
+#: libparted/arch/linux.c:1216
+#, c-format
+msgid ""
+"Unable to determine geometry of file/device %s.  You should not use Parted "
+"unless you REALLY know what you're doing!"
+msgstr ""
+"Impossibile determinare la geometria del file/device %s. L'uso di questo "
+"programma è sconsigliato a meno che non si sappia VERAMENTE cosa si sta "
+"facendo."
+
+#: libparted/arch/linux.c:1276
+msgid "Generic SD/MMC Storage Card"
+msgstr "Scheda di archiviazione SD/MMC generica"
+
+#: libparted/arch/linux.c:1329
+msgid "DAC960 RAID controller"
+msgstr "Controller RAID DAC960"
+
+#: libparted/arch/linux.c:1334
+msgid "Promise SX8 SATA Device"
+msgstr "Dispositivo Promise SX8 SATA"
+
+#: libparted/arch/linux.c:1339
+msgid "ATA over Ethernet Device"
+msgstr "Dispositivo ATA over Ethernet"
+
+#: libparted/arch/linux.c:1345
+msgid "IBM S390 DASD drive"
+msgstr "Drive IBM S390 DASD"
+
+#: libparted/arch/linux.c:1351
+msgid "IBM iSeries Virtual DASD"
+msgstr "IBM iSeries Virtual DASD"
+
+#: libparted/arch/linux.c:1356
+msgid "Compaq Smart Array"
+msgstr "Compaq Smart Array"
+
+#: libparted/arch/linux.c:1361
+msgid "ATARAID Controller"
+msgstr "Controller ATARAID"
+
+#: libparted/arch/linux.c:1366
+msgid "I2O Controller"
+msgstr "Controller I2O"
+
+#: libparted/arch/linux.c:1371
+msgid "User-Mode Linux UBD"
+msgstr "User-Mode Linux UBD"
+
+#: libparted/arch/linux.c:1384
+#, c-format
+msgid "Linux device-mapper (%s)"
+msgstr "Device-mapper Linux (%s)"
+
+#: libparted/arch/linux.c:1395
+msgid "Xen Virtual Block Device"
+msgstr "Device a blocchi Xen Virtual"
+
+#: libparted/arch/linux.c:1400
+msgid "Unknown"
+msgstr "Sconosciuto"
+
+#: libparted/arch/linux.c:1409
+msgid "Virtio Block Device"
+msgstr "Device a blocchi Virtio"
+
+#: libparted/arch/linux.c:1414
+msgid "Linux Software RAID Array"
+msgstr "Array RAID software Linux"
+
+#: libparted/arch/linux.c:1421
+msgid "ped_device_new()  Unsupported device type"
+msgstr "ped_device_new() Tipo di device non supportato"
+
+#: libparted/arch/linux.c:1518 libparted/arch/linux.c:1590
+#, c-format
+msgid "Error fsyncing/closing %s: %s"
+msgstr "Errore nell'eseguire fsync o nel chiudere %s: %s"
+
+#: libparted/arch/linux.c:1754
+#, c-format
+msgid "end of file while reading %s"
+msgstr "raggiunta la fine del file durante la lettura di %s"
+
+#: libparted/arch/linux.c:2390
+#, c-format
+msgid ""
+"Error informing the kernel about modifications to partition %s -- %s.  This "
+"means Linux won't know about any changes you made to %s until you reboot -- "
+"so you shouldn't mount it or use it in any way before rebooting."
+msgstr ""
+"Errore nell'informare il kernel delle modifiche alla partizione %s -- %s. "
+"Questo significa che le modifiche apportate a %s non saranno note fino al "
+"successivo riavvio: è consigliato non eseguire il mount o usare il "
+"dispositivo prima del riavvio."
+
+#: libparted/arch/linux.c:2528
+#, c-format
+msgid "Unable to determine the size and length of %s."
+msgstr "Impossibile determinare la dimensione e la lunghezza di %s."
+
+#: libparted/arch/linux.c:2553
+#, c-format
+msgid "Failed to add partition %d (%s)"
+msgstr "Aggiunta della partizione %d non riuscita (%s)"
+
+#: libparted/arch/linux.c:2580
+#, c-format
+msgid ""
+"Partition(s) %s on %s have been written, but we have been unable to inform "
+"the kernel of the change, probably because it/they are in use.  As a result, "
+"the old partition(s) will remain in use.  You should reboot now before "
+"making further changes."
+msgstr ""
+"Le partizioni %s su %s sono state scritte, ma non è stato possibile "
+"informare il kernel della modifica, probabilmente poiché sono in uso: "
+"restano in uso le vecchie partizioni. È consigliato riavviare ora prima di "
+"eseguire ulteriori modifiche."
+
+#: libparted/arch/linux.c:2706
+#, c-format
+msgid ""
+"parted was unable to re-read the partition table on %s (%s).  This means "
+"Linux won't know anything about the modifications you made. "
+msgstr ""
+"Il programma non ha potuto rileggere la tabella delle partizioni su %s (%s). "
+"Questo significa che Linux non sarà al corrente dei cambiamenti fatti."
+
+#: libparted/cs/geom.c:161
+#, c-format
+msgid "Can't have the end before the start! (start sector=%jd length=%jd)"
+msgstr ""
+"Impossibile avere la fine prima dell'inizio (settore iniziale=%jd lunghezza="
+"%jd)."
+
+#: libparted/cs/geom.c:169
+msgid "Can't have a partition outside the disk!"
+msgstr "Impossibile avere una partizione al di fuori del disco."
+
+#: libparted/cs/geom.c:384
+#, c-format
+msgid "Attempt to write sectors %ld-%ld outside of partition on %s."
+msgstr ""
+"Tentativo di scrivere i settori %ld-%ld al di fuori della partizione su %s."
+
+#: libparted/cs/geom.c:424
+msgid "checking for bad blocks"
+msgstr "controllo dei blocchi danneggiati"
+
+#: libparted/debug.c:96
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr "Backtrace ha %d chiamate sullo stack:\n"
+
+#: libparted/debug.c:109
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr "Asserzione (%s) in %s:%d nella funzione %s() non riuscita."
+
+#: libparted/disk.c:192
+#, c-format
+msgid "%s: unrecognised disk label"
+msgstr "%s: etichetta del disco non riconosciuta"
+
+#: libparted/disk.c:484
+#, c-format
+msgid ""
+"This libparted doesn't have write support for %s.  Perhaps it was compiled "
+"read-only."
+msgstr ""
+"Questa versione di libparted non dispone del supporto alla scrittura per %s. "
+"Potrebbe essere stato compilato in sola lettura."
+
+#: libparted/disk.c:629
+#, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "La partizione %d è %s, ma il file system è %s."
+
+# (ndt) lasciare non tradotto?
+#: libparted/disk.c:838
+msgid "cylinder_alignment"
+msgstr "cylinder_alignment"
+
+#: libparted/disk.c:844
+#, c-format
+msgid "Unknown disk flag, %d."
+msgstr "Flag del disco %d sconosciuto."
+
+#: libparted/disk.c:1283
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "Le etichette dei dischi %s non supportano le partizioni estese."
+
+#: libparted/disk.c:1858
+#, c-format
+msgid "%s disk labels don't support logical or extended partitions."
+msgstr ""
+"Le etichette dei dischi %s non supportano le partizioni estese o logiche."
+
+#: libparted/disk.c:1871
+msgid "Too many primary partitions."
+msgstr "Troppe partizioni primarie."
+
+#: libparted/disk.c:1880
+#, c-format
+msgid ""
+"Can't add a logical partition to %s, because there is no extended partition."
+msgstr ""
+"Impossibile aggiungere una partizione logica a %s poiché non ci sono "
+"partizioni estese."
+
+#: libparted/disk.c:1904
+#, c-format
+msgid "Can't have more than one extended partition on %s."
+msgstr "Impossibile avere più di una partizione estesa su %s."
+
+#: libparted/disk.c:1914
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr ""
+"Impossibile avere partizioni logiche al di fuori della partizione estesa."
+
+#: libparted/disk.c:1939
+#, c-format
+msgid "Can't have a logical partition outside of the extended partition on %s."
+msgstr ""
+"Impossibile avere una partizione logica esterna alla partizione estesa su %s."
+
+#: libparted/disk.c:1949 libparted/disk.c:2008 libparted/disk.c:2186
+msgid "Can't have overlapping partitions."
+msgstr "Impossibile avere partizioni che si sovrappongono."
+
+#: libparted/disk.c:1957
+msgid "Can't have a primary partition inside an extended partition."
+msgstr "Impossibile avere una partizione primaria all'interno di una estesa."
+
+#: libparted/disk.c:2387
+msgid "metadata"
+msgstr "metadati"
+
+#: libparted/disk.c:2389
+msgid "free"
+msgstr "libero"
+
+#: libparted/disk.c:2391 parted/ui.c:1194 parted/ui.c:1222
+msgid "extended"
+msgstr "estesa"
+
+#: libparted/disk.c:2393 parted/ui.c:1198 parted/ui.c:1226
+msgid "logical"
+msgstr "logica"
+
+#: libparted/disk.c:2395 parted/ui.c:1190 parted/ui.c:1218
+msgid "primary"
+msgstr "primaria"
+
+#: libparted/disk.c:2411
+msgid "boot"
+msgstr "avvio"
+
+#: libparted/disk.c:2413
+msgid "bios_grub"
+msgstr "bios_grub"
+
+#: libparted/disk.c:2415
+msgid "root"
+msgstr "root"
+
+#: libparted/disk.c:2417
+msgid "swap"
+msgstr "swap"
+
+#: libparted/disk.c:2419
+msgid "hidden"
+msgstr "nascosta"
+
+#: libparted/disk.c:2421
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2423
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2425
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2427
+msgid "hp-service"
+msgstr "hp-service"
+
+#: libparted/disk.c:2429
+msgid "palo"
+msgstr "palo"
+
+#: libparted/disk.c:2431
+msgid "prep"
+msgstr "prep"
+
+#: libparted/disk.c:2433
+msgid "msftres"
+msgstr "msftres"
+
+#: libparted/disk.c:2435
+msgid "atvrecv"
+msgstr "atvrecv"
+
+#: libparted/disk.c:2437
+msgid "diag"
+msgstr "diag"
+
+#: libparted/disk.c:2439
+msgid "legacy_boot"
+msgstr "legacy_boot"
+
+#: libparted/disk.c:2445
+#, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Flag di partizione %d sconosciuto."
+
+#: libparted/exception.c:77
+msgid "Information"
+msgstr "Informazioni"
+
+#: libparted/exception.c:78
+msgid "Warning"
+msgstr "Avviso"
+
+#: libparted/exception.c:79
+msgid "Error"
+msgstr "Errore"
+
+#: libparted/exception.c:80
+msgid "Fatal"
+msgstr "Irrimediabile"
+
+#: libparted/exception.c:81
+msgid "Bug"
+msgstr "Bug"
+
+#: libparted/exception.c:82
+msgid "No Implementation"
+msgstr "Non implementato"
+
+#: libparted/exception.c:86
+msgid "Fix"
+msgstr "Ripara"
+
+#: libparted/exception.c:87
+msgid "Yes"
+msgstr "Sì"
+
+#: libparted/exception.c:88
+msgid "No"
+msgstr "No"
+
+#: libparted/exception.c:89
+msgid "OK"
+msgstr "OK"
+
+#: libparted/exception.c:90
+msgid "Retry"
+msgstr "Riprova"
+
+#: libparted/exception.c:91
+msgid "Ignore"
+msgstr "Ignora"
+
+#: libparted/exception.c:92
+msgid "Cancel"
+msgstr "Annulla"
+
+#: libparted/exception.c:132
+#, c-format
+msgid ""
+"A bug has been detected in GNU Parted.  Refer to the web site of parted "
+"http://www.gnu.org/software/parted/parted.html for more information of what "
+"could be useful for bug submitting!  Please email a bug report to %s "
+"containing at least the version (%s) and the following message:  "
+msgstr ""
+"È stato trovato un bug di GNU Parted. Controllare il sito web http://www.gnu."
+"org/software/parted/parted.html per maggiori informazioni su cosa è utile "
+"comunicare nelle segnalazioni. Segnalare un bug a %s specificando almeno la "
+"versione (%s) e il seguente messaggio:  "
+
+#: libparted/labels/aix.c:103
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr ""
+"Il supporto per leggere etichette dei dischi AIX non è ancora stato "
+"implementato."
+
+#: libparted/labels/aix.c:114
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr ""
+"Il supporto per scrivere etichette dei dischi AIX non è ancora stato "
+"implementato."
+
+#: libparted/labels/aix.c:127
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr ""
+"Il supporto per aggiungere partizioni alle etichette dei dischi AIX non è "
+"ancora stato implementato."
+
+#: libparted/labels/aix.c:137
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr ""
+"Il supporto per duplicare partizioni in etichette dei dischi AIX non è "
+"ancora stato implementato."
+
+#: libparted/labels/aix.c:155
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr ""
+"Il supporto per impostare il tipo di sistema delle partizioni in etichette "
+"dei dischi AIX non è ancora stato implementato."
+
+#: libparted/labels/aix.c:165
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr ""
+"Il supporto per impostare i flag in etichette dei dischi AIX non è ancora "
+"stato implementato."
+
+#: libparted/labels/bsd.c:571 libparted/labels/dasd.c:833
+#: libparted/labels/dos.c:2176 libparted/labels/dvh.c:787
+#: libparted/labels/gpt.c:1782 libparted/labels/loop.c:247
+#: libparted/labels/mac.c:1426 libparted/labels/pc98.c:748
+#: libparted/labels/rdb.c:1052 libparted/labels/sun.c:780
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "Impossibile soddisfare tutti i vincoli sulla partizione."
+
+#: libparted/labels/bsd.c:596
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "Impossibile allocare uno spazio per un'etichetta bsd."
+
+#: libparted/labels/dasd.c:859
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "Impossibile allocare uno spazio per un'etichetta dasd"
+
+#: libparted/labels/dos.c:966
+#, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr "Tabella delle partizioni su %s non valida -- firma %x errata."
+
+#: libparted/labels/dos.c:994
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "Tabella della partizioni non valida - partizione ricorsiva su %s."
+
+#: libparted/labels/dos.c:1504
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr "Le partizioni estese non possono essere nascoste su etichette MS-DOS."
+
+#: libparted/labels/dos.c:2158
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr "Impossibile ridimensionare partizioni gestite da Windows Dynamic Disk."
+
+#: libparted/labels/dvh.c:200
+#, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr "%s non ha partizioni estese (volume header partition)."
+
+#: libparted/labels/dvh.c:326
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr "Checksum errato; la tabella delle partizioni è danneggiata."
+
+#: libparted/labels/dvh.c:631
+msgid "Only primary partitions can be root partitions."
+msgstr "Solo le partizioni primarie possono essere partizioni di root."
+
+#: libparted/labels/dvh.c:645
+msgid "Only primary partitions can be swap partitions."
+msgstr "Solo le partizioni primarie possono essere partizioni di swap."
+
+#: libparted/labels/dvh.c:659
+msgid "Only logical partitions can be a boot file."
+msgstr "Solo le partizioni logiche possono essere file di avvio."
+
+#: libparted/labels/dvh.c:736
+#, c-format
+msgid ""
+"failed to set dvh partition name to %s:\n"
+"Only logical partitions (boot files) have a name."
+msgstr ""
+"Impostazione del nome della partizione dvh a %s non riuscita:\n"
+"solo le partizioni logiche (file di avvio) hanno un nome."
+
+#: libparted/labels/dvh.c:829
+msgid "Too many primary partitions"
+msgstr "Troppe partizioni primarie"
+
+# (ndt) o forse è il caso di rendere in italiano?
+# errore di apertura
+#: libparted/labels/fdasd.c:98
+msgid "open error"
+msgstr "errore di \"open\""
+
+#: libparted/labels/fdasd.c:101
+msgid "seek error"
+msgstr "errore di \"seek\""
+
+#: libparted/labels/fdasd.c:104
+msgid "read error"
+msgstr "errore di \"read\""
+
+#: libparted/labels/fdasd.c:110
+msgid "ioctl() error"
+msgstr "errore di \"ioctl()\""
+
+#: libparted/labels/fdasd.c:114
+msgid "API version mismatch"
+msgstr "Corrispondenza versione API non corretta"
+
+#: libparted/labels/fdasd.c:118
+msgid "Unsupported disk type"
+msgstr "Tipo di disco non supportato"
+
+#: libparted/labels/fdasd.c:122
+msgid "Unsupported disk format"
+msgstr "Formato del disco non supportato"
+
+#: libparted/labels/fdasd.c:126
+msgid "Disk is in use"
+msgstr "Disco in uso"
+
+#: libparted/labels/fdasd.c:130
+msgid "Syntax error in config file"
+msgstr "Errore di sintassi nel file di configurazione"
+
+#: libparted/labels/fdasd.c:134
+msgid "Volume label is corrupted"
+msgstr "L'etichetta del volume è danneggiata"
+
+# (ndt) ????
+#: libparted/labels/fdasd.c:138
+msgid "A data set name is corrupted"
+msgstr "Il nome di un data set è danneggiato"
+
+#: libparted/labels/fdasd.c:142
+msgid "Memory allocation failed"
+msgstr "Allocazione memoria non riuscita"
+
+#: libparted/labels/fdasd.c:146
+msgid "Device verification failed"
+msgstr "Verifica del device non riuscita"
+
+#: libparted/labels/fdasd.c:147
+msgid "The specified device is not a valid DASD device"
+msgstr "Il device specificato non è un device DASD valido"
+
+#: libparted/labels/fdasd.c:150 libparted/labels/vtoc.c:179
+msgid "Fatal error"
+msgstr "Errore irrimediabile"
+
+# (ndt) ?
+#: libparted/labels/fdasd.c:226
+msgid "No room for volume label."
+msgstr "Spazio insufficiente per l'etichetta di volume."
+
+#: libparted/labels/fdasd.c:234
+msgid "No room for partition info."
+msgstr "Spazio insufficiente per le informazioni sulla partizione."
+
+#: libparted/labels/fdasd.c:709
+msgid "Invalid VTOC."
+msgstr "VTOC non valido."
+
+#: libparted/labels/fdasd.c:766
+msgid "Could not retrieve API version."
+msgstr "Impossibile recuperare la versione delle API."
+
+#: libparted/labels/fdasd.c:769
+#, c-format
+msgid ""
+"The current API version '%d' doesn't match dasd driver API version '%d'!"
+msgstr ""
+"La versione \"%d\" delle API correnti non corrisponde alla versione \"%d\" "
+"delle API del driver dasd."
+
+#: libparted/labels/fdasd.c:806
+msgid "Could not retrieve disk geometry information."
+msgstr "Impossibile recuperare informazioni sulla geometria del disco."
+
+#: libparted/labels/fdasd.c:810
+msgid "Could not retrieve blocksize information."
+msgstr "Impossibile recuperare informazioni sulla dimensione del blocco."
+
+#: libparted/labels/fdasd.c:815
+msgid "Could not retrieve disk information."
+msgstr "Impossibile recuperare informazioni sul disco."
+
+# (ndt) il pezzo di codice indica 'dev->path'... quindi presumo si il device
+#: libparted/labels/gpt.c:493
+#, c-format
+msgid ""
+"%s contains GPT signatures, indicating that it has a GPT table.  However, it "
+"does not have a valid fake msdos partition table, as it should.  Perhaps it "
+"was corrupted -- possibly by a program that doesn't understand GPT partition "
+"tables.  Or perhaps you deleted the GPT table, and are now using an msdos "
+"partition table.  Is this a GPT partition table?"
+msgstr ""
+"Il device %s contiene delle firme GPT, indicando che si tratta di una "
+"tabella GPT, ma non dispone di una finta tabella delle partizioni msdos come "
+"dovrebbe. Forse è stata danneggiata da un programma che non riconosce le "
+"tabelle delle partizioni GPT, oppure è stata eliminata la tabella GPT ed è "
+"ora in uso quella MS-DOS. È questa una tabella delle partizioni GPT?"
+
+#: libparted/labels/gpt.c:693
+#, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise.  Please report this!"
+msgstr ""
+"La versione del formato della tabella delle partizioni GPT è %x, successiva "
+"a quelle note al programma. Segnalare questo problema."
+
+#: libparted/labels/gpt.c:740
+#, c-format
+msgid ""
+"Not all of the space available to %s appears to be used, you can fix the GPT "
+"to use all of the space (an extra %llu blocks) or continue with the current "
+"setting? "
+msgstr ""
+"Non tutto lo spazio disponibile in %s sembra essere usato. Correggere GPT "
+"affinché utilizzi tutto lo spazio (ulteriori %llu blocchi) o continuare con "
+"le impostazioni attuali?"
+
+#: libparted/labels/gpt.c:952
+msgid ""
+"The backup GPT table is not at the end of the disk, as it should be.  This "
+"might mean that another operating system believes the disk is smaller.  Fix, "
+"by moving the backup to the end (and removing the old backup)?"
+msgstr ""
+"La copia di backup della tabella GPT non è presente, come dovrebbe, alla "
+"fine del disco. Questo potrebbe voler dire che un altro sistema operativo "
+"pensa che il disco sia più piccolo. Correggere il problema spostando la "
+"copia alla fine (e rimuovendo quella vecchia)?"
+
+#: libparted/labels/gpt.c:976
+msgid ""
+"Both the primary and backup GPT tables are corrupt.  Try making a fresh "
+"table, and using Parted's rescue feature to recover partitions."
+msgstr ""
+"Sia la tabella GPT principale che quella di backup sono danneggiate. Provare "
+"a crearne una nuova e, tramite le funzionalità di ripristino del programma, "
+"recuperare le partizioni."
+
+#: libparted/labels/gpt.c:987
+msgid ""
+"The backup GPT table is corrupt, but the primary appears OK, so that will be "
+"used."
+msgstr ""
+"La tabella GPT di backup è danneggiata, ma quella principale sembra corretta "
+"e verrà utilizzata."
+
+#: libparted/labels/gpt.c:999
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr ""
+"La tabella GPT principale è danneggiata, ma la copia di backup sembra "
+"corretta e verrà utilizzata."
+
+# (ndt) aiuto!!! idee sul vero significato della frase?
+#: libparted/labels/gpt.c:1023
+msgid "primary partition table array CRC mismatch"
+msgstr ""
+"CRC non corrispondente nella tabella delle partizioni primaria dell'array"
+
+#: libparted/labels/mac.c:184
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Firma %x non valida per le etichette dei dischi Mac."
+
+#: libparted/labels/mac.c:231
+msgid "Partition map has no partition map entry!"
+msgstr "La mappa delle partizioni non ha elementi."
+
+#: libparted/labels/mac.c:279
+#, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr "%s è troppo piccolo per un'etichetta di disco Mac."
+
+#: libparted/labels/mac.c:508
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "La partizione %d ha una firma non valida %x."
+
+#: libparted/labels/mac.c:526
+#, c-format
+msgid "Partition %d has an invalid length of 0 bytes!"
+msgstr "La partizione %d ha una lunghezza non valida di 0 byte."
+
+#: libparted/labels/mac.c:557
+msgid "The data region doesn't start at the start of the partition."
+msgstr "La regione dei dati non comincia all'inizio della partizione."
+
+#: libparted/labels/mac.c:574
+msgid "The boot region doesn't start at the start of the partition."
+msgstr "La regione di avvio non comincia all'inizio della partizione."
+
+#: libparted/labels/mac.c:588
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr "La regione di avvio della partizione non occupa l'intera partizione."
+
+#: libparted/labels/mac.c:599
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr "La regione dati della partizione non occupa l'intera partizione."
+
+#: libparted/labels/mac.c:652
+#, c-format
+msgid ""
+"Weird block size on device descriptor: %d bytes is not divisible by 512."
+msgstr ""
+"Dimensione del blocco nel descrittore del device inusuale: %d byte non è "
+"divisibile per 512."
+
+#: libparted/labels/mac.c:665
+#, c-format
+msgid ""
+"The driver descriptor says the physical block size is %d bytes, but Linux "
+"says it is %d bytes."
+msgstr ""
+"Il descrittore del driver indica che la dimensione del blocco fisico è di %d "
+"byte, ma Linux indica %d byte."
+
+#: libparted/labels/mac.c:719
+msgid "No valid partition map found."
+msgstr "Non è stata trovata alcuna mappa delle partizioni valida."
+
+#: libparted/labels/mac.c:780
+#, c-format
+msgid ""
+"Conflicting partition map entry sizes!  Entry 1 says it is %d, but entry %d "
+"says it is %d!"
+msgstr ""
+"Due elementi della mappa delle partizioni hanno dimensioni diverse. Il primo "
+"elemento indica di essere %d, mentre l'elemento %d indica %d."
+
+#: libparted/labels/mac.c:811
+msgid "Weird!  There are 2 partitions map entries!"
+msgstr "Sono presenti due mappe delle partizioni. Situazione inusuale."
+
+#: libparted/labels/mac.c:1357
+msgid ""
+"Changing the name of a root or swap partition will prevent Linux from "
+"recognising it as such."
+msgstr ""
+"Cambiare il nome di una partizione di root o swap non permetterà a Linux di "
+"riconoscerla come tale."
+
+#: libparted/labels/mac.c:1461
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr ""
+"Impossibile aggiungere un'altra partizione: la mappa delle partizioni è "
+"troppo piccola."
+
+#: libparted/labels/pc98.c:331
+#, c-format
+msgid "Invalid partition table on %s."
+msgstr "Tabella delle partizioni non valida su %s."
+
+#: libparted/labels/pc98.c:384 libparted/labels/pc98.c:462
+#, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries.  This is still "
+"unsupported."
+msgstr ""
+"La partizione %d non è allineata con l'inizio di un cilindro. Funzionalità "
+"non ancora supportata."
+
+#: libparted/labels/pc98.c:780
+msgid "Can't add another partition."
+msgstr "Non è possibile aggiungere un'altra partizione."
+
+#: libparted/labels/pt-tools.c:125
+#, c-format
+msgid ""
+"partition length of %jd sectors exceeds the %s-partition-table-imposed "
+"maximum of %jd"
+msgstr ""
+"la lunghezza della partizione di %1$jd settori eccede quella massima di "
+"%3$jd imposta dalla tabella delle partizioni %2$s"
+
+#: libparted/labels/pt-tools.c:138
+#, c-format
+msgid ""
+"starting sector number, %jd exceeds the %s-partition-table-imposed maximum "
+"of %jd"
+msgstr ""
+"il numero di settori iniziali %1$jd eccede quello massimo di %3$jd imposto "
+"dalla tabella delle partizioni di %2$s"
+
+#: libparted/labels/rdb.c:169
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr "%s: checksum errato sul blocco %llu di tipo %s."
+
+#: libparted/labels/rdb.c:484
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr "%s: non è stato trovato il blocco rdb, non dovrebbe succedere."
+
+#: libparted/labels/rdb.c:573
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr "%s: rilevato ciclo al blocco %d."
+
+#: libparted/labels/rdb.c:592
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr "%s: l'elenco %s sembra errato al blocco %s."
+
+#: libparted/labels/rdb.c:691
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr "%s: elencazione dei blocchi danneggiati non riuscita."
+
+#: libparted/labels/rdb.c:699
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr "%s: elencazione dei blocchi della partizione non riuscita."
+
+#: libparted/labels/rdb.c:707
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr "%s: elencazione dei blocchi del file system non riuscita."
+
+#: libparted/labels/rdb.c:715
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr "%s: elencazione dei blocchi di avvio non riuscita."
+
+#: libparted/labels/rdb.c:742
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr "Scrittura del blocco di partizione alla posizione %d non riuscita."
+
+#: libparted/labels/rdb.c:1080
+msgid "Unable to allocate a partition number."
+msgstr "Impossibile allocare un numero di partizione."
+
+#: libparted/labels/sun.c:161
+msgid "Corrupted Sun disk label detected."
+msgstr "Rilevata etichetta Sun danneggiata."
+
+#: libparted/labels/sun.c:276
+#, c-format
+msgid ""
+"The disk CHS geometry (%d,%d,%d) reported by the operating system does not "
+"match the geometry stored on the disk label (%d,%d,%d)."
+msgstr ""
+"La geometria CHS del disco (%d,%d,%d) riportata dal sistema operativo non "
+"corrisponde a quella presente nell'etichetta del disco (%d,%d,%d)."
+
+#: libparted/labels/sun.c:298
+#, c-format
+msgid "The disk label describes a disk bigger than %s."
+msgstr "L'etichetta del disco descrive un disco più grande di %s."
+
+#: libparted/labels/sun.c:473
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr "Il disco ha %d cilindri, maggiori del massimo consentito di 65536."
+
+#: libparted/labels/sun.c:812
+msgid ""
+"The Whole Disk partition is the only available one left.  Generally, it is "
+"not a good idea to overwrite this partition with a real one.  Solaris may "
+"not be able to boot without it, and SILO (the sparc boot loader) appreciates "
+"it as well."
+msgstr ""
+"La partizione \"whole disk\" è l'unica rimasta disponibile. Normalmente non "
+"è una buona idea sovrascriverla con una partizione reale. Solaris potrebbe "
+"non essere in grado di avviarsi; inoltre anche SILO (il boot loader per "
+"sparc) ne fa uso."
+
+#: libparted/labels/sun.c:827
+msgid "Sun disk label is full."
+msgstr "L'etichetta del disco Sun è piena."
+
+#: libparted/labels/vtoc.c:164
+msgid "opening of device failed"
+msgstr "apertura del device non riuscita"
+
+#: libparted/labels/vtoc.c:168
+msgid "seeking on device failed"
+msgstr "posizionamento nel device non riuscito"
+
+#: libparted/labels/vtoc.c:172
+msgid "writing to device failed"
+msgstr "scrittura sul device non riuscita"
+
+#: libparted/labels/vtoc.c:176
+msgid "reading from device failed"
+msgstr "lettura dal device non riuscita"
+
+#: libparted/labels/vtoc.c:299 libparted/labels/vtoc.c:308
+#: libparted/labels/vtoc.c:329 libparted/labels/vtoc.c:336
+msgid "Could not read volume label."
+msgstr "Impossibile leggere l'etichetta del volume."
+
+#: libparted/labels/vtoc.c:356 libparted/labels/vtoc.c:363
+msgid "Could not write volume label."
+msgstr "Impossibile scrivere l'etichetta del volume."
+
+#: libparted/labels/vtoc.c:469
+msgid "Could not read VTOC labels."
+msgstr "Impossibile leggere le etichette VTOC."
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr "Impossibile leggere VTOC FMT1 DSCB."
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr "Impossibile leggere VTOC FMT4 DSCB."
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr "Impossibile leggere VTOC FMT5 DSCB."
+
+#: libparted/labels/vtoc.c:496
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr "Impossibile leggere VTOC FMT7 DSCB."
+
+#: libparted/labels/vtoc.c:516
+msgid "Could not write VTOC labels."
+msgstr "Impossibile scrivere le etichette VTOC."
+
+#: libparted/labels/vtoc.c:522
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr "Impossibile scrivere VTOC FMT1 DSCB."
+
+#: libparted/labels/vtoc.c:529
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr "Impossibile scrivere VTOC FMT4 DSCB."
+
+#: libparted/labels/vtoc.c:536
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr "Impossibile scrivere VTOC FMT5 DSCB."
+
+#: libparted/labels/vtoc.c:543
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr "Impossibile scrivere VTOC FMT7 DSCB."
+
+#: libparted/libparted.c:230 libparted/libparted.c:245
+msgid "Out of memory."
+msgstr "Memoria non sufficiente."
+
+#: libparted/unit.c:138
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr "Impossibile ottenere la dimensione dell'unità speciale \"COMPACT\""
+
+#: libparted/unit.c:384
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr "\"%s\" utilizza una sintassi errata per le posizioni."
+
+#: libparted/unit.c:392
+#, c-format
+msgid "The maximum head value is %d."
+msgstr "Il massimo valore per la testina è %d."
+
+#: libparted/unit.c:399
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr "Il massimo valore per il settore è %d."
+
+#: libparted/unit.c:411 libparted/unit.c:556
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr "La posizione %s è esterna al device %s."
+
+#: libparted/unit.c:531
+msgid "Invalid number."
+msgstr "Numero non valido."
+
+#: libparted/fs/amiga/affs.c:62 libparted/fs/amiga/apfs.c:55
+#: libparted/fs/amiga/asfs.c:69
+#, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "%s: allocazione blocco di partizione non riuscita\n"
+
+#: libparted/fs/amiga/affs.c:77 libparted/fs/amiga/apfs.c:68
+#: libparted/fs/amiga/asfs.c:81
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr "%s: allocazione del blocco non riuscita\n"
+
+#: libparted/fs/amiga/affs.c:82 libparted/fs/amiga/apfs.c:73
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr "%s: impossibile leggere il blocco di avvio %llu\n"
+
+#: libparted/fs/amiga/affs.c:98 libparted/fs/amiga/apfs.c:84
+#: libparted/fs/amiga/asfs.c:87 libparted/fs/amiga/asfs.c:101
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr "%s: impossibile leggere il blocco di root %llu\n"
+
+#: libparted/fs/amiga/amiga.c:71
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr "%s: allocazione ID elemento dell'elenco non riuscita\n"
+
+#: libparted/fs/amiga/amiga.c:188
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr "%s: impossibile leggere il blocco %llu\n"
+
+#: libparted/fs/amiga/amiga.c:201
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr "%s: checksum errato sul blocco %llu del tipo %s\n"
+
+#: libparted/fs/amiga/amiga.c:211
+#, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s: impossibile scrivere il blocco %d\n"
+
+# (ndt) disk_specific ???
+#: libparted/fs/amiga/amiga.c:277
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr "%s: allocazione del blocco rdb disk_specific non riuscita\n"
+
+#: libparted/fs/amiga/amiga.c:288
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr "%s: blocco rdb non trovato, non dovrebbe accadere\n"
+
+#: libparted/fs/amiga/amiga.c:317
+#, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr "%s: lettura del blocco di partizione %llu non riuscita\n"
+
+#: libparted/fs/fat/fat.c:174
+msgid ""
+"GNU Parted was miscompiled: the FAT boot sector should be 512 bytes.  FAT "
+"support will be disabled."
+msgstr ""
+"Il programma non è stato compilato correttamente: il settore di avvio "
+"dovrebbe essere di 512 byte. Il supporto per FAT verrà disabilitato."
+
+#: libparted/fs/fat/bootsector.c:49 libparted/fs/fat/bootsector.c:56
+msgid "File system has an invalid signature for a FAT file system."
+msgstr "Il file system ha una firma non valida per un file system FAT."
+
+#: libparted/fs/fat/bootsector.c:64
+msgid "File system has an invalid sector size for a FAT file system."
+msgstr ""
+"Il file system ha una dimensione del settore non valida per un file system "
+"FAT."
+
+#: libparted/fs/fat/bootsector.c:71
+msgid "File system has an invalid cluster size for a FAT file system."
+msgstr ""
+"Il file system ha una dimensione del cluster non valida per un file system "
+"FAT."
+
+#: libparted/fs/fat/bootsector.c:78
+msgid ""
+"File system has an invalid number of reserved sectors for a FAT file system."
+msgstr ""
+"Il file system ha un numero di settori riservati non valido per un file "
+"system FAT."
+
+#: libparted/fs/fat/bootsector.c:85
+msgid "File system has an invalid number of FATs."
+msgstr "Il file system ha un numero non valido di FAT."
+
+#: libparted/fs/fat/bootsector.c:156
+#, c-format
+msgid ""
+"This file system has a logical sector size of %d.  GNU Parted is known not "
+"to work properly with sector sizes other than 512 bytes."
+msgstr ""
+"Il file system ha dei settori logici con dimensione %d. Il programma non "
+"funziona correttamente con settori di dimensione diversa da 512 byte."
+
+#: libparted/fs/fat/bootsector.c:181
+#, c-format
+msgid ""
+"The file system's CHS geometry is (%d, %d, %d), which is invalid.  The "
+"partition table's CHS geometry is (%d, %d, %d).  If you select Ignore, the "
+"file system's CHS geometry will be left unchanged.  If you select Fix, the "
+"file system's CHS geometry will be set to match the partition table's CHS "
+"geometry."
+msgstr ""
+"La geometria CHS (%d, %d, %d) del file system non è valida. La geometria CHS "
+"della tabella delle partizioni è (%d, %d, %d). Selezionare \"Ignora\" per "
+"non modificare la geometria CHS del file system, selezionare \"Ripara\" per "
+"impostare la geometria CHS del file system affinché corrisponda alla "
+"geometria CHS della tabella delle partizioni."
+
+#: libparted/fs/fat/bootsector.c:230
+msgid "FAT boot sector says logical sector size is 0.  This is weird. "
+msgstr ""
+"Il settore di avvio della FAT sostiene che la dimensione del settore logico "
+"sia 0. Situazione inusuale."
+
+#: libparted/fs/fat/bootsector.c:236
+msgid "FAT boot sector says there are no FAT tables.  This is weird. "
+msgstr ""
+"Il settore di avvio della FAT sostiene che non ci siano tabelle FAT. "
+"Situazione inusuale."
+
+#: libparted/fs/fat/bootsector.c:242
+msgid "FAT boot sector says clusters are 0 sectors.  This is weird. "
+msgstr ""
+"Il settore di avvio della FAT sostiene che il cluster sia composto da 0 "
+"settori. Situazione inusuale."
+
+#: libparted/fs/fat/bootsector.c:252
+msgid "File system is FAT12, which is unsupported."
+msgstr "Il file system è FAT12 e non è supportato."
+
+#: libparted/fs/fat/bootsector.c:428
+#, c-format
+msgid ""
+"The information sector has the wrong signature (%x).  Select cancel for now, "
+"and send in a bug report.  If you're desperate, it's probably safe to ignore."
+msgstr ""
+"Il settore di informazioni ha una firma errata (%x). Selezionare \"Annulla\" "
+"e inviare un segnalazione di bug. In situazioni estreme è forse possibile "
+"ignorare l'errore."
+
+#: libparted/fs/linux_swap/linux_swap.c:247
+#, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "Vecchia firma linux di partizione swap non conosciuta: \"%10s\"."
+
+#: libparted/fs/linux_swap/linux_swap.c:290
+#, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "Nuova firma linux di partizione swap non conosciuta: \"%10s\"."
+
+#: libparted/fs/linux_swap/linux_swap.c:330
+#, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Firma linux di partizione swap swsusp non conosciuta: \"%9s\"."
+
+#: libparted/fs/hfs/probe.c:50
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to "
+"%d bytes."
+msgstr ""
+"Il programma non può utilizzare file system HFS su dischi con settori di "
+"dimensione diversa da %d byte."
+
+#: parted/parted.c:123
+msgid "displays this help message"
+msgstr "Mostra questo messaggio di aiuto"
+
+#: parted/parted.c:124
+msgid "lists partition layout on all block devices"
+msgstr "Elenca la disposizione delle partizioni su tutti i device a blocchi"
+
+#: parted/parted.c:125
+msgid "displays machine parseable output"
+msgstr "Mostra un output analizzabile dal computer"
+
+#: parted/parted.c:126
+msgid "never prompts for user intervention"
+msgstr "Non chiede mai l'intervento dell'utente"
+
+#: parted/parted.c:127
+msgid "displays the version"
+msgstr "Stampa la versione"
+
+#: parted/parted.c:128
+msgid "alignment for new partitions"
+msgstr "allineamento per le nuove partizioni"
+
+#: parted/parted.c:140
+msgid ""
+"NUMBER is the partition number used by Linux.  On MS-DOS disk labels, the "
+"primary partitions number from 1 to 4, logical partitions from 5 onwards.\n"
+msgstr ""
+"NUMERO è il numero di partizione usato da Linux. Su etichette del disco MS-"
+"DOS, le partizioni primarie hanno numeri da 1 a 4 e le logiche da 5 in poi.\n"
+
+#: parted/parted.c:143
+msgid "LABEL-TYPE is one of: "
+msgstr "TIPO_ETIC è uno di: "
+
+#: parted/parted.c:144
+msgid "FLAG is one of: "
+msgstr "FLAG è uno di: "
+
+#: parted/parted.c:145
+msgid "UNIT is one of: "
+msgstr "UNITÀ è uno di: "
+
+# (ndt) da tradurre?
+#: parted/parted.c:146
+msgid "desired alignment: minimum or optimal"
+msgstr "allineamento richiesto: minimo od ottimale"
+
+#: parted/parted.c:147
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "TIPO_PART è uno di: primary, logical, extended\n"
+
+#: parted/parted.c:149
+msgid "FS-TYPE is one of: "
+msgstr "TIPO_FS è uno di: "
+
+#: parted/parted.c:150
+msgid ""
+"START and END are disk locations, such as 4GB or 10%.  Negative values count "
+"from the end of the disk.  For example, -1s specifies exactly the last "
+"sector.\n"
+msgstr ""
+"INIZIO e FINE sono posizioni sul disco, come 4GB o 10%. I numeri negativi "
+"sono relativi alla fine del disco. Per esempio, -1s indica esattamente "
+"l'ultimo settore.\n"
+
+#: parted/parted.c:153
+msgid "STATE is one of: on, off\n"
+msgstr "STATO è uno di: on, off\n"
+
+#: parted/parted.c:154
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "DEVICE è normalmente /dev/hda o /dev/sda\n"
+
+#: parted/parted.c:155
+msgid "NAME is any word you want\n"
+msgstr "NOME è una qualsiasi parola\n"
+
+#: parted/parted.c:158
+msgid ""
+"Copyright (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"This program is free software, covered by the GNU General Public License.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+msgstr ""
+"Copyright (C) 1998-2006 Free Software Foundation, Inc.\n"
+"Questo programma è software libero, protetto dalla GNU General Public "
+"License.\n"
+"\n"
+"Questo programma è distribuito nella speranza che sia utile, ma SENZA ALCUNA "
+"GARANZIA; senza neppure le garanzie derivate dalla COMMERCIABILITÀ o "
+"dall'essere ADATTO A UN PARTICOLARE SCOPO. Per maggiori informazioni, "
+"consultare la GNU General Public License.\n"
+"\n"
+
+#: parted/parted.c:204
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(tempo rimasto %.2d.%.2d)"
+
+#: parted/parted.c:223
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+"La partizione %s è in uso. È necessario smontarla prima di poterla "
+"modificare."
+
+# (ndt) preferisco tenerla al plurale
+#: parted/parted.c:241
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "Le partizioni su %s sono in uso."
+
+#: parted/parted.c:253
+#, c-format
+msgid ""
+"The existing disk label on %s will be destroyed and all data on this disk "
+"will be lost. Do you want to continue?"
+msgstr ""
+"L'etichetta del disco su %s verrà eliminata e tutti i dati su questo disco "
+"saranno persi. Continuare?"
+
+#: parted/parted.c:502
+msgid "New disk label type?"
+msgstr "Tipo dell'etichetta del nuovo disco?"
+
+#: parted/parted.c:562
+msgid "Partition type?"
+msgstr "Tipo di partizione?"
+
+#: parted/parted.c:580 parted/parted.c:766
+msgid "Partition name?"
+msgstr "Nome della partizione?"
+
+#: parted/parted.c:588
+msgid "File system type?"
+msgstr "Tipo di file system?"
+
+#: parted/parted.c:594 parted/parted.c:1342
+msgid "Start?"
+msgstr "Inizio?"
+
+#: parted/parted.c:596 parted/parted.c:1344
+msgid "End?"
+msgstr "Fine?"
+
+#: parted/parted.c:661
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s.%s"
+msgstr ""
+"È stata richiesta una partizione da %s a %s.\n"
+"La posizione più prossima disponibile è da %s a %s.%s"
+
+#: parted/parted.c:666
+msgid ""
+"\n"
+"Is this still acceptable to you?"
+msgstr ""
+"\n"
+"È accettabile?"
+
+#: parted/parted.c:688
+msgid "The resulting partition is not properly aligned for best performance."
+msgstr ""
+"La partizione risultante non è allineata correttamente per garantire "
+"prestazioni ottimali."
+
+#: parted/parted.c:763 parted/parted.c:1383 parted/parted.c:1455
+#: parted/parted.c:1489
+msgid "Partition number?"
+msgstr "Partizione numero?"
+
+#: parted/parted.c:841
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d.  Each cylinder is %s.\n"
+msgstr ""
+"Geometria cilindri, testine, settori dal BIOS: %d,%d,%d. Ogni cilindro è "
+"%s.\n"
+
+#: parted/parted.c:881
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr "Modello: %s (%s)\n"
+
+#: parted/parted.c:883
+#, c-format
+msgid "Disk %s: %s\n"
+msgstr "Disco %s: %s\n"
+
+#: parted/parted.c:884
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr "Dimensione del settore (logica/fisica): %lldB/%lldB\n"
+
+#: parted/parted.c:896
+#, c-format
+msgid "Partition Table: %s\n"
+msgstr "Tabella delle partizioni: %s\n"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Number"
+msgstr "Numero"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Start"
+msgstr "Inizio"
+
+#: parted/parted.c:1008 parted/parted.c:1011
+msgid "End"
+msgstr "Fine"
+
+#: parted/parted.c:1011
+msgid "Size"
+msgstr "Dimensione"
+
+#: parted/parted.c:1015
+msgid "Type"
+msgstr "Tipo"
+
+#: parted/parted.c:1017
+msgid "File system"
+msgstr "File system"
+
+#: parted/parted.c:1020
+msgid "Name"
+msgstr "Nome"
+
+#: parted/parted.c:1022
+msgid "Flags"
+msgstr "Flag"
+
+#: parted/parted.c:1079
+msgid "Free Space"
+msgstr "Spazio libero"
+
+#: parted/parted.c:1241
+#, c-format
+msgid ""
+"A %s %s partition was found at %s -> %s.  Do you want to add it to the "
+"partition table?"
+msgstr ""
+"È stata trovata una partizione %s %s su %s -> %s. Aggiungerla alla tabella "
+"delle partizioni?"
+
+#: parted/parted.c:1280
+msgid "searching for file systems"
+msgstr "ricerca file system"
+
+#: parted/parted.c:1408
+msgid "New device?"
+msgstr "Nuovo device?"
+
+#: parted/parted.c:1453
+msgid "alignment type(min/opt)"
+msgstr "tipo di allineamento (min/ott)"
+
+# (ndt) sembra che quel numero sia il numero della partizione
+#: parted/parted.c:1460
+#, c-format
+msgid "%d aligned\n"
+msgstr "%d allineata\n"
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d not aligned\n"
+msgstr "%d non allineata\n"
+
+#: parted/parted.c:1491
+msgid "Flag to Invert?"
+msgstr "Flag da invertire?"
+
+#: parted/parted.c:1496
+msgid "New state?"
+msgstr "Nuovo stato?"
+
+#: parted/parted.c:1533
+msgid "Unit?"
+msgstr "Unità?"
+
+#: parted/parted.c:1651
+msgid "align-check"
+msgstr "align-check"
+
+#: parted/parted.c:1654
+msgid ""
+"align-check TYPE N                        check partition N for TYPE(min|"
+"opt) alignment"
+msgstr ""
+"align-check TIPO N                        Controlla la partizione N per "
+"l'allineamento TIPO(min|ott)"
+
+#: parted/parted.c:1662
+msgid "help"
+msgstr "help"
+
+#: parted/parted.c:1665
+msgid ""
+"help [COMMAND]                           print general help, or help on "
+"COMMAND"
+msgstr ""
+"help [COMANDO]                           Mostra l'aiuto generale o sul "
+"COMANDO"
+
+#: parted/parted.c:1671
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:1671
+msgid "mktable"
+msgstr "mktable"
+
+#: parted/parted.c:1674
+msgid ""
+"mklabel,mktable LABEL-TYPE               create a new disklabel (partition "
+"table)"
+msgstr ""
+"mklabel,mktable TIPO_ETIC                Crea una nuova etichetta del disco "
+"(tabella delle partizioni)"
+
+#: parted/parted.c:1680
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:1683
+msgid "mkpart PART-TYPE [FS-TYPE] START END     make a partition"
+msgstr "mkpart TIPO_PART [TIPO_FS] INIZIO FINE   Crea una partizione"
+
+#: parted/parted.c:1689
+msgid ""
+"'mkpart' makes a partition without creating a new file system on the "
+"partition.  FS-TYPE may be specified to set an appropriate partition ID.\n"
+msgstr ""
+"\"mkpart\" crea un partizione senza crearvi un file system. TIPO_FS può "
+"essere specificato per impostare un ID della partizione appropriato.\n"
+
+#: parted/parted.c:1694
+msgid "name"
+msgstr "name"
+
+#: parted/parted.c:1697
+msgid "name NUMBER NAME                         name partition NUMBER as NAME"
+msgstr ""
+"name NUMERO NOME                         Chiama la partizione NUMERO come "
+"NOME"
+
+#: parted/parted.c:1702
+msgid "print"
+msgstr "print"
+
+#: parted/parted.c:1705
+msgid ""
+"print [devices|free|list,all|NUMBER]     display the partition table, "
+"available devices, free space, all found partitions, or a particular "
+"partition"
+msgstr ""
+"print [device|free|list,all|NUMERO]      Visualizza la tabella delle "
+"partizioni, i device disponibili, lo spazio libero, tutte le partizioni "
+"trovate o una particolare partizione"
+
+#: parted/parted.c:1710
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+"Senza argomenti, \"print\" visualizza l'intera tabella delle partizioni. Con "
+"i seguenti argomenti esegue diverse altre azioni.\n"
+
+#: parted/parted.c:1712
+msgid "  devices   : display all active block devices\n"
+msgstr "  devices   : mostra tutti i device a blocchi attivi\n"
+
+#: parted/parted.c:1713
+msgid ""
+"  free      : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+"  free      : visualizza informazioni riguardo lo spazio libero non "
+"partizionato sul device a blocchi corrente\n"
+
+#: parted/parted.c:1715
+msgid ""
+"  list, all : display the partition tables of all active block devices\n"
+msgstr ""
+"  list, all : visualizza le tabelle delle partizioni di tutti i device a "
+"blocchi attivi\n"
+
+#: parted/parted.c:1716
+msgid ""
+"  NUMBER    : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+"  NUMERO    : visualizza informazioni dettagliate riguardo questa "
+"particolare partizione\n"
+
+#: parted/parted.c:1721
+msgid "quit"
+msgstr "quit"
+
+#: parted/parted.c:1724
+msgid "quit                                     exit program"
+msgstr "quit                                     Esce dal programma"
+
+#: parted/parted.c:1729
+msgid "rescue"
+msgstr "rescue"
+
+#: parted/parted.c:1732
+msgid ""
+"rescue START END                         rescue a lost partition near START "
+"and END"
+msgstr ""
+"rescue INIZIO FINE                       Ripristina una partizione persa "
+"vicino a INIZIO e FINE"
+
+#: parted/parted.c:1738
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:1741
+msgid "rm NUMBER                                delete partition NUMBER"
+msgstr "rm NUMERO                                Elimina la partizione NUMERO"
+
+#: parted/parted.c:1746
+msgid "select"
+msgstr "select"
+
+#: parted/parted.c:1749
+msgid "select DEVICE                            choose the device to edit"
+msgstr ""
+"select DEVICE                            Sceglie il device da modificare"
+
+#: parted/parted.c:1754
+msgid "set"
+msgstr "set"
+
+#: parted/parted.c:1757
+msgid ""
+"set NUMBER FLAG STATE                    change the FLAG on partition NUMBER"
+msgstr ""
+"set NUMERO FLAG STATO                    Modifica il FLAG sulla partizione "
+"NUMERO"
+
+#: parted/parted.c:1763
+msgid "toggle"
+msgstr "toggle"
+
+#: parted/parted.c:1766
+msgid ""
+"toggle [NUMBER [FLAG]]                   toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+"toggle [NUMERO [FLAG]]                   Commuta lo stato del FLAG sulla "
+"partizione NUMERO"
+
+#: parted/parted.c:1772
+msgid "unit"
+msgstr "unit"
+
+#: parted/parted.c:1775
+msgid "unit UNIT                                set the default unit to UNIT"
+msgstr ""
+"unit UNITÀ                               Imposta l'unità predefinita a UNITÀ"
+
+#: parted/parted.c:1780
+msgid "version"
+msgstr "version"
+
+#: parted/parted.c:1783
+msgid ""
+"version                                  display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+"version                                  Stampa la versione e le "
+"informazioni sul copyright di GNU Parted"
+
+#: parted/parted.c:1787
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+"\"version\" visualizza informazioni sul copyright e la versione di questa "
+"copia di GNU Parted\n"
+
+#: parted/parted.c:1855
+#, c-format
+msgid "Usage: %s [-hlmsv] [-a<align>] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+"Uso: %s [-hlmsv] [-a<allineamento>] [DEVICE [COMANDO [PARAMETRI]]...]\n"
+
+#: parted/parted.c:1899
+msgid "No device found"
+msgstr "Nessun device trovato"
+
+#: parted/parted.c:1936
+msgid "WARNING: You are not superuser.  Watch out for permissions."
+msgstr ""
+"Attenzione: non è stato eseguito come super utente. Prestare attenzione ai "
+"permessi."
+
+#: parted/parted.c:1974
+msgid "You may need to update /etc/fstab.\n"
+msgstr "Potrebbe essere necessario aggiornare /etc/fstab.\n"
+
+#: parted/ui.c:162
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr "Benvenuti in GNU Parted. Digitare \"help\" per l'elenco dei comandi.\n"
+
+#: parted/ui.c:165
+msgid ""
+"Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]\n"
+"Apply COMMANDs with PARAMETERS to DEVICE.  If no COMMAND(s) are given, run "
+"in\n"
+"interactive mode.\n"
+msgstr ""
+"Uso: parted [OPZIONI]... [DEVICE [COMANDO [PARAMETRI]...]...]\n"
+"Esegue COMANDO con i PARAMETRI sul DEVICE. Se non c'è alcun COMANDO\n"
+"parte in modalità interattiva.\n"
+
+#: parted/ui.c:170
+#, c-format
+msgid ""
+"\n"
+"\n"
+"You found a bug in GNU Parted! Here's what you have to do:\n"
+"\n"
+"Don't panic! The bug has most likely not affected any of your data.\n"
+"Help us to fix this bug by doing the following:\n"
+"\n"
+"Check whether the bug has already been fixed by checking\n"
+"the last version of GNU Parted that you can find at:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Please check this version prior to bug reporting.\n"
+"\n"
+"If this has not been fixed yet or if you don't know how to check,\n"
+"please visit the GNU Parted website:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"for further information.\n"
+"\n"
+"Your report should contain the version of this release (%s)\n"
+"along with the error message below, the output of\n"
+"\n"
+"\tparted DEVICE unit co print unit s print\n"
+"\n"
+"and the following history of commands you entered.\n"
+"Also include any additional information about your setup you\n"
+"consider important.\n"
+msgstr ""
+"\n"
+"\n"
+"È stato trovato un bug in GNU Parted. Ecco cosa fare:\n"
+"\n"
+"Non innervosirsi, molto probabilmente il bug non ha rovinato i dati.\n"
+"Il modo per aiutare nel correggerlo è il seguente:\n"
+"\n"
+"Verificare che il bug non sia già stato corretto utilizzando\n"
+"la versione più recente di GNU Parted disponibile presso:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Usare questa versione prima di segnalare il bug.\n"
+"\n"
+"Se il problema non è ancora stato risolto o non si sa come verificarlo,\n"
+"visitare il sito web di GNU Parted:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"per ulteriori informazioni.\n"
+"\n"
+"La segnalazione deve contenere la versione di questo programma (%s),\n"
+"il messaggio d'errore riportato di seguito, l'output di\n"
+"\n"
+"\tparted DEVICE unit co print unit s print\n"
+"\n"
+"e la seguente cronologia dei comandi.\n"
+"Includere anche qualsiasi altra informazione riguardo la propria\n"
+"configurazione da considerarsi importante.\n"
+
+#: parted/ui.c:291
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+"\n"
+"Cronologia comandi:\n"
+
+#: parted/ui.c:354
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+"\n"
+"Errore: SEGV_MAPERR (indirizzo non mappato all'oggetto)\n"
+
+#: parted/ui.c:360
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+"\n"
+"Errore: SEGV_ACCERR (permessi non validi per l'oggetto mappato)\n"
+
+#: parted/ui.c:365
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+"\n"
+"Errore: incontrato un segnale SIGSEGV generico.\n"
+
+#: parted/ui.c:389
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+"\n"
+"Errore: FPE_INTDIV (intero: divisione per zero)"
+
+#: parted/ui.c:394
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+"\n"
+"Errore: FPE_INTOVF (intero: overflow)"
+
+#: parted/ui.c:399
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+"\n"
+"Errore: FPE_FLTDIV (float: divisione per zero)"
+
+#: parted/ui.c:404
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+"\n"
+"Errore: FPE_FLTOVF (float: overflow)"
+
+#: parted/ui.c:409
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+"\n"
+"Errore: FPE_FLTUND (float: underflow)"
+
+#: parted/ui.c:414
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+"\n"
+"Errore: FPE_FLTRES (float: risultato inesatto)"
+
+#: parted/ui.c:419
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+"\n"
+"Errore: FPE_FLTINV (float: operazione non valida)"
+
+#: parted/ui.c:424
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+"\n"
+"Errore: FPE_FLTSUB (float: subscript fuori dal limite)"
+
+#: parted/ui.c:429
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+"\n"
+"Errore: incontrato un segnale SIGFPE generico."
+
+#: parted/ui.c:453
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+"\n"
+"Errore: ILL_ILLOPC (opcode non consentito)"
+
+#: parted/ui.c:458
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+"\n"
+"Errore: ILL_ILLOPN (operando non consentito)"
+
+#: parted/ui.c:463
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+"\n"
+"Errore: ILL_ILLADR (modalità di indirizzamento non consentita)"
+
+#: parted/ui.c:468
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+"\n"
+"Errore: ILL_ILLTRP (trap non consentita)"
+
+#: parted/ui.c:473
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+"\n"
+"Errore: ILL_PRVOPC (opcode privilegiato)"
+
+#: parted/ui.c:478
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+"\n"
+"Errore: ILL_PRVREG (registro privilegiato)"
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+"\n"
+"Errore: ILL_COPROC (errore del coprocessore)"
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+"\n"
+"Errore: ILL_BADSTK (errore dello stack interno)"
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+"\n"
+"Errore: incontrato un segnale SIGILL generico."
+
+#: parted/ui.c:891
+#, c-format
+msgid "invalid token: %s"
+msgstr "token non valido: %s"
+
+#: parted/ui.c:1048
+msgid "Expecting a partition number."
+msgstr "Atteso un numero di partizione."
+
+#: parted/ui.c:1057
+msgid "Partition doesn't exist."
+msgstr "La partizione non esiste."
+
+#: parted/ui.c:1077
+msgid "Expecting a file system type."
+msgstr "Atteso un tipo di file system."
+
+#: parted/ui.c:1084
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Tipo di file system \"%s\" sconosciuto."
+
+#: parted/ui.c:1105
+msgid "Expecting a disk label type."
+msgstr "Atteso un tipo di etichetta disco."
+
+#: parted/ui.c:1203
+msgid "Can't create any more partitions."
+msgstr "Non è possibile creare ulteriori partizioni."
+
+#: parted/ui.c:1213
+msgid "Expecting a partition type."
+msgstr "Atteso un tipo di partizione."
+
+#: parted/ui.c:1361
+msgid "on"
+msgstr "on"
+
+#: parted/ui.c:1362
+msgid "off"
+msgstr "off"
+
+#: parted/ui.c:1379
+msgid "optimal"
+msgstr "ottimale"
+
+#: parted/ui.c:1380
+msgid "minimal"
+msgstr "minimale"
+
+#: parted/ui.c:1513
+msgid "OPTIONs:"
+msgstr "OPZIONI:"
+
+#: parted/ui.c:1518
+msgid "COMMANDs:"
+msgstr "COMANDI:"
+
+#: parted/ui.c:1521
+#, c-format
+msgid ""
+"\n"
+"Report bugs to %s\n"
+msgstr ""
+"\n"
+"Segnalare i bug a %s\n"
+
+# '%s' = dev->path
+#: parted/ui.c:1528
+#, c-format
+msgid "Using %s\n"
+msgstr "Viene usato %s\n"
+
+#: parted/ui.c:1602
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr "Questo comando non ha senso nella modalità non interattiva.\n"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]\n"
+#~ "  or:  %s DEVICE MINOR\n"
+#~ msgstr ""
+#~ "Uso: %s [OPZIONI]\n"
+#~ "  o: %s DEVICE MINOR\n"
+
+#~ msgid ""
+#~ "Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Pulisce lo spazio non usato su una partizione FAT (uno strumento di test "
+#~ "di GNU Parted).\n"
+#~ "\n"
+
+#~ msgid "      --help     display this help and exit\n"
+#~ msgstr "      --help     Visualizza questo aiuto ed esce\n"
+
+#~ msgid "      --version  output version information and exit\n"
+#~ msgstr "      --version  Stampa la versione ed esce\n"
+
+#~ msgid "too few arguments"
+#~ msgstr "troppi pochi argomenti"
+
+#~ msgid "too many arguments"
+#~ msgstr "troppi argomenti"
+
+#~ msgid "invalid minor device number: %s"
+#~ msgstr "minor number del dispositivo %s non valido"
+
+#~ msgid "Could not detect file system."
+#~ msgstr "Impossibile rilevare il file system."
+
+#~ msgid "The file system is bigger than its volume!"
+#~ msgstr "Il file system è più ampio del suo volume."
+
+#~ msgid "Support for opening %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Il supporto per aprire file system %s non è ancora stato implementato."
+
+#~ msgid "Support for creating %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Il supporto per creare file system %s non è ancora stato implementato."
+
+#~ msgid "Support for checking %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Il supporto per controllare file system %s non è ancora stato "
+#~ "implementato."
+
+#~ msgid "raw block copying"
+#~ msgstr "copia grezza dei blocchi"
+
+#~ msgid "growing file system"
+#~ msgstr "aumento del file system"
+
+#~ msgid "Can't copy onto an overlapping partition."
+#~ msgstr "Impossibile copiare su una partizione sovrapposta."
+
+#~ msgid ""
+#~ "Direct support for copying file systems is not yet implemented for %s.  "
+#~ "However, support for resizing is implemented.  Therefore, the file system "
+#~ "can be copied if the new partition is at least as big as the old one.  "
+#~ "So, either shrink the partition you are trying to copy, or copy to a "
+#~ "bigger partition."
+#~ msgstr ""
+#~ "Il supporto per copiare direttamente file system %s non è ancora "
+#~ "implementato, ma è possibile ridimensionarli. Il file system può quindi "
+#~ "essere copiato se la nuova partizione è almeno grande quanto quella di "
+#~ "origine. Ridimensionare la partizione da copiare oppure copiarla in una "
+#~ "più grande."
+
+#~ msgid "Support for copying %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Il supporto per copiare file system %s non è ancora stato implementato."
+
+#~ msgid "Support for resizing %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Il supporto per ridimensionare il file system %s non è stato ancora "
+#~ "implementato."
+
+#~ msgid "creating"
+#~ msgstr "creazione"
+
+#~ msgid "The file system is in an invalid state.  Perhaps it is mounted?"
+#~ msgstr "Il file system è in uno stato non valido. Forse è montato?"
+
+#~ msgid "The file system is in old (unresizeable) format."
+#~ msgstr "Il file system è in un formato vecchio (non ridimensionabile)."
+
+#~ msgid "Invalid free blocks count.  Run reiserfsck --check first."
+#~ msgstr ""
+#~ "Conteggio dei blocchi liberi non valido. Eseguire \"reiserfsck --check\"."
+
+#~ msgid "checking"
+#~ msgstr "controllo"
+
+#~ msgid "Reiserfs tree seems to be corrupted.  Run reiserfsck --check first."
+#~ msgstr ""
+#~ "L'albero reiserfs sembra essere danneggiato. Eseguire \"reiserfsck --check"
+#~ "\"."
+
+#~ msgid ""
+#~ "The reiserfs file system passed a basic check.  For a more comprehensive "
+#~ "check, run reiserfsck --check."
+#~ msgstr ""
+#~ "Il file system reiserfs ha superato un controllo basilare. Per un "
+#~ "controllo più approfondito, eseguire \"reiserfsck --check\"."
+
+#~ msgid "Sorry, can't move the start of reiserfs partitions yet."
+#~ msgstr ""
+#~ "Impossibile, per il momento, spostare l'inizio delle partizioni reiserfs."
+
+#~ msgid "Couldn't reopen device abstraction layer for read/write."
+#~ msgstr ""
+#~ "Impossibile riaprire il livello di astrazione del device in lettura/"
+#~ "scrittura."
+
+#~ msgid "shrinking"
+#~ msgstr "riduzione"
+
+#~ msgid "expanding"
+#~ msgstr "espansione"
+
+#~ msgid "Couldn't create reiserfs device abstraction handler."
+#~ msgstr "Impossibile creare il gestore di astrazione del device reiserfs."
+
+#~ msgid "Device is too small for %lu blocks."
+#~ msgstr "Il device è troppo piccolo per %lu blocchi."
+
+#~ msgid "copying"
+#~ msgstr "copia"
+
+#~ msgid "Couldn't resolve symbol %s.  Error: %s."
+#~ msgstr "Impossibile risolvere il simbolo %s. Errore: %s."
+
+#~ msgid "GNU Parted found an invalid libreiserfs library."
+#~ msgstr "Il programma ha trovato una libreria libreiserfs non valida."
+
+#~ msgid ""
+#~ "GNU Parted has detected libreiserfs interface version mismatch.  Found %d-"
+#~ "%d, required %d. ReiserFS support will be disabled."
+#~ msgstr ""
+#~ "Il programma ha rilevato una corrispondenza errata sulla versione "
+#~ "dell'interfaccia di libreiserfs, trovato %d-%d quando è necessario %d. Il "
+#~ "supporto a ReiserFS sarà disabilitato."
+
+#~ msgid "Inconsistent group descriptors!"
+#~ msgstr "Descrittori di gruppo inconsistenti."
+
+#~ msgid "File system full!"
+#~ msgstr "File system pieno."
+
+#~ msgid "Invalid superblock.  Are you sure this is an ext2 file system?"
+#~ msgstr "Superblocco non valido. È proprio un file system ext2?"
+
+#~ msgid "File system has errors!  You should run e2fsck."
+#~ msgstr "Il file system contiene errori. Eseguire \"e2fsck\"."
+
+#~ msgid ""
+#~ "File system was not cleanly unmounted!  You should run e2fsck.  Modifying "
+#~ "an unclean file system could cause severe corruption."
+#~ msgstr ""
+#~ "Il file system non è stato smontato correttamente. Eseguire \"e2fsck\"; "
+#~ "modificare un file system non consistente può causare seri problemi."
+
+#~ msgid ""
+#~ "File system has an incompatible feature enabled.  Compatible features are "
+#~ "has_journal, dir_index, filetype, sparse_super and large_file.  Use "
+#~ "tune2fs or debugfs to remove features."
+#~ msgstr ""
+#~ "Il file system ha una funzionalità non compatibile abilitata. Le "
+#~ "funzionalità compatibili sono has_journal, dir_index, filetype, "
+#~ "sparse_super e large_file. Usare tune2fs o debugfs per rimuovere le "
+#~ "funzionalità."
+
+#~ msgid "Error allocating buffer cache."
+#~ msgstr "Errore nell'allocare la cache del buffer."
+
+#~ msgid ""
+#~ "Found an inode with a incorrect link count.  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "Trovato un inode con un conteggio di collegamenti non corretto. Eseguire "
+#~ "\"e2fsck\"."
+
+#~ msgid "Not enough free inodes!"
+#~ msgstr "Non ci sono abbastanza inode liberi."
+
+#~ msgid "File system is too full to remove a group!"
+#~ msgstr "Il file system è troppo pieno per rimuovere un gruppo."
+
+#~ msgid "File system has too many allocated inodes to remove a group!"
+#~ msgstr "Il file system ha troppi inode allocati per rimuovere un gruppo."
+
+#~ msgid "adding groups"
+#~ msgstr "aggiunta gruppi"
+
+#~ msgid "Your file system is too full to resize it to %i blocks.  Sorry."
+#~ msgstr ""
+#~ "Il file system contiene troppi dati per essere ridimensionato a %i "
+#~ "blocchi."
+
+#~ msgid ""
+#~ "Your file system has too many occupied inodes to resize it to %i blocks.  "
+#~ "Sorry."
+#~ msgstr ""
+#~ "Il file system ha troppi inode occupati per essere ridimensionato a %i "
+#~ "blocchi."
+
+#~ msgid "File system was not cleanly unmounted!  You should run e2fsck."
+#~ msgstr "Il file system non è stato smontato correttamente. Eseguire e2fsck."
+
+#~ msgid ""
+#~ "The file system has the 'dir_index' feature enabled.  Parted can only "
+#~ "resize the file system if it disables this feature.  You can enable it "
+#~ "later by running 'tune2fs -O dir_index DEVICE' and then 'e2fsck -fD "
+#~ "DEVICE'."
+#~ msgstr ""
+#~ "Il file system ha la funzionalità \"dir_index\" attiva. È possibile "
+#~ "ridimensionare il file system solo disattivando questa caratteristica. "
+#~ "Per riattivarla eseguire \"tune2fs -O dir_index DEVICE\" e "
+#~ "successivamente \"e2fsck -fD DEVICE\"."
+
+#~ msgid ""
+#~ "A resize operation on this file system will use EXPERIMENTAL code\n"
+#~ "that MAY CORRUPT it (although no one has reported any such damage yet).\n"
+#~ "You should at least backup your data first, and run 'e2fsck -f' "
+#~ "afterwards."
+#~ msgstr ""
+#~ "Un'operazione di ridimensionamento di questo file system utilizzerà "
+#~ "codice SPERIMENTALE che POTREBBE DANNEGGIARLO (anche se nessuno ha mai "
+#~ "riferito che sia successo). È consigliato fare una copia di backup dei "
+#~ "dati ed eseguire \"e2fsck -f\" subito dopo."
+
+#~ msgid "Cross-linked blocks found!  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "Trovati dei blocchi con collegamenti incrociati. Eseguire \"e2fsck\"."
+
+#~ msgid "Block %i has no reference?  Weird."
+#~ msgstr "Il blocco %i non è referenziato? Situazione insolita."
+
+#~ msgid "Block %i shouldn't have been marked (%d, %d)!"
+#~ msgstr "Il blocco %i non avrebbe dovuto essere segnato (%d, %d)."
+
+#~ msgid ""
+#~ "The ext2 file system passed a basic check.  For a more comprehensive "
+#~ "check, use the e2fsck program."
+#~ msgstr ""
+#~ "Il file system ext2 ha passato i controlli di base. Per un controllo più "
+#~ "approfondito utilizzare il programma e2fsck."
+
+#~ msgid "Sorry, can't move the start of ext2 partitions yet!"
+#~ msgstr "Non è ancora possibile spostare l'inizio di una partizione ext2."
+
+#~ msgid "Couldn't flush buffer cache!"
+#~ msgstr "Impossibile svuotare la cache del buffer."
+
+#~ msgid "writing per-group metadata"
+#~ msgstr "scrittura dei metadati per ogni gruppo"
+
+#~ msgid "File system too small for ext2."
+#~ msgstr "File system troppo piccolo per ext2."
+
+#~ msgid ""
+#~ "You need %s of free disk space to shrink this partition to this size.  "
+#~ "Currently, only %s is free."
+#~ msgstr ""
+#~ "Servono %s di spazio libero per ridurre la partizione a questa "
+#~ "dimensione. Attualmente soltanto %s sono liberi."
+
+#~ msgid ""
+#~ "Cluster start delta = %d, which is not a multiple of the cluster size %d."
+#~ msgstr ""
+#~ "Lo spostamento del primo blocco del cluster è %d e non è un multiplo "
+#~ "della dimensione del cluster %d."
+
+#~ msgid "Partition too big/small for a %s file system."
+#~ msgstr "Partizione troppo grande o troppo piccola per il file system %s."
+
+#~ msgid ""
+#~ "The FATs don't match.  If you don't know what this means, then select "
+#~ "cancel, run scandisk on the file system, and then come back."
+#~ msgstr ""
+#~ "Le FAT non coincidono. Se non se ne conosce il significato, selezionare "
+#~ "\"Annulla\", eseguire \"scandisk\", quindi ritornare a questo punto."
+
+#~ msgid "There are no possible configurations for this FAT type."
+#~ msgstr "Non ci sono configurazioni possibili per questo tipo di FAT."
+
+#~ msgid ""
+#~ "File system doesn't have expected sizes for Windows to like it.  Cluster "
+#~ "size is %dk (%dk expected); number of clusters is %d (%d expected); size "
+#~ "of FATs is %d sectors (%d expected)."
+#~ msgstr ""
+#~ "Il file system non ha una parametri compatibili con Windows. La "
+#~ "dimensione del cluster è %dk (atteso %dk); il numero di cluster è %d "
+#~ "(atteso %d); la dimensione delle FAT è %d settori (atteso %d)."
+
+#~ msgid ""
+#~ "File system is reporting the free space as %d clusters, not %d clusters."
+#~ msgstr "Il file system riporta uno spazio libero di %d cluster anziché %d."
+
+#~ msgid ""
+#~ "There's not enough room in the root directory for all of the files.  "
+#~ "Either cancel, or ignore to lose the files."
+#~ msgstr ""
+#~ "Non c'è sufficiente spazio nella directory principale per tutti i file. "
+#~ "Annullare oppure ignorare per perdere i file."
+
+#~ msgid "Error writing to the root directory."
+#~ msgstr "Errore nello scrivere nella directory principale."
+
+#~ msgid ""
+#~ "If you leave your file system as FAT16, then you will have no problems."
+#~ msgstr "Lasciare il file system come FAT16 non causerà alcun problema."
+
+#~ msgid ""
+#~ "If you convert to FAT16, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual)."
+#~ msgstr ""
+#~ "Convertire una partizione che contiene MS Windows a FAT16 richiede di "
+#~ "reinstallare il boot loader di Windows. Per continuare, consultare il "
+#~ "manuale di Parted (o della propria distribuzione)."
+
+#~ msgid ""
+#~ "If you leave your file system as FAT32, then you will not introduce any "
+#~ "new problems."
+#~ msgstr "Lasciare il file system come FAT32 non introdurrà alcun problema."
+
+#~ msgid ""
+#~ "If you convert to FAT32, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual).  Also, converting to FAT32 will make the file system unreadable "
+#~ "by MS DOS, MS Windows 95a, and MS Windows NT."
+#~ msgstr ""
+#~ "Convertire una partizione che contiene MS Windows a FAT32 richiede di "
+#~ "reinstallare il boot loader. Per continuare, consultare il manuale di "
+#~ "Parted (o della propria distribuzione). Inoltre, la conversione a FAT32 "
+#~ "renderà il file system non utilizzabile con MS-DOS, MS Windows 95a e MS "
+#~ "Windows NT."
+
+#~ msgid "%s  %s  %s"
+#~ msgstr "%s  %s  %s"
+
+#~ msgid "Would you like to use FAT32?"
+#~ msgstr "Usare FAT32?"
+
+#~ msgid "%s  %s"
+#~ msgstr "%s  %s"
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT16."
+#~ msgstr ""
+#~ "Il file system può solo essere portato a questa dimensione se si converte "
+#~ "a FAT16."
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT32."
+#~ msgstr ""
+#~ "Il file system può solo essere portato a questa dimensione se si converte "
+#~ "a FAT32."
+
+#~ msgid ""
+#~ "GNU Parted cannot resize this partition to this size.  We're working on "
+#~ "it!"
+#~ msgstr ""
+#~ "Impossibile ridimensionare questa partizione a questa dimensione. "
+#~ "Funzione in fase di sviluppo."
+
+#~ msgid "Bad directory entry for %s: first cluster is the end of file marker."
+#~ msgstr ""
+#~ "Elemento di directory errato per %s: il primo cluster è la fine del "
+#~ "marcatore di file."
+
+#~ msgid ""
+#~ "Bad FAT: unterminated chain for %s.  You should run dosfsck or scandisk."
+#~ msgstr ""
+#~ "FAT errata: catena per %s non terminata. Eseguire \"dosfsck\" oppure "
+#~ "\"scandisk\"."
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d outside file system in chain for %s.  You should run "
+#~ "dosfsck or scandisk."
+#~ msgstr ""
+#~ "FAT errata: cluster %d usato nella catena %s fuori dal file system. "
+#~ "Eseguire \"dosfsck\" oppure \"scandisk\"."
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d is cross-linked for %s.  You should run dosfsck or "
+#~ "scandisk."
+#~ msgstr ""
+#~ "FAT errata: cluster %d con collegamenti incrociati per %s. Eseguire "
+#~ "\"dosfsck\" oppure \"scandisk\"."
+
+#~ msgid "%s is %dk, but it has %d clusters (%dk)."
+#~ msgstr "%s è %dk, ma contiene %d cluster (%dk)."
+
+#~ msgid ""
+#~ "The file %s is marked as a system file.  This means moving it could cause "
+#~ "some programs to stop working."
+#~ msgstr ""
+#~ "Il file %s è indicato come file di sistema; spostandolo, alcuni programmi "
+#~ "potrebbero bloccarsi."
+
+#~ msgid ""
+#~ "FAT %d media %x doesn't match the boot sector's media %x.  You should "
+#~ "probably run scandisk."
+#~ msgstr ""
+#~ "FAT %d, il supporto %x non coincide con quello specificato nel settore di "
+#~ "avvio di %x. Eseguire \"scandisk\"."
+
+#~ msgid "fat_table_set: cluster %ld outside file system"
+#~ msgstr "fat_table_set: cluster %ld al di fuori del file system"
+
+#~ msgid "fat_table_get: cluster %ld outside file system"
+#~ msgstr "fat_table_get: cluster %ld al di fuori del file system"
+
+#~ msgid "fat_table_alloc_cluster: no free clusters"
+#~ msgstr "fat_table_alloc_cluster: cluster esauriti"
+
+#~ msgid "Too many bad pages."
+#~ msgstr "Troppe pagine inutilizzabili."
+
+#~ msgid "The file system contains errors."
+#~ msgstr "Il file system contiene errori."
+
+#~ msgid "Bad blocks could not be read."
+#~ msgstr "I blocchi danneggiati non possono essere letti."
+
+#~ msgid ""
+#~ "Trying to register an extent starting at block 0x%X, but another one "
+#~ "already exists at this position.  You should check the file system!"
+#~ msgstr ""
+#~ "Tentativo di registrare un extent a partire dal blocco 0x%X, ma ne esiste "
+#~ "già uno alla stessa posizione. Controllare il file system."
+
+#~ msgid ""
+#~ "Trying to move an extent from block Ox%X to block Ox%X, but another one "
+#~ "already exists at this position.  This should not happen!"
+#~ msgstr ""
+#~ "Tentativo di spostare un extent dal blocco 0x%X al blocco 0x%X, ma ne "
+#~ "esiste già uno alla stessa posizione. Questo non dovrebbe verificarsi."
+
+#~ msgid "Could not update the extent cache for HFS file with CNID %X."
+#~ msgstr ""
+#~ "Impossibile aggiornare la cache degli extent per file HFS con CNID %X."
+
+#~ msgid "Trying to read HFS file with CNID %X behind EOF."
+#~ msgstr "Tentativo di leggere file HFS con CNID %X oltre EOF."
+
+#~ msgid "Could not find sector %lli of HFS file with CNID %X."
+#~ msgstr "Impossibile trovare il settore %lli del file HFS con CNID %X."
+
+#~ msgid "Trying to write HFS file with CNID %X behind EOF."
+#~ msgstr "Tentativo di scrivere file HFS con CNID %X oltre EOF."
+
+#~ msgid "Could not update the extent cache for HFS+ file with CNID %X."
+#~ msgstr ""
+#~ "Impossibile aggiornare la cache degli extent per file HFS+ con CNID %X."
+
+#~ msgid "Trying to read HFS+ file with CNID %X behind EOF."
+#~ msgstr "Tentativo di leggere file HFS+ con CNID %X oltre EOF."
+
+#~ msgid "Could not find sector %lli of HFS+ file with CNID %X."
+#~ msgstr "Impossibile trovare il settore %lli del file HFS+ con CNID %X."
+
+#~ msgid "Trying to write HFS+ file with CNID %X behind EOF."
+#~ msgstr "Tentativo di scrivere file HFS+ con CNID %X oltre EOF."
+
+#~ msgid "Sorry, HFS cannot be resized that way yet."
+#~ msgstr "HFS non può ancora essere ridimensionato in quel modo."
+
+#~ msgid "Data relocation has failed."
+#~ msgstr "Riposizionamento dei dati non riuscito."
+
+#~ msgid "Data relocation left some data in the end of the volume."
+#~ msgstr ""
+#~ "Il riposizionamento dei dati ne ha lasciati alcuni alla fine del volume."
+
+#~ msgid "writing HFS Master Directory Block"
+#~ msgstr "scrittura del \"Master Directory Block\" HFS"
+
+#~ msgid "No valid HFS[+X] signature has been found while opening."
+#~ msgstr "All'apertura non è stata trovata alcuna firma HFS[+X] valida."
+
+#~ msgid "Version %d of HFS+ isn't supported."
+#~ msgstr "La versione %d di HFS+ non è supportata."
+
+#~ msgid "Version %d of HFSX isn't supported."
+#~ msgstr "La versione %d di HFSX non è supportata."
+
+#~ msgid "Data relocation left some data at the end of the volume."
+#~ msgstr ""
+#~ "Il riposizionamento dei dati ne ha lasciati alcuni alla fine del volume."
+
+#~ msgid "Error while writing the allocation file."
+#~ msgstr "Errore nello scrivere l'\"Allocation File\"."
+
+#~ msgid "Error while writing the compatibility part of the allocation file."
+#~ msgstr ""
+#~ "Errore nello scrivere la parte compatibile dell'\"Allocation File\"."
+
+#~ msgid "writing HFS+ Volume Header"
+#~ msgstr "scrittura del \"Volume Header\" HFS+"
+
+#~ msgid "An error occurred while looking for the mandatory bad blocks file."
+#~ msgstr ""
+#~ "Errore nella ricerca del file obbligatorio per i blocchi danneggiati."
+
+#~ msgid ""
+#~ "It seems there is an error in the HFS wrapper: the bad blocks file "
+#~ "doesn't contain the embedded HFS+ volume."
+#~ msgstr ""
+#~ "Sembra esserci un errore nel wrapper HFS: il file dei blocchi danneggiati "
+#~ "non contiene il volume HFS+ integrato."
+
+#~ msgid "Sorry, HFS+ cannot be resized that way yet."
+#~ msgstr "HFS+ non può ancora essere ridimensionato in quel modo."
+
+#~ msgid "shrinking embedded HFS+ volume"
+#~ msgstr "riduzione del volume HFS+ integrato"
+
+#~ msgid "Resizing the HFS+ volume has failed."
+#~ msgstr "Ridimensionamento del volume HFS+ non riuscito."
+
+#~ msgid "shrinking HFS wrapper"
+#~ msgstr "riduzione del wrapper HFS"
+
+#~ msgid "Updating the HFS wrapper has failed."
+#~ msgstr "Aggiornamento del wrapper HFS non riuscito."
+
+# (ndt) mah...
+#~ msgid ""
+#~ "This is not a real %s check.  This is going to extract special low level "
+#~ "files for debugging purposes."
+#~ msgstr ""
+#~ "Non è un controllo %s reale. Avvio della speciale procedura a basso "
+#~ "livello d'estrazione dei file per il debug."
+
+#~ msgid "Bad block list header checksum."
+#~ msgstr "Checksum dell'elenco blocchi di intestazione inesatto."
+
+#~ msgid ""
+#~ "Invalid size of a transaction block while replaying the journal (%i "
+#~ "bytes)."
+#~ msgstr ""
+#~ "Dimensione di un blocco di transazione non valida durante la riesecuzione "
+#~ "del registro (%i byte)."
+
+#~ msgid ""
+#~ "Journal stored outside of the volume are not supported.  Try to "
+#~ "desactivate the journal and run Parted again."
+#~ msgstr ""
+#~ "Registri memorizzati all'esterno del volume non sono supportati. "
+#~ "Disattivare il registro e riavviare il programma."
+
+#~ msgid "Journal offset or size is not multiple of the sector size."
+#~ msgstr ""
+#~ "Lo spostamento o la dimensione del registro non è un multiplo della "
+#~ "dimensione di un settore."
+
+#~ msgid "Incorrect magic values in the journal header."
+#~ msgstr "Valori \"magic\" errati nell'intestazione del registro."
+
+#~ msgid "Journal size mismatch between journal info block and journal header."
+#~ msgstr ""
+#~ "La dimensione del registro non corrisponde con quella dell'intestazione "
+#~ "del registro medesimo."
+
+#~ msgid "Some header fields are not multiple of the sector size."
+#~ msgstr ""
+#~ "Alcuni campi dell'intestazione non sono un multiplo della dimensione di "
+#~ "un settore."
+
+#~ msgid ""
+#~ "The sector size stored in the journal is not 512 bytes.  Parted only "
+#~ "supports 512 bytes length sectors."
+#~ msgstr ""
+#~ "La dimensione del settore presente nel registro non è di 512 byte. Il "
+#~ "programma supporta solo settori di lunghezza pari a 512 byte."
+
+#~ msgid "Bad journal checksum."
+#~ msgstr "Checksum del registro inesatto."
+
+#~ msgid ""
+#~ "The journal is not empty.  Parted must replay the transactions before "
+#~ "opening the file system.  This will modify the file system."
+#~ msgstr ""
+#~ "Il registro non è vuoto. Il programma deve ripetere le transazioni prima "
+#~ "di aprire il file system. Il file system verrà modificato."
+
+#~ msgid ""
+#~ "The volume header or the master directory block has changed while "
+#~ "replaying the journal.  You should restart Parted."
+#~ msgstr ""
+#~ "Il \"Volume Header\" o il \"Master Directory Block\" è stato modificato "
+#~ "durante la riesecuzione del registro. Riavviare il programma."
+
+#~ msgid "An extent has not been relocated."
+#~ msgstr "Un extent non è stato riposizionato."
+
+#~ msgid ""
+#~ "A reference to an extent comes from a place it should not.  You should "
+#~ "check the file system!"
+#~ msgstr ""
+#~ "Il riferimento a un extent proviene da una posizione inusuale. "
+#~ "Controllare il file system."
+
+# (ndt) preferisco lasciarli in inglese, sono delle 'parti' della struttura di HFS
+#~ msgid "This HFS volume has no catalog file.  This is very unusual!"
+#~ msgstr ""
+#~ "Questo volume HFS non possiede un \"Catalog File\". Situazione inusuale."
+
+#~ msgid ""
+#~ "This HFS volume has no extents overflow file.  This is quite unusual!"
+#~ msgstr ""
+#~ "Questo volume HFS non possiede un \"Extent Overflow File\". Situazione "
+#~ "abbastanza inusuale."
+
+#~ msgid ""
+#~ "The extents overflow file should not contain its own extents!  You should "
+#~ "check the file system."
+#~ msgstr ""
+#~ "L'\"Extent Overflow File\" non deve contenere i propri extent. "
+#~ "Controllare il file system."
+
+#~ msgid "Could not cache the file system in memory."
+#~ msgstr "Impossibile caricare il file system in memoria."
+
+#~ msgid "Bad blocks list could not be loaded."
+#~ msgstr "Impossibile caricare l'elenco dei blocchi danneggiati."
+
+#~ msgid "An error occurred during extent relocation."
+#~ msgstr "Si è verificato un errore nel riallocare l'extent."
+
+#~ msgid "This HFS+ volume has no catalog file.  This is very unusual!"
+#~ msgstr "Questo volume HFS non ha un \"Catalog File\". Situazione inusuale."
+
+#~ msgid ""
+#~ "This HFS+ volume has no extents overflow file.  This is quite unusual!"
+#~ msgstr ""
+#~ "Questo volume HFS+ non possiede un \"Extent Overflow File\". Situazione "
+#~ "abbastanza inusuale."
+
+#~ msgid "The partition must have one of the following FS-TYPEs: "
+#~ msgstr "La partizione deve avere uno dei seguenti TIPO_FS: "
+
+#~ msgid ""
+#~ "The existing file system will be destroyed and all data on the partition "
+#~ "will be lost. Do you want to continue?"
+#~ msgstr ""
+#~ "Il file system esistente verrà eliminato e tutti i dati sulla partizione "
+#~ "saranno persi. Continuare?"
+
+#~ msgid ""
+#~ "WARNING: you are attempting to use %s to operate on (%s) a file system.\n"
+#~ "%s's file system manipulation code is not as robust as what you'll find "
+#~ "in\n"
+#~ "dedicated, file-system-specific packages like e2fsprogs.  We recommend\n"
+#~ "you use %s only to manipulate partition tables, whenever possible.\n"
+#~ "Support for performing most operations on most types of file systems\n"
+#~ "will be removed in an upcoming release.\n"
+#~ msgstr ""
+#~ "Attenzione: si sta tentando di usare %s per operare su un file system "
+#~ "(%s).\n"
+#~ "Il codice per la gestione del file system %s non è sicuro e robusto "
+#~ "come \n"
+#~ "quello presente in programmi dedicati come e2fsprogs. È consigliato "
+#~ "usare\n"
+#~ "%s solo per la gestione delle tabelle di partizione. Il supporto per "
+#~ "l'esecuzione\n"
+#~ "della maggior parte delle operazioni su molti dei file system verrà "
+#~ "rimosso\n"
+#~ "in una prossima versione.\n"
+
+#~ msgid "Source device?"
+#~ msgstr "Device di origine?"
+
+#~ msgid "Source partition number?"
+#~ msgstr "Numero di partizione di origine?"
+
+#~ msgid "Can't copy an extended partition."
+#~ msgstr "Impossibile copiare una partizione estesa."
+
+#~ msgid "Destination partition number?"
+#~ msgstr "Numero della partizione di destinazione?"
+
+#~ msgid ""
+#~ "An extended partition cannot hold a file system.  Did you want mkpart?"
+#~ msgstr ""
+#~ "Una partizione estesa non può contenere un file system. Proseguire con "
+#~ "mkpart?"
+
+#~ msgid "Can't move an extended partition."
+#~ msgstr "Impossibile spostare una partizione estesa."
+
+#~ msgid "Can't move a partition onto itself.  Try using resize, perhaps?"
+#~ msgstr ""
+#~ "Impossibile spostare una partizione su sé stessa. Provare con il comando "
+#~ "resize?"
+
+#~ msgid "Minor: %d\n"
+#~ msgstr "Minor: %d\n"
+
+#~ msgid "Flags: %s\n"
+#~ msgstr "Flag: %s\n"
+
+#~ msgid "File System: %s\n"
+#~ msgstr "File system: %s\n"
+
+#~ msgid "Size:         "
+#~ msgstr "Dimensione:         "
+
+#~ msgid "Minimum size: "
+#~ msgstr "Dimensione minima:  "
+
+#~ msgid "Maximum size: "
+#~ msgstr "Dimensione massima: "
+
+#~ msgid "check"
+#~ msgstr "check"
+
+#~ msgid ""
+#~ "check NUMBER                             do a simple check on the file "
+#~ "system"
+#~ msgstr ""
+#~ "check NUMERO                             Esegue un semplice controllo sul "
+#~ "file system"
+
+#~ msgid "cp"
+#~ msgstr "cp"
+
+#~ msgid ""
+#~ "cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   copy file system to another "
+#~ "partition"
+#~ msgstr ""
+#~ "cp [DEVICE_INZIALE] DAL_NUMERO AL_NUMERO Copia un file system in un'altra "
+#~ "partizione"
+
+#~ msgid "mkfs"
+#~ msgstr "mkfs"
+
+#~ msgid ""
+#~ "mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on "
+#~ "partition NUMBER"
+#~ msgstr ""
+#~ "mkfs NUMERO TIPO_FS                      Crea un file system TIPO_FS "
+#~ "sulla partizione NUMERO"
+
+#~ msgid "mkpartfs"
+#~ msgstr "mkpartfs"
+
+#~ msgid ""
+#~ "mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file "
+#~ "system"
+#~ msgstr ""
+#~ "mkpartfs TIPO_PART TIPO_FS INIZIO FINE   Crea una partizione con un file "
+#~ "system"
+
+#~ msgid "move"
+#~ msgstr "move"
+
+#~ msgid "move NUMBER START END                    move partition NUMBER"
+#~ msgstr ""
+#~ "move NUMERO INIZIO FINE                  Sposta la partizione NUMERO"
+
+#~ msgid "resize"
+#~ msgstr "resize"
+
+#~ msgid ""
+#~ "resize NUMBER START END                  resize partition NUMBER and its "
+#~ "file system"
+#~ msgstr ""
+#~ "resize NUMERO INIZIO FINE                Ridimensiona la partizione "
+#~ "NUMERO e il suo file system"
+
+#~ msgid "This is not an ECKD disk!  This disk type is not supported!"
+#~ msgstr "Questo non è un disco ECKD. Questo tipo di disco non è supportato."
diff --git a/po/ja.gmo b/po/ja.gmo
new file mode 100644 (file)
index 0000000..1b57598
Binary files /dev/null and b/po/ja.gmo differ
diff --git a/po/ja.po b/po/ja.po
new file mode 100644 (file)
index 0000000..85d120a
--- /dev/null
+++ b/po/ja.po
@@ -0,0 +1,3322 @@
+# Partedのメッセージの日本語訳
+# Copyright (C) 2010 Free Software Foundation, Inc.
+# This file is distributed under the same license as the parted package.
+# Hiroshi Takekawa <sian@big.or.jp>, 1999-2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: parted 2.4\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2011-05-30 13:45+0200\n"
+"PO-Revision-Date: 2011-05-19 20:05+0900\n"
+"Last-Translator: Hiroshi Takekawa <sian@big.or.jp>\n"
+"Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "%s は %s の不正な引数です"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "%s は %s には曖昧な引数です"
+
+#: lib/argmatch.c:153
+#, c-format
+msgid "Valid arguments are:"
+msgstr "利用可能な引数は以下の通りです:"
+
+#: lib/closeout.c:112 libparted/labels/fdasd.c:107
+msgid "write error"
+msgstr "書き込みエラー"
+
+#: lib/error.c:181
+msgid "Unknown system error"
+msgstr "不明なシステムエラー"
+
+#: lib/getopt.c:548 lib/getopt.c:577
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
+msgstr "%s: オプション '%s' はいくつかの意味にとれてしまいます\n"
+
+#: lib/getopt.c:625 lib/getopt.c:629
+#, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s: オプション '--%s' は引数を受けとりません\n"
+
+#: lib/getopt.c:638 lib/getopt.c:643
+#, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr "%s: オプション '%c%s' は引数を受けとりません\n"
+
+#: lib/getopt.c:686 lib/getopt.c:705
+#, c-format
+msgid "%s: option '--%s' requires an argument\n"
+msgstr "%s: オプション '--%s' には引数が必要です\n"
+
+#: lib/getopt.c:743 lib/getopt.c:746
+#, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s: '--%s' は認識できないオプションです\n"
+
+#: lib/getopt.c:754 lib/getopt.c:757
+#, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "%s: '%c%s' は認識できないオプションです\n"
+
+#: lib/getopt.c:806 lib/getopt.c:809
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: '%c' は不正なオプションです\n"
+
+#: lib/getopt.c:859 lib/getopt.c:876 lib/getopt.c:1084 lib/getopt.c:1102
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: '%c' には引数が必要です\n"
+
+#: lib/getopt.c:932 lib/getopt.c:948
+#, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s: オプション '-W %s' はいくつかの意味にとれてしまいます\n"
+
+#: lib/getopt.c:972 lib/getopt.c:990
+#, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr "%s: オプション '-W %s' は引数を受けとりません\n"
+
+#: lib/getopt.c:1011 lib/getopt.c:1029
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: オプション '-W %s' には引数が必要です\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:271
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:272
+msgid "'"
+msgstr "'"
+
+#: lib/regcomp.c:133
+msgid "Success"
+msgstr "成功"
+
+#: lib/regcomp.c:136
+msgid "No match"
+msgstr "マッチなし"
+
+#: lib/regcomp.c:139
+msgid "Invalid regular expression"
+msgstr "不正な正規表現"
+
+#: lib/regcomp.c:142
+msgid "Invalid collation character"
+msgstr "不正な順序文字"
+
+#: lib/regcomp.c:145
+msgid "Invalid character class name"
+msgstr "不正な文字クラス名"
+
+#: lib/regcomp.c:148
+msgid "Trailing backslash"
+msgstr "余分なバックスラッシュ"
+
+#: lib/regcomp.c:151
+msgid "Invalid back reference"
+msgstr "不正な後方参照"
+
+#: lib/regcomp.c:154
+msgid "Unmatched [ or [^"
+msgstr "対応のない [ あるいは [^"
+
+#: lib/regcomp.c:157
+msgid "Unmatched ( or \\("
+msgstr "対応のない ( あるいは \\("
+
+#: lib/regcomp.c:160
+msgid "Unmatched \\{"
+msgstr "対応のない \\{"
+
+#: lib/regcomp.c:163
+msgid "Invalid content of \\{\\}"
+msgstr "\\{\\} の中身が不正"
+
+#: lib/regcomp.c:166
+msgid "Invalid range end"
+msgstr "不正な終了値"
+
+#: lib/regcomp.c:169
+msgid "Memory exhausted"
+msgstr "メモリ不足"
+
+#: lib/regcomp.c:172
+msgid "Invalid preceding regular expression"
+msgstr "先行する正規表現が不正"
+
+#: lib/regcomp.c:175
+msgid "Premature end of regular expression"
+msgstr "正規表現が途中で終わっている"
+
+#: lib/regcomp.c:178
+msgid "Regular expression too big"
+msgstr "大きすぎる正規表現"
+
+#: lib/regcomp.c:181
+msgid "Unmatched ) or \\)"
+msgstr "対応のない ) または \\)"
+
+#: lib/regcomp.c:702
+msgid "No previous regular expression"
+msgstr "これより前に正規表現がない"
+
+#. TRANSLATORS: A regular expression testing for an affirmative answer
+#. (english: "yes").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^yesexpr='
+#: lib/rpmatch.c:147
+msgid "^[yY]"
+msgstr "^[yY]"
+
+#. TRANSLATORS: A regular expression testing for a negative answer
+#. (english: "no").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^noexpr='
+#: lib/rpmatch.c:160
+msgid "^[nN]"
+msgstr "^[nN]"
+
+#: lib/version-etc.c:74
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "パッケージ作成者 %s (%s)\n"
+
+#: lib/version-etc.c:77
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "パッケージ作成者 %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale.  Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:84
+msgid "(C)"
+msgstr "(C)"
+
+#: lib/version-etc.c:86
+msgid ""
+"\n"
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"\n"
+"ライセンス GPLv3+: GNU GPL バージョン 3 あるいはそれ以降のバージョン <http://"
+"gnu.org/licenses/gpl.html>\n"
+"このソフトウェアはフリーソフトウェアです。自由に変更、再配布ができます。\n"
+"法律が許すかぎり、全くの無保証です。\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:102
+#, c-format
+msgid "Written by %s.\n"
+msgstr "%s によって作られました。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:106
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "%s と %s によって作られました。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:110
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "%s、%s と %s によって作られました。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"%s、%s、%s、\n"
+"および、%s によって作られました。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"%s、%s、%s、\n"
+"%s、および、%sによって作られました。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:131
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"%s、%s、%s、\n"
+"%s、%s、および、%sによって作られました。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:139
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"%s、%s、%s、\n"
+"%s、%s、%s、および、%sによって作られました。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:147
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"%s、%s、%s、\n"
+"%s、%s、%s、%s、\n"
+"および%sによって作られました。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:156
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"%s、%s、%s、\n"
+"%s、%s、%s、%s、\n"
+"%s、および、%sによって作られました。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:167
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"%s、%s、%s、\n"
+"%s、%s、%s、%s、\n"
+"%s、%sといった人々によって作られました。\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package.  Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:245
+#, c-format
+msgid ""
+"\n"
+"Report bugs to: %s\n"
+msgstr ""
+"\n"
+"バグレポートは %s へ。\n"
+
+#: lib/version-etc.c:247
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "%s のバグレポートは %s へ。\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s ホームページ: <%s>\n"
+
+#: lib/version-etc.c:253
+#, c-format
+msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
+msgstr "%s ホームページ: <http://www.gnu.org/software/%s/>\n"
+
+#: lib/version-etc.c:256
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
+msgstr "GNU ソフトウェアの一般的なヘルプは: <http://www.gnu.org/gethelp/>\n"
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "メモリ不足"
+
+#: lib/xstrtol-error.c:63
+#, c-format
+msgid "invalid %s%s argument `%s'"
+msgstr "不正な %s%s の引数 '%s' です"
+
+#: lib/xstrtol-error.c:68
+#, c-format
+msgid "invalid suffix in %s%s argument `%s'"
+msgstr "不正な接尾辞が %s%s の引数 `%s' にあります"
+
+#: lib/xstrtol-error.c:72
+#, c-format
+msgid "%s%s argument `%s' too large"
+msgstr "%s%s の引数 `%s' は大きすぎます"
+
+#: libparted/arch/beos.c:245
+msgid "Disk Image"
+msgstr "ディスクイメージ"
+
+#: libparted/arch/beos.c:346 libparted/arch/gnu.c:277
+#: libparted/arch/linux.c:1545
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "%s をオープン中にエラー: %s"
+
+#: libparted/arch/beos.c:357 libparted/arch/gnu.c:287
+#: libparted/arch/linux.c:1556
+#, c-format
+msgid "Unable to open %s read-write (%s).  %s has been opened read-only."
+msgstr ""
+"%s を読み書き可能な状態にオープンできません(%s)。%s は読み込みのみ可能な状態"
+"でオープンされました。"
+
+#: libparted/arch/beos.c:419 libparted/arch/linux.c:1714
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s: %s から読み込み中のシークでエラーが発生しました。"
+
+#: libparted/arch/beos.c:452 libparted/arch/gnu.c:465 libparted/arch/gnu.c:564
+#: libparted/arch/gnu.c:692 libparted/arch/linux.c:1674
+#: libparted/arch/linux.c:1755
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s: %s から読み込み中にエラーが発生しました。"
+
+#: libparted/arch/beos.c:488 libparted/arch/gnu.c:525
+#: libparted/arch/linux.c:1831
+#, c-format
+msgid "Can't write to %s, because it is opened read-only."
+msgstr "読み込みのみが可能なようにオープンされているので、%sに書きこめません。"
+
+#: libparted/arch/beos.c:504 libparted/arch/linux.c:1856
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s: %s に書きこみ中のシークでエラーが発生しました。"
+
+#: libparted/arch/beos.c:541 libparted/arch/gnu.c:601 libparted/arch/gnu.c:646
+#: libparted/arch/gnu.c:723 libparted/arch/linux.c:1804
+#: libparted/arch/linux.c:1898 libparted/arch/linux.c:1970
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s: %s に書きこみ中にエラーが発生しました。"
+
+#: partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "より詳しく知るには `%s --help' を使ってみてください。\n"
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr "使い方: %s [オプション] [デバイス]...\n"
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the operating system about partition table changes.\n"
+"\n"
+"  -d, --dry-run    do not actually inform the operating system\n"
+"  -s, --summary    print a summary of contents\n"
+"  -h, --help       display this help and exit\n"
+"  -v, --version    output version information and exit\n"
+msgstr ""
+"OS にパーティションテーブルの変更を通知します。\n"
+"\n"
+"  -d, --dry-run    カーネルに変更を通知しない\n"
+"  -s, --summary    内容のサマリを表示\n"
+"  -h, --help       このヘルプを表示して終了\n"
+"  -v, --version    バージョン情報を表示して終了\n"
+
+#: partprobe/partprobe.c:150
+msgid ""
+"\n"
+"When no DEVICE is given, probe all partitions.\n"
+msgstr ""
+"\n"
+"デバイスの指定がない場合は、全パーティションを調べます。\n"
+
+#: partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"バグレポートは <%s> へ。\n"
+
+#: libparted/arch/gnu.c:110
+#, c-format
+msgid "Unable to open %s."
+msgstr "%s を開けません。"
+
+#: libparted/arch/gnu.c:130
+msgid "Unable to probe store."
+msgstr "デバイスのプローブに失敗しました。"
+
+#: libparted/arch/gnu.c:368
+msgid ""
+"The partition table cannot be re-read.  This means you need to reboot before "
+"mounting any modified partitions.  You also need to reinstall your boot "
+"loader before you reboot (which may require mounting modified partitions).  "
+"It is impossible do both things!  So you'll need to boot off a rescue disk, "
+"and reinstall your boot loader from the rescue disk.  Read section 4 of the "
+"Parted User documentation for more information."
+msgstr ""
+"カーネルはパーティションテーブルの再読み込みができませんでしたので、変更を加"
+"えたパーティションを mount する前に再起動する必要があります。また、再起動する"
+"前にブートローダを再インストールする必要があります(このことは、変更したパー"
+"ティションの mount が必要となるかもしれません)。でもそれらを両方同時にはでき"
+"ません! レスキューディスクを使ってブートして、ブートローダをいれなおしてくだ"
+"さい。より詳しいことは Parted のユーザドキュメントの4章を読んでください。"
+
+#: libparted/arch/gnu.c:385
+#, c-format
+msgid ""
+"The partition table on %s cannot be re-read (%s).  This means the Hurd knows "
+"nothing about any modifications you made.  You should reboot your computer "
+"before doing anything with %s."
+msgstr ""
+"カーネルは %s のパーティションテーブルの内容を再読み込みできません(%s)。これ"
+"は Hurd はあなたが行った変更を関知していないことを意味しています。%s に対して"
+"何か操作をする前にコンピュータを再起動するべきです。"
+
+#: libparted/arch/gnu.c:396 parted/parted.c:1967
+msgid ""
+"You should reinstall your boot loader before rebooting.  Read section 4 of "
+"the Parted User documentation for more information."
+msgstr ""
+"再起動する前にブートローダをいれなおすべきです。詳細は Parted ユーザドキュメ"
+"ントの4章を読んでください。"
+
+#: libparted/arch/gnu.c:788
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%s: %s を同期中にエラーが発生しました。"
+
+#: libparted/arch/linux.c:520
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "デバイス %s を調べられません: %s"
+
+#: libparted/arch/linux.c:577
+#, c-format
+msgid "Unable to determine the dm type of %s."
+msgstr "%s の dm タイプを特定できません"
+
+#: libparted/arch/linux.c:669
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+"%s のセクタサイズが決定できません: %s\n"
+"デフォルトのセクタサイズ (%lld) を使います。"
+
+#: libparted/arch/linux.c:690
+#, c-format
+msgid ""
+"Could not determine physical sector size for %s.\n"
+"Using the logical sector size (%lld)."
+msgstr ""
+"%s の物理セクタサイズが決定できません。\n"
+"論理セクタサイズ (%lld) を使います。"
+
+#: libparted/arch/linux.c:746
+#, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "%s のサイズを決定できません(%s)"
+
+#: libparted/arch/linux.c:832
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "デバイス %s の identity を取得できません: %s"
+
+#: libparted/arch/linux.c:841
+msgid "Generic IDE"
+msgstr "一般的な IDE"
+
+#: libparted/arch/linux.c:862
+#, c-format
+msgid ""
+"Device %s has multiple (%d) logical sectors per physical sector.\n"
+"GNU Parted supports this EXPERIMENTALLY for some special disk label/file "
+"system combinations, e.g. GPT and ext2/3.\n"
+"Please consult the web site for up-to-date information."
+msgstr ""
+"デバイス %s には、物理セクタ一つにつき複数 (%dセクタ) の論理セクタがありま"
+"す。\n"
+"GNU Parted は、ある特定のディスクラベルとファイルシステムの組み合わせについ"
+"て、このような場合を「実験的に」サポートしています。例えば、GPT と ext2/3 と"
+"いった組み合わせです。\n"
+"最新の情報は web サイトをご覧ください。"
+
+#: libparted/arch/linux.c:1039
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "SCSI デバイス %s の初期化に失敗しました: %s"
+
+#: libparted/arch/linux.c:1103
+#, c-format
+msgid ""
+"The device %s is so small that it cannot possibly store a file system or "
+"partition table.  Perhaps you selected the wrong device?"
+msgstr ""
+"デバイス %s のサイズがとても小さいので、ファイルシステムやパーティションテー"
+"ブルを記録できません。デバイスの選択を間違っていないか確認してください。"
+
+#: libparted/arch/linux.c:1216
+#, c-format
+msgid ""
+"Unable to determine geometry of file/device %s.  You should not use Parted "
+"unless you REALLY know what you're doing!"
+msgstr ""
+"ファイルまたはデバイス %s の geometry を決定できません。自分で何をしているか"
+"よく理解していなければ Parted を使うべきではありません。"
+
+#: libparted/arch/linux.c:1276
+msgid "Generic SD/MMC Storage Card"
+msgstr "SD/MMC カード"
+
+#: libparted/arch/linux.c:1329
+msgid "DAC960 RAID controller"
+msgstr "DAC960 RAID コントローラ"
+
+#: libparted/arch/linux.c:1334
+msgid "Promise SX8 SATA Device"
+msgstr "Promise SX8 SATA デバイス"
+
+#: libparted/arch/linux.c:1339
+msgid "ATA over Ethernet Device"
+msgstr "ATA over Ethernetデバイス"
+
+#: libparted/arch/linux.c:1345
+msgid "IBM S390 DASD drive"
+msgstr "IBM S390 DASD ドライブ"
+
+#: libparted/arch/linux.c:1351
+msgid "IBM iSeries Virtual DASD"
+msgstr "IBM iSeries Virtual DASD"
+
+#: libparted/arch/linux.c:1356
+msgid "Compaq Smart Array"
+msgstr "Compaq Smart Array"
+
+#: libparted/arch/linux.c:1361
+msgid "ATARAID Controller"
+msgstr "ATA RAID コントローラ"
+
+#: libparted/arch/linux.c:1366
+msgid "I2O Controller"
+msgstr "I2O コントローラ"
+
+#: libparted/arch/linux.c:1371
+msgid "User-Mode Linux UBD"
+msgstr "User-Mode Linux UBD"
+
+#: libparted/arch/linux.c:1384
+#, c-format
+msgid "Linux device-mapper (%s)"
+msgstr "Linux device-mapper (%s)"
+
+#: libparted/arch/linux.c:1395
+msgid "Xen Virtual Block Device"
+msgstr "Xen Virtual Block Device"
+
+#: libparted/arch/linux.c:1400
+msgid "Unknown"
+msgstr "不明"
+
+#: libparted/arch/linux.c:1409
+msgid "Virtio Block Device"
+msgstr "Virtio Block Device"
+
+#: libparted/arch/linux.c:1414
+msgid "Linux Software RAID Array"
+msgstr "Linux Software RAID Array"
+
+#: libparted/arch/linux.c:1421
+msgid "ped_device_new()  Unsupported device type"
+msgstr "ped_device_new()  サポートされていない種類のデバイスです。"
+
+#: libparted/arch/linux.c:1518 libparted/arch/linux.c:1590
+#, c-format
+msgid "Error fsyncing/closing %s: %s"
+msgstr "%s を fsync/close 中にエラー: %s"
+
+#: libparted/arch/linux.c:1754
+#, c-format
+msgid "end of file while reading %s"
+msgstr "%s を読み込み中にファイルの終わりに達しました"
+
+#: libparted/arch/linux.c:2390
+#, c-format
+msgid ""
+"Error informing the kernel about modifications to partition %s -- %s.  This "
+"means Linux won't know about any changes you made to %s until you reboot -- "
+"so you shouldn't mount it or use it in any way before rebooting."
+msgstr ""
+"カーネルにパーティション %s への変更を伝えることができませんでした -- %s。"
+"従って、カーネルは再起動するまで %s に行った変更を認識しません。再起動するま"
+"でそのパーティションをマウントしたり何かしたりしてはいけません。"
+
+#: libparted/arch/linux.c:2528
+#, c-format
+msgid "Unable to determine the size and length of %s."
+msgstr "%s のサイズと長さを決定できません"
+
+#: libparted/arch/linux.c:2553
+#, c-format
+msgid "Failed to add partition %d (%s)"
+msgstr "パーティション %d を追加できませんでした (%s)"
+
+#: libparted/arch/linux.c:2580
+#, c-format
+msgid ""
+"Partition(s) %s on %s have been written, but we have been unable to inform "
+"the kernel of the change, probably because it/they are in use.  As a result, "
+"the old partition(s) will remain in use.  You should reboot now before "
+"making further changes."
+msgstr ""
+"パーティション %s (%s 上) に書きこまれましたが、カーネルに変更を伝えることが"
+"できませんでした。おそらく、使用中だったのが原因だと思われます。そのため、古"
+"いパーティション情報がそのまま使われます。さらなる変更をする前に再起動してく"
+"ださい。"
+
+#: libparted/arch/linux.c:2706
+#, c-format
+msgid ""
+"parted was unable to re-read the partition table on %s (%s).  This means "
+"Linux won't know anything about the modifications you made. "
+msgstr ""
+"parted は %s のパーティションテーブルの内容を再読み込みできません(%s)。これ"
+"は Linux カーネルはあなたが行った変更を関知していないことを意味しています。"
+
+#: libparted/cs/geom.c:161
+#, c-format
+msgid "Can't have the end before the start! (start sector=%jd length=%jd)"
+msgstr "終了位置を開始位置の前には動かせません(開始セクタ=%jd 長さ=%jd)。"
+
+#: libparted/cs/geom.c:169
+msgid "Can't have a partition outside the disk!"
+msgstr "ディスクの外側にパーティションは作れません。"
+
+#: libparted/cs/geom.c:384
+#, c-format
+msgid "Attempt to write sectors %ld-%ld outside of partition on %s."
+msgstr ""
+"書き込もうとしたセクタ (%ld-%ld) は %s 上のパーティションの外にあります。"
+
+#: libparted/cs/geom.c:424
+msgid "checking for bad blocks"
+msgstr "不良ブロックをチェック中"
+
+#: libparted/debug.c:96
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr "Backtrace has %d calls on stack:\n"
+
+#: libparted/debug.c:109
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr "Assertion (%s) at %s:%d in function %s() failed."
+
+#: libparted/disk.c:192
+#, c-format
+msgid "%s: unrecognised disk label"
+msgstr "%s: ディスクラベルが認識できません。"
+
+#: libparted/disk.c:484
+#, c-format
+msgid ""
+"This libparted doesn't have write support for %s.  Perhaps it was compiled "
+"read-only."
+msgstr ""
+"使用している libparted は %s の書きこみをサポートしていません。読み込み専用で"
+"コンパイルされていると思われます。"
+
+#: libparted/disk.c:629
+#, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "パーティション %d は %s であるのに、ファイルシステムは %s です。"
+
+#: libparted/disk.c:838
+msgid "cylinder_alignment"
+msgstr "cylinder_alignment"
+
+#: libparted/disk.c:844
+#, c-format
+msgid "Unknown disk flag, %d."
+msgstr "%d は不明なディスクフラグです。"
+
+#: libparted/disk.c:1283
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "%s のディスクラベルは拡張パーティションをサポートしていません。"
+
+#: libparted/disk.c:1858
+#, c-format
+msgid "%s disk labels don't support logical or extended partitions."
+msgstr ""
+"%s のディスクラベルは論理パーティションや拡張パーティションをサポートしてませ"
+"ん"
+
+#: libparted/disk.c:1871
+msgid "Too many primary partitions."
+msgstr "プライマリパーティションが多すぎます。"
+
+#: libparted/disk.c:1880
+#, c-format
+msgid ""
+"Can't add a logical partition to %s, because there is no extended partition."
+msgstr "拡張パーティションがないので、論理パーティションを %s に作れません。"
+
+#: libparted/disk.c:1904
+#, c-format
+msgid "Can't have more than one extended partition on %s."
+msgstr "%s には 1 個しか拡張パーティションを作れません。"
+
+#: libparted/disk.c:1914
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr "論理パーティションを拡張パーティションの外には持てません。"
+
+#: libparted/disk.c:1939
+#, c-format
+msgid "Can't have a logical partition outside of the extended partition on %s."
+msgstr "%s の拡張パーティションの外に論理パーティションは作れません。"
+
+#: libparted/disk.c:1949 libparted/disk.c:2008 libparted/disk.c:2186
+msgid "Can't have overlapping partitions."
+msgstr "重なりのあるパーティションは持てません。"
+
+#: libparted/disk.c:1957
+msgid "Can't have a primary partition inside an extended partition."
+msgstr "拡張パーティション内にプライマリパーティションは作れません。"
+
+#: libparted/disk.c:2387
+msgid "metadata"
+msgstr "メタ情報"
+
+#: libparted/disk.c:2389
+msgid "free"
+msgstr "空き"
+
+#: libparted/disk.c:2391 parted/ui.c:1194 parted/ui.c:1222
+msgid "extended"
+msgstr "拡張"
+
+#: libparted/disk.c:2393 parted/ui.c:1198 parted/ui.c:1226
+msgid "logical"
+msgstr "論理"
+
+#: libparted/disk.c:2395 parted/ui.c:1190 parted/ui.c:1218
+msgid "primary"
+msgstr "プライマリ"
+
+#: libparted/disk.c:2411
+msgid "boot"
+msgstr "boot"
+
+#: libparted/disk.c:2413
+msgid "bios_grub"
+msgstr "bios_grub"
+
+#: libparted/disk.c:2415
+msgid "root"
+msgstr "root"
+
+#: libparted/disk.c:2417
+msgid "swap"
+msgstr "swap"
+
+#: libparted/disk.c:2419
+msgid "hidden"
+msgstr "hidden"
+
+#: libparted/disk.c:2421
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2423
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2425
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2427
+msgid "hp-service"
+msgstr "hp-service"
+
+#: libparted/disk.c:2429
+msgid "palo"
+msgstr "palo"
+
+#: libparted/disk.c:2431
+msgid "prep"
+msgstr "prep"
+
+#: libparted/disk.c:2433
+msgid "msftres"
+msgstr "msftres"
+
+#: libparted/disk.c:2435
+msgid "atvrecv"
+msgstr "atvrecv"
+
+#: libparted/disk.c:2437
+msgid "diag"
+msgstr "diag"
+
+#: libparted/disk.c:2439
+msgid "legacy_boot"
+msgstr "legacy_boot"
+
+#: libparted/disk.c:2445
+#, c-format
+msgid "Unknown partition flag, %d."
+msgstr "%d は不明なパーティションフラグです。"
+
+#: libparted/exception.c:77
+msgid "Information"
+msgstr "通知"
+
+#: libparted/exception.c:78
+msgid "Warning"
+msgstr "警告"
+
+#: libparted/exception.c:79
+msgid "Error"
+msgstr "エラー"
+
+#: libparted/exception.c:80
+msgid "Fatal"
+msgstr "致命的エラー"
+
+#: libparted/exception.c:81
+msgid "Bug"
+msgstr "バグ"
+
+#: libparted/exception.c:82
+msgid "No Implementation"
+msgstr "未実装"
+
+#: libparted/exception.c:86
+msgid "Fix"
+msgstr "修正"
+
+#: libparted/exception.c:87
+msgid "Yes"
+msgstr "はい(Y)"
+
+#: libparted/exception.c:88
+msgid "No"
+msgstr "いいえ(N)"
+
+#: libparted/exception.c:89
+msgid "OK"
+msgstr "OK"
+
+#: libparted/exception.c:90
+msgid "Retry"
+msgstr "やりなおし(R)"
+
+#: libparted/exception.c:91
+msgid "Ignore"
+msgstr "無視(I)"
+
+#: libparted/exception.c:92
+msgid "Cancel"
+msgstr "取消(C)"
+
+#: libparted/exception.c:132
+#, c-format
+msgid ""
+"A bug has been detected in GNU Parted.  Refer to the web site of parted "
+"http://www.gnu.org/software/parted/parted.html for more information of what "
+"could be useful for bug submitting!  Please email a bug report to %s "
+"containing at least the version (%s) and the following message:  "
+msgstr ""
+"GNU parted にバグが見つかりました。parted のウェブサイト http://www.gnu.org/"
+"software/parted/parted.html に何を報告すればバグレポートとして役立つか載せて"
+"あります。%s に最低限どのバージョンか (%s) と以下のメッセージを含めてメールで"
+"送ってください: "
+
+#: libparted/labels/aix.c:103
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr "AIX ディスクラベルの読み込みは未実装です。"
+
+#: libparted/labels/aix.c:114
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr "AIX ディスクラベルの書き込みは未実装です。"
+
+#: libparted/labels/aix.c:127
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr "AIX ディスクラベルへのパーティションの追加は未実装です。"
+
+#: libparted/labels/aix.c:137
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr "AIX ディスクラベルでのパーティションの複製は未実装です。"
+
+#: libparted/labels/aix.c:155
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr "AIX ディスクラベルのパーティションのシステムタイプの設定は未実装です。"
+
+#: libparted/labels/aix.c:165
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr "AIX ディスクラベルのフラグの設定は未実装です。"
+
+#: libparted/labels/bsd.c:571 libparted/labels/dasd.c:833
+#: libparted/labels/dos.c:2176 libparted/labels/dvh.c:787
+#: libparted/labels/gpt.c:1782 libparted/labels/loop.c:247
+#: libparted/labels/mac.c:1426 libparted/labels/pc98.c:748
+#: libparted/labels/rdb.c:1052 libparted/labels/sun.c:780
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "このパーティションで全ての制約を満たせません。"
+
+#: libparted/labels/bsd.c:596
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "BSDディスクラベルのスロットを確保できません。"
+
+#: libparted/labels/dasd.c:859
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "dasd ディスクラベルのスロットを確保できません。"
+
+#: libparted/labels/dos.c:966
+#, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr ""
+"%s のパーティションテーブルが不正です。%x というシグネチャはあやまりです。"
+
+#: libparted/labels/dos.c:994
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr ""
+"パーティションテーブルが不正です。再帰的なパーティションが %s にあります。"
+
+#: libparted/labels/dos.c:1504
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr "MSDOS ディスクラベルで拡張パーティションは隠せません。"
+
+#: libparted/labels/dos.c:2158
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+"ダイナミックディスクに使われているパーティションは Parted ではリサイズできま"
+"せん。"
+
+#: libparted/labels/dvh.c:200
+#, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr ""
+"%s は一つも拡張パーティション(ボリュームヘッダパーティション)を持っていませ"
+"ん。"
+
+#: libparted/labels/dvh.c:326
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr "チェックサムの値が違います。パーティションテーブルが壊れています。"
+
+#: libparted/labels/dvh.c:631
+msgid "Only primary partitions can be root partitions."
+msgstr "プライマリパーティションだけがルートパーティションになれます。"
+
+#: libparted/labels/dvh.c:645
+msgid "Only primary partitions can be swap partitions."
+msgstr "プライマリパーティションだけがスワップパーティションになれます。"
+
+#: libparted/labels/dvh.c:659
+msgid "Only logical partitions can be a boot file."
+msgstr "論理パーティションだけがブートファイルになれます。"
+
+#: libparted/labels/dvh.c:736
+#, c-format
+msgid ""
+"failed to set dvh partition name to %s:\n"
+"Only logical partitions (boot files) have a name."
+msgstr ""
+"dvh パーティション名を %s に設定するのに失敗しました:\n"
+"論理パーティション(ブートファイル)だけが名前を持ちます。"
+
+#: libparted/labels/dvh.c:829
+msgid "Too many primary partitions"
+msgstr "プライマリパーティションが多すぎます。"
+
+#: libparted/labels/fdasd.c:98
+msgid "open error"
+msgstr "オープンエラー"
+
+#: libparted/labels/fdasd.c:101
+msgid "seek error"
+msgstr "シークエラー"
+
+#: libparted/labels/fdasd.c:104
+msgid "read error"
+msgstr "読み込みエラー"
+
+#: libparted/labels/fdasd.c:110
+msgid "ioctl() error"
+msgstr "ioctl()エラー"
+
+#: libparted/labels/fdasd.c:114
+msgid "API version mismatch"
+msgstr "API バージョン不整合"
+
+#: libparted/labels/fdasd.c:118
+msgid "Unsupported disk type"
+msgstr "サポートされていないディスクタイプ"
+
+#: libparted/labels/fdasd.c:122
+msgid "Unsupported disk format"
+msgstr "サポートされていないディスクフォーマット"
+
+#: libparted/labels/fdasd.c:126
+msgid "Disk is in use"
+msgstr "ディスク使用中"
+
+#: libparted/labels/fdasd.c:130
+msgid "Syntax error in config file"
+msgstr "コンフィグファイルの文法エラー"
+
+#: libparted/labels/fdasd.c:134
+msgid "Volume label is corrupted"
+msgstr "ボリュームラベルが壊れています"
+
+#: libparted/labels/fdasd.c:138
+msgid "A data set name is corrupted"
+msgstr "データセット名が壊れています"
+
+#: libparted/labels/fdasd.c:142
+msgid "Memory allocation failed"
+msgstr "メモリの確保に失敗しました。"
+
+#: libparted/labels/fdasd.c:146
+msgid "Device verification failed"
+msgstr "デバイスのベリファイに失敗しました。"
+
+#: libparted/labels/fdasd.c:147
+msgid "The specified device is not a valid DASD device"
+msgstr "指定されたデバイスは有効な DASD デバイスではありません"
+
+#: libparted/labels/fdasd.c:150 libparted/labels/vtoc.c:179
+msgid "Fatal error"
+msgstr "致命的なエラー"
+
+#: libparted/labels/fdasd.c:226
+msgid "No room for volume label."
+msgstr "ボリュームラベルのための領域がありません。"
+
+#: libparted/labels/fdasd.c:234
+msgid "No room for partition info."
+msgstr "パーティション情報のための領域がありません。"
+
+#: libparted/labels/fdasd.c:709
+msgid "Invalid VTOC."
+msgstr "不正なVTOCです。"
+
+#: libparted/labels/fdasd.c:766
+msgid "Could not retrieve API version."
+msgstr "API バージョンが取得できません。"
+
+#: libparted/labels/fdasd.c:769
+#, c-format
+msgid ""
+"The current API version '%d' doesn't match dasd driver API version '%d'!"
+msgstr ""
+"現在の API のバージョンは '%d' で、dasd ドライバ API のバージョン '%d' と一致"
+"しません!"
+
+#: libparted/labels/fdasd.c:806
+msgid "Could not retrieve disk geometry information."
+msgstr "ディスクのジオメトリ情報が取得できません。"
+
+#: libparted/labels/fdasd.c:810
+msgid "Could not retrieve blocksize information."
+msgstr "ブロックサイズ情報が取得できません。"
+
+#: libparted/labels/fdasd.c:815
+msgid "Could not retrieve disk information."
+msgstr "ディスク情報が取得できません。"
+
+#: libparted/labels/gpt.c:493
+#, c-format
+msgid ""
+"%s contains GPT signatures, indicating that it has a GPT table.  However, it "
+"does not have a valid fake msdos partition table, as it should.  Perhaps it "
+"was corrupted -- possibly by a program that doesn't understand GPT partition "
+"tables.  Or perhaps you deleted the GPT table, and are now using an msdos "
+"partition table.  Is this a GPT partition table?"
+msgstr ""
+"%s は GPT テーブルの存在を示す GPT のシグネチャを含んでいますが、持っているべ"
+"き見せかけの msdos パーティションテーブルを持っていません。おそらく壊れている"
+"のでしょう。GPT パーティションテーブルを理解しないプログラムが壊してしまった"
+"のかもしれません。あるいは、GPT テーブルを自ら消していて、msdos パーティショ"
+"ンテーブルを使っているのかもしれません。このテーブルは GPT パーティションテー"
+"ブルですか?"
+
+#: libparted/labels/gpt.c:693
+#, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise.  Please report this!"
+msgstr ""
+"GPT パーティションテーブルのフォーマットのバージョンが %x で parted の理解で"
+"きるものより新しいです。報告してください。"
+
+#: libparted/labels/gpt.c:740
+#, c-format
+msgid ""
+"Not all of the space available to %s appears to be used, you can fix the GPT "
+"to use all of the space (an extra %llu blocks) or continue with the current "
+"setting? "
+msgstr ""
+"%s で利用可能な領域の一部が利用されていません。GPT を修正して全ての領域を利用"
+"可能にするか(%llu ブロック増えます)、このままで続行することができますが、どう"
+"しますか?"
+
+#: libparted/labels/gpt.c:952
+msgid ""
+"The backup GPT table is not at the end of the disk, as it should be.  This "
+"might mean that another operating system believes the disk is smaller.  Fix, "
+"by moving the backup to the end (and removing the old backup)?"
+msgstr ""
+"あるべき GPT テーブルのバックアップがディスクの最後にありません。他の OS が"
+"ディスクはもっと小さいものだと思っているのかもしれません。バックアップを最後"
+"に持ってきて(古いバックアップを削除して)修復しますか?"
+
+#: libparted/labels/gpt.c:976
+msgid ""
+"Both the primary and backup GPT tables are corrupt.  Try making a fresh "
+"table, and using Parted's rescue feature to recover partitions."
+msgstr ""
+"プライマリ GPT テーブルとバックアップの両方が壊れています。新たにテーブルを作"
+"りなおして、Parted の修復機能を用いてパーティションの修復を試みます。"
+
+#: libparted/labels/gpt.c:987
+msgid ""
+"The backup GPT table is corrupt, but the primary appears OK, so that will be "
+"used."
+msgstr ""
+"バックアップ GPT テーブルは壊れていますが、プライマリは問題ないようなので、そ"
+"ちらを使います。"
+
+#: libparted/labels/gpt.c:999
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr ""
+"プライマリ GPT テーブルは壊れていますが、バックアップは問題ないようなので、そ"
+"ちらを使います。"
+
+#: libparted/labels/gpt.c:1023
+msgid "primary partition table array CRC mismatch"
+msgstr "プライマリパーティションテーブルの CRC が一致しません"
+
+#: libparted/labels/mac.c:184
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Mac ディスクラベルのシグネチャ %x は不正です。"
+
+#: libparted/labels/mac.c:231
+msgid "Partition map has no partition map entry!"
+msgstr "パーティションマップにエントリがありません。"
+
+#: libparted/labels/mac.c:279
+#, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr "%s は Mac ディスクラベルには小さすぎます。"
+
+#: libparted/labels/mac.c:508
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "パーティション %d のシグネチャ %x は不正です。"
+
+#: libparted/labels/mac.c:526
+#, c-format
+msgid "Partition %d has an invalid length of 0 bytes!"
+msgstr "パーティション %d の長さが 0 なのは不正です。"
+
+#: libparted/labels/mac.c:557
+msgid "The data region doesn't start at the start of the partition."
+msgstr "データ領域がパーティションの開始位置から始まってません。"
+
+#: libparted/labels/mac.c:574
+msgid "The boot region doesn't start at the start of the partition."
+msgstr "ブート領域がパーティションの開始位置から始まってません。"
+
+#: libparted/labels/mac.c:588
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr "パーティションのブート領域が、パーティション全体を占有してません。"
+
+#: libparted/labels/mac.c:599
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr "パーティションのデータ領域が、パーティション全体を占有してません。"
+
+#: libparted/labels/mac.c:652
+#, c-format
+msgid ""
+"Weird block size on device descriptor: %d bytes is not divisible by 512."
+msgstr ""
+"デバイスディスクリプタに書いてあるブロックサイズはおかしいです。%d バイトは "
+"512 で割り切れません。"
+
+#: libparted/labels/mac.c:665
+#, c-format
+msgid ""
+"The driver descriptor says the physical block size is %d bytes, but Linux "
+"says it is %d bytes."
+msgstr ""
+"ドライバは物理ブロックサイズが %d バイトであると言っていますが、Linux は %d "
+"バイトだと言っています。"
+
+#: libparted/labels/mac.c:719
+msgid "No valid partition map found."
+msgstr "正しいパーティションマップが見つかりません。"
+
+#: libparted/labels/mac.c:780
+#, c-format
+msgid ""
+"Conflicting partition map entry sizes!  Entry 1 says it is %d, but entry %d "
+"says it is %d!"
+msgstr ""
+"パーティションマップのエントリのサイズが一致しません。エントリ 1 によれば %d "
+"ですが、エントリ %d によれば %d です。"
+
+#: libparted/labels/mac.c:811
+msgid "Weird!  There are 2 partitions map entries!"
+msgstr "おかしいです。パーティションマップエントリが2つあります。"
+
+#: libparted/labels/mac.c:1357
+msgid ""
+"Changing the name of a root or swap partition will prevent Linux from "
+"recognising it as such."
+msgstr ""
+"root に使われているパーティションや swap パーティションの名前を変更すると "
+"Linux がそれらをそうと認識できなくなります。"
+
+#: libparted/labels/mac.c:1461
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr "パーティションを追加できません。パーティションマップが小さすぎます。"
+
+#: libparted/labels/pc98.c:331
+#, c-format
+msgid "Invalid partition table on %s."
+msgstr "%s のパーティションテーブルが不正です。"
+
+#: libparted/labels/pc98.c:384 libparted/labels/pc98.c:462
+#, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries.  This is still "
+"unsupported."
+msgstr ""
+"パーティション %d はシリンダ境界上にありません。これはまだサポートされていま"
+"せん。"
+
+#: libparted/labels/pc98.c:780
+msgid "Can't add another partition."
+msgstr "パーティションを追加できません。"
+
+#: libparted/labels/pt-tools.c:125
+#, c-format
+msgid ""
+"partition length of %jd sectors exceeds the %s-partition-table-imposed "
+"maximum of %jd"
+msgstr ""
+"パーティション長 %jd セクタは %s パーティションテーブルによって決められた最大"
+"長 %jd を越えています"
+
+#: libparted/labels/pt-tools.c:138
+#, c-format
+msgid ""
+"starting sector number, %jd exceeds the %s-partition-table-imposed maximum "
+"of %jd"
+msgstr ""
+"開始セクタ番号 %jd は %s パーティションテーブルによって決められた最大値 %jd "
+"を越えています"
+
+#: libparted/labels/rdb.c:169
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr "%s : ブロック %llu (type %s) のチェックサムが不正です。"
+
+#: libparted/labels/rdb.c:484
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr ""
+"%s : rdb ブロックが見つかりませんでした。これはあってはならないことです。"
+
+#: libparted/labels/rdb.c:573
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr "%s : ブロック %d にループが発見されました。"
+
+#: libparted/labels/rdb.c:592
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr "%s : %s リストがおかしいようです(ブロック %s)。"
+
+#: libparted/labels/rdb.c:691
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr "%s : 不正なブロックの一覧を得られませんでした。"
+
+#: libparted/labels/rdb.c:699
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr "%s : パーティションブロックの一覧を得られませんでした。"
+
+#: libparted/labels/rdb.c:707
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr "%s : ファイルシステムブロックの一覧を得られませんでした。"
+
+#: libparted/labels/rdb.c:715
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr "%s : ブートブロックの一覧を得られませんでした。"
+
+#: libparted/labels/rdb.c:742
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr "パーティションブロック(ブロック %d)の書きこみに失敗しました。"
+
+#: libparted/labels/rdb.c:1080
+msgid "Unable to allocate a partition number."
+msgstr "パーティション番号を割り当てられません。"
+
+#: libparted/labels/sun.c:161
+msgid "Corrupted Sun disk label detected."
+msgstr "Sunディスクラベルの破損を検出しました。"
+
+#: libparted/labels/sun.c:276
+#, c-format
+msgid ""
+"The disk CHS geometry (%d,%d,%d) reported by the operating system does not "
+"match the geometry stored on the disk label (%d,%d,%d)."
+msgstr ""
+"ディスクの geometry(CHS) (%d,%d,%d) が、ディスクラベルのもの (%d,%d,%d) と一"
+"致しません。"
+
+#: libparted/labels/sun.c:298
+#, c-format
+msgid "The disk label describes a disk bigger than %s."
+msgstr "ディスクレベルによると、ディスクは %s より大きいことになっています。"
+
+#: libparted/labels/sun.c:473
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr ""
+"このディスクは %d シリンダあります。これは最大値の 65536 を越えています。"
+
+#: libparted/labels/sun.c:812
+msgid ""
+"The Whole Disk partition is the only available one left.  Generally, it is "
+"not a good idea to overwrite this partition with a real one.  Solaris may "
+"not be able to boot without it, and SILO (the sparc boot loader) appreciates "
+"it as well."
+msgstr ""
+"Whole Disk パーティションしか残されてません。だいたいの場合において、このパー"
+"ティションを上書きするのはよくありません。Solaris が起動しなくなるかもしれま"
+"せんし、SILO(the sparc boot loader)にも都合がよくありません。"
+
+#: libparted/labels/sun.c:827
+msgid "Sun disk label is full."
+msgstr "Sunディスクラベルがいっぱいです。"
+
+#: libparted/labels/vtoc.c:164
+msgid "opening of device failed"
+msgstr "デバイスのオープンに失敗しました。"
+
+#: libparted/labels/vtoc.c:168
+msgid "seeking on device failed"
+msgstr "デバイスのシークに失敗しました。"
+
+#: libparted/labels/vtoc.c:172
+msgid "writing to device failed"
+msgstr "デバイスへの書き込みに失敗しました。"
+
+#: libparted/labels/vtoc.c:176
+msgid "reading from device failed"
+msgstr "デバイスからの読み込みに失敗しました。"
+
+#: libparted/labels/vtoc.c:299 libparted/labels/vtoc.c:308
+#: libparted/labels/vtoc.c:329 libparted/labels/vtoc.c:336
+msgid "Could not read volume label."
+msgstr "ボリュームラベルが読めません。"
+
+#: libparted/labels/vtoc.c:356 libparted/labels/vtoc.c:363
+msgid "Could not write volume label."
+msgstr "ボリュームラベルが書けません。"
+
+#: libparted/labels/vtoc.c:469
+msgid "Could not read VTOC labels."
+msgstr "VTOC ラベルが読めません。"
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr "VTOC FMT1 DSCB が読めません。"
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr "VTOC FMT4 DSCB が読めません。"
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr "VTOC FMT5 DSCB が読めません。"
+
+#: libparted/labels/vtoc.c:496
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr "VTOC FMT7 DSCB が読めません。"
+
+#: libparted/labels/vtoc.c:516
+msgid "Could not write VTOC labels."
+msgstr "VTOC ラベルが書けません。"
+
+#: libparted/labels/vtoc.c:522
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr "VTOC FMT1 DSCB が書けません。"
+
+#: libparted/labels/vtoc.c:529
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr "VTOC FMT4 DSCB が書けません。"
+
+#: libparted/labels/vtoc.c:536
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr "VTOC FMT5 DSCB が書けません。"
+
+#: libparted/labels/vtoc.c:543
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr "VTOC FMT7 DSCB が書けません。"
+
+#: libparted/libparted.c:230 libparted/libparted.c:245
+msgid "Out of memory."
+msgstr "メモリ不足です。"
+
+#: libparted/unit.c:138
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr "特別な単位である 'COMPACT' の単位あたりのサイズを得られません。"
+
+#: libparted/unit.c:384
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr "\"%s\" には位置について誤りがあります。"
+
+#: libparted/unit.c:392
+#, c-format
+msgid "The maximum head value is %d."
+msgstr "最大ヘッド値は %d です。"
+
+#: libparted/unit.c:399
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr "最大セクタ値は %d です。"
+
+#: libparted/unit.c:411 libparted/unit.c:556
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr "%s は、デバイス %s の外です。"
+
+#: libparted/unit.c:531
+msgid "Invalid number."
+msgstr "不正な値です。"
+
+#: libparted/fs/amiga/affs.c:62 libparted/fs/amiga/apfs.c:55
+#: libparted/fs/amiga/asfs.c:69
+#, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "%s : パーティションブロックの確保に失敗しました。\n"
+
+#: libparted/fs/amiga/affs.c:77 libparted/fs/amiga/apfs.c:68
+#: libparted/fs/amiga/asfs.c:81
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr "%s : ブロックの確保に失敗しました。\n"
+
+#: libparted/fs/amiga/affs.c:82 libparted/fs/amiga/apfs.c:73
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr "%s : ブートブロック %llu が読めません\n"
+
+#: libparted/fs/amiga/affs.c:98 libparted/fs/amiga/apfs.c:84
+#: libparted/fs/amiga/asfs.c:87 libparted/fs/amiga/asfs.c:101
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr "%s : ルートブロック %llu が読めません\n"
+
+#: libparted/fs/amiga/amiga.c:71
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr "%s : id list element が確保できません\n"
+
+#: libparted/fs/amiga/amiga.c:188
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr "%s : ブロック %llu が読めません\n"
+
+#: libparted/fs/amiga/amiga.c:201
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr "%s : ブロック %llu (タイプ %s) のチェックサムが不正です\n"
+
+#: libparted/fs/amiga/amiga.c:211
+#, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s : ブロック %d に書きこめません\n"
+
+#: libparted/fs/amiga/amiga.c:277
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr "%s : disk_specific rdb ブロックが確保できません\n"
+
+#: libparted/fs/amiga/amiga.c:288
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr "%s : rdb ブロックが見つかりません。起こるはずのないことです。\n"
+
+#: libparted/fs/amiga/amiga.c:317
+#, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr "%s : パーティションブロック %llu が読めません\n"
+
+#: libparted/fs/fat/fat.c:174
+msgid ""
+"GNU Parted was miscompiled: the FAT boot sector should be 512 bytes.  FAT "
+"support will be disabled."
+msgstr ""
+"GNU parted がちゃんとコンパイルされていません。FAT のブートセクタは 512 バイ"
+"トであるべきです。FAT サポートを無効にします。"
+
+#: libparted/fs/fat/bootsector.c:49 libparted/fs/fat/bootsector.c:56
+msgid "File system has an invalid signature for a FAT file system."
+msgstr ""
+"ファイルシステムのシグネチャが FAT ファイルシステムのものではありません。"
+
+#: libparted/fs/fat/bootsector.c:64
+msgid "File system has an invalid sector size for a FAT file system."
+msgstr ""
+"ファイルシステムのセクタサイズが FAT ファイルシステムのものではありません。"
+
+#: libparted/fs/fat/bootsector.c:71
+msgid "File system has an invalid cluster size for a FAT file system."
+msgstr ""
+"ファイルシステムのクラスタサイズが FAT ファイルシステムのものではありません。"
+
+#: libparted/fs/fat/bootsector.c:78
+msgid ""
+"File system has an invalid number of reserved sectors for a FAT file system."
+msgstr ""
+"ファイルシステムの予約セクタの数が FAT ファイルシステムとしては不正です。"
+
+#: libparted/fs/fat/bootsector.c:85
+msgid "File system has an invalid number of FATs."
+msgstr "ファイルシステムの FAT の数が不正です。"
+
+#: libparted/fs/fat/bootsector.c:156
+#, c-format
+msgid ""
+"This file system has a logical sector size of %d.  GNU Parted is known not "
+"to work properly with sector sizes other than 512 bytes."
+msgstr ""
+"このファイルシステムの論理セクタサイズは %d です.  セクタサイズが 512 バイト"
+"以外では GNU Parted はうまく動かないことが知られています。"
+
+#: libparted/fs/fat/bootsector.c:181
+#, c-format
+msgid ""
+"The file system's CHS geometry is (%d, %d, %d), which is invalid.  The "
+"partition table's CHS geometry is (%d, %d, %d).  If you select Ignore, the "
+"file system's CHS geometry will be left unchanged.  If you select Fix, the "
+"file system's CHS geometry will be set to match the partition table's CHS "
+"geometry."
+msgstr ""
+"このファイルシステムの CHS geometry は (%d, %d, %d) で不正です。パーティショ"
+"ンテーブルの CHS geometry は (%d, %d, %d) です。無視(I)を選べばファイルシステ"
+"ムの CHS geometry はそのままになります。修正(F)を選べば、ファイルシステムの "
+"CHS geometry は、パーティションの CHS geometry と合うよう修正されます。"
+
+#: libparted/fs/fat/bootsector.c:230
+msgid "FAT boot sector says logical sector size is 0.  This is weird. "
+msgstr ""
+"FAT のブートセクタには論理セクタサイズが 0 と書かれています、これはおかしいで"
+"す。"
+
+#: libparted/fs/fat/bootsector.c:236
+msgid "FAT boot sector says there are no FAT tables.  This is weird. "
+msgstr "FAT のブートセクタに FAT テーブルがありません。これはおかしいです。"
+
+#: libparted/fs/fat/bootsector.c:242
+msgid "FAT boot sector says clusters are 0 sectors.  This is weird. "
+msgstr ""
+"FAT のブートセクタにクラスタは 0 セクタであると書かれています。これはおかしい"
+"です。"
+
+#: libparted/fs/fat/bootsector.c:252
+msgid "File system is FAT12, which is unsupported."
+msgstr "FAT12 はサポートしていません。"
+
+#: libparted/fs/fat/bootsector.c:428
+#, c-format
+msgid ""
+"The information sector has the wrong signature (%x).  Select cancel for now, "
+"and send in a bug report.  If you're desperate, it's probably safe to ignore."
+msgstr ""
+"information セクタのシグネチャ(%x)はまちがっています。取消(C) してバグレポー"
+"トを送ってください。もしどうなってもいいのであれば 無視(I) してもいいでしょ"
+"う。"
+
+#: libparted/fs/linux_swap/linux_swap.c:247
+#, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "古いタイプの Linux swap signature '%10s' を認識できません。"
+
+#: libparted/fs/linux_swap/linux_swap.c:290
+#, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "新しいタイプの Linux swap signature '%10s' を認識できません。"
+
+#: libparted/fs/linux_swap/linux_swap.c:330
+#, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Linux swsusp signature '%9s' を認識できません。"
+
+#: libparted/fs/hfs/probe.c:50
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to "
+"%d bytes."
+msgstr ""
+"Parted は、セクタサイズが %d バイトでないディスクでは HFS ファイルシステムを"
+"使えません。"
+
+#: parted/parted.c:123
+msgid "displays this help message"
+msgstr "このヘルプを表示する"
+
+#: parted/parted.c:124
+msgid "lists partition layout on all block devices"
+msgstr "全ブロックデバイスのパーティションレイアウトを表示"
+
+#: parted/parted.c:125
+msgid "displays machine parseable output"
+msgstr "機械が解釈可能な出力をする"
+
+#: parted/parted.c:126
+msgid "never prompts for user intervention"
+msgstr "ユーザに介入させない"
+
+#: parted/parted.c:127
+msgid "displays the version"
+msgstr "バージョンを表示する"
+
+#: parted/parted.c:128
+msgid "alignment for new partitions"
+msgstr "新規パーティションのアライメント"
+
+#: parted/parted.c:140
+msgid ""
+"NUMBER is the partition number used by Linux.  On MS-DOS disk labels, the "
+"primary partitions number from 1 to 4, logical partitions from 5 onwards.\n"
+msgstr ""
+"NUMBER は Linux カーネルによってパーティション番号として使われます。MS-DOS "
+"ディスクラベルでは、基本パーティション番号は 1 から 4 までで、論理パーティ"
+"ションは 5 以降となります。\n"
+
+#: parted/parted.c:143
+msgid "LABEL-TYPE is one of: "
+msgstr "ラベルの種類は次のうちから選びます: "
+
+#: parted/parted.c:144
+msgid "FLAG is one of: "
+msgstr "フラグは次のうちから選びます: "
+
+#: parted/parted.c:145
+msgid "UNIT is one of: "
+msgstr "UNIT は次のうちから選びます: "
+
+#: parted/parted.c:146
+msgid "desired alignment: minimum or optimal"
+msgstr "望ましいアライメント: minimum(最小) か optimal(最適)"
+
+#: parted/parted.c:147
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr ""
+"パーティションの種類は次のうちのどれかとなります: プライマリ、論理、拡張\n"
+
+#: parted/parted.c:149
+msgid "FS-TYPE is one of: "
+msgstr "ファイルシステムの種類は次のうちから選びます: "
+
+#: parted/parted.c:150
+msgid ""
+"START and END are disk locations, such as 4GB or 10%.  Negative values count "
+"from the end of the disk.  For example, -1s specifies exactly the last "
+"sector.\n"
+msgstr ""
+"START と END は、ディスク上の位置を 4G や 10% などで表わします。負の値はディ"
+"スクの終わりからの値になります。例えば、-1s は、最後のセクタを指します。\n"
+
+#: parted/parted.c:153
+msgid "STATE is one of: on, off\n"
+msgstr "状態は on か off のどちらか\n"
+
+#: parted/parted.c:154
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "デバイスはたいてい /dev/hda か /dev/sda です。\n"
+
+#: parted/parted.c:155
+msgid "NAME is any word you want\n"
+msgstr "名前の部分は任意の単語\n"
+
+#: parted/parted.c:158
+msgid ""
+"Copyright (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"This program is free software, covered by the GNU General Public License.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+msgstr ""
+"Copyright (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"このプログラムは GPL に基づいたフリーソフトウェアです。\n"
+"日本語訳に関しては Hiroshi Takekawa <sian@big.or.jp> までおねがいします。\n"
+"\n"
+"本プログラムは有用とは思いますが、頒布にあたっては、\n"
+"市場性及び特定目的適合性についての暗黙の保証を含めて、\n"
+"いかなる保証も行ないません。詳細についてはGNU 一般公有使用許諾書をお読みくだ"
+"さい。\n"
+
+#: parted/parted.c:204
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(残り時間 %.2d:%.2d)"
+
+#: parted/parted.c:223
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+"パーティション %s は使用中です。Parted で操作する前に unmount してください。"
+
+#: parted/parted.c:241
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "%s のパーティションが使用中です。"
+
+#: parted/parted.c:253
+#, c-format
+msgid ""
+"The existing disk label on %s will be destroyed and all data on this disk "
+"will be lost. Do you want to continue?"
+msgstr ""
+"いま存在している %s のディスクラベルは破壊され、このディスクの全データが失わ"
+"れます。続行しますか?"
+
+#: parted/parted.c:502
+msgid "New disk label type?"
+msgstr "新しいディスクラベル?"
+
+#: parted/parted.c:562
+msgid "Partition type?"
+msgstr "パーティションの種類?"
+
+#: parted/parted.c:580 parted/parted.c:766
+msgid "Partition name?"
+msgstr "パーティションの名前?"
+
+#: parted/parted.c:588
+msgid "File system type?"
+msgstr "ファイルシステムの種類?"
+
+#: parted/parted.c:594 parted/parted.c:1342
+msgid "Start?"
+msgstr "開始?"
+
+#: parted/parted.c:596 parted/parted.c:1344
+msgid "End?"
+msgstr "終了?"
+
+#: parted/parted.c:661
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s.%s"
+msgstr ""
+"%s から %s までのパーティションを指定されました。\n"
+"可能な中で最も近いものは %s から %s になります。%s"
+
+#: parted/parted.c:666
+msgid ""
+"\n"
+"Is this still acceptable to you?"
+msgstr ""
+"\n"
+"それでもかまいませんか?"
+
+#: parted/parted.c:688
+msgid "The resulting partition is not properly aligned for best performance."
+msgstr ""
+"操作の結果できるパーティションはアライメントが正しくないためにパフォーマンス"
+"がでません。"
+
+#: parted/parted.c:763 parted/parted.c:1383 parted/parted.c:1455
+#: parted/parted.c:1489
+msgid "Partition number?"
+msgstr "パーティション番号?"
+
+#: parted/parted.c:841
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d.  Each cylinder is %s.\n"
+msgstr "BIOS シリンダ、ヘッド、セクタ geometry: %d,%d,%d.  1シリンダは %s。\n"
+
+#: parted/parted.c:881
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr "モデル: %s (%s)\n"
+
+#: parted/parted.c:883
+#, c-format
+msgid "Disk %s: %s\n"
+msgstr "ディスク %s: %s\n"
+
+#: parted/parted.c:884
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr "セクタサイズ (論理/物理): %lldB/%lldB\n"
+
+#: parted/parted.c:896
+#, c-format
+msgid "Partition Table: %s\n"
+msgstr "パーティションテーブル: %s\n"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Number"
+msgstr "番号"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Start"
+msgstr "開始"
+
+#: parted/parted.c:1008 parted/parted.c:1011
+msgid "End"
+msgstr "終了"
+
+#: parted/parted.c:1011
+msgid "Size"
+msgstr "サイズ"
+
+#: parted/parted.c:1015
+msgid "Type"
+msgstr "タイプ"
+
+#: parted/parted.c:1017
+msgid "File system"
+msgstr "ファイルシステム"
+
+#: parted/parted.c:1020
+msgid "Name"
+msgstr "名前"
+
+#: parted/parted.c:1022
+msgid "Flags"
+msgstr "フラグ"
+
+#: parted/parted.c:1079
+msgid "Free Space"
+msgstr "空き容量"
+
+#: parted/parted.c:1241
+#, c-format
+msgid ""
+"A %s %s partition was found at %s -> %s.  Do you want to add it to the "
+"partition table?"
+msgstr ""
+"%s %s パーティションが %s → %s の場所に発見されました。このパーティションを"
+"パーティションテーブルに追加しますか?"
+
+#: parted/parted.c:1280
+msgid "searching for file systems"
+msgstr "ファイルシステムを探しています"
+
+#: parted/parted.c:1408
+msgid "New device?"
+msgstr "新しいデバイス?"
+
+#: parted/parted.c:1453
+msgid "alignment type(min/opt)"
+msgstr "アライメントタイプ(min/opt)"
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d aligned\n"
+msgstr "%d アライメント済\n"
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d not aligned\n"
+msgstr "%d 未アライメント\n"
+
+#: parted/parted.c:1491
+msgid "Flag to Invert?"
+msgstr "反転するフラグ?"
+
+#: parted/parted.c:1496
+msgid "New state?"
+msgstr "新しい状態?"
+
+#: parted/parted.c:1533
+msgid "Unit?"
+msgstr "単位は?"
+
+#: parted/parted.c:1651
+msgid "align-check"
+msgstr "align-check"
+
+#: parted/parted.c:1654
+msgid ""
+"align-check TYPE N                        check partition N for TYPE(min|"
+"opt) alignment"
+msgstr ""
+"align-check TYPE N            パーティション N のアライメント(min|opt)を"
+"チェックする"
+
+#: parted/parted.c:1662
+msgid "help"
+msgstr "help"
+
+#: parted/parted.c:1665
+msgid ""
+"help [COMMAND]                           print general help, or help on "
+"COMMAND"
+msgstr ""
+"help [コマンド]               ヘルプ表示。コマンド指定でそのヘルプを表示"
+
+#: parted/parted.c:1671
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:1671
+msgid "mktable"
+msgstr "mktable"
+
+#: parted/parted.c:1674
+msgid ""
+"mklabel,mktable LABEL-TYPE               create a new disklabel (partition "
+"table)"
+msgstr ""
+"mklabel,mktable ラベルの種類  新しいラベル(パーティションテーブル)を作る"
+
+#: parted/parted.c:1680
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:1683
+msgid "mkpart PART-TYPE [FS-TYPE] START END     make a partition"
+msgstr ""
+"mkpart パーティションの種類 [ファイルシステムの種類] 開始 終了\n"
+"            パーティションを作る"
+
+#: parted/parted.c:1689
+msgid ""
+"'mkpart' makes a partition without creating a new file system on the "
+"partition.  FS-TYPE may be specified to set an appropriate partition ID.\n"
+msgstr ""
+"mkpart はパーティションだけ作り、新しいファイルシステムは作りません。ファイル"
+"システムの種類を指定すると、正しいIDが設定されます。\n"
+
+#: parted/parted.c:1694
+msgid "name"
+msgstr "name"
+
+#: parted/parted.c:1697
+msgid "name NUMBER NAME                         name partition NUMBER as NAME"
+msgstr "name NUMBER 名前              パーティションに名前をつける"
+
+#: parted/parted.c:1702
+msgid "print"
+msgstr "print"
+
+#: parted/parted.c:1705
+msgid ""
+"print [devices|free|list,all|NUMBER]     display the partition table, "
+"available devices, free space, all found partitions, or a particular "
+"partition"
+msgstr ""
+"print [devices|free|list,all|NUMBER]\n"
+"             パーティションテーブルや、利用可能なデバイス、空き領"
+"域、\n"
+"             見つかった全てのパーティション、あるいは特定のパー"
+"ティションについて表示する"
+
+#: parted/parted.c:1710
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+"引数をつけない場合、'print' コマンドは、全パーティションテーブルを表示しま"
+"す。次の引数をつけることが可能です。\n"
+
+#: parted/parted.c:1712
+msgid "  devices   : display all active block devices\n"
+msgstr "  devices   : 全てのアクティブなブロックデバイスを表示\n"
+
+#: parted/parted.c:1713
+msgid ""
+"  free      : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+"  free      : カレントブロックデバイスのパーティションに含まれていない空き領"
+"域情報を表示\n"
+
+#: parted/parted.c:1715
+msgid ""
+"  list, all : display the partition tables of all active block devices\n"
+msgstr ""
+"  list, all : アクティブな全ブロックデバイスのパーティションテーブルを表示\n"
+
+#: parted/parted.c:1716
+msgid ""
+"  NUMBER    : display more detailed information about this particular "
+"partition\n"
+msgstr "  NUMBER    : 指定したパーティションについてより詳しい情報を表示\n"
+
+#: parted/parted.c:1721
+msgid "quit"
+msgstr "quit"
+
+#: parted/parted.c:1724
+msgid "quit                                     exit program"
+msgstr "quit                          プログラムを終了する"
+
+#: parted/parted.c:1729
+msgid "rescue"
+msgstr "rescue"
+
+#: parted/parted.c:1732
+msgid ""
+"rescue START END                         rescue a lost partition near START "
+"and END"
+msgstr ""
+"rescue 開始 終了              開始、終了で指定した範囲付近にあるパーティショ"
+"ンを復活させる"
+
+#: parted/parted.c:1738
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:1741
+msgid "rm NUMBER                                delete partition NUMBER"
+msgstr "rm NUMBER                     パーティションを削除する"
+
+#: parted/parted.c:1746
+msgid "select"
+msgstr "select"
+
+#: parted/parted.c:1749
+msgid "select DEVICE                            choose the device to edit"
+msgstr "select デバイス               操作するデバイスを選択"
+
+#: parted/parted.c:1754
+msgid "set"
+msgstr "set"
+
+#: parted/parted.c:1757
+msgid ""
+"set NUMBER FLAG STATE                    change the FLAG on partition NUMBER"
+msgstr "set NUMBER フラグ 状態        ファイルシステムのフラグと状態を設定する"
+
+#: parted/parted.c:1763
+msgid "toggle"
+msgstr "toggle"
+
+#: parted/parted.c:1766
+msgid ""
+"toggle [NUMBER [FLAG]]                   toggle the state of FLAG on "
+"partition NUMBER"
+msgstr "toggle [NUMBER [FLAG]]        パーティションのフラグの状態を反転する"
+
+#: parted/parted.c:1772
+msgid "unit"
+msgstr "unit"
+
+#: parted/parted.c:1775
+msgid "unit UNIT                                set the default unit to UNIT"
+msgstr "unit UNIT                     デフォルトの単位を UNIT にする"
+
+#: parted/parted.c:1780
+msgid "version"
+msgstr "version"
+
+#: parted/parted.c:1783
+msgid ""
+"version                                  display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+"version                       GNU Parted のバージョンと著作権情報を表示"
+
+#: parted/parted.c:1787
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+"version は、実行中の GNU Parted のバージョンと著作権情報を表示します。\n"
+
+#: parted/parted.c:1855
+#, c-format
+msgid "Usage: %s [-hlmsv] [-a<align>] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+"使い方: %s [-hlmsv] [-a<アライン>] [デバイス [コマンド [パラメータ]]...]\n"
+
+#: parted/parted.c:1899
+msgid "No device found"
+msgstr "デバイスがみつかりません。"
+
+#: parted/parted.c:1936
+msgid "WARNING: You are not superuser.  Watch out for permissions."
+msgstr "警告: 管理者権限がありません。パーミッションに注意してください。"
+
+#: parted/parted.c:1974
+msgid "You may need to update /etc/fstab.\n"
+msgstr "必要であれば /etc/fstab を更新するのを忘れないようにしてください。\n"
+
+#: parted/ui.c:162
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+"GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。\n"
+
+#: parted/ui.c:165
+msgid ""
+"Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]\n"
+"Apply COMMANDs with PARAMETERS to DEVICE.  If no COMMAND(s) are given, run "
+"in\n"
+"interactive mode.\n"
+msgstr ""
+"使い方: parted [オプション]... [デバイス [コマンド [パラメータ]...]...]\n"
+"デバイスに対してパラメータに従ってコマンドを実行します。もしコマンドが指定さ"
+"れなければ、対話モードに入ります。\n"
+
+#: parted/ui.c:170
+#, c-format
+msgid ""
+"\n"
+"\n"
+"You found a bug in GNU Parted! Here's what you have to do:\n"
+"\n"
+"Don't panic! The bug has most likely not affected any of your data.\n"
+"Help us to fix this bug by doing the following:\n"
+"\n"
+"Check whether the bug has already been fixed by checking\n"
+"the last version of GNU Parted that you can find at:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Please check this version prior to bug reporting.\n"
+"\n"
+"If this has not been fixed yet or if you don't know how to check,\n"
+"please visit the GNU Parted website:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"for further information.\n"
+"\n"
+"Your report should contain the version of this release (%s)\n"
+"along with the error message below, the output of\n"
+"\n"
+"\tparted DEVICE unit co print unit s print\n"
+"\n"
+"and the following history of commands you entered.\n"
+"Also include any additional information about your setup you\n"
+"consider important.\n"
+msgstr ""
+"\n"
+"\n"
+"GNU Parted のバグを発見しました!\n"
+"\n"
+"パニックを起こさないでください! このバグはおそらくデータには影響ありませ"
+"ん。\n"
+"次のことをしてこのバグの修正にご協力ください。\n"
+"\n"
+"次のサイトに最新バージョンがあります。\n"
+"既にこのバグが修正されていないか確認してください。\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"バグレポートをする前に最新バージョンで確認してください。\n"
+"\n"
+"まだバグが修正されていないか、確認の仕方がわからない場合、\n"
+"GNU Parted の web サイト\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"を開いて、詳しい情報を調べてください。\n"
+"\n"
+"レポートには、この Parted のバージョン情報 (%s) と、\n"
+"下に表示されているエラーメッセージ、次のコマンド\n"
+"\n"
+"\tparted DEVICE unit co print unit s print\n"
+"\n"
+"の出力と、コマンド履歴、\n"
+"その他重要と思う情報を記述してください。\n"
+"\n"
+
+#: parted/ui.c:291
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+"\n"
+"コマンド履歴:\n"
+
+#: parted/ui.c:354
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+"\n"
+"エラー: SEGV_MAPERR (アドレスがオブジェクトに変換されませんでした)\n"
+
+#: parted/ui.c:360
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+"\n"
+"エラー: SEGV_ACCERR (マップされたオブジェクトのパーミッションが不正です)\n"
+
+#: parted/ui.c:365
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+"\n"
+"エラー: SIGSEGV シグナルを受けとりました。\n"
+
+#: parted/ui.c:389
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+"\n"
+"エラー: FPE_INTDIV (整数: 0による除算)"
+
+#: parted/ui.c:394
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+"\n"
+"エラー: FPE_INTOVF (整数: オーバーフロー)"
+
+#: parted/ui.c:399
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+"\n"
+"エラー: FPE_FLTDIV (浮動小数点: 0による除算)"
+
+#: parted/ui.c:404
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+"\n"
+"エラー: FPE_FLTOVF (浮動小数点: オーバーフロー)"
+
+#: parted/ui.c:409
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+"\n"
+"エラー: FPE_FLTUND (浮動小数点: アンダーフロー)"
+
+#: parted/ui.c:414
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+"\n"
+"エラー: FPE_FLTRES (浮動小数点: 正しくない結果)"
+
+#: parted/ui.c:419
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+"\n"
+"\n"
+"エラー: FPE_FLTINV (浮動小数点: 不正な操作)"
+
+#: parted/ui.c:424
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+"\n"
+"エラー: FPE_FLTSUB (浮動小数点: 添字が範囲を越えました)"
+
+#: parted/ui.c:429
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+"\n"
+"エラー: SIGFPE シグナルを受けとりました。"
+
+#: parted/ui.c:453
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+"\n"
+"エラー: ILL_ILLOPC (不正なオペコード)"
+
+#: parted/ui.c:458
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+"\n"
+"エラー: ILL_ILLOPN (不正なオペランド)"
+
+#: parted/ui.c:463
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+"\n"
+"エラー: ILL_ILLADR (不正なアドレスモード)"
+
+#: parted/ui.c:468
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+"\n"
+"エラー: ILL_ILLTRP (不正なトラップ)"
+
+#: parted/ui.c:473
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+"\n"
+"エラー: ILL_PRVOPC (特権が必要なオペコード)"
+
+#: parted/ui.c:478
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+"\n"
+"エラー: ILL_PRVREG (特権が必要なレジスタ)"
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+"\n"
+"エラー: ILL_COPROC (コプロセッサエラー)"
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+"\n"
+"エラー: ILL_BADSTK (インターナルスタックエラー)"
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+"\n"
+"エラー: SIGILL シグナルを受けとりました。"
+
+#: parted/ui.c:891
+#, c-format
+msgid "invalid token: %s"
+msgstr "不正なトークンです: %s"
+
+#: parted/ui.c:1048
+msgid "Expecting a partition number."
+msgstr "パーティション番号を入力してください。"
+
+#: parted/ui.c:1057
+msgid "Partition doesn't exist."
+msgstr "パーティションがありません。"
+
+#: parted/ui.c:1077
+msgid "Expecting a file system type."
+msgstr "ファイルシステムの種類を入力してください。"
+
+#: parted/ui.c:1084
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "ファイルシステムの種類 \"%s\" は不明です。"
+
+#: parted/ui.c:1105
+msgid "Expecting a disk label type."
+msgstr "ディスクラベルの種類を入力してください。"
+
+#: parted/ui.c:1203
+msgid "Can't create any more partitions."
+msgstr "パーティションを追加できません。"
+
+#: parted/ui.c:1213
+msgid "Expecting a partition type."
+msgstr "パーティションの種類を入力してください。"
+
+#: parted/ui.c:1361
+msgid "on"
+msgstr "on"
+
+#: parted/ui.c:1362
+msgid "off"
+msgstr "off"
+
+#: parted/ui.c:1379
+msgid "optimal"
+msgstr "最適(optimal)"
+
+#: parted/ui.c:1380
+msgid "minimal"
+msgstr "最小(minimal)"
+
+#: parted/ui.c:1513
+msgid "OPTIONs:"
+msgstr "オプション"
+
+#: parted/ui.c:1518
+msgid "COMMANDs:"
+msgstr "コマンド:"
+
+#: parted/ui.c:1521
+#, c-format
+msgid ""
+"\n"
+"Report bugs to %s\n"
+msgstr ""
+"\n"
+"バグレポートは %s へ。\n"
+
+#: parted/ui.c:1528
+#, c-format
+msgid "Using %s\n"
+msgstr "%s を使用\n"
+
+#: parted/ui.c:1602
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr "このコマンドは対話操作モードでなければ意味がありません。\n"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]\n"
+#~ "  or:  %s DEVICE MINOR\n"
+#~ msgstr ""
+#~ "使い方: %s [オプション]\n"
+#~ "あるいは: %s デバイス マイナー番号\n"
+
+#~ msgid ""
+#~ "Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+#~ "\n"
+#~ msgstr ""
+#~ "FAT パーティション上の未使用領域をクリアします (GNU Parted のテストツー"
+#~ "ル)。\n"
+#~ "\n"
+
+#~ msgid "      --help     display this help and exit\n"
+#~ msgstr "      --help     このヘルプを表示し終了\n"
+
+#~ msgid "      --version  output version information and exit\n"
+#~ msgstr "      --version  バージョン情報を表示し終了\n"
+
+#~ msgid "too few arguments"
+#~ msgstr "引数が少なすぎます"
+
+#~ msgid "too many arguments"
+#~ msgstr "引数が多すぎます。"
+
+#~ msgid "invalid minor device number: %s"
+#~ msgstr "不正なマイナー番号です: %s"
+
+#~ msgid "Could not detect file system."
+#~ msgstr "ファイルシステムを検出できません。"
+
+#~ msgid "The file system is bigger than its volume!"
+#~ msgstr "ファイルシステムがボリュームよりも大きいです!"
+
+#~ msgid "Support for opening %s file systems is not implemented yet."
+#~ msgstr "ファイルシステム(%s)のオープンは未実装です。"
+
+#~ msgid "Support for creating %s file systems is not implemented yet."
+#~ msgstr "ファイルシステム(%s)の作成は未実装です。"
+
+#~ msgid "Support for checking %s file systems is not implemented yet."
+#~ msgstr "ファイルシステム(%s)に対するチェックは未実装です。"
+
+#~ msgid "raw block copying"
+#~ msgstr "ブロックをそのままコピー中"
+
+#~ msgid "growing file system"
+#~ msgstr "ファイルシステムを大きくしています"
+
+#~ msgid "Can't copy onto an overlapping partition."
+#~ msgstr "重なりのあるパーティションにはコピーできません。"
+
+#~ msgid ""
+#~ "Direct support for copying file systems is not yet implemented for %s.  "
+#~ "However, support for resizing is implemented.  Therefore, the file system "
+#~ "can be copied if the new partition is at least as big as the old one.  "
+#~ "So, either shrink the partition you are trying to copy, or copy to a "
+#~ "bigger partition."
+#~ msgstr ""
+#~ "%s のファイルシステムのコピーの直接的な実装はまだされていません。新しい"
+#~ "パーティションが古いのと少なくとも同じくらいの大きさであればコピーできま"
+#~ "す。リサイズは実装されていますので、パーティションを小さくしてからコピーし"
+#~ "てみるか、もっと大きいパーティションにコピーしてください。"
+
+#~ msgid "Support for copying %s file systems is not implemented yet."
+#~ msgstr "ファイルシステム(%s)のコピーは未実装です。"
+
+#~ msgid "Support for resizing %s file systems is not implemented yet."
+#~ msgstr "ファイルシステム(%s)のリサイズは未実装です。"
+
+#~ msgid "creating"
+#~ msgstr "作成中"
+
+#~ msgid "The file system is in an invalid state.  Perhaps it is mounted?"
+#~ msgstr ""
+#~ "ファイルシステムが不正な状態にあります。マウントされていたりしませんか?"
+
+#~ msgid "The file system is in old (unresizeable) format."
+#~ msgstr "このファイルシステムは古い(リサイズ不可能)フォーマットです。"
+
+#~ msgid "Invalid free blocks count.  Run reiserfsck --check first."
+#~ msgstr ""
+#~ "空きブロック数が不正です。まず reiserfsck --check を実行してください。"
+
+#~ msgid "checking"
+#~ msgstr "チェック中"
+
+#~ msgid "Reiserfs tree seems to be corrupted.  Run reiserfsck --check first."
+#~ msgstr ""
+#~ "Reiserfs の木構造が壊れています。まず reiserfsck --check を実行してくださ"
+#~ "い。"
+
+#~ msgid ""
+#~ "The reiserfs file system passed a basic check.  For a more comprehensive "
+#~ "check, run reiserfsck --check."
+#~ msgstr ""
+#~ "この reiserfs ファイルシステムは簡単なチェックをパスしました。さらにチェッ"
+#~ "クするには reiserfsck --check を使ってください。"
+
+#~ msgid "Sorry, can't move the start of reiserfs partitions yet."
+#~ msgstr ""
+#~ "残念ですが、まだ reiserfs パーティションの開始位置は移動できません。"
+
+#~ msgid "Couldn't reopen device abstraction layer for read/write."
+#~ msgstr "デバイス抽象化層を読み書き用に再オープンできません。"
+
+#~ msgid "shrinking"
+#~ msgstr "縮小中"
+
+#~ msgid "expanding"
+#~ msgstr "拡大中"
+
+#~ msgid "Couldn't create reiserfs device abstraction handler."
+#~ msgstr "reiserfs のデバイス抽象化ハンドラを作成できません。"
+
+#~ msgid "Device is too small for %lu blocks."
+#~ msgstr "%lu にはブロックデバイスが小さすぎます。"
+
+#~ msgid "copying"
+#~ msgstr "コピー中"
+
+#~ msgid "Couldn't resolve symbol %s.  Error: %s."
+#~ msgstr "シンボル %s を解決できません。エラー: %s。"
+
+#~ msgid "GNU Parted found an invalid libreiserfs library."
+#~ msgstr "GNU Parted は不正な libreiserfs ライブラリを見つけました。"
+
+#~ msgid ""
+#~ "GNU Parted has detected libreiserfs interface version mismatch.  Found %d-"
+#~ "%d, required %d. ReiserFS support will be disabled."
+#~ msgstr ""
+#~ "GNU Parted は libreiserfs のインターフェースバージョンの不整合を検出しまし"
+#~ "た。%d-%d が検出されましたが、%d が必要です。ReiserFS サポートを無効にしま"
+#~ "す。"
+
+#~ msgid "Inconsistent group descriptors!"
+#~ msgstr "グループ記述子に矛盾があります!"
+
+#~ msgid "File system full!"
+#~ msgstr "ファイルシステムがいっぱいになりました!"
+
+#~ msgid "Invalid superblock.  Are you sure this is an ext2 file system?"
+#~ msgstr ""
+#~ "スーパーブロックが不正です。このファイルシステムは本当に ext2 ですか?"
+
+#~ msgid "File system has errors!  You should run e2fsck."
+#~ msgstr ""
+#~ "ファイルシステムにエラーがあります。先に e2fsck を実行してください。"
+
+#~ msgid ""
+#~ "File system was not cleanly unmounted!  You should run e2fsck.  Modifying "
+#~ "an unclean file system could cause severe corruption."
+#~ msgstr ""
+#~ "クリーンに unmount されてません。e2fsck を実行すべきです。クリーンになって"
+#~ "いないファイルシステムへの変更は大きな損害につながりかねません。"
+
+#~ msgid ""
+#~ "File system has an incompatible feature enabled.  Compatible features are "
+#~ "has_journal, dir_index, filetype, sparse_super and large_file.  Use "
+#~ "tune2fs or debugfs to remove features."
+#~ msgstr ""
+#~ "ファイルシステムは互換性のない機能が有効になっています。互換性のある機能"
+#~ "は has_journal, dir_index, filetype, sparse_super および large_file です。"
+#~ "tune2fs か debugfs を使って互換性のない機能を無効にしてください。"
+
+#~ msgid "Error allocating buffer cache."
+#~ msgstr "バッファキャッシュを確保してる最中にエラーが発生しました。"
+
+#~ msgid ""
+#~ "Found an inode with a incorrect link count.  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "リンクの数が正しくないinodeが見つかりました。先に e2fsck を実行した方がい"
+#~ "いでしょう。"
+
+#~ msgid "Not enough free inodes!"
+#~ msgstr "未使用の inode の数が不足しています。"
+
+#~ msgid "File system is too full to remove a group!"
+#~ msgstr "グループを削除するには空き領域が足りません。"
+
+#~ msgid "File system has too many allocated inodes to remove a group!"
+#~ msgstr "グループを削除するには未使用の inode が足りません。"
+
+#~ msgid "adding groups"
+#~ msgstr "グループを追加中"
+
+#~ msgid "Your file system is too full to resize it to %i blocks.  Sorry."
+#~ msgstr "%i ブロックにリサイズするには領域が不足しています。"
+
+#~ msgid ""
+#~ "Your file system has too many occupied inodes to resize it to %i blocks.  "
+#~ "Sorry."
+#~ msgstr "%i ブロックにリサイズするには inode が不足しています。"
+
+#~ msgid "File system was not cleanly unmounted!  You should run e2fsck."
+#~ msgstr ""
+#~ "クリーンに unmount されてませんでした。まず、e2fsck を実行してください。"
+
+#~ msgid ""
+#~ "The file system has the 'dir_index' feature enabled.  Parted can only "
+#~ "resize the file system if it disables this feature.  You can enable it "
+#~ "later by running 'tune2fs -O dir_index DEVICE' and then 'e2fsck -fD "
+#~ "DEVICE'."
+#~ msgstr ""
+#~ "このファイルシステムは 'dir_index' が有効になっています。これを無効にしな"
+#~ "いと Parted ではリサイズできません。一旦無効にしても次のようにすることで、"
+#~ "有効にできます。'tune2fs -O dir_index DEVICE' 'e2fsck -fD DEVICE'"
+
+#~ msgid ""
+#~ "A resize operation on this file system will use EXPERIMENTAL code\n"
+#~ "that MAY CORRUPT it (although no one has reported any such damage yet).\n"
+#~ "You should at least backup your data first, and run 'e2fsck -f' "
+#~ "afterwards."
+#~ msgstr ""
+#~ "このファイルシステムのリサイズのコードは試験中のため、ファイルシステムを\n"
+#~ "壊す可能性があります(まだ誰もそういうことが起きたとは言ってきていません"
+#~ "が)。\n"
+#~ "少なくともまずバックアップをしてから行い、その後 'e2fsck -f' を実行してく"
+#~ "ださい。"
+
+#~ msgid "Cross-linked blocks found!  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "Cross-link しているブロックがみつかりました。先に e2fsck を実行した方がい"
+#~ "いでしょう。"
+
+#~ msgid "Block %i has no reference?  Weird."
+#~ msgstr "ブロック %i は何も参照していません。おかしいです。"
+
+#~ msgid "Block %i shouldn't have been marked (%d, %d)!"
+#~ msgstr "ブロック %i はマークされていないはずです(%d, %d)。"
+
+#~ msgid ""
+#~ "The ext2 file system passed a basic check.  For a more comprehensive "
+#~ "check, use the e2fsck program."
+#~ msgstr ""
+#~ "この ext2 ファイルシステムは簡単なチェックをパスしました。さらにチェックす"
+#~ "るには e2fsck を使ってください。"
+
+#~ msgid "Sorry, can't move the start of ext2 partitions yet!"
+#~ msgstr "残念ですが、まだ ext2 パーティションの開始位置は移動できません。"
+
+#~ msgid "Couldn't flush buffer cache!"
+#~ msgstr "バッファキャッシュをフラッシュできません。"
+
+#~ msgid "writing per-group metadata"
+#~ msgstr "グループ毎のメタ情報を書込中"
+
+#~ msgid "File system too small for ext2."
+#~ msgstr "ext2 にするにはファイルシステムが小さすぎます。"
+
+#~ msgid ""
+#~ "You need %s of free disk space to shrink this partition to this size.  "
+#~ "Currently, only %s is free."
+#~ msgstr ""
+#~ "このパーティションをこのサイズに小さくするには %s の空きが必要です。(現在 "
+#~ "%s しか空きがありません。)"
+
+#~ msgid ""
+#~ "Cluster start delta = %d, which is not a multiple of the cluster size %d."
+#~ msgstr ""
+#~ "Cluster start delta = %d これはクラスタサイズ %d の倍数ではありません。"
+
+#~ msgid "Partition too big/small for a %s file system."
+#~ msgstr ""
+#~ "パーティションが %s ファイルシステムには小さすぎ、あるいは大きすぎます。"
+
+#~ msgid ""
+#~ "The FATs don't match.  If you don't know what this means, then select "
+#~ "cancel, run scandisk on the file system, and then come back."
+#~ msgstr ""
+#~ "FAT が一致しません。これが何を意味するかわからないなら、取消(C) を選んで、"
+#~ "scandisk を実行してから、またやりなおしてください。"
+
+#~ msgid "There are no possible configurations for this FAT type."
+#~ msgstr "この FAT タイプに合う configuration がありません。"
+
+#~ msgid ""
+#~ "File system doesn't have expected sizes for Windows to like it.  Cluster "
+#~ "size is %dk (%dk expected); number of clusters is %d (%d expected); size "
+#~ "of FATs is %d sectors (%d expected)."
+#~ msgstr ""
+#~ "ファイルシステムのサイズが Windows の期待しそうなサイズではありません。ク"
+#~ "ラスタサイズ %dk (予想 %dk); クラスタの数 %d (予想 %d); FAT のサイズ %d セ"
+#~ "クタ (予想 %d)"
+
+#~ msgid ""
+#~ "File system is reporting the free space as %d clusters, not %d clusters."
+#~ msgstr ""
+#~ "ファイルシステムの空き容量は %d クラスタ で、%d クラスタではありません。"
+
+#~ msgid ""
+#~ "There's not enough room in the root directory for all of the files.  "
+#~ "Either cancel, or ignore to lose the files."
+#~ msgstr ""
+#~ "ルートディレクトリに十分な空きがありません。取消(C) すか、ファイルを失って"
+#~ "もよければ 無視(I) を選んでください。"
+
+#~ msgid "Error writing to the root directory."
+#~ msgstr "ルートディレクトリに書きこみ中にエラーが発生しました。"
+
+#~ msgid ""
+#~ "If you leave your file system as FAT16, then you will have no problems."
+#~ msgstr "FAT16 のままにしておくなら、何の問題もありません。"
+
+#~ msgid ""
+#~ "If you convert to FAT16, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual)."
+#~ msgstr ""
+#~ "FAT16 に変換しようとしていて、しかも MS Windows がこのパーティションにイン"
+#~ "ストールされているなら、MS Windows のブートローダを再インストールしなけれ"
+#~ "ばなりません。もしそうしたいのなら、Parted(あるいは distribution) のマニュ"
+#~ "アルをよく読んでください。"
+
+#~ msgid ""
+#~ "If you leave your file system as FAT32, then you will not introduce any "
+#~ "new problems."
+#~ msgstr "FAT32 のままにしておくなら、何の問題も生じません。"
+
+#~ msgid ""
+#~ "If you convert to FAT32, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual).  Also, converting to FAT32 will make the file system unreadable "
+#~ "by MS DOS, MS Windows 95a, and MS Windows NT."
+#~ msgstr ""
+#~ "FAT32 に変換しようとしていて、しかも MS Windows がこのパーティションにイン"
+#~ "ストールされているなら、MS Windows のブートローダを再インストールしなけれ"
+#~ "ばなりません。もしそうしたいのなら、Parted(あるいは distribution) のマニュ"
+#~ "アルをよく読んでください。FAT32 に変換すると、MS-DOS、MS Windows 95a、MS "
+#~ "Windows NT からは読めなくなります。"
+
+#~ msgid "%s  %s  %s"
+#~ msgstr "%s  %s  %s"
+
+#~ msgid "Would you like to use FAT32?"
+#~ msgstr "FAT32 を使いたいですか?"
+
+#~ msgid "%s  %s"
+#~ msgstr "%s  %s"
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT16."
+#~ msgstr "このサイズにリサイズするには FAT16 に変換しなければなりません。"
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT32."
+#~ msgstr "このサイズにリサイズするには FAT32 に変換しなければなりません。"
+
+#~ msgid ""
+#~ "GNU Parted cannot resize this partition to this size.  We're working on "
+#~ "it!"
+#~ msgstr ""
+#~ "GNU Parted はこのパーティションをこのサイズにリサイズすることはできませ"
+#~ "ん。できるように努力しています。"
+
+#~ msgid "Bad directory entry for %s: first cluster is the end of file marker."
+#~ msgstr ""
+#~ "%s のディレクトリエントリが不良です: 最初のクラスタがファイルの終了を表わ"
+#~ "すマークになっています。"
+
+#~ msgid ""
+#~ "Bad FAT: unterminated chain for %s.  You should run dosfsck or scandisk."
+#~ msgstr ""
+#~ "FAT にあやまりがあります。%s の chain が終了しません。dosfsck や scandisk "
+#~ "を実行するべきです。"
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d outside file system in chain for %s.  You should run "
+#~ "dosfsck or scandisk."
+#~ msgstr ""
+#~ "FAT にあやまりがあります。クラスタ %d(%s の chain)はファイルシステムの外に"
+#~ "あります。dosfsck や scandisk を実行するべきです。"
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d is cross-linked for %s.  You should run dosfsck or "
+#~ "scandisk."
+#~ msgstr ""
+#~ "FATにあやまりがあります。クラスタ %d(%s のchain)がcross-linkしています。"
+#~ "dosfsckやscandiskを実行するべきです。"
+
+#~ msgid "%s is %dk, but it has %d clusters (%dk)."
+#~ msgstr "%s は %dk ですが、%d クラスタ(%dk)あります。"
+
+#~ msgid ""
+#~ "The file %s is marked as a system file.  This means moving it could cause "
+#~ "some programs to stop working."
+#~ msgstr ""
+#~ "ファイル %s はシステムファイルです。このファイルを動かしてしまうと動かなく"
+#~ "なるプログラムがあります。"
+
+#~ msgid ""
+#~ "FAT %d media %x doesn't match the boot sector's media %x.  You should "
+#~ "probably run scandisk."
+#~ msgstr ""
+#~ "FAT %d media %x はブートセクタのmedia %x と一致しません。scandisk を実行し"
+#~ "た方がいいでしょう。"
+
+#~ msgid "fat_table_set: cluster %ld outside file system"
+#~ msgstr "fat_table_set: クラスタ %ld はファイルシステムの外にあります。"
+
+#~ msgid "fat_table_get: cluster %ld outside file system"
+#~ msgstr "fat_table_get: クラスタ %ld はファイルシステムの外にあります。"
+
+#~ msgid "fat_table_alloc_cluster: no free clusters"
+#~ msgstr "fat_table_alloc_cluster: 空きクラスタがありません。"
+
+#~ msgid "Too many bad pages."
+#~ msgstr "不良ページが多すぎます。"
+
+#~ msgid "The file system contains errors."
+#~ msgstr "ファイルシステムにエラーがあります。"
+
+#~ msgid "Bad blocks could not be read."
+#~ msgstr "不正なブロックは読めませんでした。"
+
+#~ msgid ""
+#~ "Trying to register an extent starting at block 0x%X, but another one "
+#~ "already exists at this position.  You should check the file system!"
+#~ msgstr ""
+#~ "ブロック 0x%X から始まる extent を登録しようとしましたが、既に他のものがこ"
+#~ "のパーティションに存在します。このファイルシステムをチェックしてください。"
+
+#~ msgid ""
+#~ "Trying to move an extent from block Ox%X to block Ox%X, but another one "
+#~ "already exists at this position.  This should not happen!"
+#~ msgstr ""
+#~ "ブロック 0x%X からブロック 0x%Xに extent を移動しようとしましたが、既に他"
+#~ "のものがこのパーティションに存在します。これはありえません。"
+
+#~ msgid "Could not update the extent cache for HFS file with CNID %X."
+#~ msgstr "HFS ファイル(CNID %X)の extent cache を更新できませんでした。"
+
+#~ msgid "Trying to read HFS file with CNID %X behind EOF."
+#~ msgstr "EOF を越えて HFS ファイル(CNID %X)を読もうとしました。"
+
+#~ msgid "Could not find sector %lli of HFS file with CNID %X."
+#~ msgstr "セクタ %lli (HFS ファイル, CNID %X)が見つかりません。"
+
+#~ msgid "Trying to write HFS file with CNID %X behind EOF."
+#~ msgstr "EOF を越えて HFS ファイル(CNID %X)に書きこもうとしました。"
+
+#~ msgid "Could not update the extent cache for HFS+ file with CNID %X."
+#~ msgstr "HFS+ ファイル(CNID %X)の extent cache を更新できませんでした。"
+
+#~ msgid "Trying to read HFS+ file with CNID %X behind EOF."
+#~ msgstr "EOF を越えて HFS+ ファイル(CNID %X)を読もうとしました。"
+
+#~ msgid "Could not find sector %lli of HFS+ file with CNID %X."
+#~ msgstr "セクタ %lli (HFS+ ファイル, CNID %X)が見つかりません。"
+
+#~ msgid "Trying to write HFS+ file with CNID %X behind EOF."
+#~ msgstr "EOF を越えて HFS+ ファイル(CNID %X)に書きこもうとしました。"
+
+#~ msgid "Sorry, HFS cannot be resized that way yet."
+#~ msgstr "HFS はまだそのようにリサイズできません。"
+
+#~ msgid "Data relocation has failed."
+#~ msgstr "データの再配置に失敗しました。"
+
+#~ msgid "Data relocation left some data in the end of the volume."
+#~ msgstr ""
+#~ "データの再配置をしましたが、ボリュームの最後に残ったデータがあります。"
+
+#~ msgid "writing HFS Master Directory Block"
+#~ msgstr "HFS マスタディレクトリブロックを書きこんでいます"
+
+#~ msgid "No valid HFS[+X] signature has been found while opening."
+#~ msgstr "有効な HFS[+X] シグネチャが見つかりません。"
+
+#~ msgid "Version %d of HFS+ isn't supported."
+#~ msgstr "HFS+ のバージョン %d はサポートしていません。"
+
+#~ msgid "Version %d of HFSX isn't supported."
+#~ msgstr "HFSX のバージョン %d はサポートしていません。"
+
+#~ msgid "Data relocation left some data at the end of the volume."
+#~ msgstr ""
+#~ "データの再配置をしましたが、ボリュームの最後に残ったデータがあります。"
+
+#~ msgid "Error while writing the allocation file."
+#~ msgstr "allocation file を書きこみ中にエラーが発生しました。"
+
+#~ msgid "Error while writing the compatibility part of the allocation file."
+#~ msgstr ""
+#~ "allocation file の compatibility part を書きこみ中にエラーが発生しました。"
+
+#~ msgid "writing HFS+ Volume Header"
+#~ msgstr "HFS+ ボリュームヘッダを書きこみ中です"
+
+#~ msgid "An error occurred while looking for the mandatory bad blocks file."
+#~ msgstr "不正ブロック一覧ファイルを探しているときにエラーが発生しました。"
+
+#~ msgid ""
+#~ "It seems there is an error in the HFS wrapper: the bad blocks file "
+#~ "doesn't contain the embedded HFS+ volume."
+#~ msgstr ""
+#~ "HFS ラッパーにエラーがあるようです。不正ブロック一覧ファイルの中に、"
+#~ "embedded HFS+ ボリュームがありません。"
+
+#~ msgid "Sorry, HFS+ cannot be resized that way yet."
+#~ msgstr "HFS はまだそのようにリサイズできません。"
+
+#~ msgid "shrinking embedded HFS+ volume"
+#~ msgstr "embedded HFS+ ボリュームを縮小しています"
+
+#~ msgid "Resizing the HFS+ volume has failed."
+#~ msgstr "HFS+ ボリュームのリサイズに失敗しました。"
+
+#~ msgid "shrinking HFS wrapper"
+#~ msgstr "HFS ラッパーを縮小しています"
+
+#~ msgid "Updating the HFS wrapper has failed."
+#~ msgstr "HFS ラッパーの更新に失敗しました。"
+
+#~ msgid ""
+#~ "This is not a real %s check.  This is going to extract special low level "
+#~ "files for debugging purposes."
+#~ msgstr ""
+#~ "これは real %s check ではありません。special low level file をデバッグのた"
+#~ "めに取り出します。"
+
+#~ msgid "Bad block list header checksum."
+#~ msgstr "ブロックリストヘッダのチェックサムが不正です。"
+
+#~ msgid ""
+#~ "Invalid size of a transaction block while replaying the journal (%i "
+#~ "bytes)."
+#~ msgstr ""
+#~ "ジャーナルのリプレイ中にトランザクションブロックのサイズ (%i バイト) の不"
+#~ "正がありました。"
+
+#~ msgid ""
+#~ "Journal stored outside of the volume are not supported.  Try to "
+#~ "desactivate the journal and run Parted again."
+#~ msgstr ""
+#~ "ジャーナルが別ボリュームにある HFS+ はサポートしていません。ジャーナルを無"
+#~ "効にしてから操作を行ってください。"
+
+#~ msgid "Journal offset or size is not multiple of the sector size."
+#~ msgstr "ジャーナルのオフセットかサイズがセクタサイズの倍数ではありません。"
+
+#~ msgid "Incorrect magic values in the journal header."
+#~ msgstr "ジャーナルヘッダのマジックナンバーが不正です。"
+
+#~ msgid "Journal size mismatch between journal info block and journal header."
+#~ msgstr ""
+#~ "ジャーナルサイズについて、ジャーナルインフォブロックとジャーナルヘッダとで"
+#~ "不整合があります。"
+
+#~ msgid "Some header fields are not multiple of the sector size."
+#~ msgstr ""
+#~ "ヘッダフィールドの中にセクタサイズの倍数になってないものがあります。"
+
+#~ msgid ""
+#~ "The sector size stored in the journal is not 512 bytes.  Parted only "
+#~ "supports 512 bytes length sectors."
+#~ msgstr ""
+#~ "ジャーナルが保存されているセクタのサイズが 512 バイトではありません。"
+#~ "Parted では 512 バイトのセクタしかサポートしていません。"
+
+#~ msgid "Bad journal checksum."
+#~ msgstr "ジャーナルのチェックサムが不正です。"
+
+#~ msgid ""
+#~ "The journal is not empty.  Parted must replay the transactions before "
+#~ "opening the file system.  This will modify the file system."
+#~ msgstr ""
+#~ "ジャーナルが空ではありません。Parted はファイルシステムをオープンする前に"
+#~ "トランザクションのリプレイをしなければなりません。リプレイするとファイルシ"
+#~ "ステムは変更されます。"
+
+#~ msgid ""
+#~ "The volume header or the master directory block has changed while "
+#~ "replaying the journal.  You should restart Parted."
+#~ msgstr ""
+#~ "ボリュームヘッダかマスターディレクトリブロックがジャーナルのリプレイ中に変"
+#~ "更されました。Parted を再起動してください。"
+
+#~ msgid "An extent has not been relocated."
+#~ msgstr "extent は再配置されませんでした。"
+
+#~ msgid ""
+#~ "A reference to an extent comes from a place it should not.  You should "
+#~ "check the file system!"
+#~ msgstr ""
+#~ "extent への参照はありえないところからなされています。ファイルシステムを"
+#~ "チェックしてください。"
+
+#~ msgid "This HFS volume has no catalog file.  This is very unusual!"
+#~ msgstr ""
+#~ "この HFS ボリュームには catalog file がありません。これはあまりありえない"
+#~ "ことです。"
+
+#~ msgid ""
+#~ "This HFS volume has no extents overflow file.  This is quite unusual!"
+#~ msgstr ""
+#~ "この HFS ボリュームには extents overflow file がありません。これはほとんど"
+#~ "ありえないことです。"
+
+#~ msgid ""
+#~ "The extents overflow file should not contain its own extents!  You should "
+#~ "check the file system."
+#~ msgstr ""
+#~ "extents overflow file は自分自身の extent を含んではいけません。ファイルシ"
+#~ "ステムをチェックしてください。"
+
+#~ msgid "Could not cache the file system in memory."
+#~ msgstr "ファイルシステムをメモリにキャッシュできません。"
+
+#~ msgid "Bad blocks list could not be loaded."
+#~ msgstr "不正ブロック一覧ファイルが読みこめませんでした。"
+
+#~ msgid "An error occurred during extent relocation."
+#~ msgstr "extent の再配置中にエラーは発生しました。"
+
+#~ msgid "This HFS+ volume has no catalog file.  This is very unusual!"
+#~ msgstr ""
+#~ "この HFS+ ボリュームには catalog file がありません。これはあまりありえない"
+#~ "ことです。"
+
+#~ msgid ""
+#~ "This HFS+ volume has no extents overflow file.  This is quite unusual!"
+#~ msgstr ""
+#~ "この HFS+ ボリュームには extents overflow file がありません。これはほとん"
+#~ "どありえないことです。"
+
+#~ msgid "The partition must have one of the following FS-TYPEs: "
+#~ msgstr ""
+#~ "パーティションのファイルシステムは以下のうちのいずれかでなければなりませ"
+#~ "ん: "
+
+#~ msgid ""
+#~ "The existing file system will be destroyed and all data on the partition "
+#~ "will be lost. Do you want to continue?"
+#~ msgstr ""
+#~ "いま存在しているファイルシステムは破壊され、このパーティションの全データが"
+#~ "失われます。続行しますか?"
+
+#~ msgid ""
+#~ "WARNING: you are attempting to use %s to operate on (%s) a file system.\n"
+#~ "%s's file system manipulation code is not as robust as what you'll find "
+#~ "in\n"
+#~ "dedicated, file-system-specific packages like e2fsprogs.  We recommend\n"
+#~ "you use %s only to manipulate partition tables, whenever possible.\n"
+#~ "Support for performing most operations on most types of file systems\n"
+#~ "will be removed in an upcoming release.\n"
+#~ msgstr ""
+#~ "警告: ファイルシステムに対して %s による操作(%s)を行おうとしています。\n"
+#~ "%s のファイルシステム操作コードは、e2fsprogs のようなファイルシステム専\n"
+#~ "用のものほど堅固に作られていません。可能なかぎり %s をパーティションテー\n"
+#~ "ブルの操作だけに用いることをお勧めします。ほとんどのファイルシステムに\n"
+#~ "対するほとんどの操作は今後のリリースで削除される予定です。\n"
+
+#~ msgid "Source device?"
+#~ msgstr "転送元のデバイス?"
+
+#~ msgid "Source partition number?"
+#~ msgstr "転送元のパーティション番号?"
+
+#~ msgid "Can't copy an extended partition."
+#~ msgstr "拡張パーティションはコピーできません。"
+
+#~ msgid "Destination partition number?"
+#~ msgstr "転送先のパーティション番号?"
+
+#~ msgid ""
+#~ "An extended partition cannot hold a file system.  Did you want mkpart?"
+#~ msgstr ""
+#~ "拡張パーティションにはファイルシステムは作れません。mkpart をしたいのです"
+#~ "か?"
+
+#~ msgid "Can't move an extended partition."
+#~ msgstr "拡張パーティションは移動できません。"
+
+#~ msgid "Can't move a partition onto itself.  Try using resize, perhaps?"
+#~ msgstr "自分自身の上には移動できません。リサイズしようとしてるのですか?"
+
+#~ msgid "Minor: %d\n"
+#~ msgstr "マイナー: %d\n"
+
+#~ msgid "Flags: %s\n"
+#~ msgstr "フラグ: %s\n"
+
+#~ msgid "File System: %s\n"
+#~ msgstr "ファイルシステム: %s\n"
+
+#~ msgid "Size:         "
+#~ msgstr "サイズ:       "
+
+#~ msgid "Minimum size: "
+#~ msgstr "最小サイズ:   "
+
+#~ msgid "Maximum size: "
+#~ msgstr "最大サイズ:   "
+
+#~ msgid "check"
+#~ msgstr "check"
+
+#~ msgid ""
+#~ "check NUMBER                             do a simple check on the file "
+#~ "system"
+#~ msgstr "check NUMBER                  ファイルシステムの簡単なチェックする"
+
+#~ msgid "cp"
+#~ msgstr "cp"
+
+#~ msgid ""
+#~ "cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   copy file system to another "
+#~ "partition"
+#~ msgstr ""
+#~ "cp [転送元デバイス] 転送元NUMBER 転送先NUMBER\n"
+#~ "            ファイルシステムを他のパーティションにコピーする"
+
+#~ msgid "mkfs"
+#~ msgstr "mkfs"
+
+#~ msgid ""
+#~ "mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on "
+#~ "partition NUMBER"
+#~ msgstr ""
+#~ "mkfs NUMBER ファイルシステムの種類\n"
+#~ "            指定した種類のファイルシステムを作る"
+
+#~ msgid "mkpartfs"
+#~ msgstr "mkpartfs"
+
+#~ msgid ""
+#~ "mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file "
+#~ "system"
+#~ msgstr ""
+#~ "mkpartfs パーティションの種類 ファイルシステムの種類 開始 終了\n"
+#~ "            パーティションとファイルシステムを作る"
+
+#~ msgid "move"
+#~ msgstr "move"
+
+#~ msgid "move NUMBER START END                    move partition NUMBER"
+#~ msgstr "move NUMBER 開始 終了         パーティションを移動する"
+
+#~ msgid "resize"
+#~ msgstr "resize"
+
+#~ msgid ""
+#~ "resize NUMBER START END                  resize partition NUMBER and its "
+#~ "file system"
+#~ msgstr ""
+#~ "resize NUMBER 開始 終了       パーティションとその中のファイルシステムをリ"
+#~ "サイズする"
diff --git a/po/nl.gmo b/po/nl.gmo
new file mode 100644 (file)
index 0000000..4ddfcbc
Binary files /dev/null and b/po/nl.gmo differ
diff --git a/po/nl.po b/po/nl.po
new file mode 100644 (file)
index 0000000..0e39c3e
--- /dev/null
+++ b/po/nl.po
@@ -0,0 +1,3407 @@
+# Dutch translations for GNU parted.
+# Copyright (C) 2011 Free Software Foundation, Inc.
+# This file is distributed under the same license as the parted package.
+#
+# Benno Schulenberg <benno@vertaalt.nl>, 2005, 2006, 2007, 2010, 2011.
+# Erwin Poeze <erwin.poeze@gmail.com>, 2010.
+# Ivo Timmermans <ivo@o2w.nl>, 2000.
+msgid ""
+msgstr ""
+"Project-Id-Version: parted 2.4\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2011-05-30 13:45+0200\n"
+"PO-Revision-Date: 2011-05-19 13:28+0200\n"
+"Last-Translator: Benno Schulenberg <benno@vertaalt.nl>\n"
+"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
+"Language: nl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 1.0\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "ongeldig argument %s van %s"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "argument %s van %s is niet eenduidig"
+
+#: lib/argmatch.c:153
+#, c-format
+msgid "Valid arguments are:"
+msgstr "Geldige argumenten zijn:"
+
+#: lib/closeout.c:112 libparted/labels/fdasd.c:107
+msgid "write error"
+msgstr "schrijffout"
+
+#: lib/error.c:181
+msgid "Unknown system error"
+msgstr "Onbekende systeemfout"
+
+#: lib/getopt.c:548 lib/getopt.c:577
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
+msgstr "%s: optie '%s' is niet eenduidig\n"
+
+#: lib/getopt.c:625 lib/getopt.c:629
+#, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s: optie '--%s' staat geen argument toe\n"
+
+#: lib/getopt.c:638 lib/getopt.c:643
+#, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr "%s: optie '%c%s' staat geen argument toe\n"
+
+#: lib/getopt.c:686 lib/getopt.c:705
+#, c-format
+msgid "%s: option '--%s' requires an argument\n"
+msgstr "%s: optie '--%s' vereist een argument\n"
+
+#: lib/getopt.c:743 lib/getopt.c:746
+#, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s: onbekende optie '--%s'\n"
+
+#: lib/getopt.c:754 lib/getopt.c:757
+#, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "%s: onbekende optie '%c%s'\n"
+
+#: lib/getopt.c:806 lib/getopt.c:809
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: ongeldige optie -- '%c'\n"
+
+#: lib/getopt.c:859 lib/getopt.c:876 lib/getopt.c:1084 lib/getopt.c:1102
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: optie vereist een argument -- '%c'\n"
+
+#: lib/getopt.c:932 lib/getopt.c:948
+#, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s: optie '-W %s' is niet eenduidig\n"
+
+#: lib/getopt.c:972 lib/getopt.c:990
+#, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr "%s: optie '-W %s' staat geen argument toe\n"
+
+#: lib/getopt.c:1011 lib/getopt.c:1029
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: optie '-W %s' vereist een argument\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:271
+msgid "`"
+msgstr "‘"
+
+#: lib/quotearg.c:272
+msgid "'"
+msgstr "’"
+
+#: lib/regcomp.c:133
+msgid "Success"
+msgstr "Gelukt"
+
+#: lib/regcomp.c:136
+msgid "No match"
+msgstr "Geen overeenkomsten"
+
+#: lib/regcomp.c:139
+msgid "Invalid regular expression"
+msgstr "Ongeldige reguliere expressie"
+
+#: lib/regcomp.c:142
+msgid "Invalid collation character"
+msgstr "Ongeldig samengesteld teken"
+
+#: lib/regcomp.c:145
+msgid "Invalid character class name"
+msgstr "Ongeldige tekenklassenaam"
+
+#: lib/regcomp.c:148
+msgid "Trailing backslash"
+msgstr "Backslash aan het eind"
+
+#: lib/regcomp.c:151
+msgid "Invalid back reference"
+msgstr "Ongeldige terugverwijzing"
+
+#: lib/regcomp.c:154
+msgid "Unmatched [ or [^"
+msgstr "Ongepaarde [ of [^"
+
+#: lib/regcomp.c:157
+msgid "Unmatched ( or \\("
+msgstr "Ongepaarde ( of \\("
+
+#: lib/regcomp.c:160
+msgid "Unmatched \\{"
+msgstr "Ongepaarde \\{"
+
+#: lib/regcomp.c:163
+msgid "Invalid content of \\{\\}"
+msgstr "Ongeldige inhoud van \\{\\}"
+
+#: lib/regcomp.c:166
+msgid "Invalid range end"
+msgstr "Ongeldig bereikeinde"
+
+#: lib/regcomp.c:169
+msgid "Memory exhausted"
+msgstr "Onvoldoende geheugen beschikbaar"
+
+#: lib/regcomp.c:172
+msgid "Invalid preceding regular expression"
+msgstr "Ongeldige voorafgaande reguliere expressie"
+
+#: lib/regcomp.c:175
+msgid "Premature end of regular expression"
+msgstr "Voortijdig einde van reguliere expressie"
+
+#: lib/regcomp.c:178
+msgid "Regular expression too big"
+msgstr "Reguliere expressie is te groot"
+
+#: lib/regcomp.c:181
+msgid "Unmatched ) or \\)"
+msgstr "Ongepaarde ) of \\)"
+
+#: lib/regcomp.c:702
+msgid "No previous regular expression"
+msgstr "Geen eerdere reguliere expressie"
+
+#. TRANSLATORS: A regular expression testing for an affirmative answer
+#. (english: "yes").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^yesexpr='
+#: lib/rpmatch.c:147
+msgid "^[yY]"
+msgstr "^[jJyY]"
+
+#. TRANSLATORS: A regular expression testing for a negative answer
+#. (english: "no").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^noexpr='
+#: lib/rpmatch.c:160
+msgid "^[nN]"
+msgstr "^[nN]"
+
+#: lib/version-etc.c:74
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "In pakketvorm gebracht door %s (%s)\n"
+
+#: lib/version-etc.c:77
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "In pakketvorm gebracht door %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale.  Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:84
+msgid "(C)"
+msgstr "©"
+
+#: lib/version-etc.c:86
+msgid ""
+"\n"
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"\n"
+"Dit is vrije software: u mag het vrijelijk wijzigen en verder verspreiden.\n"
+"De precieze licentie is GPLv3+: GNU GPL versie 3 of later;\n"
+"zie http://gnu.org/licenses/gpl.html voor de volledige tekst.\n"
+"Er is GEEN GARANTIE, voor zover de wet dit toestaat.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:102
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Geschreven door %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:106
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Geschreven door %s en %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:110
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Geschreven door %s, %s en %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Geschreven door %s, %s, %s\n"
+"en %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Geschreven door %s, %s, %s,\n"
+"%s en %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:131
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Geschreven door %s, %s, %s,\n"
+"%s, %s en %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:139
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Geschreven door %s, %s, %s,\n"
+"%s, %s, %s en %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:147
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Geschreven door %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"en %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:156
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Geschreven door %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s en %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:167
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Geschreven door %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s en anderen.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package.  Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:245
+#, c-format
+msgid ""
+"\n"
+"Report bugs to: %s\n"
+msgstr ""
+"\n"
+"Rapporteer gebreken in het programma aan <%s>;\n"
+"meld fouten in de vertaling aan <vertaling@vrijschrift.org>.\n"
+
+#: lib/version-etc.c:247
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr ""
+"Rapporteer gebreken in het programma '%s' aan <%s>;\n"
+"meld fouten in de vertaling aan <vertaling@vrijschrift.org>.\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Webpagina van %s: <%s>\n"
+
+#: lib/version-etc.c:253
+#, c-format
+msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
+msgstr "Webpagina van %s: <http://www.gnu.org/software/%s/>\n"
+
+#: lib/version-etc.c:256
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
+msgstr ""
+"Algemene hulp bij gebruik van GNU-software: <http://www.gnu.org/gethelp/>\n"
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "onvoldoende geheugen beschikbaar"
+
+#: lib/xstrtol-error.c:63
+#, c-format
+msgid "invalid %s%s argument `%s'"
+msgstr "ongeldig argument '%3$s' van %1$s%2$s"
+
+#: lib/xstrtol-error.c:68
+#, c-format
+msgid "invalid suffix in %s%s argument `%s'"
+msgstr "ongeldig achtervoegsel in argument '%3$s' van %1$s%2$s"
+
+#: lib/xstrtol-error.c:72
+#, c-format
+msgid "%s%s argument `%s' too large"
+msgstr "argument '%3$s' van %1$s%2$s is te groot"
+
+#: libparted/arch/beos.c:245
+msgid "Disk Image"
+msgstr "Schijfimage"
+
+#: libparted/arch/beos.c:346 libparted/arch/gnu.c:277
+#: libparted/arch/linux.c:1545
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "Fout tijdens openen van %s: %s"
+
+#: libparted/arch/beos.c:357 libparted/arch/gnu.c:287
+#: libparted/arch/linux.c:1556
+#, c-format
+msgid "Unable to open %s read-write (%s).  %s has been opened read-only."
+msgstr ""
+"Kan %s niet openen voor lezen-en-schrijven (%s);  %s is geopend voor alleen-"
+"lezen."
+
+#: libparted/arch/beos.c:419 libparted/arch/linux.c:1714
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s tijdens een 'seek' bij het lezen van %s"
+
+#: libparted/arch/beos.c:452 libparted/arch/gnu.c:465 libparted/arch/gnu.c:564
+#: libparted/arch/gnu.c:692 libparted/arch/linux.c:1674
+#: libparted/arch/linux.c:1755
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s tijdens lezen van %s"
+
+#: libparted/arch/beos.c:488 libparted/arch/gnu.c:525
+#: libparted/arch/linux.c:1831
+#, c-format
+msgid "Can't write to %s, because it is opened read-only."
+msgstr "Kan niet naar %s schrijven, omdat het geopend is voor alleen-lezen."
+
+#: libparted/arch/beos.c:504 libparted/arch/linux.c:1856
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s tijdens een 'seek' bij het schrijven naar %s"
+
+#: libparted/arch/beos.c:541 libparted/arch/gnu.c:601 libparted/arch/gnu.c:646
+#: libparted/arch/gnu.c:723 libparted/arch/linux.c:1804
+#: libparted/arch/linux.c:1898 libparted/arch/linux.c:1970
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s tijdens schrijven naar %s"
+
+#: partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Typ '%s --help' voor meer informatie.\n"
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr "Gebruik:  %s [OPTIE] [APPARAAT]...\n"
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the operating system about partition table changes.\n"
+"\n"
+"  -d, --dry-run    do not actually inform the operating system\n"
+"  -s, --summary    print a summary of contents\n"
+"  -h, --help       display this help and exit\n"
+"  -v, --version    output version information and exit\n"
+msgstr ""
+"Het besturingssysteem informeren over veranderingen in een partitietabel.\n"
+"\n"
+"  -d, --dry-run    het besturingssysteem niet informeren, maar doen alsof\n"
+"  -s, --summary    een samenvatting van de inhoud tonen\n"
+"  -h, --help       deze hulptekst tonen en stoppen\n"
+"  -v, --version    programmaversie tonen en stoppen\n"
+
+#: partprobe/partprobe.c:150
+msgid ""
+"\n"
+"When no DEVICE is given, probe all partitions.\n"
+msgstr ""
+"\n"
+"Zonder APPARAAT worden alle beschikbare apparaten onderzocht.\n"
+
+#: partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Rapporteer gebreken in het programma aan <%s>;\n"
+"meld fouten in de vertaling aan <vertaling@vrijschrift.org>.\n"
+
+#: libparted/arch/gnu.c:110
+#, c-format
+msgid "Unable to open %s."
+msgstr "Kan %s niet openen."
+
+#: libparted/arch/gnu.c:130
+msgid "Unable to probe store."
+msgstr "Kan de logische opbouw van het apparaat niet achterhalen."
+
+#: libparted/arch/gnu.c:368
+msgid ""
+"The partition table cannot be re-read.  This means you need to reboot before "
+"mounting any modified partitions.  You also need to reinstall your boot "
+"loader before you reboot (which may require mounting modified partitions).  "
+"It is impossible do both things!  So you'll need to boot off a rescue disk, "
+"and reinstall your boot loader from the rescue disk.  Read section 4 of the "
+"Parted User documentation for more information."
+msgstr ""
+"De kernel kan de partitietabel niet herinlezen.  Dit betekent dat u uw "
+"computer moet herstarten alvorens veranderde partities te gebruiken.  Maar "
+"voor het herstarten moet u ook uw opstartlader opnieuw installeren, wat "
+"mogelijk het aankoppelen van veranderde partitities vereist.  De twee dingen "
+"zijn niet samen mogelijk!  U zult dus van een reddingsdiskette of van een CD "
+"moeten herstarten, en vanaf daar uw opstartlader moeten herinstalleren.  "
+"Lees eventueel sectie 4 van de Parted-gebruikersdocumentatie."
+
+#: libparted/arch/gnu.c:385
+#, c-format
+msgid ""
+"The partition table on %s cannot be re-read (%s).  This means the Hurd knows "
+"nothing about any modifications you made.  You should reboot your computer "
+"before doing anything with %s."
+msgstr ""
+"De kernel kan de partitietabel op %s niet herinlezen (%s).  Dit betekent dat "
+"de Hurd geen weet heeft van de veranderingen die u net hebt gemaakt.  U "
+"dient uw computer te herstarten alvorens iets met %s te doen."
+
+#: libparted/arch/gnu.c:396 parted/parted.c:1967
+msgid ""
+"You should reinstall your boot loader before rebooting.  Read section 4 of "
+"the Parted User documentation for more information."
+msgstr ""
+"Alvorens te herstarten dient u uw opstartlader opnieuw te installeren.  Lees "
+"sectie 4 van de Parted-gebruikersdocumentatie voor meer informatie."
+
+#: libparted/arch/gnu.c:788
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%s: bezig met synchroniseren van %s naar schijf"
+
+#: libparted/arch/linux.c:520
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "Kan de status van apparaat '%s' niet opvragen -- %s."
+
+#: libparted/arch/linux.c:577
+#, c-format
+msgid "Unable to determine the dm type of %s."
+msgstr "Kan het apparaattype van '%s' niet achterhalen."
+
+#: libparted/arch/linux.c:669
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+"Kan de sectorgrootte van %s niet achterhalen: %s.\n"
+"De standaard sectorgrootte (%lld) wordt gebruikt."
+
+#: libparted/arch/linux.c:690
+#, c-format
+msgid ""
+"Could not determine physical sector size for %s.\n"
+"Using the logical sector size (%lld)."
+msgstr ""
+"Kan de fysieke sectorgrootte van %s niet achterhalen.\n"
+"De logische sectorgrootte (%lld) wordt gebruikt."
+
+#: libparted/arch/linux.c:746
+#, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "Kan de grootte van %s niet achterhalen -- %s."
+
+#: libparted/arch/linux.c:832
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "Kan de identiteit van apparaat %s niet achterhalen -- %s."
+
+#: libparted/arch/linux.c:841
+msgid "Generic IDE"
+msgstr "Gewone IDE"
+
+#: libparted/arch/linux.c:862
+#, c-format
+msgid ""
+"Device %s has multiple (%d) logical sectors per physical sector.\n"
+"GNU Parted supports this EXPERIMENTALLY for some special disk label/file "
+"system combinations, e.g. GPT and ext2/3.\n"
+"Please consult the web site for up-to-date information."
+msgstr ""
+"Apparaat %s bevat per fysieke sector meerdere (%d) logische sectoren.\n"
+"GNU Parted ondersteunt dit op EXPERIMENTELE basis voor sommige combinaties "
+"van\n"
+"schijflabel en bestandssysteem, bijvoorbeeld GPT met ext2/3.\n"
+"Zie de website van Parted voor de laatste informatie."
+
+#: libparted/arch/linux.c:1039
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "Fout tijdens initialiseren van SCSI-apparaat %s -- %s."
+
+#: libparted/arch/linux.c:1103
+#, c-format
+msgid ""
+"The device %s is so small that it cannot possibly store a file system or "
+"partition table.  Perhaps you selected the wrong device?"
+msgstr ""
+"Apparaat %s is zo klein dat het onmogelijk een bestandssysteem of\n"
+"partitietabel kan bevatten.  Hebt u misschien een verkeerd apparaat gekozen?"
+
+#: libparted/arch/linux.c:1216
+#, c-format
+msgid ""
+"Unable to determine geometry of file/device %s.  You should not use Parted "
+"unless you REALLY know what you're doing!"
+msgstr ""
+"Kan de logische opbouw van het apparaat %s niet achterhalen.\n"
+"U kunt Parted beter niet gebruiken tenzij u ECHT weet wat u doet!"
+
+#: libparted/arch/linux.c:1276
+msgid "Generic SD/MMC Storage Card"
+msgstr "Algemeen SD/MMC-geheugenkaart"
+
+#: libparted/arch/linux.c:1329
+msgid "DAC960 RAID controller"
+msgstr "DAC960 RAID-stuurapparaat"
+
+#: libparted/arch/linux.c:1334
+msgid "Promise SX8 SATA Device"
+msgstr "Promise SX8 SATA-apparaat"
+
+#: libparted/arch/linux.c:1339
+msgid "ATA over Ethernet Device"
+msgstr "ATA-over-Ethernet-apparaat"
+
+#: libparted/arch/linux.c:1345
+msgid "IBM S390 DASD drive"
+msgstr "IBM S390 DASD-schijf"
+
+#: libparted/arch/linux.c:1351
+msgid "IBM iSeries Virtual DASD"
+msgstr "IBM iSeries virtuele DASD"
+
+#: libparted/arch/linux.c:1356
+msgid "Compaq Smart Array"
+msgstr "Compaq Smart Array-stuurapparaat"
+
+#: libparted/arch/linux.c:1361
+msgid "ATARAID Controller"
+msgstr "ATARAID-stuurapparaat"
+
+#: libparted/arch/linux.c:1366
+msgid "I2O Controller"
+msgstr "I2O-stuurapparaat"
+
+#: libparted/arch/linux.c:1371
+msgid "User-Mode Linux UBD"
+msgstr "User-Mode Linux-blokapparaat (UBD)"
+
+#: libparted/arch/linux.c:1384
+#, c-format
+msgid "Linux device-mapper (%s)"
+msgstr "Linux device-mapper (%s)"
+
+#: libparted/arch/linux.c:1395
+msgid "Xen Virtual Block Device"
+msgstr "Xen virtueel blokapparaat"
+
+#: libparted/arch/linux.c:1400
+msgid "Unknown"
+msgstr "(onbekend)"
+
+#: libparted/arch/linux.c:1409
+msgid "Virtio Block Device"
+msgstr "Virtio-blokapparaat"
+
+#: libparted/arch/linux.c:1414
+msgid "Linux Software RAID Array"
+msgstr "Linux-Software-RAID-array"
+
+#: libparted/arch/linux.c:1421
+msgid "ped_device_new()  Unsupported device type"
+msgstr "Apparaattype wordt niet ondersteund."
+
+#: libparted/arch/linux.c:1518 libparted/arch/linux.c:1590
+#, c-format
+msgid "Error fsyncing/closing %s: %s"
+msgstr "Fout tijdens fsyncing/sluiten van %s: %s"
+
+#: libparted/arch/linux.c:1754
+#, c-format
+msgid "end of file while reading %s"
+msgstr "bestandseinde tijdens lezen van %s"
+
+#: libparted/arch/linux.c:2390
+#, c-format
+msgid ""
+"Error informing the kernel about modifications to partition %s -- %s.  This "
+"means Linux won't know about any changes you made to %s until you reboot -- "
+"so you shouldn't mount it or use it in any way before rebooting."
+msgstr ""
+"Er is een fout opgetreden tijdens het informeren van de kernel over de "
+"wijzigingen aan partitie %s -- %s.  Dit betekent dat Linux geen weet heeft "
+"van de veranderingen die u net hebt gemaakt aan %s totdat u uw computer "
+"herstart -- u dient deze partitie dus niet aan te koppelen of op enigerlei "
+"wijze te gebruiken alvorens te herstarten."
+
+#: libparted/arch/linux.c:2528
+#, c-format
+msgid "Unable to determine the size and length of %s."
+msgstr "Kan de grootte en lengte van %s niet achterhalen."
+
+#: libparted/arch/linux.c:2553
+#, c-format
+msgid "Failed to add partition %d (%s)"
+msgstr "Toevoegen van partitie %d is mislukt (%s)"
+
+#: libparted/arch/linux.c:2580
+#, c-format
+msgid ""
+"Partition(s) %s on %s have been written, but we have been unable to inform "
+"the kernel of the change, probably because it/they are in use.  As a result, "
+"the old partition(s) will remain in use.  You should reboot now before "
+"making further changes."
+msgstr ""
+"Partitie(s) %s op %s zijn geschreven maar het is niet gelukt de kernel over "
+"de wijzigingen te informeren, waarschijnlijk omdat de partitie(s) gebruikt "
+"worden.  De oude partities zullen zodoende actief blijven.  U dient uw "
+"computer nu te herstarten alvorens verdere veranderingen aan te brengen."
+
+#: libparted/arch/linux.c:2706
+#, c-format
+msgid ""
+"parted was unable to re-read the partition table on %s (%s).  This means "
+"Linux won't know anything about the modifications you made. "
+msgstr ""
+"Parted kan de partitietabel op %s niet herinlezen (%s).  Dit betekent dat "
+"Linux geen weet heeft van de veranderingen die u net hebt gemaakt.  "
+
+#: libparted/cs/geom.c:161
+#, c-format
+msgid "Can't have the end before the start! (start sector=%jd length=%jd)"
+msgstr ""
+"Het einde kan niet vóór het begin liggen! (startsector=%jd, lengte=%jd)"
+
+#: libparted/cs/geom.c:169
+msgid "Can't have a partition outside the disk!"
+msgstr "Kan geen partitie maken buiten de schijf!"
+
+#: libparted/cs/geom.c:384
+#, c-format
+msgid "Attempt to write sectors %ld-%ld outside of partition on %s."
+msgstr ""
+"Poging tot het schrijven van sectoren %ld-%ld buiten de partitie op %s."
+
+#: libparted/cs/geom.c:424
+msgid "checking for bad blocks"
+msgstr "bezig met zoeken naar slechte blokken"
+
+#: libparted/debug.c:96
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr "De backtrace heeft %d aanroepen op de stack:\n"
+
+#: libparted/debug.c:109
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr "*** assertion (%s) at %s:%d in function %s() failed ***"
+
+#: libparted/disk.c:192
+#, c-format
+msgid "%s: unrecognised disk label"
+msgstr "%s: onbekend schijflabel"
+
+#: libparted/disk.c:484
+#, c-format
+msgid ""
+"This libparted doesn't have write support for %s.  Perhaps it was compiled "
+"read-only."
+msgstr ""
+"Deze libparted kan niet naar %s schrijven.  Mogelijk werd libparted voor "
+"alleen-lezen gecompileerd."
+
+#: libparted/disk.c:629
+#, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "Partitie %d is %s, maar het bestandssysteem is %s."
+
+#: libparted/disk.c:838
+msgid "cylinder_alignment"
+msgstr "cilinderuitlijning"
+
+#: libparted/disk.c:844
+#, c-format
+msgid "Unknown disk flag, %d."
+msgstr "Onbekende schijfvlag %d."
+
+#: libparted/disk.c:1283
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "%s-schijflabels kennen geen uitgebreide partities."
+
+#: libparted/disk.c:1858
+#, c-format
+msgid "%s disk labels don't support logical or extended partitions."
+msgstr "%s-schijflabels kennen geen logische of uitgebreide partities."
+
+#: libparted/disk.c:1871
+msgid "Too many primary partitions."
+msgstr "Te veel primaire partities."
+
+#: libparted/disk.c:1880
+#, c-format
+msgid ""
+"Can't add a logical partition to %s, because there is no extended partition."
+msgstr ""
+"Kan geen logische partitie aan %s toevoegen, omdat er geen uitgebreide "
+"partitie is."
+
+#: libparted/disk.c:1904
+#, c-format
+msgid "Can't have more than one extended partition on %s."
+msgstr "Kan niet meer dan één uitgebreide partitie maken op %s."
+
+#: libparted/disk.c:1914
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr "Kan geen logische partitie buiten de uitgebreide partitie maken."
+
+#: libparted/disk.c:1939
+#, c-format
+msgid "Can't have a logical partition outside of the extended partition on %s."
+msgstr "Kan geen logische partitie buiten de uitgebreide partitie op %s maken."
+
+#: libparted/disk.c:1949 libparted/disk.c:2008 libparted/disk.c:2186
+msgid "Can't have overlapping partitions."
+msgstr "Partities mogen elkaar niet overlappen."
+
+#: libparted/disk.c:1957
+msgid "Can't have a primary partition inside an extended partition."
+msgstr "Kan geen primaire partitie binnen een uitgebreide partitie maken."
+
+#: libparted/disk.c:2387
+msgid "metadata"
+msgstr "metagegevens"
+
+#: libparted/disk.c:2389
+msgid "free"
+msgstr "vrij"
+
+#: libparted/disk.c:2391 parted/ui.c:1194 parted/ui.c:1222
+msgid "extended"
+msgstr "uitgebreid"
+
+#: libparted/disk.c:2393 parted/ui.c:1198 parted/ui.c:1226
+msgid "logical"
+msgstr "logisch"
+
+#: libparted/disk.c:2395 parted/ui.c:1190 parted/ui.c:1218
+msgid "primary"
+msgstr "primair"
+
+#: libparted/disk.c:2411
+msgid "boot"
+msgstr "opstart"
+
+#: libparted/disk.c:2413
+msgid "bios_grub"
+msgstr "bios_grub"
+
+#: libparted/disk.c:2415
+msgid "root"
+msgstr "hoofdmap"
+
+#: libparted/disk.c:2417
+msgid "swap"
+msgstr "swap"
+
+#: libparted/disk.c:2419
+msgid "hidden"
+msgstr "verborgen"
+
+#: libparted/disk.c:2421
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2423
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2425
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2427
+msgid "hp-service"
+msgstr "hp-service"
+
+#: libparted/disk.c:2429
+msgid "palo"
+msgstr "palo"
+
+#: libparted/disk.c:2431
+msgid "prep"
+msgstr "prep"
+
+#: libparted/disk.c:2433
+msgid "msftres"
+msgstr "msftres"
+
+#: libparted/disk.c:2435
+msgid "atvrecv"
+msgstr "atvrecv"
+
+#: libparted/disk.c:2437
+msgid "diag"
+msgstr "diag"
+
+#: libparted/disk.c:2439
+msgid "legacy_boot"
+msgstr "legacy_boot"
+
+#: libparted/disk.c:2445
+#, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Onbekende partitievlag %d."
+
+#: libparted/exception.c:77
+msgid "Information"
+msgstr "Opmerking"
+
+#: libparted/exception.c:78
+msgid "Warning"
+msgstr "Waarschuwing"
+
+#: libparted/exception.c:79
+msgid "Error"
+msgstr "Fout"
+
+#: libparted/exception.c:80
+msgid "Fatal"
+msgstr "Fataal"
+
+#: libparted/exception.c:81
+msgid "Bug"
+msgstr "Programmeerfout"
+
+#: libparted/exception.c:82
+msgid "No Implementation"
+msgstr "Niet-geïmplementeerd"
+
+#: libparted/exception.c:86
+msgid "Fix"
+msgstr "Repareren"
+
+#: libparted/exception.c:87
+msgid "Yes"
+msgstr "Ja"
+
+#: libparted/exception.c:88
+msgid "No"
+msgstr "Nee"
+
+#: libparted/exception.c:89
+msgid "OK"
+msgstr "OK"
+
+#: libparted/exception.c:90
+msgid "Retry"
+msgstr "Opnieuw proberen"
+
+#: libparted/exception.c:91
+msgid "Ignore"
+msgstr "Negeren"
+
+#: libparted/exception.c:92
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: libparted/exception.c:132
+#, c-format
+msgid ""
+"A bug has been detected in GNU Parted.  Refer to the web site of parted "
+"http://www.gnu.org/software/parted/parted.html for more information of what "
+"could be useful for bug submitting!  Please email a bug report to %s "
+"containing at least the version (%s) and the following message:  "
+msgstr ""
+"U bent tegen een programmeerfout in GNU Parted aangelopen.\n"
+"Zie eventueel de website (http://www.gnu.org/software/parted/parted.html)\n"
+"voor meer informatie over het nuttig rapporteren van fouten.\n"
+"\n"
+"Stuur een foutrapportage (naar %s) die in elk geval\n"
+"het versienummer (%s) noemt en de volgende boodschap:  "
+
+#: libparted/labels/aix.c:103
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr "Het lezen van AIX-schijflabels is nog niet geïmplementeerd."
+
+#: libparted/labels/aix.c:114
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr "Het schrijven van AIX-schijflabels is nog niet geïmplementeerd."
+
+#: libparted/labels/aix.c:127
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr ""
+"Het toevoegen van partities aan AIX-schijflabels is nog niet geïmplementeerd."
+
+#: libparted/labels/aix.c:137
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr ""
+"Het klonen van partities in AIX-schijflabels is nog niet geïmplementeerd."
+
+#: libparted/labels/aix.c:155
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr ""
+"Het instellen van het systeemtype in AIX-schijflabels is nog niet "
+"geïmplementeerd."
+
+#: libparted/labels/aix.c:165
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr ""
+"Het zetten van vlaggen in AIX-schijflabels is nog niet geïmplementeerd."
+
+#: libparted/labels/bsd.c:571 libparted/labels/dasd.c:833
+#: libparted/labels/dos.c:2176 libparted/labels/dvh.c:787
+#: libparted/labels/gpt.c:1782 libparted/labels/loop.c:247
+#: libparted/labels/mac.c:1426 libparted/labels/pc98.c:748
+#: libparted/labels/rdb.c:1052 libparted/labels/sun.c:780
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "Kan niet aan alle voorwaarden voor deze partitie voldoen."
+
+#: libparted/labels/bsd.c:596
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "Kan in het BSD-schijflabel geen plekje meer reserveren."
+
+#: libparted/labels/dasd.c:859
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "Kan in het DASD-schijflabel geen plekje meer reserveren."
+
+#: libparted/labels/dos.c:966
+#, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr "Ongeldige partitietabel op %s -- onjuiste vingerafdruk %x."
+
+#: libparted/labels/dos.c:994
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "Ongeldige partitietabel -- recursieve partitie op %s."
+
+#: libparted/labels/dos.c:1504
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr ""
+"Uitgebreide partities kunnen op MSDOS-schijflabels niet verborgen zijn."
+
+#: libparted/labels/dos.c:2158
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+"Parted kan partitities beheerd door Windows Dynamic Disk niet van grootte "
+"veranderen."
+
+#: libparted/labels/dvh.c:200
+#, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr "%s bevat geen uitgebreide partitie (volumenkop-partitie)."
+
+#: libparted/labels/dvh.c:326
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr "Onjuiste controlesom: de partitietabel is beschadigd."
+
+#: libparted/labels/dvh.c:631
+msgid "Only primary partitions can be root partitions."
+msgstr "Alleen een primaire partitie kan rootpartitie zijn."
+
+#: libparted/labels/dvh.c:645
+msgid "Only primary partitions can be swap partitions."
+msgstr "Alleen een primaire partitie kan swappartitie zijn."
+
+#: libparted/labels/dvh.c:659
+msgid "Only logical partitions can be a boot file."
+msgstr "Alleen een logische partitie kan een opstartbestand zijn."
+
+#: libparted/labels/dvh.c:736
+#, c-format
+msgid ""
+"failed to set dvh partition name to %s:\n"
+"Only logical partitions (boot files) have a name."
+msgstr ""
+"Het instellen van '%s' als dvh-partitienaam is mislukt:\n"
+"alleen logische partities (opstartbestanden) hebben een naam."
+
+#: libparted/labels/dvh.c:829
+msgid "Too many primary partitions"
+msgstr "Te veel primaire partities."
+
+#: libparted/labels/fdasd.c:98
+msgid "open error"
+msgstr "openfout"
+
+#: libparted/labels/fdasd.c:101
+msgid "seek error"
+msgstr "'seek'-fout"
+
+#: libparted/labels/fdasd.c:104
+msgid "read error"
+msgstr "leesfout"
+
+#: libparted/labels/fdasd.c:110
+msgid "ioctl() error"
+msgstr "ioctl()-fout"
+
+#: libparted/labels/fdasd.c:114
+msgid "API version mismatch"
+msgstr "API-versies passen niet bij elkaar"
+
+#: libparted/labels/fdasd.c:118
+msgid "Unsupported disk type"
+msgstr "Schijftype wordt niet ondersteund"
+
+#: libparted/labels/fdasd.c:122
+msgid "Unsupported disk format"
+msgstr "Schijfindeling wordt niet ondersteund"
+
+#: libparted/labels/fdasd.c:126
+msgid "Disk is in use"
+msgstr "Schijf is in gebruik"
+
+#: libparted/labels/fdasd.c:130
+msgid "Syntax error in config file"
+msgstr "Syntaxfout in configuratiebestand"
+
+#: libparted/labels/fdasd.c:134
+msgid "Volume label is corrupted"
+msgstr "Volumenlabel is beschadigd"
+
+#: libparted/labels/fdasd.c:138
+msgid "A data set name is corrupted"
+msgstr "Naam van een dataset is beschadigd"
+
+#: libparted/labels/fdasd.c:142
+msgid "Memory allocation failed"
+msgstr "Onvoldoende geheugen beschikbaar"
+
+#: libparted/labels/fdasd.c:146
+msgid "Device verification failed"
+msgstr "Apparaatcontrole is mislukt"
+
+#: libparted/labels/fdasd.c:147
+msgid "The specified device is not a valid DASD device"
+msgstr "Het opgegeven apparaat is geen geldig DASD-apparaat"
+
+#: libparted/labels/fdasd.c:150 libparted/labels/vtoc.c:179
+msgid "Fatal error"
+msgstr "Fatale fout"
+
+#: libparted/labels/fdasd.c:226
+msgid "No room for volume label."
+msgstr "Geen ruimte voor een volumenlabel."
+
+#: libparted/labels/fdasd.c:234
+msgid "No room for partition info."
+msgstr "Geen ruimte voor partitie-informatie."
+
+#: libparted/labels/fdasd.c:709
+msgid "Invalid VTOC."
+msgstr "Ongeldige VTOC."
+
+#: libparted/labels/fdasd.c:766
+msgid "Could not retrieve API version."
+msgstr "Kan de API-versie niet verkrijgen."
+
+#: libparted/labels/fdasd.c:769
+#, c-format
+msgid ""
+"The current API version '%d' doesn't match dasd driver API version '%d'!"
+msgstr ""
+"Huidige API-versie '%d' past niet bij API-versie '%d' van het DASD-"
+"stuurprogramma!"
+
+#: libparted/labels/fdasd.c:806
+msgid "Could not retrieve disk geometry information."
+msgstr "Kan informatie over schijfopbouw niet verkrijgen."
+
+#: libparted/labels/fdasd.c:810
+msgid "Could not retrieve blocksize information."
+msgstr "Kan blokgrootte niet verkrijgen."
+
+#: libparted/labels/fdasd.c:815
+msgid "Could not retrieve disk information."
+msgstr "Kan geen schijfinformatie verkrijgen."
+
+#: libparted/labels/gpt.c:493
+#, c-format
+msgid ""
+"%s contains GPT signatures, indicating that it has a GPT table.  However, it "
+"does not have a valid fake msdos partition table, as it should.  Perhaps it "
+"was corrupted -- possibly by a program that doesn't understand GPT partition "
+"tables.  Or perhaps you deleted the GPT table, and are now using an msdos "
+"partition table.  Is this a GPT partition table?"
+msgstr ""
+"%s bevat GPT-vingerafdrukken die aangeven dat het een GPT-tabel heeft.  Maar "
+"het bevat geen geldige nep-MSDOS-partitietabel, zoals zou moeten.  Misschien "
+"werd deze beschadigd, mogelijk door een programma dat GPT-partitietabellen "
+"niet begrijpt.  Of misschien hebt u de GPT-tabel verwijderd en gebruikt nu "
+"een MSDOS-partitietabel.  Is dit echt een GPT-partitietabel?"
+
+#: libparted/labels/gpt.c:693
+#, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise.  Please report this!"
+msgstr ""
+"De indeling van de GPT-partitietabel is van versie %x.  Dit is nieuwer dan "
+"wat deze versie van Parted kent.  Rapporteer dit alstublieft aan ons."
+
+#: libparted/labels/gpt.c:740
+#, c-format
+msgid ""
+"Not all of the space available to %s appears to be used, you can fix the GPT "
+"to use all of the space (an extra %llu blocks) or continue with the current "
+"setting? "
+msgstr ""
+"Niet alle beschibare ruimte voor %s schijnt gebruikt te worden.\n"
+"De GPT bijwerken om alle ruimte te gebruiken (%llu extra blokken),\n"
+"of doorgaan en deze extra ruimte negeren? "
+
+#: libparted/labels/gpt.c:952
+msgid ""
+"The backup GPT table is not at the end of the disk, as it should be.  This "
+"might mean that another operating system believes the disk is smaller.  Fix, "
+"by moving the backup to the end (and removing the old backup)?"
+msgstr ""
+"De reservekopie van de GPT-tabel staat niet helemaal aan het einde van de "
+"schijf, zoals zou moeten.  Dit zou kunnen betekenen dat een ander "
+"besturingssysteem aanneemt dat de schijf kleiner is dan hij is.  Dit kan "
+"gerepareerd worden door de reservekopie naar het einde te verplaatsen en de "
+"oude reservekopie te verwijderen.  Reparatie uitvoeren?"
+
+#: libparted/labels/gpt.c:976
+msgid ""
+"Both the primary and backup GPT tables are corrupt.  Try making a fresh "
+"table, and using Parted's rescue feature to recover partitions."
+msgstr ""
+"Zowel de primaire GPT-tabel als de reservekopie zijn beschadigd.  Maak eerst "
+"een nieuw schijflabel aan, en probeer dan met de 'red'-opdracht de "
+"kwijtgeraakte partities te herstellen."
+
+#: libparted/labels/gpt.c:987
+msgid ""
+"The backup GPT table is corrupt, but the primary appears OK, so that will be "
+"used."
+msgstr ""
+"De reservekopie van de GPT-tabel is beschadigd, maar de primaire tabel lijkt "
+"goed.  Deze laatste zal worden gebruikt."
+
+#: libparted/labels/gpt.c:999
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr ""
+"De primaire GPT-tabel is beschadigd, maar de reservekopie lijkt goed.  Deze "
+"laatste zal worden gebruikt."
+
+#: libparted/labels/gpt.c:1023
+msgid "primary partition table array CRC mismatch"
+msgstr "CRC-verschil in hoofdpartitietabel-array"
+
+#: libparted/labels/mac.c:184
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Ongeldige vingerafdruk %x voor een Mac-schijflabel."
+
+#: libparted/labels/mac.c:231
+msgid "Partition map has no partition map entry!"
+msgstr "Partitietabel bevat geen partitietabelitem!"
+
+#: libparted/labels/mac.c:279
+#, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr "%s is te klein voor een Mac-schijflabel!"
+
+#: libparted/labels/mac.c:508
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "Partitie %d heeft een ongeldige vingerafdruk %x."
+
+#: libparted/labels/mac.c:526
+#, c-format
+msgid "Partition %d has an invalid length of 0 bytes!"
+msgstr "Partitie %d heeft een ongeldige lengte van 0 bytes!"
+
+#: libparted/labels/mac.c:557
+msgid "The data region doesn't start at the start of the partition."
+msgstr "Het gegevensgebied begint niet bij het begin van de partitie."
+
+#: libparted/labels/mac.c:574
+msgid "The boot region doesn't start at the start of the partition."
+msgstr "Het opstartgebied begint niet bij het begin van de partitie."
+
+#: libparted/labels/mac.c:588
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr "Het opstartgebied beslaat niet de gehele partitie."
+
+#: libparted/labels/mac.c:599
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr "Het gegevensgebied beslaat niet de gehele partitie."
+
+#: libparted/labels/mac.c:652
+#, c-format
+msgid ""
+"Weird block size on device descriptor: %d bytes is not divisible by 512."
+msgstr ""
+"Vreemde blokgrootte in apparaatbeschrijving: %d bytes is niet deelbaar door "
+"512."
+
+#: libparted/labels/mac.c:665
+#, c-format
+msgid ""
+"The driver descriptor says the physical block size is %d bytes, but Linux "
+"says it is %d bytes."
+msgstr ""
+"De beschrijving van het stuurprogramma zegt dat de fysieke blokgrootte %d "
+"bytes is, maar Linux zegt dat het %d bytes is."
+
+#: libparted/labels/mac.c:719
+msgid "No valid partition map found."
+msgstr "Geen geldige partitietabel gevonden."
+
+#: libparted/labels/mac.c:780
+#, c-format
+msgid ""
+"Conflicting partition map entry sizes!  Entry 1 says it is %d, but entry %d "
+"says it is %d!"
+msgstr ""
+"Tegenstrijdige groottes van partitietabelitems!\n"
+"Item 1 zegt dat het %d is, maar item %d zegt dat het %d is!"
+
+#: libparted/labels/mac.c:811
+msgid "Weird!  There are 2 partitions map entries!"
+msgstr "Vreemd: twee partitietabelitems!"
+
+#: libparted/labels/mac.c:1357
+msgid ""
+"Changing the name of a root or swap partition will prevent Linux from "
+"recognising it as such."
+msgstr ""
+"Het veranderen van de naam van een root- of swappartitie zal verhinderen dat "
+"Linux deze als zodanig herkent."
+
+#: libparted/labels/mac.c:1461
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr ""
+"Kan geen nieuwe primaire partitie toevoegen: de partitietabel is te klein!"
+
+#: libparted/labels/pc98.c:331
+#, c-format
+msgid "Invalid partition table on %s."
+msgstr "Ongeldige partitietabel op %s."
+
+#: libparted/labels/pc98.c:384 libparted/labels/pc98.c:462
+#, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries.  This is still "
+"unsupported."
+msgstr ""
+"Partitie %d is niet uitgelijnd op cilindergrenzen.  Dit wordt nog niet "
+"ondersteund."
+
+#: libparted/labels/pc98.c:780
+msgid "Can't add another partition."
+msgstr "Kan niet nog een partitie toevoegen."
+
+#: libparted/labels/pt-tools.c:125
+#, c-format
+msgid ""
+"partition length of %jd sectors exceeds the %s-partition-table-imposed "
+"maximum of %jd"
+msgstr ""
+"partitielengte van %jd-sectoren overschrijdt het %s-partitietabelverplicht "
+"maximum van %jd"
+
+#: libparted/labels/pt-tools.c:138
+#, c-format
+msgid ""
+"starting sector number, %jd exceeds the %s-partition-table-imposed maximum "
+"of %jd"
+msgstr ""
+"startsectornummer, %jd overschrijdt het %s-partitietabelverplicht maximum "
+"van %jd"
+
+#: libparted/labels/rdb.c:169
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr "%s : Onjuiste controlesom op blok %llu van type %s."
+
+#: libparted/labels/rdb.c:484
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr "%s : Geen 'rdb'-blok gevonden -- zou nooit mogen gebeuren."
+
+#: libparted/labels/rdb.c:573
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr "%s : Lus gedetecteerd bij blok %d."
+
+#: libparted/labels/rdb.c:592
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr "%s : De %s-lijst lijkt verkeerd te zijn bij blok %s."
+
+#: libparted/labels/rdb.c:691
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr "%s : Invullen van slechte blokken is mislukt."
+
+#: libparted/labels/rdb.c:699
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr "%s : Invullen van partitieblokken is mislukt."
+
+#: libparted/labels/rdb.c:707
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr "%s : Invullen van bestandssysteemblokken is mislukt."
+
+#: libparted/labels/rdb.c:715
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr "%s : Invullen van opstartblokken is mislukt."
+
+#: libparted/labels/rdb.c:742
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr "Schrijven van partitieblok %d is mislukt."
+
+#: libparted/labels/rdb.c:1080
+msgid "Unable to allocate a partition number."
+msgstr "Geen partitienummer meer beschikbaar."
+
+#: libparted/labels/sun.c:161
+msgid "Corrupted Sun disk label detected."
+msgstr "Beschadigd Sun-schijflabel gevonden."
+
+#: libparted/labels/sun.c:276
+#, c-format
+msgid ""
+"The disk CHS geometry (%d,%d,%d) reported by the operating system does not "
+"match the geometry stored on the disk label (%d,%d,%d)."
+msgstr ""
+"De logische schijfopbouw (%d,%d,%d) gerapporteerd door het besturingssysteem "
+"komt niet overeen met de opbouw (%d,%d,%d) opgeslagen in het schijflabel."
+
+#: libparted/labels/sun.c:298
+#, c-format
+msgid "The disk label describes a disk bigger than %s."
+msgstr "Het schijflabel beschrijft een schijf groter dan %s."
+
+#: libparted/labels/sun.c:473
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr "De schijf heeft %d cilinders, wat groter is dan het maximum van 65536."
+
+#: libparted/labels/sun.c:812
+msgid ""
+"The Whole Disk partition is the only available one left.  Generally, it is "
+"not a good idea to overwrite this partition with a real one.  Solaris may "
+"not be able to boot without it, and SILO (the sparc boot loader) appreciates "
+"it as well."
+msgstr ""
+"De 'Hele-Schijf'-partitie is de enige die over is.  In het algemeen is het "
+"geen goed idee om deze partitie met een echte te overschrijven.  Solaris kan "
+"mogelijk niet zonder deze partitie starten, en SILO (de Sparc-opstartlader) "
+"waardeert de aanwezigheid ervan ook."
+
+#: libparted/labels/sun.c:827
+msgid "Sun disk label is full."
+msgstr "Sun-schijflabel is vol."
+
+#: libparted/labels/vtoc.c:164
+msgid "opening of device failed"
+msgstr "openen van apparaat is mislukt"
+
+#: libparted/labels/vtoc.c:168
+msgid "seeking on device failed"
+msgstr "een 'seek' op apparaat is mislukt"
+
+#: libparted/labels/vtoc.c:172
+msgid "writing to device failed"
+msgstr "schrijven naar apparaat is mislukt"
+
+#: libparted/labels/vtoc.c:176
+msgid "reading from device failed"
+msgstr "lezen van apparaat is mislukt"
+
+#: libparted/labels/vtoc.c:299 libparted/labels/vtoc.c:308
+#: libparted/labels/vtoc.c:329 libparted/labels/vtoc.c:336
+msgid "Could not read volume label."
+msgstr "Kan volumenlabel niet lezen."
+
+#: libparted/labels/vtoc.c:356 libparted/labels/vtoc.c:363
+msgid "Could not write volume label."
+msgstr "Kan volumenlabel niet schrijven."
+
+#: libparted/labels/vtoc.c:469
+msgid "Could not read VTOC labels."
+msgstr "Kan VTOC-labels niet lezen."
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr "Kan een FMT1 DSCB niet lezen."
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr "Kan een FMT4 DSCB niet lezen."
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr "Kan een FMT5 DSCB niet lezen."
+
+#: libparted/labels/vtoc.c:496
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr "Kan een FMT7 DSCB niet lezen."
+
+#: libparted/labels/vtoc.c:516
+msgid "Could not write VTOC labels."
+msgstr "Kan VTOC-labels niet schrijven."
+
+#: libparted/labels/vtoc.c:522
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr "Kan een FMT1 DSCB niet schrijven."
+
+#: libparted/labels/vtoc.c:529
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr "Kan een FMT4 DSCB niet schrijven."
+
+#: libparted/labels/vtoc.c:536
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr "Kan een FMT5 DSCB niet schrijven."
+
+#: libparted/labels/vtoc.c:543
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr "Kan een FMT7 DSCB niet schrijven."
+
+#: libparted/libparted.c:230 libparted/libparted.c:245
+msgid "Out of memory."
+msgstr "Onvoldoende geheugen beschikbaar."
+
+#: libparted/unit.c:138
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr "Kan grootte van speciale eenheid 'COMPACT' niet achterhalen."
+
+#: libparted/unit.c:384
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr "\"%s\" heeft een voor locaties ongeldige syntaxis."
+
+#: libparted/unit.c:392
+#, c-format
+msgid "The maximum head value is %d."
+msgstr "De maximum waarde voor de kop is %d."
+
+#: libparted/unit.c:399
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr "De maximum waarde voor de sector is %d."
+
+#: libparted/unit.c:411 libparted/unit.c:556
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr "Locatie %s ligt buiten het apparaat %s."
+
+#: libparted/unit.c:531
+msgid "Invalid number."
+msgstr "Ongeldig nummer."
+
+#: libparted/fs/amiga/affs.c:62 libparted/fs/amiga/apfs.c:55
+#: libparted/fs/amiga/asfs.c:69
+#, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "%s : Geheugen reserveren voor partitieblok is mislukt\n"
+
+#: libparted/fs/amiga/affs.c:77 libparted/fs/amiga/apfs.c:68
+#: libparted/fs/amiga/asfs.c:81
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr "%s : Geheugen reserveren voor blok is mislukt\n"
+
+#: libparted/fs/amiga/affs.c:82 libparted/fs/amiga/apfs.c:73
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr "%s : Kan opstartblok %llu niet lezen\n"
+
+#: libparted/fs/amiga/affs.c:98 libparted/fs/amiga/apfs.c:84
+#: libparted/fs/amiga/asfs.c:87 libparted/fs/amiga/asfs.c:101
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr "%s : Kan hoofdblok %llu niet lezen\n"
+
+#: libparted/fs/amiga/amiga.c:71
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr "%s : Geheugen reserveren voor ID-lijstelement is mislukt\n"
+
+#: libparted/fs/amiga/amiga.c:188
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr "%s : Kan blok %llu niet lezen\n"
+
+#: libparted/fs/amiga/amiga.c:201
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr "%s : Onjuiste controlesom op blok %llu van type %s\n"
+
+#: libparted/fs/amiga/amiga.c:211
+#, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s : Kan blok %d niet schrijven\n"
+
+#: libparted/fs/amiga/amiga.c:277
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr "%s : Geheugen reserveren voor schijfspecifiek 'rdb'-blok is mislukt\n"
+
+#: libparted/fs/amiga/amiga.c:288
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr "%s : Geen 'rdb'-blok gevonden -- zou nooit mogen gebeuren\n"
+
+#: libparted/fs/amiga/amiga.c:317
+#, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr "%s : Kan partitieblok %llu niet lezen\n"
+
+#: libparted/fs/fat/fat.c:174
+msgid ""
+"GNU Parted was miscompiled: the FAT boot sector should be 512 bytes.  FAT "
+"support will be disabled."
+msgstr ""
+"GNU Parted is verkeerd gecompileerd: de FAT-opstartsector zou 512 bytes "
+"moeten zijn.  Ondersteuning voor FAT wordt uitgeschakeld."
+
+#: libparted/fs/fat/bootsector.c:49 libparted/fs/fat/bootsector.c:56
+msgid "File system has an invalid signature for a FAT file system."
+msgstr "Dit bestandssysteem heeft een voor FAT ongeldige vingerafdruk."
+
+#: libparted/fs/fat/bootsector.c:64
+msgid "File system has an invalid sector size for a FAT file system."
+msgstr "Dit bestandssysteem heeft een voor FAT ongeldige sectorgrootte."
+
+#: libparted/fs/fat/bootsector.c:71
+msgid "File system has an invalid cluster size for a FAT file system."
+msgstr "Dit bestandssysteem heeft een voor FAT ongeldige clustergrootte."
+
+#: libparted/fs/fat/bootsector.c:78
+msgid ""
+"File system has an invalid number of reserved sectors for a FAT file system."
+msgstr ""
+"Dit bestandssysteem heeft een voor FAT ongeldig aantal gereserveerde "
+"sectoren."
+
+#: libparted/fs/fat/bootsector.c:85
+msgid "File system has an invalid number of FATs."
+msgstr "Dit bestandssysteem heeft een ongeldig aantal FAT's."
+
+#: libparted/fs/fat/bootsector.c:156
+#, c-format
+msgid ""
+"This file system has a logical sector size of %d.  GNU Parted is known not "
+"to work properly with sector sizes other than 512 bytes."
+msgstr ""
+"Dit bestandssysteem heeft een logische sectorgrootte van %d.  GNU Parted "
+"werkt niet goed met sectorgroottes anders dan 512 bytes."
+
+#: libparted/fs/fat/bootsector.c:181
+#, c-format
+msgid ""
+"The file system's CHS geometry is (%d, %d, %d), which is invalid.  The "
+"partition table's CHS geometry is (%d, %d, %d).  If you select Ignore, the "
+"file system's CHS geometry will be left unchanged.  If you select Fix, the "
+"file system's CHS geometry will be set to match the partition table's CHS "
+"geometry."
+msgstr ""
+"De logische schijfopbouw (%d,%d,%d) vermeld in het bestandssysteem is "
+"ongeldig.  De opbouw opgeslagen in het schijflabel is (%d,%d,%d) (cilinders,"
+"koppen,sectoren).  Als u 'Negeren' kiest, wordt de opbouw vermeld in het "
+"bestandssysteem onveranderd gelaten.  Als u 'Repareren' kiest, wordt deze "
+"opbouw gelijkgemaakt aan die in de partitietabel."
+
+#: libparted/fs/fat/bootsector.c:230
+msgid "FAT boot sector says logical sector size is 0.  This is weird. "
+msgstr ""
+"De FAT-opstartsector zegt dat de logische sectorgrootte 0 is.  Dit is heel "
+"vreemd.  "
+
+#: libparted/fs/fat/bootsector.c:236
+msgid "FAT boot sector says there are no FAT tables.  This is weird. "
+msgstr ""
+"De FAT-opstartsector zegt dat er geen FAT-tabellen zijn.  Dit is heel "
+"vreemd.  "
+
+#: libparted/fs/fat/bootsector.c:242
+msgid "FAT boot sector says clusters are 0 sectors.  This is weird. "
+msgstr ""
+"De FAT-opstartsector zegt dat een cluster nul sectoren heeft.  Dit is heel "
+"vreemd.  "
+
+#: libparted/fs/fat/bootsector.c:252
+msgid "File system is FAT12, which is unsupported."
+msgstr "Het bestandssysteem is FAT12.  Dit wordt niet ondersteund."
+
+#: libparted/fs/fat/bootsector.c:428
+#, c-format
+msgid ""
+"The information sector has the wrong signature (%x).  Select cancel for now, "
+"and send in a bug report.  If you're desperate, it's probably safe to ignore."
+msgstr ""
+"De informatiesector heeft een onjuiste vingerafdruk (%x).  Kies voorlopig "
+"'Annuleren', en stuur een foutrapportage naar <bug-parted@gnu.org>.  Indien "
+"u heel wanhopig bent: het is waarschijnlijk wel veilig om voor 'Negeren' "
+"kiezen."
+
+#: libparted/fs/linux_swap/linux_swap.c:247
+#, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "Onbekende vingerafdruk '%10s' voor oudestijl-Linux-swappartitie."
+
+#: libparted/fs/linux_swap/linux_swap.c:290
+#, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "Onbekende vingerafdruk '%10s' voor nieuwestijl-Linux-swappartitie."
+
+#: libparted/fs/linux_swap/linux_swap.c:330
+#, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Onbekende vingerafdruk '%10s' voor swsusp-Linux-swappartitie."
+
+#: libparted/fs/hfs/probe.c:50
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to "
+"%d bytes."
+msgstr ""
+"Parted kan geen HFS-bestandssystemen bewerken op schijven met een andere "
+"sectorgrootte dan %d bytes."
+
+#: parted/parted.c:123
+msgid "displays this help message"
+msgstr "deze hulptekst tonen"
+
+#: parted/parted.c:124
+msgid "lists partition layout on all block devices"
+msgstr "de partietabellen van alle apparaten tonen"
+
+#: parted/parted.c:125
+msgid "displays machine parseable output"
+msgstr "computerverwerkbare uitvoer produceren"
+
+#: parted/parted.c:126
+msgid "never prompts for user intervention"
+msgstr "nooit vragen stellen"
+
+#: parted/parted.c:127
+msgid "displays the version"
+msgstr "de programmaversie tonen"
+
+#: parted/parted.c:128
+msgid "alignment for new partitions"
+msgstr "uitlijning voor nieuwe partities"
+
+#: parted/parted.c:140
+msgid ""
+"NUMBER is the partition number used by Linux.  On MS-DOS disk labels, the "
+"primary partitions number from 1 to 4, logical partitions from 5 onwards.\n"
+msgstr ""
+"NUMMER is het door Linux gebruikte nummer van de partitie.  In MSDOS-"
+"schijflabels zijn de primaire partities genummerd van 1 tot 4, de logische "
+"partities vanaf 5 en hoger.\n"
+
+#: parted/parted.c:143
+msgid "LABEL-TYPE is one of: "
+msgstr "LABEL-TYPE is een van: "
+
+#: parted/parted.c:144
+msgid "FLAG is one of: "
+msgstr "VLAG is een van: "
+
+#: parted/parted.c:145
+msgid "UNIT is one of: "
+msgstr "EENHEID is een van: "
+
+#: parted/parted.c:146
+msgid "desired alignment: minimum or optimal"
+msgstr "gewenste uitlijning: minimaal of optimaal"
+
+#: parted/parted.c:147
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "PART-TYPE is een van: primair, logisch, uitgebreid\n"
+
+#: parted/parted.c:149
+msgid "FS-TYPE is one of: "
+msgstr "BS-SOORT is een van: "
+
+#: parted/parted.c:150
+msgid ""
+"START and END are disk locations, such as 4GB or 10%.  Negative values count "
+"from the end of the disk.  For example, -1s specifies exactly the last "
+"sector.\n"
+msgstr ""
+"BEGIN en EINDE zijn schijflocaties, zoals 4GB of 10%.  Negatieve waarden "
+"tellen vanaf het einde van de schijf.  Bijvoorbeeld, -1s geeft precies de "
+"laatste sector aan.\n"
+
+#: parted/parted.c:153
+msgid "STATE is one of: on, off\n"
+msgstr "TOESTAND is één van: aan, uit\n"
+
+#: parted/parted.c:154
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "APPARAAT is gewoonlijk /dev/hda of /dev/sda\n"
+
+#: parted/parted.c:155
+msgid "NAME is any word you want\n"
+msgstr "NAAM is elk woord dat u wilt\n"
+
+#: parted/parted.c:158
+msgid ""
+"Copyright (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"This program is free software, covered by the GNU General Public License.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+msgstr ""
+"Copyright (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"\n"
+"Dit is vrije software, vallend onder de GNU General Public License.\n"
+"\n"
+"Dit programma wordt uitgegeven in de hoop dat het nuttig is,\n"
+"maar ZONDER ENIGE GARANTIE; zelfs zonder de impliciete garantie\n"
+"van VERKOOPBAARHEID of GESCHIKTHEID VOOR EEN BEPAALD DOEL.\n"
+"Zie de GNU General Public License voor meer details.\n"
+
+#: parted/parted.c:204
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(resterende tijd: %.2d:%.2d)"
+
+#: parted/parted.c:223
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+"Partitie %s is in gebruik.  Deze dient ontkoppeld te worden alvorens hem met "
+"Parted te bewerken."
+
+#: parted/parted.c:241
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "Partitie(s) op %s zijn in gebruik."
+
+#: parted/parted.c:253
+#, c-format
+msgid ""
+"The existing disk label on %s will be destroyed and all data on this disk "
+"will be lost. Do you want to continue?"
+msgstr ""
+"Het bestaande label op %s zal worden vernietigd en alle gegevens op deze "
+"schijf zullen verloren gaan.  Wilt u doorgaan?"
+
+#: parted/parted.c:502
+msgid "New disk label type?"
+msgstr "Type van nieuw schijflabel?"
+
+#: parted/parted.c:562
+msgid "Partition type?"
+msgstr "Partitietype?"
+
+#: parted/parted.c:580 parted/parted.c:766
+msgid "Partition name?"
+msgstr "Naam van partitie?"
+
+#: parted/parted.c:588
+msgid "File system type?"
+msgstr "Bestandssysteemsoort?"
+
+#: parted/parted.c:594 parted/parted.c:1342
+msgid "Start?"
+msgstr "Begin?"
+
+#: parted/parted.c:596 parted/parted.c:1344
+msgid "End?"
+msgstr "Einde?"
+
+#: parted/parted.c:661
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s.%s"
+msgstr ""
+"U verzocht om een partitie van %s tot %s.\n"
+"De dichtstbijzijnde mogelijkheid is van %s tot %s.%s"
+
+#: parted/parted.c:666
+msgid ""
+"\n"
+"Is this still acceptable to you?"
+msgstr ""
+"\n"
+"Is dit nog acceptabel?"
+
+#: parted/parted.c:688
+msgid "The resulting partition is not properly aligned for best performance."
+msgstr ""
+"De resulterende partitie is niet correct uitgelijnd voor optimale prestaties."
+
+#: parted/parted.c:763 parted/parted.c:1383 parted/parted.c:1455
+#: parted/parted.c:1489
+msgid "Partition number?"
+msgstr "Nummer van partitie?"
+
+#: parted/parted.c:841
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d.  Each cylinder is %s.\n"
+msgstr ""
+"Logische schijfopbouw volgens BIOS: %d,%d,%d (cilinders,koppen,sectoren).  "
+"Elke cilinder is %s.\n"
+
+#: parted/parted.c:881
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr "Model: %s (%s)\n"
+
+#: parted/parted.c:883
+#, c-format
+msgid "Disk %s: %s\n"
+msgstr "Schijf %s: %s\n"
+
+#: parted/parted.c:884
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr "Sectorgrootte (logisch/fysiek): %lldB/%lldB\n"
+
+#: parted/parted.c:896
+#, c-format
+msgid "Partition Table: %s\n"
+msgstr "Partitietabel: %s\n"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Number"
+msgstr "Nummer"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Start"
+msgstr "Begin"
+
+#: parted/parted.c:1008 parted/parted.c:1011
+msgid "End"
+msgstr "Einde"
+
+#: parted/parted.c:1011
+msgid "Size"
+msgstr "Grootte"
+
+#: parted/parted.c:1015
+msgid "Type"
+msgstr "Type"
+
+#: parted/parted.c:1017
+msgid "File system"
+msgstr "Bestandssysteem"
+
+#: parted/parted.c:1020
+msgid "Name"
+msgstr "Naam"
+
+#: parted/parted.c:1022
+msgid "Flags"
+msgstr "Vlaggen"
+
+#: parted/parted.c:1079
+msgid "Free Space"
+msgstr "Vrije ruimte"
+
+#: parted/parted.c:1241
+#, c-format
+msgid ""
+"A %s %s partition was found at %s -> %s.  Do you want to add it to the "
+"partition table?"
+msgstr ""
+"Er is een %s %s-partitie gevonden van %s tot %s.  Wilt u deze aan de "
+"partitietabel toevoegen?"
+
+#: parted/parted.c:1280
+msgid "searching for file systems"
+msgstr "bezig met zoeken naar bestandssystemen"
+
+#: parted/parted.c:1408
+msgid "New device?"
+msgstr "Nieuw apparaat?"
+
+#: parted/parted.c:1453
+msgid "alignment type(min/opt)"
+msgstr "uitlijningssoort (min/opt)"
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d aligned\n"
+msgstr "%d is uitgelijnd\n"
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d not aligned\n"
+msgstr "%d is niet uitgelijnd\n"
+
+#: parted/parted.c:1491
+msgid "Flag to Invert?"
+msgstr "Om te zetten vlag?"
+
+#: parted/parted.c:1496
+msgid "New state?"
+msgstr "Nieuwe toestand?"
+
+#: parted/parted.c:1533
+msgid "Unit?"
+msgstr "Eenheid?"
+
+#: parted/parted.c:1651
+msgid "align-check"
+msgstr "uitlijncontrole"
+
+#: parted/parted.c:1654
+msgid ""
+"align-check TYPE N                        check partition N for TYPE(min|"
+"opt) alignment"
+msgstr ""
+"uitlijncontrole SOORT N     partitie N controleren op SOORT(min|opt)-"
+"uitlijning"
+
+#: parted/parted.c:1662
+msgid "help"
+msgstr "hulp"
+
+#: parted/parted.c:1665
+msgid ""
+"help [COMMAND]                           print general help, or help on "
+"COMMAND"
+msgstr ""
+"help [OPDRACHT]             enige algemene hulp geven (of hulp bij OPDRACHT)"
+
+#: parted/parted.c:1671
+msgid "mklabel"
+msgstr "maaklabel"
+
+#: parted/parted.c:1671
+msgid "mktable"
+msgstr "maaktabel"
+
+#: parted/parted.c:1674
+msgid ""
+"mklabel,mktable LABEL-TYPE               create a new disklabel (partition "
+"table)"
+msgstr ""
+"maaklabel LABEL-TYPE        nieuw schijflabel maken (met lege partitietabel)"
+
+#: parted/parted.c:1680
+msgid "mkpart"
+msgstr "maakpart"
+
+#: parted/parted.c:1683
+msgid "mkpart PART-TYPE [FS-TYPE] START END     make a partition"
+msgstr "maakpart PART-TYPE [BS-SOORT] BEGIN EINDE   een partitie aanmaken"
+
+#: parted/parted.c:1689
+msgid ""
+"'mkpart' makes a partition without creating a new file system on the "
+"partition.  FS-TYPE may be specified to set an appropriate partition ID.\n"
+msgstr ""
+"Opdracht 'maakpart' maakt een partitie aan zonder een bestandssysteem aan te "
+"maken.  BS-SOORT mag gebruikt worden om het een geschikt partitiekenmerk te "
+"geven.\n"
+
+#: parted/parted.c:1694
+msgid "name"
+msgstr "noem"
+
+#: parted/parted.c:1697
+msgid "name NUMBER NAME                         name partition NUMBER as NAME"
+msgstr "noem NUMMER NAAM            partitie NUMMER deze NAAM geven"
+
+#: parted/parted.c:1702
+msgid "print"
+msgstr "toon"
+
+#: parted/parted.c:1705
+msgid ""
+"print [devices|free|list,all|NUMBER]     display the partition table, "
+"available devices, free space, all found partitions, or a particular "
+"partition"
+msgstr ""
+"toon [devices|free|list,all|NUMMER]   de partitietabel weergeven (of "
+"beschikbare apparaten, of vrije ruimte, of tabellen van alle apparaten, of "
+"een specifieke partitie)"
+
+#: parted/parted.c:1710
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+"Zonder argumenten toont 'toon' de volledige partitietabel, maar met\n"
+"de volgende argumenten wordt meer specifieke informatie getoond:\n"
+
+#: parted/parted.c:1712
+msgid "  devices   : display all active block devices\n"
+msgstr "  devices   :  alle actieve blokapparaten tonen\n"
+
+#: parted/parted.c:1713
+msgid ""
+"  free      : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+"  free      :  informatie over vrije ruimte op huidige blokapparaat tonen\n"
+
+#: parted/parted.c:1715
+msgid ""
+"  list, all : display the partition tables of all active block devices\n"
+msgstr ""
+"  list, all :  de partitietabellen van alle actieve blokapparaten tonen\n"
+
+#: parted/parted.c:1716
+msgid ""
+"  NUMBER    : display more detailed information about this particular "
+"partition\n"
+msgstr "  NUMMER    :  meer details over partitie NUMMER tonen\n"
+
+#: parted/parted.c:1721
+msgid "quit"
+msgstr "einde"
+
+#: parted/parted.c:1724
+msgid "quit                                     exit program"
+msgstr "einde                       programma afsluiten"
+
+#: parted/parted.c:1729
+msgid "rescue"
+msgstr "red"
+
+#: parted/parted.c:1732
+msgid ""
+"rescue START END                         rescue a lost partition near START "
+"and END"
+msgstr ""
+"red BEGIN EINDE             een verloren partitie (met geschat begin en "
+"einde) proberen te herstellen"
+
+#: parted/parted.c:1738
+msgid "rm"
+msgstr "verwijder"
+
+#: parted/parted.c:1741
+msgid "rm NUMBER                                delete partition NUMBER"
+msgstr "verwijder NUMMER            partitie NUMMER verwijderen"
+
+#: parted/parted.c:1746
+msgid "select"
+msgstr "kies"
+
+#: parted/parted.c:1749
+msgid "select DEVICE                            choose the device to edit"
+msgstr "kies APPARAAT               dit APPARAAT kiezen om te bewerken"
+
+#: parted/parted.c:1754
+msgid "set"
+msgstr "zet"
+
+#: parted/parted.c:1757
+msgid ""
+"set NUMBER FLAG STATE                    change the FLAG on partition NUMBER"
+msgstr ""
+"zet NUMMER VLAG TOESTAND    op partitie NUMMER deze VLAG in TOESTAND zetten"
+
+#: parted/parted.c:1763
+msgid "toggle"
+msgstr "zetom"
+
+#: parted/parted.c:1766
+msgid ""
+"toggle [NUMBER [FLAG]]                   toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+"zetom [NUMMER [VLAG]]       op partitie NUMMER de toestand van VLAG omzetten"
+
+#: parted/parted.c:1772
+msgid "unit"
+msgstr "eenheid"
+
+#: parted/parted.c:1775
+msgid "unit UNIT                                set the default unit to UNIT"
+msgstr "eenheid EENHEID             standaard deze EENHEID gebruiken"
+
+#: parted/parted.c:1780
+msgid "version"
+msgstr "versie"
+
+#: parted/parted.c:1783
+msgid ""
+"version                                  display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+"versie                      versienummer en copyright van deze Parted tonen"
+
+#: parted/parted.c:1787
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+"'versie' toont informatie over het auteursrecht en de versie van deze GNU "
+"Parted\n"
+
+#: parted/parted.c:1855
+#, c-format
+msgid "Usage: %s [-hlmsv] [-a<align>] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+"Gebruik:  %s [-hlmsv] [-aUITLIJNING] [APPARAAT [OPDRACHT [PARAMETERS]]...]\n"
+
+#: parted/parted.c:1899
+msgid "No device found"
+msgstr "Geen apparaat gevonden"
+
+#: parted/parted.c:1936
+msgid "WARNING: You are not superuser.  Watch out for permissions."
+msgstr ""
+"WAARSCHUWING: u bent niet root.\n"
+"Houd rekening met ontbrekende toegangsrechten."
+
+#: parted/parted.c:1974
+msgid "You may need to update /etc/fstab.\n"
+msgstr "Het kan nodig zijn /etc/fstab bij te werken.\n"
+
+#: parted/ui.c:162
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr "Welkom bij GNU Parted!  Typ 'help' voor een opdrachtenoverzicht.\n"
+
+#: parted/ui.c:165
+msgid ""
+"Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]\n"
+"Apply COMMANDs with PARAMETERS to DEVICE.  If no COMMAND(s) are given, run "
+"in\n"
+"interactive mode.\n"
+msgstr ""
+"Gebruik:  parted [OPTIE]... [APPARAAT [OPDRACHT [ARGUMENTEN]...]...]\n"
+"\n"
+"Dit voert OPDRACHT met ARGUMENTEN uit op APPARAAT.\n"
+"Als er geen OPDRACHT gegeven is, wordt interactieve modus gestart.\n"
+
+#: parted/ui.c:170
+#, c-format
+msgid ""
+"\n"
+"\n"
+"You found a bug in GNU Parted! Here's what you have to do:\n"
+"\n"
+"Don't panic! The bug has most likely not affected any of your data.\n"
+"Help us to fix this bug by doing the following:\n"
+"\n"
+"Check whether the bug has already been fixed by checking\n"
+"the last version of GNU Parted that you can find at:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Please check this version prior to bug reporting.\n"
+"\n"
+"If this has not been fixed yet or if you don't know how to check,\n"
+"please visit the GNU Parted website:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"for further information.\n"
+"\n"
+"Your report should contain the version of this release (%s)\n"
+"along with the error message below, the output of\n"
+"\n"
+"\tparted DEVICE unit co print unit s print\n"
+"\n"
+"and the following history of commands you entered.\n"
+"Also include any additional information about your setup you\n"
+"consider important.\n"
+msgstr ""
+"\n"
+"\n"
+"U hebt een programmeerfout in GNU Parted gevonden.\n"
+"Help ons de fout te verbeteren door het volgende te doen:\n"
+"\n"
+"Raak niet in paniek.\n"
+"De fout heeft zeer waarschijnlijk uw gegevens intact gelaten.\n"
+"\n"
+"Controleer of de fout al is verbeterd door de nieuwste versie\n"
+"van GNU Parted te gebruiken, te vinden op:\n"
+"\n"
+"    http://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Probeer die versie alvorens een fout te rapporteren.\n"
+"\n"
+"Als de fout nog niet is verbeterd, of als u niet precies weet hoe dit\n"
+"te controleren, kijk dan voor verdere informatie op de Parted-website:\n"
+"\n"
+"    http://www.gnu.org/software/parted\n"
+"\n"
+"Uw rapportage dient het versienummer van Parted te bevatten (%s),\n"
+"de onderstaande foutmelding, de uitvoer van de volgende opdracht:\n"
+"\n"
+"    parted APPARAAT unit co print unit s print\n"
+"\n"
+"en de hierna volgende opdrachtengeschiedenis, plus verdere\n"
+"relevante informatie over de configuratie van uw systeem.\n"
+
+#: parted/ui.c:291
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+"\n"
+"Opdrachtengeschiedenis:\n"
+
+#: parted/ui.c:354
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+"\n"
+"Fout: SEGV_MAPERR (Adres niet verbonden met object)\n"
+
+#: parted/ui.c:360
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+"\n"
+"Fout: SEGV_ACCERR (Ongeldige toegangsrechten voor object)\n"
+
+#: parted/ui.c:365
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+"\n"
+"Fout: een niet-specifiek SIGSEGV-signaal werd ontvangen.\n"
+
+#: parted/ui.c:389
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+"\n"
+"Fout: FPE_INTDIV (Deling door nul)"
+
+#: parted/ui.c:394
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+"\n"
+"Fout: FPE_INTOVF (Overloop)"
+
+#: parted/ui.c:399
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+"\n"
+"Fout: FPE_FLTDIV (Deling door nul)"
+
+#: parted/ui.c:404
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+"\n"
+"Fout: FPE_FLTOVF (Overloop)"
+
+#: parted/ui.c:409
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+"\n"
+"Fout: FPE_FLTUND (Onderloop)"
+
+#: parted/ui.c:414
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+"\n"
+"Fout: FPE_FLTRES (Inexact resultaat)"
+
+#: parted/ui.c:419
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+"\n"
+"Fout: FPE_FLTINV (Ongeldige operatie)"
+
+#: parted/ui.c:424
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+"\n"
+"Fout: FPE_FLTSUB (Index buiten bereik)"
+
+#: parted/ui.c:429
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+"\n"
+"Fout: een niet-specifiek SIGFPE-signaal werd ontvangen."
+
+#: parted/ui.c:453
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+"\n"
+"Fout: ILL_ILLOPC (Ongeldige opcode)"
+
+#: parted/ui.c:458
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+"\n"
+"Fout: ILL_ILLOPN (Ongeldige parameter)"
+
+#: parted/ui.c:463
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+"\n"
+"Fout: ILL_ILLADR (Ongeldige adresseringsmodus)"
+
+#: parted/ui.c:468
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+"\n"
+"Fout: ILL_ILLTRP (Ongeldige 'trap'-instructie)"
+
+#: parted/ui.c:473
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+"\n"
+"Fout: ILL_PRVOPC (Instructie alleen toegankelijk voor geprivilegieerden)"
+
+#: parted/ui.c:478
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+"\n"
+"Fout: ILL_PRVREG (Register alleen toegankelijk voor geprivilegieerden)"
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+"\n"
+"Fout: ILL_COPROC (Coprocessorfout)"
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+"\n"
+"Fout: ILL_BADSTK (Interne stack-fout)"
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+"\n"
+"Fout: een niet-specifiek SIGILL-signaal werd ontvangen."
+
+#: parted/ui.c:891
+#, c-format
+msgid "invalid token: %s"
+msgstr "ongeldig symbool: %s"
+
+#: parted/ui.c:1048
+msgid "Expecting a partition number."
+msgstr "Een partitienummer wordt verwacht."
+
+#: parted/ui.c:1057
+msgid "Partition doesn't exist."
+msgstr "Partitie bestaat niet."
+
+#: parted/ui.c:1077
+msgid "Expecting a file system type."
+msgstr "Een bestandssysteemsoort wordt verwacht."
+
+#: parted/ui.c:1084
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Onbekende bestandssysteemsoort '%s'."
+
+#: parted/ui.c:1105
+msgid "Expecting a disk label type."
+msgstr "Een schijflabeltype wordt verwacht."
+
+#: parted/ui.c:1203
+msgid "Can't create any more partitions."
+msgstr "Kan geen nieuwe partities meer maken."
+
+#: parted/ui.c:1213
+msgid "Expecting a partition type."
+msgstr "Een partitietype wordt verwacht."
+
+#: parted/ui.c:1361
+msgid "on"
+msgstr "aan"
+
+#: parted/ui.c:1362
+msgid "off"
+msgstr "uit"
+
+#: parted/ui.c:1379
+msgid "optimal"
+msgstr "optimaal"
+
+#: parted/ui.c:1380
+msgid "minimal"
+msgstr "minimaal"
+
+#: parted/ui.c:1513
+msgid "OPTIONs:"
+msgstr "OPTIEs:"
+
+#: parted/ui.c:1518
+msgid "COMMANDs:"
+msgstr "OPDRACHTen:"
+
+#: parted/ui.c:1521
+#, c-format
+msgid ""
+"\n"
+"Report bugs to %s\n"
+msgstr ""
+"\n"
+"Rapporteer gebreken in het programma aan <%s>;\n"
+"meld fouten in de vertaling aan <vertaling@vrijschrift.org>.\n"
+
+#: parted/ui.c:1528
+#, c-format
+msgid "Using %s\n"
+msgstr "Apparaat %s wordt gebruikt.\n"
+
+#: parted/ui.c:1602
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr "Deze opdracht is zonder betekenis in niet-interactieve modus.\n"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]\n"
+#~ "  or:  %s DEVICE MINOR\n"
+#~ msgstr ""
+#~ "Gebruik:  %s [OPTIE]\n"
+#~ "     of:  %s APPARAAT SUBNUMMER\n"
+
+#~ msgid ""
+#~ "Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Ongebruikte ruimte op een FAT-partitie wissen (testgereedschap van GNU "
+#~ "Parted).\n"
+#~ "\n"
+
+#~ msgid "      --help     display this help and exit\n"
+#~ msgstr "      --help      deze hulptekst tonen en stoppen\n"
+
+#~ msgid "      --version  output version information and exit\n"
+#~ msgstr "      --version   programmaversie tonen en stoppen\n"
+
+#~ msgid "too few arguments"
+#~ msgstr "te weinig argumenten"
+
+#~ msgid "too many arguments"
+#~ msgstr "te veel argumenten"
+
+#~ msgid "invalid minor device number: %s"
+#~ msgstr "ongeldig subapparaatnummer: %s"
+
+#~ msgid "Could not detect file system."
+#~ msgstr "Kan geen bestandssysteem vinden."
+
+#~ msgid "The file system is bigger than its volume!"
+#~ msgstr "Het bestandssysteem is groter dan de partitie!"
+
+#~ msgid "Support for opening %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Ondersteuning voor het openen van %s-bestandssystemen is nog niet "
+#~ "geïmplementeerd."
+
+#~ msgid "Support for creating %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Ondersteuning voor het maken van %s-bestandssystemen is nog niet "
+#~ "geïmplementeerd."
+
+#~ msgid "Support for checking %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Ondersteuning voor het controleren van %s-bestandssystemen is nog niet "
+#~ "geïmplementeerd."
+
+#~ msgid "raw block copying"
+#~ msgstr "bezig met kopiëren van blokken"
+
+#~ msgid "growing file system"
+#~ msgstr "bezig met vergroten van bestandssysteem"
+
+#~ msgid "Can't copy onto an overlapping partition."
+#~ msgstr "Kan niet naar een overlappende partitie kopiëren."
+
+#~ msgid ""
+#~ "Direct support for copying file systems is not yet implemented for %s.  "
+#~ "However, support for resizing is implemented.  Therefore, the file system "
+#~ "can be copied if the new partition is at least as big as the old one.  "
+#~ "So, either shrink the partition you are trying to copy, or copy to a "
+#~ "bigger partition."
+#~ msgstr ""
+#~ "Het kopiëren en tegelijkertijd verkleinen van een %s-bestandssysteem is "
+#~ "nog niet geïmplementeerd.  Verklein dus eerst de bronpartitie alvorens "
+#~ "deze naar de gekozen partitie te kopiëren, of kies een grotere "
+#~ "doelpartitie."
+
+#~ msgid "Support for copying %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Ondersteuning voor het kopiëren van %s-bestandssystemen is nog niet "
+#~ "geïmplementeerd."
+
+#~ msgid "Support for resizing %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Ondersteuning voor het van grootte veranderen van %s-bestandssystemen is "
+#~ "nog niet geïmplementeerd."
+
+#~ msgid "creating"
+#~ msgstr "bezig met aanmaken"
+
+#~ msgid "The file system is in an invalid state.  Perhaps it is mounted?"
+#~ msgstr ""
+#~ "Het bestandssysteem is in een ongeldige toestand.\n"
+#~ "Misschien is het aangekoppeld?"
+
+#~ msgid "The file system is in old (unresizeable) format."
+#~ msgstr ""
+#~ "Het bestandssysteem is in een oude indeling;\n"
+#~ "de grootte kan niet veranderd worden."
+
+#~ msgid "Invalid free blocks count.  Run reiserfsck --check first."
+#~ msgstr ""
+#~ "Ongeldig aantal vrije blokken.  Voer eerst 'reiserfsck --check' uit."
+
+#~ msgid "checking"
+#~ msgstr "bezig met controleren"
+
+#~ msgid "Reiserfs tree seems to be corrupted.  Run reiserfsck --check first."
+#~ msgstr ""
+#~ "Het bestandssysteem lijkt beschadigd.  Voer eerst 'reiserfsck --check' "
+#~ "uit."
+
+#~ msgid ""
+#~ "The reiserfs file system passed a basic check.  For a more comprehensive "
+#~ "check, run reiserfsck --check."
+#~ msgstr ""
+#~ "Het reiserfs-bestandssysteem heeft deze basistest goed doorstaan.\n"
+#~ "Voor een uitgebreidere test kunt u 'reiserfsck --check' gebruiken."
+
+#~ msgid "Sorry, can't move the start of reiserfs partitions yet."
+#~ msgstr ""
+#~ "Sorry, het begin van een reiserfs-partitie kan nog niet verplaatst worden."
+
+#~ msgid "Couldn't reopen device abstraction layer for read/write."
+#~ msgstr "Kan apparaat niet heropenen voor lezen-en-schrijven."
+
+#~ msgid "shrinking"
+#~ msgstr "bezig met verkleinen"
+
+#~ msgid "expanding"
+#~ msgstr "bezig met vergroten"
+
+#~ msgid "Couldn't create reiserfs device abstraction handler."
+#~ msgstr "Kan apparaat-abstractie niet aanmaken."
+
+#~ msgid "Device is too small for %lu blocks."
+#~ msgstr "Het apparaat is te klein voor %lu blokken."
+
+#~ msgid "copying"
+#~ msgstr "bezig met kopiëren"
+
+#~ msgid "Couldn't resolve symbol %s.  Error: %s."
+#~ msgstr "Kan symbool %s niet herleiden.  Fout: %s."
+
+#~ msgid "GNU Parted found an invalid libreiserfs library."
+#~ msgstr "GNU Parted heeft een ongeldige libreiserfs gevonden."
+
+#~ msgid ""
+#~ "GNU Parted has detected libreiserfs interface version mismatch.  Found %d-"
+#~ "%d, required %d. ReiserFS support will be disabled."
+#~ msgstr ""
+#~ "GNU Parted heeft een niet-passende versie van libreiserfs gevonden.\n"
+#~ "Gevonden is versie %d-%d, terwijl versie %d nodig is.\n"
+#~ "Ondersteuning voor reiserfs wordt uitgeschakeld."
+
+#~ msgid "Inconsistent group descriptors!"
+#~ msgstr "Inconsistente groepsbeschrijvers!"
+
+#~ msgid "File system full!"
+#~ msgstr "Bestandssysteem is vol!"
+
+#~ msgid "Invalid superblock.  Are you sure this is an ext2 file system?"
+#~ msgstr ""
+#~ "Ongeldig superblok.  Weet u zeker dat dit een ext2-bestandssysteem is?"
+
+#~ msgid "File system has errors!  You should run e2fsck."
+#~ msgstr "Het bestandssysteem bevat fouten!  Voer eerst 'e2fsck' uit."
+
+#~ msgid ""
+#~ "File system was not cleanly unmounted!  You should run e2fsck.  Modifying "
+#~ "an unclean file system could cause severe corruption."
+#~ msgstr ""
+#~ "Het bestandssysteem werd niet correct ontkoppeld!  Voer eerst 'e2fsck' "
+#~ "uit.  Het veranderen van een ongeschoond bestandssysteem kan tot zware "
+#~ "beschadigingen leiden."
+
+#~ msgid ""
+#~ "File system has an incompatible feature enabled.  Compatible features are "
+#~ "has_journal, dir_index, filetype, sparse_super and large_file.  Use "
+#~ "tune2fs or debugfs to remove features."
+#~ msgstr ""
+#~ "Bestandssysteem heeft een niet-compatibele functie ingeschakeld.  "
+#~ "Compatibele functies zijn 'has_journal', 'dir_index', 'filetype', "
+#~ "'sparse_super' en 'large_file'.  Gebruik 'tune2fs' of 'debugfs' om "
+#~ "functies te verwijderen."
+
+#~ msgid "Error allocating buffer cache."
+#~ msgstr "Fout tijdens reserveren van buffercache."
+
+#~ msgid ""
+#~ "Found an inode with a incorrect link count.  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "Er is een inode gevonden met een onjuist aantal verwijzingen!  U kunt "
+#~ "beter eerst 'e2fsck' uitvoeren."
+
+#~ msgid "Not enough free inodes!"
+#~ msgstr "Niet genoeg beschikbare inodes!"
+
+#~ msgid "File system is too full to remove a group!"
+#~ msgstr "Het bestandssysteem is te vol om een groep te verwijderen!"
+
+#~ msgid "File system has too many allocated inodes to remove a group!"
+#~ msgstr ""
+#~ "Het bestandssysteem heeft te veel gebruikte inodes om een groep te "
+#~ "verwijderen!"
+
+#~ msgid "adding groups"
+#~ msgstr "bezig met toevoegen van groepen"
+
+#~ msgid "Your file system is too full to resize it to %i blocks.  Sorry."
+#~ msgstr ""
+#~ "Uw bestandssysteem is te vol om het naar %i blokken te verkleinen.  Sorry."
+
+#~ msgid ""
+#~ "Your file system has too many occupied inodes to resize it to %i blocks.  "
+#~ "Sorry."
+#~ msgstr ""
+#~ "Uw bestandssysteem heeft te veel bezette inodes om het naar %i blokken te "
+#~ "verkleinen.  Sorry."
+
+#~ msgid "File system was not cleanly unmounted!  You should run e2fsck."
+#~ msgstr ""
+#~ "Het bestandssysteem werd niet correct ontkoppeld!  Voer eerst 'e2fsck' "
+#~ "uit."
+
+#~ msgid ""
+#~ "The file system has the 'dir_index' feature enabled.  Parted can only "
+#~ "resize the file system if it disables this feature.  You can enable it "
+#~ "later by running 'tune2fs -O dir_index DEVICE' and then 'e2fsck -fD "
+#~ "DEVICE'."
+#~ msgstr ""
+#~ "Het bestandssysteem gebruikt de 'dir_index'-functie.  Parted kan het "
+#~ "bestandssysteem alleen van grootte veranderen als het deze functie "
+#~ "uitschakelt.  U kunt deze functie later weer aanzetten door middel van "
+#~ "'tune2fs -O dir_index APPARAAT' en dan 'e2fsck -fD APPARAAT'."
+
+#~ msgid ""
+#~ "A resize operation on this file system will use EXPERIMENTAL code\n"
+#~ "that MAY CORRUPT it (although no one has reported any such damage yet).\n"
+#~ "You should at least backup your data first, and run 'e2fsck -f' "
+#~ "afterwards."
+#~ msgstr ""
+#~ "Het van grootte veranderen van dit bestandssysteem zal EXPERIMENTELE\n"
+#~ "programmacode gebruiken die het bestandssysteem ZOU KUNNEN BESCHADIGEN\n"
+#~ "(maar dit, voor zover bekend, nog nooit gedaan heeft).  Maak vooraf een\n"
+#~ "reservekopie van uw gegevens, en voer na de verandering 'e2fsck -f' uit."
+
+#~ msgid "Cross-linked blocks found!  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "Kruiselings gekoppelde blokken gevonden!  U kunt beter eerst 'e2fsck' "
+#~ "uitvoeren."
+
+#~ msgid "Block %i has no reference?  Weird."
+#~ msgstr "Aan blok %i wordt niet gerefereerd!  Merkwaardig."
+
+#~ msgid "Block %i shouldn't have been marked (%d, %d)!"
+#~ msgstr "Blok %i zou niet als (%d, %d) gemarkeerd moeten zijn!"
+
+#~ msgid ""
+#~ "The ext2 file system passed a basic check.  For a more comprehensive "
+#~ "check, use the e2fsck program."
+#~ msgstr ""
+#~ "Het ext2-bestandssysteem heeft deze basistest goed doorstaan.\n"
+#~ "Voor een uitgebreidere test kunt u het programma 'e2fsck' gebruiken."
+
+#~ msgid "Sorry, can't move the start of ext2 partitions yet!"
+#~ msgstr ""
+#~ "Sorry, het begin van een ext2-partitie kan nog niet verplaatst worden."
+
+#~ msgid "Couldn't flush buffer cache!"
+#~ msgstr "Kan de buffercache niet leegmaken!"
+
+#~ msgid "writing per-group metadata"
+#~ msgstr "bezig met schrijven van groepsmetagegevens"
+
+#~ msgid "File system too small for ext2."
+#~ msgstr "Het bestandssysteem is te klein voor ext2."
+
+#~ msgid ""
+#~ "You need %s of free disk space to shrink this partition to this size.  "
+#~ "Currently, only %s is free."
+#~ msgstr ""
+#~ "U hebt minstens %s vrije schijfruimte nodig om deze partitie naar die "
+#~ "grootte te kunnen verkleinen (u hebt nu slechts %s beschikbaar)."
+
+#~ msgid ""
+#~ "Cluster start delta = %d, which is not a multiple of the cluster size %d."
+#~ msgstr ""
+#~ "Clusterbegin-delta = %d, en dat is geen veelvoud van de clustergrootte %d."
+
+#~ msgid "Partition too big/small for a %s file system."
+#~ msgstr "Partitie is te klein of te groot voor een %s-bestandssysteem."
+
+#~ msgid ""
+#~ "The FATs don't match.  If you don't know what this means, then select "
+#~ "cancel, run scandisk on the file system, and then come back."
+#~ msgstr ""
+#~ "De FAT's komen niet overeen.  Als u niet weet wat dit betekent, selecteer "
+#~ "dan 'Annuleren', voer 'scandisk' uit op het bestandssysteem, en kom dan "
+#~ "weer terug."
+
+#~ msgid "There are no possible configurations for this FAT type."
+#~ msgstr "Er zijn geen mogelijke configuraties voor dit type FAT."
+
+#~ msgid ""
+#~ "File system doesn't have expected sizes for Windows to like it.  Cluster "
+#~ "size is %dk (%dk expected); number of clusters is %d (%d expected); size "
+#~ "of FATs is %d sectors (%d expected)."
+#~ msgstr ""
+#~ "Het bestandssysteem heeft andere groottes dan Windows graag wil.  De "
+#~ "clustergrootte is %dk (%dk verwacht); het aantal clusters is %d (%d "
+#~ "verwacht); de grootte van de FAT's is %d sectoren (%d verwacht)."
+
+#~ msgid ""
+#~ "File system is reporting the free space as %d clusters, not %d clusters."
+#~ msgstr ""
+#~ "Het bestandssysteem geeft de beschikbare ruimte aan als %d clusters, niet "
+#~ "%d clusters."
+
+#~ msgid ""
+#~ "There's not enough room in the root directory for all of the files.  "
+#~ "Either cancel, or ignore to lose the files."
+#~ msgstr ""
+#~ "Er is niet genoeg ruimte in de hoofdmap voor alle bestanden.  Kies "
+#~ "'Negeren' om de overtallige bestanden te verwijderen."
+
+#~ msgid "Error writing to the root directory."
+#~ msgstr "Fout tijdens schrijven naar de hoofdmap."
+
+#~ msgid ""
+#~ "If you leave your file system as FAT16, then you will have no problems."
+#~ msgstr ""
+#~ "Als u het bestandssysteem als FAT16 laat, zult u geen problemen hebben."
+
+#~ msgid ""
+#~ "If you convert to FAT16, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual)."
+#~ msgstr ""
+#~ "Als u converteert naar FAT16, en MS-Windows is op deze partitie "
+#~ "geïnstalleerd, dan dient u de MS-Windows-opstartlader opnieuw te "
+#~ "installeren.  Als u dit wilt doen, raadpleeg dan de Parted-documentatie "
+#~ "(of de documentatie van uw distributie)."
+
+#~ msgid ""
+#~ "If you leave your file system as FAT32, then you will not introduce any "
+#~ "new problems."
+#~ msgstr ""
+#~ "Als u het bestandssysteem als FAT32 laat, zult u geen nieuwe problemen "
+#~ "introduceren."
+
+#~ msgid ""
+#~ "If you convert to FAT32, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual).  Also, converting to FAT32 will make the file system unreadable "
+#~ "by MS DOS, MS Windows 95a, and MS Windows NT."
+#~ msgstr ""
+#~ "Als u converteert naar FAT32, en MS-Windows is op deze partitie "
+#~ "geïnstalleerd, dan dient u de MS-Windows-opstartlader opnieuw te "
+#~ "installeren.  Als u dit wilt doen, raadpleeg dan de Parted-documentatie "
+#~ "(of de documentatie van uw distributie).  Maar bedenk: converteren naar "
+#~ "FAT32 maakt het bestandssysteem onleesbaar voor MSDOS, Windows 95a en "
+#~ "Windows NT."
+
+#~ msgid "%s  %s  %s"
+#~ msgstr "%s  %s  %s"
+
+#~ msgid "Would you like to use FAT32?"
+#~ msgstr "Wilt u FAT32 gebruiken?"
+
+#~ msgid "%s  %s"
+#~ msgstr "%s  %s"
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT16."
+#~ msgstr ""
+#~ "Het bestandssysteem kan alleen naar deze grootte veranderd worden door te "
+#~ "converteren naar FAT16."
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT32."
+#~ msgstr ""
+#~ "Het bestandssysteem kan alleen naar deze grootte veranderd worden door te "
+#~ "converteren naar FAT32."
+
+#~ msgid ""
+#~ "GNU Parted cannot resize this partition to this size.  We're working on "
+#~ "it!"
+#~ msgstr ""
+#~ "GNU Parted kan de partitiegrootte niet naar deze afmetingen veranderen.  "
+#~ "We zijn er mee bezig!"
+
+#~ msgid "Bad directory entry for %s: first cluster is the end of file marker."
+#~ msgstr ""
+#~ "Foutief mapitem voor %s: de eerste cluster is een bestandseinde-markering."
+
+#~ msgid ""
+#~ "Bad FAT: unterminated chain for %s.  You should run dosfsck or scandisk."
+#~ msgstr ""
+#~ "Onjuiste FAT: onbeëindigde keten voor %s.  Voer eerst 'dosfsck' of "
+#~ "'scandisk' uit."
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d outside file system in chain for %s.  You should run "
+#~ "dosfsck or scandisk."
+#~ msgstr ""
+#~ "Onjuiste FAT: cluster %d in de keten voor %s ligt buiten het "
+#~ "bestandssysteem.  Voer eerst 'dosfsck' of 'scandisk' uit."
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d is cross-linked for %s.  You should run dosfsck or "
+#~ "scandisk."
+#~ msgstr ""
+#~ "Onjuiste FAT: cluster %d is voor %s kruiselings gekoppeld.  Voer eerst "
+#~ "'dosfsck' of 'scandisk' uit."
+
+#~ msgid "%s is %dk, but it has %d clusters (%dk)."
+#~ msgstr "%s is %dk, maar heeft %d clusters (%dk)."
+
+#~ msgid ""
+#~ "The file %s is marked as a system file.  This means moving it could cause "
+#~ "some programs to stop working."
+#~ msgstr ""
+#~ "Het bestand %s is gemarkeerd als een systeembestand.  Als het verplaatst "
+#~ "wordt, zullen sommige programma's misschien niet meer werken."
+
+#~ msgid ""
+#~ "FAT %d media %x doesn't match the boot sector's media %x.  You should "
+#~ "probably run scandisk."
+#~ msgstr ""
+#~ "FAT %d medium %x komt niet overeen met medium %x uit de opstartsector.  U "
+#~ "kunt beter eerst 'scandisk' uitvoeren."
+
+#~ msgid "fat_table_set: cluster %ld outside file system"
+#~ msgstr "fat_table_set(): cluster %ld ligt buiten het bestandssysteem"
+
+#~ msgid "fat_table_get: cluster %ld outside file system"
+#~ msgstr "fat_table_get(): cluster %ld ligt buiten het bestandssysteem"
+
+#~ msgid "fat_table_alloc_cluster: no free clusters"
+#~ msgstr "fat_table_alloc_cluster(): geen beschikbare clusters"
+
+#~ msgid "Too many bad pages."
+#~ msgstr "Te veel slechte pagina's."
+
+#~ msgid "The file system contains errors."
+#~ msgstr "Het bestandssysteem bevat fouten."
+
+#~ msgid "Bad blocks could not be read."
+#~ msgstr "Slechte blokken konden niet gelezen worden."
+
+#~ msgid ""
+#~ "Trying to register an extent starting at block 0x%X, but another one "
+#~ "already exists at this position.  You should check the file system!"
+#~ msgstr ""
+#~ "Poging tot het registreren van een 'extent' beginnend bij blok 0x%X, maar "
+#~ "er bestaat al een 'extent' op die positie.  Voer een "
+#~ "bestandssysteemcontrole uit!"
+
+#~ msgid ""
+#~ "Trying to move an extent from block Ox%X to block Ox%X, but another one "
+#~ "already exists at this position.  This should not happen!"
+#~ msgstr ""
+#~ "Poging tot het verplaatsen van een 'extent' van blok 0x%X naar blok Ox%X, "
+#~ "maar er bestaat al een 'extent' op die positie.  Dit hoort nooit te "
+#~ "gebeuren!"
+
+#~ msgid "Could not update the extent cache for HFS file with CNID %X."
+#~ msgstr "Kan 'extent'-cache voor HFS-bestand met CNID %X niet bijwerken."
+
+#~ msgid "Trying to read HFS file with CNID %X behind EOF."
+#~ msgstr ""
+#~ "Poging tot lezen van HFS-bestand met CNID %X voorbij einde-van-bestand."
+
+#~ msgid "Could not find sector %lli of HFS file with CNID %X."
+#~ msgstr "Kan sector %lli van HFS-bestand met CNID %X niet vinden."
+
+#~ msgid "Trying to write HFS file with CNID %X behind EOF."
+#~ msgstr ""
+#~ "Poging tot schrijven van HFS-bestand met CNID %X voorbij einde-van-"
+#~ "bestand."
+
+#~ msgid "Could not update the extent cache for HFS+ file with CNID %X."
+#~ msgstr "Kan 'extent'-cache voor HFS+-bestand met CNID %X niet bijwerken."
+
+#~ msgid "Trying to read HFS+ file with CNID %X behind EOF."
+#~ msgstr ""
+#~ "Poging tot lezen van HFS+-bestand met CNID %X voorbij einde-van-bestand."
+
+#~ msgid "Could not find sector %lli of HFS+ file with CNID %X."
+#~ msgstr "Kan sector %lli van HFS+-bestand met CNID %X niet vinden."
+
+#~ msgid "Trying to write HFS+ file with CNID %X behind EOF."
+#~ msgstr ""
+#~ "Poging tot schrijven van HFS+-bestand met CNID %X voorbij einde-van-"
+#~ "bestand."
+
+#~ msgid "Sorry, HFS cannot be resized that way yet."
+#~ msgstr ""
+#~ "Sorry, HFS kan nog niet op deze manier van grootte veranderd worden."
+
+#~ msgid "Data relocation has failed."
+#~ msgstr "De gegevensverplaatsing is mislukt."
+
+#~ msgid "Data relocation left some data in the end of the volume."
+#~ msgstr ""
+#~ "De gegevensverplaatsing heeft enkele gegevens aan het einde van het "
+#~ "volumen achtergelaten."
+
+#~ msgid "writing HFS Master Directory Block"
+#~ msgstr "bezig met schrijven van HFS-hoofdmapblok"
+
+#~ msgid "No valid HFS[+X] signature has been found while opening."
+#~ msgstr "Geen geldige HFS[+X]-vingerafdruk gevonden tijdens openen."
+
+#~ msgid "Version %d of HFS+ isn't supported."
+#~ msgstr "Versie %d van HFS+ wordt niet ondersteund."
+
+#~ msgid "Version %d of HFSX isn't supported."
+#~ msgstr "Versie %d van HFSX wordt niet ondersteund."
+
+#~ msgid "Data relocation left some data at the end of the volume."
+#~ msgstr ""
+#~ "De gegevensverplaatsing heeft enkele gegevens aan het einde van het "
+#~ "volumen achtergelaten."
+
+#~ msgid "Error while writing the allocation file."
+#~ msgstr "Fout tijdens schrijven van het reserveringsbestand."
+
+#~ msgid "Error while writing the compatibility part of the allocation file."
+#~ msgstr ""
+#~ "Fout tijdens schrijven van het compatibiliteitsdeel van het "
+#~ "reserveringsbestand."
+
+#~ msgid "writing HFS+ Volume Header"
+#~ msgstr "bezig met schrijven van HFS+-volumenkop"
+
+#~ msgid "An error occurred while looking for the mandatory bad blocks file."
+#~ msgstr "Fout tijdens zoeken naar het vereiste slechte-blokkenbestand."
+
+#~ msgid ""
+#~ "It seems there is an error in the HFS wrapper: the bad blocks file "
+#~ "doesn't contain the embedded HFS+ volume."
+#~ msgstr ""
+#~ "Er schijnt een fout in de HFS-wikkel te zitten: het slechte-"
+#~ "blokkenbestand bevat geen ingebed HFS+-volumen."
+
+#~ msgid "Sorry, HFS+ cannot be resized that way yet."
+#~ msgstr ""
+#~ "Sorry, HFS+ kan nog niet op deze manier van grootte veranderd worden."
+
+#~ msgid "shrinking embedded HFS+ volume"
+#~ msgstr "bezig met verkleinen van een ingebed HFS+-volumen"
+
+#~ msgid "Resizing the HFS+ volume has failed."
+#~ msgstr "Het van grootte veranderen van het HFS+-volumen is mislukt."
+
+#~ msgid "shrinking HFS wrapper"
+#~ msgstr "bezig met verkleinen van HFS-wikkel"
+
+#~ msgid "Updating the HFS wrapper has failed."
+#~ msgstr "Het bijwerken van de HFS-wikkel is mislukt."
+
+#~ msgid ""
+#~ "This is not a real %s check.  This is going to extract special low level "
+#~ "files for debugging purposes."
+#~ msgstr ""
+#~ "Dit is geen echte %s-controle.  Het extraheert slechts enkele speciale "
+#~ "bestanden om bij de foutopsporing te helpen."
+
+#~ msgid "Bad block list header checksum."
+#~ msgstr "Onjuiste controlesom van kop van blokkenlijst."
+
+#~ msgid ""
+#~ "Invalid size of a transaction block while replaying the journal (%i "
+#~ "bytes)."
+#~ msgstr ""
+#~ "Ongeldige grootte (%i bytes) van een transactieblok tijdens herafspelen "
+#~ "van het journal."
+
+#~ msgid ""
+#~ "Journal stored outside of the volume are not supported.  Try to "
+#~ "desactivate the journal and run Parted again."
+#~ msgstr ""
+#~ "Een journal opgeslagen buiten het volumen wordt niet ondersteund.  "
+#~ "Probeer het journal uit te schakelen en voer dan Parted opnieuw uit."
+
+#~ msgid "Journal offset or size is not multiple of the sector size."
+#~ msgstr ""
+#~ "Grootte of offset van het journal is geen veelvoud van de sectorgrootte."
+
+#~ msgid "Incorrect magic values in the journal header."
+#~ msgstr "Onjuiste magische getallen in de journalkop."
+
+#~ msgid "Journal size mismatch between journal info block and journal header."
+#~ msgstr ""
+#~ "Journalgrootte is verschillend aangegeven in journal-infoblok en "
+#~ "journalkop."
+
+#~ msgid "Some header fields are not multiple of the sector size."
+#~ msgstr ""
+#~ "Sommige velden in de journalkop zijn geen veelvoud van de sectorgrootte."
+
+#~ msgid ""
+#~ "The sector size stored in the journal is not 512 bytes.  Parted only "
+#~ "supports 512 bytes length sectors."
+#~ msgstr ""
+#~ "De sectorgrootte is volgens het journal niet 512 bytes.  Parted "
+#~ "ondersteunt alleen sectoren van 512 bytes."
+
+#~ msgid "Bad journal checksum."
+#~ msgstr "Onjuiste controlesom van journal."
+
+#~ msgid ""
+#~ "The journal is not empty.  Parted must replay the transactions before "
+#~ "opening the file system.  This will modify the file system."
+#~ msgstr ""
+#~ "Het journal is niet leeg.  Parted moet de transacties herafspelen "
+#~ "alvorens het bestandssysteem te openen.  Dit zal het bestandssysteem "
+#~ "veranderen."
+
+#~ msgid ""
+#~ "The volume header or the master directory block has changed while "
+#~ "replaying the journal.  You should restart Parted."
+#~ msgstr ""
+#~ "De volumenkop of het hoofdmappenblok is veranderd tijdens het herafspelen "
+#~ "van het journal.  U dient Parted te herstarten."
+
+#~ msgid "An extent has not been relocated."
+#~ msgstr "Een 'extent' is niet verplaatst."
+
+#~ msgid ""
+#~ "A reference to an extent comes from a place it should not.  You should "
+#~ "check the file system!"
+#~ msgstr ""
+#~ "Er wordt gerefereerd aan een 'extent' vanuit een onmogelijke plaats.  "
+#~ "Voer een bestandssyteemcontrole uit!"
+
+#~ msgid "This HFS volume has no catalog file.  This is very unusual!"
+#~ msgstr ""
+#~ "Dit HFS-volumen heeft geen catalogusbestand.  Dit is zeer ongebruikelijk!"
+
+#~ msgid ""
+#~ "This HFS volume has no extents overflow file.  This is quite unusual!"
+#~ msgstr ""
+#~ "Dit HFS-volumen heeft geen 'extents-overflow'-bestand.  Dit is zeer "
+#~ "ongebruikelijk!"
+
+#~ msgid ""
+#~ "The extents overflow file should not contain its own extents!  You should "
+#~ "check the file system."
+#~ msgstr ""
+#~ "Het 'extents-overflow'-bestand hoort niet zijn eigen 'extents' te "
+#~ "bevatten.  Voer een bestandssyteemcontrole uit!"
+
+#~ msgid "Could not cache the file system in memory."
+#~ msgstr "Kan het bestandssysteem niet tijdelijk opslaan in het geheugen."
+
+#~ msgid "Bad blocks list could not be loaded."
+#~ msgstr "De lijst met slechte blokken kan niet geladen worden."
+
+#~ msgid "An error occurred during extent relocation."
+#~ msgstr "Er is een fout opgetreden tijdens het verplaatsen van een 'extent'."
+
+#~ msgid "This HFS+ volume has no catalog file.  This is very unusual!"
+#~ msgstr ""
+#~ "Dit HFS+-volumen heeft geen catalogusbestand.  Dit is zeer ongebruikelijk!"
+
+#~ msgid ""
+#~ "This HFS+ volume has no extents overflow file.  This is quite unusual!"
+#~ msgstr ""
+#~ "Dit HFS+-volumen heeft geen 'extents-overflow'-bestand.  Dit is zeer "
+#~ "ongebruikelijk!"
+
+#~ msgid "The partition must have one of the following FS-TYPEs: "
+#~ msgstr "De partitie dient een van de volgende BS-SOORTen te hebben: "
+
+#~ msgid ""
+#~ "The existing file system will be destroyed and all data on the partition "
+#~ "will be lost. Do you want to continue?"
+#~ msgstr ""
+#~ "Het bestaande bestandssysteem zal worden vernietigd en alle gegevens op "
+#~ "de partitie zullen verloren gaan.  Wilt u doorgaan?"
+
+#~ msgid ""
+#~ "WARNING: you are attempting to use %s to operate on (%s) a file system.\n"
+#~ "%s's file system manipulation code is not as robust as what you'll find "
+#~ "in\n"
+#~ "dedicated, file-system-specific packages like e2fsprogs.  We recommend\n"
+#~ "you use %s only to manipulate partition tables, whenever possible.\n"
+#~ "Support for performing most operations on most types of file systems\n"
+#~ "will be removed in an upcoming release.\n"
+#~ msgstr ""
+#~ "WAARSCHUWING: u probeert %s te gebruiken om een bestandssysteem (%s)\n"
+#~ "te bewerken.  De bestandssysteembewerkingsroutines van %s zijn niet zo "
+#~ "robuust\n"
+#~ "als in gespecialiseerde bestandssysteemspecifieke pakketten zoals "
+#~ "esfsprogs.\n"
+#~ "We bevelen aan om %s zo mogelijk alleen te gebruiken om partitietabellen\n"
+#~ "te bewerken.  Ondersteuning van de meeste bewerkingen op de meeste\n"
+#~ "bestandssysteemsoorten zal in de komende versies verwijderd worden.\n"
+
+#~ msgid "Source device?"
+#~ msgstr "Bronapparaat?"
+
+#~ msgid "Source partition number?"
+#~ msgstr "Nummer van bronpartitie?"
+
+#~ msgid "Can't copy an extended partition."
+#~ msgstr "Kan een uitgebreide partitie niet kopiëren."
+
+#~ msgid "Destination partition number?"
+#~ msgstr "Nummer van doelpartitie?"
+
+#~ msgid ""
+#~ "An extended partition cannot hold a file system.  Did you want mkpart?"
+#~ msgstr ""
+#~ "Een uitgebreide partitie kan geen bestandssysteem bevatten.  Bedoelde u "
+#~ "'maakpart'?"
+
+#~ msgid "Can't move an extended partition."
+#~ msgstr "Kan een uitgebreide partitie niet verplaatsen."
+
+#~ msgid "Can't move a partition onto itself.  Try using resize, perhaps?"
+#~ msgstr ""
+#~ "Kan een partitie niet naar zichzelf verplaatsen.  Bedoelde u 'grootte'?"
+
+#~ msgid "Minor: %d\n"
+#~ msgstr "Nummer: %d\n"
+
+#~ msgid "Flags: %s\n"
+#~ msgstr "Vlaggen: %s\n"
+
+#~ msgid "File System: %s\n"
+#~ msgstr "Bestandssysteem: %s\n"
+
+#~ msgid "Size:         "
+#~ msgstr "Grootte:         "
+
+#~ msgid "Minimum size: "
+#~ msgstr "Minimum grootte: "
+
+#~ msgid "Maximum size: "
+#~ msgstr "Maximum grootte: "
+
+#~ msgid "check"
+#~ msgstr "controleer"
+
+#~ msgid ""
+#~ "check NUMBER                             do a simple check on the file "
+#~ "system"
+#~ msgstr ""
+#~ "controleer NUMMER           een simpele controle uitvoeren van "
+#~ "bestandssysteem op partitie NUMMER"
+
+#~ msgid "cp"
+#~ msgstr "kopieer"
+
+#~ msgid ""
+#~ "cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   copy file system to another "
+#~ "partition"
+#~ msgstr ""
+#~ "kopieer [APPARAAT] VAN-NUMMER NAAR-NUMMER   een bestandssysteem naar een "
+#~ "andere partitie kopiëren"
+
+#~ msgid "mkfs"
+#~ msgstr "maakbs"
+
+#~ msgid ""
+#~ "mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on "
+#~ "partition NUMBER"
+#~ msgstr ""
+#~ "maakbs NUMMER BS-SOORT      op partitie NUMMER een bestandssysteem van BS-"
+#~ "SOORT aanmaken"
+
+#~ msgid "mkpartfs"
+#~ msgstr "maakpartbs"
+
+#~ msgid ""
+#~ "mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file "
+#~ "system"
+#~ msgstr ""
+#~ "maakpartbs PART-TYPE BS-SOORT BEGIN EINDE   een partitie met een "
+#~ "bestandssysteem aanmaken"
+
+#~ msgid "move"
+#~ msgstr "schuif"
+
+#~ msgid "move NUMBER START END                    move partition NUMBER"
+#~ msgstr ""
+#~ "schuif NUMMER BEGIN EINDE   partitie verplaatsen naar nieuw BEGIN en EINDE"
+
+#~ msgid "resize"
+#~ msgstr "grootte"
+
+#~ msgid ""
+#~ "resize NUMBER START END                  resize partition NUMBER and its "
+#~ "file system"
+#~ msgstr ""
+#~ "grootte NUMMER BEGIN EINDE  de grootte van het bestandssysteem op "
+#~ "partitie NUMMER veranderen"
+
+#~ msgid "This is not an ECKD disk!  This disk type is not supported!"
+#~ msgstr "Dit is geen ECKD-schijf!  Dit soort schijf wordt niet ondersteund!"
+
+#~ msgid ""
+#~ "Device %s has a logical sector size of %lld.  Not all parts of GNU Parted "
+#~ "support this at the moment, and the working code is HIGHLY EXPERIMENTAL.\n"
+#~ msgstr ""
+#~ "Apparaat %s heeft een logische sectorgrootte van %lld.\n"
+#~ "Niet alle onderdelen van GNU Parted ondersteunen dit momenteel,\n"
+#~ "en de wel aanwezige ondersteuning is ZEER EXPERIMENTEEL.\n"
+
+#~ msgid ""
+#~ "WARNING: the kernel failed to re-read the partition table on %s (%s).  As "
+#~ "a result, it may not reflect all of your changes until after reboot."
+#~ msgstr ""
+#~ "WAARSCHUWING: de kernel kan de partitietabel op %s niet opnieuw lezen "
+#~ "(%s).  Dit kan als gevolg hebben dat het niet alle aanpassingen weergeeft "
+#~ "tot na een herstart."
diff --git a/po/nn.gmo b/po/nn.gmo
new file mode 100644 (file)
index 0000000..35a68fa
Binary files /dev/null and b/po/nn.gmo differ
diff --git a/po/nn.po b/po/nn.po
new file mode 100644 (file)
index 0000000..3d164fb
--- /dev/null
+++ b/po/nn.po
@@ -0,0 +1,3141 @@
+# Norwegian nynorsk messages for GNU parted
+# Copyright (C) 2001 Free Software Foundation, Inc.
+# Kjetil Torgrim Homme <kjetilho@ifi.uio.no>, 2001.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU parted 1.6.6-pre2\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2011-05-30 13:45+0200\n"
+"PO-Revision-Date: 2003-07-04 19:03+0200\n"
+"Last-Translator: Kjetil Torgrim Homme <kjetilho@ifi.uio.no>\n"
+"Language-Team: Norwegian Nynorsk <i18n-nn@lister.ping.uio.no>\n"
+"Language: nn\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/argmatch.c:133
+#, fuzzy, c-format
+msgid "invalid argument %s for %s"
+msgstr "Kunne ikkje opna %s."
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr ""
+
+#: lib/argmatch.c:153
+#, fuzzy, c-format
+msgid "Valid arguments are:"
+msgstr "Kunne ikkje opna %s."
+
+#: lib/closeout.c:112 libparted/labels/fdasd.c:107
+msgid "write error"
+msgstr ""
+
+#: lib/error.c:181
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Filsystemtypen «%s» er ukjend."
+
+#: lib/getopt.c:548 lib/getopt.c:577
+#, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
+msgstr ""
+
+#: lib/getopt.c:625 lib/getopt.c:629
+#, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:638 lib/getopt.c:643
+#, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:686 lib/getopt.c:705
+#, c-format
+msgid "%s: option '--%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:743 lib/getopt.c:746
+#, fuzzy, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "Kunne ikkje opna %s - ukjend disklabel."
+
+#: lib/getopt.c:754 lib/getopt.c:757
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "Kunne ikkje opna %s - ukjend disklabel."
+
+#: lib/getopt.c:806 lib/getopt.c:809
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr ""
+
+#: lib/getopt.c:859 lib/getopt.c:876 lib/getopt.c:1084 lib/getopt.c:1102
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr ""
+
+#: lib/getopt.c:932 lib/getopt.c:948
+#, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:972 lib/getopt.c:990
+#, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:1011 lib/getopt.c:1029
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr ""
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:271
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:272
+msgid "'"
+msgstr ""
+
+#: lib/regcomp.c:133
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:136
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:139
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:142
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:145
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:148
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:151
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:154
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:157
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:160
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:163
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:166
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:169
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:172
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:175
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:178
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:181
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:702
+msgid "No previous regular expression"
+msgstr ""
+
+#. TRANSLATORS: A regular expression testing for an affirmative answer
+#. (english: "yes").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^yesexpr='
+#: lib/rpmatch.c:147
+msgid "^[yY]"
+msgstr ""
+
+#. TRANSLATORS: A regular expression testing for a negative answer
+#. (english: "no").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^noexpr='
+#: lib/rpmatch.c:160
+msgid "^[nN]"
+msgstr ""
+
+#: lib/version-etc.c:74
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr ""
+
+#: lib/version-etc.c:77
+#, c-format
+msgid "Packaged by %s\n"
+msgstr ""
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale.  Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:84
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:86
+msgid ""
+"\n"
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:102
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:106
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:110
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:131
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:139
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:147
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:156
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:167
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package.  Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:245
+#, c-format
+msgid ""
+"\n"
+"Report bugs to: %s\n"
+msgstr ""
+
+#: lib/version-etc.c:247
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr ""
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr ""
+
+#: lib/version-etc.c:253
+#, c-format
+msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
+msgstr ""
+
+#: lib/version-etc.c:256
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr ""
+
+#: lib/xstrtol-error.c:63
+#, fuzzy, c-format
+msgid "invalid %s%s argument `%s'"
+msgstr "Kunne ikkje opna %s."
+
+#: lib/xstrtol-error.c:68
+#, fuzzy, c-format
+msgid "invalid suffix in %s%s argument `%s'"
+msgstr "Kunne ikkje opna %s."
+
+#: lib/xstrtol-error.c:72
+#, fuzzy, c-format
+msgid "%s%s argument `%s' too large"
+msgstr "Kunne ikkje opna %s."
+
+#: libparted/arch/beos.c:245
+msgid "Disk Image"
+msgstr ""
+
+#: libparted/arch/beos.c:346 libparted/arch/gnu.c:277
+#: libparted/arch/linux.c:1545
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "Feil ved opning av %s: %s"
+
+#: libparted/arch/beos.c:357 libparted/arch/gnu.c:287
+#: libparted/arch/linux.c:1556
+#, c-format
+msgid "Unable to open %s read-write (%s).  %s has been opened read-only."
+msgstr ""
+"Kunne ikkje opna %s for både lesing og skriving (%s).  %s er berre opna for "
+"lesing."
+
+#: libparted/arch/beos.c:419 libparted/arch/linux.c:1714
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s under posisjonering før lesing av %s"
+
+#: libparted/arch/beos.c:452 libparted/arch/gnu.c:465 libparted/arch/gnu.c:564
+#: libparted/arch/gnu.c:692 libparted/arch/linux.c:1674
+#: libparted/arch/linux.c:1755
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s under lesing av %s"
+
+#: libparted/arch/beos.c:488 libparted/arch/gnu.c:525
+#: libparted/arch/linux.c:1831
+#, c-format
+msgid "Can't write to %s, because it is opened read-only."
+msgstr "Kan ikkje skriva til %s, sidan han berre er opna for lesing."
+
+#: libparted/arch/beos.c:504 libparted/arch/linux.c:1856
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s under posisjonering før skriving til %s"
+
+#: libparted/arch/beos.c:541 libparted/arch/gnu.c:601 libparted/arch/gnu.c:646
+#: libparted/arch/gnu.c:723 libparted/arch/linux.c:1804
+#: libparted/arch/linux.c:1898 libparted/arch/linux.c:1970
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s under skriving til %s"
+
+#: partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr ""
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the operating system about partition table changes.\n"
+"\n"
+"  -d, --dry-run    do not actually inform the operating system\n"
+"  -s, --summary    print a summary of contents\n"
+"  -h, --help       display this help and exit\n"
+"  -v, --version    output version information and exit\n"
+msgstr ""
+
+#: partprobe/partprobe.c:150
+msgid ""
+"\n"
+"When no DEVICE is given, probe all partitions.\n"
+msgstr ""
+
+#: partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: libparted/arch/gnu.c:110
+#, c-format
+msgid "Unable to open %s."
+msgstr "Kunne ikkje opna %s."
+
+#: libparted/arch/gnu.c:130
+msgid "Unable to probe store."
+msgstr "Kunne ikkje undersøkja lagringsmediet."
+
+#: libparted/arch/gnu.c:368
+#, fuzzy
+msgid ""
+"The partition table cannot be re-read.  This means you need to reboot before "
+"mounting any modified partitions.  You also need to reinstall your boot "
+"loader before you reboot (which may require mounting modified partitions).  "
+"It is impossible do both things!  So you'll need to boot off a rescue disk, "
+"and reinstall your boot loader from the rescue disk.  Read section 4 of the "
+"Parted User documentation for more information."
+msgstr ""
+"Kjerna klarte ikkje å lesa partisjonstabellen på nytt, så du må starta om "
+"maskina før du kan montera endra partisjonar.  Du må også installera boot-"
+"lastaren på nytt før omstarten (som kanskje krever at du monterer "
+"partisjonane du har endra).  Det er umogleg å gjera båe delar!  Start frå "
+"ein redningsdiskett, og reinstallera boot-lastaren frå redningsmiljøet.  Les "
+"del 4 i brukarhandboka for meir informasjon."
+
+#: libparted/arch/gnu.c:385
+#, fuzzy, c-format
+msgid ""
+"The partition table on %s cannot be re-read (%s).  This means the Hurd knows "
+"nothing about any modifications you made.  You should reboot your computer "
+"before doing anything with %s."
+msgstr ""
+"Partisjonstabellen på %s (%s).  Det tyder at Hurd ikkje veit noko om "
+"endringar du har gjort.  Datamaskinen må startast på nytt før du gjer noko "
+"med %s."
+
+#: libparted/arch/gnu.c:396 parted/parted.c:1967
+msgid ""
+"You should reinstall your boot loader before rebooting.  Read section 4 of "
+"the Parted User documentation for more information."
+msgstr ""
+"Du må installera boot-lastaren på nytt før neste omstart.  Les del 4 i "
+"brukarhandboka for meir informasjon."
+
+#: libparted/arch/gnu.c:788
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "Fekk feilmeldinga «%s» ved forsøk på å synkronisera %s til disk"
+
+#: libparted/arch/linux.c:520
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "Kunne ikkje undersøkja eininga %s - %s."
+
+#: libparted/arch/linux.c:577
+#, fuzzy, c-format
+msgid "Unable to determine the dm type of %s."
+msgstr "Klarte ikkje å finna storleiken til %s (%s)"
+
+#: libparted/arch/linux.c:669
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+
+#: libparted/arch/linux.c:690
+#, c-format
+msgid ""
+"Could not determine physical sector size for %s.\n"
+"Using the logical sector size (%lld)."
+msgstr ""
+
+#: libparted/arch/linux.c:746
+#, fuzzy, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "Klarte ikkje å finna storleiken til %s (%s)"
+
+#: libparted/arch/linux.c:832
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "Kunne ikkje finna identiteten til eininga %s - %s"
+
+#: libparted/arch/linux.c:841
+msgid "Generic IDE"
+msgstr ""
+
+#: libparted/arch/linux.c:862
+#, c-format
+msgid ""
+"Device %s has multiple (%d) logical sectors per physical sector.\n"
+"GNU Parted supports this EXPERIMENTALLY for some special disk label/file "
+"system combinations, e.g. GPT and ext2/3.\n"
+"Please consult the web site for up-to-date information."
+msgstr ""
+
+#: libparted/arch/linux.c:1039
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "Initialisering av SCSI-eininga %s gav feil - %s"
+
+#: libparted/arch/linux.c:1103
+#, fuzzy, c-format
+msgid ""
+"The device %s is so small that it cannot possibly store a file system or "
+"partition table.  Perhaps you selected the wrong device?"
+msgstr ""
+"Eininga %s har storleik null, og kan umogleg innehalda eit filsystem eller "
+"ein partisjonstabell.  Kanskje du valte feil eining?"
+
+#: libparted/arch/linux.c:1216
+#, fuzzy, c-format
+msgid ""
+"Unable to determine geometry of file/device %s.  You should not use Parted "
+"unless you REALLY know what you're doing!"
+msgstr ""
+"Klarte ikkje å finna geometrien til fila/eininga.  Du bør ikkje bruka Parted "
+"med mindre du VERKELEG veit kva du gjer!"
+
+#: libparted/arch/linux.c:1276
+msgid "Generic SD/MMC Storage Card"
+msgstr ""
+
+#: libparted/arch/linux.c:1329
+msgid "DAC960 RAID controller"
+msgstr "DAC960 RAID-kontroller"
+
+#: libparted/arch/linux.c:1334
+msgid "Promise SX8 SATA Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1339
+msgid "ATA over Ethernet Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1345
+msgid "IBM S390 DASD drive"
+msgstr ""
+
+#: libparted/arch/linux.c:1351
+msgid "IBM iSeries Virtual DASD"
+msgstr ""
+
+#: libparted/arch/linux.c:1356
+msgid "Compaq Smart Array"
+msgstr "Compaq Smart Array"
+
+#: libparted/arch/linux.c:1361
+msgid "ATARAID Controller"
+msgstr "ATARAID-kontroller"
+
+#: libparted/arch/linux.c:1366
+msgid "I2O Controller"
+msgstr "I2O-kontroller"
+
+#: libparted/arch/linux.c:1371
+msgid "User-Mode Linux UBD"
+msgstr ""
+
+#: libparted/arch/linux.c:1384
+#, c-format
+msgid "Linux device-mapper (%s)"
+msgstr ""
+
+#: libparted/arch/linux.c:1395
+msgid "Xen Virtual Block Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1400
+msgid "Unknown"
+msgstr "Ukjent"
+
+#: libparted/arch/linux.c:1409
+msgid "Virtio Block Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1414
+msgid "Linux Software RAID Array"
+msgstr ""
+
+#: libparted/arch/linux.c:1421
+msgid "ped_device_new()  Unsupported device type"
+msgstr "ped_device_new()  Einingstypen er ikkje støtta"
+
+#: libparted/arch/linux.c:1518 libparted/arch/linux.c:1590
+#, fuzzy, c-format
+msgid "Error fsyncing/closing %s: %s"
+msgstr "Feil ved opning av %s: %s"
+
+#: libparted/arch/linux.c:1754
+#, c-format
+msgid "end of file while reading %s"
+msgstr ""
+
+#: libparted/arch/linux.c:2390
+#, fuzzy, c-format
+msgid ""
+"Error informing the kernel about modifications to partition %s -- %s.  This "
+"means Linux won't know about any changes you made to %s until you reboot -- "
+"so you shouldn't mount it or use it in any way before rebooting."
+msgstr ""
+"Ein feil oppstod ved varsling av kjerna om endringane på partisjon %s - %s.  "
+"Dette tyder at Linux ikkje veit om endringar du har gjort på %s før etter "
+"omstart av maskinen, så du må ikkje montera han eller bruka han på nokon "
+"måte før omstart."
+
+#: libparted/arch/linux.c:2528
+#, fuzzy, c-format
+msgid "Unable to determine the size and length of %s."
+msgstr "Klarte ikkje å finna storleiken til %s (%s)"
+
+#: libparted/arch/linux.c:2553
+#, c-format
+msgid "Failed to add partition %d (%s)"
+msgstr ""
+
+#: libparted/arch/linux.c:2580
+#, c-format
+msgid ""
+"Partition(s) %s on %s have been written, but we have been unable to inform "
+"the kernel of the change, probably because it/they are in use.  As a result, "
+"the old partition(s) will remain in use.  You should reboot now before "
+"making further changes."
+msgstr ""
+
+#: libparted/arch/linux.c:2706
+#, fuzzy, c-format
+msgid ""
+"parted was unable to re-read the partition table on %s (%s).  This means "
+"Linux won't know anything about the modifications you made. "
+msgstr ""
+"Kjerna klarte ikkje å lesa partisjonstabellen på %s på nytt (%s).  Dette "
+"tyder at Linux ikkje veit om endringane du har gjort.  Du må ta omstart på "
+"maskinen din før du gjer noko med %s."
+
+#: libparted/cs/geom.c:161
+#, fuzzy, c-format
+msgid "Can't have the end before the start! (start sector=%jd length=%jd)"
+msgstr "Kan ikkje ha slutten før starten!"
+
+#: libparted/cs/geom.c:169
+msgid "Can't have a partition outside the disk!"
+msgstr "Kan ikkje ha ein partisjon utanfor disken!"
+
+#: libparted/cs/geom.c:384
+#, fuzzy, c-format
+msgid "Attempt to write sectors %ld-%ld outside of partition on %s."
+msgstr "Prøvde å skriva sektorane %ld-%ld utanfor partisjonen på %s"
+
+#: libparted/cs/geom.c:424
+msgid "checking for bad blocks"
+msgstr "ser etter dårlege blokker"
+
+#: libparted/debug.c:96
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:109
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr ""
+
+#: libparted/disk.c:192
+#, fuzzy, c-format
+msgid "%s: unrecognised disk label"
+msgstr "Kunne ikkje opna %s - ukjend disklabel."
+
+#: libparted/disk.c:484
+#, c-format
+msgid ""
+"This libparted doesn't have write support for %s.  Perhaps it was compiled "
+"read-only."
+msgstr ""
+"Dette libparted-biblioteket har ikkje støtte for skriving til %s.  Kanskje "
+"vart det kompilert for kun lesing."
+
+#: libparted/disk.c:629
+#, fuzzy, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "Partisjonen %d er %.3f MiB, men filsystemet er %.3f MiB."
+
+#: libparted/disk.c:838
+msgid "cylinder_alignment"
+msgstr ""
+
+#: libparted/disk.c:844
+#, fuzzy, c-format
+msgid "Unknown disk flag, %d."
+msgstr "Ukjent partisjonsflagg, %d."
+
+#: libparted/disk.c:1283
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "Ein %s-disklabel støttar ikkje utvidingspartisjonar."
+
+#: libparted/disk.c:1858
+#, c-format
+msgid "%s disk labels don't support logical or extended partitions."
+msgstr "%s-disklablar støttar ikkje logiske eller utvidingspartisjonar."
+
+#: libparted/disk.c:1871
+#, fuzzy
+msgid "Too many primary partitions."
+msgstr "For mange primærpartisjonar"
+
+#: libparted/disk.c:1880
+#, c-format
+msgid ""
+"Can't add a logical partition to %s, because there is no extended partition."
+msgstr ""
+"Kan ikkje leggja ein logisk partisjon til %s, sidan der ikkje er nokon "
+"utvidingspartisjon."
+
+#: libparted/disk.c:1904
+#, fuzzy, c-format
+msgid "Can't have more than one extended partition on %s."
+msgstr "Kan ikkje ha meir enn éin utvidingspartisjon på %s"
+
+#: libparted/disk.c:1914
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr "Kan ikkje ha logiske partisjonar utanfor utvidingspartisjonen."
+
+#: libparted/disk.c:1939
+#, c-format
+msgid "Can't have a logical partition outside of the extended partition on %s."
+msgstr ""
+"Ein logisk partisjon kan ikkje liggja utanfor utvidingspartisjonen på %s."
+
+#: libparted/disk.c:1949 libparted/disk.c:2008 libparted/disk.c:2186
+#, fuzzy
+msgid "Can't have overlapping partitions."
+msgstr "Partisjonar kan ikkje overlappa kvarandre."
+
+#: libparted/disk.c:1957
+msgid "Can't have a primary partition inside an extended partition."
+msgstr "Ein primærpartisjon kan ikkje liggja inne i ein utvidingspartisjon."
+
+#: libparted/disk.c:2387
+msgid "metadata"
+msgstr "metadata"
+
+#: libparted/disk.c:2389
+msgid "free"
+msgstr "ledig"
+
+#: libparted/disk.c:2391 parted/ui.c:1194 parted/ui.c:1222
+msgid "extended"
+msgstr "utviding"
+
+#: libparted/disk.c:2393 parted/ui.c:1198 parted/ui.c:1226
+msgid "logical"
+msgstr "logisk"
+
+#: libparted/disk.c:2395 parted/ui.c:1190 parted/ui.c:1218
+msgid "primary"
+msgstr "primær"
+
+#: libparted/disk.c:2411
+msgid "boot"
+msgstr "boot"
+
+#: libparted/disk.c:2413
+msgid "bios_grub"
+msgstr ""
+
+#: libparted/disk.c:2415
+msgid "root"
+msgstr "rot"
+
+#: libparted/disk.c:2417
+msgid "swap"
+msgstr "swap"
+
+#: libparted/disk.c:2419
+msgid "hidden"
+msgstr "skjult"
+
+#: libparted/disk.c:2421
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2423
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2425
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2427
+msgid "hp-service"
+msgstr "hp-service"
+
+#: libparted/disk.c:2429
+msgid "palo"
+msgstr ""
+
+#: libparted/disk.c:2431
+msgid "prep"
+msgstr ""
+
+#: libparted/disk.c:2433
+msgid "msftres"
+msgstr ""
+
+#: libparted/disk.c:2435
+msgid "atvrecv"
+msgstr ""
+
+#: libparted/disk.c:2437
+msgid "diag"
+msgstr ""
+
+#: libparted/disk.c:2439
+msgid "legacy_boot"
+msgstr ""
+
+#: libparted/disk.c:2445
+#, fuzzy, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Ukjent partisjonsflagg, %d."
+
+#: libparted/exception.c:77
+msgid "Information"
+msgstr "Informasjon"
+
+#: libparted/exception.c:78
+msgid "Warning"
+msgstr "Åtvaring"
+
+#: libparted/exception.c:79
+msgid "Error"
+msgstr "Feil"
+
+#: libparted/exception.c:80
+msgid "Fatal"
+msgstr "Kritisk"
+
+#: libparted/exception.c:81
+msgid "Bug"
+msgstr "Programfeil"
+
+#: libparted/exception.c:82
+msgid "No Implementation"
+msgstr "Ikkje laga"
+
+#: libparted/exception.c:86
+msgid "Fix"
+msgstr "Rett opp"
+
+#: libparted/exception.c:87
+msgid "Yes"
+msgstr "Ja"
+
+#: libparted/exception.c:88
+msgid "No"
+msgstr "Nei"
+
+#: libparted/exception.c:89
+msgid "OK"
+msgstr "OK"
+
+#: libparted/exception.c:90
+msgid "Retry"
+msgstr "Prøv igjen"
+
+#: libparted/exception.c:91
+msgid "Ignore"
+msgstr "Oversjå"
+
+#: libparted/exception.c:92
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: libparted/exception.c:132
+#, fuzzy, c-format
+msgid ""
+"A bug has been detected in GNU Parted.  Refer to the web site of parted "
+"http://www.gnu.org/software/parted/parted.html for more information of what "
+"could be useful for bug submitting!  Please email a bug report to %s "
+"containing at least the version (%s) and the following message:  "
+msgstr ""
+"Ein programfeil oppstod i GNU Parted.  Ver venleg å senda ei feilmelding til "
+"bug-parted@gnu.org der du oppgjev versjonsnummeret (%s) og fylgjande melding:"
+
+#: libparted/labels/aix.c:103
+#, fuzzy
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr "Støtte for å laga %s-filsystem er ikkje lagt inn enno."
+
+#: libparted/labels/aix.c:114
+#, fuzzy
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr "Støtte for å laga %s-filsystem er ikkje lagt inn enno."
+
+#: libparted/labels/aix.c:127
+#, fuzzy
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr "Støtte for å laga %s-filsystem er ikkje lagt inn enno."
+
+#: libparted/labels/aix.c:137
+#, fuzzy
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr "Støtte for å laga %s-filsystem er ikkje lagt inn enno."
+
+#: libparted/labels/aix.c:155
+#, fuzzy
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr "Støtte for å laga %s-filsystem er ikkje lagt inn enno."
+
+#: libparted/labels/aix.c:165
+#, fuzzy
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr "Støtte for å laga %s-filsystem er ikkje lagt inn enno."
+
+#: libparted/labels/bsd.c:571 libparted/labels/dasd.c:833
+#: libparted/labels/dos.c:2176 libparted/labels/dvh.c:787
+#: libparted/labels/gpt.c:1782 libparted/labels/loop.c:247
+#: libparted/labels/mac.c:1426 libparted/labels/pc98.c:748
+#: libparted/labels/rdb.c:1052 libparted/labels/sun.c:780
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "Kunne ikkje oppfylla alle dei tekniske krava til partisjonen."
+
+#: libparted/labels/bsd.c:596
+#, fuzzy
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "Kunne ikkje tilordna plass i BSD-disklabel."
+
+#: libparted/labels/dasd.c:859
+#, fuzzy
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "Kunne ikkje tilordna plass i BSD-disklabel."
+
+#: libparted/labels/dos.c:966
+#, fuzzy, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr "Ugyldig partisjonstabell på %s - feil signatur %x"
+
+#: libparted/labels/dos.c:994
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "Ugyldig partisjonstabell - rekursiv partisjon på %s."
+
+#: libparted/labels/dos.c:1504
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr ""
+
+#: libparted/labels/dos.c:2158
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+
+# checkit
+#: libparted/labels/dvh.c:200
+#, fuzzy, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr ""
+"%s har ingen utvidingspartisjon (volume header-partisjon).  Om du overser "
+"denne meldinga, vil eventuelle bootvolum verta sletta."
+
+#: libparted/labels/dvh.c:326
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr "Sjekksummen er feil, og det tyder på at partisjonstabellen er korrupt."
+
+#: libparted/labels/dvh.c:631
+msgid "Only primary partitions can be root partitions."
+msgstr "Berre primærpartisjonar kan vera rotpartisjonar."
+
+#: libparted/labels/dvh.c:645
+msgid "Only primary partitions can be swap partitions."
+msgstr "Berre primærpartisjonar kan vera swap-partisjonar."
+
+# checkit
+#: libparted/labels/dvh.c:659
+msgid "Only logical partitions can be a boot file."
+msgstr "Berre logiske partisjonar kan vera ei bootfil."
+
+# checkit
+#: libparted/labels/dvh.c:736
+#, fuzzy, c-format
+msgid ""
+"failed to set dvh partition name to %s:\n"
+"Only logical partitions (boot files) have a name."
+msgstr "Berre logiske partisjonar (bootfiler) kan ha namn."
+
+#: libparted/labels/dvh.c:829
+msgid "Too many primary partitions"
+msgstr "For mange primærpartisjonar"
+
+#: libparted/labels/fdasd.c:98
+msgid "open error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:101
+msgid "seek error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:104
+msgid "read error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:110
+msgid "ioctl() error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:114
+msgid "API version mismatch"
+msgstr ""
+
+#: libparted/labels/fdasd.c:118
+#, fuzzy
+msgid "Unsupported disk type"
+msgstr "ped_device_new()  Einingstypen er ikkje støtta"
+
+#: libparted/labels/fdasd.c:122
+msgid "Unsupported disk format"
+msgstr ""
+
+#: libparted/labels/fdasd.c:126
+msgid "Disk is in use"
+msgstr ""
+
+#: libparted/labels/fdasd.c:130
+msgid "Syntax error in config file"
+msgstr ""
+
+#: libparted/labels/fdasd.c:134
+msgid "Volume label is corrupted"
+msgstr ""
+
+#: libparted/labels/fdasd.c:138
+msgid "A data set name is corrupted"
+msgstr ""
+
+#: libparted/labels/fdasd.c:142
+msgid "Memory allocation failed"
+msgstr ""
+
+#: libparted/labels/fdasd.c:146
+msgid "Device verification failed"
+msgstr ""
+
+#: libparted/labels/fdasd.c:147
+msgid "The specified device is not a valid DASD device"
+msgstr ""
+
+#: libparted/labels/fdasd.c:150 libparted/labels/vtoc.c:179
+#, fuzzy
+msgid "Fatal error"
+msgstr "Kritisk"
+
+#: libparted/labels/fdasd.c:226
+msgid "No room for volume label."
+msgstr ""
+
+#: libparted/labels/fdasd.c:234
+#, fuzzy
+msgid "No room for partition info."
+msgstr "Fann ikkje noko gyldig partisjonskart."
+
+#: libparted/labels/fdasd.c:709
+msgid "Invalid VTOC."
+msgstr ""
+
+#: libparted/labels/fdasd.c:766
+msgid "Could not retrieve API version."
+msgstr ""
+
+#: libparted/labels/fdasd.c:769
+#, c-format
+msgid ""
+"The current API version '%d' doesn't match dasd driver API version '%d'!"
+msgstr ""
+
+#: libparted/labels/fdasd.c:806
+#, fuzzy
+msgid "Could not retrieve disk geometry information."
+msgstr "Kunne ikkje lesa geometrien til %s - %s."
+
+#: libparted/labels/fdasd.c:810
+msgid "Could not retrieve blocksize information."
+msgstr ""
+
+#: libparted/labels/fdasd.c:815
+msgid "Could not retrieve disk information."
+msgstr ""
+
+#: libparted/labels/gpt.c:493
+#, fuzzy, c-format
+msgid ""
+"%s contains GPT signatures, indicating that it has a GPT table.  However, it "
+"does not have a valid fake msdos partition table, as it should.  Perhaps it "
+"was corrupted -- possibly by a program that doesn't understand GPT partition "
+"tables.  Or perhaps you deleted the GPT table, and are now using an msdos "
+"partition table.  Is this a GPT partition table?"
+msgstr ""
+"%s inneheld GPT-signaturar, som tyder på at han har ein GPT-tabell.  Men han "
+"har ikkje ein gyldig falsk MSDOS-partisjonstabell slik han skulle.  Kanskje "
+"vart han øydelagt, t.d. av eit program som ikkje forstår GPT-"
+"partisjonstabellar.  Eller kanskje du har sletta GPT-tabellen og brukar no "
+"ein MSDOS-partisjonstabell.  Er dette ein GPT-partisjonstabell?"
+
+#: libparted/labels/gpt.c:693
+#, fuzzy, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise.  Please report this!"
+msgstr ""
+"Formatet til GPT-partisjonstabellen er versjon %x, som er nyare enn det "
+"Parted kan kjenna att.  Ver venleg å seia i frå med ein epost til <bug-"
+"parted@gnu.org> (skriv helst på engelsk)"
+
+#: libparted/labels/gpt.c:740
+#, c-format
+msgid ""
+"Not all of the space available to %s appears to be used, you can fix the GPT "
+"to use all of the space (an extra %llu blocks) or continue with the current "
+"setting? "
+msgstr ""
+
+#: libparted/labels/gpt.c:952
+msgid ""
+"The backup GPT table is not at the end of the disk, as it should be.  This "
+"might mean that another operating system believes the disk is smaller.  Fix, "
+"by moving the backup to the end (and removing the old backup)?"
+msgstr ""
+"Sikringskopien av GPT-tabellen er ikkje sist på disken slik han skal vera.  "
+"Dette kan tyda at eit anna operativsystem trur at disken er mindre.  Skal "
+"dette rettast ved å flytta kopien til slutten av disken (og sletta den gamle "
+"kopien)?"
+
+#: libparted/labels/gpt.c:976
+#, fuzzy
+msgid ""
+"Both the primary and backup GPT tables are corrupt.  Try making a fresh "
+"table, and using Parted's rescue feature to recover partitions."
+msgstr ""
+"Både originalen og kopien av GPT-tabellen er korrupt.  Prøv å laga ein ny "
+"tom tabell, og bruk Parteds redningsmodus til å finna partisjonane."
+
+#: libparted/labels/gpt.c:987
+#, fuzzy
+msgid ""
+"The backup GPT table is corrupt, but the primary appears OK, so that will be "
+"used."
+msgstr ""
+"GPT-tabellen er korrupt, men sikringskopien ser frisk ut, så kopien vert "
+"brukt."
+
+#: libparted/labels/gpt.c:999
+#, fuzzy
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr ""
+"GPT-tabellen er korrupt, men sikringskopien ser frisk ut, så kopien vert "
+"brukt."
+
+#: libparted/labels/gpt.c:1023
+msgid "primary partition table array CRC mismatch"
+msgstr ""
+
+#: libparted/labels/mac.c:184
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Ugyldig signatur %x for ein Mac-disklabel."
+
+#: libparted/labels/mac.c:231
+msgid "Partition map has no partition map entry!"
+msgstr "Partisjonskartet inneheld ingen oppføringar!"
+
+#: libparted/labels/mac.c:279
+#, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr "%s er for liten for ein Mac-disklabel!"
+
+#: libparted/labels/mac.c:508
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "Partisjon %d har ein ugyldig signatur %x."
+
+#: libparted/labels/mac.c:526
+#, c-format
+msgid "Partition %d has an invalid length of 0 bytes!"
+msgstr "Partisjon %d har ei ugyldig lengde på 0 oktettar!"
+
+#: libparted/labels/mac.c:557
+#, fuzzy
+msgid "The data region doesn't start at the start of the partition."
+msgstr "Dataregionen startar ikkje på starten av partisjonen"
+
+#: libparted/labels/mac.c:574
+#, fuzzy
+msgid "The boot region doesn't start at the start of the partition."
+msgstr "Bootregionen startar ikkje på starten av partisjonen"
+
+#: libparted/labels/mac.c:588
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr "Bootregionen fyller ikkje heile partisjonen."
+
+#: libparted/labels/mac.c:599
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr "Dataregionen fyller ikkje heile partisjonen."
+
+#: libparted/labels/mac.c:652
+#, c-format
+msgid ""
+"Weird block size on device descriptor: %d bytes is not divisible by 512."
+msgstr ""
+"Merkeleg blokkstorleik på einingsdeskriptor: %d oktettar er ikkje deleleg på "
+"512."
+
+#: libparted/labels/mac.c:665
+#, c-format
+msgid ""
+"The driver descriptor says the physical block size is %d bytes, but Linux "
+"says it is %d bytes."
+msgstr ""
+"Drivardeskriptoren seier at den fysiske blokkstorleiken er %d oktettar, men "
+"Linux seier at han er %d oktettar."
+
+#: libparted/labels/mac.c:719
+msgid "No valid partition map found."
+msgstr "Fann ikkje noko gyldig partisjonskart."
+
+#: libparted/labels/mac.c:780
+#, fuzzy, c-format
+msgid ""
+"Conflicting partition map entry sizes!  Entry 1 says it is %d, but entry %d "
+"says it is %d!"
+msgstr ""
+"Motstridande storleikar i partisjonskartet!  Oppføring 1 seier at han er %d, "
+"men oppføring %d seier at han er %d!"
+
+#: libparted/labels/mac.c:811
+#, fuzzy
+msgid "Weird!  There are 2 partitions map entries!"
+msgstr "Merkeleg - to partisjonskartoppføringar!"
+
+#: libparted/labels/mac.c:1357
+msgid ""
+"Changing the name of a root or swap partition will prevent Linux from "
+"recognising it as such."
+msgstr ""
+"Endrar du namnet på ein rot- eller swap-partisjon, vil ikkje Linux lenger "
+"kjenna han igjen."
+
+#: libparted/labels/mac.c:1461
+#, fuzzy
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr "Kan ikkje leggja til ein partisjon til - partisjonskartet er for lite!"
+
+#: libparted/labels/pc98.c:331
+#, fuzzy, c-format
+msgid "Invalid partition table on %s."
+msgstr "Ugyldig partisjonstabell på %s"
+
+#: libparted/labels/pc98.c:384 libparted/labels/pc98.c:462
+#, fuzzy, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries.  This is still "
+"unsupported."
+msgstr ""
+"Partisjon %d ligg ikkje nøyaktig på grensa mellom to sylinderar.  Det "
+"manglar støtte for dette."
+
+#: libparted/labels/pc98.c:780
+msgid "Can't add another partition."
+msgstr "Kan ikkje leggja til ein partisjon til."
+
+#: libparted/labels/pt-tools.c:125
+#, c-format
+msgid ""
+"partition length of %jd sectors exceeds the %s-partition-table-imposed "
+"maximum of %jd"
+msgstr ""
+
+#: libparted/labels/pt-tools.c:138
+#, c-format
+msgid ""
+"starting sector number, %jd exceeds the %s-partition-table-imposed maximum "
+"of %jd"
+msgstr ""
+
+#: libparted/labels/rdb.c:169
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:484
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr ""
+
+#: libparted/labels/rdb.c:573
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr ""
+
+#: libparted/labels/rdb.c:592
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:691
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:699
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:707
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:715
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:742
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr ""
+
+#: libparted/labels/rdb.c:1080
+#, fuzzy
+msgid "Unable to allocate a partition number."
+msgstr "Forventa eit partisjonsnummer."
+
+#: libparted/labels/sun.c:161
+msgid "Corrupted Sun disk label detected."
+msgstr "Øydelagd Sun-disklabel funne."
+
+#: libparted/labels/sun.c:276
+#, fuzzy, c-format
+msgid ""
+"The disk CHS geometry (%d,%d,%d) reported by the operating system does not "
+"match the geometry stored on the disk label (%d,%d,%d)."
+msgstr ""
+"Geometrien til disken (C=%d,H=%d,S=%d) stemmer ikkje med geometrien i "
+"disklabelen (C=%d,H=%d,S=%d)."
+
+#: libparted/labels/sun.c:298
+#, c-format
+msgid "The disk label describes a disk bigger than %s."
+msgstr "Disklabelen skildrar ein disk større enn %s."
+
+#: libparted/labels/sun.c:473
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr ""
+
+#: libparted/labels/sun.c:812
+msgid ""
+"The Whole Disk partition is the only available one left.  Generally, it is "
+"not a good idea to overwrite this partition with a real one.  Solaris may "
+"not be able to boot without it, and SILO (the sparc boot loader) appreciates "
+"it as well."
+msgstr ""
+"Partisjonen som omfattar heile disken er den einaste som er ledig.  Det er "
+"vanlegvis ikkje nokon god idé å bruka dette som ein vanleg partisjon.  "
+"Solaris klarer kanskje ikkje å starta utan han, og SILO (boot-lastar for "
+"SPARC) likar det heller ikkje."
+
+#: libparted/labels/sun.c:827
+msgid "Sun disk label is full."
+msgstr "Sun-disklabel er full."
+
+#: libparted/labels/vtoc.c:164
+msgid "opening of device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:168
+msgid "seeking on device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:172
+msgid "writing to device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:176
+msgid "reading from device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:299 libparted/labels/vtoc.c:308
+#: libparted/labels/vtoc.c:329 libparted/labels/vtoc.c:336
+#, fuzzy
+msgid "Could not read volume label."
+msgstr "Kunne ikkje lesa geometrien til %s - %s."
+
+#: libparted/labels/vtoc.c:356 libparted/labels/vtoc.c:363
+#, fuzzy
+msgid "Could not write volume label."
+msgstr "Kan ikkje kjenna igjen noko filsystem."
+
+#: libparted/labels/vtoc.c:469
+msgid "Could not read VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:496
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:516
+msgid "Could not write VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:522
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:529
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:536
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:543
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/libparted.c:230 libparted/libparted.c:245
+msgid "Out of memory."
+msgstr "Tom for minne."
+
+#: libparted/unit.c:138
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr ""
+
+#: libparted/unit.c:384
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr ""
+
+#: libparted/unit.c:392
+#, c-format
+msgid "The maximum head value is %d."
+msgstr ""
+
+#: libparted/unit.c:399
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr ""
+
+#: libparted/unit.c:411 libparted/unit.c:556
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr ""
+
+#: libparted/unit.c:531
+msgid "Invalid number."
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:62 libparted/fs/amiga/apfs.c:55
+#: libparted/fs/amiga/asfs.c:69
+#, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:77 libparted/fs/amiga/apfs.c:68
+#: libparted/fs/amiga/asfs.c:81
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:82 libparted/fs/amiga/apfs.c:73
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:98 libparted/fs/amiga/apfs.c:84
+#: libparted/fs/amiga/asfs.c:87 libparted/fs/amiga/asfs.c:101
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:71
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:188
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:201
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:211
+#, fuzzy, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s under skriving til %s"
+
+#: libparted/fs/amiga/amiga.c:277
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:288
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:317
+#, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr ""
+
+#: libparted/fs/fat/fat.c:174
+#, fuzzy
+msgid ""
+"GNU Parted was miscompiled: the FAT boot sector should be 512 bytes.  FAT "
+"support will be disabled."
+msgstr ""
+"GNU parted er feilkompilert:  ein bootsektor i FAT skal vera 512 oktettar.  "
+"FAT-støtte er no skrudd av."
+
+#: libparted/fs/fat/bootsector.c:49 libparted/fs/fat/bootsector.c:56
+msgid "File system has an invalid signature for a FAT file system."
+msgstr "Filsystemet har ein ugyldig signatur til å vera eit FAT-filsystem."
+
+#: libparted/fs/fat/bootsector.c:64
+msgid "File system has an invalid sector size for a FAT file system."
+msgstr ""
+"Filsystemet har ein ugyldig sektorstorleik til å vera eit FAT-filsystem."
+
+#: libparted/fs/fat/bootsector.c:71
+msgid "File system has an invalid cluster size for a FAT file system."
+msgstr ""
+"Filsystemet har ein storleik på allokeringseininga som er ugyldig for FAT-"
+"filsystem."
+
+#: libparted/fs/fat/bootsector.c:78
+#, fuzzy
+msgid ""
+"File system has an invalid number of reserved sectors for a FAT file system."
+msgstr ""
+"Filsystemet har eit ugyldig tal på reserverte sektorar til å vera eit FAT-"
+"filsystem"
+
+#: libparted/fs/fat/bootsector.c:85
+#, fuzzy
+msgid "File system has an invalid number of FATs."
+msgstr "Filsystemet har eit ugyldig tal på FAT-ar."
+
+#: libparted/fs/fat/bootsector.c:156
+#, c-format
+msgid ""
+"This file system has a logical sector size of %d.  GNU Parted is known not "
+"to work properly with sector sizes other than 512 bytes."
+msgstr ""
+"Dette filsystemet har ein logisk sektorstorleik på %d.  GNU Parted fungerer "
+"berre skikkeleg når sektorstorleiken er 512 oktettar."
+
+#: libparted/fs/fat/bootsector.c:181
+#, c-format
+msgid ""
+"The file system's CHS geometry is (%d, %d, %d), which is invalid.  The "
+"partition table's CHS geometry is (%d, %d, %d).  If you select Ignore, the "
+"file system's CHS geometry will be left unchanged.  If you select Fix, the "
+"file system's CHS geometry will be set to match the partition table's CHS "
+"geometry."
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:230
+msgid "FAT boot sector says logical sector size is 0.  This is weird. "
+msgstr ""
+"Bootsektoren i FAT seier at logisk sektorstorleik er 0.  Det var rart. "
+
+#: libparted/fs/fat/bootsector.c:236
+msgid "FAT boot sector says there are no FAT tables.  This is weird. "
+msgstr ""
+"Bootsektoren i FAT seier at der ikkje er nokon FAT-tabellar.  Det var rart. "
+
+#: libparted/fs/fat/bootsector.c:242
+msgid "FAT boot sector says clusters are 0 sectors.  This is weird. "
+msgstr ""
+"Bootsektoren i FAT seier at allokeringseininga er 0 sektorar.  Det var rart. "
+
+#: libparted/fs/fat/bootsector.c:252
+#, fuzzy
+msgid "File system is FAT12, which is unsupported."
+msgstr "Filsystemet er FAT12, som er ustøtta."
+
+#: libparted/fs/fat/bootsector.c:428
+#, c-format
+msgid ""
+"The information sector has the wrong signature (%x).  Select cancel for now, "
+"and send in a bug report.  If you're desperate, it's probably safe to ignore."
+msgstr ""
+"Informasjonssektoren har feil signatur (%x).  Vel avbryt, og send inn ein "
+"feilrapport.  Viss du er desperat, er det sannsynlegvis trygt å oversjå "
+"denne feilen."
+
+#: libparted/fs/linux_swap/linux_swap.c:247
+#, fuzzy, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "Ukjent swap-signatur for Linux '%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:290
+#, fuzzy, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "Ukjent swap-signatur for Linux '%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:330
+#, fuzzy, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Ukjent swap-signatur for Linux '%10s'."
+
+#: libparted/fs/hfs/probe.c:50
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to "
+"%d bytes."
+msgstr ""
+
+#: parted/parted.c:123
+msgid "displays this help message"
+msgstr "vis denne hjelpeteksten"
+
+#: parted/parted.c:124
+msgid "lists partition layout on all block devices"
+msgstr ""
+
+#: parted/parted.c:125
+msgid "displays machine parseable output"
+msgstr ""
+
+#: parted/parted.c:126
+msgid "never prompts for user intervention"
+msgstr "spør aldri brukaren"
+
+#: parted/parted.c:127
+msgid "displays the version"
+msgstr "vis programversjon"
+
+#: parted/parted.c:128
+#, fuzzy
+msgid "alignment for new partitions"
+msgstr "Kan ikkje laga fleire partisjonar."
+
+#: parted/parted.c:140
+#, fuzzy
+msgid ""
+"NUMBER is the partition number used by Linux.  On MS-DOS disk labels, the "
+"primary partitions number from 1 to 4, logical partitions from 5 onwards.\n"
+msgstr ""
+"NR er partisjonsnummeret brukt av Linux.  På MS-DOS-disklabels, er "
+"primærpartisjonar nummerert 1-4, og logiske partisjonar går frå 5 og "
+"oppover.\n"
+
+#: parted/parted.c:143
+msgid "LABEL-TYPE is one of: "
+msgstr "LABEL-TYPE er ein av: "
+
+#: parted/parted.c:144
+msgid "FLAG is one of: "
+msgstr "FLAGG er eitt av: "
+
+#: parted/parted.c:145
+#, fuzzy
+msgid "UNIT is one of: "
+msgstr "FLAGG er eitt av: "
+
+#: parted/parted.c:146
+msgid "desired alignment: minimum or optimal"
+msgstr ""
+
+#: parted/parted.c:147
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "PART-TYPE er ein av: primær, logisk, utviding\n"
+
+#: parted/parted.c:149
+msgid "FS-TYPE is one of: "
+msgstr "FS-TYPE er ein av: "
+
+#: parted/parted.c:150
+#, fuzzy
+msgid ""
+"START and END are disk locations, such as 4GB or 10%.  Negative values count "
+"from the end of the disk.  For example, -1s specifies exactly the last "
+"sector.\n"
+msgstr ""
+"START og SLUTT er i mebibytes.  Negative verdiar tel frå slutten av disken.\n"
+
+#: parted/parted.c:153
+msgid "STATE is one of: on, off\n"
+msgstr "STATUS er ein av: av, på\n"
+
+#: parted/parted.c:154
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "EINING er vanlegvis /dev/hda eller /dev/sda\n"
+
+#: parted/parted.c:155
+msgid "NAME is any word you want\n"
+msgstr "NAMN er eit valfritt ord\n"
+
+#: parted/parted.c:158
+#, fuzzy
+msgid ""
+"Copyright (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"This program is free software, covered by the GNU General Public License.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+msgstr ""
+"(Fylgjande tekst er ei omsetjing som *kun* vert gjeve på informativ basis.  "
+"For alle juridiske tolkingar gjeld den engelske originalteksten.)\n"
+"\n"
+"Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.\n"
+"Dette programmet er fri programvare, dekt av GNU General Public License.\n"
+"\n"
+"Dette programmet vert distribuert med von om at det vil vera nyttig, men "
+"utan NOKA FORM FOR garanti; ikkje eingong for at produktet er eigna for SAL "
+"eller BRUK TIL NOKO FORMÅL.  Sjå GNU General Public License for detaljar.\n"
+"\n"
+
+#: parted/parted.c:204
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(tid att %.2d:%.2d)"
+
+#: parted/parted.c:223
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+
+#: parted/parted.c:241
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "Partisjon(ane) på %s er i bruk."
+
+#: parted/parted.c:253
+#, c-format
+msgid ""
+"The existing disk label on %s will be destroyed and all data on this disk "
+"will be lost. Do you want to continue?"
+msgstr ""
+
+#: parted/parted.c:502
+msgid "New disk label type?"
+msgstr "Ny disklabel-type?"
+
+#: parted/parted.c:562
+msgid "Partition type?"
+msgstr "Partisjonstype?"
+
+#: parted/parted.c:580 parted/parted.c:766
+msgid "Partition name?"
+msgstr "Partisjonsnamn?"
+
+#: parted/parted.c:588
+msgid "File system type?"
+msgstr "Filsystemtype?"
+
+#: parted/parted.c:594 parted/parted.c:1342
+msgid "Start?"
+msgstr "Start?"
+
+#: parted/parted.c:596 parted/parted.c:1344
+msgid "End?"
+msgstr "Slutt?"
+
+#: parted/parted.c:661
+#, fuzzy, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s.%s"
+msgstr ""
+"Du bad om ein partisjon på %.3f-%.3f MiB.  Det nærmaste Parted kan koma er "
+"%.3f-%.3f MiB."
+
+#: parted/parted.c:666
+msgid ""
+"\n"
+"Is this still acceptable to you?"
+msgstr ""
+
+#: parted/parted.c:688
+msgid "The resulting partition is not properly aligned for best performance."
+msgstr ""
+
+#: parted/parted.c:763 parted/parted.c:1383 parted/parted.c:1455
+#: parted/parted.c:1489
+msgid "Partition number?"
+msgstr "Partisjonsnummer?"
+
+#: parted/parted.c:841
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d.  Each cylinder is %s.\n"
+msgstr ""
+
+#: parted/parted.c:881
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr ""
+
+#: parted/parted.c:883
+#, fuzzy, c-format
+msgid "Disk %s: %s\n"
+msgstr "%s  %s  %s"
+
+#: parted/parted.c:884
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr ""
+
+#: parted/parted.c:896
+#, fuzzy, c-format
+msgid "Partition Table: %s\n"
+msgstr "Partisjonsnamn?"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Number"
+msgstr ""
+
+#: parted/parted.c:1007 parted/parted.c:1010
+#, fuzzy
+msgid "Start"
+msgstr "Start?"
+
+#: parted/parted.c:1008 parted/parted.c:1011
+#, fuzzy
+msgid "End"
+msgstr "Slutt?"
+
+#: parted/parted.c:1011
+#, fuzzy
+msgid "Size"
+msgstr "resize"
+
+#: parted/parted.c:1015
+msgid "Type"
+msgstr ""
+
+#: parted/parted.c:1017
+#, fuzzy
+msgid "File system"
+msgstr "Filsystem?"
+
+#: parted/parted.c:1020
+#, fuzzy
+msgid "Name"
+msgstr "name"
+
+#: parted/parted.c:1022
+msgid "Flags"
+msgstr "Flagg"
+
+#: parted/parted.c:1079
+msgid "Free Space"
+msgstr ""
+
+#: parted/parted.c:1241
+#, fuzzy, c-format
+msgid ""
+"A %s %s partition was found at %s -> %s.  Do you want to add it to the "
+"partition table?"
+msgstr ""
+"Ein %s %s-partisjon vart funnen på %.3f MiB -> %.3f MiB.  Ønskjer du å "
+"leggja han til i partisjonstabellen?"
+
+#: parted/parted.c:1280
+msgid "searching for file systems"
+msgstr "leitar etter filsystem"
+
+#: parted/parted.c:1408
+msgid "New device?"
+msgstr "Ny eining?"
+
+#: parted/parted.c:1453
+msgid "alignment type(min/opt)"
+msgstr ""
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d aligned\n"
+msgstr ""
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d not aligned\n"
+msgstr ""
+
+#: parted/parted.c:1491
+#, fuzzy
+msgid "Flag to Invert?"
+msgstr "Flagg som skal endrast?"
+
+#: parted/parted.c:1496
+msgid "New state?"
+msgstr "Ny status?"
+
+#: parted/parted.c:1533
+msgid "Unit?"
+msgstr ""
+
+#: parted/parted.c:1651
+#, fuzzy
+msgid "align-check"
+msgstr "check"
+
+#: parted/parted.c:1654
+msgid ""
+"align-check TYPE N                        check partition N for TYPE(min|"
+"opt) alignment"
+msgstr ""
+
+#: parted/parted.c:1662
+msgid "help"
+msgstr "help"
+
+#: parted/parted.c:1665
+#, fuzzy
+msgid ""
+"help [COMMAND]                           print general help, or help on "
+"COMMAND"
+msgstr ""
+"help [KOMMANDO]               gjev generell hjelp, eller hjelp om KOMMANDO"
+
+#: parted/parted.c:1671
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:1671
+#, fuzzy
+msgid "mktable"
+msgstr "mklabel"
+
+#: parted/parted.c:1674
+#, fuzzy
+msgid ""
+"mklabel,mktable LABEL-TYPE               create a new disklabel (partition "
+"table)"
+msgstr "mklabel LABEL-TYPE            lag ny disklabel (partisjonstabell)"
+
+#: parted/parted.c:1680
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:1683
+#, fuzzy
+msgid "mkpart PART-TYPE [FS-TYPE] START END     make a partition"
+msgstr "mkpart PART-TYPE [FS-TYPE] START SLUTT    lag ein partisjon"
+
+#: parted/parted.c:1689
+#, fuzzy
+msgid ""
+"'mkpart' makes a partition without creating a new file system on the "
+"partition.  FS-TYPE may be specified to set an appropriate partition ID.\n"
+msgstr ""
+"mkpart lagar ein partisjon utan å laga eit nytt filsystem der.  Du kan "
+"spesifisera FS-TYPE for å setja ein passande partisjons-id.\n"
+
+#: parted/parted.c:1694
+msgid "name"
+msgstr "name"
+
+#: parted/parted.c:1697
+#, fuzzy
+msgid "name NUMBER NAME                         name partition NUMBER as NAME"
+msgstr "name NR NAMN                  gje partisjonen NR namnet NAMN"
+
+#: parted/parted.c:1702
+msgid "print"
+msgstr "print"
+
+#: parted/parted.c:1705
+msgid ""
+"print [devices|free|list,all|NUMBER]     display the partition table, "
+"available devices, free space, all found partitions, or a particular "
+"partition"
+msgstr ""
+
+#: parted/parted.c:1710
+#, fuzzy
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+"Utan argument skriv print ut heile partisjonstabellen.  Dersom eit\n"
+"partisjonsnummer er oppgjeve, vil meir detaljert informasjon om\n"
+"partisjonen verta vist.\n"
+
+#: parted/parted.c:1712
+msgid "  devices   : display all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:1713
+msgid ""
+"  free      : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+
+#: parted/parted.c:1715
+msgid ""
+"  list, all : display the partition tables of all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:1716
+msgid ""
+"  NUMBER    : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+
+#: parted/parted.c:1721
+msgid "quit"
+msgstr "quit"
+
+#: parted/parted.c:1724
+#, fuzzy
+msgid "quit                                     exit program"
+msgstr "quit                          avslutt programmet"
+
+#: parted/parted.c:1729
+msgid "rescue"
+msgstr "rescue"
+
+#: parted/parted.c:1732
+#, fuzzy
+msgid ""
+"rescue START END                         rescue a lost partition near START "
+"and END"
+msgstr ""
+"rescue START SLUTT            redd tapte partisjonar nær START og SLUTT"
+
+#: parted/parted.c:1738
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:1741
+#, fuzzy
+msgid "rm NUMBER                                delete partition NUMBER"
+msgstr "rm NR                         slett partisjonen NR"
+
+#: parted/parted.c:1746
+msgid "select"
+msgstr "select"
+
+#: parted/parted.c:1749
+#, fuzzy
+msgid "select DEVICE                            choose the device to edit"
+msgstr "select EINING                 vel eininga du vil gjera endringar på"
+
+#: parted/parted.c:1754
+msgid "set"
+msgstr "set"
+
+#: parted/parted.c:1757
+#, fuzzy
+msgid ""
+"set NUMBER FLAG STATE                    change the FLAG on partition NUMBER"
+msgstr "set NR FLAGG STATUS           endra eit flagg på partisjonen NR"
+
+#: parted/parted.c:1763
+msgid "toggle"
+msgstr ""
+
+#: parted/parted.c:1766
+msgid ""
+"toggle [NUMBER [FLAG]]                   toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+
+#: parted/parted.c:1772
+#, fuzzy
+msgid "unit"
+msgstr "quit"
+
+#: parted/parted.c:1775
+#, fuzzy
+msgid "unit UNIT                                set the default unit to UNIT"
+msgstr "quit                          avslutt programmet"
+
+#: parted/parted.c:1780
+msgid "version"
+msgstr ""
+
+#: parted/parted.c:1783
+msgid ""
+"version                                  display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+
+#: parted/parted.c:1787
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+
+#: parted/parted.c:1855
+#, c-format
+msgid "Usage: %s [-hlmsv] [-a<align>] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+
+#: parted/parted.c:1899
+msgid "No device found"
+msgstr "Ingen diskar funne"
+
+#: parted/parted.c:1936
+msgid "WARNING: You are not superuser.  Watch out for permissions."
+msgstr ""
+
+#: parted/parted.c:1974
+#, fuzzy
+msgid "You may need to update /etc/fstab.\n"
+msgstr "Gløym ikkje å oppdatera /etc/fstab, om naudsynt.\n"
+
+#: parted/ui.c:162
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+
+#: parted/ui.c:165
+#, fuzzy
+msgid ""
+"Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]\n"
+"Apply COMMANDs with PARAMETERS to DEVICE.  If no COMMAND(s) are given, run "
+"in\n"
+"interactive mode.\n"
+msgstr ""
+"Bruk: parted [FLAGG]... [EINING [KOMMANDO [PARAMETER]...]...]\n"
+"Utfør KOMMANDO med PARAMETER på EINING.  Dersom ingen KOMMANDO er gjeven,\n"
+"køyrer GNU Parted i interaktiv modus.\n"
+
+#: parted/ui.c:170
+#, c-format
+msgid ""
+"\n"
+"\n"
+"You found a bug in GNU Parted! Here's what you have to do:\n"
+"\n"
+"Don't panic! The bug has most likely not affected any of your data.\n"
+"Help us to fix this bug by doing the following:\n"
+"\n"
+"Check whether the bug has already been fixed by checking\n"
+"the last version of GNU Parted that you can find at:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Please check this version prior to bug reporting.\n"
+"\n"
+"If this has not been fixed yet or if you don't know how to check,\n"
+"please visit the GNU Parted website:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"for further information.\n"
+"\n"
+"Your report should contain the version of this release (%s)\n"
+"along with the error message below, the output of\n"
+"\n"
+"\tparted DEVICE unit co print unit s print\n"
+"\n"
+"and the following history of commands you entered.\n"
+"Also include any additional information about your setup you\n"
+"consider important.\n"
+msgstr ""
+
+#: parted/ui.c:291
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+
+#: parted/ui.c:354
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+
+#: parted/ui.c:360
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+
+#: parted/ui.c:365
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+
+#: parted/ui.c:389
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:394
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+
+#: parted/ui.c:399
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:404
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+
+#: parted/ui.c:409
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+
+#: parted/ui.c:414
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+
+#: parted/ui.c:419
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+
+#: parted/ui.c:424
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+
+#: parted/ui.c:429
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+
+#: parted/ui.c:453
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+
+#: parted/ui.c:458
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+
+#: parted/ui.c:463
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+
+#: parted/ui.c:468
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+
+#: parted/ui.c:473
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+
+#: parted/ui.c:478
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+
+#: parted/ui.c:891
+#, fuzzy, c-format
+msgid "invalid token: %s"
+msgstr "Kunne ikkje opna %s."
+
+#: parted/ui.c:1048
+msgid "Expecting a partition number."
+msgstr "Forventa eit partisjonsnummer."
+
+#: parted/ui.c:1057
+msgid "Partition doesn't exist."
+msgstr "Partisjonen finst ikkje."
+
+#: parted/ui.c:1077
+msgid "Expecting a file system type."
+msgstr "Forventa ei filsystemtype."
+
+#: parted/ui.c:1084
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Filsystemtypen «%s» er ukjend."
+
+#: parted/ui.c:1105
+msgid "Expecting a disk label type."
+msgstr "Forventa ein disklabel-type."
+
+#: parted/ui.c:1203
+msgid "Can't create any more partitions."
+msgstr "Kan ikkje laga fleire partisjonar."
+
+#: parted/ui.c:1213
+msgid "Expecting a partition type."
+msgstr "Forventa ein partisjonstype."
+
+#: parted/ui.c:1361
+msgid "on"
+msgstr "på"
+
+#: parted/ui.c:1362
+msgid "off"
+msgstr "av"
+
+#: parted/ui.c:1379
+msgid "optimal"
+msgstr ""
+
+#: parted/ui.c:1380
+msgid "minimal"
+msgstr ""
+
+#: parted/ui.c:1513
+msgid "OPTIONs:"
+msgstr "FLAGG:"
+
+#: parted/ui.c:1518
+msgid "COMMANDs:"
+msgstr "KOMMANDOar:"
+
+#: parted/ui.c:1521
+#, c-format
+msgid ""
+"\n"
+"Report bugs to %s\n"
+msgstr ""
+
+#: parted/ui.c:1528
+#, c-format
+msgid "Using %s\n"
+msgstr "Brukar %s\n"
+
+#: parted/ui.c:1602
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr ""
+
+#, fuzzy
+#~ msgid "too few arguments"
+#~ msgstr "For mange dårlege sider."
+
+#, fuzzy
+#~ msgid "too many arguments"
+#~ msgstr "For mange dårlege sider."
+
+#, fuzzy
+#~ msgid "invalid minor device number: %s"
+#~ msgstr "Kunne ikkje opna %s."
+
+#~ msgid "Could not detect file system."
+#~ msgstr "Kan ikkje kjenna igjen noko filsystem."
+
+#, fuzzy
+#~ msgid "The file system is bigger than its volume!"
+#~ msgstr "Filsystemet er større enn volumet det ligg på!"
+
+#~ msgid "Support for opening %s file systems is not implemented yet."
+#~ msgstr "Støtte for å opna %s-filsystem er ikkje lagt inn enno."
+
+#~ msgid "Support for creating %s file systems is not implemented yet."
+#~ msgstr "Støtte for å laga %s-filsystem er ikkje lagt inn enno."
+
+#~ msgid "Support for checking %s file systems is not implemented yet."
+#~ msgstr "Støtte for å sjekka %s-filsystem for feil er ikkje lagt inn enno."
+
+#~ msgid "raw block copying"
+#~ msgstr "rå blokkopiering"
+
+#~ msgid "growing file system"
+#~ msgstr "aukar storleik på filsystemet"
+
+#~ msgid "Can't copy onto an overlapping partition."
+#~ msgstr "Kan ikkje kopiera inn i ein overlappande partisjon."
+
+#, fuzzy
+#~ msgid ""
+#~ "Direct support for copying file systems is not yet implemented for %s.  "
+#~ "However, support for resizing is implemented.  Therefore, the file system "
+#~ "can be copied if the new partition is at least as big as the old one.  "
+#~ "So, either shrink the partition you are trying to copy, or copy to a "
+#~ "bigger partition."
+#~ msgstr ""
+#~ "Å kopiera filsystemet er ikkje direkte støtta for %s.  Men, støtte for å "
+#~ "endra storleik er med, så filsystemet kan kopierast viss den nye "
+#~ "partisjonen er minst like stor som den gamle.  Du må altså anten krympa "
+#~ "partisjonen du prøver å kopiera, eller kopiera til ein større partisjon."
+
+#~ msgid "Support for copying %s file systems is not implemented yet."
+#~ msgstr "Støtte for å kopiera %s-filsystem er ikkje lagt inn enno."
+
+#~ msgid "Support for resizing %s file systems is not implemented yet."
+#~ msgstr "Støtte for å endra storleik på %s-filsystem er ikkje lagt inn enno."
+
+#, fuzzy
+#~ msgid "The file system is in an invalid state.  Perhaps it is mounted?"
+#~ msgstr "Filsystemet har ein ugyldig signatur til å vera eit FAT-filsystem."
+
+#, fuzzy
+#~ msgid "checking"
+#~ msgstr "check"
+
+#, fuzzy
+#~ msgid ""
+#~ "The reiserfs file system passed a basic check.  For a more comprehensive "
+#~ "check, run reiserfsck --check."
+#~ msgstr ""
+#~ "Ext2-filsystemet gjekk gjennom ein enkel sjekk.  For ein meir grundig "
+#~ "sjekk, bruk programmet e2fsck."
+
+#, fuzzy
+#~ msgid "Sorry, can't move the start of reiserfs partitions yet."
+#~ msgstr "Beklagar, kan ikkje flytta starten på ein ext2-partisjon enno!"
+
+#~ msgid "shrinking"
+#~ msgstr "krympar"
+
+#, fuzzy
+#~ msgid "expanding"
+#~ msgstr "Åtvaring"
+
+#, fuzzy
+#~ msgid "Device is too small for %lu blocks."
+#~ msgstr "Filsystemet er for lite for ext2."
+
+#~ msgid "Inconsistent group descriptors!"
+#~ msgstr "Inkonsistente gruppe-deskriptorar"
+
+#, fuzzy
+#~ msgid "File system full!"
+#~ msgstr "Filsystemet er fullt!"
+
+#, fuzzy
+#~ msgid "Invalid superblock.  Are you sure this is an ext2 file system?"
+#~ msgstr ""
+#~ "Ugyldig superblokk.  Er du sikker på at dette er eit ext2-filsystem?"
+
+#, fuzzy
+#~ msgid "File system has errors!  You should run e2fsck."
+#~ msgstr "Der er feil på filsystemet!  Køyr e2fsck først."
+
+#, fuzzy
+#~ msgid ""
+#~ "File system was not cleanly unmounted!  You should run e2fsck.  Modifying "
+#~ "an unclean file system could cause severe corruption."
+#~ msgstr ""
+#~ "Filsystemet vart ikkje avmontert på ein rein og pen måte.  Du må køyra "
+#~ "e2fsck.  Å gjera endringar på eit ureint filsystem kan føre til alvorleg "
+#~ "datatap."
+
+#~ msgid "Error allocating buffer cache."
+#~ msgstr "Kunne ikkje allokera buffercache."
+
+#, fuzzy
+#~ msgid ""
+#~ "Found an inode with a incorrect link count.  Better go run e2fsck first!"
+#~ msgstr "Fann ein inode med feil tal på lenkar.  Du bør køyra e2fsck først."
+
+#~ msgid "Not enough free inodes!"
+#~ msgstr "For få ledige inodar!"
+
+#, fuzzy
+#~ msgid "File system is too full to remove a group!"
+#~ msgstr "Filsystemet er for fullt til å sletta ei gruppe!"
+
+#, fuzzy
+#~ msgid "File system has too many allocated inodes to remove a group!"
+#~ msgstr "Filsystemet har for mange inodar i bruk til å sletta ei gruppe!"
+
+#~ msgid "adding groups"
+#~ msgstr "legg til grupper"
+
+#, fuzzy
+#~ msgid "Your file system is too full to resize it to %i blocks.  Sorry."
+#~ msgstr ""
+#~ "Filsystemet er for fullt til at ein kan endra storleiken til %i blokker.  "
+#~ "Beklagar."
+
+#, fuzzy
+#~ msgid ""
+#~ "Your file system has too many occupied inodes to resize it to %i blocks.  "
+#~ "Sorry."
+#~ msgstr ""
+#~ "Filsystemet har for mange inodar i bruk til at ein kan endra storleiken "
+#~ "til %i blokker.  Beklagar."
+
+#, fuzzy
+#~ msgid "File system was not cleanly unmounted!  You should run e2fsck."
+#~ msgstr ""
+#~ "Filsystemet vart ikkje avmontert på ein rein og pen måte.  Du må køyra "
+#~ "e2fsck."
+
+#, fuzzy
+#~ msgid "Cross-linked blocks found!  Better go run e2fsck first!"
+#~ msgstr "Krysslenka blokker funne!  Køyr e2fsck først!"
+
+#, fuzzy
+#~ msgid "Block %i has no reference?  Weird."
+#~ msgstr "Blokk %i har ingen referansar til seg?  Rart"
+
+#, fuzzy
+#~ msgid "Block %i shouldn't have been marked (%d, %d)!"
+#~ msgstr "Blokk %i burde ikkje ha vore merka!"
+
+#, fuzzy
+#~ msgid ""
+#~ "The ext2 file system passed a basic check.  For a more comprehensive "
+#~ "check, use the e2fsck program."
+#~ msgstr ""
+#~ "Ext2-filsystemet gjekk gjennom ein enkel sjekk.  For ein meir grundig "
+#~ "sjekk, bruk programmet e2fsck."
+
+#~ msgid "Sorry, can't move the start of ext2 partitions yet!"
+#~ msgstr "Beklagar, kan ikkje flytta starten på ein ext2-partisjon enno!"
+
+#~ msgid "Couldn't flush buffer cache!"
+#~ msgstr "Kunne ikkje lagra buffercache til disk!"
+
+#~ msgid "writing per-group metadata"
+#~ msgstr "skriv per-gruppe metadata"
+
+#~ msgid "File system too small for ext2."
+#~ msgstr "Filsystemet er for lite for ext2."
+
+#, fuzzy
+#~ msgid ""
+#~ "You need %s of free disk space to shrink this partition to this size.  "
+#~ "Currently, only %s is free."
+#~ msgstr ""
+#~ "Du treng %d MiB med ledig diskplass for å krympa partisjonen til denne "
+#~ "storleiken (du har for tida berre %d MiB ledig)"
+
+#~ msgid ""
+#~ "Cluster start delta = %d, which is not a multiple of the cluster size %d."
+#~ msgstr ""
+#~ "Allokeringseininga sitt startdelta er %d, og det er ikkje eit multiplum "
+#~ "av storleiken %d."
+
+#, fuzzy
+#~ msgid "Partition too big/small for a %s file system."
+#~ msgstr "Partisjonen er for liten eller stor for eit %s-filsystem"
+
+#~ msgid ""
+#~ "The FATs don't match.  If you don't know what this means, then select "
+#~ "cancel, run scandisk on the file system, and then come back."
+#~ msgstr ""
+#~ "FAT-ane stemmer ikkje overeins.  Viss du ikkje veit kva dette tyder, vel "
+#~ "avbryt, køyr scandisk på filsystem, og kom attende."
+
+#~ msgid "There are no possible configurations for this FAT type."
+#~ msgstr "Der er ingen moglege konfigurasjonar for denne FAT-typen."
+
+#~ msgid ""
+#~ "File system doesn't have expected sizes for Windows to like it.  Cluster "
+#~ "size is %dk (%dk expected); number of clusters is %d (%d expected); size "
+#~ "of FATs is %d sectors (%d expected)."
+#~ msgstr ""
+#~ "Filsystemet har ikkje parametrar som Windows vil like.  "
+#~ "Allokeringseininga er %d KiB (%d KiB er forventa), talet på "
+#~ "allokeringseiningar er %d (%d er forventa), FAT-ane er på %d sektorar (%d "
+#~ "er forventa)."
+
+#~ msgid ""
+#~ "File system is reporting the free space as %d clusters, not %d clusters."
+#~ msgstr ""
+#~ "Filsystemet rapporterer %d allokeringseiningar med ledig plass, ikkje %d."
+
+#, fuzzy
+#~ msgid ""
+#~ "There's not enough room in the root directory for all of the files.  "
+#~ "Either cancel, or ignore to lose the files."
+#~ msgstr ""
+#~ "Der er ikkje plass i toppkatalogen til alle filene.  Vel anten avbryt, "
+#~ "eller oversjå feilen for å misse alle filene."
+
+#~ msgid "Error writing to the root directory."
+#~ msgstr "Feil ved skriving til toppkatalogen."
+
+#, fuzzy
+#~ msgid ""
+#~ "If you leave your file system as FAT16, then you will have no problems."
+#~ msgstr "Viss du let filsystemet vera FAT16, vil du ikkje ha nokon problem."
+
+#~ msgid ""
+#~ "If you convert to FAT16, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual)."
+#~ msgstr ""
+#~ "Viss du konverterer til FAT16 og MS Windows er installert på denne "
+#~ "partisjonen, må du leggja inn boot-lastaren til MS Windows på nytt.  "
+#~ "Dersom du vil gjera dette, bør du lesa Parted-manualen (eller manualen "
+#~ "som høyrer til distribusjonen din)."
+
+#~ msgid ""
+#~ "If you leave your file system as FAT32, then you will not introduce any "
+#~ "new problems."
+#~ msgstr ""
+#~ "Viss du let filsystemet vera FAT32, vil du ikkje få nokon nye problem."
+
+#~ msgid ""
+#~ "If you convert to FAT32, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual).  Also, converting to FAT32 will make the file system unreadable "
+#~ "by MS DOS, MS Windows 95a, and MS Windows NT."
+#~ msgstr ""
+#~ "Viss du konverterer til FAT32, og MS Windows er installert på denne "
+#~ "partisjonen, må du leggja inn boot-lastaren til MS Windows på nytt.  "
+#~ "Dersom du vil gjera dette, bør du lesa Parted-manualen (eller manualen "
+#~ "som høyrer til distribusjonen din).  FAT32 er også uleseleg for MS-DOS, "
+#~ "MS Windows 95a og NT."
+
+#~ msgid "%s  %s  %s"
+#~ msgstr "%s  %s  %s"
+
+#~ msgid "Would you like to use FAT32?"
+#~ msgstr "Ønskjer du å bruka FAT32?"
+
+#~ msgid "%s  %s"
+#~ msgstr "%s  %s"
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT16."
+#~ msgstr "Filsystemet kan kun få denne storleiken ved å konvertera til FAT16."
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT32."
+#~ msgstr "Filsystemet kan kun få denne storleiken ved å konvertera til FAT32."
+
+#, fuzzy
+#~ msgid ""
+#~ "GNU Parted cannot resize this partition to this size.  We're working on "
+#~ "it!"
+#~ msgstr ""
+#~ "GNU Parted kan ikkje endra storleiken til dette.  Vi arbeider med saka!"
+
+#~ msgid "Bad directory entry for %s: first cluster is the end of file marker."
+#~ msgstr ""
+#~ "Feil i katalogoppføringa for %s: første allokeringseininga markerer slutt "
+#~ "på fila."
+
+#~ msgid ""
+#~ "Bad FAT: unterminated chain for %s.  You should run dosfsck or scandisk."
+#~ msgstr ""
+#~ "Feil på FAT: endelaus kjede for %s.  Du bør køyre dosfsck eller scandisk."
+
+#, fuzzy
+#~ msgid ""
+#~ "Bad FAT: cluster %d outside file system in chain for %s.  You should run "
+#~ "dosfsck or scandisk."
+#~ msgstr ""
+#~ "Feil på FAT: allokeringseining %d er utanfor filsystemet i kjeda for %s.  "
+#~ "Du bør køyra dosfsck eller scandisk."
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d is cross-linked for %s.  You should run dosfsck or "
+#~ "scandisk."
+#~ msgstr ""
+#~ "Feil på FAT: allokeringseining %d er krysslenka for %s.  Du bør køyre "
+#~ "dosfsck eller scandisk."
+
+#~ msgid "%s is %dk, but it has %d clusters (%dk)."
+#~ msgstr "%s er %d KiB, men har %d allokeringseiningar (%d KiB)."
+
+#~ msgid ""
+#~ "The file %s is marked as a system file.  This means moving it could cause "
+#~ "some programs to stop working."
+#~ msgstr ""
+#~ "Fila %s er klassifisert som ei systemfil.  Å flytta denne fila kan føra "
+#~ "til at nokon program sluttar å fungera."
+
+#~ msgid ""
+#~ "FAT %d media %x doesn't match the boot sector's media %x.  You should "
+#~ "probably run scandisk."
+#~ msgstr ""
+#~ "FAT %d media %x stemmer ikkje overeins med bootsektorens media %x.  Du "
+#~ "bør sannsynlegvis køyra scandisk."
+
+#, fuzzy
+#~ msgid "fat_table_set: cluster %ld outside file system"
+#~ msgstr "fat_table_set: allokeringseining %ld utanfor filsystemet"
+
+#, fuzzy
+#~ msgid "fat_table_get: cluster %ld outside file system"
+#~ msgstr "fat_table_get: allokeringseining %ld utanfor filsystemet"
+
+#~ msgid "fat_table_alloc_cluster: no free clusters"
+#~ msgstr "fat_table_alloc_cluster: ingen ledige allokeringseiningar"
+
+#~ msgid "Too many bad pages."
+#~ msgstr "For mange dårlege sider."
+
+#, fuzzy
+#~ msgid "writing HFS Master Directory Block"
+#~ msgstr "Feil ved skriving til toppkatalogen."
+
+#, fuzzy
+#~ msgid "Error while writing the allocation file."
+#~ msgstr "Feil ved skriving til toppkatalogen."
+
+#, fuzzy
+#~ msgid "Error while writing the compatibility part of the allocation file."
+#~ msgstr "Feil ved skriving til toppkatalogen."
+
+#, fuzzy
+#~ msgid "shrinking HFS wrapper"
+#~ msgstr "krympar"
+
+#, fuzzy
+#~ msgid "Journal offset or size is not multiple of the sector size."
+#~ msgstr ""
+#~ "Allokeringseininga sitt startdelta er %d, og det er ikkje eit multiplum "
+#~ "av storleiken %d."
+
+#, fuzzy
+#~ msgid "Some header fields are not multiple of the sector size."
+#~ msgstr ""
+#~ "Allokeringseininga sitt startdelta er %d, og det er ikkje eit multiplum "
+#~ "av storleiken %d."
+
+#, fuzzy
+#~ msgid "Could not cache the file system in memory."
+#~ msgstr "Kan ikkje kjenna igjen noko filsystem."
+
+#~ msgid "Source device?"
+#~ msgstr "Kva eining skal vera kjelda?"
+
+#~ msgid "Source partition number?"
+#~ msgstr "Kva partisjonsnummer skal vera kjelda?"
+
+#, fuzzy
+#~ msgid "Can't copy an extended partition."
+#~ msgstr "Kan ikkje kopiera utvidingspartisjonar."
+
+#~ msgid "Destination partition number?"
+#~ msgstr "Kva partisjonsnummer er målet?"
+
+#, fuzzy
+#~ msgid ""
+#~ "An extended partition cannot hold a file system.  Did you want mkpart?"
+#~ msgstr "Utvidingspartisjonar kan ikkje ha filsystem.  Meinte du mkpart?"
+
+#, fuzzy
+#~ msgid "Can't move an extended partition."
+#~ msgstr "Kan ikkje flytta utvidingspartisjonar."
+
+#~ msgid "Can't move a partition onto itself.  Try using resize, perhaps?"
+#~ msgstr ""
+#~ "Kan ikkje flytta ein partisjon til seg sjølv.  Kanskje du vil prøva å "
+#~ "endra storleik?"
+
+#~ msgid "Minor: %d\n"
+#~ msgstr "Nummer: %d\n"
+
+#, fuzzy
+#~ msgid "Flags: %s\n"
+#~ msgstr "Flagg: "
+
+#~ msgid "File System: %s\n"
+#~ msgstr "Filsystem: %s\n"
+
+#, fuzzy
+#~ msgid "Size:         "
+#~ msgstr "Storleik:         %10.3fMiB (%d%%)\n"
+
+#, fuzzy
+#~ msgid "Minimum size: "
+#~ msgstr "Minste storleik:  %10.3fMiB (%d%%)\n"
+
+#, fuzzy
+#~ msgid "Maximum size: "
+#~ msgstr "Største storleik: %10.3fMiB (%d%%)\n"
+
+#~ msgid "check"
+#~ msgstr "check"
+
+#, fuzzy
+#~ msgid ""
+#~ "check NUMBER                             do a simple check on the file "
+#~ "system"
+#~ msgstr ""
+#~ "check NR                      ta ein enkel konsistenssjekk av filsystemet"
+
+#~ msgid "cp"
+#~ msgstr "cp"
+
+#, fuzzy
+#~ msgid ""
+#~ "cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   copy file system to another "
+#~ "partition"
+#~ msgstr ""
+#~ "cp [FRÅ-EINING] FRÅ-NR TIL-NR      kopier filsystem til ein annan "
+#~ "partisjon"
+
+#~ msgid "mkfs"
+#~ msgstr "mkfs"
+
+#, fuzzy
+#~ msgid ""
+#~ "mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on "
+#~ "partition NUMBER"
+#~ msgstr ""
+#~ "mkfs NR FS-TYPE               lag eit filsystem av FS-TYPE på partisjon NR"
+
+#~ msgid "mkpartfs"
+#~ msgstr "mkpartfs"
+
+#, fuzzy
+#~ msgid ""
+#~ "mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file "
+#~ "system"
+#~ msgstr ""
+#~ "mkpartfs PART-TYPE FS-TYPE START SLUTT    lag ein partition med eit "
+#~ "filsystem"
+
+#~ msgid "move"
+#~ msgstr "move"
+
+#, fuzzy
+#~ msgid "move NUMBER START END                    move partition NUMBER"
+#~ msgstr "move NR START SLUTT           flytt partisjonen NR"
+
+#~ msgid "resize"
+#~ msgstr "resize"
+
+#, fuzzy
+#~ msgid ""
+#~ "resize NUMBER START END                  resize partition NUMBER and its "
+#~ "file system"
+#~ msgstr ""
+#~ "rescue START SLUTT            redd tapte partisjonar nær START og SLUTT"
+
+#, fuzzy
+#~ msgid "Unable to determine the block size of this dasd"
+#~ msgstr "Klarte ikkje å finna storleiken til %s (%s)"
+
+#, fuzzy
+#~ msgid ""
+#~ "The kernel was unable to re-read the partition table on %s (%s).  This "
+#~ "means Linux won't know anything about the modifications you made until "
+#~ "you reboot.  You should reboot your computer before doing anything with "
+#~ "%s."
+#~ msgstr ""
+#~ "Kjerna klarte ikkje å lesa partisjonstabellen på %s på nytt (%s).  Dette "
+#~ "tyder at Linux ikkje veit om endringane du har gjort.  Du må ta omstart "
+#~ "på maskinen din før du gjer noko med %s."
+
+#~ msgid ""
+#~ "The sector size on %s is %d bytes.  Parted is known not to work properly "
+#~ "with drives with sector sizes other than %d bytes"
+#~ msgstr ""
+#~ "Sektorane på %s er %d oktettar store.  Parted fungerer berre skikkeleg på "
+#~ "diskar som har ein sektorstorleik på %d oktettar"
+
+#~ msgid "Device %s has dodgey geometry."
+#~ msgstr "Eininga %s har tvilsam geometri."
+
+#~ msgid "IDE"
+#~ msgstr "IDE"
+
+#~ msgid "SCSI"
+#~ msgstr "SCSI"
+
+#~ msgid "Device %s is neither a SCSI nor IDE drive."
+#~ msgstr "Eininga %s er korkje ein SCSI- eller IDE-disk."
+
+#~ msgid "Error reading %s (%s) to determine if partition is mounted."
+#~ msgstr "Feil ved lesing av %s (%s) for å avgjera om partisjonen er montert."
+
+#~ msgid ""
+#~ "Unable to determine if partitions are mounted via /proc/mounts or /etc/"
+#~ "mtab.  Make sure you don't attempt to resize or modify mounted file "
+#~ "systems.  (Even read-only mounted)"
+#~ msgstr ""
+#~ "Kunne ikkje finna liste over monterte partisjonar i /proc/mounts eller /"
+#~ "etc/mtab.  Forsikra deg om at du ikkje prøver å endra på monterte "
+#~ "filsystem (sjølv om dei er montert med kun lesetilgang)"
+
+#~ msgid ""
+#~ "The partition table on %s is inconsistent.  There are many reasons why "
+#~ "this might be the case.  However, the most likely reason is that Linux "
+#~ "detected the BIOS geometry for %s incorrectly.  GNU Parted suspects the "
+#~ "real geometry should be %d/%d/%d (not %d/%d/%d).  You should check with "
+#~ "your BIOS first, as this may not be correct.  You can inform Linux by "
+#~ "adding the parameter %s=%d,%d,%d to the command line.  See the LILO or "
+#~ "GRUB documentation for more information.  If you think Parted's suggested "
+#~ "geometry is correct, you may select Ignore to continue (and fix Linux "
+#~ "later).  Otherwise, select Cancel (and fix Linux and/or the BIOS now)."
+#~ msgstr ""
+#~ "Partisjonstabellen på %s er inkonsistent.  Det kan koma av mange ting, "
+#~ "men mest sannsynleg har Linux brukt feil BIOS-geometri for %s.  GNU "
+#~ "Parted trur den verkelege geometrien er %d/%d/%d (ikkje %d/%d/%d).  Sjekk "
+#~ "først i BIOS om det stemmer.  Du kan læra Linux dette ved å leggja til "
+#~ "parameteren %s=%d,%d,%d på kjernekommandolinja.  Sjå dokumentasjonen til "
+#~ "LILO eller GRUB for meir informasjon.  Viss du trur geometrien Parted "
+#~ "foreslår er rett, kan du velja Ignorer for å halda fram (og fiksa Linux "
+#~ "seinare).  Viss ikkje, vel Avbryt (og fiks Linux og/eller BIOS-en no)."
+
+#~ msgid ""
+#~ "The partition table on %s is inconsistent.  There are many reasons why "
+#~ "this might be the case.  Often, the reason is that Linux detected the "
+#~ "BIOS geometry incorrectly.  However, this does not appear to be the case "
+#~ "here.  It is safe to ignore,but ignoring may cause (fixable) problems "
+#~ "with some boot loaders, and may cause problems with FAT file systems.  "
+#~ "Using LBA is recommended."
+#~ msgstr ""
+#~ "Partisjonstabellen på %s er inkonsistent.  Det kan koma av mange ting, og "
+#~ "ofte er grunnen at Linux har brukt feil BIOS-geometri.  I dette tilfellet "
+#~ "ser det ikkje slik ut.  Det er trygt å oversjå denne feilen, men du kan "
+#~ "koma bort i problem med boot-lastaren (som kan rettast opp), og med FAT-"
+#~ "filsystem.  Det er tilrådd å bruka LBA."
+
+#~ msgid ""
+#~ "Unable to align partition properly.  This probably means that another "
+#~ "partitioning tool generated an incorrect partition table, because it "
+#~ "didn't have the correct BIOS geometry.  It is safe to ignore,but ignoring "
+#~ "may cause (fixable) problems with some boot loaders."
+#~ msgstr ""
+#~ "Kunne ikkje plassera partisjonen på ei passande skiljelinje.  Dette tyder "
+#~ "vanlegvis at eit anna partisjonsprogram har laga ein partisjonstabell med "
+#~ "feil BIOS-geometri.  Det er trygt å oversjå denne feilen, men du kan kome "
+#~ "bort i problem med boot-lastaren (som kan rettast opp)."
+
+#~ msgid "Attempt to read sectors %ld-%ld outside of partition on %s"
+#~ msgstr "Prøvde å lesa sektorane %ld-%ld utanfor partisjonen på %s"
+
+#~ msgid ""
+#~ "This ext2 filesystem has a rather strange layout!  Parted can't resize "
+#~ "this (yet)."
+#~ msgstr ""
+#~ "Dette ext2-filsystemet har eit ganske rart utlegg.  Parted kan ikkje "
+#~ "endra storleiken på det (enno)."
+
+#~ msgid "Filesystem has incompatible feature enabled"
+#~ msgstr "Filsystemet brukar finessar GNU parted ikkje støttar"
+
+#~ msgid "File system has an invalid signature for a FAT file systems."
+#~ msgstr "Filsystemet har ein ugyldig signatur til å vera eit FAT-filsystem."
+
+#~ msgid "where necessary, prompts for user intervention"
+#~ msgstr "der naudsynt, spør brukaren"
+
+#~ msgid ""
+#~ "Partition %s is being used.  Modifying it while it is in use could cause "
+#~ "severe corruption."
+#~ msgstr ""
+#~ "Partisjonen %s er i bruk.  Endringar no kan føre til alvorleg datatap."
+
+#~ msgid ""
+#~ "You requested to move the partition to %.3f-%.3fMb. The closest Parted "
+#~ "can manage is %.3f-%.3fMb."
+#~ msgstr ""
+#~ "Du bad om å flytta partisjonen til %.3f-%.3f MiB.  Det nærmaste Parted "
+#~ "kan klara er %.3f-%.3f MiB."
+
+#~ msgid "Disk geometry for %s: 0.000-%.3f megabytes\n"
+#~ msgstr "Diskgeometri for %s: 0.000-%.3f mebibytes\n"
+
+#~ msgid "Disk label type: %s\n"
+#~ msgstr "Disklabel-type: %s\n"
+
+#~ msgid "Minor    Start       End     "
+#~ msgstr "Nr       Start       End     "
+
+#~ msgid "Type      "
+#~ msgstr "Type      "
+
+#~ msgid "Filesystem  "
+#~ msgstr "Filsystem   "
+
+#~ msgid "Name                  "
+#~ msgstr "Namn                  "
+
+#~ msgid ""
+#~ "You requested to resize the partition to %.3f-%.3fMb. The closest Parted "
+#~ "can manage is %.3f-%.3fMb."
+#~ msgstr ""
+#~ "Du bad om å endra storleik på partisjonen til %.3f-%.3f MiB.  Det "
+#~ "nærmaste Parted kan klara er %.3f-%.3f MiB."
+
+#~ msgid ""
+#~ "print [MINOR]                 display the partition table, or a partition"
+#~ msgstr ""
+#~ "print [NR]                    vis partisjonstabellen eller ein partisjon"
+
+#~ msgid "resize MINOR START END        resize filesystem on partition MINOR"
+#~ msgstr ""
+#~ "resize NR START SLUTT         endra storleik på filsystemet på "
+#~ "partisjonen NR"
+
+#~ msgid ""
+#~ "You found a bug in GNU Parted.  Please email a bug report to bug-"
+#~ "parted@gnu.org containing the version (%s), and the following message:\n"
+#~ msgstr ""
+#~ "Du har funne ein programfeil i GNU Parted.  Ver venleg å senda ei "
+#~ "feilmelding til bug-parted@gnu.org der du oppgjev versjonsnummeret (%s) "
+#~ "og fylgjande melding:\n"
+
+#~ msgid ""
+#~ "  You have Windows FAT partition(s) that are not using LBA.  If your BIOS "
+#~ "supports LBA, then you should switch to LBA by setting the LBA flag on "
+#~ "all FAT partitions.  Otherwise, make sure the operating system and the "
+#~ "BIOS have the same geometry before resizing any FAT partitions."
+#~ msgstr ""
+#~ "  Du har Windows FAT-partisjon(ar) som ikkje brukar LBA.  Viss BIOS "
+#~ "støttar LBA, bør du bytta til LBA ved å setja LBA-flagget på alle FAT-"
+#~ "partisjonar.  Viss ikkje, sjekk at operativsystemet og BIOS har same "
+#~ "formeining om diskgeomtetri før du endrar storleik på nokon av FAT-"
+#~ "partisjonane."
+
+#~ msgid ""
+#~ "The operating system thinks the geometry on %s is %d/%d/%d.  Therefore, "
+#~ "cylinder 1024 ends at %.3fM.%s"
+#~ msgstr ""
+#~ "Operativsystemet trur geometrien på %s er %d/%d/%d, altså endar sylinder "
+#~ "1024 på %.3f MiB.%s"
+
+#~ msgid "The operating system thinks the geometry on %s is %d/%d/%d.%s"
+#~ msgstr "Operativsystemet meiner at geometrien til %s er %d/%d/%d.%s"
diff --git a/po/parted.pot b/po/parted.pot
new file mode 100644 (file)
index 0000000..4879bb5
--- /dev/null
@@ -0,0 +1,2289 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU parted 3.0\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2011-05-30 13:45+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr ""
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr ""
+
+#: lib/argmatch.c:153
+#, c-format
+msgid "Valid arguments are:"
+msgstr ""
+
+#: lib/closeout.c:112 libparted/labels/fdasd.c:107
+msgid "write error"
+msgstr ""
+
+#: lib/error.c:181
+msgid "Unknown system error"
+msgstr ""
+
+#: lib/getopt.c:548 lib/getopt.c:577
+#, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
+msgstr ""
+
+#: lib/getopt.c:625 lib/getopt.c:629
+#, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:638 lib/getopt.c:643
+#, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:686 lib/getopt.c:705
+#, c-format
+msgid "%s: option '--%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:743 lib/getopt.c:746
+#, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr ""
+
+#: lib/getopt.c:754 lib/getopt.c:757
+#, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr ""
+
+#: lib/getopt.c:806 lib/getopt.c:809
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr ""
+
+#: lib/getopt.c:859 lib/getopt.c:876 lib/getopt.c:1084 lib/getopt.c:1102
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr ""
+
+#: lib/getopt.c:932 lib/getopt.c:948
+#, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:972 lib/getopt.c:990
+#, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:1011 lib/getopt.c:1029
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr ""
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:271
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:272
+msgid "'"
+msgstr ""
+
+#: lib/regcomp.c:133
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:136
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:139
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:142
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:145
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:148
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:151
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:154
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:157
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:160
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:163
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:166
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:169
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:172
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:175
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:178
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:181
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:702
+msgid "No previous regular expression"
+msgstr ""
+
+#. TRANSLATORS: A regular expression testing for an affirmative answer
+#. (english: "yes").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^yesexpr='
+#: lib/rpmatch.c:147
+msgid "^[yY]"
+msgstr ""
+
+#. TRANSLATORS: A regular expression testing for a negative answer
+#. (english: "no").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^noexpr='
+#: lib/rpmatch.c:160
+msgid "^[nN]"
+msgstr ""
+
+#: lib/version-etc.c:74
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr ""
+
+#: lib/version-etc.c:77
+#, c-format
+msgid "Packaged by %s\n"
+msgstr ""
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale.  Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:84
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:86
+msgid ""
+"\n"
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:102
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:106
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:110
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:131
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:139
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:147
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:156
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:167
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package.  Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:245
+#, c-format
+msgid ""
+"\n"
+"Report bugs to: %s\n"
+msgstr ""
+
+#: lib/version-etc.c:247
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr ""
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr ""
+
+#: lib/version-etc.c:253
+#, c-format
+msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
+msgstr ""
+
+#: lib/version-etc.c:256
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr ""
+
+#: lib/xstrtol-error.c:63
+#, c-format
+msgid "invalid %s%s argument `%s'"
+msgstr ""
+
+#: lib/xstrtol-error.c:68
+#, c-format
+msgid "invalid suffix in %s%s argument `%s'"
+msgstr ""
+
+#: lib/xstrtol-error.c:72
+#, c-format
+msgid "%s%s argument `%s' too large"
+msgstr ""
+
+#: libparted/arch/beos.c:245
+msgid "Disk Image"
+msgstr ""
+
+#: libparted/arch/beos.c:346 libparted/arch/gnu.c:277
+#: libparted/arch/linux.c:1545
+#, c-format
+msgid "Error opening %s: %s"
+msgstr ""
+
+#: libparted/arch/beos.c:357 libparted/arch/gnu.c:287
+#: libparted/arch/linux.c:1556
+#, c-format
+msgid "Unable to open %s read-write (%s).  %s has been opened read-only."
+msgstr ""
+
+#: libparted/arch/beos.c:419 libparted/arch/linux.c:1714
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr ""
+
+#: libparted/arch/beos.c:452 libparted/arch/gnu.c:465 libparted/arch/gnu.c:564
+#: libparted/arch/gnu.c:692 libparted/arch/linux.c:1674
+#: libparted/arch/linux.c:1755
+#, c-format
+msgid "%s during read on %s"
+msgstr ""
+
+#: libparted/arch/beos.c:488 libparted/arch/gnu.c:525
+#: libparted/arch/linux.c:1831
+#, c-format
+msgid "Can't write to %s, because it is opened read-only."
+msgstr ""
+
+#: libparted/arch/beos.c:504 libparted/arch/linux.c:1856
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr ""
+
+#: libparted/arch/beos.c:541 libparted/arch/gnu.c:601 libparted/arch/gnu.c:646
+#: libparted/arch/gnu.c:723 libparted/arch/linux.c:1804
+#: libparted/arch/linux.c:1898 libparted/arch/linux.c:1970
+#, c-format
+msgid "%s during write on %s"
+msgstr ""
+
+#: partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr ""
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the operating system about partition table changes.\n"
+"\n"
+"  -d, --dry-run    do not actually inform the operating system\n"
+"  -s, --summary    print a summary of contents\n"
+"  -h, --help       display this help and exit\n"
+"  -v, --version    output version information and exit\n"
+msgstr ""
+
+#: partprobe/partprobe.c:150
+msgid ""
+"\n"
+"When no DEVICE is given, probe all partitions.\n"
+msgstr ""
+
+#: partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: libparted/arch/gnu.c:110
+#, c-format
+msgid "Unable to open %s."
+msgstr ""
+
+#: libparted/arch/gnu.c:130
+msgid "Unable to probe store."
+msgstr ""
+
+#: libparted/arch/gnu.c:368
+msgid ""
+"The partition table cannot be re-read.  This means you need to reboot before "
+"mounting any modified partitions.  You also need to reinstall your boot "
+"loader before you reboot (which may require mounting modified partitions).  "
+"It is impossible do both things!  So you'll need to boot off a rescue disk, "
+"and reinstall your boot loader from the rescue disk.  Read section 4 of the "
+"Parted User documentation for more information."
+msgstr ""
+
+#: libparted/arch/gnu.c:385
+#, c-format
+msgid ""
+"The partition table on %s cannot be re-read (%s).  This means the Hurd knows "
+"nothing about any modifications you made.  You should reboot your computer "
+"before doing anything with %s."
+msgstr ""
+
+#: libparted/arch/gnu.c:396 parted/parted.c:1967
+msgid ""
+"You should reinstall your boot loader before rebooting.  Read section 4 of "
+"the Parted User documentation for more information."
+msgstr ""
+
+#: libparted/arch/gnu.c:788
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr ""
+
+#: libparted/arch/linux.c:520
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr ""
+
+#: libparted/arch/linux.c:577
+#, c-format
+msgid "Unable to determine the dm type of %s."
+msgstr ""
+
+#: libparted/arch/linux.c:669
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+
+#: libparted/arch/linux.c:690
+#, c-format
+msgid ""
+"Could not determine physical sector size for %s.\n"
+"Using the logical sector size (%lld)."
+msgstr ""
+
+#: libparted/arch/linux.c:746
+#, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr ""
+
+#: libparted/arch/linux.c:832
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr ""
+
+#: libparted/arch/linux.c:841
+msgid "Generic IDE"
+msgstr ""
+
+#: libparted/arch/linux.c:862
+#, c-format
+msgid ""
+"Device %s has multiple (%d) logical sectors per physical sector.\n"
+"GNU Parted supports this EXPERIMENTALLY for some special disk label/file "
+"system combinations, e.g. GPT and ext2/3.\n"
+"Please consult the web site for up-to-date information."
+msgstr ""
+
+#: libparted/arch/linux.c:1039
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr ""
+
+#: libparted/arch/linux.c:1103
+#, c-format
+msgid ""
+"The device %s is so small that it cannot possibly store a file system or "
+"partition table.  Perhaps you selected the wrong device?"
+msgstr ""
+
+#: libparted/arch/linux.c:1216
+#, c-format
+msgid ""
+"Unable to determine geometry of file/device %s.  You should not use Parted "
+"unless you REALLY know what you're doing!"
+msgstr ""
+
+#: libparted/arch/linux.c:1276
+msgid "Generic SD/MMC Storage Card"
+msgstr ""
+
+#: libparted/arch/linux.c:1329
+msgid "DAC960 RAID controller"
+msgstr ""
+
+#: libparted/arch/linux.c:1334
+msgid "Promise SX8 SATA Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1339
+msgid "ATA over Ethernet Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1345
+msgid "IBM S390 DASD drive"
+msgstr ""
+
+#: libparted/arch/linux.c:1351
+msgid "IBM iSeries Virtual DASD"
+msgstr ""
+
+#: libparted/arch/linux.c:1356
+msgid "Compaq Smart Array"
+msgstr ""
+
+#: libparted/arch/linux.c:1361
+msgid "ATARAID Controller"
+msgstr ""
+
+#: libparted/arch/linux.c:1366
+msgid "I2O Controller"
+msgstr ""
+
+#: libparted/arch/linux.c:1371
+msgid "User-Mode Linux UBD"
+msgstr ""
+
+#: libparted/arch/linux.c:1384
+#, c-format
+msgid "Linux device-mapper (%s)"
+msgstr ""
+
+#: libparted/arch/linux.c:1395
+msgid "Xen Virtual Block Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1400
+msgid "Unknown"
+msgstr ""
+
+#: libparted/arch/linux.c:1409
+msgid "Virtio Block Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1414
+msgid "Linux Software RAID Array"
+msgstr ""
+
+#: libparted/arch/linux.c:1421
+msgid "ped_device_new()  Unsupported device type"
+msgstr ""
+
+#: libparted/arch/linux.c:1518 libparted/arch/linux.c:1590
+#, c-format
+msgid "Error fsyncing/closing %s: %s"
+msgstr ""
+
+#: libparted/arch/linux.c:1754
+#, c-format
+msgid "end of file while reading %s"
+msgstr ""
+
+#: libparted/arch/linux.c:2390
+#, c-format
+msgid ""
+"Error informing the kernel about modifications to partition %s -- %s.  This "
+"means Linux won't know about any changes you made to %s until you reboot -- "
+"so you shouldn't mount it or use it in any way before rebooting."
+msgstr ""
+
+#: libparted/arch/linux.c:2528
+#, c-format
+msgid "Unable to determine the size and length of %s."
+msgstr ""
+
+#: libparted/arch/linux.c:2553
+#, c-format
+msgid "Failed to add partition %d (%s)"
+msgstr ""
+
+#: libparted/arch/linux.c:2580
+#, c-format
+msgid ""
+"Partition(s) %s on %s have been written, but we have been unable to inform "
+"the kernel of the change, probably because it/they are in use.  As a result, "
+"the old partition(s) will remain in use.  You should reboot now before "
+"making further changes."
+msgstr ""
+
+#: libparted/arch/linux.c:2706
+#, c-format
+msgid ""
+"parted was unable to re-read the partition table on %s (%s).  This means "
+"Linux won't know anything about the modifications you made. "
+msgstr ""
+
+#: libparted/cs/geom.c:161
+#, c-format
+msgid "Can't have the end before the start! (start sector=%jd length=%jd)"
+msgstr ""
+
+#: libparted/cs/geom.c:169
+msgid "Can't have a partition outside the disk!"
+msgstr ""
+
+#: libparted/cs/geom.c:384
+#, c-format
+msgid "Attempt to write sectors %ld-%ld outside of partition on %s."
+msgstr ""
+
+#: libparted/cs/geom.c:424
+msgid "checking for bad blocks"
+msgstr ""
+
+#: libparted/debug.c:96
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:109
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr ""
+
+#: libparted/disk.c:192
+#, c-format
+msgid "%s: unrecognised disk label"
+msgstr ""
+
+#: libparted/disk.c:484
+#, c-format
+msgid ""
+"This libparted doesn't have write support for %s.  Perhaps it was compiled "
+"read-only."
+msgstr ""
+
+#: libparted/disk.c:629
+#, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr ""
+
+#: libparted/disk.c:838
+msgid "cylinder_alignment"
+msgstr ""
+
+#: libparted/disk.c:844
+#, c-format
+msgid "Unknown disk flag, %d."
+msgstr ""
+
+#: libparted/disk.c:1283
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr ""
+
+#: libparted/disk.c:1858
+#, c-format
+msgid "%s disk labels don't support logical or extended partitions."
+msgstr ""
+
+#: libparted/disk.c:1871
+msgid "Too many primary partitions."
+msgstr ""
+
+#: libparted/disk.c:1880
+#, c-format
+msgid ""
+"Can't add a logical partition to %s, because there is no extended partition."
+msgstr ""
+
+#: libparted/disk.c:1904
+#, c-format
+msgid "Can't have more than one extended partition on %s."
+msgstr ""
+
+#: libparted/disk.c:1914
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr ""
+
+#: libparted/disk.c:1939
+#, c-format
+msgid "Can't have a logical partition outside of the extended partition on %s."
+msgstr ""
+
+#: libparted/disk.c:1949 libparted/disk.c:2008 libparted/disk.c:2186
+msgid "Can't have overlapping partitions."
+msgstr ""
+
+#: libparted/disk.c:1957
+msgid "Can't have a primary partition inside an extended partition."
+msgstr ""
+
+#: libparted/disk.c:2387
+msgid "metadata"
+msgstr ""
+
+#: libparted/disk.c:2389
+msgid "free"
+msgstr ""
+
+#: libparted/disk.c:2391 parted/ui.c:1194 parted/ui.c:1222
+msgid "extended"
+msgstr ""
+
+#: libparted/disk.c:2393 parted/ui.c:1198 parted/ui.c:1226
+msgid "logical"
+msgstr ""
+
+#: libparted/disk.c:2395 parted/ui.c:1190 parted/ui.c:1218
+msgid "primary"
+msgstr ""
+
+#: libparted/disk.c:2411
+msgid "boot"
+msgstr ""
+
+#: libparted/disk.c:2413
+msgid "bios_grub"
+msgstr ""
+
+#: libparted/disk.c:2415
+msgid "root"
+msgstr ""
+
+#: libparted/disk.c:2417
+msgid "swap"
+msgstr ""
+
+#: libparted/disk.c:2419
+msgid "hidden"
+msgstr ""
+
+#: libparted/disk.c:2421
+msgid "raid"
+msgstr ""
+
+#: libparted/disk.c:2423
+msgid "lvm"
+msgstr ""
+
+#: libparted/disk.c:2425
+msgid "lba"
+msgstr ""
+
+#: libparted/disk.c:2427
+msgid "hp-service"
+msgstr ""
+
+#: libparted/disk.c:2429
+msgid "palo"
+msgstr ""
+
+#: libparted/disk.c:2431
+msgid "prep"
+msgstr ""
+
+#: libparted/disk.c:2433
+msgid "msftres"
+msgstr ""
+
+#: libparted/disk.c:2435
+msgid "atvrecv"
+msgstr ""
+
+#: libparted/disk.c:2437
+msgid "diag"
+msgstr ""
+
+#: libparted/disk.c:2439
+msgid "legacy_boot"
+msgstr ""
+
+#: libparted/disk.c:2445
+#, c-format
+msgid "Unknown partition flag, %d."
+msgstr ""
+
+#: libparted/exception.c:77
+msgid "Information"
+msgstr ""
+
+#: libparted/exception.c:78
+msgid "Warning"
+msgstr ""
+
+#: libparted/exception.c:79
+msgid "Error"
+msgstr ""
+
+#: libparted/exception.c:80
+msgid "Fatal"
+msgstr ""
+
+#: libparted/exception.c:81
+msgid "Bug"
+msgstr ""
+
+#: libparted/exception.c:82
+msgid "No Implementation"
+msgstr ""
+
+#: libparted/exception.c:86
+msgid "Fix"
+msgstr ""
+
+#: libparted/exception.c:87
+msgid "Yes"
+msgstr ""
+
+#: libparted/exception.c:88
+msgid "No"
+msgstr ""
+
+#: libparted/exception.c:89
+msgid "OK"
+msgstr ""
+
+#: libparted/exception.c:90
+msgid "Retry"
+msgstr ""
+
+#: libparted/exception.c:91
+msgid "Ignore"
+msgstr ""
+
+#: libparted/exception.c:92
+msgid "Cancel"
+msgstr ""
+
+#: libparted/exception.c:132
+#, c-format
+msgid ""
+"A bug has been detected in GNU Parted.  Refer to the web site of parted "
+"http://www.gnu.org/software/parted/parted.html for more information of what "
+"could be useful for bug submitting!  Please email a bug report to %s "
+"containing at least the version (%s) and the following message:  "
+msgstr ""
+
+#: libparted/labels/aix.c:103
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr ""
+
+#: libparted/labels/aix.c:114
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr ""
+
+#: libparted/labels/aix.c:127
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr ""
+
+#: libparted/labels/aix.c:137
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr ""
+
+#: libparted/labels/aix.c:155
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr ""
+
+#: libparted/labels/aix.c:165
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr ""
+
+#: libparted/labels/bsd.c:571 libparted/labels/dasd.c:833
+#: libparted/labels/dos.c:2176 libparted/labels/dvh.c:787
+#: libparted/labels/gpt.c:1782 libparted/labels/loop.c:247
+#: libparted/labels/mac.c:1426 libparted/labels/pc98.c:748
+#: libparted/labels/rdb.c:1052 libparted/labels/sun.c:780
+msgid "Unable to satisfy all constraints on the partition."
+msgstr ""
+
+#: libparted/labels/bsd.c:596
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr ""
+
+#: libparted/labels/dasd.c:859
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr ""
+
+#: libparted/labels/dos.c:966
+#, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr ""
+
+#: libparted/labels/dos.c:994
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr ""
+
+#: libparted/labels/dos.c:1504
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr ""
+
+#: libparted/labels/dos.c:2158
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+
+#: libparted/labels/dvh.c:200
+#, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr ""
+
+#: libparted/labels/dvh.c:326
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr ""
+
+#: libparted/labels/dvh.c:631
+msgid "Only primary partitions can be root partitions."
+msgstr ""
+
+#: libparted/labels/dvh.c:645
+msgid "Only primary partitions can be swap partitions."
+msgstr ""
+
+#: libparted/labels/dvh.c:659
+msgid "Only logical partitions can be a boot file."
+msgstr ""
+
+#: libparted/labels/dvh.c:736
+#, c-format
+msgid ""
+"failed to set dvh partition name to %s:\n"
+"Only logical partitions (boot files) have a name."
+msgstr ""
+
+#: libparted/labels/dvh.c:829
+msgid "Too many primary partitions"
+msgstr ""
+
+#: libparted/labels/fdasd.c:98
+msgid "open error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:101
+msgid "seek error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:104
+msgid "read error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:110
+msgid "ioctl() error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:114
+msgid "API version mismatch"
+msgstr ""
+
+#: libparted/labels/fdasd.c:118
+msgid "Unsupported disk type"
+msgstr ""
+
+#: libparted/labels/fdasd.c:122
+msgid "Unsupported disk format"
+msgstr ""
+
+#: libparted/labels/fdasd.c:126
+msgid "Disk is in use"
+msgstr ""
+
+#: libparted/labels/fdasd.c:130
+msgid "Syntax error in config file"
+msgstr ""
+
+#: libparted/labels/fdasd.c:134
+msgid "Volume label is corrupted"
+msgstr ""
+
+#: libparted/labels/fdasd.c:138
+msgid "A data set name is corrupted"
+msgstr ""
+
+#: libparted/labels/fdasd.c:142
+msgid "Memory allocation failed"
+msgstr ""
+
+#: libparted/labels/fdasd.c:146
+msgid "Device verification failed"
+msgstr ""
+
+#: libparted/labels/fdasd.c:147
+msgid "The specified device is not a valid DASD device"
+msgstr ""
+
+#: libparted/labels/fdasd.c:150 libparted/labels/vtoc.c:179
+msgid "Fatal error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:226
+msgid "No room for volume label."
+msgstr ""
+
+#: libparted/labels/fdasd.c:234
+msgid "No room for partition info."
+msgstr ""
+
+#: libparted/labels/fdasd.c:709
+msgid "Invalid VTOC."
+msgstr ""
+
+#: libparted/labels/fdasd.c:766
+msgid "Could not retrieve API version."
+msgstr ""
+
+#: libparted/labels/fdasd.c:769
+#, c-format
+msgid ""
+"The current API version '%d' doesn't match dasd driver API version '%d'!"
+msgstr ""
+
+#: libparted/labels/fdasd.c:806
+msgid "Could not retrieve disk geometry information."
+msgstr ""
+
+#: libparted/labels/fdasd.c:810
+msgid "Could not retrieve blocksize information."
+msgstr ""
+
+#: libparted/labels/fdasd.c:815
+msgid "Could not retrieve disk information."
+msgstr ""
+
+#: libparted/labels/gpt.c:493
+#, c-format
+msgid ""
+"%s contains GPT signatures, indicating that it has a GPT table.  However, it "
+"does not have a valid fake msdos partition table, as it should.  Perhaps it "
+"was corrupted -- possibly by a program that doesn't understand GPT partition "
+"tables.  Or perhaps you deleted the GPT table, and are now using an msdos "
+"partition table.  Is this a GPT partition table?"
+msgstr ""
+
+#: libparted/labels/gpt.c:693
+#, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise.  Please report this!"
+msgstr ""
+
+#: libparted/labels/gpt.c:740
+#, c-format
+msgid ""
+"Not all of the space available to %s appears to be used, you can fix the GPT "
+"to use all of the space (an extra %llu blocks) or continue with the current "
+"setting? "
+msgstr ""
+
+#: libparted/labels/gpt.c:952
+msgid ""
+"The backup GPT table is not at the end of the disk, as it should be.  This "
+"might mean that another operating system believes the disk is smaller.  Fix, "
+"by moving the backup to the end (and removing the old backup)?"
+msgstr ""
+
+#: libparted/labels/gpt.c:976
+msgid ""
+"Both the primary and backup GPT tables are corrupt.  Try making a fresh "
+"table, and using Parted's rescue feature to recover partitions."
+msgstr ""
+
+#: libparted/labels/gpt.c:987
+msgid ""
+"The backup GPT table is corrupt, but the primary appears OK, so that will be "
+"used."
+msgstr ""
+
+#: libparted/labels/gpt.c:999
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr ""
+
+#: libparted/labels/gpt.c:1023
+msgid "primary partition table array CRC mismatch"
+msgstr ""
+
+#: libparted/labels/mac.c:184
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr ""
+
+#: libparted/labels/mac.c:231
+msgid "Partition map has no partition map entry!"
+msgstr ""
+
+#: libparted/labels/mac.c:279
+#, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr ""
+
+#: libparted/labels/mac.c:508
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr ""
+
+#: libparted/labels/mac.c:526
+#, c-format
+msgid "Partition %d has an invalid length of 0 bytes!"
+msgstr ""
+
+#: libparted/labels/mac.c:557
+msgid "The data region doesn't start at the start of the partition."
+msgstr ""
+
+#: libparted/labels/mac.c:574
+msgid "The boot region doesn't start at the start of the partition."
+msgstr ""
+
+#: libparted/labels/mac.c:588
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr ""
+
+#: libparted/labels/mac.c:599
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr ""
+
+#: libparted/labels/mac.c:652
+#, c-format
+msgid ""
+"Weird block size on device descriptor: %d bytes is not divisible by 512."
+msgstr ""
+
+#: libparted/labels/mac.c:665
+#, c-format
+msgid ""
+"The driver descriptor says the physical block size is %d bytes, but Linux "
+"says it is %d bytes."
+msgstr ""
+
+#: libparted/labels/mac.c:719
+msgid "No valid partition map found."
+msgstr ""
+
+#: libparted/labels/mac.c:780
+#, c-format
+msgid ""
+"Conflicting partition map entry sizes!  Entry 1 says it is %d, but entry %d "
+"says it is %d!"
+msgstr ""
+
+#: libparted/labels/mac.c:811
+msgid "Weird!  There are 2 partitions map entries!"
+msgstr ""
+
+#: libparted/labels/mac.c:1357
+msgid ""
+"Changing the name of a root or swap partition will prevent Linux from "
+"recognising it as such."
+msgstr ""
+
+#: libparted/labels/mac.c:1461
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr ""
+
+#: libparted/labels/pc98.c:331
+#, c-format
+msgid "Invalid partition table on %s."
+msgstr ""
+
+#: libparted/labels/pc98.c:384 libparted/labels/pc98.c:462
+#, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries.  This is still "
+"unsupported."
+msgstr ""
+
+#: libparted/labels/pc98.c:780
+msgid "Can't add another partition."
+msgstr ""
+
+#: libparted/labels/pt-tools.c:125
+#, c-format
+msgid ""
+"partition length of %jd sectors exceeds the %s-partition-table-imposed "
+"maximum of %jd"
+msgstr ""
+
+#: libparted/labels/pt-tools.c:138
+#, c-format
+msgid ""
+"starting sector number, %jd exceeds the %s-partition-table-imposed maximum "
+"of %jd"
+msgstr ""
+
+#: libparted/labels/rdb.c:169
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:484
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr ""
+
+#: libparted/labels/rdb.c:573
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr ""
+
+#: libparted/labels/rdb.c:592
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:691
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:699
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:707
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:715
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:742
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr ""
+
+#: libparted/labels/rdb.c:1080
+msgid "Unable to allocate a partition number."
+msgstr ""
+
+#: libparted/labels/sun.c:161
+msgid "Corrupted Sun disk label detected."
+msgstr ""
+
+#: libparted/labels/sun.c:276
+#, c-format
+msgid ""
+"The disk CHS geometry (%d,%d,%d) reported by the operating system does not "
+"match the geometry stored on the disk label (%d,%d,%d)."
+msgstr ""
+
+#: libparted/labels/sun.c:298
+#, c-format
+msgid "The disk label describes a disk bigger than %s."
+msgstr ""
+
+#: libparted/labels/sun.c:473
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr ""
+
+#: libparted/labels/sun.c:812
+msgid ""
+"The Whole Disk partition is the only available one left.  Generally, it is "
+"not a good idea to overwrite this partition with a real one.  Solaris may "
+"not be able to boot without it, and SILO (the sparc boot loader) appreciates "
+"it as well."
+msgstr ""
+
+#: libparted/labels/sun.c:827
+msgid "Sun disk label is full."
+msgstr ""
+
+#: libparted/labels/vtoc.c:164
+msgid "opening of device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:168
+msgid "seeking on device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:172
+msgid "writing to device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:176
+msgid "reading from device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:299 libparted/labels/vtoc.c:308
+#: libparted/labels/vtoc.c:329 libparted/labels/vtoc.c:336
+msgid "Could not read volume label."
+msgstr ""
+
+#: libparted/labels/vtoc.c:356 libparted/labels/vtoc.c:363
+msgid "Could not write volume label."
+msgstr ""
+
+#: libparted/labels/vtoc.c:469
+msgid "Could not read VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:496
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:516
+msgid "Could not write VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:522
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:529
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:536
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:543
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/libparted.c:230 libparted/libparted.c:245
+msgid "Out of memory."
+msgstr ""
+
+#: libparted/unit.c:138
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr ""
+
+#: libparted/unit.c:384
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr ""
+
+#: libparted/unit.c:392
+#, c-format
+msgid "The maximum head value is %d."
+msgstr ""
+
+#: libparted/unit.c:399
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr ""
+
+#: libparted/unit.c:411 libparted/unit.c:556
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr ""
+
+#: libparted/unit.c:531
+msgid "Invalid number."
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:62 libparted/fs/amiga/apfs.c:55
+#: libparted/fs/amiga/asfs.c:69
+#, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:77 libparted/fs/amiga/apfs.c:68
+#: libparted/fs/amiga/asfs.c:81
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:82 libparted/fs/amiga/apfs.c:73
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:98 libparted/fs/amiga/apfs.c:84
+#: libparted/fs/amiga/asfs.c:87 libparted/fs/amiga/asfs.c:101
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:71
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:188
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:201
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:211
+#, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:277
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:288
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:317
+#, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr ""
+
+#: libparted/fs/fat/fat.c:174
+msgid ""
+"GNU Parted was miscompiled: the FAT boot sector should be 512 bytes.  FAT "
+"support will be disabled."
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:49 libparted/fs/fat/bootsector.c:56
+msgid "File system has an invalid signature for a FAT file system."
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:64
+msgid "File system has an invalid sector size for a FAT file system."
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:71
+msgid "File system has an invalid cluster size for a FAT file system."
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:78
+msgid ""
+"File system has an invalid number of reserved sectors for a FAT file system."
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:85
+msgid "File system has an invalid number of FATs."
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:156
+#, c-format
+msgid ""
+"This file system has a logical sector size of %d.  GNU Parted is known not "
+"to work properly with sector sizes other than 512 bytes."
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:181
+#, c-format
+msgid ""
+"The file system's CHS geometry is (%d, %d, %d), which is invalid.  The "
+"partition table's CHS geometry is (%d, %d, %d).  If you select Ignore, the "
+"file system's CHS geometry will be left unchanged.  If you select Fix, the "
+"file system's CHS geometry will be set to match the partition table's CHS "
+"geometry."
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:230
+msgid "FAT boot sector says logical sector size is 0.  This is weird. "
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:236
+msgid "FAT boot sector says there are no FAT tables.  This is weird. "
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:242
+msgid "FAT boot sector says clusters are 0 sectors.  This is weird. "
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:252
+msgid "File system is FAT12, which is unsupported."
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:428
+#, c-format
+msgid ""
+"The information sector has the wrong signature (%x).  Select cancel for now, "
+"and send in a bug report.  If you're desperate, it's probably safe to ignore."
+msgstr ""
+
+#: libparted/fs/linux_swap/linux_swap.c:247
+#, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr ""
+
+#: libparted/fs/linux_swap/linux_swap.c:290
+#, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr ""
+
+#: libparted/fs/linux_swap/linux_swap.c:330
+#, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr ""
+
+#: libparted/fs/hfs/probe.c:50
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to "
+"%d bytes."
+msgstr ""
+
+#: parted/parted.c:123
+msgid "displays this help message"
+msgstr ""
+
+#: parted/parted.c:124
+msgid "lists partition layout on all block devices"
+msgstr ""
+
+#: parted/parted.c:125
+msgid "displays machine parseable output"
+msgstr ""
+
+#: parted/parted.c:126
+msgid "never prompts for user intervention"
+msgstr ""
+
+#: parted/parted.c:127
+msgid "displays the version"
+msgstr ""
+
+#: parted/parted.c:128
+msgid "alignment for new partitions"
+msgstr ""
+
+#: parted/parted.c:140
+msgid ""
+"NUMBER is the partition number used by Linux.  On MS-DOS disk labels, the "
+"primary partitions number from 1 to 4, logical partitions from 5 onwards.\n"
+msgstr ""
+
+#: parted/parted.c:143
+msgid "LABEL-TYPE is one of: "
+msgstr ""
+
+#: parted/parted.c:144
+msgid "FLAG is one of: "
+msgstr ""
+
+#: parted/parted.c:145
+msgid "UNIT is one of: "
+msgstr ""
+
+#: parted/parted.c:146
+msgid "desired alignment: minimum or optimal"
+msgstr ""
+
+#: parted/parted.c:147
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr ""
+
+#: parted/parted.c:149
+msgid "FS-TYPE is one of: "
+msgstr ""
+
+#: parted/parted.c:150
+msgid ""
+"START and END are disk locations, such as 4GB or 10%.  Negative values count "
+"from the end of the disk.  For example, -1s specifies exactly the last "
+"sector.\n"
+msgstr ""
+
+#: parted/parted.c:153
+msgid "STATE is one of: on, off\n"
+msgstr ""
+
+#: parted/parted.c:154
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr ""
+
+#: parted/parted.c:155
+msgid "NAME is any word you want\n"
+msgstr ""
+
+#: parted/parted.c:158
+msgid ""
+"Copyright (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"This program is free software, covered by the GNU General Public License.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+msgstr ""
+
+#: parted/parted.c:204
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr ""
+
+#: parted/parted.c:223
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+
+#: parted/parted.c:241
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr ""
+
+#: parted/parted.c:253
+#, c-format
+msgid ""
+"The existing disk label on %s will be destroyed and all data on this disk "
+"will be lost. Do you want to continue?"
+msgstr ""
+
+#: parted/parted.c:502
+msgid "New disk label type?"
+msgstr ""
+
+#: parted/parted.c:562
+msgid "Partition type?"
+msgstr ""
+
+#: parted/parted.c:580 parted/parted.c:766
+msgid "Partition name?"
+msgstr ""
+
+#: parted/parted.c:588
+msgid "File system type?"
+msgstr ""
+
+#: parted/parted.c:594 parted/parted.c:1342
+msgid "Start?"
+msgstr ""
+
+#: parted/parted.c:596 parted/parted.c:1344
+msgid "End?"
+msgstr ""
+
+#: parted/parted.c:661
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s.%s"
+msgstr ""
+
+#: parted/parted.c:666
+msgid ""
+"\n"
+"Is this still acceptable to you?"
+msgstr ""
+
+#: parted/parted.c:688
+msgid "The resulting partition is not properly aligned for best performance."
+msgstr ""
+
+#: parted/parted.c:763 parted/parted.c:1383 parted/parted.c:1455
+#: parted/parted.c:1489
+msgid "Partition number?"
+msgstr ""
+
+#: parted/parted.c:841
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d.  Each cylinder is %s.\n"
+msgstr ""
+
+#: parted/parted.c:881
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr ""
+
+#: parted/parted.c:883
+#, c-format
+msgid "Disk %s: %s\n"
+msgstr ""
+
+#: parted/parted.c:884
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr ""
+
+#: parted/parted.c:896
+#, c-format
+msgid "Partition Table: %s\n"
+msgstr ""
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Number"
+msgstr ""
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Start"
+msgstr ""
+
+#: parted/parted.c:1008 parted/parted.c:1011
+msgid "End"
+msgstr ""
+
+#: parted/parted.c:1011
+msgid "Size"
+msgstr ""
+
+#: parted/parted.c:1015
+msgid "Type"
+msgstr ""
+
+#: parted/parted.c:1017
+msgid "File system"
+msgstr ""
+
+#: parted/parted.c:1020
+msgid "Name"
+msgstr ""
+
+#: parted/parted.c:1022
+msgid "Flags"
+msgstr ""
+
+#: parted/parted.c:1079
+msgid "Free Space"
+msgstr ""
+
+#: parted/parted.c:1241
+#, c-format
+msgid ""
+"A %s %s partition was found at %s -> %s.  Do you want to add it to the "
+"partition table?"
+msgstr ""
+
+#: parted/parted.c:1280
+msgid "searching for file systems"
+msgstr ""
+
+#: parted/parted.c:1408
+msgid "New device?"
+msgstr ""
+
+#: parted/parted.c:1453
+msgid "alignment type(min/opt)"
+msgstr ""
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d aligned\n"
+msgstr ""
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d not aligned\n"
+msgstr ""
+
+#: parted/parted.c:1491
+msgid "Flag to Invert?"
+msgstr ""
+
+#: parted/parted.c:1496
+msgid "New state?"
+msgstr ""
+
+#: parted/parted.c:1533
+msgid "Unit?"
+msgstr ""
+
+#: parted/parted.c:1651
+msgid "align-check"
+msgstr ""
+
+#: parted/parted.c:1654
+msgid ""
+"align-check TYPE N                        check partition N for TYPE(min|"
+"opt) alignment"
+msgstr ""
+
+#: parted/parted.c:1662
+msgid "help"
+msgstr ""
+
+#: parted/parted.c:1665
+msgid ""
+"help [COMMAND]                           print general help, or help on "
+"COMMAND"
+msgstr ""
+
+#: parted/parted.c:1671
+msgid "mklabel"
+msgstr ""
+
+#: parted/parted.c:1671
+msgid "mktable"
+msgstr ""
+
+#: parted/parted.c:1674
+msgid ""
+"mklabel,mktable LABEL-TYPE               create a new disklabel (partition "
+"table)"
+msgstr ""
+
+#: parted/parted.c:1680
+msgid "mkpart"
+msgstr ""
+
+#: parted/parted.c:1683
+msgid "mkpart PART-TYPE [FS-TYPE] START END     make a partition"
+msgstr ""
+
+#: parted/parted.c:1689
+msgid ""
+"'mkpart' makes a partition without creating a new file system on the "
+"partition.  FS-TYPE may be specified to set an appropriate partition ID.\n"
+msgstr ""
+
+#: parted/parted.c:1694
+msgid "name"
+msgstr ""
+
+#: parted/parted.c:1697
+msgid "name NUMBER NAME                         name partition NUMBER as NAME"
+msgstr ""
+
+#: parted/parted.c:1702
+msgid "print"
+msgstr ""
+
+#: parted/parted.c:1705
+msgid ""
+"print [devices|free|list,all|NUMBER]     display the partition table, "
+"available devices, free space, all found partitions, or a particular "
+"partition"
+msgstr ""
+
+#: parted/parted.c:1710
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+
+#: parted/parted.c:1712
+msgid "  devices   : display all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:1713
+msgid ""
+"  free      : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+
+#: parted/parted.c:1715
+msgid ""
+"  list, all : display the partition tables of all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:1716
+msgid ""
+"  NUMBER    : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+
+#: parted/parted.c:1721
+msgid "quit"
+msgstr ""
+
+#: parted/parted.c:1724
+msgid "quit                                     exit program"
+msgstr ""
+
+#: parted/parted.c:1729
+msgid "rescue"
+msgstr ""
+
+#: parted/parted.c:1732
+msgid ""
+"rescue START END                         rescue a lost partition near START "
+"and END"
+msgstr ""
+
+#: parted/parted.c:1738
+msgid "rm"
+msgstr ""
+
+#: parted/parted.c:1741
+msgid "rm NUMBER                                delete partition NUMBER"
+msgstr ""
+
+#: parted/parted.c:1746
+msgid "select"
+msgstr ""
+
+#: parted/parted.c:1749
+msgid "select DEVICE                            choose the device to edit"
+msgstr ""
+
+#: parted/parted.c:1754
+msgid "set"
+msgstr ""
+
+#: parted/parted.c:1757
+msgid ""
+"set NUMBER FLAG STATE                    change the FLAG on partition NUMBER"
+msgstr ""
+
+#: parted/parted.c:1763
+msgid "toggle"
+msgstr ""
+
+#: parted/parted.c:1766
+msgid ""
+"toggle [NUMBER [FLAG]]                   toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+
+#: parted/parted.c:1772
+msgid "unit"
+msgstr ""
+
+#: parted/parted.c:1775
+msgid "unit UNIT                                set the default unit to UNIT"
+msgstr ""
+
+#: parted/parted.c:1780
+msgid "version"
+msgstr ""
+
+#: parted/parted.c:1783
+msgid ""
+"version                                  display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+
+#: parted/parted.c:1787
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+
+#: parted/parted.c:1855
+#, c-format
+msgid "Usage: %s [-hlmsv] [-a<align>] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+
+#: parted/parted.c:1899
+msgid "No device found"
+msgstr ""
+
+#: parted/parted.c:1936
+msgid "WARNING: You are not superuser.  Watch out for permissions."
+msgstr ""
+
+#: parted/parted.c:1974
+msgid "You may need to update /etc/fstab.\n"
+msgstr ""
+
+#: parted/ui.c:162
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+
+#: parted/ui.c:165
+msgid ""
+"Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]\n"
+"Apply COMMANDs with PARAMETERS to DEVICE.  If no COMMAND(s) are given, run "
+"in\n"
+"interactive mode.\n"
+msgstr ""
+
+#: parted/ui.c:170
+#, c-format
+msgid ""
+"\n"
+"\n"
+"You found a bug in GNU Parted! Here's what you have to do:\n"
+"\n"
+"Don't panic! The bug has most likely not affected any of your data.\n"
+"Help us to fix this bug by doing the following:\n"
+"\n"
+"Check whether the bug has already been fixed by checking\n"
+"the last version of GNU Parted that you can find at:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Please check this version prior to bug reporting.\n"
+"\n"
+"If this has not been fixed yet or if you don't know how to check,\n"
+"please visit the GNU Parted website:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"for further information.\n"
+"\n"
+"Your report should contain the version of this release (%s)\n"
+"along with the error message below, the output of\n"
+"\n"
+"\tparted DEVICE unit co print unit s print\n"
+"\n"
+"and the following history of commands you entered.\n"
+"Also include any additional information about your setup you\n"
+"consider important.\n"
+msgstr ""
+
+#: parted/ui.c:291
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+
+#: parted/ui.c:354
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+
+#: parted/ui.c:360
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+
+#: parted/ui.c:365
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+
+#: parted/ui.c:389
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:394
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+
+#: parted/ui.c:399
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:404
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+
+#: parted/ui.c:409
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+
+#: parted/ui.c:414
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+
+#: parted/ui.c:419
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+
+#: parted/ui.c:424
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+
+#: parted/ui.c:429
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+
+#: parted/ui.c:453
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+
+#: parted/ui.c:458
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+
+#: parted/ui.c:463
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+
+#: parted/ui.c:468
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+
+#: parted/ui.c:473
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+
+#: parted/ui.c:478
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+
+#: parted/ui.c:891
+#, c-format
+msgid "invalid token: %s"
+msgstr ""
+
+#: parted/ui.c:1048
+msgid "Expecting a partition number."
+msgstr ""
+
+#: parted/ui.c:1057
+msgid "Partition doesn't exist."
+msgstr ""
+
+#: parted/ui.c:1077
+msgid "Expecting a file system type."
+msgstr ""
+
+#: parted/ui.c:1084
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr ""
+
+#: parted/ui.c:1105
+msgid "Expecting a disk label type."
+msgstr ""
+
+#: parted/ui.c:1203
+msgid "Can't create any more partitions."
+msgstr ""
+
+#: parted/ui.c:1213
+msgid "Expecting a partition type."
+msgstr ""
+
+#: parted/ui.c:1361
+msgid "on"
+msgstr ""
+
+#: parted/ui.c:1362
+msgid "off"
+msgstr ""
+
+#: parted/ui.c:1379
+msgid "optimal"
+msgstr ""
+
+#: parted/ui.c:1380
+msgid "minimal"
+msgstr ""
+
+#: parted/ui.c:1513
+msgid "OPTIONs:"
+msgstr ""
+
+#: parted/ui.c:1518
+msgid "COMMANDs:"
+msgstr ""
+
+#: parted/ui.c:1521
+#, c-format
+msgid ""
+"\n"
+"Report bugs to %s\n"
+msgstr ""
+
+#: parted/ui.c:1528
+#, c-format
+msgid "Using %s\n"
+msgstr ""
+
+#: parted/ui.c:1602
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr ""
diff --git a/po/pl.gmo b/po/pl.gmo
new file mode 100644 (file)
index 0000000..586b5b2
Binary files /dev/null and b/po/pl.gmo differ
diff --git a/po/pl.po b/po/pl.po
new file mode 100644 (file)
index 0000000..c81606b
--- /dev/null
+++ b/po/pl.po
@@ -0,0 +1,3375 @@
+# Polish translations for GNU Parted package.
+# Copyright (C) 2003, 2005, 2006, 2007, 2009, 2010, 2011 Free Software Foundation, Inc.
+# This file is distributed under the same license as the parted package.
+# Wojciech Polak <polak@gnu.org>, 2003, 2005, 2006.
+# Jakub Bogusz <qboosh@pld-linux.org>, 2006-2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: parted 2.4\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2011-05-30 13:45+0200\n"
+"PO-Revision-Date: 2011-05-19 16:45+0200\n"
+"Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
+"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
+"Language: pl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2);\n"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "nieprawid³owy argument %s opcji %s"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "niejednoznaczny argument %s opcji %s"
+
+#: lib/argmatch.c:153
+#, c-format
+msgid "Valid arguments are:"
+msgstr "Prawid³owe argumenty to:"
+
+#: lib/closeout.c:112 libparted/labels/fdasd.c:107
+msgid "write error"
+msgstr "b³±d zapisu"
+
+#: lib/error.c:181
+msgid "Unknown system error"
+msgstr "Nieznany b³±d systemowy"
+
+#: lib/getopt.c:548 lib/getopt.c:577
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
+msgstr "%s: opcja '%s' jest niejednoznaczna\n"
+
+#: lib/getopt.c:625 lib/getopt.c:629
+#, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s: opcja '--%s' nie mo¿e mieæ argumentów\n"
+
+#: lib/getopt.c:638 lib/getopt.c:643
+#, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr "%s: opcja '%c%s' nie mo¿e mieæ argumentów\n"
+
+#: lib/getopt.c:686 lib/getopt.c:705
+#, c-format
+msgid "%s: option '--%s' requires an argument\n"
+msgstr "%s: opcja '--%s' musi mieæ argument\n"
+
+#: lib/getopt.c:743 lib/getopt.c:746
+#, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s: nieznana opcja '--%s'\n"
+
+#: lib/getopt.c:754 lib/getopt.c:757
+#, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "%s: nieznana opcja '%c%s'\n"
+
+#: lib/getopt.c:806 lib/getopt.c:809
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: b³êdna opcja -- '%c'\n"
+
+#: lib/getopt.c:859 lib/getopt.c:876 lib/getopt.c:1084 lib/getopt.c:1102
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: opcja musi mieæ argument -- '%c'\n"
+
+#: lib/getopt.c:932 lib/getopt.c:948
+#, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s: opcja '-W %s' jest niejednoznaczna\n"
+
+#: lib/getopt.c:972 lib/getopt.c:990
+#, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr "%s: opcja '-W %s' nie mo¿e mieæ argumentów\n"
+
+#: lib/getopt.c:1011 lib/getopt.c:1029
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: opcja '-W %s' musi mieæ argument\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:271
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:272
+msgid "'"
+msgstr "'"
+
+#: lib/regcomp.c:133
+msgid "Success"
+msgstr "Sukces"
+
+#: lib/regcomp.c:136
+msgid "No match"
+msgstr "Nic nie pasuje"
+
+#: lib/regcomp.c:139
+msgid "Invalid regular expression"
+msgstr "B³êdne wyra¿enie regularne"
+
+#: lib/regcomp.c:142
+msgid "Invalid collation character"
+msgstr "B³êdny znak sortowany"
+
+#: lib/regcomp.c:145
+msgid "Invalid character class name"
+msgstr "B³êdna nazwa klasy znaku"
+
+#: lib/regcomp.c:148
+msgid "Trailing backslash"
+msgstr "Koñcz±cy znak `\\'"
+
+#: lib/regcomp.c:151
+msgid "Invalid back reference"
+msgstr "B³êdne odnosienie wstecz"
+
+#: lib/regcomp.c:154
+msgid "Unmatched [ or [^"
+msgstr "Niesparowane [ lub [^"
+
+#: lib/regcomp.c:157
+msgid "Unmatched ( or \\("
+msgstr "Niesparowane ( lub \\("
+
+#: lib/regcomp.c:160
+msgid "Unmatched \\{"
+msgstr "Niesparowane \\{"
+
+#: lib/regcomp.c:163
+msgid "Invalid content of \\{\\}"
+msgstr "B³êdna zawarto¶æ \\{\\}"
+
+#: lib/regcomp.c:166
+msgid "Invalid range end"
+msgstr "B³êdny koniec zakresu"
+
+#: lib/regcomp.c:169
+msgid "Memory exhausted"
+msgstr "Pamiêæ wyczerpana"
+
+#: lib/regcomp.c:172
+msgid "Invalid preceding regular expression"
+msgstr "B³êdne poprzedzaj±ce wyra¿enie regularne"
+
+#: lib/regcomp.c:175
+msgid "Premature end of regular expression"
+msgstr "Przedwczesny koniec wyra¿enia regularnego"
+
+#: lib/regcomp.c:178
+msgid "Regular expression too big"
+msgstr "Wyra¿enie regularne zbyt du¿e"
+
+#: lib/regcomp.c:181
+msgid "Unmatched ) or \\)"
+msgstr "Niesparowane ) lub \\)"
+
+#: lib/regcomp.c:702
+msgid "No previous regular expression"
+msgstr "Brak poprzedniego wyra¿enia regularnego"
+
+#. TRANSLATORS: A regular expression testing for an affirmative answer
+#. (english: "yes").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^yesexpr='
+#: lib/rpmatch.c:147
+msgid "^[yY]"
+msgstr "^[yYtT]"
+
+#. TRANSLATORS: A regular expression testing for a negative answer
+#. (english: "no").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^noexpr='
+#: lib/rpmatch.c:160
+msgid "^[nN]"
+msgstr "^[nN]"
+
+#: lib/version-etc.c:74
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Pakietuj±cy: %s (%s)\n"
+
+#: lib/version-etc.c:77
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Pakietuj±cy: %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale.  Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:84
+msgid "(C)"
+msgstr "(C)"
+
+#: lib/version-etc.c:86
+msgid ""
+"\n"
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"\n"
+"Licencja GPLv3+: GNU GPL w wersji 3 lub pó¼niejszej:\n"
+"<http://gnu.org/licenses/gpl.html>\n"
+"Ten program jest wolnodostêpny: mo¿na go modyfikowaæ i rozprowadzaæ.\n"
+"NIE MA ¯ADNEJ GWARANCJI w zakresie dopuszczalnym przez prawo.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:102
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Autor: %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:106
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Autorzy: %s i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:110
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Autorzy: %s, %s i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Autorzy: %s, %s, %s\n"
+"i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Autorzy: %s, %s, %s,\n"
+"%s i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:131
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Autorzy: %s, %s, %s,\n"
+"%s, %s i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:139
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Autorzy: %s, %s, %s,\n"
+"%s, %s, %s i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:147
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Autorzy: %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:156
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Autorzy: %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:167
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Autorzy: %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s i inni.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package.  Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:245
+#, c-format
+msgid ""
+"\n"
+"Report bugs to: %s\n"
+msgstr ""
+"\n"
+"Prosimy zg³aszaæ b³êdy na adres <%s>.\n"
+"B³êdy w t³umaczeniu prosimy zg³aszaæ na adres: <translation-team-pl@lists."
+"sourceforge.net>.\n"
+
+#: lib/version-etc.c:247
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "Prosimy zg³aszaæ b³êdy w %s na adres <%s>.\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Strona domowa projektu %s: <%s>\n"
+
+#: lib/version-etc.c:253
+#, c-format
+msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
+msgstr "Strona domowa projektu %s: <http://www.gnu.org/software/%s/>.\n"
+
+#: lib/version-etc.c:256
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
+msgstr ""
+"Ogólna pomoc przy u¿ywaniu oprogramowania GNU: <http://www.gnu.org/gethelp/"
+">.\n"
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "pamiêæ wyczerpana"
+
+#: lib/xstrtol-error.c:63
+#, c-format
+msgid "invalid %s%s argument `%s'"
+msgstr "nieprawid³owy argument %s%s opcji `%s'"
+
+#: lib/xstrtol-error.c:68
+#, c-format
+msgid "invalid suffix in %s%s argument `%s'"
+msgstr "b³êdny przyrostek argumentu %s%s opcji `%s'"
+
+#: lib/xstrtol-error.c:72
+#, c-format
+msgid "%s%s argument `%s' too large"
+msgstr "argument %s%s `%s' zbyt du¿y"
+
+#: libparted/arch/beos.c:245
+msgid "Disk Image"
+msgstr "Obraz dysku"
+
+#: libparted/arch/beos.c:346 libparted/arch/gnu.c:277
+#: libparted/arch/linux.c:1545
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "B³±d podczas otwierania %s: %s"
+
+#: libparted/arch/beos.c:357 libparted/arch/gnu.c:287
+#: libparted/arch/linux.c:1556
+#, c-format
+msgid "Unable to open %s read-write (%s).  %s has been opened read-only."
+msgstr ""
+"Nie mo¿na otworzyæ %s jednocze¶nie w trybie do odczytu i zapisu (%s).  %s "
+"zosta³ otwarty tylko w trybie do odczytu."
+
+#: libparted/arch/beos.c:419 libparted/arch/linux.c:1714
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s podczas ustawiania do odczytu na %s"
+
+#: libparted/arch/beos.c:452 libparted/arch/gnu.c:465 libparted/arch/gnu.c:564
+#: libparted/arch/gnu.c:692 libparted/arch/linux.c:1674
+#: libparted/arch/linux.c:1755
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s podczas czytania %s"
+
+#: libparted/arch/beos.c:488 libparted/arch/gnu.c:525
+#: libparted/arch/linux.c:1831
+#, c-format
+msgid "Can't write to %s, because it is opened read-only."
+msgstr "Nie mo¿na zapisaæ do %s, poniewa¿ otwarte jest tylko do czytania."
+
+#: libparted/arch/beos.c:504 libparted/arch/linux.c:1856
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s podczas ustawiania do zapisu na %s"
+
+#: libparted/arch/beos.c:541 libparted/arch/gnu.c:601 libparted/arch/gnu.c:646
+#: libparted/arch/gnu.c:723 libparted/arch/linux.c:1804
+#: libparted/arch/linux.c:1898 libparted/arch/linux.c:1970
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s podczas zapisu %s"
+
+#: partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Polecenie `%s --help' pozwoli uzyskaæ wiêcej informacji.\n"
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr "Sk³adnia: %s [OPCJA] [URZ¡DZENIE]...\n"
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the operating system about partition table changes.\n"
+"\n"
+"  -d, --dry-run    do not actually inform the operating system\n"
+"  -s, --summary    print a summary of contents\n"
+"  -h, --help       display this help and exit\n"
+"  -v, --version    output version information and exit\n"
+msgstr ""
+"Poinformowanie systemu operacyjnego o zmianach w tablicy partycji.\n"
+"\n"
+"  -d, --dry-run    pominiêcie informowania systemu operacyjnego\n"
+"  -s, --summary    wypisanie podsumowania zawarto¶ci\n"
+"  -h, --help       wy¶wietlenie tego opisu i zakoñczenie\n"
+"  -v, --version    wy¶wietlenie informacji o wersji i zakoñczenie\n"
+
+#: partprobe/partprobe.c:150
+msgid ""
+"\n"
+"When no DEVICE is given, probe all partitions.\n"
+msgstr ""
+"\n"
+"Je¶li nie podano URZ¡DZENIA, sprawdzane s± wszystkie partycje.\n"
+
+#: partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Prosimy zg³aszaæ b³êdy na adres <%s>.\n"
+"B³êdy w t³umaczeniu prosimy zg³aszaæ na adres: <translation-team-pl@lists."
+"sourceforge.net>.\n"
+
+#: libparted/arch/gnu.c:110
+#, c-format
+msgid "Unable to open %s."
+msgstr "Nie mo¿na otworzyæ %s."
+
+#: libparted/arch/gnu.c:130
+msgid "Unable to probe store."
+msgstr "Detekcja geometrii nie powiod³a siê."
+
+#: libparted/arch/gnu.c:368
+msgid ""
+"The partition table cannot be re-read.  This means you need to reboot before "
+"mounting any modified partitions.  You also need to reinstall your boot "
+"loader before you reboot (which may require mounting modified partitions).  "
+"It is impossible do both things!  So you'll need to boot off a rescue disk, "
+"and reinstall your boot loader from the rescue disk.  Read section 4 of the "
+"Parted User documentation for more information."
+msgstr ""
+"Nie mo¿na ponownie odczytaæ tablicy partycji.  Nale¿y ponownie uruchomiæ "
+"komputer przed pod³±czeniem jakichkolwiek zmodyfikowanych partycji.  Nale¿y "
+"tak¿e przeinstalowaæ program ³aduj±cy (boot loader) zanim uruchomisz "
+"ponownie komputer (co mo¿e wymagaæ pod³±czenia zmodyfikowanych partycji).  "
+"Wykonanie dwóch powy¿szych rzeczy jest niemo¿liwe!  A wiêc pozostaje Ci "
+"uruchomienie dysku/p³yty ratunkowej i przeinstalowanie programu ³aduj±cego "
+"prosto z dysku ratunkowego.  Przeczytaj rozdzia³ 4 dokumentacji programu GNU "
+"Parted, aby uzyskaæ wiêcej informacji na ten temat."
+
+#: libparted/arch/gnu.c:385
+#, c-format
+msgid ""
+"The partition table on %s cannot be re-read (%s).  This means the Hurd knows "
+"nothing about any modifications you made.  You should reboot your computer "
+"before doing anything with %s."
+msgstr ""
+"Nie mo¿na ponownie wczytaæ tablicy partycji na %s (%s).  Oznacza to, ¿e Hurd "
+"nie wie o ¿adnych zmianach jakie zosta³y wprowadzone.  Nale¿y ponownie "
+"uruchomiæ komputer zanim wykonasz jak±kolwiek operacjê na %s."
+
+#: libparted/arch/gnu.c:396 parted/parted.c:1967
+msgid ""
+"You should reinstall your boot loader before rebooting.  Read section 4 of "
+"the Parted User documentation for more information."
+msgstr ""
+"Nale¿y przeinstalowaæ program ³aduj±cy (boot loader) przed ponownym "
+"uruchomieniem komputera.  Przeczytaj rozdzia³ 4 dokumentacji u¿ytkownika "
+"Parted, aby uzyskaæ wiêcej informacji."
+
+#: libparted/arch/gnu.c:788
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "B³±d synchronizacji %s do dysku %s"
+
+#: libparted/arch/linux.c:520
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "Nie mo¿na sprawdziæ urz±dzenia %s - %s."
+
+#: libparted/arch/linux.c:577
+#, c-format
+msgid "Unable to determine the dm type of %s."
+msgstr "Nie mo¿na okre¶liæ typu dm %s."
+
+#: libparted/arch/linux.c:669
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+"Nie uda³o siê okre¶liæ rozmiaru sektora dla %s: %s.\n"
+"U¿yto domy¶lnego rozmiaru sektora (%lld)."
+
+#: libparted/arch/linux.c:690
+#, c-format
+msgid ""
+"Could not determine physical sector size for %s.\n"
+"Using the logical sector size (%lld)."
+msgstr ""
+"Nie uda³o siê okre¶liæ rozmiaru sektora fizycznego dla %s.\n"
+"U¿yto rozmiaru sektora logicznego (%lld)."
+
+#: libparted/arch/linux.c:746
+#, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "Nie mo¿na ustaliæ rozmiaru %s (%s)."
+
+#: libparted/arch/linux.c:832
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "Nie mo¿na uzyskaæ to¿samo¶ci urz±dzenia %s - %s"
+
+#: libparted/arch/linux.c:841
+msgid "Generic IDE"
+msgstr "Ogólne IDE"
+
+#: libparted/arch/linux.c:862
+#, c-format
+msgid ""
+"Device %s has multiple (%d) logical sectors per physical sector.\n"
+"GNU Parted supports this EXPERIMENTALLY for some special disk label/file "
+"system combinations, e.g. GPT and ext2/3.\n"
+"Please consult the web site for up-to-date information."
+msgstr ""
+"Urz±dzenie %s ma wiele (%d) logicznych sektorów w ka¿dym sektorze "
+"fizycznym.\n"
+"GNU Parted obs³uguje to EKSPERYMENTALNIE dla niektórych specjalnych po³±czeñ "
+"etykiet dysków i systemów plików, np. GPT i ext2/3.\n"
+"Aktualne informacje znajduj± siê na stronie WWW."
+
+#: libparted/arch/linux.c:1039
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "B³±d podczas inicjalizacji urz±dzenia SCSI %s - %s"
+
+#: libparted/arch/linux.c:1103
+#, c-format
+msgid ""
+"The device %s is so small that it cannot possibly store a file system or "
+"partition table.  Perhaps you selected the wrong device?"
+msgstr ""
+"Urz±dzenie %s jest tak ma³e, ¿e mo¿e nie byæ w stanie przechowywaæ systemu "
+"plików lub tablicy partycji.  Byæ mo¿e dokonano niew³a¶ciwego wyboru "
+"urz±dzenia?"
+
+#: libparted/arch/linux.c:1216
+#, c-format
+msgid ""
+"Unable to determine geometry of file/device %s.  You should not use Parted "
+"unless you REALLY know what you're doing!"
+msgstr ""
+"Nie mo¿na ustaliæ geometrii pliku/urz±dzenia %s.  W tym przypadku nie jest "
+"zalecane u¿ywanie Parteda, chyba ¿e NAPRAWDÊ wiesz co robisz!"
+
+#: libparted/arch/linux.c:1276
+msgid "Generic SD/MMC Storage Card"
+msgstr "Karta pamiêci SD/MMC"
+
+#: libparted/arch/linux.c:1329
+msgid "DAC960 RAID controller"
+msgstr "Kontroler DAC960 RAID"
+
+#: libparted/arch/linux.c:1334
+msgid "Promise SX8 SATA Device"
+msgstr "Urz±dzenie Promise SX8 SATA"
+
+#: libparted/arch/linux.c:1339
+msgid "ATA over Ethernet Device"
+msgstr "Urz±dzenie ATA over Ethernet"
+
+#: libparted/arch/linux.c:1345
+msgid "IBM S390 DASD drive"
+msgstr "Dysk DASD IBM S390"
+
+#: libparted/arch/linux.c:1351
+msgid "IBM iSeries Virtual DASD"
+msgstr "Wirtualny dysk DASD IBM iSeries"
+
+#: libparted/arch/linux.c:1356
+msgid "Compaq Smart Array"
+msgstr "Compaq Smart Array"
+
+#: libparted/arch/linux.c:1361
+msgid "ATARAID Controller"
+msgstr "Kontroler ATARAID"
+
+#: libparted/arch/linux.c:1366
+msgid "I2O Controller"
+msgstr "Kontroler I2O"
+
+#: libparted/arch/linux.c:1371
+msgid "User-Mode Linux UBD"
+msgstr "UBD z User-Mode Linuksa"
+
+#: libparted/arch/linux.c:1384
+#, c-format
+msgid "Linux device-mapper (%s)"
+msgstr "Linuksowy device-mapper (%s)"
+
+#: libparted/arch/linux.c:1395
+msgid "Xen Virtual Block Device"
+msgstr "Wirtualne urz±dzenie blokowe Xena"
+
+#: libparted/arch/linux.c:1400
+msgid "Unknown"
+msgstr "Nieznane"
+
+#: libparted/arch/linux.c:1409
+msgid "Virtio Block Device"
+msgstr "Urz±dzenie blokowe Virtio"
+
+#: libparted/arch/linux.c:1414
+msgid "Linux Software RAID Array"
+msgstr "Linuksowa programowa macierz RAID"
+
+#: libparted/arch/linux.c:1421
+msgid "ped_device_new()  Unsupported device type"
+msgstr "ped_device_new()  Ten typ urz±dzenia nie jest wspierany"
+
+#: libparted/arch/linux.c:1518 libparted/arch/linux.c:1590
+#, c-format
+msgid "Error fsyncing/closing %s: %s"
+msgstr "B³±d podczas synchronizacji/zamykania %s: %s"
+
+#: libparted/arch/linux.c:1754
+#, c-format
+msgid "end of file while reading %s"
+msgstr "koniec pliku w trakcie odczytu %s"
+
+#: libparted/arch/linux.c:2390
+#, c-format
+msgid ""
+"Error informing the kernel about modifications to partition %s -- %s.  This "
+"means Linux won't know about any changes you made to %s until you reboot -- "
+"so you shouldn't mount it or use it in any way before rebooting."
+msgstr ""
+"B³±d przy informowaniu j±dra o modyfikacji partycji %s - %s. Oznacza to, ¿e "
+"Linux nie bêdzie wiedzia³ o zmianach wykonanych na %s do czasu restartu "
+"systemu - wiêc nie bêdzie mo¿na zamontowaæ tej partycji ani u¿yæ jej w inny "
+"sposób przed restartem."
+
+#: libparted/arch/linux.c:2528
+#, c-format
+msgid "Unable to determine the size and length of %s."
+msgstr "Nie mo¿na ustaliæ rozmiaru i d³ugo¶ci %s."
+
+#: libparted/arch/linux.c:2553
+#, c-format
+msgid "Failed to add partition %d (%s)"
+msgstr "Nie uda³o siê dodaæ partycji %d (%s)"
+
+#: libparted/arch/linux.c:2580
+#, c-format
+msgid ""
+"Partition(s) %s on %s have been written, but we have been unable to inform "
+"the kernel of the change, probably because it/they are in use.  As a result, "
+"the old partition(s) will remain in use.  You should reboot now before "
+"making further changes."
+msgstr ""
+"Partycja %s na %s zosta³a zapisana, ale nie uda³o siê poinformowaæ j±dra o "
+"tej zmianie, prawdopodobnie poniewa¿ partycje s± w u¿yciu. W efekcie w "
+"u¿yciu pozostan± stare partycje; przed dalszymi zmianami trzeba zrestartowaæ "
+"system."
+
+#: libparted/arch/linux.c:2706
+#, c-format
+msgid ""
+"parted was unable to re-read the partition table on %s (%s).  This means "
+"Linux won't know anything about the modifications you made. "
+msgstr ""
+"parted nie móg³ ponownie odczytaæ tablicy partycji na %s (%s).  Oznacza to, "
+"¿e Linux nie bêdzie wiedzia³ nic o modyfikacjach jakie zosta³y poczynione. "
+
+#: libparted/cs/geom.c:161
+#, c-format
+msgid "Can't have the end before the start! (start sector=%jd length=%jd)"
+msgstr "Nie mo¿na mieæ koñca przed pocz±tkiem! (sektor pocz.=%jd d³ugo¶æ=%jd)"
+
+#: libparted/cs/geom.c:169
+msgid "Can't have a partition outside the disk!"
+msgstr "Nie mo¿na mieæ partycji poza dyskiem!"
+
+#: libparted/cs/geom.c:384
+#, c-format
+msgid "Attempt to write sectors %ld-%ld outside of partition on %s."
+msgstr "Próba zapisania sektorów %ld-%ld poza partycj± na %s."
+
+#: libparted/cs/geom.c:424
+msgid "checking for bad blocks"
+msgstr "sprawdzam czy istniej± uszkodzone bloki"
+
+#: libparted/debug.c:96
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr "Backtrace zawiera %d wywo³añ na stosie:\n"
+
+#: libparted/debug.c:109
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr "Zapewnienie (%s) w %s:%d w funkcji %s() nie powiod³o siê."
+
+#: libparted/disk.c:192
+#, c-format
+msgid "%s: unrecognised disk label"
+msgstr "%s: nierozpoznana etykieta dysku"
+
+#: libparted/disk.c:484
+#, c-format
+msgid ""
+"This libparted doesn't have write support for %s.  Perhaps it was compiled "
+"read-only."
+msgstr ""
+"Biblioteka libparted nie posiada obs³ugi zapisu dla %s.  Byæ mo¿e zosta³a "
+"ona zbudowana z obs³ug± tylko-do-odczytu."
+
+#: libparted/disk.c:629
+#, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "Partycja %d jest %s, lecz system plików jest %s."
+
+#: libparted/disk.c:838
+msgid "cylinder_alignment"
+msgstr "wyrównanie_cylindra"
+
+#: libparted/disk.c:844
+#, c-format
+msgid "Unknown disk flag, %d."
+msgstr "Nieznana flaga dysku: %d."
+
+#: libparted/disk.c:1283
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "Etykiety dysku %s nie wspieraj± rozszerzonych partycji."
+
+#: libparted/disk.c:1858
+#, c-format
+msgid "%s disk labels don't support logical or extended partitions."
+msgstr "Etykiety dysku %s nie wspieraj± logicznych lub rozszerzonych partycji."
+
+#: libparted/disk.c:1871
+msgid "Too many primary partitions."
+msgstr "Zbyt du¿o partycji g³ównych."
+
+#: libparted/disk.c:1880
+#, c-format
+msgid ""
+"Can't add a logical partition to %s, because there is no extended partition."
+msgstr ""
+"Nie mo¿na dodaæ logicznej partycji do %s, poniewa¿ nie istnieje rozszerzona "
+"partycja."
+
+#: libparted/disk.c:1904
+#, c-format
+msgid "Can't have more than one extended partition on %s."
+msgstr "Nie mo¿na mieæ wiêcej ni¿ jedn± rozszerzon± partycjê na %s."
+
+#: libparted/disk.c:1914
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr "Nie mo¿na mieæ logicznych partycji poza rozszerzon± partycj±."
+
+#: libparted/disk.c:1939
+#, c-format
+msgid "Can't have a logical partition outside of the extended partition on %s."
+msgstr "%s nie mo¿e mieæ logicznej partycji poza rozszerzon± partycj±."
+
+#: libparted/disk.c:1949 libparted/disk.c:2008 libparted/disk.c:2186
+msgid "Can't have overlapping partitions."
+msgstr "Nie mo¿na mieæ nak³adaj±cych siê partycji."
+
+#: libparted/disk.c:1957
+msgid "Can't have a primary partition inside an extended partition."
+msgstr "Nie mo¿na mieæ g³ównej partycji wewn±trz rozszerzonej partycji."
+
+#: libparted/disk.c:2387
+msgid "metadata"
+msgstr "metadane"
+
+#: libparted/disk.c:2389
+msgid "free"
+msgstr "wolna"
+
+#: libparted/disk.c:2391 parted/ui.c:1194 parted/ui.c:1222
+msgid "extended"
+msgstr "rozszerzona"
+
+#: libparted/disk.c:2393 parted/ui.c:1198 parted/ui.c:1226
+msgid "logical"
+msgstr "logiczna"
+
+#: libparted/disk.c:2395 parted/ui.c:1190 parted/ui.c:1218
+msgid "primary"
+msgstr "g³ówna"
+
+#: libparted/disk.c:2411
+msgid "boot"
+msgstr "³adowalna"
+
+#: libparted/disk.c:2413
+msgid "bios_grub"
+msgstr "bios_grub"
+
+#: libparted/disk.c:2415
+msgid "root"
+msgstr "root"
+
+#: libparted/disk.c:2417
+msgid "swap"
+msgstr "wymiany"
+
+#: libparted/disk.c:2419
+msgid "hidden"
+msgstr "ukryta"
+
+#: libparted/disk.c:2421
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2423
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2425
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2427
+msgid "hp-service"
+msgstr "us³uga-hp"
+
+#: libparted/disk.c:2429
+msgid "palo"
+msgstr "palo"
+
+#: libparted/disk.c:2431
+msgid "prep"
+msgstr "prep"
+
+#: libparted/disk.c:2433
+msgid "msftres"
+msgstr "msftres"
+
+#: libparted/disk.c:2435
+msgid "atvrecv"
+msgstr "atvrecv"
+
+#: libparted/disk.c:2437
+msgid "diag"
+msgstr "diag"
+
+#: libparted/disk.c:2439
+msgid "legacy_boot"
+msgstr "legacy_boot"
+
+#: libparted/disk.c:2445
+#, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Nieznana flaga partycji: %d."
+
+#: libparted/exception.c:77
+msgid "Information"
+msgstr "Informacja"
+
+#: libparted/exception.c:78
+msgid "Warning"
+msgstr "Ostrze¿enie"
+
+#: libparted/exception.c:79
+msgid "Error"
+msgstr "B³±d"
+
+#: libparted/exception.c:80
+msgid "Fatal"
+msgstr "Fatalny b³±d"
+
+#: libparted/exception.c:81
+msgid "Bug"
+msgstr "B³±d"
+
+#: libparted/exception.c:82
+msgid "No Implementation"
+msgstr "Brak implementacji"
+
+#: libparted/exception.c:86
+msgid "Fix"
+msgstr "Popraw"
+
+#: libparted/exception.c:87
+msgid "Yes"
+msgstr "Tak"
+
+#: libparted/exception.c:88
+msgid "No"
+msgstr "Nie"
+
+#: libparted/exception.c:89
+msgid "OK"
+msgstr "OK"
+
+#: libparted/exception.c:90
+msgid "Retry"
+msgstr "Powtórz"
+
+#: libparted/exception.c:91
+msgid "Ignore"
+msgstr "Zignoruj"
+
+#: libparted/exception.c:92
+msgid "Cancel"
+msgstr "Poniechaj"
+
+#: libparted/exception.c:132
+#, c-format
+msgid ""
+"A bug has been detected in GNU Parted.  Refer to the web site of parted "
+"http://www.gnu.org/software/parted/parted.html for more information of what "
+"could be useful for bug submitting!  Please email a bug report to %s "
+"containing at least the version (%s) and the following message:  "
+msgstr ""
+"Zosta³ wykryty b³±d w dzia³aniu programu GNU Parted.  Odwied¼ stronê http://"
+"www.gnu.org/software/parted/parted.html w celu uzyskania informacji na temat "
+"zg³aszania b³êdów.  Proszê wys³aæ raport na temat b³êdu na adres %s, "
+"do³±czaj±c przynajmniej numer wersji (%s) oraz nastêpuj±cy komunikat:  "
+
+#: libparted/labels/aix.c:103
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr ""
+"Obs³uga odczytu etykiet dyskowych AIX jeszcze nie zosta³a zaimplementowana."
+
+#: libparted/labels/aix.c:114
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr ""
+"Obs³uga zapisu etykiet dyskowych AIX jeszcze nie zosta³a zaimplementowana."
+
+#: libparted/labels/aix.c:127
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr ""
+"Obs³uga dodawania partycji do etykiet dyskowych AIX jeszcze nie zosta³a "
+"zaimplementowana."
+
+#: libparted/labels/aix.c:137
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr ""
+"Obs³uga powielania partycji na etykietach dyskowych AIX jeszcze nie zosta³a "
+"zaimplementowana."
+
+#: libparted/labels/aix.c:155
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr ""
+"Obs³uga ustawiania rodzaju systemu partycji na etykietach dyskowych AIX "
+"jeszcze nie zosta³a zaimplementowana."
+
+#: libparted/labels/aix.c:165
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr ""
+"Obs³uga ustawiania flag na etykietach dyskowych AIX jeszcze nie zosta³a "
+"zaimplementowana."
+
+#: libparted/labels/bsd.c:571 libparted/labels/dasd.c:833
+#: libparted/labels/dos.c:2176 libparted/labels/dvh.c:787
+#: libparted/labels/gpt.c:1782 libparted/labels/loop.c:247
+#: libparted/labels/mac.c:1426 libparted/labels/pc98.c:748
+#: libparted/labels/rdb.c:1052 libparted/labels/sun.c:780
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "Nie mo¿na zaspokoiæ wszystkich ograniczeñ na partycji."
+
+#: libparted/labels/bsd.c:596
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "Nie mo¿na przydzieliæ miejsca na etykietê dysku bsd."
+
+#: libparted/labels/dasd.c:859
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "Nie mo¿na przydzieliæ miejsca na etykiecie dysku dasd."
+
+#: libparted/labels/dos.c:966
+#, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr "Nieprawid³owa tablica partycji na %s -- b³êdna sygnatura %x."
+
+#: libparted/labels/dos.c:994
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "Nieprawid³owa tablica partycji - partycja rekursywna na %s."
+
+#: libparted/labels/dos.c:1504
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr "Rozszerzone partycje nie mog± byæ ukryte dla etykieta dysków msdos."
+
+#: libparted/labels/dos.c:2158
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+"Parted nie mo¿e zmieniæ rozmiaru partycji zarz±dzanych przez Windows Dynamic "
+"Disk."
+
+#: libparted/labels/dvh.c:200
+#, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr ""
+"%s nie posiada ¿adnych rozszerzonych partycji (partycji nag³ówka wolumenu)."
+
+#: libparted/labels/dvh.c:326
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr ""
+"Suma kontrolna jest b³êdna i oznacza to, ¿e tablica partycji jest uszkodzona."
+
+#: libparted/labels/dvh.c:631
+msgid "Only primary partitions can be root partitions."
+msgstr "Tylko g³ówne partycje mog± byæ typu root."
+
+#: libparted/labels/dvh.c:645
+msgid "Only primary partitions can be swap partitions."
+msgstr "Tylko g³ówne partycje mog± byæ partycjami wymiany."
+
+#: libparted/labels/dvh.c:659
+msgid "Only logical partitions can be a boot file."
+msgstr "Tylko logiczne partycje mog± byæ plikami ³adowalnymi (boot)."
+
+#: libparted/labels/dvh.c:736
+#, c-format
+msgid ""
+"failed to set dvh partition name to %s:\n"
+"Only logical partitions (boot files) have a name."
+msgstr ""
+"nie uda³o siê ustawiæ nazwy partycji dvh na %s:\n"
+"Tylko logiczne partycje (³adowalne pliki) maj± nazwy."
+
+#: libparted/labels/dvh.c:829
+msgid "Too many primary partitions"
+msgstr "Zbyt du¿o partycji g³ównych"
+
+#: libparted/labels/fdasd.c:98
+msgid "open error"
+msgstr "b³±d otwierania"
+
+#: libparted/labels/fdasd.c:101
+msgid "seek error"
+msgstr "b³±d seek"
+
+#: libparted/labels/fdasd.c:104
+msgid "read error"
+msgstr "b³±d odczytu"
+
+#: libparted/labels/fdasd.c:110
+msgid "ioctl() error"
+msgstr "b³±d ioctl()"
+
+#: libparted/labels/fdasd.c:114
+msgid "API version mismatch"
+msgstr "niezgodno¶æ wersji API"
+
+#: libparted/labels/fdasd.c:118
+msgid "Unsupported disk type"
+msgstr "Nieobs³ugiwany typ dysku"
+
+#: libparted/labels/fdasd.c:122
+msgid "Unsupported disk format"
+msgstr "Nieobs³ugiwany format dysku"
+
+#: libparted/labels/fdasd.c:126
+msgid "Disk is in use"
+msgstr "Dysk jest w u¿yciu"
+
+#: libparted/labels/fdasd.c:130
+msgid "Syntax error in config file"
+msgstr "B³±d sk³adni w pliku konfiguracyjnym"
+
+#: libparted/labels/fdasd.c:134
+msgid "Volume label is corrupted"
+msgstr "Uszkodzona etykieta wolumenu"
+
+#: libparted/labels/fdasd.c:138
+msgid "A data set name is corrupted"
+msgstr "Uszkodzona nazwa zbioru danych"
+
+#: libparted/labels/fdasd.c:142
+msgid "Memory allocation failed"
+msgstr "Przydzielanie pamiêci powiod³o siê"
+
+#: libparted/labels/fdasd.c:146
+msgid "Device verification failed"
+msgstr "Weryfikacja urz±dzenia nie powiod³o siê"
+
+#: libparted/labels/fdasd.c:147
+msgid "The specified device is not a valid DASD device"
+msgstr "Podane urz±dzenie nie jest poprawnym urz±dzeniem DASD"
+
+#: libparted/labels/fdasd.c:150 libparted/labels/vtoc.c:179
+msgid "Fatal error"
+msgstr "B³±d krytyczny"
+
+#: libparted/labels/fdasd.c:226
+msgid "No room for volume label."
+msgstr "Brak miejsca na etykietê wolumenu."
+
+#: libparted/labels/fdasd.c:234
+msgid "No room for partition info."
+msgstr "Brak miejsca na informacjê o partycji."
+
+#: libparted/labels/fdasd.c:709
+msgid "Invalid VTOC."
+msgstr "Nieprawid³owe dane VTOC."
+
+#: libparted/labels/fdasd.c:766
+msgid "Could not retrieve API version."
+msgstr "Nie uda³o siê odczytaæ wersji API."
+
+#: libparted/labels/fdasd.c:769
+#, c-format
+msgid ""
+"The current API version '%d' doesn't match dasd driver API version '%d'!"
+msgstr ""
+"Aktualna wersja API '%d' nie zgadza siê z wersj± API sterownika dasd '%d'!"
+
+#: libparted/labels/fdasd.c:806
+msgid "Could not retrieve disk geometry information."
+msgstr "Nie uda³o siê odczytaæ informacji o geometrii dysku."
+
+#: libparted/labels/fdasd.c:810
+msgid "Could not retrieve blocksize information."
+msgstr "Nie uda³o siê odczytaæ informacji o rozmiarze bloku."
+
+#: libparted/labels/fdasd.c:815
+msgid "Could not retrieve disk information."
+msgstr "Nie uda³o siê odczytaæ informacji o dysku."
+
+#: libparted/labels/gpt.c:493
+#, c-format
+msgid ""
+"%s contains GPT signatures, indicating that it has a GPT table.  However, it "
+"does not have a valid fake msdos partition table, as it should.  Perhaps it "
+"was corrupted -- possibly by a program that doesn't understand GPT partition "
+"tables.  Or perhaps you deleted the GPT table, and are now using an msdos "
+"partition table.  Is this a GPT partition table?"
+msgstr ""
+"%s zawiera sygnaturê GPT.  Oznacza to, ¿e posiada tablicê GPT, ale nie "
+"posiada prawid³owej fa³szywej tablicy partycji msdos, tak jak powinna.  Byæ "
+"mo¿e jest uszkodzona -- mo¿liwe, ¿e przez program, który nie rozumie tablic "
+"partycji GPT.  Albo te¿ tablica GPT zosta³a skasowana, za¶ teraz u¿ywana "
+"jest tablica partycji msdos.  Czy to jest tablica partycji GPT?"
+
+#: libparted/labels/gpt.c:693
+#, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise.  Please report this!"
+msgstr ""
+"Format tablicy partycji GPT (wersja %x) jest nowszy ni¿ program Parted jest "
+"w stanie rozpoznaæ.  Poinformuj nas o tym!"
+
+#: libparted/labels/gpt.c:740
+#, c-format
+msgid ""
+"Not all of the space available to %s appears to be used, you can fix the GPT "
+"to use all of the space (an extra %llu blocks) or continue with the current "
+"setting? "
+msgstr ""
+"Nie ca³e dostêpne miejsce na %s wydaje siê byæ u¿ywane, poprawiæ GPT, aby "
+"u¿yte zosta³o ca³e miejsce (dodatkowe %llu bloków) czy kontynuowaæ przy "
+"aktualnych ustawieniach? "
+
+#: libparted/labels/gpt.c:952
+msgid ""
+"The backup GPT table is not at the end of the disk, as it should be.  This "
+"might mean that another operating system believes the disk is smaller.  Fix, "
+"by moving the backup to the end (and removing the old backup)?"
+msgstr ""
+"Kopia zapasowa tablicy GPT nie znajduje siê na koñcu dysku, a powinna.  Mo¿e "
+"to oznaczaæ, ¿e inny system operacyjny my¶li, ¿e dysk jest mniejszy ni¿ jest "
+"w rzeczywisto¶ci.  Czy naprawiæ to poprzez przesuniêcie kopii zapasowej na "
+"koniec (i usuniêcie starej kopii)?"
+
+#: libparted/labels/gpt.c:976
+msgid ""
+"Both the primary and backup GPT tables are corrupt.  Try making a fresh "
+"table, and using Parted's rescue feature to recover partitions."
+msgstr ""
+"Obie tablice GPT, g³ówna i jej kopia zapasowa, s± uszkodzone.  Spróbuj "
+"utworzyæ now± tablicê oraz u¿yj opcjê 'rescue', aby odzyskaæ partycje."
+
+#: libparted/labels/gpt.c:987
+msgid ""
+"The backup GPT table is corrupt, but the primary appears OK, so that will be "
+"used."
+msgstr ""
+"Zapasowa tablica GPT jest uszkodzona, ale g³ówna wydaje siê byæ w porz±dku i "
+"zostanie ona u¿yta."
+
+#: libparted/labels/gpt.c:999
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr ""
+"G³ówna tablica GPT jest uszkodzona, ale jej kopia zapasowa wydaje siê byæ w "
+"porz±dku i zostanie ona u¿yta."
+
+#: libparted/labels/gpt.c:1023
+msgid "primary partition table array CRC mismatch"
+msgstr "niezgodno¶æ sumy CRC g³ównej tablicy partycji"
+
+#: libparted/labels/mac.c:184
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Nieprawid³owy podpis %x dla etykiet dysków Mac."
+
+#: libparted/labels/mac.c:231
+msgid "Partition map has no partition map entry!"
+msgstr "Mapa partycji nie posiada wpisu mapy partycji!"
+
+#: libparted/labels/mac.c:279
+#, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr "%s jest zbyt ma³y dla etykiety dysku Mac!"
+
+#: libparted/labels/mac.c:508
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "Partycja %d posiada nieprawid³owy podpis %x."
+
+#: libparted/labels/mac.c:526
+#, c-format
+msgid "Partition %d has an invalid length of 0 bytes!"
+msgstr "Partycja %d posiada nieprawid³ow± d³ugo¶æ 0 bajtów!"
+
+#: libparted/labels/mac.c:557
+msgid "The data region doesn't start at the start of the partition."
+msgstr "Obszar danych nie rozpoczyna siê na pocz±tku partycji."
+
+#: libparted/labels/mac.c:574
+msgid "The boot region doesn't start at the start of the partition."
+msgstr "Obszar rozruchowy nie zaczyna siê na pocz±tku partycji."
+
+#: libparted/labels/mac.c:588
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr "Obszar rozruchowy partycji nie okupuje ca³ej partycji."
+
+#: libparted/labels/mac.c:599
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr "Obszar danych partycji nie okupuje ca³ej partycji."
+
+#: libparted/labels/mac.c:652
+#, c-format
+msgid ""
+"Weird block size on device descriptor: %d bytes is not divisible by 512."
+msgstr ""
+"Dziwny rozmiar bloku w deskryptorze urz±dzenia: %d bajtów nie jest podzielne "
+"przez 512."
+
+#: libparted/labels/mac.c:665
+#, c-format
+msgid ""
+"The driver descriptor says the physical block size is %d bytes, but Linux "
+"says it is %d bytes."
+msgstr ""
+"Deskryptor napêdu mówi, ¿e fizyczny rozmiar bloku wynosi %d bajtów, ale "
+"Linux mówi, ¿e wynosi %d bajtów."
+
+#: libparted/labels/mac.c:719
+msgid "No valid partition map found."
+msgstr "Nie znaleziono prawid³owej mapy partycji."
+
+#: libparted/labels/mac.c:780
+#, c-format
+msgid ""
+"Conflicting partition map entry sizes!  Entry 1 says it is %d, but entry %d "
+"says it is %d!"
+msgstr ""
+"Wyst±pi³ konflikt miêdzy rozmiarami wpisów mapy partycji!  Wpis 1 mówi, ¿e "
+"jest %d, ale wpis %d mówi, ¿e jest %d!"
+
+#: libparted/labels/mac.c:811
+msgid "Weird!  There are 2 partitions map entries!"
+msgstr "Dziwne!  Istniej± 2 wpisy map partycji!"
+
+#: libparted/labels/mac.c:1357
+msgid ""
+"Changing the name of a root or swap partition will prevent Linux from "
+"recognising it as such."
+msgstr ""
+"Zmiana nazwy partycji root lub wymiany spowoduje, ¿e Linux jej nie rozpozna."
+
+#: libparted/labels/mac.c:1461
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr "Nie mo¿na dodaæ kolejnej partycji -- mapa partycji jest zbyt ma³a!"
+
+#: libparted/labels/pc98.c:331
+#, c-format
+msgid "Invalid partition table on %s."
+msgstr "Nieprawid³owa tablica partycji na %s."
+
+#: libparted/labels/pc98.c:384 libparted/labels/pc98.c:462
+#, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries.  This is still "
+"unsupported."
+msgstr ""
+"Partycja %d nie jest wyrównana do granic cylindra.  Nadal nie jest to "
+"wspierane."
+
+#: libparted/labels/pc98.c:780
+msgid "Can't add another partition."
+msgstr "Nie mo¿na dodaæ kolejnej partycji."
+
+#: libparted/labels/pt-tools.c:125
+#, c-format
+msgid ""
+"partition length of %jd sectors exceeds the %s-partition-table-imposed "
+"maximum of %jd"
+msgstr ""
+"d³ugo¶æ partycji %jd sektorów przekracza maksimum tablicy partycji %s "
+"wynosz±ce %jd"
+
+#: libparted/labels/pt-tools.c:138
+#, c-format
+msgid ""
+"starting sector number, %jd exceeds the %s-partition-table-imposed maximum "
+"of %jd"
+msgstr ""
+"pocz±tkowy numer sektora %jd przekracza maksimum tablicy partycji %s "
+"wynosz±ce %jd"
+
+#: libparted/labels/rdb.c:169
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr "%s : Nieprawid³owa suma kontrolna bloku %llu typu %s."
+
+#: libparted/labels/rdb.c:484
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr "%s : Nie znaleziono bloku rdb, co nie powinno siê zdarzyæ."
+
+#: libparted/labels/rdb.c:573
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr "%s : Wykryto pêtlê na bloku %d."
+
+#: libparted/labels/rdb.c:592
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr "%s : Lista %s wydaje siê byæ uszkodzona na bloku %s."
+
+#: libparted/labels/rdb.c:691
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr "%s : Nie powiod³o siê wypisanie uszkodzonych bloków."
+
+#: libparted/labels/rdb.c:699
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr "%s : Wypisanie bloków partycji nie powiod³o siê."
+
+#: libparted/labels/rdb.c:707
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr "%s : Wypisanie bloków systemu plików nie powiod³o siê."
+
+#: libparted/labels/rdb.c:715
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr "%s : Nie powiod³o siê wypisanie bloków rozruchowych."
+
+#: libparted/labels/rdb.c:742
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr "Nie powiód³ siê zapis bloku partycji na %d."
+
+#: libparted/labels/rdb.c:1080
+msgid "Unable to allocate a partition number."
+msgstr "Nie mo¿na przydzieliæ numeru partycji."
+
+#: libparted/labels/sun.c:161
+msgid "Corrupted Sun disk label detected."
+msgstr "Wykryto uszkodzon± etykietê dysku Sun."
+
+#: libparted/labels/sun.c:276
+#, c-format
+msgid ""
+"The disk CHS geometry (%d,%d,%d) reported by the operating system does not "
+"match the geometry stored on the disk label (%d,%d,%d)."
+msgstr ""
+"Geometria dysku CHS (%d,%d,%d), zg³oszona przez system operacyjny, nie "
+"pasuje do geometrii przechowywanej w etykiecie dysku (%d,%d,%d)."
+
+#: libparted/labels/sun.c:298
+#, c-format
+msgid "The disk label describes a disk bigger than %s."
+msgstr "Etykieta dysku opisuje dysk wiêkszy ni¿ %s."
+
+#: libparted/labels/sun.c:473
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr ""
+"Dysk posiada %d cylindrów, co stanowi wiêcej ni¿ dopuszczalny limit 65536."
+
+#: libparted/labels/sun.c:812
+msgid ""
+"The Whole Disk partition is the only available one left.  Generally, it is "
+"not a good idea to overwrite this partition with a real one.  Solaris may "
+"not be able to boot without it, and SILO (the sparc boot loader) appreciates "
+"it as well."
+msgstr ""
+"Partycja ca³ego dysku jest jedyn± jaka pozosta³a.  Generalnie nie jest to "
+"dobry pomys³, aby j± nadpisaæ inn±, prawdziw±.  System Solaris mo¿e siê bez "
+"niej nie uruchomiæ, za¶ SILO (program ³aduj±cy SPARC) równie¿ j± doceni."
+
+#: libparted/labels/sun.c:827
+msgid "Sun disk label is full."
+msgstr "Etykieta dysku Sun jest pe³na."
+
+#: libparted/labels/vtoc.c:164
+msgid "opening of device failed"
+msgstr "otwieranie urz±dzenia nie powiod³o siê"
+
+#: libparted/labels/vtoc.c:168
+msgid "seeking on device failed"
+msgstr "ustawianie pozycji na urz±dzeniu nie powiod³o siê"
+
+#: libparted/labels/vtoc.c:172
+msgid "writing to device failed"
+msgstr "zapis na urz±dzeniu nie powiód³ siê"
+
+#: libparted/labels/vtoc.c:176
+msgid "reading from device failed"
+msgstr "odczyt z urz±dzenia nie powiód³ siê"
+
+#: libparted/labels/vtoc.c:299 libparted/labels/vtoc.c:308
+#: libparted/labels/vtoc.c:329 libparted/labels/vtoc.c:336
+msgid "Could not read volume label."
+msgstr "Nie uda³o siê odczytaæ etykiety wolumenu."
+
+#: libparted/labels/vtoc.c:356 libparted/labels/vtoc.c:363
+msgid "Could not write volume label."
+msgstr "Nie uda³o siê zapisaæ etykiety wolumenu."
+
+#: libparted/labels/vtoc.c:469
+msgid "Could not read VTOC labels."
+msgstr "Nie uda³o siê odczytaæ etykiet VTOC."
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr "Nie uda³o siê odczytaæ VTOC FMT1 DSCB."
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr "Nie uda³o siê odczytaæ VTOC FMT4 DSCB."
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr "Nie uda³o siê odczytaæ VTOC FMT5 DSCB."
+
+#: libparted/labels/vtoc.c:496
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr "Nie uda³o siê odczytaæ VTOC FMT7 DSCB."
+
+#: libparted/labels/vtoc.c:516
+msgid "Could not write VTOC labels."
+msgstr "Nie uda³o siê zapisaæ etykiet VTOC."
+
+#: libparted/labels/vtoc.c:522
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr "Nie uda³o siê zapisaæ VTOC FMT1 DSCB."
+
+#: libparted/labels/vtoc.c:529
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr "Nie uda³o siê zapisaæ VTOC FMT4 DSCB."
+
+#: libparted/labels/vtoc.c:536
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr "Nie uda³o siê zapisaæ VTOC FMT5 DSCB."
+
+#: libparted/labels/vtoc.c:543
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr "Nie uda³o siê zapisaæ VTOC FMT7 DSCB."
+
+#: libparted/libparted.c:230 libparted/libparted.c:245
+msgid "Out of memory."
+msgstr "Brak pamiêci."
+
+#: libparted/unit.c:138
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr ""
+"Nie mo¿na pobraæ rozmiaru jednostki dla specjalnej jednostki 'COMPACT'."
+
+#: libparted/unit.c:384
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr "\"%s\" posiada nieprawid³ow± sk³adniê dla lokacji."
+
+#: libparted/unit.c:392
+#, c-format
+msgid "The maximum head value is %d."
+msgstr "Maksymalna warto¶æ g³owicy wynosi %d."
+
+#: libparted/unit.c:399
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr "Maksymalna warto¶æ sektora wynosi %d."
+
+#: libparted/unit.c:411 libparted/unit.c:556
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr "Lokacja %s jest poza urz±dzeniem %s."
+
+#: libparted/unit.c:531
+msgid "Invalid number."
+msgstr "Nieprawid³owy numer."
+
+#: libparted/fs/amiga/affs.c:62 libparted/fs/amiga/apfs.c:55
+#: libparted/fs/amiga/asfs.c:69
+#, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "%s : Nie powiod³o siê przydzielanie bloku partycji\n"
+
+#: libparted/fs/amiga/affs.c:77 libparted/fs/amiga/apfs.c:68
+#: libparted/fs/amiga/asfs.c:81
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr "%s : Nie powiod³o siê przydzielanie bloku\n"
+
+#: libparted/fs/amiga/affs.c:82 libparted/fs/amiga/apfs.c:73
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr "%s : Nie uda³o siê odczytaæ bloku startowego %llu\n"
+
+#: libparted/fs/amiga/affs.c:98 libparted/fs/amiga/apfs.c:84
+#: libparted/fs/amiga/asfs.c:87 libparted/fs/amiga/asfs.c:101
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr "%s : Nie uda³o siê odczytaæ bloku g³ównego %llu\n"
+
+#: libparted/fs/amiga/amiga.c:71
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr "%s : Nie powiod³o siê przydzielanie elementu id listy\n"
+
+#: libparted/fs/amiga/amiga.c:188
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr "%s : Nie uda³o siê odczytaæ bloku %llu\n"
+
+#: libparted/fs/amiga/amiga.c:201
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr "%s : Nieprawid³owa suma kontrolna bloku %llu typu %s\n"
+
+#: libparted/fs/amiga/amiga.c:211
+#, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s : Nie uda³o siê zapisaæ bloku %d\n"
+
+#: libparted/fs/amiga/amiga.c:277
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr "%s : Nie powiod³o siê przydzielanie bloku rdb disk_specific\n"
+
+#: libparted/fs/amiga/amiga.c:288
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr "%s : Nie znaleziono bloku rdb, co nie powinno siê zdarzyæ\n"
+
+#: libparted/fs/amiga/amiga.c:317
+#, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr "%s : Nie powiód³ siê odczyt bloku partycji %llu\n"
+
+#: libparted/fs/fat/fat.c:174
+msgid ""
+"GNU Parted was miscompiled: the FAT boot sector should be 512 bytes.  FAT "
+"support will be disabled."
+msgstr ""
+"Program GNU Parted zosta³ nieprawid³owo zbudowany: sektor rozruchowy FAT "
+"powinien mieæ 512 bajtów.  Wsparcie dla FAT zostaje wy³±czone."
+
+#: libparted/fs/fat/bootsector.c:49 libparted/fs/fat/bootsector.c:56
+msgid "File system has an invalid signature for a FAT file system."
+msgstr "System plików posiada nieprawid³owy podpis dla systemu plików FAT."
+
+#: libparted/fs/fat/bootsector.c:64
+msgid "File system has an invalid sector size for a FAT file system."
+msgstr ""
+"System plików posiada nieprawid³owy rozmiar sektora dla systemu plików FAT."
+
+#: libparted/fs/fat/bootsector.c:71
+msgid "File system has an invalid cluster size for a FAT file system."
+msgstr ""
+"System plików posiada nieprawid³owy rozmiar klastra dla systemu plików FAT."
+
+#: libparted/fs/fat/bootsector.c:78
+msgid ""
+"File system has an invalid number of reserved sectors for a FAT file system."
+msgstr ""
+"System plików posiada nieprawid³ow± ilo¶æ zarezerwowanych sektorów dla "
+"systemu plików FAT."
+
+#: libparted/fs/fat/bootsector.c:85
+msgid "File system has an invalid number of FATs."
+msgstr "System plików posiada nieprawid³ow± ilo¶æ FAT-ów."
+
+#: libparted/fs/fat/bootsector.c:156
+#, c-format
+msgid ""
+"This file system has a logical sector size of %d.  GNU Parted is known not "
+"to work properly with sector sizes other than 512 bytes."
+msgstr ""
+"Ten system plików posiada rozmiar logicznego sektora %d.  GNU Parted nie "
+"wspó³pracuje prawid³owo z rozmiarami sektorów innymi ni¿ 512 bajtów."
+
+#: libparted/fs/fat/bootsector.c:181
+#, c-format
+msgid ""
+"The file system's CHS geometry is (%d, %d, %d), which is invalid.  The "
+"partition table's CHS geometry is (%d, %d, %d).  If you select Ignore, the "
+"file system's CHS geometry will be left unchanged.  If you select Fix, the "
+"file system's CHS geometry will be set to match the partition table's CHS "
+"geometry."
+msgstr ""
+"Geometri± CHS systemu pliku jest (%d, %d, %d), która nie jest prawid³owa.  "
+"Geometri± CHS tablicy partycji jest (%d, %d, %d).  Je¶li zignorujesz, to "
+"geometria CHS systemu pliku pozostanie niezmieniona.  Je¶li zdecydujesz siê "
+"naprawiæ, geometria CHS systemu plików zostanie dopasowana do geometrii CHS "
+"tablicy partycji."
+
+#: libparted/fs/fat/bootsector.c:230
+msgid "FAT boot sector says logical sector size is 0.  This is weird. "
+msgstr ""
+"Sektor rozruchowy FAT mówi, ¿e rozmiar sektora logicznego jest 0.  Dziwne."
+
+#: libparted/fs/fat/bootsector.c:236
+msgid "FAT boot sector says there are no FAT tables.  This is weird. "
+msgstr "Sektor rozruchowy FAT mówi, ¿e nie ma ¿adnych tablic FAT.  Dziwne."
+
+#: libparted/fs/fat/bootsector.c:242
+msgid "FAT boot sector says clusters are 0 sectors.  This is weird. "
+msgstr "Sektor rozruchowy FAT mówi, ¿e klastry zajmuj± 0 sektorów.  Dziwne."
+
+#: libparted/fs/fat/bootsector.c:252
+msgid "File system is FAT12, which is unsupported."
+msgstr "Systemem plików jest FAT12, który nie jest wspierany."
+
+#: libparted/fs/fat/bootsector.c:428
+#, c-format
+msgid ""
+"The information sector has the wrong signature (%x).  Select cancel for now, "
+"and send in a bug report.  If you're desperate, it's probably safe to ignore."
+msgstr ""
+"Sektor informacyjny posiada nieprawid³owy podpis (%x).  Na razie poniechaj "
+"aktualn± operacjê i wy¶lij raport dotycz±cy b³êdów.  Ewentualnie zignoruj "
+"ca³± sytuacjê."
+
+#: libparted/fs/linux_swap/linux_swap.c:247
+#, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "Nierozpoznany podpis linuksowej partycji wymiany starego typu '%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:290
+#, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "Nierozpoznany podpis linuksowej partycji wymiany nowegu typu '%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:330
+#, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Nierozpoznany podpis linuksowej partycji wymiany swsusp '%9s'."
+
+#: libparted/fs/hfs/probe.c:50
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to "
+"%d bytes."
+msgstr ""
+"Parted nie mo¿e u¿ywaæ systemów plików HFS na dyskach z rozmiarem sektora "
+"innym ni¿ %d bajtów."
+
+#: parted/parted.c:123
+msgid "displays this help message"
+msgstr "wy¶wietla tê oto pomoc"
+
+#: parted/parted.c:124
+msgid "lists partition layout on all block devices"
+msgstr "wypisuje rozk³ad partycji na wszystkich wykrytych urz±dzeniach"
+
+#: parted/parted.c:125
+msgid "displays machine parseable output"
+msgstr "wy¶wietla dane w formacie czytelnym dla maszyny"
+
+#: parted/parted.c:126
+msgid "never prompts for user intervention"
+msgstr "nigdy nie prosi u¿ytkownika o interwencjê"
+
+#: parted/parted.c:127
+msgid "displays the version"
+msgstr "wy¶wietla numer wersji"
+
+#: parted/parted.c:128
+msgid "alignment for new partitions"
+msgstr "wyrównanie dla nowych partycji"
+
+#: parted/parted.c:140
+msgid ""
+"NUMBER is the partition number used by Linux.  On MS-DOS disk labels, the "
+"primary partitions number from 1 to 4, logical partitions from 5 onwards.\n"
+msgstr ""
+"NUMER oznacza numer partycji u¿ywanej przez Linuksa.  Dla etykiet dysków MS-"
+"DOS liczba partycji g³ównych mie¶ci siê w przedziale 1-4, za¶ partycje "
+"logiczne zajmuj± kolejne numery pocz±wszy od 5.\n"
+
+#: parted/parted.c:143
+msgid "LABEL-TYPE is one of: "
+msgstr "TYP-ETYKIETY stanowi jedn± z nastêpuj±cych warto¶ci: "
+
+#: parted/parted.c:144
+msgid "FLAG is one of: "
+msgstr "FLAGA stanowi jedn± z nastêpuj±cych warto¶ci: "
+
+#: parted/parted.c:145
+msgid "UNIT is one of: "
+msgstr "JEDNOSTKA stanowi jedn± z nastêpuj±cych warto¶ci: "
+
+#: parted/parted.c:146
+msgid "desired alignment: minimum or optimal"
+msgstr "po¿±dane wyrównanie: minimalne lub optymalne"
+
+#: parted/parted.c:147
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr ""
+"TYP-PARTYCJI stanowi jedn± z nastêpuj±cych warto¶ci: g³ówna, logiczna, "
+"rozszerzona\n"
+
+#: parted/parted.c:149
+msgid "FS-TYPE is one of: "
+msgstr "SYSTEM-PLIKÓW stanowi jedn± z nastêpuj±cych warto¶ci: "
+
+#: parted/parted.c:150
+msgid ""
+"START and END are disk locations, such as 4GB or 10%.  Negative values count "
+"from the end of the disk.  For example, -1s specifies exactly the last "
+"sector.\n"
+msgstr ""
+"POCZ¡TEK i KONIEC oznaczaj± po³o¿enia na dysku, np. 4GB lub 10%.  Ujemne "
+"warto¶ci s± liczone od koñca dysku.  Na przyk³ad -1s oznacza dok³adnie "
+"ostatni sektor.\n"
+
+#: parted/parted.c:153
+msgid "STATE is one of: on, off\n"
+msgstr "STAN jest reprezentowany poprzez: w³±czony, wy³±czony\n"
+
+#: parted/parted.c:154
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "URZ¡DZENIEM jest zwykle /dev/hda lub /dev/sda\n"
+
+#: parted/parted.c:155
+msgid "NAME is any word you want\n"
+msgstr "NAZWA jest dowolnym s³owem jakie chcesz\n"
+
+#: parted/parted.c:158
+msgid ""
+"Copyright (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"This program is free software, covered by the GNU General Public License.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+msgstr ""
+"Copyright (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"Program ten jest wolnodostêpny, zgodnie z Powszechn± Licencj± Publiczn± "
+"GNU.\n"
+"\n"
+"Program ten udostêpniany jest w nadziei, ¿e bêdzie przydatny, ale BEZ\n"
+"¯ADNEJ GWARANCJI, nawet bez domy¶lnej gwarancji PRZYDATNO¦CI HANDLOWEJ albo\n"
+"PRZYDATNO¦CI DO KONKRETNYCH ZASTOSOWAÑ. Wiêcej szczegó³ów znajduje siê\n"
+"w Powszechnej Licencji Publicznej GNU.\n"
+"\n"
+
+#: parted/parted.c:204
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(czas do koñca %.2d:%.2d)"
+
+#: parted/parted.c:223
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+"Partycja %s jest u¿ywana.  Nale¿y j± od³±czyæ przed jej modyfikacj± Partedem."
+
+#: parted/parted.c:241
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "Partycja (partycje) na %s s± u¿ywane."
+
+#: parted/parted.c:253
+#, c-format
+msgid ""
+"The existing disk label on %s will be destroyed and all data on this disk "
+"will be lost. Do you want to continue?"
+msgstr ""
+"Istniej±ca etykieta dysku na %s zostanie zniszczona, a wszystkie dane na tym "
+"dysku zostan± utracone. Kontynuowaæ?"
+
+#: parted/parted.c:502
+msgid "New disk label type?"
+msgstr "Nowy typ etykiety dysku?"
+
+#: parted/parted.c:562
+msgid "Partition type?"
+msgstr "Typ partycji?"
+
+#: parted/parted.c:580 parted/parted.c:766
+msgid "Partition name?"
+msgstr "Nazwa partycji?"
+
+#: parted/parted.c:588
+msgid "File system type?"
+msgstr "Typ systemu plików?"
+
+#: parted/parted.c:594 parted/parted.c:1342
+msgid "Start?"
+msgstr "Pocz±tek?"
+
+#: parted/parted.c:596 parted/parted.c:1344
+msgid "End?"
+msgstr "Koniec?"
+
+#: parted/parted.c:661
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s.%s"
+msgstr ""
+"Wybrano partycjê od %s do %s.\n"
+"Najbli¿sza z jak± Parted mo¿e sobie poradziæ jest od %s do %s.%s"
+
+#: parted/parted.c:666
+msgid ""
+"\n"
+"Is this still acceptable to you?"
+msgstr ""
+"\n"
+"Czy jest to do przyjêcia?"
+
+#: parted/parted.c:688
+msgid "The resulting partition is not properly aligned for best performance."
+msgstr ""
+"Partycja wynikowa nie jest wyrównana w³a¶ciwie dla najlepszej wydajno¶ci."
+
+#: parted/parted.c:763 parted/parted.c:1383 parted/parted.c:1455
+#: parted/parted.c:1489
+msgid "Partition number?"
+msgstr "Numer partycji?"
+
+#: parted/parted.c:841
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d.  Each cylinder is %s.\n"
+msgstr ""
+"Geometria BIOS cylinder,g³owica,sektor: %d,%d,%d.  Ka¿dy cylinder ma %s.\n"
+
+#: parted/parted.c:881
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr "Model: %s (%s)\n"
+
+#: parted/parted.c:883
+#, c-format
+msgid "Disk %s: %s\n"
+msgstr "Dysk %s: %s\n"
+
+#: parted/parted.c:884
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr "Rozmiar sektora (logiczny/fizyczny): %lldB/%lldB\n"
+
+#: parted/parted.c:896
+#, c-format
+msgid "Partition Table: %s\n"
+msgstr "Tablica partycji: %s\n"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Number"
+msgstr "Numer"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Start"
+msgstr "Pocz±tek"
+
+#: parted/parted.c:1008 parted/parted.c:1011
+msgid "End"
+msgstr "Koniec"
+
+#: parted/parted.c:1011
+msgid "Size"
+msgstr "Rozmiar"
+
+#: parted/parted.c:1015
+msgid "Type"
+msgstr "Typ"
+
+#: parted/parted.c:1017
+msgid "File system"
+msgstr "System plików"
+
+#: parted/parted.c:1020
+msgid "Name"
+msgstr "Nazwa"
+
+#: parted/parted.c:1022
+msgid "Flags"
+msgstr "Flaga"
+
+#: parted/parted.c:1079
+msgid "Free Space"
+msgstr "Wolne miejsce"
+
+#: parted/parted.c:1241
+#, c-format
+msgid ""
+"A %s %s partition was found at %s -> %s.  Do you want to add it to the "
+"partition table?"
+msgstr ""
+"Partycja %s %s zosta³a znaleziona na %s -> %s.  Czy chcesz j± dodaæ do "
+"tablicy partycji?"
+
+#: parted/parted.c:1280
+msgid "searching for file systems"
+msgstr "szukam systemów plików"
+
+#: parted/parted.c:1408
+msgid "New device?"
+msgstr "Nowe urz±dzenie?"
+
+#: parted/parted.c:1453
+msgid "alignment type(min/opt)"
+msgstr "rodzaj wyrównania(min/opt)"
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d aligned\n"
+msgstr "%d wyrównana\n"
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d not aligned\n"
+msgstr "%d niewyrównana\n"
+
+#: parted/parted.c:1491
+msgid "Flag to Invert?"
+msgstr "Flaga do przestawienia?"
+
+#: parted/parted.c:1496
+msgid "New state?"
+msgstr "Nowy stan?"
+
+#: parted/parted.c:1533
+msgid "Unit?"
+msgstr "Jednostka?"
+
+#: parted/parted.c:1651
+msgid "align-check"
+msgstr "sprawd¼-wyrównanie"
+
+#: parted/parted.c:1654
+msgid ""
+"align-check TYPE N                        check partition N for TYPE(min|"
+"opt) alignment"
+msgstr ""
+"sprawd¼-wyrównanie TYP N                  sprawdzenie wyrównania TYP(min|"
+"opt) partycji N"
+
+#: parted/parted.c:1662
+msgid "help"
+msgstr "pomoc"
+
+#: parted/parted.c:1665
+msgid ""
+"help [COMMAND]                           print general help, or help on "
+"COMMAND"
+msgstr ""
+"pomoc [POLECENIE]             wy¶wietla pomoc ogóln± lub dotycz±c± POLECENIA"
+
+#: parted/parted.c:1671
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:1671
+msgid "mktable"
+msgstr "mktable"
+
+#: parted/parted.c:1674
+msgid ""
+"mklabel,mktable LABEL-TYPE               create a new disklabel (partition "
+"table)"
+msgstr ""
+"mklabel,mktable TYP-ETYKIETY  tworzy now± etykietê dysku (tablicê partycji)"
+
+#: parted/parted.c:1680
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:1683
+msgid "mkpart PART-TYPE [FS-TYPE] START END     make a partition"
+msgstr "mkpart TYP-PARTYCJI [SYSTEM-PLIKÓW] POCZ¡TEK KONIEC   tworzy partycjê"
+
+#: parted/parted.c:1689
+msgid ""
+"'mkpart' makes a partition without creating a new file system on the "
+"partition.  FS-TYPE may be specified to set an appropriate partition ID.\n"
+msgstr ""
+"Polecenie 'mkpart' tworzy partycjê bez tworzenia nowego systemu plików na "
+"tej partycji.  Opcjonalny SYSTEM-PLIKÓW mo¿e zostaæ podany do okre¶lenia "
+"w³a¶ciwego identyfikatora partycji.\n"
+
+#: parted/parted.c:1694
+msgid "name"
+msgstr "nazwa"
+
+#: parted/parted.c:1697
+msgid "name NUMBER NAME                         name partition NUMBER as NAME"
+msgstr "name NUMER NAZWA              nadaje NAZWÊ partycji NUMER"
+
+#: parted/parted.c:1702
+msgid "print"
+msgstr "drukuj"
+
+#: parted/parted.c:1705
+msgid ""
+"print [devices|free|list,all|NUMBER]     display the partition table, "
+"available devices, free space, all found partitions, or a particular "
+"partition"
+msgstr ""
+"print [devices|free|list,all|NUMER]   wy¶wietla tablicê partycji, dostêpne "
+"urz±dzenia, wolne miejsce, znalezione partycje lub okre¶lon± partycjê"
+
+#: parted/parted.c:1710
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+"Bez argumentów 'print' wy¶wietla ca³± tablicê partycji. Jednak z "
+"nastêpuj±cymi parametrami wykonuje ró¿ne inne akcje:\n"
+
+#: parted/parted.c:1712
+msgid "  devices   : display all active block devices\n"
+msgstr "  devices   : wy¶wietla wszystkie aktywne urz±dzenia blokowe\n"
+
+#: parted/parted.c:1713
+msgid ""
+"  free      : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+"  free      : wy¶wietla informacje o wolnym, niespartycjonowanym miejscu na "
+"aktualnym urz±dzeniu blokowym\n"
+
+#: parted/parted.c:1715
+msgid ""
+"  list, all : display the partition tables of all active block devices\n"
+msgstr ""
+"  list, all : wy¶wietla tablice partycji wszystkich aktywnych urz±dzeñ "
+"blokowych\n"
+
+#: parted/parted.c:1716
+msgid ""
+"  NUMBER    : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+"  NUMER     : wy¶wietla bardziej szczegó³owe informacje o okre¶lonej "
+"partycji\n"
+
+#: parted/parted.c:1721
+msgid "quit"
+msgstr "koniec"
+
+#: parted/parted.c:1724
+msgid "quit                                     exit program"
+msgstr "quit                          koñczy pracê programu"
+
+#: parted/parted.c:1729
+msgid "rescue"
+msgstr "uratuj"
+
+#: parted/parted.c:1732
+msgid ""
+"rescue START END                         rescue a lost partition near START "
+"and END"
+msgstr ""
+"rescue POCZ¡TEK KONIEC        odzyskuje utracon± partycjê blisko POCZ¡TKU i "
+"KOÑCA"
+
+#: parted/parted.c:1738
+msgid "rm"
+msgstr "usuñ"
+
+#: parted/parted.c:1741
+msgid "rm NUMBER                                delete partition NUMBER"
+msgstr "rm NUMER                      usuwa partycjê NUMER"
+
+#: parted/parted.c:1746
+msgid "select"
+msgstr "wybierz"
+
+#: parted/parted.c:1749
+msgid "select DEVICE                            choose the device to edit"
+msgstr "select URZ¡DZENIE             wybiera urz±dzenie do edycji"
+
+#: parted/parted.c:1754
+msgid "set"
+msgstr "ustaw"
+
+#: parted/parted.c:1757
+msgid ""
+"set NUMBER FLAG STATE                    change the FLAG on partition NUMBER"
+msgstr "set NUMER FLAGA STAN          zmienia flagê na partycji NUMER"
+
+#: parted/parted.c:1763
+msgid "toggle"
+msgstr "przestaw"
+
+#: parted/parted.c:1766
+msgid ""
+"toggle [NUMBER [FLAG]]                   toggle the state of FLAG on "
+"partition NUMBER"
+msgstr "toggle [NUMER [FLAGA]]        przestawia stan FLAGI na partycji NUMER"
+
+#: parted/parted.c:1772
+msgid "unit"
+msgstr "jednostka"
+
+#: parted/parted.c:1775
+msgid "unit UNIT                                set the default unit to UNIT"
+msgstr "unit JEDNOSTKA                ustawia domy¶ln± jednostkê"
+
+#: parted/parted.c:1780
+msgid "version"
+msgstr "wersja"
+
+#: parted/parted.c:1783
+msgid ""
+"version                                  display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+"version                       wy¶wietla numer wersji GNU Parteda i "
+"informacje o prawach autorskich"
+
+#: parted/parted.c:1787
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+"'version' wy¶wietla informacje o prawach autorskich i wersji dla tej kopii "
+"GNU Parteda\n"
+
+#: parted/parted.c:1855
+#, c-format
+msgid "Usage: %s [-hlmsv] [-a<align>] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+"Sk³adnia: %s [-hlmsv] [-a<wyrównanie>] [URZ¡DZENIE [POLECENIE "
+"[PARAMETRY]]...]\n"
+
+#: parted/parted.c:1899
+msgid "No device found"
+msgstr "Nie znaleziono urz±dzenia"
+
+#: parted/parted.c:1936
+msgid "WARNING: You are not superuser.  Watch out for permissions."
+msgstr "UWAGA: Nie jeste¶ superu¿ytkownikiem. Uwa¿aj na uprawnienia."
+
+#: parted/parted.c:1974
+msgid "You may need to update /etc/fstab.\n"
+msgstr "Mo¿e wyst±piæ potrzeba aktualizacji /etc/fstab.\n"
+
+#: parted/ui.c:162
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+"Witamy w GNU Partedzie! Listê poleceñ mo¿na zobaczyæ po napisaniu 'help'.\n"
+
+#: parted/ui.c:165
+msgid ""
+"Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]\n"
+"Apply COMMANDs with PARAMETERS to DEVICE.  If no COMMAND(s) are given, run "
+"in\n"
+"interactive mode.\n"
+msgstr ""
+"Sk³adnia: parted [OPCJA]... [URZ¡DZENIE [POLECENIE [PARAMETRY]...]...]\n"
+"Wykonuje POLECENIA z PARAMETRAMI dla URZ¡DZENIA.  Je¶li nie podano POLECEÑ,\n"
+"program zostanie uruchomiony w trybie interaktywnym.\n"
+
+#: parted/ui.c:170
+#, c-format
+msgid ""
+"\n"
+"\n"
+"You found a bug in GNU Parted! Here's what you have to do:\n"
+"\n"
+"Don't panic! The bug has most likely not affected any of your data.\n"
+"Help us to fix this bug by doing the following:\n"
+"\n"
+"Check whether the bug has already been fixed by checking\n"
+"the last version of GNU Parted that you can find at:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Please check this version prior to bug reporting.\n"
+"\n"
+"If this has not been fixed yet or if you don't know how to check,\n"
+"please visit the GNU Parted website:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"for further information.\n"
+"\n"
+"Your report should contain the version of this release (%s)\n"
+"along with the error message below, the output of\n"
+"\n"
+"\tparted DEVICE unit co print unit s print\n"
+"\n"
+"and the following history of commands you entered.\n"
+"Also include any additional information about your setup you\n"
+"consider important.\n"
+msgstr ""
+"\n"
+"\n"
+"Znalaz³e¶ b³±d w programie GNU Parted! Poni¿ej znajduje siê instrukcja\n"
+"postêpowania:\n"
+"\n"
+"Nie panikuj! B³±d najprawdopodobniej nie dotkn±³ ¿adnych twoich danych.\n"
+"Pomó¿ nam poprawiæ ten b³±d wykonuj±c nastêpuj±ce czynno¶ci:\n"
+"\n"
+"Sprawd¼, czy b³±d zosta³ ju¿ poprawiony sprawdzaj±c najnowsz± wersjê GNU\n"
+"Parteda dostêpn± pod adresem:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Proszê sprawdziæ tê wersjê przed zg³aszaniem b³êdu.\n"
+"\n"
+"Je¶li b³±d nie zosta³ jeszcze poprawiony lub nie wiesz, jak to sprawdziæ,\n"
+"proszê odwiedziæ stronê GNU Parteda:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"gdzie znajduje siê wiêcej informacji.\n"
+"\n"
+"Zg³oszenie b³êdu powinno zawieraæ wersjê tego wydania (%s)\n"
+"wraz z poni¿szym komunikatem o b³êdzie, wyj¶ciem polecenia\n"
+"\n"
+"\tparted URZ¡DZENIE unit co print unit s print\n"
+"\n"
+"i nastêpuj±c± histori± wprowadzonych poleceñ.\n"
+"Do³±cz tak¿e dodatkowe informacje o konfiguracji, które uwa¿asz\n"
+"za istotne.\n"
+
+#: parted/ui.c:291
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+"\n"
+"Historia poleceñ:\n"
+
+#: parted/ui.c:354
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+"\n"
+"B³±d: SEGV_MAPERR (Adres nie odwzorowany na obiekcie)\n"
+
+#: parted/ui.c:360
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+"\n"
+"B³±d: SEGV_ACCERR (Nieprawid³owe uprawnienia dla odwzorowanego obiektu)\n"
+
+#: parted/ui.c:365
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+"\n"
+"B³±d: Wyst±pi³ ogólny sygna³ SIGSEGV.\n"
+
+#: parted/ui.c:389
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+"\n"
+"B³±d: FPE_INTDIV (dzielenie przez zero na liczbach ca³kowitych)"
+
+#: parted/ui.c:394
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+"\n"
+"B³±d: FPE_INTOVF (przepe³nienie dla liczby ca³kowitej)"
+
+#: parted/ui.c:399
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+"\n"
+"B³±d: FPE_FLTDIV (dzielenie przez zero na liczbach zmiennoprzecinkowych)"
+
+#: parted/ui.c:404
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+"\n"
+"B³±d: FPE_FLTOVF (przepe³nienie dla liczby zmiennoprzecinkowej)"
+
+#: parted/ui.c:409
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+"\n"
+"B³±d: FPE_FLTUND (niedope³nienie dla liczby zmiennoprzecinkowej)"
+
+#: parted/ui.c:414
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+"\n"
+"B³±d: FPE_FLTRES (niedok³adny wynik dla liczb zmiennoprzecinkowych)"
+
+#: parted/ui.c:419
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+"\n"
+"B³±d: FPE_FLTINV (nieprawid³owa operacja dla liczb zmiennoprzecinkowych)"
+
+#: parted/ui.c:424
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+"\n"
+"B³±d: FPE_FLTSUB (indeks spoza zakresu dla liczb zmiennoprzecinkowych)"
+
+#: parted/ui.c:429
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+"\n"
+"B³±d: Wyst±pi³ ogólny sygna³ SIGFPE."
+
+#: parted/ui.c:453
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+"\n"
+"B³±d: ILL_ILLOPC (niedozwolony kod instrukcji)"
+
+#: parted/ui.c:458
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+"\n"
+"B³±d: ILL_ILLOPN (niedozwolony operand)"
+
+#: parted/ui.c:463
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+"\n"
+"B³±d: ILL_ILLADR (niedozwolony tryb adresowania)"
+
+#: parted/ui.c:468
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+"\n"
+"B³±d: ILL_ILLTRP (niedozwolona pu³apka)"
+
+#: parted/ui.c:473
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+"\n"
+"B³±d: ILL_PRVOPC (uprzywilejowany kod instrukcji)"
+
+#: parted/ui.c:478
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+"\n"
+"B³±d: ILL_PRVREG (uprzywilejowany rejestr)"
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+"\n"
+"B³±d: ILL_COPROC (b³±d koprocesora)"
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+"\n"
+"B³±d: ILL_BADSTK (wewnêtrzny b³±d stosu)"
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+"\n"
+"B³±d: Wyst±pi³ ogólny sygna³ SIGILL."
+
+#: parted/ui.c:891
+#, c-format
+msgid "invalid token: %s"
+msgstr "nieprawid³owy token: %s"
+
+#: parted/ui.c:1048
+msgid "Expecting a partition number."
+msgstr "Oczekiwany by³ numer partycji."
+
+#: parted/ui.c:1057
+msgid "Partition doesn't exist."
+msgstr "Partycja nie istnieje."
+
+#: parted/ui.c:1077
+msgid "Expecting a file system type."
+msgstr "Oczekiwany by³ typ systemu plików."
+
+#: parted/ui.c:1084
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Nieznany typ systemu plików \"%s\"."
+
+#: parted/ui.c:1105
+msgid "Expecting a disk label type."
+msgstr "Oczekiwany by³ typ etykiety dysku."
+
+#: parted/ui.c:1203
+msgid "Can't create any more partitions."
+msgstr "Nie mo¿na utworzyæ wiêcej partycji."
+
+#: parted/ui.c:1213
+msgid "Expecting a partition type."
+msgstr "Oczekiwany by³ typ partycji."
+
+#: parted/ui.c:1361
+msgid "on"
+msgstr "w³±czone"
+
+#: parted/ui.c:1362
+msgid "off"
+msgstr "wy³±czone"
+
+#: parted/ui.c:1379
+msgid "optimal"
+msgstr "optymalne"
+
+#: parted/ui.c:1380
+msgid "minimal"
+msgstr "minimalne"
+
+#: parted/ui.c:1513
+msgid "OPTIONs:"
+msgstr "OPCJE:"
+
+#: parted/ui.c:1518
+msgid "COMMANDs:"
+msgstr "POLECENIA:"
+
+#: parted/ui.c:1521
+#, c-format
+msgid ""
+"\n"
+"Report bugs to %s\n"
+msgstr ""
+"\n"
+"Prosimy zg³aszaæ b³êdy na adres <%s>.\n"
+"B³êdy w t³umaczeniu prosimy zg³aszaæ na adres: <translation-team-pl@lists."
+"sourceforge.net>.\n"
+
+#: parted/ui.c:1528
+#, c-format
+msgid "Using %s\n"
+msgstr "U¿ycie %s\n"
+
+#: parted/ui.c:1602
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr "To polecenie nie ma sensu w trybie nieinteraktywnym.\n"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]\n"
+#~ "  or:  %s DEVICE MINOR\n"
+#~ msgstr ""
+#~ "Sk³adnia: %s [OPCJA]\n"
+#~ "     lub: %s URZ¡DZENIE MINOR\n"
+
+#~ msgid ""
+#~ "Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Czyszczenie nieu¿ywanego miejsca na partycji FAT (narzêdzie testuj±ce\n"
+#~ "GNU Parteda).\n"
+#~ "\n"
+
+#~ msgid "      --help     display this help and exit\n"
+#~ msgstr "      --help     wy¶wietlenie tego opisu i zakoñczenie\n"
+
+#~ msgid "      --version  output version information and exit\n"
+#~ msgstr "      --version  wy¶wietlenie informacji o wersji i zakoñczenie\n"
+
+#~ msgid "too few arguments"
+#~ msgstr "za ma³o argumentów"
+
+#~ msgid "too many arguments"
+#~ msgstr "za du¿o argumentów"
+
+#~ msgid "invalid minor device number: %s"
+#~ msgstr "nieprawid³owy poboczny numer urz±dzenia: %s"
+
+#~ msgid "Could not detect file system."
+#~ msgstr "Nie mo¿na wykryæ systemu plików."
+
+#~ msgid "The file system is bigger than its volume!"
+#~ msgstr "System plików jest wiêkszy ni¿ jego wolumen!"
+
+#~ msgid "Support for opening %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Wsparcie dla otwierania systemów plików %s nie zosta³o jeszcze "
+#~ "zaimplementowane."
+
+#~ msgid "Support for creating %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Wsparcie dla tworzenia systemów plików %s nie zosta³o jeszcze "
+#~ "zaimplementowane."
+
+#~ msgid "Support for checking %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Wsparcie dla sprawdzania systemów plików %s nie zosta³o jeszcze "
+#~ "zaimplementowane."
+
+#~ msgid "raw block copying"
+#~ msgstr "bezpo¶rednie kopiowanie bloków"
+
+#~ msgid "growing file system"
+#~ msgstr "powiêkszanie systemu plików"
+
+#~ msgid "Can't copy onto an overlapping partition."
+#~ msgstr "Nie mo¿na skopiowaæ na nak³adaj±c± siê partycjê."
+
+#~ msgid ""
+#~ "Direct support for copying file systems is not yet implemented for %s.  "
+#~ "However, support for resizing is implemented.  Therefore, the file system "
+#~ "can be copied if the new partition is at least as big as the old one.  "
+#~ "So, either shrink the partition you are trying to copy, or copy to a "
+#~ "bigger partition."
+#~ msgstr ""
+#~ "Bezpo¶rednie wsparcie kopiowania systemów plików dla %s nie jest jeszcze "
+#~ "zaimplementowane.  Aczkolwiek, wspierana jest zmiana rozmiaru systemu "
+#~ "plików.  Tak wiêc, system plików mo¿e zostaæ skopiowany, je¶li nowa "
+#~ "partycja ma przynajmniej tak± sam± pojemno¶æ jak stara.  Mo¿esz tak¿e "
+#~ "zmniejszyæ rozmiar partycji, któr± chcesz skopiowaæ lub skopiuj na "
+#~ "partycjê o wiêkszym rozmiarze."
+
+#~ msgid "Support for copying %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Wsparcie dla kopiowania systemów plików %s nie zosta³o jeszcze "
+#~ "zaimplementowane."
+
+#~ msgid "Support for resizing %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Wsparcie dla zmiany wielko¶ci systemów plików %s nie zosta³o jeszcze "
+#~ "zaimplementowane."
+
+#~ msgid "creating"
+#~ msgstr "tworzenie"
+
+#~ msgid "The file system is in an invalid state.  Perhaps it is mounted?"
+#~ msgstr "System plików jest w nieprawid³owym stanie. Mo¿e jest zamontowany?"
+
+#~ msgid "The file system is in old (unresizeable) format."
+#~ msgstr ""
+#~ "System plików jest w starym formacie, nie pozwalaj±cym na zmianê rozmiaru."
+
+#~ msgid "Invalid free blocks count.  Run reiserfsck --check first."
+#~ msgstr ""
+#~ "B³êdna liczba wolnych bloków. Proszê uruchomiæ najpierw reiserfsck --"
+#~ "check."
+
+#~ msgid "checking"
+#~ msgstr "sprawdzanie"
+
+#~ msgid "Reiserfs tree seems to be corrupted.  Run reiserfsck --check first."
+#~ msgstr ""
+#~ "Drzewo reiserfs wygl±da na uszkodzone. Proszê uruchomiæ najpierw "
+#~ "reiserfsck --check."
+
+#~ msgid ""
+#~ "The reiserfs file system passed a basic check.  For a more comprehensive "
+#~ "check, run reiserfsck --check."
+#~ msgstr ""
+#~ "System plików reiserfs przeszed³ pomy¶lnie podstawowe sprawdzenie. "
+#~ "Dok³adniejszego sprawdzenia mo¿na dokonaæ poleceniem reiserfsck --check."
+
+#~ msgid "Sorry, can't move the start of reiserfs partitions yet."
+#~ msgstr "Niestety nie mo¿na jeszcze przesun±æ pocz±tku partycji reiserfs."
+
+#~ msgid "Couldn't reopen device abstraction layer for read/write."
+#~ msgstr ""
+#~ "Nie mo¿na ponownie otworzyæ warstwy abstrakcji urz±dzenia do odczytu/"
+#~ "zapisu."
+
+#~ msgid "shrinking"
+#~ msgstr "zmniejszanie"
+
+#~ msgid "expanding"
+#~ msgstr "rozszerzanie"
+
+#~ msgid "Couldn't create reiserfs device abstraction handler."
+#~ msgstr "Nie uda³o siê utworzyæ obs³ugi abstrakcji urz±dzenia reiserfs."
+
+#~ msgid "Device is too small for %lu blocks."
+#~ msgstr "Urz±dzenie jest zbyt ma³e na %lu bloków."
+
+#~ msgid "copying"
+#~ msgstr "kopiowanie"
+
+#~ msgid "Couldn't resolve symbol %s.  Error: %s."
+#~ msgstr "Nie uda³o siê rozwi±zaæ symbolu %s. B³±d: %s."
+
+#~ msgid "GNU Parted found an invalid libreiserfs library."
+#~ msgstr "GNU Parted znalaz³ b³êdn± bibliotekê libreiserfs."
+
+#~ msgid ""
+#~ "GNU Parted has detected libreiserfs interface version mismatch.  Found %d-"
+#~ "%d, required %d. ReiserFS support will be disabled."
+#~ msgstr ""
+#~ "GNU Parted wykry³ niezgodno¶æ wersji interfejsu libreiserfs. Znaleziono "
+#~ "%d-%d, wymagana jest %d. Obs³uga ReiserFS bêdzie wy³±czona."
+
+#~ msgid "Inconsistent group descriptors!"
+#~ msgstr "Sprzeczne deskryptory grup!"
+
+#~ msgid "File system full!"
+#~ msgstr "Pe³ny system plików!"
+
+#~ msgid "Invalid superblock.  Are you sure this is an ext2 file system?"
+#~ msgstr "Nieprawid³owy superblok.  Czy to na pewno jest system plików ext2?"
+
+#~ msgid "File system has errors!  You should run e2fsck."
+#~ msgstr "System plików posiada b³êdy!  Uruchom program e2fsck."
+
+#~ msgid ""
+#~ "File system was not cleanly unmounted!  You should run e2fsck.  Modifying "
+#~ "an unclean file system could cause severe corruption."
+#~ msgstr ""
+#~ "System plików nie zosta³ prawid³owo od³±czony!  Uruchom program e2fsck. "
+#~ "Modyfikowanie takiego systemu plików mo¿e spowodowaæ jego uszkodzenie."
+
+#~ msgid ""
+#~ "File system has an incompatible feature enabled.  Compatible features are "
+#~ "has_journal, dir_index, filetype, sparse_super and large_file.  Use "
+#~ "tune2fs or debugfs to remove features."
+#~ msgstr ""
+#~ "System plików ma w³±czone niekompatybilne cechy. Cechy kompatybilne to "
+#~ "has_journal, dir_index, filetype, sparse_super i large_file. Cechy mo¿na "
+#~ "usun±æ przy u¿yciu tune2fs lub debugfs."
+
+#~ msgid "Error allocating buffer cache."
+#~ msgstr "B³±d podczas przydzielania pamiêci do bufora podrêcznego."
+
+#~ msgid ""
+#~ "Found an inode with a incorrect link count.  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "Znaleziono i-wêze³ z nieprawid³owym licznikiem dowi±zañ.  Lepiej uruchom "
+#~ "najpierw program e2fsck!"
+
+#~ msgid "Not enough free inodes!"
+#~ msgstr "Zbyt ma³o wolnych i-wêz³ów!"
+
+#~ msgid "File system is too full to remove a group!"
+#~ msgstr "System plików jest zbyt pe³ny, aby usun±æ grupê!"
+
+#~ msgid "File system has too many allocated inodes to remove a group!"
+#~ msgstr ""
+#~ "System plików posiada zbyt du¿o przydzielonych i-wêz³ów, aby usun±æ grupê!"
+
+#~ msgid "adding groups"
+#~ msgstr "dodawanie grup"
+
+#~ msgid "Your file system is too full to resize it to %i blocks.  Sorry."
+#~ msgstr ""
+#~ "Twój system plików jest zbyt pe³ny, aby móc zmieniæ jego rozmiar do %i "
+#~ "bloków.  Przykro mi."
+
+#~ msgid ""
+#~ "Your file system has too many occupied inodes to resize it to %i blocks.  "
+#~ "Sorry."
+#~ msgstr ""
+#~ "Twój system plików posiada zbyt du¿o zajêtych i-wêz³ów, aby móc zmieniæ "
+#~ "jego rozmiar do %i bloków.  Przykro mi."
+
+#~ msgid "File system was not cleanly unmounted!  You should run e2fsck."
+#~ msgstr ""
+#~ "System plików nie zosta³ prawid³owo od³±czony!  Uruchom program e2fsck."
+
+#~ msgid ""
+#~ "The file system has the 'dir_index' feature enabled.  Parted can only "
+#~ "resize the file system if it disables this feature.  You can enable it "
+#~ "later by running 'tune2fs -O dir_index DEVICE' and then 'e2fsck -fD "
+#~ "DEVICE'."
+#~ msgstr ""
+#~ "System plików posiada w³±czon± funkcjê 'dir_index'.  Parted mo¿e zmieniæ "
+#~ "rozmiar systemu plików tylko je¶li zostanie wy³±czona ta funkcja.  Mo¿esz "
+#~ "j± w³±czyæ ponownie pó¼niej poprzez uruchomienie 'tune2fs -O dir_index "
+#~ "URZ¡DZENIE', a nastêpnie 'e2fsck -fD URZ¡DZENIE'."
+
+#~ msgid ""
+#~ "A resize operation on this file system will use EXPERIMENTAL code\n"
+#~ "that MAY CORRUPT it (although no one has reported any such damage yet).\n"
+#~ "You should at least backup your data first, and run 'e2fsck -f' "
+#~ "afterwards."
+#~ msgstr ""
+#~ "Operacja zmiana rozmiaru na tym systemie plików u¿yje EKSPERYMENTALNEGO\n"
+#~ "kodu, który MO¯E GO USZKODZIÆ (choæ nie zrobi³ tego jeszcze dotychczas).\n"
+#~ "Nale¿y przynajmniej wykonaæ kopiê zapasow± danych, a potem uruchomiæ\n"
+#~ "'e2fsck -f'."
+
+#~ msgid "Cross-linked blocks found!  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "Znaleziono bloki dowi±zane skro¶nie! Lepiej uruchom najpierw program "
+#~ "e2fsck!"
+
+#~ msgid "Block %i has no reference?  Weird."
+#~ msgstr "Blok %i nie posiada odwo³añ?  Dziwne."
+
+#~ msgid "Block %i shouldn't have been marked (%d, %d)!"
+#~ msgstr "Blok %i nie powinien byæ zaznaczony (%d, %d)!"
+
+#~ msgid ""
+#~ "The ext2 file system passed a basic check.  For a more comprehensive "
+#~ "check, use the e2fsck program."
+#~ msgstr ""
+#~ "System plików ext2 przeszed³ pomy¶lnie podstawowe sprawdzenie. "
+#~ "Dok³adniejszego sprawdzenia mo¿na dokonaæ programem e2fsck."
+
+#~ msgid "Sorry, can't move the start of ext2 partitions yet!"
+#~ msgstr ""
+#~ "Przepraszam, ale na razie nie mo¿na przesun±æ pocz±tku partycji ext2!"
+
+#~ msgid "Couldn't flush buffer cache!"
+#~ msgstr "Nie mo¿na opró¿niæ bufora pamiêci podrêcznej!"
+
+#~ msgid "writing per-group metadata"
+#~ msgstr "zapis metadanych do grup"
+
+#~ msgid "File system too small for ext2."
+#~ msgstr "System plików jest zbyt ma³y dla ext2."
+
+#~ msgid ""
+#~ "You need %s of free disk space to shrink this partition to this size.  "
+#~ "Currently, only %s is free."
+#~ msgstr ""
+#~ "Potrzebujesz %s wolnej przestrzeni, aby zmniejszyæ partycjê do tego "
+#~ "rozmiaru.  Aktualnie, tylko %s jest wolne."
+
+#~ msgid ""
+#~ "Cluster start delta = %d, which is not a multiple of the cluster size %d."
+#~ msgstr ""
+#~ "Pocz±tek klastra delta = %d, a wiêc nie jest to wielokrotno¶æ rozmiaru "
+#~ "klastra %d."
+
+#~ msgid "Partition too big/small for a %s file system."
+#~ msgstr "Partycja jest zbyt du¿a/ma³a dla systemu plików %s."
+
+#~ msgid ""
+#~ "The FATs don't match.  If you don't know what this means, then select "
+#~ "cancel, run scandisk on the file system, and then come back."
+#~ msgstr ""
+#~ "Tablice FAT nie pasuj±.  Je¶li nie wiesz co to znaczy, to wybierz "
+#~ "'Poniechaj', uruchom scandisk, a potem ponów próbê."
+
+#~ msgid "There are no possible configurations for this FAT type."
+#~ msgstr "Nie ma mo¿liwych konfiguracji dla tego typu FAT."
+
+#~ msgid ""
+#~ "File system doesn't have expected sizes for Windows to like it.  Cluster "
+#~ "size is %dk (%dk expected); number of clusters is %d (%d expected); size "
+#~ "of FATs is %d sectors (%d expected)."
+#~ msgstr ""
+#~ "System plików nie posiada rozmiaru spodziewanego przez system MS "
+#~ "Windows.  Rozmiar klastra wynosi %dk (powinno byæ %dk); ilo¶æ klastrów "
+#~ "wynosi %d (powinno byæ %d); rozmiar FAT wynosi %d sektorów (powinno byæ "
+#~ "%d)."
+
+#~ msgid ""
+#~ "File system is reporting the free space as %d clusters, not %d clusters."
+#~ msgstr ""
+#~ "System plików mówi, ¿e wolna przestrzeñ wynosi %d klastrów, a nie %d "
+#~ "klastrów."
+
+#~ msgid ""
+#~ "There's not enough room in the root directory for all of the files.  "
+#~ "Either cancel, or ignore to lose the files."
+#~ msgstr ""
+#~ "Brakuje miejsca w katalogu root dla wszystkich tych plików.  Poniechaj "
+#~ "operacjê lub zignoruj, aby utraciæ pliki."
+
+#~ msgid "Error writing to the root directory."
+#~ msgstr "B³±d podczas zapisu do katalogu g³ównego (root)."
+
+#~ msgid ""
+#~ "If you leave your file system as FAT16, then you will have no problems."
+#~ msgstr ""
+#~ "Je¶li pozostawisz swój system plików jako FAT16, to nie bêdziesz mia³(a) "
+#~ "¿adnych problemów."
+
+#~ msgid ""
+#~ "If you convert to FAT16, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual)."
+#~ msgstr ""
+#~ "Je¿eli dokonasz konwersji do FAT16 i system MS Windows jest zainstalowany "
+#~ "na tej partycji, to wtedy musisz przeinstalowaæ program ³aduj±cy (boot "
+#~ "loader) MS Windows.  Je¶li chcesz to zrobiæ, to proszê przeczytaj "
+#~ "dokumentacjê programu Parted (lub dokumentacjê Twojej dystrybucji "
+#~ "systemu)."
+
+#~ msgid ""
+#~ "If you leave your file system as FAT32, then you will not introduce any "
+#~ "new problems."
+#~ msgstr ""
+#~ "Je¶li pozostawisz swój system plików jako FAT32, to wtedy nie bêdziesz "
+#~ "mia³(a) ¿adnych nowych problemów."
+
+#~ msgid ""
+#~ "If you convert to FAT32, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual).  Also, converting to FAT32 will make the file system unreadable "
+#~ "by MS DOS, MS Windows 95a, and MS Windows NT."
+#~ msgstr ""
+#~ "Je¿eli dokonasz konwersji do FAT32 i system MS Windows jest zainstalowany "
+#~ "na tej partycji, to wtedy musisz przeinstalowaæ program ³aduj±cy (boot "
+#~ "loader) MS Windows.  Je¶li chcesz to zrobiæ, to proszê przeczytaj "
+#~ "dokumentacjê programu Parted (lub dokumentacjê Twojej dystrybucji "
+#~ "systemu). Ponadto, konwersja do FAT32 spowoduje, ¿e taki system plików "
+#~ "bêdzie niemo¿liwy do odczytania przez systemy MS-DOS, MS Windows 95a oraz "
+#~ "MS Windows NT."
+
+#~ msgid "%s  %s  %s"
+#~ msgstr "%s  %s  %s"
+
+#~ msgid "Would you like to use FAT32?"
+#~ msgstr "Czy chcesz u¿yæ FAT32?"
+
+#~ msgid "%s  %s"
+#~ msgstr "%s  %s"
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT16."
+#~ msgstr ""
+#~ "Rozmiar systemu plików mo¿e byæ tylko zmieniony poprzez konwersjê do "
+#~ "FAT16."
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT32."
+#~ msgstr ""
+#~ "System plików mo¿e mieæ zmieniony rozmiar, ale tylko poprzez konwersjê do "
+#~ "FAT32."
+
+#~ msgid ""
+#~ "GNU Parted cannot resize this partition to this size.  We're working on "
+#~ "it!"
+#~ msgstr ""
+#~ "GNU Parted nie mo¿e zmieniæ rozmiaru tej partycji do podanego.  Pracujemy "
+#~ "nad tym!"
+
+#~ msgid "Bad directory entry for %s: first cluster is the end of file marker."
+#~ msgstr ""
+#~ "Nieprawid³owy wpis w katalogu dla %s: pierwszy klaster jest znacznikiem "
+#~ "koñca pliku."
+
+#~ msgid ""
+#~ "Bad FAT: unterminated chain for %s.  You should run dosfsck or scandisk."
+#~ msgstr ""
+#~ "Nieprawid³owy FAT: niezakoñczony ³añcuch dla %s.  Proszê uruchomiæ "
+#~ "program dosfsck lub scandisk."
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d outside file system in chain for %s.  You should run "
+#~ "dosfsck or scandisk."
+#~ msgstr ""
+#~ "Nieprawid³owy FAT: klaster %d jest poza systemem plików w ³añcuchu dla "
+#~ "%s.  Proszê uruchomiæ program dosfsck lub scandisk."
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d is cross-linked for %s.  You should run dosfsck or "
+#~ "scandisk."
+#~ msgstr ""
+#~ "Nieprawid³owy FAT: klaster %d jest dowi±zany skro¶nie dla %s.  Proszê "
+#~ "uruchomiæ program dosfsck lub scandisk."
+
+#~ msgid "%s is %dk, but it has %d clusters (%dk)."
+#~ msgstr "%s ma %dk, jednak ma %d klastrów (%dk)."
+
+#~ msgid ""
+#~ "The file %s is marked as a system file.  This means moving it could cause "
+#~ "some programs to stop working."
+#~ msgstr ""
+#~ "Plik %s jest oznaczony jako plik systemowy.  Oznacza to, ¿e jego "
+#~ "przesuniêcie mo¿e spowodowaæ nieprawid³ow± pracê innych programów."
+
+#~ msgid ""
+#~ "FAT %d media %x doesn't match the boot sector's media %x.  You should "
+#~ "probably run scandisk."
+#~ msgstr ""
+#~ "Typ no¶nika odczytany z FAT %d (%x) nie zgadza siê z typem odczytanym z "
+#~ "sektora rozruchowego (%x).  Nale¿y uruchomiæ scandisk."
+
+#~ msgid "fat_table_set: cluster %ld outside file system"
+#~ msgstr "fat_table_set: klaster %ld poza systemem plików"
+
+#~ msgid "fat_table_get: cluster %ld outside file system"
+#~ msgstr "fat_table_get: klaster %ld poza systemem plików"
+
+#~ msgid "fat_table_alloc_cluster: no free clusters"
+#~ msgstr "fat_table_alloc_cluster: brak wolnych klastrów"
+
+#~ msgid "Too many bad pages."
+#~ msgstr "Zbyt du¿o nieprawid³owych stron."
+
+#~ msgid "The file system contains errors."
+#~ msgstr "System plików zawiera b³êdy."
+
+#~ msgid "Bad blocks could not be read."
+#~ msgstr "Uszkodzone bloki nie mog± byæ odczytane."
+
+#~ msgid ""
+#~ "Trying to register an extent starting at block 0x%X, but another one "
+#~ "already exists at this position.  You should check the file system!"
+#~ msgstr ""
+#~ "Podczas próby zarejestrowania obszaru z pocz±tkiem na bloku 0x%X wykryto "
+#~ "inny obszar na tej pozycji.  Nale¿y sprawdziæ system plików!"
+
+#~ msgid ""
+#~ "Trying to move an extent from block Ox%X to block Ox%X, but another one "
+#~ "already exists at this position.  This should not happen!"
+#~ msgstr ""
+#~ "Podczas próby przeniesienia obszaru z bloku 0x%X do bloku 0x%X wykryto "
+#~ "inny obszar na tej pozycji.  To nie powinno siê zdarzyæ!"
+
+#~ msgid "Could not update the extent cache for HFS file with CNID %X."
+#~ msgstr "Nie mo¿na uaktualniæ pamiêci obszarów dla pliku HFS z CNID %X."
+
+#~ msgid "Trying to read HFS file with CNID %X behind EOF."
+#~ msgstr "Próba odczytania pliku HFS z CNID %X za EOF."
+
+#~ msgid "Could not find sector %lli of HFS file with CNID %X."
+#~ msgstr "Nie znaleziono sektora %lli pliku HFS z CNID %X."
+
+#~ msgid "Trying to write HFS file with CNID %X behind EOF."
+#~ msgstr "Próba zapisu pliku HFS z CNID %X za EOF."
+
+#~ msgid "Could not update the extent cache for HFS+ file with CNID %X."
+#~ msgstr "Nie mo¿na uaktualniæ pamiêci obszarów dla pliku HFS+ z CNID %X."
+
+#~ msgid "Trying to read HFS+ file with CNID %X behind EOF."
+#~ msgstr "Próba odczytania pliku HFS+ z CNID %X za EOF."
+
+#~ msgid "Could not find sector %lli of HFS+ file with CNID %X."
+#~ msgstr "Nie znaleziono sektora %lli pliku HFS+ z CNID %X."
+
+#~ msgid "Trying to write HFS+ file with CNID %X behind EOF."
+#~ msgstr "Próba zapisu pliku HFS+ z CNID %X za EOF."
+
+#~ msgid "Sorry, HFS cannot be resized that way yet."
+#~ msgstr ""
+#~ "Przykro mi, ale nie mo¿na jeszcze w ten sposób zmieniæ rozmiaru HFS."
+
+#~ msgid "Data relocation has failed."
+#~ msgstr "Relokacja danych nie powiod³a siê."
+
+#~ msgid "Data relocation left some data in the end of the volume."
+#~ msgstr "Relokacja danych pozostawi³a dane pod koniec wolumenu."
+
+#~ msgid "writing HFS Master Directory Block"
+#~ msgstr ""
+#~ "zapisywanie g³ównego bloku katalogu HFS (HFS Master Directory Block)"
+
+#~ msgid "No valid HFS[+X] signature has been found while opening."
+#~ msgstr "Nie znaleziono prawid³owej sygnatury HFS[+X] podczas otwierania."
+
+#~ msgid "Version %d of HFS+ isn't supported."
+#~ msgstr "Wersja %d HFS+ nie jest wspierana."
+
+#~ msgid "Version %d of HFSX isn't supported."
+#~ msgstr "Wersja %d HFSX nie jest wspierana."
+
+#~ msgid "Data relocation left some data at the end of the volume."
+#~ msgstr "Relokacja danych pozostawi³a dane na koñcu wolumenu."
+
+#~ msgid "Error while writing the allocation file."
+#~ msgstr "B³±d podczas zapisu pliku przydzia³u."
+
+#~ msgid "Error while writing the compatibility part of the allocation file."
+#~ msgstr "B³±d podczas zapisu kompatybilnej czê¶ci pliku przydzia³u."
+
+#~ msgid "writing HFS+ Volume Header"
+#~ msgstr "zapisywanie nag³ówka wolumenu HFS+"
+
+#~ msgid "An error occurred while looking for the mandatory bad blocks file."
+#~ msgstr ""
+#~ "Wyst±pi³ b³±d podczas szukania obowi±zkowego pliku uszkodzonych bloków."
+
+#~ msgid ""
+#~ "It seems there is an error in the HFS wrapper: the bad blocks file "
+#~ "doesn't contain the embedded HFS+ volume."
+#~ msgstr ""
+#~ "Prawdopodobnie wystêpuje b³±d w otoczce HFS: plik uszkodzonych bloków nie "
+#~ "zawiera wbudowanego wolumenu HFS+."
+
+#~ msgid "Sorry, HFS+ cannot be resized that way yet."
+#~ msgstr ""
+#~ "Przykro mi, ale nie mo¿na jeszcze w ten sposób zmieniæ rozmiaru HFS+."
+
+#~ msgid "shrinking embedded HFS+ volume"
+#~ msgstr "zmniejszanie wbudowanego wolumenu HFS+"
+
+#~ msgid "Resizing the HFS+ volume has failed."
+#~ msgstr "Zmiana rozmiaru wolumenu HFS+ nie powiod³a siê."
+
+#~ msgid "shrinking HFS wrapper"
+#~ msgstr "zmniejszanie otoczki HFS"
+
+#~ msgid "Updating the HFS wrapper has failed."
+#~ msgstr "Aktualizacja otoczki HFS nie powiod³a siê."
+
+#~ msgid ""
+#~ "This is not a real %s check.  This is going to extract special low level "
+#~ "files for debugging purposes."
+#~ msgstr ""
+#~ "To nie jest prawdziwe sprawdzanie %s.  Celem jest wydobycie specjalnych "
+#~ "niskopoziomowych plików w celu odpluskwiania."
+
+#~ msgid "Bad block list header checksum."
+#~ msgstr "Suma kontrolna nag³ówka listy uszkodzonych bloków."
+
+#~ msgid ""
+#~ "Invalid size of a transaction block while replaying the journal (%i "
+#~ "bytes)."
+#~ msgstr ""
+#~ "Nieprawid³owy rozmiar bloku transakcyjnego podczas ponawiania kroniki (%i "
+#~ "bajtów)."
+
+#~ msgid ""
+#~ "Journal stored outside of the volume are not supported.  Try to "
+#~ "desactivate the journal and run Parted again."
+#~ msgstr ""
+#~ "Kroniki umieszczone poza wolumenem nie s± wspierane.  Proszê wy³±czyæ "
+#~ "kronikê i uruchomiæ ponownie Parted."
+
+#~ msgid "Journal offset or size is not multiple of the sector size."
+#~ msgstr ""
+#~ "Wyrównanie kroniki lub wielko¶æ nie jest wielokrotno¶ci± rozmiaru sektora."
+
+#~ msgid "Incorrect magic values in the journal header."
+#~ msgstr "Nieprawid³owe magiczne warto¶ci w nag³ówku kroniki."
+
+#~ msgid "Journal size mismatch between journal info block and journal header."
+#~ msgstr ""
+#~ "Rozmiar kroniki nie pasuje pomiêdzy blokiem informacyjnym kroniki i "
+#~ "nag³ówkiem kroniki."
+
+#~ msgid "Some header fields are not multiple of the sector size."
+#~ msgstr "Niektóre pola nag³ówka nie s± wielokrotno¶ci± rozmiaru sektora."
+
+#~ msgid ""
+#~ "The sector size stored in the journal is not 512 bytes.  Parted only "
+#~ "supports 512 bytes length sectors."
+#~ msgstr ""
+#~ "Rozmiar sektora zapisany w kronice nie ma 512 bajtów.  Parted wspiera "
+#~ "tylko sektory o rozmiarach 512 bajtów."
+
+#~ msgid "Bad journal checksum."
+#~ msgstr "Nieprawid³owa suma kontrolna kroniki."
+
+#~ msgid ""
+#~ "The journal is not empty.  Parted must replay the transactions before "
+#~ "opening the file system.  This will modify the file system."
+#~ msgstr ""
+#~ "Kronika nie jest pusta.  Parted musi ponowiæ transakcje przed otwarciem "
+#~ "systemu plików.  To zmodyfikuje system plików."
+
+#~ msgid ""
+#~ "The volume header or the master directory block has changed while "
+#~ "replaying the journal.  You should restart Parted."
+#~ msgstr ""
+#~ "Nag³ówek wolumenu lub g³ówny blok katalogu zmieni³ siê podczas ponawiania "
+#~ "kroniki.  Nale¿y ponownie uruchomiæ Parted."
+
+#~ msgid "An extent has not been relocated."
+#~ msgstr "Obszar nie zosta³ przeniesiony."
+
+#~ msgid ""
+#~ "A reference to an extent comes from a place it should not.  You should "
+#~ "check the file system!"
+#~ msgstr ""
+#~ "Odwo³anie do obszaru nie powinno by³o wyst±piæ w tym miejscu. Nale¿y "
+#~ "sprawdziæ system plików!"
+
+#~ msgid "This HFS volume has no catalog file.  This is very unusual!"
+#~ msgstr ""
+#~ "Ten wolumen HFS nie posiada pliku katalogowego.  To jest bardzo niezwyk³e!"
+
+#~ msgid ""
+#~ "This HFS volume has no extents overflow file.  This is quite unusual!"
+#~ msgstr ""
+#~ "Ten wolumen HFS nie zawiera pliku przepe³nienia obszarów.  To raczej "
+#~ "niezwykle!"
+
+#~ msgid ""
+#~ "The extents overflow file should not contain its own extents!  You should "
+#~ "check the file system."
+#~ msgstr ""
+#~ "Plik przepe³nienia obszarów nie powinien zawieraæ w³asnych obszarów!  "
+#~ "Nale¿y sprawdziæ system plików."
+
+#~ msgid "Could not cache the file system in memory."
+#~ msgstr "Nie mo¿na zapamiêtaæ systemu plików w pamiêci."
+
+#~ msgid "Bad blocks list could not be loaded."
+#~ msgstr "Nie powiod³o siê za³adowanie listy uszkodzonych bloków."
+
+#~ msgid "An error occurred during extent relocation."
+#~ msgstr "Wykryto b³±d podczas przenoszenia obszaru."
+
+#~ msgid "This HFS+ volume has no catalog file.  This is very unusual!"
+#~ msgstr ""
+#~ "Ten wolumen HFS+ nie posiada pliku katalogowego.  To jest bardzo "
+#~ "niezwyk³e!"
+
+#~ msgid ""
+#~ "This HFS+ volume has no extents overflow file.  This is quite unusual!"
+#~ msgstr ""
+#~ "Ten wolumen HFS+ nie zawiera pliku przepe³nienia obszarów. To raczej "
+#~ "niezwykle!"
+
+#~ msgid "The partition must have one of the following FS-TYPEs: "
+#~ msgstr "Partycja musi posiadaæ jeden z nastêpuj±cych systemów plików: "
+
+#~ msgid ""
+#~ "The existing file system will be destroyed and all data on the partition "
+#~ "will be lost. Do you want to continue?"
+#~ msgstr ""
+#~ "Istniej±cy system plików zostanie zniszczony, a wszystkie dane na "
+#~ "partycji zostan± utracone. Kontynuowaæ?"
+
+#~ msgid ""
+#~ "WARNING: you are attempting to use %s to operate on (%s) a file system.\n"
+#~ "%s's file system manipulation code is not as robust as what you'll find "
+#~ "in\n"
+#~ "dedicated, file-system-specific packages like e2fsprogs.  We recommend\n"
+#~ "you use %s only to manipulate partition tables, whenever possible.\n"
+#~ "Support for performing most operations on most types of file systems\n"
+#~ "will be removed in an upcoming release.\n"
+#~ msgstr ""
+#~ "UWAGA: próba u¿ycia %s na systemie plików (%s).\n"
+#~ "Kod obs³uguj±cy system plików %s nie ma tylu mo¿liwo¶ci, co dedykowane,\n"
+#~ "specyficzne dla systemu plików pakiety typu e2fsprogs. Zalecamy u¿ycie\n"
+#~ "%s tylko do modyfikowania tablic partycji o ile to tylko mo¿liwe.\n"
+#~ "Obs³uga wykonywania wiêkszo¶ci rodzajów operacji na wiêkszo¶ci rodzajów\n"
+#~ "systemów plików bêdzie usuniêta w kolejnym wydaniu.\n"
+
+#~ msgid "Source device?"
+#~ msgstr "Urz±dzenie ¼ród³owe?"
+
+#~ msgid "Source partition number?"
+#~ msgstr "Numer partycji ¼ród³owej?"
+
+#~ msgid "Can't copy an extended partition."
+#~ msgstr "Nie mo¿na skopiowaæ rozszerzonej partycji."
+
+#~ msgid "Destination partition number?"
+#~ msgstr "Numer partycji docelowej?"
+
+#~ msgid ""
+#~ "An extended partition cannot hold a file system.  Did you want mkpart?"
+#~ msgstr ""
+#~ "Rozszerzona partycja nie mo¿e trzymaæ systemu plików.  Czy chodzi³o Ci o "
+#~ "mkpart?"
+
+#~ msgid "Can't move an extended partition."
+#~ msgstr "Nie mo¿na przesun±æ rozszerzonej partycji."
+
+#~ msgid "Can't move a partition onto itself.  Try using resize, perhaps?"
+#~ msgstr ""
+#~ "Nie mo¿na przesun±æ partycji na sam± siebie.  Mo¿e spróbuj zmieniæ jej "
+#~ "rozmiar?"
+
+#~ msgid "Minor: %d\n"
+#~ msgstr "Numer: %d\n"
+
+#~ msgid "Flags: %s\n"
+#~ msgstr "Flagi: %s\n"
+
+#~ msgid "File System: %s\n"
+#~ msgstr "System plików: %s\n"
+
+#~ msgid "Size:         "
+#~ msgstr "Rozmiar:      "
+
+#~ msgid "Minimum size: "
+#~ msgstr "Minimalny rozmiar: "
+
+#~ msgid "Maximum size: "
+#~ msgstr "Maksymalny rozmiar: "
+
+#~ msgid "check"
+#~ msgstr "sprawd¼"
+
+#~ msgid ""
+#~ "check NUMBER                             do a simple check on the file "
+#~ "system"
+#~ msgstr ""
+#~ "check NUMER                   wykonuje proste sprawdzenie systemu plików"
+
+#~ msgid "cp"
+#~ msgstr "kopiuj"
+
+#~ msgid ""
+#~ "cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   copy file system to another "
+#~ "partition"
+#~ msgstr ""
+#~ "cp [URZ¡DZENIE-¬RÓD£OWE] NUMER-¬RÓD£OWY NUMER-DOCELOWY  kopiuje system "
+#~ "plików na inn± partycjê"
+
+#~ msgid "mkfs"
+#~ msgstr "mkfs"
+
+#~ msgid ""
+#~ "mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on "
+#~ "partition NUMBER"
+#~ msgstr ""
+#~ "mkfs NUMER TYP                tworzy system plików typu TYP na partycji "
+#~ "NUMER"
+
+#~ msgid "mkpartfs"
+#~ msgstr "mkpartfs"
+
+#~ msgid ""
+#~ "mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file "
+#~ "system"
+#~ msgstr ""
+#~ "mkpartfs TYP-PARTYCJI SYSTEM-PLIKÓW POCZ¡TEK KONIEC   tworzy partycjê z "
+#~ "systemem plików"
+
+#~ msgid "move"
+#~ msgstr "przesuñ"
+
+#~ msgid "move NUMBER START END                    move partition NUMBER"
+#~ msgstr "move NUMER POCZ¡TEK KONIEC    przesuwa partycjê NUMER"
+
+#~ msgid "resize"
+#~ msgstr "rozmiar"
+
+#~ msgid ""
+#~ "resize NUMBER START END                  resize partition NUMBER and its "
+#~ "file system"
+#~ msgstr ""
+#~ "resize NUMER POCZ¡TEK KONIEC  zmienia rozmiar systemu plików i partycji "
+#~ "NUMER"
diff --git a/po/pt.gmo b/po/pt.gmo
new file mode 100644 (file)
index 0000000..68a7c44
Binary files /dev/null and b/po/pt.gmo differ
diff --git a/po/pt.po b/po/pt.po
new file mode 100644 (file)
index 0000000..2f001a5
--- /dev/null
+++ b/po/pt.po
@@ -0,0 +1,3174 @@
+# Portuguese messages for GNU parted.
+# Copyright (C) 2001 Free Software Foundation, Inc.
+# Gonçalo Silva <goncalo.silva@caixamagica.pt>, 2001.
+# Based on pt_BR.po made by Eliphas Levy Theodoro.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: parted 1.4.20\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2011-05-30 13:45+0200\n"
+"PO-Revision-Date: 2001-10-16 20:16+02:00\n"
+"Last-Translator: Gonçalo Silva <goncalo.silva@caixamagica.org>\n"
+"Language-Team: Portuguese <pt@li.org>\n"
+"Language: pt\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8-bit\n"
+
+#: lib/argmatch.c:133
+#, fuzzy, c-format
+msgid "invalid argument %s for %s"
+msgstr "Tabela de partições inválida em %s"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr ""
+
+#: lib/argmatch.c:153
+#, fuzzy, c-format
+msgid "Valid arguments are:"
+msgstr "Tabela de partições inválida em %s"
+
+#: lib/closeout.c:112 libparted/labels/fdasd.c:107
+msgid "write error"
+msgstr ""
+
+#: lib/error.c:181
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Tipo de sistema de ficheiros desconhecido."
+
+#: lib/getopt.c:548 lib/getopt.c:577
+#, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
+msgstr ""
+
+#: lib/getopt.c:625 lib/getopt.c:629
+#, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:638 lib/getopt.c:643
+#, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:686 lib/getopt.c:705
+#, c-format
+msgid "%s: option '--%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:743 lib/getopt.c:746
+#, fuzzy, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "Impossível abrir %s - rótulo de disco desconhecido."
+
+#: lib/getopt.c:754 lib/getopt.c:757
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "Impossível abrir %s - rótulo de disco desconhecido."
+
+#: lib/getopt.c:806 lib/getopt.c:809
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr ""
+
+#: lib/getopt.c:859 lib/getopt.c:876 lib/getopt.c:1084 lib/getopt.c:1102
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr ""
+
+#: lib/getopt.c:932 lib/getopt.c:948
+#, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:972 lib/getopt.c:990
+#, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:1011 lib/getopt.c:1029
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr ""
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:271
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:272
+msgid "'"
+msgstr ""
+
+#: lib/regcomp.c:133
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:136
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:139
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:142
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:145
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:148
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:151
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:154
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:157
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:160
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:163
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:166
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:169
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:172
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:175
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:178
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:181
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:702
+msgid "No previous regular expression"
+msgstr ""
+
+#. TRANSLATORS: A regular expression testing for an affirmative answer
+#. (english: "yes").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^yesexpr='
+#: lib/rpmatch.c:147
+msgid "^[yY]"
+msgstr ""
+
+#. TRANSLATORS: A regular expression testing for a negative answer
+#. (english: "no").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^noexpr='
+#: lib/rpmatch.c:160
+msgid "^[nN]"
+msgstr ""
+
+#: lib/version-etc.c:74
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr ""
+
+#: lib/version-etc.c:77
+#, c-format
+msgid "Packaged by %s\n"
+msgstr ""
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale.  Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:84
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:86
+msgid ""
+"\n"
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:102
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:106
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:110
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:131
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:139
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:147
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:156
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:167
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package.  Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:245
+#, c-format
+msgid ""
+"\n"
+"Report bugs to: %s\n"
+msgstr ""
+
+#: lib/version-etc.c:247
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr ""
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr ""
+
+#: lib/version-etc.c:253
+#, c-format
+msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
+msgstr ""
+
+#: lib/version-etc.c:256
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr ""
+
+#: lib/xstrtol-error.c:63
+#, fuzzy, c-format
+msgid "invalid %s%s argument `%s'"
+msgstr "Tabela de partições inválida em %s"
+
+#: lib/xstrtol-error.c:68
+#, fuzzy, c-format
+msgid "invalid suffix in %s%s argument `%s'"
+msgstr "Tabela de partições inválida em %s"
+
+#: lib/xstrtol-error.c:72
+#, fuzzy, c-format
+msgid "%s%s argument `%s' too large"
+msgstr "Tabela de partições inválida em %s"
+
+#: libparted/arch/beos.c:245
+msgid "Disk Image"
+msgstr ""
+
+#: libparted/arch/beos.c:346 libparted/arch/gnu.c:277
+#: libparted/arch/linux.c:1545
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "Erro abrindo %s: %s"
+
+#: libparted/arch/beos.c:357 libparted/arch/gnu.c:287
+#: libparted/arch/linux.c:1556
+#, c-format
+msgid "Unable to open %s read-write (%s).  %s has been opened read-only."
+msgstr ""
+"Não posso abrir %s para gravação (%s). %s foi aberto somente para leitura."
+
+#: libparted/arch/beos.c:419 libparted/arch/linux.c:1714
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s durante procura para leitura em %s"
+
+#: libparted/arch/beos.c:452 libparted/arch/gnu.c:465 libparted/arch/gnu.c:564
+#: libparted/arch/gnu.c:692 libparted/arch/linux.c:1674
+#: libparted/arch/linux.c:1755
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s durante leitura em %s"
+
+#: libparted/arch/beos.c:488 libparted/arch/gnu.c:525
+#: libparted/arch/linux.c:1831
+#, c-format
+msgid "Can't write to %s, because it is opened read-only."
+msgstr "Não posso gravar em %s, pois ela foi aberta como somente para leitura."
+
+#: libparted/arch/beos.c:504 libparted/arch/linux.c:1856
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s durante procura para escrita em %s"
+
+#: libparted/arch/beos.c:541 libparted/arch/gnu.c:601 libparted/arch/gnu.c:646
+#: libparted/arch/gnu.c:723 libparted/arch/linux.c:1804
+#: libparted/arch/linux.c:1898 libparted/arch/linux.c:1970
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s durante escrita em %s"
+
+#: partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr ""
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the operating system about partition table changes.\n"
+"\n"
+"  -d, --dry-run    do not actually inform the operating system\n"
+"  -s, --summary    print a summary of contents\n"
+"  -h, --help       display this help and exit\n"
+"  -v, --version    output version information and exit\n"
+msgstr ""
+
+#: partprobe/partprobe.c:150
+msgid ""
+"\n"
+"When no DEVICE is given, probe all partitions.\n"
+msgstr ""
+
+#: partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: libparted/arch/gnu.c:110
+#, c-format
+msgid "Unable to open %s."
+msgstr ""
+
+#: libparted/arch/gnu.c:130
+#, fuzzy
+msgid "Unable to probe store."
+msgstr "Impossível alinhar a partição."
+
+#: libparted/arch/gnu.c:368
+#, fuzzy
+msgid ""
+"The partition table cannot be re-read.  This means you need to reboot before "
+"mounting any modified partitions.  You also need to reinstall your boot "
+"loader before you reboot (which may require mounting modified partitions).  "
+"It is impossible do both things!  So you'll need to boot off a rescue disk, "
+"and reinstall your boot loader from the rescue disk.  Read section 4 of the "
+"Parted User documentation for more information."
+msgstr ""
+"O kernel não pôde reler sua tabela de partições, portanto precisa de "
+"reiniciar antes de montar qualquer partição modificada. Voce pode também "
+"precisar reinstalar seu gestor de boot antes de reinicializar (o que pode "
+"requerer a montagem das partições modificadas). É impossível fazer as duas "
+"coisas! Leia a secção 4 da documentação do usuário do Parted para mais "
+"informações."
+
+#: libparted/arch/gnu.c:385
+#, fuzzy, c-format
+msgid ""
+"The partition table on %s cannot be re-read (%s).  This means the Hurd knows "
+"nothing about any modifications you made.  You should reboot your computer "
+"before doing anything with %s."
+msgstr ""
+"O kernel não conseguiu reler a tabela de partições de %s (%s). Isto "
+"significa que o Linux não sabe nada sobre as modificações que fez. Deverá "
+"reinicializar seu computador antes de fazer qualquer uso de %s."
+
+#: libparted/arch/gnu.c:396 parted/parted.c:1967
+msgid ""
+"You should reinstall your boot loader before rebooting.  Read section 4 of "
+"the Parted User documentation for more information."
+msgstr ""
+"Deverá reinstalar seu gestor de boot antes de reinicializar. Leia a secção 4 "
+"da documentação do utilizador do Parted para mais informações."
+
+#: libparted/arch/gnu.c:788
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr ""
+
+#: libparted/arch/linux.c:520
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "Não foi possível inicializar o dispositivo %s - %s."
+
+#: libparted/arch/linux.c:577
+#, fuzzy, c-format
+msgid "Unable to determine the dm type of %s."
+msgstr "Impossível determinar tamanho de %s (%s)"
+
+#: libparted/arch/linux.c:669
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+
+#: libparted/arch/linux.c:690
+#, c-format
+msgid ""
+"Could not determine physical sector size for %s.\n"
+"Using the logical sector size (%lld)."
+msgstr ""
+
+#: libparted/arch/linux.c:746
+#, fuzzy, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "Impossível determinar tamanho de %s (%s)"
+
+#: libparted/arch/linux.c:832
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "Não foi possível obter a identificação do dispositivo %s - %s"
+
+#: libparted/arch/linux.c:841
+msgid "Generic IDE"
+msgstr ""
+
+#: libparted/arch/linux.c:862
+#, c-format
+msgid ""
+"Device %s has multiple (%d) logical sectors per physical sector.\n"
+"GNU Parted supports this EXPERIMENTALLY for some special disk label/file "
+"system combinations, e.g. GPT and ext2/3.\n"
+"Please consult the web site for up-to-date information."
+msgstr ""
+
+#: libparted/arch/linux.c:1039
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "Erro inicializando dispositivo SCSI %s - %s"
+
+#: libparted/arch/linux.c:1103
+#, c-format
+msgid ""
+"The device %s is so small that it cannot possibly store a file system or "
+"partition table.  Perhaps you selected the wrong device?"
+msgstr ""
+
+#: libparted/arch/linux.c:1216
+#, fuzzy, c-format
+msgid ""
+"Unable to determine geometry of file/device %s.  You should not use Parted "
+"unless you REALLY know what you're doing!"
+msgstr ""
+"Impossível determinar a geometria do ficheiro/dispositivo. Não deve utilizar "
+"o Parted a não ser que REALMENTE saiba o que está a fazer!"
+
+#: libparted/arch/linux.c:1276
+msgid "Generic SD/MMC Storage Card"
+msgstr ""
+
+#: libparted/arch/linux.c:1329
+msgid "DAC960 RAID controller"
+msgstr "Controlador RAID DAC960"
+
+#: libparted/arch/linux.c:1334
+msgid "Promise SX8 SATA Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1339
+msgid "ATA over Ethernet Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1345
+msgid "IBM S390 DASD drive"
+msgstr ""
+
+#: libparted/arch/linux.c:1351
+msgid "IBM iSeries Virtual DASD"
+msgstr ""
+
+#: libparted/arch/linux.c:1356
+msgid "Compaq Smart Array"
+msgstr "Compaq Smart Array"
+
+#: libparted/arch/linux.c:1361
+msgid "ATARAID Controller"
+msgstr "Controlador ATARAID"
+
+#: libparted/arch/linux.c:1366
+msgid "I2O Controller"
+msgstr "Controlador I20"
+
+#: libparted/arch/linux.c:1371
+msgid "User-Mode Linux UBD"
+msgstr ""
+
+#: libparted/arch/linux.c:1384
+#, c-format
+msgid "Linux device-mapper (%s)"
+msgstr ""
+
+#: libparted/arch/linux.c:1395
+msgid "Xen Virtual Block Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1400
+msgid "Unknown"
+msgstr "Desconhecido"
+
+#: libparted/arch/linux.c:1409
+msgid "Virtio Block Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1414
+msgid "Linux Software RAID Array"
+msgstr ""
+
+#: libparted/arch/linux.c:1421
+msgid "ped_device_new()  Unsupported device type"
+msgstr "ped_device_new()  Tipo de dispositivo não suportado"
+
+#: libparted/arch/linux.c:1518 libparted/arch/linux.c:1590
+#, fuzzy, c-format
+msgid "Error fsyncing/closing %s: %s"
+msgstr "Erro abrindo %s: %s"
+
+#: libparted/arch/linux.c:1754
+#, c-format
+msgid "end of file while reading %s"
+msgstr ""
+
+#: libparted/arch/linux.c:2390
+#, fuzzy, c-format
+msgid ""
+"Error informing the kernel about modifications to partition %s -- %s.  This "
+"means Linux won't know about any changes you made to %s until you reboot -- "
+"so you shouldn't mount it or use it in any way before rebooting."
+msgstr ""
+"O kernel não conseguiu reler a tabela de partições de %s (%s). Isto "
+"significa que o Linux não sabe nada sobre as modificações que fez. Deverá "
+"reinicializar seu computador antes de fazer qualquer uso de %s."
+
+#: libparted/arch/linux.c:2528
+#, fuzzy, c-format
+msgid "Unable to determine the size and length of %s."
+msgstr "Impossível determinar tamanho de %s (%s)"
+
+#: libparted/arch/linux.c:2553
+#, fuzzy, c-format
+msgid "Failed to add partition %d (%s)"
+msgstr "Impossível determinar se a partição está montada."
+
+#: libparted/arch/linux.c:2580
+#, c-format
+msgid ""
+"Partition(s) %s on %s have been written, but we have been unable to inform "
+"the kernel of the change, probably because it/they are in use.  As a result, "
+"the old partition(s) will remain in use.  You should reboot now before "
+"making further changes."
+msgstr ""
+
+#: libparted/arch/linux.c:2706
+#, fuzzy, c-format
+msgid ""
+"parted was unable to re-read the partition table on %s (%s).  This means "
+"Linux won't know anything about the modifications you made. "
+msgstr ""
+"O kernel não conseguiu reler a tabela de partições de %s (%s). Isto "
+"significa que o Linux não sabe nada sobre as modificações que fez. Deverá "
+"reinicializar seu computador antes de fazer qualquer uso de %s."
+
+#: libparted/cs/geom.c:161
+#, fuzzy, c-format
+msgid "Can't have the end before the start! (start sector=%jd length=%jd)"
+msgstr "Não pode ter o fim da partição antes do início."
+
+#: libparted/cs/geom.c:169
+msgid "Can't have a partition outside the disk!"
+msgstr "Não pode ter uma partição fora do disco!."
+
+#: libparted/cs/geom.c:384
+#, fuzzy, c-format
+msgid "Attempt to write sectors %ld-%ld outside of partition on %s."
+msgstr "Tentativa de escrever sectores %ld-%ld fora da partição em %s"
+
+#: libparted/cs/geom.c:424
+msgid "checking for bad blocks"
+msgstr ""
+
+#: libparted/debug.c:96
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:109
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr ""
+
+#: libparted/disk.c:192
+#, fuzzy, c-format
+msgid "%s: unrecognised disk label"
+msgstr "Impossível abrir %s - rótulo de disco desconhecido."
+
+#: libparted/disk.c:484
+#, fuzzy, c-format
+msgid ""
+"This libparted doesn't have write support for %s.  Perhaps it was compiled "
+"read-only."
+msgstr "Não posso gravar em %s, pois ela foi aberta como somente para leitura."
+
+#: libparted/disk.c:629
+#, fuzzy, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "A partição é muito pequena para um sistema de ficheiros FAT"
+
+#: libparted/disk.c:838
+msgid "cylinder_alignment"
+msgstr ""
+
+#: libparted/disk.c:844
+#, fuzzy, c-format
+msgid "Unknown disk flag, %d."
+msgstr "Sinalizador de partição desconhecido, %d."
+
+#: libparted/disk.c:1283
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "Rótulos de disco %s não suportam partições extendidas."
+
+#: libparted/disk.c:1858
+#, c-format
+msgid "%s disk labels don't support logical or extended partitions."
+msgstr "Rótulos de disco %s não suportam partições lógicas ou extendidas."
+
+#: libparted/disk.c:1871
+#, fuzzy
+msgid "Too many primary partitions."
+msgstr "Muitas páginas inválidas."
+
+#: libparted/disk.c:1880
+#, c-format
+msgid ""
+"Can't add a logical partition to %s, because there is no extended partition."
+msgstr ""
+"Não posso adicionar uma partição lógica em %s, pois não há uma partição "
+"extendida."
+
+#: libparted/disk.c:1904
+#, fuzzy, c-format
+msgid "Can't have more than one extended partition on %s."
+msgstr "Não se pode haver mais de uma partição extendida em %s"
+
+#: libparted/disk.c:1914
+#, fuzzy
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr ""
+"Não posso adicionar uma partição lógica fora da partição extendida em %s."
+
+#: libparted/disk.c:1939
+#, fuzzy, c-format
+msgid "Can't have a logical partition outside of the extended partition on %s."
+msgstr ""
+"Não posso adicionar uma partição lógica fora da partição extendida em %s."
+
+#: libparted/disk.c:1949 libparted/disk.c:2008 libparted/disk.c:2186
+#, fuzzy
+msgid "Can't have overlapping partitions."
+msgstr "Não posso copiar para uma partição sobreposta."
+
+#: libparted/disk.c:1957
+#, fuzzy
+msgid "Can't have a primary partition inside an extended partition."
+msgstr "Não posso adicionar uma partição primária dentro de uma extendida."
+
+#: libparted/disk.c:2387
+msgid "metadata"
+msgstr ""
+
+#: libparted/disk.c:2389
+msgid "free"
+msgstr "livre"
+
+#: libparted/disk.c:2391 parted/ui.c:1194 parted/ui.c:1222
+msgid "extended"
+msgstr "extendida"
+
+#: libparted/disk.c:2393 parted/ui.c:1198 parted/ui.c:1226
+msgid "logical"
+msgstr "lógica"
+
+#: libparted/disk.c:2395 parted/ui.c:1190 parted/ui.c:1218
+msgid "primary"
+msgstr "primária"
+
+#: libparted/disk.c:2411
+msgid "boot"
+msgstr "boot"
+
+#: libparted/disk.c:2413
+msgid "bios_grub"
+msgstr ""
+
+#: libparted/disk.c:2415
+msgid "root"
+msgstr "root"
+
+#: libparted/disk.c:2417
+msgid "swap"
+msgstr "swap"
+
+#: libparted/disk.c:2419
+msgid "hidden"
+msgstr "escondida"
+
+#: libparted/disk.c:2421
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2423
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2425
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2427
+msgid "hp-service"
+msgstr ""
+
+#: libparted/disk.c:2429
+msgid "palo"
+msgstr ""
+
+#: libparted/disk.c:2431
+msgid "prep"
+msgstr ""
+
+#: libparted/disk.c:2433
+msgid "msftres"
+msgstr ""
+
+#: libparted/disk.c:2435
+msgid "atvrecv"
+msgstr ""
+
+#: libparted/disk.c:2437
+msgid "diag"
+msgstr ""
+
+#: libparted/disk.c:2439
+msgid "legacy_boot"
+msgstr ""
+
+#: libparted/disk.c:2445
+#, fuzzy, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Sinalizador de partição desconhecido, %d."
+
+#: libparted/exception.c:77
+msgid "Information"
+msgstr "Informação"
+
+#: libparted/exception.c:78
+msgid "Warning"
+msgstr "Aviso"
+
+#: libparted/exception.c:79
+msgid "Error"
+msgstr "Erro"
+
+#: libparted/exception.c:80
+msgid "Fatal"
+msgstr "Fatal"
+
+#: libparted/exception.c:81
+msgid "Bug"
+msgstr "Bug"
+
+#: libparted/exception.c:82
+msgid "No Implementation"
+msgstr "Sem Implementação"
+
+#: libparted/exception.c:86
+msgid "Fix"
+msgstr "Arranjar"
+
+#: libparted/exception.c:87
+msgid "Yes"
+msgstr "Sim"
+
+#: libparted/exception.c:88
+msgid "No"
+msgstr "Não"
+
+#: libparted/exception.c:89
+msgid "OK"
+msgstr "OK"
+
+#: libparted/exception.c:90
+msgid "Retry"
+msgstr "Repetir"
+
+#: libparted/exception.c:91
+msgid "Ignore"
+msgstr "Ignorar"
+
+#: libparted/exception.c:92
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: libparted/exception.c:132
+#, fuzzy, c-format
+msgid ""
+"A bug has been detected in GNU Parted.  Refer to the web site of parted "
+"http://www.gnu.org/software/parted/parted.html for more information of what "
+"could be useful for bug submitting!  Please email a bug report to %s "
+"containing at least the version (%s) and the following message:  "
+msgstr ""
+"Um bug foi detectado no GNU parted. Por favor, envie um relatório do bug "
+"para bug-parted@gnu.org contendo a versão (%s) e a mensagem abaixo:"
+
+#: libparted/labels/aix.c:103
+#, fuzzy
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr ""
+"O suporte para criar sistema de ficheiros %s não foi implementado ainda."
+
+#: libparted/labels/aix.c:114
+#, fuzzy
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr ""
+"O suporte para criar sistema de ficheiros %s não foi implementado ainda."
+
+#: libparted/labels/aix.c:127
+#, fuzzy
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr ""
+"O suporte para criar sistema de ficheiros %s não foi implementado ainda."
+
+#: libparted/labels/aix.c:137
+#, fuzzy
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr ""
+"O suporte para criar sistema de ficheiros %s não foi implementado ainda."
+
+#: libparted/labels/aix.c:155
+#, fuzzy
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr ""
+"O suporte para criar sistema de ficheiros %s não foi implementado ainda."
+
+#: libparted/labels/aix.c:165
+#, fuzzy
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr ""
+"O suporte para criar sistema de ficheiros %s não foi implementado ainda."
+
+#: libparted/labels/bsd.c:571 libparted/labels/dasd.c:833
+#: libparted/labels/dos.c:2176 libparted/labels/dvh.c:787
+#: libparted/labels/gpt.c:1782 libparted/labels/loop.c:247
+#: libparted/labels/mac.c:1426 libparted/labels/pc98.c:748
+#: libparted/labels/rdb.c:1052 libparted/labels/sun.c:780
+#, fuzzy
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "Impossível alinhar a partição."
+
+#: libparted/labels/bsd.c:596
+#, fuzzy
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "Impossível localizar um rotulo de disco bsd"
+
+#: libparted/labels/dasd.c:859
+#, fuzzy
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "Impossível localizar um rotulo de disco bsd"
+
+#: libparted/labels/dos.c:966
+#, fuzzy, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr "Tabela de partições inválida em %s - assinatura errada %x"
+
+#: libparted/labels/dos.c:994
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "Tabela de partições inválida - partição recursiva em %s."
+
+#: libparted/labels/dos.c:1504
+#, fuzzy
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr "Partições ext2 não podem ser escondidas em rótulos de disco msdos."
+
+#: libparted/labels/dos.c:2158
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+
+#: libparted/labels/dvh.c:200
+#, fuzzy, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr ""
+"Não posso redimensionar uma partição extendida, sem excluir uma partição "
+"lógica."
+
+#: libparted/labels/dvh.c:326
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr ""
+
+#: libparted/labels/dvh.c:631
+#, fuzzy
+msgid "Only primary partitions can be root partitions."
+msgstr "Não posso adicionar uma partição primária dentro de uma extendida."
+
+#: libparted/labels/dvh.c:645
+#, fuzzy
+msgid "Only primary partitions can be swap partitions."
+msgstr "Não posso adicionar uma partição primária dentro de uma extendida."
+
+#: libparted/labels/dvh.c:659
+msgid "Only logical partitions can be a boot file."
+msgstr ""
+
+#: libparted/labels/dvh.c:736
+#, c-format
+msgid ""
+"failed to set dvh partition name to %s:\n"
+"Only logical partitions (boot files) have a name."
+msgstr ""
+
+#: libparted/labels/dvh.c:829
+#, fuzzy
+msgid "Too many primary partitions"
+msgstr "Muitas páginas inválidas."
+
+#: libparted/labels/fdasd.c:98
+msgid "open error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:101
+msgid "seek error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:104
+msgid "read error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:110
+msgid "ioctl() error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:114
+msgid "API version mismatch"
+msgstr ""
+
+#: libparted/labels/fdasd.c:118
+#, fuzzy
+msgid "Unsupported disk type"
+msgstr "ped_device_new()  Tipo de dispositivo não suportado"
+
+#: libparted/labels/fdasd.c:122
+msgid "Unsupported disk format"
+msgstr ""
+
+#: libparted/labels/fdasd.c:126
+msgid "Disk is in use"
+msgstr ""
+
+#: libparted/labels/fdasd.c:130
+msgid "Syntax error in config file"
+msgstr ""
+
+#: libparted/labels/fdasd.c:134
+msgid "Volume label is corrupted"
+msgstr ""
+
+#: libparted/labels/fdasd.c:138
+msgid "A data set name is corrupted"
+msgstr ""
+
+#: libparted/labels/fdasd.c:142
+msgid "Memory allocation failed"
+msgstr ""
+
+#: libparted/labels/fdasd.c:146
+msgid "Device verification failed"
+msgstr ""
+
+#: libparted/labels/fdasd.c:147
+msgid "The specified device is not a valid DASD device"
+msgstr ""
+
+#: libparted/labels/fdasd.c:150 libparted/labels/vtoc.c:179
+#, fuzzy
+msgid "Fatal error"
+msgstr "Fatal"
+
+#: libparted/labels/fdasd.c:226
+msgid "No room for volume label."
+msgstr ""
+
+#: libparted/labels/fdasd.c:234
+#, fuzzy
+msgid "No room for partition info."
+msgstr "Nenhum mapa de partições válido foi encontrado."
+
+#: libparted/labels/fdasd.c:709
+msgid "Invalid VTOC."
+msgstr ""
+
+#: libparted/labels/fdasd.c:766
+msgid "Could not retrieve API version."
+msgstr ""
+
+#: libparted/labels/fdasd.c:769
+#, c-format
+msgid ""
+"The current API version '%d' doesn't match dasd driver API version '%d'!"
+msgstr ""
+
+#: libparted/labels/fdasd.c:806
+#, fuzzy
+msgid "Could not retrieve disk geometry information."
+msgstr "Não foi possível ler a geometria de %s - %s"
+
+#: libparted/labels/fdasd.c:810
+msgid "Could not retrieve blocksize information."
+msgstr ""
+
+#: libparted/labels/fdasd.c:815
+msgid "Could not retrieve disk information."
+msgstr ""
+
+#: libparted/labels/gpt.c:493
+#, c-format
+msgid ""
+"%s contains GPT signatures, indicating that it has a GPT table.  However, it "
+"does not have a valid fake msdos partition table, as it should.  Perhaps it "
+"was corrupted -- possibly by a program that doesn't understand GPT partition "
+"tables.  Or perhaps you deleted the GPT table, and are now using an msdos "
+"partition table.  Is this a GPT partition table?"
+msgstr ""
+
+#: libparted/labels/gpt.c:693
+#, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise.  Please report this!"
+msgstr ""
+
+#: libparted/labels/gpt.c:740
+#, c-format
+msgid ""
+"Not all of the space available to %s appears to be used, you can fix the GPT "
+"to use all of the space (an extra %llu blocks) or continue with the current "
+"setting? "
+msgstr ""
+
+#: libparted/labels/gpt.c:952
+msgid ""
+"The backup GPT table is not at the end of the disk, as it should be.  This "
+"might mean that another operating system believes the disk is smaller.  Fix, "
+"by moving the backup to the end (and removing the old backup)?"
+msgstr ""
+
+#: libparted/labels/gpt.c:976
+msgid ""
+"Both the primary and backup GPT tables are corrupt.  Try making a fresh "
+"table, and using Parted's rescue feature to recover partitions."
+msgstr ""
+
+#: libparted/labels/gpt.c:987
+msgid ""
+"The backup GPT table is corrupt, but the primary appears OK, so that will be "
+"used."
+msgstr ""
+
+#: libparted/labels/gpt.c:999
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr ""
+
+#: libparted/labels/gpt.c:1023
+msgid "primary partition table array CRC mismatch"
+msgstr ""
+
+#: libparted/labels/mac.c:184
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Assinatura inválida %x para rótulos de disco Mac."
+
+#: libparted/labels/mac.c:231
+msgid "Partition map has no partition map entry!"
+msgstr "Mapa de partições não tem nenhuma entrada!"
+
+#: libparted/labels/mac.c:279
+#, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr "%s é muito pequeno para um rótulo de disco Mac!"
+
+#: libparted/labels/mac.c:508
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "A partição %d tem uma assinatura inválida %x."
+
+#: libparted/labels/mac.c:526
+#, c-format
+msgid "Partition %d has an invalid length of 0 bytes!"
+msgstr "A partição %d tem um tamanho inválido de 0 bytes!"
+
+#: libparted/labels/mac.c:557
+#, fuzzy
+msgid "The data region doesn't start at the start of the partition."
+msgstr "A região de dados não começa no início da partição"
+
+#: libparted/labels/mac.c:574
+#, fuzzy
+msgid "The boot region doesn't start at the start of the partition."
+msgstr "A região de inicialização não começa no início da partição"
+
+#: libparted/labels/mac.c:588
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr "A região de inicialização da partição não a ocupa inteiramente."
+
+#: libparted/labels/mac.c:599
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr "A região de dados da partição não a ocupa inteiramente."
+
+#: libparted/labels/mac.c:652
+#, c-format
+msgid ""
+"Weird block size on device descriptor: %d bytes is not divisible by 512."
+msgstr ""
+"tamanho de bloco estranho no descritor de dispositivo: %d bytes não são "
+"divisíveis por 512."
+
+#: libparted/labels/mac.c:665
+#, c-format
+msgid ""
+"The driver descriptor says the physical block size is %d bytes, but Linux "
+"says it is %d bytes."
+msgstr ""
+"O descritor do driver informa que o tamanho físico de bloco é %d bytes, mas "
+"o Linux informa que é %d bytes."
+
+#: libparted/labels/mac.c:719
+msgid "No valid partition map found."
+msgstr "Nenhum mapa de partições válido foi encontrado."
+
+#: libparted/labels/mac.c:780
+#, fuzzy, c-format
+msgid ""
+"Conflicting partition map entry sizes!  Entry 1 says it is %d, but entry %d "
+"says it is %d!"
+msgstr ""
+"Conflito nos tamanhos de mapa de partição! Entrada 1 informa que é %d, mas "
+"entrada %d informa que é %d!"
+
+#: libparted/labels/mac.c:811
+#, fuzzy
+msgid "Weird!  There are 2 partitions map entries!"
+msgstr "Estranho - 2 entradas no mapa de partição"
+
+#: libparted/labels/mac.c:1357
+msgid ""
+"Changing the name of a root or swap partition will prevent Linux from "
+"recognising it as such."
+msgstr ""
+"Mudar o nome de uma partição root ou swap irá impedir o Linux de reconhecê-"
+"la como tal."
+
+#: libparted/labels/mac.c:1461
+#, fuzzy
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr ""
+"Não posso adicionar outra partição - o mapa de partições é muito pequeno!"
+
+#: libparted/labels/pc98.c:331
+#, fuzzy, c-format
+msgid "Invalid partition table on %s."
+msgstr "Tabela de partições inválida em %s"
+
+#: libparted/labels/pc98.c:384 libparted/labels/pc98.c:462
+#, fuzzy, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries.  This is still "
+"unsupported."
+msgstr ""
+"A partição %d não está alinhada com o limite do cilindro. Preciso adicionar "
+"suporte para isso."
+
+#: libparted/labels/pc98.c:780
+msgid "Can't add another partition."
+msgstr "Não posso adicionar outra partição."
+
+#: libparted/labels/pt-tools.c:125
+#, c-format
+msgid ""
+"partition length of %jd sectors exceeds the %s-partition-table-imposed "
+"maximum of %jd"
+msgstr ""
+
+#: libparted/labels/pt-tools.c:138
+#, c-format
+msgid ""
+"starting sector number, %jd exceeds the %s-partition-table-imposed maximum "
+"of %jd"
+msgstr ""
+
+#: libparted/labels/rdb.c:169
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:484
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr ""
+
+#: libparted/labels/rdb.c:573
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr ""
+
+#: libparted/labels/rdb.c:592
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:691
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:699
+#, fuzzy, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr "Impossível alinhar a partição."
+
+#: libparted/labels/rdb.c:707
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:715
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:742
+#, fuzzy, c-format
+msgid "Failed to write partition block at %d."
+msgstr "Impossível determinar se a partição está montada."
+
+#: libparted/labels/rdb.c:1080
+#, fuzzy
+msgid "Unable to allocate a partition number."
+msgstr "Impossível alinhar a partição."
+
+#: libparted/labels/sun.c:161
+msgid "Corrupted Sun disk label detected."
+msgstr ""
+
+#: libparted/labels/sun.c:276
+#, c-format
+msgid ""
+"The disk CHS geometry (%d,%d,%d) reported by the operating system does not "
+"match the geometry stored on the disk label (%d,%d,%d)."
+msgstr ""
+
+#: libparted/labels/sun.c:298
+#, c-format
+msgid "The disk label describes a disk bigger than %s."
+msgstr "O rotulo do disco afirma que o disco é maior que %s"
+
+#: libparted/labels/sun.c:473
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr ""
+
+#: libparted/labels/sun.c:812
+msgid ""
+"The Whole Disk partition is the only available one left.  Generally, it is "
+"not a good idea to overwrite this partition with a real one.  Solaris may "
+"not be able to boot without it, and SILO (the sparc boot loader) appreciates "
+"it as well."
+msgstr ""
+
+#: libparted/labels/sun.c:827
+msgid "Sun disk label is full."
+msgstr ""
+
+#: libparted/labels/vtoc.c:164
+msgid "opening of device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:168
+msgid "seeking on device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:172
+msgid "writing to device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:176
+msgid "reading from device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:299 libparted/labels/vtoc.c:308
+#: libparted/labels/vtoc.c:329 libparted/labels/vtoc.c:336
+#, fuzzy
+msgid "Could not read volume label."
+msgstr "Não foi possível ler a geometria de %s - %s"
+
+#: libparted/labels/vtoc.c:356 libparted/labels/vtoc.c:363
+#, fuzzy
+msgid "Could not write volume label."
+msgstr "Não foi possível detectar o sistema de Ficheiros."
+
+#: libparted/labels/vtoc.c:469
+msgid "Could not read VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:496
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:516
+msgid "Could not write VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:522
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:529
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:536
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:543
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/libparted.c:230 libparted/libparted.c:245
+msgid "Out of memory."
+msgstr "Não há memória."
+
+#: libparted/unit.c:138
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr ""
+
+#: libparted/unit.c:384
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr ""
+
+#: libparted/unit.c:392
+#, c-format
+msgid "The maximum head value is %d."
+msgstr ""
+
+#: libparted/unit.c:399
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr ""
+
+#: libparted/unit.c:411 libparted/unit.c:556
+#, fuzzy, c-format
+msgid "The location %s is outside of the device %s."
+msgstr "Impossível criar partição fora do dispositivo."
+
+#: libparted/unit.c:531
+msgid "Invalid number."
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:62 libparted/fs/amiga/apfs.c:55
+#: libparted/fs/amiga/asfs.c:69
+#, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:77 libparted/fs/amiga/apfs.c:68
+#: libparted/fs/amiga/asfs.c:81
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:82 libparted/fs/amiga/apfs.c:73
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:98 libparted/fs/amiga/apfs.c:84
+#: libparted/fs/amiga/asfs.c:87 libparted/fs/amiga/asfs.c:101
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:71
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:188
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:201
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:211
+#, fuzzy, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s durante escrita em %s"
+
+#: libparted/fs/amiga/amiga.c:277
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:288
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:317
+#, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr ""
+
+#: libparted/fs/fat/fat.c:174
+#, fuzzy
+msgid ""
+"GNU Parted was miscompiled: the FAT boot sector should be 512 bytes.  FAT "
+"support will be disabled."
+msgstr ""
+"O GNU parted foi compilado erradamente: o sector de boot FAT deveria ser de "
+"512 bytes. O suporte a FAT será desabilitado."
+
+#: libparted/fs/fat/bootsector.c:49 libparted/fs/fat/bootsector.c:56
+msgid "File system has an invalid signature for a FAT file system."
+msgstr "Sistema de ficheiros tem uma assinatura inválida para um FAT."
+
+#: libparted/fs/fat/bootsector.c:64
+msgid "File system has an invalid sector size for a FAT file system."
+msgstr "Sistema de ficheiros tem um tamanho de sector inválido para um FAT."
+
+#: libparted/fs/fat/bootsector.c:71
+#, fuzzy
+msgid "File system has an invalid cluster size for a FAT file system."
+msgstr "Sistema de ficheiros tem um tamanho de sector inválido para um FAT."
+
+#: libparted/fs/fat/bootsector.c:78
+#, fuzzy
+msgid ""
+"File system has an invalid number of reserved sectors for a FAT file system."
+msgstr ""
+"Sistema de ficheiros tem um número de setores reservados inválido para um "
+"FAT."
+
+#: libparted/fs/fat/bootsector.c:85
+#, fuzzy
+msgid "File system has an invalid number of FATs."
+msgstr "Sistema de ficheiros tem um número inválido de FATS."
+
+#: libparted/fs/fat/bootsector.c:156
+#, c-format
+msgid ""
+"This file system has a logical sector size of %d.  GNU Parted is known not "
+"to work properly with sector sizes other than 512 bytes."
+msgstr ""
+"Este sistema de ficheiros tem um tamanho de sector lógico de %d. O GNU "
+"Parted é conhecido por não funcionar corretamente com sectores diferentes de "
+"512 bytes."
+
+#: libparted/fs/fat/bootsector.c:181
+#, c-format
+msgid ""
+"The file system's CHS geometry is (%d, %d, %d), which is invalid.  The "
+"partition table's CHS geometry is (%d, %d, %d).  If you select Ignore, the "
+"file system's CHS geometry will be left unchanged.  If you select Fix, the "
+"file system's CHS geometry will be set to match the partition table's CHS "
+"geometry."
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:230
+msgid "FAT boot sector says logical sector size is 0.  This is weird. "
+msgstr "Sector de boot FAT diz que o tamanho lógico do sector é 0. Estranho. "
+
+#: libparted/fs/fat/bootsector.c:236
+msgid "FAT boot sector says there are no FAT tables.  This is weird. "
+msgstr "Sector de boot FAT diz que não há tabelas FAT. Estranho. "
+
+#: libparted/fs/fat/bootsector.c:242
+msgid "FAT boot sector says clusters are 0 sectors.  This is weird. "
+msgstr "Sector de boot FAT diz que os clusters têm 0 setores. Estranho. "
+
+#: libparted/fs/fat/bootsector.c:252
+#, fuzzy
+msgid "File system is FAT12, which is unsupported."
+msgstr "O sistema de ficheiros é FAT12, que não é suportado."
+
+#: libparted/fs/fat/bootsector.c:428
+#, c-format
+msgid ""
+"The information sector has the wrong signature (%x).  Select cancel for now, "
+"and send in a bug report.  If you're desperate, it's probably safe to ignore."
+msgstr ""
+"O sector de informações tem uma assinatura inválida (%x). Selecione cancelar "
+"agora, e mande um relatório de bug. Se você está desesperado, é provável que "
+"seja seguro ignorar."
+
+#: libparted/fs/linux_swap/linux_swap.c:247
+#, fuzzy, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "Assinatura linux swap não reconhecida '%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:290
+#, fuzzy, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "Assinatura linux swap não reconhecida '%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:330
+#, fuzzy, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Assinatura linux swap não reconhecida '%10s'."
+
+#: libparted/fs/hfs/probe.c:50
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to "
+"%d bytes."
+msgstr ""
+
+#: parted/parted.c:123
+msgid "displays this help message"
+msgstr "mostra esta mensagem de ajuda"
+
+#: parted/parted.c:124
+msgid "lists partition layout on all block devices"
+msgstr ""
+
+#: parted/parted.c:125
+msgid "displays machine parseable output"
+msgstr ""
+
+#: parted/parted.c:126
+msgid "never prompts for user intervention"
+msgstr "nunca pede intervenção do utulizador"
+
+#: parted/parted.c:127
+msgid "displays the version"
+msgstr "mostra a versão"
+
+#: parted/parted.c:128
+#, fuzzy
+msgid "alignment for new partitions"
+msgstr "Não posso adicionar outra partição."
+
+#: parted/parted.c:140
+#, fuzzy
+msgid ""
+"NUMBER is the partition number used by Linux.  On MS-DOS disk labels, the "
+"primary partitions number from 1 to 4, logical partitions from 5 onwards.\n"
+msgstr ""
+"MINOR é o número da partição usado pelo linux. Em rótulos de disco msdos, as "
+"partições primárias são de 1-4, e partições lógicas de 5 adiante.\n"
+
+#: parted/parted.c:143
+msgid "LABEL-TYPE is one of: "
+msgstr "TIPO_ROTULO é um de:"
+
+#: parted/parted.c:144
+msgid "FLAG is one of: "
+msgstr "FLAG é um de: "
+
+#: parted/parted.c:145
+#, fuzzy
+msgid "UNIT is one of: "
+msgstr "FLAG é um de: "
+
+#: parted/parted.c:146
+msgid "desired alignment: minimum or optimal"
+msgstr ""
+
+#: parted/parted.c:147
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "TIPO-PART é um de: primary, logical, extended\n"
+
+#: parted/parted.c:149
+msgid "FS-TYPE is one of: "
+msgstr "TIPO-FS é um de: "
+
+#: parted/parted.c:150
+msgid ""
+"START and END are disk locations, such as 4GB or 10%.  Negative values count "
+"from the end of the disk.  For example, -1s specifies exactly the last "
+"sector.\n"
+msgstr ""
+
+#: parted/parted.c:153
+msgid "STATE is one of: on, off\n"
+msgstr "ESTADO é um de: on, off\n"
+
+#: parted/parted.c:154
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "DISPOSITIVO é usualmente /dev/hda ou /dev/sda\n"
+
+#: parted/parted.c:155
+msgid "NAME is any word you want\n"
+msgstr "NAME é qualquer palavra que desejar\n"
+
+#: parted/parted.c:158
+msgid ""
+"Copyright (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"This program is free software, covered by the GNU General Public License.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+msgstr ""
+
+#: parted/parted.c:204
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr ""
+
+#: parted/parted.c:223
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+
+#: parted/parted.c:241
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "Partição(ões) em %s está(ão) a ser utilizada(s)."
+
+#: parted/parted.c:253
+#, c-format
+msgid ""
+"The existing disk label on %s will be destroyed and all data on this disk "
+"will be lost. Do you want to continue?"
+msgstr ""
+
+#: parted/parted.c:502
+#, fuzzy
+msgid "New disk label type?"
+msgstr "Tipo de rótulo de disco: %s\n"
+
+#: parted/parted.c:562
+#, fuzzy
+msgid "Partition type?"
+msgstr "A partição não existe."
+
+#: parted/parted.c:580 parted/parted.c:766
+#, fuzzy
+msgid "Partition name?"
+msgstr "A partição não existe."
+
+#: parted/parted.c:588
+#, fuzzy
+msgid "File system type?"
+msgstr "SistemaFich "
+
+#: parted/parted.c:594 parted/parted.c:1342
+msgid "Start?"
+msgstr ""
+
+#: parted/parted.c:596 parted/parted.c:1344
+msgid "End?"
+msgstr ""
+
+#: parted/parted.c:661
+#, fuzzy, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s.%s"
+msgstr ""
+"Pretende criar uma partiçao em %.3f-%.3fMb. O mais perto que se consegue "
+"será %3f-%.3fMb."
+
+#: parted/parted.c:666
+msgid ""
+"\n"
+"Is this still acceptable to you?"
+msgstr ""
+
+#: parted/parted.c:688
+msgid "The resulting partition is not properly aligned for best performance."
+msgstr ""
+
+#: parted/parted.c:763 parted/parted.c:1383 parted/parted.c:1455
+#: parted/parted.c:1489
+#, fuzzy
+msgid "Partition number?"
+msgstr "A partição está a ser utilizada."
+
+#: parted/parted.c:841
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d.  Each cylinder is %s.\n"
+msgstr ""
+
+#: parted/parted.c:881
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr ""
+
+#: parted/parted.c:883
+#, fuzzy, c-format
+msgid "Disk %s: %s\n"
+msgstr "Tipo de rótulo de disco: %s\n"
+
+#: parted/parted.c:884
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr ""
+
+#: parted/parted.c:896
+#, fuzzy, c-format
+msgid "Partition Table: %s\n"
+msgstr "Tabela de partições inválida em %s"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Number"
+msgstr ""
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Start"
+msgstr ""
+
+#: parted/parted.c:1008 parted/parted.c:1011
+msgid "End"
+msgstr ""
+
+#: parted/parted.c:1011
+#, fuzzy
+msgid "Size"
+msgstr "resize"
+
+#: parted/parted.c:1015
+msgid "Type"
+msgstr ""
+
+#: parted/parted.c:1017
+#, fuzzy
+msgid "File system"
+msgstr "SistemaFich "
+
+#: parted/parted.c:1020
+#, fuzzy
+msgid "Name"
+msgstr "name"
+
+#: parted/parted.c:1022
+msgid "Flags"
+msgstr "Sinalizador"
+
+#: parted/parted.c:1079
+msgid "Free Space"
+msgstr ""
+
+#: parted/parted.c:1241
+#, c-format
+msgid ""
+"A %s %s partition was found at %s -> %s.  Do you want to add it to the "
+"partition table?"
+msgstr ""
+
+#: parted/parted.c:1280
+msgid "searching for file systems"
+msgstr ""
+
+#: parted/parted.c:1408
+#, fuzzy
+msgid "New device?"
+msgstr "Nenhum dispositivo encontrado"
+
+#: parted/parted.c:1453
+msgid "alignment type(min/opt)"
+msgstr ""
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d aligned\n"
+msgstr ""
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d not aligned\n"
+msgstr ""
+
+#: parted/parted.c:1491
+msgid "Flag to Invert?"
+msgstr ""
+
+#: parted/parted.c:1496
+msgid "New state?"
+msgstr ""
+
+#: parted/parted.c:1533
+msgid "Unit?"
+msgstr ""
+
+#: parted/parted.c:1651
+#, fuzzy
+msgid "align-check"
+msgstr "check"
+
+#: parted/parted.c:1654
+msgid ""
+"align-check TYPE N                        check partition N for TYPE(min|"
+"opt) alignment"
+msgstr ""
+
+#: parted/parted.c:1662
+msgid "help"
+msgstr "help"
+
+#: parted/parted.c:1665
+#, fuzzy
+msgid ""
+"help [COMMAND]                           print general help, or help on "
+"COMMAND"
+msgstr "help [COMANDO]                mostra ajuda geral, ou ajuda a COMANDO"
+
+#: parted/parted.c:1671
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:1671
+#, fuzzy
+msgid "mktable"
+msgstr "mklabel"
+
+#: parted/parted.c:1674
+#, fuzzy
+msgid ""
+"mklabel,mktable LABEL-TYPE               create a new disklabel (partition "
+"table)"
+msgstr ""
+"mklabel TIPO-ROTULO           cria um novo rótulo (na tabela de partição)"
+
+#: parted/parted.c:1680
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:1683
+#, fuzzy
+msgid "mkpart PART-TYPE [FS-TYPE] START END     make a partition"
+msgstr "mkpart TIPO-PART [FS-TYPE] INICIO FIM     cria uma partição"
+
+#: parted/parted.c:1689
+#, fuzzy
+msgid ""
+"'mkpart' makes a partition without creating a new file system on the "
+"partition.  FS-TYPE may be specified to set an appropriate partition ID.\n"
+msgstr ""
+"mkpart cria uma partição sem criar um novo sistema de ficheiros na partição. "
+"TIPO-FS deve ser especificado para partições de dados (ao oposto de uma "
+"partição extendida). Este comando é útil se apagou acidentalmente uma "
+"partição.\n"
+
+#: parted/parted.c:1694
+msgid "name"
+msgstr "name"
+
+#: parted/parted.c:1697
+#, fuzzy
+msgid "name NUMBER NAME                         name partition NUMBER as NAME"
+msgstr "name MINOR NAME               renomeia a partição MINOR para NAME"
+
+#: parted/parted.c:1702
+msgid "print"
+msgstr "print"
+
+#: parted/parted.c:1705
+msgid ""
+"print [devices|free|list,all|NUMBER]     display the partition table, "
+"available devices, free space, all found partitions, or a particular "
+"partition"
+msgstr ""
+
+#: parted/parted.c:1710
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+
+#: parted/parted.c:1712
+msgid "  devices   : display all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:1713
+msgid ""
+"  free      : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+
+#: parted/parted.c:1715
+msgid ""
+"  list, all : display the partition tables of all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:1716
+msgid ""
+"  NUMBER    : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+
+#: parted/parted.c:1721
+msgid "quit"
+msgstr "quit"
+
+#: parted/parted.c:1724
+#, fuzzy
+msgid "quit                                     exit program"
+msgstr "quit                          sair do programa"
+
+#: parted/parted.c:1729
+#, fuzzy
+msgid "rescue"
+msgstr "resize"
+
+#: parted/parted.c:1732
+#, fuzzy
+msgid ""
+"rescue START END                         rescue a lost partition near START "
+"and END"
+msgstr "print                         mostra a tabela de partições"
+
+#: parted/parted.c:1738
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:1741
+#, fuzzy
+msgid "rm NUMBER                                delete partition NUMBER"
+msgstr "rm MINOR                      apaga a partição MINOR"
+
+#: parted/parted.c:1746
+msgid "select"
+msgstr "select"
+
+#: parted/parted.c:1749
+#, fuzzy
+msgid "select DEVICE                            choose the device to edit"
+msgstr "select DEVICE                 selecciona o dispositivo a editar"
+
+#: parted/parted.c:1754
+msgid "set"
+msgstr "set"
+
+#: parted/parted.c:1757
+#, fuzzy
+msgid ""
+"set NUMBER FLAG STATE                    change the FLAG on partition NUMBER"
+msgstr "set MINOR FLAG ESTADO         muda o sinalizador na partição MINOR"
+
+#: parted/parted.c:1763
+msgid "toggle"
+msgstr ""
+
+#: parted/parted.c:1766
+msgid ""
+"toggle [NUMBER [FLAG]]                   toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+
+#: parted/parted.c:1772
+#, fuzzy
+msgid "unit"
+msgstr "quit"
+
+#: parted/parted.c:1775
+#, fuzzy
+msgid "unit UNIT                                set the default unit to UNIT"
+msgstr "print                         mostra a tabela de partições"
+
+#: parted/parted.c:1780
+msgid "version"
+msgstr ""
+
+#: parted/parted.c:1783
+#, fuzzy
+msgid ""
+"version                                  display the version number and "
+"copyright information of GNU Parted"
+msgstr "print                         mostra a tabela de partições"
+
+#: parted/parted.c:1787
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+
+#: parted/parted.c:1855
+#, c-format
+msgid "Usage: %s [-hlmsv] [-a<align>] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+
+#: parted/parted.c:1899
+msgid "No device found"
+msgstr "Nenhum dispositivo encontrado"
+
+#: parted/parted.c:1936
+msgid "WARNING: You are not superuser.  Watch out for permissions."
+msgstr ""
+
+#: parted/parted.c:1974
+msgid "You may need to update /etc/fstab.\n"
+msgstr ""
+
+#: parted/ui.c:162
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+
+#: parted/ui.c:165
+#, fuzzy
+msgid ""
+"Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]\n"
+"Apply COMMANDs with PARAMETERS to DEVICE.  If no COMMAND(s) are given, run "
+"in\n"
+"interactive mode.\n"
+msgstr ""
+"Uso: parted [OPCOES]... [DISPOSITIVO [COMANDO [PARAMETROS]...]...]\n"
+"Aplica COMANDO com os PARAMETROS no DISPOSITIVO. Se não for dado nenhum\n"
+"COMANDO, executa em modo interactivo.\n"
+
+#: parted/ui.c:170
+#, c-format
+msgid ""
+"\n"
+"\n"
+"You found a bug in GNU Parted! Here's what you have to do:\n"
+"\n"
+"Don't panic! The bug has most likely not affected any of your data.\n"
+"Help us to fix this bug by doing the following:\n"
+"\n"
+"Check whether the bug has already been fixed by checking\n"
+"the last version of GNU Parted that you can find at:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Please check this version prior to bug reporting.\n"
+"\n"
+"If this has not been fixed yet or if you don't know how to check,\n"
+"please visit the GNU Parted website:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"for further information.\n"
+"\n"
+"Your report should contain the version of this release (%s)\n"
+"along with the error message below, the output of\n"
+"\n"
+"\tparted DEVICE unit co print unit s print\n"
+"\n"
+"and the following history of commands you entered.\n"
+"Also include any additional information about your setup you\n"
+"consider important.\n"
+msgstr ""
+
+#: parted/ui.c:291
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+
+#: parted/ui.c:354
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+
+#: parted/ui.c:360
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+
+#: parted/ui.c:365
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+
+#: parted/ui.c:389
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:394
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+
+#: parted/ui.c:399
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:404
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+
+#: parted/ui.c:409
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+
+#: parted/ui.c:414
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+
+#: parted/ui.c:419
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+
+#: parted/ui.c:424
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+
+#: parted/ui.c:429
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+
+#: parted/ui.c:453
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+
+#: parted/ui.c:458
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+
+#: parted/ui.c:463
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+
+#: parted/ui.c:468
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+
+#: parted/ui.c:473
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+
+#: parted/ui.c:478
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+
+#: parted/ui.c:891
+#, fuzzy, c-format
+msgid "invalid token: %s"
+msgstr "Tabela de partições inválida em %s"
+
+#: parted/ui.c:1048
+#, fuzzy
+msgid "Expecting a partition number."
+msgstr "A partição destino está a ser utilizada."
+
+#: parted/ui.c:1057
+msgid "Partition doesn't exist."
+msgstr "A partição não existe."
+
+#: parted/ui.c:1077
+#, fuzzy
+msgid "Expecting a file system type."
+msgstr "Tipo de sistema de ficheiros desconhecido."
+
+#: parted/ui.c:1084
+#, fuzzy, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Tipo de sistema de ficheiros desconhecido."
+
+#: parted/ui.c:1105
+msgid "Expecting a disk label type."
+msgstr ""
+
+#: parted/ui.c:1203
+#, fuzzy
+msgid "Can't create any more partitions."
+msgstr "Não posso adicionar outra partição."
+
+#: parted/ui.c:1213
+#, fuzzy
+msgid "Expecting a partition type."
+msgstr "A partição destino não existe."
+
+#: parted/ui.c:1361
+msgid "on"
+msgstr "on"
+
+#: parted/ui.c:1362
+msgid "off"
+msgstr ""
+
+#: parted/ui.c:1379
+msgid "optimal"
+msgstr ""
+
+#: parted/ui.c:1380
+msgid "minimal"
+msgstr ""
+
+#: parted/ui.c:1513
+msgid "OPTIONs:"
+msgstr "OPÇÕES:"
+
+#: parted/ui.c:1518
+msgid "COMMANDs:"
+msgstr "COMANDOs:"
+
+#: parted/ui.c:1521
+#, c-format
+msgid ""
+"\n"
+"Report bugs to %s\n"
+msgstr ""
+
+#: parted/ui.c:1528
+#, fuzzy, c-format
+msgid "Using %s\n"
+msgstr ""
+"\n"
+"Usando %s\n"
+
+#: parted/ui.c:1602
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr ""
+
+#, fuzzy
+#~ msgid "too few arguments"
+#~ msgstr "Muitas páginas inválidas."
+
+#, fuzzy
+#~ msgid "too many arguments"
+#~ msgstr "Muitas páginas inválidas."
+
+#, fuzzy
+#~ msgid "invalid minor device number: %s"
+#~ msgstr "Tabela de partições inválida em %s"
+
+#~ msgid "Could not detect file system."
+#~ msgstr "Não foi possível detectar o sistema de Ficheiros."
+
+#, fuzzy
+#~ msgid "The file system is bigger than its volume!"
+#~ msgstr "O rotulo do disco afirma que o disco é maior que %s"
+
+#~ msgid "Support for opening %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "O suporte para abrir sistema de ficheiros %s não foi implementado ainda."
+
+#~ msgid "Support for creating %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "O suporte para criar sistema de ficheiros %s não foi implementado ainda."
+
+#~ msgid "Support for checking %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Suporte para verificar sistema de ficheiros não implementado para %s."
+
+#, fuzzy
+#~ msgid "growing file system"
+#~ msgstr "Tipo de sistema de ficheiros desconhecido."
+
+#~ msgid "Can't copy onto an overlapping partition."
+#~ msgstr "Não posso copiar para uma partição sobreposta."
+
+#, fuzzy
+#~ msgid ""
+#~ "Direct support for copying file systems is not yet implemented for %s.  "
+#~ "However, support for resizing is implemented.  Therefore, the file system "
+#~ "can be copied if the new partition is at least as big as the old one.  "
+#~ "So, either shrink the partition you are trying to copy, or copy to a "
+#~ "bigger partition."
+#~ msgstr ""
+#~ "O suporte directo para cópia de sistemas de ficheiros não está "
+#~ "implementado para %s. Entretanto, o suporte para redimensionamento está. "
+#~ "Portanto, o sistema de ficheiros pode ser copiado se a nova partição for "
+#~ "pelo menos tão grande quanto a antiga. Então, diminua a partição que você "
+#~ "está a tentar copiar, ou copie para uma partição maior."
+
+#~ msgid "Support for copying %s file systems is not implemented yet."
+#~ msgstr "Suporte para copiar sistema de ficheiros não implementado para %s."
+
+#~ msgid "Support for resizing %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Suporte para redimensionar sistema de ficheiros não implementado para %s."
+
+#, fuzzy
+#~ msgid "The file system is in an invalid state.  Perhaps it is mounted?"
+#~ msgstr "Sistema de ficheiros tem uma assinatura inválida para um FAT."
+
+#, fuzzy
+#~ msgid "checking"
+#~ msgstr "check"
+
+#, fuzzy
+#~ msgid ""
+#~ "The reiserfs file system passed a basic check.  For a more comprehensive "
+#~ "check, run reiserfsck --check."
+#~ msgstr ""
+#~ "O sistema de ficheiros ext2 passou pelo teste básico. Para um teste mais "
+#~ "profundo, utilize o programa e2fsck."
+
+#, fuzzy
+#~ msgid "Sorry, can't move the start of reiserfs partitions yet."
+#~ msgstr "Desculpe, não posso mover o início de partições ext2 ainda!"
+
+#, fuzzy
+#~ msgid "shrinking"
+#~ msgstr "Aviso"
+
+#, fuzzy
+#~ msgid "expanding"
+#~ msgstr "Aviso"
+
+#~ msgid "Inconsistent group descriptors!"
+#~ msgstr "Descritores de grupo inconsistentes!"
+
+#, fuzzy
+#~ msgid "File system full!"
+#~ msgstr "Sistema de ficheiros cheio!"
+
+#, fuzzy
+#~ msgid "Invalid superblock.  Are you sure this is an ext2 file system?"
+#~ msgstr "Superbloco inválido. Tem certeza que isto é um sistema ext2?"
+
+#, fuzzy
+#~ msgid "File system has errors!  You should run e2fsck."
+#~ msgstr "Sistema de ficheiros tem erros! Execute e2fsck primeiro!"
+
+#, fuzzy
+#~ msgid ""
+#~ "File system was not cleanly unmounted!  You should run e2fsck.  Modifying "
+#~ "an unclean file system could cause severe corruption."
+#~ msgstr ""
+#~ "Sistema de ficheiros não foi desmontado correctamente! Execute e2fsck "
+#~ "primeiro!"
+
+#~ msgid "Error allocating buffer cache."
+#~ msgstr "Erro ao determinar o cache temporário."
+
+#, fuzzy
+#~ msgid ""
+#~ "Found an inode with a incorrect link count.  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "Encontrado um inode com uma contagem incorreta de ligações. Melhor "
+#~ "executar o e2fsck primeiro."
+
+#~ msgid "Not enough free inodes!"
+#~ msgstr "Não há inodes livres suficientes!"
+
+#, fuzzy
+#~ msgid "File system is too full to remove a group!"
+#~ msgstr "Sistema de ficheiros muito ocupado para remover um grupo!"
+
+#, fuzzy
+#~ msgid "File system has too many allocated inodes to remove a group!"
+#~ msgstr ""
+#~ "Sistema de ficheiros tem muitos inodes utilizados para remover um grupo!"
+
+#, fuzzy
+#~ msgid "Your file system is too full to resize it to %i blocks.  Sorry."
+#~ msgstr ""
+#~ "Seu sistema de ficheiros está muito ocupado para redimensioná-lo para %i "
+#~ "blocos. Desculpe."
+
+#, fuzzy
+#~ msgid ""
+#~ "Your file system has too many occupied inodes to resize it to %i blocks.  "
+#~ "Sorry."
+#~ msgstr ""
+#~ "Seu sistema de ficheiros está com muitos inodes ocupados para "
+#~ "redimensioná-lo para %i blocos. Desculpe."
+
+#, fuzzy
+#~ msgid "File system was not cleanly unmounted!  You should run e2fsck."
+#~ msgstr ""
+#~ "Sistema de ficheiros não foi desmontado correctamente! Execute e2fsck "
+#~ "primeiro!"
+
+#, fuzzy
+#~ msgid "Cross-linked blocks found!  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "Encontrados blocos com referência cruzada! Melhor executar e2fsck "
+#~ "primeiro."
+
+#, fuzzy
+#~ msgid "Block %i has no reference?  Weird."
+#~ msgstr "Bloco %i não tem referência? Estranho"
+
+#, fuzzy
+#~ msgid "Block %i shouldn't have been marked (%d, %d)!"
+#~ msgstr "Bloco %i não deveria ter sido marcado!"
+
+#, fuzzy
+#~ msgid ""
+#~ "The ext2 file system passed a basic check.  For a more comprehensive "
+#~ "check, use the e2fsck program."
+#~ msgstr ""
+#~ "O sistema de ficheiros ext2 passou pelo teste básico. Para um teste mais "
+#~ "profundo, utilize o programa e2fsck."
+
+#~ msgid "Sorry, can't move the start of ext2 partitions yet!"
+#~ msgstr "Desculpe, não posso mover o início de partições ext2 ainda!"
+
+#~ msgid "Couldn't flush buffer cache!"
+#~ msgstr "Não foi possível esvaziar a cache temporária!"
+
+#, fuzzy
+#~ msgid "File system too small for ext2."
+#~ msgstr "Sistema de ficheiros muito ocupado para remover um grupo!"
+
+#, fuzzy
+#~ msgid ""
+#~ "You need %s of free disk space to shrink this partition to this size.  "
+#~ "Currently, only %s is free."
+#~ msgstr ""
+#~ "Você precisa de %dM de espaço livre para diminuir esta partição para este "
+#~ "tamanho (você tem somente %dM livres)"
+
+#~ msgid ""
+#~ "Cluster start delta = %d, which is not a multiple of the cluster size %d."
+#~ msgstr ""
+#~ "O cluster inicia em delta = %d, que não é um múltiplo do tamanho de "
+#~ "cluster %d."
+
+#, fuzzy
+#~ msgid "Partition too big/small for a %s file system."
+#~ msgstr "A partição é muito pequena para um sistema de ficheiros FAT"
+
+#~ msgid ""
+#~ "The FATs don't match.  If you don't know what this means, then select "
+#~ "cancel, run scandisk on the file system, and then come back."
+#~ msgstr ""
+#~ "As FATs não estão iguais. Se não sabe o que isto significa, seleccione "
+#~ "cancelar, execute o scandisk no sistema de ficheiros, depois volte."
+
+#~ msgid "There are no possible configurations for this FAT type."
+#~ msgstr "Não há configurações possíveis para este tipo de FAT."
+
+#~ msgid ""
+#~ "File system doesn't have expected sizes for Windows to like it.  Cluster "
+#~ "size is %dk (%dk expected); number of clusters is %d (%d expected); size "
+#~ "of FATs is %d sectors (%d expected)."
+#~ msgstr ""
+#~ "O sistema de ficheiros não tem o tamanho esperado para que o Windows o "
+#~ "utilize. O tamanho do cluster é %dk (%dk esperado); número de clusters é "
+#~ "%d (%d esperado); tamanho da FAT é %d sectores (%d esperado)."
+
+#~ msgid ""
+#~ "File system is reporting the free space as %d clusters, not %d clusters."
+#~ msgstr ""
+#~ "O sistema de ficheiros reporta que o espaço livre é de %d clusters, não "
+#~ "de %d clusters."
+
+#, fuzzy
+#~ msgid ""
+#~ "There's not enough room in the root directory for all of the files.  "
+#~ "Either cancel, or ignore to lose the files."
+#~ msgstr ""
+#~ "Não há espaço suficiente no diretório raiz para todos os ficheiros. "
+#~ "Cancele, ou ignore para perder os ficheiros."
+
+#~ msgid "Error writing to the root directory."
+#~ msgstr "Erro escrevendo no diretório raiz."
+
+#, fuzzy
+#~ msgid ""
+#~ "If you leave your file system as FAT16, then you will have no problems."
+#~ msgstr ""
+#~ "Se deixar seu sistema de ficheiros como FAT16, não haverá problemas."
+
+#~ msgid ""
+#~ "If you convert to FAT16, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual)."
+#~ msgstr ""
+#~ "Se você converter para FAT16, e o MS Windows está instalado nesta "
+#~ "partição, deverá reinstalar o gestor de boot do MS Windows. Se quiser "
+#~ "fazer isso, consulte o manual do Parted (ou o manual de sua distribuição)."
+
+#~ msgid ""
+#~ "If you leave your file system as FAT32, then you will not introduce any "
+#~ "new problems."
+#~ msgstr ""
+#~ "Se deixar seu sistema de ficheiros como FAT32, você não terá mais nenhum "
+#~ "problema novo."
+
+#~ msgid ""
+#~ "If you convert to FAT32, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual).  Also, converting to FAT32 will make the file system unreadable "
+#~ "by MS DOS, MS Windows 95a, and MS Windows NT."
+#~ msgstr ""
+#~ "Se você converter para FAT32, e o MS Windows está instalado nesta "
+#~ "partição, deverá reinstalar o gestor de boot do MS Windows. Se quiser "
+#~ "fazer isso, consulte o manual do Parted (ou o manual de sua "
+#~ "distribuição). Também, convertendo para FAT32 fará com que o sistema de "
+#~ "ficheiros não seja mais reconhecido pelo MS DOS, Windows 95a, e MS "
+#~ "Windows NT."
+
+#~ msgid "Would you like to use FAT32?"
+#~ msgstr "Você gostaria de usar FAT32?"
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT16."
+#~ msgstr ""
+#~ "O sistema de ficheiros só pode ser redimensionado para esse tamanho se "
+#~ "convertido para FAT16."
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT32."
+#~ msgstr ""
+#~ "O sistema de ficheiros só pode ser redimensionado para esse tamanho se "
+#~ "convertido para FAT32."
+
+#, fuzzy
+#~ msgid ""
+#~ "GNU Parted cannot resize this partition to this size.  We're working on "
+#~ "it!"
+#~ msgstr ""
+#~ "O GNU Parted não pode redimensionar esta partição para esse tamanho. "
+#~ "Estamos a trabalhar nisso!"
+
+#~ msgid "Bad directory entry for %s: first cluster is the end of file marker."
+#~ msgstr ""
+#~ "Entrada de diretório inválida para %s: o primeiro cluster é o fim do "
+#~ "marcador de ficheiro."
+
+#~ msgid ""
+#~ "Bad FAT: unterminated chain for %s.  You should run dosfsck or scandisk."
+#~ msgstr ""
+#~ "FAT estragada: cadeia não terminada para %s. Você deveria correr o "
+#~ "dosfsck ou o scandisk."
+
+#, fuzzy
+#~ msgid ""
+#~ "Bad FAT: cluster %d outside file system in chain for %s.  You should run "
+#~ "dosfsck or scandisk."
+#~ msgstr ""
+#~ "FAT estragada: cluster %d fora do sistema de ficheiros na cadeia para %s. "
+#~ "Você deveria correr o dosfsck ou o scandisk."
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d is cross-linked for %s.  You should run dosfsck or "
+#~ "scandisk."
+#~ msgstr ""
+#~ "FAT estragada: o cluster %d tem uma referência cruzada para %s. Você "
+#~ "deveria correr o dosfsck ou o scandisk."
+
+#, fuzzy
+#~ msgid "%s is %dk, but it has %d clusters (%dk)."
+#~ msgstr "%s é %dk, mas tem %d clusters (%dk)."
+
+#~ msgid ""
+#~ "FAT %d media %x doesn't match the boot sector's media %x.  You should "
+#~ "probably run scandisk."
+#~ msgstr ""
+#~ "FAT %d média %x não coincide com o sector de boot médio %x. Você deveria "
+#~ "executar o scandisk."
+
+#, fuzzy
+#~ msgid "fat_table_set: cluster %ld outside file system"
+#~ msgstr "fat_table_set: cluster %ld fora do sistema de ficheiros"
+
+#, fuzzy
+#~ msgid "fat_table_get: cluster %ld outside file system"
+#~ msgstr "fat_table_get: cluster %ld fora do sistema de ficheiros"
+
+#~ msgid "fat_table_alloc_cluster: no free clusters"
+#~ msgstr "fat_table_alloc_cluster: não há clusters livres"
+
+#~ msgid "Too many bad pages."
+#~ msgstr "Muitas páginas inválidas."
+
+#, fuzzy
+#~ msgid "writing HFS Master Directory Block"
+#~ msgstr "Erro escrevendo no diretório raiz."
+
+#, fuzzy
+#~ msgid "Error while writing the allocation file."
+#~ msgstr "Erro escrevendo no diretório raiz."
+
+#, fuzzy
+#~ msgid "Error while writing the compatibility part of the allocation file."
+#~ msgstr "Erro escrevendo no diretório raiz."
+
+#, fuzzy
+#~ msgid "shrinking HFS wrapper"
+#~ msgstr "Aviso"
+
+#, fuzzy
+#~ msgid "Journal offset or size is not multiple of the sector size."
+#~ msgstr ""
+#~ "O cluster inicia em delta = %d, que não é um múltiplo do tamanho de "
+#~ "cluster %d."
+
+#, fuzzy
+#~ msgid "Some header fields are not multiple of the sector size."
+#~ msgstr ""
+#~ "O cluster inicia em delta = %d, que não é um múltiplo do tamanho de "
+#~ "cluster %d."
+
+#, fuzzy
+#~ msgid "Could not cache the file system in memory."
+#~ msgstr "Não foi possível detectar o sistema de Ficheiros."
+
+#, fuzzy
+#~ msgid "Source device?"
+#~ msgstr "Nenhum dispositivo encontrado"
+
+#, fuzzy
+#~ msgid "Source partition number?"
+#~ msgstr "A partição origem não existe."
+
+#, fuzzy
+#~ msgid "Can't copy an extended partition."
+#~ msgstr "Não posso copiar partições extendidas."
+
+#, fuzzy
+#~ msgid "Destination partition number?"
+#~ msgstr "A partição destino está a ser utilizada."
+
+#, fuzzy
+#~ msgid "Can't move an extended partition."
+#~ msgstr "Não posso mover partições extendidas."
+
+#~ msgid "Can't move a partition onto itself.  Try using resize, perhaps?"
+#~ msgstr ""
+#~ "Não posso mover a partição sobre ela mesma. Talvez queira redimensionar?"
+
+#, fuzzy
+#~ msgid "Flags: %s\n"
+#~ msgstr "Sinalizador"
+
+#, fuzzy
+#~ msgid "File System: %s\n"
+#~ msgstr "SistemaFich "
+
+#~ msgid "check"
+#~ msgstr "check"
+
+#, fuzzy
+#~ msgid ""
+#~ "check NUMBER                             do a simple check on the file "
+#~ "system"
+#~ msgstr ""
+#~ "check MINOR                   faz um teste simples no sistema de ficheiros"
+
+#~ msgid "cp"
+#~ msgstr "cp"
+
+#, fuzzy
+#~ msgid ""
+#~ "cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   copy file system to another "
+#~ "partition"
+#~ msgstr ""
+#~ "cp [FROM-DEVICE] FROM-MINOR TO-MINOR      copia o sistema de ficheiros "
+#~ "para outra partição"
+
+#~ msgid "mkfs"
+#~ msgstr "mkfs"
+
+#, fuzzy
+#~ msgid ""
+#~ "mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on "
+#~ "partition NUMBER"
+#~ msgstr ""
+#~ "mkfs MINOR TIPO-FS            cria um sistema TIPO-FS na partição MINOR"
+
+#~ msgid "mkpartfs"
+#~ msgstr "mkpartfs"
+
+#, fuzzy
+#~ msgid ""
+#~ "mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file "
+#~ "system"
+#~ msgstr "mkpartfs TIPO-PART TIPO-FS INICIO FIM     cria uma partição TIPO-FS"
+
+#~ msgid "move"
+#~ msgstr "move"
+
+#, fuzzy
+#~ msgid "move NUMBER START END                    move partition NUMBER"
+#~ msgstr "move MINOR INICIO [FIM]       redimensiona a partição MINOR"
+
+#~ msgid "resize"
+#~ msgstr "resize"
+
+#, fuzzy
+#~ msgid ""
+#~ "resize NUMBER START END                  resize partition NUMBER and its "
+#~ "file system"
+#~ msgstr "resize MINOR INICIO FIM       redimensiona a partição MINOR"
+
+#, fuzzy
+#~ msgid "Unable to determine the block size of this dasd"
+#~ msgstr "Impossível determinar tamanho de %s (%s)"
+
+#~ msgid ""
+#~ "The sector size on %s is %d bytes.  Parted is known not to work properly "
+#~ "with drives with sector sizes other than 512 bytes"
+#~ msgstr ""
+#~ "O tamanho do sector em %s é %d bytes. O Parted é conhecido por não "
+#~ "funcionar perfeitamente com discos com sectores diferentes de 512 bytes"
+
+#~ msgid "Device %s has dodgey geometry."
+#~ msgstr "Dispositivo %s tem geometria estranha."
+
+#~ msgid "unknown"
+#~ msgstr "desconhecido"
+
+#~ msgid "Unknown SCSI"
+#~ msgstr "SCSI desconhecido"
+
+#~ msgid "Device %s is neither a SCSI nor IDE drive."
+#~ msgstr "O dispositivo %s não é um drive SCSI ou IDE."
+
+#~ msgid ""
+#~ "The partition table on %s is inconsistent.  There are many reasons why "
+#~ "this might be the case.  However, the most likely reason is that Linux "
+#~ "detected the BIOS geometry for %s incorrectly.  GNU Parted suspects the "
+#~ "real geometry should be %d/%d/%d (not %d/%d/%d).  You should check with "
+#~ "your BIOS first, as this may not be correct.  You can inform Linux by "
+#~ "adding the parameter %s=%d,%d,%d to the command line.  See the LILO or "
+#~ "GRUB documentation for more information.  If you think Parted's suggested "
+#~ "geometry is correct, you may select Ignore to continue (and fix Linux "
+#~ "later).  Otherwise, select Cancel (and fix Linux and/or the BIOS now)."
+#~ msgstr ""
+#~ "A tabela de partições em %s é inconsistente. Há várias razões para isto "
+#~ "ocorrer. A mais certa seria o Linux detectar a geometria da BIOS para %s "
+#~ "incorretamente. O GNU Parted suspeita que a geometria real deveria ser %d/"
+#~ "%d/%d (e não %d/%d/%d). Deverá vefificar a BIOS primeiro, pois isto pode "
+#~ "não estar correcto. Poderá informar o Linux adicionando o parâmetro %s=%d,"
+#~ "%d,%d na linha de comando. Veja a documentação do LILO ou GRUB para "
+#~ "maiores informações. Se acha que a geometria sugeria pelo Parted é a "
+#~ "correcta, pode selecionar Ignorar para continuar (e corrigir o Linux "
+#~ "depois). De outra maneira, seleccione Cancelar (e corrigir o Linux e/ou a "
+#~ "BIOS agora)."
+
+#~ msgid ""
+#~ "The partition table on %s is inconsistent.  There are many reasons why "
+#~ "this might be the case.  Often, the reason is that Linux detected the "
+#~ "BIOS geometry incorrectly.  However, this does not appear to be the case "
+#~ "here.  It is safe to ignore,but ignoring may cause (fixable) problems "
+#~ "with some boot loaders, and may cause problems with FAT file systems.  "
+#~ "Using LBA is recommended."
+#~ msgstr ""
+#~ "A tabela de partições em %s é inconsistente. Há várias razões para isto "
+#~ "ocorrer. Muitas vezes, o Linux detecta a geometria da BIOS "
+#~ "incorretamente. Porém, isso não parece ser o caso aqui. É seguro ignorar, "
+#~ "mas isso pode causar problemas (solucionáveis) com alguns gestores de "
+#~ "boot."
+
+#~ msgid ""
+#~ "Unable to align partition properly.  This probably means that another "
+#~ "partitioning tool generated an incorrect partition table, because it "
+#~ "didn't have the correct BIOS geometry.  It is safe to ignore,but ignoring "
+#~ "may cause (fixable) problems with some boot loaders."
+#~ msgstr ""
+#~ "Impossível alinhar a partição propriamente. Isso provavelmente significa "
+#~ "que outra ferramenta de particionamento gerou uma tabela de partições "
+#~ "incorreta porque não tinha a geometria na BIOS correta. É seguro ignorar, "
+#~ "mas isto pode causar problemas (solucionáveis) com alguns gestores de "
+#~ "boot."
+
+#~ msgid "GUID Partition Table Header Signature is wrong: "
+#~ msgstr "A GUID no cabeçalho da tabela de partição está incorrecta: "
+
+#~ msgid " should be "
+#~ msgstr " Deveria ser"
+
+#~ msgid "The new partition overlaps with another partition."
+#~ msgstr "A nova partição sobrepõe alguma outra partição"
+
+#~ msgid "Can't set non-Linux partitions as a root device."
+#~ msgstr "Não posso configurar partições não Linux como uma partição root."
+
+#~ msgid "Can't set non-Linux partitions as a swap device."
+#~ msgstr ""
+#~ "Não posso configurar partições não nao sejam Linux como uma partição swap."
+
+#~ msgid "No get_resize_constraint for %s!"
+#~ msgstr "Não há get_resize_constraint para %s!"
+
+#~ msgid "The %s file system code doesn't support %s disk labels."
+#~ msgstr ""
+#~ "O código do sistema de ficheiros %s não suporta rótulos de disco %s."
+
+#~ msgid "Creating new %s disklabels is not implemented yet."
+#~ msgstr "Criação de novos rótulos %s não está implementado ainda."
+
+#~ msgid "The code to write the partition table hasn't been written for %s yet"
+#~ msgstr ""
+#~ "O código para escrever a tabela de partições ainda não foi escrito para "
+#~ "%s."
+
+#~ msgid "Error reading %s (%s) to determine if partition is mounted."
+#~ msgstr "Erro lendo %s (%s) para determinar se a partição está montada."
+
+#~ msgid "Can't grow a partition onto used space."
+#~ msgstr "Não posso aumentar a partição acima de espaço já utilizado."
+
+#~ msgid "Attempt to read sectors %ld-%ld outside of partition on %s"
+#~ msgstr "Tentativa de ler sectores %ld-%ld fora da partição em %s"
+
+#~ msgid ""
+#~ "This ext2 filesystem has a rather strange layout!  Please use dumpe2fs on "
+#~ "this filesystem and send it to <buytenh@gnu.org>. I won't resize it, "
+#~ "sorry."
+#~ msgstr ""
+#~ "Este sistema de ficheiros ext2 tem uma aparência muito estranha! Por "
+#~ "favor use o dumpe2fs neste sistema e envie-o para <buytenh@dsv.nl>. Eu "
+#~ "não vou redimensioná-lo, desculpe."
+
+#~ msgid "Filesystem has incompatible feature enabled"
+#~ msgstr "Sistema de ficheiros tem características incompatíveis"
+
+#~ msgid "Insane!  %d clusters!"
+#~ msgstr "Estranho! %d clusters!"
+
+#~ msgid ""
+#~ "The filesystem is going to be too big for FAT16, so FAT32 will be used.  "
+#~ "This is not compatible with MS-DOS, early versions of MS-Windows 95 and "
+#~ "Windows NT.  If you use these operating systems, then select cancel, and "
+#~ "create a smaller partition.  If you only use Linux, BSD, MS Windows 98 "
+#~ "and/or MS Windows 95 B, then select OK."
+#~ msgstr ""
+#~ "O sistema de ficheiros será muito grande para FAT16, o melhor será usar "
+#~ "FAT32. Isto não é compatível com o MS-DOS, versões antigas do MS-Windows "
+#~ "95 e Windows NT. Se utiliza estes sistemas operativos, selecione "
+#~ "cancelar, e crie uma partição menor. Se utiliza somente Linux, BSD, MS-"
+#~ "Windows 98 e/ou MS-Windows 95 B, então selecione OK."
+
+#~ msgid "Weird: fat_calc_sizes() failed for FAT32!"
+#~ msgstr "Estranho: fat_calc_sizes() falhou para a FAT32!"
+
+#~ msgid ""
+#~ "Would you like to use FAT32 for this filesystem?  It is much more "
+#~ "efficient with your disk space, but is not compatible with early versions "
+#~ "of Windows 95 and Windows NT.  Only select yes if you only use Linux, "
+#~ "BSD, MS Windows 98 and/or MS Windows 95 B."
+#~ msgstr ""
+#~ "Você gostaria de usar a FAT32 para este sistema de ficheiros? É muito "
+#~ "mais eficiente com o espaço em disco, mas não é compatível com versões "
+#~ "antigas do Windows 95 e Windows NT. Seleccione SIM se você só utilizar "
+#~ "Linux, BSD, MS-Windows 98 e/ou MS-Windows 95 B."
+
+#~ msgid ""
+#~ "File system doesn't have expected sizes for Windows to like it.  Number "
+#~ "of clusters is %d (%d expected); size of FATs is %d sectors (%d expected)."
+#~ msgstr ""
+#~ "O sistema de ficheiros não tem o tamanho esperado para que o Windows o "
+#~ "utilize. O tamanho do cluster é %dk (%dk esperado); tamanho da FAT é %d "
+#~ "sectores (%d esperado)."
+
+#~ msgid "File system has an invalid signature for a FAT file systems."
+#~ msgstr "Sistema de ficheiros tem uma assinatura inválida para um FAT."
+
+#~ msgid ""
+#~ "Partition size (%ld sectors) and filesystem size (%ld sectors) do not "
+#~ "match."
+#~ msgstr ""
+#~ "Tamanho da partição (%ld sectores) e tamanho do sistema de ficheiros (%ld "
+#~ "sectores) não coincidem."
+
+#~ msgid ""
+#~ "The FATs aren't big enough to describe all clusters!  Each FAT is %d "
+#~ "sectors.  There are %d clusters, which would require each FAT to be %d "
+#~ "sectors.  This is REALLY weird.  You might want to write us an email: bug-"
+#~ "parted@gnu.org"
+#~ msgstr ""
+#~ "As FATs não são grandes o suficiente para descrever todos os clusters! "
+#~ "Cada FAT tem %d sectores. Existem %d clusters, os quais requerem que cada "
+#~ "FAT tenha %d setores. Isto é REALMENTE estranho. Você pode querer "
+#~ "escrever um email: bug-parted@gnu.org"
+
+#~ msgid ""
+#~ "This swap partition is not compatible with Linux version 2.1.117 or "
+#~ "earlier.  Use a smaller partition (maximum size 128mb) if you want to use "
+#~ "old versions of Linux."
+#~ msgstr ""
+#~ "Esta partição swap não é compatível com o Linux versão 2.1.117 ou "
+#~ "anterior. Utilize uma partição menor (máximo de 128mb) se quiser utilizar "
+#~ "versões antigas do Linux."
+
+#~ msgid "Linux-swap partitions can not be hidden on msdos disk labels."
+#~ msgstr ""
+#~ "Partições Linux-swap não podem ser escondidas em rótulos de disco msdos."
+
+#~ msgid "Linux-swap partitions can not be bootable on pc98 disk labels."
+#~ msgstr ""
+#~ "Partições Linux-swap não podem ser inicializáveis em rótulos de disco "
+#~ "pc98."
+
+#~ msgid "HFS partitions can't be hidden on msdos disk labels."
+#~ msgstr "Partições HFS não podem ser escondidas em rótulos de disco msdos."
+
+#~ msgid "JFS partitions can't be hidden on msdos disk labels."
+#~ msgstr "Partições JHS não podem ser escondidas em rótulos de disco msdos."
+
+#~ msgid "Reiserfs partitions can't be hidden on msdos disk labels."
+#~ msgstr ""
+#~ "Partições Reiserfs não podem ser escondidas em rótulos de disco msdos."
+
+#~ msgid "Reiserfs partitions must be bootable on pc98 disk labels."
+#~ msgstr ""
+#~ "Partições Reiserfs não podem ser inicializáveis em rótulos de disco pc98."
+
+#~ msgid "XFS partitions can't be hidden on msdos disk labels."
+#~ msgstr "Partições XFS não podem ser escondidas em rótulos de disco msdos."
+
+#~ msgid "where necessary, prompts for user intervention"
+#~ msgstr "quando necessário, pede intervenção do utilizador"
+
+#~ msgid "START and END are in megabytes\n"
+#~ msgstr "INICIO e FIM são em megabytes\n"
+
+#~ msgid ""
+#~ "You requested to move the partition to %.3f-%.3fMb. The closest Parted "
+#~ "can manage is %.3f-%.3fMb."
+#~ msgstr ""
+#~ "Pretende mover a partiçao para %.3f-%.3fMb. O mais perto que se consegue "
+#~ "será %3f-%.3fMb"
+
+#~ msgid "Disk geometry for %s: 0.000-%.3f megabytes\n"
+#~ msgstr "Geometria de disco para %s: 0.000-%.3f megabytes\n"
+
+#~ msgid "Minor    Start       End     "
+#~ msgstr "Minor    Início      Fim     "
+
+#~ msgid "Type      "
+#~ msgstr "Tipo      "
+
+#~ msgid "Name                  "
+#~ msgstr "Nome                  "
+
+#~ msgid ""
+#~ "You requested to resize the partition to %.3f-%.3fMb. The closest Parted "
+#~ "can manage is %.3f-%.3fMb."
+#~ msgstr ""
+#~ "Pretende redimensionar a partiçao para %.3f-%.3fMb. O mais perto que se "
+#~ "consegue será %3f-%.3fMb"
+
+#~ msgid ""
+#~ "You found a bug in GNU Parted.  Please email a bug report to bug-"
+#~ "parted@gnu.org containing the version (%s), and the following message:\n"
+#~ msgstr ""
+#~ "Você encontrou um bug no GNU parted. Por favor envie um relatório para "
+#~ "bug-parted@gnu.org\n"
+#~ "contendo a versão (%s), e a mensagem abaixo:\n"
+
+#~ msgid ""
+#~ "  You have Windows FAT partition(s) that are not using LBA.  If your BIOS "
+#~ "supports LBA, then you should switch to LBA by setting the LBA flag on "
+#~ "all FAT partitions.  Otherwise, make sure the operating system and the "
+#~ "BIOS have the same geometry before resizing any FAT partitions."
+#~ msgstr ""
+#~ "Você tem partiçoes FAT e nao esta a usar LBA. Se a sua BIOS suporta LBA "
+#~ "entao deverá mudar todas as partiçoes FAT para essa opçao. Caso "
+#~ "contrário, certifique-se que o sistema operativo e a BIOS têm a mesma "
+#~ "geometria antes de fazer o redimensionamento de qualquer partiçao FAT"
+
+#~ msgid ""
+#~ "The operating system thinks the geometry on %s is %d/%d/%d.  Therefore, "
+#~ "cylinder 1024 ends at %.3fM.%s"
+#~ msgstr ""
+#~ "O sistema Operativo acha que a geometria de %s é %d/%d/%d. Porém, o "
+#~ "cilindro 1024 termina em %.3fM%s. Você devia verificar se isto está "
+#~ "correto com sua \"\"BIOS, antes de usar este programa."
+
+#~ msgid "The operating system thinks the geometry on %s is %d/%d/%d.%s"
+#~ msgstr "O Sistema Operativo detectou que a gemotria em %s é %d/%d/%d.%s"
diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo
new file mode 100644 (file)
index 0000000..6e5a864
Binary files /dev/null and b/po/pt_BR.gmo differ
diff --git a/po/pt_BR.po b/po/pt_BR.po
new file mode 100644 (file)
index 0000000..9d98b45
--- /dev/null
@@ -0,0 +1,3249 @@
+# Brazilian portuguese messages for GNU parted.
+# Copyright (C) 1999 Free Software Foundation, Inc.
+# Eliphas Levy Theodoro <eliphas@conectiva.com>, 1999.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU parted 1.4.21\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2011-05-30 13:45+0200\n"
+"PO-Revision-Date: 2001-11-21 09:10-0300\n"
+"Last-Translator: Eliphas Levy Theodoro <eliphas@f2s.com>\n"
+"Language-Team: Brazilian Portuguese <ldp-br@bazar.conectiva.com.br>\n"
+"Language: pt_BR\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8-bit\n"
+
+#: lib/argmatch.c:133
+#, fuzzy, c-format
+msgid "invalid argument %s for %s"
+msgstr "Tabela de partições inválida em %s"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr ""
+
+#: lib/argmatch.c:153
+#, fuzzy, c-format
+msgid "Valid arguments are:"
+msgstr "Tabela de partições inválida em %s"
+
+#: lib/closeout.c:112 libparted/labels/fdasd.c:107
+msgid "write error"
+msgstr ""
+
+#: lib/error.c:181
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Tipo de sistema de arquivos desconhecido."
+
+#: lib/getopt.c:548 lib/getopt.c:577
+#, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
+msgstr ""
+
+#: lib/getopt.c:625 lib/getopt.c:629
+#, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:638 lib/getopt.c:643
+#, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:686 lib/getopt.c:705
+#, c-format
+msgid "%s: option '--%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:743 lib/getopt.c:746
+#, fuzzy, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "Impossível abrir %s - rótulo de disco desconhecido."
+
+#: lib/getopt.c:754 lib/getopt.c:757
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "Impossível abrir %s - rótulo de disco desconhecido."
+
+#: lib/getopt.c:806 lib/getopt.c:809
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr ""
+
+#: lib/getopt.c:859 lib/getopt.c:876 lib/getopt.c:1084 lib/getopt.c:1102
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr ""
+
+#: lib/getopt.c:932 lib/getopt.c:948
+#, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:972 lib/getopt.c:990
+#, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:1011 lib/getopt.c:1029
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr ""
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:271
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:272
+msgid "'"
+msgstr ""
+
+#: lib/regcomp.c:133
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:136
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:139
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:142
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:145
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:148
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:151
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:154
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:157
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:160
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:163
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:166
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:169
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:172
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:175
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:178
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:181
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:702
+msgid "No previous regular expression"
+msgstr ""
+
+#. TRANSLATORS: A regular expression testing for an affirmative answer
+#. (english: "yes").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^yesexpr='
+#: lib/rpmatch.c:147
+msgid "^[yY]"
+msgstr ""
+
+#. TRANSLATORS: A regular expression testing for a negative answer
+#. (english: "no").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^noexpr='
+#: lib/rpmatch.c:160
+msgid "^[nN]"
+msgstr ""
+
+#: lib/version-etc.c:74
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr ""
+
+#: lib/version-etc.c:77
+#, c-format
+msgid "Packaged by %s\n"
+msgstr ""
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale.  Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:84
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:86
+msgid ""
+"\n"
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:102
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:106
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:110
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:131
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:139
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:147
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:156
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:167
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package.  Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:245
+#, c-format
+msgid ""
+"\n"
+"Report bugs to: %s\n"
+msgstr ""
+
+#: lib/version-etc.c:247
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr ""
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr ""
+
+#: lib/version-etc.c:253
+#, c-format
+msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
+msgstr ""
+
+#: lib/version-etc.c:256
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr ""
+
+#: lib/xstrtol-error.c:63
+#, fuzzy, c-format
+msgid "invalid %s%s argument `%s'"
+msgstr "Tabela de partições inválida em %s"
+
+#: lib/xstrtol-error.c:68
+#, fuzzy, c-format
+msgid "invalid suffix in %s%s argument `%s'"
+msgstr "Tabela de partições inválida em %s"
+
+#: lib/xstrtol-error.c:72
+#, fuzzy, c-format
+msgid "%s%s argument `%s' too large"
+msgstr "Tabela de partições inválida em %s"
+
+#: libparted/arch/beos.c:245
+msgid "Disk Image"
+msgstr ""
+
+#: libparted/arch/beos.c:346 libparted/arch/gnu.c:277
+#: libparted/arch/linux.c:1545
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "Erro abrindo %s: %s"
+
+#: libparted/arch/beos.c:357 libparted/arch/gnu.c:287
+#: libparted/arch/linux.c:1556
+#, c-format
+msgid "Unable to open %s read-write (%s).  %s has been opened read-only."
+msgstr ""
+"Não posso abrir %s para leitura-gravação (%s). %s foi aberto somente-leitura."
+
+#: libparted/arch/beos.c:419 libparted/arch/linux.c:1714
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s durante procura para leitura em %s"
+
+#: libparted/arch/beos.c:452 libparted/arch/gnu.c:465 libparted/arch/gnu.c:564
+#: libparted/arch/gnu.c:692 libparted/arch/linux.c:1674
+#: libparted/arch/linux.c:1755
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s durante leitura em %s"
+
+#: libparted/arch/beos.c:488 libparted/arch/gnu.c:525
+#: libparted/arch/linux.c:1831
+#, c-format
+msgid "Can't write to %s, because it is opened read-only."
+msgstr "Não posso gravar em %s, pois ela foi aberta como somente-leitura."
+
+#: libparted/arch/beos.c:504 libparted/arch/linux.c:1856
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s durante procura para escrita em %s"
+
+#: libparted/arch/beos.c:541 libparted/arch/gnu.c:601 libparted/arch/gnu.c:646
+#: libparted/arch/gnu.c:723 libparted/arch/linux.c:1804
+#: libparted/arch/linux.c:1898 libparted/arch/linux.c:1970
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s durante escrita em %s"
+
+#: partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr ""
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the operating system about partition table changes.\n"
+"\n"
+"  -d, --dry-run    do not actually inform the operating system\n"
+"  -s, --summary    print a summary of contents\n"
+"  -h, --help       display this help and exit\n"
+"  -v, --version    output version information and exit\n"
+msgstr ""
+
+#: partprobe/partprobe.c:150
+msgid ""
+"\n"
+"When no DEVICE is given, probe all partitions.\n"
+msgstr ""
+
+#: partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: libparted/arch/gnu.c:110
+#, c-format
+msgid "Unable to open %s."
+msgstr ""
+
+#: libparted/arch/gnu.c:130
+#, fuzzy
+msgid "Unable to probe store."
+msgstr "Impossível alinhar a partição."
+
+#: libparted/arch/gnu.c:368
+#, fuzzy
+msgid ""
+"The partition table cannot be re-read.  This means you need to reboot before "
+"mounting any modified partitions.  You also need to reinstall your boot "
+"loader before you reboot (which may require mounting modified partitions).  "
+"It is impossible do both things!  So you'll need to boot off a rescue disk, "
+"and reinstall your boot loader from the rescue disk.  Read section 4 of the "
+"Parted User documentation for more information."
+msgstr ""
+"O kernel não pôde reler sua tabela de partições, então você precisa "
+"reiniciar antes de montar qualquer partição modificada. Voce pode também "
+"precisar reinstalar seu gerenciador de boot antes de reinicializar (o que "
+"pode requerer a montagem das partições modificadas). É impossível fazer as "
+"duas coisas! Então você irá precisar inicializar por um disco de resgate, e "
+"reinstalar seu gerenciador de boot desde este disco. Leia a seção 4 da "
+"documentação do usuário do Parted para mais informações."
+
+#: libparted/arch/gnu.c:385
+#, fuzzy, c-format
+msgid ""
+"The partition table on %s cannot be re-read (%s).  This means the Hurd knows "
+"nothing about any modifications you made.  You should reboot your computer "
+"before doing anything with %s."
+msgstr ""
+"O kernel não conseguiu reler a tabela de partições de %s (%s). Isto "
+"significa que o Linux não sabe nada sobre as modificações que você fez. Você "
+"deve reinicializar seu computador antes de fazer qualquer uso de %s."
+
+#: libparted/arch/gnu.c:396 parted/parted.c:1967
+msgid ""
+"You should reinstall your boot loader before rebooting.  Read section 4 of "
+"the Parted User documentation for more information."
+msgstr ""
+"Você deve reinstalar seu gerenciador de boot antes de reinicializar. Leia a "
+"seção 4 da documentação do usuário do Parted para mais informações."
+
+#: libparted/arch/gnu.c:788
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr ""
+
+#: libparted/arch/linux.c:520
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "Não foi possível obter status do dispositivo %s - %s."
+
+#: libparted/arch/linux.c:577
+#, fuzzy, c-format
+msgid "Unable to determine the dm type of %s."
+msgstr "Impossível determinar tamanho de %s (%s)"
+
+#: libparted/arch/linux.c:669
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+
+#: libparted/arch/linux.c:690
+#, c-format
+msgid ""
+"Could not determine physical sector size for %s.\n"
+"Using the logical sector size (%lld)."
+msgstr ""
+
+#: libparted/arch/linux.c:746
+#, fuzzy, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "Impossível determinar tamanho de %s (%s)"
+
+#: libparted/arch/linux.c:832
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "Não foi possível obter a identificação do dispositivo %s - %s"
+
+#: libparted/arch/linux.c:841
+msgid "Generic IDE"
+msgstr ""
+
+#: libparted/arch/linux.c:862
+#, c-format
+msgid ""
+"Device %s has multiple (%d) logical sectors per physical sector.\n"
+"GNU Parted supports this EXPERIMENTALLY for some special disk label/file "
+"system combinations, e.g. GPT and ext2/3.\n"
+"Please consult the web site for up-to-date information."
+msgstr ""
+
+#: libparted/arch/linux.c:1039
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "Erro inicializando dispositivo SCSI %s - %s"
+
+#: libparted/arch/linux.c:1103
+#, c-format
+msgid ""
+"The device %s is so small that it cannot possibly store a file system or "
+"partition table.  Perhaps you selected the wrong device?"
+msgstr ""
+
+#: libparted/arch/linux.c:1216
+#, fuzzy, c-format
+msgid ""
+"Unable to determine geometry of file/device %s.  You should not use Parted "
+"unless you REALLY know what you're doing!"
+msgstr ""
+"Impossível determinar a geometria do arquivo/dispositivo. Você não deveria "
+"utilizar o Parted a não ser que você REALMENTE saiba o que está fazendo!"
+
+#: libparted/arch/linux.c:1276
+msgid "Generic SD/MMC Storage Card"
+msgstr ""
+
+#: libparted/arch/linux.c:1329
+msgid "DAC960 RAID controller"
+msgstr "Controlador RAID DAC960"
+
+#: libparted/arch/linux.c:1334
+msgid "Promise SX8 SATA Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1339
+msgid "ATA over Ethernet Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1345
+msgid "IBM S390 DASD drive"
+msgstr ""
+
+#: libparted/arch/linux.c:1351
+msgid "IBM iSeries Virtual DASD"
+msgstr ""
+
+#: libparted/arch/linux.c:1356
+msgid "Compaq Smart Array"
+msgstr "Compaq Smart Array"
+
+#: libparted/arch/linux.c:1361
+msgid "ATARAID Controller"
+msgstr "Controlador ATARAID"
+
+#: libparted/arch/linux.c:1366
+msgid "I2O Controller"
+msgstr "Controlador I2O"
+
+#: libparted/arch/linux.c:1371
+msgid "User-Mode Linux UBD"
+msgstr ""
+
+#: libparted/arch/linux.c:1384
+#, c-format
+msgid "Linux device-mapper (%s)"
+msgstr ""
+
+#: libparted/arch/linux.c:1395
+msgid "Xen Virtual Block Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1400
+msgid "Unknown"
+msgstr "Desconhecido"
+
+#: libparted/arch/linux.c:1409
+msgid "Virtio Block Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1414
+msgid "Linux Software RAID Array"
+msgstr ""
+
+#: libparted/arch/linux.c:1421
+msgid "ped_device_new()  Unsupported device type"
+msgstr "ped_device_new()  Tipo de dispositivo não suportado"
+
+#: libparted/arch/linux.c:1518 libparted/arch/linux.c:1590
+#, fuzzy, c-format
+msgid "Error fsyncing/closing %s: %s"
+msgstr "Erro abrindo %s: %s"
+
+#: libparted/arch/linux.c:1754
+#, c-format
+msgid "end of file while reading %s"
+msgstr ""
+
+#: libparted/arch/linux.c:2390
+#, fuzzy, c-format
+msgid ""
+"Error informing the kernel about modifications to partition %s -- %s.  This "
+"means Linux won't know about any changes you made to %s until you reboot -- "
+"so you shouldn't mount it or use it in any way before rebooting."
+msgstr ""
+"O kernel não conseguiu reler a tabela de partições de %s (%s). Isto "
+"significa que o Linux não sabe nada sobre as modificações que você fez. Você "
+"deve reinicializar seu computador antes de fazer qualquer uso de %s."
+
+#: libparted/arch/linux.c:2528
+#, fuzzy, c-format
+msgid "Unable to determine the size and length of %s."
+msgstr "Impossível determinar tamanho de %s (%s)"
+
+#: libparted/arch/linux.c:2553
+#, fuzzy, c-format
+msgid "Failed to add partition %d (%s)"
+msgstr "Impossível determinar se a partição está montada."
+
+#: libparted/arch/linux.c:2580
+#, c-format
+msgid ""
+"Partition(s) %s on %s have been written, but we have been unable to inform "
+"the kernel of the change, probably because it/they are in use.  As a result, "
+"the old partition(s) will remain in use.  You should reboot now before "
+"making further changes."
+msgstr ""
+
+#: libparted/arch/linux.c:2706
+#, fuzzy, c-format
+msgid ""
+"parted was unable to re-read the partition table on %s (%s).  This means "
+"Linux won't know anything about the modifications you made. "
+msgstr ""
+"O kernel não conseguiu reler a tabela de partições de %s (%s). Isto "
+"significa que o Linux não sabe nada sobre as modificações que você fez. Você "
+"deve reinicializar seu computador antes de fazer qualquer uso de %s."
+
+#: libparted/cs/geom.c:161
+#, fuzzy, c-format
+msgid "Can't have the end before the start! (start sector=%jd length=%jd)"
+msgstr "Não pode ter fim da partição antes do início."
+
+#: libparted/cs/geom.c:169
+msgid "Can't have a partition outside the disk!"
+msgstr "Não pode ter uma partição para fora do disco!."
+
+#: libparted/cs/geom.c:384
+#, fuzzy, c-format
+msgid "Attempt to write sectors %ld-%ld outside of partition on %s."
+msgstr "Tentativa de escrever setores %ld-%ld fora da partição em %s"
+
+#: libparted/cs/geom.c:424
+msgid "checking for bad blocks"
+msgstr ""
+
+#: libparted/debug.c:96
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:109
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr ""
+
+#: libparted/disk.c:192
+#, fuzzy, c-format
+msgid "%s: unrecognised disk label"
+msgstr "Impossível abrir %s - rótulo de disco desconhecido."
+
+#: libparted/disk.c:484
+#, fuzzy, c-format
+msgid ""
+"This libparted doesn't have write support for %s.  Perhaps it was compiled "
+"read-only."
+msgstr "Não posso gravar em %s, pois ela foi aberta como somente-leitura."
+
+#: libparted/disk.c:629
+#, fuzzy, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "A partição é muito pequena para um sistema de arquivos FAT"
+
+#: libparted/disk.c:838
+msgid "cylinder_alignment"
+msgstr ""
+
+#: libparted/disk.c:844
+#, fuzzy, c-format
+msgid "Unknown disk flag, %d."
+msgstr "Sinalizador de partição desconhecido, %d."
+
+#: libparted/disk.c:1283
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "Rótulos de disco %s não suportam partições extendidas."
+
+#: libparted/disk.c:1858
+#, c-format
+msgid "%s disk labels don't support logical or extended partitions."
+msgstr "Rótulos de disco %s não suportam partições lógicas ou extendidas."
+
+#: libparted/disk.c:1871
+#, fuzzy
+msgid "Too many primary partitions."
+msgstr "Muitas páginas inválidas."
+
+#: libparted/disk.c:1880
+#, c-format
+msgid ""
+"Can't add a logical partition to %s, because there is no extended partition."
+msgstr ""
+"Não posso adicionar uma partição lógica em %s, pois não há uma partição "
+"extendida."
+
+#: libparted/disk.c:1904
+#, fuzzy, c-format
+msgid "Can't have more than one extended partition on %s."
+msgstr "Não se pode haver mais de uma partição extendida em %s"
+
+#: libparted/disk.c:1914
+#, fuzzy
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr ""
+"Não posso adicionar uma partição lógica fora da partição extendida em %s."
+
+#: libparted/disk.c:1939
+#, fuzzy, c-format
+msgid "Can't have a logical partition outside of the extended partition on %s."
+msgstr ""
+"Não posso adicionar uma partição lógica fora da partição extendida em %s."
+
+#: libparted/disk.c:1949 libparted/disk.c:2008 libparted/disk.c:2186
+#, fuzzy
+msgid "Can't have overlapping partitions."
+msgstr "Não posso copiar em uma partição sobreposta."
+
+#: libparted/disk.c:1957
+#, fuzzy
+msgid "Can't have a primary partition inside an extended partition."
+msgstr "Não posso adicionar uma partição primária dentro de uma extendida."
+
+#: libparted/disk.c:2387
+msgid "metadata"
+msgstr "metadado"
+
+#: libparted/disk.c:2389
+msgid "free"
+msgstr "livre"
+
+#: libparted/disk.c:2391 parted/ui.c:1194 parted/ui.c:1222
+msgid "extended"
+msgstr "extendida"
+
+#: libparted/disk.c:2393 parted/ui.c:1198 parted/ui.c:1226
+msgid "logical"
+msgstr "lógica"
+
+#: libparted/disk.c:2395 parted/ui.c:1190 parted/ui.c:1218
+msgid "primary"
+msgstr "primária"
+
+#: libparted/disk.c:2411
+msgid "boot"
+msgstr "boot"
+
+#: libparted/disk.c:2413
+msgid "bios_grub"
+msgstr ""
+
+#: libparted/disk.c:2415
+msgid "root"
+msgstr "root"
+
+#: libparted/disk.c:2417
+msgid "swap"
+msgstr "swap"
+
+#: libparted/disk.c:2419
+msgid "hidden"
+msgstr "escondida"
+
+#: libparted/disk.c:2421
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2423
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2425
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2427
+msgid "hp-service"
+msgstr ""
+
+#: libparted/disk.c:2429
+msgid "palo"
+msgstr ""
+
+#: libparted/disk.c:2431
+msgid "prep"
+msgstr ""
+
+#: libparted/disk.c:2433
+msgid "msftres"
+msgstr ""
+
+#: libparted/disk.c:2435
+msgid "atvrecv"
+msgstr ""
+
+#: libparted/disk.c:2437
+msgid "diag"
+msgstr ""
+
+#: libparted/disk.c:2439
+msgid "legacy_boot"
+msgstr ""
+
+#: libparted/disk.c:2445
+#, fuzzy, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Sinalizador de partição desconhecido, %d."
+
+#: libparted/exception.c:77
+msgid "Information"
+msgstr "Informação"
+
+#: libparted/exception.c:78
+msgid "Warning"
+msgstr "Aviso"
+
+#: libparted/exception.c:79
+msgid "Error"
+msgstr "Erro"
+
+#: libparted/exception.c:80
+msgid "Fatal"
+msgstr "Fatal"
+
+#: libparted/exception.c:81
+msgid "Bug"
+msgstr "Bug"
+
+#: libparted/exception.c:82
+msgid "No Implementation"
+msgstr "Sem Implementação"
+
+#: libparted/exception.c:86
+msgid "Fix"
+msgstr "Arrumar"
+
+#: libparted/exception.c:87
+msgid "Yes"
+msgstr "Sim"
+
+#: libparted/exception.c:88
+msgid "No"
+msgstr "Não"
+
+#: libparted/exception.c:89
+msgid "OK"
+msgstr "OK"
+
+#: libparted/exception.c:90
+msgid "Retry"
+msgstr "Repetir"
+
+#: libparted/exception.c:91
+msgid "Ignore"
+msgstr "Ignorar"
+
+#: libparted/exception.c:92
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: libparted/exception.c:132
+#, fuzzy, c-format
+msgid ""
+"A bug has been detected in GNU Parted.  Refer to the web site of parted "
+"http://www.gnu.org/software/parted/parted.html for more information of what "
+"could be useful for bug submitting!  Please email a bug report to %s "
+"containing at least the version (%s) and the following message:  "
+msgstr ""
+"Um bug foi detectado no GNU parted. Por favor, envie um relatório de bugpara "
+"bug-parted@gnu.org contendo a versão (%s) e a mensagem abaixo:"
+
+#: libparted/labels/aix.c:103
+#, fuzzy
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr ""
+"O suporte para criar sistema de arquivos %s não foi implementado ainda."
+
+#: libparted/labels/aix.c:114
+#, fuzzy
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr ""
+"O suporte para criar sistema de arquivos %s não foi implementado ainda."
+
+#: libparted/labels/aix.c:127
+#, fuzzy
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr ""
+"O suporte para criar sistema de arquivos %s não foi implementado ainda."
+
+#: libparted/labels/aix.c:137
+#, fuzzy
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr ""
+"O suporte para criar sistema de arquivos %s não foi implementado ainda."
+
+#: libparted/labels/aix.c:155
+#, fuzzy
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr ""
+"O suporte para criar sistema de arquivos %s não foi implementado ainda."
+
+#: libparted/labels/aix.c:165
+#, fuzzy
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr ""
+"O suporte para criar sistema de arquivos %s não foi implementado ainda."
+
+#: libparted/labels/bsd.c:571 libparted/labels/dasd.c:833
+#: libparted/labels/dos.c:2176 libparted/labels/dvh.c:787
+#: libparted/labels/gpt.c:1782 libparted/labels/loop.c:247
+#: libparted/labels/mac.c:1426 libparted/labels/pc98.c:748
+#: libparted/labels/rdb.c:1052 libparted/labels/sun.c:780
+#, fuzzy
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "Impossível alinhar a partição."
+
+#: libparted/labels/bsd.c:596
+#, fuzzy
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "Impossível alocar um slot de rótulo de disco bsd"
+
+#: libparted/labels/dasd.c:859
+#, fuzzy
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "Impossível alocar um slot de rótulo de disco bsd"
+
+#: libparted/labels/dos.c:966
+#, fuzzy, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr "Tabela de partições inválida em %s - assinatura errada %x"
+
+#: libparted/labels/dos.c:994
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "Tabela de partições inválida - partição recursiva em %s."
+
+#: libparted/labels/dos.c:1504
+#, fuzzy
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr "Partições ext2 não podem ser escondidas em rótulos de disco msdos."
+
+#: libparted/labels/dos.c:2158
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+
+#: libparted/labels/dvh.c:200
+#, fuzzy, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr ""
+"Não posso redimensionar uma partição extendida, sem excluir uma partição "
+"lógica."
+
+#: libparted/labels/dvh.c:326
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr ""
+
+#: libparted/labels/dvh.c:631
+#, fuzzy
+msgid "Only primary partitions can be root partitions."
+msgstr "Não posso adicionar uma partição primária dentro de uma extendida."
+
+#: libparted/labels/dvh.c:645
+#, fuzzy
+msgid "Only primary partitions can be swap partitions."
+msgstr "Não posso adicionar uma partição primária dentro de uma extendida."
+
+#: libparted/labels/dvh.c:659
+msgid "Only logical partitions can be a boot file."
+msgstr ""
+
+#: libparted/labels/dvh.c:736
+#, c-format
+msgid ""
+"failed to set dvh partition name to %s:\n"
+"Only logical partitions (boot files) have a name."
+msgstr ""
+
+#: libparted/labels/dvh.c:829
+#, fuzzy
+msgid "Too many primary partitions"
+msgstr "Muitas páginas inválidas."
+
+#: libparted/labels/fdasd.c:98
+msgid "open error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:101
+msgid "seek error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:104
+msgid "read error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:110
+msgid "ioctl() error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:114
+msgid "API version mismatch"
+msgstr ""
+
+#: libparted/labels/fdasd.c:118
+#, fuzzy
+msgid "Unsupported disk type"
+msgstr "ped_device_new()  Tipo de dispositivo não suportado"
+
+#: libparted/labels/fdasd.c:122
+msgid "Unsupported disk format"
+msgstr ""
+
+#: libparted/labels/fdasd.c:126
+msgid "Disk is in use"
+msgstr ""
+
+#: libparted/labels/fdasd.c:130
+msgid "Syntax error in config file"
+msgstr ""
+
+#: libparted/labels/fdasd.c:134
+msgid "Volume label is corrupted"
+msgstr ""
+
+#: libparted/labels/fdasd.c:138
+msgid "A data set name is corrupted"
+msgstr ""
+
+#: libparted/labels/fdasd.c:142
+msgid "Memory allocation failed"
+msgstr ""
+
+#: libparted/labels/fdasd.c:146
+msgid "Device verification failed"
+msgstr ""
+
+#: libparted/labels/fdasd.c:147
+msgid "The specified device is not a valid DASD device"
+msgstr ""
+
+#: libparted/labels/fdasd.c:150 libparted/labels/vtoc.c:179
+#, fuzzy
+msgid "Fatal error"
+msgstr "Fatal"
+
+#: libparted/labels/fdasd.c:226
+msgid "No room for volume label."
+msgstr ""
+
+#: libparted/labels/fdasd.c:234
+#, fuzzy
+msgid "No room for partition info."
+msgstr "Nenhum mapa de partições válido foi encontrado."
+
+#: libparted/labels/fdasd.c:709
+msgid "Invalid VTOC."
+msgstr ""
+
+#: libparted/labels/fdasd.c:766
+msgid "Could not retrieve API version."
+msgstr ""
+
+#: libparted/labels/fdasd.c:769
+#, c-format
+msgid ""
+"The current API version '%d' doesn't match dasd driver API version '%d'!"
+msgstr ""
+
+#: libparted/labels/fdasd.c:806
+#, fuzzy
+msgid "Could not retrieve disk geometry information."
+msgstr "Não foi possível ler a geometria de %s - %s"
+
+#: libparted/labels/fdasd.c:810
+msgid "Could not retrieve blocksize information."
+msgstr ""
+
+#: libparted/labels/fdasd.c:815
+msgid "Could not retrieve disk information."
+msgstr ""
+
+#: libparted/labels/gpt.c:493
+#, c-format
+msgid ""
+"%s contains GPT signatures, indicating that it has a GPT table.  However, it "
+"does not have a valid fake msdos partition table, as it should.  Perhaps it "
+"was corrupted -- possibly by a program that doesn't understand GPT partition "
+"tables.  Or perhaps you deleted the GPT table, and are now using an msdos "
+"partition table.  Is this a GPT partition table?"
+msgstr ""
+
+#: libparted/labels/gpt.c:693
+#, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise.  Please report this!"
+msgstr ""
+
+#: libparted/labels/gpt.c:740
+#, c-format
+msgid ""
+"Not all of the space available to %s appears to be used, you can fix the GPT "
+"to use all of the space (an extra %llu blocks) or continue with the current "
+"setting? "
+msgstr ""
+
+#: libparted/labels/gpt.c:952
+msgid ""
+"The backup GPT table is not at the end of the disk, as it should be.  This "
+"might mean that another operating system believes the disk is smaller.  Fix, "
+"by moving the backup to the end (and removing the old backup)?"
+msgstr ""
+
+#: libparted/labels/gpt.c:976
+msgid ""
+"Both the primary and backup GPT tables are corrupt.  Try making a fresh "
+"table, and using Parted's rescue feature to recover partitions."
+msgstr ""
+
+#: libparted/labels/gpt.c:987
+msgid ""
+"The backup GPT table is corrupt, but the primary appears OK, so that will be "
+"used."
+msgstr ""
+
+#: libparted/labels/gpt.c:999
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr ""
+
+#: libparted/labels/gpt.c:1023
+msgid "primary partition table array CRC mismatch"
+msgstr ""
+
+#: libparted/labels/mac.c:184
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Assinatura inválida %x para rótulos de disco Mac."
+
+#: libparted/labels/mac.c:231
+msgid "Partition map has no partition map entry!"
+msgstr "Mapa de partições não tem nenhuma entrada!"
+
+#: libparted/labels/mac.c:279
+#, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr "%s é muito pequeno para um rótulo de disco Mac!"
+
+#: libparted/labels/mac.c:508
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "A partição %d tem uma assinatura inválida %x."
+
+#: libparted/labels/mac.c:526
+#, c-format
+msgid "Partition %d has an invalid length of 0 bytes!"
+msgstr "A partição %d tem um tamanho inválido de 0 bytes!"
+
+#: libparted/labels/mac.c:557
+#, fuzzy
+msgid "The data region doesn't start at the start of the partition."
+msgstr "A região de dados não começa no início da partição"
+
+#: libparted/labels/mac.c:574
+#, fuzzy
+msgid "The boot region doesn't start at the start of the partition."
+msgstr "A região de inicialização não começa no início da partição"
+
+#: libparted/labels/mac.c:588
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr "A região de inicialização da partição não a ocupa inteiramente."
+
+#: libparted/labels/mac.c:599
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr "A região de dados da partição não a ocupa inteiramente."
+
+#: libparted/labels/mac.c:652
+#, c-format
+msgid ""
+"Weird block size on device descriptor: %d bytes is not divisible by 512."
+msgstr ""
+"tamanho de bloco estranho no descritor de dispositivo: %d bytes não "
+"sãodivisíveis por 512."
+
+#: libparted/labels/mac.c:665
+#, c-format
+msgid ""
+"The driver descriptor says the physical block size is %d bytes, but Linux "
+"says it is %d bytes."
+msgstr ""
+"O descritor do driver informa que o tamanho físico de bloco é %d bytes, mas "
+"o Linux informa que é %d bytes."
+
+#: libparted/labels/mac.c:719
+msgid "No valid partition map found."
+msgstr "Nenhum mapa de partições válido foi encontrado."
+
+#: libparted/labels/mac.c:780
+#, fuzzy, c-format
+msgid ""
+"Conflicting partition map entry sizes!  Entry 1 says it is %d, but entry %d "
+"says it is %d!"
+msgstr ""
+"Tamanhos de mapa de partição conflitantes! Entrada 1 informa que é %d, mas "
+"entrada %d informa que é %d!"
+
+#: libparted/labels/mac.c:811
+#, fuzzy
+msgid "Weird!  There are 2 partitions map entries!"
+msgstr "Estranho - 2 entradas no mapa de partição"
+
+#: libparted/labels/mac.c:1357
+msgid ""
+"Changing the name of a root or swap partition will prevent Linux from "
+"recognising it as such."
+msgstr ""
+"Mudar o nome de uma partição root ou swap irá impedir o Linux de reconhecê-"
+"la como tal."
+
+#: libparted/labels/mac.c:1461
+#, fuzzy
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr ""
+"Não posso adicionar outra partição - o mapa de partições é muito pequeno!"
+
+#: libparted/labels/pc98.c:331
+#, fuzzy, c-format
+msgid "Invalid partition table on %s."
+msgstr "Tabela de partições inválida em %s"
+
+#: libparted/labels/pc98.c:384 libparted/labels/pc98.c:462
+#, fuzzy, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries.  This is still "
+"unsupported."
+msgstr ""
+"A partição %d não está alinhada ao limite do cilindro. Preciso adicionar "
+"suporte para isso."
+
+#: libparted/labels/pc98.c:780
+msgid "Can't add another partition."
+msgstr "Não posso adicionar outra partição."
+
+#: libparted/labels/pt-tools.c:125
+#, c-format
+msgid ""
+"partition length of %jd sectors exceeds the %s-partition-table-imposed "
+"maximum of %jd"
+msgstr ""
+
+#: libparted/labels/pt-tools.c:138
+#, c-format
+msgid ""
+"starting sector number, %jd exceeds the %s-partition-table-imposed maximum "
+"of %jd"
+msgstr ""
+
+#: libparted/labels/rdb.c:169
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:484
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr ""
+
+#: libparted/labels/rdb.c:573
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr ""
+
+#: libparted/labels/rdb.c:592
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:691
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:699
+#, fuzzy, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr "Impossível alinhar a partição."
+
+#: libparted/labels/rdb.c:707
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:715
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:742
+#, fuzzy, c-format
+msgid "Failed to write partition block at %d."
+msgstr "Impossível determinar se a partição está montada."
+
+#: libparted/labels/rdb.c:1080
+#, fuzzy
+msgid "Unable to allocate a partition number."
+msgstr "Impossível alinhar a partição."
+
+#: libparted/labels/sun.c:161
+msgid "Corrupted Sun disk label detected."
+msgstr "Um rótulo de disco Sun corrompido foi detectado."
+
+#: libparted/labels/sun.c:276
+#, fuzzy, c-format
+msgid ""
+"The disk CHS geometry (%d,%d,%d) reported by the operating system does not "
+"match the geometry stored on the disk label (%d,%d,%d)."
+msgstr ""
+"A geometria CHS do disco (%d,%d,%d) não confere com a geometria gravada no "
+"rótulo de disco (%d,%d,%d)."
+
+#: libparted/labels/sun.c:298
+#, c-format
+msgid "The disk label describes a disk bigger than %s."
+msgstr "O rótulo de disco descreve um disco maior que %s."
+
+#: libparted/labels/sun.c:473
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr ""
+
+#: libparted/labels/sun.c:812
+msgid ""
+"The Whole Disk partition is the only available one left.  Generally, it is "
+"not a good idea to overwrite this partition with a real one.  Solaris may "
+"not be able to boot without it, and SILO (the sparc boot loader) appreciates "
+"it as well."
+msgstr ""
+
+#: libparted/labels/sun.c:827
+msgid "Sun disk label is full."
+msgstr "O rótulo de disco Sun está cheio."
+
+#: libparted/labels/vtoc.c:164
+msgid "opening of device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:168
+msgid "seeking on device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:172
+msgid "writing to device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:176
+msgid "reading from device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:299 libparted/labels/vtoc.c:308
+#: libparted/labels/vtoc.c:329 libparted/labels/vtoc.c:336
+#, fuzzy
+msgid "Could not read volume label."
+msgstr "Não foi possível ler a geometria de %s - %s"
+
+#: libparted/labels/vtoc.c:356 libparted/labels/vtoc.c:363
+#, fuzzy
+msgid "Could not write volume label."
+msgstr "Não foi possível detectar o sistema de arquivos."
+
+#: libparted/labels/vtoc.c:469
+msgid "Could not read VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:496
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:516
+msgid "Could not write VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:522
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:529
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:536
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:543
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/libparted.c:230 libparted/libparted.c:245
+msgid "Out of memory."
+msgstr "Não há memória."
+
+#: libparted/unit.c:138
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr ""
+
+#: libparted/unit.c:384
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr ""
+
+#: libparted/unit.c:392
+#, c-format
+msgid "The maximum head value is %d."
+msgstr ""
+
+#: libparted/unit.c:399
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr ""
+
+#: libparted/unit.c:411 libparted/unit.c:556
+#, fuzzy, c-format
+msgid "The location %s is outside of the device %s."
+msgstr "Impossível criar partição para fora do dispositivo."
+
+#: libparted/unit.c:531
+msgid "Invalid number."
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:62 libparted/fs/amiga/apfs.c:55
+#: libparted/fs/amiga/asfs.c:69
+#, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:77 libparted/fs/amiga/apfs.c:68
+#: libparted/fs/amiga/asfs.c:81
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:82 libparted/fs/amiga/apfs.c:73
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:98 libparted/fs/amiga/apfs.c:84
+#: libparted/fs/amiga/asfs.c:87 libparted/fs/amiga/asfs.c:101
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:71
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:188
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:201
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:211
+#, fuzzy, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s durante escrita em %s"
+
+#: libparted/fs/amiga/amiga.c:277
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:288
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:317
+#, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr ""
+
+#: libparted/fs/fat/fat.c:174
+#, fuzzy
+msgid ""
+"GNU Parted was miscompiled: the FAT boot sector should be 512 bytes.  FAT "
+"support will be disabled."
+msgstr ""
+"O GNU parted foi compilado erradamente: o setor de boot FAT deveria ser de "
+"512 bytes. O suporte a FAT será desabilitado."
+
+#: libparted/fs/fat/bootsector.c:49 libparted/fs/fat/bootsector.c:56
+msgid "File system has an invalid signature for a FAT file system."
+msgstr "Sistema de arquivos tem uma assinatura inválida para um FAT."
+
+#: libparted/fs/fat/bootsector.c:64
+msgid "File system has an invalid sector size for a FAT file system."
+msgstr "Sistema de arquivos tem um tamanho de setor inválido para um FAT."
+
+#: libparted/fs/fat/bootsector.c:71
+#, fuzzy
+msgid "File system has an invalid cluster size for a FAT file system."
+msgstr "Sistema de arquivos tem um tamanho de setor inválido para um FAT."
+
+#: libparted/fs/fat/bootsector.c:78
+#, fuzzy
+msgid ""
+"File system has an invalid number of reserved sectors for a FAT file system."
+msgstr ""
+"Sistema de arquivos tem um número de setores reservados inválido para um FAT."
+
+#: libparted/fs/fat/bootsector.c:85
+#, fuzzy
+msgid "File system has an invalid number of FATs."
+msgstr "Sistema de arquivos tem um número inválido de FATS."
+
+#: libparted/fs/fat/bootsector.c:156
+#, c-format
+msgid ""
+"This file system has a logical sector size of %d.  GNU Parted is known not "
+"to work properly with sector sizes other than 512 bytes."
+msgstr ""
+"Este sistema de arquivos tem um tamanho de setor lógico de %d. O GNU Parted "
+"é conhecido por não funcionar corretamente com setores diferentes de 512 "
+"bytes."
+
+#: libparted/fs/fat/bootsector.c:181
+#, c-format
+msgid ""
+"The file system's CHS geometry is (%d, %d, %d), which is invalid.  The "
+"partition table's CHS geometry is (%d, %d, %d).  If you select Ignore, the "
+"file system's CHS geometry will be left unchanged.  If you select Fix, the "
+"file system's CHS geometry will be set to match the partition table's CHS "
+"geometry."
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:230
+msgid "FAT boot sector says logical sector size is 0.  This is weird. "
+msgstr "Setor de boot FAT diz que o tamanho lógico do setor é 0. Estranho. "
+
+#: libparted/fs/fat/bootsector.c:236
+msgid "FAT boot sector says there are no FAT tables.  This is weird. "
+msgstr "Setor de boot FAT diz que não há tabelas FAT. Estranho. "
+
+#: libparted/fs/fat/bootsector.c:242
+msgid "FAT boot sector says clusters are 0 sectors.  This is weird. "
+msgstr "Setor de boot FAT diz que os clusters têm 0 setores. Estranho. "
+
+#: libparted/fs/fat/bootsector.c:252
+#, fuzzy
+msgid "File system is FAT12, which is unsupported."
+msgstr "O sistema de arquivos é FAT12, que não é suportado."
+
+#: libparted/fs/fat/bootsector.c:428
+#, c-format
+msgid ""
+"The information sector has the wrong signature (%x).  Select cancel for now, "
+"and send in a bug report.  If you're desperate, it's probably safe to ignore."
+msgstr ""
+"O setor de informações tem uma assinatura inválida (%x). Selecione cancelar "
+"agora, e mande um relatório de bug. Se você está desesperado, é provável que "
+"seja seguro ignorar."
+
+#: libparted/fs/linux_swap/linux_swap.c:247
+#, fuzzy, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "Assinatura linux swap não reconhecida '%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:290
+#, fuzzy, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "Assinatura linux swap não reconhecida '%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:330
+#, fuzzy, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Assinatura linux swap não reconhecida '%10s'."
+
+#: libparted/fs/hfs/probe.c:50
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to "
+"%d bytes."
+msgstr ""
+
+#: parted/parted.c:123
+msgid "displays this help message"
+msgstr "mostra esta mensagem de ajuda"
+
+#: parted/parted.c:124
+msgid "lists partition layout on all block devices"
+msgstr ""
+
+#: parted/parted.c:125
+msgid "displays machine parseable output"
+msgstr ""
+
+#: parted/parted.c:126
+msgid "never prompts for user intervention"
+msgstr "nunca pede intervenção do usuário"
+
+#: parted/parted.c:127
+msgid "displays the version"
+msgstr "mostra a versão"
+
+#: parted/parted.c:128
+#, fuzzy
+msgid "alignment for new partitions"
+msgstr "Não posso adicionar outra partição."
+
+#: parted/parted.c:140
+#, fuzzy
+msgid ""
+"NUMBER is the partition number used by Linux.  On MS-DOS disk labels, the "
+"primary partitions number from 1 to 4, logical partitions from 5 onwards.\n"
+msgstr ""
+"MINOR é o número da partição usado pelo linux. Em rótulos de disco msdos, as "
+"partições primárias são de 1-4, e partições lógicas de 5 adiante.\n"
+
+#: parted/parted.c:143
+msgid "LABEL-TYPE is one of: "
+msgstr "TIPO_ROTULO é um de:"
+
+#: parted/parted.c:144
+msgid "FLAG is one of: "
+msgstr "FLAG é um de: "
+
+#: parted/parted.c:145
+#, fuzzy
+msgid "UNIT is one of: "
+msgstr "FLAG é um de: "
+
+#: parted/parted.c:146
+msgid "desired alignment: minimum or optimal"
+msgstr ""
+
+#: parted/parted.c:147
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "TIPO-PART é um de: primary, logical, extended\n"
+
+#: parted/parted.c:149
+msgid "FS-TYPE is one of: "
+msgstr "TIPO-FS é um de: "
+
+#: parted/parted.c:150
+msgid ""
+"START and END are disk locations, such as 4GB or 10%.  Negative values count "
+"from the end of the disk.  For example, -1s specifies exactly the last "
+"sector.\n"
+msgstr ""
+
+#: parted/parted.c:153
+msgid "STATE is one of: on, off\n"
+msgstr "ESTADO é um de: on, off\n"
+
+#: parted/parted.c:154
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "DISPOSITIVO é usualmente /dev/hda ou /dev/sda\n"
+
+#: parted/parted.c:155
+msgid "NAME is any word you want\n"
+msgstr "NAME é qualquer palavra que desejar\n"
+
+#: parted/parted.c:158
+msgid ""
+"Copyright (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"This program is free software, covered by the GNU General Public License.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+msgstr ""
+
+#: parted/parted.c:204
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr ""
+
+#: parted/parted.c:223
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+
+#: parted/parted.c:241
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "Partição(ões) em %s está(ão) sendo utilizada(s)."
+
+#: parted/parted.c:253
+#, c-format
+msgid ""
+"The existing disk label on %s will be destroyed and all data on this disk "
+"will be lost. Do you want to continue?"
+msgstr ""
+
+#: parted/parted.c:502
+#, fuzzy
+msgid "New disk label type?"
+msgstr "Tipo de rótulo de disco: %s\n"
+
+#: parted/parted.c:562
+#, fuzzy
+msgid "Partition type?"
+msgstr "A partição não existe."
+
+#: parted/parted.c:580 parted/parted.c:766
+#, fuzzy
+msgid "Partition name?"
+msgstr "A partição não existe."
+
+#: parted/parted.c:588
+#, fuzzy
+msgid "File system type?"
+msgstr "Sistema de arquivos  "
+
+#: parted/parted.c:594 parted/parted.c:1342
+msgid "Start?"
+msgstr ""
+
+#: parted/parted.c:596 parted/parted.c:1344
+msgid "End?"
+msgstr ""
+
+#: parted/parted.c:661
+#, fuzzy, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s.%s"
+msgstr ""
+"Você comandou a criação de uma partição em %.3f-%.3fMb. O mais perto que o "
+"Parted pode chegar é %.3f-%.3fMb."
+
+#: parted/parted.c:666
+msgid ""
+"\n"
+"Is this still acceptable to you?"
+msgstr ""
+
+#: parted/parted.c:688
+msgid "The resulting partition is not properly aligned for best performance."
+msgstr ""
+
+#: parted/parted.c:763 parted/parted.c:1383 parted/parted.c:1455
+#: parted/parted.c:1489
+#, fuzzy
+msgid "Partition number?"
+msgstr "A partição está sendo utilizada."
+
+#: parted/parted.c:841
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d.  Each cylinder is %s.\n"
+msgstr ""
+
+#: parted/parted.c:881
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr ""
+
+#: parted/parted.c:883
+#, fuzzy, c-format
+msgid "Disk %s: %s\n"
+msgstr "%s  %s  %s"
+
+#: parted/parted.c:884
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr ""
+
+#: parted/parted.c:896
+#, fuzzy, c-format
+msgid "Partition Table: %s\n"
+msgstr "Tabela de partições inválida em %s"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Number"
+msgstr ""
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Start"
+msgstr ""
+
+#: parted/parted.c:1008 parted/parted.c:1011
+msgid "End"
+msgstr ""
+
+#: parted/parted.c:1011
+#, fuzzy
+msgid "Size"
+msgstr "resize"
+
+#: parted/parted.c:1015
+msgid "Type"
+msgstr ""
+
+#: parted/parted.c:1017
+#, fuzzy
+msgid "File system"
+msgstr "Sistema de arquivos  "
+
+#: parted/parted.c:1020
+#, fuzzy
+msgid "Name"
+msgstr "name"
+
+#: parted/parted.c:1022
+msgid "Flags"
+msgstr "Sinalizador"
+
+#: parted/parted.c:1079
+msgid "Free Space"
+msgstr ""
+
+#: parted/parted.c:1241
+#, c-format
+msgid ""
+"A %s %s partition was found at %s -> %s.  Do you want to add it to the "
+"partition table?"
+msgstr ""
+
+#: parted/parted.c:1280
+msgid "searching for file systems"
+msgstr ""
+
+#: parted/parted.c:1408
+#, fuzzy
+msgid "New device?"
+msgstr "Nenhum dispositivo encontrado"
+
+#: parted/parted.c:1453
+msgid "alignment type(min/opt)"
+msgstr ""
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d aligned\n"
+msgstr ""
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d not aligned\n"
+msgstr ""
+
+#: parted/parted.c:1491
+msgid "Flag to Invert?"
+msgstr ""
+
+#: parted/parted.c:1496
+msgid "New state?"
+msgstr ""
+
+#: parted/parted.c:1533
+msgid "Unit?"
+msgstr ""
+
+#: parted/parted.c:1651
+#, fuzzy
+msgid "align-check"
+msgstr "check"
+
+#: parted/parted.c:1654
+msgid ""
+"align-check TYPE N                        check partition N for TYPE(min|"
+"opt) alignment"
+msgstr ""
+
+#: parted/parted.c:1662
+msgid "help"
+msgstr "help"
+
+#: parted/parted.c:1665
+#, fuzzy
+msgid ""
+"help [COMMAND]                           print general help, or help on "
+"COMMAND"
+msgstr "help [COMANDO]                mostra ajuda geral, ou ajuda a COMANDO"
+
+#: parted/parted.c:1671
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:1671
+#, fuzzy
+msgid "mktable"
+msgstr "mklabel"
+
+#: parted/parted.c:1674
+#, fuzzy
+msgid ""
+"mklabel,mktable LABEL-TYPE               create a new disklabel (partition "
+"table)"
+msgstr ""
+"mklabel TIPO-ROTULO           cria um novo rótulo (na tabela de partição)"
+
+#: parted/parted.c:1680
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:1683
+#, fuzzy
+msgid "mkpart PART-TYPE [FS-TYPE] START END     make a partition"
+msgstr "mkpart TIPO-PART [FS-TYPE] INICIO FIM     cria uma partição"
+
+#: parted/parted.c:1689
+#, fuzzy
+msgid ""
+"'mkpart' makes a partition without creating a new file system on the "
+"partition.  FS-TYPE may be specified to set an appropriate partition ID.\n"
+msgstr ""
+"mkpart cria uma partição sem criar um novo sistema de arquivos na partição. "
+"TIPO-FS deve ser especificado para partições de dados (ao oposto de uma "
+"partição extendida). Este comando é útil se você apagou acidentalmente uma "
+"partição.\n"
+
+#: parted/parted.c:1694
+msgid "name"
+msgstr "name"
+
+#: parted/parted.c:1697
+#, fuzzy
+msgid "name NUMBER NAME                         name partition NUMBER as NAME"
+msgstr "name MINOR NAME               renomeia a partição MINOR para NAME"
+
+#: parted/parted.c:1702
+msgid "print"
+msgstr "print"
+
+#: parted/parted.c:1705
+msgid ""
+"print [devices|free|list,all|NUMBER]     display the partition table, "
+"available devices, free space, all found partitions, or a particular "
+"partition"
+msgstr ""
+
+#: parted/parted.c:1710
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+
+#: parted/parted.c:1712
+msgid "  devices   : display all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:1713
+msgid ""
+"  free      : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+
+#: parted/parted.c:1715
+msgid ""
+"  list, all : display the partition tables of all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:1716
+msgid ""
+"  NUMBER    : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+
+#: parted/parted.c:1721
+msgid "quit"
+msgstr "quit"
+
+#: parted/parted.c:1724
+#, fuzzy
+msgid "quit                                     exit program"
+msgstr "quit                          sair do programa"
+
+#: parted/parted.c:1729
+#, fuzzy
+msgid "rescue"
+msgstr "resize"
+
+#: parted/parted.c:1732
+#, fuzzy
+msgid ""
+"rescue START END                         rescue a lost partition near START "
+"and END"
+msgstr "print                         mostra a tabela de partições"
+
+#: parted/parted.c:1738
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:1741
+#, fuzzy
+msgid "rm NUMBER                                delete partition NUMBER"
+msgstr "rm MINOR                      apaga a partição MINOR"
+
+#: parted/parted.c:1746
+msgid "select"
+msgstr "select"
+
+#: parted/parted.c:1749
+#, fuzzy
+msgid "select DEVICE                            choose the device to edit"
+msgstr "select DEVICE                 seleciona o dispositivo a editar"
+
+#: parted/parted.c:1754
+msgid "set"
+msgstr "set"
+
+#: parted/parted.c:1757
+#, fuzzy
+msgid ""
+"set NUMBER FLAG STATE                    change the FLAG on partition NUMBER"
+msgstr "set MINOR FLAG ESTADO         muda o sinalizador na partição MINOR"
+
+#: parted/parted.c:1763
+msgid "toggle"
+msgstr ""
+
+#: parted/parted.c:1766
+msgid ""
+"toggle [NUMBER [FLAG]]                   toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+
+#: parted/parted.c:1772
+#, fuzzy
+msgid "unit"
+msgstr "quit"
+
+#: parted/parted.c:1775
+#, fuzzy
+msgid "unit UNIT                                set the default unit to UNIT"
+msgstr "print                         mostra a tabela de partições"
+
+#: parted/parted.c:1780
+msgid "version"
+msgstr ""
+
+#: parted/parted.c:1783
+#, fuzzy
+msgid ""
+"version                                  display the version number and "
+"copyright information of GNU Parted"
+msgstr "print                         mostra a tabela de partições"
+
+#: parted/parted.c:1787
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+
+#: parted/parted.c:1855
+#, c-format
+msgid "Usage: %s [-hlmsv] [-a<align>] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+
+#: parted/parted.c:1899
+msgid "No device found"
+msgstr "Nenhum dispositivo encontrado"
+
+#: parted/parted.c:1936
+msgid "WARNING: You are not superuser.  Watch out for permissions."
+msgstr ""
+
+#: parted/parted.c:1974
+msgid "You may need to update /etc/fstab.\n"
+msgstr ""
+
+#: parted/ui.c:162
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+
+#: parted/ui.c:165
+#, fuzzy
+msgid ""
+"Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]\n"
+"Apply COMMANDs with PARAMETERS to DEVICE.  If no COMMAND(s) are given, run "
+"in\n"
+"interactive mode.\n"
+msgstr ""
+"Uso: parted [OPCOES]... [DISPOSITIVO [COMANDO [PARAMETROS]...]...]\n"
+"Aplica COMANDO com PARAMETROS em DISPOSITIVO. Se não for dado nenhum\n"
+"COMANDO, executa em modo interativo.\n"
+
+#: parted/ui.c:170
+#, c-format
+msgid ""
+"\n"
+"\n"
+"You found a bug in GNU Parted! Here's what you have to do:\n"
+"\n"
+"Don't panic! The bug has most likely not affected any of your data.\n"
+"Help us to fix this bug by doing the following:\n"
+"\n"
+"Check whether the bug has already been fixed by checking\n"
+"the last version of GNU Parted that you can find at:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Please check this version prior to bug reporting.\n"
+"\n"
+"If this has not been fixed yet or if you don't know how to check,\n"
+"please visit the GNU Parted website:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"for further information.\n"
+"\n"
+"Your report should contain the version of this release (%s)\n"
+"along with the error message below, the output of\n"
+"\n"
+"\tparted DEVICE unit co print unit s print\n"
+"\n"
+"and the following history of commands you entered.\n"
+"Also include any additional information about your setup you\n"
+"consider important.\n"
+msgstr ""
+
+#: parted/ui.c:291
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+
+#: parted/ui.c:354
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+
+#: parted/ui.c:360
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+
+#: parted/ui.c:365
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+
+#: parted/ui.c:389
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:394
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+
+#: parted/ui.c:399
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:404
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+
+#: parted/ui.c:409
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+
+#: parted/ui.c:414
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+
+#: parted/ui.c:419
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+
+#: parted/ui.c:424
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+
+#: parted/ui.c:429
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+
+#: parted/ui.c:453
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+
+#: parted/ui.c:458
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+
+#: parted/ui.c:463
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+
+#: parted/ui.c:468
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+
+#: parted/ui.c:473
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+
+#: parted/ui.c:478
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+
+#: parted/ui.c:891
+#, fuzzy, c-format
+msgid "invalid token: %s"
+msgstr "Tabela de partições inválida em %s"
+
+#: parted/ui.c:1048
+#, fuzzy
+msgid "Expecting a partition number."
+msgstr "A partição destino está sendo utilizada."
+
+#: parted/ui.c:1057
+msgid "Partition doesn't exist."
+msgstr "A partição não existe."
+
+#: parted/ui.c:1077
+#, fuzzy
+msgid "Expecting a file system type."
+msgstr "Tipo de sistema de arquivos desconhecido."
+
+#: parted/ui.c:1084
+#, fuzzy, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Tipo de sistema de arquivos desconhecido."
+
+#: parted/ui.c:1105
+msgid "Expecting a disk label type."
+msgstr ""
+
+#: parted/ui.c:1203
+#, fuzzy
+msgid "Can't create any more partitions."
+msgstr "Não posso adicionar outra partição."
+
+#: parted/ui.c:1213
+#, fuzzy
+msgid "Expecting a partition type."
+msgstr "A partição destino não existe."
+
+#: parted/ui.c:1361
+msgid "on"
+msgstr "on"
+
+#: parted/ui.c:1362
+msgid "off"
+msgstr ""
+
+#: parted/ui.c:1379
+msgid "optimal"
+msgstr ""
+
+#: parted/ui.c:1380
+msgid "minimal"
+msgstr ""
+
+#: parted/ui.c:1513
+msgid "OPTIONs:"
+msgstr "OPÇÕESs:"
+
+#: parted/ui.c:1518
+msgid "COMMANDs:"
+msgstr "COMANDOs:"
+
+#: parted/ui.c:1521
+#, c-format
+msgid ""
+"\n"
+"Report bugs to %s\n"
+msgstr ""
+
+#: parted/ui.c:1528
+#, fuzzy, c-format
+msgid "Using %s\n"
+msgstr ""
+"\n"
+"Usando %s\n"
+
+#: parted/ui.c:1602
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr ""
+
+#, fuzzy
+#~ msgid "too few arguments"
+#~ msgstr "Muitas páginas inválidas."
+
+#, fuzzy
+#~ msgid "too many arguments"
+#~ msgstr "Muitas páginas inválidas."
+
+#, fuzzy
+#~ msgid "invalid minor device number: %s"
+#~ msgstr "Tabela de partições inválida em %s"
+
+#~ msgid "Could not detect file system."
+#~ msgstr "Não foi possível detectar o sistema de arquivos."
+
+#, fuzzy
+#~ msgid "The file system is bigger than its volume!"
+#~ msgstr "O rótulo de disco descreve um disco maior que %s."
+
+#~ msgid "Support for opening %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "O suporte para abrir sistema de arquivos %s não foi implementado ainda."
+
+#~ msgid "Support for creating %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "O suporte para criar sistema de arquivos %s não foi implementado ainda."
+
+#~ msgid "Support for checking %s file systems is not implemented yet."
+#~ msgstr "Suporte para checar sistema de arquivos não implementado para %s."
+
+#, fuzzy
+#~ msgid "growing file system"
+#~ msgstr "Tipo de sistema de arquivos desconhecido."
+
+#~ msgid "Can't copy onto an overlapping partition."
+#~ msgstr "Não posso copiar em uma partição sobreposta."
+
+#, fuzzy
+#~ msgid ""
+#~ "Direct support for copying file systems is not yet implemented for %s.  "
+#~ "However, support for resizing is implemented.  Therefore, the file system "
+#~ "can be copied if the new partition is at least as big as the old one.  "
+#~ "So, either shrink the partition you are trying to copy, or copy to a "
+#~ "bigger partition."
+#~ msgstr ""
+#~ "O suporte direto para cópia de sistemas de arquivos não está implementado "
+#~ "para %s. Entretanto, o suporte para redimensionamento está. Portanto, o "
+#~ "sistema de arquivos pode ser copiado se a nova partição for pelo menos "
+#~ "tão grande quanto a antiga. Então, diminua a partição que você está "
+#~ "tentando copiar, ou copie para uma partição maior."
+
+#~ msgid "Support for copying %s file systems is not implemented yet."
+#~ msgstr "Suporte para copiar sistema de arquivos não implementado para %s."
+
+#~ msgid "Support for resizing %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Suporte para redimensionar sistema de arquivos não implementado para %s."
+
+#, fuzzy
+#~ msgid "The file system is in an invalid state.  Perhaps it is mounted?"
+#~ msgstr "Sistema de arquivos tem uma assinatura inválida para um FAT."
+
+#, fuzzy
+#~ msgid "checking"
+#~ msgstr "check"
+
+#, fuzzy
+#~ msgid ""
+#~ "The reiserfs file system passed a basic check.  For a more comprehensive "
+#~ "check, run reiserfsck --check."
+#~ msgstr ""
+#~ "O sistema de arquivos ext2 passou pelo teste básico. Para um teste mais "
+#~ "compreensivo, utilize o programa e2fsck."
+
+#, fuzzy
+#~ msgid "Sorry, can't move the start of reiserfs partitions yet."
+#~ msgstr "Desculpe, não posso mover o início de partições ext2 ainda!"
+
+#, fuzzy
+#~ msgid "shrinking"
+#~ msgstr "Aviso"
+
+#, fuzzy
+#~ msgid "expanding"
+#~ msgstr "Aviso"
+
+#~ msgid "Inconsistent group descriptors!"
+#~ msgstr "Descritores de grupo inconsistentes!"
+
+#, fuzzy
+#~ msgid "File system full!"
+#~ msgstr "Sistema de arquivos cheio!"
+
+#, fuzzy
+#~ msgid "Invalid superblock.  Are you sure this is an ext2 file system?"
+#~ msgstr "Superbloco inválido. Você tem certeza que isto é um sistema ext2?"
+
+#, fuzzy
+#~ msgid "File system has errors!  You should run e2fsck."
+#~ msgstr "Sistema de arquivos tem erros! Execute e2fsck primeiro."
+
+#, fuzzy
+#~ msgid ""
+#~ "File system was not cleanly unmounted!  You should run e2fsck.  Modifying "
+#~ "an unclean file system could cause severe corruption."
+#~ msgstr ""
+#~ "Sistema de arquivos não foi desmontado corretamente! Execute e2fsck "
+#~ "primeiro."
+
+#~ msgid "Error allocating buffer cache."
+#~ msgstr "Erro determinando o cache temporário."
+
+#, fuzzy
+#~ msgid ""
+#~ "Found an inode with a incorrect link count.  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "Encontrado um inode com uma contagem incorreta de ligações. Melhor "
+#~ "executar o e2fsck primeiro."
+
+#~ msgid "Not enough free inodes!"
+#~ msgstr "Não há inodes livres suficientes!"
+
+#, fuzzy
+#~ msgid "File system is too full to remove a group!"
+#~ msgstr "Sistema de arquivos muito ocupado para remover um grupo!"
+
+#, fuzzy
+#~ msgid "File system has too many allocated inodes to remove a group!"
+#~ msgstr ""
+#~ "Sistema de arquivos tem muitos inodes utilizados para remover um grupo!"
+
+#, fuzzy
+#~ msgid "Your file system is too full to resize it to %i blocks.  Sorry."
+#~ msgstr ""
+#~ "Seu sistema de arquivos está muito ocupado para redimensioná-lo para %i "
+#~ "blocos. Desculpe."
+
+#, fuzzy
+#~ msgid ""
+#~ "Your file system has too many occupied inodes to resize it to %i blocks.  "
+#~ "Sorry."
+#~ msgstr ""
+#~ "Seu sistema de arquivos está com muitos inodes ocupados para redimensioná-"
+#~ "lo para %i blocos. Desculpe."
+
+#, fuzzy
+#~ msgid "File system was not cleanly unmounted!  You should run e2fsck."
+#~ msgstr ""
+#~ "Sistema de arquivos não foi desmontado corretamente! Execute e2fsck "
+#~ "primeiro."
+
+#, fuzzy
+#~ msgid "Cross-linked blocks found!  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "Encontrados blocos com referência cruzada! Melhor executar e2fsck "
+#~ "primeiro."
+
+#, fuzzy
+#~ msgid "Block %i has no reference?  Weird."
+#~ msgstr "Bloco %i não tem referência? Estranho"
+
+#, fuzzy
+#~ msgid "Block %i shouldn't have been marked (%d, %d)!"
+#~ msgstr "Bloco %i não deveria ter sido marcado!"
+
+#, fuzzy
+#~ msgid ""
+#~ "The ext2 file system passed a basic check.  For a more comprehensive "
+#~ "check, use the e2fsck program."
+#~ msgstr ""
+#~ "O sistema de arquivos ext2 passou pelo teste básico. Para um teste mais "
+#~ "compreensivo, utilize o programa e2fsck."
+
+#~ msgid "Sorry, can't move the start of ext2 partitions yet!"
+#~ msgstr "Desculpe, não posso mover o início de partições ext2 ainda!"
+
+#~ msgid "Couldn't flush buffer cache!"
+#~ msgstr "Não foi possível esvaziar cache temporário!"
+
+#, fuzzy
+#~ msgid "File system too small for ext2."
+#~ msgstr "Sistema de arquivos muito ocupado para remover um grupo!"
+
+#, fuzzy
+#~ msgid ""
+#~ "You need %s of free disk space to shrink this partition to this size.  "
+#~ "Currently, only %s is free."
+#~ msgstr ""
+#~ "Você precisa de %dM de espaço livre para diminuir esta partição para este "
+#~ "tamanho (você tem somente %dM livres)"
+
+#~ msgid ""
+#~ "Cluster start delta = %d, which is not a multiple of the cluster size %d."
+#~ msgstr ""
+#~ "O cluster inicia em delta = %d, que não é um múltiplo do tamanho de "
+#~ "cluster %d."
+
+#, fuzzy
+#~ msgid "Partition too big/small for a %s file system."
+#~ msgstr "A partição é muito pequena para um sistema de arquivos FAT"
+
+#~ msgid ""
+#~ "The FATs don't match.  If you don't know what this means, then select "
+#~ "cancel, run scandisk on the file system, and then come back."
+#~ msgstr ""
+#~ "As FATs não estão iguais. Se você não sabe o que isto significa, "
+#~ "selecione cancelar, execute o scandisk no sistema de arquivos, depois "
+#~ "volte."
+
+#~ msgid "There are no possible configurations for this FAT type."
+#~ msgstr "Não há configurações possíveis para este tipo de FAT."
+
+#~ msgid ""
+#~ "File system doesn't have expected sizes for Windows to like it.  Cluster "
+#~ "size is %dk (%dk expected); number of clusters is %d (%d expected); size "
+#~ "of FATs is %d sectors (%d expected)."
+#~ msgstr ""
+#~ "O sistema de arquivos não tem o tamanho esperado para que o Windows "
+#~ "utilize. O tamanho do cluster é %dk (%dk esperado); número de clusters é "
+#~ "%d (%d esperado); tamanho da FAT é %d setores (%d esperado)."
+
+#~ msgid ""
+#~ "File system is reporting the free space as %d clusters, not %d clusters."
+#~ msgstr ""
+#~ "O sistema de arquivos está reportando que o espaço livre é %d clusters, "
+#~ "não %d clusters."
+
+#, fuzzy
+#~ msgid ""
+#~ "There's not enough room in the root directory for all of the files.  "
+#~ "Either cancel, or ignore to lose the files."
+#~ msgstr ""
+#~ "Não há espaço suficiente no diretório raiz, para todos os arquivos. "
+#~ "Cancele, ou ignore para perder os arquivos."
+
+#~ msgid "Error writing to the root directory."
+#~ msgstr "Erro escrevendo no diretório raiz."
+
+#, fuzzy
+#~ msgid ""
+#~ "If you leave your file system as FAT16, then you will have no problems."
+#~ msgstr "Se deixar seu sistema de arquivos como FAT16, não haverá problemas."
+
+#~ msgid ""
+#~ "If you convert to FAT16, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual)."
+#~ msgstr ""
+#~ "Se você converter para FAT16, e o MS Windows está instalado nesta "
+#~ "partição, você deverá reinstalar o gerenciador de boot do MS Windows. Se "
+#~ "quiser fazer isso, consulte o manual do Parted (ou o manual de sua "
+#~ "distribuição)."
+
+#~ msgid ""
+#~ "If you leave your file system as FAT32, then you will not introduce any "
+#~ "new problems."
+#~ msgstr ""
+#~ "Se deixar seu sistema de arquivos como FAT32, você não criará mais nenhum "
+#~ "problema novo."
+
+#~ msgid ""
+#~ "If you convert to FAT32, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual).  Also, converting to FAT32 will make the file system unreadable "
+#~ "by MS DOS, MS Windows 95a, and MS Windows NT."
+#~ msgstr ""
+#~ "Se você converter para FAT32, e o MS Windows está instalado nesta "
+#~ "partição, você deverá reinstalar o gerenciador de boot do MS Windows. Se "
+#~ "quiser fazer isso, consulte o manual do Parted (ou o manual de sua "
+#~ "distribuição). Também, convertendo para FAT32 fará com que o sistema de "
+#~ "arquivos não seja mais reconhecido pelo MS DOS, Windows 95a, e MS Windows "
+#~ "NT."
+
+#~ msgid "%s  %s  %s"
+#~ msgstr "%s  %s  %s"
+
+#~ msgid "Would you like to use FAT32?"
+#~ msgstr "Você gostaria de usar FAT32?"
+
+#~ msgid "%s  %s"
+#~ msgstr "%s  %s"
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT16."
+#~ msgstr ""
+#~ "O sistema de arquivos só pode ser redimensionado para este tamanho sendo "
+#~ "convertido para FAT16."
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT32."
+#~ msgstr ""
+#~ "O sistema de arquivos só pode ser redimensionado para este tamanho sendo "
+#~ "convertido para FAT32."
+
+#, fuzzy
+#~ msgid ""
+#~ "GNU Parted cannot resize this partition to this size.  We're working on "
+#~ "it!"
+#~ msgstr ""
+#~ "O GNU Parted não pode redimensionar esta partição a este tamanho. Estamos "
+#~ "trabalhando nisto!"
+
+#~ msgid "Bad directory entry for %s: first cluster is the end of file marker."
+#~ msgstr ""
+#~ "Entrada de diretório inválida para %s: o primeiro cluster é o fim do "
+#~ "marcador de arquivo."
+
+#~ msgid ""
+#~ "Bad FAT: unterminated chain for %s.  You should run dosfsck or scandisk."
+#~ msgstr ""
+#~ "FAT ruim: cadeia não terminada para %s. Você deveria rodar o dosfsck ou o "
+#~ "scandisk."
+
+#, fuzzy
+#~ msgid ""
+#~ "Bad FAT: cluster %d outside file system in chain for %s.  You should run "
+#~ "dosfsck or scandisk."
+#~ msgstr ""
+#~ "FAT ruim: cluster %d fora do sistema de arquivos na cadeia para %s. Você "
+#~ "deveria rodar o dosfsck ou o scandisk."
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d is cross-linked for %s.  You should run dosfsck or "
+#~ "scandisk."
+#~ msgstr ""
+#~ "FAT ruim: o cluster %d tem uma referência cruzada para %s. Você deveria "
+#~ "rodar o dosfsck ou o scandisk."
+
+#, fuzzy
+#~ msgid "%s is %dk, but it has %d clusters (%dk)."
+#~ msgstr "%s é %dk, mas tem %d clusters (%dk)."
+
+#~ msgid ""
+#~ "FAT %d media %x doesn't match the boot sector's media %x.  You should "
+#~ "probably run scandisk."
+#~ msgstr ""
+#~ "FAT %d mídia %x não bate com o setor de boot mídia %x. Você deveria "
+#~ "executar o scandisk."
+
+#, fuzzy
+#~ msgid "fat_table_set: cluster %ld outside file system"
+#~ msgstr "fat_table_set: cluster %ld fora do sistema de arquivos"
+
+#, fuzzy
+#~ msgid "fat_table_get: cluster %ld outside file system"
+#~ msgstr "fat_table_get: cluster %ld fora do sistema de arquivos"
+
+#~ msgid "fat_table_alloc_cluster: no free clusters"
+#~ msgstr "fat_table_alloc_cluster: não há clusters livres"
+
+#~ msgid "Too many bad pages."
+#~ msgstr "Muitas páginas inválidas."
+
+#, fuzzy
+#~ msgid "writing HFS Master Directory Block"
+#~ msgstr "Erro escrevendo no diretório raiz."
+
+#, fuzzy
+#~ msgid "Error while writing the allocation file."
+#~ msgstr "Erro escrevendo no diretório raiz."
+
+#, fuzzy
+#~ msgid "Error while writing the compatibility part of the allocation file."
+#~ msgstr "Erro escrevendo no diretório raiz."
+
+#, fuzzy
+#~ msgid "shrinking HFS wrapper"
+#~ msgstr "Aviso"
+
+#, fuzzy
+#~ msgid "Journal offset or size is not multiple of the sector size."
+#~ msgstr ""
+#~ "O cluster inicia em delta = %d, que não é um múltiplo do tamanho de "
+#~ "cluster %d."
+
+#, fuzzy
+#~ msgid "Some header fields are not multiple of the sector size."
+#~ msgstr ""
+#~ "O cluster inicia em delta = %d, que não é um múltiplo do tamanho de "
+#~ "cluster %d."
+
+#, fuzzy
+#~ msgid "Could not cache the file system in memory."
+#~ msgstr "Não foi possível detectar o sistema de arquivos."
+
+#, fuzzy
+#~ msgid "Source device?"
+#~ msgstr "Nenhum dispositivo encontrado"
+
+#, fuzzy
+#~ msgid "Source partition number?"
+#~ msgstr "A partição origem não existe."
+
+#, fuzzy
+#~ msgid "Can't copy an extended partition."
+#~ msgstr "Não posso copiar partições extendidas."
+
+#, fuzzy
+#~ msgid "Destination partition number?"
+#~ msgstr "A partição destino está sendo utilizada."
+
+#, fuzzy
+#~ msgid "Can't move an extended partition."
+#~ msgstr "Não posso mover partições extendidas."
+
+#~ msgid "Can't move a partition onto itself.  Try using resize, perhaps?"
+#~ msgstr ""
+#~ "Não posso mover a partição sobre ela mesma. Talvez queira redimensionar?"
+
+#, fuzzy
+#~ msgid "Flags: %s\n"
+#~ msgstr "Sinalizador"
+
+#, fuzzy
+#~ msgid "File System: %s\n"
+#~ msgstr "Sistema de arquivos  "
+
+#~ msgid "check"
+#~ msgstr "check"
+
+#, fuzzy
+#~ msgid ""
+#~ "check NUMBER                             do a simple check on the file "
+#~ "system"
+#~ msgstr ""
+#~ "check MINOR                   faz um teste simples no sistema de arquivos"
+
+#~ msgid "cp"
+#~ msgstr "cp"
+
+#, fuzzy
+#~ msgid ""
+#~ "cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   copy file system to another "
+#~ "partition"
+#~ msgstr ""
+#~ "cp [FROM-DEVICE] FROM-MINOR TO-MINOR      copia o sistema de arquivos "
+#~ "para outra partição"
+
+#~ msgid "mkfs"
+#~ msgstr "mkfs"
+
+#, fuzzy
+#~ msgid ""
+#~ "mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on "
+#~ "partition NUMBER"
+#~ msgstr ""
+#~ "mkfs MINOR TIPO-FS            cria um sistema TIPO-FS na partição MINOR"
+
+#~ msgid "mkpartfs"
+#~ msgstr "mkpartfs"
+
+#, fuzzy
+#~ msgid ""
+#~ "mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file "
+#~ "system"
+#~ msgstr "mkpartfs TIPO-PART TIPO-FS INICIO FIM     cria uma partição TIPO-FS"
+
+#~ msgid "move"
+#~ msgstr "move"
+
+#, fuzzy
+#~ msgid "move NUMBER START END                    move partition NUMBER"
+#~ msgstr "move MINOR INICIO [FIM]         move a partição MINOR"
+
+#~ msgid "resize"
+#~ msgstr "resize"
+
+#, fuzzy
+#~ msgid ""
+#~ "resize NUMBER START END                  resize partition NUMBER and its "
+#~ "file system"
+#~ msgstr "resize MINOR INICIO FIM       redimensiona a partição MINOR"
+
+#, fuzzy
+#~ msgid "Unable to determine the block size of this dasd"
+#~ msgstr "Impossível determinar tamanho de %s (%s)"
+
+#~ msgid ""
+#~ "The sector size on %s is %d bytes.  Parted is known not to work properly "
+#~ "with drives with sector sizes other than 512 bytes"
+#~ msgstr ""
+#~ "O tamanho do setor em %s é %d bytes. O Parted é conhecido por não "
+#~ "funcionar perfeitamente com discos com setores diferentes de 512 bytes"
+
+#~ msgid "Device %s has dodgey geometry."
+#~ msgstr "Dispositivo %s tem uma geometria estranha."
+
+#~ msgid "unknown"
+#~ msgstr "desconhecido"
+
+#~ msgid "Unknown SCSI"
+#~ msgstr "SCSI desconhecido"
+
+#~ msgid "Device %s is neither a SCSI nor IDE drive."
+#~ msgstr "O dispositivo %s não é um drive SCSI ou IDE."
+
+#~ msgid ""
+#~ "The partition table on %s is inconsistent.  There are many reasons why "
+#~ "this might be the case.  However, the most likely reason is that Linux "
+#~ "detected the BIOS geometry for %s incorrectly.  GNU Parted suspects the "
+#~ "real geometry should be %d/%d/%d (not %d/%d/%d).  You should check with "
+#~ "your BIOS first, as this may not be correct.  You can inform Linux by "
+#~ "adding the parameter %s=%d,%d,%d to the command line.  See the LILO or "
+#~ "GRUB documentation for more information.  If you think Parted's suggested "
+#~ "geometry is correct, you may select Ignore to continue (and fix Linux "
+#~ "later).  Otherwise, select Cancel (and fix Linux and/or the BIOS now)."
+#~ msgstr ""
+#~ "A tabela de partições em %s é inconsistente. Há várias razões para isto "
+#~ "ocorrer. A mais certa seria o Linux detectar a geometria do BIOS para %s "
+#~ "incorretamente. O GNU Parted suspeita que a geometria real deveria ser %d/"
+#~ "%d/%d (e não %d/%d/%d). Você deve checar com seu BIOS primeiro, pois isto "
+#~ "pode não ser correto. Você pode informar o Linux adicionando o parâmetro "
+#~ "%s=%d,%d,%d na linha de comando. Veja a documentação do LILO ou GRUB para "
+#~ "maiores informações. Se você acha que a geometria sugeria pelo Parted é a "
+#~ "correta, pode selecionar Ignorar para continuar (e arrumar o Linux "
+#~ "depois). De outra maneira, selecione Cancelar (e arrume o Linux e/ou o "
+#~ "BIOS agora)."
+
+#~ msgid ""
+#~ "The partition table on %s is inconsistent.  There are many reasons why "
+#~ "this might be the case.  Often, the reason is that Linux detected the "
+#~ "BIOS geometry incorrectly.  However, this does not appear to be the case "
+#~ "here.  It is safe to ignore,but ignoring may cause (fixable) problems "
+#~ "with some boot loaders, and may cause problems with FAT file systems.  "
+#~ "Using LBA is recommended."
+#~ msgstr ""
+#~ "A tabela de partições em %s está inconsistente. Há várias razões para "
+#~ "isto ocorrer. Muitas vezes, o Linux detecta a geometria do BIOS "
+#~ "incorretamente. Porém, isso não parece ser o caso aqui. É seguro ignorar, "
+#~ "mas isso pode causar problemas (solucionáveis) com alguns gerenciadores "
+#~ "de boot. É recomendável usar LBA."
+
+#~ msgid ""
+#~ "Unable to align partition properly.  This probably means that another "
+#~ "partitioning tool generated an incorrect partition table, because it "
+#~ "didn't have the correct BIOS geometry.  It is safe to ignore,but ignoring "
+#~ "may cause (fixable) problems with some boot loaders."
+#~ msgstr ""
+#~ "Impossível alinhar a partição propriamente. Isso provavelmente significa "
+#~ "que outra ferramenta de particionamento gerou uma tabela de partições "
+#~ "incorreta porque não tinha a geometria na BIOS correta. É seguro ignorar, "
+#~ "mas isto pode causar problemas (solucionáveis) com alguns gerenciadores "
+#~ "de boot."
+
+#~ msgid "GUID Partition Table Header Signature is wrong: "
+#~ msgstr "A Assinatura do Cabeçalho da Tabela de Partições GUID está errada: "
+
+#~ msgid " should be "
+#~ msgstr " deveria ser "
+
+#~ msgid "GPT Header CRC check failed, %x should be %x."
+#~ msgstr "Checagem de CRC no cabeçalho GPT falhou, %x deveria ser %x."
+
+#~ msgid "GPT Partition Entry Array CRC check failed, %x should be %x."
+#~ msgstr ""
+#~ "Checagem de CRC na Matriz de Entradas de Partição GPT falhou, %x deveria "
+#~ "ser %x."
+
+#~ msgid ""
+#~ "This disk contains a valid Primary and Alternate GUID Partition Table but "
+#~ "the Protective MBR is invalid.  This generally means that the disk had "
+#~ "GPT partitions on it, but then a legacy partition editing tool was used "
+#~ "to change the partition table stored in the MBR.\n"
+#~ "Which data is valid,  GPT or MBR?\n"
+#~ "Yes will assume that the GPT information is correct, and rewrite the "
+#~ "PMBR.\n"
+#~ "No will assume that the MBR is correct, and erase the GPT information.\n"
+#~ "Ignore will assume that the MBR is correct, but not change the disk."
+#~ msgstr ""
+#~ "Esse disco contém as Tabelas de Partições GUID primária e alternativa "
+#~ "corretas, mas a Protective MBR é inválida. Isso geralmente significa que "
+#~ "o disco tinha partições GPT, mas um programa padrão de particionamento "
+#~ "foi usado para mudar a tabela de partições gravada na MBR.\n"
+#~ "Quais dados são válidos, GPT ou MBR?\n"
+#~ "Sim: assume que a informação na GPT é a correta, e reescreve a PMBR.\n"
+#~ "Não: assume que a MBR é a correta, e apaga as informações na GPT.\n"
+#~ "Ignorar: assume que a MBR é correta, mas não altera o disco."
+
+#~ msgid ""
+#~ "This disk contains a valid Alternate GUID Partition Table but the Primary "
+#~ "GPT and Protective MBR are invalid.  This generally means that the disk "
+#~ "had GPT partitions on it, but then a legacy partition editing tool was "
+#~ "used to change the partition table stored in the MBR.\n"
+#~ "Which data is valid,  GPT or MBR?\n"
+#~ "Yes will assume that the GPT information is correct, and will rewrite the "
+#~ "PMBR and Primary GPT.\n"
+#~ "No will assume that the MBR is correct, and erase the GPT information.\n"
+#~ "Ignore will assume that the MBR is correct, but not change the disk."
+#~ msgstr ""
+#~ "Esse disco contém uma Tabela de Partição GUID alternativa correta, mas a "
+#~ "GPT primária e a Protective MBR são inválidas. Isso geralmente significa "
+#~ "que o disco tinha partições GPT, mas um programa padrão de "
+#~ "particionamento foi usado para mudar a tabela de partições gravada na "
+#~ "MBR.\n"
+#~ "Quais dados são válidos, GPT ou MBR?\n"
+#~ "Sim: assume que a informação na GPT é a correta, e reescreve a PMBR e a "
+#~ "GPT primária.\n"
+#~ "Não: assume que a MBR é a correta, e apaga as informações na GPT.\n"
+#~ "Ignorar: assume que a MBR é correta, mas não altera o disco."
+
+#~ msgid ""
+#~ "This disk contains a valid Primary GUID Partition Table but the Alternate "
+#~ "GPT and Protective MBR are invalid.  This generally means that the disk "
+#~ "had GPT partitions on it, but then a legacy partition editing tool was "
+#~ "used to change the partition table stored in the MBR.\n"
+#~ "Which data is valid,  GPT or MBR?\n"
+#~ "Yes will assume that the GPT information is correct, and will rewrite the "
+#~ "PMBR and Alternate GPT.\n"
+#~ "No will assume that the MBR is correct, and erase the GPT information.\n"
+#~ "Ignore will assume that the MBR is correct, but not change the disk.\n"
+#~ msgstr ""
+#~ "Esse disco contém uma Tabela de Partição GUID primária correta, mas a GPT "
+#~ "alternativa e a Protective MBR são inválidas. Isso geralmente significa "
+#~ "que o disco tinha partições GPT, mas um programa padrão de "
+#~ "particionamento foi usado para mudar a tabela de partições gravada na "
+#~ "MBR.\n"
+#~ "Quais dados são válidos, GPT ou MBR?\n"
+#~ "Sim: assume que a informação na GPT é a correta, e reescreve a PMBR e a "
+#~ "GPT alternativa.\n"
+#~ "Não: assume que a MBR é a correta, e apaga as informações na GPT.\n"
+#~ "Ignorar: assume que a MBR é correta, mas não altera o disco.\n"
+
+#~ msgid "The new partition overlaps with another partition."
+#~ msgstr "A nova partição sobrepõe alguma outra partição"
+
+#~ msgid "Can't set non-Linux partitions as a root device."
+#~ msgstr "Não posso configurar partições não Linux como uma partição root."
+
+#~ msgid "Can't set non-Linux partitions as a swap device."
+#~ msgstr "Não posso configurar partições não Linux como uma partição swap."
+
+#~ msgid "No get_resize_constraint for %s!"
+#~ msgstr "Não há get_resize_constraint para %s!"
+
+#~ msgid "The %s file system code doesn't support %s disk labels."
+#~ msgstr "O código do sistema de arquivos %s não suporta rótulos de disco %s."
+
+#~ msgid "Creating new %s disklabels is not implemented yet."
+#~ msgstr "Criação de novos rótulos %s não está implementado ainda."
+
+#~ msgid "The code to write the partition table hasn't been written for %s yet"
+#~ msgstr ""
+#~ "O código para escrever a tabela de partições ainda não foi escrito para "
+#~ "%s."
+
+#~ msgid "Error reading %s (%s) to determine if partition is mounted."
+#~ msgstr "Erro lendo %s (%s) para determinar se a partição está montada."
+
+#~ msgid "Can't grow a partition onto used space."
+#~ msgstr "Não posso aumentar a partição acima de algum espaço utilizado."
+
+#~ msgid "Attempt to read sectors %ld-%ld outside of partition on %s"
+#~ msgstr "Tentativa de ler setores %ld-%ld fora da partição em %s"
+
+#~ msgid ""
+#~ "This ext2 filesystem has a rather strange layout!  Parted can't resize "
+#~ "this (yet)."
+#~ msgstr ""
+#~ "Este sistema de arquivos ext2 tem uma aparência muito estranha! O Parted "
+#~ "não pode redimensioná-lo (ainda)."
+
+#~ msgid "Filesystem has incompatible feature enabled"
+#~ msgstr "Sistema de arquivos tem uma característica incompatível habilitada"
+
+#~ msgid "Insane!  %d clusters!"
+#~ msgstr "Insano! %d clusters!"
+
+#~ msgid ""
+#~ "The filesystem is going to be too big for FAT16, so FAT32 will be used.  "
+#~ "This is not compatible with MS-DOS, early versions of MS-Windows 95 and "
+#~ "Windows NT.  If you use these operating systems, then select cancel, and "
+#~ "create a smaller partition.  If you only use Linux, BSD, MS Windows 98 "
+#~ "and/or MS Windows 95 B, then select OK."
+#~ msgstr ""
+#~ "O sistema de arquivos será muito grande para FAT16, então será usado "
+#~ "FAT32. Isto não é compatível com o MS-DOS, versões antigas do MS-Windows "
+#~ "95 e Windows NT. Se você utiliza estes sistemas operacionais, selecione "
+#~ "cancelar, e crie uma partição menor. Se você utiliza somente Linux, BSD, "
+#~ "MS-Windows 98 e/ou MS-Windows 95 B, então selecione OK."
+
+#~ msgid "Weird: fat_calc_sizes() failed for FAT32!"
+#~ msgstr "Estranho: fat_calc_sizes() falhou para a FAT32!"
+
+#~ msgid ""
+#~ "Would you like to use FAT32 for this filesystem?  It is much more "
+#~ "efficient with your disk space, but is not compatible with early versions "
+#~ "of Windows 95 and Windows NT.  Only select yes if you only use Linux, "
+#~ "BSD, MS Windows 98 and/or MS Windows 95 B."
+#~ msgstr ""
+#~ "Você gostaria de usar a FAT32 para este sistema de arquivos? É muito mais "
+#~ "eficiente com o espaço em disco, mas não é compatível com versões antigas "
+#~ "do Windows 95 e Windows NT. Somente selecione sim se você só utilizar "
+#~ "Linux, BSD, MS-Windows 98 e/ou MS-Windows 95 B."
+
+#~ msgid ""
+#~ "File system doesn't have expected sizes for Windows to like it.  Number "
+#~ "of clusters is %d (%d expected); size of FATs is %d sectors (%d expected)."
+#~ msgstr ""
+#~ "O sistema de arquivos não tem o tamanho esperado para que o Windows "
+#~ "utilize. O tamanho do cluster é %dk (%dk esperado); tamanho da FAT é %d "
+#~ "setores (%d esperado)."
+
+#~ msgid "File system has an invalid signature for a FAT file systems."
+#~ msgstr "Sistema de arquivos tem uma assinatura inválida para um FAT."
+
+#~ msgid ""
+#~ "Partition size (%ld sectors) and filesystem size (%ld sectors) do not "
+#~ "match."
+#~ msgstr ""
+#~ "Tamanho de partição (%ld setores) e tamanho do sistema de arquivos (%ld "
+#~ "setores) não batem."
+
+#~ msgid ""
+#~ "The FATs aren't big enough to describe all clusters!  Each FAT is %d "
+#~ "sectors.  There are %d clusters, which would require each FAT to be %d "
+#~ "sectors.  This is REALLY weird.  You might want to write us an email: bug-"
+#~ "parted@gnu.org"
+#~ msgstr ""
+#~ "As FATs não são grandes o suficiente para descrever todos os clusters! "
+#~ "Cada FAT tem %d setores. Existem %d clusters, os quais requerem que cada "
+#~ "FAT tenha %d setores. Isto é REALMENTE estranho. Você pode querer nos "
+#~ "escrever um email: bug-parted@gnu.org"
+
+#~ msgid ""
+#~ "This swap partition is not compatible with Linux version 2.1.117 or "
+#~ "earlier.  Use a smaller partition (maximum size 128mb) if you want to use "
+#~ "old versions of Linux."
+#~ msgstr ""
+#~ "Esta partição swap não é compatível com o Linux versão 2.1.117 ou "
+#~ "anterior. Utilize uma partição menor (máximo de 128mb) se você quiser "
+#~ "utilizar versões antigas do Linux."
+
+#~ msgid "Linux-swap partitions can not be hidden on msdos disk labels."
+#~ msgstr ""
+#~ "Partições Linux-swap não podem ser escondidas em rótulos de disco msdos."
+
+#~ msgid "Linux-swap partitions can not be bootable on pc98 disk labels."
+#~ msgstr ""
+#~ "Partições Linux-swap não podem ser inicializáveis em rótulos de disco "
+#~ "pc98."
+
+#~ msgid "HFS partitions can't be hidden on msdos disk labels."
+#~ msgstr "Partições HFS não podem ser escondidas em rótulos de disco msdos."
+
+#~ msgid "JFS partitions can't be hidden on msdos disk labels."
+#~ msgstr "Partições JFS não podem ser escondidas em rótulos de disco msdos."
+
+#~ msgid "Reiserfs partitions can't be hidden on msdos disk labels."
+#~ msgstr ""
+#~ "Partições ReiserFS não podem ser escondidas em rótulos de disco msdos."
+
+#~ msgid "Reiserfs partitions must be bootable on pc98 disk labels."
+#~ msgstr ""
+#~ "Partições ReiserFS devem ser inicializáveis em rótulos de disco pc98."
+
+#~ msgid "XFS partitions can't be hidden on msdos disk labels."
+#~ msgstr "Partições XFS não podem ser escondidas em rótulos de disco msdos."
+
+#~ msgid "where necessary, prompts for user intervention"
+#~ msgstr "quando necessário, pede intervenção do usuário"
+
+#~ msgid "START and END are in megabytes\n"
+#~ msgstr "INICIO e FIM são em megabytes\n"
+
+#~ msgid ""
+#~ "You requested to move the partition to %.3f-%.3fMb. The closest Parted "
+#~ "can manage is %.3f-%.3fMb."
+#~ msgstr ""
+#~ "Você comandou a movimentação da partição para %.3f-%.3fMb. O mais perto "
+#~ "que o Parted pode chegar é %.3f-%.3fMb."
+
+#~ msgid "Disk geometry for %s: 0.000-%.3f megabytes\n"
+#~ msgstr "Geometria de disco para %s: 0.000-%.3f megabytes\n"
+
+#~ msgid "Minor    Start       End     "
+#~ msgstr "Minor    Início      Fim     "
+
+#~ msgid "Type      "
+#~ msgstr "Tipo      "
+
+#~ msgid "Name                  "
+#~ msgstr "Nome                  "
+
+#~ msgid ""
+#~ "You requested to resize the partition to %.3f-%.3fMb. The closest Parted "
+#~ "can manage is %.3f-%.3fMb."
+#~ msgstr ""
+#~ "Você comandou o redimensionamento da partição para %.3f-%.3fMb. O mais "
+#~ "perto que o Parted pode chegar é %.3f-%.3fMb."
+
+#~ msgid ""
+#~ "You found a bug in GNU Parted.  Please email a bug report to bug-"
+#~ "parted@gnu.org containing the version (%s), and the following message:\n"
+#~ msgstr ""
+#~ "Você encontrou um bug no GNU parted. Por favor envie um relatório para "
+#~ "bug-parted@gnu.org\n"
+#~ "contendo a versão (%s), e a mensagem abaixo:\n"
+
+#~ msgid ""
+#~ "  You have Windows FAT partition(s) that are not using LBA.  If your BIOS "
+#~ "supports LBA, then you should switch to LBA by setting the LBA flag on "
+#~ "all FAT partitions.  Otherwise, make sure the operating system and the "
+#~ "BIOS have the same geometry before resizing any FAT partitions."
+#~ msgstr ""
+#~ "  Você tem partições FAT Windows que não estão usando LBA. Se seu BIOS "
+#~ "suporta LBA, você deveria mudar para LBA ligando o sinalizador LBA em "
+#~ "todas as partições FAT. De outro modo, tenha certeza que o sistema "
+#~ "operacional e o BIOS têm a mesma geometria antes de redimensionar "
+#~ "quaisquer partições FAT."
+
+#~ msgid ""
+#~ "The operating system thinks the geometry on %s is %d/%d/%d.  Therefore, "
+#~ "cylinder 1024 ends at %.3fM.%s"
+#~ msgstr ""
+#~ "O sistema operacional acha que a geometria de %s é %d/%d/%d. Porém, o "
+#~ "cilindro 1024 termina em %.3fM.%s"
+
+#~ msgid "The operating system thinks the geometry on %s is %d/%d/%d.%s"
+#~ msgstr "O sistema operacional acha que a geometria de %s é %d/%d/%d.%s"
diff --git a/po/quot.sed b/po/quot.sed
new file mode 100644 (file)
index 0000000..0122c46
--- /dev/null
@@ -0,0 +1,6 @@
+s/"\([^"]*\)"/“\1”/g
+s/`\([^`']*\)'/‘\1’/g
+s/ '\([^`']*\)' / ‘\1’ /g
+s/ '\([^`']*\)'$/ ‘\1’/g
+s/^'\([^`']*\)' /‘\1’ /g
+s/“”/""/g
diff --git a/po/remove-potcdate.sin b/po/remove-potcdate.sin
new file mode 100644 (file)
index 0000000..2436c49
--- /dev/null
@@ -0,0 +1,19 @@
+# Sed script that remove the POT-Creation-Date line in the header entry
+# from a POT file.
+#
+# The distinction between the first and the following occurrences of the
+# pattern is achieved by looking at the hold space.
+/^"POT-Creation-Date: .*"$/{
+x
+# Test if the hold space is empty.
+s/P/P/
+ta
+# Yes it was empty. First occurrence. Remove the line.
+g
+d
+bb
+:a
+# The hold space was nonempty. Following occurrences. Do nothing.
+x
+:b
+}
diff --git a/po/ro.gmo b/po/ro.gmo
new file mode 100644 (file)
index 0000000..a60e4b7
Binary files /dev/null and b/po/ro.gmo differ
diff --git a/po/ro.po b/po/ro.po
new file mode 100644 (file)
index 0000000..b629a88
--- /dev/null
+++ b/po/ro.po
@@ -0,0 +1,2538 @@
+# Mesajele în limba românã pentru GNU Parted
+# Copyright (C) 2005 Free Software Foundation, Inc.
+# Laurentiu Buzdugan <lbuz@rolix.org>, 2005
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: parted 1.6.23\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2011-05-30 13:45+0200\n"
+"PO-Revision-Date: 2005-08-08 12:00-05\n"
+"Last-Translator: Laurentiu Buzdugan <lbuz@rolix.org>\n"
+"Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
+"Language: ro\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: lib/argmatch.c:133
+#, fuzzy, c-format
+msgid "invalid argument %s for %s"
+msgstr "Nu pot deschide %s."
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr ""
+
+#: lib/argmatch.c:153
+#, fuzzy, c-format
+msgid "Valid arguments are:"
+msgstr "Nu pot deschide %s."
+
+#: lib/closeout.c:112 libparted/labels/fdasd.c:107
+msgid "write error"
+msgstr ""
+
+#: lib/error.c:181
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Tip de sistem de fiºiere necunoscut \"%s\"."
+
+#: lib/getopt.c:548 lib/getopt.c:577
+#, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
+msgstr ""
+
+#: lib/getopt.c:625 lib/getopt.c:629
+#, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:638 lib/getopt.c:643
+#, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:686 lib/getopt.c:705
+#, c-format
+msgid "%s: option '--%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:743 lib/getopt.c:746
+#, fuzzy, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "Nu pot deschide %s - etichetã de disc nerecunoscutã."
+
+#: lib/getopt.c:754 lib/getopt.c:757
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "Nu pot deschide %s - etichetã de disc nerecunoscutã."
+
+#: lib/getopt.c:806 lib/getopt.c:809
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr ""
+
+#: lib/getopt.c:859 lib/getopt.c:876 lib/getopt.c:1084 lib/getopt.c:1102
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr ""
+
+#: lib/getopt.c:932 lib/getopt.c:948
+#, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:972 lib/getopt.c:990
+#, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:1011 lib/getopt.c:1029
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr ""
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:271
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:272
+msgid "'"
+msgstr ""
+
+#: lib/regcomp.c:133
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:136
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:139
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:142
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:145
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:148
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:151
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:154
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:157
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:160
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:163
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:166
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:169
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:172
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:175
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:178
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:181
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:702
+msgid "No previous regular expression"
+msgstr ""
+
+#. TRANSLATORS: A regular expression testing for an affirmative answer
+#. (english: "yes").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^yesexpr='
+#: lib/rpmatch.c:147
+msgid "^[yY]"
+msgstr ""
+
+#. TRANSLATORS: A regular expression testing for a negative answer
+#. (english: "no").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^noexpr='
+#: lib/rpmatch.c:160
+msgid "^[nN]"
+msgstr ""
+
+#: lib/version-etc.c:74
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr ""
+
+#: lib/version-etc.c:77
+#, c-format
+msgid "Packaged by %s\n"
+msgstr ""
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale.  Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:84
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:86
+msgid ""
+"\n"
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:102
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:106
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:110
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:131
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:139
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:147
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:156
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:167
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package.  Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:245
+#, c-format
+msgid ""
+"\n"
+"Report bugs to: %s\n"
+msgstr ""
+
+#: lib/version-etc.c:247
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr ""
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr ""
+
+#: lib/version-etc.c:253
+#, c-format
+msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
+msgstr ""
+
+#: lib/version-etc.c:256
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr ""
+
+#: lib/xstrtol-error.c:63
+#, fuzzy, c-format
+msgid "invalid %s%s argument `%s'"
+msgstr "Nu pot deschide %s."
+
+#: lib/xstrtol-error.c:68
+#, fuzzy, c-format
+msgid "invalid suffix in %s%s argument `%s'"
+msgstr "Nu pot deschide %s."
+
+#: lib/xstrtol-error.c:72
+#, fuzzy, c-format
+msgid "%s%s argument `%s' too large"
+msgstr "Nu pot deschide %s."
+
+#: libparted/arch/beos.c:245
+msgid "Disk Image"
+msgstr ""
+
+#: libparted/arch/beos.c:346 libparted/arch/gnu.c:277
+#: libparted/arch/linux.c:1545
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "Eroare la deschiderea %s: %s"
+
+#: libparted/arch/beos.c:357 libparted/arch/gnu.c:287
+#: libparted/arch/linux.c:1556
+#, c-format
+msgid "Unable to open %s read-write (%s).  %s has been opened read-only."
+msgstr ""
+"Nu pot deschide %s citire-scriere (%s). %s a fost deschis numai-citire."
+
+#: libparted/arch/beos.c:419 libparted/arch/linux.c:1714
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s în timpul cãutãrii pentru citire pe %s"
+
+#: libparted/arch/beos.c:452 libparted/arch/gnu.c:465 libparted/arch/gnu.c:564
+#: libparted/arch/gnu.c:692 libparted/arch/linux.c:1674
+#: libparted/arch/linux.c:1755
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s în timpul citirii pe %s"
+
+#: libparted/arch/beos.c:488 libparted/arch/gnu.c:525
+#: libparted/arch/linux.c:1831
+#, c-format
+msgid "Can't write to %s, because it is opened read-only."
+msgstr "Nu pot scrie pe %s, pentru cã este deschis numai-citire."
+
+#: libparted/arch/beos.c:504 libparted/arch/linux.c:1856
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s în timpul cãutãrii pentru scriere pe %s"
+
+#: libparted/arch/beos.c:541 libparted/arch/gnu.c:601 libparted/arch/gnu.c:646
+#: libparted/arch/gnu.c:723 libparted/arch/linux.c:1804
+#: libparted/arch/linux.c:1898 libparted/arch/linux.c:1970
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s în timpul scrierii pe %s"
+
+#: partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr ""
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the operating system about partition table changes.\n"
+"\n"
+"  -d, --dry-run    do not actually inform the operating system\n"
+"  -s, --summary    print a summary of contents\n"
+"  -h, --help       display this help and exit\n"
+"  -v, --version    output version information and exit\n"
+msgstr ""
+
+#: partprobe/partprobe.c:150
+msgid ""
+"\n"
+"When no DEVICE is given, probe all partitions.\n"
+msgstr ""
+
+#: partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: libparted/arch/gnu.c:110
+#, c-format
+msgid "Unable to open %s."
+msgstr "Nu pot deschide %s."
+
+#: libparted/arch/gnu.c:130
+msgid "Unable to probe store."
+msgstr "Nu pot proba `store'."
+
+#: libparted/arch/gnu.c:368
+msgid ""
+"The partition table cannot be re-read.  This means you need to reboot before "
+"mounting any modified partitions.  You also need to reinstall your boot "
+"loader before you reboot (which may require mounting modified partitions).  "
+"It is impossible do both things!  So you'll need to boot off a rescue disk, "
+"and reinstall your boot loader from the rescue disk.  Read section 4 of the "
+"Parted User documentation for more information."
+msgstr ""
+"Tabela de partiþii nu poate fi recititã.  Aceasta înseamnã cã trebuie sã "
+"reboot-aþi înainte  de a monta orice partiþii modificate.  Deasemenea, ar "
+"trebui sã reinstalaþi boot loader-ul înainte de a reboot-a (ceea ce ar putea "
+"sã necesite montarea partiþiilor modificate).  Este imposibil sã faceþi "
+"ambele lucruri!  Aºa cã trebuie sã boot-aþi de pe un disc de salvare ºi "
+"reinstalaþi boot loader-ul d-voastrã de pe discul de salvare.  Citiþi "
+"secþiunea 4 din documentaþia utilizatorului de Parted pentru informaþii "
+"suplimentare."
+
+#: libparted/arch/gnu.c:385
+#, c-format
+msgid ""
+"The partition table on %s cannot be re-read (%s).  This means the Hurd knows "
+"nothing about any modifications you made.  You should reboot your computer "
+"before doing anything with %s."
+msgstr ""
+"Tabela de partiþii pe %s nu poate fi re-cititã (%s).  Aceasta înseamnã cã "
+"Hurd nu ºtie nimic despre nici o modificare pe care aþi fãcut-o.  Ar trebui "
+"sã reboot-aþi computerul înainte de a face ceva cu %s."
+
+#: libparted/arch/gnu.c:396 parted/parted.c:1967
+msgid ""
+"You should reinstall your boot loader before rebooting.  Read section 4 of "
+"the Parted User documentation for more information."
+msgstr ""
+"Ar trebui sã reinstalaþi boot loader-ul d-voastrã înainte de reboot-are.  "
+"Citiþi secþiunea 4 din documentaþia utilizatorului Parted pentru informaþii "
+"suplimentare."
+
+#: libparted/arch/gnu.c:788
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%s încearcã sã sincronizeze %s pe disc"
+
+#: libparted/arch/linux.c:520
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "Nu am putut afla date despre dispozitivul %s - %s."
+
+#: libparted/arch/linux.c:577
+#, fuzzy, c-format
+msgid "Unable to determine the dm type of %s."
+msgstr "Nu pot determina dimensiunea lui %s (%s)."
+
+#: libparted/arch/linux.c:669
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+
+#: libparted/arch/linux.c:690
+#, c-format
+msgid ""
+"Could not determine physical sector size for %s.\n"
+"Using the logical sector size (%lld)."
+msgstr ""
+
+#: libparted/arch/linux.c:746
+#, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "Nu pot determina dimensiunea lui %s (%s)."
+
+#: libparted/arch/linux.c:832
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "Nu am putut identifica dispozitivul %s - %s"
+
+#: libparted/arch/linux.c:841
+msgid "Generic IDE"
+msgstr ""
+
+#: libparted/arch/linux.c:862
+#, c-format
+msgid ""
+"Device %s has multiple (%d) logical sectors per physical sector.\n"
+"GNU Parted supports this EXPERIMENTALLY for some special disk label/file "
+"system combinations, e.g. GPT and ext2/3.\n"
+"Please consult the web site for up-to-date information."
+msgstr ""
+
+#: libparted/arch/linux.c:1039
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "Eroare la iniþializarea dispozitivului SCSI %s - %s"
+
+#: libparted/arch/linux.c:1103
+#, fuzzy, c-format
+msgid ""
+"The device %s is so small that it cannot possibly store a file system or "
+"partition table.  Perhaps you selected the wrong device?"
+msgstr ""
+"Dispozitivul %s are lungime-zero ºi nu poate fizic stoca un sistem de "
+"fiºiere sau o tabelã de partiþii. Aþi selectat din greºealã un alt "
+"dispozitiv?"
+
+#: libparted/arch/linux.c:1216
+#, fuzzy, c-format
+msgid ""
+"Unable to determine geometry of file/device %s.  You should not use Parted "
+"unless you REALLY know what you're doing!"
+msgstr ""
+"Nu pot determina geometria fiºierului/dispozitivului. N-ar trebui sã "
+"folosiþi Parted decât dacã ºtiþi cu ADEVÃRAT ce faceþi!"
+
+#: libparted/arch/linux.c:1276
+msgid "Generic SD/MMC Storage Card"
+msgstr ""
+
+#: libparted/arch/linux.c:1329
+msgid "DAC960 RAID controller"
+msgstr "Controller RAID DAC960"
+
+#: libparted/arch/linux.c:1334
+msgid "Promise SX8 SATA Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1339
+msgid "ATA over Ethernet Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1345
+msgid "IBM S390 DASD drive"
+msgstr ""
+
+#: libparted/arch/linux.c:1351
+msgid "IBM iSeries Virtual DASD"
+msgstr ""
+
+#: libparted/arch/linux.c:1356
+msgid "Compaq Smart Array"
+msgstr "Compaq Smart Array"
+
+#: libparted/arch/linux.c:1361
+msgid "ATARAID Controller"
+msgstr "Controller ATARAID"
+
+#: libparted/arch/linux.c:1366
+msgid "I2O Controller"
+msgstr "Controller I2O"
+
+#: libparted/arch/linux.c:1371
+msgid "User-Mode Linux UBD"
+msgstr ""
+
+#: libparted/arch/linux.c:1384
+#, c-format
+msgid "Linux device-mapper (%s)"
+msgstr ""
+
+#: libparted/arch/linux.c:1395
+msgid "Xen Virtual Block Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1400
+msgid "Unknown"
+msgstr "Necunoscut"
+
+#: libparted/arch/linux.c:1409
+msgid "Virtio Block Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1414
+msgid "Linux Software RAID Array"
+msgstr ""
+
+#: libparted/arch/linux.c:1421
+msgid "ped_device_new()  Unsupported device type"
+msgstr "ped_device_new() Tip de dispozitiv nesuportat"
+
+#: libparted/arch/linux.c:1518 libparted/arch/linux.c:1590
+#, fuzzy, c-format
+msgid "Error fsyncing/closing %s: %s"
+msgstr "Eroare la deschiderea %s: %s"
+
+#: libparted/arch/linux.c:1754
+#, c-format
+msgid "end of file while reading %s"
+msgstr ""
+
+#: libparted/arch/linux.c:2390
+#, c-format
+msgid ""
+"Error informing the kernel about modifications to partition %s -- %s.  This "
+"means Linux won't know about any changes you made to %s until you reboot -- "
+"so you shouldn't mount it or use it in any way before rebooting."
+msgstr ""
+"Eroare la informarea kernel-ului despre modificãrile fãcute partiþiei %s -- "
+"%s.  Aceasta înseamnã cã Linux nu va ºti nimic despre schimbãrile pe care le-"
+"aþi fãcut lui %s pânã când nu reboot-aþi -- aºa cã n-ar trebui sã îl montaþi "
+"sau folosiþi în vreun fel înainte de a reboot-a."
+
+#: libparted/arch/linux.c:2528
+#, fuzzy, c-format
+msgid "Unable to determine the size and length of %s."
+msgstr "Nu pot determina dimensiunea lui %s (%s)."
+
+#: libparted/arch/linux.c:2553
+#, fuzzy, c-format
+msgid "Failed to add partition %d (%s)"
+msgstr "Nu pot aloca un numãr de partiþie."
+
+#: libparted/arch/linux.c:2580
+#, c-format
+msgid ""
+"Partition(s) %s on %s have been written, but we have been unable to inform "
+"the kernel of the change, probably because it/they are in use.  As a result, "
+"the old partition(s) will remain in use.  You should reboot now before "
+"making further changes."
+msgstr ""
+
+#: libparted/arch/linux.c:2706
+#, fuzzy, c-format
+msgid ""
+"parted was unable to re-read the partition table on %s (%s).  This means "
+"Linux won't know anything about the modifications you made. "
+msgstr ""
+"Kernel-ul nu a putut re-citi tabela de partiþii pe %s (%s).  Aceasta "
+"înseamnã cã Linux nu va ºti nimic despre schimbãrile pe care le-aþi fãcut "
+"pânã când nu reboot-aþi.  Ar trebui sã reboot-aþi computerul înainte de a "
+"face ceva cu %s."
+
+#: libparted/cs/geom.c:161
+#, c-format
+msgid "Can't have the end before the start! (start sector=%jd length=%jd)"
+msgstr ""
+
+#: libparted/cs/geom.c:169
+msgid "Can't have a partition outside the disk!"
+msgstr ""
+
+#: libparted/cs/geom.c:384
+#, c-format
+msgid "Attempt to write sectors %ld-%ld outside of partition on %s."
+msgstr ""
+
+#: libparted/cs/geom.c:424
+msgid "checking for bad blocks"
+msgstr ""
+
+#: libparted/debug.c:96
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:109
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr ""
+
+#: libparted/disk.c:192
+#, fuzzy, c-format
+msgid "%s: unrecognised disk label"
+msgstr "Nu pot deschide %s - etichetã de disc nerecunoscutã."
+
+#: libparted/disk.c:484
+#, c-format
+msgid ""
+"This libparted doesn't have write support for %s.  Perhaps it was compiled "
+"read-only."
+msgstr ""
+"Aceast libparted nu are suport pentru %s. Probabil cã a fost compilat numai-"
+"citire."
+
+#: libparted/disk.c:629
+#, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "Partiþia %d este %s, dar sistemul de fiºiere este %s."
+
+#: libparted/disk.c:838
+msgid "cylinder_alignment"
+msgstr ""
+
+#: libparted/disk.c:844
+#, fuzzy, c-format
+msgid "Unknown disk flag, %d."
+msgstr "Flag de partiþie necunoscut, %d."
+
+#: libparted/disk.c:1283
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "Etichetele de disc %s nu suportã partiþii extinse."
+
+#: libparted/disk.c:1858
+#, c-format
+msgid "%s disk labels don't support logical or extended partitions."
+msgstr "Etichetele de disc %s nu suportã partiþii logice sau extinse."
+
+#: libparted/disk.c:1871
+msgid "Too many primary partitions."
+msgstr "Prea multe partiþii primare."
+
+#: libparted/disk.c:1880
+#, c-format
+msgid ""
+"Can't add a logical partition to %s, because there is no extended partition."
+msgstr ""
+"Nu pot adãuga o partiþie logicã lui %s pentru cã aceasta nu este o partiþie "
+"extinsã."
+
+#: libparted/disk.c:1904
+#, c-format
+msgid "Can't have more than one extended partition on %s."
+msgstr "Nu puteþi avea mai mult de o partiþie extinsã pe %s."
+
+#: libparted/disk.c:1914
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr "Nu puteþi avea partiþii logice în afara partiþiei extinse."
+
+#: libparted/disk.c:1939
+#, c-format
+msgid "Can't have a logical partition outside of the extended partition on %s."
+msgstr "Nu puteþi avea o partiþie logicã în afara partiþiei extinse pe %s."
+
+#: libparted/disk.c:1949 libparted/disk.c:2008 libparted/disk.c:2186
+msgid "Can't have overlapping partitions."
+msgstr "Nu puteþi avea partiþii care se suprapun."
+
+#: libparted/disk.c:1957
+msgid "Can't have a primary partition inside an extended partition."
+msgstr "Nu puteþi avea o partiþie primarã într-o partiþie extinsã."
+
+#: libparted/disk.c:2387
+msgid "metadata"
+msgstr "metadata"
+
+#: libparted/disk.c:2389
+msgid "free"
+msgstr "liber"
+
+#: libparted/disk.c:2391 parted/ui.c:1194 parted/ui.c:1222
+msgid "extended"
+msgstr "extinsã"
+
+#: libparted/disk.c:2393 parted/ui.c:1198 parted/ui.c:1226
+msgid "logical"
+msgstr "logicã"
+
+#: libparted/disk.c:2395 parted/ui.c:1190 parted/ui.c:1218
+msgid "primary"
+msgstr "primarã"
+
+#: libparted/disk.c:2411
+msgid "boot"
+msgstr "boot"
+
+#: libparted/disk.c:2413
+msgid "bios_grub"
+msgstr ""
+
+#: libparted/disk.c:2415
+msgid "root"
+msgstr "root"
+
+#: libparted/disk.c:2417
+msgid "swap"
+msgstr "swap"
+
+#: libparted/disk.c:2419
+msgid "hidden"
+msgstr "ascunsã"
+
+#: libparted/disk.c:2421
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2423
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2425
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2427
+msgid "hp-service"
+msgstr "hp-service"
+
+#: libparted/disk.c:2429
+msgid "palo"
+msgstr ""
+
+#: libparted/disk.c:2431
+msgid "prep"
+msgstr ""
+
+#: libparted/disk.c:2433
+msgid "msftres"
+msgstr ""
+
+#: libparted/disk.c:2435
+msgid "atvrecv"
+msgstr ""
+
+#: libparted/disk.c:2437
+msgid "diag"
+msgstr ""
+
+#: libparted/disk.c:2439
+msgid "legacy_boot"
+msgstr ""
+
+#: libparted/disk.c:2445
+#, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Flag de partiþie necunoscut, %d."
+
+#: libparted/exception.c:77
+msgid "Information"
+msgstr "Informaþii"
+
+#: libparted/exception.c:78
+msgid "Warning"
+msgstr "Avertisment"
+
+#: libparted/exception.c:79
+msgid "Error"
+msgstr "Eroare"
+
+#: libparted/exception.c:80
+msgid "Fatal"
+msgstr "Fatalã"
+
+#: libparted/exception.c:81
+msgid "Bug"
+msgstr "Bug"
+
+#: libparted/exception.c:82
+msgid "No Implementation"
+msgstr ""
+
+#: libparted/exception.c:86
+msgid "Fix"
+msgstr ""
+
+#: libparted/exception.c:87
+msgid "Yes"
+msgstr ""
+
+#: libparted/exception.c:88
+msgid "No"
+msgstr ""
+
+#: libparted/exception.c:89
+msgid "OK"
+msgstr ""
+
+#: libparted/exception.c:90
+msgid "Retry"
+msgstr ""
+
+#: libparted/exception.c:91
+msgid "Ignore"
+msgstr ""
+
+#: libparted/exception.c:92
+msgid "Cancel"
+msgstr ""
+
+#: libparted/exception.c:132
+#, c-format
+msgid ""
+"A bug has been detected in GNU Parted.  Refer to the web site of parted "
+"http://www.gnu.org/software/parted/parted.html for more information of what "
+"could be useful for bug submitting!  Please email a bug report to %s "
+"containing at least the version (%s) and the following message:  "
+msgstr ""
+
+#: libparted/labels/aix.c:103
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr ""
+
+#: libparted/labels/aix.c:114
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr ""
+
+#: libparted/labels/aix.c:127
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr ""
+
+#: libparted/labels/aix.c:137
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr ""
+
+#: libparted/labels/aix.c:155
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr ""
+
+#: libparted/labels/aix.c:165
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr ""
+
+#: libparted/labels/bsd.c:571 libparted/labels/dasd.c:833
+#: libparted/labels/dos.c:2176 libparted/labels/dvh.c:787
+#: libparted/labels/gpt.c:1782 libparted/labels/loop.c:247
+#: libparted/labels/mac.c:1426 libparted/labels/pc98.c:748
+#: libparted/labels/rdb.c:1052 libparted/labels/sun.c:780
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "Nu pot satisface toate constrângerile pe partiþie."
+
+#: libparted/labels/bsd.c:596
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "Nu pot aloca loc pentru eticheta de disc bsd."
+
+#: libparted/labels/dasd.c:859
+#, fuzzy
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "Nu pot aloca loc pentru eticheta de disc bsd."
+
+#: libparted/labels/dos.c:966
+#, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr "Tabela de partiþii invalidã pe %s -- semnãturã greºitã %x."
+
+#: libparted/labels/dos.c:994
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "Tabela de partiþii invalidã - partiþie recursivã pe %s."
+
+#: libparted/labels/dos.c:1504
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr ""
+
+#: libparted/labels/dos.c:2158
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+
+#: libparted/labels/dvh.c:200
+#, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr ""
+
+#: libparted/labels/dvh.c:326
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr ""
+
+#: libparted/labels/dvh.c:631
+msgid "Only primary partitions can be root partitions."
+msgstr ""
+
+#: libparted/labels/dvh.c:645
+msgid "Only primary partitions can be swap partitions."
+msgstr ""
+
+#: libparted/labels/dvh.c:659
+msgid "Only logical partitions can be a boot file."
+msgstr ""
+
+#: libparted/labels/dvh.c:736
+#, c-format
+msgid ""
+"failed to set dvh partition name to %s:\n"
+"Only logical partitions (boot files) have a name."
+msgstr ""
+
+#: libparted/labels/dvh.c:829
+msgid "Too many primary partitions"
+msgstr ""
+
+#: libparted/labels/fdasd.c:98
+msgid "open error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:101
+msgid "seek error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:104
+msgid "read error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:110
+msgid "ioctl() error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:114
+msgid "API version mismatch"
+msgstr ""
+
+#: libparted/labels/fdasd.c:118
+#, fuzzy
+msgid "Unsupported disk type"
+msgstr "ped_device_new() Tip de dispozitiv nesuportat"
+
+#: libparted/labels/fdasd.c:122
+msgid "Unsupported disk format"
+msgstr ""
+
+#: libparted/labels/fdasd.c:126
+msgid "Disk is in use"
+msgstr ""
+
+#: libparted/labels/fdasd.c:130
+msgid "Syntax error in config file"
+msgstr ""
+
+#: libparted/labels/fdasd.c:134
+msgid "Volume label is corrupted"
+msgstr ""
+
+#: libparted/labels/fdasd.c:138
+msgid "A data set name is corrupted"
+msgstr ""
+
+#: libparted/labels/fdasd.c:142
+msgid "Memory allocation failed"
+msgstr ""
+
+#: libparted/labels/fdasd.c:146
+msgid "Device verification failed"
+msgstr ""
+
+#: libparted/labels/fdasd.c:147
+msgid "The specified device is not a valid DASD device"
+msgstr ""
+
+#: libparted/labels/fdasd.c:150 libparted/labels/vtoc.c:179
+#, fuzzy
+msgid "Fatal error"
+msgstr "Fatalã"
+
+#: libparted/labels/fdasd.c:226
+msgid "No room for volume label."
+msgstr ""
+
+#: libparted/labels/fdasd.c:234
+#, fuzzy
+msgid "No room for partition info."
+msgstr "Nu a fost gãsitã nici o hartã de partiþie validã."
+
+#: libparted/labels/fdasd.c:709
+msgid "Invalid VTOC."
+msgstr ""
+
+#: libparted/labels/fdasd.c:766
+msgid "Could not retrieve API version."
+msgstr ""
+
+#: libparted/labels/fdasd.c:769
+#, c-format
+msgid ""
+"The current API version '%d' doesn't match dasd driver API version '%d'!"
+msgstr ""
+
+#: libparted/labels/fdasd.c:806
+msgid "Could not retrieve disk geometry information."
+msgstr ""
+
+#: libparted/labels/fdasd.c:810
+msgid "Could not retrieve blocksize information."
+msgstr ""
+
+#: libparted/labels/fdasd.c:815
+msgid "Could not retrieve disk information."
+msgstr ""
+
+#: libparted/labels/gpt.c:493
+#, c-format
+msgid ""
+"%s contains GPT signatures, indicating that it has a GPT table.  However, it "
+"does not have a valid fake msdos partition table, as it should.  Perhaps it "
+"was corrupted -- possibly by a program that doesn't understand GPT partition "
+"tables.  Or perhaps you deleted the GPT table, and are now using an msdos "
+"partition table.  Is this a GPT partition table?"
+msgstr ""
+"%s conþine semnãturi GPT, indicând cã are o tabelã GPT.  Totuºi, aceasta nu "
+"are o tabelã de partiþii msdos falsã, aºa cum ar trebui.  Probabil cã a fost "
+"coruptã -- posibil de un program ce nu înþelege tabelele de partiþii GPT.  "
+"Sau probabil cã aþi ºters tabela GPT ºi folosiþi acum o tabelã de partiþii "
+"msdos.  Este aceasta o tabelã de partiþii GPT?"
+
+#: libparted/labels/gpt.c:693
+#, fuzzy, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise.  Please report this!"
+msgstr ""
+"Formatul tabelei de partiþii GPT este versiunea %x, care este mai nou decât "
+"ceea ce Parted poate recunoaºte.  Vã rugãm spuneþi-ne!  bug-parted@gnu.org"
+
+#: libparted/labels/gpt.c:740
+#, c-format
+msgid ""
+"Not all of the space available to %s appears to be used, you can fix the GPT "
+"to use all of the space (an extra %llu blocks) or continue with the current "
+"setting? "
+msgstr ""
+
+#: libparted/labels/gpt.c:952
+msgid ""
+"The backup GPT table is not at the end of the disk, as it should be.  This "
+"might mean that another operating system believes the disk is smaller.  Fix, "
+"by moving the backup to the end (and removing the old backup)?"
+msgstr ""
+"Tabela GPT de rezervã nu este la sfârºitul discului, cum ar trbui sã fie.  "
+"Aceasta ar putea însemna cã un alt sistem de operare crede cã diacul este "
+"mai mic.  Reparã, mutând rezerva (backup) la sfârºit (ºi ºterge vechea "
+"rezervã?"
+
+#: libparted/labels/gpt.c:976
+msgid ""
+"Both the primary and backup GPT tables are corrupt.  Try making a fresh "
+"table, and using Parted's rescue feature to recover partitions."
+msgstr ""
+"Atât tabela primarã cât ºi cea de rezervã sunt corupte.  Încercaþi sã creaþi "
+"o tabelã nouã ºi sã folosiþi capabilitatea de salvare lui Parted pentru a "
+"recupera partiþiile."
+
+#: libparted/labels/gpt.c:987
+#, fuzzy
+msgid ""
+"The backup GPT table is corrupt, but the primary appears OK, so that will be "
+"used."
+msgstr ""
+"Tabela primarã GPT este coruptã, dar rezerva pare OK, aºa cã va fi folositã "
+"rezerva."
+
+#: libparted/labels/gpt.c:999
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr ""
+"Tabela primarã GPT este coruptã, dar rezerva pare OK, aºa cã va fi folositã "
+"rezerva."
+
+#: libparted/labels/gpt.c:1023
+msgid "primary partition table array CRC mismatch"
+msgstr ""
+
+#: libparted/labels/mac.c:184
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Semnãturã invalidã %x pentru etichetele de disc pentru Mac."
+
+#: libparted/labels/mac.c:231
+msgid "Partition map has no partition map entry!"
+msgstr "Harta de partiþii nu are nici o intrare!"
+
+#: libparted/labels/mac.c:279
+#, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr "%s este prea mic pentr o etichetã de disc pentru Mac."
+
+#: libparted/labels/mac.c:508
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "Partiþia %d are o semnãturã invalidã %x."
+
+#: libparted/labels/mac.c:526
+#, c-format
+msgid "Partition %d has an invalid length of 0 bytes!"
+msgstr "Partiþia %d are o lungime invalidã de 0 octeþi!"
+
+#: libparted/labels/mac.c:557
+msgid "The data region doesn't start at the start of the partition."
+msgstr "Regiunea de date nu începe la începutul partiþiei."
+
+#: libparted/labels/mac.c:574
+msgid "The boot region doesn't start at the start of the partition."
+msgstr "Regiunea de boot nu începe la începutul partiþiei."
+
+#: libparted/labels/mac.c:588
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr "Regiunea de boot a partiþiei nu ocupã întreaga partiþie."
+
+#: libparted/labels/mac.c:599
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr "Regiunea de date a partiþiei nu ocupã întreaga partiþie."
+
+#: libparted/labels/mac.c:652
+#, c-format
+msgid ""
+"Weird block size on device descriptor: %d bytes is not divisible by 512."
+msgstr ""
+"Dimensiune de bloc ciudatã pe descriptorul dispozitivului: %d octeþi nu este "
+"divizibil cu 512."
+
+#: libparted/labels/mac.c:665
+#, c-format
+msgid ""
+"The driver descriptor says the physical block size is %d bytes, but Linux "
+"says it is %d bytes."
+msgstr ""
+"Descriptorul de driver spune cã dimensiunea fizicã a blocului este %d octeþi "
+"dar Linux spune cã este %d octeþi."
+
+#: libparted/labels/mac.c:719
+msgid "No valid partition map found."
+msgstr "Nu a fost gãsitã nici o hartã de partiþie validã."
+
+#: libparted/labels/mac.c:780
+#, c-format
+msgid ""
+"Conflicting partition map entry sizes!  Entry 1 says it is %d, but entry %d "
+"says it is %d!"
+msgstr ""
+
+#: libparted/labels/mac.c:811
+msgid "Weird!  There are 2 partitions map entries!"
+msgstr "Ciudat!  Existã 2 intrãri în harta partiþiei"
+
+#: libparted/labels/mac.c:1357
+msgid ""
+"Changing the name of a root or swap partition will prevent Linux from "
+"recognising it as such."
+msgstr ""
+
+#: libparted/labels/mac.c:1461
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr ""
+
+#: libparted/labels/pc98.c:331
+#, c-format
+msgid "Invalid partition table on %s."
+msgstr "Tabela de partiþii invalidã pe %s."
+
+#: libparted/labels/pc98.c:384 libparted/labels/pc98.c:462
+#, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries.  This is still "
+"unsupported."
+msgstr ""
+
+#: libparted/labels/pc98.c:780
+msgid "Can't add another partition."
+msgstr ""
+
+#: libparted/labels/pt-tools.c:125
+#, c-format
+msgid ""
+"partition length of %jd sectors exceeds the %s-partition-table-imposed "
+"maximum of %jd"
+msgstr ""
+
+#: libparted/labels/pt-tools.c:138
+#, c-format
+msgid ""
+"starting sector number, %jd exceeds the %s-partition-table-imposed maximum "
+"of %jd"
+msgstr ""
+
+#: libparted/labels/rdb.c:169
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:484
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr ""
+
+#: libparted/labels/rdb.c:573
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr ""
+
+#: libparted/labels/rdb.c:592
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:691
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:699
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:707
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:715
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:742
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr ""
+
+#: libparted/labels/rdb.c:1080
+msgid "Unable to allocate a partition number."
+msgstr "Nu pot aloca un numãr de partiþie."
+
+#: libparted/labels/sun.c:161
+msgid "Corrupted Sun disk label detected."
+msgstr ""
+
+#: libparted/labels/sun.c:276
+#, c-format
+msgid ""
+"The disk CHS geometry (%d,%d,%d) reported by the operating system does not "
+"match the geometry stored on the disk label (%d,%d,%d)."
+msgstr ""
+
+#: libparted/labels/sun.c:298
+#, c-format
+msgid "The disk label describes a disk bigger than %s."
+msgstr ""
+
+#: libparted/labels/sun.c:473
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr ""
+
+#: libparted/labels/sun.c:812
+msgid ""
+"The Whole Disk partition is the only available one left.  Generally, it is "
+"not a good idea to overwrite this partition with a real one.  Solaris may "
+"not be able to boot without it, and SILO (the sparc boot loader) appreciates "
+"it as well."
+msgstr ""
+
+#: libparted/labels/sun.c:827
+msgid "Sun disk label is full."
+msgstr ""
+
+#: libparted/labels/vtoc.c:164
+msgid "opening of device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:168
+msgid "seeking on device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:172
+msgid "writing to device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:176
+msgid "reading from device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:299 libparted/labels/vtoc.c:308
+#: libparted/labels/vtoc.c:329 libparted/labels/vtoc.c:336
+msgid "Could not read volume label."
+msgstr ""
+
+#: libparted/labels/vtoc.c:356 libparted/labels/vtoc.c:363
+msgid "Could not write volume label."
+msgstr ""
+
+#: libparted/labels/vtoc.c:469
+msgid "Could not read VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:496
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:516
+msgid "Could not write VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:522
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:529
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:536
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:543
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/libparted.c:230 libparted/libparted.c:245
+msgid "Out of memory."
+msgstr ""
+
+#: libparted/unit.c:138
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr ""
+
+#: libparted/unit.c:384
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr ""
+
+#: libparted/unit.c:392
+#, c-format
+msgid "The maximum head value is %d."
+msgstr ""
+
+#: libparted/unit.c:399
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr ""
+
+#: libparted/unit.c:411 libparted/unit.c:556
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr ""
+
+#: libparted/unit.c:531
+msgid "Invalid number."
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:62 libparted/fs/amiga/apfs.c:55
+#: libparted/fs/amiga/asfs.c:69
+#, fuzzy, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "Nu pot aloca un numãr de partiþie."
+
+#: libparted/fs/amiga/affs.c:77 libparted/fs/amiga/apfs.c:68
+#: libparted/fs/amiga/asfs.c:81
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:82 libparted/fs/amiga/apfs.c:73
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:98 libparted/fs/amiga/apfs.c:84
+#: libparted/fs/amiga/asfs.c:87 libparted/fs/amiga/asfs.c:101
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:71
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:188
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:201
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:211
+#, fuzzy, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s în timpul scrierii pe %s"
+
+#: libparted/fs/amiga/amiga.c:277
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:288
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:317
+#, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr ""
+
+#: libparted/fs/fat/fat.c:174
+msgid ""
+"GNU Parted was miscompiled: the FAT boot sector should be 512 bytes.  FAT "
+"support will be disabled."
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:49 libparted/fs/fat/bootsector.c:56
+msgid "File system has an invalid signature for a FAT file system."
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:64
+msgid "File system has an invalid sector size for a FAT file system."
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:71
+msgid "File system has an invalid cluster size for a FAT file system."
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:78
+msgid ""
+"File system has an invalid number of reserved sectors for a FAT file system."
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:85
+msgid "File system has an invalid number of FATs."
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:156
+#, c-format
+msgid ""
+"This file system has a logical sector size of %d.  GNU Parted is known not "
+"to work properly with sector sizes other than 512 bytes."
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:181
+#, c-format
+msgid ""
+"The file system's CHS geometry is (%d, %d, %d), which is invalid.  The "
+"partition table's CHS geometry is (%d, %d, %d).  If you select Ignore, the "
+"file system's CHS geometry will be left unchanged.  If you select Fix, the "
+"file system's CHS geometry will be set to match the partition table's CHS "
+"geometry."
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:230
+msgid "FAT boot sector says logical sector size is 0.  This is weird. "
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:236
+msgid "FAT boot sector says there are no FAT tables.  This is weird. "
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:242
+msgid "FAT boot sector says clusters are 0 sectors.  This is weird. "
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:252
+msgid "File system is FAT12, which is unsupported."
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:428
+#, c-format
+msgid ""
+"The information sector has the wrong signature (%x).  Select cancel for now, "
+"and send in a bug report.  If you're desperate, it's probably safe to ignore."
+msgstr ""
+
+#: libparted/fs/linux_swap/linux_swap.c:247
+#, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr ""
+
+#: libparted/fs/linux_swap/linux_swap.c:290
+#, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr ""
+
+#: libparted/fs/linux_swap/linux_swap.c:330
+#, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr ""
+
+#: libparted/fs/hfs/probe.c:50
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to "
+"%d bytes."
+msgstr ""
+
+#: parted/parted.c:123
+msgid "displays this help message"
+msgstr ""
+
+#: parted/parted.c:124
+msgid "lists partition layout on all block devices"
+msgstr ""
+
+#: parted/parted.c:125
+msgid "displays machine parseable output"
+msgstr ""
+
+#: parted/parted.c:126
+msgid "never prompts for user intervention"
+msgstr ""
+
+#: parted/parted.c:127
+msgid "displays the version"
+msgstr ""
+
+#: parted/parted.c:128
+#, fuzzy
+msgid "alignment for new partitions"
+msgstr "Nu mai pot crea nici o partiþie"
+
+#: parted/parted.c:140
+msgid ""
+"NUMBER is the partition number used by Linux.  On MS-DOS disk labels, the "
+"primary partitions number from 1 to 4, logical partitions from 5 onwards.\n"
+msgstr ""
+
+#: parted/parted.c:143
+msgid "LABEL-TYPE is one of: "
+msgstr ""
+
+#: parted/parted.c:144
+msgid "FLAG is one of: "
+msgstr ""
+
+#: parted/parted.c:145
+msgid "UNIT is one of: "
+msgstr ""
+
+#: parted/parted.c:146
+msgid "desired alignment: minimum or optimal"
+msgstr ""
+
+#: parted/parted.c:147
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr ""
+
+#: parted/parted.c:149
+msgid "FS-TYPE is one of: "
+msgstr ""
+
+#: parted/parted.c:150
+msgid ""
+"START and END are disk locations, such as 4GB or 10%.  Negative values count "
+"from the end of the disk.  For example, -1s specifies exactly the last "
+"sector.\n"
+msgstr ""
+
+#: parted/parted.c:153
+msgid "STATE is one of: on, off\n"
+msgstr ""
+
+#: parted/parted.c:154
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr ""
+
+#: parted/parted.c:155
+msgid "NAME is any word you want\n"
+msgstr ""
+
+#: parted/parted.c:158
+#, fuzzy
+msgid ""
+"Copyright (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"This program is free software, covered by the GNU General Public License.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+msgstr ""
+"Copyright (C) 1998 - 2005 Free Software Foundation, Inc.\n"
+"Acest program e software liber, distribuit sub GNU General Public License.\n"
+"\n"
+"Acest program este distribui în speranþa cã va fi folositor, dar FÃRàNICI\n"
+"O GARANÞIE; chiar ºi fãrã garanþia implicitã de VANDABILITATE sau POTRIVIRE\n"
+"PENTRU UN SCOP ANUME.  Vedeþi Licenþa Publicã Generalã GNU (GNU GPL) pentru\n"
+"detalii suplimentare.\n"
+
+#: parted/parted.c:204
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr ""
+
+#: parted/parted.c:223
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+
+#: parted/parted.c:241
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr ""
+
+#: parted/parted.c:253
+#, c-format
+msgid ""
+"The existing disk label on %s will be destroyed and all data on this disk "
+"will be lost. Do you want to continue?"
+msgstr ""
+
+#: parted/parted.c:502
+msgid "New disk label type?"
+msgstr "Tip de etichetã pentru discul nou?"
+
+#: parted/parted.c:562
+msgid "Partition type?"
+msgstr ""
+
+#: parted/parted.c:580 parted/parted.c:766
+msgid "Partition name?"
+msgstr ""
+
+#: parted/parted.c:588
+msgid "File system type?"
+msgstr ""
+
+#: parted/parted.c:594 parted/parted.c:1342
+msgid "Start?"
+msgstr ""
+
+#: parted/parted.c:596 parted/parted.c:1344
+msgid "End?"
+msgstr ""
+
+#: parted/parted.c:661
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s.%s"
+msgstr ""
+
+#: parted/parted.c:666
+msgid ""
+"\n"
+"Is this still acceptable to you?"
+msgstr ""
+
+#: parted/parted.c:688
+msgid "The resulting partition is not properly aligned for best performance."
+msgstr ""
+
+#: parted/parted.c:763 parted/parted.c:1383 parted/parted.c:1455
+#: parted/parted.c:1489
+msgid "Partition number?"
+msgstr ""
+
+#: parted/parted.c:841
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d.  Each cylinder is %s.\n"
+msgstr ""
+
+#: parted/parted.c:881
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr ""
+
+#: parted/parted.c:883
+#, c-format
+msgid "Disk %s: %s\n"
+msgstr ""
+
+#: parted/parted.c:884
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr ""
+
+#: parted/parted.c:896
+#, fuzzy, c-format
+msgid "Partition Table: %s\n"
+msgstr "Tabela de partiþii invalidã pe %s."
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Number"
+msgstr "Numãr"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Start"
+msgstr "Start"
+
+#: parted/parted.c:1008 parted/parted.c:1011
+msgid "End"
+msgstr "Sfârºit"
+
+#: parted/parted.c:1011
+msgid "Size"
+msgstr "Dimensiune"
+
+#: parted/parted.c:1015
+msgid "Type"
+msgstr "Tip"
+
+#: parted/parted.c:1017
+msgid "File system"
+msgstr "Sistem de fiºiere"
+
+#: parted/parted.c:1020
+msgid "Name"
+msgstr "Nume"
+
+#: parted/parted.c:1022
+msgid "Flags"
+msgstr ""
+
+#: parted/parted.c:1079
+msgid "Free Space"
+msgstr ""
+
+#: parted/parted.c:1241
+#, c-format
+msgid ""
+"A %s %s partition was found at %s -> %s.  Do you want to add it to the "
+"partition table?"
+msgstr ""
+
+#: parted/parted.c:1280
+msgid "searching for file systems"
+msgstr ""
+
+#: parted/parted.c:1408
+msgid "New device?"
+msgstr ""
+
+#: parted/parted.c:1453
+msgid "alignment type(min/opt)"
+msgstr ""
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d aligned\n"
+msgstr ""
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d not aligned\n"
+msgstr ""
+
+#: parted/parted.c:1491
+msgid "Flag to Invert?"
+msgstr ""
+
+#: parted/parted.c:1496
+msgid "New state?"
+msgstr ""
+
+#: parted/parted.c:1533
+msgid "Unit?"
+msgstr ""
+
+#: parted/parted.c:1651
+msgid "align-check"
+msgstr ""
+
+#: parted/parted.c:1654
+msgid ""
+"align-check TYPE N                        check partition N for TYPE(min|"
+"opt) alignment"
+msgstr ""
+
+#: parted/parted.c:1662
+msgid "help"
+msgstr "help"
+
+#: parted/parted.c:1665
+#, fuzzy
+msgid ""
+"help [COMMAND]                           print general help, or help on "
+"COMMAND"
+msgstr ""
+"help [COMANDA]                afiºeazã informaþii generale, sau\n"
+"                                depre COMANDA"
+
+#: parted/parted.c:1671
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:1671
+#, fuzzy
+msgid "mktable"
+msgstr "mklabel"
+
+#: parted/parted.c:1674
+#, fuzzy
+msgid ""
+"mklabel,mktable LABEL-TYPE               create a new disklabel (partition "
+"table)"
+msgstr ""
+"mklabel TIP_ETICHETA          creazã o nouã etichetã de disc\n"
+"                                       (tabela de partiþii)"
+
+#: parted/parted.c:1680
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:1683
+msgid "mkpart PART-TYPE [FS-TYPE] START END     make a partition"
+msgstr "mkpart TIP-PART [TIP-SF] START SFÂRªIT    creazã o partiþie"
+
+#: parted/parted.c:1689
+#, fuzzy
+msgid ""
+"'mkpart' makes a partition without creating a new file system on the "
+"partition.  FS-TYPE may be specified to set an appropriate partition ID.\n"
+msgstr ""
+"mkpart creazã o partiþie fãrã a crea un nou sistem de fiºiere pe acea "
+"partiþie. TIP-SF poate fi specificat pentru a seta un anumit ID de "
+"partiþie.\n"
+
+#: parted/parted.c:1694
+msgid "name"
+msgstr "name"
+
+#: parted/parted.c:1697
+#, fuzzy
+msgid "name NUMBER NAME                         name partition NUMBER as NAME"
+msgstr "name NUMÃR NUME               numeºte patiþia NUMÃR ca NUME"
+
+#: parted/parted.c:1702
+msgid "print"
+msgstr "print"
+
+#: parted/parted.c:1705
+msgid ""
+"print [devices|free|list,all|NUMBER]     display the partition table, "
+"available devices, free space, all found partitions, or a particular "
+"partition"
+msgstr ""
+
+#: parted/parted.c:1710
+#, fuzzy
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+"Fãrã argumente, print afiºeazã întreaga tabelã de partiþii.  Dacã este dat\n"
+"un numãr de partiþie, atunci este afiºatã informaþii detaliate despre acea\n"
+"partiþie.\n"
+
+#: parted/parted.c:1712
+msgid "  devices   : display all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:1713
+msgid ""
+"  free      : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+
+#: parted/parted.c:1715
+msgid ""
+"  list, all : display the partition tables of all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:1716
+msgid ""
+"  NUMBER    : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+
+#: parted/parted.c:1721
+msgid "quit"
+msgstr "quit"
+
+#: parted/parted.c:1724
+#, fuzzy
+msgid "quit                                     exit program"
+msgstr "quit                          ieºire din program"
+
+#: parted/parted.c:1729
+msgid "rescue"
+msgstr "rescue"
+
+#: parted/parted.c:1732
+#, fuzzy
+msgid ""
+"rescue START END                         rescue a lost partition near START "
+"and END"
+msgstr ""
+"rescue START SFARSIT           salveazã o partiþie pierdutã lingã START ºi\n"
+"                                 SFARSIT"
+
+#: parted/parted.c:1738
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:1741
+#, fuzzy
+msgid "rm NUMBER                                delete partition NUMBER"
+msgstr "rm NUMÃR                      ºterge partiþia NUMÃR"
+
+#: parted/parted.c:1746
+msgid "select"
+msgstr "select"
+
+#: parted/parted.c:1749
+#, fuzzy
+msgid "select DEVICE                            choose the device to edit"
+msgstr "select UNITATE                 alege unitatea de editat"
+
+#: parted/parted.c:1754
+msgid "set"
+msgstr "set"
+
+#: parted/parted.c:1757
+#, fuzzy
+msgid ""
+"set NUMBER FLAG STATE                    change the FLAG on partition NUMBER"
+msgstr "set NUMÃR FLAG STARE          schimbã un flag pe partiþia NUMÃR"
+
+#: parted/parted.c:1763
+msgid "toggle"
+msgstr ""
+
+#: parted/parted.c:1766
+#, fuzzy
+msgid ""
+"toggle [NUMBER [FLAG]]                   toggle the state of FLAG on "
+"partition NUMBER"
+msgstr "rm NUMÃR                      ºterge partiþia NUMÃR"
+
+#: parted/parted.c:1772
+msgid "unit"
+msgstr "unitate"
+
+#: parted/parted.c:1775
+#, fuzzy
+msgid "unit UNIT                                set the default unit to UNIT"
+msgstr "quit UNITATE                  seteazã unitatea implicitã ca UNITATE"
+
+#: parted/parted.c:1780
+msgid "version"
+msgstr ""
+
+#: parted/parted.c:1783
+msgid ""
+"version                                  display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+
+#: parted/parted.c:1787
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+
+#: parted/parted.c:1855
+#, c-format
+msgid "Usage: %s [-hlmsv] [-a<align>] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+
+#: parted/parted.c:1899
+msgid "No device found"
+msgstr "Nu a fost gãsitã nici o unitate"
+
+#: parted/parted.c:1936
+msgid "WARNING: You are not superuser.  Watch out for permissions."
+msgstr ""
+
+#: parted/parted.c:1974
+#, fuzzy
+msgid "You may need to update /etc/fstab.\n"
+msgstr "Nu uitaþi sã actualizaþi /etc/fstab, dacã e necesar.\n"
+
+#: parted/ui.c:162
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+
+#: parted/ui.c:165
+#, fuzzy
+msgid ""
+"Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]\n"
+"Apply COMMANDs with PARAMETERS to DEVICE.  If no COMMAND(s) are given, run "
+"in\n"
+"interactive mode.\n"
+msgstr ""
+"Folosire: parted [OPÞIUNE]... {UNITATE [COMANDà[PARAMETRII]...]...]\n"
+"Aplicã COMANDA cu PARAMETII la UNITATE.  Dacã nu este datã nici o COMANDÃ,\n"
+"ruleazã în mod interactiv.\n"
+
+#: parted/ui.c:170
+#, c-format
+msgid ""
+"\n"
+"\n"
+"You found a bug in GNU Parted! Here's what you have to do:\n"
+"\n"
+"Don't panic! The bug has most likely not affected any of your data.\n"
+"Help us to fix this bug by doing the following:\n"
+"\n"
+"Check whether the bug has already been fixed by checking\n"
+"the last version of GNU Parted that you can find at:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Please check this version prior to bug reporting.\n"
+"\n"
+"If this has not been fixed yet or if you don't know how to check,\n"
+"please visit the GNU Parted website:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"for further information.\n"
+"\n"
+"Your report should contain the version of this release (%s)\n"
+"along with the error message below, the output of\n"
+"\n"
+"\tparted DEVICE unit co print unit s print\n"
+"\n"
+"and the following history of commands you entered.\n"
+"Also include any additional information about your setup you\n"
+"consider important.\n"
+msgstr ""
+
+#: parted/ui.c:291
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+
+#: parted/ui.c:354
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+
+#: parted/ui.c:360
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+
+#: parted/ui.c:365
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+
+#: parted/ui.c:389
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:394
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+
+#: parted/ui.c:399
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:404
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+
+#: parted/ui.c:409
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+
+#: parted/ui.c:414
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+
+#: parted/ui.c:419
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+
+#: parted/ui.c:424
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+
+#: parted/ui.c:429
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+
+#: parted/ui.c:453
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+
+#: parted/ui.c:458
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+
+#: parted/ui.c:463
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+
+#: parted/ui.c:468
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+
+#: parted/ui.c:473
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+
+#: parted/ui.c:478
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+
+#: parted/ui.c:891
+#, fuzzy, c-format
+msgid "invalid token: %s"
+msgstr "Nu pot deschide %s."
+
+#: parted/ui.c:1048
+msgid "Expecting a partition number."
+msgstr "Aºtept un numãr de partiþie."
+
+#: parted/ui.c:1057
+msgid "Partition doesn't exist."
+msgstr "Partiþia nu existã."
+
+#: parted/ui.c:1077
+msgid "Expecting a file system type."
+msgstr "Aºtept un tip de sistem de fiºiere."
+
+#: parted/ui.c:1084
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Tip de sistem de fiºiere necunoscut \"%s\"."
+
+#: parted/ui.c:1105
+msgid "Expecting a disk label type."
+msgstr "Aºtept un tip de etichetã de disc."
+
+#: parted/ui.c:1203
+msgid "Can't create any more partitions."
+msgstr "Nu mai pot crea nici o partiþie"
+
+#: parted/ui.c:1213
+msgid "Expecting a partition type."
+msgstr "Aºtept un tip de partiþie."
+
+#: parted/ui.c:1361
+msgid "on"
+msgstr "pornit"
+
+#: parted/ui.c:1362
+msgid "off"
+msgstr "oprit"
+
+#: parted/ui.c:1379
+msgid "optimal"
+msgstr ""
+
+#: parted/ui.c:1380
+msgid "minimal"
+msgstr ""
+
+#: parted/ui.c:1513
+msgid "OPTIONs:"
+msgstr "OPÞIUNI:"
+
+#: parted/ui.c:1518
+msgid "COMMANDs:"
+msgstr "COMMENZI:"
+
+#: parted/ui.c:1521
+#, c-format
+msgid ""
+"\n"
+"Report bugs to %s\n"
+msgstr ""
+
+#: parted/ui.c:1528
+#, c-format
+msgid "Using %s\n"
+msgstr "Folosesc %s\n"
+
+#: parted/ui.c:1602
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr ""
+
+#, fuzzy
+#~ msgid "invalid minor device number: %s"
+#~ msgstr "Nu pot deschide %s."
+
+#, fuzzy
+#~ msgid "Could not detect file system."
+#~ msgstr "Nu am putut afla date despre dispozitivul %s - %s."
+
+#, fuzzy
+#~ msgid "growing file system"
+#~ msgstr "Sistem de fiºiere"
+
+#, fuzzy
+#~ msgid "Can't copy onto an overlapping partition."
+#~ msgstr "Nu puteþi avea partiþii care se suprapun."
+
+#, fuzzy
+#~ msgid "expanding"
+#~ msgstr "Avertisment"
+
+#, fuzzy
+#~ msgid "File system full!"
+#~ msgstr "Sistem de fiºiere"
+
+#~ msgid "Partition too big/small for a %s file system."
+#~ msgstr "Partiþie prea mare/micã pentru un sistem de fiºiere %s."
+
+#, fuzzy
+#~ msgid "Too many bad pages."
+#~ msgstr "Prea multe partiþii primare."
+
+#, fuzzy
+#~ msgid "Could not cache the file system in memory."
+#~ msgstr "Nu am putut afla date despre dispozitivul %s - %s."
+
+#, fuzzy
+#~ msgid "Source partition number?"
+#~ msgstr "Numãrul partiþiei destinaþie?"
+
+#~ msgid "Can't copy an extended partition."
+#~ msgstr "Nu puteþi copia o partiþie extinsã."
+
+#~ msgid "Destination partition number?"
+#~ msgstr "Numãrul partiþiei destinaþie?"
+
+#~ msgid "Can't move an extended partition."
+#~ msgstr "Nu puteþi muta o partiþie extinsã."
+
+#~ msgid "Can't move a partition onto itself.  Try using resize, perhaps?"
+#~ msgstr ""
+#~ "Nu puteþi muta o partiþie peste ea însãºi.  încercaþi poate sã folosiþi "
+#~ "redimensionare?"
+
+#, fuzzy
+#~ msgid "Flags: %s\n"
+#~ msgstr "Sistem de fiºiere"
+
+#, fuzzy
+#~ msgid "File System: %s\n"
+#~ msgstr "Sistem de fiºiere"
+
+#, fuzzy
+#~ msgid ""
+#~ "check NUMBER                             do a simple check on the file "
+#~ "system"
+#~ msgstr "rm NUMÃR                      ºterge partiþia NUMÃR"
+
+#~ msgid "cp"
+#~ msgstr "cp"
+
+#~ msgid "mkfs"
+#~ msgstr "mkfs"
+
+#, fuzzy
+#~ msgid ""
+#~ "mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on "
+#~ "partition NUMBER"
+#~ msgstr ""
+#~ "mkfs NUMÃR TIP-SF        creazã un sistem de fiºiere TIP-SF pe partiþia "
+#~ "NUMÃR"
+
+#~ msgid "mkpartfs"
+#~ msgstr "mkpartfs"
+
+#~ msgid ""
+#~ "mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file "
+#~ "system"
+#~ msgstr ""
+#~ "mkpartfs TIP-PART TIP-SF START SFÂRªIT     creazã o partiþie cu un sistem "
+#~ "de fiºiere"
+
+#~ msgid "move"
+#~ msgstr "move"
+
+#, fuzzy
+#~ msgid "move NUMBER START END                    move partition NUMBER"
+#~ msgstr "move NUMÃR START SFÂRªIT      mutã partiþia NUMÃR"
+
+#~ msgid "resize"
+#~ msgstr "resize"
+
+#, fuzzy
+#~ msgid ""
+#~ "resize NUMBER START END                  resize partition NUMBER and its "
+#~ "file system"
+#~ msgstr ""
+#~ "resize NUMÃR START SFÂRªIT    redimensioneazã partiþia NUMÃR ºi sistemul "
+#~ "sãu de fiºiere"
+
+#, fuzzy
+#~ msgid "Unable to determine the block size of this dasd"
+#~ msgstr "Nu pot determina dimensiunea lui %s (%s)."
+
+#~ msgid ""
+#~ "The kernel was unable to re-read the partition table on %s (%s).  This "
+#~ "means Linux won't know anything about the modifications you made until "
+#~ "you reboot.  You should reboot your computer before doing anything with "
+#~ "%s."
+#~ msgstr ""
+#~ "Kernel-ul nu a putut re-citi tabela de partiþii pe %s (%s).  Aceasta "
+#~ "înseamnã cã Linux nu va ºti nimic despre schimbãrile pe care le-aþi fãcut "
+#~ "pânã când nu reboot-aþi.  Ar trebui sã reboot-aþi computerul înainte de a "
+#~ "face ceva cu %s."
+
+#~ msgid ""
+#~ "The sector size on %s is %d bytes.  Parted is known not to work properly "
+#~ "with drives with sector sizes other than %d bytes."
+#~ msgstr ""
+#~ "Dimensiunea sectorului pe %s este %d octeþi. Este ºtiut cã parted nu "
+#~ "funcþioneazã corespunzãtor cu discuri cu dimensiunea sectorului diferitã "
+#~ "de %d octeþi."
+
+#~ msgid "IDE"
+#~ msgstr "IDE"
+
+#~ msgid "File system?"
+#~ msgstr "Sistem de fiºiere?"
+
+#~ msgid ""
+#~ "print [NUMBER]                display the partition table, or a partition"
+#~ msgstr ""
+#~ "print [NUMÃR]                 afiºeazã tabela de partiþii, sau o partiþie"
+
+#~ msgid ""
+#~ "You found a bug in GNU Parted.  Please email a bug report to bug-"
+#~ "parted@gnu.org containing the version (%s), and the following message:\n"
+#~ msgstr ""
+#~ "Aþi gãsit un bug în GNU Parted.  Vã rugãm sã trimiteþi un email raportând "
+#~ "acest bug (în limba englezã) la bug-parted@gnu.org conþinând versiunea "
+#~ "(%s) ºi urmãtorul mesaj:\n"
diff --git a/po/ru.gmo b/po/ru.gmo
new file mode 100644 (file)
index 0000000..5c2bb63
Binary files /dev/null and b/po/ru.gmo differ
diff --git a/po/ru.po b/po/ru.po
new file mode 100644 (file)
index 0000000..c05a178
--- /dev/null
+++ b/po/ru.po
@@ -0,0 +1,3567 @@
+# Translation of parted to Russian
+# Copyright (C) 1999, 2007, 2008 Free Software Foundation, Inc.
+# This file is distributed under the same license as the parted package. 
+# Dmitry S. Sivachenko <dima@Chg.RU>, 1999.
+# Dimitriy Ryazantcev <DJm00n@mail.ru>, 2007, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: parted 1.8.8\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2011-05-30 13:45+0200\n"
+"PO-Revision-Date: 2008-02-16 14:02+0200\n"
+"Last-Translator: Pavel Maryanov <acid_jack@ukr.net>\n"
+"Language-Team: Russian <gnu@mx.ru>\n"
+"Language: ru\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms:  nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: lib/argmatch.c:133
+#, fuzzy, c-format
+msgid "invalid argument %s for %s"
+msgstr "Не правильный ключ: %s"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr ""
+
+#: lib/argmatch.c:153
+#, fuzzy, c-format
+msgid "Valid arguments are:"
+msgstr "Не правильный ключ: %s"
+
+#: lib/closeout.c:112 libparted/labels/fdasd.c:107
+msgid "write error"
+msgstr "ошибка записи"
+
+#: lib/error.c:181
+msgid "Unknown system error"
+msgstr "Неизвестная системная ошибка"
+
+#: lib/getopt.c:548 lib/getopt.c:577
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
+msgstr "%s: неоднозначный параметр `%s'\n"
+
+#: lib/getopt.c:625 lib/getopt.c:629
+#, fuzzy, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s: параметр `--%s' не позволяет аргументы\n"
+
+#: lib/getopt.c:638 lib/getopt.c:643
+#, fuzzy, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr "%s: параметр `%c%s' не позволяет аргументы\n"
+
+#: lib/getopt.c:686 lib/getopt.c:705
+#, fuzzy, c-format
+msgid "%s: option '--%s' requires an argument\n"
+msgstr "%s: параметр `%s' требует аргументы\n"
+
+#: lib/getopt.c:743 lib/getopt.c:746
+#, fuzzy, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s: неопознанный параметр `--%s'\n"
+
+#: lib/getopt.c:754 lib/getopt.c:757
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "%s: неопознанный параметр `%c%s'\n"
+
+#: lib/getopt.c:806 lib/getopt.c:809
+#, fuzzy, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: неправильный параметр -- %c\n"
+
+#: lib/getopt.c:859 lib/getopt.c:876 lib/getopt.c:1084 lib/getopt.c:1102
+#, fuzzy, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: параметр требует аргумент -- %c\n"
+
+#: lib/getopt.c:932 lib/getopt.c:948
+#, fuzzy, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s: пераметр `-W %s' неоднозначен\n"
+
+#: lib/getopt.c:972 lib/getopt.c:990
+#, fuzzy, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr "%s: параметр `-W %s' не позволяет аргумент\n"
+
+#: lib/getopt.c:1011 lib/getopt.c:1029
+#, fuzzy, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: параметр `%s' требует аргументы\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:271
+msgid "`"
+msgstr "«"
+
+#: lib/quotearg.c:272
+msgid "'"
+msgstr "»"
+
+#: lib/regcomp.c:133
+msgid "Success"
+msgstr "Успешно"
+
+#: lib/regcomp.c:136
+msgid "No match"
+msgstr "Нет соответствия"
+
+#: lib/regcomp.c:139
+msgid "Invalid regular expression"
+msgstr "Неправильное регулярное выражение"
+
+#: lib/regcomp.c:142
+msgid "Invalid collation character"
+msgstr "Неправильный символ сопоставления"
+
+#: lib/regcomp.c:145
+msgid "Invalid character class name"
+msgstr "Неправильное название класса символа"
+
+#: lib/regcomp.c:148
+msgid "Trailing backslash"
+msgstr "Завершающая обратная косая черта"
+
+#: lib/regcomp.c:151
+msgid "Invalid back reference"
+msgstr "Неправильная обратная ссылка"
+
+#: lib/regcomp.c:154
+msgid "Unmatched [ or [^"
+msgstr "Нет соответствия [ или [^"
+
+#: lib/regcomp.c:157
+msgid "Unmatched ( or \\("
+msgstr "Нет соответствия ( или \\("
+
+#: lib/regcomp.c:160
+msgid "Unmatched \\{"
+msgstr "Нет соответствия \\{"
+
+#: lib/regcomp.c:163
+msgid "Invalid content of \\{\\}"
+msgstr "Неправильное содержимое \\{\\}"
+
+#: lib/regcomp.c:166
+msgid "Invalid range end"
+msgstr "Неправильный конец области"
+
+#: lib/regcomp.c:169
+msgid "Memory exhausted"
+msgstr "Закончилась память"
+
+#: lib/regcomp.c:172
+msgid "Invalid preceding regular expression"
+msgstr "Неправильное предыдущее регулярное выражение"
+
+#: lib/regcomp.c:175
+msgid "Premature end of regular expression"
+msgstr "Неожиданный конец регулярного выражения"
+
+#: lib/regcomp.c:178
+msgid "Regular expression too big"
+msgstr "Слишком большое регулярное выражение"
+
+#: lib/regcomp.c:181
+msgid "Unmatched ) or \\)"
+msgstr "Нет соответствия ) или \\)"
+
+#: lib/regcomp.c:702
+msgid "No previous regular expression"
+msgstr "Нет предыдущего регулярного выражения"
+
+#. TRANSLATORS: A regular expression testing for an affirmative answer
+#. (english: "yes").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^yesexpr='
+#: lib/rpmatch.c:147
+msgid "^[yY]"
+msgstr "^[yYдД]"
+
+#. TRANSLATORS: A regular expression testing for a negative answer
+#. (english: "no").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^noexpr='
+#: lib/rpmatch.c:160
+msgid "^[nN]"
+msgstr "^[nNнН]"
+
+#: lib/version-etc.c:74
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr ""
+
+#: lib/version-etc.c:77
+#, c-format
+msgid "Packaged by %s\n"
+msgstr ""
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale.  Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:84
+msgid "(C)"
+msgstr "©"
+
+#: lib/version-etc.c:86
+#, fuzzy
+msgid ""
+"\n"
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"\n"
+"Лицензия GPLv3+: GNU GPL версия 3 или позже <http://gnu.org/licenses/gpl."
+"html>\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:102
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Написано %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:106
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Написано %s и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:110
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Написано %s, %s и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Написано %s, %s, %s\n"
+"и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Написано %s, %s, %s,\n"
+"%s и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:131
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Написано %s, %s, %s,\n"
+"%s, %s и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:139
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Написано %s, %s, %s,\n"
+"%s, %s, %s и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:147
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Написано %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:156
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Написано %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:167
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Написано %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s и другими.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package.  Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:245
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Report bugs to: %s\n"
+msgstr ""
+"\n"
+"Сообщайте об ошибках на <%s>.\n"
+
+#: lib/version-etc.c:247
+#, fuzzy, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr ""
+"\n"
+"Сообщайте об ошибках на <%s>.\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr ""
+
+#: lib/version-etc.c:253
+#, c-format
+msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
+msgstr ""
+
+#: lib/version-etc.c:256
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "закончилась память"
+
+#: lib/xstrtol-error.c:63
+#, fuzzy, c-format
+msgid "invalid %s%s argument `%s'"
+msgstr "Не правильный ключ: %s"
+
+#: lib/xstrtol-error.c:68
+#, fuzzy, c-format
+msgid "invalid suffix in %s%s argument `%s'"
+msgstr "Не правильный ключ: %s"
+
+#: lib/xstrtol-error.c:72
+#, fuzzy, c-format
+msgid "%s%s argument `%s' too large"
+msgstr "Не правильный ключ: %s"
+
+#: libparted/arch/beos.c:245
+msgid "Disk Image"
+msgstr "Образ диска"
+
+#: libparted/arch/beos.c:346 libparted/arch/gnu.c:277
+#: libparted/arch/linux.c:1545
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "Ошибка открытия %s: %s"
+
+#: libparted/arch/beos.c:357 libparted/arch/gnu.c:287
+#: libparted/arch/linux.c:1556
+#, c-format
+msgid "Unable to open %s read-write (%s).  %s has been opened read-only."
+msgstr ""
+"Не удалось открыть %s на чтение-запись (%s).  %s открыт только для чтения."
+
+#: libparted/arch/beos.c:419 libparted/arch/linux.c:1714
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s во время позиционирования для чтения на %s"
+
+#: libparted/arch/beos.c:452 libparted/arch/gnu.c:465 libparted/arch/gnu.c:564
+#: libparted/arch/gnu.c:692 libparted/arch/linux.c:1674
+#: libparted/arch/linux.c:1755
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s во время чтения на %s"
+
+#: libparted/arch/beos.c:488 libparted/arch/gnu.c:525
+#: libparted/arch/linux.c:1831
+#, c-format
+msgid "Can't write to %s, because it is opened read-only."
+msgstr "Нельзя записать на %s, так как он открыт только для чтения."
+
+#: libparted/arch/beos.c:504 libparted/arch/linux.c:1856
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s во время позиционирования для записи на %s"
+
+#: libparted/arch/beos.c:541 libparted/arch/gnu.c:601 libparted/arch/gnu.c:646
+#: libparted/arch/gnu.c:723 libparted/arch/linux.c:1804
+#: libparted/arch/linux.c:1898 libparted/arch/linux.c:1970
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s во время записи на %s"
+
+#: partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Попробуйте `%s --help' для дополнительной информации.\n"
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr "Использование: %s [ПАРАМЕТР] [УСТРОЙСТВО]...\n"
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the operating system about partition table changes.\n"
+"\n"
+"  -d, --dry-run    do not actually inform the operating system\n"
+"  -s, --summary    print a summary of contents\n"
+"  -h, --help       display this help and exit\n"
+"  -v, --version    output version information and exit\n"
+msgstr ""
+"Информировать операционную систему о изменении таблицы разделов.\n"
+"\n"
+"  -d, --dry-run    не информировать операционную систему\n"
+"  -s, --summary    напечатать сводку содержимого\n"
+"  -h, --help       отобразить справку и выйти\n"
+"  -v, --version    вывести информацию о версии и выйти\n"
+
+#: partprobe/partprobe.c:150
+msgid ""
+"\n"
+"When no DEVICE is given, probe all partitions.\n"
+msgstr ""
+"\n"
+"Когда УСТРОЙСТВО вы указано, проверять все разделы.\n"
+
+#: partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Сообщайте об ошибках на <%s>.\n"
+
+#: libparted/arch/gnu.c:110
+#, c-format
+msgid "Unable to open %s."
+msgstr "Не удалось открыть %s."
+
+#: libparted/arch/gnu.c:130
+msgid "Unable to probe store."
+msgstr "Не удалось проверить хранение."
+
+#: libparted/arch/gnu.c:368
+msgid ""
+"The partition table cannot be re-read.  This means you need to reboot before "
+"mounting any modified partitions.  You also need to reinstall your boot "
+"loader before you reboot (which may require mounting modified partitions).  "
+"It is impossible do both things!  So you'll need to boot off a rescue disk, "
+"and reinstall your boot loader from the rescue disk.  Read section 4 of the "
+"Parted User documentation for more information."
+msgstr ""
+"Таблица разделов не может быть перечитана. Это означает, что вам нужно "
+"перезагрузить компьютер перед монтированием лобого из изменённых разделов. "
+"Также вам нужно переустановить загрузчик перед перезагрузкой (на что может "
+"потребоваться монтирование изменённых разделов). Обе эти вещи невозможно "
+"сделать одновременно! Поэтому требуется загрузиться с диска восстановления и "
+"переустановить загрузчик с его помощью. Прочтите раздел 4 Руководства "
+"пользователя Parted для дополнительной информации."
+
+#: libparted/arch/gnu.c:385
+#, c-format
+msgid ""
+"The partition table on %s cannot be re-read (%s).  This means the Hurd knows "
+"nothing about any modifications you made.  You should reboot your computer "
+"before doing anything with %s."
+msgstr ""
+"Таблица разделов на %s не может быть перечитана (%s).  Это означает, что "
+"сделанные вами изменения недоступны для ядра.  Вы должны перезагрузить ваш "
+"компьютер до того, как что-либо делать с %s."
+
+#: libparted/arch/gnu.c:396 parted/parted.c:1967
+msgid ""
+"You should reinstall your boot loader before rebooting.  Read section 4 of "
+"the Parted User documentation for more information."
+msgstr ""
+"Нужно переустановить загрузчик перед  перезагрузкой. Прочтите раздел 4 "
+"Руководства пользователя Parted для дополнительной информации."
+
+#: libparted/arch/gnu.c:788
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%s пытается записать %s на диск"
+
+#: libparted/arch/linux.c:520
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "Не удаётся получить статус устройства %s - %s."
+
+#: libparted/arch/linux.c:577
+#, fuzzy, c-format
+msgid "Unable to determine the dm type of %s."
+msgstr "Не удаётся определить размер %s (%s)."
+
+#: libparted/arch/linux.c:669
+#, fuzzy, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+"Не удалось определить размер сектора для %s: %s.\n"
+"Использую стандартный размер сектора (%lld)."
+
+#: libparted/arch/linux.c:690
+#, fuzzy, c-format
+msgid ""
+"Could not determine physical sector size for %s.\n"
+"Using the logical sector size (%lld)."
+msgstr ""
+"Не удалось определить размер сектора для %s: %s.\n"
+"Использую стандартный размер сектора (%lld)."
+
+#: libparted/arch/linux.c:746
+#, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "Не удаётся определить размер %s (%s)."
+
+#: libparted/arch/linux.c:832
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "Не удаётся получить идентификатор устройства %s - %s"
+
+#: libparted/arch/linux.c:841
+msgid "Generic IDE"
+msgstr "Обычный IDE"
+
+#: libparted/arch/linux.c:862
+#, c-format
+msgid ""
+"Device %s has multiple (%d) logical sectors per physical sector.\n"
+"GNU Parted supports this EXPERIMENTALLY for some special disk label/file "
+"system combinations, e.g. GPT and ext2/3.\n"
+"Please consult the web site for up-to-date information."
+msgstr ""
+"Устройство %s содержит несколько (%d) логических секторов на один "
+"физический.\n"
+"GNU Parted поддерживает это ЭКСПЕРИМЕНТАЛЬНО для некоторых специальных "
+"комбинаций меток/файловых систем, например GPT и ext2/3.\n"
+"За дополнительной информацией обращайтесь на сайт программы."
+
+#: libparted/arch/linux.c:1039
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "Ошибка инициализации SCSI-устройства %s - %s"
+
+#: libparted/arch/linux.c:1103
+#, fuzzy, c-format
+msgid ""
+"The device %s is so small that it cannot possibly store a file system or "
+"partition table.  Perhaps you selected the wrong device?"
+msgstr ""
+"Устройство %s имеет нулевую длину и не может содержать файловую систему или "
+"таблицу разделов.  Возможно вы выбрали неправильное устройство?"
+
+#: libparted/arch/linux.c:1216
+#, c-format
+msgid ""
+"Unable to determine geometry of file/device %s.  You should not use Parted "
+"unless you REALLY know what you're doing!"
+msgstr ""
+"Не удаётся определить геометрию файла/устройства %s.  Вы не должны "
+"использовать Parted, если вы не знаете НАВЕРНЯКА, что делаете!"
+
+#: libparted/arch/linux.c:1276
+msgid "Generic SD/MMC Storage Card"
+msgstr ""
+
+#: libparted/arch/linux.c:1329
+msgid "DAC960 RAID controller"
+msgstr "DAC960 RAID контроллер"
+
+#: libparted/arch/linux.c:1334
+msgid "Promise SX8 SATA Device"
+msgstr "SATA устройство Promise SX8"
+
+#: libparted/arch/linux.c:1339
+msgid "ATA over Ethernet Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1345
+msgid "IBM S390 DASD drive"
+msgstr "IBM S390 DASD привод"
+
+#: libparted/arch/linux.c:1351
+msgid "IBM iSeries Virtual DASD"
+msgstr "IBM iSeries Virtual DASD"
+
+#: libparted/arch/linux.c:1356
+msgid "Compaq Smart Array"
+msgstr "Compaq Smart Array"
+
+#: libparted/arch/linux.c:1361
+msgid "ATARAID Controller"
+msgstr "ATARAID Контроллер"
+
+#: libparted/arch/linux.c:1366
+msgid "I2O Controller"
+msgstr "I2O Контроллер"
+
+#: libparted/arch/linux.c:1371
+msgid "User-Mode Linux UBD"
+msgstr "User-Mode Linux UBD"
+
+#: libparted/arch/linux.c:1384
+#, fuzzy, c-format
+msgid "Linux device-mapper (%s)"
+msgstr "Linux device-mapper"
+
+#: libparted/arch/linux.c:1395
+msgid "Xen Virtual Block Device"
+msgstr "Виртуальное блочное устройство Xen"
+
+#: libparted/arch/linux.c:1400
+msgid "Unknown"
+msgstr "Неизвестный"
+
+#: libparted/arch/linux.c:1409
+#, fuzzy
+msgid "Virtio Block Device"
+msgstr "Виртуальное блочное устройство Xen"
+
+#: libparted/arch/linux.c:1414
+msgid "Linux Software RAID Array"
+msgstr ""
+
+#: libparted/arch/linux.c:1421
+msgid "ped_device_new()  Unsupported device type"
+msgstr "ped_device_new()  Не поддерживаемый тип устройства"
+
+#: libparted/arch/linux.c:1518 libparted/arch/linux.c:1590
+#, fuzzy, c-format
+msgid "Error fsyncing/closing %s: %s"
+msgstr "Ошибка открытия %s: %s"
+
+#: libparted/arch/linux.c:1754
+#, c-format
+msgid "end of file while reading %s"
+msgstr ""
+
+#: libparted/arch/linux.c:2390
+#, c-format
+msgid ""
+"Error informing the kernel about modifications to partition %s -- %s.  This "
+"means Linux won't know about any changes you made to %s until you reboot -- "
+"so you shouldn't mount it or use it in any way before rebooting."
+msgstr ""
+"Не удалось сообщить ядру об изменениях раздела %s -- %s.  Это означает, что "
+"Linux не узнает об изменениях %s до перезагрузки -- поэтому не пытайтесь "
+"примонтировать или как либо использовать его до перезагрузки."
+
+#: libparted/arch/linux.c:2528
+#, fuzzy, c-format
+msgid "Unable to determine the size and length of %s."
+msgstr "Не удаётся определить размер %s (%s)."
+
+#: libparted/arch/linux.c:2553
+#, fuzzy, c-format
+msgid "Failed to add partition %d (%s)"
+msgstr "%s : Не удалось прочесть блок раздела %llu\n"
+
+#: libparted/arch/linux.c:2580
+#, c-format
+msgid ""
+"Partition(s) %s on %s have been written, but we have been unable to inform "
+"the kernel of the change, probably because it/they are in use.  As a result, "
+"the old partition(s) will remain in use.  You should reboot now before "
+"making further changes."
+msgstr ""
+
+#: libparted/arch/linux.c:2706
+#, c-format
+msgid ""
+"parted was unable to re-read the partition table on %s (%s).  This means "
+"Linux won't know anything about the modifications you made. "
+msgstr ""
+"parted не смог считать таблицу разделов на %s (%s).  Это значит, что "
+"сделанные вами изменения будут недоступны для Linux. "
+
+#: libparted/cs/geom.c:161
+#, fuzzy, c-format
+msgid "Can't have the end before the start! (start sector=%jd length=%jd)"
+msgstr "Невозможно переместить конец раздела за начало!"
+
+#: libparted/cs/geom.c:169
+msgid "Can't have a partition outside the disk!"
+msgstr "Невозможно создать раздел за пределами устройства!"
+
+#: libparted/cs/geom.c:384
+#, c-format
+msgid "Attempt to write sectors %ld-%ld outside of partition on %s."
+msgstr "Попытка записи секторов %ld-%ld за пределы раздела на %s."
+
+#: libparted/cs/geom.c:424
+msgid "checking for bad blocks"
+msgstr "проверка на плохие блоки"
+
+#: libparted/debug.c:96
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr "Backtrace имеет %d вызовов из стека:\n"
+
+#: libparted/debug.c:109
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr "Проверка условия (%s) на %s:%d в функции %s() не удалась."
+
+#: libparted/disk.c:192
+#, c-format
+msgid "%s: unrecognised disk label"
+msgstr "%s: метка диска не определена"
+
+#: libparted/disk.c:484
+#, c-format
+msgid ""
+"This libparted doesn't have write support for %s.  Perhaps it was compiled "
+"read-only."
+msgstr ""
+"Эта библиотеке libparted не содержит поддержки записи для %s.  Наверное "
+"скомпилирована только для чтения."
+
+#: libparted/disk.c:629
+#, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "Раздел %d содержит %s, но файловая система %s."
+
+#: libparted/disk.c:838
+msgid "cylinder_alignment"
+msgstr ""
+
+#: libparted/disk.c:844
+#, fuzzy, c-format
+msgid "Unknown disk flag, %d."
+msgstr "Неизвестный флаг раздела, %d."
+
+#: libparted/disk.c:1283
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "Подписи к дискам %s не поддерживают расширенные разделы."
+
+#: libparted/disk.c:1858
+#, c-format
+msgid "%s disk labels don't support logical or extended partitions."
+msgstr ""
+"Подписи к дискам %s не поддерживают логические или расширенные разделы."
+
+#: libparted/disk.c:1871
+msgid "Too many primary partitions."
+msgstr "Слишком много основных разделов."
+
+#: libparted/disk.c:1880
+#, c-format
+msgid ""
+"Can't add a logical partition to %s, because there is no extended partition."
+msgstr ""
+"Невозможно добавить логический раздел на %s, потому что нет расширенного "
+"раздела."
+
+#: libparted/disk.c:1904
+#, c-format
+msgid "Can't have more than one extended partition on %s."
+msgstr "Невозможно создать больше одного расширенного раздела на %s."
+
+#: libparted/disk.c:1914
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr "Невозможно создать логический раздел больше расширенного раздела."
+
+#: libparted/disk.c:1939
+#, c-format
+msgid "Can't have a logical partition outside of the extended partition on %s."
+msgstr ""
+"Невозможно создать логический раздел больше расширенного раздела на %s."
+
+#: libparted/disk.c:1949 libparted/disk.c:2008 libparted/disk.c:2186
+msgid "Can't have overlapping partitions."
+msgstr "Невозможно создавать пересекающиеся разделы."
+
+#: libparted/disk.c:1957
+msgid "Can't have a primary partition inside an extended partition."
+msgstr "Невозможно создать основной раздел внутри расширенного."
+
+#: libparted/disk.c:2387
+msgid "metadata"
+msgstr "метаданные"
+
+#: libparted/disk.c:2389
+msgid "free"
+msgstr "свободно"
+
+#: libparted/disk.c:2391 parted/ui.c:1194 parted/ui.c:1222
+msgid "extended"
+msgstr "расширенный"
+
+#: libparted/disk.c:2393 parted/ui.c:1198 parted/ui.c:1226
+msgid "logical"
+msgstr "логический"
+
+#: libparted/disk.c:2395 parted/ui.c:1190 parted/ui.c:1218
+msgid "primary"
+msgstr "основной"
+
+#: libparted/disk.c:2411
+msgid "boot"
+msgstr "загрузочный"
+
+#: libparted/disk.c:2413
+msgid "bios_grub"
+msgstr ""
+
+#: libparted/disk.c:2415
+msgid "root"
+msgstr "корневой"
+
+#: libparted/disk.c:2417
+msgid "swap"
+msgstr "подкачка"
+
+#: libparted/disk.c:2419
+msgid "hidden"
+msgstr "скрытый"
+
+#: libparted/disk.c:2421
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2423
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2425
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2427
+msgid "hp-service"
+msgstr "hp-service"
+
+#: libparted/disk.c:2429
+msgid "palo"
+msgstr "palo"
+
+#: libparted/disk.c:2431
+msgid "prep"
+msgstr "prep"
+
+#: libparted/disk.c:2433
+msgid "msftres"
+msgstr "msftres"
+
+#: libparted/disk.c:2435
+msgid "atvrecv"
+msgstr ""
+
+#: libparted/disk.c:2437
+msgid "diag"
+msgstr ""
+
+#: libparted/disk.c:2439
+msgid "legacy_boot"
+msgstr ""
+
+#: libparted/disk.c:2445
+#, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Неизвестный флаг раздела, %d."
+
+#: libparted/exception.c:77
+msgid "Information"
+msgstr "Информация"
+
+#: libparted/exception.c:78
+msgid "Warning"
+msgstr "Предупреждение"
+
+#: libparted/exception.c:79
+msgid "Error"
+msgstr "Ошибка"
+
+#: libparted/exception.c:80
+msgid "Fatal"
+msgstr "Фатальная ошибка"
+
+#: libparted/exception.c:81
+msgid "Bug"
+msgstr "Ошибка"
+
+#: libparted/exception.c:82
+msgid "No Implementation"
+msgstr "Нет реализации"
+
+#: libparted/exception.c:86
+msgid "Fix"
+msgstr "Исправить"
+
+#: libparted/exception.c:87
+msgid "Yes"
+msgstr "Да"
+
+#: libparted/exception.c:88
+msgid "No"
+msgstr "Нет"
+
+#: libparted/exception.c:89
+msgid "OK"
+msgstr "OK"
+
+#: libparted/exception.c:90
+msgid "Retry"
+msgstr "Повторить"
+
+#: libparted/exception.c:91
+msgid "Ignore"
+msgstr "Игнорировать"
+
+#: libparted/exception.c:92
+msgid "Cancel"
+msgstr "Отменить"
+
+#: libparted/exception.c:132
+#, fuzzy, c-format
+msgid ""
+"A bug has been detected in GNU Parted.  Refer to the web site of parted "
+"http://www.gnu.org/software/parted/parted.html for more information of what "
+"could be useful for bug submitting!  Please email a bug report to %s "
+"containing at least the version (%s) and the following message:  "
+msgstr ""
+"В GNU parted была обнаружена ошибка.  Обратитесь за информацией на сайт "
+"parted http://www.gnu.org/software/parted/parted.html за дополнительной "
+"информацией относительно отправке отчёта об ошибке! Пожалуйста, пошлите по "
+"адресу bug-parted@gnu.org отчёт об ошибке, содержащий хотя-бы версию (%s) и "
+"следующее сообщение:  "
+
+#: libparted/labels/aix.c:103
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr "Поддержка чтения меток диска AIX пока не реализована."
+
+#: libparted/labels/aix.c:114
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr "Поддержка записи меток диска AIX пока не реализована."
+
+#: libparted/labels/aix.c:127
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr "Поддержка добавления разделов к меткам диска AIX пока не реализована."
+
+#: libparted/labels/aix.c:137
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr ""
+"Поддержка дублирования разделов в метках диска AIX пока не реализована."
+
+#: libparted/labels/aix.c:155
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr ""
+"Поддержка задания типа системы на метках диска AIX пока не реализована."
+
+#: libparted/labels/aix.c:165
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr "Поддержка записи флагов на метках диска AIX пока не реализована."
+
+#: libparted/labels/bsd.c:571 libparted/labels/dasd.c:833
+#: libparted/labels/dos.c:2176 libparted/labels/dvh.c:787
+#: libparted/labels/gpt.c:1782 libparted/labels/loop.c:247
+#: libparted/labels/mac.c:1426 libparted/labels/pc98.c:748
+#: libparted/labels/rdb.c:1052 libparted/labels/sun.c:780
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "Не удалось удовлетворить все ограничения целостности раздела."
+
+#: libparted/labels/bsd.c:596
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "Не удалось назначить слот подписи к диску bsd."
+
+#: libparted/labels/dasd.c:859
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "Не удалось назначить слот подписи к диску dasd"
+
+#: libparted/labels/dos.c:966
+#, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr "Неверная таблица разделов на %s -- неправильная сигнатура %x."
+
+#: libparted/labels/dos.c:994
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "Неверная таблица разделов - рекурсивный раздел на %s."
+
+#: libparted/labels/dos.c:1504
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr "Расширенные разделы не могут быть скрыты при msdos метках диска."
+
+#: libparted/labels/dos.c:2158
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+"Parted не может изменять размер разделов управляемых Windows Dynamic Disk."
+
+#: libparted/labels/dvh.c:200
+#, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr "%s не содержит расширенного раздела (заголовка расширенного раздела)."
+
+#: libparted/labels/dvh.c:326
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr "Неправильная контрольная сумма, значит таблица разделов испорчена."
+
+#: libparted/labels/dvh.c:631
+msgid "Only primary partitions can be root partitions."
+msgstr "Только основные разделы могут быть root разделами."
+
+#: libparted/labels/dvh.c:645
+msgid "Only primary partitions can be swap partitions."
+msgstr "Только основные разделы могут быть swap разделами."
+
+#: libparted/labels/dvh.c:659
+msgid "Only logical partitions can be a boot file."
+msgstr "Только логические разделы могут быть загрузочными файлами."
+
+#: libparted/labels/dvh.c:736
+#, fuzzy, c-format
+msgid ""
+"failed to set dvh partition name to %s:\n"
+"Only logical partitions (boot files) have a name."
+msgstr "Только логические разделы  (загрузочные файлы) могут иметь имя."
+
+#: libparted/labels/dvh.c:829
+msgid "Too many primary partitions"
+msgstr "Слишком много основных разделов"
+
+#: libparted/labels/fdasd.c:98
+msgid "open error"
+msgstr "ошибка открытия"
+
+#: libparted/labels/fdasd.c:101
+msgid "seek error"
+msgstr "ошибка при поиске дорожки"
+
+#: libparted/labels/fdasd.c:104
+msgid "read error"
+msgstr "ошибка чтения"
+
+#: libparted/labels/fdasd.c:110
+msgid "ioctl() error"
+msgstr "ошибка ioctl()"
+
+#: libparted/labels/fdasd.c:114
+msgid "API version mismatch"
+msgstr "Несоответствие версий API"
+
+#: libparted/labels/fdasd.c:118
+msgid "Unsupported disk type"
+msgstr "Не поддерживаемый тип диска"
+
+#: libparted/labels/fdasd.c:122
+msgid "Unsupported disk format"
+msgstr "Не поддерживаемый формат диска"
+
+#: libparted/labels/fdasd.c:126
+msgid "Disk is in use"
+msgstr "Диск используется"
+
+#: libparted/labels/fdasd.c:130
+msgid "Syntax error in config file"
+msgstr "Ошибка синтаксиса конфигурационного файла"
+
+#: libparted/labels/fdasd.c:134
+msgid "Volume label is corrupted"
+msgstr "Метка тома повреждена"
+
+#: libparted/labels/fdasd.c:138
+msgid "A data set name is corrupted"
+msgstr "Имя набора данных повреждено"
+
+#: libparted/labels/fdasd.c:142
+msgid "Memory allocation failed"
+msgstr "Ошибка выделения памяти"
+
+#: libparted/labels/fdasd.c:146
+msgid "Device verification failed"
+msgstr "Ошибка проверки устройства"
+
+#: libparted/labels/fdasd.c:147
+msgid "The specified device is not a valid DASD device"
+msgstr "Указанное устройство не является правильным DASD устройством"
+
+#: libparted/labels/fdasd.c:150 libparted/labels/vtoc.c:179
+msgid "Fatal error"
+msgstr "Критическая ошибка"
+
+#: libparted/labels/fdasd.c:226
+msgid "No room for volume label."
+msgstr "Нет комнаты для метки тома."
+
+#: libparted/labels/fdasd.c:234
+msgid "No room for partition info."
+msgstr "Нет комнаты для информации о разделе."
+
+#: libparted/labels/fdasd.c:709
+msgid "Invalid VTOC."
+msgstr "Неправильный VTOC."
+
+#: libparted/labels/fdasd.c:766
+msgid "Could not retrieve API version."
+msgstr "Не удалось получить версию API."
+
+#: libparted/labels/fdasd.c:769
+#, c-format
+msgid ""
+"The current API version '%d' doesn't match dasd driver API version '%d'!"
+msgstr ""
+"Текущая версия API '%d' не соответствует версии API dasd драйвера '%d'!"
+
+#: libparted/labels/fdasd.c:806
+msgid "Could not retrieve disk geometry information."
+msgstr "Не удалось получить информацию о геометрии диска."
+
+#: libparted/labels/fdasd.c:810
+msgid "Could not retrieve blocksize information."
+msgstr "Не удалось получить информацию о размере блока."
+
+#: libparted/labels/fdasd.c:815
+msgid "Could not retrieve disk information."
+msgstr "Не удалось получить информацию о диске."
+
+#: libparted/labels/gpt.c:493
+#, c-format
+msgid ""
+"%s contains GPT signatures, indicating that it has a GPT table.  However, it "
+"does not have a valid fake msdos partition table, as it should.  Perhaps it "
+"was corrupted -- possibly by a program that doesn't understand GPT partition "
+"tables.  Or perhaps you deleted the GPT table, and are now using an msdos "
+"partition table.  Is this a GPT partition table?"
+msgstr ""
+"%s содержит сигнатуры GPT, означающие наличие GPT таблицы.  Но он не "
+"содержит нормальной фальшивой таблицы разделов msdos, как должен.  Скорее "
+"всего он повреждён -- возможно программой, которая не понимает таблицы "
+"разделов GPT.  Или возможно вы удалили таблицу GPT и теперь используете "
+"таблицу разделов msdos.  Это таблица разделов GPT?"
+
+#: libparted/labels/gpt.c:693
+#, fuzzy, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise.  Please report this!"
+msgstr ""
+"Формат таблицы разделов GPT версии %x, которая новее, чем Parted может "
+"распознать.  Расскажите нам об этом!  bug-parted@gnu.org"
+
+#: libparted/labels/gpt.c:740
+#, c-format
+msgid ""
+"Not all of the space available to %s appears to be used, you can fix the GPT "
+"to use all of the space (an extra %llu blocks) or continue with the current "
+"setting? "
+msgstr ""
+"Похоже, что не всё место доступное для %s используется, вы можете исправить "
+"таблицу GPT для использования всего места (дополнительно %llu блоков) или "
+"продолжить с текущими настройками? "
+
+#: libparted/labels/gpt.c:952
+msgid ""
+"The backup GPT table is not at the end of the disk, as it should be.  This "
+"might mean that another operating system believes the disk is smaller.  Fix, "
+"by moving the backup to the end (and removing the old backup)?"
+msgstr ""
+"Резервная копия таблицы GPT не находится в конце диска, как должно быть.  "
+"Это может означать, что другая операционная система верит, что диск меньше.  "
+"Исправить это, передвинув резервную копию в конец диска (и удалив старую)?"
+
+#: libparted/labels/gpt.c:976
+msgid ""
+"Both the primary and backup GPT tables are corrupt.  Try making a fresh "
+"table, and using Parted's rescue feature to recover partitions."
+msgstr ""
+"Обе - и главная, и резервная таблицы GPT повреждены.  Попробуйте создать "
+"новую и использовать функцию Parted восстановить для восстановления разделов."
+
+#: libparted/labels/gpt.c:987
+#, fuzzy
+msgid ""
+"The backup GPT table is corrupt, but the primary appears OK, so that will be "
+"used."
+msgstr ""
+"Главная таблица GPT повреждена, но резервная копия вроде нормальная, поэтому "
+"она и будет использоваться."
+
+#: libparted/labels/gpt.c:999
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr ""
+"Главная таблица GPT повреждена, но резервная копия вроде нормальная, поэтому "
+"она и будет использоваться."
+
+#: libparted/labels/gpt.c:1023
+msgid "primary partition table array CRC mismatch"
+msgstr ""
+
+#: libparted/labels/mac.c:184
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Неправильная сигнатура %x для меток дисков Mac."
+
+#: libparted/labels/mac.c:231
+msgid "Partition map has no partition map entry!"
+msgstr "Карта разделов не содержит элемента карты!"
+
+#: libparted/labels/mac.c:279
+#, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr "%s слишком меленький для метки диска Mac!"
+
+#: libparted/labels/mac.c:508
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "Раздел %d содержит неправильную сигнатуру %x."
+
+#: libparted/labels/mac.c:526
+#, c-format
+msgid "Partition %d has an invalid length of 0 bytes!"
+msgstr "Раздел %d имеет неправильную длину 0 байт!"
+
+#: libparted/labels/mac.c:557
+msgid "The data region doesn't start at the start of the partition."
+msgstr "Область данных не начинается в начале раздела."
+
+#: libparted/labels/mac.c:574
+msgid "The boot region doesn't start at the start of the partition."
+msgstr "Область загрузки не начинается в начале раздела."
+
+#: libparted/labels/mac.c:588
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr "Область загрузки не покрывает весь раздел."
+
+#: libparted/labels/mac.c:599
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr "Область данных не покрывает весь раздел."
+
+#: libparted/labels/mac.c:652
+#, c-format
+msgid ""
+"Weird block size on device descriptor: %d bytes is not divisible by 512."
+msgstr "Неправильный размер блока на устройстве: %d байт не делится на 512."
+
+#: libparted/labels/mac.c:665
+#, c-format
+msgid ""
+"The driver descriptor says the physical block size is %d bytes, but Linux "
+"says it is %d bytes."
+msgstr ""
+"Драйвер говорит,что размер физического блока равен %d байт, но Linux "
+"говорит, что он %d байт."
+
+#: libparted/labels/mac.c:719
+msgid "No valid partition map found."
+msgstr "Не найдено правильной карты разделов."
+
+#: libparted/labels/mac.c:780
+#, c-format
+msgid ""
+"Conflicting partition map entry sizes!  Entry 1 says it is %d, but entry %d "
+"says it is %d!"
+msgstr ""
+"Конфликт размеров элементов карты разделов!  Элемент 1 говорит %d, но %d "
+"говорит %d!"
+
+#: libparted/labels/mac.c:811
+msgid "Weird!  There are 2 partitions map entries!"
+msgstr "Ужас!  Содержится 2 элемента таблицы разделов!"
+
+#: libparted/labels/mac.c:1357
+msgid ""
+"Changing the name of a root or swap partition will prevent Linux from "
+"recognising it as such."
+msgstr ""
+"Изменив имя root или swap раздела заставит Linux перестать понимать их."
+
+#: libparted/labels/mac.c:1461
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr "Не удалось создать другой раздел -- слишком маленькая карта разделов!"
+
+#: libparted/labels/pc98.c:331
+#, c-format
+msgid "Invalid partition table on %s."
+msgstr "Неверная таблица разделов на %s."
+
+#: libparted/labels/pc98.c:384 libparted/labels/pc98.c:462
+#, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries.  This is still "
+"unsupported."
+msgstr "Раздел %d не выровнен к краю цилиндра.  Это всё ещё не поддерживается."
+
+#: libparted/labels/pc98.c:780
+msgid "Can't add another partition."
+msgstr "Невозможно добавить другой раздел."
+
+#: libparted/labels/pt-tools.c:125
+#, c-format
+msgid ""
+"partition length of %jd sectors exceeds the %s-partition-table-imposed "
+"maximum of %jd"
+msgstr ""
+
+#: libparted/labels/pt-tools.c:138
+#, c-format
+msgid ""
+"starting sector number, %jd exceeds the %s-partition-table-imposed maximum "
+"of %jd"
+msgstr ""
+
+#: libparted/labels/rdb.c:169
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr "%s : Неправильная контрольная сумма %llu типа %s."
+
+#: libparted/labels/rdb.c:484
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr "%s : Не найден rdb блок, такого не должно было случиться."
+
+#: libparted/labels/rdb.c:573
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr "%s : Обнаружено кольцо на блоке %d."
+
+#: libparted/labels/rdb.c:592
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr "%s : Список %s похож на плохой на блоке %s."
+
+#: libparted/labels/rdb.c:691
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr "%s : Не удалось вывести список плохих блоков."
+
+#: libparted/labels/rdb.c:699
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr "%s : Не удалось вывести список блоков раздела."
+
+#: libparted/labels/rdb.c:707
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr "%s : Не удалось вывести блоков файловой системы."
+
+#: libparted/labels/rdb.c:715
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr "%s : Не удалось вывести список загрузочных блоков."
+
+#: libparted/labels/rdb.c:742
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr "Не удалось записать блок раздела на %d."
+
+#: libparted/labels/rdb.c:1080
+msgid "Unable to allocate a partition number."
+msgstr "Не удалось назначить номер раздела."
+
+#: libparted/labels/sun.c:161
+msgid "Corrupted Sun disk label detected."
+msgstr "Обнаружена повреждённая метка диска Sun."
+
+#: libparted/labels/sun.c:276
+#, c-format
+msgid ""
+"The disk CHS geometry (%d,%d,%d) reported by the operating system does not "
+"match the geometry stored on the disk label (%d,%d,%d)."
+msgstr ""
+"CHS геометрия диска (%d,%d,%d) предоставленная операционной системой не "
+"совпадает с геометрией, которая содержится в метке диска (%d,%d,%d)."
+
+#: libparted/labels/sun.c:298
+#, c-format
+msgid "The disk label describes a disk bigger than %s."
+msgstr "Метка диска указывает на диск больший чем %s."
+
+#: libparted/labels/sun.c:473
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr "Диск содержит %d цилиндров, что больше максимума 65536."
+
+#: libparted/labels/sun.c:812
+msgid ""
+"The Whole Disk partition is the only available one left.  Generally, it is "
+"not a good idea to overwrite this partition with a real one.  Solaris may "
+"not be able to boot without it, and SILO (the sparc boot loader) appreciates "
+"it as well."
+msgstr ""
+"Раздел Весь диск доступен только слева.  Вообще-то - это плохая идея "
+"переписывать этот раздел реальным.  Solaris, возможно, может не загрузиться "
+"без него и SILO (загрузчик sparc) оценивает это также."
+
+#: libparted/labels/sun.c:827
+msgid "Sun disk label is full."
+msgstr "Метка диска Sun переполнена."
+
+#: libparted/labels/vtoc.c:164
+msgid "opening of device failed"
+msgstr "не удалось открыть устройство"
+
+#: libparted/labels/vtoc.c:168
+msgid "seeking on device failed"
+msgstr "не удалось найти дорожку"
+
+#: libparted/labels/vtoc.c:172
+msgid "writing to device failed"
+msgstr "не удалось записать на устройство"
+
+#: libparted/labels/vtoc.c:176
+msgid "reading from device failed"
+msgstr "не удалось прочесть с устройства"
+
+#: libparted/labels/vtoc.c:299 libparted/labels/vtoc.c:308
+#: libparted/labels/vtoc.c:329 libparted/labels/vtoc.c:336
+msgid "Could not read volume label."
+msgstr "Не удалось прочесть метку тома."
+
+#: libparted/labels/vtoc.c:356 libparted/labels/vtoc.c:363
+msgid "Could not write volume label."
+msgstr "Не удалось записать метку тома."
+
+#: libparted/labels/vtoc.c:469
+msgid "Could not read VTOC labels."
+msgstr "Не удалось прочесть VTOC метки."
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr "Не удалось прочесть VTOC FMT1 DSCB."
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr "Не удалось прочесть VTOC FMT4 DSCB."
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr "Не удалось прочесть VTOC FMT5 DSCB."
+
+#: libparted/labels/vtoc.c:496
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr "Не удалось прочесть VTOC FMT7 DSCB."
+
+#: libparted/labels/vtoc.c:516
+msgid "Could not write VTOC labels."
+msgstr "Не удалось записать VTOC метки."
+
+#: libparted/labels/vtoc.c:522
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr "Не удалось записать VTOC FMT1 DSCB."
+
+#: libparted/labels/vtoc.c:529
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr "Не удалось записать VTOC FMT4 DSCB."
+
+#: libparted/labels/vtoc.c:536
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr "Не удалось записать VTOC FMT5 DSCB."
+
+#: libparted/labels/vtoc.c:543
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr "Не удалось записать VTOC FMT7 DSCB."
+
+#: libparted/libparted.c:230 libparted/libparted.c:245
+msgid "Out of memory."
+msgstr "Недостаточно памяти."
+
+#: libparted/unit.c:138
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr ""
+"Невозможно определить размер объекта для специального объекта 'COMPACT'."
+
+#: libparted/unit.c:384
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr "\"%s\" содержит неправильный синтаксис расположений."
+
+#: libparted/unit.c:392
+#, c-format
+msgid "The maximum head value is %d."
+msgstr "Максимальное количество головок %d."
+
+#: libparted/unit.c:399
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr "Максимальное количество секторов %d."
+
+#: libparted/unit.c:411 libparted/unit.c:556
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr "Расположение %s вне устройства %s."
+
+#: libparted/unit.c:531
+msgid "Invalid number."
+msgstr "Неправильный номер."
+
+#: libparted/fs/amiga/affs.c:62 libparted/fs/amiga/apfs.c:55
+#: libparted/fs/amiga/asfs.c:69
+#, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "%s : Не удалось выделить блок раздела\n"
+
+#: libparted/fs/amiga/affs.c:77 libparted/fs/amiga/apfs.c:68
+#: libparted/fs/amiga/asfs.c:81
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr "%s : Не удалось выделить блок\n"
+
+#: libparted/fs/amiga/affs.c:82 libparted/fs/amiga/apfs.c:73
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr "%s : Не удалось прочесть загрузочный блок %llu\n"
+
+#: libparted/fs/amiga/affs.c:98 libparted/fs/amiga/apfs.c:84
+#: libparted/fs/amiga/asfs.c:87 libparted/fs/amiga/asfs.c:101
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr "%s : Не удалось прочесть корневой блок %llu\n"
+
+#: libparted/fs/amiga/amiga.c:71
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr "%s : Не удалось выделить элемент списка идентификаторов\n"
+
+#: libparted/fs/amiga/amiga.c:188
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr "%s : Не удалось прочесть блок %llu\n"
+
+#: libparted/fs/amiga/amiga.c:201
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr "%s : Неправильная контрольная сумма блока %llu типа %s\n"
+
+#: libparted/fs/amiga/amiga.c:211
+#, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s : Не удалось записать блок %d.\n"
+
+#: libparted/fs/amiga/amiga.c:277
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr "%s : Не удалось выделить специфичный_для_диска блок rdb\n"
+
+#: libparted/fs/amiga/amiga.c:288
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr "%s : Не найден rdb блок, такого не должно было случиться\n"
+
+#: libparted/fs/amiga/amiga.c:317
+#, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr "%s : Не удалось прочесть блок раздела %llu\n"
+
+#: libparted/fs/fat/fat.c:174
+msgid ""
+"GNU Parted was miscompiled: the FAT boot sector should be 512 bytes.  FAT "
+"support will be disabled."
+msgstr ""
+"GNU parted был неправильно скомпилирован: загрузочный сектор FAT должен "
+"занимать 512 байт.  Поддержка FAT будет отключена."
+
+#: libparted/fs/fat/bootsector.c:49 libparted/fs/fat/bootsector.c:56
+msgid "File system has an invalid signature for a FAT file system."
+msgstr "Файловая система имеет неверную для FAT сигнатуру."
+
+#: libparted/fs/fat/bootsector.c:64
+msgid "File system has an invalid sector size for a FAT file system."
+msgstr "Файловая система имеет неверный для FAT размер сектора."
+
+#: libparted/fs/fat/bootsector.c:71
+msgid "File system has an invalid cluster size for a FAT file system."
+msgstr "Файловая система имеет неверный для FAT размер кластера."
+
+#: libparted/fs/fat/bootsector.c:78
+msgid ""
+"File system has an invalid number of reserved sectors for a FAT file system."
+msgstr ""
+"Файловая система имеет неверное для FAT число зарезервированных секторов."
+
+#: libparted/fs/fat/bootsector.c:85
+msgid "File system has an invalid number of FATs."
+msgstr "Файловая система имеет неверное количество FAT."
+
+#: libparted/fs/fat/bootsector.c:156
+#, c-format
+msgid ""
+"This file system has a logical sector size of %d.  GNU Parted is known not "
+"to work properly with sector sizes other than 512 bytes."
+msgstr ""
+"Эта файловая система имеет размер логического сектора %d.  Считается, что "
+"GNU Parted работает неправильно с секторами, размер которых отличен от 512 "
+"байт."
+
+#: libparted/fs/fat/bootsector.c:181
+#, c-format
+msgid ""
+"The file system's CHS geometry is (%d, %d, %d), which is invalid.  The "
+"partition table's CHS geometry is (%d, %d, %d).  If you select Ignore, the "
+"file system's CHS geometry will be left unchanged.  If you select Fix, the "
+"file system's CHS geometry will be set to match the partition table's CHS "
+"geometry."
+msgstr ""
+"CHS геометрия файловой системы (%d, %d, %d), что не является правильным.  "
+"CHS геометрия таблицы раздела (%d, %d, %d).  Если вы выберете Игнорировать, "
+"CHS геометрия файловой системы останется без изменений.  Если вы выберете "
+"Исправить, CHS геометрия файловой системы будет изменена для согласования с "
+"CHS геометрией таблицы раздела."
+
+#: libparted/fs/fat/bootsector.c:230
+msgid "FAT boot sector says logical sector size is 0.  This is weird. "
+msgstr ""
+"Загрузочный сектор FAT содержит размер логического сектора, равный 0.  Это "
+"странно. "
+
+#: libparted/fs/fat/bootsector.c:236
+msgid "FAT boot sector says there are no FAT tables.  This is weird. "
+msgstr ""
+"В загрузочном секторе FAT не содержится информации о таблицах FAT.  Это "
+"странно. "
+
+#: libparted/fs/fat/bootsector.c:242
+msgid "FAT boot sector says clusters are 0 sectors.  This is weird. "
+msgstr ""
+"В соответствии с загрузочным сектором FAT, кластер содержит 0 секторов.  Это "
+"странно. "
+
+#: libparted/fs/fat/bootsector.c:252
+msgid "File system is FAT12, which is unsupported."
+msgstr "Файловая система FAT12, не поддерживается."
+
+#: libparted/fs/fat/bootsector.c:428
+#, c-format
+msgid ""
+"The information sector has the wrong signature (%x).  Select cancel for now, "
+"and send in a bug report.  If you're desperate, it's probably safe to ignore."
+msgstr ""
+"Информационный сектор имеет неверную сигнатуру (%x).  Выберите отмену, и "
+"пошлите сообщение об ошибке.  Если вы уже отчаялись, то, вероятно, можно "
+"проигнорировать."
+
+#: libparted/fs/linux_swap/linux_swap.c:247
+#, fuzzy, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "Не распознанная сигнатура linux swap '%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:290
+#, fuzzy, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "Не распознанная сигнатура linux swap '%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:330
+#, fuzzy, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Не распознанная сигнатура linux swap '%10s'."
+
+#: libparted/fs/hfs/probe.c:50
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to "
+"%d bytes."
+msgstr ""
+"Parted не может работать с файловыми системами HFS, на дисках с размером "
+"сектора не равным %d байт."
+
+#: parted/parted.c:123
+msgid "displays this help message"
+msgstr "отображает это справочное сообщение"
+
+#: parted/parted.c:124
+msgid "lists partition layout on all block devices"
+msgstr "выводит список разделов на всех блочных устройствах"
+
+#: parted/parted.c:125
+msgid "displays machine parseable output"
+msgstr "отображает вывод для обработки компьютером"
+
+#: parted/parted.c:126
+msgid "never prompts for user intervention"
+msgstr "никогда не запрашивает вмешательство пользователя"
+
+#: parted/parted.c:127
+msgid "displays the version"
+msgstr "отображает версию"
+
+#: parted/parted.c:128
+#, fuzzy
+msgid "alignment for new partitions"
+msgstr "Невозможно создать больше разделов."
+
+#: parted/parted.c:140
+msgid ""
+"NUMBER is the partition number used by Linux.  On MS-DOS disk labels, the "
+"primary partitions number from 1 to 4, logical partitions from 5 onwards.\n"
+msgstr ""
+"НОМЕР - это номер раздела используемый в Linux.  В MS-DOS метки диска, "
+"номера основных разделов от 1 до 4, логических разделов от 5 и далее.\n"
+
+#: parted/parted.c:143
+msgid "LABEL-TYPE is one of: "
+msgstr "ТИП_МЕТКИ один из: "
+
+#: parted/parted.c:144
+msgid "FLAG is one of: "
+msgstr "ФЛАГ один из: "
+
+#: parted/parted.c:145
+msgid "UNIT is one of: "
+msgstr "УСТР. один из: "
+
+#: parted/parted.c:146
+msgid "desired alignment: minimum or optimal"
+msgstr ""
+
+#: parted/parted.c:147
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "ТИП_РАЗД один из: основной, логический, расширенный\n"
+
+#: parted/parted.c:149
+msgid "FS-TYPE is one of: "
+msgstr "ТИП_ФС один из: "
+
+#: parted/parted.c:150
+msgid ""
+"START and END are disk locations, such as 4GB or 10%.  Negative values count "
+"from the end of the disk.  For example, -1s specifies exactly the last "
+"sector.\n"
+msgstr ""
+"НАЧАЛО и КОНЕЦ - это место диска, типа 4GB или 10%.  Отрицательные значения "
+"вычитаются от конца диска.  Например, -1s обозначает последний сектор.\n"
+
+#: parted/parted.c:153
+msgid "STATE is one of: on, off\n"
+msgstr "СОСТ. один из: on, off\n"
+
+#: parted/parted.c:154
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "УСТРОЙСТВОМ обычно является /dev/hda или /dev/sda\n"
+
+#: parted/parted.c:155
+msgid "NAME is any word you want\n"
+msgstr "ИМЯ - любое слово, какое захотите\n"
+
+#: parted/parted.c:158
+msgid ""
+"Copyright (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"This program is free software, covered by the GNU General Public License.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+msgstr ""
+"Copyright (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"Это свободная программа, на неё распространяется Универсальная Общественная\n"
+"Лицензия GNU.\n"
+"\n"
+"Эта программа распространяется в надежде, что она будет полезной, но БЕЗ\n"
+"КАКИХ-ЛИБО ГАРАНТИЙ; даже без подразумеваемых гарантий КОММЕРЧЕСКОЙ ЦЕННОСТИ "
+"или ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ.  Для получения более подробной "
+"информации смотрите Универсальную Общественную Лицензию GNU.\n"
+
+#: parted/parted.c:204
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(времени прошло %.2d:%.2d)"
+
+#: parted/parted.c:223
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+"Раздел %s используется.  Вы должны отмонтировать его перед изменением  с "
+"помощью Parted."
+
+#: parted/parted.c:241
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "Разделы на %s используются."
+
+#: parted/parted.c:253
+#, c-format
+msgid ""
+"The existing disk label on %s will be destroyed and all data on this disk "
+"will be lost. Do you want to continue?"
+msgstr ""
+"Существующая метка диска на  %s будет уничтожена и все данные на этом диске "
+"будут утеряны. Вы хотите продолжить?"
+
+#: parted/parted.c:502
+msgid "New disk label type?"
+msgstr "Новый тип метки диска?"
+
+#: parted/parted.c:562
+msgid "Partition type?"
+msgstr "Тип раздела?"
+
+#: parted/parted.c:580 parted/parted.c:766
+msgid "Partition name?"
+msgstr "Имя раздела?"
+
+#: parted/parted.c:588
+msgid "File system type?"
+msgstr "Тип файловой системы?"
+
+#: parted/parted.c:594 parted/parted.c:1342
+msgid "Start?"
+msgstr "Начало?"
+
+#: parted/parted.c:596 parted/parted.c:1344
+msgid "End?"
+msgstr "Конец?"
+
+#: parted/parted.c:661
+#, fuzzy, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s.%s"
+msgstr ""
+"Вы запросили раздел от %s до %s.\n"
+"Ближайшие точки с которыми мы можем работать от %s до %s.  Это подходит для "
+"вас?"
+
+#: parted/parted.c:666
+msgid ""
+"\n"
+"Is this still acceptable to you?"
+msgstr ""
+
+#: parted/parted.c:688
+msgid "The resulting partition is not properly aligned for best performance."
+msgstr ""
+
+#: parted/parted.c:763 parted/parted.c:1383 parted/parted.c:1455
+#: parted/parted.c:1489
+msgid "Partition number?"
+msgstr "Номер раздела?"
+
+#: parted/parted.c:841
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d.  Each cylinder is %s.\n"
+msgstr ""
+"Геометрия цилиндров, головок, секторов BIOS: %d,%d,%d.  Каждый цилиндр %s.\n"
+
+#: parted/parted.c:881
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr "Модель: %s (%s)\n"
+
+#: parted/parted.c:883
+#, c-format
+msgid "Disk %s: %s\n"
+msgstr "Диск %s: %s\n"
+
+#: parted/parted.c:884
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr "Размер сектора (логич./физич.): %lldB/%lldB\n"
+
+#: parted/parted.c:896
+#, c-format
+msgid "Partition Table: %s\n"
+msgstr "Таблица разделов: %s\n"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Number"
+msgstr "Номер"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Start"
+msgstr "Начало"
+
+#: parted/parted.c:1008 parted/parted.c:1011
+msgid "End"
+msgstr "Конец"
+
+#: parted/parted.c:1011
+msgid "Size"
+msgstr "Размер"
+
+#: parted/parted.c:1015
+msgid "Type"
+msgstr "Тип"
+
+#: parted/parted.c:1017
+msgid "File system"
+msgstr "Файловая система"
+
+#: parted/parted.c:1020
+msgid "Name"
+msgstr "Имя"
+
+#: parted/parted.c:1022
+msgid "Flags"
+msgstr "Флаги"
+
+#: parted/parted.c:1079
+msgid "Free Space"
+msgstr "Свободное место"
+
+#: parted/parted.c:1241
+#, c-format
+msgid ""
+"A %s %s partition was found at %s -> %s.  Do you want to add it to the "
+"partition table?"
+msgstr ""
+"Раздел %s %s найден на %s -> %s.  Вы хотите добавить его в таблицу разделов?"
+
+#: parted/parted.c:1280
+msgid "searching for file systems"
+msgstr "поиск файловых систем"
+
+#: parted/parted.c:1408
+msgid "New device?"
+msgstr "Новое устройство?"
+
+#: parted/parted.c:1453
+msgid "alignment type(min/opt)"
+msgstr ""
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d aligned\n"
+msgstr ""
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d not aligned\n"
+msgstr ""
+
+#: parted/parted.c:1491
+msgid "Flag to Invert?"
+msgstr "Флаг для инвертации?"
+
+#: parted/parted.c:1496
+msgid "New state?"
+msgstr "Новое состояние?"
+
+#: parted/parted.c:1533
+msgid "Unit?"
+msgstr "Устройство?"
+
+#: parted/parted.c:1651
+#, fuzzy
+msgid "align-check"
+msgstr "check"
+
+#: parted/parted.c:1654
+msgid ""
+"align-check TYPE N                        check partition N for TYPE(min|"
+"opt) alignment"
+msgstr ""
+
+#: parted/parted.c:1662
+msgid "help"
+msgstr "help"
+
+#: parted/parted.c:1665
+msgid ""
+"help [COMMAND]                           print general help, or help on "
+"COMMAND"
+msgstr ""
+"help [КОМАНДА]                   распечатать общую справку или справку по "
+"КОМАНДЕ"
+
+#: parted/parted.c:1671
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:1671
+msgid "mktable"
+msgstr "mktable"
+
+#: parted/parted.c:1674
+msgid ""
+"mklabel,mktable LABEL-TYPE               create a new disklabel (partition "
+"table)"
+msgstr ""
+"mklabel,mktable ТИП_МЕТКИ         создать новую метку диска (таблицу "
+"раздела) "
+
+#: parted/parted.c:1680
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:1683
+msgid "mkpart PART-TYPE [FS-TYPE] START END     make a partition"
+msgstr "mkpart ТИП_РАЗД [ТИП_ФС] НАЧ КОН создать раздел"
+
+#: parted/parted.c:1689
+msgid ""
+"'mkpart' makes a partition without creating a new file system on the "
+"partition.  FS-TYPE may be specified to set an appropriate partition ID.\n"
+msgstr ""
+"mkpart делает раздел без создания на нем новой файловой системы.  ТИП_ФС "
+"должен быть указан для записи идентификатора раздела\n"
+
+#: parted/parted.c:1694
+msgid "name"
+msgstr "name"
+
+#: parted/parted.c:1697
+msgid "name NUMBER NAME                         name partition NUMBER as NAME"
+msgstr "name НОМЕР ИМЯ                   назначает имя разделу НОМЕР на ИМЯ"
+
+#: parted/parted.c:1702
+msgid "print"
+msgstr "print"
+
+#: parted/parted.c:1705
+msgid ""
+"print [devices|free|list,all|NUMBER]     display the partition table, "
+"available devices, free space, all found partitions, or a particular "
+"partition"
+msgstr ""
+"print [devices|free|list,all|НОМЕР]     отображает таблицу разделов, "
+"доступные устройства, свободное место, все найденные разделы или "
+"определённый раздел"
+
+#: parted/parted.c:1710
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+"Без параметров, 'print' отображает всю таблицу разделов. Но с параметрами "
+"могут выполняться и некоторые другие действия.\n"
+
+#: parted/parted.c:1712
+msgid "  devices   : display all active block devices\n"
+msgstr "  devices   : отобразить все активные блочные устройства\n"
+
+#: parted/parted.c:1713
+msgid ""
+"  free      : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+"  free      : отображает информацию о свободное не разбитом пространстве на "
+"текущем блочном устройстве\n"
+
+#: parted/parted.c:1715
+msgid ""
+"  list, all : display the partition tables of all active block devices\n"
+msgstr ""
+"  list, all : отображает таблицы разделов на всех активных блочных "
+"устройствах\n"
+
+#: parted/parted.c:1716
+msgid ""
+"  NUMBER    : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+"  НОМЕР    : отображает более детальную информацию о требуемом разделе\n"
+
+#: parted/parted.c:1721
+msgid "quit"
+msgstr "quit"
+
+#: parted/parted.c:1724
+msgid "quit                                     exit program"
+msgstr "quit                             выйти из программы"
+
+#: parted/parted.c:1729
+msgid "rescue"
+msgstr "resize"
+
+#: parted/parted.c:1732
+msgid ""
+"rescue START END                         rescue a lost partition near START "
+"and END"
+msgstr ""
+"rescue НАЧАЛО КОНЕЦ              восстановить потерянный раздел в промежутке "
+"от НАЧАЛА до КОНЦА"
+
+#: parted/parted.c:1738
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:1741
+msgid "rm NUMBER                                delete partition NUMBER"
+msgstr "rm НОМЕР                         удалить раздел НОМЕР"
+
+#: parted/parted.c:1746
+msgid "select"
+msgstr "select"
+
+#: parted/parted.c:1749
+msgid "select DEVICE                            choose the device to edit"
+msgstr "select УСТРОЙСТВО                выбор устройства для редактирования"
+
+#: parted/parted.c:1754
+msgid "set"
+msgstr "set"
+
+#: parted/parted.c:1757
+msgid ""
+"set NUMBER FLAG STATE                    change the FLAG on partition NUMBER"
+msgstr "set НОМЕР ФЛАГ СОСТОЯНИЯ         изменить ФЛАГ на разделе НОМЕР"
+
+#: parted/parted.c:1763
+msgid "toggle"
+msgstr "toggle"
+
+#: parted/parted.c:1766
+msgid ""
+"toggle [NUMBER [FLAG]]                   toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+"toggle [НОМЕР [ФЛАГ]]            переключает состояния ФЛАГА на разделе НОМЕР"
+
+#: parted/parted.c:1772
+msgid "unit"
+msgstr "unit"
+
+#: parted/parted.c:1775
+msgid "unit UNIT                                set the default unit to UNIT"
+msgstr ""
+"unit УСТРОЙСТВО                  установить устройство по умолчанию на "
+"УСТРОЙСТВО"
+
+#: parted/parted.c:1780
+msgid "version"
+msgstr "version"
+
+#: parted/parted.c:1783
+msgid ""
+"version                                  display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+"version                                  отображает текущую версию GNU "
+"Parted и информацию о лицензии"
+
+#: parted/parted.c:1787
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+"version отображает информацию о лицензии и версии этой копии GNU Parted\n"
+
+#: parted/parted.c:1855
+#, fuzzy, c-format
+msgid "Usage: %s [-hlmsv] [-a<align>] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr "Использование: %s [-hlmsv] [УСТРОЙСТВО [КОМАНДА [ПАРАМЕТРЫ]]...]\n"
+
+#: parted/parted.c:1899
+msgid "No device found"
+msgstr "Устройство не найдено"
+
+#: parted/parted.c:1936
+msgid "WARNING: You are not superuser.  Watch out for permissions."
+msgstr "ВНИМАНИЕ: Вы не администратор.  Следите за правами."
+
+#: parted/parted.c:1974
+msgid "You may need to update /etc/fstab.\n"
+msgstr "Не забудьте обновить /etc/fstab.\n"
+
+#: parted/ui.c:162
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+"Добро пожаловать в GNU Parted! Наберите 'help' для просмотра списка команд.\n"
+
+#: parted/ui.c:165
+msgid ""
+"Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]\n"
+"Apply COMMANDs with PARAMETERS to DEVICE.  If no COMMAND(s) are given, run "
+"in\n"
+"interactive mode.\n"
+msgstr ""
+"Использование: parted [ОПЦИЯ]... [УСТРОЙСТВО [КОМАНДА [ПАРАМЕТРЫ]...]...]\n"
+"Применяет КОМАНДУ с ПАРАМЕТРАМИ к УСТРОЙСТВУ.  Если ни одной КОМАНДЫ не "
+"задано,\n"
+"выполняется в интерактивном режиме.\n"
+
+#: parted/ui.c:170
+#, c-format
+msgid ""
+"\n"
+"\n"
+"You found a bug in GNU Parted! Here's what you have to do:\n"
+"\n"
+"Don't panic! The bug has most likely not affected any of your data.\n"
+"Help us to fix this bug by doing the following:\n"
+"\n"
+"Check whether the bug has already been fixed by checking\n"
+"the last version of GNU Parted that you can find at:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Please check this version prior to bug reporting.\n"
+"\n"
+"If this has not been fixed yet or if you don't know how to check,\n"
+"please visit the GNU Parted website:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"for further information.\n"
+"\n"
+"Your report should contain the version of this release (%s)\n"
+"along with the error message below, the output of\n"
+"\n"
+"\tparted DEVICE unit co print unit s print\n"
+"\n"
+"and the following history of commands you entered.\n"
+"Also include any additional information about your setup you\n"
+"consider important.\n"
+msgstr ""
+"\n"
+"\n"
+"Вы нашли ошибку в GNU Parted! Вот, что нужно делать:\n"
+"\n"
+"Не паникуйте! Эта ошибка скорее всего не повлияет на ваши данные.\n"
+"Помогите нам исправить эту ошибку делая вот что:\n"
+"\n"
+"Проверьте, не исправлена ли ошибка ещё, загрузив\n"
+"последнюю версию GNU Parted, которую вы\n"
+"можете найти на:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Пожалуйста, проверьте эту версию, перед сообщением об ошибке.\n"
+"\n"
+"Если ошибка ещё не исправлена или вы не знаете как\n"
+"это проверить посетите сайт GNU Parted:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"за дополнительной информацией.\n"
+"\n"
+"Ваше сообщение должно содержать номер этой версии (%s)\n"
+"также как и сообщение об ошибке ниже и вывод команд\n"
+"\n"
+"\tparted УСТРОЙСТВО unit co print unit s print\n"
+"\n"
+"и команды, которые вы вводили.\n"
+"А также любую дополнительную информацию о вашей конфигурации,\n"
+"если вы посчитаете это важным.\n"
+
+#: parted/ui.c:291
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+"\n"
+"История команд:\n"
+
+#: parted/ui.c:354
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+"\n"
+"Ошибка: SEGV_MAPERR (Адрес не назначен объекту)\n"
+
+#: parted/ui.c:360
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+"\n"
+"Ошибка: SEGV_ACCERR (Не правильные права для назначенного объекта)\n"
+
+#: parted/ui.c:365
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+"\n"
+"Ошибка: Получен обычный сигнал SIGSEGV.\n"
+
+#: parted/ui.c:389
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+"\n"
+"Ошибка: FPE_INTDIV (Целое: деление на ноль)"
+
+#: parted/ui.c:394
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+"\n"
+"Ошибка: FPE_INTOVF (Целое: переполнение)"
+
+#: parted/ui.c:399
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+"\n"
+"Ошибка: FPE_FLTDIV (Float: деление на ноль)"
+
+#: parted/ui.c:404
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+"\n"
+"Ошибка: FPE_FLTOVF (Float: переполнение)"
+
+#: parted/ui.c:409
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+"\n"
+"Ошибка: FPE_FLTUND (Float: underflow)"
+
+#: parted/ui.c:414
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+"\n"
+"Ошибка: FPE_FLTRES (Float: неточный ответ)"
+
+#: parted/ui.c:419
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+"\n"
+"Ошибка: FPE_FLTINV (Float: неправильная операция)"
+
+#: parted/ui.c:424
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+"\n"
+"Ошибка: FPE_FLTSUB (Float: выражение вне области)"
+
+#: parted/ui.c:429
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+"\n"
+"Ошибка: Получен обычный сигнал SIGFPE."
+
+#: parted/ui.c:453
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+"\n"
+"Ошибка: ILL_ILLOPC (Неправильный Opcode)"
+
+#: parted/ui.c:458
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+"\n"
+"Ошибка: ILL_ILLOPN (Неправильный операнд)"
+
+#: parted/ui.c:463
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+"\n"
+"Ошибка:  ILL_ILLADR (Неправильный режим адресации)"
+
+#: parted/ui.c:468
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+"\n"
+"Ошибка: ILL_ILLTRP (неправильная ловушка)"
+
+#: parted/ui.c:473
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+"\n"
+"Ошибка: ILL_PRVOPC (Привилегированный Opcode)"
+
+#: parted/ui.c:478
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+"\n"
+"Ошибка: ILL_PRVREG (Привилегированный регистр)"
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+"\n"
+"Ошибка: ILL_COPROC (Ошибка сопроцессора)"
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+"\n"
+"Ошибка: ILL_BADSTK (Ошибка внутреннего стека)"
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+"\n"
+"Ошибка: Получен обычный сигнал SIGILL."
+
+#: parted/ui.c:891
+#, c-format
+msgid "invalid token: %s"
+msgstr "Не правильный ключ: %s"
+
+#: parted/ui.c:1048
+msgid "Expecting a partition number."
+msgstr "Ожидается номер раздела."
+
+#: parted/ui.c:1057
+msgid "Partition doesn't exist."
+msgstr "Раздел не существует."
+
+#: parted/ui.c:1077
+msgid "Expecting a file system type."
+msgstr "Ожидается тип файловой системы."
+
+#: parted/ui.c:1084
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Неизвестный тип файловой системы \"%s\"."
+
+#: parted/ui.c:1105
+msgid "Expecting a disk label type."
+msgstr "Ожидается тип подписи диска."
+
+#: parted/ui.c:1203
+msgid "Can't create any more partitions."
+msgstr "Невозможно создать больше разделов."
+
+#: parted/ui.c:1213
+msgid "Expecting a partition type."
+msgstr "Ожидается тип раздела."
+
+#: parted/ui.c:1361
+msgid "on"
+msgstr "вкл"
+
+#: parted/ui.c:1362
+msgid "off"
+msgstr "выкл"
+
+#: parted/ui.c:1379
+msgid "optimal"
+msgstr ""
+
+#: parted/ui.c:1380
+msgid "minimal"
+msgstr ""
+
+#: parted/ui.c:1513
+msgid "OPTIONs:"
+msgstr "КЛЮЧИ:"
+
+#: parted/ui.c:1518
+msgid "COMMANDs:"
+msgstr "КОМАНДЫ:"
+
+#: parted/ui.c:1521
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Report bugs to %s\n"
+msgstr ""
+"\n"
+"Сообщайте об ошибках на <%s>.\n"
+
+#: parted/ui.c:1528
+#, c-format
+msgid "Using %s\n"
+msgstr "Используется %s\n"
+
+#: parted/ui.c:1602
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr "Эта команда ничего не делает в не-интерактивном режиме.\n"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]\n"
+#~ "  or:  %s DEVICE MINOR\n"
+#~ msgstr ""
+#~ "Использование: %s [ПАРАМЕТР]\n"
+#~ "  или:  %s НОМЕР УСТРОЙСТВА\n"
+
+#~ msgid ""
+#~ "Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Очистить неиспользуемое пространство на разделе FAT\n"
+#~ "(программа тестирования GNU Parted).\n"
+#~ "\n"
+
+#~ msgid "      --help     display this help and exit\n"
+#~ msgstr "      --help     отобразить эту справку и выйти\n"
+
+#~ msgid "      --version  output version information and exit\n"
+#~ msgstr "      --version  вывести информацию о версии и выйти\n"
+
+#~ msgid "too few arguments"
+#~ msgstr "слишком мало аргументов"
+
+#~ msgid "too many arguments"
+#~ msgstr "слишком много аргументов"
+
+#, fuzzy
+#~ msgid "invalid minor device number: %s"
+#~ msgstr "Не правильный ключ: %s"
+
+#~ msgid "Could not detect file system."
+#~ msgstr "Не удаётся определить файловую систему."
+
+#~ msgid "The file system is bigger than its volume!"
+#~ msgstr "Файловая система больше её раздела!"
+
+#~ msgid "Support for opening %s file systems is not implemented yet."
+#~ msgstr "Поддержка открытия файловой системы %s пока не реализована."
+
+#~ msgid "Support for creating %s file systems is not implemented yet."
+#~ msgstr "Поддержка создания файловой системы %s пока не реализована."
+
+#~ msgid "Support for checking %s file systems is not implemented yet."
+#~ msgstr "Поддержка проверки файловой системы %s пока не реализована."
+
+#~ msgid "raw block copying"
+#~ msgstr "копирование блоков"
+
+#~ msgid "growing file system"
+#~ msgstr "наращивание файловой системы"
+
+#~ msgid "Can't copy onto an overlapping partition."
+#~ msgstr "Невозможно скопировать на перекрывающий раздел."
+
+#~ msgid ""
+#~ "Direct support for copying file systems is not yet implemented for %s.  "
+#~ "However, support for resizing is implemented.  Therefore, the file system "
+#~ "can be copied if the new partition is at least as big as the old one.  "
+#~ "So, either shrink the partition you are trying to copy, or copy to a "
+#~ "bigger partition."
+#~ msgstr ""
+#~ "Прямая поддержка копирования файловых систем ещё не реализована для %s.  "
+#~ "Но поддержка изменения размера реализована.  Поэтому, файловая система "
+#~ "может быть скопирована, если новый раздел такой-же большой как и старый.  "
+#~ "Поэтому уменьшите раздел, который вы пытаетесь скопировать или скопируйте "
+#~ "на больший раздел."
+
+#~ msgid "Support for copying %s file systems is not implemented yet."
+#~ msgstr "Поддержка копирования файловой системы %s пока не реализована."
+
+#~ msgid "Support for resizing %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Поддержка изменения размера файловой системы %s пока не реализована."
+
+#~ msgid "creating"
+#~ msgstr "создание"
+
+#~ msgid "The file system is in an invalid state.  Perhaps it is mounted?"
+#~ msgstr ""
+#~ "Файловая система в неправильном состоянии.  Возможно примонтирована?"
+
+#~ msgid "The file system is in old (unresizeable) format."
+#~ msgstr ""
+#~ "Файловая система в старом (не позволяющем изменение размера) формате."
+
+#~ msgid "Invalid free blocks count.  Run reiserfsck --check first."
+#~ msgstr ""
+#~ "Неправильное количество свободных блоков.  Запустите сначала reiserfsck --"
+#~ "check."
+
+#~ msgid "checking"
+#~ msgstr "проверка"
+
+#~ msgid "Reiserfs tree seems to be corrupted.  Run reiserfsck --check first."
+#~ msgstr ""
+#~ "Дерево reiserfs похоже повреждено.  Запустите сначала reiserfsck --check."
+
+#~ msgid ""
+#~ "The reiserfs file system passed a basic check.  For a more comprehensive "
+#~ "check, run reiserfsck --check."
+#~ msgstr ""
+#~ "Файловая система прошла базовую проверку.  Для более полной проверки, "
+#~ "используйте программу reiserfsck --check."
+
+#~ msgid "Sorry, can't move the start of reiserfs partitions yet."
+#~ msgstr "К сожалению, перемещение начала разделов reiserfs пока невозможно."
+
+#~ msgid "Couldn't reopen device abstraction layer for read/write."
+#~ msgstr ""
+#~ "Не удалось переоткрыть уровень абстракции устройств для чтения/записи."
+
+#~ msgid "shrinking"
+#~ msgstr "сужение"
+
+#~ msgid "expanding"
+#~ msgstr "расширение"
+
+#~ msgid "Couldn't create reiserfs device abstraction handler."
+#~ msgstr "Не удалось создать инструктор абстракции устройства reiserfs."
+
+#~ msgid "Device is too small for %lu blocks."
+#~ msgstr "Устройство слишком маленькое для %lu блоков."
+
+#~ msgid "copying"
+#~ msgstr "копирование"
+
+#~ msgid "Couldn't resolve symbol %s.  Error: %s."
+#~ msgstr "Не удалось получить символ %s.  Ошибка: %s."
+
+#~ msgid "GNU Parted found an invalid libreiserfs library."
+#~ msgstr "GNU Parted обнаружил неправильную библиотеку libreiserfs."
+
+#~ msgid ""
+#~ "GNU Parted has detected libreiserfs interface version mismatch.  Found %d-"
+#~ "%d, required %d. ReiserFS support will be disabled."
+#~ msgstr ""
+#~ "GNU Parted обнаружил несоответствие версий интерфейса libreiserfs.  "
+#~ "Обнаружена %d-%d, требуется %d. Поддержка ReiserFS будет отключена."
+
+#~ msgid "Inconsistent group descriptors!"
+#~ msgstr "Противоречивая группа дескрипторов!"
+
+#~ msgid "File system full!"
+#~ msgstr "Файловая система заполнена!"
+
+#~ msgid "Invalid superblock.  Are you sure this is an ext2 file system?"
+#~ msgstr "Неверный суперблок.  Вы уверены, что это файловая система ext2?"
+
+#~ msgid "File system has errors!  You should run e2fsck."
+#~ msgstr "Файловая система содержит ошибки!  Запустите сначала e2fsck."
+
+#~ msgid ""
+#~ "File system was not cleanly unmounted!  You should run e2fsck.  Modifying "
+#~ "an unclean file system could cause severe corruption."
+#~ msgstr ""
+#~ "Файловая система не была правильно размонтирована!  Запустите e2fsck. "
+#~ "Изменение неочищенной файловой системы может привести к её повреждению."
+
+#~ msgid "Error allocating buffer cache."
+#~ msgstr "Ошибка размещения буфера кэша."
+
+#~ msgid ""
+#~ "Found an inode with a incorrect link count.  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "Найден inode с неправильным числом ссылок.  Лучше запустите сначала "
+#~ "e2fsck!"
+
+#~ msgid "Not enough free inodes!"
+#~ msgstr "Недостаточно свободных inode!"
+
+#~ msgid "File system is too full to remove a group!"
+#~ msgstr "Файловая система слишком заполнена, чтобы удалить группу!"
+
+#~ msgid "File system has too many allocated inodes to remove a group!"
+#~ msgstr ""
+#~ "Файловая система имеет слишком много выделенных inode, чтобы удалить "
+#~ "группу!"
+
+#~ msgid "adding groups"
+#~ msgstr "добавление групп"
+
+#~ msgid "Your file system is too full to resize it to %i blocks.  Sorry."
+#~ msgstr ""
+#~ "Файловая система слишком заполнена, чтобы изменить её размер до %i "
+#~ "блоков.  Простите."
+
+#~ msgid ""
+#~ "Your file system has too many occupied inodes to resize it to %i blocks.  "
+#~ "Sorry."
+#~ msgstr ""
+#~ "Ваша файловая система имеет слишком много занятых inode, чтобы изменить "
+#~ "её размер до %i блоков.  Простите."
+
+#~ msgid "File system was not cleanly unmounted!  You should run e2fsck."
+#~ msgstr ""
+#~ "Файловая система не была правильно размонтирована!  Запустите сначала "
+#~ "e2fsck."
+
+#~ msgid ""
+#~ "The file system has the 'dir_index' feature enabled.  Parted can only "
+#~ "resize the file system if it disables this feature.  You can enable it "
+#~ "later by running 'tune2fs -O dir_index DEVICE' and then 'e2fsck -fD "
+#~ "DEVICE'."
+#~ msgstr ""
+#~ "Свойство файловой системы 'dir_index' включено.  Parted может изменять "
+#~ "размер таких файловых систем, если он отключит это свойство.  Чтобы "
+#~ "включить его после этого запустите 'tune2fs -O dir_index УСТРОЙСТВО' и "
+#~ "потом 'e2fsck -fD УСТРОЙСТВО'."
+
+#~ msgid ""
+#~ "A resize operation on this file system will use EXPERIMENTAL code\n"
+#~ "that MAY CORRUPT it (although no one has reported any such damage yet).\n"
+#~ "You should at least backup your data first, and run 'e2fsck -f' "
+#~ "afterwards."
+#~ msgstr ""
+#~ "Операция изменения размера на этой файловой системе использует\n"
+#~ "ЭКСПЕРИМЕНТАЛЬНЫЙ код, который МОЖЕТ ПОВРЕДИТЬ её (хотя и не\n"
+#~ "делал этого раньше).\n"
+#~ "Вы должны хотя бы сделать резервную копию данных и запустить\n"
+#~ "'e2fsck -f' после."
+
+#~ msgid "Cross-linked blocks found!  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "Найдены блоки с перекрестными ссылками!  Лучше сначала запустите e2fsck!"
+
+#~ msgid "Block %i has no reference?  Weird."
+#~ msgstr "Блок %i не имеет ссылки?  Странно."
+
+#~ msgid "Block %i shouldn't have been marked (%d, %d)!"
+#~ msgstr "Блок %i не должен быть помеченным (%d, %d)!"
+
+#~ msgid ""
+#~ "The ext2 file system passed a basic check.  For a more comprehensive "
+#~ "check, use the e2fsck program."
+#~ msgstr ""
+#~ "Файловая система ext2 прошла основную проверку.  Для более полной "
+#~ "проверки, используйте программу e2fsck."
+
+#~ msgid "Sorry, can't move the start of ext2 partitions yet!"
+#~ msgstr "К сожалению, перемещение начала разделов ext2 пока невозможно!"
+
+#~ msgid "Couldn't flush buffer cache!"
+#~ msgstr "Не удаётся очистить буфер кэша!"
+
+#~ msgid "writing per-group metadata"
+#~ msgstr "запись метаданных групп"
+
+#~ msgid "File system too small for ext2."
+#~ msgstr "Слишком маленькая файловая система для ext2."
+
+#~ msgid ""
+#~ "You need %s of free disk space to shrink this partition to this size.  "
+#~ "Currently, only %s is free."
+#~ msgstr ""
+#~ "Вам требуется %s свободного пространства, чтобы уменьшить данный раздел "
+#~ "до такого размера.  Сейчас свободно только %s."
+
+#~ msgid ""
+#~ "Cluster start delta = %d, which is not a multiple of the cluster size %d."
+#~ msgstr ""
+#~ "Кластер начинается со смещением %d, что не является целым числом "
+#~ "кластеров размера %d."
+
+#~ msgid "Partition too big/small for a %s file system."
+#~ msgstr "Раздел слишком большой/маленький для файловой системы %s."
+
+#~ msgid ""
+#~ "The FATs don't match.  If you don't know what this means, then select "
+#~ "cancel, run scandisk on the file system, and then come back."
+#~ msgstr ""
+#~ "Таблицы размещения файлов FAT не совпадают.  Если вы не знаете, что это "
+#~ "означает, выберите отмену, запустите scandisk для файловой системы, и "
+#~ "затем возвращайтесь."
+
+#~ msgid "There are no possible configurations for this FAT type."
+#~ msgstr "Для этого типа FAT допустимых конфигураций нет."
+
+#~ msgid ""
+#~ "File system doesn't have expected sizes for Windows to like it.  Cluster "
+#~ "size is %dk (%dk expected); number of clusters is %d (%d expected); size "
+#~ "of FATs is %d sectors (%d expected)."
+#~ msgstr ""
+#~ "Windows не может работать с файловой системой, имеющей такие размеры.  "
+#~ "Размер кластера %dk (ожидаемый %dk); число кластеров %d (ожидаемое %d); "
+#~ "размер FAT %d секторов (ожидаемый %d)."
+
+#~ msgid ""
+#~ "File system is reporting the free space as %d clusters, not %d clusters."
+#~ msgstr ""
+#~ "Файловая система сообщает о свободном пространстве в %d кластеров, а не в "
+#~ "%d кластеров."
+
+#~ msgid ""
+#~ "There's not enough room in the root directory for all of the files.  "
+#~ "Either cancel, or ignore to lose the files."
+#~ msgstr ""
+#~ "Для всех файлов не хватает места в корневом каталоге.  Либо отмените, "
+#~ "либо игнорируйте для потери файлов."
+
+#~ msgid "Error writing to the root directory."
+#~ msgstr "Ошибка записи в корневой каталог."
+
+#~ msgid ""
+#~ "If you leave your file system as FAT16, then you will have no problems."
+#~ msgstr "Если вы оставите файловую систему как FAT16, проблем не будет."
+
+#~ msgid ""
+#~ "If you convert to FAT16, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual)."
+#~ msgstr ""
+#~ "Если вы конвертируете в FAT16 и MS Windows установлен на этом разделе, "
+#~ "нужно будет переустановить загрузчик MS Windows.  Если вы хотите это "
+#~ "сделать, обратитесь в руководство Parted (или руководство вашего "
+#~ "дистрибутива)."
+
+#~ msgid ""
+#~ "If you leave your file system as FAT32, then you will not introduce any "
+#~ "new problems."
+#~ msgstr ""
+#~ "Если вы оставите файловую систему как FAT32, никаких новых проблем вы не "
+#~ "заметите."
+
+#~ msgid ""
+#~ "If you convert to FAT32, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual).  Also, converting to FAT32 will make the file system unreadable "
+#~ "by MS DOS, MS Windows 95a, and MS Windows NT."
+#~ msgstr ""
+#~ "Если вы конвертируете в FAT16 и MS Windows установлен на этом разделе, "
+#~ "нужно будет переустановить загрузчик MS Windows.  Если вы хотите это "
+#~ "сделать, обратитесь в руководство Parted (или руководство вашего "
+#~ "дистрибутива).  Также, преобразование в FAT32 сделает систему не читаемой "
+#~ "для MS DOS, MS Windows 95a и MS Windows NT."
+
+#~ msgid "%s  %s  %s"
+#~ msgstr "%s  %s  %s"
+
+#~ msgid "Would you like to use FAT32?"
+#~ msgstr "Вы хотите использовать FAT32?"
+
+#~ msgid "%s  %s"
+#~ msgstr "%s  %s"
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT16."
+#~ msgstr ""
+#~ "Изменение размера файловой системы до этого размера возможно только после "
+#~ "преобразования в FAT16."
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT32."
+#~ msgstr ""
+#~ "Изменение размера файловой системы до этого размера возможно только после "
+#~ "преобразования в FAT32."
+
+#~ msgid ""
+#~ "GNU Parted cannot resize this partition to this size.  We're working on "
+#~ "it!"
+#~ msgstr ""
+#~ "GNU Parted не может изменить размер раздела до этой величины.  Мы "
+#~ "работаем над этим!"
+
+#~ msgid "Bad directory entry for %s: first cluster is the end of file marker."
+#~ msgstr ""
+#~ "Плохой элемент каталога для %s: первый кластер является концом маркера "
+#~ "файла."
+
+#~ msgid ""
+#~ "Bad FAT: unterminated chain for %s.  You should run dosfsck or scandisk."
+#~ msgstr ""
+#~ "Ошибка в FAT: незавершённая цепочка для %s.  Вы должны запустить dosfsck "
+#~ "или scandisk."
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d outside file system in chain for %s.  You should run "
+#~ "dosfsck or scandisk."
+#~ msgstr ""
+#~ "Ошибка в FAT: кластер %d находится вне файловой системы в цепочке для "
+#~ "%s.  Вы должны запустить dosfsck или scandisk."
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d is cross-linked for %s.  You should run dosfsck or "
+#~ "scandisk."
+#~ msgstr ""
+#~ "Ошибка в FAT: кластер %d имеет ссылку на %s.  Вы должны запустить dosfsck "
+#~ "или scandisk."
+
+#~ msgid "%s is %dk, but it has %d clusters (%dk)."
+#~ msgstr "%s является %dk, но он содержит %d кластеров (%dk)."
+
+#~ msgid ""
+#~ "The file %s is marked as a system file.  This means moving it could cause "
+#~ "some programs to stop working."
+#~ msgstr ""
+#~ "Файл %s помечен как системный.  Это значит, что его перемещение может "
+#~ "привести к прекращению работы некоторых программ."
+
+#~ msgid ""
+#~ "FAT %d media %x doesn't match the boot sector's media %x.  You should "
+#~ "probably run scandisk."
+#~ msgstr ""
+#~ "FAT %d носитель %x не совпадает с носителем загрузочного сектора %x.  "
+#~ "Возможно, вам следует запустить scandisk."
+
+#~ msgid "fat_table_set: cluster %ld outside file system"
+#~ msgstr "fat_table_set: кластер %ld находится вне файловой системы"
+
+#~ msgid "fat_table_get: cluster %ld outside file system"
+#~ msgstr "fat_table_get: кластер %ld находится вне файловой системы"
+
+#~ msgid "fat_table_alloc_cluster: no free clusters"
+#~ msgstr "fat_table_alloc_cluster: нет свободных кластеров"
+
+#~ msgid "Too many bad pages."
+#~ msgstr "Слишком много плохих страниц."
+
+#~ msgid "The file system contains errors."
+#~ msgstr "Файловая система содержит ошибки."
+
+#~ msgid "Bad blocks could not be read."
+#~ msgstr "Плохие блоки не могут быть прочитаны."
+
+#~ msgid ""
+#~ "Trying to register an extent starting at block 0x%X, but another one "
+#~ "already exists at this position.  You should check the file system!"
+#~ msgstr ""
+#~ "Пытаюсь зарегистрировать начало блока на 0x%X, но другой уже существует "
+#~ "на этой позиции.  Вам нужно проверить файловую ситему на ошибки!"
+
+#~ msgid ""
+#~ "Trying to move an extent from block Ox%X to block Ox%X, but another one "
+#~ "already exists at this position.  This should not happen!"
+#~ msgstr ""
+#~ "Пытаюсь переместить расширение из блока Ox%X в блок Ox%X, но другой уже "
+#~ "содержится на этой позиции.  Это не должно было случиться!"
+
+#~ msgid "Could not update the extent cache for HFS file with CNID %X."
+#~ msgstr "Не удалось обновить кэш расширений для HFS файла с CNID %X."
+
+#~ msgid "Trying to read HFS file with CNID %X behind EOF."
+#~ msgstr "Пытаюсь прочесть HFS файл с CNID %X за EOF."
+
+#~ msgid "Could not find sector %lli of HFS file with CNID %X."
+#~ msgstr "Не удалось найти сектор %lli для HFS файла с CNID %X."
+
+#~ msgid "Trying to write HFS file with CNID %X behind EOF."
+#~ msgstr "Пытаюсь записать HFS файл с CNID %X за EOF."
+
+#~ msgid "Could not update the extent cache for HFS+ file with CNID %X."
+#~ msgstr "Не удалось обновить кэш расширений для HFS+ файла с CNID %X."
+
+#~ msgid "Trying to read HFS+ file with CNID %X behind EOF."
+#~ msgstr "Пытаюсь прочесть HFS+ файл с CNID %X за EOF."
+
+#~ msgid "Could not find sector %lli of HFS+ file with CNID %X."
+#~ msgstr "Не удалось найти сектор %lli для HFS+ файла с CNID %X."
+
+#~ msgid "Trying to write HFS+ file with CNID %X behind EOF."
+#~ msgstr "Пытаюсь записать HFS+ файл с CNID %X за EOF."
+
+#~ msgid "Sorry, HFS cannot be resized that way yet."
+#~ msgstr "Простите, размер HFS не может быть изменён таким образом пока что."
+
+#~ msgid "Data relocation has failed."
+#~ msgstr "Ошибка перераспределения данных."
+
+#~ msgid "Data relocation left some data in the end of the volume."
+#~ msgstr "Перераспределение данных оставило некоторые данные в конце раздела."
+
+#~ msgid "writing HFS Master Directory Block"
+#~ msgstr "запись HFS Master Directory Block (Главный блок каталога)"
+
+#~ msgid "No valid HFS[+X] signature has been found while opening."
+#~ msgstr "Не найдено правильной HFS[+X] сигнатуры при открытии."
+
+#~ msgid "Version %d of HFS+ isn't supported."
+#~ msgstr "Версия %d файловой системы HFS+ не поддерживается."
+
+#~ msgid "Version %d of HFSX isn't supported."
+#~ msgstr "Версия %d файловой системы HFSX не поддерживается."
+
+#~ msgid "Data relocation left some data at the end of the volume."
+#~ msgstr "Перераспределение данных оставило некоторые данные в конце раздела."
+
+#~ msgid "Error while writing the allocation file."
+#~ msgstr "Ошибка записи файла распределения."
+
+#~ msgid "Error while writing the compatibility part of the allocation file."
+#~ msgstr "Ошибка записи совместимой части файла распределения."
+
+#~ msgid "writing HFS+ Volume Header"
+#~ msgstr "запись HFS+ Volume Header (Заголовка раздела)"
+
+#~ msgid "An error occurred while looking for the mandatory bad blocks file."
+#~ msgstr "Ошибка при поиске обязательного файла плохих блоков."
+
+#~ msgid ""
+#~ "It seems there is an error in the HFS wrapper: the bad blocks file "
+#~ "doesn't contain the embedded HFS+ volume."
+#~ msgstr ""
+#~ "Похоже ошибка в оболочке HFS: файл плохих блоков не содержит встроенный "
+#~ "HFS+ раздел."
+
+#~ msgid "Sorry, HFS+ cannot be resized that way yet."
+#~ msgstr "Простите, размер HFS+ не может быть изменён таким образом пока что."
+
+#~ msgid "shrinking embedded HFS+ volume"
+#~ msgstr "уменьшаю размер встроенного HFS+ раздела"
+
+#~ msgid "Resizing the HFS+ volume has failed."
+#~ msgstr "Ошибка изменения размера раздела HFS+."
+
+#~ msgid "shrinking HFS wrapper"
+#~ msgstr "уменьшаю размер оболочки HFS"
+
+#~ msgid "Updating the HFS wrapper has failed."
+#~ msgstr "Ошибка обновления оболочки HFS+."
+
+#~ msgid ""
+#~ "This is not a real %s check.  This is going to extract special low level "
+#~ "files for debugging purposes."
+#~ msgstr ""
+#~ "Это не настоящая %s проверка.  Это делается для извлечения специальных "
+#~ "низкоуровневых файлов для отладки."
+
+#~ msgid "Bad block list header checksum."
+#~ msgstr "Неправильная контрольная сумма заголовка списка блоков."
+
+#~ msgid ""
+#~ "Invalid size of a transaction block while replaying the journal (%i "
+#~ "bytes)."
+#~ msgstr ""
+#~ "Неправильный размер блока транзакций при повторении журнала (%i байт)."
+
+#~ msgid ""
+#~ "Journal stored outside of the volume are not supported.  Try to "
+#~ "desactivate the journal and run Parted again."
+#~ msgstr ""
+#~ "Журнал, хранящийся вне раздела не поддерживается.  Попробуйте отключить "
+#~ "журнал и запустить Parted снова."
+
+#~ msgid "Journal offset or size is not multiple of the sector size."
+#~ msgstr "Смещение журнала или его размер не делится на размер сектора."
+
+#~ msgid "Incorrect magic values in the journal header."
+#~ msgstr "Неправильный заголовок журнала."
+
+#~ msgid "Journal size mismatch between journal info block and journal header."
+#~ msgstr ""
+#~ "Не найден размер журнала между блоком информации журнала и заголовком "
+#~ "журнала."
+
+#~ msgid "Some header fields are not multiple of the sector size."
+#~ msgstr "Некоторые поля заголовка не делятся на размер сектора."
+
+#~ msgid ""
+#~ "The sector size stored in the journal is not 512 bytes.  Parted only "
+#~ "supports 512 bytes length sectors."
+#~ msgstr ""
+#~ "Размер сектора, хранящийся в журнале не 512 байт.  Parted может работать "
+#~ "только с секторами размером 512 байт."
+
+#~ msgid "Bad journal checksum."
+#~ msgstr "Неправильная контрольная сумма журнала."
+
+#~ msgid ""
+#~ "The journal is not empty.  Parted must replay the transactions before "
+#~ "opening the file system.  This will modify the file system."
+#~ msgstr ""
+#~ "Журнал не пустой.  Parted должен повторить транзакции перед открытие "
+#~ "раздела.  Это изменит файловую систему."
+
+#~ msgid ""
+#~ "The volume header or the master directory block has changed while "
+#~ "replaying the journal.  You should restart Parted."
+#~ msgstr ""
+#~ "Заголовок раздела или блок главного каталога был изменён при повторении "
+#~ "журнала.  Вы должны перезапустить Parted."
+
+#~ msgid "An extent has not been relocated."
+#~ msgstr "Расширение не было перемещено."
+
+#~ msgid ""
+#~ "A reference to an extent comes from a place it should not.  You should "
+#~ "check the file system!"
+#~ msgstr ""
+#~ "Ссылка на расширение указывает на место, где оно быть не должно.  Вам "
+#~ "следует проверить файловую систему!"
+
+#~ msgid "This HFS volume has no catalog file.  This is very unusual!"
+#~ msgstr "Этот раздел HFS не содержит файла каталога.  Очень необычно!"
+
+#~ msgid ""
+#~ "This HFS volume has no extents overflow file.  This is quite unusual!"
+#~ msgstr ""
+#~ "Этот раздел HFS не содержит файла размеров перегрузки.  Достаточно "
+#~ "необычно!"
+
+#~ msgid ""
+#~ "The extents overflow file should not contain its own extents!  You should "
+#~ "check the file system."
+#~ msgstr ""
+#~ "Файл размеров перегрузки не должен содержать свои размеры!  Вам следует "
+#~ "проверить файловую систему."
+
+#~ msgid "Could not cache the file system in memory."
+#~ msgstr "Не удалось кэшировать файловую систему в памяти."
+
+#~ msgid "Bad blocks list could not be loaded."
+#~ msgstr "Не удалось загрузить список плохих блоков."
+
+#~ msgid "An error occurred during extent relocation."
+#~ msgstr "Ошибка при перераспределении размеров."
+
+#~ msgid "This HFS+ volume has no catalog file.  This is very unusual!"
+#~ msgstr "Этот раздел HFS+ не содержит файла каталога.  Очень необычно!"
+
+#~ msgid ""
+#~ "This HFS+ volume has no extents overflow file.  This is quite unusual!"
+#~ msgstr ""
+#~ "Этот раздел HFS+ не содержит файла размеров перегрузки.  Достаточно "
+#~ "необычно!"
+
+#~ msgid "The partition must have one of the following FS-TYPEs: "
+#~ msgstr "Раздел должен быть одного из этих ТИП_ФС: "
+
+#~ msgid ""
+#~ "The existing file system will be destroyed and all data on the partition "
+#~ "will be lost. Do you want to continue?"
+#~ msgstr ""
+#~ "Существующая файловая система будет уничтожена и все данные на разделе "
+#~ "будут утеряны. Вы хотите продолжить?"
+
+#~ msgid "Source device?"
+#~ msgstr "Устройство источник?"
+
+#~ msgid "Source partition number?"
+#~ msgstr "Исходный номер раздела?"
+
+#~ msgid "Can't copy an extended partition."
+#~ msgstr "Невозможно скопировать расширенный раздел."
+
+#~ msgid "Destination partition number?"
+#~ msgstr "Раздел назначения?"
+
+#~ msgid ""
+#~ "An extended partition cannot hold a file system.  Did you want mkpart?"
+#~ msgstr ""
+#~ "Расширенный раздел не может содержать файловую систему.  Запустить mkpart?"
+
+#~ msgid "Can't move an extended partition."
+#~ msgstr "Невозможно переместить расширенный раздел."
+
+#~ msgid "Can't move a partition onto itself.  Try using resize, perhaps?"
+#~ msgstr ""
+#~ "Невозможно переместить раздел в самого себя.  Использовать вместо этого "
+#~ "изменение размера?"
+
+#~ msgid "Minor: %d\n"
+#~ msgstr "Вторичн.: %d\n"
+
+#~ msgid "Flags: %s\n"
+#~ msgstr "Флаги: %s\n"
+
+#~ msgid "File System: %s\n"
+#~ msgstr "Файловая система: %s\n"
+
+#~ msgid "Size:         "
+#~ msgstr "Размер:           "
+
+#~ msgid "Minimum size: "
+#~ msgstr "Минимальный размер: "
+
+#~ msgid "Maximum size: "
+#~ msgstr "Максимальный размер: "
+
+#~ msgid "check"
+#~ msgstr "check"
+
+#~ msgid ""
+#~ "check NUMBER                             do a simple check on the file "
+#~ "system"
+#~ msgstr ""
+#~ "check НОМЕР                      производит простую проверку файловой "
+#~ "системы"
+
+#~ msgid "cp"
+#~ msgstr "cp"
+
+#~ msgid ""
+#~ "cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   copy file system to another "
+#~ "partition"
+#~ msgstr ""
+#~ "cp [ИЗ_УСТРОЙСТВА] ИЗ_НОМ В_НОМ скопировать файловую систему на другой "
+#~ "раздел"
+
+#~ msgid "mkfs"
+#~ msgstr "mkfs"
+
+#, fuzzy
+#~ msgid ""
+#~ "mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on "
+#~ "partition NUMBER"
+#~ msgstr ""
+#~ "mkfs НОМЕР ТИП_ФС                создать файловую систему ТИП_ФС на "
+#~ "разделе НОМЕР"
+
+#~ msgid "mkpartfs"
+#~ msgstr "mkpartfs"
+
+#~ msgid ""
+#~ "mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file "
+#~ "system"
+#~ msgstr "mkpartfs ТИП_РАЗД ТИП_ФС НАЧ КОН создать раздел с файловой системой"
+
+#~ msgid "move"
+#~ msgstr "move"
+
+#~ msgid "move NUMBER START END                    move partition NUMBER"
+#~ msgstr "move НОМЕР НАЧ КОН               переместить файловую систему НОМЕР"
+
+#~ msgid "resize"
+#~ msgstr "resize"
+
+#~ msgid ""
+#~ "resize NUMBER START END                  resize partition NUMBER and its "
+#~ "file system"
+#~ msgstr ""
+#~ "resize НОМЕР НАЧ КОН             изменить размер файловой системы на "
+#~ "разделе НОМЕР"
+
+#~ msgid "This is not an ECKD disk!  This disk type is not supported!"
+#~ msgstr "Это не ECKD диск!  Этот тип диска не поддерживается!"
+
+#~ msgid ""
+#~ "Device %s has a logical sector size of %lld.  Not all parts of GNU Parted "
+#~ "support this at the moment, and the working code is HIGHLY EXPERIMENTAL.\n"
+#~ msgstr ""
+#~ "Устройство %s имеет логический размер сектора равный %lld.  Не все части "
+#~ "программы GNU Parted поддерживают это сейчас, и рабочий код ОЧЕНЬ "
+#~ "ЭКСПЕРИМЕНТАЛЬНЫЙ.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Could not determine minimum io size for %s: %s.\n"
+#~ "Using the default size (%lld)."
+#~ msgstr ""
+#~ "Не удалось определить размер сектора для %s: %s.\n"
+#~ "Использую стандартный размер сектора (%lld)."
+
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: неправильный параметр -- %c\n"
+
+#~ msgid "Unable to determine the block size of this dasd"
+#~ msgstr "Не удаётся определить размер блока для этого dasd"
+
+#~ msgid ""
+#~ "The kernel was unable to re-read the partition table on %s (%s).  This "
+#~ "means Linux won't know anything about the modifications you made until "
+#~ "you reboot.  You should reboot your computer before doing anything with "
+#~ "%s."
+#~ msgstr ""
+#~ "Ядро не смогло считать таблицу разделов на %s (%s).  Это значит, что "
+#~ "сделанные вами изменения недоступны для Linux.  Вы должны перезагрузить "
+#~ "ваш компьютер до того, как что-либо делать с %s."
+
+#~ msgid "File system has an incompatible feature enabled."
+#~ msgstr "Файловая система имеет включённое несовместимое свойство."
+
+#~ msgid "Device %s is neither a SCSI nor IDE drive."
+#~ msgstr "Устройство %s не является ни SCSI, ни IDE диском."
+
+#~ msgid "Device %s has dodgey geometry."
+#~ msgstr "Устройство %s имеет странную геометрию."
+
+#~ msgid ""
+#~ "There is no boot code on this disk.  Would you like to use GNU parted's "
+#~ "boot loader?"
+#~ msgstr ""
+#~ "На этом диске нет кода загрузки.  Вы хотите использовать загрузчик GNU "
+#~ "parted?"
+
+#~ msgid ""
+#~ "The partition table on %s is inconsistent.  There are many reasons why "
+#~ "this might be the case.  However, the most likely reason is that Linux "
+#~ "detected the BIOS geometry for %s incorrectly.  GNU Parted suspects the "
+#~ "real geometry should be %d/%d/%d (not %d/%d/%d).  You should check with "
+#~ "your BIOS first, as this may not be correct.  You can inform Linux by "
+#~ "adding the parameter %s=%d,%d,%d to the command line.  See the LILO "
+#~ "documentation for more information.  If you think Parted's suggested "
+#~ "geometry is correct, you may select Ignore to continue (and fix Linux "
+#~ "later).  Otherwise, select Cancel (and fix Linux and/or the BIOS now)."
+#~ msgstr ""
+#~ "Таблица разделов на %s является противоречивой.  Существует много причин, "
+#~ "в силу которых это может иметь место.  Однако, вероятнее всего, Linux "
+#~ "неправильно определил геометрию BIOS для %s.  GNU Parted подозревает, что "
+#~ "реальная геометрия должна быть %d/%d/%d (а не %d/%d/%d).  Сначала вы "
+#~ "должны проверить BIOS, так как это может быть неверно.  Вы можете явно "
+#~ "указать ее Linux, добавив в командной строке параметр %s=%d,%d,%d.  Для "
+#~ "дополнительной информации, см. документацию на LILO.  Если вы считаете, "
+#~ "что предложенная Parted геометрия верна, выберите Игнорировать для "
+#~ "продолжения (и скорректируйте Linux позже).  Иначе, выберите Отмену (и "
+#~ "скорректируйте Linux и/или BIOS сейчас)."
+
+#~ msgid ""
+#~ "The partition table on %s is inconsistent.  There are many reasons why "
+#~ "this might be the case.  Often, the reason is that Linux detected the "
+#~ "BIOS geometry incorrectly.  However, this does not appear to be the case "
+#~ "here."
+#~ msgstr ""
+#~ "Противоречивая таблица разделов на %s.  Это может иметь место в силу "
+#~ "многих причин.  Часто это происходит потому, что Linux неправильно "
+#~ "определяет геометрию BIOS.  Однако, в данном случае причина, видимо, иная."
+
+#~ msgid "No get_min_size() for %s!"
+#~ msgstr "Нет get_min_size() для %s!"
+
+#~ msgid "No get_system() for %s!"
+#~ msgstr "Нет get_system() для %s!"
+
+#~ msgid "The code to write the partition table hasn't been written for %s yet"
+#~ msgstr "Программа для записи таблицы разделов для %s пока не написана"
+
+#~ msgid ""
+#~ "No filesystem found on partition.  Can't determine what partition system "
+#~ "to use."
+#~ msgstr ""
+#~ "На разделе не найдено ни одной файловой системы.  Невозможно определить, "
+#~ "какую систему разделов использовать."
+
+#~ msgid "Error reading %s (%s) to determine if partition is mounted."
+#~ msgstr ""
+#~ "Ошибка при чтении %s (%s) для определения, является ли раздел "
+#~ "замонтированным."
+
+#~ msgid ""
+#~ "This ext2 filesystem has a rather strange layout!  Please use dumpe2fs on "
+#~ "this filesystem and send it to <buytenh@gnu.org>. I won't resize it, "
+#~ "sorry."
+#~ msgstr ""
+#~ "Эта файловая система ext2 имеет довольно странную схему!  Пожалуйста, "
+#~ "используйте dumpe2fs для этой файловой системы и пошлите результат "
+#~ "<buytenh@gnu.org>. Размер не будет изменен, извините."
+
+#~ msgid "Insane!  %d clusters!"
+#~ msgstr "Странно!  %d кластеров!"
+
+#~ msgid ""
+#~ "The filesystem is going to be too big for FAT16, so FAT32 will be used.  "
+#~ "This is not compatible with MS-DOS, early versions of MS-Windows 95 and "
+#~ "Windows NT.  If you use these operating systems, then select cancel, and "
+#~ "create a smaller partition.  If you only use Linux, BSD, MS Windows 98 "
+#~ "and/or MS Windows 95 B, then select OK."
+#~ msgstr ""
+#~ "Файловая система становится слишком большой для FAT16, так что будет "
+#~ "использована FAT32.  Это не совместимо с MS-DOS, ранними версиями MS-"
+#~ "Windows 95 и Windows NT.  Если вы используете эти операционные системы, "
+#~ "выберите отмену и создайте меньший раздел.  Если вы используете только "
+#~ "Linux, BSD, MS Windows 98 и/или MS Widnows 95 B, выберите OK."
+
+#~ msgid "Weird: fat_calc_sizes() failed for FAT32!"
+#~ msgstr "Странно: ошибка в fat_calc_sizes() для FAT32!"
+
+#~ msgid ""
+#~ "Would you like to use FAT32 for this filesystem?  It is much more "
+#~ "efficient with your disk space, but is not compatible with early versions "
+#~ "of Windows 95 and Windows NT.  Only select yes if you only use Linux, "
+#~ "BSD, MS Windows 98 and/or MS Windows 95 B."
+#~ msgstr ""
+#~ "Хотите использовать FAT32 для этой файловой системы?  Она намного "
+#~ "эффективнее использует дисковое пространство, но несовместима с ранними "
+#~ "версиями Windows 95 и Windows NT.  Выберите `да' лишь в случае, если "
+#~ "используете только Linux, BSD, MS Windows 98 и/или MS Windows 95 B."
+
+#~ msgid "FAT filesystems don't have an id for non-msdos partition tables"
+#~ msgstr ""
+#~ "Файловые системы FAT не имеют идентификатора для не-msdos таблиц разделов"
+
+#~ msgid ""
+#~ "Would you like to use FAT32?  It is more efficient, but it is not "
+#~ "compatible with MS-DOS, early versions of MS-Windows 95 and Windows NT.  "
+#~ "If you use these operating systems, then select No.  If you only use "
+#~ "Linux, BSD, MS Windows 98 and/or MS Windows 95 B, then you may select Yes."
+#~ msgstr ""
+#~ "Вы хотите использовать FAT32?  Она более эффективна, но не совместима с "
+#~ "MS-DOS, ранними версиями MS-Windows 95 и Windows NT.  Если вы используете "
+#~ "эти операционные системы, выберите Нет.  Если вы используете только "
+#~ "Linux, BSD, MS Windows 98 и/или MS Widnows 95 B, тогда можете выбрать Да."
+
+#~ msgid ""
+#~ "The filesystem is going to be too big for FAT16, so FAT32 must be used.  "
+#~ "This is not compatible with MS-DOS, early versions of MS-Windows 95 and "
+#~ "Windows NT.  If you use these operating systems, then select Cancel, and "
+#~ "create a smaller partition.  If you only use Linux, BSD, MS Windows 98 "
+#~ "and/or MS Windows 95 B, then select OK."
+#~ msgstr ""
+#~ "Файловая система становится слишком большой для FAT16, так что будет "
+#~ "использована FAT32.  Это не совместимо с MS-DOS, ранними версиями MS-"
+#~ "Windows 95 и Windows NT.  Если вы используете эти операционные системы, "
+#~ "выберите Отменить и создайте меньший раздел.  Если вы используете только "
+#~ "Linux, BSD, MS Windows 98 и/или MS Widnows 95 B, выберите OK."
+
+#~ msgid ""
+#~ "Partition size (%ld sectors) and filesystem size (%d sectors) do not "
+#~ "match."
+#~ msgstr ""
+#~ "Размеры раздела (%ld секторов) и файловой системы (%d секторов) не "
+#~ "совпадают."
+
+#~ msgid ""
+#~ "This swap partition is not compatible with Linux version 2.1.117 or "
+#~ "earlier.  Use a smaller partition (maximum size 128mb) if you want to use "
+#~ "old versions of Linux."
+#~ msgstr ""
+#~ "Этот swap-раздел не совместим с Linux версии 2.1.117 или более ранней.  "
+#~ "Используйте меньший раздел (максимальный размер 128МБ), если вы хотите "
+#~ "использовать старые версии Linux."
+
+#~ msgid "START and END are in cylinders\n"
+#~ msgstr "START и END находятся в цилиндрах\n"
+
+#~ msgid "Disk geometry: 1-%d, %dk cylinders\n"
+#~ msgstr "Геометрия диска: 1-%d, %dk цилиндров\n"
+
+#~ msgid "Minor    Start    End      Type            Filesystem     Flags\n"
+#~ msgstr "Номер    Начало   Конец    Тип       Файловая система     Флаги\n"
+
+#~ msgid ""
+#~ "You found a bug in GNU Parted.  Please email a bug report to bug-"
+#~ "parted@gnu.org containing the version (%s), and the following message:\n"
+#~ msgstr ""
+#~ "Вы обнаружили ошибку в GNU parted.  Пожалуйста, пошлите отчет об ошибке\n"
+#~ "по адресу bug-parted@gnu.org, содержащий версию (%s) и\n"
+#~ "следующее сообщение:\n"
+
+#~ msgid ""
+#~ "The operating system thinks the geometry on %s is %d/%d/%d.  You should "
+#~ "check that this matches the BIOS geometry before using this program."
+#~ msgstr ""
+#~ "Операционная система определила геометрию на %s как %d/%d/%d.  Перед "
+#~ "использованием программы, вы должны проверить, что это соответствует "
+#~ "геометрии, указанной в BIOS."
+
+#, fuzzy
+#~ msgid ""
+#~ "The sector size on %s is %d bytes.  Parted is known not to work properly "
+#~ "with drives with sector sizes other than 512 bytes"
+#~ msgstr ""
+#~ "Эта файловая система имеет размер логического сектора %d.  Считается, что "
+#~ "GNU Parted работает неправильно с секторами, размер которых отличен от "
+#~ "512 байт."
+
+#, fuzzy
+#~ msgid "Unknown SCSI"
+#~ msgstr "Неизвестный"
+
+#, fuzzy
+#~ msgid "Can't create a partition with the start after the end."
+#~ msgstr "Невозможно создать раздел за пределами устройства!"
+
+#, fuzzy
+#~ msgid "Can't grow partition onto used space, or outside the disk."
+#~ msgstr "Невозможно создать раздел за пределами устройства!"
+
+#, fuzzy
+#~ msgid "Attempt to read sectors %ld-%ld outside of partition on %s"
+#~ msgstr "Попытка записи секторов %ld-%ld за пределы раздела на %s."
+
+#, fuzzy
+#~ msgid ""
+#~ "File system doesn't have expected sizes for Windows to like it.  Number "
+#~ "of clusters is %d (%d expected); size of FATs is %d sectors (%d expected)."
+#~ msgstr ""
+#~ "Windows не может работать с файловой системой, имеющей такие размеры.  "
+#~ "Размер кластера %dk (ожидаемый %dk); число кластеров %d (ожидаемое %d); "
+#~ "размер FAT %d секторов (ожидаемый %d)."
+
+#, fuzzy
+#~ msgid "Filesystem has an invalid signature for a FAT filesystems."
+#~ msgstr "Файловая система имеет неверную для FAT сигнатуру."
+
+#, fuzzy
+#~ msgid "Linux-swap partitions can not be hidden."
+#~ msgstr "Расширенные разделы не могут быть скрыты при msdos метках диска."
+
+#, fuzzy
+#~ msgid "where necessary, prompts for user intervention"
+#~ msgstr "никогда не запрашивает вмешательство пользователя"
+
+#, fuzzy
+#~ msgid "hide"
+#~ msgstr "скрытый"
+
+#, fuzzy
+#~ msgid "unhide"
+#~ msgstr "скрытый"
+
+#, fuzzy
+#~ msgid "hide MINOR                    hides partition MINOR"
+#~ msgstr "move НОМЕР НАЧ КОН               переместить файловую систему НОМЕР"
+
+#, fuzzy
+#~ msgid "unhide MINOR                  unhides partition MINOR"
+#~ msgstr "move НОМЕР НАЧ КОН               переместить файловую систему НОМЕР"
diff --git a/po/rw.gmo b/po/rw.gmo
new file mode 100644 (file)
index 0000000..582ccad
Binary files /dev/null and b/po/rw.gmo differ
diff --git a/po/rw.po b/po/rw.po
new file mode 100644 (file)
index 0000000..b2a4a2a
--- /dev/null
+++ b/po/rw.po
@@ -0,0 +1,3151 @@
+# Kinyarwanda translations for parted package.
+# Copyright (C) 2005 Free Software Foundation, Inc.
+# Steve Murphy <murf@e-tools.com>, 2005.
+# Steve performed initial rough translation from compendium built from translations provided by the following translators:
+# Philibert Ndandali  <ndandali@yahoo.fr>, 2005.
+# Viateur MUGENZI <muvia1@yahoo.fr>, 2005.
+# Noëlla Mupole <s24211045@tuks.co.za>, 2005.
+# Carole Karema <karemacarole@hotmail.com>, 2005.
+# JEAN BAPTISTE NGENDAHAYO <ngenda_denis@yahoo.co.uk>, 2005.
+# Augustin KIBERWA  <akiberwa@yahoo.co.uk>, 2005.
+# Donatien NSENGIYUMVA <ndonatienuk@yahoo.co.uk>, 2005.
+# Antoine Bigirimana <antoine@e-tools.com>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: parted 1.6.6\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2011-05-30 13:45+0200\n"
+"PO-Revision-Date: 2005-04-04 10:55-0700\n"
+"Last-Translator: Steven Michael Murphy <murf@e-tools.com>\n"
+"Language-Team: Kinyarwanda <translation-team-rw@lists.sourceforge.net>\n"
+"Language: rw\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/argmatch.c:133
+#, fuzzy, c-format
+msgid "invalid argument %s for %s"
+msgstr "Kuri Gufungura"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr ""
+
+#: lib/argmatch.c:153
+#, fuzzy, c-format
+msgid "Valid arguments are:"
+msgstr "Kuri Gufungura"
+
+#: lib/closeout.c:112 libparted/labels/fdasd.c:107
+msgid "write error"
+msgstr ""
+
+#: lib/error.c:181
+#, fuzzy
+msgid "Unknown system error"
+msgstr "IDOSIYE Sisitemu Ubwoko"
+
+#: lib/getopt.c:548 lib/getopt.c:577
+#, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
+msgstr ""
+
+#: lib/getopt.c:625 lib/getopt.c:629
+#, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:638 lib/getopt.c:643
+#, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:686 lib/getopt.c:705
+#, c-format
+msgid "%s: option '--%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:743 lib/getopt.c:746
+#, fuzzy, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "Kuri Gufungura Akarango"
+
+#: lib/getopt.c:754 lib/getopt.c:757
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "Kuri Gufungura Akarango"
+
+#: lib/getopt.c:806 lib/getopt.c:809
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr ""
+
+#: lib/getopt.c:859 lib/getopt.c:876 lib/getopt.c:1084 lib/getopt.c:1102
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr ""
+
+#: lib/getopt.c:932 lib/getopt.c:948
+#, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:972 lib/getopt.c:990
+#, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:1011 lib/getopt.c:1029
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr ""
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:271
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:272
+msgid "'"
+msgstr ""
+
+#: lib/regcomp.c:133
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:136
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:139
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:142
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:145
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:148
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:151
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:154
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:157
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:160
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:163
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:166
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:169
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:172
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:175
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:178
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:181
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:702
+msgid "No previous regular expression"
+msgstr ""
+
+#. TRANSLATORS: A regular expression testing for an affirmative answer
+#. (english: "yes").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^yesexpr='
+#: lib/rpmatch.c:147
+msgid "^[yY]"
+msgstr ""
+
+#. TRANSLATORS: A regular expression testing for a negative answer
+#. (english: "no").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^noexpr='
+#: lib/rpmatch.c:160
+msgid "^[nN]"
+msgstr ""
+
+#: lib/version-etc.c:74
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr ""
+
+#: lib/version-etc.c:77
+#, c-format
+msgid "Packaged by %s\n"
+msgstr ""
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale.  Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:84
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:86
+msgid ""
+"\n"
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:102
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:106
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:110
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:131
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:139
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:147
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:156
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:167
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package.  Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:245
+#, c-format
+msgid ""
+"\n"
+"Report bugs to: %s\n"
+msgstr ""
+
+#: lib/version-etc.c:247
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr ""
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr ""
+
+#: lib/version-etc.c:253
+#, c-format
+msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
+msgstr ""
+
+#: lib/version-etc.c:256
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr ""
+
+#: lib/xstrtol-error.c:63
+#, fuzzy, c-format
+msgid "invalid %s%s argument `%s'"
+msgstr "Kuri Gufungura"
+
+#: lib/xstrtol-error.c:68
+#, fuzzy, c-format
+msgid "invalid suffix in %s%s argument `%s'"
+msgstr "Kuri Gufungura"
+
+#: lib/xstrtol-error.c:72
+#, fuzzy, c-format
+msgid "%s%s argument `%s' too large"
+msgstr "Kuri Gufungura"
+
+#: libparted/arch/beos.c:245
+msgid "Disk Image"
+msgstr ""
+
+#: libparted/arch/beos.c:346 libparted/arch/gnu.c:277
+#: libparted/arch/linux.c:1545
+#, fuzzy, c-format
+msgid "Error opening %s: %s"
+msgstr "Hari ikibazo mu gufungura %s%S"
+
+#: libparted/arch/beos.c:357 libparted/arch/gnu.c:287
+#: libparted/arch/linux.c:1556
+#, fuzzy, c-format
+msgid "Unable to open %s read-write (%s).  %s has been opened read-only."
+msgstr "Kuri Gufungura Gusoma Kwandika Gusoma"
+
+#: libparted/arch/beos.c:419 libparted/arch/linux.c:1714
+#, fuzzy, c-format
+msgid "%s during seek for read on %s"
+msgstr "%skugirango Gusoma ku"
+
+#: libparted/arch/beos.c:452 libparted/arch/gnu.c:465 libparted/arch/gnu.c:564
+#: libparted/arch/gnu.c:692 libparted/arch/linux.c:1674
+#: libparted/arch/linux.c:1755
+#, fuzzy, c-format
+msgid "%s during read on %s"
+msgstr "%sGusoma ku"
+
+#: libparted/arch/beos.c:488 libparted/arch/gnu.c:525
+#: libparted/arch/linux.c:1831
+#, fuzzy, c-format
+msgid "Can't write to %s, because it is opened read-only."
+msgstr "Kwandika Kuri ni Gusoma"
+
+#: libparted/arch/beos.c:504 libparted/arch/linux.c:1856
+#, fuzzy, c-format
+msgid "%s during seek for write on %s"
+msgstr "%skugirango Kwandika ku"
+
+#: libparted/arch/beos.c:541 libparted/arch/gnu.c:601 libparted/arch/gnu.c:646
+#: libparted/arch/gnu.c:723 libparted/arch/linux.c:1804
+#: libparted/arch/linux.c:1898 libparted/arch/linux.c:1970
+#, fuzzy, c-format
+msgid "%s during write on %s"
+msgstr "%sKwandika ku"
+
+#: partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr ""
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the operating system about partition table changes.\n"
+"\n"
+"  -d, --dry-run    do not actually inform the operating system\n"
+"  -s, --summary    print a summary of contents\n"
+"  -h, --help       display this help and exit\n"
+"  -v, --version    output version information and exit\n"
+msgstr ""
+
+#: partprobe/partprobe.c:150
+msgid ""
+"\n"
+"When no DEVICE is given, probe all partitions.\n"
+msgstr ""
+
+#: partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: libparted/arch/gnu.c:110
+#, fuzzy, c-format
+msgid "Unable to open %s."
+msgstr "Kuri Gufungura"
+
+#: libparted/arch/gnu.c:130
+#, fuzzy
+msgid "Unable to probe store."
+msgstr "Kuri"
+
+#: libparted/arch/gnu.c:368
+#, fuzzy
+msgid ""
+"The partition table cannot be re-read.  This means you need to reboot before "
+"mounting any modified partitions.  You also need to reinstall your boot "
+"loader before you reboot (which may require mounting modified partitions).  "
+"It is impossible do both things!  So you'll need to boot off a rescue disk, "
+"and reinstall your boot loader from the rescue disk.  Read section 4 of the "
+"Parted User documentation for more information."
+msgstr ""
+"imbonerahamwe# Kuri Nka Kuri Mbere Byahinduwe Kuri Mbere Gicurasi Byahinduwe "
+"ni Byombi Kuri Bidakora a Na Bivuye i Icyiciro 4. Bya i kugirango Birenzeho "
+"Ibisobanuro"
+
+#: libparted/arch/gnu.c:385
+#, fuzzy, c-format
+msgid ""
+"The partition table on %s cannot be re-read (%s).  This means the Hurd knows "
+"nothing about any modifications you made.  You should reboot your computer "
+"before doing anything with %s."
+msgstr "imbonerahamwe# ku i Ibyerekeye Mbere Na:"
+
+#: libparted/arch/gnu.c:396 parted/parted.c:1967
+#, fuzzy
+msgid ""
+"You should reinstall your boot loader before rebooting.  Read section 4 of "
+"the Parted User documentation for more information."
+msgstr "Mbere Icyiciro 4. Bya i kugirango Birenzeho Ibisobanuro"
+
+#: libparted/arch/gnu.c:788
+#, fuzzy, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%sKuri Kuri"
+
+#: libparted/arch/linux.c:520
+#, fuzzy, c-format
+msgid "Could not stat device %s - %s."
+msgstr "OYA APAREYE"
+
+#: libparted/arch/linux.c:577
+#, fuzzy, c-format
+msgid "Unable to determine the dm type of %s."
+msgstr "Kuri i Ingano Bya"
+
+#: libparted/arch/linux.c:669
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+
+#: libparted/arch/linux.c:690
+#, c-format
+msgid ""
+"Could not determine physical sector size for %s.\n"
+"Using the logical sector size (%lld)."
+msgstr ""
+
+#: libparted/arch/linux.c:746
+#, fuzzy, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "Kuri i Ingano Bya"
+
+#: libparted/arch/linux.c:832
+#, fuzzy, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "OYA Kubona Ikiranga Bya APAREYE"
+
+#: libparted/arch/linux.c:841
+msgid "Generic IDE"
+msgstr ""
+
+#: libparted/arch/linux.c:862
+#, c-format
+msgid ""
+"Device %s has multiple (%d) logical sectors per physical sector.\n"
+"GNU Parted supports this EXPERIMENTALLY for some special disk label/file "
+"system combinations, e.g. GPT and ext2/3.\n"
+"Please consult the web site for up-to-date information."
+msgstr ""
+
+#: libparted/arch/linux.c:1039
+#, fuzzy, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "APAREYE"
+
+#: libparted/arch/linux.c:1103
+#, fuzzy, c-format
+msgid ""
+"The device %s is so small that it cannot possibly store a file system or "
+"partition table.  Perhaps you selected the wrong device?"
+msgstr ""
+"APAREYE ni Zeru Uburebure Na a IDOSIYE Sisitemu Cyangwa imbonerahamwe# "
+"Byahiswemo i APAREYE"
+
+#: libparted/arch/linux.c:1216
+#, fuzzy, c-format
+msgid ""
+"Unable to determine geometry of file/device %s.  You should not use Parted "
+"unless you REALLY know what you're doing!"
+msgstr "Kuri Iyigamashusho Bya IDOSIYE APAREYE OYA Gukoresha"
+
+#: libparted/arch/linux.c:1276
+msgid "Generic SD/MMC Storage Card"
+msgstr ""
+
+#: libparted/arch/linux.c:1329
+msgid "DAC960 RAID controller"
+msgstr ""
+
+#: libparted/arch/linux.c:1334
+msgid "Promise SX8 SATA Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1339
+msgid "ATA over Ethernet Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1345
+msgid "IBM S390 DASD drive"
+msgstr ""
+
+#: libparted/arch/linux.c:1351
+msgid "IBM iSeries Virtual DASD"
+msgstr ""
+
+#: libparted/arch/linux.c:1356
+msgid "Compaq Smart Array"
+msgstr ""
+
+#: libparted/arch/linux.c:1361
+msgid "ATARAID Controller"
+msgstr ""
+
+#: libparted/arch/linux.c:1366
+msgid "I2O Controller"
+msgstr ""
+
+#: libparted/arch/linux.c:1371
+msgid "User-Mode Linux UBD"
+msgstr ""
+
+#: libparted/arch/linux.c:1384
+#, c-format
+msgid "Linux device-mapper (%s)"
+msgstr ""
+
+#: libparted/arch/linux.c:1395
+msgid "Xen Virtual Block Device"
+msgstr ""
+
+# filter/source\xsltdialog\xmlfilterdialogstrings.src:STR_UNKNOWN_APPLICATION.text
+#: libparted/arch/linux.c:1400
+msgid "Unknown"
+msgstr "Kitazwi"
+
+#: libparted/arch/linux.c:1409
+msgid "Virtio Block Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1414
+msgid "Linux Software RAID Array"
+msgstr ""
+
+#: libparted/arch/linux.c:1421
+#, fuzzy
+msgid "ped_device_new()  Unsupported device type"
+msgstr "APAREYE Ubwoko"
+
+#: libparted/arch/linux.c:1518 libparted/arch/linux.c:1590
+#, fuzzy, c-format
+msgid "Error fsyncing/closing %s: %s"
+msgstr "Hari ikibazo mu gufungura %s%S"
+
+#: libparted/arch/linux.c:1754
+#, c-format
+msgid "end of file while reading %s"
+msgstr ""
+
+#: libparted/arch/linux.c:2390
+#, fuzzy, c-format
+msgid ""
+"Error informing the kernel about modifications to partition %s -- %s.  This "
+"means Linux won't know about any changes you made to %s until you reboot -- "
+"so you shouldn't mount it or use it in any way before rebooting."
+msgstr ""
+"i Ibyerekeye Kuri Ibyerekeye Amahinduka Kuri Cyangwa Gukoresha in Mbere"
+
+#: libparted/arch/linux.c:2528
+#, fuzzy, c-format
+msgid "Unable to determine the size and length of %s."
+msgstr "Kuri i Ingano Bya"
+
+#: libparted/arch/linux.c:2553
+#, c-format
+msgid "Failed to add partition %d (%s)"
+msgstr ""
+
+#: libparted/arch/linux.c:2580
+#, c-format
+msgid ""
+"Partition(s) %s on %s have been written, but we have been unable to inform "
+"the kernel of the change, probably because it/they are in use.  As a result, "
+"the old partition(s) will remain in use.  You should reboot now before "
+"making further changes."
+msgstr ""
+
+#: libparted/arch/linux.c:2706
+#, fuzzy, c-format
+msgid ""
+"parted was unable to re-read the partition table on %s (%s).  This means "
+"Linux won't know anything about the modifications you made. "
+msgstr "Kuri Gusoma i imbonerahamwe# ku Ibyerekeye i Mbere Na:"
+
+#: libparted/cs/geom.c:161
+#, fuzzy, c-format
+msgid "Can't have the end before the start! (start sector=%jd length=%jd)"
+msgstr "i Impera Mbere i Gutangira"
+
+#: libparted/cs/geom.c:169
+#, fuzzy
+msgid "Can't have a partition outside the disk!"
+msgstr "a Hanze i"
+
+#: libparted/cs/geom.c:384
+#, fuzzy, c-format
+msgid "Attempt to write sectors %ld-%ld outside of partition on %s."
+msgstr "Kuri Kwandika Hanze Bya ku"
+
+#: libparted/cs/geom.c:424
+#, fuzzy
+msgid "checking for bad blocks"
+msgstr "kugirango"
+
+#: libparted/debug.c:96
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:109
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr ""
+
+#: libparted/disk.c:192
+#, fuzzy, c-format
+msgid "%s: unrecognised disk label"
+msgstr "Kuri Gufungura Akarango"
+
+#: libparted/disk.c:484
+#, fuzzy, c-format
+msgid ""
+"This libparted doesn't have write support for %s.  Perhaps it was compiled "
+"read-only."
+msgstr "Kwandika Gushigikira kugirango Gusoma"
+
+#: libparted/disk.c:629
+#, fuzzy, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "ni i IDOSIYE Sisitemu ni"
+
+#: libparted/disk.c:838
+msgid "cylinder_alignment"
+msgstr ""
+
+#: libparted/disk.c:844
+#, fuzzy, c-format
+msgid "Unknown disk flag, %d."
+msgstr "Ibendera Ibendera"
+
+#: libparted/disk.c:1283
+#, fuzzy, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "%sUturango... OYA Gushigikira Byongerewe..."
+
+#: libparted/disk.c:1858
+#, fuzzy, c-format
+msgid "%s disk labels don't support logical or extended partitions."
+msgstr ""
+"%sUturango... Gushigikira Bijyanye n'inyurabwenge Cyangwa Byongerewe..."
+
+#: libparted/disk.c:1871
+#, fuzzy
+msgid "Too many primary partitions."
+msgstr "Amapaji"
+
+#: libparted/disk.c:1880
+#, fuzzy, c-format
+msgid ""
+"Can't add a logical partition to %s, because there is no extended partition."
+msgstr "Kongeramo a Bijyanye n'inyurabwenge Kuri ni Oya Byongerewe..."
+
+#: libparted/disk.c:1904
+#, fuzzy, c-format
+msgid "Can't have more than one extended partition on %s."
+msgstr "Birenzeho Byongerewe... ku"
+
+#: libparted/disk.c:1914
+#, fuzzy
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr "Bijyanye n'inyurabwenge Hanze Bya i Byongerewe..."
+
+#: libparted/disk.c:1939
+#, fuzzy, c-format
+msgid "Can't have a logical partition outside of the extended partition on %s."
+msgstr "a Bijyanye n'inyurabwenge Hanze Bya i Byongerewe... ku"
+
+#: libparted/disk.c:1949 libparted/disk.c:2008 libparted/disk.c:2186
+#, fuzzy
+msgid "Can't have overlapping partitions."
+msgstr "iyorosa"
+
+#: libparted/disk.c:1957
+#, fuzzy
+msgid "Can't have a primary partition inside an extended partition."
+msgstr "a Mo Imbere Byongerewe..."
+
+#: libparted/disk.c:2387
+msgid "metadata"
+msgstr ""
+
+# svx/source\dialog\labdlg.src:RID_SVXPAGE_CAPTION.LB_WINKEL.1.text
+#: libparted/disk.c:2389
+#, fuzzy
+msgid "free"
+msgstr "Kigenga"
+
+# 2175
+#: libparted/disk.c:2391 parted/ui.c:1194 parted/ui.c:1222
+#, fuzzy
+msgid "extended"
+msgstr "cya/ byagutse"
+
+# #-#-#-#-#  sc.pot (PACKAGE VERSION)  #-#-#-#-#
+# sc/source\ui\formdlg\dwfunctr.src:FID_FUNCTION_BOX.CB_CAT.7.text
+# #-#-#-#-#  sc.pot (PACKAGE VERSION)  #-#-#-#-#
+# sc/source\ui\formdlg\formdlgs.src:RID_SCTAB_FUNCTION.LB_CATEGORY.7.text
+#: libparted/disk.c:2393 parted/ui.c:1198 parted/ui.c:1226
+#, fuzzy
+msgid "logical"
+msgstr "Bijyanye n'inyurabwenge"
+
+#: libparted/disk.c:2395 parted/ui.c:1190 parted/ui.c:1218
+msgid "primary"
+msgstr ""
+
+#: libparted/disk.c:2411
+msgid "boot"
+msgstr ""
+
+#: libparted/disk.c:2413
+msgid "bios_grub"
+msgstr ""
+
+# 5214
+#: libparted/disk.c:2415
+#, fuzzy
+msgid "root"
+msgstr "Imizi"
+
+#: libparted/disk.c:2417
+msgid "swap"
+msgstr ""
+
+# sc/source\ui\navipi\navipi.src:RID_SCDLG_NAVIGATOR.STR_HIDDEN.text
+#: libparted/disk.c:2419
+msgid "hidden"
+msgstr "gihishwe"
+
+#: libparted/disk.c:2421
+msgid "raid"
+msgstr ""
+
+#: libparted/disk.c:2423
+msgid "lvm"
+msgstr ""
+
+#: libparted/disk.c:2425
+msgid "lba"
+msgstr ""
+
+#: libparted/disk.c:2427
+#, fuzzy
+msgid "hp-service"
+msgstr "Serivisi"
+
+#: libparted/disk.c:2429
+msgid "palo"
+msgstr ""
+
+#: libparted/disk.c:2431
+msgid "prep"
+msgstr ""
+
+#: libparted/disk.c:2433
+msgid "msftres"
+msgstr ""
+
+#: libparted/disk.c:2435
+msgid "atvrecv"
+msgstr ""
+
+#: libparted/disk.c:2437
+msgid "diag"
+msgstr ""
+
+#: libparted/disk.c:2439
+msgid "legacy_boot"
+msgstr ""
+
+#: libparted/disk.c:2445
+#, fuzzy, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Ibendera Ibendera"
+
+#: libparted/exception.c:77
+msgid "Information"
+msgstr "Ibisobanuro"
+
+#: libparted/exception.c:78
+msgid "Warning"
+msgstr "Iburira"
+
+#: libparted/exception.c:79
+msgid "Error"
+msgstr "Ikosa"
+
+#: libparted/exception.c:80
+msgid "Fatal"
+msgstr ""
+
+#: libparted/exception.c:81
+msgid "Bug"
+msgstr ""
+
+#: libparted/exception.c:82
+msgid "No Implementation"
+msgstr ""
+
+#: libparted/exception.c:86
+msgid "Fix"
+msgstr ""
+
+#: libparted/exception.c:87
+msgid "Yes"
+msgstr "Yego"
+
+#: libparted/exception.c:88
+msgid "No"
+msgstr "Oya"
+
+#: libparted/exception.c:89
+msgid "OK"
+msgstr "OKE"
+
+#: libparted/exception.c:90
+msgid "Retry"
+msgstr "Ongera ugerageze"
+
+#: libparted/exception.c:91
+msgid "Ignore"
+msgstr "Kureka"
+
+#: libparted/exception.c:92
+msgid "Cancel"
+msgstr "Kureka"
+
+#: libparted/exception.c:132
+#, fuzzy, c-format
+msgid ""
+"A bug has been detected in GNU Parted.  Refer to the web site of parted "
+"http://www.gnu.org/software/parted/parted.html for more information of what "
+"could be useful for bug submitting!  Please email a bug report to %s "
+"containing at least the version (%s) and the following message:  "
+msgstr "A in imeli a Icyegeranyo Kuri org i Verisiyo Na i Ubutumwa"
+
+#: libparted/labels/aix.c:103
+#, fuzzy
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr "kugirango IDOSIYE ni OYA"
+
+#: libparted/labels/aix.c:114
+#, fuzzy
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr "kugirango IDOSIYE ni OYA"
+
+#: libparted/labels/aix.c:127
+#, fuzzy
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr "kugirango IDOSIYE ni OYA"
+
+#: libparted/labels/aix.c:137
+#, fuzzy
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr "kugirango IDOSIYE ni OYA"
+
+#: libparted/labels/aix.c:155
+#, fuzzy
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr "kugirango IDOSIYE ni OYA"
+
+#: libparted/labels/aix.c:165
+#, fuzzy
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr "kugirango IDOSIYE ni OYA"
+
+#: libparted/labels/bsd.c:571 libparted/labels/dasd.c:833
+#: libparted/labels/dos.c:2176 libparted/labels/dvh.c:787
+#: libparted/labels/gpt.c:1782 libparted/labels/loop.c:247
+#: libparted/labels/mac.c:1426 libparted/labels/pc98.c:748
+#: libparted/labels/rdb.c:1052 libparted/labels/sun.c:780
+#, fuzzy
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "Kuri Byose ku i"
+
+#: libparted/labels/bsd.c:596
+#, fuzzy
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "Kuri a"
+
+#: libparted/labels/dasd.c:859
+#, fuzzy
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "Kuri a"
+
+#: libparted/labels/dos.c:966
+#, fuzzy, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr "imbonerahamwe# ku Isinya"
+
+#: libparted/labels/dos.c:994
+#, fuzzy, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "imbonerahamwe# ku"
+
+#: libparted/labels/dos.c:1504
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr ""
+
+#: libparted/labels/dos.c:2158
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+
+#: libparted/labels/dvh.c:200
+#, fuzzy, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr "%sOya Byongerewe... Igice Umutwempangano Kwirengagiza Hanyuma Cyasibwe"
+
+#: libparted/labels/dvh.c:326
+#, fuzzy
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr "ni i imbonerahamwe# ni"
+
+#: libparted/labels/dvh.c:631
+#, fuzzy
+msgid "Only primary partitions can be root partitions."
+msgstr "Imizi"
+
+#: libparted/labels/dvh.c:645
+msgid "Only primary partitions can be swap partitions."
+msgstr ""
+
+#: libparted/labels/dvh.c:659
+#, fuzzy
+msgid "Only logical partitions can be a boot file."
+msgstr "Bijyanye n'inyurabwenge a IDOSIYE"
+
+#: libparted/labels/dvh.c:736
+#, fuzzy, c-format
+msgid ""
+"failed to set dvh partition name to %s:\n"
+"Only logical partitions (boot files) have a name."
+msgstr "Bijyanye n'inyurabwenge Idosiye a Izina:"
+
+#: libparted/labels/dvh.c:829
+msgid "Too many primary partitions"
+msgstr ""
+
+#: libparted/labels/fdasd.c:98
+msgid "open error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:101
+msgid "seek error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:104
+msgid "read error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:110
+msgid "ioctl() error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:114
+msgid "API version mismatch"
+msgstr ""
+
+#: libparted/labels/fdasd.c:118
+#, fuzzy
+msgid "Unsupported disk type"
+msgstr "APAREYE Ubwoko"
+
+#: libparted/labels/fdasd.c:122
+msgid "Unsupported disk format"
+msgstr ""
+
+#: libparted/labels/fdasd.c:126
+msgid "Disk is in use"
+msgstr ""
+
+#: libparted/labels/fdasd.c:130
+msgid "Syntax error in config file"
+msgstr ""
+
+#: libparted/labels/fdasd.c:134
+msgid "Volume label is corrupted"
+msgstr ""
+
+#: libparted/labels/fdasd.c:138
+msgid "A data set name is corrupted"
+msgstr ""
+
+#: libparted/labels/fdasd.c:142
+msgid "Memory allocation failed"
+msgstr ""
+
+#: libparted/labels/fdasd.c:146
+msgid "Device verification failed"
+msgstr ""
+
+#: libparted/labels/fdasd.c:147
+msgid "The specified device is not a valid DASD device"
+msgstr ""
+
+#: libparted/labels/fdasd.c:150 libparted/labels/vtoc.c:179
+msgid "Fatal error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:226
+msgid "No room for volume label."
+msgstr ""
+
+#: libparted/labels/fdasd.c:234
+#, fuzzy
+msgid "No room for partition info."
+msgstr "Byemewe Byabonetse"
+
+#: libparted/labels/fdasd.c:709
+msgid "Invalid VTOC."
+msgstr ""
+
+#: libparted/labels/fdasd.c:766
+msgid "Could not retrieve API version."
+msgstr ""
+
+#: libparted/labels/fdasd.c:769
+#, c-format
+msgid ""
+"The current API version '%d' doesn't match dasd driver API version '%d'!"
+msgstr ""
+
+#: libparted/labels/fdasd.c:806
+#, fuzzy
+msgid "Could not retrieve disk geometry information."
+msgstr "OYA Gusoma Iyigamashusho Bya"
+
+#: libparted/labels/fdasd.c:810
+msgid "Could not retrieve blocksize information."
+msgstr ""
+
+#: libparted/labels/fdasd.c:815
+msgid "Could not retrieve disk information."
+msgstr ""
+
+#: libparted/labels/gpt.c:493
+#, fuzzy, c-format
+msgid ""
+"%s contains GPT signatures, indicating that it has a GPT table.  However, it "
+"does not have a valid fake msdos partition table, as it should.  Perhaps it "
+"was corrupted -- possibly by a program that doesn't understand GPT partition "
+"tables.  Or perhaps you deleted the GPT table, and are now using an msdos "
+"partition table.  Is this a GPT partition table?"
+msgstr ""
+"%sKirimo a imbonerahamwe# OYA a Byemewe imbonerahamwe# Nka ku a Porogaramu "
+"Imbonerahamwe Cyasibwe i imbonerahamwe# Na NONEAHA ikoresha imbonerahamwe# "
+"iyi a imbonerahamwe#"
+
+#: libparted/labels/gpt.c:693
+#, fuzzy, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise.  Please report this!"
+msgstr "Imiterere Bya i imbonerahamwe# ni Verisiyo ni RW org"
+
+#: libparted/labels/gpt.c:740
+#, c-format
+msgid ""
+"Not all of the space available to %s appears to be used, you can fix the GPT "
+"to use all of the space (an extra %llu blocks) or continue with the current "
+"setting? "
+msgstr ""
+
+#: libparted/labels/gpt.c:952
+#, fuzzy
+msgid ""
+"The backup GPT table is not at the end of the disk, as it should be.  This "
+"might mean that another operating system believes the disk is smaller.  Fix, "
+"by moving the backup to the end (and removing the old backup)?"
+msgstr ""
+"Inyibutsa imbonerahamwe# ni OYA ku i Impera Bya i Nka Impuzandengo- Sisitemu "
+"i ni Gitoya ku i Inyibutsa Kuri i Impera Na i ki/ bishaje Inyibutsa"
+
+#: libparted/labels/gpt.c:976
+#, fuzzy
+msgid ""
+"Both the primary and backup GPT tables are corrupt.  Try making a fresh "
+"table, and using Parted's rescue feature to recover partitions."
+msgstr "i Na Inyibutsa Imbonerahamwe a imbonerahamwe# Na ikoresha Kuri"
+
+#: libparted/labels/gpt.c:987
+#, fuzzy
+msgid ""
+"The backup GPT table is corrupt, but the primary appears OK, so that will be "
+"used."
+msgstr "imbonerahamwe# ni i Inyibutsa YEGO"
+
+#: libparted/labels/gpt.c:999
+#, fuzzy
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr "imbonerahamwe# ni i Inyibutsa YEGO"
+
+#: libparted/labels/gpt.c:1023
+msgid "primary partition table array CRC mismatch"
+msgstr ""
+
+#: libparted/labels/mac.c:184
+#, fuzzy, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Isinya kugirango Uturango..."
+
+#: libparted/labels/mac.c:231
+#, fuzzy
+msgid "Partition map has no partition map entry!"
+msgstr "Oya Icyinjijwe"
+
+#: libparted/labels/mac.c:279
+#, fuzzy, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr "%sni Gitoya kugirango a Akarango"
+
+#: libparted/labels/mac.c:508
+#, fuzzy, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "Sibyo Isinya"
+
+#: libparted/labels/mac.c:526
+#, fuzzy, c-format
+msgid "Partition %d has an invalid length of 0 bytes!"
+msgstr "Sibyo Uburebure Bya 0 Bayite"
+
+#: libparted/labels/mac.c:557
+#, fuzzy
+msgid "The data region doesn't start at the start of the partition."
+msgstr "Ibyatanzwe Gutangira ku i Gutangira Bya i"
+
+#: libparted/labels/mac.c:574
+#, fuzzy
+msgid "The boot region doesn't start at the start of the partition."
+msgstr "Gutangira ku i Gutangira Bya i"
+
+#: libparted/labels/mac.c:588
+#, fuzzy
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr "i"
+
+#: libparted/labels/mac.c:599
+#, fuzzy
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr "Ibyatanzwe i"
+
+#: libparted/labels/mac.c:652
+#, fuzzy, c-format
+msgid ""
+"Weird block size on device descriptor: %d bytes is not divisible by 512."
+msgstr "Funga Ingano ku APAREYE Bayite ni OYA ku"
+
+#: libparted/labels/mac.c:665
+#, fuzzy, c-format
+msgid ""
+"The driver descriptor says the physical block size is %d bytes, but Linux "
+"says it is %d bytes."
+msgstr "Musomyi: i Ifatika Funga Ingano ni Bayite ni Bayite"
+
+#: libparted/labels/mac.c:719
+#, fuzzy
+msgid "No valid partition map found."
+msgstr "Byemewe Byabonetse"
+
+#: libparted/labels/mac.c:780
+#, fuzzy, c-format
+msgid ""
+"Conflicting partition map entry sizes!  Entry 1 says it is %d, but entry %d "
+"says it is %d!"
+msgstr "Icyinjijwe 1. Icyinjijwe"
+
+#: libparted/labels/mac.c:811
+#, fuzzy
+msgid "Weird!  There are 2 partitions map entries!"
+msgstr "2. Ibyinjijwe"
+
+#: libparted/labels/mac.c:1357
+#, fuzzy
+msgid ""
+"Changing the name of a root or swap partition will prevent Linux from "
+"recognising it as such."
+msgstr "i Izina: Bya a Imizi Cyangwa Bivuye Nka"
+
+#: libparted/labels/mac.c:1461
+#, fuzzy
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr "Kongeramo ni Gitoya"
+
+#: libparted/labels/pc98.c:331
+#, fuzzy, c-format
+msgid "Invalid partition table on %s."
+msgstr "imbonerahamwe# ku"
+
+#: libparted/labels/pc98.c:384 libparted/labels/pc98.c:462
+#, fuzzy, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries.  This is still "
+"unsupported."
+msgstr "si Kuri Umwiburungushure Kuri Kongeramo Gushigikira kugirango iyi"
+
+#: libparted/labels/pc98.c:780
+#, fuzzy
+msgid "Can't add another partition."
+msgstr "Kongeramo"
+
+#: libparted/labels/pt-tools.c:125
+#, c-format
+msgid ""
+"partition length of %jd sectors exceeds the %s-partition-table-imposed "
+"maximum of %jd"
+msgstr ""
+
+#: libparted/labels/pt-tools.c:138
+#, c-format
+msgid ""
+"starting sector number, %jd exceeds the %s-partition-table-imposed maximum "
+"of %jd"
+msgstr ""
+
+#: libparted/labels/rdb.c:169
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:484
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr ""
+
+#: libparted/labels/rdb.c:573
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr ""
+
+#: libparted/labels/rdb.c:592
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:691
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:699
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:707
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:715
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:742
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr ""
+
+#: libparted/labels/rdb.c:1080
+#, fuzzy
+msgid "Unable to allocate a partition number."
+msgstr "a Umubare"
+
+#: libparted/labels/sun.c:161
+#, fuzzy
+msgid "Corrupted Sun disk label detected."
+msgstr "Akarango"
+
+#: libparted/labels/sun.c:276
+#, fuzzy, c-format
+msgid ""
+"The disk CHS geometry (%d,%d,%d) reported by the operating system does not "
+"match the geometry stored on the disk label (%d,%d,%d)."
+msgstr "Iyigamashusho OYA BIHUYE i Iyigamashusho ku i Akarango"
+
+#: libparted/labels/sun.c:298
+#, fuzzy, c-format
+msgid "The disk label describes a disk bigger than %s."
+msgstr "Akarango a"
+
+#: libparted/labels/sun.c:473
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr ""
+
+#: libparted/labels/sun.c:812
+#, fuzzy
+msgid ""
+"The Whole Disk partition is the only available one left.  Generally, it is "
+"not a good idea to overwrite this partition with a real one.  Solaris may "
+"not be able to boot without it, and SILO (the sparc boot loader) appreciates "
+"it as well."
+msgstr ""
+"ni i Bihari Ibumoso: ni OYA a Kuri Guhindura iyi Na: a Gicurasi OYA Kuri Na "
+"i Nka"
+
+#: libparted/labels/sun.c:827
+#, fuzzy
+msgid "Sun disk label is full."
+msgstr "Akarango ni"
+
+#: libparted/labels/vtoc.c:164
+msgid "opening of device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:168
+msgid "seeking on device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:172
+msgid "writing to device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:176
+msgid "reading from device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:299 libparted/labels/vtoc.c:308
+#: libparted/labels/vtoc.c:329 libparted/labels/vtoc.c:336
+#, fuzzy
+msgid "Could not read volume label."
+msgstr "OYA Gusoma Iyigamashusho Bya"
+
+#: libparted/labels/vtoc.c:356 libparted/labels/vtoc.c:363
+#, fuzzy
+msgid "Could not write volume label."
+msgstr "OYA IDOSIYE Sisitemu"
+
+#: libparted/labels/vtoc.c:469
+msgid "Could not read VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:496
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:516
+msgid "Could not write VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:522
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:529
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:536
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:543
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/libparted.c:230 libparted/libparted.c:245
+#, fuzzy
+msgid "Out of memory."
+msgstr "Ububiko bwarenzwe"
+
+#: libparted/unit.c:138
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr ""
+
+#: libparted/unit.c:384
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr ""
+
+#: libparted/unit.c:392
+#, c-format
+msgid "The maximum head value is %d."
+msgstr ""
+
+#: libparted/unit.c:399
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr ""
+
+#: libparted/unit.c:411 libparted/unit.c:556
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr ""
+
+#: libparted/unit.c:531
+msgid "Invalid number."
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:62 libparted/fs/amiga/apfs.c:55
+#: libparted/fs/amiga/asfs.c:69
+#, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:77 libparted/fs/amiga/apfs.c:68
+#: libparted/fs/amiga/asfs.c:81
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:82 libparted/fs/amiga/apfs.c:73
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:98 libparted/fs/amiga/apfs.c:84
+#: libparted/fs/amiga/asfs.c:87 libparted/fs/amiga/asfs.c:101
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:71
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:188
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:201
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:211
+#, fuzzy, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%sKwandika ku"
+
+#: libparted/fs/amiga/amiga.c:277
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:288
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:317
+#, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr ""
+
+#: libparted/fs/fat/fat.c:174
+#, fuzzy
+msgid ""
+"GNU Parted was miscompiled: the FAT boot sector should be 512 bytes.  FAT "
+"support will be disabled."
+msgstr "i Bayite Gushigikira Yahagaritswe"
+
+#: libparted/fs/fat/bootsector.c:49 libparted/fs/fat/bootsector.c:56
+#, fuzzy
+msgid "File system has an invalid signature for a FAT file system."
+msgstr "Idosiye Sisitemu Sibyo Isinya kugirango a IDOSIYE Sisitemu"
+
+#: libparted/fs/fat/bootsector.c:64
+#, fuzzy
+msgid "File system has an invalid sector size for a FAT file system."
+msgstr "Idosiye Sisitemu Sibyo Ingano kugirango a IDOSIYE Sisitemu"
+
+#: libparted/fs/fat/bootsector.c:71
+#, fuzzy
+msgid "File system has an invalid cluster size for a FAT file system."
+msgstr "Idosiye Sisitemu Sibyo Ingano kugirango a IDOSIYE Sisitemu"
+
+#: libparted/fs/fat/bootsector.c:78
+#, fuzzy
+msgid ""
+"File system has an invalid number of reserved sectors for a FAT file system."
+msgstr "Idosiye Sisitemu Sibyo Umubare Bya kugirango a"
+
+#: libparted/fs/fat/bootsector.c:85
+#, fuzzy
+msgid "File system has an invalid number of FATs."
+msgstr "Idosiye Sisitemu Sibyo Umubare Bya"
+
+#: libparted/fs/fat/bootsector.c:156
+#, fuzzy, c-format
+msgid ""
+"This file system has a logical sector size of %d.  GNU Parted is known not "
+"to work properly with sector sizes other than 512 bytes."
+msgstr ""
+"IDOSIYE Sisitemu a Bijyanye n'inyurabwenge Ingano Bya ni OYA Kuri Akazi Na: "
+"Ikindi Bayite"
+
+#: libparted/fs/fat/bootsector.c:181
+#, c-format
+msgid ""
+"The file system's CHS geometry is (%d, %d, %d), which is invalid.  The "
+"partition table's CHS geometry is (%d, %d, %d).  If you select Ignore, the "
+"file system's CHS geometry will be left unchanged.  If you select Fix, the "
+"file system's CHS geometry will be set to match the partition table's CHS "
+"geometry."
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:230
+#, fuzzy
+msgid "FAT boot sector says logical sector size is 0.  This is weird. "
+msgstr "Bijyanye n'inyurabwenge Ingano ni 0 ni"
+
+#: libparted/fs/fat/bootsector.c:236
+#, fuzzy
+msgid "FAT boot sector says there are no FAT tables.  This is weird. "
+msgstr "Oya Imbonerahamwe ni"
+
+#: libparted/fs/fat/bootsector.c:242
+#, fuzzy
+msgid "FAT boot sector says clusters are 0 sectors.  This is weird. "
+msgstr "0 ni"
+
+#: libparted/fs/fat/bootsector.c:252
+#, fuzzy
+msgid "File system is FAT12, which is unsupported."
+msgstr "ni ni"
+
+#: libparted/fs/fat/bootsector.c:428
+#, fuzzy, c-format
+msgid ""
+"The information sector has the wrong signature (%x).  Select cancel for now, "
+"and send in a bug report.  If you're desperate, it's probably safe to ignore."
+msgstr ""
+"Ibisobanuro i Isinya Kureka kugirango NONEAHA Na Kohereza in a Icyegeranyo "
+"Kuri Kwirengagiza"
+
+#: libparted/fs/linux_swap/linux_swap.c:247
+#, fuzzy, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "Isinya"
+
+#: libparted/fs/linux_swap/linux_swap.c:290
+#, fuzzy, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "Isinya"
+
+#: libparted/fs/linux_swap/linux_swap.c:330
+#, fuzzy, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Isinya"
+
+#: libparted/fs/hfs/probe.c:50
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to "
+"%d bytes."
+msgstr ""
+
+#: parted/parted.c:123
+#, fuzzy
+msgid "displays this help message"
+msgstr "iyi Ifashayobora Ubutumwa"
+
+#: parted/parted.c:124
+msgid "lists partition layout on all block devices"
+msgstr ""
+
+#: parted/parted.c:125
+msgid "displays machine parseable output"
+msgstr ""
+
+#: parted/parted.c:126
+#, fuzzy
+msgid "never prompts for user intervention"
+msgstr "Nta narimwe kugirango Ukoresha:"
+
+#: parted/parted.c:127
+#, fuzzy
+msgid "displays the version"
+msgstr "i Verisiyo"
+
+#: parted/parted.c:128
+#, fuzzy
+msgid "alignment for new partitions"
+msgstr "Kurema Birenzeho"
+
+#: parted/parted.c:140
+#, fuzzy
+msgid ""
+"NUMBER is the partition number used by Linux.  On MS-DOS disk labels, the "
+"primary partitions number from 1 to 4, logical partitions from 5 onwards.\n"
+msgstr ""
+"ni i Umubare ku Uturango... i Umubare Bivuye 1. 4. Na Bijyanye "
+"n'inyurabwenge 5"
+
+#: parted/parted.c:143
+#, fuzzy
+msgid "LABEL-TYPE is one of: "
+msgstr "ni Bya"
+
+#: parted/parted.c:144
+#, fuzzy
+msgid "FLAG is one of: "
+msgstr "ni Bya"
+
+#: parted/parted.c:145
+#, fuzzy
+msgid "UNIT is one of: "
+msgstr "ni Bya"
+
+#: parted/parted.c:146
+msgid "desired alignment: minimum or optimal"
+msgstr ""
+
+#: parted/parted.c:147
+#, fuzzy
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "ni Bya Bijyanye n'inyurabwenge"
+
+#: parted/parted.c:149
+#, fuzzy
+msgid "FS-TYPE is one of: "
+msgstr "ni Bya"
+
+#: parted/parted.c:150
+#, fuzzy
+msgid ""
+"START and END are disk locations, such as 4GB or 10%.  Negative values count "
+"from the end of the disk.  For example, -1s specifies exactly the last "
+"sector.\n"
+msgstr "Na in Uduciro IBARA Bivuye i Impera Bya i"
+
+#: parted/parted.c:153
+#, fuzzy
+msgid "STATE is one of: on, off\n"
+msgstr "ni Bya ku"
+
+#: parted/parted.c:154
+#, fuzzy
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "ni Cyangwa"
+
+#: parted/parted.c:155
+#, fuzzy
+msgid "NAME is any word you want\n"
+msgstr "ni ijambo"
+
+#: parted/parted.c:158
+#, fuzzy
+msgid ""
+"Copyright (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"This program is free software, covered by the GNU General Public License.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+msgstr ""
+"C Porogaramu ni Kigenga ku i Porogaramu ni in i ATARIIGIHARWE i Bya Cyangwa "
+"A i kugirango Birenzeho Birambuye"
+
+#: parted/parted.c:204
+#, fuzzy, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr ""
+"%0.Project- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+". 2D."
+
+#: parted/parted.c:223
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+
+#: parted/parted.c:241
+#, fuzzy, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "S ku"
+
+#: parted/parted.c:253
+#, c-format
+msgid ""
+"The existing disk label on %s will be destroyed and all data on this disk "
+"will be lost. Do you want to continue?"
+msgstr ""
+
+#: parted/parted.c:502
+#, fuzzy
+msgid "New disk label type?"
+msgstr "Akarango Ubwoko"
+
+#: parted/parted.c:562
+#, fuzzy
+msgid "Partition type?"
+msgstr "Ubwoko"
+
+#: parted/parted.c:580 parted/parted.c:766
+#, fuzzy
+msgid "Partition name?"
+msgstr "Izina:"
+
+#: parted/parted.c:588
+#, fuzzy
+msgid "File system type?"
+msgstr "Idosiye Sisitemu Ubwoko"
+
+# #-#-#-#-#  sc.pot (PACKAGE VERSION)  #-#-#-#-#
+# sc/source\ui\navipi\navipi.src:RID_SCDLG_NAVIGATOR.TBX_CMD.IID_UP.text
+# #-#-#-#-#  sc.pot (PACKAGE VERSION)  #-#-#-#-#
+# sc/source\ui\src\scfuncs.src:RID_SC_FUNCTION_DESCRIPTIONS2.SC_OPCODE_PROB.6.text
+# #-#-#-#-#  sc.pot (PACKAGE VERSION)  #-#-#-#-#
+# sc/source\ui\src\scfuncs.src:RID_SC_FUNCTION_DESCRIPTIONS2.SC_OPCODE_BETA_DIST.8.text
+# #-#-#-#-#  sc.pot (PACKAGE VERSION)  #-#-#-#-#
+# sc/source\ui\src\scfuncs.src:RID_SC_FUNCTION_DESCRIPTIONS2.SC_OPCODE_BETA_INV.8.text
+#: parted/parted.c:594 parted/parted.c:1342
+#, fuzzy
+msgid "Start?"
+msgstr "Gutangira"
+
+# officecfg/registry\schema\org\openoffice\Office\DataAccess.xcs:....FormSearchOptions.SearchPosition..end-of-field.text
+#: parted/parted.c:596 parted/parted.c:1344
+#, fuzzy
+msgid "End?"
+msgstr "Impera"
+
+#: parted/parted.c:661
+#, fuzzy, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s.%s"
+msgstr "Kuri Kurema a ku kuyobora ni"
+
+#: parted/parted.c:666
+msgid ""
+"\n"
+"Is this still acceptable to you?"
+msgstr ""
+
+#: parted/parted.c:688
+msgid "The resulting partition is not properly aligned for best performance."
+msgstr ""
+
+#: parted/parted.c:763 parted/parted.c:1383 parted/parted.c:1455
+#: parted/parted.c:1489
+#, fuzzy
+msgid "Partition number?"
+msgstr "Umubare"
+
+#: parted/parted.c:841
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d.  Each cylinder is %s.\n"
+msgstr ""
+
+#: parted/parted.c:881
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr ""
+
+# desktop/source\app\ssodlg.src:DLG_SSOLOGIN.text
+#: parted/parted.c:883
+#, fuzzy, c-format
+msgid "Disk %s: %s\n"
+msgstr "%s%s%s"
+
+#: parted/parted.c:884
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr ""
+
+#: parted/parted.c:896
+#, fuzzy, c-format
+msgid "Partition Table: %s\n"
+msgstr "Izina:"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Number"
+msgstr ""
+
+# #-#-#-#-#  sc.pot (PACKAGE VERSION)  #-#-#-#-#
+# sc/source\ui\navipi\navipi.src:RID_SCDLG_NAVIGATOR.TBX_CMD.IID_UP.text
+# #-#-#-#-#  sc.pot (PACKAGE VERSION)  #-#-#-#-#
+# sc/source\ui\src\scfuncs.src:RID_SC_FUNCTION_DESCRIPTIONS2.SC_OPCODE_PROB.6.text
+# #-#-#-#-#  sc.pot (PACKAGE VERSION)  #-#-#-#-#
+# sc/source\ui\src\scfuncs.src:RID_SC_FUNCTION_DESCRIPTIONS2.SC_OPCODE_BETA_DIST.8.text
+# #-#-#-#-#  sc.pot (PACKAGE VERSION)  #-#-#-#-#
+# sc/source\ui\src\scfuncs.src:RID_SC_FUNCTION_DESCRIPTIONS2.SC_OPCODE_BETA_INV.8.text
+#: parted/parted.c:1007 parted/parted.c:1010
+#, fuzzy
+msgid "Start"
+msgstr "Gutangira"
+
+# officecfg/registry\schema\org\openoffice\Office\DataAccess.xcs:....FormSearchOptions.SearchPosition..end-of-field.text
+#: parted/parted.c:1008 parted/parted.c:1011
+#, fuzzy
+msgid "End"
+msgstr "Impera"
+
+# starmath/source\smres.src:RID_TOOLBOXWINDOW.6.RID_SIZEXY.text
+#: parted/parted.c:1011
+#, fuzzy
+msgid "Size"
+msgstr "Kuringaniza"
+
+#: parted/parted.c:1015
+msgid "Type"
+msgstr ""
+
+# officecfg/registry\schema\org\openoffice\Office\Common.xcs:....Save.URL.FileSystem.text
+#: parted/parted.c:1017
+#, fuzzy
+msgid "File system"
+msgstr "Idosiye ya sisitemu"
+
+#: parted/parted.c:1020
+#, fuzzy
+msgid "Name"
+msgstr "izina"
+
+#: parted/parted.c:1022
+msgid "Flags"
+msgstr "Amabendera"
+
+#: parted/parted.c:1079
+msgid "Free Space"
+msgstr ""
+
+#: parted/parted.c:1241
+#, fuzzy, c-format
+msgid ""
+"A %s %s partition was found at %s -> %s.  Do you want to add it to the "
+"partition table?"
+msgstr "A Byabonetse ku Kuri Kongeramo Kuri i imbonerahamwe#"
+
+#: parted/parted.c:1280
+#, fuzzy
+msgid "searching for file systems"
+msgstr "Ishakisha kugirango IDOSIYE"
+
+#: parted/parted.c:1408
+#, fuzzy
+msgid "New device?"
+msgstr "APAREYE"
+
+#: parted/parted.c:1453
+msgid "alignment type(min/opt)"
+msgstr ""
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d aligned\n"
+msgstr ""
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d not aligned\n"
+msgstr ""
+
+#: parted/parted.c:1491
+#, fuzzy
+msgid "Flag to Invert?"
+msgstr "Kuri Guhindura>>"
+
+#: parted/parted.c:1496
+#, fuzzy
+msgid "New state?"
+msgstr "Leta"
+
+#: parted/parted.c:1533
+msgid "Unit?"
+msgstr ""
+
+#: parted/parted.c:1651
+#, fuzzy
+msgid "align-check"
+msgstr "genzura"
+
+#: parted/parted.c:1654
+msgid ""
+"align-check TYPE N                        check partition N for TYPE(min|"
+"opt) alignment"
+msgstr ""
+
+#: parted/parted.c:1662
+#, fuzzy
+msgid "help"
+msgstr "Ifashayobora"
+
+#: parted/parted.c:1665
+#, fuzzy
+msgid ""
+"help [COMMAND]                           print general help, or help on "
+"COMMAND"
+msgstr "Ifashayobora Rusange Ifashayobora Cyangwa Ifashayobora ku"
+
+#: parted/parted.c:1671
+msgid "mklabel"
+msgstr ""
+
+#: parted/parted.c:1671
+msgid "mktable"
+msgstr ""
+
+#: parted/parted.c:1674
+#, fuzzy
+msgid ""
+"mklabel,mktable LABEL-TYPE               create a new disklabel (partition "
+"table)"
+msgstr "Kurema a Gishya imbonerahamwe#"
+
+#: parted/parted.c:1680
+msgid "mkpart"
+msgstr ""
+
+#: parted/parted.c:1683
+#, fuzzy
+msgid "mkpart PART-TYPE [FS-TYPE] START END     make a partition"
+msgstr "Ubwoko a"
+
+#: parted/parted.c:1689
+#, fuzzy
+msgid ""
+"'mkpart' makes a partition without creating a new file system on the "
+"partition.  FS-TYPE may be specified to set an appropriate partition ID.\n"
+msgstr "a a Gishya IDOSIYE Sisitemu ku i Gicurasi Kuri Gushyiraho"
+
+#: parted/parted.c:1694
+msgid "name"
+msgstr "izina"
+
+#: parted/parted.c:1697
+#, fuzzy
+msgid "name NUMBER NAME                         name partition NUMBER as NAME"
+msgstr "Izina: Izina:"
+
+# #-#-#-#-#  dbaccess.pot (PACKAGE VERSION)  #-#-#-#-#
+# #-#-#-#-#  dbaccess.pot (PACKAGE VERSION)  #-#-#-#-#
+#: parted/parted.c:1702
+#, fuzzy
+msgid "print"
+msgstr "Gucapa"
+
+#: parted/parted.c:1705
+msgid ""
+"print [devices|free|list,all|NUMBER]     display the partition table, "
+"available devices, free space, all found partitions, or a particular "
+"partition"
+msgstr ""
+
+#: parted/parted.c:1710
+#, fuzzy
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+"ingingo Gucapa i imbonerahamwe# Umubare ni Hanyuma Birenzeho Ibisobanuro ni"
+
+#: parted/parted.c:1712
+msgid "  devices   : display all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:1713
+msgid ""
+"  free      : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+
+#: parted/parted.c:1715
+msgid ""
+"  list, all : display the partition tables of all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:1716
+msgid ""
+"  NUMBER    : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+
+#: parted/parted.c:1721
+#, fuzzy
+msgid "quit"
+msgstr "Kuvamo"
+
+#: parted/parted.c:1724
+#, fuzzy
+msgid "quit                                     exit program"
+msgstr "Kuvamo Gusohoka Porogaramu"
+
+#: parted/parted.c:1729
+msgid "rescue"
+msgstr ""
+
+#: parted/parted.c:1732
+#, fuzzy
+msgid ""
+"rescue START END                         rescue a lost partition near START "
+"and END"
+msgstr "a Na"
+
+#: parted/parted.c:1738
+msgid "rm"
+msgstr ""
+
+#: parted/parted.c:1741
+#, fuzzy
+msgid "rm NUMBER                                delete partition NUMBER"
+msgstr "Gusiba"
+
+#: parted/parted.c:1746
+msgid "select"
+msgstr "guhitamo"
+
+#: parted/parted.c:1749
+#, fuzzy
+msgid "select DEVICE                            choose the device to edit"
+msgstr "Guhitamo Guhitamo i APAREYE Kuri Guhindura"
+
+#: parted/parted.c:1754
+#, fuzzy
+msgid "set"
+msgstr "Gushyiraho"
+
+#: parted/parted.c:1757
+#, fuzzy
+msgid ""
+"set NUMBER FLAG STATE                    change the FLAG on partition NUMBER"
+msgstr "Gushyiraho Guhindura>> a Ibendera ku"
+
+#: parted/parted.c:1763
+msgid "toggle"
+msgstr ""
+
+#: parted/parted.c:1766
+msgid ""
+"toggle [NUMBER [FLAG]]                   toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+
+#: parted/parted.c:1772
+#, fuzzy
+msgid "unit"
+msgstr "Kuvamo"
+
+#: parted/parted.c:1775
+#, fuzzy
+msgid "unit UNIT                                set the default unit to UNIT"
+msgstr "Kuvamo Gusohoka Porogaramu"
+
+#: parted/parted.c:1780
+msgid "version"
+msgstr ""
+
+#: parted/parted.c:1783
+msgid ""
+"version                                  display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+
+#: parted/parted.c:1787
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+
+#: parted/parted.c:1855
+#, c-format
+msgid "Usage: %s [-hlmsv] [-a<align>] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+
+#: parted/parted.c:1899
+#, fuzzy
+msgid "No device found"
+msgstr "APAREYE Byabonetse"
+
+#: parted/parted.c:1936
+msgid "WARNING: You are not superuser.  Watch out for permissions."
+msgstr ""
+
+#: parted/parted.c:1974
+#, fuzzy
+msgid "You may need to update /etc/fstab.\n"
+msgstr "Kuri Kuvugurura NIBA"
+
+#: parted/ui.c:162
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+
+#: parted/ui.c:165
+#, fuzzy
+msgid ""
+"Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]\n"
+"Apply COMMANDs with PARAMETERS to DEVICE.  If no COMMAND(s) are given, run "
+"in\n"
+"interactive mode.\n"
+msgstr "Na: Kuri Oya S Ubwoko"
+
+#: parted/ui.c:170
+#, c-format
+msgid ""
+"\n"
+"\n"
+"You found a bug in GNU Parted! Here's what you have to do:\n"
+"\n"
+"Don't panic! The bug has most likely not affected any of your data.\n"
+"Help us to fix this bug by doing the following:\n"
+"\n"
+"Check whether the bug has already been fixed by checking\n"
+"the last version of GNU Parted that you can find at:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Please check this version prior to bug reporting.\n"
+"\n"
+"If this has not been fixed yet or if you don't know how to check,\n"
+"please visit the GNU Parted website:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"for further information.\n"
+"\n"
+"Your report should contain the version of this release (%s)\n"
+"along with the error message below, the output of\n"
+"\n"
+"\tparted DEVICE unit co print unit s print\n"
+"\n"
+"and the following history of commands you entered.\n"
+"Also include any additional information about your setup you\n"
+"consider important.\n"
+msgstr ""
+
+#: parted/ui.c:291
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+
+#: parted/ui.c:354
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+
+#: parted/ui.c:360
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+
+#: parted/ui.c:365
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+
+#: parted/ui.c:389
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:394
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+
+#: parted/ui.c:399
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:404
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+
+#: parted/ui.c:409
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+
+#: parted/ui.c:414
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+
+#: parted/ui.c:419
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+
+#: parted/ui.c:424
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+
+#: parted/ui.c:429
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+
+#: parted/ui.c:453
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+
+#: parted/ui.c:458
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+
+#: parted/ui.c:463
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+
+#: parted/ui.c:468
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+
+#: parted/ui.c:473
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+
+#: parted/ui.c:478
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+
+#: parted/ui.c:891
+#, fuzzy, c-format
+msgid "invalid token: %s"
+msgstr "Kuri Gufungura"
+
+#: parted/ui.c:1048
+#, fuzzy
+msgid "Expecting a partition number."
+msgstr "a Umubare"
+
+#: parted/ui.c:1057
+msgid "Partition doesn't exist."
+msgstr ""
+
+#: parted/ui.c:1077
+#, fuzzy
+msgid "Expecting a file system type."
+msgstr "a IDOSIYE Sisitemu Ubwoko"
+
+#: parted/ui.c:1084
+#, fuzzy, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "IDOSIYE Sisitemu Ubwoko"
+
+#: parted/ui.c:1105
+#, fuzzy
+msgid "Expecting a disk label type."
+msgstr "a Akarango Ubwoko"
+
+#: parted/ui.c:1203
+#, fuzzy
+msgid "Can't create any more partitions."
+msgstr "Kurema Birenzeho"
+
+#: parted/ui.c:1213
+#, fuzzy
+msgid "Expecting a partition type."
+msgstr "a Ubwoko"
+
+#: parted/ui.c:1361
+msgid "on"
+msgstr "kuri"
+
+# #-#-#-#-#  svx.pot (PACKAGE VERSION)  #-#-#-#-#
+# svx/source\svdraw\svdstr.src:STR_ItemValOFF.text
+# #-#-#-#-#  svx.pot (PACKAGE VERSION)  #-#-#-#-#
+# svx/source\svdraw\svdstr.src:STR_ItemValTEXTANI_NONE.text
+#: parted/ui.c:1362
+msgid "off"
+msgstr "bidakora"
+
+#: parted/ui.c:1379
+msgid "optimal"
+msgstr ""
+
+#: parted/ui.c:1380
+msgid "minimal"
+msgstr ""
+
+# crashrep/source\all\crashrep.lng:%OPTIONS_BUTTON%.text
+#: parted/ui.c:1513
+#, fuzzy
+msgid "OPTIONs:"
+msgstr "Amahitamo..."
+
+# sfx2/source\doc\docvor.src:DLG_ORGANIZE.BTN_EDIT.text
+#: parted/ui.c:1518
+#, fuzzy
+msgid "COMMANDs:"
+msgstr "Amabwiriza"
+
+#: parted/ui.c:1521
+#, c-format
+msgid ""
+"\n"
+"Report bugs to %s\n"
+msgstr ""
+
+#: parted/ui.c:1528
+#, fuzzy, c-format
+msgid "Using %s\n"
+msgstr "ikoresha"
+
+#: parted/ui.c:1602
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr ""
+
+#, fuzzy
+#~ msgid "too few arguments"
+#~ msgstr "Amapaji"
+
+#, fuzzy
+#~ msgid "too many arguments"
+#~ msgstr "Amapaji"
+
+#, fuzzy
+#~ msgid "invalid minor device number: %s"
+#~ msgstr "Kuri Gufungura"
+
+#, fuzzy
+#~ msgid "Could not detect file system."
+#~ msgstr "OYA IDOSIYE Sisitemu"
+
+#, fuzzy
+#~ msgid "The file system is bigger than its volume!"
+#~ msgstr "IDOSIYE Sisitemu ni Igice"
+
+#, fuzzy
+#~ msgid "Support for opening %s file systems is not implemented yet."
+#~ msgstr "kugirango Gufungura %s%S IDOSIYE ni OYA"
+
+#, fuzzy
+#~ msgid "Support for creating %s file systems is not implemented yet."
+#~ msgstr "kugirango IDOSIYE ni OYA"
+
+#, fuzzy
+#~ msgid "Support for checking %s file systems is not implemented yet."
+#~ msgstr "kugirango IDOSIYE ni OYA"
+
+#, fuzzy
+#~ msgid "raw block copying"
+#~ msgstr "Funga"
+
+#, fuzzy
+#~ msgid "growing file system"
+#~ msgstr "IDOSIYE Sisitemu"
+
+#, fuzzy
+#~ msgid "Can't copy onto an overlapping partition."
+#~ msgstr "Gukoporora iyorosa"
+
+#, fuzzy
+#~ msgid ""
+#~ "Direct support for copying file systems is not yet implemented for %s.  "
+#~ "However, support for resizing is implemented.  Therefore, the file system "
+#~ "can be copied if the new partition is at least as big as the old one.  "
+#~ "So, either shrink the partition you are trying to copy, or copy to a "
+#~ "bigger partition."
+#~ msgstr ""
+#~ "Gushigikira kugirango IDOSIYE ni OYA kugirango Gushigikira kugirango i "
+#~ "IDOSIYE Sisitemu NIBA i Gishya ni ku Nka Nka i ki/ bishaje Kugabanuka i "
+#~ "Kuri Gukoporora Cyangwa Gukoporora Kuri a"
+
+#, fuzzy
+#~ msgid "Support for copying %s file systems is not implemented yet."
+#~ msgstr "kugirango IDOSIYE ni OYA"
+
+#, fuzzy
+#~ msgid "Support for resizing %s file systems is not implemented yet."
+#~ msgstr "kugirango IDOSIYE ni OYA"
+
+#, fuzzy
+#~ msgid "The file system is in an invalid state.  Perhaps it is mounted?"
+#~ msgstr "Idosiye Sisitemu Sibyo Isinya kugirango a IDOSIYE Sisitemu"
+
+#, fuzzy
+#~ msgid "checking"
+#~ msgstr "genzura"
+
+#, fuzzy
+#~ msgid ""
+#~ "The reiserfs file system passed a basic check.  For a more comprehensive "
+#~ "check, run reiserfsck --check."
+#~ msgstr ""
+#~ "a BASIC Kugenzura... a Birenzeho Kugenzura... Gukoresha i Porogaramu"
+
+#, fuzzy
+#~ msgid "Sorry, can't move the start of reiserfs partitions yet."
+#~ msgstr "Kwimura i Gutangira Bya"
+
+#, fuzzy
+#~ msgid "expanding"
+#~ msgstr "Iburira"
+
+#, fuzzy
+#~ msgid "Device is too small for %lu blocks."
+#~ msgstr "Idosiye Sisitemu Gitoya kugirango"
+
+#, fuzzy
+#~ msgid "Inconsistent group descriptors!"
+#~ msgstr "Itsinda"
+
+# officecfg/registry\schema\org\openoffice\Office\Common.xcs:....Save.URL.FileSystem.text
+#, fuzzy
+#~ msgid "File system full!"
+#~ msgstr "Idosiye ya sisitemu"
+
+#, fuzzy
+#~ msgid "Invalid superblock.  Are you sure this is an ext2 file system?"
+#~ msgstr "iyi ni"
+
+#, fuzzy
+#~ msgid "File system has errors!  You should run e2fsck."
+#~ msgstr "Amakosa Gukoresha"
+
+#, fuzzy
+#~ msgid ""
+#~ "File system was not cleanly unmounted!  You should run e2fsck.  Modifying "
+#~ "an unclean file system could cause severe corruption."
+#~ msgstr "OYA"
+
+#, fuzzy
+#~ msgid "Error allocating buffer cache."
+#~ msgstr "Ubwihisho"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found an inode with a incorrect link count.  Better go run e2fsck first!"
+#~ msgstr "Na: a Ihuza IBARA Gyayo Gukoresha Itangira"
+
+#, fuzzy
+#~ msgid "Not enough free inodes!"
+#~ msgstr "Kigenga"
+
+#, fuzzy
+#~ msgid "File system is too full to remove a group!"
+#~ msgstr "ni Kuri Gukuraho... a Itsinda"
+
+#, fuzzy
+#~ msgid "File system has too many allocated inodes to remove a group!"
+#~ msgstr "Kuri Gukuraho... a Itsinda"
+
+#, fuzzy
+#~ msgid "adding groups"
+#~ msgstr "Wongera Amatsinda"
+
+#, fuzzy
+#~ msgid "Your file system is too full to resize it to %i blocks.  Sorry."
+#~ msgstr "ni Kuri Ihindurangero Kuri"
+
+#, fuzzy
+#~ msgid ""
+#~ "Your file system has too many occupied inodes to resize it to %i blocks.  "
+#~ "Sorry."
+#~ msgstr "Kuri Ihindurangero Kuri"
+
+#, fuzzy
+#~ msgid "File system was not cleanly unmounted!  You should run e2fsck."
+#~ msgstr "OYA"
+
+#, fuzzy
+#~ msgid ""
+#~ "The file system has the 'dir_index' feature enabled.  Parted can only "
+#~ "resize the file system if it disables this feature.  You can enable it "
+#~ "later by running 'tune2fs -O dir_index DEVICE' and then 'e2fsck -fD "
+#~ "DEVICE'."
+#~ msgstr ""
+#~ "IDOSIYE Sisitemu i Bikora Ihindurangero i IDOSIYE Sisitemu NIBA iyi "
+#~ "Gushoboza ku Na Hanyuma"
+
+#, fuzzy
+#~ msgid "Cross-linked blocks found!  Better go run e2fsck first!"
+#~ msgstr "Byabonetse Gyayo Gukoresha Itangira"
+
+#, fuzzy
+#~ msgid "Block %i has no reference?  Weird."
+#~ msgstr "Oya Indango"
+
+#, fuzzy
+#~ msgid "Block %i shouldn't have been marked (%d, %d)!"
+#~ msgstr "cy/ byagarajwe"
+
+#, fuzzy
+#~ msgid ""
+#~ "The ext2 file system passed a basic check.  For a more comprehensive "
+#~ "check, use the e2fsck program."
+#~ msgstr ""
+#~ "a BASIC Kugenzura... a Birenzeho Kugenzura... Gukoresha i Porogaramu"
+
+#, fuzzy
+#~ msgid "Sorry, can't move the start of ext2 partitions yet!"
+#~ msgstr "Kwimura i Gutangira Bya"
+
+#, fuzzy
+#~ msgid "Couldn't flush buffer cache!"
+#~ msgstr "Ubwihisho"
+
+#, fuzzy
+#~ msgid "writing per-group metadata"
+#~ msgstr "Itsinda"
+
+#, fuzzy
+#~ msgid "File system too small for ext2."
+#~ msgstr "Idosiye Sisitemu Gitoya kugirango"
+
+#, fuzzy
+#~ msgid ""
+#~ "You need %s of free disk space to shrink this partition to this size.  "
+#~ "Currently, only %s is free."
+#~ msgstr "Bya Kigenga Umwanya Kuri Kugabanuka iyi Kuri iyi Ingano Kigenga"
+
+#, fuzzy
+#~ msgid ""
+#~ "Cluster start delta = %d, which is not a multiple of the cluster size %d."
+#~ msgstr "Gutangira DELTA ni OYA a Igikubo Bya i Ingano"
+
+#, fuzzy
+#~ msgid "Partition too big/small for a %s file system."
+#~ msgstr "Gitoya kugirango a IDOSIYE Sisitemu"
+
+#, fuzzy
+#~ msgid ""
+#~ "The FATs don't match.  If you don't know what this means, then select "
+#~ "cancel, run scandisk on the file system, and then come back."
+#~ msgstr ""
+#~ "BIHUYE iyi Hanyuma Guhitamo Kureka Gukoresha ku i IDOSIYE Sisitemu Na "
+#~ "Hanyuma Inyuma"
+
+#, fuzzy
+#~ msgid "There are no possible configurations for this FAT type."
+#~ msgstr "Oya Amaboneza kugirango iyi Ubwoko"
+
+#, fuzzy
+#~ msgid ""
+#~ "File system doesn't have expected sizes for Windows to like it.  Cluster "
+#~ "size is %dk (%dk expected); number of clusters is %d (%d expected); size "
+#~ "of FATs is %d sectors (%d expected)."
+#~ msgstr ""
+#~ "Idosiye Sisitemu Ikitezwe: kugirango Kuri nka Ingano ni Ikitezwe: Umubare "
+#~ "Bya ni Ikitezwe: Ingano Bya ni Ikitezwe:"
+
+#, fuzzy
+#~ msgid ""
+#~ "File system is reporting the free space as %d clusters, not %d clusters."
+#~ msgstr "Idosiye Sisitemu ni i Kigenga Umwanya Nka OYA"
+
+#, fuzzy
+#~ msgid ""
+#~ "There's not enough room in the root directory for all of the files.  "
+#~ "Either cancel, or ignore to lose the files."
+#~ msgstr ""
+#~ "OYA in i Imizi bushyinguro kugirango Byose Bya i Idosiye Kureka Cyangwa "
+#~ "Kwirengagiza Kuri i Idosiye"
+
+#, fuzzy
+#~ msgid "Error writing to the root directory."
+#~ msgstr "Kuri i Imizi bushyinguro"
+
+#, fuzzy
+#~ msgid ""
+#~ "If you leave your file system as FAT16, then you will have no problems."
+#~ msgstr "IDOSIYE Sisitemu Nka Hanyuma Oya"
+
+#, fuzzy
+#~ msgid ""
+#~ "If you convert to FAT16, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual)."
+#~ msgstr ""
+#~ "GUHINDURA Kuri Na ni ku iyi Hanyuma Kwinjiza porogaramu i Kuri iyi i "
+#~ "Bikorwa Cyangwa Bikorwa"
+
+#, fuzzy
+#~ msgid ""
+#~ "If you leave your file system as FAT32, then you will not introduce any "
+#~ "new problems."
+#~ msgstr "IDOSIYE Sisitemu Nka Hanyuma OYA Gishya"
+
+#, fuzzy
+#~ msgid ""
+#~ "If you convert to FAT32, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual).  Also, converting to FAT32 will make the file system unreadable "
+#~ "by MS DOS, MS Windows 95a, and MS Windows NT."
+#~ msgstr ""
+#~ "GUHINDURA Kuri Na ni ku iyi Hanyuma Kwinjiza porogaramu i Kuri iyi i "
+#~ "Bikorwa Cyangwa Bikorwa Guhindura.... Kuri Ubwoko i IDOSIYE Sisitemu ku Na"
+
+# desktop/source\app\ssodlg.src:DLG_SSOLOGIN.text
+#, fuzzy
+#~ msgid "%s  %s  %s"
+#~ msgstr "%s%s%s"
+
+#, fuzzy
+#~ msgid "Would you like to use FAT32?"
+#~ msgstr "nka Kuri Gukoresha"
+
+# #-#-#-#-#  dbaccess.pot (PACKAGE VERSION)  #-#-#-#-#
+# #-#-#-#-#  dbaccess.pot (PACKAGE VERSION)  #-#-#-#-#
+# #-#-#-#-#  dbaccess.pot (PACKAGE VERSION)  #-#-#-#-#
+#, fuzzy
+#~ msgid "%s  %s"
+#~ msgstr "%s%s"
+
+#, fuzzy
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT16."
+#~ msgstr "IDOSIYE Sisitemu Kuri iyi Ingano ku Guhindura.... Kuri"
+
+#, fuzzy
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT32."
+#~ msgstr "IDOSIYE Sisitemu Kuri iyi Ingano ku Guhindura.... Kuri"
+
+#, fuzzy
+#~ msgid ""
+#~ "GNU Parted cannot resize this partition to this size.  We're working on "
+#~ "it!"
+#~ msgstr "OYA Ihindurangero iyi Kuri iyi Ingano ku"
+
+#, fuzzy
+#~ msgid "Bad directory entry for %s: first cluster is the end of file marker."
+#~ msgstr "bushyinguro Icyinjijwe kugirango Itangira ni i Impera Bya IDOSIYE"
+
+#, fuzzy
+#~ msgid ""
+#~ "Bad FAT: unterminated chain for %s.  You should run dosfsck or scandisk."
+#~ msgstr "kugirango Gukoresha Cyangwa"
+
+#, fuzzy
+#~ msgid ""
+#~ "Bad FAT: cluster %d outside file system in chain for %s.  You should run "
+#~ "dosfsck or scandisk."
+#~ msgstr "Hanze in kugirango Gukoresha Cyangwa"
+
+#, fuzzy
+#~ msgid ""
+#~ "Bad FAT: cluster %d is cross-linked for %s.  You should run dosfsck or "
+#~ "scandisk."
+#~ msgstr "ni Kwambukiranya kugirango Gukoresha Cyangwa"
+
+#, fuzzy
+#~ msgid "%s is %dk, but it has %d clusters (%dk)."
+#~ msgstr "%sni"
+
+#, fuzzy
+#~ msgid ""
+#~ "The file %s is marked as a system file.  This means moving it could cause "
+#~ "some programs to stop working."
+#~ msgstr ""
+#~ "IDOSIYE ni cy/ byagarajwe Nka a Sisitemu IDOSIYE Porogaramu Kuri "
+#~ "Guhagarara"
+
+#, fuzzy
+#~ msgid ""
+#~ "FAT %d media %x doesn't match the boot sector's media %x.  You should "
+#~ "probably run scandisk."
+#~ msgstr "Ibitangazamakuru BIHUYE i Ibitangazamakuru Gukoresha"
+
+#, fuzzy
+#~ msgid "fat_table_set: cluster %ld outside file system"
+#~ msgstr "Hanze"
+
+#, fuzzy
+#~ msgid "fat_table_get: cluster %ld outside file system"
+#~ msgstr "Hanze"
+
+#, fuzzy
+#~ msgid "fat_table_alloc_cluster: no free clusters"
+#~ msgstr "Oya Kigenga"
+
+#, fuzzy
+#~ msgid "Too many bad pages."
+#~ msgstr "Amapaji"
+
+#, fuzzy
+#~ msgid "writing HFS Master Directory Block"
+#~ msgstr "Kuri i Imizi bushyinguro"
+
+#, fuzzy
+#~ msgid "Error while writing the allocation file."
+#~ msgstr "Kuri i Imizi bushyinguro"
+
+#, fuzzy
+#~ msgid "Error while writing the compatibility part of the allocation file."
+#~ msgstr "Kuri i Imizi bushyinguro"
+
+#, fuzzy
+#~ msgid "Journal offset or size is not multiple of the sector size."
+#~ msgstr "Gutangira DELTA ni OYA a Igikubo Bya i Ingano"
+
+#, fuzzy
+#~ msgid "Some header fields are not multiple of the sector size."
+#~ msgstr "Gutangira DELTA ni OYA a Igikubo Bya i Ingano"
+
+#, fuzzy
+#~ msgid "Could not cache the file system in memory."
+#~ msgstr "OYA IDOSIYE Sisitemu"
+
+#, fuzzy
+#~ msgid "Source device?"
+#~ msgstr "APAREYE"
+
+#, fuzzy
+#~ msgid "Source partition number?"
+#~ msgstr "Umubare"
+
+#, fuzzy
+#~ msgid "Can't copy an extended partition."
+#~ msgstr "Gukoporora Byongerewe..."
+
+#, fuzzy
+#~ msgid "Destination partition number?"
+#~ msgstr "Umubare"
+
+#, fuzzy
+#~ msgid ""
+#~ "An extended partition cannot hold a file system.  Did you want mkpart?"
+#~ msgstr "IDOSIYE"
+
+#, fuzzy
+#~ msgid "Can't move an extended partition."
+#~ msgstr "Kwimura Byongerewe..."
+
+#, fuzzy
+#~ msgid "Can't move a partition onto itself.  Try using resize, perhaps?"
+#~ msgstr "Kwimura a ikoresha Ihindurangero"
+
+# svx/source\gallery2\galtheme.src:RID_GALLERYSTR_THEME_FLAGS.text
+#, fuzzy
+#~ msgid "Flags: %s\n"
+#~ msgstr "Amabendera"
+
+# officecfg/registry\schema\org\openoffice\Office\Common.xcs:....Save.URL.FileSystem.text
+#, fuzzy
+#~ msgid "File System: %s\n"
+#~ msgstr "Idosiye ya sisitemu"
+
+#, fuzzy
+#~ msgid "Minimum size: "
+#~ msgstr "Ingano"
+
+#, fuzzy
+#~ msgid "Maximum size: "
+#~ msgstr "Ingano"
+
+#~ msgid "check"
+#~ msgstr "genzura"
+
+#, fuzzy
+#~ msgid ""
+#~ "check NUMBER                             do a simple check on the file "
+#~ "system"
+#~ msgstr "Kugenzura... a Byoroheje Kugenzura... ku i"
+
+#, fuzzy
+#~ msgid ""
+#~ "cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   copy file system to another "
+#~ "partition"
+#~ msgstr "Gukoporora Kuri"
+
+#, fuzzy
+#~ msgid ""
+#~ "mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on "
+#~ "partition NUMBER"
+#~ msgstr "Ubwoko a ku"
+
+#, fuzzy
+#~ msgid ""
+#~ "mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file "
+#~ "system"
+#~ msgstr "Ubwoko a Na: a"
+
+# sc/source\ui\src\globstr.src:RID_GLOBSTR.STR_UNDO_MOVE.text
+#, fuzzy
+#~ msgid "move"
+#~ msgstr "Kwimura"
+
+#, fuzzy
+#~ msgid "move NUMBER START END                    move partition NUMBER"
+#~ msgstr "Kwimura Kwimura"
+
+# starmath/source\smres.src:RID_TOOLBOXWINDOW.6.RID_SIZEXY.text
+#, fuzzy
+#~ msgid "resize"
+#~ msgstr "Kuringaniza"
+
+#, fuzzy
+#~ msgid ""
+#~ "resize NUMBER START END                  resize partition NUMBER and its "
+#~ "file system"
+#~ msgstr "a Na"
+
+#, fuzzy
+#~ msgid "Unable to determine the block size of this dasd"
+#~ msgstr "Kuri i Ingano Bya"
+
+#, fuzzy
+#~ msgid ""
+#~ "The kernel was unable to re-read the partition table on %s (%s).  This "
+#~ "means Linux won't know anything about the modifications you made until "
+#~ "you reboot.  You should reboot your computer before doing anything with "
+#~ "%s."
+#~ msgstr "Kuri Gusoma i imbonerahamwe# ku Ibyerekeye i Mbere Na:"
+
+#, fuzzy
+#~ msgid ""
+#~ "The sector size on %s is %d bytes.  Parted is known not to work properly "
+#~ "with drives with sector sizes other than %d bytes"
+#~ msgstr "Ingano ku ni Bayite ni OYA Kuri Akazi Na: Na: Ikindi Bayite"
+
+#, fuzzy
+#~ msgid "Device %s has dodgey geometry."
+#~ msgstr "Iyigamashusho"
+
+#, fuzzy
+#~ msgid "Device %s is neither a SCSI nor IDE drive."
+#~ msgstr "ni a Porogaramu- shoboza"
+
+#, fuzzy
+#~ msgid "Error reading %s (%s) to determine if partition is mounted."
+#~ msgstr "Kuri NIBA ni"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unable to determine if partitions are mounted via /proc/mounts or /etc/"
+#~ "mtab.  Make sure you don't attempt to resize or modify mounted file "
+#~ "systems.  (Even read-only mounted)"
+#~ msgstr ""
+#~ "Kuri NIBA Biturutse Cyangwa Kuri Ihindurangero Cyangwa Guhindura IDOSIYE "
+#~ "Gusoma"
+
+#, fuzzy
+#~ msgid ""
+#~ "The partition table on %s is inconsistent.  There are many reasons why "
+#~ "this might be the case.  However, the most likely reason is that Linux "
+#~ "detected the BIOS geometry for %s incorrectly.  GNU Parted suspects the "
+#~ "real geometry should be %d/%d/%d (not %d/%d/%d).  You should check with "
+#~ "your BIOS first, as this may not be correct.  You can inform Linux by "
+#~ "adding the parameter %s=%d,%d,%d to the command line.  See the LILO or "
+#~ "GRUB documentation for more information.  If you think Parted's suggested "
+#~ "geometry is correct, you may select Ignore to continue (and fix Linux "
+#~ "later).  Otherwise, select Cancel (and fix Linux and/or the BIOS now)."
+#~ msgstr ""
+#~ "imbonerahamwe# ku ni iyi i i ni i Iyigamashusho kugirango i Iyigamashusho "
+#~ "OYA Kugenzura... Na: Itangira Nka iyi Gicurasi OYA ku Wongera i Kuri i "
+#~ "Komandi: Umurongo i Cyangwa kugirango Birenzeho Ibisobanuro Iyigamashusho "
+#~ "ni Gicurasi Guhitamo Kuri urifuzagukomeza Na Guhitamo Na Na Cyangwa i "
+#~ "NONEAHA"
+
+#, fuzzy
+#~ msgid ""
+#~ "The partition table on %s is inconsistent.  There are many reasons why "
+#~ "this might be the case.  Often, the reason is that Linux detected the "
+#~ "BIOS geometry incorrectly.  However, this does not appear to be the case "
+#~ "here.  It is safe to ignore,but ignoring may cause (fixable) problems "
+#~ "with some boot loaders, and may cause problems with FAT file systems.  "
+#~ "Using LBA is recommended."
+#~ msgstr ""
+#~ "imbonerahamwe# ku ni iyi i i ni i Iyigamashusho iyi OYA Kugaragara Kuri i "
+#~ "ni Kuri Kwirengagiza Gicurasi Na: Na Gicurasi Na: IDOSIYE ni"
+
+#, fuzzy
+#~ msgid ""
+#~ "Unable to align partition properly.  This probably means that another "
+#~ "partitioning tool generated an incorrect partition table, because it "
+#~ "didn't have the correct BIOS geometry.  It is safe to ignore,but ignoring "
+#~ "may cause (fixable) problems with some boot loaders."
+#~ msgstr ""
+#~ "Kuri Gutondeka imbonerahamwe# i Iyigamashusho ni Kuri Kwirengagiza "
+#~ "Gicurasi Na:"
+
+#, fuzzy
+#~ msgid "Attempt to read sectors %ld-%ld outside of partition on %s"
+#~ msgstr "Kuri Gusoma Hanze Bya ku"
+
+#, fuzzy
+#~ msgid ""
+#~ "This ext2 filesystem has a rather strange layout!  Parted can't resize "
+#~ "this (yet)."
+#~ msgstr "a Imigaragarire Ihindurangero iyi"
+
+#, fuzzy
+#~ msgid "Filesystem has incompatible feature enabled"
+#~ msgstr "Bikora"
+
+#, fuzzy
+#~ msgid "File system has an invalid signature for a FAT file systems."
+#~ msgstr "Idosiye Sisitemu Sibyo Isinya kugirango a IDOSIYE"
+
+#, fuzzy
+#~ msgid "where necessary, prompts for user intervention"
+#~ msgstr "kugirango Ukoresha:"
+
+#, fuzzy
+#~ msgid ""
+#~ "Partition %s is being used.  Modifying it while it is in use could cause "
+#~ "severe corruption."
+#~ msgstr "ni ni in Gukoresha"
+
+#, fuzzy
+#~ msgid ""
+#~ "You requested to move the partition to %.3f-%.3fMb. The closest Parted "
+#~ "can manage is %.3f-%.3fMb."
+#~ msgstr "Kuri Kwimura i Kuri kuyobora ni"
+
+#, fuzzy
+#~ msgid "Disk geometry for %s: 0.000-%.3f megabytes\n"
+#~ msgstr "000."
+
+#, fuzzy
+#~ msgid "Disk label type: %s\n"
+#~ msgstr "Akarango Ubwoko"
+
+#, fuzzy
+#~ msgid "Minor    Start       End     "
+#~ msgstr "Gutangira Impera"
+
+# #-#-#-#-#  dbaccess.pot (PACKAGE VERSION)  #-#-#-#-#
+# #-#-#-#-#  dbaccess.pot (PACKAGE VERSION)  #-#-#-#-#
+#, fuzzy
+#~ msgid "Type      "
+#~ msgstr "Ubwoko"
+
+#, fuzzy
+#~ msgid "Name                  "
+#~ msgstr "Izina"
+
+#, fuzzy
+#~ msgid ""
+#~ "You requested to resize the partition to %.3f-%.3fMb. The closest Parted "
+#~ "can manage is %.3f-%.3fMb."
+#~ msgstr "Kuri Ihindurangero i Kuri kuyobora ni"
+
+#, fuzzy
+#~ msgid ""
+#~ "print [MINOR]                 display the partition table, or a partition"
+#~ msgstr "Gucapa Kugaragaza i imbonerahamwe# Cyangwa a"
+
+#, fuzzy
+#~ msgid "resize MINOR START END        resize filesystem on partition MINOR"
+#~ msgstr "Ihindurangero Ihindurangero ku"
+
+#, fuzzy
+#~ msgid ""
+#~ "You found a bug in GNU Parted.  Please email a bug report to bug-"
+#~ "parted@gnu.org containing the version (%s), and the following message:\n"
+#~ msgstr ""
+#~ "Byabonetse a in imeli a Icyegeranyo Kuri org i Verisiyo Na i Ubutumwa"
+
+#, fuzzy
+#~ msgid ""
+#~ "  You have Windows FAT partition(s) that are not using LBA.  If your BIOS "
+#~ "supports LBA, then you should switch to LBA by setting the LBA flag on "
+#~ "all FAT partitions.  Otherwise, make sure the operating system and the "
+#~ "BIOS have the same geometry before resizing any FAT partitions."
+#~ msgstr ""
+#~ "S OYA ikoresha Hanyuma Hindura Kuri ku Igenamiterere i Ibendera ku Byose "
+#~ "Ubwoko i Sisitemu Na i i Iyigamashusho Mbere"
+
+#, fuzzy
+#~ msgid ""
+#~ "The operating system thinks the geometry on %s is %d/%d/%d.  Therefore, "
+#~ "cylinder 1024 ends at %.3fM.%s"
+#~ msgstr "Sisitemu i Iyigamashusho ku ni Umwiburungushure ku"
+
+#, fuzzy
+#~ msgid "The operating system thinks the geometry on %s is %d/%d/%d.%s"
+#~ msgstr "Sisitemu i Iyigamashusho ku ni"
diff --git a/po/sk.gmo b/po/sk.gmo
new file mode 100644 (file)
index 0000000..22b9507
Binary files /dev/null and b/po/sk.gmo differ
diff --git a/po/sk.po b/po/sk.po
new file mode 100644 (file)
index 0000000..947f5cd
--- /dev/null
+++ b/po/sk.po
@@ -0,0 +1,3422 @@
+# Slovak translation of parted.
+# Copyright (C) 2001, 2004, 2005 Free Software Foundation, Inc.
+# This file is distributed under the same license as the parted package.
+# Ivan Masár <helix84@centrum.sk>, 2007, 2008, 2009, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: parted 2.4\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2011-05-30 13:45+0200\n"
+"PO-Revision-Date: 2011-05-19 17:18+0100\n"
+"Last-Translator: Ivan Masár <helix84@centrum.sk>\n"
+"Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
+"Language: sk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "neplatný argument %s pre %s"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "nejednoznačný argument %s pre %s"
+
+#: lib/argmatch.c:153
+#, c-format
+msgid "Valid arguments are:"
+msgstr "Platné argumenty sú:"
+
+#: lib/closeout.c:112 libparted/labels/fdasd.c:107
+msgid "write error"
+msgstr "chyba zápisu"
+
+#: lib/error.c:181
+msgid "Unknown system error"
+msgstr "Neznáma systémová chyba"
+
+#: lib/getopt.c:548 lib/getopt.c:577
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
+msgstr "%s: voľba „%s“ je nejednoznačná\n"
+
+#: lib/getopt.c:625 lib/getopt.c:629
+#, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s: voľba „--%s“ nepovoľuje argument\n"
+
+#: lib/getopt.c:638 lib/getopt.c:643
+#, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr "%s: voľba „%c%s“ nepovoľuje argument\n"
+
+#: lib/getopt.c:686 lib/getopt.c:705
+#, c-format
+msgid "%s: option '--%s' requires an argument\n"
+msgstr "%s: voľba „--%s“ vyžaduje argument\n"
+
+#: lib/getopt.c:743 lib/getopt.c:746
+#, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s: nerozpoznaná voľba „--%s“\n"
+
+#: lib/getopt.c:754 lib/getopt.c:757
+#, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "%s: nerozpoznaná voľba „%c%s“\n"
+
+#: lib/getopt.c:806 lib/getopt.c:809
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: neplatná voľba -- %c\n"
+
+#: lib/getopt.c:859 lib/getopt.c:876 lib/getopt.c:1084 lib/getopt.c:1102
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: voľba vyžaduje argument -- %c\n"
+
+#: lib/getopt.c:932 lib/getopt.c:948
+#, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s: voľba „-W %s“ je nejednoznačná\n"
+
+#: lib/getopt.c:972 lib/getopt.c:990
+#, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr "%s: voľba „-W %s“ nepovoľuje argument\n"
+
+#: lib/getopt.c:1011 lib/getopt.c:1029
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: voľba „-W %s“ vyžaduje argument\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:271
+msgid "`"
+msgstr "„"
+
+#: lib/quotearg.c:272
+msgid "'"
+msgstr "“"
+
+#: lib/regcomp.c:133
+msgid "Success"
+msgstr "Úspešné"
+
+#: lib/regcomp.c:136
+msgid "No match"
+msgstr "Bez zhody"
+
+#: lib/regcomp.c:139
+msgid "Invalid regular expression"
+msgstr "Neplatný regulárny výraz"
+
+#: lib/regcomp.c:142
+msgid "Invalid collation character"
+msgstr "Neplatný znak triedenia"
+
+#: lib/regcomp.c:145
+msgid "Invalid character class name"
+msgstr "Neplatný názov triedy znakov"
+
+#: lib/regcomp.c:148
+msgid "Trailing backslash"
+msgstr "Lomka na konci"
+
+#: lib/regcomp.c:151
+msgid "Invalid back reference"
+msgstr "Neplatný spätný odkaz"
+
+#: lib/regcomp.c:154
+msgid "Unmatched [ or [^"
+msgstr "[ alebo [^ bez náprotivku"
+
+#: lib/regcomp.c:157
+msgid "Unmatched ( or \\("
+msgstr "( alebo \\( bez náprotivku"
+
+#: lib/regcomp.c:160
+msgid "Unmatched \\{"
+msgstr "\\{ bez náprotivku"
+
+#: lib/regcomp.c:163
+msgid "Invalid content of \\{\\}"
+msgstr "Neplatný obsah \\{\\}"
+
+#: lib/regcomp.c:166
+msgid "Invalid range end"
+msgstr "Neplatné ukončenie rozsahu"
+
+#: lib/regcomp.c:169
+msgid "Memory exhausted"
+msgstr "Pamäť bola vyčerpaná"
+
+#: lib/regcomp.c:172
+msgid "Invalid preceding regular expression"
+msgstr "Neplatný predchádzajúci regulárny výraz"
+
+#: lib/regcomp.c:175
+msgid "Premature end of regular expression"
+msgstr "Predčasný koniec regulárneho výrazu"
+
+#: lib/regcomp.c:178
+msgid "Regular expression too big"
+msgstr "Regulárny výraz je príliš veľký"
+
+#: lib/regcomp.c:181
+msgid "Unmatched ) or \\)"
+msgstr ") alebo \\) bez náprotivku"
+
+#: lib/regcomp.c:702
+msgid "No previous regular expression"
+msgstr "Žiaden predchádzajúci regulárny výraz"
+
+#. TRANSLATORS: A regular expression testing for an affirmative answer
+#. (english: "yes").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^yesexpr='
+#: lib/rpmatch.c:147
+msgid "^[yY]"
+msgstr "^[aAáÁyY]"
+
+#. TRANSLATORS: A regular expression testing for a negative answer
+#. (english: "no").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^noexpr='
+#: lib/rpmatch.c:160
+msgid "^[nN]"
+msgstr "^[nN]"
+
+#: lib/version-etc.c:74
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Balík vytvoril %s (%s)\n"
+
+#: lib/version-etc.c:77
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Balík vytvoril %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale.  Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:84
+msgid "(C)"
+msgstr "©"
+
+#: lib/version-etc.c:86
+msgid ""
+"\n"
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"\n"
+"Licencia GPLv3+: GNU GPL verzie 3 alebo neskoršia <http://gnu.org/licenses/"
+"gpl.html>\n"
+"Toto je slobodný softvér: môžete ho slobodne meniť a redistribuovať.\n"
+"Neexistuje ŽIADNA ZÁRUKA do rozsahu, aký pripúšťa zákon.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:102
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Napísal %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:106
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Napísal %s a %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:110
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Napísal %s, %s a %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Napísal %s, %s, %s\n"
+"a %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Napísal %s, %s, %s,\n"
+"%s a %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:131
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Napísal %s, %s, %s,\n"
+"%s, %s a %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:139
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Napísal %s, %s, %s,\n"
+"%s, %s, %s a %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:147
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Napísal %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"a %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:156
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Napísal %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s a %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:167
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Napísal %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s a ďalší.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package.  Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:245
+#, c-format
+msgid ""
+"\n"
+"Report bugs to: %s\n"
+msgstr ""
+"\n"
+"Chyby hláste <%s>.\n"
+
+#: lib/version-etc.c:247
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "Chyby %s hláste %s\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Domovská stránka %s: <%s>\n"
+
+#: lib/version-etc.c:253
+#, c-format
+msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
+msgstr "Domovská stránka %s: <http://www.gnu.org/software/%s/>\n"
+
+#: lib/version-etc.c:256
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
+msgstr ""
+"Všeobecná pomoc s použitím softvéru GNU: <http://www.gnu.org/gethelp/>\n"
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "pamäť je vyčerpaná"
+
+#: lib/xstrtol-error.c:63
+#, c-format
+msgid "invalid %s%s argument `%s'"
+msgstr "neplatný %s%s argument „%s“"
+
+#: lib/xstrtol-error.c:68
+#, c-format
+msgid "invalid suffix in %s%s argument `%s'"
+msgstr "neplatná prípona v %s%s argument „%s“"
+
+#: lib/xstrtol-error.c:72
+#, c-format
+msgid "%s%s argument `%s' too large"
+msgstr "%s%s argument „%s“ príliš veľký"
+
+#: libparted/arch/beos.c:245
+msgid "Disk Image"
+msgstr "Obraz disku"
+
+#: libparted/arch/beos.c:346 libparted/arch/gnu.c:277
+#: libparted/arch/linux.c:1545
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "Chyba pri otváraní %s: %s"
+
+#: libparted/arch/beos.c:357 libparted/arch/gnu.c:287
+#: libparted/arch/linux.c:1556
+#, c-format
+msgid "Unable to open %s read-write (%s).  %s has been opened read-only."
+msgstr ""
+"Nemôžem otvoriť %s na čítanie/zápis (%s). %s bol otvorený len na čítanie."
+
+#: libparted/arch/beos.c:419 libparted/arch/linux.c:1714
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s pri vyhľadávaní pre čítanie na %s"
+
+#: libparted/arch/beos.c:452 libparted/arch/gnu.c:465 libparted/arch/gnu.c:564
+#: libparted/arch/gnu.c:692 libparted/arch/linux.c:1674
+#: libparted/arch/linux.c:1755
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s pri čítaní %s"
+
+#: libparted/arch/beos.c:488 libparted/arch/gnu.c:525
+#: libparted/arch/linux.c:1831
+#, c-format
+msgid "Can't write to %s, because it is opened read-only."
+msgstr "Nemôžem zapisovať na %s, pretože je tvorený len na čítanie."
+
+#: libparted/arch/beos.c:504 libparted/arch/linux.c:1856
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s pri pri vyhľadávaní pre zápis na %s"
+
+#: libparted/arch/beos.c:541 libparted/arch/gnu.c:601 libparted/arch/gnu.c:646
+#: libparted/arch/gnu.c:723 libparted/arch/linux.c:1804
+#: libparted/arch/linux.c:1898 libparted/arch/linux.c:1970
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s pri zápise na %s"
+
+#: partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Viac informácií získate po napísaní „%s --help“.\n"
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr "Použitie: %s [VOĽBA] [ZARIADENIE]...\n"
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the operating system about partition table changes.\n"
+"\n"
+"  -d, --dry-run    do not actually inform the operating system\n"
+"  -s, --summary    print a summary of contents\n"
+"  -h, --help       display this help and exit\n"
+"  -v, --version    output version information and exit\n"
+msgstr ""
+"Informovať OS o zmenách tabuľky oblastí.\n"
+"\n"
+"  -d, --no-update  v skutočnosti neinformovať OS\n"
+"  -s, --summary    vypísať zhrnutie obsahu\n"
+"  -h, --help       zobraziť tento návod a skončiť\n"
+"  -v, --version    vypísať info o verzii a skončiť\n"
+
+#: partprobe/partprobe.c:150
+msgid ""
+"\n"
+"When no DEVICE is given, probe all partitions.\n"
+msgstr ""
+"\n"
+"Bez zadaného ZARIADENIA skúsi všetky oblasti.\n"
+
+#: partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Chyby hláste <%s>.\n"
+
+#: libparted/arch/gnu.c:110
+#, c-format
+msgid "Unable to open %s."
+msgstr "Nemôžem otvoriť %s."
+
+#: libparted/arch/gnu.c:130
+msgid "Unable to probe store."
+msgstr "Nemôžem preskúmať úložný priestor."
+
+#: libparted/arch/gnu.c:368
+msgid ""
+"The partition table cannot be re-read.  This means you need to reboot before "
+"mounting any modified partitions.  You also need to reinstall your boot "
+"loader before you reboot (which may require mounting modified partitions).  "
+"It is impossible do both things!  So you'll need to boot off a rescue disk, "
+"and reinstall your boot loader from the rescue disk.  Read section 4 of the "
+"Parted User documentation for more information."
+msgstr ""
+"Nebolo možné znovu načítať tabuľku oblastí, takže budete musieť pred "
+"pripojením zmenených oblastí reštartovať počítač. Tiež musíte pred reštartom "
+"znovu nainštalovať svoj zavádzač systému (čo môže vyžadovať pripojenie "
+"zmenených oblastí). Nie je možné vykonať oboje! Takže budete musieť zaviesť "
+"systém zo záchranného disku a znovu nainštalovať svoj zavádzač systému "
+"odtiaľ. Podrobnejšie informácie sa dočítate v kapitole 4 Používateľskej "
+"dokumentácie Parted."
+
+#: libparted/arch/gnu.c:385
+#, c-format
+msgid ""
+"The partition table on %s cannot be re-read (%s).  This means the Hurd knows "
+"nothing about any modifications you made.  You should reboot your computer "
+"before doing anything with %s."
+msgstr ""
+"Tabuľku oblastí na %s nie je možné znovu načítať (%s). To znamená, že Hurd "
+"nevie nič o zmenách, ktoré ste vykonali. Než budete čokoľvek robiť s %s, "
+"mali by ste reštartovať svoj počítač."
+
+#: libparted/arch/gnu.c:396 parted/parted.c:1967
+msgid ""
+"You should reinstall your boot loader before rebooting.  Read section 4 of "
+"the Parted User documentation for more information."
+msgstr ""
+"Pred reštartom by ste mali reinštalovať svoj zavádzač systému. Viac "
+"informáci nájdete v kapitole 4 Používateľskej dokumentácie Parted."
+
+#: libparted/arch/gnu.c:788
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%s pri pokuse o sync %s na disk"
+
+#: libparted/arch/linux.c:520
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "Nemôžem získať stat zariadenia %s - %s."
+
+#: libparted/arch/linux.c:577
+#, c-format
+msgid "Unable to determine the dm type of %s."
+msgstr "Nepodarilo sa určiť typ dm %s"
+
+#: libparted/arch/linux.c:669
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+"Nebolo možné určiť veľkosť sektora %s: %s.\n"
+"Používam štandardnú veľkosť sektora (%lld)."
+
+#: libparted/arch/linux.c:690
+#, c-format
+msgid ""
+"Could not determine physical sector size for %s.\n"
+"Using the logical sector size (%lld)."
+msgstr ""
+"Nebolo možné určiť veľkosť sektora %s.\n"
+"Použije sa štandardná veľkosť sektora (%lld)."
+
+#: libparted/arch/linux.c:746
+#, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "Nepodarilo sa určiť veľkosť %s (%s)"
+
+#: libparted/arch/linux.c:832
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "Nemôžem získat identitu zariadenia %s - %s"
+
+#: libparted/arch/linux.c:841
+msgid "Generic IDE"
+msgstr "Všeobecný IDE"
+
+#: libparted/arch/linux.c:862
+#, c-format
+msgid ""
+"Device %s has multiple (%d) logical sectors per physical sector.\n"
+"GNU Parted supports this EXPERIMENTALLY for some special disk label/file "
+"system combinations, e.g. GPT and ext2/3.\n"
+"Please consult the web site for up-to-date information."
+msgstr ""
+"Zariadenie %s má viacero (%d) logických sektorov na fyzický sektor.\n"
+"GNU Parted oto podporuje EXPERIMENTÁLNE pre niektoré špeciálne kombinácie "
+"zväzkov/súborových systémov, napr. GPT a ext2/3.\n"
+"Prosím, pozrite si aktuálne informácie na webe."
+
+#: libparted/arch/linux.c:1039
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "Chyba pri inicializácii zariadenia SCSI %s - %s"
+
+#: libparted/arch/linux.c:1103
+#, c-format
+msgid ""
+"The device %s is so small that it cannot possibly store a file system or "
+"partition table.  Perhaps you selected the wrong device?"
+msgstr ""
+"Zariadenie %s je také malé, že nemôže obsahovať systém súborov ani tabuľku "
+"oblastí. Možno ste vybrali chybné zariadenie?"
+
+#: libparted/arch/linux.c:1216
+#, c-format
+msgid ""
+"Unable to determine geometry of file/device %s.  You should not use Parted "
+"unless you REALLY know what you're doing!"
+msgstr ""
+"Nemôžem určiť geometriu súboru/zariadenia %s. Nemali by ste používať Parted, "
+"ak NAOZAJ neviete, čo robíte!"
+
+#: libparted/arch/linux.c:1276
+msgid "Generic SD/MMC Storage Card"
+msgstr "Všeobecná úložná karta SD/MMC"
+
+#: libparted/arch/linux.c:1329
+msgid "DAC960 RAID controller"
+msgstr "radič RAID DAC960"
+
+#: libparted/arch/linux.c:1334
+msgid "Promise SX8 SATA Device"
+msgstr "Promise SX8 zariadenie SATA"
+
+#: libparted/arch/linux.c:1339
+msgid "ATA over Ethernet Device"
+msgstr "Zariadenie ATA over Ethernet"
+
+#: libparted/arch/linux.c:1345
+msgid "IBM S390 DASD drive"
+msgstr "jednotka IBM S390 DASD"
+
+#: libparted/arch/linux.c:1351
+msgid "IBM iSeries Virtual DASD"
+msgstr "IBM iSeries Virtual DASD"
+
+#: libparted/arch/linux.c:1356
+msgid "Compaq Smart Array"
+msgstr "Compaq Smart Array"
+
+#: libparted/arch/linux.c:1361
+msgid "ATARAID Controller"
+msgstr "radič ATARAID"
+
+#: libparted/arch/linux.c:1366
+msgid "I2O Controller"
+msgstr "radič I2O"
+
+#: libparted/arch/linux.c:1371
+msgid "User-Mode Linux UBD"
+msgstr "User-Mode Linux UBD"
+
+#: libparted/arch/linux.c:1384
+#, c-format
+msgid "Linux device-mapper (%s)"
+msgstr "mapovač zariadení Linux (%s)"
+
+#: libparted/arch/linux.c:1395
+msgid "Xen Virtual Block Device"
+msgstr "Virtuálne blokové zariadenie Xen"
+
+#: libparted/arch/linux.c:1400
+msgid "Unknown"
+msgstr "Neznámy"
+
+#: libparted/arch/linux.c:1409
+msgid "Virtio Block Device"
+msgstr "Blokové zariadenie Vistio"
+
+#: libparted/arch/linux.c:1414
+msgid "Linux Software RAID Array"
+msgstr "Linuxové softvérové pole RAID"
+
+#: libparted/arch/linux.c:1421
+msgid "ped_device_new()  Unsupported device type"
+msgstr "ped_device_new()  Nepodporovaný typ zariadenia"
+
+#: libparted/arch/linux.c:1518 libparted/arch/linux.c:1590
+#, c-format
+msgid "Error fsyncing/closing %s: %s"
+msgstr "Chyba pri fsync/zatváraní %s: %s"
+
+#: libparted/arch/linux.c:1754
+#, c-format
+msgid "end of file while reading %s"
+msgstr "koniec súboru počas čítania %s"
+
+#: libparted/arch/linux.c:2390
+#, c-format
+msgid ""
+"Error informing the kernel about modifications to partition %s -- %s.  This "
+"means Linux won't know about any changes you made to %s until you reboot -- "
+"so you shouldn't mount it or use it in any way before rebooting."
+msgstr ""
+"Chyba pri informování jadra o zmenách oddielu %s - %s. To znamená, že Linux "
+"nebude vedieť o zmenách, ktoré ste na %s vykonali, pokým nereštartujete "
+"systém - takže by ste ho nemali pripájať ani ho pred reštartom akokoľvek "
+"používať."
+
+#: libparted/arch/linux.c:2528
+#, c-format
+msgid "Unable to determine the size and length of %s."
+msgstr "Nepodarilo sa určiť veľkosť a dĺžku %s"
+
+#: libparted/arch/linux.c:2553
+#, c-format
+msgid "Failed to add partition %d (%s)"
+msgstr "Nepodarilo sa pridať oblasť %d (%s)"
+
+#: libparted/arch/linux.c:2580
+#, c-format
+msgid ""
+"Partition(s) %s on %s have been written, but we have been unable to inform "
+"the kernel of the change, probably because it/they are in use.  As a result, "
+"the old partition(s) will remain in use.  You should reboot now before "
+"making further changes."
+msgstr ""
+"Oblasti %s na %s boli zapísané, ale nepodarilo sa informovať jadro o tejto "
+"zmene, pravdepodobne preto, že sa oblasti používajú. V dôsledku toho sa "
+"naďalej budú používať staré oblasti. Pred vykonaním ďalších zmien by ste "
+"mali reštartovať systém."
+
+#: libparted/arch/linux.c:2706
+#, c-format
+msgid ""
+"parted was unable to re-read the partition table on %s (%s).  This means "
+"Linux won't know anything about the modifications you made. "
+msgstr ""
+"Jádro nedokázalo znovu načítať tabuľku oblastí na %s (%s). To znamená, že "
+"Linux vedieť o zmenách, ktoré ste vykonali."
+
+#: libparted/cs/geom.c:161
+#, c-format
+msgid "Can't have the end before the start! (start sector=%jd length=%jd)"
+msgstr "Nemožno mať koniec pred začiatkom! (počiat. sektor=%jd dĺžka=%jd)"
+
+#: libparted/cs/geom.c:169
+msgid "Can't have a partition outside the disk!"
+msgstr "Nemožno mať oblasť mimo disku!"
+
+#: libparted/cs/geom.c:384
+#, c-format
+msgid "Attempt to write sectors %ld-%ld outside of partition on %s."
+msgstr "Pokus o zápis sektorov %ld-%ld mimo oblasti na %s"
+
+#: libparted/cs/geom.c:424
+msgid "checking for bad blocks"
+msgstr "hľadám chybné bloky"
+
+#: libparted/debug.c:96
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr "Backtrace: %d volaní na zásobníku:\n"
+
+#: libparted/debug.c:109
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr "Zlyhal predpoklad (%s) v %s:%d vo funkcii %s()."
+
+#: libparted/disk.c:192
+#, c-format
+msgid "%s: unrecognised disk label"
+msgstr "%s: nerozpoznaná menovka disku."
+
+#: libparted/disk.c:484
+#, c-format
+msgid ""
+"This libparted doesn't have write support for %s.  Perhaps it was compiled "
+"read-only."
+msgstr ""
+"Táto libparted nemá podporu pre zápis na %s. Možno bola skompilovaná len na "
+"čítanie."
+
+#: libparted/disk.c:629
+#, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "Oblasť %d má %s, ale systém súborov má %s."
+
+#: libparted/disk.c:838
+msgid "cylinder_alignment"
+msgstr "cylinder_alignment"
+
+#: libparted/disk.c:844
+#, c-format
+msgid "Unknown disk flag, %d."
+msgstr "Neznámý príznak disku, %d."
+
+#: libparted/disk.c:1283
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "Menovky disku %s nepodporujú rozšírené oblasti."
+
+#: libparted/disk.c:1858
+#, c-format
+msgid "%s disk labels don't support logical or extended partitions."
+msgstr "Menovky disku %s nepodporujú logické alebo rozšírené oblasti."
+
+#: libparted/disk.c:1871
+msgid "Too many primary partitions."
+msgstr "Príliš veľa primárnych oblastí."
+
+#: libparted/disk.c:1880
+#, c-format
+msgid ""
+"Can't add a logical partition to %s, because there is no extended partition."
+msgstr ""
+"Nemožno pridať logickú oblasť do %s, pretože neexistuje rozšírená oblasť."
+
+#: libparted/disk.c:1904
+#, c-format
+msgid "Can't have more than one extended partition on %s."
+msgstr "Nie je možné mať na %s viac než jednu rozšírenú oblasť."
+
+#: libparted/disk.c:1914
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr "Logické oblasti nemôžu byť mimo rozšírenej oblasti."
+
+#: libparted/disk.c:1939
+#, c-format
+msgid "Can't have a logical partition outside of the extended partition on %s."
+msgstr "Logická oblasť nemôže byť mimo rozšírenej oblasti na %s."
+
+#: libparted/disk.c:1949 libparted/disk.c:2008 libparted/disk.c:2186
+msgid "Can't have overlapping partitions."
+msgstr "Nie je možné mať prekrývajúce se oblasti."
+
+#: libparted/disk.c:1957
+msgid "Can't have a primary partition inside an extended partition."
+msgstr "Primárna oblasť nemôže byť vnútri rozšírenej oblasti."
+
+#: libparted/disk.c:2387
+msgid "metadata"
+msgstr "metadáta"
+
+#: libparted/disk.c:2389
+msgid "free"
+msgstr "voľné"
+
+#: libparted/disk.c:2391 parted/ui.c:1194 parted/ui.c:1222
+msgid "extended"
+msgstr "rozšírený"
+
+#: libparted/disk.c:2393 parted/ui.c:1198 parted/ui.c:1226
+msgid "logical"
+msgstr "logický"
+
+#: libparted/disk.c:2395 parted/ui.c:1190 parted/ui.c:1218
+msgid "primary"
+msgstr "primárny"
+
+#: libparted/disk.c:2411
+msgid "boot"
+msgstr "zavádzací"
+
+#: libparted/disk.c:2413
+msgid "bios_grub"
+msgstr "bios_grub"
+
+#: libparted/disk.c:2415
+msgid "root"
+msgstr "koreňový"
+
+#: libparted/disk.c:2417
+msgid "swap"
+msgstr "odkladací"
+
+#: libparted/disk.c:2419
+msgid "hidden"
+msgstr "skrytý"
+
+#: libparted/disk.c:2421
+msgid "raid"
+msgstr "RAID"
+
+#: libparted/disk.c:2423
+msgid "lvm"
+msgstr "LVM"
+
+#: libparted/disk.c:2425
+msgid "lba"
+msgstr "LBA"
+
+#: libparted/disk.c:2427
+msgid "hp-service"
+msgstr "hp-service"
+
+#: libparted/disk.c:2429
+msgid "palo"
+msgstr "palo"
+
+#: libparted/disk.c:2431
+msgid "prep"
+msgstr "prep"
+
+#: libparted/disk.c:2433
+msgid "msftres"
+msgstr "msftres"
+
+#: libparted/disk.c:2435
+msgid "atvrecv"
+msgstr "atvrecv"
+
+#: libparted/disk.c:2437
+msgid "diag"
+msgstr "diag"
+
+#: libparted/disk.c:2439
+msgid "legacy_boot"
+msgstr "zastaralé_zavádzanie"
+
+#: libparted/disk.c:2445
+#, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Neznámy príznak oblasti, %d."
+
+#: libparted/exception.c:77
+msgid "Information"
+msgstr "Informácia"
+
+#: libparted/exception.c:78
+msgid "Warning"
+msgstr "Upozornenie"
+
+#: libparted/exception.c:79
+msgid "Error"
+msgstr "Chyba"
+
+#: libparted/exception.c:80
+msgid "Fatal"
+msgstr "Fatálna chyba"
+
+#: libparted/exception.c:81
+msgid "Bug"
+msgstr "Chyba"
+
+#: libparted/exception.c:82
+msgid "No Implementation"
+msgstr "Neimplementované"
+
+#: libparted/exception.c:86
+msgid "Fix"
+msgstr "Oprava"
+
+#: libparted/exception.c:87
+msgid "Yes"
+msgstr "Áno"
+
+#: libparted/exception.c:88
+msgid "No"
+msgstr "Nie"
+
+#: libparted/exception.c:89
+msgid "OK"
+msgstr "OK"
+
+#: libparted/exception.c:90
+msgid "Retry"
+msgstr "Znovu"
+
+#: libparted/exception.c:91
+msgid "Ignore"
+msgstr "Ignorovať"
+
+#: libparted/exception.c:92
+msgid "Cancel"
+msgstr "Zrušiť"
+
+#: libparted/exception.c:132
+#, c-format
+msgid ""
+"A bug has been detected in GNU Parted.  Refer to the web site of parted "
+"http://www.gnu.org/software/parted/parted.html for more information of what "
+"could be useful for bug submitting!  Please email a bug report to %s "
+"containing at least the version (%s) and the following message:  "
+msgstr ""
+"Bola zistená chyba v GNU parted. Podrobnosti o tom, čo by mohlo byť užitočné "
+"pri ohlasovaní chyby sa dozviete na http://www.gnu.org/software/parted/"
+"parted.html. Prosím, pošlite emailom hlásenie o chybe na %s obsahujúce "
+"minimálne číslo verzie (%s) a nasledujúcu správu:"
+
+#: libparted/labels/aix.c:103
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr "Podpora čítania menoviek disku AIX ešte nie je implementovaná."
+
+#: libparted/labels/aix.c:114
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr "Podpora zápisu menoviek disku AIX ešte nie je implementovaná."
+
+#: libparted/labels/aix.c:127
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr ""
+"Podpora pridávania oblastí do menoviek disku AIX ešte nie je implementovaná."
+
+#: libparted/labels/aix.c:137
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr ""
+"Podpora kopírovania oblastí v menovkách disku AIX ešte nie je implementovaná."
+
+#: libparted/labels/aix.c:155
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr ""
+"Podpora nastavovania typu systému oblastí v menovkách disku AIX ešte nie je "
+"implementovaná."
+
+#: libparted/labels/aix.c:165
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr ""
+"Podpora nastavovania príznakov v menovkách disku AIX ešte nie je "
+"implementovaná."
+
+#: libparted/labels/bsd.c:571 libparted/labels/dasd.c:833
+#: libparted/labels/dos.c:2176 libparted/labels/dvh.c:787
+#: libparted/labels/gpt.c:1782 libparted/labels/loop.c:247
+#: libparted/labels/mac.c:1426 libparted/labels/pc98.c:748
+#: libparted/labels/rdb.c:1052 libparted/labels/sun.c:780
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "Nemožno splniť všetky obmedzenia na oddiel."
+
+#: libparted/labels/bsd.c:596
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "Nie je možné alokovať položku menovky disku BSD."
+
+#: libparted/labels/dasd.c:859
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "Nie je možné alokovať položku menovky disku dasd."
+
+#: libparted/labels/dos.c:966
+#, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr "Neplatná tabuľka oblastí na %s - nesprávny podpis %x"
+
+#: libparted/labels/dos.c:994
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "Neplatná tabuľka oblastí - rekurzívna oblasť na %s."
+
+#: libparted/labels/dos.c:1504
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr "Rozšírené oblasti nie je možné skryť na štítkoch diskov msdos."
+
+#: libparted/labels/dos.c:2158
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+"Parted nemôže zmeniť veľkosť oblastí, ktoré spravuje Windows Dynamic Disk."
+
+#: libparted/labels/dvh.c:200
+#, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr "%s nemá rozšírenú oblasť (oblasť hlavičky zväzku)."
+
+#: libparted/labels/dvh.c:326
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr "Kontrolný súčet je zlý, čo indikuje, že tabuľka oblastí je poškodená."
+
+#: libparted/labels/dvh.c:631
+msgid "Only primary partitions can be root partitions."
+msgstr "Iba primárne oblasti môžu byť koreňové oblasti."
+
+#: libparted/labels/dvh.c:645
+msgid "Only primary partitions can be swap partitions."
+msgstr "Iba primárne oblasti môžu byť odkladacie oblasti."
+
+#: libparted/labels/dvh.c:659
+msgid "Only logical partitions can be a boot file."
+msgstr "Iba logické oblasti môžu býť zavázací súbor."
+
+#: libparted/labels/dvh.c:736
+#, c-format
+msgid ""
+"failed to set dvh partition name to %s:\n"
+"Only logical partitions (boot files) have a name."
+msgstr ""
+"nepodarilo sa nastaviť názov dvh oblasti na %s:\n"
+"Iba logické oblasti (zavádzacie súbory) majú název."
+
+#: libparted/labels/dvh.c:829
+msgid "Too many primary partitions"
+msgstr "Príliš veľa primárnych oblastí"
+
+#: libparted/labels/fdasd.c:98
+msgid "open error"
+msgstr "chyba otvárania"
+
+#: libparted/labels/fdasd.c:101
+msgid "seek error"
+msgstr "chyba hľadania"
+
+#: libparted/labels/fdasd.c:104
+msgid "read error"
+msgstr "chyba čítania"
+
+#: libparted/labels/fdasd.c:110
+msgid "ioctl() error"
+msgstr "chyba ioctl()"
+
+#: libparted/labels/fdasd.c:114
+msgid "API version mismatch"
+msgstr "nezhoda verzií API"
+
+#: libparted/labels/fdasd.c:118
+msgid "Unsupported disk type"
+msgstr "Nepodporovaný typ disku"
+
+#: libparted/labels/fdasd.c:122
+msgid "Unsupported disk format"
+msgstr "Nepodporovaný formát disku"
+
+#: libparted/labels/fdasd.c:126
+msgid "Disk is in use"
+msgstr "Disk sa používa"
+
+#: libparted/labels/fdasd.c:130
+msgid "Syntax error in config file"
+msgstr "Chyba syntaxe v konfiguračnom súbore"
+
+#: libparted/labels/fdasd.c:134
+msgid "Volume label is corrupted"
+msgstr "Menovka zväzku je poškodená"
+
+#: libparted/labels/fdasd.c:138
+msgid "A data set name is corrupted"
+msgstr "Názov dátovej množiny je poškodený"
+
+#: libparted/labels/fdasd.c:142
+msgid "Memory allocation failed"
+msgstr "Nepodarilo sa alokovať pamäť"
+
+#: libparted/labels/fdasd.c:146
+msgid "Device verification failed"
+msgstr "Nepodarilo sa overiť zariadenie"
+
+#: libparted/labels/fdasd.c:147
+msgid "The specified device is not a valid DASD device"
+msgstr "Uvedené zariadenie nie je platné zariadenie DASD"
+
+#: libparted/labels/fdasd.c:150 libparted/labels/vtoc.c:179
+msgid "Fatal error"
+msgstr "Osudová chyba"
+
+#: libparted/labels/fdasd.c:226
+msgid "No room for volume label."
+msgstr "Pre menovku oddielu nie je miesto."
+
+#: libparted/labels/fdasd.c:234
+msgid "No room for partition info."
+msgstr "Na informácie o oblastiach nie je dostatok miesta."
+
+#: libparted/labels/fdasd.c:709
+msgid "Invalid VTOC."
+msgstr "Neplatný VTOC."
+
+#: libparted/labels/fdasd.c:766
+msgid "Could not retrieve API version."
+msgstr "Nebolo možné zistiť informácie o API."
+
+#: libparted/labels/fdasd.c:769
+#, c-format
+msgid ""
+"The current API version '%d' doesn't match dasd driver API version '%d'!"
+msgstr "Súčasná verzia API „%d“ nezodpovedá API verzii dasd ovládača „%d“!"
+
+#: libparted/labels/fdasd.c:806
+msgid "Could not retrieve disk geometry information."
+msgstr "Nebolo možné zistiť informácie o geometrii disku."
+
+#: libparted/labels/fdasd.c:810
+msgid "Could not retrieve blocksize information."
+msgstr "Nebolo možné zistiť informácie o veľkosti bloku."
+
+#: libparted/labels/fdasd.c:815
+msgid "Could not retrieve disk information."
+msgstr "Nebolo možné zistiť informácie o disku."
+
+#: libparted/labels/gpt.c:493
+#, c-format
+msgid ""
+"%s contains GPT signatures, indicating that it has a GPT table.  However, it "
+"does not have a valid fake msdos partition table, as it should.  Perhaps it "
+"was corrupted -- possibly by a program that doesn't understand GPT partition "
+"tables.  Or perhaps you deleted the GPT table, and are now using an msdos "
+"partition table.  Is this a GPT partition table?"
+msgstr ""
+"%s obsahuje podpisy GPT, čo znamená, že obsahuje tabuľku GPT. Nemá ale "
+"platnú falošnú tabuľku oddielov DOS, ktorú by mal mať. Možno bola poškodená "
+"- napr. programom, ktorý nerozumie tabuľkám oblastí GPT. Alebo ste možno "
+"odstránili tabuľku oblastí GPT a teraz používate tabuľku oblastí DOS. Je "
+"toto tabuľka oblastí GPT?"
+
+#: libparted/labels/gpt.c:693
+#, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise.  Please report this!"
+msgstr ""
+"Formát tabuľky oblastí GPT je verzie %x, čo je novší, než ktorý dokáže "
+"rozpoznať Parted. Prosím, pošlite nám o tom hlásenie!"
+
+#: libparted/labels/gpt.c:740
+#, c-format
+msgid ""
+"Not all of the space available to %s appears to be used, you can fix the GPT "
+"to use all of the space (an extra %llu blocks) or continue with the current "
+"setting? "
+msgstr ""
+"Zdá sa, že nie všetko miesto dostupné pre %s je využité. Môžete opraviť GPT, "
+"aby využívalo všetok dostupný priestor (ďalších %llu blokov) alebo "
+"pokračovať s aktuálnym nastavením? "
+
+#: libparted/labels/gpt.c:952
+msgid ""
+"The backup GPT table is not at the end of the disk, as it should be.  This "
+"might mean that another operating system believes the disk is smaller.  Fix, "
+"by moving the backup to the end (and removing the old backup)?"
+msgstr ""
+"Záložná tabuľka GPT nie je na konci disku, ako by mala byť. To možná "
+"znamená, že iný operačný systém si myslí, že disk je menší. Mám to opraviť "
+"presunutím zálohy na koniec (a odstránením starej zálohy)?"
+
+#: libparted/labels/gpt.c:976
+msgid ""
+"Both the primary and backup GPT tables are corrupt.  Try making a fresh "
+"table, and using Parted's rescue feature to recover partitions."
+msgstr ""
+"Primárna aj záložná tabuľka GPT je poškodená. Skúste vytvoriť novú tabuľku a "
+"obnoviť oblasti pomocou možnosti Partedu rescue."
+
+#: libparted/labels/gpt.c:987
+msgid ""
+"The backup GPT table is corrupt, but the primary appears OK, so that will be "
+"used."
+msgstr ""
+"Záložná tabuľka GPT je poškodená, ale primárna sa zdá byť v poriadku, takže "
+"sa použije primárna."
+
+#: libparted/labels/gpt.c:999
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr ""
+"Primárna tabuľka GPT je poškodená, ale záloha sa zdá byť v poriadku, takže "
+"sa použije záloha."
+
+#: libparted/labels/gpt.c:1023
+msgid "primary partition table array CRC mismatch"
+msgstr "nezodpovedá CRC poľa primárnej tabuľky oblastí"
+
+#: libparted/labels/mac.c:184
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Neplatný podpis %x pre menovky disku Mac."
+
+#: libparted/labels/mac.c:231
+msgid "Partition map has no partition map entry!"
+msgstr "Mapa oblastí nemá žiadnu položku mapy oblastí!"
+
+#: libparted/labels/mac.c:279
+#, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr "%s je príliš malý pro menovku disku Mac!"
+
+#: libparted/labels/mac.c:508
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "Oblasť %d má neplatný podpis %x."
+
+#: libparted/labels/mac.c:526
+#, c-format
+msgid "Partition %d has an invalid length of 0 bytes!"
+msgstr "Oblasť %d má neplatnú dĺžku 0 bajtov."
+
+#: libparted/labels/mac.c:557
+msgid "The data region doesn't start at the start of the partition."
+msgstr "Dátová časť nezačína na začiatku oblasti."
+
+#: libparted/labels/mac.c:574
+msgid "The boot region doesn't start at the start of the partition."
+msgstr "Štartovacia oblasť nezačína na začiatku oblasti."
+
+#: libparted/labels/mac.c:588
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr "Zavádzacia časť diskovej oblasti nezaberá celú oblasť."
+
+#: libparted/labels/mac.c:599
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr "Dátová časť oblasti nezaberá celú oblasť."
+
+#: libparted/labels/mac.c:652
+#, c-format
+msgid ""
+"Weird block size on device descriptor: %d bytes is not divisible by 512."
+msgstr ""
+"Čudná veľkosť bloku v deskriptore zariadenia: %d bajtov nie je deliteľné 512."
+
+#: libparted/labels/mac.c:665
+#, c-format
+msgid ""
+"The driver descriptor says the physical block size is %d bytes, but Linux "
+"says it is %d bytes."
+msgstr ""
+"Deskriptor ovládača vraví, že fyzická veľkosť bloku je %d bajtov, ale Linux "
+"vraví, že je to %d bajtov."
+
+#: libparted/labels/mac.c:719
+msgid "No valid partition map found."
+msgstr "Nebola nájdená platná mapa oblastí."
+
+#: libparted/labels/mac.c:780
+#, c-format
+msgid ""
+"Conflicting partition map entry sizes!  Entry 1 says it is %d, but entry %d "
+"says it is %d!"
+msgstr ""
+"Kolidujúce veľkosti položek mapy oblastí! Položka 1 vraví, že je to %d, ale "
+"položka %d vraví, že je to %d!"
+
+#: libparted/labels/mac.c:811
+msgid "Weird!  There are 2 partitions map entries!"
+msgstr "Čudné! 2 položky mapy oblastí!"
+
+#: libparted/labels/mac.c:1357
+msgid ""
+"Changing the name of a root or swap partition will prevent Linux from "
+"recognising it as such."
+msgstr ""
+"Zmena názvu koreňového alebo odkladacej oblasti zabráni Linuxu v jej "
+"rozpoznaní."
+
+#: libparted/labels/mac.c:1461
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr "Nemôžem pridať ďalšiu oblasť - mapa oblastí je príliš malá!"
+
+#: libparted/labels/pc98.c:331
+#, c-format
+msgid "Invalid partition table on %s."
+msgstr "Neplatná tabuľka oblastí na %s."
+
+#: libparted/labels/pc98.c:384 libparted/labels/pc98.c:462
+#, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries.  This is still "
+"unsupported."
+msgstr ""
+"Oblasť %d nie je zarovnaná na hranice cylindra. Toto zatiaľ nie je "
+"podporované."
+
+#: libparted/labels/pc98.c:780
+msgid "Can't add another partition."
+msgstr "Nemožno pridať ďalšiu oblasť."
+
+#: libparted/labels/pt-tools.c:125
+#, c-format
+msgid ""
+"partition length of %jd sectors exceeds the %s-partition-table-imposed "
+"maximum of %jd"
+msgstr ""
+"dĺžka oblasti of %jd sektorov prekračuje maximum stanovené tabuľkou oblastí "
+"%s v dĺžke %jd"
+
+#: libparted/labels/pt-tools.c:138
+#, c-format
+msgid ""
+"starting sector number, %jd exceeds the %s-partition-table-imposed maximum "
+"of %jd"
+msgstr ""
+"číslo počiatočného sektora, %jd prekračuje prekračuje maximum stanovené "
+"tabuľkou oblastí %s %jd"
+
+#: libparted/labels/rdb.c:169
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr "%s : Chybný kontrolný súčet na bloku %llu typu %s."
+
+#: libparted/labels/rdb.c:484
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr "%s : Nebol nájdený rdb blok, toto by sa nemalo nikdy stať."
+
+#: libparted/labels/rdb.c:573
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr "%s : Na bloku %d bola detekovaná slučka."
+
+#: libparted/labels/rdb.c:592
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr "%s : Zoznam %s sa zdá byť chybný na bloku %s."
+
+#: libparted/labels/rdb.c:691
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr "%s : Nepodarilo sa vypísať zoznam chybných blokov."
+
+#: libparted/labels/rdb.c:699
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr "%s : Nepodarilo sa vypísať zoznam blokov oblasti."
+
+#: libparted/labels/rdb.c:707
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr "%s : Nepodarilo sa vypísať zoznam blokov súborového systému."
+
+#: libparted/labels/rdb.c:715
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr "%s : Nepodarilo sa vypísať zoznam zavádzacích blokov."
+
+#: libparted/labels/rdb.c:742
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr "Nepodarilo sa zapísať blok oblasti na %d."
+
+#: libparted/labels/rdb.c:1080
+msgid "Unable to allocate a partition number."
+msgstr "Nepodarilo sa alokovať číslo oblasti."
+
+#: libparted/labels/sun.c:161
+msgid "Corrupted Sun disk label detected."
+msgstr "Detekovaná poškodená menovka disku Sun."
+
+#: libparted/labels/sun.c:276
+#, c-format
+msgid ""
+"The disk CHS geometry (%d,%d,%d) reported by the operating system does not "
+"match the geometry stored on the disk label (%d,%d,%d)."
+msgstr ""
+"Geometria disku CHS (%d,%d,%d) nezodpovedá geometrii uloženej v menovke "
+"disku (%d,%d,%d)."
+
+#: libparted/labels/sun.c:298
+#, c-format
+msgid "The disk label describes a disk bigger than %s."
+msgstr "Menovka disku popisuje disk väčší než %s."
+
+#: libparted/labels/sun.c:473
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr "Disk má %d cylindrov, čo je viac ako maximálny počet 65536."
+
+#: libparted/labels/sun.c:812
+msgid ""
+"The Whole Disk partition is the only available one left.  Generally, it is "
+"not a good idea to overwrite this partition with a real one.  Solaris may "
+"not be able to boot without it, and SILO (the sparc boot loader) appreciates "
+"it as well."
+msgstr ""
+"Jediná zostávajúca oblasť je oblasť Celý disk. Vo všeobecnosti nie je dobrý "
+"nápad túto oblasti prepísať skutočnou oblasťou. Bez nej možno nebude možné "
+"zaviesť Solaris a SILO (zavádzač systému pre sparc) ju  tiež ocení."
+
+#: libparted/labels/sun.c:827
+msgid "Sun disk label is full."
+msgstr "Menovka disku Sun je plná."
+
+#: libparted/labels/vtoc.c:164
+msgid "opening of device failed"
+msgstr "%s otváranie zariadenia zlyhalo"
+
+#: libparted/labels/vtoc.c:168
+msgid "seeking on device failed"
+msgstr "vyhľadávanie na zariadení zlyhalo"
+
+#: libparted/labels/vtoc.c:172
+msgid "writing to device failed"
+msgstr "zápis na zariadenie zlyhal"
+
+#: libparted/labels/vtoc.c:176
+msgid "reading from device failed"
+msgstr "čítanie zo zariadenia zlyhalo"
+
+#: libparted/labels/vtoc.c:299 libparted/labels/vtoc.c:308
+#: libparted/labels/vtoc.c:329 libparted/labels/vtoc.c:336
+msgid "Could not read volume label."
+msgstr "Nebolo možné prečítať štítok zväzku."
+
+#: libparted/labels/vtoc.c:356 libparted/labels/vtoc.c:363
+msgid "Could not write volume label."
+msgstr "Nebolo možné zapísať štítok zväzku."
+
+#: libparted/labels/vtoc.c:469
+msgid "Could not read VTOC labels."
+msgstr "Nebolo možné prečítať štítky VTOC."
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr "Nebolo možné prečítať VTOC FMT1 DSCB."
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr "Nebolo možné prečítať VTOC FMT4 DSCB."
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr "Nebolo možné prečítať VTOC FMT5 DSCB."
+
+#: libparted/labels/vtoc.c:496
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr "Nebolo možné prečítať VTOC FMT7 DSCB."
+
+#: libparted/labels/vtoc.c:516
+msgid "Could not write VTOC labels."
+msgstr "Nebolo možné zapísať štítky VTOC."
+
+#: libparted/labels/vtoc.c:522
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr "Nebolo možné zapísať VTOC FMT1 DSCB."
+
+#: libparted/labels/vtoc.c:529
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr "Nebolo možné zapísať VTOC FMT4 DSCB."
+
+#: libparted/labels/vtoc.c:536
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr "Nebolo možné zapísať VTOC FMT5 DSCB."
+
+#: libparted/labels/vtoc.c:543
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr "Nebolo možné zapísať VTOC FMT7 DSCB."
+
+#: libparted/libparted.c:230 libparted/libparted.c:245
+msgid "Out of memory."
+msgstr "Nedostatok pamäte."
+
+#: libparted/unit.c:138
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr "Nebolo možné získať veľkosť špeciálnej jednotky „COMPACT“."
+
+#: libparted/unit.c:384
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr "„%s“ má neplatnú syntax lokácií."
+
+#: libparted/unit.c:392
+#, c-format
+msgid "The maximum head value is %d."
+msgstr "Maximálna hodnota hlavičiek je %d."
+
+#: libparted/unit.c:399
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr "Maximálna hodnota sektorov je %d."
+
+#: libparted/unit.c:411 libparted/unit.c:556
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr "Lokácia %s sa nachádza mimo zariadenia %s."
+
+#: libparted/unit.c:531
+msgid "Invalid number."
+msgstr "Neplatné číslo."
+
+#: libparted/fs/amiga/affs.c:62 libparted/fs/amiga/apfs.c:55
+#: libparted/fs/amiga/asfs.c:69
+#, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "%s : Nepodarilo sa alokovať blok oblasti\n"
+
+#: libparted/fs/amiga/affs.c:77 libparted/fs/amiga/apfs.c:68
+#: libparted/fs/amiga/asfs.c:81
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr "%s : Nepodarilo sa alokovať blok\n"
+
+#: libparted/fs/amiga/affs.c:82 libparted/fs/amiga/apfs.c:73
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr "%s : Nebolo možné prečítať štartovací blok %llu\n"
+
+#: libparted/fs/amiga/affs.c:98 libparted/fs/amiga/apfs.c:84
+#: libparted/fs/amiga/asfs.c:87 libparted/fs/amiga/asfs.c:101
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr "%s : Nebolo možné prečítať koreňový blok %llu\n"
+
+#: libparted/fs/amiga/amiga.c:71
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr "%s : nepodarilo sa alokovať prvok zoznamu ID\n"
+
+#: libparted/fs/amiga/amiga.c:188
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr "%s : Nepodarilo sa prečítať blok %llu\n"
+
+#: libparted/fs/amiga/amiga.c:201
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr "%s : Chybný kontrolný súčet bloku %llu typu %s\n"
+
+#: libparted/fs/amiga/amiga.c:211
+#, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s : Nepodarilo sa zapísať blok %d\n"
+
+#: libparted/fs/amiga/amiga.c:277
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr "%s : Nepodarilo sa alokovať disk_specific rdb blok\n"
+
+#: libparted/fs/amiga/amiga.c:288
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr "%s : Nebol nájdený rdb blok, to by sa nikdy nemalo stať\n"
+
+#: libparted/fs/amiga/amiga.c:317
+#, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr "%s : Nepodarilo sa načítať blok oblasti %llu\n"
+
+#: libparted/fs/fat/fat.c:174
+msgid ""
+"GNU Parted was miscompiled: the FAT boot sector should be 512 bytes.  FAT "
+"support will be disabled."
+msgstr ""
+"GNU parted bol nesprávne preložený; štartovací sektor FAT by mal mať 512 "
+"bajtov. Podpora FAT bude vypnutá."
+
+#: libparted/fs/fat/bootsector.c:49 libparted/fs/fat/bootsector.c:56
+msgid "File system has an invalid signature for a FAT file system."
+msgstr "Systém súborov nemá platný podpis systému súborov FAT."
+
+#: libparted/fs/fat/bootsector.c:64
+msgid "File system has an invalid sector size for a FAT file system."
+msgstr "Systém súborov má neplatnú veľkost sektora pre systém súborov FAT."
+
+#: libparted/fs/fat/bootsector.c:71
+msgid "File system has an invalid cluster size for a FAT file system."
+msgstr "Systém súborov má neplatnú veľkost klastra pre systém súborov FAT."
+
+#: libparted/fs/fat/bootsector.c:78
+msgid ""
+"File system has an invalid number of reserved sectors for a FAT file system."
+msgstr ""
+"Systém súborov má neplatný počet rezervovaných sektorov pre systém súborov "
+"FAT."
+
+#: libparted/fs/fat/bootsector.c:85
+msgid "File system has an invalid number of FATs."
+msgstr "Súborový systém má má neplatný počet FAT."
+
+#: libparted/fs/fat/bootsector.c:156
+#, c-format
+msgid ""
+"This file system has a logical sector size of %d.  GNU Parted is known not "
+"to work properly with sector sizes other than 512 bytes."
+msgstr ""
+"Systém súborov má logickú veľkost sektora %d. Je známe, že GNU Parted "
+"nepracuje správne s veľkosťou sektora inou ako 512 bajtov."
+
+#: libparted/fs/fat/bootsector.c:181
+#, c-format
+msgid ""
+"The file system's CHS geometry is (%d, %d, %d), which is invalid.  The "
+"partition table's CHS geometry is (%d, %d, %d).  If you select Ignore, the "
+"file system's CHS geometry will be left unchanged.  If you select Fix, the "
+"file system's CHS geometry will be set to match the partition table's CHS "
+"geometry."
+msgstr ""
+"CHS geometria tohto systému je (%d, %d, %d), čo nie je platná hodnota. CHS "
+"geometria tabuľky oddielov je (%d, %d, %d). Ak zvolíte Ignorovať, CHS "
+"geometria systému sa nezmení. Ak zvolíte Opraviť, CHS geometria systému sa "
+"zmení na CHS geometriu tabuľky oblastí."
+
+#: libparted/fs/fat/bootsector.c:230
+msgid "FAT boot sector says logical sector size is 0.  This is weird. "
+msgstr ""
+"Štartovací sektor FAT vraví, že logická veľkosť sektoru je 0. To je divné. "
+
+#: libparted/fs/fat/bootsector.c:236
+msgid "FAT boot sector says there are no FAT tables.  This is weird. "
+msgstr ""
+"Štartovací sektor FAT vraví, že neexistuje žiadna tabuľka FAT. To je divné. "
+
+#: libparted/fs/fat/bootsector.c:242
+msgid "FAT boot sector says clusters are 0 sectors.  This is weird. "
+msgstr "Štartovací sektor FAT vraví, že klaster je 0 sektorov. To je divné. "
+
+#: libparted/fs/fat/bootsector.c:252
+msgid "File system is FAT12, which is unsupported."
+msgstr "Súborový systém je FAT12, ktorý nie je podporovaný."
+
+#: libparted/fs/fat/bootsector.c:428
+#, c-format
+msgid ""
+"The information sector has the wrong signature (%x).  Select cancel for now, "
+"and send in a bug report.  If you're desperate, it's probably safe to ignore."
+msgstr ""
+"Sektor informácií má nesprávný podpis (%x). Nateraz zvoľte Zrušiť a pošlite "
+"hlásenie o chybe. Ak ste v úzkych, môžete to pravdepodobne bez obáv "
+"ignorovať."
+
+#: libparted/fs/linux_swap/linux_swap.c:247
+#, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "Nerozpoznaný podpis odkladacieho oddielu Linuxu v starom štýle „%10s“."
+
+#: libparted/fs/linux_swap/linux_swap.c:290
+#, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "Nerozpoznaný podpis odkladacieho oddielu Linuxu v novom štýle „%10s“."
+
+#: libparted/fs/linux_swap/linux_swap.c:330
+#, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Nerozpoznaný podpis odkladacieho oddielu Linuxu swsusp „%10s“."
+
+#: libparted/fs/hfs/probe.c:50
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to "
+"%d bytes."
+msgstr ""
+"Parted nedokáže používať súborové systémy HFS na diskoch s veľkosťou sektora "
+"inou ako %d bajtov."
+
+#: parted/parted.c:123
+msgid "displays this help message"
+msgstr "zobrazí túto správu pomocníka"
+
+#: parted/parted.c:124
+msgid "lists partition layout on all block devices"
+msgstr "vypíše rozloženie oblastí na všetkých blokových zariadeniach"
+
+#: parted/parted.c:125
+msgid "displays machine parseable output"
+msgstr "zobrazí strojovo čitateľný výstup"
+
+#: parted/parted.c:126
+msgid "never prompts for user intervention"
+msgstr "nikdy nežiada o zásah používateľa"
+
+#: parted/parted.c:127
+msgid "displays the version"
+msgstr "zobrazí verziu"
+
+#: parted/parted.c:128
+msgid "alignment for new partitions"
+msgstr "zarovnanie nových oblastí"
+
+#: parted/parted.c:140
+msgid ""
+"NUMBER is the partition number used by Linux.  On MS-DOS disk labels, the "
+"primary partitions number from 1 to 4, logical partitions from 5 onwards.\n"
+msgstr ""
+"ČÍSLO je číslo oblasti, ktorú používa Linux. Na menovkách disku msdos majú "
+"primárne oblasti čísla 1-4 a logické oblasti sú od 5 ďalej.\n"
+
+#: parted/parted.c:143
+msgid "LABEL-TYPE is one of: "
+msgstr "TYP-JMENOVKY je jeden z: "
+
+#: parted/parted.c:144
+msgid "FLAG is one of: "
+msgstr "PREPÍNAČ je jeden z: "
+
+#: parted/parted.c:145
+msgid "UNIT is one of: "
+msgstr "JEDNOTKA je jedno z: "
+
+#: parted/parted.c:146
+msgid "desired alignment: minimum or optimal"
+msgstr "požadovan zarovnanie: minimálne alebo optimálne"
+
+#: parted/parted.c:147
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "TYP-ODDIELU je jeden z: primary, logical, extended\n"
+
+#: parted/parted.c:149
+msgid "FS-TYPE is one of: "
+msgstr "TYP-FS je jeden z: "
+
+#: parted/parted.c:150
+msgid ""
+"START and END are disk locations, such as 4GB or 10%.  Negative values count "
+"from the end of the disk.  For example, -1s specifies exactly the last "
+"sector.\n"
+msgstr ""
+"ZAČIATOK a KONIEC sú pozície na disku, napr 4 GB alebo 10%. Záporné hodnoty "
+"sa počítajú od konca disku. Napríklad -1s znamená presne posledný sektor.\n"
+
+#: parted/parted.c:153
+msgid "STATE is one of: on, off\n"
+msgstr "STAV je jeden z: on, off\n"
+
+#: parted/parted.c:154
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "zariadenie je obvykle /dev/hda alebo /dev/sda\n"
+
+#: parted/parted.c:155
+msgid "NAME is any word you want\n"
+msgstr "NÁZEV je ľubovoľné slovo\n"
+
+#: parted/parted.c:158
+msgid ""
+"Copyright (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"This program is free software, covered by the GNU General Public License.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+msgstr ""
+"Copyright (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"Toto je slobodný softvér pod Všeobecnou verejnou licenciou GNU.\n"
+"\n"
+"Tento program je šírený v nadeji, že bude užitočný, ale\n"
+"BEZ AKEJKOĽVEK ZÁRUKY; bez i implicitnej záruky PREDAJNOSTI\n"
+"či VHODNOSTI NA URČITÝ ÚČEL. Ďalšie podrobnosti nájdete v\n"
+"GNU General Public License.\n"
+"\n"
+
+#: parted/parted.c:204
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(zostávajúci čas %.2d:%.2d)"
+
+#: parted/parted.c:223
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+"Oblasť %s sa používa. Predtým, než vykonáte zmeny pomocou Parted ju musíte "
+"odpojiť."
+
+#: parted/parted.c:241
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "Oblasti na %s sa používajú."
+
+#: parted/parted.c:253
+#, c-format
+msgid ""
+"The existing disk label on %s will be destroyed and all data on this disk "
+"will be lost. Do you want to continue?"
+msgstr ""
+"Existujúca menovka disku na %s sa zničí a všetky dáta na oddiele sa stratia. "
+"Chcete pokračovať?"
+
+#: parted/parted.c:502
+msgid "New disk label type?"
+msgstr "Typ novej menovky disku?"
+
+#: parted/parted.c:562
+msgid "Partition type?"
+msgstr "Typ oblasti?"
+
+#: parted/parted.c:580 parted/parted.c:766
+msgid "Partition name?"
+msgstr "Názov oblasti?"
+
+#: parted/parted.c:588
+msgid "File system type?"
+msgstr "Typ súborového systému?"
+
+#: parted/parted.c:594 parted/parted.c:1342
+msgid "Start?"
+msgstr "Začiatok?"
+
+#: parted/parted.c:596 parted/parted.c:1344
+msgid "End?"
+msgstr "Koniec?"
+
+#: parted/parted.c:661
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s.%s"
+msgstr ""
+"Vyžiadali ste oblasť od %s do %s.\n"
+"Najbližšie možné miesto je od %s do %s.%s"
+
+#: parted/parted.c:666
+msgid ""
+"\n"
+"Is this still acceptable to you?"
+msgstr ""
+"\n"
+"Je to pre vás ešte prijateľné?"
+
+#: parted/parted.c:688
+msgid "The resulting partition is not properly aligned for best performance."
+msgstr ""
+"Výsledná oblasť nie je správne zarovnaná, čo sa prejaví zhoršeným výkonom."
+
+#: parted/parted.c:763 parted/parted.c:1383 parted/parted.c:1455
+#: parted/parted.c:1489
+msgid "Partition number?"
+msgstr "Číslo oblasti?"
+
+#: parted/parted.c:841
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d.  Each cylinder is %s.\n"
+msgstr ""
+"BIOS geometria cylinder,hlava,sektor: %d,%d,%d. Každý cylinder má %s.\n"
+
+#: parted/parted.c:881
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr "Model: %s (%s)\n"
+
+#: parted/parted.c:883
+#, c-format
+msgid "Disk %s: %s\n"
+msgstr "Disk %s: %s\n"
+
+#: parted/parted.c:884
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr "Veľkosť sektora (logická/fyzická): %lldB/%lldB\n"
+
+#: parted/parted.c:896
+#, c-format
+msgid "Partition Table: %s\n"
+msgstr "Tabuľka oblastí: %s\n"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Number"
+msgstr "Číslo"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Start"
+msgstr "Začiatok"
+
+#: parted/parted.c:1008 parted/parted.c:1011
+msgid "End"
+msgstr "Koniec"
+
+#: parted/parted.c:1011
+msgid "Size"
+msgstr "Veľkosť"
+
+#: parted/parted.c:1015
+msgid "Type"
+msgstr "Typ"
+
+#: parted/parted.c:1017
+msgid "File system"
+msgstr "Súborový systém"
+
+#: parted/parted.c:1020
+msgid "Name"
+msgstr "Názov"
+
+#: parted/parted.c:1022
+msgid "Flags"
+msgstr "Prepínače"
+
+#: parted/parted.c:1079
+msgid "Free Space"
+msgstr "Voľné miesto"
+
+#: parted/parted.c:1241
+#, c-format
+msgid ""
+"A %s %s partition was found at %s -> %s.  Do you want to add it to the "
+"partition table?"
+msgstr ""
+"Bola nájdená oblasť %s %s na %s -> %s. Chcete ju pridať do tabuľky oblastí?"
+
+#: parted/parted.c:1280
+msgid "searching for file systems"
+msgstr "hľadám systémy súborov"
+
+#: parted/parted.c:1408
+msgid "New device?"
+msgstr "Nové zariadenie?"
+
+#: parted/parted.c:1453
+msgid "alignment type(min/opt)"
+msgstr "typ zarovnania(min/opt)"
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d aligned\n"
+msgstr "%d zarovnané\n"
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d not aligned\n"
+msgstr "%d nezarovnané\n"
+
+#: parted/parted.c:1491
+msgid "Flag to Invert?"
+msgstr "Prepínač, který sa má zmeniť?"
+
+#: parted/parted.c:1496
+msgid "New state?"
+msgstr "Nový stav?"
+
+#: parted/parted.c:1533
+msgid "Unit?"
+msgstr "Jednotka?"
+
+#: parted/parted.c:1651
+msgid "align-check"
+msgstr "kontrola-zarovnania"
+
+#: parted/parted.c:1654
+msgid ""
+"align-check TYPE N                        check partition N for TYPE(min|"
+"opt) alignment"
+msgstr ""
+"align-check TYP N                         skontrolovať zarovnanie TYP(min|"
+"opt) na oblasti N"
+
+#: parted/parted.c:1662
+msgid "help"
+msgstr "help"
+
+#: parted/parted.c:1665
+msgid ""
+"help [COMMAND]                           print general help, or help on "
+"COMMAND"
+msgstr ""
+"help [PRÍKAZ]                            vypíše všeobecného pomocníka alebo "
+"pomocníka o PRÍKAZE"
+
+#: parted/parted.c:1671
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:1671
+msgid "mktable"
+msgstr "mktable"
+
+#: parted/parted.c:1674
+msgid ""
+"mklabel,mktable LABEL-TYPE               create a new disklabel (partition "
+"table)"
+msgstr ""
+"mklabel TYP-MENOVKY                      vytvorí novú menovku disku (tabuľku "
+"oblastí)"
+
+#: parted/parted.c:1680
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:1683
+msgid "mkpart PART-TYPE [FS-TYPE] START END     make a partition"
+msgstr "mkpart TYP-ODDIELU [TYP-FS] ZAČIATOK KONIEC vytvorí oblasť"
+
+#: parted/parted.c:1689
+msgid ""
+"'mkpart' makes a partition without creating a new file system on the "
+"partition.  FS-TYPE may be specified to set an appropriate partition ID.\n"
+msgstr ""
+"„mkpart“ vytvorí oblasť bez toho, aby vytvoril nový systém súborov na nej. "
+"TYP-FS môže špecifikovať zodpovedajúci ID oblasti.\n"
+
+#: parted/parted.c:1694
+msgid "name"
+msgstr "name"
+
+#: parted/parted.c:1697
+msgid "name NUMBER NAME                         name partition NUMBER as NAME"
+msgstr "name MINOR NÁZOV                         nazvať oblasť MINOR NÁZVOM"
+
+#: parted/parted.c:1702
+msgid "print"
+msgstr "print"
+
+#: parted/parted.c:1705
+msgid ""
+"print [devices|free|list,all|NUMBER]     display the partition table, "
+"available devices, free space, all found partitions, or a particular "
+"partition"
+msgstr ""
+"print [devices|free|list,all|ČÍSLO]      zobrazí tabuľku oblastí, dostupné "
+"zariadenia, voľné miesto, všetky nájdené oblasti alebo konkrétnu oblasť"
+
+#: parted/parted.c:1710
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+"„print“ bez argumentov zobrazí celú tabuľku oblastí. S nasledovnými "
+"argumentami však vykoná rôzne iné činnosti.\n"
+
+#: parted/parted.c:1712
+msgid "  devices   : display all active block devices\n"
+msgstr "  devices   : zobrazí všetky aktívne blokové zariadenia\n"
+
+#: parted/parted.c:1713
+msgid ""
+"  free      : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+"  free      : zobrazí informácie o voľnom mieste nerozdelenom medzi oblasti "
+"na aktuálnom blokovom zariadení\n"
+
+#: parted/parted.c:1715
+msgid ""
+"  list, all : display the partition tables of all active block devices\n"
+msgstr ""
+"  list, all : zobrazí tabuľky oblastí všetkých aktívnych blokových "
+"zariadení\n"
+
+#: parted/parted.c:1716
+msgid ""
+"  NUMBER    : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+"  ČÍSLO     : zobrazí podrobnejšie informácie o tejto konkrétnej oblasti\n"
+
+#: parted/parted.c:1721
+msgid "quit"
+msgstr "quit"
+
+#: parted/parted.c:1724
+msgid "quit                                     exit program"
+msgstr "quit                                     ukončiť program"
+
+#: parted/parted.c:1729
+msgid "rescue"
+msgstr "rescue"
+
+#: parted/parted.c:1732
+msgid ""
+"rescue START END                         rescue a lost partition near START "
+"and END"
+msgstr ""
+"rescue ZAČIATOK KONIEC                   zachrániť stratenú oblasť v "
+"blízkosti ZAČIATKU a KONCA"
+
+#: parted/parted.c:1738
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:1741
+msgid "rm NUMBER                                delete partition NUMBER"
+msgstr "rm MINOR                                 odstrániť oblasť MINOR"
+
+#: parted/parted.c:1746
+msgid "select"
+msgstr "select"
+
+#: parted/parted.c:1749
+msgid "select DEVICE                            choose the device to edit"
+msgstr ""
+"select zariadenie                        zvoliť zariadenie, ktoré sa má "
+"upravovať"
+
+#: parted/parted.c:1754
+msgid "set"
+msgstr "set"
+
+#: parted/parted.c:1757
+msgid ""
+"set NUMBER FLAG STATE                    change the FLAG on partition NUMBER"
+msgstr "set MINOR PREPÍNAČ STAV                  zmeniť voľbu na oblasti MINOR"
+
+#: parted/parted.c:1763
+msgid "toggle"
+msgstr "toggle"
+
+#: parted/parted.c:1766
+msgid ""
+"toggle [NUMBER [FLAG]]                   toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+"toggle [ČÍSLO [PRÍZNAK]]                 prepnúť PRÍZNAK na oblasti ČÍSLO"
+
+#: parted/parted.c:1772
+msgid "unit"
+msgstr "unit"
+
+#: parted/parted.c:1775
+msgid "unit UNIT                                set the default unit to UNIT"
+msgstr ""
+"unit JEDNOTKA                            nastaviť predvolenú jednotku na "
+"JEDNOTKA"
+
+#: parted/parted.c:1780
+msgid "version"
+msgstr "version"
+
+#: parted/parted.c:1783
+msgid ""
+"version                                  display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+"version                                  zobrazí verziu a informácie o "
+"autorských právach GNU Parted"
+
+#: parted/parted.c:1787
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+"„version“ zobrazí informácie o autorských právach a verzii tejto kópie GNU "
+"Parted\n"
+
+#: parted/parted.c:1855
+#, c-format
+msgid "Usage: %s [-hlmsv] [-a<align>] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+"Použitie: %s [-hlmsv] [-a<zarovnanie>] [ZARIADENIE [PRÍKAZ [PARAMETRE]]...]\n"
+
+#: parted/parted.c:1899
+msgid "No device found"
+msgstr "Nebolo nájdené žiadne zariadenie"
+
+#: parted/parted.c:1936
+msgid "WARNING: You are not superuser.  Watch out for permissions."
+msgstr "UPOZORNENIE: Nie ste superpoužívateľ. Dávajte pozor na oprávnenia."
+
+#: parted/parted.c:1974
+msgid "You may need to update /etc/fstab.\n"
+msgstr "Môže byť potrebné aktualizovať /etc/fstab.\n"
+
+#: parted/ui.c:162
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr "Vitajte v GNU Parted! Zoznam príkazov zobrazíte napísaním „help“.\n"
+
+#: parted/ui.c:165
+msgid ""
+"Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]\n"
+"Apply COMMANDs with PARAMETERS to DEVICE.  If no COMMAND(s) are given, run "
+"in\n"
+"interactive mode.\n"
+msgstr ""
+"Použitie: parted [PREPÍNAČ]... [ZARIADENIE [PRÍKAZ [PARAMETRE]...]...]\n"
+"Vykonať PRÍKAZy s PARAMETRami na ZARIADENIE. Ak nie je zadaný PRÍKAZ, beží v "
+"interaktívnom režime.\n"
+
+#: parted/ui.c:170
+#, c-format
+msgid ""
+"\n"
+"\n"
+"You found a bug in GNU Parted! Here's what you have to do:\n"
+"\n"
+"Don't panic! The bug has most likely not affected any of your data.\n"
+"Help us to fix this bug by doing the following:\n"
+"\n"
+"Check whether the bug has already been fixed by checking\n"
+"the last version of GNU Parted that you can find at:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Please check this version prior to bug reporting.\n"
+"\n"
+"If this has not been fixed yet or if you don't know how to check,\n"
+"please visit the GNU Parted website:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"for further information.\n"
+"\n"
+"Your report should contain the version of this release (%s)\n"
+"along with the error message below, the output of\n"
+"\n"
+"\tparted DEVICE unit co print unit s print\n"
+"\n"
+"and the following history of commands you entered.\n"
+"Also include any additional information about your setup you\n"
+"consider important.\n"
+msgstr ""
+"\n"
+"\n"
+"našli ste chybu v GNU Parted! Musíte spraviť nasledovné:\n"
+"\n"
+"Nepanikárte! Chyba pravdepodobne neovplyvnila vaše údaje.\n"
+"Pomôžte nám opraviť ju tým, že urobíte nasledovné:\n"
+"\n"
+"Skontrolujte, či chyba už nebola opravená v poslednej verzii\n"
+"GNU Parted, ktorú nájdete na:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Prosím, pred oznámením chyby ju overte v tejto verzii.\n"
+"\n"
+"Ak chyba nebola zatiaľ opravená alebo neviete ako ju overiť,\n"
+"navštívte prosím webstránku GNU Parted:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"Vaše hlásenie by malo obsahovať verziu tohto vydania (%s)\n"
+"spolu s nižšie zobrazeným chybovým hlásením, výstup\n"
+"\n"
+"\tparted DEVICE unit co print unit s print\n"
+"\n"
+"a históriu príkazov, ktoré ste zadali. Tiež doplňte akékoľvek\n"
+"ďalšie informácie o vašom systéme, ktoré považujete za\n"
+"relevantné.\n"
+
+#: parted/ui.c:291
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+"\n"
+"História príkazov:\n"
+
+#: parted/ui.c:354
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+"\n"
+"Chyba: SEGV_MAPERR (Adresa nemá mapovanie na objekt)\n"
+
+#: parted/ui.c:360
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+"\n"
+"Chyba: SEGV_ACCERR (Neplatné oprávnenia mapovaného objektu)\n"
+
+#: parted/ui.c:365
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+"\n"
+"Chyba: Vyskytol sa všeobecný signál SIGSEGV.\n"
+
+#: parted/ui.c:389
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+"\n"
+"Chyba: FPE_INTDIV (Celé číslo: delenie nulou)"
+
+#: parted/ui.c:394
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+"\n"
+"Chyba: FPE_INTOVF (Celé číslo: pretečenie)"
+
+#: parted/ui.c:399
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+"\n"
+"Chyba: FPE_FLTDIV (Desatinné číslo: delenie nulou)"
+
+#: parted/ui.c:404
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+"\n"
+"Chyba: FPE_FLTOVF (Desatinné číslo: pretečenie)"
+
+#: parted/ui.c:409
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+"\n"
+"Chyba: FPE_FLTUND (Desatinné číslo: podtečenie)"
+
+#: parted/ui.c:414
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+"\n"
+"Chyba: FPE_FLTRES (Desatinné číslo: nepresný výsledok)"
+
+#: parted/ui.c:419
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+"\n"
+"Chyba: FPE_FLTINV (Desatinné číslo: neplatná operácia)"
+
+#: parted/ui.c:424
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+"\n"
+"Chyba: FPE_FLTSUB (Desatinné číslo: dolný index mimo rozsahu)"
+
+#: parted/ui.c:429
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+"\n"
+"Chyba: Vyskytol sa všeobecný signál SIGFPE."
+
+#: parted/ui.c:453
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+"\n"
+"Chyba: ILL_ILLOPC (Neplatný opkód)"
+
+#: parted/ui.c:458
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+"\n"
+"Chyba: ILL_ILLOPN (Neplatný operand)"
+
+#: parted/ui.c:463
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+"\n"
+"Chyba: ILL_ILLADR (Neplatný režim adresácie)"
+
+#: parted/ui.c:468
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+"\n"
+"Chyba: ILL_ILLTRP (Neplatné zachytenie)"
+
+#: parted/ui.c:473
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+"\n"
+"Chyba: ILL_PRVOPC (Privilegovaný opkód)"
+
+#: parted/ui.c:478
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+"\n"
+"Chyba: ILL_PRVREG (Privilegovaný register)"
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+"\n"
+"Chyba: ILL_COPROC (Chyba koprocesora)"
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+"\n"
+"Chyba: ILL_BADSTK (Vnútorná chyba zásobníka)"
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+"\n"
+"Chyba: Vyskytol sa všeobecný signál SIGILL."
+
+#: parted/ui.c:891
+#, c-format
+msgid "invalid token: %s"
+msgstr "neplatný token: %s"
+
+#: parted/ui.c:1048
+msgid "Expecting a partition number."
+msgstr "Očakáva sa číslo oblasti."
+
+#: parted/ui.c:1057
+msgid "Partition doesn't exist."
+msgstr "Oblasť neexistuje."
+
+#: parted/ui.c:1077
+msgid "Expecting a file system type."
+msgstr "Očakáva sa typ systému súborov."
+
+#: parted/ui.c:1084
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Neznámy typ systému súborov „%s“."
+
+#: parted/ui.c:1105
+msgid "Expecting a disk label type."
+msgstr "Očakáva sa typ menovky disku."
+
+#: parted/ui.c:1203
+msgid "Can't create any more partitions."
+msgstr "Nie je možné vytvoriť ďalšie oblasti."
+
+#: parted/ui.c:1213
+msgid "Expecting a partition type."
+msgstr "Očakáva sa typ oblasti."
+
+#: parted/ui.c:1361
+msgid "on"
+msgstr "zap"
+
+#: parted/ui.c:1362
+msgid "off"
+msgstr "vyp"
+
+#: parted/ui.c:1379
+msgid "optimal"
+msgstr "optimálne"
+
+#: parted/ui.c:1380
+msgid "minimal"
+msgstr "minimálne"
+
+#: parted/ui.c:1513
+msgid "OPTIONs:"
+msgstr "VOĽBY:"
+
+#: parted/ui.c:1518
+msgid "COMMANDs:"
+msgstr "PRÍKAZy:"
+
+#: parted/ui.c:1521
+#, c-format
+msgid ""
+"\n"
+"Report bugs to %s\n"
+msgstr ""
+"\n"
+"Chyby hláste <%s>.\n"
+
+#: parted/ui.c:1528
+#, c-format
+msgid "Using %s\n"
+msgstr "Používa sa %s\n"
+
+#: parted/ui.c:1602
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr "Príkaz nedáva zmysel v neinteraktívnom režime.\n"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]\n"
+#~ "  or:  %s DEVICE MINOR\n"
+#~ msgstr ""
+#~ "Použitie: %s [VOĽBA]\n"
+#~ "  alebo:  %s ZARIADENIE MINOR\n"
+
+#~ msgid ""
+#~ "Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Vyčistiť nevyužité miesto na oblasti FAT (a nástroj na testovanie GNU "
+#~ "Parted).\n"
+#~ "\n"
+
+#~ msgid "      --help     display this help and exit\n"
+#~ msgstr "      --help     zobraziť tohto pomocníka a skončiť\n"
+
+#~ msgid "      --version  output version information and exit\n"
+#~ msgstr "      --version  vypísať informácie o verzii a skončiť\n"
+
+#~ msgid "too few arguments"
+#~ msgstr "príliš málo argumentov"
+
+#~ msgid "too many arguments"
+#~ msgstr "príliš veľa argumentov"
+
+#~ msgid "invalid minor device number: %s"
+#~ msgstr "neplatn0 vedľajšie číslo zariadenia: %s"
+
+#~ msgid "Could not detect file system."
+#~ msgstr "Nebolo možné detekovať systém súborov."
+
+#~ msgid "The file system is bigger than its volume!"
+#~ msgstr "Systém súborov je väčší než zväzok, na ktorom sa nachádza!"
+
+#~ msgid "Support for opening %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Podpora pro otváranie súborových systémov %s ešte nie je implementovaná."
+
+#~ msgid "Support for creating %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Podpora pre vytváranie súborových systémov %s ešte nie je implementovaná."
+
+#~ msgid "Support for checking %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Podpora pre kontrolu súborových systémov %s ešte nie je implementovaná."
+
+#~ msgid "raw block copying"
+#~ msgstr "priame kopírovánie blokov"
+
+#~ msgid "growing file system"
+#~ msgstr "zväčšovanie systému súborov"
+
+#~ msgid "Can't copy onto an overlapping partition."
+#~ msgstr "Nemožno kopírovať do prekrývajúcej sa oblasti."
+
+#~ msgid ""
+#~ "Direct support for copying file systems is not yet implemented for %s.  "
+#~ "However, support for resizing is implemented.  Therefore, the file system "
+#~ "can be copied if the new partition is at least as big as the old one.  "
+#~ "So, either shrink the partition you are trying to copy, or copy to a "
+#~ "bigger partition."
+#~ msgstr ""
+#~ "Priama podpora pre kopírovanie súborových systémov zatiaľ nie je "
+#~ "implementovaná pre %s. Ale je implementovaná podpora zmeny veľkosti. "
+#~ "Preto nie je možné skopírovať súborový systém ak je nová oblasť najmenej "
+#~ "taká veľká ako tá stará. Takže buď zmenšite oblasť, ktorú sa pokúšate "
+#~ "kopírovať alebo kopírujte na väčšiu oblasť."
+
+#~ msgid "Support for copying %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Podpora pre kopírovánie súborových systémov %s ešte nie je implementovaná."
+
+#~ msgid "Support for resizing %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Podpora pre zmenu veľikosti súborových systémov %s ešte nie je "
+#~ "implementovaná."
+
+#~ msgid "creating"
+#~ msgstr "vytvára sa"
+
+#~ msgid "The file system is in an invalid state.  Perhaps it is mounted?"
+#~ msgstr "Systém súborov je v neplatnom stave. Že by bol pripojený?"
+
+#~ msgid "The file system is in old (unresizeable) format."
+#~ msgstr "Súborový systém má starý formát (nie je možné meniť jeho veľkosť)."
+
+#~ msgid "Invalid free blocks count.  Run reiserfsck --check first."
+#~ msgstr "Neplatný počet voľných blokov.  Najprv spustite reiserfsck --check."
+
+#~ msgid "checking"
+#~ msgstr "kontroluje sa"
+
+#~ msgid "Reiserfs tree seems to be corrupted.  Run reiserfsck --check first."
+#~ msgstr ""
+#~ "Zdá sa, že Reiserfs strom je poškodený.  Najpv spustite reiserfsck --"
+#~ "check."
+
+#~ msgid ""
+#~ "The reiserfs file system passed a basic check.  For a more comprehensive "
+#~ "check, run reiserfsck --check."
+#~ msgstr ""
+#~ "Systém súborov reiserfs absolvoval základnú kontrolu. Pre podrobnejšiu "
+#~ "kontrolu použite reiserfsck --check."
+
+#~ msgid "Sorry, can't move the start of reiserfs partitions yet."
+#~ msgstr "Ľutujem, zatiaľ nie je možné presúvať začiatok oblastí reiserfs."
+
+#~ msgid "Couldn't reopen device abstraction layer for read/write."
+#~ msgstr ""
+#~ "Nebolo možné znovu otvoriť abstrakčnú vrstvu zariadenia pre čítanie/zápis."
+
+#~ msgid "shrinking"
+#~ msgstr "zmenšujem"
+
+#~ msgid "expanding"
+#~ msgstr "zväčšuje sa"
+
+#~ msgid "Couldn't create reiserfs device abstraction handler."
+#~ msgstr "Nebolo možné vytvoriť abstrakčnú vrstvu reiserfs zariadenia."
+
+#~ msgid "Device is too small for %lu blocks."
+#~ msgstr "Systém súborov je príliš malý na %lu blokov."
+
+#~ msgid "copying"
+#~ msgstr "kopíruje sa"
+
+#~ msgid "Couldn't resolve symbol %s.  Error: %s."
+#~ msgstr "Nebolo možné preložiť symbol %s.  Chyba: %s."
+
+#~ msgid "GNU Parted found an invalid libreiserfs library."
+#~ msgstr "GNU Parted našiel neplatnú knižnicu libreiserfs."
+
+#~ msgid ""
+#~ "GNU Parted has detected libreiserfs interface version mismatch.  Found %d-"
+#~ "%d, required %d. ReiserFS support will be disabled."
+#~ msgstr ""
+#~ "GNU Parted zistil nezhodu verzií rozhrania libreiserfs.  Nájdená %d-%d, "
+#~ "požadovaná %d. Podpora ReiserFS bude vypnutá."
+
+#~ msgid "Inconsistent group descriptors!"
+#~ msgstr "Nekonzistentné deskriptory skupín!"
+
+#~ msgid "File system full!"
+#~ msgstr "Súborový systém je plný!"
+
+#~ msgid "Invalid superblock.  Are you sure this is an ext2 file system?"
+#~ msgstr "Neplatný superblok. Ste si istý, že toto je systém súborov ext2?"
+
+#~ msgid "File system has errors!  You should run e2fsck."
+#~ msgstr "Systém súborov má chyby! Mali by ste spustiť e2fsck."
+
+#~ msgid ""
+#~ "File system was not cleanly unmounted!  You should run e2fsck.  Modifying "
+#~ "an unclean file system could cause severe corruption."
+#~ msgstr ""
+#~ "Systém súborov nebol čisto odpojený! Mali by ste spustiť e2fsck. Úpravy "
+#~ "nečistého systému súborov môžu spôsobiť jeho vážne poškodenie."
+
+#~ msgid ""
+#~ "File system has an incompatible feature enabled.  Compatible features are "
+#~ "has_journal, dir_index, filetype, sparse_super and large_file.  Use "
+#~ "tune2fs or debugfs to remove features."
+#~ msgstr ""
+#~ "Súborový systém má zapnutú nekompatibilnú vlastnosť. Kompatibilné "
+#~ "vlastnosti sú has_journal, dir_index, filetype, sparse_super a "
+#~ "large_file. Na odstránenie vlastností použite tune2fs alebo debugfs."
+
+#~ msgid "Error allocating buffer cache."
+#~ msgstr "Chyba pri alokácii buffer cache."
+
+#~ msgid ""
+#~ "Found an inode with a incorrect link count.  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "Bol nájdený inode s nesprávnym počtom odkazov. Radšej najskôr spustite "
+#~ "e2fsck!"
+
+#~ msgid "Not enough free inodes!"
+#~ msgstr "Nedostatok voľných inodov!"
+
+#~ msgid "File system is too full to remove a group!"
+#~ msgstr ""
+#~ "Systém súborov je príliš plný na to, aby bolo možné odstrániť skupinu!"
+
+#~ msgid "File system has too many allocated inodes to remove a group!"
+#~ msgstr ""
+#~ "Systém súborov má príliš mnoho alokovaných inodov na to, aby bolo možné "
+#~ "odstrániť skupinu!"
+
+#~ msgid "adding groups"
+#~ msgstr "pridávam skupiny"
+
+#~ msgid "Your file system is too full to resize it to %i blocks.  Sorry."
+#~ msgstr ""
+#~ "Váš systém súborov je príliš plný na to, aby bolo možné zmeniť jeho "
+#~ "veľkosť na %d blokov. Ľutujem."
+
+#~ msgid ""
+#~ "Your file system has too many occupied inodes to resize it to %i blocks.  "
+#~ "Sorry."
+#~ msgstr ""
+#~ "Váš systém súborov má príliš mnoho použitých inodov na to, aby bolo možné "
+#~ "zmeniť jeho veľkosť na %i blokov. Ľutujem."
+
+#~ msgid "File system was not cleanly unmounted!  You should run e2fsck."
+#~ msgstr "Systém súborov nebol správne odpojený! Mali by ste spustiť e2fsck."
+
+#~ msgid ""
+#~ "The file system has the 'dir_index' feature enabled.  Parted can only "
+#~ "resize the file system if it disables this feature.  You can enable it "
+#~ "later by running 'tune2fs -O dir_index DEVICE' and then 'e2fsck -fD "
+#~ "DEVICE'."
+#~ msgstr ""
+#~ "Systém súborov má zapnutú schopnosť „dir_index“. Parted môže zmeniť "
+#~ "veľkosť súborového systému, iba ak túto schopnosť zakáže. Môžete ju "
+#~ "neskôr povoliť spustením „tune2fs -O dir_index zariadenie“ a potom "
+#~ "„e2fsck -fD zariadenie“."
+
+#~ msgid ""
+#~ "A resize operation on this file system will use EXPERIMENTAL code\n"
+#~ "that MAY CORRUPT it (although no one has reported any such damage yet).\n"
+#~ "You should at least backup your data first, and run 'e2fsck -f' "
+#~ "afterwards."
+#~ msgstr ""
+#~ "Operácia zmeny veľkosti na tomto disku použije EXPERIMENTÁLNY kód,\n"
+#~ "ktorý ho MôŽE POŠKODIŤ (hoci zatiaľ nikto také poškodenie neoznámil).\n"
+#~ "Mali by ste predtým minimálne svoje dáta zálohovať a spustiť „e2fsck -f“\n"
+#~ "potom."
+
+#~ msgid "Cross-linked blocks found!  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "Boli nájdené bloky s krížovými odkazmi! Radšej najskôr spustite e2fsck!"
+
+#~ msgid "Block %i has no reference?  Weird."
+#~ msgstr "Blok %i nemá odkaz? Čudné."
+
+#~ msgid "Block %i shouldn't have been marked (%d, %d)!"
+#~ msgstr "Blok %i nemal byť označený (%d, %d)!"
+
+#~ msgid ""
+#~ "The ext2 file system passed a basic check.  For a more comprehensive "
+#~ "check, use the e2fsck program."
+#~ msgstr ""
+#~ "Súborový systém ext2 absolvoval základnú kontrolu. Pre podrobnejšiu "
+#~ "kontrolu použite program e2fsck."
+
+#~ msgid "Sorry, can't move the start of ext2 partitions yet!"
+#~ msgstr "Ľutujem, zatiaľ nie je možné presúvať začiatok oddielov ext2!"
+
+#~ msgid "Couldn't flush buffer cache!"
+#~ msgstr "Nemôžem vyprázdniť vyrovnávaciu pamäť!"
+
+#~ msgid "writing per-group metadata"
+#~ msgstr "zapisujem metadáta skupín"
+
+#~ msgid "File system too small for ext2."
+#~ msgstr "Systém súborov príliš malý pre ext2."
+
+#~ msgid ""
+#~ "You need %s of free disk space to shrink this partition to this size.  "
+#~ "Currently, only %s is free."
+#~ msgstr ""
+#~ "Na zmenšenie tejto oblasti na túto veľkosť potrebujete %s voľného miesta "
+#~ "(momentálne máte voľných iba %s)"
+
+#~ msgid ""
+#~ "Cluster start delta = %d, which is not a multiple of the cluster size %d."
+#~ msgstr ""
+#~ "Zmena začiatku klastra = %d, čo nie je násobok veľikosti klastra %d."
+
+#~ msgid "Partition too big/small for a %s file system."
+#~ msgstr "Oblasť je príliš veľká/malá pre súborový systém %s"
+
+#~ msgid ""
+#~ "The FATs don't match.  If you don't know what this means, then select "
+#~ "cancel, run scandisk on the file system, and then come back."
+#~ msgstr ""
+#~ "Tabuľky FAT si nezodpovedajú. Ak neviete, čo to znamená, zvoľte Zrušiť, "
+#~ "spustite na systéme súborov scandisk a potom sa vráťte."
+
+#~ msgid "There are no possible configurations for this FAT type."
+#~ msgstr "Pro tento typ FAT neexistuje možná konfigurácia."
+
+#~ msgid ""
+#~ "File system doesn't have expected sizes for Windows to like it.  Cluster "
+#~ "size is %dk (%dk expected); number of clusters is %d (%d expected); size "
+#~ "of FATs is %d sectors (%d expected)."
+#~ msgstr ""
+#~ "Systém súborov nemá očekávané veľkosti, aby ho Windows mali radi. Veľkosť "
+#~ "klastra je %dk (očakáva sa %dk); počet klastrov je %d (očakáva sa %d); "
+#~ "veľkosť FAT je %d sektorov (očakáva sa %d)."
+
+#~ msgid ""
+#~ "File system is reporting the free space as %d clusters, not %d clusters."
+#~ msgstr "Systém súborov oznamuje voľné miesto %d klastrov, nie %d klastrov."
+
+#~ msgid ""
+#~ "There's not enough room in the root directory for all of the files.  "
+#~ "Either cancel, or ignore to lose the files."
+#~ msgstr ""
+#~ "V koreňovom adresári nie je dostatok miesta na všetky súbory. Zvoľte buď "
+#~ "Zrušiť, alebo Ignorovať, čím sa tieto súbory stratia."
+
+#~ msgid "Error writing to the root directory."
+#~ msgstr "Chyba pri zapisování do koreňového adresára."
+
+#~ msgid ""
+#~ "If you leave your file system as FAT16, then you will have no problems."
+#~ msgstr ""
+#~ "Ak ponecháte svoj systém súborov vo formáte FAT16, nespôsobíte žiadné "
+#~ "nové problémy."
+
+#~ msgid ""
+#~ "If you convert to FAT16, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual)."
+#~ msgstr ""
+#~ "Ak prevediete oblasť na FAT16 a sú na nej nainštalované MS Windows, "
+#~ "musíte znova nainštalovať zavádzač systému MS Windows. Ak to chcete "
+#~ "urobiť, mali by ste si prečítať príručku Parted (alebo príručku svojej "
+#~ "distribúcie)."
+
+#~ msgid ""
+#~ "If you leave your file system as FAT32, then you will not introduce any "
+#~ "new problems."
+#~ msgstr ""
+#~ "Ak ponecháte svoj systém súborov vo formáte FAT32, nespôsobíte žiadné "
+#~ "nové problémy."
+
+#~ msgid ""
+#~ "If you convert to FAT32, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual).  Also, converting to FAT32 will make the file system unreadable "
+#~ "by MS DOS, MS Windows 95a, and MS Windows NT."
+#~ msgstr ""
+#~ "Ak prevediete oblasť na FAT32 a sú na nej nainštalované MS Windows, "
+#~ "musíte znova nainštalovať zavádzač systému MS Windows. Ak to chcete "
+#~ "urobiť, mali by ste si prečítať príručku Parted (alebo príručku svojej "
+#~ "distribúcie). Prevedenie na FAT32 tiež urobí systém súborov nečitateľný "
+#~ "pre MS-DOS, MS Windows 95a a MS Windows NT."
+
+#~ msgid "%s  %s  %s"
+#~ msgstr "%s  %s  %s"
+
+#~ msgid "Would you like to use FAT32?"
+#~ msgstr "Chcete použiť FAT32?"
+
+#~ msgid "%s  %s"
+#~ msgstr "%s  %s"
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT16."
+#~ msgstr ""
+#~ "Veľkosť systému súborov je možné túto hodnotu zmeniť iba prevodom na "
+#~ "FAT16."
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT32."
+#~ msgstr ""
+#~ "Veľkosť systému súborov je možné túto hodnotu zmeniť iba prevodom na "
+#~ "FAT32."
+
+#~ msgid ""
+#~ "GNU Parted cannot resize this partition to this size.  We're working on "
+#~ "it!"
+#~ msgstr ""
+#~ "GNU Parted nedokáže zmeniť veľkosť tejto oblasti na túto hodnotu. "
+#~ "Pracujeme na tom!"
+
+#~ msgid "Bad directory entry for %s: first cluster is the end of file marker."
+#~ msgstr ""
+#~ "Chybná položka adresára pre %s: prvý klaster je značka konca súboru."
+
+#~ msgid ""
+#~ "Bad FAT: unterminated chain for %s.  You should run dosfsck or scandisk."
+#~ msgstr ""
+#~ "Chybná FAT: neukončený reťazec pre %s. Mali by ste spustiť dosfsck alebo "
+#~ "scandisk."
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d outside file system in chain for %s.  You should run "
+#~ "dosfsck or scandisk."
+#~ msgstr ""
+#~ "Chybná FAT: klaster %d sa nachádza mimo systému súborov v reťezci pro %s. "
+#~ "Mali by ste spustiť dosfsck alebo scandisk."
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d is cross-linked for %s.  You should run dosfsck or "
+#~ "scandisk."
+#~ msgstr ""
+#~ "Chybná FAT: klaster %d má vymenené odkazy s %s. Mali by ste spustiť "
+#~ "dosfsck alebo scandisk."
+
+#~ msgid "%s is %dk, but it has %d clusters (%dk)."
+#~ msgstr "%s je %dk, ale má %d klastrov (%dk)."
+
+#~ msgid ""
+#~ "The file %s is marked as a system file.  This means moving it could cause "
+#~ "some programs to stop working."
+#~ msgstr ""
+#~ "súbor %s je označený ako systémový súbor. To znamená, že jeho presun môže "
+#~ "zpôsobiť, že niektoré programy prestanú fungovať."
+
+#~ msgid ""
+#~ "FAT %d media %x doesn't match the boot sector's media %x.  You should "
+#~ "probably run scandisk."
+#~ msgstr ""
+#~ "FAT %d media %x nezdpovedá media %x štartovacieho sektoru. Pravdepodobne "
+#~ "by ste mali spustiť scandisk."
+
+#~ msgid "fat_table_set: cluster %ld outside file system"
+#~ msgstr "fat_table_set: klaster %ld sa nachádza mimo súborového systému"
+
+#~ msgid "fat_table_get: cluster %ld outside file system"
+#~ msgstr "fat_table_get: klaster %ld sa nachádza mimo súborového systému"
+
+#~ msgid "fat_table_alloc_cluster: no free clusters"
+#~ msgstr "fat_table_alloc_cluster: nie sú voľné klastre"
+
+#~ msgid "Too many bad pages."
+#~ msgstr "Príliš veľa zlých stránok."
+
+#~ msgid "The file system contains errors."
+#~ msgstr "Súborový systém obsahuje chyby."
+
+#~ msgid "Bad blocks could not be read."
+#~ msgstr "Nebolo možné prečítať chybné bloky."
+
+#~ msgid ""
+#~ "Trying to register an extent starting at block 0x%X, but another one "
+#~ "already exists at this position.  You should check the file system!"
+#~ msgstr ""
+#~ "Prebieha pokus o registráciu rozsahu počínajúc blokom 0x%X, ale iný už na "
+#~ "tejto pozícii existuje. Mali by ste skontrolovať súborový systém!"
+
+#~ msgid ""
+#~ "Trying to move an extent from block Ox%X to block Ox%X, but another one "
+#~ "already exists at this position.  This should not happen!"
+#~ msgstr ""
+#~ "Prebieha pokus o presunutie rozsahu z bloku 0x%X na blok 0x%X, ale iný už "
+#~ "na tejto pozícii existuje. Toto by sa nemalo stať!"
+
+#~ msgid "Could not update the extent cache for HFS file with CNID %X."
+#~ msgstr ""
+#~ "Nebolo možné aktualizovať vyrovnávaciu pamäť rozsahov súboru HFS s CNID "
+#~ "%X."
+
+#~ msgid "Trying to read HFS file with CNID %X behind EOF."
+#~ msgstr "Pokus o čítanie súboru HFS s CNID %X za znakom konca súboru."
+
+#~ msgid "Could not find sector %lli of HFS file with CNID %X."
+#~ msgstr "Nebol nájdený sektor %lli súboru HFS s CNID %X."
+
+#~ msgid "Trying to write HFS file with CNID %X behind EOF."
+#~ msgstr "Pokus o zápis súboru HFS s CNID %X za znakom konca súboru."
+
+#~ msgid "Could not update the extent cache for HFS+ file with CNID %X."
+#~ msgstr ""
+#~ "Nebolo možné aktualizovať vyrovnávaciu pamäť rozsahov súboru HFS+ s CNID "
+#~ "%X."
+
+#~ msgid "Trying to read HFS+ file with CNID %X behind EOF."
+#~ msgstr "Pokus o čítanie súboru HFS+ s CNID %X za znakom konca súboru."
+
+#~ msgid "Could not find sector %lli of HFS+ file with CNID %X."
+#~ msgstr "Nebol nájdený sektor %lli súboru HFS+ s CNID %X."
+
+#~ msgid "Trying to write HFS+ file with CNID %X behind EOF."
+#~ msgstr "Pokus o zápis súboru HFS+ s CNID %X za znakom konca súboru."
+
+#~ msgid "Sorry, HFS cannot be resized that way yet."
+#~ msgstr "Prepáčte, veľkosť HFS nie je zatiaľ možné týmto spôsobom zmeniť."
+
+#~ msgid "Data relocation has failed."
+#~ msgstr "Relokácia údajov zlyhala."
+
+#~ msgid "Data relocation left some data in the end of the volume."
+#~ msgstr "Relokácia údajov zanechala na konci zväzku nejaké údaje."
+
+#~ msgid "writing HFS Master Directory Block"
+#~ msgstr "zapisuje sa HFS Master Directory Block"
+
+#~ msgid "No valid HFS[+X] signature has been found while opening."
+#~ msgstr "Počas otvárania nebol nájdený platný podpis HFS[+X]."
+
+#~ msgid "Version %d of HFS+ isn't supported."
+#~ msgstr "Verzia %d HFS+ nie je podporovaná."
+
+#~ msgid "Version %d of HFSX isn't supported."
+#~ msgstr "Verzia %d HFSX nie je podporovaná."
+
+#~ msgid "Data relocation left some data at the end of the volume."
+#~ msgstr "Relokácia údajov zanechala na konci zväzku nejaké údaje."
+
+#~ msgid "Error while writing the allocation file."
+#~ msgstr "Chyba pri zapisování alokačného súboru."
+
+#~ msgid "Error while writing the compatibility part of the allocation file."
+#~ msgstr "Chyba pri zápise do časti pre komaptibilitu alokačného súboru."
+
+#~ msgid "writing HFS+ Volume Header"
+#~ msgstr "zapisuje sa Hlavička zväzku HFS+"
+
+#~ msgid "An error occurred while looking for the mandatory bad blocks file."
+#~ msgstr "Vyskytla sa chyba pri hľadaní povinného súboru chybných blokov."
+
+#~ msgid ""
+#~ "It seems there is an error in the HFS wrapper: the bad blocks file "
+#~ "doesn't contain the embedded HFS+ volume."
+#~ msgstr ""
+#~ "Zdá sa, že sa vyskytla chyba v HFS wrapperi: súbor chybných blokov "
+#~ "neobsahuje vnorený zväzok HFS+."
+
+#~ msgid "Sorry, HFS+ cannot be resized that way yet."
+#~ msgstr "Prepáčte, veľkosť HFS+ nie je zatiaľ možné týmto spôsobom zmeniť."
+
+#~ msgid "shrinking embedded HFS+ volume"
+#~ msgstr "zmenšuje sa vnorený zväzok HFS+"
+
+#~ msgid "Resizing the HFS+ volume has failed."
+#~ msgstr "Zmena veľkosti HFS+ zlyhala."
+
+#~ msgid "shrinking HFS wrapper"
+#~ msgstr "zmenšuje sa HPS wrapper"
+
+#~ msgid "Updating the HFS wrapper has failed."
+#~ msgstr "Aktualizácia HFS wrappera zlyhala."
+
+#~ msgid ""
+#~ "This is not a real %s check.  This is going to extract special low level "
+#~ "files for debugging purposes."
+#~ msgstr ""
+#~ "Toto nie je skutočná kontrola %s. Týmto sa získajú špeciálne "
+#~ "nízkoúrovňové súbory pre účely ladenia."
+
+#~ msgid "Bad block list header checksum."
+#~ msgstr "Chybný kontrolný súčet zoznamu blokov."
+
+#~ msgid ""
+#~ "Invalid size of a transaction block while replaying the journal (%i "
+#~ "bytes)."
+#~ msgstr ""
+#~ "Neplatná veľkosť bloku transakcií počas prehrávania žurnálu (%i bajtov)."
+
+#~ msgid ""
+#~ "Journal stored outside of the volume are not supported.  Try to "
+#~ "desactivate the journal and run Parted again."
+#~ msgstr ""
+#~ "Žurnál uložený mimo zväzku nie je podporovaný. Pokúste sa deaktivovať "
+#~ "žurnál a znova spustiť Parted."
+
+#~ msgid "Journal offset or size is not multiple of the sector size."
+#~ msgstr "Ofset žurnálu nie je násobkom veľkosti sektora."
+
+#~ msgid "Incorrect magic values in the journal header."
+#~ msgstr "Neplatné magické hodnoty v hlavičke žurnálu."
+
+#~ msgid "Journal size mismatch between journal info block and journal header."
+#~ msgstr ""
+#~ "Veľkosť žurnálu sa nezhoduje v info bloku žurnálu a v hlavičke žurnálu."
+
+#~ msgid "Some header fields are not multiple of the sector size."
+#~ msgstr "Niektoré polia hlavičky nie sú násobkom veľkosti sektora."
+
+#~ msgid ""
+#~ "The sector size stored in the journal is not 512 bytes.  Parted only "
+#~ "supports 512 bytes length sectors."
+#~ msgstr ""
+#~ "Veľkosť sektora uložená v žurnále nie je 512 bajtov. Parted podporuje iba "
+#~ "sektory s dĺžkou 512 bajtov."
+
+#~ msgid "Bad journal checksum."
+#~ msgstr "Chybný kontrolný súčet žurnálu."
+
+#~ msgid ""
+#~ "The journal is not empty.  Parted must replay the transactions before "
+#~ "opening the file system.  This will modify the file system."
+#~ msgstr ""
+#~ "Žurnál nie je prázdny. Parted musí prehrať transakcie pred otvorením "
+#~ "súsborového systému. Týmto sa súborový systém zmení."
+
+#~ msgid ""
+#~ "The volume header or the master directory block has changed while "
+#~ "replaying the journal.  You should restart Parted."
+#~ msgstr ""
+#~ "Hlavička zväazku hlavného bloku adresárov sa v dôsledku prehrania žurnálu "
+#~ "zmenila. Mali by ste znova spustiť Parted."
+
+#~ msgid "An extent has not been relocated."
+#~ msgstr "Rozsah nebol premiestnený."
+
+#~ msgid ""
+#~ "A reference to an extent comes from a place it should not.  You should "
+#~ "check the file system!"
+#~ msgstr ""
+#~ "Odkaz na rozsah pochádza z miesta, odkiaľ by nemal. Mali by ste "
+#~ "skontrolovať súborový systém!"
+
+#~ msgid "This HFS volume has no catalog file.  This is very unusual!"
+#~ msgstr "Tento zväzok HFS nemá katalógový súbor. To je veľmi nezvyčajné!"
+
+#~ msgid ""
+#~ "This HFS volume has no extents overflow file.  This is quite unusual!"
+#~ msgstr ""
+#~ "Tento zväzok HFS nemá súbor pretečení rozsahov. To je dosť nezvyčajné!"
+
+#~ msgid ""
+#~ "The extents overflow file should not contain its own extents!  You should "
+#~ "check the file system."
+#~ msgstr ""
+#~ "Súbor pretečení rozsahov by nemal obsahovať svoje vlastné rozsahy! Mali "
+#~ "by ste skontrolovať súborový systém!"
+
+#~ msgid "Could not cache the file system in memory."
+#~ msgstr "Nebolo možné udržiavať kópiu systému súborov v pamäti."
+
+#~ msgid "Bad blocks list could not be loaded."
+#~ msgstr "Zoznam chybných blokov nebolo možné načítať."
+
+#~ msgid "An error occurred during extent relocation."
+#~ msgstr "Vyskytla sa chyba pri premiestňovaní rozsahov."
+
+#~ msgid "This HFS+ volume has no catalog file.  This is very unusual!"
+#~ msgstr "Tento zväzok HFS+ nemá katalógový súbor. To je veľmi nezvyčajné!"
+
+#~ msgid ""
+#~ "This HFS+ volume has no extents overflow file.  This is quite unusual!"
+#~ msgstr ""
+#~ "Tento zväzok HFS+ nemá súbor pretečení rozsahov. To je dosť nezvyčajné!"
+
+#~ msgid "The partition must have one of the following FS-TYPEs: "
+#~ msgstr "Oblasť musí mať jeden z nasledovných TYP-FS: "
+
+#~ msgid ""
+#~ "The existing file system will be destroyed and all data on the partition "
+#~ "will be lost. Do you want to continue?"
+#~ msgstr ""
+#~ "Existujúci súborový systém sa zničí a všetky dáta na oblasti sa stratia. "
+#~ "Chcete pokračovať?"
+
+#~ msgid ""
+#~ "WARNING: you are attempting to use %s to operate on (%s) a file system.\n"
+#~ "%s's file system manipulation code is not as robust as what you'll find "
+#~ "in\n"
+#~ "dedicated, file-system-specific packages like e2fsprogs.  We recommend\n"
+#~ "you use %s only to manipulate partition tables, whenever possible.\n"
+#~ "Support for performing most operations on most types of file systems\n"
+#~ "will be removed in an upcoming release.\n"
+#~ msgstr ""
+#~ "UPOZORNENIE: pokúšate sa použiť %s na pracovanie na (%s) súborovom "
+#~ "systéme.\n"
+#~ "manipulácia so súborovým systémom %s nie je taká robustná ako tá, ktorú "
+#~ "nájdete\n"
+#~ "v na to určených balíkoch špecifických pre súborový systém ako "
+#~ "e2fsprogs.\n"
+#~ "Odporúčame, aby ste používali %s iba na manipuláciu s tabuľkami oblastí\n"
+#~ "vždy, keď je to možné. Podpora vykonávania väčšiny operácií na väčšine\n"
+#~ "typov súborových systémov bude v nasledovnom vydaní odstránená.\n"
+
+#~ msgid "Source device?"
+#~ msgstr "Zdrojové zariadenie?"
+
+#~ msgid "Source partition number?"
+#~ msgstr "Číslo zdrojovej oblasti?"
+
+#~ msgid "Can't copy an extended partition."
+#~ msgstr "Nie je možné kopírovať rozšírené oblasti."
+
+#~ msgid "Destination partition number?"
+#~ msgstr "Číslo cieľovej oblasti?"
+
+#~ msgid ""
+#~ "An extended partition cannot hold a file system.  Did you want mkpart?"
+#~ msgstr "Rozšírené oblasti nemôžu mať súborový systém. Chceli ste mkpart?"
+
+#~ msgid "Can't move an extended partition."
+#~ msgstr "Nie je možné presunúť rozšírenú oblasť."
+
+#~ msgid "Can't move a partition onto itself.  Try using resize, perhaps?"
+#~ msgstr "Nie je možné presunúť oblasti na seba. Možno skúste použiť resize?"
+
+#~ msgid "Minor: %d\n"
+#~ msgstr "Drobné: %d\n"
+
+#~ msgid "Flags: %s\n"
+#~ msgstr "Prepínače: %s\n"
+
+#~ msgid "File System: %s\n"
+#~ msgstr "Systém súborov: %s\n"
+
+#~ msgid "Size:         "
+#~ msgstr "Veľkosť:         "
+
+#~ msgid "Minimum size: "
+#~ msgstr "Minimálna veľkosť: "
+
+#~ msgid "Maximum size: "
+#~ msgstr "Maximálna veľkosť: "
+
+#~ msgid "check"
+#~ msgstr "check"
+
+#~ msgid ""
+#~ "check NUMBER                             do a simple check on the file "
+#~ "system"
+#~ msgstr ""
+#~ "check ČÍSLO                              vykonať jednoduchú kontrolu "
+#~ "systému súborov"
+
+#~ msgid "cp"
+#~ msgstr "cp"
+
+#~ msgid ""
+#~ "cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   copy file system to another "
+#~ "partition"
+#~ msgstr ""
+#~ "cp [OD-ZARIADENIE] OD-ČÍSLO DO-ČÍSLO     skopírovať systém súborov na inú "
+#~ "oblasť"
+
+#~ msgid "mkfs"
+#~ msgstr "mkfs"
+
+#~ msgid ""
+#~ "mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on "
+#~ "partition NUMBER"
+#~ msgstr ""
+#~ "mkfs ČÍSLO TYP-FS                        vytvorí systém súborov FS-TYPE "
+#~ "na oblasti ČÍSLO"
+
+#~ msgid "mkpartfs"
+#~ msgstr "mkpartfs"
+
+#~ msgid ""
+#~ "mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file "
+#~ "system"
+#~ msgstr ""
+#~ "mkpartfs TYP-ODDIELU TYP-FS ZAČ KONIEC   vytvoriť oblasť se systémom "
+#~ "súborov"
+
+#~ msgid "move"
+#~ msgstr "move"
+
+#~ msgid "move NUMBER START END                    move partition NUMBER"
+#~ msgstr "move ČÍSLO ZAČIATOK KONIEC               presunúť oblasť ČÍSLO"
+
+#~ msgid "resize"
+#~ msgstr "resize"
+
+#~ msgid ""
+#~ "resize NUMBER START END                  resize partition NUMBER and its "
+#~ "file system"
+#~ msgstr ""
+#~ "rescue ČÍSLO ZAČIATOK KONIEC             zmeniť veľkosť oblasti ČÍSLO a "
+#~ "jej súborového systému"
+
+#~ msgid "This is not an ECKD disk!  This disk type is not supported!"
+#~ msgstr "Toto nie je ECKD disk! Tento typ disku nie je podporovaný!"
+
+#~ msgid ""
+#~ "Device %s has a logical sector size of %lld.  Not all parts of GNU Parted "
+#~ "support this at the moment, and the working code is HIGHLY EXPERIMENTAL.\n"
+#~ msgstr ""
+#~ "Zariadenie %s má veľkosť logického sektora %lld.  Nie všetky časti GNU "
+#~ "Parted to momentálne podporujú a pracovný kód je VYSOKO EXPERIMENTÁLNY.\n"
+
+#~ msgid ""
+#~ "WARNING: the kernel failed to re-read the partition table on %s (%s).  As "
+#~ "a result, it may not reflect all of your changes until after reboot."
+#~ msgstr ""
+#~ "UPOZORNENIE: jadru sa nepodarilo znova načítať tabuľku oblastí na %s "
+#~ "(%s). V dôsledku toho menusí reflektovať všetky vaše zmeny dovtedy, kým "
+#~ "nevykonáte reštart."
+
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: neprípustná voľba -- %c\n"
+
+#~ msgid ""
+#~ "Could not determine minimum io size for %s: %s.\n"
+#~ "Using the default size (%lld)."
+#~ msgstr ""
+#~ "Nebolo možné určiť minimálnu veľkosť io pre %s: %s.\n"
+#~ "Používa sa štandardná veľkosť sektora (%lld)."
+
+#~ msgid ""
+#~ "The kernel was unable to re-read the partition table on %s (%s).  This "
+#~ "means Linux won't know anything about the modifications you made until "
+#~ "you reboot.  You should reboot your computer before doing anything with "
+#~ "%s."
+#~ msgstr ""
+#~ "Jadro nemohlo znovu načítať tabuľku oddielov na %s (%s). To znamená, že "
+#~ "Linux nebude vedieť o zmenách, ktoré ste vykonali, pokým nereštartujete "
+#~ "systém - takže by ste nemali %s pripájať ani ho pred reštartom akokoľvek "
+#~ "používať."
+
+#~ msgid "Unable to determine the block size of this dasd"
+#~ msgstr "Nie je možné určiť veľkosť bloku tohto dasd."
+
+#~ msgid "File system has an incompatible feature enabled."
+#~ msgstr "Systém súborov má povolenou nekompatibilnú vlastnosť."
+
+#~ msgid "Unrecognised linux swap signature '%10s'."
+#~ msgstr "Nerozpoznaný podpis odkladacieho oddielu Linuxu „%10s“."
+
+#~ msgid ""
+#~ "%s read error\n"
+#~ "%s\n"
+#~ msgstr ""
+#~ "%s chyba čítania\n"
+#~ "%s\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s write error\n"
+#~ "%s\n"
+#~ msgstr "%s pri zápise na %s"
+
+#~ msgid ""
+#~ "%s IOCTL error\n"
+#~ "%s\n"
+#~ msgstr ""
+#~ "%s chyba IOCTL\n"
+#~ "%s\n"
+
+#~ msgid ""
+#~ "%s Config file syntax error\n"
+#~ "%s\n"
+#~ msgstr ""
+#~ "%s Chyba syntaxe konfiguračného súboru.\n"
+#~ "%s\n"
+
+#~ msgid ""
+#~ "%s space allocation\n"
+#~ "%s\n"
+#~ msgstr ""
+#~ "%s alokácia miesta\n"
+#~ "%s\n"
+
+#~ msgid ""
+#~ "%s Fatal error\n"
+#~ "%s\n"
+#~ msgstr ""
+#~ "%s Osudová chyba\n"
+#~ "%s\n"
+
+#~ msgid "File system?"
+#~ msgstr "Systém súborov?"
+
+#~ msgid "where necessary, prompts for user intervention"
+#~ msgstr "ak je treba, požiada o zásah používateľa"
+
+#, fuzzy
+#~ msgid ""
+#~ "Without arguments, print displays the entire partition table. With "
+#~ "'free'\n"
+#~ "argument, information about free space will be displayed otherwise if a\n"
+#~ "partition number is given, then more detailed information is displayed\n"
+#~ "about that partition. If the 'all' argument is passed instead, partition\n"
+#~ "information for all devices will be displayed.\n"
+#~ msgstr ""
+#~ "print bez argumentov zobrazí celú tabuľku oddielov. Je-li zadáno číslo "
+#~ "oddielu, zobrazí se o tomto oddielu podrobnejší informace.\n"
diff --git a/po/sl.gmo b/po/sl.gmo
new file mode 100644 (file)
index 0000000..620d1b7
Binary files /dev/null and b/po/sl.gmo differ
diff --git a/po/sl.po b/po/sl.po
new file mode 100644 (file)
index 0000000..e4fa232
--- /dev/null
+++ b/po/sl.po
@@ -0,0 +1,3333 @@
+# Slovenian translation for parted
+# Copyright (c) 2010 Free Software Foundation, Inc.
+# This file is distributed under the same license as the parted package.
+# Andrej Žnidaršič <andrej.znidarsic@gmail.com>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: parted 2.3\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2011-05-30 13:45+0200\n"
+"PO-Revision-Date: 2010-11-11 19:44+0000\n"
+"Last-Translator: Andrej Žnidaršič <andrej.znidarsic@gmail.com>\n"
+"Language-Team: Slovenian <translation-team-sl@lists.sourceforge.net>\n"
+"Language: sl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
+"%100==4 ? 3 : 0);\n"
+"X-Poedit-Language: Slovenian\n"
+"X-Poedit-Country: SLOVENIA\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "neveljaven argument %s za %s"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "dvoumen argument %s za %s"
+
+#: lib/argmatch.c:153
+#, c-format
+msgid "Valid arguments are:"
+msgstr "Veljavni argumenti so:"
+
+#: lib/closeout.c:112 libparted/labels/fdasd.c:107
+msgid "write error"
+msgstr "napaka pisanja"
+
+#: lib/error.c:181
+msgid "Unknown system error"
+msgstr "Neznana sistemska napaka"
+
+#: lib/getopt.c:548 lib/getopt.c:577
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
+msgstr "%s: možnost '%s' je dvoumna\n"
+
+#: lib/getopt.c:625 lib/getopt.c:629
+#, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s: možnost '--%s' ne dovoljuje argumenta\n"
+
+#: lib/getopt.c:638 lib/getopt.c:643
+#, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr "%s: možnost '%c%s' ne dovoljuje argumenta\n"
+
+#: lib/getopt.c:686 lib/getopt.c:705
+#, c-format
+msgid "%s: option '--%s' requires an argument\n"
+msgstr "%s: možnost '--%s' zahteva argument\n"
+
+#: lib/getopt.c:743 lib/getopt.c:746
+#, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s: neprepoznana možnost '--%s'\n"
+
+#: lib/getopt.c:754 lib/getopt.c:757
+#, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "%s: neprepoznana možnost '%c%s'\n"
+
+#: lib/getopt.c:806 lib/getopt.c:809
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: neveljavna možnost -- '%c'\n"
+
+#: lib/getopt.c:859 lib/getopt.c:876 lib/getopt.c:1084 lib/getopt.c:1102
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: možnost zahteva argument -- '%c'\n"
+
+#: lib/getopt.c:932 lib/getopt.c:948
+#, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s: možnost '-W %s' je dvoumna\n"
+
+#: lib/getopt.c:972 lib/getopt.c:990
+#, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr "%s: možnost '-W %s' ne dovoljuje argumenta\n"
+
+#: lib/getopt.c:1011 lib/getopt.c:1029
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: možnost '-W %s' zahteva argument\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:271
+msgid "`"
+msgstr "\""
+
+#: lib/quotearg.c:272
+msgid "'"
+msgstr "\""
+
+#: lib/regcomp.c:133
+msgid "Success"
+msgstr "Uspeh"
+
+#: lib/regcomp.c:136
+msgid "No match"
+msgstr "Ni zadetkov"
+
+#: lib/regcomp.c:139
+msgid "Invalid regular expression"
+msgstr "Neveljaven logični izraz"
+
+#: lib/regcomp.c:142
+msgid "Invalid collation character"
+msgstr "Neveljaven znak za primerjavo"
+
+#: lib/regcomp.c:145
+msgid "Invalid character class name"
+msgstr "Neveljavno ime razreda znakov"
+
+#: lib/regcomp.c:148
+msgid "Trailing backslash"
+msgstr "Zaključna obratna poševnica"
+
+#: lib/regcomp.c:151
+msgid "Invalid back reference"
+msgstr "Neveljaven povratni sklic"
+
+#: lib/regcomp.c:154
+msgid "Unmatched [ or [^"
+msgstr "Nezaključen [ ali [^"
+
+#: lib/regcomp.c:157
+msgid "Unmatched ( or \\("
+msgstr "Nezaključen ( ali \\("
+
+#: lib/regcomp.c:160
+msgid "Unmatched \\{"
+msgstr "Nezaključen \\{"
+
+#: lib/regcomp.c:163
+msgid "Invalid content of \\{\\}"
+msgstr "Neveljavna vsebina \\{\\}"
+
+#: lib/regcomp.c:166
+msgid "Invalid range end"
+msgstr "Neveljaven konec razpona"
+
+#: lib/regcomp.c:169
+msgid "Memory exhausted"
+msgstr "Pomnilnik je izčrpan"
+
+#: lib/regcomp.c:172
+msgid "Invalid preceding regular expression"
+msgstr "Neveljaven predhodni logični izraz"
+
+#: lib/regcomp.c:175
+msgid "Premature end of regular expression"
+msgstr "Prehiter konec logičnega izraza"
+
+#: lib/regcomp.c:178
+msgid "Regular expression too big"
+msgstr "Logični izraz je prevelik"
+
+#: lib/regcomp.c:181
+msgid "Unmatched ) or \\)"
+msgstr "Odvečni ) ali \\)"
+
+#: lib/regcomp.c:702
+msgid "No previous regular expression"
+msgstr "Manjkajoč predhodni logični izraz"
+
+#. TRANSLATORS: A regular expression testing for an affirmative answer
+#. (english: "yes").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^yesexpr='
+#: lib/rpmatch.c:147
+msgid "^[yY]"
+msgstr "^[jJdD]"
+
+#. TRANSLATORS: A regular expression testing for a negative answer
+#. (english: "no").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^noexpr='
+#: lib/rpmatch.c:160
+msgid "^[nN]"
+msgstr "^[nN]"
+
+#: lib/version-etc.c:74
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Paket je pripravil %s (%s)\n"
+
+#: lib/version-etc.c:77
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Paket je pripravil %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale.  Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:84
+msgid "(C)"
+msgstr "©"
+
+#: lib/version-etc.c:86
+msgid ""
+"\n"
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"\n"
+"GPLv3+: GNU GPL, različica 3 ali poznejša <http://www.gnu.org/licenses/gpl."
+"html>.\n"
+"To je prost program; lahko ga redistribuirate in/ali spreminjate.\n"
+"Za izdelek ni NOBENEGA JAMSTVA, do z zakonom dovoljene meje.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:102
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Avtor: %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:106
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Avtorja: %s in %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:110
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Avtorji: %s, %s in %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Avtorji: %s, %s, %s\n"
+"in %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Avtorji: %s, %s, %s,\n"
+"%s in %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:131
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Avtorji: %s, %s, %s,\n"
+"%s, %s in %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:139
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Avtorji: %s, %s, %s,\n"
+"%s, %s, %s in %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:147
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Avtorji: %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"in %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:156
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Avtorji: %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s in %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:167
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Avtorji: %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s in drugi.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package.  Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:245
+#, c-format
+msgid ""
+"\n"
+"Report bugs to: %s\n"
+msgstr ""
+"\n"
+"Hrošče prijavite na: %s\n"
+
+#: lib/version-etc.c:247
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "Hrošče programa %s prijavite na: %s\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Domača stran %s: <%s>\n"
+
+#: lib/version-etc.c:253
+#, c-format
+msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
+msgstr "Domača stran %s: <http://www.gnu.org/software/%s/>\n"
+
+#: lib/version-etc.c:256
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
+msgstr ""
+"Splošna pomoč za uporabo programov GNU: <http://www.gnu.org/gethelp/>\n"
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "pomnilnik je porabljen"
+
+#: lib/xstrtol-error.c:63
+#, c-format
+msgid "invalid %s%s argument `%s'"
+msgstr "neveljaven %s%s argument `%s'"
+
+#: lib/xstrtol-error.c:68
+#, c-format
+msgid "invalid suffix in %s%s argument `%s'"
+msgstr "neveljavna pripona v %s%s argument `%s'"
+
+#: lib/xstrtol-error.c:72
+#, c-format
+msgid "%s%s argument `%s' too large"
+msgstr "%s%s: argument `%s' je prevelik"
+
+#: libparted/arch/beos.c:245
+msgid "Disk Image"
+msgstr "Odtis diska"
+
+#: libparted/arch/beos.c:346 libparted/arch/gnu.c:277
+#: libparted/arch/linux.c:1545
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "Napaka med odpiranjem %s: %s"
+
+#: libparted/arch/beos.c:357 libparted/arch/gnu.c:287
+#: libparted/arch/linux.c:1556
+#, c-format
+msgid "Unable to open %s read-write (%s).  %s has been opened read-only."
+msgstr ""
+"%s ni mogoče odpreti za branje in pisanje (%s). %s je odprt samo za branje."
+
+#: libparted/arch/beos.c:419 libparted/arch/linux.c:1714
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s med iskanjem za branje na %s"
+
+#: libparted/arch/beos.c:452 libparted/arch/gnu.c:465 libparted/arch/gnu.c:564
+#: libparted/arch/gnu.c:692 libparted/arch/linux.c:1674
+#: libparted/arch/linux.c:1755
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s med branjem na %s"
+
+#: libparted/arch/beos.c:488 libparted/arch/gnu.c:525
+#: libparted/arch/linux.c:1831
+#, c-format
+msgid "Can't write to %s, because it is opened read-only."
+msgstr "Pisanje v %s ni mogoče, ker je odprt samo za branje."
+
+#: libparted/arch/beos.c:504 libparted/arch/linux.c:1856
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s med iskanjem za pisanje na %s"
+
+#: libparted/arch/beos.c:541 libparted/arch/gnu.c:601 libparted/arch/gnu.c:646
+#: libparted/arch/gnu.c:723 libparted/arch/linux.c:1804
+#: libparted/arch/linux.c:1898 libparted/arch/linux.c:1970
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s med pisanjem na %s"
+
+#: partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Poskusite `%s --help' za več podrobnosti.\n"
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr "Uporaba: %s [MOŽNOSTI] [NAPRAVE] ...\n"
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the operating system about partition table changes.\n"
+"\n"
+"  -d, --dry-run    do not actually inform the operating system\n"
+"  -s, --summary    print a summary of contents\n"
+"  -h, --help       display this help and exit\n"
+"  -v, --version    output version information and exit\n"
+msgstr ""
+"Operacijski sistem obvesti o spremembah v preglednici razdelkov.\n"
+"\n"
+"  -d, --dry-run    v resnici ne obvesti operacijskega sistema\n"
+"  -s, --summary    izpiše povzetek vsebine\n"
+"  -h, --help       prikaže to pomoč in konča\n"
+"  -v, --version    prikaže podrobnosti o različici in konča\n"
+
+#: partprobe/partprobe.c:150
+msgid ""
+"\n"
+"When no DEVICE is given, probe all partitions.\n"
+msgstr ""
+"\n"
+"Ko NAPRAVA ni podana, preišče vse razdelke.\n"
+
+#: partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Hrošče prijavite na <%s>.\n"
+
+#: libparted/arch/gnu.c:110
+#, c-format
+msgid "Unable to open %s."
+msgstr "Ni bilo mogoče odpreti %s."
+
+#: libparted/arch/gnu.c:130
+msgid "Unable to probe store."
+msgstr "Zaloge ni mogoče preveriti."
+
+#: libparted/arch/gnu.c:368
+msgid ""
+"The partition table cannot be re-read.  This means you need to reboot before "
+"mounting any modified partitions.  You also need to reinstall your boot "
+"loader before you reboot (which may require mounting modified partitions).  "
+"It is impossible do both things!  So you'll need to boot off a rescue disk, "
+"and reinstall your boot loader from the rescue disk.  Read section 4 of the "
+"Parted User documentation for more information."
+msgstr ""
+"Preglednice razdelkov ni bilo mogoče znova prebrati. To pomeni, da je "
+"potreben ponoven zagon pred priklapljanjem spremenjenih razdelkov. Pred "
+"ponovnim zagonom je treba tudi znova namestiti zagonski nalagalnik (kar "
+"morda zahteva priklapljanje spremenjenih razdelkov). Nemogoče je storiti "
+"oboje! Sistem boste morali zagnati z reševalnega diska in z njega znova "
+"namestiti zagonski nalagalnik. Za več podrobnosti si preberite poglavje 4 v "
+"uporabniškem priročniku Parted."
+
+#: libparted/arch/gnu.c:385
+#, c-format
+msgid ""
+"The partition table on %s cannot be re-read (%s).  This means the Hurd knows "
+"nothing about any modifications you made.  You should reboot your computer "
+"before doing anything with %s."
+msgstr ""
+"Preglednice razdelkov na %s ni mogoče znova prebrati (%s). To pomeni, da "
+"Hurd ne ve nič o vaših spremembah. Računalnik morate pred nadaljnjim delom "
+"znova zagnati z %s."
+
+#: libparted/arch/gnu.c:396 parted/parted.c:1967
+msgid ""
+"You should reinstall your boot loader before rebooting.  Read section 4 of "
+"the Parted User documentation for more information."
+msgstr ""
+"Pred ponovnim zagonom priporočamo ponovno namestitev zagonskega nalagalnika. "
+"Za več podrobnosti si preberite odstavek 4 v uporabniški dokumentaciji "
+"Parted."
+
+#: libparted/arch/gnu.c:788
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%s poizkus usklajevanja %s z diskom"
+
+#: libparted/arch/linux.c:520
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "Ni mogoče izvesti ukaza stat na napravi %s - %s."
+
+#: libparted/arch/linux.c:577
+#, c-format
+msgid "Unable to determine the dm type of %s."
+msgstr "Vrste dm za %s ni mogoče določiti."
+
+#: libparted/arch/linux.c:669
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+"Velikosti sektorja %s ni mogoče določiti: %s.\n"
+"Uporabljena bo privzeta velikost sektorja (%lld):"
+
+#: libparted/arch/linux.c:690
+#, c-format
+msgid ""
+"Could not determine physical sector size for %s.\n"
+"Using the logical sector size (%lld)."
+msgstr ""
+"Fizične velikosti sektorja za %s ni mogoče določiti.\n"
+"Uporabljena bo logična velikost sektorja (%lld)."
+
+#: libparted/arch/linux.c:746
+#, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "Velikosti %s ni mogoče določiti (%s)."
+
+#: libparted/arch/linux.c:832
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "Identitete naprave %s ni mogoče dobiti - %s"
+
+#: libparted/arch/linux.c:841
+msgid "Generic IDE"
+msgstr "Izvorni IDE"
+
+#: libparted/arch/linux.c:862
+#, c-format
+msgid ""
+"Device %s has multiple (%d) logical sectors per physical sector.\n"
+"GNU Parted supports this EXPERIMENTALLY for some special disk label/file "
+"system combinations, e.g. GPT and ext2/3.\n"
+"Please consult the web site for up-to-date information."
+msgstr ""
+"Naprava %s ima več (%d) logičnih sektorjev na vsakem fizičnem sektorju.\n"
+"GNU Parted PREIZKUSNO podpira nekatere kombinacije oznak diskov/datotečnih "
+"sistemov. Naprimer GPT in ext2/3.\n"
+"Za trenutne podatke preverite spletno stran."
+
+#: libparted/arch/linux.c:1039
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "Napaka med začenjanjem SCSI naprave %s - %s"
+
+#: libparted/arch/linux.c:1103
+#, fuzzy, c-format
+msgid ""
+"The device %s is so small that it cannot possibly store a file system or "
+"partition table.  Perhaps you selected the wrong device?"
+msgstr ""
+"Naprava %s ima ničelno dolžino, zato ne more shraniti datotečnega sistema "
+"ali preglednice razdelkov. Morda ste izbrali napačno napravo?"
+
+#: libparted/arch/linux.c:1216
+#, c-format
+msgid ""
+"Unable to determine geometry of file/device %s.  You should not use Parted "
+"unless you REALLY know what you're doing!"
+msgstr ""
+"Ni mogoče določiti geometrije datoteke/naprave %s. Parted uporabite le, če "
+"RESNIČNO veste kaj počnete!"
+
+#: libparted/arch/linux.c:1276
+msgid "Generic SD/MMC Storage Card"
+msgstr "Izvorna kartica shrambe SD/MMC"
+
+#: libparted/arch/linux.c:1329
+msgid "DAC960 RAID controller"
+msgstr "DAC960 RAID krmilnik"
+
+#: libparted/arch/linux.c:1334
+msgid "Promise SX8 SATA Device"
+msgstr "Naprava Promise SX8 SATA"
+
+#: libparted/arch/linux.c:1339
+msgid "ATA over Ethernet Device"
+msgstr "Naprava ATA preko Eternet"
+
+#: libparted/arch/linux.c:1345
+msgid "IBM S390 DASD drive"
+msgstr "Pogon IBM S390 DASD"
+
+#: libparted/arch/linux.c:1351
+msgid "IBM iSeries Virtual DASD"
+msgstr "IBM iSeries Virtual DASD"
+
+#: libparted/arch/linux.c:1356
+msgid "Compaq Smart Array"
+msgstr "Compaq Smart Array"
+
+#: libparted/arch/linux.c:1361
+msgid "ATARAID Controller"
+msgstr "Krmilnik ATARAID"
+
+#: libparted/arch/linux.c:1366
+msgid "I2O Controller"
+msgstr "Krmilnik I2O"
+
+#: libparted/arch/linux.c:1371
+msgid "User-Mode Linux UBD"
+msgstr "Uporabnišči način Linux UBD"
+
+#: libparted/arch/linux.c:1384
+#, c-format
+msgid "Linux device-mapper (%s)"
+msgstr "Linux preslikovalnik naprav (%s)"
+
+#: libparted/arch/linux.c:1395
+msgid "Xen Virtual Block Device"
+msgstr "Naprava Xen Virtual Block"
+
+#: libparted/arch/linux.c:1400
+msgid "Unknown"
+msgstr "Neznano"
+
+#: libparted/arch/linux.c:1409
+msgid "Virtio Block Device"
+msgstr "Naprava Virtio Block"
+
+#: libparted/arch/linux.c:1414
+msgid "Linux Software RAID Array"
+msgstr "Polje Linux Software RAID"
+
+#: libparted/arch/linux.c:1421
+msgid "ped_device_new()  Unsupported device type"
+msgstr "ped_device_new() Nepodprta vrsta naprave"
+
+#: libparted/arch/linux.c:1518 libparted/arch/linux.c:1590
+#, c-format
+msgid "Error fsyncing/closing %s: %s"
+msgstr "Napaka med opravilom fsyncing/zapiranjem %s: %s"
+
+#: libparted/arch/linux.c:1754
+#, c-format
+msgid "end of file while reading %s"
+msgstr "konec datoteke med branjem %s"
+
+#: libparted/arch/linux.c:2390
+#, c-format
+msgid ""
+"Error informing the kernel about modifications to partition %s -- %s.  This "
+"means Linux won't know about any changes you made to %s until you reboot -- "
+"so you shouldn't mount it or use it in any way before rebooting."
+msgstr ""
+"Napaka med obveščanjem jedra o spremembah razdelka %s -- %s. Linux ne bo "
+"imel podatkov o spremembah %s do ponovnega zagona --  razdelka ne "
+"priklapljajte ali uporabljajte do ponovnega zagona."
+
+#: libparted/arch/linux.c:2528
+#, c-format
+msgid "Unable to determine the size and length of %s."
+msgstr "Velikosti in dolžine %s ni mogoče določiti."
+
+#: libparted/arch/linux.c:2553
+#, c-format
+msgid "Failed to add partition %d (%s)"
+msgstr "Dodajanje razdelka %d ni uspelo (%s)"
+
+#: libparted/arch/linux.c:2580
+#, c-format
+msgid ""
+"Partition(s) %s on %s have been written, but we have been unable to inform "
+"the kernel of the change, probably because it/they are in use.  As a result, "
+"the old partition(s) will remain in use.  You should reboot now before "
+"making further changes."
+msgstr ""
+"Razdelek(ki) %s na %s je/so bil(i) zapisan(i), vendar jedra ni bilo mogoče "
+"obvestiti o spremembi, najverjetneje zato ker je/so v uporabi. Zaradi tega "
+"je/so stari razdelek(ki) še vedno v uporabi. Pred nadaljnjimi spremembami "
+"priporočamo ponoven zagon."
+
+#: libparted/arch/linux.c:2706
+#, c-format
+msgid ""
+"parted was unable to re-read the partition table on %s (%s).  This means "
+"Linux won't know anything about the modifications you made. "
+msgstr ""
+"Ponovno branje preglednice razdelkov na %s ni uspelo (%s). Linux ne ve "
+"ničesar o pravkar narejenih spremembah. "
+
+#: libparted/cs/geom.c:161
+#, c-format
+msgid "Can't have the end before the start! (start sector=%jd length=%jd)"
+msgstr "Konec ne more biti pred začetkom! (začetni sektor=%jd dolžina=%jd)"
+
+#: libparted/cs/geom.c:169
+msgid "Can't have a partition outside the disk!"
+msgstr "Razdelek izven diska ni mogoč!"
+
+#: libparted/cs/geom.c:384
+#, c-format
+msgid "Attempt to write sectors %ld-%ld outside of partition on %s."
+msgstr "Poskus zapisovanja sektorjev %ld-%ld zunaj razdelka na %s."
+
+#: libparted/cs/geom.c:424
+msgid "checking for bad blocks"
+msgstr "preverjanje slabih blokov"
+
+#: libparted/debug.c:96
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr "Ukaz backtrace ima %d klicev na skladu:\n"
+
+#: libparted/debug.c:109
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr "Trditev (%s) na %s:%d v funkciji %s() ni uspela."
+
+#: libparted/disk.c:192
+#, c-format
+msgid "%s: unrecognised disk label"
+msgstr "%s: neprepoznana oznaka diska"
+
+#: libparted/disk.c:484
+#, c-format
+msgid ""
+"This libparted doesn't have write support for %s.  Perhaps it was compiled "
+"read-only."
+msgstr ""
+"libparted ne podpira zapisovanja na %s. Morda je bil preveden samo za branje."
+
+#: libparted/disk.c:629
+#, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "Razdelek %d je %s, vendar je datotečni sistem %s."
+
+#: libparted/disk.c:838
+msgid "cylinder_alignment"
+msgstr "poravnava_cilindrov"
+
+#: libparted/disk.c:844
+#, c-format
+msgid "Unknown disk flag, %d."
+msgstr "Neznana zastavica diska, %d."
+
+#: libparted/disk.c:1283
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "oznake diska %s ne podpirajo razširjenih razdelkov."
+
+#: libparted/disk.c:1858
+#, c-format
+msgid "%s disk labels don't support logical or extended partitions."
+msgstr "oznake diska %s ne podpirajo logičnih ali razširjenih razdelkov."
+
+#: libparted/disk.c:1871
+msgid "Too many primary partitions."
+msgstr "Preveč osnovnih razdelkov."
+
+#: libparted/disk.c:1880
+#, c-format
+msgid ""
+"Can't add a logical partition to %s, because there is no extended partition."
+msgstr ""
+"Dodajanje logičnega razdelka na %s ni mogoče, ker razširjeni razdelek ne "
+"obstaja."
+
+#: libparted/disk.c:1904
+#, c-format
+msgid "Can't have more than one extended partition on %s."
+msgstr "Ni mogoče imeti več kot enega razširjenega razdelka na %s."
+
+#: libparted/disk.c:1914
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr "Logični razdelek ne sme biti zunaj razširjenega razdelka."
+
+#: libparted/disk.c:1939
+#, c-format
+msgid "Can't have a logical partition outside of the extended partition on %s."
+msgstr "Logični razdelek ne sme biti zunaj razširjenega razdelka na %s."
+
+#: libparted/disk.c:1949 libparted/disk.c:2008 libparted/disk.c:2186
+msgid "Can't have overlapping partitions."
+msgstr "Razdelki se ne smejo prekrivati."
+
+#: libparted/disk.c:1957
+msgid "Can't have a primary partition inside an extended partition."
+msgstr "Osnovni razdelek ne more biti znotraj razširjenega razdelka."
+
+#: libparted/disk.c:2387
+msgid "metadata"
+msgstr "metapodatki"
+
+#: libparted/disk.c:2389
+msgid "free"
+msgstr "prosto"
+
+#: libparted/disk.c:2391 parted/ui.c:1194 parted/ui.c:1222
+msgid "extended"
+msgstr "razširjen"
+
+#: libparted/disk.c:2393 parted/ui.c:1198 parted/ui.c:1226
+msgid "logical"
+msgstr "logični"
+
+#: libparted/disk.c:2395 parted/ui.c:1190 parted/ui.c:1218
+msgid "primary"
+msgstr "osnovni"
+
+#: libparted/disk.c:2411
+msgid "boot"
+msgstr "zagon"
+
+#: libparted/disk.c:2413
+msgid "bios_grub"
+msgstr "bios_grub"
+
+#: libparted/disk.c:2415
+msgid "root"
+msgstr "korenski"
+
+#: libparted/disk.c:2417
+msgid "swap"
+msgstr "izmenjalni razdelek"
+
+#: libparted/disk.c:2419
+msgid "hidden"
+msgstr "skrito"
+
+#: libparted/disk.c:2421
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2423
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2425
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2427
+msgid "hp-service"
+msgstr "hp-service"
+
+#: libparted/disk.c:2429
+msgid "palo"
+msgstr "palo"
+
+#: libparted/disk.c:2431
+msgid "prep"
+msgstr "prep"
+
+#: libparted/disk.c:2433
+msgid "msftres"
+msgstr "msftres"
+
+#: libparted/disk.c:2435
+msgid "atvrecv"
+msgstr "atvrecv"
+
+#: libparted/disk.c:2437
+msgid "diag"
+msgstr "diag"
+
+#: libparted/disk.c:2439
+msgid "legacy_boot"
+msgstr ""
+
+#: libparted/disk.c:2445
+#, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Neznana zastavica razdelka, %d."
+
+#: libparted/exception.c:77
+msgid "Information"
+msgstr "Podrobnosti"
+
+#: libparted/exception.c:78
+msgid "Warning"
+msgstr "Opozorilo"
+
+#: libparted/exception.c:79
+msgid "Error"
+msgstr "Napaka"
+
+#: libparted/exception.c:80
+msgid "Fatal"
+msgstr "Usodno"
+
+#: libparted/exception.c:81
+msgid "Bug"
+msgstr "Hrošč"
+
+#: libparted/exception.c:82
+msgid "No Implementation"
+msgstr "Ni podprto"
+
+#: libparted/exception.c:86
+msgid "Fix"
+msgstr "Popravi"
+
+#: libparted/exception.c:87
+msgid "Yes"
+msgstr "Da"
+
+#: libparted/exception.c:88
+msgid "No"
+msgstr "Ne"
+
+#: libparted/exception.c:89
+msgid "OK"
+msgstr "V redu"
+
+#: libparted/exception.c:90
+msgid "Retry"
+msgstr "Poskusi znova"
+
+#: libparted/exception.c:91
+msgid "Ignore"
+msgstr "Prezri"
+
+#: libparted/exception.c:92
+msgid "Cancel"
+msgstr "Prekliči"
+
+#: libparted/exception.c:132
+#, fuzzy, c-format
+msgid ""
+"A bug has been detected in GNU Parted.  Refer to the web site of parted "
+"http://www.gnu.org/software/parted/parted.html for more information of what "
+"could be useful for bug submitting!  Please email a bug report to %s "
+"containing at least the version (%s) and the following message:  "
+msgstr ""
+"V GNU Parted je bil zaznan hrošč.  Na spletni strani parted http://www.gnu."
+"org/software/parted/parted.html lahko pridobite več podrobnosti o tem kaj bi "
+"bilo uporabno za pošiljanje hrošča!  Prosimo, pošljite poročilo o hrošču na "
+"bug-parted@gnu.org vsaj s podatki o različici (%s) in naslednjim "
+"sporočilom:  "
+
+#: libparted/labels/aix.c:103
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr "Podpora za branje diskov oznake AIX še ni dodana."
+
+#: libparted/labels/aix.c:114
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr "Podpora za pisanje diskov oznake AIX še ni dodana."
+
+#: libparted/labels/aix.c:127
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr "Podpora za dodajanje razdelkov diskom oznake AIX še ni dodana."
+
+#: libparted/labels/aix.c:137
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr "Podpora za podvajanje razdelkov diskov oznake AIX še ni dodana."
+
+#: libparted/labels/aix.c:155
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr ""
+"Podpora za nastavljanje vrste sistema razdelkov v  diskih oznake AIX še ni "
+"dodana."
+
+#: libparted/labels/aix.c:165
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr "Podpora za nastavljanje zastavic diskov oznake AIX še ni dodana."
+
+#: libparted/labels/bsd.c:571 libparted/labels/dasd.c:833
+#: libparted/labels/dos.c:2176 libparted/labels/dvh.c:787
+#: libparted/labels/gpt.c:1782 libparted/labels/loop.c:247
+#: libparted/labels/mac.c:1426 libparted/labels/pc98.c:748
+#: libparted/labels/rdb.c:1052 libparted/labels/sun.c:780
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "Vsem omejitvam razdelka ni mogoče zadostiti."
+
+#: libparted/labels/bsd.c:596
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "Dodeljevanje reže bsd disklabel ni uspelo."
+
+#: libparted/labels/dasd.c:859
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "Dodeljevanje reže dasd disklabel ni uspelo."
+
+#: libparted/labels/dos.c:966
+#, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr "Neveljavna preglednica razdelka na %s -- napačen podpis %x."
+
+#: libparted/labels/dos.c:994
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "Neveljavna preglednica razdelka - rekurzivni razdelek na %s."
+
+#: libparted/labels/dos.c:1504
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr "Razširjeni razdelki ne morejo biti skriti na msdos oznakah diska."
+
+#: libparted/labels/dos.c:2158
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+"Parted ne more spremeniti velikosti razdelka, ki ga upravlja Windows Dynamic "
+"Disk."
+
+#: libparted/labels/dvh.c:200
+#, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr "%s ne vsebuje razširjenega razdelka (razdelek glave nosilca)."
+
+#: libparted/labels/dvh.c:326
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr "Nadzorna vsota je napačna, kar kaže na okvaro v preglednici razdelkov."
+
+#: libparted/labels/dvh.c:631
+msgid "Only primary partitions can be root partitions."
+msgstr "Samo osnovni razdelki so lahko korenski razdeleki."
+
+#: libparted/labels/dvh.c:645
+msgid "Only primary partitions can be swap partitions."
+msgstr "Samo osnovni razdelki so lahko izmenjevalni razdelki."
+
+#: libparted/labels/dvh.c:659
+msgid "Only logical partitions can be a boot file."
+msgstr "Samo logični razdelki so lahko zagonske datoteke."
+
+#: libparted/labels/dvh.c:736
+#, c-format
+msgid ""
+"failed to set dvh partition name to %s:\n"
+"Only logical partitions (boot files) have a name."
+msgstr ""
+"nastavljanje imena razdelka dvh na %s ni uspelo:\n"
+"Samo logični razdelki (zagonske datoteke) imajo ime."
+
+#: libparted/labels/dvh.c:829
+msgid "Too many primary partitions"
+msgstr "Preveč osnovnih razdelkov"
+
+#: libparted/labels/fdasd.c:98
+msgid "open error"
+msgstr "napaka med odpiranjem"
+
+#: libparted/labels/fdasd.c:101
+msgid "seek error"
+msgstr "napaka med iskanjem"
+
+#: libparted/labels/fdasd.c:104
+msgid "read error"
+msgstr "napaka med branjem"
+
+#: libparted/labels/fdasd.c:110
+msgid "ioctl() error"
+msgstr "napaka ioctl()"
+
+#: libparted/labels/fdasd.c:114
+msgid "API version mismatch"
+msgstr "Neujemanje različice API"
+
+#: libparted/labels/fdasd.c:118
+msgid "Unsupported disk type"
+msgstr "Nepodprta vrsta diska"
+
+#: libparted/labels/fdasd.c:122
+msgid "Unsupported disk format"
+msgstr "Nepodprta oblika diska"
+
+#: libparted/labels/fdasd.c:126
+msgid "Disk is in use"
+msgstr "Disk je v uporabi"
+
+#: libparted/labels/fdasd.c:130
+msgid "Syntax error in config file"
+msgstr "Skladenjska napaka v nastevitveni datoteki"
+
+#: libparted/labels/fdasd.c:134
+msgid "Volume label is corrupted"
+msgstr "Oznaka nosilca je pokvarjena"
+
+#: libparted/labels/fdasd.c:138
+msgid "A data set name is corrupted"
+msgstr "Ime množice podatkov je pokvarjeno"
+
+#: libparted/labels/fdasd.c:142
+msgid "Memory allocation failed"
+msgstr "Dodeljevanje pomnilnika ni uspelo"
+
+#: libparted/labels/fdasd.c:146
+msgid "Device verification failed"
+msgstr "Preverjanje naprave ni uspelo"
+
+#: libparted/labels/fdasd.c:147
+msgid "The specified device is not a valid DASD device"
+msgstr "Določena naprava ni veljavna naprava DASD"
+
+#: libparted/labels/fdasd.c:150 libparted/labels/vtoc.c:179
+msgid "Fatal error"
+msgstr "Usodna napaka"
+
+#: libparted/labels/fdasd.c:226
+msgid "No room for volume label."
+msgstr "Ni prostora za oznako nosilca."
+
+#: libparted/labels/fdasd.c:234
+msgid "No room for partition info."
+msgstr "Ni prostora za podrobnosti o razdelku."
+
+#: libparted/labels/fdasd.c:709
+msgid "Invalid VTOC."
+msgstr "Neveljaven VTOC."
+
+#: libparted/labels/fdasd.c:766
+msgid "Could not retrieve API version."
+msgstr "Različice API ni mogoče pridobiti."
+
+#: libparted/labels/fdasd.c:769
+#, c-format
+msgid ""
+"The current API version '%d' doesn't match dasd driver API version '%d'!"
+msgstr ""
+"Trenuten API različice '%d'  se ne ujema z API gonilnika dasd različica '%d'!"
+
+#: libparted/labels/fdasd.c:806
+msgid "Could not retrieve disk geometry information."
+msgstr "Podrobnosti o geometriji diska ni mogoče pridobiti."
+
+#: libparted/labels/fdasd.c:810
+msgid "Could not retrieve blocksize information."
+msgstr "Podrobnosti o velikosti bloka ni mogoče pridobiti."
+
+#: libparted/labels/fdasd.c:815
+msgid "Could not retrieve disk information."
+msgstr "Podrobnosti o disku ni mogoče pridobiti."
+
+#: libparted/labels/gpt.c:493
+#, c-format
+msgid ""
+"%s contains GPT signatures, indicating that it has a GPT table.  However, it "
+"does not have a valid fake msdos partition table, as it should.  Perhaps it "
+"was corrupted -- possibly by a program that doesn't understand GPT partition "
+"tables.  Or perhaps you deleted the GPT table, and are now using an msdos "
+"partition table.  Is this a GPT partition table?"
+msgstr ""
+"%s vsebuje podpise GPT, kar nakazuje da ima GPT preglednico. Vendar ne "
+"vsebuje lažne msdos preglednice razdelkov, kot bi jo moral. Morda je prišlo "
+"do okvare -- najverjetneje s strani programa, ki ne razume GPT preglednic "
+"razdelkov. Morda ste izbrisali GPT preglednico in sedaj uporabljate msdos "
+"preglednico razdelkov. Ali je to GPT preglednica razdelkov?"
+
+#: libparted/labels/gpt.c:693
+#, fuzzy, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise.  Please report this!"
+msgstr ""
+"Oblika GTP preglednice razdelkov je različica %x, kar je novejše kot lahko "
+"Parted prepozna. Sporočite nam! bug-parted@gnu.org"
+
+#: libparted/labels/gpt.c:740
+#, c-format
+msgid ""
+"Not all of the space available to %s appears to be used, you can fix the GPT "
+"to use all of the space (an extra %llu blocks) or continue with the current "
+"setting? "
+msgstr ""
+"Ves prostor, ki je na voljo %s, ni v uporabi, GTP lahko popravite, da se bo "
+"uporabljal ves prostor (dodatnih %llu blokov) ali pa nadaljujte s trenutnimi "
+"nastavitvami. "
+
+#: libparted/labels/gpt.c:952
+msgid ""
+"The backup GPT table is not at the end of the disk, as it should be.  This "
+"might mean that another operating system believes the disk is smaller.  Fix, "
+"by moving the backup to the end (and removing the old backup)?"
+msgstr ""
+"Varnostna kopija preglednice GPT ni na koncu diska, kot bi morala biti. To "
+"najverjetneje pomeni, da drug operacijski sistem verjame, da je velikost "
+"diska manjša. Ali želite to popraviti s premikom varnostne kopije na konec "
+"diska (in izbrisom stare varnostne kopije)?"
+
+#: libparted/labels/gpt.c:976
+msgid ""
+"Both the primary and backup GPT tables are corrupt.  Try making a fresh "
+"table, and using Parted's rescue feature to recover partitions."
+msgstr ""
+"Tako osnovna kot varnostna kopija preglednice GPT sta pokvarjeni. Poskusite "
+"narediti svežo preglednico in z reševalno možnostjo programa Parted obnoviti "
+"razdelke."
+
+#: libparted/labels/gpt.c:987
+msgid ""
+"The backup GPT table is corrupt, but the primary appears OK, so that will be "
+"used."
+msgstr ""
+"Varnostna kopija preglednice GPT je pokvarjena, vendar je osnovna videti v "
+"redu, zato bo uporabljena."
+
+#: libparted/labels/gpt.c:999
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr ""
+"Osnovna preglednica GPT je pokvarjena, vendar je varnostna kopija v redu, "
+"zato bo uporabljena."
+
+#: libparted/labels/gpt.c:1023
+msgid "primary partition table array CRC mismatch"
+msgstr "polje osnovne preglednice razdelka ima nujemajoč CRC"
+
+#: libparted/labels/mac.c:184
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Neveljaven podpis %x na oznaki diska Mac."
+
+#: libparted/labels/mac.c:231
+msgid "Partition map has no partition map entry!"
+msgstr "Preslikava razdelkov ne vsebuje vnosov preslikave razdelkov!"
+
+#: libparted/labels/mac.c:279
+#, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr "%s je premajhen za oznako diska Mac!"
+
+#: libparted/labels/mac.c:508
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "Razdelek %d ima neveljaven podpis %x."
+
+#: libparted/labels/mac.c:526
+#, c-format
+msgid "Partition %d has an invalid length of 0 bytes!"
+msgstr "Razdelek %d ima neveljavno dolžino 0 bajtov!"
+
+#: libparted/labels/mac.c:557
+msgid "The data region doesn't start at the start of the partition."
+msgstr "Področje podatkov se ne začne na začetku razdelka."
+
+#: libparted/labels/mac.c:574
+msgid "The boot region doesn't start at the start of the partition."
+msgstr "Zagonsko področje se ne začne na začetku razdelka."
+
+#: libparted/labels/mac.c:588
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr "Zagonsko področje razdelka ne zaseda celotnega razdelka."
+
+#: libparted/labels/mac.c:599
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr "Podatkovno področje razdelka ne zaseda celotnega razdelka."
+
+#: libparted/labels/mac.c:652
+#, c-format
+msgid ""
+"Weird block size on device descriptor: %d bytes is not divisible by 512."
+msgstr ""
+"Čudna velikost bloka na opisovalniku naprave: %d bajtov ni deljivih z 512."
+
+#: libparted/labels/mac.c:665
+#, c-format
+msgid ""
+"The driver descriptor says the physical block size is %d bytes, but Linux "
+"says it is %d bytes."
+msgstr ""
+"Opisovalnik naprave pravi, da je fizični blok velik %d bajtov, vendar Linux "
+"pravi, da je %d bajtov."
+
+#: libparted/labels/mac.c:719
+msgid "No valid partition map found."
+msgstr "Preslikave razdelka ni mogoče najti."
+
+#: libparted/labels/mac.c:780
+#, c-format
+msgid ""
+"Conflicting partition map entry sizes!  Entry 1 says it is %d, but entry %d "
+"says it is %d!"
+msgstr ""
+"Sporne velikosti vnosov preslikave razdelka! Vnos 1 pravi %d, vendar vnos %d "
+"pravi %d!"
+
+#: libparted/labels/mac.c:811
+msgid "Weird!  There are 2 partitions map entries!"
+msgstr "Čudno! Obstajata 2 vnosa preslikave particij!"
+
+#: libparted/labels/mac.c:1357
+msgid ""
+"Changing the name of a root or swap partition will prevent Linux from "
+"recognising it as such."
+msgstr ""
+"Spreminjanje imena korenskega ali izmenjevalnega razdelka bo sistemu Linux "
+"preprečilo prepoznavo the razdelkov."
+
+#: libparted/labels/mac.c:1461
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr "Dodatnega razdelka ni mogoče dodati - načrt razdelkov je premajhen!"
+
+#: libparted/labels/pc98.c:331
+#, c-format
+msgid "Invalid partition table on %s."
+msgstr "Neveljavna preglednica razdelkov na %s."
+
+#: libparted/labels/pc98.c:384 libparted/labels/pc98.c:462
+#, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries.  This is still "
+"unsupported."
+msgstr "Razdelek %d ni poravnan z mejo cilindrov. To ni podprto."
+
+#: libparted/labels/pc98.c:780
+msgid "Can't add another partition."
+msgstr "Dodatnega razdelka ni mogoče dodati."
+
+#: libparted/labels/pt-tools.c:125
+#, c-format
+msgid ""
+"partition length of %jd sectors exceeds the %s-partition-table-imposed "
+"maximum of %jd"
+msgstr ""
+"razdelek dolžine %jd sektorjev presega največjo vrednosti določeno v %s "
+"tebeli razdelkov %jd"
+
+#: libparted/labels/pt-tools.c:138
+#, c-format
+msgid ""
+"starting sector number, %jd exceeds the %s-partition-table-imposed maximum "
+"of %jd"
+msgstr ""
+"številka začetnega sektorja %jd presega največjo vrednosti določeno v %s "
+"tebeli razdelkov %jd"
+
+#: libparted/labels/rdb.c:169
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr "%s: Slaba nadzorna vsota na bloku %llu vrste %s."
+
+#: libparted/labels/rdb.c:484
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr "%s: Bloka rdb ni mogoče najti, kar se ne sme zgoditi."
+
+#: libparted/labels/rdb.c:573
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr "%s: Na bloku %d je bila zaznana zanka."
+
+#: libparted/labels/rdb.c:592
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr "%s: Zdi se, da je seznam %s na bloku %s slab."
+
+#: libparted/labels/rdb.c:691
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr "%s: Naštevanje slabih blokov ni uspelo."
+
+#: libparted/labels/rdb.c:699
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr "%s : Naštevanje blokov razdelkov ni uspelo."
+
+#: libparted/labels/rdb.c:707
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr "%s: Izpis blokov sistemskih datotek ni uspel."
+
+#: libparted/labels/rdb.c:715
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr "%s: Izpis zagonskih blokov ni uspel."
+
+#: libparted/labels/rdb.c:742
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr "Zapisovanje bloka razdelka na %d ni uspelo."
+
+#: libparted/labels/rdb.c:1080
+msgid "Unable to allocate a partition number."
+msgstr "Dodeljevanje številke razdelka ni uspelo."
+
+#: libparted/labels/sun.c:161
+msgid "Corrupted Sun disk label detected."
+msgstr "Zaznana je bila pokvarjena oznaka diska Sun"
+
+#: libparted/labels/sun.c:276
+#, c-format
+msgid ""
+"The disk CHS geometry (%d,%d,%d) reported by the operating system does not "
+"match the geometry stored on the disk label (%d,%d,%d)."
+msgstr ""
+"CHS geometrija diska (%d,%d,%d) sporočena iz operacijskega sistema se ne "
+"ujema z geometrijo shranjeno v oznaki diska (%d,%d,%d)."
+
+#: libparted/labels/sun.c:298
+#, c-format
+msgid "The disk label describes a disk bigger than %s."
+msgstr "Oznaka diska opisuje disk večji kot %s."
+
+#: libparted/labels/sun.c:473
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr "Disk ima %d cilindrov, kar je več kot največja vrednost 65536."
+
+#: libparted/labels/sun.c:812
+msgid ""
+"The Whole Disk partition is the only available one left.  Generally, it is "
+"not a good idea to overwrite this partition with a real one.  Solaris may "
+"not be able to boot without it, and SILO (the sparc boot loader) appreciates "
+"it as well."
+msgstr ""
+"Na voljo je samo še razdelek Whole Disk. V splošnem prepis tega razdelka ni "
+"dobra zamisel. Solaris se brez tega razdelka morda ne bo mogel zagnati in "
+"tudi SILO (zagonski nalagalnik sparc) uporablja ta razdelek."
+
+#: libparted/labels/sun.c:827
+msgid "Sun disk label is full."
+msgstr "Oznaka diska Sun je polna."
+
+#: libparted/labels/vtoc.c:164
+msgid "opening of device failed"
+msgstr "odpiranje naprave ni uspelo"
+
+#: libparted/labels/vtoc.c:168
+msgid "seeking on device failed"
+msgstr "iskanje na napravi ni uspelo"
+
+#: libparted/labels/vtoc.c:172
+msgid "writing to device failed"
+msgstr "zapisovanje na napravo ni uspelo"
+
+#: libparted/labels/vtoc.c:176
+msgid "reading from device failed"
+msgstr "branje iz naprave ni uspelo"
+
+#: libparted/labels/vtoc.c:299 libparted/labels/vtoc.c:308
+#: libparted/labels/vtoc.c:329 libparted/labels/vtoc.c:336
+msgid "Could not read volume label."
+msgstr "Oznake nosilca ni mogoče prebrati."
+
+#: libparted/labels/vtoc.c:356 libparted/labels/vtoc.c:363
+msgid "Could not write volume label."
+msgstr "Oznake nosilca ni mogoče zapisati."
+
+#: libparted/labels/vtoc.c:469
+msgid "Could not read VTOC labels."
+msgstr "Oznake VTOC ni mogoče prebrati."
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr "VTOC FMT1 DSCB ni mogoče prebrati."
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr "VTOC FMT4 DSCB ni mogoče prebrati."
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr "VTOC FMT5 DSCB ni mogoče prebrati."
+
+#: libparted/labels/vtoc.c:496
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr "VTOC FMT7 DSCB ni mogoče prebrati."
+
+#: libparted/labels/vtoc.c:516
+msgid "Could not write VTOC labels."
+msgstr "Oznake VTOC ni mogoče zapisati."
+
+#: libparted/labels/vtoc.c:522
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr "VTOC FMT1 DSCB ni mogoče zapisati."
+
+#: libparted/labels/vtoc.c:529
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr "VTOC FMT4 DSCB ni mogoče zapisati."
+
+#: libparted/labels/vtoc.c:536
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr "VTOC FMT5 DSCB ni mogoče napisati."
+
+#: libparted/labels/vtoc.c:543
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr "VTOC FMT7 DSCB ni mogoče zapisati."
+
+#: libparted/libparted.c:230 libparted/libparted.c:245
+msgid "Out of memory."
+msgstr "Zmanjkalo je pomnilnika."
+
+#: libparted/unit.c:138
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr "Velikosti enote za posebno enoto 'COMPACT' ni mogoče dobiti."
+
+#: libparted/unit.c:384
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr "\"%s\" ima neveljavno skladnjo za mesto."
+
+#: libparted/unit.c:392
+#, c-format
+msgid "The maximum head value is %d."
+msgstr "Največja vrednost glave je %d."
+
+#: libparted/unit.c:399
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr "Največja vrednost sektorja je %d."
+
+#: libparted/unit.c:411 libparted/unit.c:556
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr "Mesto %s je zunaj naprave %s."
+
+#: libparted/unit.c:531
+msgid "Invalid number."
+msgstr "Neveljavno število."
+
+#: libparted/fs/amiga/affs.c:62 libparted/fs/amiga/apfs.c:55
+#: libparted/fs/amiga/asfs.c:69
+#, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "%s : Dodeljevanje bloka razdelka ni uspelo\n"
+
+#: libparted/fs/amiga/affs.c:77 libparted/fs/amiga/apfs.c:68
+#: libparted/fs/amiga/asfs.c:81
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr "%s: Dodeljevanje bloka ni uspelo\n"
+
+#: libparted/fs/amiga/affs.c:82 libparted/fs/amiga/apfs.c:73
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr "%s: Branje zagonskega bloka %llu ni uspelo\n"
+
+#: libparted/fs/amiga/affs.c:98 libparted/fs/amiga/apfs.c:84
+#: libparted/fs/amiga/asfs.c:87 libparted/fs/amiga/asfs.c:101
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr "%s: Branje korenskega bloka %llu ni uspelo\n"
+
+#: libparted/fs/amiga/amiga.c:71
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr "%s: Dodeljevanje elementa id seznama ni uspelo\n"
+
+#: libparted/fs/amiga/amiga.c:188
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr "%s : Branje bloka %llu ni uspelo\n"
+
+#: libparted/fs/amiga/amiga.c:201
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr "%s: Slaba nadzorna vsota na bloku %llu vrste %s\n"
+
+#: libparted/fs/amiga/amiga.c:211
+#, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s: Zapisovanje bloka %d ni uspelo\n"
+
+#: libparted/fs/amiga/amiga.c:277
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr "%s: Dodeljevanje bloka disk_specific rdb ni uspelo\n"
+
+#: libparted/fs/amiga/amiga.c:288
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr "%s : bloka rdb ni mogoče najti, kar se ne sme zgoditi\n"
+
+#: libparted/fs/amiga/amiga.c:317
+#, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr "%s: Branje bloka razdelka %llu ni uspelo\n"
+
+#: libparted/fs/fat/fat.c:174
+msgid ""
+"GNU Parted was miscompiled: the FAT boot sector should be 512 bytes.  FAT "
+"support will be disabled."
+msgstr ""
+"GNU Parted ni bil pravilno preveden: FAT zaganjalni sektor bi moral biti 512 "
+"bajtov. Podpora FAT bo onemogočena."
+
+#: libparted/fs/fat/bootsector.c:49 libparted/fs/fat/bootsector.c:56
+msgid "File system has an invalid signature for a FAT file system."
+msgstr "Datotečni sistem ima neveljaven podpis za datotečni sistem FAT."
+
+#: libparted/fs/fat/bootsector.c:64
+msgid "File system has an invalid sector size for a FAT file system."
+msgstr ""
+"Datotečni sistem ima neveljavno velikost sektorjev za datotečni sistem FAT."
+
+#: libparted/fs/fat/bootsector.c:71
+msgid "File system has an invalid cluster size for a FAT file system."
+msgstr "Datotečni sistem ima neveljavno velikost gruč za datotečni sistem FAT."
+
+#: libparted/fs/fat/bootsector.c:78
+msgid ""
+"File system has an invalid number of reserved sectors for a FAT file system."
+msgstr ""
+"Datotečni sistem ima neveljavno število rezerviranih sektorjev za datotečni "
+"sistem FAT."
+
+#: libparted/fs/fat/bootsector.c:85
+msgid "File system has an invalid number of FATs."
+msgstr "Datotečni sistem ima neveljavno število FAT-ov."
+
+#: libparted/fs/fat/bootsector.c:156
+#, c-format
+msgid ""
+"This file system has a logical sector size of %d.  GNU Parted is known not "
+"to work properly with sector sizes other than 512 bytes."
+msgstr ""
+"Datotečni sistem ima logično velikost sektorja %d. Znano je, da GNU Parted "
+"ne deluje pravilno z velikostjo sektorjev drugačno od 512 bajtov."
+
+#: libparted/fs/fat/bootsector.c:181
+#, c-format
+msgid ""
+"The file system's CHS geometry is (%d, %d, %d), which is invalid.  The "
+"partition table's CHS geometry is (%d, %d, %d).  If you select Ignore, the "
+"file system's CHS geometry will be left unchanged.  If you select Fix, the "
+"file system's CHS geometry will be set to match the partition table's CHS "
+"geometry."
+msgstr ""
+"Geometrija CHS datotečnega sistema (%d, %d, %d) je neveljavna. Geometrija "
+"CHS tabele razdelka je (%d, %d, %d). Če izberete prezri, bo geometrija CHS "
+"datotečnega sistema ostala nespremenjena. Če izberete popravi, bo geometrija "
+"CHS datotečnega sistema nastavljena na vrednosti iz preglednice razdelkov."
+
+#: libparted/fs/fat/bootsector.c:230
+msgid "FAT boot sector says logical sector size is 0.  This is weird. "
+msgstr ""
+"FAT zagonski sektor pravi, da je logična velikost sektorja 0. To je "
+"nenavadno. "
+
+#: libparted/fs/fat/bootsector.c:236
+msgid "FAT boot sector says there are no FAT tables.  This is weird. "
+msgstr ""
+"FAT zagonski sektor pravi, da preglednica FAT ne obstaja. To je nenavadno. "
+
+#: libparted/fs/fat/bootsector.c:242
+msgid "FAT boot sector says clusters are 0 sectors.  This is weird. "
+msgstr ""
+"FAT zagonski sektor pravi, da gruče vsebujejo 0 sektorjev. To je nenavadno. "
+
+#: libparted/fs/fat/bootsector.c:252
+msgid "File system is FAT12, which is unsupported."
+msgstr "Datotečni sistem je FAT12. Ta datotečni sistem ni podprt."
+
+#: libparted/fs/fat/bootsector.c:428
+#, c-format
+msgid ""
+"The information sector has the wrong signature (%x).  Select cancel for now, "
+"and send in a bug report.  If you're desperate, it's probably safe to ignore."
+msgstr ""
+"Podatkovni sektor ima napačen podpis (%x). Izberite prekliči in pošljite "
+"poročilo o hrošču. Če ste obupani, je to opozorilo najverjetneje varno "
+"prezreti."
+
+#: libparted/fs/linux_swap/linux_swap.c:247
+#, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr ""
+"Neprepoznaven podpis linux izmenjevalnega razdelka v starem slogu '%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:290
+#, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr ""
+"Neprepoznaven podpis linux izmenjevalnega razdelka v novem slogu '%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:330
+#, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Neprepoznaven podpis linux izmenjevalnega razdelka '%9s'."
+
+#: libparted/fs/hfs/probe.c:50
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to "
+"%d bytes."
+msgstr ""
+"Parted ne more uporabiti datotečnega sistema HFS na disku z velikostjo "
+"sektorja različno od %d bajtov."
+
+#: parted/parted.c:123
+msgid "displays this help message"
+msgstr "prikaže to sporočilo pomoči"
+
+#: parted/parted.c:124
+msgid "lists partition layout on all block devices"
+msgstr "prikaže postavitev razdelkov na vseh blokovnih napravah"
+
+#: parted/parted.c:125
+msgid "displays machine parseable output"
+msgstr "prikaže izhodne podatke, ki s računalniško razčlenjivi"
+
+#: parted/parted.c:126
+msgid "never prompts for user intervention"
+msgstr "nikoli ne pozovi za uporabniško posredovanje"
+
+#: parted/parted.c:127
+msgid "displays the version"
+msgstr "prikaže različico"
+
+#: parted/parted.c:128
+msgid "alignment for new partitions"
+msgstr "poravnava novih razdelkov"
+
+#: parted/parted.c:140
+msgid ""
+"NUMBER is the partition number used by Linux.  On MS-DOS disk labels, the "
+"primary partitions number from 1 to 4, logical partitions from 5 onwards.\n"
+msgstr ""
+"ŠTEVILKA je številka razdelka uporabljena na OS Linux.  Na oznakah diskov MS-"
+"DOS so številke osnovnih razdelkov od 1 do 4, logičnih razdelkov pa od 5 "
+"naprej.\n"
+
+#: parted/parted.c:143
+msgid "LABEL-TYPE is one of: "
+msgstr "VRSTA_OZNAKA je ena od: "
+
+#: parted/parted.c:144
+msgid "FLAG is one of: "
+msgstr "ZASTAVICA je ena od: "
+
+#: parted/parted.c:145
+msgid "UNIT is one of: "
+msgstr "ENOTA je ena od: "
+
+#: parted/parted.c:146
+msgid "desired alignment: minimum or optimal"
+msgstr "zaželjena poravnava: najmanjša ali optimalna"
+
+#: parted/parted.c:147
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "VRSTA-RAZDELKA je ena od: osnovna, logična, razširjena\n"
+
+#: parted/parted.c:149
+msgid "FS-TYPE is one of: "
+msgstr "VRSTA-DS je ena od: "
+
+#: parted/parted.c:150
+msgid ""
+"START and END are disk locations, such as 4GB or 10%.  Negative values count "
+"from the end of the disk.  For example, -1s specifies exactly the last "
+"sector.\n"
+msgstr ""
+"ZAČETEK in KONEC sta mesti na disku, kot na-primer 4GB ali 10%. Negativne "
+"vrednosti se štejejo od konca diska. Na primer, -1s določa natanko zadnji "
+"sektor.\n"
+
+#: parted/parted.c:153
+msgid "STATE is one of: on, off\n"
+msgstr "Stanje je eno od: on, off\n"
+
+#: parted/parted.c:154
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "NAPRAVA je ponavadi /dev/hda ali /dev/sda\n"
+
+#: parted/parted.c:155
+msgid "NAME is any word you want\n"
+msgstr "IME je katerakoli beseda, ki jo hočete\n"
+
+#: parted/parted.c:158
+msgid ""
+"Copyright (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"This program is free software, covered by the GNU General Public License.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+msgstr ""
+"Avtorske pravice (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"Ta program je prosta programska oprema krita z licenco GNU General Public "
+"License.\n"
+"\n"
+"Program je razširjan v upanju da bo uporaben,\n"
+"vendar BREZ KAKRŠNEKOLI GARANCIJE; tudi brez posredne garancije na\n"
+"PRODAJO ali PRIMERNOST ZA KAKRŠENKOLI DOLOČEN NAMEN.  \n"
+"Oglejte si licenco GNU General Public License za podrobnosti.\n"
+"\n"
+
+#: parted/parted.c:204
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(čas do konca %.2d:%.2d)"
+
+#: parted/parted.c:223
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+"Razdelek %s je v uporabi. Pred spreminjanjem s Parted ga je treba odklopiti."
+
+#: parted/parted.c:241
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "Razdel-ek(ki) na %s so v uporabi."
+
+#: parted/parted.c:253
+#, c-format
+msgid ""
+"The existing disk label on %s will be destroyed and all data on this disk "
+"will be lost. Do you want to continue?"
+msgstr ""
+"Obstoječa oznaka diska na %s bo uničena in vsi podatki na disku bodo "
+"izgubljeni. Želite nadaljevati?"
+
+#: parted/parted.c:502
+msgid "New disk label type?"
+msgstr "Nova vrsta oznake diska?"
+
+#: parted/parted.c:562
+msgid "Partition type?"
+msgstr "Vrsta razdelka?"
+
+#: parted/parted.c:580 parted/parted.c:766
+msgid "Partition name?"
+msgstr "Ime razdelka?"
+
+#: parted/parted.c:588
+msgid "File system type?"
+msgstr "Vrsta datotečnega sistema?"
+
+#: parted/parted.c:594 parted/parted.c:1342
+msgid "Start?"
+msgstr "Začetek?"
+
+#: parted/parted.c:596 parted/parted.c:1344
+msgid "End?"
+msgstr "Konec?"
+
+#: parted/parted.c:661
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s.%s"
+msgstr ""
+"Zahtevali ste razdelek od %s do %s.\n"
+"Najbližje mogoče mesto je od %s do %s.%s"
+
+#: parted/parted.c:666
+msgid ""
+"\n"
+"Is this still acceptable to you?"
+msgstr ""
+"\n"
+"Je to za vas sprejemljivo?"
+
+#: parted/parted.c:688
+msgid "The resulting partition is not properly aligned for best performance."
+msgstr "Ciljni razdelek ni pravilno poravnan za najboljšo zmogljivost."
+
+#: parted/parted.c:763 parted/parted.c:1383 parted/parted.c:1455
+#: parted/parted.c:1489
+msgid "Partition number?"
+msgstr "Številka razdelka?"
+
+#: parted/parted.c:841
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d.  Each cylinder is %s.\n"
+msgstr ""
+"cilinder BIOS,glava,geometrija sektorja: %d,%d,%d.  Vsak cilinder je %s.\n"
+
+#: parted/parted.c:881
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr "Model: %s (%s)\n"
+
+#: parted/parted.c:883
+#, c-format
+msgid "Disk %s: %s\n"
+msgstr "Disk %s: %s\n"
+
+#: parted/parted.c:884
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr "Velikost sektorja (logična/fizična): %lldB/%lldB\n"
+
+#: parted/parted.c:896
+#, c-format
+msgid "Partition Table: %s\n"
+msgstr "Preglednica razdelkov: %s\n"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Number"
+msgstr "Število"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Start"
+msgstr "Začetek"
+
+#: parted/parted.c:1008 parted/parted.c:1011
+msgid "End"
+msgstr "Konec"
+
+#: parted/parted.c:1011
+msgid "Size"
+msgstr "Velikost"
+
+#: parted/parted.c:1015
+msgid "Type"
+msgstr "Vrsta"
+
+#: parted/parted.c:1017
+msgid "File system"
+msgstr "Datotečni sistem"
+
+#: parted/parted.c:1020
+msgid "Name"
+msgstr "Ime"
+
+#: parted/parted.c:1022
+msgid "Flags"
+msgstr "Zastavice"
+
+#: parted/parted.c:1079
+msgid "Free Space"
+msgstr "Nezaseden prostor"
+
+#: parted/parted.c:1241
+#, c-format
+msgid ""
+"A %s %s partition was found at %s -> %s.  Do you want to add it to the "
+"partition table?"
+msgstr ""
+"razdelek %s %s je bil najden na %s -> %s.  Ga želite dodati k preglednici "
+"razdelkov?"
+
+#: parted/parted.c:1280
+msgid "searching for file systems"
+msgstr "iskanje datotečnega sistema"
+
+#: parted/parted.c:1408
+msgid "New device?"
+msgstr "Nova naprava?"
+
+#: parted/parted.c:1453
+msgid "alignment type(min/opt)"
+msgstr "vrsta poravnave (min/opt)"
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d aligned\n"
+msgstr "%d je poravnan\n"
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d not aligned\n"
+msgstr "%d ni poravnan\n"
+
+#: parted/parted.c:1491
+msgid "Flag to Invert?"
+msgstr "Označi za obrat?"
+
+#: parted/parted.c:1496
+msgid "New state?"
+msgstr "Novo stanje?"
+
+#: parted/parted.c:1533
+msgid "Unit?"
+msgstr "Enota?"
+
+#: parted/parted.c:1651
+msgid "align-check"
+msgstr "align-check"
+
+#: parted/parted.c:1654
+msgid ""
+"align-check TYPE N                        check partition N for TYPE(min|"
+"opt) alignment"
+msgstr ""
+"align-check VRSTA ŠTEVILKA               preveri poravnanost vrste VRSTA "
+"(min|opt) razdelka ŠTEVILKA"
+
+#: parted/parted.c:1662
+msgid "help"
+msgstr "help"
+
+#: parted/parted.c:1665
+msgid ""
+"help [COMMAND]                           print general help, or help on "
+"COMMAND"
+msgstr ""
+"help [UKAZ]                              izpiše splošno pomoč ali pomoč o "
+"ukazu UKAZ"
+
+#: parted/parted.c:1671
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:1671
+msgid "mktable"
+msgstr "mktable"
+
+#: parted/parted.c:1674
+msgid ""
+"mklabel,mktable LABEL-TYPE               create a new disklabel (partition "
+"table)"
+msgstr ""
+"mklabel,mktable OZNAKA-VRSTA             ustvari novo oznako diska "
+"(preglednica razdelkov)"
+
+#: parted/parted.c:1680
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:1683
+msgid "mkpart PART-TYPE [FS-TYPE] START END     make a partition"
+msgstr "mkpart VRSTA-RAZDELKA [VRSTA-DS] ZAČETEK KONEC     naredi razdelek"
+
+#: parted/parted.c:1689
+msgid ""
+"'mkpart' makes a partition without creating a new file system on the "
+"partition.  FS-TYPE may be specified to set an appropriate partition ID.\n"
+msgstr ""
+"'mkpart' naredi razdelek brez ustvarjanja novega datotečnega sistema na "
+"razdelku. VRSTA-DS je lahko določena za nastavitev primernega ID-ja "
+"razdelka.\n"
+
+#: parted/parted.c:1694
+msgid "name"
+msgstr "name"
+
+#: parted/parted.c:1697
+msgid "name NUMBER NAME                         name partition NUMBER as NAME"
+msgstr ""
+"name ŠTEVILKA IME                        razdelek ŠTEVILKA poimenuj z IME"
+
+#: parted/parted.c:1702
+msgid "print"
+msgstr "print"
+
+#: parted/parted.c:1705
+msgid ""
+"print [devices|free|list,all|NUMBER]     display the partition table, "
+"available devices, free space, all found partitions, or a particular "
+"partition"
+msgstr ""
+"print [devices|free|list,all|ŠTEVILKA]   prikaži preglednico razdelkov, "
+"naprave, ki so na voljo, nezaseden prostor, vse najdene razdelke ali določen "
+"razdelek"
+
+#: parted/parted.c:1710
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+"Brez argumentov, 'print' prikaže celotno preglednico razdelkov. Z "
+"naslednjimi argumenti pa izvede različna druga dejanja.\n"
+
+#: parted/parted.c:1712
+msgid "  devices   : display all active block devices\n"
+msgstr "  devices   : prikaže vse dejavne blokovne naprave\n"
+
+#: parted/parted.c:1713
+msgid ""
+"  free      : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+"  free      : prikaže podatke o nezasedenem nerazdeljenem prostoru na "
+"trenutni blokovni napravi\n"
+
+#: parted/parted.c:1715
+msgid ""
+"  list, all : display the partition tables of all active block devices\n"
+msgstr ""
+"  list, all : prikaže preglednico razdelkov vseh dejavnih blokovnih naprav\n"
+
+#: parted/parted.c:1716
+msgid ""
+"  NUMBER    : display more detailed information about this particular "
+"partition\n"
+msgstr "  ŠTEVILKA  : prikaže podrobne podatke o določenem razdelku\n"
+
+#: parted/parted.c:1721
+msgid "quit"
+msgstr "quit"
+
+#: parted/parted.c:1724
+msgid "quit                                     exit program"
+msgstr "quit                                     konča program"
+
+#: parted/parted.c:1729
+msgid "rescue"
+msgstr "rescue"
+
+#: parted/parted.c:1732
+msgid ""
+"rescue START END                         rescue a lost partition near START "
+"and END"
+msgstr ""
+"rescue ZAČETEK KONEC                     reši izgubljen razdelek blizu "
+"ZAČETKA in KONCA"
+
+#: parted/parted.c:1738
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:1741
+msgid "rm NUMBER                                delete partition NUMBER"
+msgstr "rm ŠTEVILKA                              izbriše razdelek ŠTEVILKA"
+
+#: parted/parted.c:1746
+msgid "select"
+msgstr "select"
+
+#: parted/parted.c:1749
+msgid "select DEVICE                            choose the device to edit"
+msgstr "select NAPRAVA                           izbere napravo za urejanje"
+
+#: parted/parted.c:1754
+msgid "set"
+msgstr "set"
+
+#: parted/parted.c:1757
+msgid ""
+"set NUMBER FLAG STATE                    change the FLAG on partition NUMBER"
+msgstr ""
+"set ŠTEVILKA ZASTAVICA STANJE            spremeni ZASTAVICO na razdelku "
+"ŠTEVILKA"
+
+#: parted/parted.c:1763
+msgid "toggle"
+msgstr "toggle"
+
+#: parted/parted.c:1766
+msgid ""
+"toggle [NUMBER [FLAG]]                   toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+"toggle [ŠTEVILKA [ZASTAVICA]]            preklopi stanje ZASTAVICE na "
+"razdelku ŠTEVILKA"
+
+#: parted/parted.c:1772
+msgid "unit"
+msgstr "unit"
+
+#: parted/parted.c:1775
+msgid "unit UNIT                                set the default unit to UNIT"
+msgstr ""
+"unit ENOTA                               nastavi privzeto enoto na ENOTA"
+
+#: parted/parted.c:1780
+msgid "version"
+msgstr "različica"
+
+#: parted/parted.c:1783
+msgid ""
+"version                                  display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+"version                                  prikaže številko različice in "
+"podrobnosti o avtorskih pravicah programa GNU Parted"
+
+#: parted/parted.c:1787
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+"'version' prikaže avtorske pravice in podrobnosti o različici, ki ustrezajo "
+"tej kopiji programa GNU Parted\n"
+
+#: parted/parted.c:1855
+#, c-format
+msgid "Usage: %s [-hlmsv] [-a<align>] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+"Uporaba: %s [-hlmsv] [-a<poravnava>] [NAPRAVA [UKAZ [PARAMETRI]] ...]\n"
+
+#: parted/parted.c:1899
+msgid "No device found"
+msgstr "Naprave ni mogoče najti"
+
+#: parted/parted.c:1936
+msgid "WARNING: You are not superuser.  Watch out for permissions."
+msgstr "OPOZORILO: Niste superuporabnik. Pazite na dovoljenja."
+
+#: parted/parted.c:1974
+msgid "You may need to update /etc/fstab.\n"
+msgstr "Morda boste morali posodobiti /etc/fstab.\n"
+
+#: parted/ui.c:162
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr "Dobrodošli v GNU Parted! Vpišite 'help' za ogled seznama ukazov.\n"
+
+#: parted/ui.c:165
+msgid ""
+"Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]\n"
+"Apply COMMANDs with PARAMETERS to DEVICE.  If no COMMAND(s) are given, run "
+"in\n"
+"interactive mode.\n"
+msgstr ""
+"Uporaba: parted [MOŽNOSTI] ... [NAPRAVA [UKAZ [PARAMETRI] ...] ...]\n"
+"Uveljavi UKAZE s PARAMETRI za NAPRAVO.  Če UKAZ ni podan poženi v vzajemnem "
+"načinu.\n"
+
+#: parted/ui.c:170
+#, c-format
+msgid ""
+"\n"
+"\n"
+"You found a bug in GNU Parted! Here's what you have to do:\n"
+"\n"
+"Don't panic! The bug has most likely not affected any of your data.\n"
+"Help us to fix this bug by doing the following:\n"
+"\n"
+"Check whether the bug has already been fixed by checking\n"
+"the last version of GNU Parted that you can find at:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Please check this version prior to bug reporting.\n"
+"\n"
+"If this has not been fixed yet or if you don't know how to check,\n"
+"please visit the GNU Parted website:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"for further information.\n"
+"\n"
+"Your report should contain the version of this release (%s)\n"
+"along with the error message below, the output of\n"
+"\n"
+"\tparted DEVICE unit co print unit s print\n"
+"\n"
+"and the following history of commands you entered.\n"
+"Also include any additional information about your setup you\n"
+"consider important.\n"
+msgstr ""
+"\n"
+"\n"
+"Našli ste hrošča v GNU Parted! Tukaj piše kaj storiti:\n"
+"\n"
+"Brez panike! Hrošč najverjetneje ni vplival na vaše podatke.\n"
+"Ta hrošč nam pomagajte popraviti tako da storite naslednje:\n"
+"\n"
+"Preverite ali je bil hrošč že popravljen tako, da preverite zadnjo različico "
+"GNU Parted, ki jo lahko najdete na:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Prosimo preverite to različico preden sporočite hrošča.\n"
+"\n"
+"Če še ni bil popravljen, ali pa tega ne znate preveriti\n"
+"obiščite spletno stran GNU Parted:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"za več podrobnosti.\n"
+"\n"
+"Vaše sporočilo bi moralo vsebovati različico izdaje (%s)\n"
+"skupaj s sporočilom napake spodaj, izhod\n"
+"\n"
+"\tparted NAPRAVA unit co print unit s print\n"
+"\n"
+"in zgodovino ukazov, ki ste jih vnesli.\n"
+"Ravno-tako vključite vse dodatne podrobnosti o svojih nastavitvah, \n"
+"ki se vam zdijo pomembne.\n"
+
+#: parted/ui.c:291
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+"\n"
+"Zgodovina ukazov:\n"
+
+#: parted/ui.c:354
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+"\n"
+"Napaka: SEGV_MAPERR (Naslov ni preslikan na predmet)\n"
+
+#: parted/ui.c:360
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+"\n"
+"Error: SEGV_ACCERR (neveljavne pravice preslikanega objekta)\n"
+
+#: parted/ui.c:365
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+"\n"
+"Napaka: Zaznan je bil splošni signal SIGSEGV.\n"
+
+#: parted/ui.c:389
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+"\n"
+"Napaka: FPE_INTDIV (Celo število: deljenje z 0)"
+
+#: parted/ui.c:394
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+"\n"
+"Napaka: FPE_INTOVF (Celo število: preliv)"
+
+#: parted/ui.c:399
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+"\n"
+"Napaka: FPE_FLTDIV (Decimalno število: deljenje z 0)"
+
+#: parted/ui.c:404
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+"\n"
+"Napaka: FPE_FLTOVF (Decimalno število: prekoračitev)"
+
+#: parted/ui.c:409
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+"\n"
+"Napaka: FPE_FLTUND (Decimalno število: prekoračitev spodnje meje)"
+
+#: parted/ui.c:414
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+"\n"
+"Napaka: FPE_FLTRES (Decimalno število: netočen rezultat)"
+
+#: parted/ui.c:419
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+"\n"
+"Napaka: FPE_FLTINV (Decimalno število: neveljavno opravilo)"
+
+#: parted/ui.c:424
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+"\n"
+"Napaka: FPE_FLTSUB (Decimalno število: indeks zunaj obsega)"
+
+#: parted/ui.c:429
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+"\n"
+"Napaka: Zaznan je bil splošni signal SIGFPE."
+
+#: parted/ui.c:453
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+"\n"
+"Napaka: ILL_ILLOPC (Neveljavna koda opravila)"
+
+#: parted/ui.c:458
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+"\n"
+"Napaka: ILL_ILLOPN (Neveljaven operand)"
+
+#: parted/ui.c:463
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+"\n"
+"Napaka: ILL_ILLADR (Neveljaven način naslavljanja)"
+
+#: parted/ui.c:468
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+"\n"
+"Napaka: ILL_ILLTRP (Neveljavna past)"
+
+#: parted/ui.c:473
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+"\n"
+"Napaka: ILL_PRVOPC (Opcode s povišanimi pravicami)"
+
+#: parted/ui.c:478
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+"\n"
+"Napaka: ILL_PRVREG (Register s povišanimi pravicami)"
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+"\n"
+"Napaka: ILL_COPROC (Napaka soopravilnika)"
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+"\n"
+"Napaka: ILL_BADSTK (Napaka notranjega sklada)"
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+"\n"
+"Napaka: Zaznan je bil splošni signal SIGILL."
+
+#: parted/ui.c:891
+#, c-format
+msgid "invalid token: %s"
+msgstr "neveljaven žeton %s"
+
+#: parted/ui.c:1048
+msgid "Expecting a partition number."
+msgstr "Pričakovana je številka razdelka."
+
+#: parted/ui.c:1057
+msgid "Partition doesn't exist."
+msgstr "Razdelek ne obstaja."
+
+#: parted/ui.c:1077
+msgid "Expecting a file system type."
+msgstr "Pričakovana je vrsta datotečnega sistema."
+
+#: parted/ui.c:1084
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Neznan datotečni sistem vrste \"%s\"."
+
+#: parted/ui.c:1105
+msgid "Expecting a disk label type."
+msgstr "Pričakuje se vrsta oznake diska."
+
+#: parted/ui.c:1203
+msgid "Can't create any more partitions."
+msgstr "Novih razdelkov ni mogoče ustvariti."
+
+#: parted/ui.c:1213
+msgid "Expecting a partition type."
+msgstr "Pričakuje se vrsta razdelka."
+
+#: parted/ui.c:1361
+msgid "on"
+msgstr "vključeno"
+
+#: parted/ui.c:1362
+msgid "off"
+msgstr "izključeno"
+
+#: parted/ui.c:1379
+msgid "optimal"
+msgstr "optimalno"
+
+#: parted/ui.c:1380
+msgid "minimal"
+msgstr "najmanjše"
+
+#: parted/ui.c:1513
+msgid "OPTIONs:"
+msgstr "MOŽNOSTI:"
+
+#: parted/ui.c:1518
+msgid "COMMANDs:"
+msgstr "UKAZI:"
+
+#: parted/ui.c:1521
+#, c-format
+msgid ""
+"\n"
+"Report bugs to %s\n"
+msgstr ""
+"\n"
+"Hrošče sporočite na %s\n"
+
+#: parted/ui.c:1528
+#, c-format
+msgid "Using %s\n"
+msgstr "Uporablja %s\n"
+
+#: parted/ui.c:1602
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr "Ta ukaz nima smisla v ne-vzajemnem načinu.\n"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]\n"
+#~ "  or:  %s DEVICE MINOR\n"
+#~ msgstr ""
+#~ "Uporaba: %s [MOŽNOST]\n"
+#~ "  ali: %s NAPRAVA MANJŠE-ŠTEVILO\n"
+
+#~ msgid ""
+#~ "Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Počisti neuporabljen prostor na razdelku FAT (GNU Parted preizkusno "
+#~ "orodje).\n"
+#~ "\n"
+
+#~ msgid "      --help     display this help and exit\n"
+#~ msgstr "      --help     prikaže to pomoč in konča\n"
+
+#~ msgid "      --version  output version information and exit\n"
+#~ msgstr "      --version  izpiše podrobnosti o različici in konča\n"
+
+#~ msgid "too few arguments"
+#~ msgstr "premalo argumentov"
+
+#~ msgid "too many arguments"
+#~ msgstr "preveč argumentov"
+
+#~ msgid "invalid minor device number: %s"
+#~ msgstr "napačno manjše število naprave: %s"
+
+#~ msgid "Could not detect file system."
+#~ msgstr "Datotečnega sistema ni mogoče zaznati."
+
+#~ msgid "The file system is bigger than its volume!"
+#~ msgstr "Datotečni sistem je večji kot njegov nosilec!"
+
+#~ msgid "Support for opening %s file systems is not implemented yet."
+#~ msgstr "Podpora za odpiranje datotečnega sistem %s še ni dodana."
+
+#~ msgid "Support for creating %s file systems is not implemented yet."
+#~ msgstr "Podpora za ustvarjanje datotečnega sistem %s še ni dodana."
+
+#~ msgid "Support for checking %s file systems is not implemented yet."
+#~ msgstr "Podpora za preverjanje datotečnega sistem %s še ni dodana."
+
+#~ msgid "raw block copying"
+#~ msgstr "kopiranje surovih blokov"
+
+#~ msgid "growing file system"
+#~ msgstr "rastoč datotečni sistem"
+
+#~ msgid "Can't copy onto an overlapping partition."
+#~ msgstr "Kopiranje na prekrivajoč razdelek ni mogoče."
+
+#~ msgid ""
+#~ "Direct support for copying file systems is not yet implemented for %s.  "
+#~ "However, support for resizing is implemented.  Therefore, the file system "
+#~ "can be copied if the new partition is at least as big as the old one.  "
+#~ "So, either shrink the partition you are trying to copy, or copy to a "
+#~ "bigger partition."
+#~ msgstr ""
+#~ "Neposredna podpora za kopiranje datotečnega sistema za %s še ni podprta. "
+#~ "Podpora za spreminjanje velikosti pa je vgrajena. Zato je datotečni "
+#~ "sistem mogoče kopirati, če je nov razdelek vsaj tako velik kot stari. "
+#~ "Torej zmanjšajte velikost razdelka, ki ga poskušate kopirati, ali pa ga "
+#~ "prekopirajte na večji razdelek."
+
+#~ msgid "Support for copying %s file systems is not implemented yet."
+#~ msgstr "Podpora za kopiranje datotečnega sistem %s še ni dodana."
+
+#~ msgid "Support for resizing %s file systems is not implemented yet."
+#~ msgstr "Podpora za spremembo velikosti datotečnega sistem %s še ni dodana."
+
+#~ msgid "creating"
+#~ msgstr "ustvarjanje"
+
+#~ msgid "The file system is in an invalid state.  Perhaps it is mounted?"
+#~ msgstr "Datotečni sistem je v neveljavnem stanju. Morda je priklopljen?"
+
+#~ msgid "The file system is in old (unresizeable) format."
+#~ msgstr "Datotečni sistem je stare (nespreminjajoče) oblike."
+
+#~ msgid "Invalid free blocks count.  Run reiserfsck --check first."
+#~ msgstr ""
+#~ "Neveljavno število prostih blokov. Najprej zaženite ukaz reiserfsck --"
+#~ "check."
+
+#~ msgid "checking"
+#~ msgstr "preverjanje"
+
+#~ msgid "Reiserfs tree seems to be corrupted.  Run reiserfsck --check first."
+#~ msgstr ""
+#~ "Drevo Reiserfs je morda pokvarjeno. Najprej zaženite ukaz reiserfsck -- "
+#~ "check."
+
+#~ msgid ""
+#~ "The reiserfs file system passed a basic check.  For a more comprehensive "
+#~ "check, run reiserfsck --check."
+#~ msgstr ""
+#~ "Datotečni sistem reiserfs je opravil osnovni pregled. Za bolj podroben "
+#~ "pregled zaženite ukaz reiserfsck --check."
+
+#~ msgid "Sorry, can't move the start of reiserfs partitions yet."
+#~ msgstr "Oprostite, začetka razdelka reiserfs še ni mogoče premakniti."
+
+#~ msgid "Couldn't reopen device abstraction layer for read/write."
+#~ msgstr ""
+#~ "Abstraktne plasti naprave ni mogoče ponovno odpreti za barnje/pisanje."
+
+#~ msgid "shrinking"
+#~ msgstr "krčenje"
+
+#~ msgid "expanding"
+#~ msgstr "razširjanje"
+
+#~ msgid "Couldn't create reiserfs device abstraction handler."
+#~ msgstr "Ročnika abstrakcije naprave reiserfs ni mogoče ustvariti."
+
+#~ msgid "Device is too small for %lu blocks."
+#~ msgstr "Naprava je premajhna za %lu blokov."
+
+#~ msgid "copying"
+#~ msgstr "kopiranje"
+
+#~ msgid "Couldn't resolve symbol %s.  Error: %s."
+#~ msgstr "Simbola %s ni mogoče razrešiti. Napaka: %s."
+
+#~ msgid "GNU Parted found an invalid libreiserfs library."
+#~ msgstr "GNU Parted je našel neveljavno knjižnico libreiserfs."
+
+#~ msgid ""
+#~ "GNU Parted has detected libreiserfs interface version mismatch.  Found %d-"
+#~ "%d, required %d. ReiserFS support will be disabled."
+#~ msgstr ""
+#~ "GNU Parted je zaznal neujemanje različic vmesnika libreiserfs. Najdeno %d-"
+#~ "%d, pričakovano %d. Podpora za ReiserFS bo onemogočena."
+
+#~ msgid "Inconsistent group descriptors!"
+#~ msgstr "Nedosledni opisovalnik skupin!"
+
+#~ msgid "File system full!"
+#~ msgstr "Datotečni sistem je poln!"
+
+#~ msgid "Invalid superblock.  Are you sure this is an ext2 file system?"
+#~ msgstr ""
+#~ "Neveljaven superblok. Ste prepričani, da je to datotečni sistem ext2?"
+
+#~ msgid "File system has errors!  You should run e2fsck."
+#~ msgstr "Datotečni sistem ima napake! Poženite ukaz e2fsck."
+
+#~ msgid ""
+#~ "File system was not cleanly unmounted!  You should run e2fsck.  Modifying "
+#~ "an unclean file system could cause severe corruption."
+#~ msgstr ""
+#~ "Datotečni sistem ni bil odklopljen čisto! Poženite ukaz e2fsck. "
+#~ "Spreminjanje nečistega datotečnega sistema lahko povzroči hude okvare."
+
+#~ msgid ""
+#~ "File system has an incompatible feature enabled.  Compatible features are "
+#~ "has_journal, dir_index, filetype, sparse_super and large_file.  Use "
+#~ "tune2fs or debugfs to remove features."
+#~ msgstr ""
+#~ "Datotečni sistem ima omogočeno nezdružljivo zmožnost. Združljive "
+#~ "zmožnosti so has_journal, dir_index, filetype, sparse_super in "
+#~ "large_file. Uporabite ukaz tune2fs ali debugfs za odstranitev zmožnosti."
+
+#~ msgid "Error allocating buffer cache."
+#~ msgstr "Napaka med dodeljevanjem predpomnilnika medpomnilniku."
+
+#~ msgid ""
+#~ "Found an inode with a incorrect link count.  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "Najdeno je bilo število inode z nepravilnim štetjem povezav. Priporočamo "
+#~ "vam, da prej poženete ukaz e2fsck!"
+
+#~ msgid "Not enough free inodes!"
+#~ msgstr "Ni dovolj prostih števil inode!"
+
+#~ msgid "File system is too full to remove a group!"
+#~ msgstr "Datotečni sistem je prepoln za odstranitev skupine!"
+
+#~ msgid "File system has too many allocated inodes to remove a group!"
+#~ msgstr ""
+#~ "Datotečni sistem ima preveč dodeljenih števil inode za odstranitev "
+#~ "skupine!"
+
+#~ msgid "adding groups"
+#~ msgstr "dodajanje skupin"
+
+#~ msgid "Your file system is too full to resize it to %i blocks.  Sorry."
+#~ msgstr ""
+#~ "Datotečni sistem je prepoln za spremembo velikosti na %i blokov. "
+#~ "Oprostite."
+
+#~ msgid ""
+#~ "Your file system has too many occupied inodes to resize it to %i blocks.  "
+#~ "Sorry."
+#~ msgstr ""
+#~ "Datotečni sistem ima preveč zasedenih števil inode za spremembo velikosti "
+#~ "na %i blokov. Oprostite."
+
+#~ msgid "File system was not cleanly unmounted!  You should run e2fsck."
+#~ msgstr "Datotečni sistem ni bil čisto odklopljen. Zaženite ukaz e2fsck."
+
+#~ msgid ""
+#~ "The file system has the 'dir_index' feature enabled.  Parted can only "
+#~ "resize the file system if it disables this feature.  You can enable it "
+#~ "later by running 'tune2fs -O dir_index DEVICE' and then 'e2fsck -fD "
+#~ "DEVICE'."
+#~ msgstr ""
+#~ "Datotečni sistem ima vklopljeno zmožnost 'dir_index'. Parted lahko "
+#~ "spremeni velikost datotečnega sistema le, če se ta zmožnost izklopi. "
+#~ "Pozneje jo lahko vklopite z ukazom 'tune2fs -O dir_index NAPRAVA' in nato "
+#~ "'e2fsck -fD NAPRAVA'."
+
+#~ msgid ""
+#~ "A resize operation on this file system will use EXPERIMENTAL code\n"
+#~ "that MAY CORRUPT it (although no one has reported any such damage yet).\n"
+#~ "You should at least backup your data first, and run 'e2fsck -f' "
+#~ "afterwards."
+#~ msgstr ""
+#~ "Opravilo spreminjanja velikosti na tem datotečnem sistemu bo uporabilo "
+#~ "PREIZKUSNO kodo,\n"
+#~ "ki LAHKO datotečni sistem POKVARI (čeprav takšne škode ni še nihče "
+#~ "prijavil).\n"
+#~ "Pred začetkom bi morali narediti vsaj varnostno kopijo podatkov in "
+#~ "zagnati ukaz  'e2fsck -f'"
+
+#~ msgid "Cross-linked blocks found!  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "Najdene so navzkrižne povezave blokov! Priporočamo vam, da najprej "
+#~ "zaženete ukaz e2fsck!"
+
+#~ msgid "Block %i has no reference?  Weird."
+#~ msgstr "Blok %i nima sklica? Čudno."
+
+#~ msgid "Block %i shouldn't have been marked (%d, %d)!"
+#~ msgstr "Blok %i bi moral biti označen (%d, %d)!"
+
+#~ msgid ""
+#~ "The ext2 file system passed a basic check.  For a more comprehensive "
+#~ "check, use the e2fsck program."
+#~ msgstr ""
+#~ "Datotečni sistem ext2 je prestal osnovno preverjanje. Za bolj poglobljeno "
+#~ "preverjanje uporabite program e2fsck."
+
+#~ msgid "Sorry, can't move the start of ext2 partitions yet!"
+#~ msgstr "Oprostite, začetka ext2 razdelka še ni mogoče premakniti!"
+
+#~ msgid "Couldn't flush buffer cache!"
+#~ msgstr "Predpomnilnika medpomnilnika ni mogoče počistiti!"
+
+#~ msgid "writing per-group metadata"
+#~ msgstr "zapisovanje metapodatkov za skupine"
+
+#~ msgid "File system too small for ext2."
+#~ msgstr "Datotečni sistem je premajhen za ext2."
+
+#~ msgid ""
+#~ "You need %s of free disk space to shrink this partition to this size.  "
+#~ "Currently, only %s is free."
+#~ msgstr ""
+#~ "Da bi razdelek skrčili na to velikost, potrebujete %s nezasedenega "
+#~ "prostora na disku. Trenutno je na voljo le %s nezasedenega prostora."
+
+#~ msgid ""
+#~ "Cluster start delta = %d, which is not a multiple of the cluster size %d."
+#~ msgstr "Začetek gruče delta = %d, ki ni večkratnik velikosti gruče %d."
+
+#~ msgid "Partition too big/small for a %s file system."
+#~ msgstr "Razdelek je prevelik/premajhen za datotečni sistem %s."
+
+#~ msgid ""
+#~ "The FATs don't match.  If you don't know what this means, then select "
+#~ "cancel, run scandisk on the file system, and then come back."
+#~ msgstr ""
+#~ "FAT-i se ne ujemajo. Če ne veste kaj to pomeni, izberite prekliči, "
+#~ "zaženite ukaz scandisk na datotečnem sistemu in nato poskusite znova."
+
+#~ msgid "There are no possible configurations for this FAT type."
+#~ msgstr "Za to vrsto FAT ni veljavnih nastavitev."
+
+#~ msgid ""
+#~ "File system doesn't have expected sizes for Windows to like it.  Cluster "
+#~ "size is %dk (%dk expected); number of clusters is %d (%d expected); size "
+#~ "of FATs is %d sectors (%d expected)."
+#~ msgstr ""
+#~ "Datotečni sistem ni pričakovane velikosti, ki bi ustrezala OS Windows. "
+#~ "Velikost gruče je %dk (pričakovana %dk); število gruč je %d (pričakovano "
+#~ "%d); velikost FAT je %d sektorjev (pričakovana %d)."
+
+#~ msgid ""
+#~ "File system is reporting the free space as %d clusters, not %d clusters."
+#~ msgstr ""
+#~ "Datotečni sistem sporoča prosti prostor velikosti %d gruč in ne %d gruč."
+
+#~ msgid ""
+#~ "There's not enough room in the root directory for all of the files.  "
+#~ "Either cancel, or ignore to lose the files."
+#~ msgstr ""
+#~ "V korenski mapi ni dovolj prostora za vse datoteke. Prekličite ali pa "
+#~ "prezrite in s tem izgubite datoteke."
+
+#~ msgid "Error writing to the root directory."
+#~ msgstr "Napaka med zapisovanjem v korensko mapo."
+
+#~ msgid ""
+#~ "If you leave your file system as FAT16, then you will have no problems."
+#~ msgstr "Če pustite datotečni sistem FAT16, ne boste imeli težav."
+
+#~ msgid ""
+#~ "If you convert to FAT16, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual)."
+#~ msgstr ""
+#~ "Če pretvorite v FAT16 in so na tem razdelku nameščeni MS Windows, potem "
+#~ "boste morali znova namestiti zagonski nalagalnik MS Windows. Če želite to "
+#~ "storiti, preverite podrobnosti v priročniku Parted (ali v priročniku "
+#~ "svoje distribucije)."
+
+#~ msgid ""
+#~ "If you leave your file system as FAT32, then you will not introduce any "
+#~ "new problems."
+#~ msgstr ""
+#~ "Če pustite datotečni sistem FAT32, ne boste uvedli nobenih novih težav."
+
+#~ msgid ""
+#~ "If you convert to FAT32, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual).  Also, converting to FAT32 will make the file system unreadable "
+#~ "by MS DOS, MS Windows 95a, and MS Windows NT."
+#~ msgstr ""
+#~ "Če pretvorite v FAT32 in so na tem razdelku nameščeni MS Windows, potem "
+#~ "boste morali znova namestiti zagonski nalagalnik MS Windows. Če želite to "
+#~ "storiti, preverite podrobnosti v priročniku Parted (ali v priročniku "
+#~ "svoje distribucije). Pretvorba v FAT32 bo povzročila, da bo datotečni "
+#~ "sistem nemogoče brati iz MS DOS, MS Windosw 95 in MS Windows NT."
+
+#~ msgid "%s  %s  %s"
+#~ msgstr "%s  %s  %s"
+
+#~ msgid "Would you like to use FAT32?"
+#~ msgstr "Želite uporabiti FAT32?"
+
+#~ msgid "%s  %s"
+#~ msgstr "%s  %s"
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT16."
+#~ msgstr ""
+#~ "Datotečnemu sistemu je mogoče spremeniti velikost na to vrednost le, če "
+#~ "bo pretvorjen v FAT16."
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT32."
+#~ msgstr ""
+#~ "Datotečnemu sistemu je mogoče spremeniti velikost na to vrednost le, če "
+#~ "bo pretvorjen v FAT32."
+
+#~ msgid ""
+#~ "GNU Parted cannot resize this partition to this size.  We're working on "
+#~ "it!"
+#~ msgstr ""
+#~ "GNU Parted velikosti razdelka ne more spremeniti na to vrednost. Delamo "
+#~ "na tem!"
+
+#~ msgid "Bad directory entry for %s: first cluster is the end of file marker."
+#~ msgstr "Slab vnos mape %s: prva gruča je konec datotečnega označevalnika."
+
+#~ msgid ""
+#~ "Bad FAT: unterminated chain for %s.  You should run dosfsck or scandisk."
+#~ msgstr ""
+#~ "Slab FAT: nezaključena veriga %s: Treba je zagnati ukaz dosfsck ali "
+#~ "scandisk."
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d outside file system in chain for %s.  You should run "
+#~ "dosfsck or scandisk."
+#~ msgstr ""
+#~ "Slab FAT: gruča %d je zunaj datotečnega sistema v verigi %s. Treba je "
+#~ "zagnati ukaz dosfsck ali scandisk."
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d is cross-linked for %s.  You should run dosfsck or "
+#~ "scandisk."
+#~ msgstr ""
+#~ "Slab FAT: gruča %d je navzkrižno povezana v %s. Treba je zagnati ukaz "
+#~ "dosfsck ali scandisk."
+
+#~ msgid "%s is %dk, but it has %d clusters (%dk)."
+#~ msgstr "%s je %dk, vendar ima %d gruč (%dk)."
+
+#~ msgid ""
+#~ "The file %s is marked as a system file.  This means moving it could cause "
+#~ "some programs to stop working."
+#~ msgstr ""
+#~ "Datoteka %s je označena kot sistemska datoteka. To pomeni, da bi njen "
+#~ "premik lahko povzročil nedelovanje nekaterih programov."
+
+#~ msgid ""
+#~ "FAT %d media %x doesn't match the boot sector's media %x.  You should "
+#~ "probably run scandisk."
+#~ msgstr ""
+#~ "FAT %d medij %x ne ustreza mediju %x zaganjalnega sektorja. Najverjetneje "
+#~ "je treba zagnati scandisk."
+
+#~ msgid "fat_table_set: cluster %ld outside file system"
+#~ msgstr "fat_table_set: gruča %ld je zunaj datotečnega sistema"
+
+#~ msgid "fat_table_get: cluster %ld outside file system"
+#~ msgstr "fat_table_get: gruča %ld je zunaj datotečnega sistema"
+
+#~ msgid "fat_table_alloc_cluster: no free clusters"
+#~ msgstr "fat_table_alloc_cluster: ni prostih gruč"
+
+#~ msgid "Too many bad pages."
+#~ msgstr "Preveč slabih strani."
+
+#~ msgid "The file system contains errors."
+#~ msgstr "Datotečni sistem vsebuje napake."
+
+#~ msgid "Bad blocks could not be read."
+#~ msgstr "Slabega bloka ni mogoče prebrati."
+
+#~ msgid ""
+#~ "Trying to register an extent starting at block 0x%X, but another one "
+#~ "already exists at this position.  You should check the file system!"
+#~ msgstr ""
+#~ "Poskus vpisa segmenta extent, ki se začenja z blokom Ox%X, vendar na tem "
+#~ "mestu eden že obstaja. Treba je preveriti datotečni sistem!"
+
+#~ msgid ""
+#~ "Trying to move an extent from block Ox%X to block Ox%X, but another one "
+#~ "already exists at this position.  This should not happen!"
+#~ msgstr ""
+#~ "Poskus premikanja segmenta extent iz bloka Ox%X v blok Ox%X, vendar na "
+#~ "tem mestu eden že obstaja. To se ne sme zgoditi!"
+
+#~ msgid "Could not update the extent cache for HFS file with CNID %X."
+#~ msgstr ""
+#~ "Predpomnilnika segmenta extent ni bilo mogoče posodobiti za HFS datoteke "
+#~ "s CNID %X."
+
+#~ msgid "Trying to read HFS file with CNID %X behind EOF."
+#~ msgstr "Poskus branja datoteke HFS s CNID %X za EOF."
+
+#~ msgid "Could not find sector %lli of HFS file with CNID %X."
+#~ msgstr "Sektorja %lli datoteke HFS s CNID %X ni bilo mogoče najti."
+
+#~ msgid "Trying to write HFS file with CNID %X behind EOF."
+#~ msgstr "Poskus pisanja datoteke HFS s CNID %X za EOF."
+
+#~ msgid "Could not update the extent cache for HFS+ file with CNID %X."
+#~ msgstr ""
+#~ "Predpomnilnika segmenta extent za HFS+ datoteko s CNID %X ni bilo mogoče "
+#~ "posodobiti."
+
+#~ msgid "Trying to read HFS+ file with CNID %X behind EOF."
+#~ msgstr "Poskus branja HFS+ datoteke s CNID %X za EOF."
+
+#~ msgid "Could not find sector %lli of HFS+ file with CNID %X."
+#~ msgstr "Sektorja %lli HFS+ datoteke s CNID %X ni bilo mogoče najti."
+
+#~ msgid "Trying to write HFS+ file with CNID %X behind EOF."
+#~ msgstr "Poskus pisanja HFS+ datoteke s CNID %X za EOF."
+
+#~ msgid "Sorry, HFS cannot be resized that way yet."
+#~ msgstr "Oprostite, HFS-ju ni mogoče spremeniti velikosti na takšen način."
+
+#~ msgid "Data relocation has failed."
+#~ msgstr "Prestavljanje podatkov ni uspelo."
+
+#~ msgid "Data relocation left some data in the end of the volume."
+#~ msgstr "Prestavljanje podatkov je pustilo nekaj podatkov na koncu nosilca."
+
+#~ msgid "writing HFS Master Directory Block"
+#~ msgstr "pisanje bloka glavnege mape"
+
+#~ msgid "No valid HFS[+X] signature has been found while opening."
+#~ msgstr "Med odpiranjem ni bilo mogoče najti veljavnega podpisa HFS[+X]."
+
+#~ msgid "Version %d of HFS+ isn't supported."
+#~ msgstr "HFS+ različica %d ni podprta."
+
+#~ msgid "Version %d of HFSX isn't supported."
+#~ msgstr "HFSX različica %d  ni podprta."
+
+#~ msgid "Data relocation left some data at the end of the volume."
+#~ msgstr "Prestavljanje podatkov je pustilo nekaj podatkov na koncu nosilca."
+
+#~ msgid "Error while writing the allocation file."
+#~ msgstr "Napaka med zapisovanjem dodelitvene datoteke."
+
+#~ msgid "Error while writing the compatibility part of the allocation file."
+#~ msgstr "Napaka med zapisovanjem združljivostnega dela dodelitvene datoteke."
+
+#~ msgid "writing HFS+ Volume Header"
+#~ msgstr "zapisovanje glave nosilca HFS+"
+
+#~ msgid "An error occurred while looking for the mandatory bad blocks file."
+#~ msgstr "Napaka med iskanjem obvezne datoteke slabih blokov."
+
+#~ msgid ""
+#~ "It seems there is an error in the HFS wrapper: the bad blocks file "
+#~ "doesn't contain the embedded HFS+ volume."
+#~ msgstr ""
+#~ "Kot kaže je v ovijalniku HFS napaka: datoteka slabih blokov ne vsebuje "
+#~ "vstavljenega nosilca HFS+."
+
+#~ msgid "Sorry, HFS+ cannot be resized that way yet."
+#~ msgstr "Oprostite, HFS+ ni mogoče spreminiti velikosti na ta način."
+
+#~ msgid "shrinking embedded HFS+ volume"
+#~ msgstr "krčenje vstavljenega nosilca HFS+"
+
+#~ msgid "Resizing the HFS+ volume has failed."
+#~ msgstr "Spreminjanje velikosti nosilca HFS+ ni uspelo."
+
+#~ msgid "shrinking HFS wrapper"
+#~ msgstr "krčenje ovijalnika HFS"
+
+#~ msgid "Updating the HFS wrapper has failed."
+#~ msgstr "Posodabljanje ovijalnika HFS ni uspelo."
+
+#~ msgid ""
+#~ "This is not a real %s check.  This is going to extract special low level "
+#~ "files for debugging purposes."
+#~ msgstr ""
+#~ "To ni pravo preverjanje %s. To bo pridobilo posebne nizkonivojske "
+#~ "datoteke za razhroščevanje."
+
+#~ msgid "Bad block list header checksum."
+#~ msgstr "Slaba nadzorna vsota glave seznama blokov."
+
+#~ msgid ""
+#~ "Invalid size of a transaction block while replaying the journal (%i "
+#~ "bytes)."
+#~ msgstr ""
+#~ "Neveljavna velikost transakcijskih blokov med predvajanjem dnevnika (%i "
+#~ "bajtov)."
+
+#~ msgid ""
+#~ "Journal stored outside of the volume are not supported.  Try to "
+#~ "desactivate the journal and run Parted again."
+#~ msgstr ""
+#~ "Dnevniki shranjeni izven nosilca niso podprti. Poskusite izključiti "
+#~ "dnevnik in znova zaženite Parted."
+
+#~ msgid "Journal offset or size is not multiple of the sector size."
+#~ msgstr "Odmik ali velikost dnevnika ni večkratnik velikosti sektorja."
+
+#~ msgid "Incorrect magic values in the journal header."
+#~ msgstr "Nepravilne čarobne vrednosti v glavi dnevnika."
+
+#~ msgid "Journal size mismatch between journal info block and journal header."
+#~ msgstr ""
+#~ "Neujemanje velikosti dnevnika med info blokom dnevnika in glavo dnevnika."
+
+#~ msgid "Some header fields are not multiple of the sector size."
+#~ msgstr "Nekatera polja glave niso večkratnik velikosti sektorja."
+
+#~ msgid ""
+#~ "The sector size stored in the journal is not 512 bytes.  Parted only "
+#~ "supports 512 bytes length sectors."
+#~ msgstr ""
+#~ "Velikost sektorja shranjena v dnevniku ni 512 bajtov. Parted podpira samo "
+#~ "sektorje dolžine 512 bajtov."
+
+#~ msgid "Bad journal checksum."
+#~ msgstr "Slaba nadzorna vsota dnevnika."
+
+#~ msgid ""
+#~ "The journal is not empty.  Parted must replay the transactions before "
+#~ "opening the file system.  This will modify the file system."
+#~ msgstr ""
+#~ "Dnevnik ni prazen. Parted mora ponoviti transakcije pred odprtjem "
+#~ "datotečnega sistema. To bo spremenilo datotečni sistem."
+
+#~ msgid ""
+#~ "The volume header or the master directory block has changed while "
+#~ "replaying the journal.  You should restart Parted."
+#~ msgstr ""
+#~ "Glava nosilca ali blok glavne mape se je med ponavljanjem dnevnika "
+#~ "spremenil. Priporočamo vam ponoven zagon programa Parted."
+
+#~ msgid "An extent has not been relocated."
+#~ msgstr "Segment extent ni bil prestavljen."
+
+#~ msgid ""
+#~ "A reference to an extent comes from a place it should not.  You should "
+#~ "check the file system!"
+#~ msgstr ""
+#~ "Sklic za segment extent prihaja iz prostora kjer ne bi smel. Preverite "
+#~ "datotečni sistem!"
+
+#~ msgid "This HFS volume has no catalog file.  This is very unusual!"
+#~ msgstr "Ta nosilec HFS nima datoteke kataloga. To je zelo nenavadno!"
+
+#~ msgid ""
+#~ "This HFS volume has no extents overflow file.  This is quite unusual!"
+#~ msgstr ""
+#~ "Ta nosilec HFS nima datoteke preliva segmentov extents. To je zelo "
+#~ "nenavadno!"
+
+#~ msgid ""
+#~ "The extents overflow file should not contain its own extents!  You should "
+#~ "check the file system."
+#~ msgstr ""
+#~ "Datoteka preliva segmentov extents ne sme vsebovati lastnih segmentov "
+#~ "extents! Preverite datotečni sistem."
+
+#~ msgid "Could not cache the file system in memory."
+#~ msgstr "Datotečnega sistema ni bilo mogoče naložiti v pomnilnik."
+
+#~ msgid "Bad blocks list could not be loaded."
+#~ msgstr "Seznama slabih blokov ni mogoče naložiti."
+
+#~ msgid "An error occurred during extent relocation."
+#~ msgstr "Napaka med prestavljanjem segmenta extent."
+
+#~ msgid "This HFS+ volume has no catalog file.  This is very unusual!"
+#~ msgstr "Ta nosilec HFS+ nima datoteke kataloga. To je zelo nenavadno!"
+
+#~ msgid ""
+#~ "This HFS+ volume has no extents overflow file.  This is quite unusual!"
+#~ msgstr ""
+#~ "Ta nosilec HFS+ nima datoteke preliva segmentov extents. To je zelo "
+#~ "nenavadno!"
+
+#~ msgid "The partition must have one of the following FS-TYPEs: "
+#~ msgstr ""
+#~ "Razdelek mora imeti enega od naslednjih datotečnih sistemov VRSTA_DS: "
+
+#~ msgid ""
+#~ "The existing file system will be destroyed and all data on the partition "
+#~ "will be lost. Do you want to continue?"
+#~ msgstr ""
+#~ "Obstoječi datotečni sistem bo uničen in vsi podatki na razdelku bodo "
+#~ "izgubljeni. Želite nadaljevati?"
+
+#~ msgid ""
+#~ "WARNING: you are attempting to use %s to operate on (%s) a file system.\n"
+#~ "%s's file system manipulation code is not as robust as what you'll find "
+#~ "in\n"
+#~ "dedicated, file-system-specific packages like e2fsprogs.  We recommend\n"
+#~ "you use %s only to manipulate partition tables, whenever possible.\n"
+#~ "Support for performing most operations on most types of file systems\n"
+#~ "will be removed in an upcoming release.\n"
+#~ msgstr ""
+#~ "OPOZORILO: poskušate uporabiti %s za uporabo na datotečnem sistemu (%s).\n"
+#~ "Koda, ki spreminja datotečni sistem na %s ni tako dobro preverjena kot "
+#~ "v \n"
+#~ "posebnih določenih paketih kot na primer e2fsprog. Priporočamo,\n"
+#~ "da uporabite %s samo za spreminjanje tabel razdelkov, če je to mogoče.\n"
+#~ "Podpora za večino opravil na večini vrst datotečnih sistemov\n"
+#~ "bo odstranjena v prihajajoči izdaji.\n"
+
+#~ msgid "Source device?"
+#~ msgstr "Izvorna naprava?"
+
+#~ msgid "Source partition number?"
+#~ msgstr "Številka izvornega razdelka?"
+
+#~ msgid "Can't copy an extended partition."
+#~ msgstr "Razširjenega razdelka ni mogoče prekopirati."
+
+#~ msgid "Destination partition number?"
+#~ msgstr "Številka ciljnega razdelka?"
+
+#~ msgid ""
+#~ "An extended partition cannot hold a file system.  Did you want mkpart?"
+#~ msgstr ""
+#~ "Razširjen razdelek ne more vsebovati datotečnega sistema. Ste morda "
+#~ "želeli mkpart?"
+
+#~ msgid "Can't move an extended partition."
+#~ msgstr "Razširjenega razdelka ni mogoče premakniti."
+
+#~ msgid "Can't move a partition onto itself.  Try using resize, perhaps?"
+#~ msgstr ""
+#~ "Razdelka ni mogoče premakniti nase. Poskusite uporabiti spreminjanje "
+#~ "velikosti."
+
+#~ msgid "Minor: %d\n"
+#~ msgstr "Manjše število: %d\n"
+
+#~ msgid "Flags: %s\n"
+#~ msgstr "Zastavice: %s\n"
+
+#~ msgid "File System: %s\n"
+#~ msgstr "Datotečni sistem: %s\n"
+
+#~ msgid "Size:         "
+#~ msgstr "Velikost:         "
+
+#~ msgid "Minimum size: "
+#~ msgstr "Najmanjša velikost: "
+
+#~ msgid "Maximum size: "
+#~ msgstr "Največja velikost: "
+
+#~ msgid "check"
+#~ msgstr "check"
+
+#~ msgid ""
+#~ "check NUMBER                             do a simple check on the file "
+#~ "system"
+#~ msgstr ""
+#~ "check ŠTEVILO                            izvede enostavno preverjanje "
+#~ "datotečnega sistema"
+
+#~ msgid "cp"
+#~ msgstr "cp"
+
+#~ msgid ""
+#~ "cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   copy file system to another "
+#~ "partition"
+#~ msgstr ""
+#~ "cp [IZ-NAPRAVA] IZ-ŠTEVILKA V-ŠTEVILKA   prekopira datotečni sistem na "
+#~ "drug razdelek"
+
+#~ msgid "mkfs"
+#~ msgstr "mkfs"
+
+#~ msgid ""
+#~ "mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on "
+#~ "partition NUMBER"
+#~ msgstr ""
+#~ "mkfs ŠTEVILKA VRSTA-DS                   naredi datotečni sistem vrste "
+#~ "VRSTA-DS na razdelku ŠTEVILKA"
+
+#~ msgid "mkpartfs"
+#~ msgstr "mkpartfs"
+
+#~ msgid ""
+#~ "mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file "
+#~ "system"
+#~ msgstr ""
+#~ "mkpartfs VRSTA-RAZDELKA VRSTA-DS ZAČETEK KONEC     naredi razdelek z "
+#~ "datotečnim sistemom"
+
+#~ msgid "move"
+#~ msgstr "move"
+
+#~ msgid "move NUMBER START END                    move partition NUMBER"
+#~ msgstr "move ŠTEVILKA ZAČETEK KONEC              premakne razdelek ŠTEVILKA"
+
+#~ msgid "resize"
+#~ msgstr "resize"
+
+#~ msgid ""
+#~ "resize NUMBER START END                  resize partition NUMBER and its "
+#~ "file system"
+#~ msgstr ""
+#~ "resize ŠTEVILKA ZAČETEK KONEC            spremeni velikost razdelka "
+#~ "ŠTEVILKA in njegovega datotečnega sistema"
+
+#~ msgid "This is not an ECKD disk!  This disk type is not supported!"
+#~ msgstr "To ni disk EKCD! Ta vrsta diska ni podprta!"
diff --git a/po/stamp-po b/po/stamp-po
new file mode 100644 (file)
index 0000000..9788f70
--- /dev/null
@@ -0,0 +1 @@
+timestamp
diff --git a/po/sv.gmo b/po/sv.gmo
new file mode 100644 (file)
index 0000000..dfa4f05
Binary files /dev/null and b/po/sv.gmo differ
diff --git a/po/sv.po b/po/sv.po
new file mode 100644 (file)
index 0000000..b304d80
--- /dev/null
+++ b/po/sv.po
@@ -0,0 +1,3154 @@
+# Swedish messages for parted
+# Copyright (C) 2001, 2009 Free Software Foundation, Inc.
+# This file is distributed under the same license as the parted package.
+# Jörgen Tegnér <jorgen.tegner@telia.com>, 2001.
+# Daniel Nylander <po@danielnylander.se>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: parted 2.2\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2011-05-30 13:45+0200\n"
+"PO-Revision-Date: 2010-03-21 15:25+0100\n"
+"Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
+"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
+"Language: sv\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "Ogiltigt argument %s för %s"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "tvetydigt argument %s för %s"
+
+#: lib/argmatch.c:153
+#, c-format
+msgid "Valid arguments are:"
+msgstr "Giltiga argument är:"
+
+#: lib/closeout.c:112 libparted/labels/fdasd.c:107
+msgid "write error"
+msgstr "skrivfel"
+
+#: lib/error.c:181
+msgid "Unknown system error"
+msgstr "Okänt systemfel"
+
+#: lib/getopt.c:548 lib/getopt.c:577
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
+msgstr "%s: flaggan \"%s\" är tvetydig\n"
+
+#: lib/getopt.c:625 lib/getopt.c:629
+#, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s: flaggan \"--%s\" tillåter inget argument\n"
+
+#: lib/getopt.c:638 lib/getopt.c:643
+#, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr "%s: flaggan \"%c%s\" tillåter inget argument\n"
+
+#: lib/getopt.c:686 lib/getopt.c:705
+#, fuzzy, c-format
+msgid "%s: option '--%s' requires an argument\n"
+msgstr "%s: flaggan \"%s\" kräver ett argument\n"
+
+#: lib/getopt.c:743 lib/getopt.c:746
+#, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s: okänd flagga \"--%s\"\n"
+
+#: lib/getopt.c:754 lib/getopt.c:757
+#, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "%s: okänd flagga \"%c%s\"\n"
+
+#: lib/getopt.c:806 lib/getopt.c:809
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: ogiltig flagga -- \"%c\"\n"
+
+#: lib/getopt.c:859 lib/getopt.c:876 lib/getopt.c:1084 lib/getopt.c:1102
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: flaggan kräver ett argument -- \"%c\"\n"
+
+#: lib/getopt.c:932 lib/getopt.c:948
+#, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s: flaggan \"-W %s\" är tvetydig\n"
+
+#: lib/getopt.c:972 lib/getopt.c:990
+#, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr "%s: flaggan \"-W %s\" tillåter inget argument\n"
+
+#: lib/getopt.c:1011 lib/getopt.c:1029
+#, fuzzy, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: flaggan \"%s\" kräver ett argument\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:271
+msgid "`"
+msgstr "\""
+
+#: lib/quotearg.c:272
+msgid "'"
+msgstr "\""
+
+#: lib/regcomp.c:133
+msgid "Success"
+msgstr "Lyckades"
+
+#: lib/regcomp.c:136
+msgid "No match"
+msgstr "Ingen träff"
+
+#: lib/regcomp.c:139
+msgid "Invalid regular expression"
+msgstr "Ogiltigt reguljärt uttryck"
+
+#: lib/regcomp.c:142
+msgid "Invalid collation character"
+msgstr "Ogiltigt sorteringstecken"
+
+#: lib/regcomp.c:145
+msgid "Invalid character class name"
+msgstr "Ogiltigt teckenklassnamn"
+
+#: lib/regcomp.c:148
+msgid "Trailing backslash"
+msgstr "Efterföljande omvänt snedstreck"
+
+#: lib/regcomp.c:151
+msgid "Invalid back reference"
+msgstr "Ogiltig bakåtreferens"
+
+#: lib/regcomp.c:154
+msgid "Unmatched [ or [^"
+msgstr "Omatchat [ eller [^"
+
+#: lib/regcomp.c:157
+msgid "Unmatched ( or \\("
+msgstr "Omatchat ( eller \\("
+
+#: lib/regcomp.c:160
+msgid "Unmatched \\{"
+msgstr "Omatchat \\{"
+
+#: lib/regcomp.c:163
+msgid "Invalid content of \\{\\}"
+msgstr "Ogiltigt innehåll i \\{\\}"
+
+#: lib/regcomp.c:166
+msgid "Invalid range end"
+msgstr "Ogiltigt intervallslut"
+
+#: lib/regcomp.c:169
+msgid "Memory exhausted"
+msgstr "Slut på minne"
+
+#: lib/regcomp.c:172
+msgid "Invalid preceding regular expression"
+msgstr "Ogiltigt föregående reguljärt uttryck"
+
+#: lib/regcomp.c:175
+msgid "Premature end of regular expression"
+msgstr "För tidigt slut på reguljärt uttryck"
+
+#: lib/regcomp.c:178
+msgid "Regular expression too big"
+msgstr "Reguljärt uttryck är för stort"
+
+#: lib/regcomp.c:181
+msgid "Unmatched ) or \\)"
+msgstr "Omatchat ) eller \\)"
+
+#: lib/regcomp.c:702
+msgid "No previous regular expression"
+msgstr "Inga tidigare reguljära uttryck"
+
+#. TRANSLATORS: A regular expression testing for an affirmative answer
+#. (english: "yes").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^yesexpr='
+#: lib/rpmatch.c:147
+msgid "^[yY]"
+msgstr "^[jJyY]"
+
+#. TRANSLATORS: A regular expression testing for a negative answer
+#. (english: "no").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^noexpr='
+#: lib/rpmatch.c:160
+msgid "^[nN]"
+msgstr "^[nN]"
+
+#: lib/version-etc.c:74
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Paketerat av %s (%s)\n"
+
+#: lib/version-etc.c:77
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Paketerat av %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale.  Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:84
+msgid "(C)"
+msgstr "©"
+
+#: lib/version-etc.c:86
+msgid ""
+"\n"
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"\n"
+"Licens GPLv3+: GNU GPL version 3 eller senare <http://gnu.org/licenses/gpl."
+"html>.\n"
+"Detta är fri programvara: du får ändra och distribuera den.\n"
+"Det finns INGEN GARANTI, så långt som lagen tillåter.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:102
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Skrivet av %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:106
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Skrivet av %s och %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:110
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Skrivet av %s, %s och %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Skrivet av %s, %s, %s\n"
+"och %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Skrivet av %s, %s, %s,\n"
+"%s och %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:131
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Skrivet av %s, %s, %s,\n"
+"%s, %s och %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:139
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Skrivet av %s, %s, %s,\n"
+"%s, %s, %s och %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:147
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Skrivet av %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"och %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:156
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Skrivet av %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s och %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:167
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Skrivet av %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s och andra.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package.  Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:245
+#, c-format
+msgid ""
+"\n"
+"Report bugs to: %s\n"
+msgstr ""
+"\n"
+"Rapportera fel till: %s\n"
+"Skicka synpunkter på översättningen till <tp-sv@listor.tp-sv.se>\n"
+
+#: lib/version-etc.c:247
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "Rapportera fel i %s till: %s\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Webbplats för %s: <%s>\n"
+
+#: lib/version-etc.c:253
+#, c-format
+msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
+msgstr "Webbsida för %s: <http://www.gnu.org/software/%s/>\n"
+
+#: lib/version-etc.c:256
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
+msgstr ""
+"Allmän hjälp för hur man använder GNU-programvara: <http://www.gnu.org/"
+"gethelp/>\n"
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "slut på minne"
+
+#: lib/xstrtol-error.c:63
+#, c-format
+msgid "invalid %s%s argument `%s'"
+msgstr "ogiltigt %s%s-argument \"%s\""
+
+#: lib/xstrtol-error.c:68
+#, c-format
+msgid "invalid suffix in %s%s argument `%s'"
+msgstr "ogiltigt suffix i %s%s-argumentet \"%s\""
+
+#: lib/xstrtol-error.c:72
+#, c-format
+msgid "%s%s argument `%s' too large"
+msgstr "%s%s-argumentet \"%s\" är för stort"
+
+#: libparted/arch/beos.c:245
+msgid "Disk Image"
+msgstr "Diskavbildning"
+
+#: libparted/arch/beos.c:346 libparted/arch/gnu.c:277
+#: libparted/arch/linux.c:1545
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "Ett fel uppstod när %s öppnades: %s"
+
+#: libparted/arch/beos.c:357 libparted/arch/gnu.c:287
+#: libparted/arch/linux.c:1556
+#, c-format
+msgid "Unable to open %s read-write (%s).  %s has been opened read-only."
+msgstr ""
+"Kunde inte öppna %s för både läsning och skrivning (%s). %s öppnades i "
+"läsläge."
+
+#: libparted/arch/beos.c:419 libparted/arch/linux.c:1714
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s under positionering för att läsa på %s"
+
+#: libparted/arch/beos.c:452 libparted/arch/gnu.c:465 libparted/arch/gnu.c:564
+#: libparted/arch/gnu.c:692 libparted/arch/linux.c:1674
+#: libparted/arch/linux.c:1755
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s under läsning på %s"
+
+#: libparted/arch/beos.c:488 libparted/arch/gnu.c:525
+#: libparted/arch/linux.c:1831
+#, c-format
+msgid "Can't write to %s, because it is opened read-only."
+msgstr "Kan inte skriva till %s eftersom den är öppnad som skrivskyddad."
+
+#: libparted/arch/beos.c:504 libparted/arch/linux.c:1856
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s under positionering för att skriva på %s"
+
+#: libparted/arch/beos.c:541 libparted/arch/gnu.c:601 libparted/arch/gnu.c:646
+#: libparted/arch/gnu.c:723 libparted/arch/linux.c:1804
+#: libparted/arch/linux.c:1898 libparted/arch/linux.c:1970
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s under skrivning på %s"
+
+#: partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Prova \"%s --help\" för mer information.\n"
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr "Användning: %s [FLAGGA] [ENHET]...\n"
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the operating system about partition table changes.\n"
+"\n"
+"  -d, --dry-run    do not actually inform the operating system\n"
+"  -s, --summary    print a summary of contents\n"
+"  -h, --help       display this help and exit\n"
+"  -v, --version    output version information and exit\n"
+msgstr ""
+"Informera operativsystemet om ändringar i partitionstabell.\n"
+"\n"
+"  -d, --dry-run    testa med informera inte operativsystemet\n"
+"  -s, --summary    skriv ut ett sammandrag av innehållet\n"
+"  -h, --help       visa denna hjälp och avsluta\n"
+"  -v, --version    skriv ut versionsinformation och avsluta\n"
+
+#: partprobe/partprobe.c:150
+msgid ""
+"\n"
+"When no DEVICE is given, probe all partitions.\n"
+msgstr ""
+"\n"
+"När ingen ENHET har angivits, undersök alla partitioner.\n"
+
+#: partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Rapportera fel till <%s>.\n"
+"Skicka synpunkter på översättningen till <tp-sv@listor.tp-sv.se>.\n"
+
+#: libparted/arch/gnu.c:110
+#, c-format
+msgid "Unable to open %s."
+msgstr "Kunde inte öppna %s."
+
+#: libparted/arch/gnu.c:130
+#, fuzzy
+msgid "Unable to probe store."
+msgstr "Kunde inte placera partitionen på jämn cylindergräns."
+
+#: libparted/arch/gnu.c:368
+msgid ""
+"The partition table cannot be re-read.  This means you need to reboot before "
+"mounting any modified partitions.  You also need to reinstall your boot "
+"loader before you reboot (which may require mounting modified partitions).  "
+"It is impossible do both things!  So you'll need to boot off a rescue disk, "
+"and reinstall your boot loader from the rescue disk.  Read section 4 of the "
+"Parted User documentation for more information."
+msgstr ""
+"Partitionstabellen kunde inte läsas om. Det betyder att du behöver starta om "
+"datorn innan du kan montera några ändrade partitioner. Du måste också "
+"installera om starthanteraren innan du startar om (vilket kan innebära "
+"montering av ändrade partitioner). Det är omöjligt att göra båda! Du måste "
+"starta från en räddningsskiva och installera om starthanteraren från den. "
+"Läs kapitel fyra i Parteds användardokumentation för mer information."
+
+#: libparted/arch/gnu.c:385
+#, c-format
+msgid ""
+"The partition table on %s cannot be re-read (%s).  This means the Hurd knows "
+"nothing about any modifications you made.  You should reboot your computer "
+"before doing anything with %s."
+msgstr ""
+"Partitionstabellen på %s kan inte läsas om (%s). Det betyder att Hurd inte "
+"vet nånting om de ändringar du gjort. Du bör starta om datorn innan du gör "
+"nånting med %s."
+
+#: libparted/arch/gnu.c:396 parted/parted.c:1967
+msgid ""
+"You should reinstall your boot loader before rebooting.  Read section 4 of "
+"the Parted User documentation for more information."
+msgstr ""
+"Du bör installera om startprogrammet innan du startar om. Läs avsnitt fyra i "
+"Parteds användardokumentation för mer information."
+
+#: libparted/arch/gnu.c:788
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%s försöker att synkronisera %s till disk"
+
+#: libparted/arch/linux.c:520
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "Kunde inte ta status på enheten %s - %s."
+
+#: libparted/arch/linux.c:577
+#, c-format
+msgid "Unable to determine the dm type of %s."
+msgstr "Kunde inte fastställa dm-typen på %s."
+
+#: libparted/arch/linux.c:669
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+"Kunde inte fastställa sektorstorlek för %s: %s.\n"
+"Använder standardsektorstorleken (%lld)."
+
+#: libparted/arch/linux.c:690
+#, fuzzy, c-format
+msgid ""
+"Could not determine physical sector size for %s.\n"
+"Using the logical sector size (%lld)."
+msgstr ""
+"Kunde inte fastställa sektorstorlek för %s: %s.\n"
+"Använder standardsektorstorleken (%lld)."
+
+#: libparted/arch/linux.c:746
+#, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "Kunde inte fastställa storleken på %s (%s)."
+
+#: libparted/arch/linux.c:832
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "Kunde inte hitta identitet för enhet %s - %s"
+
+#: libparted/arch/linux.c:841
+msgid "Generic IDE"
+msgstr "Allmän IDE"
+
+#: libparted/arch/linux.c:862
+#, c-format
+msgid ""
+"Device %s has multiple (%d) logical sectors per physical sector.\n"
+"GNU Parted supports this EXPERIMENTALLY for some special disk label/file "
+"system combinations, e.g. GPT and ext2/3.\n"
+"Please consult the web site for up-to-date information."
+msgstr ""
+"Enheten %s har flera (%d) logiska sektorer per fysisk sektor.\n"
+"GNU Parted har EXPERIMENTIELLT stöd för detta för vissa speciella "
+"kombinationer av disketikett/filsystem, t.ex. GPT och ext2/3.\n"
+"Referera till webbsidan för uppdaterad information."
+
+#: libparted/arch/linux.c:1039
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "Ett fel uppstod vid initiering av SCSI-enheten %s - %s"
+
+#: libparted/arch/linux.c:1103
+#, fuzzy, c-format
+msgid ""
+"The device %s is so small that it cannot possibly store a file system or "
+"partition table.  Perhaps you selected the wrong device?"
+msgstr ""
+"Enheten %s har noll längd och kan omöjligt lagra ett filsystem eller "
+"partitionstabell.  Du kanske valde fel enhet?"
+
+#: libparted/arch/linux.c:1216
+#, c-format
+msgid ""
+"Unable to determine geometry of file/device %s.  You should not use Parted "
+"unless you REALLY know what you're doing!"
+msgstr ""
+"Kunde inte fastställa geometrin på filen/enheten %s. Du bör inte använda "
+"Parted såvida inte du VERKLIGEN vet vad du gör!"
+
+#: libparted/arch/linux.c:1276
+msgid "Generic SD/MMC Storage Card"
+msgstr "Allmänt SD/MMC-lagringskort"
+
+#: libparted/arch/linux.c:1329
+msgid "DAC960 RAID controller"
+msgstr "Styrkort för DAC960 RAID"
+
+#: libparted/arch/linux.c:1334
+msgid "Promise SX8 SATA Device"
+msgstr "Promise SX8 SATA-enhet"
+
+#: libparted/arch/linux.c:1339
+msgid "ATA over Ethernet Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1345
+msgid "IBM S390 DASD drive"
+msgstr "IBM S390 DASD-enhet"
+
+#: libparted/arch/linux.c:1351
+msgid "IBM iSeries Virtual DASD"
+msgstr "IBM iSeries virtuell DASD"
+
+#: libparted/arch/linux.c:1356
+msgid "Compaq Smart Array"
+msgstr "Compaq Smart Array"
+
+#: libparted/arch/linux.c:1361
+msgid "ATARAID Controller"
+msgstr "Styrkort för ATARAID"
+
+#: libparted/arch/linux.c:1366
+msgid "I2O Controller"
+msgstr "Styrkort för I2O"
+
+#: libparted/arch/linux.c:1371
+msgid "User-Mode Linux UBD"
+msgstr ""
+
+#: libparted/arch/linux.c:1384
+#, c-format
+msgid "Linux device-mapper (%s)"
+msgstr "Linux device-mapper (%s)"
+
+#: libparted/arch/linux.c:1395
+msgid "Xen Virtual Block Device"
+msgstr "Xen virtuell blockenhet"
+
+#: libparted/arch/linux.c:1400
+msgid "Unknown"
+msgstr "Okänd"
+
+#: libparted/arch/linux.c:1409
+msgid "Virtio Block Device"
+msgstr "Virtio-blockenhet"
+
+#: libparted/arch/linux.c:1414
+msgid "Linux Software RAID Array"
+msgstr ""
+
+#: libparted/arch/linux.c:1421
+msgid "ped_device_new()  Unsupported device type"
+msgstr "ped_device_new() Stöd saknas för den här enhetstypen"
+
+#: libparted/arch/linux.c:1518 libparted/arch/linux.c:1590
+#, fuzzy, c-format
+msgid "Error fsyncing/closing %s: %s"
+msgstr "Ett fel uppstod när %s öppnades: %s"
+
+#: libparted/arch/linux.c:1754
+#, c-format
+msgid "end of file while reading %s"
+msgstr ""
+
+#: libparted/arch/linux.c:2390
+#, fuzzy, c-format
+msgid ""
+"Error informing the kernel about modifications to partition %s -- %s.  This "
+"means Linux won't know about any changes you made to %s until you reboot -- "
+"so you shouldn't mount it or use it in any way before rebooting."
+msgstr ""
+"Kärnan kunde inte läsa om partitionstabellen på %s (%s). Det betyder att "
+"Linux inte vet nånting om de ändringar du gjort tills du har startar om "
+"datorn. Du bör starta om datorn innan du gör nånting med %s."
+
+#: libparted/arch/linux.c:2528
+#, fuzzy, c-format
+msgid "Unable to determine the size and length of %s."
+msgstr "Kunde inte fastställa storleken på %s (%s)."
+
+#: libparted/arch/linux.c:2553
+#, fuzzy, c-format
+msgid "Failed to add partition %d (%s)"
+msgstr "%s : Misslyckades med att läsa partitionsblock %llu\n"
+
+#: libparted/arch/linux.c:2580
+#, c-format
+msgid ""
+"Partition(s) %s on %s have been written, but we have been unable to inform "
+"the kernel of the change, probably because it/they are in use.  As a result, "
+"the old partition(s) will remain in use.  You should reboot now before "
+"making further changes."
+msgstr ""
+
+#: libparted/arch/linux.c:2706
+#, c-format
+msgid ""
+"parted was unable to re-read the partition table on %s (%s).  This means "
+"Linux won't know anything about the modifications you made. "
+msgstr ""
+"parted kunde inte läsa om partitionstabellen på %s (%s). Det betyder att "
+"Linux inte vet nånting om de ändringar du gjort."
+
+#: libparted/cs/geom.c:161
+#, fuzzy, c-format
+msgid "Can't have the end before the start! (start sector=%jd length=%jd)"
+msgstr "Kan inte ha slutet före början!"
+
+#: libparted/cs/geom.c:169
+msgid "Can't have a partition outside the disk!"
+msgstr "Kan inte ha en partition utanför hårddisken!"
+
+#: libparted/cs/geom.c:384
+#, c-format
+msgid "Attempt to write sectors %ld-%ld outside of partition on %s."
+msgstr "Försökte skriva sektorerna %ld-%ld utanför partitionen på %s."
+
+#: libparted/cs/geom.c:424
+msgid "checking for bad blocks"
+msgstr "letar efter felaktiga block"
+
+#: libparted/debug.c:96
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:109
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr "Försäkran (%s) på %s:%d i funktionen %s() misslyckades."
+
+#: libparted/disk.c:192
+#, c-format
+msgid "%s: unrecognised disk label"
+msgstr "%s: okänt disketikett"
+
+#: libparted/disk.c:484
+#, c-format
+msgid ""
+"This libparted doesn't have write support for %s.  Perhaps it was compiled "
+"read-only."
+msgstr ""
+"Denna libparted saknar skrivstöd för %s.  Kanske kompilerades den utan "
+"skrivstöd."
+
+#: libparted/disk.c:629
+#, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "Partition %d är %s, men filsystemet är %s."
+
+#: libparted/disk.c:838
+msgid "cylinder_alignment"
+msgstr ""
+
+#: libparted/disk.c:844
+#, c-format
+msgid "Unknown disk flag, %d."
+msgstr "Okänd diskflagga, %d."
+
+#: libparted/disk.c:1283
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "%s-disketiketter saknar stöd för utökade partitioner."
+
+#: libparted/disk.c:1858
+#, c-format
+msgid "%s disk labels don't support logical or extended partitions."
+msgstr "%s-disketiketter saknar stöd för logiska eller utökade partitioner."
+
+#: libparted/disk.c:1871
+msgid "Too many primary partitions."
+msgstr "För många primära partitioner."
+
+#: libparted/disk.c:1880
+#, c-format
+msgid ""
+"Can't add a logical partition to %s, because there is no extended partition."
+msgstr ""
+"Kan inte lägga till en logisk partition till %s, eftersom det saknas en "
+"utökad partition."
+
+#: libparted/disk.c:1904
+#, c-format
+msgid "Can't have more than one extended partition on %s."
+msgstr "Kan inte ha fler än en utökad partition på %s."
+
+#: libparted/disk.c:1914
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr "Kan inte ha logiska partitioner utanför den utökade partitionen."
+
+#: libparted/disk.c:1939
+#, c-format
+msgid "Can't have a logical partition outside of the extended partition on %s."
+msgstr "Kan inte ha en logisk partition utanför den utökade partitionen på %s."
+
+#: libparted/disk.c:1949 libparted/disk.c:2008 libparted/disk.c:2186
+msgid "Can't have overlapping partitions."
+msgstr "Kan inte ha överlappande partitioner."
+
+#: libparted/disk.c:1957
+msgid "Can't have a primary partition inside an extended partition."
+msgstr "Kan inte ha en primär partition inuti en utökad partition."
+
+#: libparted/disk.c:2387
+msgid "metadata"
+msgstr "metadata"
+
+#: libparted/disk.c:2389
+msgid "free"
+msgstr "ledigt"
+
+#: libparted/disk.c:2391 parted/ui.c:1194 parted/ui.c:1222
+msgid "extended"
+msgstr "utökat"
+
+#: libparted/disk.c:2393 parted/ui.c:1198 parted/ui.c:1226
+msgid "logical"
+msgstr "logiskt"
+
+#: libparted/disk.c:2395 parted/ui.c:1190 parted/ui.c:1218
+msgid "primary"
+msgstr "primär"
+
+#: libparted/disk.c:2411
+msgid "boot"
+msgstr "startbar"
+
+#: libparted/disk.c:2413
+msgid "bios_grub"
+msgstr "bios_grub"
+
+#: libparted/disk.c:2415
+msgid "root"
+msgstr "rot"
+
+#: libparted/disk.c:2417
+msgid "swap"
+msgstr "växlingsutrymme"
+
+#: libparted/disk.c:2419
+msgid "hidden"
+msgstr "dold"
+
+#: libparted/disk.c:2421
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2423
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2425
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2427
+msgid "hp-service"
+msgstr "hp-service"
+
+#: libparted/disk.c:2429
+msgid "palo"
+msgstr "palo"
+
+#: libparted/disk.c:2431
+msgid "prep"
+msgstr "prep"
+
+#: libparted/disk.c:2433
+msgid "msftres"
+msgstr "msftres"
+
+#: libparted/disk.c:2435
+msgid "atvrecv"
+msgstr ""
+
+#: libparted/disk.c:2437
+msgid "diag"
+msgstr ""
+
+#: libparted/disk.c:2439
+msgid "legacy_boot"
+msgstr ""
+
+#: libparted/disk.c:2445
+#, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Okänd partitionsflagga, %d."
+
+#: libparted/exception.c:77
+msgid "Information"
+msgstr "Information"
+
+#: libparted/exception.c:78
+msgid "Warning"
+msgstr "Varning"
+
+#: libparted/exception.c:79
+msgid "Error"
+msgstr "Fel"
+
+#: libparted/exception.c:80
+msgid "Fatal"
+msgstr "Ödesdiger"
+
+#: libparted/exception.c:81
+msgid "Bug"
+msgstr "Programfel"
+
+#: libparted/exception.c:82
+msgid "No Implementation"
+msgstr "Inte implementerat"
+
+#: libparted/exception.c:86
+msgid "Fix"
+msgstr "Reparera"
+
+#: libparted/exception.c:87
+msgid "Yes"
+msgstr "Ja"
+
+#: libparted/exception.c:88
+msgid "No"
+msgstr "Nej"
+
+#: libparted/exception.c:89
+msgid "OK"
+msgstr "OK"
+
+#: libparted/exception.c:90
+msgid "Retry"
+msgstr "Försök igen"
+
+#: libparted/exception.c:91
+msgid "Ignore"
+msgstr "Ignorera"
+
+#: libparted/exception.c:92
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: libparted/exception.c:132
+#, fuzzy, c-format
+msgid ""
+"A bug has been detected in GNU Parted.  Refer to the web site of parted "
+"http://www.gnu.org/software/parted/parted.html for more information of what "
+"could be useful for bug submitting!  Please email a bug report to %s "
+"containing at least the version (%s) and the following message:  "
+msgstr ""
+"Ett fel har upptäckts i GNU Parted.  Referera till webbsidan för parted "
+"http://www.gnu.org/software/parted/parted.html för mer information om vad "
+"som kan vara användbar information för en felrapport!  Skicka in "
+"felrapporten via e-post till bug-parted@gnu.org och inkludera åtminstone "
+"versionsnumret (%s) och följande meddelande:  "
+
+#: libparted/labels/aix.c:103
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr "Stöd för att läsa AIX-disketiketter är inte implementerat än."
+
+#: libparted/labels/aix.c:114
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr "Stöd för att skriva AIX-disketiketter är inte implementerat än."
+
+#: libparted/labels/aix.c:127
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr ""
+"Stöd för att lägga till partitioner till AIX-disketiketter är inte "
+"implementerat än."
+
+#: libparted/labels/aix.c:137
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr ""
+"Stöd för att duplicera partitioner i AIX-disketiketter är inte implementerat "
+"än."
+
+#: libparted/labels/aix.c:155
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr ""
+"Stöd för att ställa in systemtyp för partitioner i AIX-disketiketter är inte "
+"implementerat än."
+
+#: libparted/labels/aix.c:165
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr ""
+"Stöd för att ställa in flaggor i AIX-disketiketter är inte implementerat än."
+
+#: libparted/labels/bsd.c:571 libparted/labels/dasd.c:833
+#: libparted/labels/dos.c:2176 libparted/labels/dvh.c:787
+#: libparted/labels/gpt.c:1782 libparted/labels/loop.c:247
+#: libparted/labels/mac.c:1426 libparted/labels/pc98.c:748
+#: libparted/labels/rdb.c:1052 libparted/labels/sun.c:780
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "Kunde inte uppfylla alla begränsningar på partitionen."
+
+#: libparted/labels/bsd.c:596
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "Kunde inte allokera en plats i bsd-disketiketten."
+
+#: libparted/labels/dasd.c:859
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "Kunde inte allokera en plats i dasd-disketiketten"
+
+#: libparted/labels/dos.c:966
+#, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr "Ogiltig partitionstabell på %s -- felaktig signatur %x."
+
+#: libparted/labels/dos.c:994
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "Ogiltig partitionstabell - rekursiv partition på %s."
+
+#: libparted/labels/dos.c:1504
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr "Utökade partitioner kan inte gömmas i disketiketter av typen msdos."
+
+#: libparted/labels/dos.c:2158
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+"Parted kan inte ändra storlek på partitioner som hanteras av Windows Dynamic "
+"Disk."
+
+#: libparted/labels/dvh.c:200
+#, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr "%s har ingen utökad partition (partition för volymhuvud)."
+
+#: libparted/labels/dvh.c:326
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr ""
+"Kontrollsumman är felaktig, vilket indikerar att partitionstabellen är "
+"skadad."
+
+#: libparted/labels/dvh.c:631
+msgid "Only primary partitions can be root partitions."
+msgstr "Endast primära partitioner kan vara rotpartitioner."
+
+#: libparted/labels/dvh.c:645
+msgid "Only primary partitions can be swap partitions."
+msgstr "Endast primära partitioner kan vara växlingspartitioner."
+
+#: libparted/labels/dvh.c:659
+msgid "Only logical partitions can be a boot file."
+msgstr "Endast logiska partitioner kan vara en uppstartsfil."
+
+#: libparted/labels/dvh.c:736
+#, c-format
+msgid ""
+"failed to set dvh partition name to %s:\n"
+"Only logical partitions (boot files) have a name."
+msgstr ""
+"misslyckades med att ställa in dvh-partitionsnamnet till %s:\n"
+"Endast logiska partitioner (uppstartsfiler) har ett namn."
+
+#: libparted/labels/dvh.c:829
+msgid "Too many primary partitions"
+msgstr "För många primära partitioner"
+
+#: libparted/labels/fdasd.c:98
+msgid "open error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:101
+msgid "seek error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:104
+msgid "read error"
+msgstr "läsfel"
+
+#: libparted/labels/fdasd.c:110
+msgid "ioctl() error"
+msgstr "ioctl()-fel"
+
+#: libparted/labels/fdasd.c:114
+msgid "API version mismatch"
+msgstr "API-versionen stämmer inte"
+
+#: libparted/labels/fdasd.c:118
+msgid "Unsupported disk type"
+msgstr "Disktypen stöds inte"
+
+#: libparted/labels/fdasd.c:122
+msgid "Unsupported disk format"
+msgstr "Diskformatet stöds inte"
+
+#: libparted/labels/fdasd.c:126
+msgid "Disk is in use"
+msgstr "Disken används"
+
+#: libparted/labels/fdasd.c:130
+msgid "Syntax error in config file"
+msgstr "Syntaxfel i konfigurationsfilen"
+
+#: libparted/labels/fdasd.c:134
+msgid "Volume label is corrupted"
+msgstr "Volymetiketten är skadad"
+
+#: libparted/labels/fdasd.c:138
+msgid "A data set name is corrupted"
+msgstr ""
+
+#: libparted/labels/fdasd.c:142
+msgid "Memory allocation failed"
+msgstr "Minnesallokeringen misslyckades"
+
+#: libparted/labels/fdasd.c:146
+msgid "Device verification failed"
+msgstr "Enhetsverifieringen misslyckades"
+
+#: libparted/labels/fdasd.c:147
+msgid "The specified device is not a valid DASD device"
+msgstr "Den angivna enheten är inte en giltig DASD-enhet"
+
+#: libparted/labels/fdasd.c:150 libparted/labels/vtoc.c:179
+msgid "Fatal error"
+msgstr "Ödesdigert fel"
+
+#: libparted/labels/fdasd.c:226
+msgid "No room for volume label."
+msgstr "Ingen plats för volymetikett."
+
+#: libparted/labels/fdasd.c:234
+msgid "No room for partition info."
+msgstr "Inget utrymme för partitionsinformation."
+
+#: libparted/labels/fdasd.c:709
+msgid "Invalid VTOC."
+msgstr "Ogiltig VTOC."
+
+#: libparted/labels/fdasd.c:766
+msgid "Could not retrieve API version."
+msgstr "Kunde inte läsa av API-versionen."
+
+#: libparted/labels/fdasd.c:769
+#, c-format
+msgid ""
+"The current API version '%d' doesn't match dasd driver API version '%d'!"
+msgstr ""
+"Den aktuella API-versionen \"%d\" stämmer inte med API-versionen \"%d\" för "
+"dasd-drivrutinen!"
+
+#: libparted/labels/fdasd.c:806
+msgid "Could not retrieve disk geometry information."
+msgstr "Kunde inte läsa av information om diskgeometri."
+
+#: libparted/labels/fdasd.c:810
+msgid "Could not retrieve blocksize information."
+msgstr "Kunde inte läsa av information om blockstorlek."
+
+#: libparted/labels/fdasd.c:815
+msgid "Could not retrieve disk information."
+msgstr "Kunde inte läsa av diskinformationen."
+
+#: libparted/labels/gpt.c:493
+#, c-format
+msgid ""
+"%s contains GPT signatures, indicating that it has a GPT table.  However, it "
+"does not have a valid fake msdos partition table, as it should.  Perhaps it "
+"was corrupted -- possibly by a program that doesn't understand GPT partition "
+"tables.  Or perhaps you deleted the GPT table, and are now using an msdos "
+"partition table.  Is this a GPT partition table?"
+msgstr ""
+
+#: libparted/labels/gpt.c:693
+#, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise.  Please report this!"
+msgstr ""
+
+#: libparted/labels/gpt.c:740
+#, c-format
+msgid ""
+"Not all of the space available to %s appears to be used, you can fix the GPT "
+"to use all of the space (an extra %llu blocks) or continue with the current "
+"setting? "
+msgstr ""
+
+#: libparted/labels/gpt.c:952
+msgid ""
+"The backup GPT table is not at the end of the disk, as it should be.  This "
+"might mean that another operating system believes the disk is smaller.  Fix, "
+"by moving the backup to the end (and removing the old backup)?"
+msgstr ""
+
+#: libparted/labels/gpt.c:976
+msgid ""
+"Both the primary and backup GPT tables are corrupt.  Try making a fresh "
+"table, and using Parted's rescue feature to recover partitions."
+msgstr ""
+
+#: libparted/labels/gpt.c:987
+msgid ""
+"The backup GPT table is corrupt, but the primary appears OK, so that will be "
+"used."
+msgstr ""
+
+#: libparted/labels/gpt.c:999
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr ""
+
+#: libparted/labels/gpt.c:1023
+msgid "primary partition table array CRC mismatch"
+msgstr ""
+
+#: libparted/labels/mac.c:184
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Ogiltig signatur %x för en Mac-disketikett."
+
+#: libparted/labels/mac.c:231
+msgid "Partition map has no partition map entry!"
+msgstr "Partitionstabellen saknar uppgift om sig själv!"
+
+#: libparted/labels/mac.c:279
+#, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr "%s är för liten för en Mac-disketikett!"
+
+#: libparted/labels/mac.c:508
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "Partition %d har en ogiltig signatur %x."
+
+#: libparted/labels/mac.c:526
+#, c-format
+msgid "Partition %d has an invalid length of 0 bytes!"
+msgstr "Partition %d har en ogiltig längd, 0 byte!"
+
+#: libparted/labels/mac.c:557
+msgid "The data region doesn't start at the start of the partition."
+msgstr "Dataområdet börjar inte vid partitionens början."
+
+#: libparted/labels/mac.c:574
+msgid "The boot region doesn't start at the start of the partition."
+msgstr "Startområdet börjar inte vid partitionens början."
+
+#: libparted/labels/mac.c:588
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr "Partitionens startområde tar inte upp hela partitionens utrymme."
+
+#: libparted/labels/mac.c:599
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr "Partitionens dataområde tar inte upp hela partitionens utrymme."
+
+#: libparted/labels/mac.c:652
+#, c-format
+msgid ""
+"Weird block size on device descriptor: %d bytes is not divisible by 512."
+msgstr ""
+"Konstig blockstorlek på enhetens handtag: %d byte är inte jämnt delbart med "
+"512."
+
+#: libparted/labels/mac.c:665
+#, c-format
+msgid ""
+"The driver descriptor says the physical block size is %d bytes, but Linux "
+"says it is %d bytes."
+msgstr ""
+"Enhetens handtag påstår att den fysiska blockstorleken är %d byte, men Linux "
+"påstår att den är %d byte."
+
+#: libparted/labels/mac.c:719
+msgid "No valid partition map found."
+msgstr "Ingen giltig partitionstabell kunde hittas."
+
+#: libparted/labels/mac.c:780
+#, fuzzy, c-format
+msgid ""
+"Conflicting partition map entry sizes!  Entry 1 says it is %d, but entry %d "
+"says it is %d!"
+msgstr ""
+"Motsägelsefulla storleksdata i partitionstabellen! Post ett påstår sig vara "
+"%d medan post %d påstår sig vara %d!"
+
+#: libparted/labels/mac.c:811
+msgid "Weird!  There are 2 partitions map entries!"
+msgstr "Konstigt! Det finns 2 poster i partitionstabellen!"
+
+#: libparted/labels/mac.c:1357
+msgid ""
+"Changing the name of a root or swap partition will prevent Linux from "
+"recognising it as such."
+msgstr ""
+"Att ändra namnet på en rot- eller växlingspartition gör att Linux inte kan "
+"känna igen dem."
+
+#: libparted/labels/mac.c:1461
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr ""
+"Kan inte lägga till ytterligare en partition -- partitionstabellen är för "
+"liten!"
+
+#: libparted/labels/pc98.c:331
+#, c-format
+msgid "Invalid partition table on %s."
+msgstr "Ogiltig partitionstabell på %s."
+
+#: libparted/labels/pc98.c:384 libparted/labels/pc98.c:462
+#, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries.  This is still "
+"unsupported."
+msgstr ""
+"Partition %d ligger inte på jämna cylindergränser. Detta stöds fortfarande "
+"inte."
+
+#: libparted/labels/pc98.c:780
+msgid "Can't add another partition."
+msgstr "Kan inte lägga till ännu en partition."
+
+#: libparted/labels/pt-tools.c:125
+#, c-format
+msgid ""
+"partition length of %jd sectors exceeds the %s-partition-table-imposed "
+"maximum of %jd"
+msgstr ""
+"partitionslängden på %jd sektorer överstiger maximum för %s-partition-table-"
+"imposed på %jd"
+
+#: libparted/labels/pt-tools.c:138
+#, c-format
+msgid ""
+"starting sector number, %jd exceeds the %s-partition-table-imposed maximum "
+"of %jd"
+msgstr ""
+"sektornumret för början, %jd överstiger maximum för %s-partition-table-"
+"imposed maximum på %jd"
+
+#: libparted/labels/rdb.c:169
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr "%s : Felaktig kontrollsumma på block %llu av typen %s."
+
+#: libparted/labels/rdb.c:484
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr "%s : Hittade inte rdb-blocket. Detta ska aldrig hända."
+
+#: libparted/labels/rdb.c:573
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr "%s : Slinga upptäcktes på block %d."
+
+#: libparted/labels/rdb.c:592
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr "%s : %s-listan verkar vara felaktig på block %s."
+
+#: libparted/labels/rdb.c:691
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr "%s : Misslyckades med att lista felaktiga block."
+
+#: libparted/labels/rdb.c:699
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr "%s : Misslyckades med att lista partitionsblock."
+
+#: libparted/labels/rdb.c:707
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr "%s : Misslyckades med att lista filsystemsblock."
+
+#: libparted/labels/rdb.c:715
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr "%s : Misslyckades med att lista uppstartsblock."
+
+#: libparted/labels/rdb.c:742
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr "Misslyckades med att skriva partitionsblock på %d."
+
+#: libparted/labels/rdb.c:1080
+msgid "Unable to allocate a partition number."
+msgstr "Kunde inte allokera ett partitionsnummer."
+
+#: libparted/labels/sun.c:161
+msgid "Corrupted Sun disk label detected."
+msgstr "Skadad Sun-disketikett upptäcktes."
+
+#: libparted/labels/sun.c:276
+#, c-format
+msgid ""
+"The disk CHS geometry (%d,%d,%d) reported by the operating system does not "
+"match the geometry stored on the disk label (%d,%d,%d)."
+msgstr ""
+
+#: libparted/labels/sun.c:298
+#, c-format
+msgid "The disk label describes a disk bigger than %s."
+msgstr "Disketiketten beskriver en disk som är större än %s."
+
+#: libparted/labels/sun.c:473
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr "Disken har %d cylindrar, vilket är större än maximum som är 65536."
+
+#: libparted/labels/sun.c:812
+msgid ""
+"The Whole Disk partition is the only available one left.  Generally, it is "
+"not a good idea to overwrite this partition with a real one.  Solaris may "
+"not be able to boot without it, and SILO (the sparc boot loader) appreciates "
+"it as well."
+msgstr ""
+
+#: libparted/labels/sun.c:827
+msgid "Sun disk label is full."
+msgstr ""
+
+#: libparted/labels/vtoc.c:164
+msgid "opening of device failed"
+msgstr "öppning av enheten misslyckades"
+
+#: libparted/labels/vtoc.c:168
+msgid "seeking on device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:172
+msgid "writing to device failed"
+msgstr "skrivning till enheten misslyckades"
+
+#: libparted/labels/vtoc.c:176
+msgid "reading from device failed"
+msgstr "läsning från enheten misslyckades"
+
+#: libparted/labels/vtoc.c:299 libparted/labels/vtoc.c:308
+#: libparted/labels/vtoc.c:329 libparted/labels/vtoc.c:336
+msgid "Could not read volume label."
+msgstr "Kunde inte läsa volymetikett."
+
+#: libparted/labels/vtoc.c:356 libparted/labels/vtoc.c:363
+msgid "Could not write volume label."
+msgstr "Kunde inte skriva volymetikett."
+
+#: libparted/labels/vtoc.c:469
+msgid "Could not read VTOC labels."
+msgstr "Kunde inte läsa VTOC-etiketter."
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr "Kunde inte läsa VTOC FMT1 DSCB."
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr "Kunde inte läsa VTOC FMT4 DSCB."
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr "Kunde inte läsa VTOC FMT5 DSCB."
+
+#: libparted/labels/vtoc.c:496
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr "Kunde inte läsa VTOC FMT7 DSCB."
+
+#: libparted/labels/vtoc.c:516
+msgid "Could not write VTOC labels."
+msgstr "Kunde inte skriva VTOC-etiketter."
+
+#: libparted/labels/vtoc.c:522
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr "Kunde inte skriva VTOC FMT1 DSCB."
+
+#: libparted/labels/vtoc.c:529
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr "Kunde inte skriva VTOC FMT4 DSCB."
+
+#: libparted/labels/vtoc.c:536
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr "Kunde inte skriva VTOC FMT5 DSCB."
+
+#: libparted/labels/vtoc.c:543
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr "Kunde inte skriva VTOC FMT7 DSCB."
+
+#: libparted/libparted.c:230 libparted/libparted.c:245
+msgid "Out of memory."
+msgstr "Slut på minne."
+
+#: libparted/unit.c:138
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr ""
+
+#: libparted/unit.c:384
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr "\"%s\" innehåller en ogiltig syntax för platser."
+
+#: libparted/unit.c:392
+#, c-format
+msgid "The maximum head value is %d."
+msgstr "Det maximala värdet för huvud är %d."
+
+#: libparted/unit.c:399
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr "Det maximala värdet för sektorer är %d."
+
+#: libparted/unit.c:411 libparted/unit.c:556
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr "Platsen %s är utanför enheten %s."
+
+#: libparted/unit.c:531
+msgid "Invalid number."
+msgstr "Ogiltigt nummer."
+
+#: libparted/fs/amiga/affs.c:62 libparted/fs/amiga/apfs.c:55
+#: libparted/fs/amiga/asfs.c:69
+#, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "%s : Misslyckades med att allokera partitionsblock\n"
+
+#: libparted/fs/amiga/affs.c:77 libparted/fs/amiga/apfs.c:68
+#: libparted/fs/amiga/asfs.c:81
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr "%s : Misslyckades med att allokera block\n"
+
+#: libparted/fs/amiga/affs.c:82 libparted/fs/amiga/apfs.c:73
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr "%s : Kunde inte läsa startblock %llu\n"
+
+#: libparted/fs/amiga/affs.c:98 libparted/fs/amiga/apfs.c:84
+#: libparted/fs/amiga/asfs.c:87 libparted/fs/amiga/asfs.c:101
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr "%s : Kunde inte läsa rotblock %llu\n"
+
+#: libparted/fs/amiga/amiga.c:71
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:188
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr "%s : Kunde inte läsa block %llu\n"
+
+#: libparted/fs/amiga/amiga.c:201
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr "%s : Felaktig kontrollsumma på block %llu av typen %s\n"
+
+#: libparted/fs/amiga/amiga.c:211
+#, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s : Kunde inte skriva block %d\n"
+
+#: libparted/fs/amiga/amiga.c:277
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:288
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:317
+#, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr "%s : Misslyckades med att läsa partitionsblock %llu\n"
+
+#: libparted/fs/fat/fat.c:174
+msgid ""
+"GNU Parted was miscompiled: the FAT boot sector should be 512 bytes.  FAT "
+"support will be disabled."
+msgstr ""
+"GNU Parted kompilerades felaktigt: FAT-startsektorn skall vara 512 byte. "
+"Stödet för FAT kommer att inaktiveras."
+
+#: libparted/fs/fat/bootsector.c:49 libparted/fs/fat/bootsector.c:56
+msgid "File system has an invalid signature for a FAT file system."
+msgstr "Filsystemet har en ogiltig signatur för filsystem av typen FAT."
+
+#: libparted/fs/fat/bootsector.c:64
+msgid "File system has an invalid sector size for a FAT file system."
+msgstr ""
+"Filsystemet har en ogiltig sektorstorlek för ett filsystem av typen FAT."
+
+#: libparted/fs/fat/bootsector.c:71
+msgid "File system has an invalid cluster size for a FAT file system."
+msgstr ""
+"Filsystemet har en ogiltig klusterstorlek för ett filsystem av typen FAT."
+
+#: libparted/fs/fat/bootsector.c:78
+msgid ""
+"File system has an invalid number of reserved sectors for a FAT file system."
+msgstr ""
+"Filsystemet har ett ogiltigt antal reserverade sektorer för ett filsystem av "
+"typen FAT."
+
+#: libparted/fs/fat/bootsector.c:85
+msgid "File system has an invalid number of FATs."
+msgstr "Filsystemet har ett ogiltigt antal filallokeringstabeller."
+
+#: libparted/fs/fat/bootsector.c:156
+#, c-format
+msgid ""
+"This file system has a logical sector size of %d.  GNU Parted is known not "
+"to work properly with sector sizes other than 512 bytes."
+msgstr ""
+"Filsystemet har en logisk sektorstorlek på %d. Det är känt att GNU Parted "
+"inte fungerar bra med andra sektorstorlekar 512 byte."
+
+#: libparted/fs/fat/bootsector.c:181
+#, c-format
+msgid ""
+"The file system's CHS geometry is (%d, %d, %d), which is invalid.  The "
+"partition table's CHS geometry is (%d, %d, %d).  If you select Ignore, the "
+"file system's CHS geometry will be left unchanged.  If you select Fix, the "
+"file system's CHS geometry will be set to match the partition table's CHS "
+"geometry."
+msgstr ""
+"Filsystemets CHS-geometri är (%d, %d, %d), vilket är ogiltigt.  "
+"Partitionstabellens CHS-geometri är (%d, %d, %d).  Om du väljer Ignorera så "
+"kommer filsystemets CHS-geometri inte att ändras.  Om du väljer Reparera så "
+"kommer filsystemets CHS-geometri att ställas in för att matcha "
+"partitionstabellens CHS-geometri."
+
+#: libparted/fs/fat/bootsector.c:230
+msgid "FAT boot sector says logical sector size is 0.  This is weird. "
+msgstr ""
+"FAT-startsektorn menar att den logiska sektorstorleken är 0. Detta är "
+"märkligt."
+
+#: libparted/fs/fat/bootsector.c:236
+msgid "FAT boot sector says there are no FAT tables.  This is weird. "
+msgstr "FAT-startsektorn menar att det saknas FAT-tabeller. Detta är märkligt."
+
+#: libparted/fs/fat/bootsector.c:242
+msgid "FAT boot sector says clusters are 0 sectors.  This is weird. "
+msgstr ""
+"FAT-startsektorn menar att ett kluster består av 0 sektorer. Detta är "
+"märkligt."
+
+#: libparted/fs/fat/bootsector.c:252
+msgid "File system is FAT12, which is unsupported."
+msgstr "Filsystemet är FAT12, som inte stöds."
+
+#: libparted/fs/fat/bootsector.c:428
+#, c-format
+msgid ""
+"The information sector has the wrong signature (%x).  Select cancel for now, "
+"and send in a bug report.  If you're desperate, it's probably safe to ignore."
+msgstr ""
+"Informationssektorn har fel signatur (%x). Välj avbryt och skicka in en "
+"felrapport. Om du är desperat så är det troligen säkert att strunta i felet."
+
+#: libparted/fs/linux_swap/linux_swap.c:247
+#, fuzzy, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "Okänd signatur för Linux växlingsutrymme \\\"%10s\\\"."
+
+#: libparted/fs/linux_swap/linux_swap.c:290
+#, fuzzy, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "Okänd signatur för Linux växlingsutrymme \\\"%10s\\\"."
+
+#: libparted/fs/linux_swap/linux_swap.c:330
+#, fuzzy, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Okänd signatur för Linux växlingsutrymme \\\"%10s\\\"."
+
+#: libparted/fs/hfs/probe.c:50
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to "
+"%d bytes."
+msgstr ""
+
+#: parted/parted.c:123
+msgid "displays this help message"
+msgstr "visa den här hjälptexten"
+
+#: parted/parted.c:124
+msgid "lists partition layout on all block devices"
+msgstr "listar partitionslayout för alla blockenheter"
+
+#: parted/parted.c:125
+msgid "displays machine parseable output"
+msgstr "visar utskriften som maskintolkningsbar"
+
+#: parted/parted.c:126
+msgid "never prompts for user intervention"
+msgstr "frågar aldrig användaren om alternativ"
+
+#: parted/parted.c:127
+msgid "displays the version"
+msgstr "visar versionen"
+
+#: parted/parted.c:128
+#, fuzzy
+msgid "alignment for new partitions"
+msgstr "Kan inte skapa några fler partitioner."
+
+#: parted/parted.c:140
+msgid ""
+"NUMBER is the partition number used by Linux.  On MS-DOS disk labels, the "
+"primary partitions number from 1 to 4, logical partitions from 5 onwards.\n"
+msgstr ""
+"NUMMER är partitionsnumret som Linux använder. På disketiketter av typen MS-"
+"DOS är de primära partitionerna numrerade från 1 till 4, och de logiska "
+"partitionerna från 5 och uppåt.\n"
+
+#: parted/parted.c:143
+msgid "LABEL-TYPE is one of: "
+msgstr "PART-TYP är en av:"
+
+#: parted/parted.c:144
+msgid "FLAG is one of: "
+msgstr "FLAGGA är en av: "
+
+#: parted/parted.c:145
+msgid "UNIT is one of: "
+msgstr "ENHET är en av: "
+
+#: parted/parted.c:146
+msgid "desired alignment: minimum or optimal"
+msgstr ""
+
+#: parted/parted.c:147
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "PART-TYP är en av: primär, logisk, utökad\n"
+
+#: parted/parted.c:149
+msgid "FS-TYPE is one of: "
+msgstr "FS-TYP är en av: "
+
+#: parted/parted.c:150
+msgid ""
+"START and END are disk locations, such as 4GB or 10%.  Negative values count "
+"from the end of the disk.  For example, -1s specifies exactly the last "
+"sector.\n"
+msgstr ""
+"BÖRJAN och SLUT är platser på disken, såsom 4GB eller 10%.  Negativa värden "
+"räknas från slutet på disken.  Till exempel, -1s anger exakt den sista "
+"sektorn.\n"
+
+#: parted/parted.c:153
+msgid "STATE is one of: on, off\n"
+msgstr "TILLSTÅND är ett av: på, av\n"
+
+#: parted/parted.c:154
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "ENHET är vanligen /dev/hda eller /dev/sda\n"
+
+#: parted/parted.c:155
+msgid "NAME is any word you want\n"
+msgstr "NAMN är vilket ord du vill\n"
+
+#: parted/parted.c:158
+msgid ""
+"Copyright (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"This program is free software, covered by the GNU General Public License.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+msgstr ""
+"Upphovsrätt © 1998-2006 Free Software Foundation, Inc.\n"
+"Detta program är fri programvara och innefattas av GNU General Public "
+"License.\n"
+"\n"
+"Följande text är en informell översättning som enbart tillhandahålls i\n"
+"informativt syfte. För alla juridiska tolkningar gäller den engelska "
+"original-\n"
+"texten.\n"
+"\n"
+"Detta program distribueras i hopp om att det ska vara användbart, men UTAN\n"
+"NÅGON SOM HELST GARANTI, även utan underförstådd garanti om SÄLJBARHET "
+"eller\n"
+"LÄMPLIGHET FÖR NÅGOT SPECIELLT ÄNDAMÅL. Se GNU General Public License för\n"
+"ytterligare information.\n"
+"\n"
+
+#: parted/parted.c:204
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(tid kvar %.2d:%.2d)"
+
+#: parted/parted.c:223
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+"Partitionen %s används. Du måste avmontera den innan du kan ändra den med "
+"Parted."
+
+#: parted/parted.c:241
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "Partitionen på %s är i bruk."
+
+#: parted/parted.c:253
+#, c-format
+msgid ""
+"The existing disk label on %s will be destroyed and all data on this disk "
+"will be lost. Do you want to continue?"
+msgstr ""
+"Den befintliga disketiketten på %s kommer att förstöras och all data på "
+"denna disk kommer att gå förlorad. Vill du fortsätta?"
+
+#: parted/parted.c:502
+msgid "New disk label type?"
+msgstr "Ny typ av disketikett?"
+
+#: parted/parted.c:562
+msgid "Partition type?"
+msgstr "Partitionstyp?"
+
+#: parted/parted.c:580 parted/parted.c:766
+msgid "Partition name?"
+msgstr "Partitionsnamn?"
+
+#: parted/parted.c:588
+msgid "File system type?"
+msgstr "Filsystemstyp?"
+
+#: parted/parted.c:594 parted/parted.c:1342
+msgid "Start?"
+msgstr "Början?"
+
+#: parted/parted.c:596 parted/parted.c:1344
+msgid "End?"
+msgstr "Slut?"
+
+#: parted/parted.c:661
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s.%s"
+msgstr ""
+"Du begärde en partition från %s till %s.\n"
+"Den närmsta platsen vi kan hantera är %s till %s.%s"
+
+#: parted/parted.c:666
+msgid ""
+"\n"
+"Is this still acceptable to you?"
+msgstr ""
+"\n"
+"Är detta fortfarande godtagbart för dig?"
+
+#: parted/parted.c:688
+msgid "The resulting partition is not properly aligned for best performance."
+msgstr ""
+
+#: parted/parted.c:763 parted/parted.c:1383 parted/parted.c:1455
+#: parted/parted.c:1489
+msgid "Partition number?"
+msgstr "Partitionsnummer?"
+
+#: parted/parted.c:841
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d.  Each cylinder is %s.\n"
+msgstr ""
+"BIOS-geometri för cylinder,huvud,sektor: %d,%d,%d.  Varje cylinder är %s.\n"
+
+#: parted/parted.c:881
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr "Modell: %s (%s)\n"
+
+#: parted/parted.c:883
+#, c-format
+msgid "Disk %s: %s\n"
+msgstr "Disk %s: %s\n"
+
+#: parted/parted.c:884
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr "Sektorstorlek (logisk/fysisk): %lldB/%lldB\n"
+
+#: parted/parted.c:896
+#, c-format
+msgid "Partition Table: %s\n"
+msgstr "Partitionstabell: %s\n"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Number"
+msgstr "Nummer"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Start"
+msgstr "Början"
+
+#: parted/parted.c:1008 parted/parted.c:1011
+msgid "End"
+msgstr "Slut"
+
+#: parted/parted.c:1011
+msgid "Size"
+msgstr "Storlek"
+
+#: parted/parted.c:1015
+msgid "Type"
+msgstr "Typ"
+
+#: parted/parted.c:1017
+msgid "File system"
+msgstr "Filsystem"
+
+#: parted/parted.c:1020
+msgid "Name"
+msgstr "Namn"
+
+#: parted/parted.c:1022
+msgid "Flags"
+msgstr "Flaggor"
+
+#: parted/parted.c:1079
+msgid "Free Space"
+msgstr "Ledigt utrymme"
+
+#: parted/parted.c:1241
+#, c-format
+msgid ""
+"A %s %s partition was found at %s -> %s.  Do you want to add it to the "
+"partition table?"
+msgstr ""
+"En %s %s-partition hittades på %s -> %s.  Vill du lägga till den till "
+"partitionstabellen?"
+
+#: parted/parted.c:1280
+msgid "searching for file systems"
+msgstr "söker efter filsystem"
+
+#: parted/parted.c:1408
+msgid "New device?"
+msgstr "Ny enhet?"
+
+#: parted/parted.c:1453
+msgid "alignment type(min/opt)"
+msgstr ""
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d aligned\n"
+msgstr ""
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d not aligned\n"
+msgstr ""
+
+#: parted/parted.c:1491
+msgid "Flag to Invert?"
+msgstr "Flagga att invertera?"
+
+#: parted/parted.c:1496
+msgid "New state?"
+msgstr "Nytt tillstånd?"
+
+#: parted/parted.c:1533
+msgid "Unit?"
+msgstr "Enhet?"
+
+#: parted/parted.c:1651
+#, fuzzy
+msgid "align-check"
+msgstr "kontrollera"
+
+#: parted/parted.c:1654
+msgid ""
+"align-check TYPE N                        check partition N for TYPE(min|"
+"opt) alignment"
+msgstr ""
+
+#: parted/parted.c:1662
+msgid "help"
+msgstr "hjälp"
+
+#: parted/parted.c:1665
+msgid ""
+"help [COMMAND]                           print general help, or help on "
+"COMMAND"
+msgstr ""
+"hjälp [KOMMANDO]                         skriver ut allmän hjälp eller hjälp "
+"för KOMMANDO"
+
+#: parted/parted.c:1671
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:1671
+msgid "mktable"
+msgstr "mktable"
+
+#: parted/parted.c:1674
+msgid ""
+"mklabel,mktable LABEL-TYPE               create a new disklabel (partition "
+"table)"
+msgstr ""
+"mklabel,mktable ETIKETT-TYP              skapa en ny disketikett "
+"(partitionstabell)"
+
+#: parted/parted.c:1680
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:1683
+msgid "mkpart PART-TYPE [FS-TYPE] START END     make a partition"
+msgstr "mkpart PART-TYP [FS-TYP] BÖRJAN SLUT     skapa en partition"
+
+#: parted/parted.c:1689
+msgid ""
+"'mkpart' makes a partition without creating a new file system on the "
+"partition.  FS-TYPE may be specified to set an appropriate partition ID.\n"
+msgstr ""
+"\"mkpart\" skapar en partition utan att skapa ett nytt filsystem på "
+"partitionen. FS-TYP måste anges för att ställa in ett lämpligt partitions-"
+"id.\n"
+
+#: parted/parted.c:1694
+msgid "name"
+msgstr "namn"
+
+#: parted/parted.c:1697
+msgid "name NUMBER NAME                         name partition NUMBER as NAME"
+msgstr ""
+"namn NUMMER NAMN                         ge namnet NAMN till partition NUMMER"
+
+#: parted/parted.c:1702
+msgid "print"
+msgstr "visa"
+
+#: parted/parted.c:1705
+msgid ""
+"print [devices|free|list,all|NUMBER]     display the partition table, "
+"available devices, free space, all found partitions, or a particular "
+"partition"
+msgstr ""
+"visa [devices|free|list,all|NUMMER]      visa partitionstabellen, "
+"tillgängliga enheter, ledigt utrymme, alla partitioner som hittats, eller en "
+"specifik partition"
+
+#: parted/parted.c:1710
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+"Utan argument så skriver \"visa\" ut hela partitionstabellen. Dock kan "
+"diverse andra åtgärder genomföras med följande argument.\n"
+
+#: parted/parted.c:1712
+msgid "  devices   : display all active block devices\n"
+msgstr "  devices   : visa alla aktiva blockenheter\n"
+
+#: parted/parted.c:1713
+msgid ""
+"  free      : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+"  free      : visa information om ledigt, opartitionerat utrymme på den "
+"aktuella blockenheten\n"
+
+#: parted/parted.c:1715
+msgid ""
+"  list, all : display the partition tables of all active block devices\n"
+msgstr "  list, all : visa partitionstabellerna på alla aktiva blockenheter\n"
+
+#: parted/parted.c:1716
+msgid ""
+"  NUMBER    : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+"  NUMMER    : visa mer detaljerad information om denna specifika partition\n"
+
+#: parted/parted.c:1721
+msgid "quit"
+msgstr "avsluta"
+
+#: parted/parted.c:1724
+msgid "quit                                     exit program"
+msgstr "avsluta                                  avsluta programmet"
+
+#: parted/parted.c:1729
+msgid "rescue"
+msgstr "rädda"
+
+#: parted/parted.c:1732
+msgid ""
+"rescue START END                         rescue a lost partition near START "
+"and END"
+msgstr ""
+"rädda BÖRJAN SLUT                        rädda en förlorad partition nära "
+"BÖRJAN och SLUT"
+
+#: parted/parted.c:1738
+msgid "rm"
+msgstr "ta_bort"
+
+#: parted/parted.c:1741
+msgid "rm NUMBER                                delete partition NUMBER"
+msgstr "ta_bort NUMMER                           ta bort partition NUMMER"
+
+#: parted/parted.c:1746
+msgid "select"
+msgstr "välj"
+
+#: parted/parted.c:1749
+msgid "select DEVICE                            choose the device to edit"
+msgstr "välj ENHET                               välj enheten att redigera"
+
+#: parted/parted.c:1754
+msgid "set"
+msgstr "ställ_in"
+
+#: parted/parted.c:1757
+msgid ""
+"set NUMBER FLAG STATE                    change the FLAG on partition NUMBER"
+msgstr ""
+"ställ_in NUMMER FLAGGA TILLSTÅND         ändra FLAGGAn på partition NUMMER"
+
+#: parted/parted.c:1763
+msgid "toggle"
+msgstr "växla"
+
+#: parted/parted.c:1766
+msgid ""
+"toggle [NUMBER [FLAG]]                   toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+"växla [NUMMER [FLAGGA]]                  växla tillståndet för FLAGGA på "
+"partition NUMMER"
+
+#: parted/parted.c:1772
+msgid "unit"
+msgstr "enhet"
+
+#: parted/parted.c:1775
+msgid "unit UNIT                                set the default unit to UNIT"
+msgstr ""
+"enhet ENHET                              ställ in standardenheten till ENHET"
+
+#: parted/parted.c:1780
+msgid "version"
+msgstr "version"
+
+#: parted/parted.c:1783
+msgid ""
+"version                                  display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+"version                                  visa versionsnumret och "
+"upphovsrättslig information om GNU Parted"
+
+#: parted/parted.c:1787
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+"\"version\" visar information om version och upphovsrätt för denna kopia av "
+"GNU Parted\n"
+
+#: parted/parted.c:1855
+#, fuzzy, c-format
+msgid "Usage: %s [-hlmsv] [-a<align>] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr "Användning: %s [-hlmsv] [ENHET [KOMMANDO [PARAMETRAR]]...]\n"
+
+#: parted/parted.c:1899
+msgid "No device found"
+msgstr "Ingen enhet hittades"
+
+#: parted/parted.c:1936
+msgid "WARNING: You are not superuser.  Watch out for permissions."
+msgstr "VARNING: Du är inte superanvändare.  Se upp för rättighetsproblem."
+
+#: parted/parted.c:1974
+msgid "You may need to update /etc/fstab.\n"
+msgstr "Du kan behöva att uppdatera /etc/fstab.\n"
+
+#: parted/ui.c:162
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+"Välkommen till GNU Parted! Skriv \"hjälp\" för att visa en lista över "
+"kommandon.\n"
+
+#: parted/ui.c:165
+msgid ""
+"Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]\n"
+"Apply COMMANDs with PARAMETERS to DEVICE.  If no COMMAND(s) are given, run "
+"in\n"
+"interactive mode.\n"
+msgstr ""
+"Användning: parted [FLAGGA]... [ENHET [KOMMANDO [PARAMETRAR]...]...]\n"
+"Tillämpa KOMMANDOn med PARAMETRAR på ENHET. Om inga KOMMANDO(n) anges\n"
+"körs programmet i interaktivt läge.\n"
+
+#: parted/ui.c:170
+#, c-format
+msgid ""
+"\n"
+"\n"
+"You found a bug in GNU Parted! Here's what you have to do:\n"
+"\n"
+"Don't panic! The bug has most likely not affected any of your data.\n"
+"Help us to fix this bug by doing the following:\n"
+"\n"
+"Check whether the bug has already been fixed by checking\n"
+"the last version of GNU Parted that you can find at:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Please check this version prior to bug reporting.\n"
+"\n"
+"If this has not been fixed yet or if you don't know how to check,\n"
+"please visit the GNU Parted website:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"for further information.\n"
+"\n"
+"Your report should contain the version of this release (%s)\n"
+"along with the error message below, the output of\n"
+"\n"
+"\tparted DEVICE unit co print unit s print\n"
+"\n"
+"and the following history of commands you entered.\n"
+"Also include any additional information about your setup you\n"
+"consider important.\n"
+msgstr ""
+"\n"
+"\n"
+"Du har hittat ett fel i GNU Parted! Det här behöver du göra:\n"
+"\n"
+"Få inte panik! Felet har antagligen inte påverkat något av ditt data.\n"
+"Hjälp oss att rätta till detta fel genom att göra följande:\n"
+"\n"
+"Kontrollera huruvida felet redan har rättats till genom att kontrollera\n"
+"den senaste versionen av GNU Parted som du kan hitta på:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Kontrollera med denna version innan du rapporterar felet.\n"
+"\n"
+"Om det inte har rättats till än, eller om du inte vet hur du ska\n"
+"kontrollera det, så besök webbsidan för GNU Parted:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"för ytterligare information.\n"
+"\n"
+"Din rapport bör innehålla versionsnumret för denna utgåva (%s)\n"
+"tillsammans med felmeddelandet nedan samt utskriften från\n"
+"\n"
+"\tparted ENHET unit co print unit s print\n"
+"\n"
+"och följande kommandohistorik som du angav.\n"
+"Inkludera även ytterligare information om din konfiguration som\n"
+"du anser vara viktigt att veta.\n"
+
+#: parted/ui.c:291
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+"\n"
+"Kommandohistorik:\n"
+
+#: parted/ui.c:354
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+"\n"
+"Fel: SEGV_MAPERR (Address not mapped to object)\n"
+
+#: parted/ui.c:360
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+"\n"
+"Fel: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+
+#: parted/ui.c:365
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+"\n"
+"Fel: En allmän SIGSEGV-signal påträffades.\n"
+
+#: parted/ui.c:389
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+"\n"
+"Fel: FPE_INTDIV (Integer: divide by zero)"
+
+#: parted/ui.c:394
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+"\n"
+"Fel: FPE_INTOVF (Integer: overflow)"
+
+#: parted/ui.c:399
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+"\n"
+"Fel: FPE_FLTDIV (Float: divide by zero)"
+
+#: parted/ui.c:404
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+"\n"
+"Fel: FPE_FLTOVF (Float: overflow)"
+
+#: parted/ui.c:409
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+"\n"
+"Fel: FPE_FLTUND (Float: underflow)"
+
+#: parted/ui.c:414
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+"\n"
+"Fel: FPE_FLTRES (Float: inexact result)"
+
+#: parted/ui.c:419
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+"\n"
+"Fel: FPE_FLTINV (Float: invalid operation)"
+
+#: parted/ui.c:424
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+"\n"
+"Fel: FPE_FLTSUB (Float: subscript out of range)"
+
+#: parted/ui.c:429
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+"\n"
+"Fel: A general SIGFPE signal was encountered."
+
+#: parted/ui.c:453
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+"\n"
+"Fel: ILL_ILLOPC (Illegal Opcode)"
+
+#: parted/ui.c:458
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+"\n"
+"Fel: ILL_ILLOPN (Illegal Operand)"
+
+#: parted/ui.c:463
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+"\n"
+"Fel: ILL_ILLADR (Illegal addressing mode)"
+
+#: parted/ui.c:468
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+"\n"
+"Fel: ILL_ILLTRP (Illegal Trap)"
+
+#: parted/ui.c:473
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+"\n"
+"Fel: ILL_PRVOPC (Privileged Opcode)"
+
+#: parted/ui.c:478
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+"\n"
+"Fel: ILL_PRVREG (Privileged Register)"
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+"\n"
+"Fel: ILL_COPROC (Coprocessor Error)"
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+"\n"
+"Fel: ILL_BADSTK (Internal Stack Error)"
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+"\n"
+"Fel: En allmän SIGILL-signal påträffades."
+
+#: parted/ui.c:891
+#, c-format
+msgid "invalid token: %s"
+msgstr "ogiltigt token: %s"
+
+#: parted/ui.c:1048
+msgid "Expecting a partition number."
+msgstr "Förväntade ett partitionsnummer."
+
+#: parted/ui.c:1057
+msgid "Partition doesn't exist."
+msgstr "Partitionen finns inte."
+
+#: parted/ui.c:1077
+msgid "Expecting a file system type."
+msgstr "Förväntade en filsystemstyp."
+
+#: parted/ui.c:1084
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Okänd filsystemstyp \"%s\"."
+
+#: parted/ui.c:1105
+msgid "Expecting a disk label type."
+msgstr "Förväntade en typ av disketikett."
+
+#: parted/ui.c:1203
+msgid "Can't create any more partitions."
+msgstr "Kan inte skapa några fler partitioner."
+
+#: parted/ui.c:1213
+msgid "Expecting a partition type."
+msgstr "Förväntade en partitionstyp."
+
+#: parted/ui.c:1361
+msgid "on"
+msgstr "på"
+
+#: parted/ui.c:1362
+msgid "off"
+msgstr "av"
+
+#: parted/ui.c:1379
+msgid "optimal"
+msgstr "optimal"
+
+#: parted/ui.c:1380
+msgid "minimal"
+msgstr "minimal"
+
+#: parted/ui.c:1513
+msgid "OPTIONs:"
+msgstr "FLAGGOR:"
+
+#: parted/ui.c:1518
+msgid "COMMANDs:"
+msgstr "KOMMANDON:"
+
+#: parted/ui.c:1521
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Report bugs to %s\n"
+msgstr ""
+"\n"
+"Rapportera fel till: %s\n"
+"Skicka synpunkter på översättningen till <tp-sv@listor.tp-sv.se>\n"
+
+#: parted/ui.c:1528
+#, c-format
+msgid "Using %s\n"
+msgstr "Använder %s\n"
+
+#: parted/ui.c:1602
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr "Detta kommando är meningslöst i icke-interaktivt läge.\n"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]\n"
+#~ "  or:  %s DEVICE MINOR\n"
+#~ msgstr ""
+#~ "Användning: %s [FLAGGA]\n"
+#~ "  eller:  %s ENHET UNDRE\n"
+
+#~ msgid ""
+#~ "Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Töm oanvänt utrymme på en FAT-partition (ett testverktyg för GNU "
+#~ "Parted).\n"
+#~ "\n"
+
+#~ msgid "      --help     display this help and exit\n"
+#~ msgstr "      --help     visa denna hjälp och avsluta\n"
+
+#~ msgid "      --version  output version information and exit\n"
+#~ msgstr "      --version  skriv ut versionsinformation och avsluta\n"
+
+#~ msgid "too few arguments"
+#~ msgstr "för få argument"
+
+#~ msgid "too many arguments"
+#~ msgstr "för många argument"
+
+#~ msgid "invalid minor device number: %s"
+#~ msgstr "ogiltigt undre enhetsnummer: %s"
+
+#~ msgid "Could not detect file system."
+#~ msgstr "Kunde inte hitta något filsystem."
+
+#~ msgid "The file system is bigger than its volume!"
+#~ msgstr "Filsystemet är större än dess volym!"
+
+#~ msgid "Support for opening %s file systems is not implemented yet."
+#~ msgstr "Stöd för att öppna filsystem av typ %s är inte implementerat än."
+
+#~ msgid "Support for creating %s file systems is not implemented yet."
+#~ msgstr "Stöd för att skapa filsystem av typ %s är inte implementerat än."
+
+#~ msgid "Support for checking %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Stöd för att kontrollera filsystem av typ %s är inte implementerat än."
+
+#~ msgid "growing file system"
+#~ msgstr "växande filsystem"
+
+#~ msgid "Can't copy onto an overlapping partition."
+#~ msgstr "Kan inte kopiera till en överlappande partition."
+
+#~ msgid ""
+#~ "Direct support for copying file systems is not yet implemented for %s.  "
+#~ "However, support for resizing is implemented.  Therefore, the file system "
+#~ "can be copied if the new partition is at least as big as the old one.  "
+#~ "So, either shrink the partition you are trying to copy, or copy to a "
+#~ "bigger partition."
+#~ msgstr ""
+#~ "Direkt stöd för att kopiera filsystem är inte implementerat än för %s. "
+#~ "Dock finns det stöd för att ändra storleken. Därför kan filsystemet "
+#~ "kopieras om den nya partitionen är minst lika stor som den gamla. Så "
+#~ "antingen får du minska partitionen som du försöker kopiera, eller så "
+#~ "kopierar du till en större partition."
+
+#~ msgid "Support for copying %s file systems is not implemented yet."
+#~ msgstr "Stöd för att kopiera filsystem av typ %s är inte implementerat än."
+
+#~ msgid "Support for resizing %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Stöd för att ändra storlek på filsystem av typ %s är inte implementerat "
+#~ "än."
+
+#~ msgid "creating"
+#~ msgstr "skapar"
+
+#~ msgid "The file system is in an invalid state.  Perhaps it is mounted?"
+#~ msgstr ""
+#~ "Filsystemet befinner sig i ett ogiltigt tillstånd. Kanske är det monterat?"
+
+#~ msgid "The file system is in old (unresizeable) format."
+#~ msgstr ""
+#~ "Filsystemet använder ett gammalt format (inte möjligt att ändra storlek "
+#~ "på)."
+
+#~ msgid "Invalid free blocks count.  Run reiserfsck --check first."
+#~ msgstr "Ogiltigt antal lediga block.  Kör reiserfsck --check först."
+
+#~ msgid "checking"
+#~ msgstr "kontrollerar"
+
+#~ msgid "Reiserfs tree seems to be corrupted.  Run reiserfsck --check first."
+#~ msgstr "Reiserfs-trädet verkar vara skadat.  Kör reiserfsck --check först."
+
+#~ msgid ""
+#~ "The reiserfs file system passed a basic check.  For a more comprehensive "
+#~ "check, run reiserfsck --check."
+#~ msgstr ""
+#~ "Filsystemet (reiserfs) klarade en grundläggande kontroll. För en mer "
+#~ "genomgående kontroll, kör reiserfsck --check."
+
+#~ msgid "Sorry, can't move the start of reiserfs partitions yet."
+#~ msgstr "Tyvärr, kan inte flytta början av reiserfs-partitioner än."
+
+#~ msgid "shrinking"
+#~ msgstr "minskar"
+
+#~ msgid "expanding"
+#~ msgstr "expanderar"
+
+#~ msgid "Device is too small for %lu blocks."
+#~ msgstr "Enheten är för liten för %lu block."
+
+#~ msgid "copying"
+#~ msgstr "kopierar"
+
+#~ msgid "Couldn't resolve symbol %s.  Error: %s."
+#~ msgstr "Kunde inte slå upp symbolen %s.  Fel: %s."
+
+#~ msgid "GNU Parted found an invalid libreiserfs library."
+#~ msgstr "GNU Parted hittade ett ogiltigt libreiserfs-bibliotek."
+
+#~ msgid ""
+#~ "GNU Parted has detected libreiserfs interface version mismatch.  Found %d-"
+#~ "%d, required %d. ReiserFS support will be disabled."
+#~ msgstr ""
+#~ "GNU Parted har upptäckt ett versionsfel i gränssnittet mot libreiserfs.  "
+#~ "Hittade %d-%d, men kräver %d. ReiserFS-stödet kommer att vara inaktiverat."
+
+#~ msgid "Inconsistent group descriptors!"
+#~ msgstr "Inkonsistenta grupphandtag!"
+
+#~ msgid "File system full!"
+#~ msgstr "Filsystemet är fullt!"
+
+#~ msgid "Invalid superblock.  Are you sure this is an ext2 file system?"
+#~ msgstr ""
+#~ "Ogiltigt superblock. Är du säker på att det här är ett ext2-filsystem?"
+
+#~ msgid "File system has errors!  You should run e2fsck."
+#~ msgstr "Filsystemet innehåller fel!  Du bör köra e2fsck."
+
+#~ msgid ""
+#~ "File system was not cleanly unmounted!  You should run e2fsck.  Modifying "
+#~ "an unclean file system could cause severe corruption."
+#~ msgstr ""
+#~ "Filsystemet har inte avmonterats på rätt sätt! Du bör köra e2fsck.  "
+#~ "Ändring på ett inkorrekt filsystem kan orsaka allvarliga skador."
+
+#~ msgid ""
+#~ "File system has an incompatible feature enabled.  Compatible features are "
+#~ "has_journal, dir_index, filetype, sparse_super and large_file.  Use "
+#~ "tune2fs or debugfs to remove features."
+#~ msgstr ""
+#~ "Filsystemet har en inkompatibel funktion aktiverad.  Kompatibla "
+#~ "funktioner är has_journal, dir_index, filetype, sparse_super och "
+#~ "large_file.  Använd tune2fs eller debugfs för att ta bort funktioner."
+
+#~ msgid "Error allocating buffer cache."
+#~ msgstr "Kunde inte reservera buffercache"
+
+#~ msgid ""
+#~ "Found an inode with a incorrect link count.  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "Hittade en inode med felaktigt antal länkar. Bäst att du kör e2fsck först!"
+
+#~ msgid "Not enough free inodes!"
+#~ msgstr "Det finns inte tillräckligt många fria inoder!"
+
+#~ msgid "File system is too full to remove a group!"
+#~ msgstr "Filsystemet är för fullt för att ta bort en grupp!"
+
+#~ msgid "File system has too many allocated inodes to remove a group!"
+#~ msgstr ""
+#~ "Filsystemet har för många allokerade inoder för att ta bort en grupp!"
+
+#~ msgid "adding groups"
+#~ msgstr "lägger till grupper"
+
+#~ msgid "Your file system is too full to resize it to %i blocks.  Sorry."
+#~ msgstr ""
+#~ "Filsystemet är för fullt för att ändra dess storlek till %i block. Tyvärr."
+
+#~ msgid ""
+#~ "Your file system has too many occupied inodes to resize it to %i blocks.  "
+#~ "Sorry."
+#~ msgstr ""
+#~ "Ditt filsystem har för många upptagna inoder för att ändra dess storlek "
+#~ "till %i block. Tyvärr."
+
+#~ msgid "File system was not cleanly unmounted!  You should run e2fsck."
+#~ msgstr "Filsystemet har inte avmonterats på rätt sätt! Du bör köra e2fsck."
+
+#~ msgid ""
+#~ "The file system has the 'dir_index' feature enabled.  Parted can only "
+#~ "resize the file system if it disables this feature.  You can enable it "
+#~ "later by running 'tune2fs -O dir_index DEVICE' and then 'e2fsck -fD "
+#~ "DEVICE'."
+#~ msgstr ""
+#~ "Filsystemet har funktionen \"dir_index\" aktiverad.  Parted kan endast "
+#~ "ändra storlek på filsystemet om denna funktion är inaktiverad.  Du kan "
+#~ "aktivera den senare genom att köra \"tune2fs -O dir_index ENHET\" och "
+#~ "sedan \"e2fsck -fD ENHET\"."
+
+#~ msgid "Cross-linked blocks found!  Better go run e2fsck first!"
+#~ msgstr "Korslänkade block hittades! Bäst att du kör e2fsck först!"
+
+#~ msgid "Block %i has no reference?  Weird."
+#~ msgstr "Block %i har ingen referens? Konstigt."
+
+#~ msgid "Block %i shouldn't have been marked (%d, %d)!"
+#~ msgstr "Block %i borde inte ha markerats (%d, %d)!"
+
+#~ msgid ""
+#~ "The ext2 file system passed a basic check.  For a more comprehensive "
+#~ "check, use the e2fsck program."
+#~ msgstr ""
+#~ "Filsystemet (e2fs) klarade en grundläggande kontroll. För en mer "
+#~ "genomgående kontroll så använd programmet e2fsck."
+
+#~ msgid "Sorry, can't move the start of ext2 partitions yet!"
+#~ msgstr "Kan inte flytta en ext2-partitions början ännu!"
+
+#~ msgid "Couldn't flush buffer cache!"
+#~ msgstr "Kunde inte rensa buffercachen!"
+
+#~ msgid "File system too small for ext2."
+#~ msgstr "Filsystemet är för litet för ext2."
+
+#~ msgid ""
+#~ "You need %s of free disk space to shrink this partition to this size.  "
+#~ "Currently, only %s is free."
+#~ msgstr ""
+#~ "Du behöver %s ledigt diskutrymme för att minska storleken på den här "
+#~ "partitionen till angiven storlek. För närvarande är det endast %s."
+
+#~ msgid ""
+#~ "Cluster start delta = %d, which is not a multiple of the cluster size %d."
+#~ msgstr ""
+#~ "Klustrets startdifferens är %d, vilket inte är en multipel av "
+#~ "klusterstorleken %d"
+
+#~ msgid "Partition too big/small for a %s file system."
+#~ msgstr "Partitionen för stor/liten för ett filsystem av typen %s."
+
+#~ msgid ""
+#~ "The FATs don't match.  If you don't know what this means, then select "
+#~ "cancel, run scandisk on the file system, and then come back."
+#~ msgstr ""
+#~ "Filallokeringstabellerna stämmer inte överens. Om du inte vet vad detta "
+#~ "betyder, välj avbryt, kör scandisk på filsystemet och försök igen."
+
+#~ msgid "There are no possible configurations for this FAT type."
+#~ msgstr "Det finns inga möjliga kombinationer för den här sortens FAT."
+
+#~ msgid ""
+#~ "File system doesn't have expected sizes for Windows to like it.  Cluster "
+#~ "size is %dk (%dk expected); number of clusters is %d (%d expected); size "
+#~ "of FATs is %d sectors (%d expected)."
+#~ msgstr ""
+#~ "Filsystemet har inte en storlek som Windows gillar. Klusterstorleken är "
+#~ "%dk (%dk förväntas); antalet kluster är %d (%d förväntas); storleken på "
+#~ "FAT:arna är %d sektorer (%d förväntas)."
+
+#~ msgid ""
+#~ "File system is reporting the free space as %d clusters, not %d clusters."
+#~ msgstr "Filsystemet menar att det fria utrymmet är %d kluster, inte %d."
+
+#~ msgid ""
+#~ "There's not enough room in the root directory for all of the files.  "
+#~ "Either cancel, or ignore to lose the files."
+#~ msgstr ""
+#~ "Det finns inte tillräckligt med utrymme för alla filer i rotkatalogen. "
+#~ "Välj antingen att avbryta, eller ignorera och förlora filerna."
+
+#~ msgid "Error writing to the root directory."
+#~ msgstr "Ett fel uppstod vid skrivning till rotkatalogen."
+
+#~ msgid ""
+#~ "If you leave your file system as FAT16, then you will have no problems."
+#~ msgstr ""
+#~ "Om du låter filsystemet fortsätta vara FAT16 så kommer du inte att få "
+#~ "några problem."
+
+#~ msgid ""
+#~ "If you convert to FAT16, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual)."
+#~ msgstr ""
+#~ "Om du konverterar till FAT16 och MS Windows är installerad på den här "
+#~ "partitionen så måste du installera om MS Windows starthanterare. Om du "
+#~ "gör det bör du studera Parteds manual (eller din distributions manual)."
+
+#~ msgid ""
+#~ "If you leave your file system as FAT32, then you will not introduce any "
+#~ "new problems."
+#~ msgstr ""
+#~ "Om du låter filsystemet fortsätta vara FAT32 kommer du inte att "
+#~ "introducera några nya problem."
+
+#~ msgid ""
+#~ "If you convert to FAT32, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual).  Also, converting to FAT32 will make the file system unreadable "
+#~ "by MS DOS, MS Windows 95a, and MS Windows NT."
+#~ msgstr ""
+#~ "Om du konverterar till FAT32 och MS Windows är installerad på den här "
+#~ "partitionen måste du installera om MS Windows starthanterare. Om du gör "
+#~ "det bör du studera Parteds manual (eller din distributions manual). Märk "
+#~ "att genom att konvertera filsystemet till FAT32 kommer det inte att kunna "
+#~ "läsas av MS DOS, MS Windows 95a och MS Windows NT."
+
+#~ msgid "%s  %s  %s"
+#~ msgstr "%s  %s  %s"
+
+#~ msgid "Would you like to use FAT32?"
+#~ msgstr "Vill du använda FAT32?"
+
+#~ msgid "%s  %s"
+#~ msgstr "%s  %s"
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT16."
+#~ msgstr ""
+#~ "Filsystemet kan bara ändras till den här storleken genom att konvertera "
+#~ "till FAT16."
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT32."
+#~ msgstr ""
+#~ "Filsystemet kan bara ändras till den här storleken genom att konvertera "
+#~ "till FAT32."
+
+#~ msgid ""
+#~ "GNU Parted cannot resize this partition to this size.  We're working on "
+#~ "it!"
+#~ msgstr ""
+#~ "GNU Parted kan inte ändra partitionen till den här storleken. Vi arbetar "
+#~ "på en lösning!"
+
+#~ msgid "Bad directory entry for %s: first cluster is the end of file marker."
+#~ msgstr ""
+#~ "Felaktig katalogpost för %s: första klustret är en filslutsmarkering."
+
+#~ msgid ""
+#~ "Bad FAT: unterminated chain for %s.  You should run dosfsck or scandisk."
+#~ msgstr ""
+#~ "Trasig filallokeringstabell: ej avslutad kedja för %s. Du bör köra "
+#~ "dosfsck eller scandisk."
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d outside file system in chain for %s.  You should run "
+#~ "dosfsck or scandisk."
+#~ msgstr ""
+#~ "Trasig filallokeringstabell: kluster %d ligger utanför filsystemet i "
+#~ "kedja för %s. Du bör köra dosfsck eller scandisk."
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d is cross-linked for %s.  You should run dosfsck or "
+#~ "scandisk."
+#~ msgstr ""
+#~ "Trasig filallokeringstabell: kluster %d är korslänkad för %s. Du bör köra "
+#~ "dosfsck eller scandisk."
+
+#~ msgid "%s is %dk, but it has %d clusters (%dk)."
+#~ msgstr "%s är %dk, men den har %d kluster (%dk)."
+
+#~ msgid ""
+#~ "The file %s is marked as a system file.  This means moving it could cause "
+#~ "some programs to stop working."
+#~ msgstr ""
+#~ "Filen %s är markerad som en systemfil.  Det betyder att om den flyttas så "
+#~ "kan det orsaka att vissa program slutar att fungera."
+
+#~ msgid ""
+#~ "FAT %d media %x doesn't match the boot sector's media %x.  You should "
+#~ "probably run scandisk."
+#~ msgstr ""
+#~ "FAT %d media %x passar inte med startsektorns media %x. Du bör antagligen "
+#~ "köra scandisk."
+
+#~ msgid "fat_table_set: cluster %ld outside file system"
+#~ msgstr "fat_table_set: kluster %ld ligger utanför filsystemet"
+
+#~ msgid "fat_table_get: cluster %ld outside file system"
+#~ msgstr "fat_table_get: kluster %ld ligger utanför filsystemet"
+
+#~ msgid "fat_table_alloc_cluster: no free clusters"
+#~ msgstr "fat_table_alloc_cluster: inga lediga kluster"
+
+#~ msgid "Too many bad pages."
+#~ msgstr "För många dåliga sidor."
+
+#~ msgid "The file system contains errors."
+#~ msgstr "Filsystemet innehåller fel."
+
+#~ msgid "Bad blocks could not be read."
+#~ msgstr "Felaktiga block kunde inte läsas."
+
+#, fuzzy
+#~ msgid "Data relocation has failed."
+#~ msgstr "Minnesallokeringen misslyckades"
+
+#, fuzzy
+#~ msgid "writing HFS Master Directory Block"
+#~ msgstr "Ett fel uppstod vid skrivning till rotkatalogen."
+
+#~ msgid "Version %d of HFS+ isn't supported."
+#~ msgstr "Version %d av HFS+ stöds inte."
+
+#~ msgid "Version %d of HFSX isn't supported."
+#~ msgstr "Version %d av HFSX stöds inte."
+
+#~ msgid "Error while writing the allocation file."
+#~ msgstr "Fel vid skrivning av allokeringsfilen."
+
+#, fuzzy
+#~ msgid "Error while writing the compatibility part of the allocation file."
+#~ msgstr "Fel vid skrivning av allokeringsfilen."
+
+#~ msgid "shrinking embedded HFS+ volume"
+#~ msgstr "minskar inbäddad HFS+-volym"
+
+#~ msgid "Resizing the HFS+ volume has failed."
+#~ msgstr "Storleksändring av HFS+-volymen misslyckades."
+
+#, fuzzy
+#~ msgid "shrinking HFS wrapper"
+#~ msgstr "minskar"
+
+#, fuzzy
+#~ msgid "Updating the HFS wrapper has failed."
+#~ msgstr "Storleksändring av HFS+-volymen misslyckades."
+
+#, fuzzy
+#~ msgid "Journal offset or size is not multiple of the sector size."
+#~ msgstr ""
+#~ "Klustrets startdifferens är %d, vilket inte är en multipel av "
+#~ "klusterstorleken %d"
+
+#, fuzzy
+#~ msgid "Some header fields are not multiple of the sector size."
+#~ msgstr ""
+#~ "Klustrets startdifferens är %d, vilket inte är en multipel av "
+#~ "klusterstorleken %d"
+
+#~ msgid "Could not cache the file system in memory."
+#~ msgstr "Kunde inte mellanlagra filsystemet i minnet."
+
+#~ msgid "Bad blocks list could not be loaded."
+#~ msgstr "Listan över felaktiga block kunde inte läsas in."
+
+#~ msgid "The partition must have one of the following FS-TYPEs: "
+#~ msgstr "Partitionen måste ha en av följande FS-TYPer: "
+
+#~ msgid ""
+#~ "The existing file system will be destroyed and all data on the partition "
+#~ "will be lost. Do you want to continue?"
+#~ msgstr ""
+#~ "Det befintliga filsystemet kommer att förstöras och all data på "
+#~ "partitionen kommer att gå förlorad. Vill du fortsätta?"
+
+#~ msgid "Source device?"
+#~ msgstr "Källenhet?"
+
+#~ msgid "Source partition number?"
+#~ msgstr "Partitionsnummer för källan?"
+
+#~ msgid "Can't copy an extended partition."
+#~ msgstr "Kan inte kopiera en utökad partition."
+
+#~ msgid "Destination partition number?"
+#~ msgstr "Partitionsnummer för målet?"
+
+#~ msgid ""
+#~ "An extended partition cannot hold a file system.  Did you want mkpart?"
+#~ msgstr ""
+#~ "En utökad partition kan inte innehålla ett filsystem.  Ville du verkligen "
+#~ "köra mkpart?"
+
+#~ msgid "Can't move an extended partition."
+#~ msgstr "Kan inte flytta en utökad partition."
+
+#~ msgid "Can't move a partition onto itself.  Try using resize, perhaps?"
+#~ msgstr ""
+#~ "Kan inte flytta en partition till sig själv. Prova att ändra storleken "
+#~ "istället."
+
+#~ msgid "Minor: %d\n"
+#~ msgstr "Mindre: %d\n"
+
+#~ msgid "Flags: %s\n"
+#~ msgstr "Flaggor: %s\n"
+
+#~ msgid "File System: %s\n"
+#~ msgstr "Filsystem: %s\n"
+
+#~ msgid "Size:         "
+#~ msgstr "Storlek:      "
+
+#~ msgid "Minimum size: "
+#~ msgstr "Minsta storlek: "
+
+#~ msgid "Maximum size: "
+#~ msgstr "Största storlek: "
+
+#~ msgid "check"
+#~ msgstr "kontrollera"
+
+#~ msgid ""
+#~ "check NUMBER                             do a simple check on the file "
+#~ "system"
+#~ msgstr ""
+#~ "kontrollera NUMMER                       gör en enkel kontroll av "
+#~ "filsystemet"
+
+#~ msgid "cp"
+#~ msgstr "kopiera"
+
+#~ msgid ""
+#~ "cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   copy file system to another "
+#~ "partition"
+#~ msgstr ""
+#~ "kopiera [FRÅN ENHET] FRÅN-NUMMER TILL-NUMMER   kopiera ett filsystem till "
+#~ "en annan partition"
+
+#~ msgid "mkfs"
+#~ msgstr "mkfs"
+
+#, fuzzy
+#~ msgid ""
+#~ "mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on "
+#~ "partition NUMBER"
+#~ msgstr ""
+#~ "mkfs NUMMER FS-TYP                       skapa ett filsystem av typen FS-"
+#~ "TYP på partititon NUMMER"
+
+#~ msgid "mkpartfs"
+#~ msgstr "mkpartfs"
+
+#~ msgid ""
+#~ "mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file "
+#~ "system"
+#~ msgstr ""
+#~ "mkpartfs PART-TYP FS-TYP BÖRJAN SLUT     skapa en partition med ett "
+#~ "filsystem"
+
+#~ msgid "move"
+#~ msgstr "flytta"
+
+#~ msgid "move NUMBER START END                    move partition NUMBER"
+#~ msgstr "flytta NUMMER BÖRJAN SLUT                flytta partition NUMMER"
+
+#~ msgid "resize"
+#~ msgstr "ändra_storlek"
+
+#~ msgid ""
+#~ "resize NUMBER START END                  resize partition NUMBER and its "
+#~ "file system"
+#~ msgstr ""
+#~ "ändra_storlek NUMMER BÖRJAN SLUT         ändra storlek på partition "
+#~ "NUMMER och dess filsystem"
+
+#~ msgid "This is not an ECKD disk!  This disk type is not supported!"
+#~ msgstr "Detta är inte en ECKD-disk!  Denna disktyp stöds inte!"
+
+#~ msgid ""
+#~ "Device %s has a logical sector size of %lld.  Not all parts of GNU Parted "
+#~ "support this at the moment, and the working code is HIGHLY EXPERIMENTAL.\n"
+#~ msgstr ""
+#~ "Enheten %s har en logisk sektor-storlek på %lld.  Inte alla delar av GNU "
+#~ "Parted har stöd för detta för stunden, och den fungerande programkoden "
+#~ "för detta är MYCKET EXPERIMENTIELL.\n"
+
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: otillåten flagga -- %c\n"
+
+#~ msgid "Unable to determine the block size of this dasd"
+#~ msgstr "Kunde inte fastställa blockstorleken på denna dasd"
+
+#~ msgid ""
+#~ "The sector size on %s is %d bytes.  Parted is known not to work properly "
+#~ "with drives with sector sizes other than 512 bytes"
+#~ msgstr ""
+#~ "Sektorstorleken på %s är %d byte. Parted fungerar inte bra på skivor med "
+#~ "annan sektorstorlek än 512 byte"
+
+#~ msgid "Device %s has dodgey geometry."
+#~ msgstr "Enheten %s har märklig geometri."
+
+#~ msgid "unknown"
+#~ msgstr "okänd"
diff --git a/po/tr.gmo b/po/tr.gmo
new file mode 100644 (file)
index 0000000..bf664ba
Binary files /dev/null and b/po/tr.gmo differ
diff --git a/po/tr.po b/po/tr.po
new file mode 100644 (file)
index 0000000..5c23b40
--- /dev/null
+++ b/po/tr.po
@@ -0,0 +1,3341 @@
+# translation of parted-2.4.po to Turkish
+# This file is distributed under the same license as the parted package.
+# parted-2.4.po'nun Türkçe çevirisi
+# Copyright (C) 2011 Free Software Foundation, Inc.
+# E. Hakan Duran <hakan_duran@hotmail.com>, 2010, 2011.
+msgid ""
+msgstr ""
+"Project-Id-Version: parted-2.4\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2011-05-30 13:45+0200\n"
+"PO-Revision-Date: 2011-05-19 18:45-0500\n"
+"Last-Translator: E. Hakan Duran <hakan_duran@hotmail.com>\n"
+"Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
+"Language: tr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 1.0\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "%2$s için geçersiz argüman %1$s"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "%2$s için belirsiz argüman %1$s"
+
+#: lib/argmatch.c:153
+#, c-format
+msgid "Valid arguments are:"
+msgstr "Geçerli argümanlar şunlardır:"
+
+#: lib/closeout.c:112 libparted/labels/fdasd.c:107
+msgid "write error"
+msgstr "yazma hatası"
+
+#: lib/error.c:181
+msgid "Unknown system error"
+msgstr "Bilinmeyen sistem hatası"
+
+#: lib/getopt.c:548 lib/getopt.c:577
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
+msgstr "%s: '%s' seçeneği belirsiz\n"
+
+#: lib/getopt.c:625 lib/getopt.c:629
+#, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s: '--%s' seçeneği argümansız kullanılır\n"
+
+#: lib/getopt.c:638 lib/getopt.c:643
+#, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr "%s: '%c%s' seçeneği argümansız kullanılır\n"
+
+#: lib/getopt.c:686 lib/getopt.c:705
+#, c-format
+msgid "%s: option '--%s' requires an argument\n"
+msgstr "%s: '--%s' seçeneği için bir argüman gerekli\n"
+
+#: lib/getopt.c:743 lib/getopt.c:746
+#, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s: '--%s' seçeneği bilinmiyor\n"
+
+#: lib/getopt.c:754 lib/getopt.c:757
+#, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "%s: '%c%s' seçeneği bilinmiyor\n"
+
+#: lib/getopt.c:806 lib/getopt.c:809
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: geçersiz seçenek -- '%c'\n"
+
+#: lib/getopt.c:859 lib/getopt.c:876 lib/getopt.c:1084 lib/getopt.c:1102
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: seçenek için bir argüman gerekli -- '%c'\n"
+
+#: lib/getopt.c:932 lib/getopt.c:948
+#, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s: '-W %s' seçeneği belirsiz\n"
+
+#: lib/getopt.c:972 lib/getopt.c:990
+#, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr "%s: '-W %s' seçeneği argümansız kullanılır\n"
+
+#: lib/getopt.c:1011 lib/getopt.c:1029
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: '-W %s' seçeneği için bir argüman gerekli\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:271
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:272
+msgid "'"
+msgstr "'"
+
+#: lib/regcomp.c:133
+msgid "Success"
+msgstr "Başarılı"
+
+#: lib/regcomp.c:136
+msgid "No match"
+msgstr "Eşleşme yok"
+
+#: lib/regcomp.c:139
+msgid "Invalid regular expression"
+msgstr "Geçersiz düzenli ifade"
+
+#: lib/regcomp.c:142
+msgid "Invalid collation character"
+msgstr "Geçersiz harmanlama karakteri"
+
+#: lib/regcomp.c:145
+msgid "Invalid character class name"
+msgstr "Geçersiz karakter sınıfı ismi"
+
+#: lib/regcomp.c:148
+msgid "Trailing backslash"
+msgstr "İzleyen tersbölü"
+
+#: lib/regcomp.c:151
+msgid "Invalid back reference"
+msgstr "Geçersiz geriye başvuru"
+
+#: lib/regcomp.c:154
+msgid "Unmatched [ or [^"
+msgstr "[ ya da [^ eşleşmiyor"
+
+#: lib/regcomp.c:157
+msgid "Unmatched ( or \\("
+msgstr "( ya da \\( eşleşmiyor"
+
+#: lib/regcomp.c:160
+msgid "Unmatched \\{"
+msgstr "\\{ eşleşmiyor"
+
+#: lib/regcomp.c:163
+msgid "Invalid content of \\{\\}"
+msgstr "\\{\\} in içeriği geçersiz"
+
+#: lib/regcomp.c:166
+msgid "Invalid range end"
+msgstr "Geçersiz kapsam sonu"
+
+#: lib/regcomp.c:169
+msgid "Memory exhausted"
+msgstr "Bellek tükendi"
+
+#: lib/regcomp.c:172
+msgid "Invalid preceding regular expression"
+msgstr "Geçersiz önceki düzenli ifade"
+
+#: lib/regcomp.c:175
+msgid "Premature end of regular expression"
+msgstr "Düzenli ifadenin sonu eksik"
+
+#: lib/regcomp.c:178
+msgid "Regular expression too big"
+msgstr "Düzenli ifade çok büyük"
+
+#: lib/regcomp.c:181
+msgid "Unmatched ) or \\)"
+msgstr ") ya da  \\) eşleşmiyor"
+
+#: lib/regcomp.c:702
+msgid "No previous regular expression"
+msgstr "Daha önce düzenli ifade yok"
+
+#. TRANSLATORS: A regular expression testing for an affirmative answer
+#. (english: "yes").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^yesexpr='
+#: lib/rpmatch.c:147
+msgid "^[yY]"
+msgstr "^[eE]"
+
+#. TRANSLATORS: A regular expression testing for a negative answer
+#. (english: "no").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^noexpr='
+#: lib/rpmatch.c:160
+msgid "^[nN]"
+msgstr "^[hH]"
+
+#: lib/version-etc.c:74
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "%s (%s) tarafından paketlendi\n"
+
+#: lib/version-etc.c:77
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "%s tarafından paketlendi\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale.  Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:84
+msgid "(C)"
+msgstr "(C)"
+
+#: lib/version-etc.c:86
+msgid ""
+"\n"
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"\n"
+"Lisans GPLv3+: GNU GPL sürüm 3 ya da sonrası <http://gnu.org/licenses/gpl."
+"html>\n"
+"Bu özgür yazılımdır: değiştirmek ve yeniden dağıtmakta özgürsünüz.\n"
+"Yasal olarak izin verildiği ölçüde GARANTİ YOKTUR.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:102
+#, c-format
+msgid "Written by %s.\n"
+msgstr "%s tarafından yazıldı.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:106
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "%s ve %s tarafından yazıldı.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:110
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "%s, %s ve %s taraından yazıldı.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"%s, %s, %s ve %s\n"
+"tarafından yazıldı.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"%s, %s, %s, %s ve %s\n"
+"tarafından yazıldı.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:131
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"%1$s, %2$s, %3$s, %4$s,\n"
+"%5$s ve %6$s tarafından yazıldı.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:139
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"%1$s, %2$s, %3$s, %4$s,\n"
+"%5$s, %6$s ve %7$s tarafından yazıldı.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:147
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"%1$s, %2$s, %3$s, %4$s,\n"
+"%5$s %6$s, %7$s ve %8$s\n"
+"tarafından yazıldı.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:156
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"%1$s, %2$s, %3$s, %4$s,\n"
+"%5$s %6$s, %7$s, %8$s ve\n"
+"%9$s tarafından yazıldı.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:167
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"%1$s, %2$s, %3$s, %4$s,\n"
+"%5$s %6$s, %7$s, %8$s,\n"
+"%9$s ve diğerleri tarafından yazıldı.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package.  Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:245
+#, c-format
+msgid ""
+"\n"
+"Report bugs to: %s\n"
+msgstr ""
+"\n"
+"Yazılım hatalarını %s'e bildirin.\n"
+
+#: lib/version-etc.c:247
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "%s hatalarını %s'e bildirin.\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s başlangıç sayfası: <%s>\n"
+
+#: lib/version-etc.c:253
+#, c-format
+msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
+msgstr "%s başlangıç sayfası: <http://www.gnu.org/software/%s/>\n"
+
+#: lib/version-etc.c:256
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
+msgstr "GNU yazılımı kullanmada genel yardım: <http://www.gnu.org/gethelp/>\n"
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "bellek tükendi"
+
+#: lib/xstrtol-error.c:63
+#, c-format
+msgid "invalid %s%s argument `%s'"
+msgstr "geçersiz %s%s argüman `%s'"
+
+#: lib/xstrtol-error.c:68
+#, c-format
+msgid "invalid suffix in %s%s argument `%s'"
+msgstr "%s%s argümanında geçersiz sonek `%s'"
+
+#: lib/xstrtol-error.c:72
+#, c-format
+msgid "%s%s argument `%s' too large"
+msgstr "%s%s argümanı `%s' çok büyük"
+
+#: libparted/arch/beos.c:245
+msgid "Disk Image"
+msgstr "Disk Görüntüsü"
+
+#: libparted/arch/beos.c:346 libparted/arch/gnu.c:277
+#: libparted/arch/linux.c:1545
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "%1$s açarken hata: %2$s"
+
+#: libparted/arch/beos.c:357 libparted/arch/gnu.c:287
+#: libparted/arch/linux.c:1556
+#, c-format
+msgid "Unable to open %s read-write (%s).  %s has been opened read-only."
+msgstr ""
+"%1$s oku-yaz şeklinde açılamıyor (%2$s).  %3$s salt-okunur olarak açıldı."
+
+#: libparted/arch/beos.c:419 libparted/arch/linux.c:1714
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%2$s'te okuma için arama sırasında %1$s"
+
+#: libparted/arch/beos.c:452 libparted/arch/gnu.c:465 libparted/arch/gnu.c:564
+#: libparted/arch/gnu.c:692 libparted/arch/linux.c:1674
+#: libparted/arch/linux.c:1755
+#, c-format
+msgid "%s during read on %s"
+msgstr "%2$s'i okuma sırasında %1$s"
+
+#: libparted/arch/beos.c:488 libparted/arch/gnu.c:525
+#: libparted/arch/linux.c:1831
+#, c-format
+msgid "Can't write to %s, because it is opened read-only."
+msgstr "%s'e yazılamıyor, çünkü salt-okunur olarak açılmış."
+
+#: libparted/arch/beos.c:504 libparted/arch/linux.c:1856
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%2$s'e yazma için arama sırasında %1$s"
+
+#: libparted/arch/beos.c:541 libparted/arch/gnu.c:601 libparted/arch/gnu.c:646
+#: libparted/arch/gnu.c:723 libparted/arch/linux.c:1804
+#: libparted/arch/linux.c:1898 libparted/arch/linux.c:1970
+#, c-format
+msgid "%s during write on %s"
+msgstr "%2$s'e yazma sırasında %1$s"
+
+#: partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Daha fazla bilgi için `%s --help' yazın.\n"
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr "Kullanım: %s [SEÇENEK] [AYGIT]...\n"
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the operating system about partition table changes.\n"
+"\n"
+"  -d, --dry-run    do not actually inform the operating system\n"
+"  -s, --summary    print a summary of contents\n"
+"  -h, --help       display this help and exit\n"
+"  -v, --version    output version information and exit\n"
+msgstr ""
+"İşletim sistemini disk bölümleme tablosu değişikliklerinden haberdar eder.\n"
+"\n"
+"  -d, --dry-run    işletim sistemini haberdar etmez\n"
+"  -s, --summary    içeriğin bir özetini basar\n"
+"  -h, --help       bu yardımı görüntüler ve çıkar\n"
+"  -v, --version    sürüm bilgisini çıkartır ve çıkar\n"
+
+#: partprobe/partprobe.c:150
+msgid ""
+"\n"
+"When no DEVICE is given, probe all partitions.\n"
+msgstr ""
+"\n"
+"AYGIT verilmediğinde, tüm disk bölümlerini yokla.\n"
+
+#: partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Yazılım hatalarını <%s>'e bildirin.\n"
+
+#: libparted/arch/gnu.c:110
+#, c-format
+msgid "Unable to open %s."
+msgstr "%s açılamadı."
+
+#: libparted/arch/gnu.c:130
+msgid "Unable to probe store."
+msgstr "Depo sondalanamadı."
+
+#: libparted/arch/gnu.c:368
+msgid ""
+"The partition table cannot be re-read.  This means you need to reboot before "
+"mounting any modified partitions.  You also need to reinstall your boot "
+"loader before you reboot (which may require mounting modified partitions).  "
+"It is impossible do both things!  So you'll need to boot off a rescue disk, "
+"and reinstall your boot loader from the rescue disk.  Read section 4 of the "
+"Parted User documentation for more information."
+msgstr ""
+"Disk bölümleme tablosu yeniden okunamadı, bu nedenle değiştirilmiş herhangi "
+"bir disk bölümünü bağlamadan (bilgisayarı) yeniden açmalısınız.  Yeniden "
+"açmadan önce önyükleyicinizi de yeniden kurmalısınız (ki bu değiştirilmiş "
+"disk bölümlerini bağlamayı gerektirebilir).  İki şeyi birden yapmak "
+"olanaksız!  Dolayısıyla, bir kurtarma diskiyle açmanız ve önyükleyicinizi bu "
+"diskten yeniden kurmanız gerekecek.  Daha fazla bilgi için Parted Kullanıcı "
+"belgesinin 4. bölümünü okuyunuz."
+
+#: libparted/arch/gnu.c:385
+#, c-format
+msgid ""
+"The partition table on %s cannot be re-read (%s).  This means the Hurd knows "
+"nothing about any modifications you made.  You should reboot your computer "
+"before doing anything with %s."
+msgstr ""
+"%1$s (%2$s) üzerindeki disk bölümleme tablosu.  Bu, sizin yaptığınız "
+"değişiklikleri Hurd bilmiyor anlamına gelir.  %3$s ile ilgili hiçbir şey "
+"yapmadan önce bilgisayarınızı yeniden açmalısınız."
+
+#: libparted/arch/gnu.c:396 parted/parted.c:1967
+msgid ""
+"You should reinstall your boot loader before rebooting.  Read section 4 of "
+"the Parted User documentation for more information."
+msgstr ""
+"Yeniden açmadan önce önyükleyicinizi yeniden kurmalısınız.  Daha fazla bilgi "
+"için Parted Kullanıcı belgesinin 4. bölümünü okuyunuz."
+
+#: libparted/arch/gnu.c:788
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%1$s %2$s diske eşzamanlanmaya çalışılıyor"
+
+#: libparted/arch/linux.c:520
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "Dosya durum bilgisi alınamayan aygıt %s - %s."
+
+#: libparted/arch/linux.c:577
+#, c-format
+msgid "Unable to determine the dm type of %s."
+msgstr "%s'in dm türü belirlenemedi."
+
+#: libparted/arch/linux.c:669
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+"%1$s: %2$s için sektör boyutu belirlenemiyor.\n"
+"Öntanımlı sektör boyutu (%3$lld) kullanılacak."
+
+#: libparted/arch/linux.c:690
+#, c-format
+msgid ""
+"Could not determine physical sector size for %s.\n"
+"Using the logical sector size (%lld)."
+msgstr ""
+"%s için fiziksel sektör boyutu belirlenemiyor.\n"
+"Mantıksal sektör boyutu (%lld) kullanılacak."
+
+#: libparted/arch/linux.c:746
+#, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "%1$s (%2$s)'in boyutu belirlenemedi"
+
+#: libparted/arch/linux.c:832
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "%s - %s aygıtının kimliği alınamadı "
+
+#: libparted/arch/linux.c:841
+msgid "Generic IDE"
+msgstr "Genel IDE"
+
+#: libparted/arch/linux.c:862
+#, c-format
+msgid ""
+"Device %s has multiple (%d) logical sectors per physical sector.\n"
+"GNU Parted supports this EXPERIMENTALLY for some special disk label/file "
+"system combinations, e.g. GPT and ext2/3.\n"
+"Please consult the web site for up-to-date information."
+msgstr ""
+"Aygıt %s fiziksel sektör başına çok sayıda (%d) mantıksal sektör içeriyor.\n"
+"GNU Parted bunu DENEYSEL olarak bazı disk etiketi/dosya sistemi "
+"kombinasyonları için destekliyor, örneğin GPT ve ext2/3.\n"
+"Lütfen güncel bilgi için web sitesine başvurun."
+
+#: libparted/arch/linux.c:1039
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "%s - %s SCSI aygıtını ilklendirmede hata"
+
+#: libparted/arch/linux.c:1103
+#, c-format
+msgid ""
+"The device %s is so small that it cannot possibly store a file system or "
+"partition table.  Perhaps you selected the wrong device?"
+msgstr ""
+"%s aygıtı.çok küçük olduğundan muhtemelen bir dosya sistemi ya da bölümleme "
+"tablosu depolayamıyor.  Yanlış aygıtı seçmiş olmayasınız?"
+
+#: libparted/arch/linux.c:1216
+#, c-format
+msgid ""
+"Unable to determine geometry of file/device %s.  You should not use Parted "
+"unless you REALLY know what you're doing!"
+msgstr ""
+"%s Dosya/aygıtının geometrisi belirlenemedi.  CİDDEN ne yaptığınızı "
+"bilmiyorsanız Parted kullanmamalısınız!"
+
+#: libparted/arch/linux.c:1276
+msgid "Generic SD/MMC Storage Card"
+msgstr "Genel SD/MMC Bellek Kartı"
+
+#: libparted/arch/linux.c:1329
+msgid "DAC960 RAID controller"
+msgstr "DAC960 RAID denetleyici"
+
+#: libparted/arch/linux.c:1334
+msgid "Promise SX8 SATA Device"
+msgstr "Promise SX8 SATA Aygıtı"
+
+#: libparted/arch/linux.c:1339
+msgid "ATA over Ethernet Device"
+msgstr "Ethernet Aygıtı üzerinde ATA"
+
+#: libparted/arch/linux.c:1345
+msgid "IBM S390 DASD drive"
+msgstr "IBM S390 DASD sürücüsü"
+
+#: libparted/arch/linux.c:1351
+msgid "IBM iSeries Virtual DASD"
+msgstr "IBM iSeries Virtual DASD"
+
+#: libparted/arch/linux.c:1356
+msgid "Compaq Smart Array"
+msgstr "Compaq Akıllı Dizi"
+
+#: libparted/arch/linux.c:1361
+msgid "ATARAID Controller"
+msgstr "ATARAID Denetleyici"
+
+#: libparted/arch/linux.c:1366
+msgid "I2O Controller"
+msgstr "I20 Denetleyici"
+
+#: libparted/arch/linux.c:1371
+msgid "User-Mode Linux UBD"
+msgstr "Kullanıcı Kipi Linux UBD"
+
+#: libparted/arch/linux.c:1384
+#, c-format
+msgid "Linux device-mapper (%s)"
+msgstr "Linux aygıt-eşlemleyicisi (%s)"
+
+#: libparted/arch/linux.c:1395
+msgid "Xen Virtual Block Device"
+msgstr "Xen Sanal Blok Aygıtı"
+
+#: libparted/arch/linux.c:1400
+msgid "Unknown"
+msgstr "Bilinmeyen"
+
+#: libparted/arch/linux.c:1409
+msgid "Virtio Block Device"
+msgstr "Virtio Blok Aygıtı"
+
+#: libparted/arch/linux.c:1414
+msgid "Linux Software RAID Array"
+msgstr "Linux Yazılımı RAID Dizisi"
+
+#: libparted/arch/linux.c:1421
+msgid "ped_device_new()  Unsupported device type"
+msgstr "ped_device_new()  Desteklenmeyen aygıt türü"
+
+#: libparted/arch/linux.c:1518 libparted/arch/linux.c:1590
+#, c-format
+msgid "Error fsyncing/closing %s: %s"
+msgstr "%s fsyncleme/kapamada hata: %s"
+
+#: libparted/arch/linux.c:1754
+#, c-format
+msgid "end of file while reading %s"
+msgstr "%s okunurken dosya sonu"
+
+#: libparted/arch/linux.c:2390
+#, c-format
+msgid ""
+"Error informing the kernel about modifications to partition %s -- %s.  This "
+"means Linux won't know about any changes you made to %s until you reboot -- "
+"so you shouldn't mount it or use it in any way before rebooting."
+msgstr ""
+"Kernel'i %1$s -- %2$s disk bölümü değişikliklerinden haberdar etmede hata.  "
+"Bu, siz (bilgisayarı) yeniden açana dek %3$s'de yaptığınız değişiklikleri "
+"Linux'un bilmemesi demek -- dolayısıyla bilgisayarınızı yeniden açmadan "
+"diski bağlamak dahil hiçbir şekilde kullanmamalısınız."
+
+#: libparted/arch/linux.c:2528
+#, c-format
+msgid "Unable to determine the size and length of %s."
+msgstr "%s'nin boyut ve uzunluğu belirlenemedi."
+
+#: libparted/arch/linux.c:2553
+#, c-format
+msgid "Failed to add partition %d (%s)"
+msgstr "%d (%s) disk bölümü eklenemedi"
+
+#: libparted/arch/linux.c:2580
+#, c-format
+msgid ""
+"Partition(s) %s on %s have been written, but we have been unable to inform "
+"the kernel of the change, probably because it/they are in use.  As a result, "
+"the old partition(s) will remain in use.  You should reboot now before "
+"making further changes."
+msgstr ""
+"%2$s üzerindeki %1$s bölüm(ler)ü yazıldı, fakat muhtemelen kullanılmakta "
+"olduğundan kernel değişiklikten haberdar edilemedi. Sonuç olarak, eski bölüm"
+"(ler) kullanımda kalacak. Daha fazla değişiklik yapmadan bilgisayarınızı "
+"şimdi yeniden başlatmalısınız."
+
+#: libparted/arch/linux.c:2706
+#, c-format
+msgid ""
+"parted was unable to re-read the partition table on %s (%s).  This means "
+"Linux won't know anything about the modifications you made. "
+msgstr ""
+"parted, %1$s (%2$s) üzerindeki disk bölümleme tablosunu yeniden okuyamadı.  "
+"Bu, siz (bilgisayarı) yeniden açana dek yaptığınız değişiklikleri Linux'un "
+"bilmemesi demek. "
+
+#: libparted/cs/geom.c:161
+#, c-format
+msgid "Can't have the end before the start! (start sector=%jd length=%jd)"
+msgstr "Başlangıçtan önce son gelemez! (başlangıç sektörü=%jd uzunluk=%jd)"
+
+#: libparted/cs/geom.c:169
+msgid "Can't have a partition outside the disk!"
+msgstr "Disk bölümü disk dışında bulunamaz!"
+
+#: libparted/cs/geom.c:384
+#, c-format
+msgid "Attempt to write sectors %ld-%ld outside of partition on %s."
+msgstr ""
+"%3$s üzerindeki disk bölümünün dışında yeralan %1$ld-%2$ld sektörlere "
+"yazmaya çalışılıyor."
+
+#: libparted/cs/geom.c:424
+msgid "checking for bad blocks"
+msgstr "hatalı blok aranıyor"
+
+#: libparted/debug.c:96
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr "Geriye doğru iz sürme yığınında %d çağrı var:\n"
+
+#: libparted/debug.c:109
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr "%2$s'deki iddia (%1$s):%4$s() işlevindeki %3$d başarısız."
+
+#: libparted/disk.c:192
+#, c-format
+msgid "%s: unrecognised disk label"
+msgstr "%s: tanınmayan disk etiketi"
+
+#: libparted/disk.c:484
+#, c-format
+msgid ""
+"This libparted doesn't have write support for %s.  Perhaps it was compiled "
+"read-only."
+msgstr ""
+"Bu libparted'in %s için yazma desteği yok.  Belki de salt-okunur olarak "
+"derlenmiştir."
+
+#: libparted/disk.c:629
+#, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "%1$d disk bölümü %2$s, fakat dosya sistemi %3$s'dir."
+
+#: libparted/disk.c:838
+msgid "cylinder_alignment"
+msgstr "silindir_hizalaması"
+
+#: libparted/disk.c:844
+#, c-format
+msgid "Unknown disk flag, %d."
+msgstr "Bilinmeyen disk bayrağı, %d."
+
+#: libparted/disk.c:1283
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "%s disk etiketleri ek disk bölümlerini desteklemiyor."
+
+#: libparted/disk.c:1858
+#, c-format
+msgid "%s disk labels don't support logical or extended partitions."
+msgstr "%s disk etiketleri mantıksal ya da ek disk bölümlerini desteklemiyor."
+
+#: libparted/disk.c:1871
+msgid "Too many primary partitions."
+msgstr "Çok fazla birincil disk bölümü"
+
+#: libparted/disk.c:1880
+#, c-format
+msgid ""
+"Can't add a logical partition to %s, because there is no extended partition."
+msgstr "%s'e mantıksal disk bölümü eklenemez, çünkü ek disk bölümü yok."
+
+#: libparted/disk.c:1904
+#, c-format
+msgid "Can't have more than one extended partition on %s."
+msgstr "%s üzerinde birden fazla ek disk bölümü olamaz"
+
+#: libparted/disk.c:1914
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr "Ek disk bölümü dışında mantıksal disk bölümleri olamaz."
+
+#: libparted/disk.c:1939
+#, c-format
+msgid "Can't have a logical partition outside of the extended partition on %s."
+msgstr "%s üzerinde ek disk bölümü dışında mantıksal disk bölümleri olamaz."
+
+#: libparted/disk.c:1949 libparted/disk.c:2008 libparted/disk.c:2186
+msgid "Can't have overlapping partitions."
+msgstr "Örtüşen disk bölümleri olamaz"
+
+#: libparted/disk.c:1957
+msgid "Can't have a primary partition inside an extended partition."
+msgstr "Bir ek disk bölümü içinde birincil disk bölümü bulunamaz."
+
+#: libparted/disk.c:2387
+msgid "metadata"
+msgstr "metaverisi"
+
+#: libparted/disk.c:2389
+msgid "free"
+msgstr "kullanılmamış"
+
+#: libparted/disk.c:2391 parted/ui.c:1194 parted/ui.c:1222
+msgid "extended"
+msgstr "ek"
+
+#: libparted/disk.c:2393 parted/ui.c:1198 parted/ui.c:1226
+msgid "logical"
+msgstr "mantıksal"
+
+#: libparted/disk.c:2395 parted/ui.c:1190 parted/ui.c:1218
+msgid "primary"
+msgstr "birincil"
+
+#: libparted/disk.c:2411
+msgid "boot"
+msgstr "önyükleme"
+
+#: libparted/disk.c:2413
+msgid "bios_grub"
+msgstr "bios_grub"
+
+#: libparted/disk.c:2415
+msgid "root"
+msgstr "kök"
+
+#: libparted/disk.c:2417
+msgid "swap"
+msgstr "takas"
+
+#: libparted/disk.c:2419
+msgid "hidden"
+msgstr "gizli"
+
+#: libparted/disk.c:2421
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2423
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2425
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2427
+msgid "hp-service"
+msgstr "hp-servisi"
+
+#: libparted/disk.c:2429
+msgid "palo"
+msgstr "palo"
+
+#: libparted/disk.c:2431
+msgid "prep"
+msgstr "prep"
+
+#: libparted/disk.c:2433
+msgid "msftres"
+msgstr "msftres"
+
+#: libparted/disk.c:2435
+msgid "atvrecv"
+msgstr "atvrecv"
+
+#: libparted/disk.c:2437
+msgid "diag"
+msgstr "diag"
+
+#: libparted/disk.c:2439
+msgid "legacy_boot"
+msgstr "kalıtılmış yeniden başlatma"
+
+#: libparted/disk.c:2445
+#, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Bilinmeyen.disk bölümü bayrağı, %d."
+
+#: libparted/exception.c:77
+msgid "Information"
+msgstr "Bilgi"
+
+#: libparted/exception.c:78
+msgid "Warning"
+msgstr "Uyarı"
+
+#: libparted/exception.c:79
+msgid "Error"
+msgstr "Hata"
+
+#: libparted/exception.c:80
+msgid "Fatal"
+msgstr "Ölümcül"
+
+#: libparted/exception.c:81
+msgid "Bug"
+msgstr "Yazılım hatası"
+
+#: libparted/exception.c:82
+msgid "No Implementation"
+msgstr "Uyarlama yok"
+
+#: libparted/exception.c:86
+msgid "Fix"
+msgstr "Onar"
+
+#: libparted/exception.c:87
+msgid "Yes"
+msgstr "Evet"
+
+#: libparted/exception.c:88
+msgid "No"
+msgstr "Hayır"
+
+#: libparted/exception.c:89
+msgid "OK"
+msgstr "Tamam"
+
+#: libparted/exception.c:90
+msgid "Retry"
+msgstr "Yeniden dene"
+
+#: libparted/exception.c:91
+msgid "Ignore"
+msgstr "Yoksay"
+
+#: libparted/exception.c:92
+msgid "Cancel"
+msgstr "Vazgeç"
+
+#: libparted/exception.c:132
+#, c-format
+msgid ""
+"A bug has been detected in GNU Parted.  Refer to the web site of parted "
+"http://www.gnu.org/software/parted/parted.html for more information of what "
+"could be useful for bug submitting!  Please email a bug report to %s "
+"containing at least the version (%s) and the following message:  "
+msgstr ""
+"GNU parted'da bir yazılım hatası saptandı.  Hata bildirmek için daha fazla "
+"bilgiye ulaşmak üzere parted'ın web sitesine başvurun: http://www.gnu.org/"
+"software/parted/parted.html!  Lütfen %s'e en azından sürüm (%s) ve aşağıdaki "
+"mesajı içeren bir yazılım hatası raporu gönderin:  "
+
+#: libparted/labels/aix.c:103
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr "AIX disk etiketlerini okuma desteği henüz sağlanmamıştır."
+
+#: libparted/labels/aix.c:114
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr "AIX disk etiketlerini yazma desteği henüz sağlanmamıştır."
+
+#: libparted/labels/aix.c:127
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr "AIX disk etiketlerine disk bölümü ekleme desteği henüz sağlanmamıştır."
+
+#: libparted/labels/aix.c:137
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr ""
+"AIX disk etiketlerinde disk bölümü çoğaltma desteği henüz sağlanmamıştır."
+
+#: libparted/labels/aix.c:155
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr ""
+"AIX disk etiketlerinde sistem türü disk bölümü kurma desteği henüz "
+"sağlanmamıştır."
+
+#: libparted/labels/aix.c:165
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr "AIX disk etiketlerinde bayrak kurma desteği henüz sağlanmamıştır."
+
+#: libparted/labels/bsd.c:571 libparted/labels/dasd.c:833
+#: libparted/labels/dos.c:2176 libparted/labels/dvh.c:787
+#: libparted/labels/gpt.c:1782 libparted/labels/loop.c:247
+#: libparted/labels/mac.c:1426 libparted/labels/pc98.c:748
+#: libparted/labels/rdb.c:1052 libparted/labels/sun.c:780
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "Disk bölümü üzerindeki tüm koşullar karşılanamadı."
+
+#: libparted/labels/bsd.c:596
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "Bir bsd disk etiketi yuvası tahsis edilemedi"
+
+#: libparted/labels/dasd.c:859
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "Bir dasd disk etiketi yuvası tahsis edilemedi"
+
+#: libparted/labels/dos.c:966
+#, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr "%1$s üzerinde geçersiz disk bölümleme tablosu - yanlış imza %2$x"
+
+#: libparted/labels/dos.c:994
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr ""
+"Geçersiz disk bölümleme tablosu - %s üzerinde özyinelemeli disk bölümü."
+
+#: libparted/labels/dos.c:1504
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr "Msdos disk etiketlerinde ek disk bölümleri gizli olamaz."
+
+#: libparted/labels/dos.c:2158
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+"Parted, Windows Dinamik Disk tarafından yönetilen bölümleri yeniden "
+"boyutlayamaz."
+
+#: libparted/labels/dvh.c:200
+#, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr "%s'in ek disk bölümü (oylum başlığı disk bölümü) yok."
+
+#: libparted/labels/dvh.c:326
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr ""
+"Sağlama toplamı, disk bölümleme tablosunun bozuk olduğunu belirtir şekilde "
+"yanlış."
+
+#: libparted/labels/dvh.c:631
+msgid "Only primary partitions can be root partitions."
+msgstr "Yalnızca birincil disk bölümleri kök disk bölümü olabilir."
+
+#: libparted/labels/dvh.c:645
+msgid "Only primary partitions can be swap partitions."
+msgstr "Yalnızca birincil disk bölümleri takas disk bölümleri olabilir."
+
+#: libparted/labels/dvh.c:659
+msgid "Only logical partitions can be a boot file."
+msgstr "Yalnızca mantıksal disk bölümleri bir önyükleme dosyası olabilir."
+
+#: libparted/labels/dvh.c:736
+#, c-format
+msgid ""
+"failed to set dvh partition name to %s:\n"
+"Only logical partitions (boot files) have a name."
+msgstr ""
+"%s'e dvh bölümleme adı atanması başarısız:\n"
+"Yalnızca mantıksal disk bölümlerinin (önyükleme dosyaları) bir adı olabilir."
+
+#: libparted/labels/dvh.c:829
+msgid "Too many primary partitions"
+msgstr "Çok fazla birincil disk bölümü"
+
+#: libparted/labels/fdasd.c:98
+msgid "open error"
+msgstr "açma hatası"
+
+#: libparted/labels/fdasd.c:101
+msgid "seek error"
+msgstr "arama hatası"
+
+#: libparted/labels/fdasd.c:104
+msgid "read error"
+msgstr "okuma hatası"
+
+#: libparted/labels/fdasd.c:110
+msgid "ioctl() error"
+msgstr "ioctl() hatası"
+
+#: libparted/labels/fdasd.c:114
+msgid "API version mismatch"
+msgstr "API sürüm uyuşmazlığı"
+
+#: libparted/labels/fdasd.c:118
+msgid "Unsupported disk type"
+msgstr "Desteklenmeyen disk türü"
+
+#: libparted/labels/fdasd.c:122
+msgid "Unsupported disk format"
+msgstr "Desteklenmeyen disk biçemi"
+
+#: libparted/labels/fdasd.c:126
+msgid "Disk is in use"
+msgstr "Disk kullanımda"
+
+#: libparted/labels/fdasd.c:130
+msgid "Syntax error in config file"
+msgstr "Config dosyasında sözdizim hatası"
+
+#: libparted/labels/fdasd.c:134
+msgid "Volume label is corrupted"
+msgstr "Oylum etiketi bozuk"
+
+#: libparted/labels/fdasd.c:138
+msgid "A data set name is corrupted"
+msgstr "Bir veri küme adı bozuk"
+
+#: libparted/labels/fdasd.c:142
+msgid "Memory allocation failed"
+msgstr "Bellek tahsisi başarısız"
+
+#: libparted/labels/fdasd.c:146
+msgid "Device verification failed"
+msgstr "Aygıt doğrulaması başarısız"
+
+#: libparted/labels/fdasd.c:147
+msgid "The specified device is not a valid DASD device"
+msgstr "Belirtilen aygıt geçerli bir DASD aygıtı değil"
+
+#: libparted/labels/fdasd.c:150 libparted/labels/vtoc.c:179
+msgid "Fatal error"
+msgstr "Ölümcül hata"
+
+#: libparted/labels/fdasd.c:226
+msgid "No room for volume label."
+msgstr "Oylum etiketi için yer yok"
+
+#: libparted/labels/fdasd.c:234
+msgid "No room for partition info."
+msgstr "Disk bölümü bilgisi için yer yok"
+
+#: libparted/labels/fdasd.c:709
+msgid "Invalid VTOC."
+msgstr "Geçersiz VTOC."
+
+#: libparted/labels/fdasd.c:766
+msgid "Could not retrieve API version."
+msgstr "API sürümü belirlenemiyor."
+
+#: libparted/labels/fdasd.c:769
+#, c-format
+msgid ""
+"The current API version '%d' doesn't match dasd driver API version '%d'!"
+msgstr "Mevcut API sürümü '%d' dasd sürücüsü API sürümüyle '%d' uyuşmuyor!"
+
+#: libparted/labels/fdasd.c:806
+msgid "Could not retrieve disk geometry information."
+msgstr "Disk geometrisi bilgisi alınamıyor."
+
+#: libparted/labels/fdasd.c:810
+msgid "Could not retrieve blocksize information."
+msgstr "Blok boyutu bilgisi alınamıyor."
+
+#: libparted/labels/fdasd.c:815
+msgid "Could not retrieve disk information."
+msgstr "Disk bilgisi alınamıyor."
+
+#: libparted/labels/gpt.c:493
+#, c-format
+msgid ""
+"%s contains GPT signatures, indicating that it has a GPT table.  However, it "
+"does not have a valid fake msdos partition table, as it should.  Perhaps it "
+"was corrupted -- possibly by a program that doesn't understand GPT partition "
+"tables.  Or perhaps you deleted the GPT table, and are now using an msdos "
+"partition table.  Is this a GPT partition table?"
+msgstr ""
+"%s, GPT tablosu içerdiğini belirten GPT imzalarına sahip.  Ayrıca, olması "
+"gerekenin aksine, geçerli sahte msdos disk bölümleme tablosu yok.  Belki GPT "
+"disk bölümleme tablolarından anlamayan bir program tarafından bozulmuştur.  "
+"Ya da belki siz GPT tablosunu sildiniz ve şimdi bir msdos disk bölümleme "
+"tablosu kullanmaktasınız.  Bu bir GPT disk bölümleme tablosu mu?"
+
+#: libparted/labels/gpt.c:693
+#, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise.  Please report this!"
+msgstr ""
+"GPT disk bölümleme tablosu biçemi sürüm %x olup, Parted'ın "
+"tanıyabileceğinden daha yenidir.  Lütfen bize bildirin!"
+
+#: libparted/labels/gpt.c:740
+#, c-format
+msgid ""
+"Not all of the space available to %s appears to be used, you can fix the GPT "
+"to use all of the space (an extra %llu blocks) or continue with the current "
+"setting? "
+msgstr ""
+"%s için kullanılabilir boşluğun tamamı kullanılmamış görünüyor, GPT'yi "
+"ayarlayıp tüm mevcut boşluğu (%llu ek blok) kullanabilir ya da mevcut ayarla "
+"devam edebilirsiniz?"
+
+#: libparted/labels/gpt.c:952
+msgid ""
+"The backup GPT table is not at the end of the disk, as it should be.  This "
+"might mean that another operating system believes the disk is smaller.  Fix, "
+"by moving the backup to the end (and removing the old backup)?"
+msgstr ""
+"GPT tablosunun yedeği, olması gerektiği gibi diskin sonunda değil.  Bu, bir "
+"başka işletim sisteminin diski olduğundan küçük sanması anlamına gelebilir.  "
+"Yedeği sona taşıyarak (ve eski yedeği silerek) onarınız?"
+
+#: libparted/labels/gpt.c:976
+msgid ""
+"Both the primary and backup GPT tables are corrupt.  Try making a fresh "
+"table, and using Parted's rescue feature to recover partitions."
+msgstr ""
+"Hem birincil, hem de yedek GPT tablosu bozuk.  Yeni bir tablo oluşturmayı ve "
+"Parted'ın kurtarma özelliğini kullanarak disk bölümlerini kurtarmayı deneyin."
+
+#: libparted/labels/gpt.c:987
+msgid ""
+"The backup GPT table is corrupt, but the primary appears OK, so that will be "
+"used."
+msgstr ""
+"Yedek GPT tablosu bozuk, ama birincil tamam görünüyor, dolayısıyla o "
+"kullanılacak."
+
+#: libparted/labels/gpt.c:999
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr ""
+"Birincil GPT tablosu bozuk, ama yedek tamam görünüyor, dolayısıyla yedek "
+"kullanılacak."
+
+#: libparted/labels/gpt.c:1023
+msgid "primary partition table array CRC mismatch"
+msgstr "birincil bölümleme tablosu dizisi CRC uyumsuzluğu"
+
+#: libparted/labels/mac.c:184
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Mac disk etiketleri için geçersiz imza %x."
+
+#: libparted/labels/mac.c:231
+msgid "Partition map has no partition map entry!"
+msgstr "Disk bölümü eşleminin disk bölümü eşlem girdisi yok!"
+
+#: libparted/labels/mac.c:279
+#, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr "%s, bir Mac disk etiketi için çok küçük!"
+
+#: libparted/labels/mac.c:508
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "%d disk bölümü geçersiz imzaya sahip %x."
+
+#: libparted/labels/mac.c:526
+#, c-format
+msgid "Partition %d has an invalid length of 0 bytes!"
+msgstr "%d disk bölümü 0 baytlık geçersiz uzunluğa sahip!"
+
+#: libparted/labels/mac.c:557
+msgid "The data region doesn't start at the start of the partition."
+msgstr "Veri bölgesi, disk bölümünün başından başlamıyor"
+
+#: libparted/labels/mac.c:574
+msgid "The boot region doesn't start at the start of the partition."
+msgstr "Önyükleme bölgesi, disk bölümünün başından başlamıyor"
+
+#: libparted/labels/mac.c:588
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr "Disk bölümünün önyükleme bölgesi tüm disk bölümünü kaplamıyor."
+
+#: libparted/labels/mac.c:599
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr "Disk bölümünün veri bölgesi tüm disk bölümünü kaplamıyor."
+
+#: libparted/labels/mac.c:652
+#, c-format
+msgid ""
+"Weird block size on device descriptor: %d bytes is not divisible by 512."
+msgstr "Aygıt tanımlayıcısında tuhaf blok boyutu: %d bayt, 512'ye bölünemiyor."
+
+#: libparted/labels/mac.c:665
+#, c-format
+msgid ""
+"The driver descriptor says the physical block size is %d bytes, but Linux "
+"says it is %d bytes."
+msgstr ""
+"Sürücü tanımlayıcısı fiziksel blok boyutunun %d bayt olduğunu, Linux %d bayt "
+"olduğunu bildiriyor.."
+
+#: libparted/labels/mac.c:719
+msgid "No valid partition map found."
+msgstr "Geçerli disk bölümü eşlemi bulunamadı."
+
+#: libparted/labels/mac.c:780
+#, c-format
+msgid ""
+"Conflicting partition map entry sizes!  Entry 1 says it is %d, but entry %d "
+"says it is %d!"
+msgstr ""
+"Çelişen disk bölümü eşlem girdi boyutları!  1. Girdi %1$d olduğunu, ancak "
+"%2$d. girdi %3$d olduğunu bildiriyor!"
+
+#: libparted/labels/mac.c:811
+msgid "Weird!  There are 2 partitions map entries!"
+msgstr "Tuhaf!-  2 disk bölümü eşlem girdisi mevcut!"
+
+#: libparted/labels/mac.c:1357
+msgid ""
+"Changing the name of a root or swap partition will prevent Linux from "
+"recognising it as such."
+msgstr ""
+"Bir kök ya da takas disk bölümünün adını değiştirmek, Linux'un onu olduğu "
+"gibi tanımasını engelleyecek."
+
+#: libparted/labels/mac.c:1461
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr "Bir başka disk bölümü eklenemiyor -- disk bölüm eşlemi çok küçük!"
+
+#: libparted/labels/pc98.c:331
+#, c-format
+msgid "Invalid partition table on %s."
+msgstr "%s üzerinde geçersiz disk bölümleme tablosu."
+
+#: libparted/labels/pc98.c:384 libparted/labels/pc98.c:462
+#, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries.  This is still "
+"unsupported."
+msgstr ""
+"%d disk bölümü silindir sınırlarına hizalanmamış.  Bu hala desteklenmiyor."
+
+#: libparted/labels/pc98.c:780
+msgid "Can't add another partition."
+msgstr "Bir başka disk bölümü eklenemiyor."
+
+#: libparted/labels/pt-tools.c:125
+#, c-format
+msgid ""
+"partition length of %jd sectors exceeds the %s-partition-table-imposed "
+"maximum of %jd"
+msgstr ""
+"%jd sektörün bölümleme uzunluğu %s bölümleme tablosunca zorlanan maksimum "
+"%jd'i aşıyor"
+
+#: libparted/labels/pt-tools.c:138
+#, c-format
+msgid ""
+"starting sector number, %jd exceeds the %s-partition-table-imposed maximum "
+"of %jd"
+msgstr ""
+"başlangıç sektör numarası %jd,%s bölümleme tablosunca zorlanan maksimum "
+"%jd'i aşıyor"
+
+#: libparted/labels/rdb.c:169
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr "%1$s : %3$s türündeki %2$llu bloğunda bozuk sağlama toplamı"
+
+#: libparted/labels/rdb.c:484
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr "%s : rdb bloğu bulunamadı, asla olmamalı(ydı)."
+
+#: libparted/labels/rdb.c:573
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr "%1$s : Blok %2$d'de döngü saptandı."
+
+#: libparted/labels/rdb.c:592
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr "%1$s : %2$s listesi %3$s bloğunda bozuk görünüyor."
+
+#: libparted/labels/rdb.c:691
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr "%s : Hatalı blokları listeleme başarısız."
+
+#: libparted/labels/rdb.c:699
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr "%s : Bölümleme bloklarını listeleme başarısız."
+
+#: libparted/labels/rdb.c:707
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr "%s : Dosya sistemi bloklarını listeleme başarısız"
+
+#: libparted/labels/rdb.c:715
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr "%s : Önyükleme bloklarını listeleme başarısız."
+
+#: libparted/labels/rdb.c:742
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr "%d'ye bölümleme bloğu yazımı başarısız."
+
+#: libparted/labels/rdb.c:1080
+msgid "Unable to allocate a partition number."
+msgstr "Bir disk bölümü numarası atanamadı."
+
+#: libparted/labels/sun.c:161
+msgid "Corrupted Sun disk label detected."
+msgstr "Bozuk Sun disk etiketi saptandı."
+
+#: libparted/labels/sun.c:276
+#, c-format
+msgid ""
+"The disk CHS geometry (%d,%d,%d) reported by the operating system does not "
+"match the geometry stored on the disk label (%d,%d,%d)."
+msgstr ""
+"Disk CHS geometrisi (%d,%d,%d), disk etiketinde saklanan geometriye (%d,%d,"
+"%d).uymuyor."
+
+#: libparted/labels/sun.c:298
+#, c-format
+msgid "The disk label describes a disk bigger than %s."
+msgstr "Disk etiketi, %s'den daha büyük bir disk tanımlıyor."
+
+#: libparted/labels/sun.c:473
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr "Disk %d silindire sahip ki bu maksimum 65536'dan daha çok."
+
+#: libparted/labels/sun.c:812
+msgid ""
+"The Whole Disk partition is the only available one left.  Generally, it is "
+"not a good idea to overwrite this partition with a real one.  Solaris may "
+"not be able to boot without it, and SILO (the sparc boot loader) appreciates "
+"it as well."
+msgstr ""
+"Geride yalnızca Tüm Disk disk bölümü kaldı.  Genellikle, bu disk bölümünün "
+"üzerine bir gerçeğini yazmak iyi bir fikir değildir.  Solaris onsuz "
+"açılmayabilir, ve SILO da (sparc önyükleyicisi) ona değer verir."
+
+#: libparted/labels/sun.c:827
+msgid "Sun disk label is full."
+msgstr "Sun disk etiketi doldu."
+
+#: libparted/labels/vtoc.c:164
+msgid "opening of device failed"
+msgstr "aygıtın açılması başarısız"
+
+#: libparted/labels/vtoc.c:168
+msgid "seeking on device failed"
+msgstr "aygıtta arama başarısız"
+
+#: libparted/labels/vtoc.c:172
+msgid "writing to device failed"
+msgstr "aygıta yazma başarısız"
+
+#: libparted/labels/vtoc.c:176
+msgid "reading from device failed"
+msgstr "aygıttan okuma başarısız"
+
+#: libparted/labels/vtoc.c:299 libparted/labels/vtoc.c:308
+#: libparted/labels/vtoc.c:329 libparted/labels/vtoc.c:336
+msgid "Could not read volume label."
+msgstr "Oylum etiketi okunamıyor."
+
+#: libparted/labels/vtoc.c:356 libparted/labels/vtoc.c:363
+msgid "Could not write volume label."
+msgstr "Oylum etiketi yazılamıyor."
+
+#: libparted/labels/vtoc.c:469
+msgid "Could not read VTOC labels."
+msgstr "VTOC etiketleri okunamıyor."
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr "VTOC FMT1 DSCB okunamıyor."
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr "VTOC FMT4 DSCB okunamıyor."
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr "VTOC FMT5 DSCB okunamıyor."
+
+#: libparted/labels/vtoc.c:496
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr "VTOC FMT7 DSCB okunamıyor."
+
+#: libparted/labels/vtoc.c:516
+msgid "Could not write VTOC labels."
+msgstr "VTOC etiketleri yazılamıyor."
+
+#: libparted/labels/vtoc.c:522
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr "VTOC FMT1 DSCB yazılamıyor."
+
+#: libparted/labels/vtoc.c:529
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr "VTOC FMT4 DSCB yazılamıyor."
+
+#: libparted/labels/vtoc.c:536
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr "VTOC FMT5 DSCB yazılamıyor."
+
+#: libparted/labels/vtoc.c:543
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr "VTOC FMT7 DSCB yazılamıyor."
+
+#: libparted/libparted.c:230 libparted/libparted.c:245
+msgid "Out of memory."
+msgstr "Yetersiz bellek"
+
+#: libparted/unit.c:138
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr "Özel birim 'COMPACT' için birim boyutu alınamıyor."
+
+#: libparted/unit.c:384
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr "\"%s\" yerleşimler için geçersiz yazıma sahip."
+
+#: libparted/unit.c:392
+#, c-format
+msgid "The maximum head value is %d."
+msgstr "Maksimum kafa değeri %d."
+
+#: libparted/unit.c:399
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr "Maksimum sektör değeri %d."
+
+#: libparted/unit.c:411 libparted/unit.c:556
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr "%1$s yerleşimi %2$s aygıtının dışında."
+
+#: libparted/unit.c:531
+msgid "Invalid number."
+msgstr "Geçersiz numara."
+
+#: libparted/fs/amiga/affs.c:62 libparted/fs/amiga/apfs.c:55
+#: libparted/fs/amiga/asfs.c:69
+#, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "%s : Bölümleme bloğunu atama başarısız\n"
+
+#: libparted/fs/amiga/affs.c:77 libparted/fs/amiga/apfs.c:68
+#: libparted/fs/amiga/asfs.c:81
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr "%s : Boluğu atama başarısız\n"
+
+#: libparted/fs/amiga/affs.c:82 libparted/fs/amiga/apfs.c:73
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr "%s: Önyükleme bloğu %llu okunamıyor\n"
+
+#: libparted/fs/amiga/affs.c:98 libparted/fs/amiga/apfs.c:84
+#: libparted/fs/amiga/asfs.c:87 libparted/fs/amiga/asfs.c:101
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr "%s: Kök bloğu %llu okunamıyor\n"
+
+#: libparted/fs/amiga/amiga.c:71
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr "%s : Id listesi öğesi atanamıyor\n"
+
+#: libparted/fs/amiga/amiga.c:188
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr "%s: %llu bloğu okunamıyor\n"
+
+#: libparted/fs/amiga/amiga.c:201
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr "%s: %llu bloğunda yanlış sağlama toplamı türü %s\n"
+
+#: libparted/fs/amiga/amiga.c:211
+#, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s: %d bloğu yazılamıyor\n"
+
+#: libparted/fs/amiga/amiga.c:277
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr "%s: Diske özgün rdb bloğu atanamıyor\n"
+
+#: libparted/fs/amiga/amiga.c:288
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr "%s : rdb bloğu bulunamadı, asla olmamalı(ydı)\n"
+
+#: libparted/fs/amiga/amiga.c:317
+#, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr "%s : %llu bölümleme bloğunu okuma başarısız\n"
+
+#: libparted/fs/fat/fat.c:174
+msgid ""
+"GNU Parted was miscompiled: the FAT boot sector should be 512 bytes.  FAT "
+"support will be disabled."
+msgstr ""
+"GNU parted yanlış derlenmiş: FAT önyükleme sektörü 512 bayt olmalı.  FAT "
+"desteği devre dışı bırakılacak."
+
+#: libparted/fs/fat/bootsector.c:49 libparted/fs/fat/bootsector.c:56
+msgid "File system has an invalid signature for a FAT file system."
+msgstr "Dosya sistemi, FAT dosya sistemi için geçersiz bir imzaya sahip.."
+
+#: libparted/fs/fat/bootsector.c:64
+msgid "File system has an invalid sector size for a FAT file system."
+msgstr ""
+"Dosya sistemi, FAT dosya sistemi için geçersiz bir sektör boyutuna sahip."
+
+#: libparted/fs/fat/bootsector.c:71
+msgid "File system has an invalid cluster size for a FAT file system."
+msgstr ""
+"Dosya sistemi, FAT dosya sistemi için geçersiz bir küme boyutuna sahip."
+
+#: libparted/fs/fat/bootsector.c:78
+msgid ""
+"File system has an invalid number of reserved sectors for a FAT file system."
+msgstr ""
+"Dosya sistemi, FAT dosya sistemi için geçersiz bir ayrılmış sektör sayısına "
+"sahip."
+
+#: libparted/fs/fat/bootsector.c:85
+msgid "File system has an invalid number of FATs."
+msgstr "Dosya sistemi, geçersiz FATS sayısına sahip."
+
+#: libparted/fs/fat/bootsector.c:156
+#, c-format
+msgid ""
+"This file system has a logical sector size of %d.  GNU Parted is known not "
+"to work properly with sector sizes other than 512 bytes."
+msgstr ""
+"Bu dosya sistemi %d mantıksal sektör boyutuna sahip.  GNU Parted'in 512 "
+"bayttan farklı sektör boyutlarıyla düzgün çalışmadığı bilinmektedir."
+
+#: libparted/fs/fat/bootsector.c:181
+#, c-format
+msgid ""
+"The file system's CHS geometry is (%d, %d, %d), which is invalid.  The "
+"partition table's CHS geometry is (%d, %d, %d).  If you select Ignore, the "
+"file system's CHS geometry will be left unchanged.  If you select Fix, the "
+"file system's CHS geometry will be set to match the partition table's CHS "
+"geometry."
+msgstr ""
+"Dosya sisteminin CHS geometrisi (%d, %d, %d), ki bu geçersiz.  Bölümleme "
+"tablosunun CHS geometrisi (%d ,%d ,%d).  Yoksay'ı seçerseniz dosya "
+"sisteminin CHS geometrisi değiştirilmeyecek.   Onar'ı seçerseniz dosya "
+"sisteminin CHS geometrisi, bölümleme tablosunun CHS geometrisiyle uyuşacak "
+"şekilde ayarlanacak."
+
+#: libparted/fs/fat/bootsector.c:230
+msgid "FAT boot sector says logical sector size is 0.  This is weird. "
+msgstr ""
+"FAT önyükleme sektörü mantıksal sektör boyutunun 0 olduğunu söylüyor.  Bu "
+"tuhaf. "
+
+#: libparted/fs/fat/bootsector.c:236
+msgid "FAT boot sector says there are no FAT tables.  This is weird. "
+msgstr "FAT önyükleme sektörü FAT tablosunun olmadığını söylüyor.  Bu tuhaf. "
+
+#: libparted/fs/fat/bootsector.c:242
+msgid "FAT boot sector says clusters are 0 sectors.  This is weird. "
+msgstr ""
+"FAT önyükleme sektörü kümelerin 0 sektör olduğunu söylüyor.  Bu tuhaf. "
+
+#: libparted/fs/fat/bootsector.c:252
+msgid "File system is FAT12, which is unsupported."
+msgstr "Dosya sistemi FAT12, ki desteklenmiyor."
+
+#: libparted/fs/fat/bootsector.c:428
+#, c-format
+msgid ""
+"The information sector has the wrong signature (%x).  Select cancel for now, "
+"and send in a bug report.  If you're desperate, it's probably safe to ignore."
+msgstr ""
+"Bilgi sektörü yanlış imzaya sahip. (%x).  Şimdilik vazgeçi seçin ve bir "
+"yazılım hatası raporu gönderin.  Çaresizseniz, yoksaymak muhtemelen güvenli."
+
+#: libparted/fs/linux_swap/linux_swap.c:247
+#, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "Tanınmayan ezki tarz linux takas imzası '%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:290
+#, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "Tanınmayan yeni tarz linux takas imzası '%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:330
+#, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Tanınmayan swsusp linux takas imzası '%9s'."
+
+#: libparted/fs/hfs/probe.c:50
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to "
+"%d bytes."
+msgstr ""
+"Parted sektör boyutu %d bayta eşit olmayan disklerde HFS dosya sistemi "
+"kullanamaz."
+
+#: parted/parted.c:123
+msgid "displays this help message"
+msgstr "bu yardım mesajını görüntüler"
+
+#: parted/parted.c:124
+msgid "lists partition layout on all block devices"
+msgstr "tüm blok aygıtların bölümleme yerleşimlerini listeler"
+
+#: parted/parted.c:125
+msgid "displays machine parseable output"
+msgstr "makinece ayrıştırılabilir çıktıyı gösterir"
+
+#: parted/parted.c:126
+msgid "never prompts for user intervention"
+msgstr "kullanıcı müdahalesi için asla istemde bulunmaz"
+
+#: parted/parted.c:127
+msgid "displays the version"
+msgstr "sürümü görüntüler"
+
+#: parted/parted.c:128
+msgid "alignment for new partitions"
+msgstr "yeni disk bölümleri için hizalama"
+
+#: parted/parted.c:140
+msgid ""
+"NUMBER is the partition number used by Linux.  On MS-DOS disk labels, the "
+"primary partitions number from 1 to 4, logical partitions from 5 onwards.\n"
+msgstr ""
+"NUMBER, Linux tarafından kullanılan disk bölümü numarasıdır.  Msdos disk "
+"etiketlerinde birincil disk bölümü numarası 1-4 arası, mantıksal disk "
+"bölümleri de 5 ve üstüdür.\n"
+
+#: parted/parted.c:143
+msgid "LABEL-TYPE is one of: "
+msgstr "LABEL-TYPE şunlardan biridir: "
+
+#: parted/parted.c:144
+msgid "FLAG is one of: "
+msgstr "FLAG şunlardan biridir: "
+
+#: parted/parted.c:145
+msgid "UNIT is one of: "
+msgstr "UNIT şunlardan biridir: "
+
+#: parted/parted.c:146
+msgid "desired alignment: minimum or optimal"
+msgstr "arzulanan hizalama: minimum ya da optimal"
+
+#: parted/parted.c:147
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "PART-TYPE şunlardan biridir: birincil, mantıksal, ek\n"
+
+#: parted/parted.c:149
+msgid "FS-TYPE is one of: "
+msgstr "FS-TYPE şunlardan biridir: "
+
+#: parted/parted.c:150
+msgid ""
+"START and END are disk locations, such as 4GB or 10%.  Negative values count "
+"from the end of the disk.  For example, -1s specifies exactly the last "
+"sector.\n"
+msgstr ""
+"START ve END disk konumlarıdır, 4GB ya da %10 gibi.  Eksi değerler, diskin "
+"sonuna uzaklığı belirtir.  Örneğin -1s tam olarak son sektörü belirtir.\n"
+
+#: parted/parted.c:153
+msgid "STATE is one of: on, off\n"
+msgstr "STATE şunlardan biridir: açık, kapalı\n"
+
+#: parted/parted.c:154
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "DEVICE sıklıkla /dev/hda ya da /dev/sda'dır\n"
+
+#: parted/parted.c:155
+msgid "NAME is any word you want\n"
+msgstr "NAME istediğiniz herhangi bir sözcüktür\n"
+
+#: parted/parted.c:158
+msgid ""
+"Copyright (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"This program is free software, covered by the GNU General Public License.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+msgstr ""
+"Telifhakkı (C) 1998 - 2006 Özgür Yazılım Kuruluşu, A.Ş.\n"
+"Bu program, GNU Genel Kamu Lisansı'nca kapsanan özgür yazılımdır.\n"
+"\n"
+"Bu program, yararlı olacağı ümidiyle dağıtılmış olup, SATILABİLİRLİK ya da\n"
+"BELLİ BİR AMACA UYGUNLUK garantileri de dahil olmak üzere\n"
+"HERHANGİ BİR GARANTİ içermez.  Daha fazla ayrıntı için\n"
+"GNU Genel Kamu Lisansı'na bakınız.\n"
+"\n"
+
+#: parted/parted.c:204
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(kalan süre %.2d:%.2d)"
+
+#: parted/parted.c:223
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+"%s disk bölümü kullanılıyor.  Parted'la değiştirmeden önce ayırmalısınız."
+
+#: parted/parted.c:241
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "%s üzerindeki disk bölümü(leri) kullanılıyor."
+
+#: parted/parted.c:253
+#, c-format
+msgid ""
+"The existing disk label on %s will be destroyed and all data on this disk "
+"will be lost. Do you want to continue?"
+msgstr ""
+"%s üzerindeki mevcut disk etiketi silinecek ve bu disk üzerindeki tüm veri "
+"kaybolacak. Devam etmek istiyor musunuz?"
+
+#: parted/parted.c:502
+msgid "New disk label type?"
+msgstr "Yeni disk etiketi türü?"
+
+#: parted/parted.c:562
+msgid "Partition type?"
+msgstr "Disk bölümü türü?"
+
+#: parted/parted.c:580 parted/parted.c:766
+msgid "Partition name?"
+msgstr "Disk bölümü adı?"
+
+#: parted/parted.c:588
+msgid "File system type?"
+msgstr "Dosya sistemi türü?"
+
+#: parted/parted.c:594 parted/parted.c:1342
+msgid "Start?"
+msgstr "Başlangıç?"
+
+#: parted/parted.c:596 parted/parted.c:1344
+msgid "End?"
+msgstr "Bitiş?"
+
+#: parted/parted.c:661
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s.%s"
+msgstr ""
+"%1$s'den %2$s'e bir bölüm istediniz.\n"
+"Becerebildiğimiz buna en yakın konum %3$s'den %4$s.%5$s'e"
+
+#: parted/parted.c:666
+msgid ""
+"\n"
+"Is this still acceptable to you?"
+msgstr ""
+"\n"
+"Bu sizin için hala kabul edilebilir mi?"
+
+#: parted/parted.c:688
+msgid "The resulting partition is not properly aligned for best performance."
+msgstr ""
+"Ortaya çıkan disk bölümü en iyi performansı elde etmek için ayarlanmamış."
+
+#: parted/parted.c:763 parted/parted.c:1383 parted/parted.c:1455
+#: parted/parted.c:1489
+msgid "Partition number?"
+msgstr "Disk bölümü numarası?"
+
+#: parted/parted.c:841
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d.  Each cylinder is %s.\n"
+msgstr ""
+"BIOS silindiri, kafa, sektör geometrisi: %d,%d,%d.  Herbir silindir %s'tir.\n"
+
+#: parted/parted.c:881
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr "Model: %s (%s)\n"
+
+#: parted/parted.c:883
+#, c-format
+msgid "Disk %s: %s\n"
+msgstr "Disk %1$s: %2$s\n"
+
+#: parted/parted.c:884
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr "Sektör boyutu (mantıksal/fiziksel): %lldB/%lldB\n"
+
+#: parted/parted.c:896
+#, c-format
+msgid "Partition Table: %s\n"
+msgstr "Disk bölümü Tablosu: %s\n"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Number"
+msgstr "Numara"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Start"
+msgstr "Başlangıç"
+
+#: parted/parted.c:1008 parted/parted.c:1011
+msgid "End"
+msgstr "Son"
+
+#: parted/parted.c:1011
+msgid "Size"
+msgstr "Boyut"
+
+#: parted/parted.c:1015
+msgid "Type"
+msgstr "Tür"
+
+#: parted/parted.c:1017
+msgid "File system"
+msgstr "Dosya sistemi"
+
+#: parted/parted.c:1020
+msgid "Name"
+msgstr "İsim"
+
+#: parted/parted.c:1022
+msgid "Flags"
+msgstr "Bayraklar"
+
+#: parted/parted.c:1079
+msgid "Free Space"
+msgstr "Boş Alan"
+
+#: parted/parted.c:1241
+#, c-format
+msgid ""
+"A %s %s partition was found at %s -> %s.  Do you want to add it to the "
+"partition table?"
+msgstr ""
+"%3$s -> %4$s'de bir %1$s %2$s disk bölümü bulundu.  Bunu disk bölümü "
+"tablosuna eklemeyi ister misiniz?"
+
+#: parted/parted.c:1280
+msgid "searching for file systems"
+msgstr "dosya"
+
+#: parted/parted.c:1408
+msgid "New device?"
+msgstr "Yeni aygıt?"
+
+#: parted/parted.c:1453
+msgid "alignment type(min/opt)"
+msgstr "hizalama türü(min/opt)"
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d aligned\n"
+msgstr "%d hizalandı\n"
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d not aligned\n"
+msgstr "%d hizalanmadı\n"
+
+#: parted/parted.c:1491
+msgid "Flag to Invert?"
+msgstr "Tersine çevirmek üzere bayrakla?"
+
+#: parted/parted.c:1496
+msgid "New state?"
+msgstr "Yeni durum?"
+
+#: parted/parted.c:1533
+msgid "Unit?"
+msgstr "Birim?"
+
+#: parted/parted.c:1651
+msgid "align-check"
+msgstr "align-check"
+
+#: parted/parted.c:1654
+msgid ""
+"align-check TYPE N                        check partition N for TYPE(min|"
+"opt) alignment"
+msgstr ""
+"align-check TÜR N                        disk bölümü N'yi hiza TÜRü(min|opt) "
+"için kontrol et"
+
+#: parted/parted.c:1662
+msgid "help"
+msgstr "help"
+
+#: parted/parted.c:1665
+msgid ""
+"help [COMMAND]                           print general help, or help on "
+"COMMAND"
+msgstr ""
+"help [COMMAND]                           genel yardımı ya da KOMUT yardımını "
+"yazdırır"
+
+#: parted/parted.c:1671
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:1671
+msgid "mktable"
+msgstr "mktable"
+
+#: parted/parted.c:1674
+msgid ""
+"mklabel,mktable LABEL-TYPE               create a new disklabel (partition "
+"table)"
+msgstr ""
+"mklabel,mktable LABEL-TYPE             yeni bir disk etiketi (disk bölümü "
+"tablosu) oluştur"
+
+#: parted/parted.c:1680
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:1683
+msgid "mkpart PART-TYPE [FS-TYPE] START END     make a partition"
+msgstr "mkpart PART-TYPE [FS-TYPE] START END          bir disk bölümü yap"
+
+#: parted/parted.c:1689
+msgid ""
+"'mkpart' makes a partition without creating a new file system on the "
+"partition.  FS-TYPE may be specified to set an appropriate partition ID.\n"
+msgstr ""
+"mkpart, disk bölümü üzerinde yeni bir dosya sistemi oluşturmadan bir disk "
+"bölümü yapar.  DS-TÜRÜ, uygun bir disk bölümü ID atamak için "
+"belirtilebilir.\n"
+"\n"
+
+#: parted/parted.c:1694
+msgid "name"
+msgstr "name"
+
+#: parted/parted.c:1697
+msgid "name NUMBER NAME                         name partition NUMBER as NAME"
+msgstr ""
+"name NUMBER NAME                     NUMBER. disk bölümünü NAME'le adlandır"
+
+#: parted/parted.c:1702
+msgid "print"
+msgstr "print"
+
+#: parted/parted.c:1705
+msgid ""
+"print [devices|free|list,all|NUMBER]     display the partition table, "
+"available devices, free space, all found partitions, or a particular "
+"partition"
+msgstr ""
+"print [aygıtlar|boşluk|liste,tümü|NUMARA]     bölümleme tablosu, mevcut "
+"aygıtlar, boşluk, tüm bulunan bölümler ya da belli bir bölümü gösterir"
+
+#: parted/parted.c:1710
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+"Argümansız olduğunda print tüm bölümleme tablosunnu gösterir. Aşağıdaki "
+"argümanlarla kullanıldığında diğer çeşitli eylemleri uygular.\n"
+
+#: parted/parted.c:1712
+msgid "  devices   : display all active block devices\n"
+msgstr "  devices   : tüm aktif blok aygıtları gösterir\n"
+
+#: parted/parted.c:1713
+msgid ""
+"  free      : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+"  free      : mevcut blok aygıt üzerindeki boş bölümlenmemiş alan bilgisini "
+"gösterir\n"
+
+#: parted/parted.c:1715
+msgid ""
+"  list, all : display the partition tables of all active block devices\n"
+msgstr ""
+"  list, all : tüm aktif blok aygıtların bölümleme tablolarını gösterir\n"
+
+#: parted/parted.c:1716
+msgid ""
+"  NUMBER    : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+"  NUMBER    : bu belirtilmiş bölüm hakkında daha ayrıntılı bilgi gösterir\n"
+
+#: parted/parted.c:1721
+msgid "quit"
+msgstr "quit"
+
+#: parted/parted.c:1724
+msgid "quit                                     exit program"
+msgstr "quit                                     programdan çık"
+
+#: parted/parted.c:1729
+msgid "rescue"
+msgstr "rescue"
+
+#: parted/parted.c:1732
+msgid ""
+"rescue START END                         rescue a lost partition near START "
+"and END"
+msgstr ""
+"rescue START END                 START ve END arasındaki kayıp disk "
+"bölümlerini kurtar"
+
+#: parted/parted.c:1738
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:1741
+msgid "rm NUMBER                                delete partition NUMBER"
+msgstr "rm NUMBER                        NUMBER. disk bölümünü sil"
+
+#: parted/parted.c:1746
+msgid "select"
+msgstr "select"
+
+#: parted/parted.c:1749
+msgid "select DEVICE                            choose the device to edit"
+msgstr "select DEVICE                  düzenlenecek aygıtı seç"
+
+#: parted/parted.c:1754
+msgid "set"
+msgstr "set"
+
+#: parted/parted.c:1757
+msgid ""
+"set NUMBER FLAG STATE                    change the FLAG on partition NUMBER"
+msgstr ""
+"set NUMBER FLAG STATE             NUMBER. disk bölümü üzerindeki bayrağı "
+"değiştir"
+
+#: parted/parted.c:1763
+msgid "toggle"
+msgstr "seçmece / değiştir"
+
+#: parted/parted.c:1766
+msgid ""
+"toggle [NUMBER [FLAG]]                   toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+"toggle [NUMBER [FLAG]                       NUMBER. disk bölümü üzerindeki "
+"BAYRAK durumunu değiştir"
+
+#: parted/parted.c:1772
+msgid "unit"
+msgstr "birim"
+
+#: parted/parted.c:1775
+msgid "unit UNIT                                set the default unit to UNIT"
+msgstr "birim UNIT                        öntanımlı birimi UNIT'e ayarla"
+
+#: parted/parted.c:1780
+msgid "version"
+msgstr "sürüm"
+
+#: parted/parted.c:1783
+msgid ""
+"version                                  display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+"version                               GNU Parted'in sürüm numarasını ve "
+"telif hakkı bilgisini görüntüler"
+
+#: parted/parted.c:1787
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+"sürüm, GNU Parted'in bu kopyasının telif hakkı ve sürüm bilgisini "
+"görüntüler\n"
+
+#: parted/parted.c:1855
+#, c-format
+msgid "Usage: %s [-hlmsv] [-a<align>] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr "Kullanım: %s [-hlmsv] [-a<align>] [AYGIT [KOMUT [PARAMETRELER]]...]\n"
+
+#: parted/parted.c:1899
+msgid "No device found"
+msgstr "Aygıt bulunamadı"
+
+#: parted/parted.c:1936
+msgid "WARNING: You are not superuser.  Watch out for permissions."
+msgstr "UYARI: Süper kullanıcı değilsiniz.  İzinlere dikkat edin."
+
+#: parted/parted.c:1974
+msgid "You may need to update /etc/fstab.\n"
+msgstr "/etc/fstab'i güncellemeniz gerekebilir.\n"
+
+#: parted/ui.c:162
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+"GNU Parted'a hoşgeldiniz! Komutların bir listesini görmek için 'help' "
+"yazınız.\n"
+
+#: parted/ui.c:165
+msgid ""
+"Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]\n"
+"Apply COMMANDs with PARAMETERS to DEVICE.  If no COMMAND(s) are given, run "
+"in\n"
+"interactive mode.\n"
+msgstr ""
+"Kullanım: parted [SEÇENEK]... [AYGIT [KOMUT [PARAMETRELER]...]...]\n"
+"KOMUTLARI PARAMETRELERle AYGITa uygular.  Eğer KOMUT(lar) verilmezse,\n"
+"etkileşimli kipte çalışır.\n"
+
+#: parted/ui.c:170
+#, c-format
+msgid ""
+"\n"
+"\n"
+"You found a bug in GNU Parted! Here's what you have to do:\n"
+"\n"
+"Don't panic! The bug has most likely not affected any of your data.\n"
+"Help us to fix this bug by doing the following:\n"
+"\n"
+"Check whether the bug has already been fixed by checking\n"
+"the last version of GNU Parted that you can find at:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Please check this version prior to bug reporting.\n"
+"\n"
+"If this has not been fixed yet or if you don't know how to check,\n"
+"please visit the GNU Parted website:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"for further information.\n"
+"\n"
+"Your report should contain the version of this release (%s)\n"
+"along with the error message below, the output of\n"
+"\n"
+"\tparted DEVICE unit co print unit s print\n"
+"\n"
+"and the following history of commands you entered.\n"
+"Also include any additional information about your setup you\n"
+"consider important.\n"
+msgstr ""
+"\n"
+"\n"
+"GNU Parted'da bir yazılım hatası buldunuz! Yapmanız gereken şunlardır:\n"
+"\n"
+"Paniğe kapılmayın! Yazılım hatası büyük olasılıkla verinizi etkilemedi.\n"
+"Bu hatayı onarmak için bize şunları yaparak yardım edin:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"adresinde bulabileceğiniz GNU Parted'in son sürümünü kontrol\n"
+"ederek hatanın zaten düzeltilmiş olup olmadığını kontrol edin.\n"
+"Hatayı rapor etmeden önce lütfen bu sürümü kontrol edin.\n"
+"\n"
+"Eğer hata onarılmamışsa ya da nasıl kontrol edeceğinizi bilmiyorsanız,\n"
+"lütfen GNU Parted web sitesini\n"
+"daha fazla bilgi için ziyaret edin:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"Raporunuz bu dağıtımın sürüm numarasını (%s)\n"
+"aşağıdaki hata mesajını,\n"
+"\n"
+"\tparted DEVICE unit co print unit s print\n"
+"\n"
+"komutunun çıktısını ve aşağıdaki girdiğiniz komut tarihçesini içermelidir.\n"
+"Ayrıca kurulumunuz hakkında önemli olduğunu düşündüğünüz ek bilgileri\n"
+"ekleyiniz.\n"
+
+#: parted/ui.c:291
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+"\n"
+"Komut Tarihçesi:\n"
+
+#: parted/ui.c:354
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+"\n"
+"Hata: SEGV_MAPERR (Adres nesneye eşlenmedi)\n"
+
+#: parted/ui.c:360
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+"\n"
+"Hata: SEGV_ACCERR (Eşlenmiş nesne için geçersiz izinler)\n"
+
+#: parted/ui.c:365
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+"\n"
+"Hata: Genel bir SIGSEGV sinyaliyle karşılaşıldı.\n"
+
+#: parted/ui.c:389
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+"\n"
+"Hata: FPE_INTDIV (Tamsayı: sıfırla bölünme)"
+
+#: parted/ui.c:394
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+"\n"
+"Hata: FPE_INTOVF (Tamsayı: taşma)"
+
+#: parted/ui.c:399
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+"\n"
+"Hata: FPE_FLTDIV (Kayan: sıfırla bölünme)"
+
+#: parted/ui.c:404
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+"\n"
+"Hata: FPE_FLTOVF (Kayan: taşma)"
+
+#: parted/ui.c:409
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+"\n"
+"Hata: FPE_FLTUND (Kayan: boşalma)"
+
+#: parted/ui.c:414
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+"\n"
+"Hata: FPE_FLTRES (Kayan: kesin olmayan sonuç)"
+
+#: parted/ui.c:419
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+"\n"
+"Hata: FPE_FLTINV (Kayan: geçersiz işlem)"
+
+#: parted/ui.c:424
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+"\n"
+"Hata: FPE_FLTSUB (Kayan: altsimge erim dışı)"
+
+#: parted/ui.c:429
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+"\n"
+"Hata: Genel bir SIGFPE sinyaliyle karşılaşıldı."
+
+#: parted/ui.c:453
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+"\n"
+"Hata: ILL_ILLOPC (Kuraldışı Opcode)"
+
+#: parted/ui.c:458
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+"\n"
+"Hata: ILL_ILLOPN (Kuraldışı İşlenen)"
+
+#: parted/ui.c:463
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+"\n"
+"Hata: ILL_ILLADR (Kuraldışı adresleme kipi)"
+
+#: parted/ui.c:468
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+"\n"
+"Hata: ILL_ILLTRP (Kuraldışı Tuzak)"
+
+#: parted/ui.c:473
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+"\n"
+"Hata: ILL_PRVOPC (Ayrıcalıklı Opcode)"
+
+#: parted/ui.c:478
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+"\n"
+"Hata: ILL_PRVREG (Ayrıcalıklı Yazmaç)"
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+"\n"
+"Hata: ILL_COPROC (Eşişlemci Hatası)"
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+"\n"
+"Hata: ILL_BADSTK (Dahili Yığın Hatası)"
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+"\n"
+"Hata: Genel bir SIGILL sinyaliyle karşılaşıldı."
+
+#: parted/ui.c:891
+#, c-format
+msgid "invalid token: %s"
+msgstr "geçersiz andaç: %s"
+
+#: parted/ui.c:1048
+msgid "Expecting a partition number."
+msgstr "Bir disk bölümü numarası bekleniyor."
+
+#: parted/ui.c:1057
+msgid "Partition doesn't exist."
+msgstr "Disk bölümü yok."
+
+#: parted/ui.c:1077
+msgid "Expecting a file system type."
+msgstr "Bir dosya sistemi türü bekleniyor."
+
+#: parted/ui.c:1084
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Bilinmeyen dosya sistemi türü \"%s\"."
+
+#: parted/ui.c:1105
+msgid "Expecting a disk label type."
+msgstr "Bir disk etiketi türü bekleniyor."
+
+#: parted/ui.c:1203
+msgid "Can't create any more partitions."
+msgstr "Başka disk bölümü oluşturulamıyor."
+
+#: parted/ui.c:1213
+msgid "Expecting a partition type."
+msgstr "Bir disk bölümü türü bekleniyor."
+
+#: parted/ui.c:1361
+msgid "on"
+msgstr "açık"
+
+#: parted/ui.c:1362
+msgid "off"
+msgstr "kapalı"
+
+#: parted/ui.c:1379
+msgid "optimal"
+msgstr "optimal"
+
+#: parted/ui.c:1380
+msgid "minimal"
+msgstr "minimal"
+
+#: parted/ui.c:1513
+msgid "OPTIONs:"
+msgstr "SEÇENEKler:"
+
+#: parted/ui.c:1518
+msgid "COMMANDs:"
+msgstr "KOMUTlar:"
+
+#: parted/ui.c:1521
+#, c-format
+msgid ""
+"\n"
+"Report bugs to %s\n"
+msgstr ""
+"\n"
+"Yazılım hatalarını %s'e bildirin\n"
+
+#: parted/ui.c:1528
+#, c-format
+msgid "Using %s\n"
+msgstr "%s kullanılıyor\n"
+
+#: parted/ui.c:1602
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr "Bu komut etkileşimsiz kipte anlamsız.\n"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]\n"
+#~ "  or:  %s DEVICE MINOR\n"
+#~ msgstr ""
+#~ "Kullanım: %s [SEÇENEK]\n"
+#~ "  ya da:  %s AYGIT MİNOR\n"
+
+#~ msgid ""
+#~ "Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Bir FAT disk bölümündeki kullanılmayan boşluğu silin (bir GNU Parted "
+#~ "deneme aracı).\n"
+#~ "\n"
+
+#~ msgid "      --help     display this help and exit\n"
+#~ msgstr "      --help     bu yardımı görüntüler ve çıkar\n"
+
+#~ msgid "      --version  output version information and exit\n"
+#~ msgstr "      --version  sürüm bilgisi çıkartır ve çıkar\n"
+
+#~ msgid "too few arguments"
+#~ msgstr "argüman sayısı yetersiz"
+
+#~ msgid "too many arguments"
+#~ msgstr "çok fazla argüman"
+
+#~ msgid "invalid minor device number: %s"
+#~ msgstr "geçersiz minör aygıt numarası: %s"
+
+#~ msgid "Could not detect file system."
+#~ msgstr "Dosya sistemi saptanamıyor."
+
+#~ msgid "The file system is bigger than its volume!"
+#~ msgstr "Dosya sistemi oylumundan daha büyük!"
+
+#~ msgid "Support for opening %s file systems is not implemented yet."
+#~ msgstr "%s dosya sistemlerini açmak için destek henüz sağlanmamıştır."
+
+#~ msgid "Support for creating %s file systems is not implemented yet."
+#~ msgstr "%s dosya sistemlerini oluşturmak için destek henüz sağlanmamıştır."
+
+#~ msgid "Support for checking %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "%s dosya sistemlerini kontrol etmek için destek henüz sağlanmamıştır."
+
+#~ msgid "raw block copying"
+#~ msgstr "ham blok kopyalama"
+
+#~ msgid "growing file system"
+#~ msgstr "büyüyen dosya sistemi"
+
+#~ msgid "Can't copy onto an overlapping partition."
+#~ msgstr "Çakışan disk bölümlerinin üzerine kopyalanamıyor."
+
+#~ msgid ""
+#~ "Direct support for copying file systems is not yet implemented for %s.  "
+#~ "However, support for resizing is implemented.  Therefore, the file system "
+#~ "can be copied if the new partition is at least as big as the old one.  "
+#~ "So, either shrink the partition you are trying to copy, or copy to a "
+#~ "bigger partition."
+#~ msgstr ""
+#~ "%s için dosya sistemlerini kopyalamaya direkt destek henüz "
+#~ "sağlanmamıştır.  Ancak yeniden boyutlandırma desteği mevcut.  Bu nedenle, "
+#~ "eğer yeni disk bölümü en az eskisi kadar büyükse, dosya sistemi "
+#~ "kopyalanabilir.  Dolayısıyla, ya kopyalamaya çalıştığınız disk bölümünü "
+#~ "küçültün, ya da daha büyük bir disk bölümüne kopyalayın."
+
+#~ msgid "Support for copying %s file systems is not implemented yet."
+#~ msgstr "%s dosya sistemlerini kopyalamak için destek henüz sağlanmamıştır."
+
+#~ msgid "Support for resizing %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "%s dosya sistemlerini yeniden boyutlandırmak için destek henüz "
+#~ "sağlanmamıştır."
+
+#~ msgid "creating"
+#~ msgstr "oluşturuluyor"
+
+#~ msgid "The file system is in an invalid state.  Perhaps it is mounted?"
+#~ msgstr "Dosya sistemi geçersiz bir durumda.  Bağlı olabilir mi?"
+
+#~ msgid "The file system is in old (unresizeable) format."
+#~ msgstr "Dosya sistemi eski (yeniden boyutlanamayan) biçemde."
+
+#~ msgid "Invalid free blocks count.  Run reiserfsck --check first."
+#~ msgstr "Geçersiz serbest blok sayısı.  Önce reiserfsck --check yürütün."
+
+#~ msgid "checking"
+#~ msgstr "kontrol ediliyor"
+
+#~ msgid "Reiserfs tree seems to be corrupted.  Run reiserfsck --check first."
+#~ msgstr "Reiserfs ağacı bozuk görünüyor.  Önce reiserfsck --check yürütün."
+
+#~ msgid ""
+#~ "The reiserfs file system passed a basic check.  For a more comprehensive "
+#~ "check, run reiserfsck --check."
+#~ msgstr ""
+#~ "reiserfs dosya sistemi temel bir kontrolü geçti.  Daha kapsamlı bir "
+#~ "kontrol için reiserfsck --check yürütünüz."
+
+#~ msgid "Sorry, can't move the start of reiserfs partitions yet."
+#~ msgstr "Üzgünüm, henüz reiserfs disk bölümlerinin başlangıcı taşınamıyor."
+
+#~ msgid "Couldn't reopen device abstraction layer for read/write."
+#~ msgstr "Aygıt özetleme katmanı oku/yaz için yeniden açılamıyor."
+
+#~ msgid "shrinking"
+#~ msgstr "küçültülüyor"
+
+#~ msgid "expanding"
+#~ msgstr "genişletiliyor"
+
+#~ msgid "Couldn't create reiserfs device abstraction handler."
+#~ msgstr "Reiserfs aygıt özetleme işleyici oluşturulamıyor."
+
+#~ msgid "Device is too small for %lu blocks."
+#~ msgstr "%lu blok için aygıt çok küçük."
+
+#~ msgid "copying"
+#~ msgstr "kopyalıyor"
+
+#~ msgid "Couldn't resolve symbol %s.  Error: %s."
+#~ msgstr "Simge %s çözümlenemiyor.  Hata: %s."
+
+#~ msgid "GNU Parted found an invalid libreiserfs library."
+#~ msgstr "GNU Parted geçersiz bir libreiserfs kütüphanesi buldu."
+
+#~ msgid ""
+#~ "GNU Parted has detected libreiserfs interface version mismatch.  Found %d-"
+#~ "%d, required %d. ReiserFS support will be disabled."
+#~ msgstr ""
+#~ "GNU Parted libreiserfs arayüz sürüm uyumsuzluğu tespit etti.  %d-%d "
+#~ "buldu, %d gerekiyordu. ReiserFS desteği etkisizleştirilecek."
+
+#~ msgid "Inconsistent group descriptors!"
+#~ msgstr "Tutarsız grup tanımlayıcıları!"
+
+#~ msgid "File system full!"
+#~ msgstr "Dosya sistemi dolu!"
+
+#~ msgid "Invalid superblock.  Are you sure this is an ext2 file system?"
+#~ msgstr ""
+#~ "Geçersiz süperblok.  Bunun bir ext2 dosya sistemi olduğundan emin misiniz?"
+
+#~ msgid "File system has errors!  You should run e2fsck."
+#~ msgstr "Dosya sisteminde hatalar var!  e2fsck'yi yürütün."
+
+#~ msgid ""
+#~ "File system was not cleanly unmounted!  You should run e2fsck.  Modifying "
+#~ "an unclean file system could cause severe corruption."
+#~ msgstr ""
+#~ "Dosya sistemi temizce ayrılmadı!  e2fsck'lamalısınız.  Temiz olmayan "
+#~ "dosya sistemini değiştirmek ciddi sorunlara yol açabilir."
+
+#~ msgid ""
+#~ "File system has an incompatible feature enabled.  Compatible features are "
+#~ "has_journal, dir_index, filetype, sparse_super and large_file.  Use "
+#~ "tune2fs or debugfs to remove features."
+#~ msgstr ""
+#~ "Dosya sisteminin uyumsuz bir özelliği etkin durumda.  Uyumlu özellikler "
+#~ "has_journal, dir_index, filetype, sparse_super ve lrage_file'dır.  "
+#~ "Özellikleri silmek için tune2fs ya da debugfs kullanın."
+
+#~ msgid "Error allocating buffer cache."
+#~ msgstr "Tampon önbellek atamada hata."
+
+#~ msgid ""
+#~ "Found an inode with a incorrect link count.  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "Yanlış link sayısına sahip bir dosya indeksi bulundu.  İyisi mi önce bir "
+#~ "e2fsck yürütün."
+
+#~ msgid "Not enough free inodes!"
+#~ msgstr "Yeterli serbest dosya indeksi yok!"
+
+#~ msgid "File system is too full to remove a group!"
+#~ msgstr "Dosya sistemi bir grubu silmek için çok dolu!"
+
+#~ msgid "File system has too many allocated inodes to remove a group!"
+#~ msgstr ""
+#~ "Dosya sistemi bir grubu silmek için çok sayıda dosya indeksine sahip!"
+
+#~ msgid "adding groups"
+#~ msgstr "gruplar ekleniyor"
+
+#~ msgid "Your file system is too full to resize it to %i blocks.  Sorry."
+#~ msgstr ""
+#~ "Dosya sisteminiz %i bloğa yeniden boyutlandırılmak için çok dolul.  "
+#~ "Üzgünüm."
+
+#~ msgid ""
+#~ "Your file system has too many occupied inodes to resize it to %i blocks.  "
+#~ "Sorry."
+#~ msgstr ""
+#~ "Dosya sisteminiz %i bloğa yeniden boyutlandırmak için çok sayıda dolu "
+#~ "dosya indeksine sahip.  Üzgünüm."
+
+#~ msgid "File system was not cleanly unmounted!  You should run e2fsck."
+#~ msgstr "Dosya sistemi temizce ayrılmadı!  e2fsck çalıştırmalısınız."
+
+#~ msgid ""
+#~ "The file system has the 'dir_index' feature enabled.  Parted can only "
+#~ "resize the file system if it disables this feature.  You can enable it "
+#~ "later by running 'tune2fs -O dir_index DEVICE' and then 'e2fsck -fD "
+#~ "DEVICE'."
+#~ msgstr ""
+#~ "Dosya sisteminin 'dir_index' özelliği etkin halde...  Parted, dosya "
+#~ "sistemini ancak bu özelliği devre dışı bırakarak yeniden "
+#~ "boyutlandırabilir.  Daha sonra 'tune2fs -O dir_index' ve sonrasında "
+#~ "'e2fsck -fD AYGIT' komutlarıyla yeniden etkinleştirebilirsiniz."
+
+#~ msgid ""
+#~ "A resize operation on this file system will use EXPERIMENTAL code\n"
+#~ "that MAY CORRUPT it (although no one has reported any such damage yet).\n"
+#~ "You should at least backup your data first, and run 'e2fsck -f' "
+#~ "afterwards."
+#~ msgstr ""
+#~ "Bu dosya sistemindeki yeniden boyutlama işlemi DENEYSEL kod kullanacak\n"
+#~ "bu, dosya sisteminde BOZULMAYA YOL AÇABİLİR (şimdiye dek kimse bunu rapor "
+#~ "etmediyse de).\n"
+#~ "En azından önce verinizi yedeklemeli, sonra da 'e2fsck -f' yürütmelisiniz."
+
+#~ msgid "Cross-linked blocks found!  Better go run e2fsck first!"
+#~ msgstr "Çapraz bağlı bloklar bulundu! İiyisi mi önce gibip e2fsck yürütün!"
+
+#~ msgid "Block %i has no reference?  Weird."
+#~ msgstr "%i bloğunun başvurusu yok?  Tuhaf"
+
+#~ msgid "Block %i shouldn't have been marked (%d, %d)!"
+#~ msgstr "%i bloğu işaretlenmemiş olmalıydı (%d, %d)!"
+
+#~ msgid ""
+#~ "The ext2 file system passed a basic check.  For a more comprehensive "
+#~ "check, use the e2fsck program."
+#~ msgstr ""
+#~ "ext2 dosya sistemi temel bir kontrolü geçti.  Daha kapsamlı bir kontrol "
+#~ "için e2fsck programını kullanınız."
+
+#~ msgid "Sorry, can't move the start of ext2 partitions yet!"
+#~ msgstr "Üzgünüm, henüz ext2 disk bölümlerinin başlangıcı taşınamıyor!"
+
+#~ msgid "Couldn't flush buffer cache!"
+#~ msgstr "Tampon önbellek boşaltılamadı!"
+
+#~ msgid "writing per-group metadata"
+#~ msgstr "grup bazında metaverisi yazılıyor"
+
+#~ msgid "File system too small for ext2."
+#~ msgstr "ext2 için dosya sistemi çok küçük."
+
+#~ msgid ""
+#~ "You need %s of free disk space to shrink this partition to this size.  "
+#~ "Currently, only %s is free."
+#~ msgstr ""
+#~ "Bu disk bölümünü bu boyuta küçültmek için %1$s'lik boş yere "
+#~ "gereksiniminiz var.  Halen yalnızca %2$s kadarı boş."
+
+#~ msgid ""
+#~ "Cluster start delta = %d, which is not a multiple of the cluster size %d."
+#~ msgstr ""
+#~ "Küme başlangıcı delta = %d, küme boyutu olan %d'nin katsayısı değil."
+
+#~ msgid "Partition too big/small for a %s file system."
+#~ msgstr "Disk bölümü, bir %s dosya sistemi için çok büyük/küçük"
+
+#~ msgid ""
+#~ "The FATs don't match.  If you don't know what this means, then select "
+#~ "cancel, run scandisk on the file system, and then come back."
+#~ msgstr ""
+#~ "FAT'lar uyuşmuyor.  Eğer bunun ne demek olduğunu bilmiyorsanız, Vazgeç'i "
+#~ "seçin, dosya sisteminde scandisk'i yürütün, ve buraya dönün."
+
+#~ msgid "There are no possible configurations for this FAT type."
+#~ msgstr "Bu FAT türü için olası yapılandırma yok."
+
+#~ msgid ""
+#~ "File system doesn't have expected sizes for Windows to like it.  Cluster "
+#~ "size is %dk (%dk expected); number of clusters is %d (%d expected); size "
+#~ "of FATs is %d sectors (%d expected)."
+#~ msgstr ""
+#~ "Dosya sistemi, Windows'un hoşlanması beklenen boyutlara sahip değil.  "
+#~ "Küme boyutu %dk (%dk beklenirdi); küme sayısı %d (%d beklenirdi); FAT "
+#~ "boyutları %d sektördür (%d beklenirdi)."
+
+#~ msgid ""
+#~ "File system is reporting the free space as %d clusters, not %d clusters."
+#~ msgstr "Dosya sistemi boşluğun %d küme olduğunu bildiriyor, %d küme değil."
+
+#~ msgid ""
+#~ "There's not enough room in the root directory for all of the files.  "
+#~ "Either cancel, or ignore to lose the files."
+#~ msgstr ""
+#~ "Kök dizininde tüm dosyalara yetecek yer yok.  Ya iptal edin, ya da "
+#~ "dosyaları yitirmek için yoksayın."
+
+#~ msgid "Error writing to the root directory."
+#~ msgstr "Kök dizinine yazmada hata."
+
+#~ msgid ""
+#~ "If you leave your file system as FAT16, then you will have no problems."
+#~ msgstr "Eğer dosya sisteminizi FAT16 olarak bırakırsanız sorununuz olmaz."
+
+#~ msgid ""
+#~ "If you convert to FAT16, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual)."
+#~ msgstr ""
+#~ "Eğer FAT16'ya dönüştürürseniz ve bu disk bölümüne MS Windows yüklenmişse, "
+#~ "MS Windows önyükleyicisini yeniden yüklemelisiniz.  Eğer bunu yapmak "
+#~ "isterseniz, Parted el kitabına (ya da dağıtımınızın el kitabına) "
+#~ "başvurmalısınız."
+
+#~ msgid ""
+#~ "If you leave your file system as FAT32, then you will not introduce any "
+#~ "new problems."
+#~ msgstr ""
+#~ "Eğer dosya sisteminizi FAT32 olarak bırakırsanız yeni bir sorunla "
+#~ "karşılaşmayacaksınız."
+
+#~ msgid ""
+#~ "If you convert to FAT32, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual).  Also, converting to FAT32 will make the file system unreadable "
+#~ "by MS DOS, MS Windows 95a, and MS Windows NT."
+#~ msgstr ""
+#~ "Eğer FAT32'ye dönüştürürseniz ve bu disk bölümüne MS Windows yüklenmişse, "
+#~ "MS Windows önyükleyicisini yeniden yüklemelisiniz.  Eğer bunu yapmak "
+#~ "isterseniz, Parted el kitabına (ya da dağıtımınızın el kitabına) "
+#~ "başvurmalısınız.  Ayrıca FAT32'ye dönüşüm, dosya sisteminin MS DOS, MS "
+#~ "Windows 95a ve MS Windows NT tarafından okunamaz olmasına yol açacaktır."
+
+#~ msgid "%s  %s  %s"
+#~ msgstr "%s  %s  %s"
+
+#~ msgid "Would you like to use FAT32?"
+#~ msgstr "FAT32 kullanmak ister misiniz?"
+
+#~ msgid "%s  %s"
+#~ msgstr "%s  %s"
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT16."
+#~ msgstr ""
+#~ "Dosya sistemi, yalnızca FAT16'ya dönüştürülerek bu boyuta yeniden "
+#~ "boyutlandırılabilir."
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT32."
+#~ msgstr ""
+#~ "Dosya sistemi, yalnızca FAT32'ye dönüştürülerek bu boyuta yeniden "
+#~ "boyutlandırılabilir."
+
+#~ msgid ""
+#~ "GNU Parted cannot resize this partition to this size.  We're working on "
+#~ "it!"
+#~ msgstr ""
+#~ "GNU Parted bu disk bölümünü bu boyuta yeniden boyutlandıramaz.  Üzerinde "
+#~ "çalışıyoruz!"
+
+#~ msgid "Bad directory entry for %s: first cluster is the end of file marker."
+#~ msgstr "%s için bozuk dizin girişi: ilk küme dosya belirtecinin sonunda."
+
+#~ msgid ""
+#~ "Bad FAT: unterminated chain for %s.  You should run dosfsck or scandisk."
+#~ msgstr ""
+#~ "Bozuk FAT: %s için sonlandırılmamış zincir.  dosfsck ya da scandisk "
+#~ "yürütmelisiniz."
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d outside file system in chain for %s.  You should run "
+#~ "dosfsck or scandisk."
+#~ msgstr ""
+#~ "Bozuk FAT: %d kümesi %s için dosya sistemi zincirinin dışında.  dosfsck "
+#~ "ya da scandisk yürütmelisiniz."
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d is cross-linked for %s.  You should run dosfsck or "
+#~ "scandisk."
+#~ msgstr ""
+#~ "Bozuk FAT: %d kümesi %s için çapraz bağlı.  dosfsck ya da scandisk "
+#~ "yürütmelisiniz."
+
+#~ msgid "%s is %dk, but it has %d clusters (%dk)."
+#~ msgstr "%s %dkdır, fakat %d kümeye (%dk) sahip."
+
+#~ msgid ""
+#~ "The file %s is marked as a system file.  This means moving it could cause "
+#~ "some programs to stop working."
+#~ msgstr ""
+#~ "%s dosyası bir sistem dosyası olarak işaretlenmiş.  Bu, onu taşımanın "
+#~ "bazı programların çalışmasını durdurmaya yolaçacağı anlamına gelir."
+
+#~ msgid ""
+#~ "FAT %d media %x doesn't match the boot sector's media %x.  You should "
+#~ "probably run scandisk."
+#~ msgstr ""
+#~ "FAT %d ortam %x önyükleme sektörünün ortamı %x'le uyuşmamakta.  "
+#~ "Muhtemelen scandisk yürütmelisiniz."
+
+#~ msgid "fat_table_set: cluster %ld outside file system"
+#~ msgstr "fat_table_set: %ld kümesi dosya sisteminin dışında"
+
+#~ msgid "fat_table_get: cluster %ld outside file system"
+#~ msgstr "fat_table_get: %ld kümesi dosya sisteminin dışında"
+
+#~ msgid "fat_table_alloc_cluster: no free clusters"
+#~ msgstr "fat_table_alloc_cluster: boş küme yok"
+
+#~ msgid "Too many bad pages."
+#~ msgstr "Çok sayıda bozuk sayfa."
+
+#~ msgid "The file system contains errors."
+#~ msgstr "Dosya sistemi hatalar içeriyor."
+
+#~ msgid "Bad blocks could not be read."
+#~ msgstr "Hatalı bloklar okunamıyor."
+
+#~ msgid ""
+#~ "Trying to register an extent starting at block 0x%X, but another one "
+#~ "already exists at this position.  You should check the file system!"
+#~ msgstr ""
+#~ "Blok 0x%X'den başlayacak şekilde bir aralık kaydedilmeye çalışılıyor, "
+#~ "fakat bu konumda bir başkası zaten mevcut.  Dosya sistemini kontrol "
+#~ "etmelisiniz!"
+
+#~ msgid ""
+#~ "Trying to move an extent from block Ox%X to block Ox%X, but another one "
+#~ "already exists at this position.  This should not happen!"
+#~ msgstr ""
+#~ "Blok Ox%X'den Ox%X'e bir aralık taşınmaya çalışılıyor, fakat bu konumda "
+#~ "bir başkası zaten mevcut.  Bu olmamalı!"
+
+#~ msgid "Could not update the extent cache for HFS file with CNID %X."
+#~ msgstr "Aralık önbelleği CNID %X'li HFS dosyası için güncellenemedi."
+
+#~ msgid "Trying to read HFS file with CNID %X behind EOF."
+#~ msgstr "EOF arkasında CNID %X'li HFS dosyası okunmaya çalışılıyor."
+
+#~ msgid "Could not find sector %lli of HFS file with CNID %X."
+#~ msgstr "CNID %2$X li HFS dosyasının %1$lli sektörü bulunamadı."
+
+#~ msgid "Trying to write HFS file with CNID %X behind EOF."
+#~ msgstr "EOF arkasında CNID %X'li HFS dosyası yazılmaya çalışılıyor."
+
+#~ msgid "Could not update the extent cache for HFS+ file with CNID %X."
+#~ msgstr "Aralık önbelleği CNID %X'li HFS+ dosyası için güncellenemedi."
+
+#~ msgid "Trying to read HFS+ file with CNID %X behind EOF."
+#~ msgstr "EOF arkasında CNID %X'li HFS+ dosyası okunmaya çalışılıyor."
+
+#~ msgid "Could not find sector %lli of HFS+ file with CNID %X."
+#~ msgstr "CNID %2$X li HFS+ dosyasının %1$lli sektörü bulunamadı."
+
+#~ msgid "Trying to write HFS+ file with CNID %X behind EOF."
+#~ msgstr "EOF arkasında CNID %X'li HFS+ dosyası yazılmaya çalışılıyor."
+
+#~ msgid "Sorry, HFS cannot be resized that way yet."
+#~ msgstr "Üzgünüm, HFS henüz o şekilde yeniden boyutlandırılamıyor."
+
+#~ msgid "Data relocation has failed."
+#~ msgstr "Veri yeniden konumlandırılması başarısız."
+
+#~ msgid "Data relocation left some data in the end of the volume."
+#~ msgstr ""
+#~ "Veri yeniden konumladırılması oylumun sonunda bazı verileri bıraktı."
+
+#~ msgid "writing HFS Master Directory Block"
+#~ msgstr "HFS Ana Dizin Bloğu yazılıyor"
+
+#~ msgid "No valid HFS[+X] signature has been found while opening."
+#~ msgstr "Açarken, geçerli HFS[+X] imzası bulunamadı."
+
+#~ msgid "Version %d of HFS+ isn't supported."
+#~ msgstr "HFS+'in %d sürümü desteklenmiyor."
+
+#~ msgid "Version %d of HFSX isn't supported."
+#~ msgstr "HFSX'in %d sürümü desteklenmiyor."
+
+#~ msgid "Data relocation left some data at the end of the volume."
+#~ msgstr ""
+#~ "Veri yeniden konumladırılması oylumun sonunda bazı verileri bıraktı."
+
+#~ msgid "Error while writing the allocation file."
+#~ msgstr "Atama dosyasına yazmada hata."
+
+#~ msgid "Error while writing the compatibility part of the allocation file."
+#~ msgstr "Atama dosyasının uyumluluk bölümüne yazmada hata."
+
+#~ msgid "writing HFS+ Volume Header"
+#~ msgstr "HFS+ Oylum Başlığı yazılıyor"
+
+#~ msgid "An error occurred while looking for the mandatory bad blocks file."
+#~ msgstr "Zorunlu hatalı bloklar dosyası aranırken bir hata oluştu."
+
+#~ msgid ""
+#~ "It seems there is an error in the HFS wrapper: the bad blocks file "
+#~ "doesn't contain the embedded HFS+ volume."
+#~ msgstr ""
+#~ "HFS sarmalayıcısında hata var gibi görünüyor: hatalı blok dosyası, gömülü "
+#~ "HFS+ oylumunu içermiyor."
+
+#~ msgid "Sorry, HFS+ cannot be resized that way yet."
+#~ msgstr "Üzgünüm, HFS+ henüz o şekilde yeniden boyutlandırılamıyor."
+
+#~ msgid "shrinking embedded HFS+ volume"
+#~ msgstr "gömülü HFS+ oylumu küçültülüyor"
+
+#~ msgid "Resizing the HFS+ volume has failed."
+#~ msgstr "HFS+ oylumunun yeniden boyutlandırılması başarısız."
+
+#~ msgid "shrinking HFS wrapper"
+#~ msgstr "HFS sarmalayıcısı küçültülüyor"
+
+#~ msgid "Updating the HFS wrapper has failed."
+#~ msgstr "HFS sarmalayıcısının göncellenmesi başarısız."
+
+#~ msgid ""
+#~ "This is not a real %s check.  This is going to extract special low level "
+#~ "files for debugging purposes."
+#~ msgstr ""
+#~ "Bu geçek bir %s kontrolü değil.  Hata ayıklama amacıyla düşük düzey "
+#~ "dosyalar özütlenecek."
+
+#~ msgid "Bad block list header checksum."
+#~ msgstr "Hatalı blok liste başlığı sağlama toplamı"
+
+#~ msgid ""
+#~ "Invalid size of a transaction block while replaying the journal (%i "
+#~ "bytes)."
+#~ msgstr "Günlük tekrar okunurken geçersiz bir işlem boyut bloğu (%i bayt)."
+
+#~ msgid ""
+#~ "Journal stored outside of the volume are not supported.  Try to "
+#~ "desactivate the journal and run Parted again."
+#~ msgstr ""
+#~ "Oylum dışında depolanan günlükler desteklenmiyor.  Günlüğü etkisiz "
+#~ "kılmayı ve Parted'ı yeniden çalıştırmayı deneyin."
+
+#~ msgid "Journal offset or size is not multiple of the sector size."
+#~ msgstr "Günlük başlangıcı ya da boyutu sektör boyutunun katı değil."
+
+#~ msgid "Incorrect magic values in the journal header."
+#~ msgstr "Günlük başlığında geçersiz sihirli değerler."
+
+#~ msgid "Journal size mismatch between journal info block and journal header."
+#~ msgstr "Günlük bilgi bloğu ve başlığı arasında günlük boyutu örtüşmüyor."
+
+#~ msgid "Some header fields are not multiple of the sector size."
+#~ msgstr "Bazı başlık alanları sektör boyutunun katı değil."
+
+#~ msgid ""
+#~ "The sector size stored in the journal is not 512 bytes.  Parted only "
+#~ "supports 512 bytes length sectors."
+#~ msgstr ""
+#~ "Günlükte kayıtlı sektör boyutu 512 bayt değil. Parted yalnızca 512 bayt "
+#~ "uzunluktaki sektörleri destekler."
+
+#~ msgid "Bad journal checksum."
+#~ msgstr "Bozuk günlük sağlama toplamı."
+
+#~ msgid ""
+#~ "The journal is not empty.  Parted must replay the transactions before "
+#~ "opening the file system.  This will modify the file system."
+#~ msgstr ""
+#~ "Günlük boş.  Parted, dosya sistemini açmadan işlemleri yinelemeli.  Bu, "
+#~ "dosya sistemini değiştirecek."
+
+#~ msgid ""
+#~ "The volume header or the master directory block has changed while "
+#~ "replaying the journal.  You should restart Parted."
+#~ msgstr ""
+#~ "Günlük yinelenirken ana dizin bloğunun oylum başlığı değişti.  Parted'ı "
+#~ "yeniden başlatmalısınız."
+
+#~ msgid "An extent has not been relocated."
+#~ msgstr "Bir aralık yeniden konumlanmadı."
+
+#~ msgid ""
+#~ "A reference to an extent comes from a place it should not.  You should "
+#~ "check the file system!"
+#~ msgstr ""
+#~ "Bir aralığın başvurusu gelmemesi gereken bir yerden geliyor.  Dosya "
+#~ "sistemini kontrol etmelisiniz!"
+
+#~ msgid "This HFS volume has no catalog file.  This is very unusual!"
+#~ msgstr "Bu HFS oylumunun katalog dosyası yok.  Bu çok sıradışı!"
+
+#~ msgid ""
+#~ "This HFS volume has no extents overflow file.  This is quite unusual!"
+#~ msgstr "Bu HFS oylumunun aralık taşması dosyası yok.  Bu oldukça sıradışı!"
+
+#~ msgid ""
+#~ "The extents overflow file should not contain its own extents!  You should "
+#~ "check the file system."
+#~ msgstr ""
+#~ "Aralık taşması dosyası, kendi aralıklarını içermemeli!  Dosya sistemini "
+#~ "kontrol etmelisiniz."
+
+#~ msgid "Could not cache the file system in memory."
+#~ msgstr "Dosya sistemi önbelleğe alınamıyor."
+
+#~ msgid "Bad blocks list could not be loaded."
+#~ msgstr "Hatalı blok listesi yüklenemedi."
+
+#~ msgid "An error occurred during extent relocation."
+#~ msgstr "Aralık yeniden konumlandırılması sırasında bir hata oluştu."
+
+#~ msgid "This HFS+ volume has no catalog file.  This is very unusual!"
+#~ msgstr "Bu HFS+ oylumunun katalog dosyası yok.  Bu çok sıradışı!"
+
+#~ msgid ""
+#~ "This HFS+ volume has no extents overflow file.  This is quite unusual!"
+#~ msgstr "Bu HFS+ oylumunun aralık taşması dosyası yok.  Bu oldukça sıradışı!"
+
+#~ msgid "The partition must have one of the following FS-TYPEs: "
+#~ msgstr "Disk bölümü aşağıdaki FS-TYPE'larından birine sahip olmalıdır: "
+
+#~ msgid ""
+#~ "The existing file system will be destroyed and all data on the partition "
+#~ "will be lost. Do you want to continue?"
+#~ msgstr ""
+#~ "Mevcut dosya sistemi silinecek ve disk bölümündeki tüm veri kaybolacak. "
+#~ "Devam etmek istiyor musunuz?"
+
+#~ msgid ""
+#~ "WARNING: you are attempting to use %s to operate on (%s) a file system.\n"
+#~ "%s's file system manipulation code is not as robust as what you'll find "
+#~ "in\n"
+#~ "dedicated, file-system-specific packages like e2fsprogs.  We recommend\n"
+#~ "you use %s only to manipulate partition tables, whenever possible.\n"
+#~ "Support for performing most operations on most types of file systems\n"
+#~ "will be removed in an upcoming release.\n"
+#~ msgstr ""
+#~ "UYARI: (%s) dosya sistemi üzerinde işlem yapmak üzere %s kullanma "
+#~ "girişiminde bulunuyorsunuz.\n"
+#~ "%s'nin dosya sistemi işleme kodu, e2fsprogs gibi adanmış, dosya sistemine "
+#~ "özgün\n"
+#~ "paketlerde bulabileceğiniz kadar sağlam değildir.  Biz, %s 'i mümkünse "
+#~ "yalnızca\n"
+#~ "bölümleme tablolarını işlemek için kullanmanızı öneririz.\n"
+#~ "Gelecek bir sürümde dosya sistemleri üzerinde yapılabilen işlemler ve "
+#~ "türlerine\n"
+#~ "verilen destek kaldırılacaktır.\n"
+
+#~ msgid "Source device?"
+#~ msgstr "Kaynak aygıtı?"
+
+#~ msgid "Source partition number?"
+#~ msgstr "Kaynak disk bölümü numarası?"
+
+#~ msgid "Can't copy an extended partition."
+#~ msgstr "Ek disk bölümleri kopyalanamıyor."
+
+#~ msgid "Destination partition number?"
+#~ msgstr "Hedef disk bölümü numarası?"
+
+#~ msgid ""
+#~ "An extended partition cannot hold a file system.  Did you want mkpart?"
+#~ msgstr "Bir ek disk bölümünün dosya sistemi olamaz.  mkpart mı istediniz?"
+
+#~ msgid "Can't move an extended partition."
+#~ msgstr "Bir ek disk bölümü taşınamaz."
+
+#~ msgid "Can't move a partition onto itself.  Try using resize, perhaps?"
+#~ msgstr ""
+#~ "Bir disk bölümü kendi üzerine taşınamaz.  Belki yeniden boyutlandırmayı "
+#~ "dener misiniz?"
+
+#~ msgid "Minor: %d\n"
+#~ msgstr "Minor: %d\n"
+
+#~ msgid "Flags: %s\n"
+#~ msgstr "Bayraklar: %s\n"
+
+#~ msgid "File System: %s\n"
+#~ msgstr "Dosya Sistemi: %s\n"
+
+#~ msgid "Size:         "
+#~ msgstr "Boyut:         "
+
+#~ msgid "Minimum size: "
+#~ msgstr "Minimum boyut: "
+
+#~ msgid "Maximum size: "
+#~ msgstr "Maksimum boyut: "
+
+#~ msgid "check"
+#~ msgstr "check"
+
+#~ msgid ""
+#~ "check NUMBER                             do a simple check on the file "
+#~ "system"
+#~ msgstr ""
+#~ "check NUMBER                  dosya sistemi üzerinde basit bir kontrol yap"
+
+#~ msgid "cp"
+#~ msgstr "cp"
+
+#~ msgid ""
+#~ "cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   copy file system to another "
+#~ "partition"
+#~ msgstr ""
+#~ "cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   dosya sistemini bir başka disk "
+#~ "bölümüne kopyala"
+
+#~ msgid "mkfs"
+#~ msgstr "mkfs"
+
+#~ msgid ""
+#~ "mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on "
+#~ "partition NUMBER"
+#~ msgstr ""
+#~ "mkfs NUMBER FS-TYPE             NUMBER disk bölümü üzerinde FS-TYPE dosya "
+#~ "sistemini yap"
+
+#~ msgid "mkpartfs"
+#~ msgstr "mkpartfs"
+
+#~ msgid ""
+#~ "mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file "
+#~ "system"
+#~ msgstr ""
+#~ "mkpartfs PART-TYPE FS-TYPE START END      dosya sistemi olan bir disk "
+#~ "bölümü yap"
+
+#~ msgid "move"
+#~ msgstr "move"
+
+#~ msgid "move NUMBER START END                    move partition NUMBER"
+#~ msgstr "move NUMBER START END           NUMBER. disk bölümünü taşı"
+
+#~ msgid "resize"
+#~ msgstr "resize"
+
+#~ msgid ""
+#~ "resize NUMBER START END                  resize partition NUMBER and its "
+#~ "file system"
+#~ msgstr ""
+#~ "resize NUMBER START END          NUMBER. disk bölümünü ve üzerindeki "
+#~ "dosya sistemini yeniden boyutlandır"
+
+#~ msgid "This is not an ECKD disk!  This disk type is not supported!"
+#~ msgstr "Bu bir ECKD diski değil!  Bu disk türü desteklenmiyor!"
+
+#~ msgid ""
+#~ "Device %s has a logical sector size of %lld.  Not all parts of GNU Parted "
+#~ "support this at the moment, and the working code is HIGHLY EXPERIMENTAL.\n"
+#~ msgstr ""
+#~ "%s aygıtının mantıksal sektör boyutu %lld'dir. GNU parted'in tüm "
+#~ "bölümleri bunu henüz desteklememekte olup çalışan kod OLDUKÇA "
+#~ "DENEYSELDİR.\n"
+
+#~ msgid ""
+#~ "WARNING: the kernel failed to re-read the partition table on %s (%s).  As "
+#~ "a result, it may not reflect all of your changes until after reboot."
+#~ msgstr ""
+#~ "UYARI: Çekirdek %1$s (%2$s) üzerindeki bölümleme tablosunu yeniden "
+#~ "okuyamadı. Bunun sonucu olarak, bilgisayarı yeniden başlatmadan tüm "
+#~ "değişikliklerinizi yansıtmayabilir."
+
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: kuraldışı seçenek -- %c\n"
+
+#~ msgid ""
+#~ "Could not determine minimum io size for %s: %s.\n"
+#~ "Using the default size (%lld)."
+#~ msgstr ""
+#~ "%1$s için minimum girdi/çıktı boyutu belirlenemiyor:%2$s.\n"
+#~ "Öntanımlı boyut (%3$lld) kullanılacak."
+
+#~ msgid "Unable to determine the block size of this dasd"
+#~ msgstr "Bu dasd'in blok boyutu belirlenemedi"
diff --git a/po/uk.gmo b/po/uk.gmo
new file mode 100644 (file)
index 0000000..8aaed4f
Binary files /dev/null and b/po/uk.gmo differ
diff --git a/po/uk.po b/po/uk.po
new file mode 100644 (file)
index 0000000..5f3cdcb
--- /dev/null
+++ b/po/uk.po
@@ -0,0 +1,3407 @@
+# Ukrainian translation to parted.
+# Copyright (C) 2004 Free Software Foundation, Inc.
+# Maxim V. Dziumanenko <dziumanenko@gmail.com>, 2004-2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: parted 1.8.7\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2011-05-30 13:45+0200\n"
+"PO-Revision-Date: 2007-07-05 14:51+0300\n"
+"Last-Translator: Maxim V. Dziumanenko <dziumanenko@gmail.com>\n"
+"Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
+"Language: uk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/argmatch.c:133
+#, fuzzy, c-format
+msgid "invalid argument %s for %s"
+msgstr "Не вдається відкрити %s."
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr ""
+
+#: lib/argmatch.c:153
+#, fuzzy, c-format
+msgid "Valid arguments are:"
+msgstr "Не вдається відкрити %s."
+
+#: lib/closeout.c:112 libparted/labels/fdasd.c:107
+msgid "write error"
+msgstr "помилка запису"
+
+#: lib/error.c:181
+msgid "Unknown system error"
+msgstr "Невідома системна помилка"
+
+#: lib/getopt.c:548 lib/getopt.c:577
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
+msgstr "%s: ключ `%s' неоднозначний\n"
+
+#: lib/getopt.c:625 lib/getopt.c:629
+#, fuzzy, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s: ключ `--%s' має використовуватись без аргументу\n"
+
+#: lib/getopt.c:638 lib/getopt.c:643
+#, fuzzy, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr "%s: ключ `%c%s' має використовуватись без аргументів\n"
+
+#: lib/getopt.c:686 lib/getopt.c:705
+#, fuzzy, c-format
+msgid "%s: option '--%s' requires an argument\n"
+msgstr "%s: параметр `%s' має використовуватись з аргументом\n"
+
+#: lib/getopt.c:743 lib/getopt.c:746
+#, fuzzy, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s: невідомий ключ `--%s'\n"
+
+#: lib/getopt.c:754 lib/getopt.c:757
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "%s: невідомий ключ `%c%s'\n"
+
+#: lib/getopt.c:806 lib/getopt.c:809
+#, fuzzy, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: неправильний ключ -- %c\n"
+
+#: lib/getopt.c:859 lib/getopt.c:876 lib/getopt.c:1084 lib/getopt.c:1102
+#, fuzzy, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: ключ -- %c має використовуватись з аргументом\n"
+
+#: lib/getopt.c:932 lib/getopt.c:948
+#, fuzzy, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s: неоднозначний ключ `-W %s'\n"
+
+#: lib/getopt.c:972 lib/getopt.c:990
+#, fuzzy, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr "%s: ключ `-W %s' має використовуватись без аргументу\n"
+
+#: lib/getopt.c:1011 lib/getopt.c:1029
+#, fuzzy, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: параметр `%s' має використовуватись з аргументом\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:271
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:272
+msgid "'"
+msgstr "'"
+
+#: lib/regcomp.c:133
+msgid "Success"
+msgstr "Виконано"
+
+#: lib/regcomp.c:136
+msgid "No match"
+msgstr "Немає збігів"
+
+#: lib/regcomp.c:139
+msgid "Invalid regular expression"
+msgstr "Неправильний регулярний вираз"
+
+#: lib/regcomp.c:142
+msgid "Invalid collation character"
+msgstr "Неправильне порівняння символів"
+
+#: lib/regcomp.c:145
+msgid "Invalid character class name"
+msgstr "Назва логічного тому містить неправильний символ \"%s\""
+
+#: lib/regcomp.c:148
+msgid "Trailing backslash"
+msgstr "Завершальний backslash"
+
+#: lib/regcomp.c:151
+msgid "Invalid back reference"
+msgstr "Неприпустиме зворотне посилання"
+
+#: lib/regcomp.c:154
+msgid "Unmatched [ or [^"
+msgstr "Невідповідні дужки [ чи [^"
+
+#: lib/regcomp.c:157
+msgid "Unmatched ( or \\("
+msgstr "Невідповідні дужки ( чи \\("
+
+#: lib/regcomp.c:160
+msgid "Unmatched \\{"
+msgstr "Невідповідні дужки \\{"
+
+#: lib/regcomp.c:163
+msgid "Invalid content of \\{\\}"
+msgstr "Неприпустимий вміст \\{\\}"
+
+#: lib/regcomp.c:166
+msgid "Invalid range end"
+msgstr "Неправильний кінець діапазону"
+
+#: lib/regcomp.c:169
+msgid "Memory exhausted"
+msgstr "Пам'ять вичерпано"
+
+#: lib/regcomp.c:172
+msgid "Invalid preceding regular expression"
+msgstr "Неправильний попередній регулярний вираз"
+
+#: lib/regcomp.c:175
+msgid "Premature end of regular expression"
+msgstr "Передчасно закінчений регулярний вираз"
+
+#: lib/regcomp.c:178
+msgid "Regular expression too big"
+msgstr "Регулярний вираз надто великий"
+
+#: lib/regcomp.c:181
+msgid "Unmatched ) or \\)"
+msgstr "Невідповідні дужки ) чи \\)"
+
+#: lib/regcomp.c:702
+msgid "No previous regular expression"
+msgstr "Відсутній попередній регулярний вираз"
+
+#. TRANSLATORS: A regular expression testing for an affirmative answer
+#. (english: "yes").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^yesexpr='
+#: lib/rpmatch.c:147
+msgid "^[yY]"
+msgstr "^[yYТт]"
+
+#. TRANSLATORS: A regular expression testing for a negative answer
+#. (english: "no").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^noexpr='
+#: lib/rpmatch.c:160
+msgid "^[nN]"
+msgstr "^[nNНн]"
+
+#: lib/version-etc.c:74
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr ""
+
+#: lib/version-etc.c:77
+#, c-format
+msgid "Packaged by %s\n"
+msgstr ""
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale.  Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:84
+msgid "(C)"
+msgstr "(C)"
+
+#: lib/version-etc.c:86
+#, fuzzy
+msgid ""
+"\n"
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"\n"
+"Ліцензія GPLv2+: GNU GPL версії 2 або старша <http://gnu.org/licenses/gpl."
+"html>\n"
+"Ця програма є вільною: ви можете вільно змінювати та розповсюджувати її.\n"
+"Але НЕМАЄ НІЯКИХ ГАРАНТІЙ, до межі, дозволеної згідно закону.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:102
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Автор %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:106
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Автори %s та %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:110
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Автори %s, %s та %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Автори %s, %s, %s,\n"
+"та %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Автори %s, %s, %s,\n"
+"%s, та %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:131
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Автори %s, %s, %s,\n"
+"%s, %s, та %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:139
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Автори %s, %s, %s.\n"
+"%s, %s, %s та %s\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:147
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Автори %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"та %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:156
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Автори %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, та %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:167
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Автори %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, та інші.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package.  Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:245
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Report bugs to: %s\n"
+msgstr ""
+"\n"
+"Відсилати звіти про помилки до <%s>.\n"
+
+#: lib/version-etc.c:247
+#, fuzzy, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr ""
+"\n"
+"Відсилати звіти про помилки до <%s>.\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr ""
+
+#: lib/version-etc.c:253
+#, c-format
+msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
+msgstr ""
+
+#: lib/version-etc.c:256
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "пам'ять вичерпано"
+
+#: lib/xstrtol-error.c:63
+#, fuzzy, c-format
+msgid "invalid %s%s argument `%s'"
+msgstr "Не вдається відкрити %s."
+
+#: lib/xstrtol-error.c:68
+#, fuzzy, c-format
+msgid "invalid suffix in %s%s argument `%s'"
+msgstr "Не вдається відкрити %s."
+
+#: lib/xstrtol-error.c:72
+#, fuzzy, c-format
+msgid "%s%s argument `%s' too large"
+msgstr "Не вдається відкрити %s."
+
+#: libparted/arch/beos.c:245
+msgid "Disk Image"
+msgstr "Образ диску"
+
+#: libparted/arch/beos.c:346 libparted/arch/gnu.c:277
+#: libparted/arch/linux.c:1545
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "Помилка відкривання %s: %s"
+
+#: libparted/arch/beos.c:357 libparted/arch/gnu.c:287
+#: libparted/arch/linux.c:1556
+#, c-format
+msgid "Unable to open %s read-write (%s).  %s has been opened read-only."
+msgstr ""
+"Не вдається відкрити %s для читання-запису (%s). %s відкрито у режимі лише-"
+"читання."
+
+#: libparted/arch/beos.c:419 libparted/arch/linux.c:1714
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s при встановленні позиції для читання на %s"
+
+#: libparted/arch/beos.c:452 libparted/arch/gnu.c:465 libparted/arch/gnu.c:564
+#: libparted/arch/gnu.c:692 libparted/arch/linux.c:1674
+#: libparted/arch/linux.c:1755
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s при читанні з %s"
+
+#: libparted/arch/beos.c:488 libparted/arch/gnu.c:525
+#: libparted/arch/linux.c:1831
+#, c-format
+msgid "Can't write to %s, because it is opened read-only."
+msgstr "Не вдається записати на %s, тому що він відкритий лише для читання."
+
+#: libparted/arch/beos.c:504 libparted/arch/linux.c:1856
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s при встановленні позиції для запису на %s"
+
+#: libparted/arch/beos.c:541 libparted/arch/gnu.c:601 libparted/arch/gnu.c:646
+#: libparted/arch/gnu.c:723 libparted/arch/linux.c:1804
+#: libparted/arch/linux.c:1898 libparted/arch/linux.c:1970
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s при записі на %s"
+
+#: partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Спробуйте `%s --help' для одержання додаткової інформації.\n"
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr "Використання: %s [КЛЮЧ] [ПРИСТРІЙ]...\n"
+
+#: partprobe/partprobe.c:142
+#, fuzzy
+msgid ""
+"Inform the operating system about partition table changes.\n"
+"\n"
+"  -d, --dry-run    do not actually inform the operating system\n"
+"  -s, --summary    print a summary of contents\n"
+"  -h, --help       display this help and exit\n"
+"  -v, --version    output version information and exit\n"
+msgstr ""
+"Інформувати ОС про зміну таблиці розділів.\n"
+"\n"
+"  -d, --no-update  не оновлювати ядро\n"
+"  -s, --summary    вивести зведення змісту\n"
+"  -h, --help       відобразити цю довідку та вийти\n"
+"  -v, --version    вивести інформацію про версію та вийти\n"
+
+#: partprobe/partprobe.c:150
+#, fuzzy
+msgid ""
+"\n"
+"When no DEVICE is given, probe all partitions.\n"
+msgstr ""
+"\n"
+"Якщо не вказано ПРИСТРІЙ, перечитуються всі розділи.\n"
+
+#: partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Відсилати звіти про помилки до <%s>.\n"
+
+#: libparted/arch/gnu.c:110
+#, c-format
+msgid "Unable to open %s."
+msgstr "Не вдається відкрити %s."
+
+#: libparted/arch/gnu.c:130
+msgid "Unable to probe store."
+msgstr "Не вдається визначити сховище."
+
+#: libparted/arch/gnu.c:368
+msgid ""
+"The partition table cannot be re-read.  This means you need to reboot before "
+"mounting any modified partitions.  You also need to reinstall your boot "
+"loader before you reboot (which may require mounting modified partitions).  "
+"It is impossible do both things!  So you'll need to boot off a rescue disk, "
+"and reinstall your boot loader from the rescue disk.  Read section 4 of the "
+"Parted User documentation for more information."
+msgstr ""
+"Не вдається перечитати таблицю розділів, слід перезавантажитись перш ніж "
+"підключати змінені розділи. Також перед перезавантаженням необхідно "
+"перевстановити завантажувач (що вимагає підключення змінених розділів). "
+"Неможливо виконати одночасно обидві дії! Тому слід завантажитись з "
+"завантажувального диску, та перевстановити завантажувач. Додаткову "
+"інформацію знайдете у розділі 4 документації з Parted."
+
+#: libparted/arch/gnu.c:385
+#, c-format
+msgid ""
+"The partition table on %s cannot be re-read (%s).  This means the Hurd knows "
+"nothing about any modifications you made.  You should reboot your computer "
+"before doing anything with %s."
+msgstr ""
+"Таблицю розділів на %s не вдається перечитати (%s). Це означає, що Hurd "
+"нічого не знає про внесені вами зміни. Необхідно перезавантажити ваш "
+"комп'ютер перед виконанням будь-яких дій з %s."
+
+#: libparted/arch/gnu.c:396 parted/parted.c:1967
+msgid ""
+"You should reinstall your boot loader before rebooting.  Read section 4 of "
+"the Parted User documentation for more information."
+msgstr ""
+"Необхідно перевстановити ваш завантажувач перед перезавантаженням. Додаткову "
+"інформацію знайдете у розділі 4 документації з Parted."
+
+#: libparted/arch/gnu.c:788
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%s при спробі синхронізації %s на диск"
+
+#: libparted/arch/linux.c:520
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "Не вдається отримати статус пристрою %s - %s."
+
+#: libparted/arch/linux.c:577
+#, fuzzy, c-format
+msgid "Unable to determine the dm type of %s."
+msgstr "Не вдається визначити розмір %s (%s)."
+
+#: libparted/arch/linux.c:669
+#, fuzzy, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+"Не вдається визначити розмір сектору для %s: %s.\n"
+"Використовується типовий розмір сектору (%lld)."
+
+#: libparted/arch/linux.c:690
+#, fuzzy, c-format
+msgid ""
+"Could not determine physical sector size for %s.\n"
+"Using the logical sector size (%lld)."
+msgstr ""
+"Не вдається визначити розмір сектору для %s: %s.\n"
+"Використовується типовий розмір сектору (%lld)."
+
+#: libparted/arch/linux.c:746
+#, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "Не вдається визначити розмір %s (%s)."
+
+#: libparted/arch/linux.c:832
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "Не вдається отримати ідентифікатор пристрою %s - %s"
+
+#: libparted/arch/linux.c:841
+msgid "Generic IDE"
+msgstr "Загальний IDE"
+
+#: libparted/arch/linux.c:862
+#, c-format
+msgid ""
+"Device %s has multiple (%d) logical sectors per physical sector.\n"
+"GNU Parted supports this EXPERIMENTALLY for some special disk label/file "
+"system combinations, e.g. GPT and ext2/3.\n"
+"Please consult the web site for up-to-date information."
+msgstr ""
+"Пристрій %s має декілька (%d) логічних серверів на фізичний сектор.\n"
+"Підтримка цього у GNU Parted є ЕКСПЕРИМЕНТАЛЬНОЮ для деяких спеціальних "
+"комбінацій  позначка диску/файлова система, наприклад. GPT та ext2/3.\n"
+"Додаткову інформацію шукайте на веб-сайті."
+
+#: libparted/arch/linux.c:1039
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "Помилка ініціалізації SCSI пристрою %s - %s"
+
+#: libparted/arch/linux.c:1103
+#, fuzzy, c-format
+msgid ""
+"The device %s is so small that it cannot possibly store a file system or "
+"partition table.  Perhaps you selected the wrong device?"
+msgstr ""
+"Пристрій %s має нульову довжину, та непридатний для розміщення файлової "
+"системи чи таблиці розділів. Можливо ви вибрали неправильний пристрій?"
+
+#: libparted/arch/linux.c:1216
+#, c-format
+msgid ""
+"Unable to determine geometry of file/device %s.  You should not use Parted "
+"unless you REALLY know what you're doing!"
+msgstr ""
+"Не вдається визначити геометрію файлу/пристрою %s. Не слід використовувати "
+"Parted, хіба-що ви ДІЙСНО знаєте, що ви робите!"
+
+#: libparted/arch/linux.c:1276
+msgid "Generic SD/MMC Storage Card"
+msgstr ""
+
+#: libparted/arch/linux.c:1329
+msgid "DAC960 RAID controller"
+msgstr "DAC960 RAID контролер"
+
+#: libparted/arch/linux.c:1334
+msgid "Promise SX8 SATA Device"
+msgstr "Пристрій Promise SX8 SATA"
+
+#: libparted/arch/linux.c:1339
+msgid "ATA over Ethernet Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1345
+msgid "IBM S390 DASD drive"
+msgstr "Пристрій IBM S390 DASD"
+
+#: libparted/arch/linux.c:1351
+msgid "IBM iSeries Virtual DASD"
+msgstr "IBM iSeries Virtual DASD"
+
+#: libparted/arch/linux.c:1356
+msgid "Compaq Smart Array"
+msgstr "Compaq Smart Array"
+
+#: libparted/arch/linux.c:1361
+msgid "ATARAID Controller"
+msgstr "ATARAID контролер"
+
+#: libparted/arch/linux.c:1366
+msgid "I2O Controller"
+msgstr "I2O контролер"
+
+#: libparted/arch/linux.c:1371
+msgid "User-Mode Linux UBD"
+msgstr "User-Mode Linux UBD"
+
+#: libparted/arch/linux.c:1384
+#, fuzzy, c-format
+msgid "Linux device-mapper (%s)"
+msgstr "Linux device-mapper"
+
+#: libparted/arch/linux.c:1395
+msgid "Xen Virtual Block Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1400
+msgid "Unknown"
+msgstr "Невідомий"
+
+#: libparted/arch/linux.c:1409
+msgid "Virtio Block Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1414
+msgid "Linux Software RAID Array"
+msgstr ""
+
+#: libparted/arch/linux.c:1421
+msgid "ped_device_new()  Unsupported device type"
+msgstr "ped_device_new() тип пристрою не підтримується"
+
+#: libparted/arch/linux.c:1518 libparted/arch/linux.c:1590
+#, fuzzy, c-format
+msgid "Error fsyncing/closing %s: %s"
+msgstr "Помилка відкривання %s: %s"
+
+#: libparted/arch/linux.c:1754
+#, c-format
+msgid "end of file while reading %s"
+msgstr ""
+
+#: libparted/arch/linux.c:2390
+#, c-format
+msgid ""
+"Error informing the kernel about modifications to partition %s -- %s.  This "
+"means Linux won't know about any changes you made to %s until you reboot -- "
+"so you shouldn't mount it or use it in any way before rebooting."
+msgstr ""
+"Помилка сповіщення ядра про зміни у розділі %s -- %s. Це означає, що Linux "
+"не враховуватиме внесені у %s зміни до перезавантаження - тому до "
+"перезавантаження не слід підключати розділ чи використовувати будь-яким "
+"іншим чином."
+
+#: libparted/arch/linux.c:2528
+#, fuzzy, c-format
+msgid "Unable to determine the size and length of %s."
+msgstr "Не вдається визначити розмір %s (%s)."
+
+#: libparted/arch/linux.c:2553
+#, fuzzy, c-format
+msgid "Failed to add partition %d (%s)"
+msgstr "%s : Не вдається прочитати блок розділу %llu\n"
+
+#: libparted/arch/linux.c:2580
+#, c-format
+msgid ""
+"Partition(s) %s on %s have been written, but we have been unable to inform "
+"the kernel of the change, probably because it/they are in use.  As a result, "
+"the old partition(s) will remain in use.  You should reboot now before "
+"making further changes."
+msgstr ""
+
+#: libparted/arch/linux.c:2706
+#, c-format
+msgid ""
+"parted was unable to re-read the partition table on %s (%s).  This means "
+"Linux won't know anything about the modifications you made. "
+msgstr ""
+"parted не може перечитати таблицю розділів на %s (%s). Це означає, що Linux "
+"не враховуватиме внесені зміни."
+
+#: libparted/cs/geom.c:161
+#, fuzzy, c-format
+msgid "Can't have the end before the start! (start sector=%jd length=%jd)"
+msgstr "Неприпустимо, щоб кінець розділу був перед початком!"
+
+#: libparted/cs/geom.c:169
+msgid "Can't have a partition outside the disk!"
+msgstr "Неприпустимо, щоб розділ виходив за межі диску!"
+
+#: libparted/cs/geom.c:384
+#, c-format
+msgid "Attempt to write sectors %ld-%ld outside of partition on %s."
+msgstr "Спроба записати сектори %ld-%ld за межами розділу на %s."
+
+#: libparted/cs/geom.c:424
+msgid "checking for bad blocks"
+msgstr "пошук пошкоджених блоків"
+
+#: libparted/debug.c:96
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr "У розгортці стеку є %d викликів:\n"
+
+#: libparted/debug.c:109
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr "Помилка у твердженні (%s) у точці %s:%d функції %s()."
+
+#: libparted/disk.c:192
+#, fuzzy, c-format
+msgid "%s: unrecognised disk label"
+msgstr "Не вдається відкрити %s - нерозпізнана етикетка диска."
+
+#: libparted/disk.c:484
+#, c-format
+msgid ""
+"This libparted doesn't have write support for %s.  Perhaps it was compiled "
+"read-only."
+msgstr ""
+"Ця версія libparted не підтримує запис на %s. Можливо програму зібрано з "
+"підтримкою лише для читання."
+
+#: libparted/disk.c:629
+#, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "Розмір %d %s, але файлова система %s."
+
+#: libparted/disk.c:838
+msgid "cylinder_alignment"
+msgstr ""
+
+#: libparted/disk.c:844
+#, fuzzy, c-format
+msgid "Unknown disk flag, %d."
+msgstr "Невідома ознака розділу, %d."
+
+#: libparted/disk.c:1283
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "%s етикетки дисків для розширених розділів не підтримуються."
+
+#: libparted/disk.c:1858
+#, c-format
+msgid "%s disk labels don't support logical or extended partitions."
+msgstr ""
+"%s етикетки дисків для логічних або розширених розділів не підтримуються."
+
+#: libparted/disk.c:1871
+msgid "Too many primary partitions."
+msgstr "Занадто багато основних розділів."
+
+#: libparted/disk.c:1880
+#, c-format
+msgid ""
+"Can't add a logical partition to %s, because there is no extended partition."
+msgstr ""
+"Не вдається додати логічний розділ до %s, тому що немає розширеного розділу."
+
+#: libparted/disk.c:1904
+#, c-format
+msgid "Can't have more than one extended partition on %s."
+msgstr "Не можна мати більше одного розширеного розділу на %s."
+
+#: libparted/disk.c:1914
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr "Не вдається розширити логічний розділ за межі розширеного розділу."
+
+#: libparted/disk.c:1939
+#, c-format
+msgid "Can't have a logical partition outside of the extended partition on %s."
+msgstr ""
+"Не вдається розширити логічний розділ за межі розширеного розділу на %s."
+
+#: libparted/disk.c:1949 libparted/disk.c:2008 libparted/disk.c:2186
+msgid "Can't have overlapping partitions."
+msgstr "Не можна мати розділи, які перекриваються."
+
+#: libparted/disk.c:1957
+msgid "Can't have a primary partition inside an extended partition."
+msgstr "Не можна додавати основний розділ у розширений розділ."
+
+#: libparted/disk.c:2387
+msgid "metadata"
+msgstr "метадані"
+
+#: libparted/disk.c:2389
+msgid "free"
+msgstr "вільно"
+
+#: libparted/disk.c:2391 parted/ui.c:1194 parted/ui.c:1222
+msgid "extended"
+msgstr "розширений"
+
+#: libparted/disk.c:2393 parted/ui.c:1198 parted/ui.c:1226
+msgid "logical"
+msgstr "логічний"
+
+#: libparted/disk.c:2395 parted/ui.c:1190 parted/ui.c:1218
+msgid "primary"
+msgstr "основний"
+
+#: libparted/disk.c:2411
+msgid "boot"
+msgstr "boot"
+
+#: libparted/disk.c:2413
+msgid "bios_grub"
+msgstr ""
+
+#: libparted/disk.c:2415
+msgid "root"
+msgstr "кореневий"
+
+#: libparted/disk.c:2417
+msgid "swap"
+msgstr "swap"
+
+#: libparted/disk.c:2419
+msgid "hidden"
+msgstr "схований"
+
+#: libparted/disk.c:2421
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2423
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2425
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2427
+msgid "hp-service"
+msgstr "hp-сервіс"
+
+#: libparted/disk.c:2429
+msgid "palo"
+msgstr "palo"
+
+#: libparted/disk.c:2431
+msgid "prep"
+msgstr "prep"
+
+#: libparted/disk.c:2433
+msgid "msftres"
+msgstr "msftres"
+
+#: libparted/disk.c:2435
+msgid "atvrecv"
+msgstr ""
+
+#: libparted/disk.c:2437
+msgid "diag"
+msgstr ""
+
+#: libparted/disk.c:2439
+msgid "legacy_boot"
+msgstr ""
+
+#: libparted/disk.c:2445
+#, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Невідома ознака розділу, %d."
+
+#: libparted/exception.c:77
+msgid "Information"
+msgstr "Інформація"
+
+#: libparted/exception.c:78
+msgid "Warning"
+msgstr "Попередження"
+
+#: libparted/exception.c:79
+msgid "Error"
+msgstr "Помилка"
+
+#: libparted/exception.c:80
+msgid "Fatal"
+msgstr "Критична помилка"
+
+#: libparted/exception.c:81
+msgid "Bug"
+msgstr "Помилка"
+
+#: libparted/exception.c:82
+msgid "No Implementation"
+msgstr "Не реалізовано"
+
+#: libparted/exception.c:86
+msgid "Fix"
+msgstr "Виправити"
+
+#: libparted/exception.c:87
+msgid "Yes"
+msgstr "Так"
+
+#: libparted/exception.c:88
+msgid "No"
+msgstr "Ні"
+
+#: libparted/exception.c:89
+msgid "OK"
+msgstr "Гаразд"
+
+#: libparted/exception.c:90
+msgid "Retry"
+msgstr "Повторити"
+
+#: libparted/exception.c:91
+msgid "Ignore"
+msgstr "Ігнорувати"
+
+#: libparted/exception.c:92
+msgid "Cancel"
+msgstr "Скасувати"
+
+#: libparted/exception.c:132
+#, fuzzy, c-format
+msgid ""
+"A bug has been detected in GNU Parted.  Refer to the web site of parted "
+"http://www.gnu.org/software/parted/parted.html for more information of what "
+"could be useful for bug submitting!  Please email a bug report to %s "
+"containing at least the version (%s) and the following message:  "
+msgstr ""
+"У GNU parted виникла помилка. На веб-сайті http://www.gnu.org/software/"
+"parted/parted.html дивіться інформацію стосовно звітів про помилки. Будь "
+"ласка, відправте повідомлення про помилку за адресою bug-parted@gnu.org, не "
+"забудьте вказати версію (%s) та наступне повідомлення:"
+
+#: libparted/labels/aix.c:103
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr "Підтримка читання позначок дисків у стилі AIX ще не реалізована."
+
+#: libparted/labels/aix.c:114
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr "Підтримка запису позначок дисків у стилі AIX ще не реалізована."
+
+#: libparted/labels/aix.c:127
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr ""
+"Підтримка додавання розділів для позначок дисків у стилі AIX ще не "
+"реалізована."
+
+#: libparted/labels/aix.c:137
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr ""
+"Підтримка дублювання розділів для позначок дисків у стилі AIX ще не "
+"реалізована."
+
+#: libparted/labels/aix.c:155
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr ""
+"Підтримка встановлення типу розділів для позначок дисків у стилі AIX ще не "
+"реалізована."
+
+#: libparted/labels/aix.c:165
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr ""
+"Підтримка встановлення ознак для позначок дисків у стилі AIX ще не "
+"реалізована."
+
+#: libparted/labels/bsd.c:571 libparted/labels/dasd.c:833
+#: libparted/labels/dos.c:2176 libparted/labels/dvh.c:787
+#: libparted/labels/gpt.c:1782 libparted/labels/loop.c:247
+#: libparted/labels/mac.c:1426 libparted/labels/pc98.c:748
+#: libparted/labels/rdb.c:1052 libparted/labels/sun.c:780
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "Не вдається задовольнити всі обмеження на розділ."
+
+#: libparted/labels/bsd.c:596
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "Не вдається розподілити слот bsd етикетки диску."
+
+#: libparted/labels/dasd.c:859
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "Не вдається розподілити слот етикетки диску dasd"
+
+#: libparted/labels/dos.c:966
+#, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr "Неправильна таблиця розділів на %s - неправильна сигнатура %x."
+
+#: libparted/labels/dos.c:994
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "Неправильна таблиця розділів - рекурсивні розділи на %s."
+
+#: libparted/labels/dos.c:1504
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr "Розширені розділи не можуть бути на дискових етикетках msdos."
+
+#: libparted/labels/dos.c:2158
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr "Parted не може змінювати розділи, які створені Windows Dynamic Disk."
+
+#: libparted/labels/dvh.c:200
+#, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr "%s не містить розширеного розділу (розділу заголовків томів)."
+
+#: libparted/labels/dvh.c:326
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr ""
+"Неправильна контрольна сума, це означає, що таблиця розділів пошкоджена."
+
+#: libparted/labels/dvh.c:631
+msgid "Only primary partitions can be root partitions."
+msgstr "Лише основні розділи можуть бути завантажувальними."
+
+#: libparted/labels/dvh.c:645
+msgid "Only primary partitions can be swap partitions."
+msgstr "Лише основні розділи можуть бути розділами підкачки."
+
+#: libparted/labels/dvh.c:659
+msgid "Only logical partitions can be a boot file."
+msgstr "Лише логічні розділи можуть бути завантажувальним файлом."
+
+#: libparted/labels/dvh.c:736
+#, fuzzy, c-format
+msgid ""
+"failed to set dvh partition name to %s:\n"
+"Only logical partitions (boot files) have a name."
+msgstr "Лише логічні розділи (завантажувальні файли) мають назву."
+
+#: libparted/labels/dvh.c:829
+msgid "Too many primary partitions"
+msgstr "Занадто багато основних розділів"
+
+#: libparted/labels/fdasd.c:98
+#, fuzzy
+msgid "open error"
+msgstr ""
+"%s помилка при відкриванні\n"
+"%s\n"
+
+#: libparted/labels/fdasd.c:101
+#, fuzzy
+msgid "seek error"
+msgstr ""
+"%s помилка при встановленні позиції\n"
+"%s\n"
+
+#: libparted/labels/fdasd.c:104
+#, fuzzy
+msgid "read error"
+msgstr "помилка запису"
+
+#: libparted/labels/fdasd.c:110
+#, fuzzy
+msgid "ioctl() error"
+msgstr "помилка запису"
+
+#: libparted/labels/fdasd.c:114
+#, fuzzy
+msgid "API version mismatch"
+msgstr ""
+"%s невідповідність версії API\n"
+"%s\n"
+
+#: libparted/labels/fdasd.c:118
+#, fuzzy
+msgid "Unsupported disk type"
+msgstr ""
+"%s Непідтримуваний тип диска\n"
+"%s\n"
+
+#: libparted/labels/fdasd.c:122
+#, fuzzy
+msgid "Unsupported disk format"
+msgstr ""
+"%s Непідтримуваний формат диску\n"
+"%s\n"
+
+#: libparted/labels/fdasd.c:126
+#, fuzzy
+msgid "Disk is in use"
+msgstr ""
+"%s Диск зайнятий\n"
+"%s\n"
+
+#: libparted/labels/fdasd.c:130
+msgid "Syntax error in config file"
+msgstr ""
+
+#: libparted/labels/fdasd.c:134
+#, fuzzy
+msgid "Volume label is corrupted"
+msgstr ""
+"%s Позначка диску пошкоджена.\n"
+"%s\n"
+
+#: libparted/labels/fdasd.c:138
+#, fuzzy
+msgid "A data set name is corrupted"
+msgstr ""
+"%s назва набору даних пошкоджена.\n"
+"%s\n"
+
+#: libparted/labels/fdasd.c:142
+#, fuzzy
+msgid "Memory allocation failed"
+msgstr "Помилка переносу даних."
+
+#: libparted/labels/fdasd.c:146
+#, fuzzy
+msgid "Device verification failed"
+msgstr "Помилка переносу даних."
+
+#: libparted/labels/fdasd.c:147
+#, fuzzy
+msgid "The specified device is not a valid DASD device"
+msgstr ""
+"%s помилка перевірки диску\n"
+"Вказаний пристрій не є коректним пристроєм DASD\n"
+
+#: libparted/labels/fdasd.c:150 libparted/labels/vtoc.c:179
+#, fuzzy
+msgid "Fatal error"
+msgstr "Критична помилка\n"
+
+#: libparted/labels/fdasd.c:226
+msgid "No room for volume label."
+msgstr ""
+
+#: libparted/labels/fdasd.c:234
+#, fuzzy
+msgid "No room for partition info."
+msgstr "Не знайдено правильної карти розділів."
+
+#: libparted/labels/fdasd.c:709
+#, fuzzy
+msgid "Invalid VTOC."
+msgstr "Неправильне число."
+
+#: libparted/labels/fdasd.c:766
+#, fuzzy
+msgid "Could not retrieve API version."
+msgstr "Не вдається записати VTOC labels."
+
+#: libparted/labels/fdasd.c:769
+#, c-format
+msgid ""
+"The current API version '%d' doesn't match dasd driver API version '%d'!"
+msgstr ""
+
+#: libparted/labels/fdasd.c:806
+msgid "Could not retrieve disk geometry information."
+msgstr ""
+
+#: libparted/labels/fdasd.c:810
+msgid "Could not retrieve blocksize information."
+msgstr ""
+
+#: libparted/labels/fdasd.c:815
+msgid "Could not retrieve disk information."
+msgstr ""
+
+#: libparted/labels/gpt.c:493
+#, c-format
+msgid ""
+"%s contains GPT signatures, indicating that it has a GPT table.  However, it "
+"does not have a valid fake msdos partition table, as it should.  Perhaps it "
+"was corrupted -- possibly by a program that doesn't understand GPT partition "
+"tables.  Or perhaps you deleted the GPT table, and are now using an msdos "
+"partition table.  Is this a GPT partition table?"
+msgstr ""
+"%s містить GPT сигнатуру, це означає, що він містить GPT таблицю. Але, він "
+"не містить правильної імітації msdos-сумісної таблиці розділів, хоча і "
+"повинен містити. Можливо він пошкоджений програмою яка не розуміє GPT "
+"таблиці розділів. Або, можливо, ви видалили GPT таблицю, а тепер "
+"використовуєте msdos-сумісну таблицю розділів. На цьому розділі є GPT "
+"таблиця?"
+
+#: libparted/labels/gpt.c:693
+#, fuzzy, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise.  Please report this!"
+msgstr ""
+"Знайдено GPT таблицю розділів версії %x, ця версія старша ніж версія, що "
+"підтримується програмою Parted. Будь ласка, повідомте нам! bug-parted@gnu.org"
+
+#: libparted/labels/gpt.c:740
+#, c-format
+msgid ""
+"Not all of the space available to %s appears to be used, you can fix the GPT "
+"to use all of the space (an extra %llu blocks) or continue with the current "
+"setting? "
+msgstr ""
+"На %s використовується не весь доступний простір, виправити GPT, щоб "
+"використовувався весь простір (додатково %llu блоків) або продовжити з "
+"вказаними параметрами?."
+
+#: libparted/labels/gpt.c:952
+msgid ""
+"The backup GPT table is not at the end of the disk, as it should be.  This "
+"might mean that another operating system believes the disk is smaller.  Fix, "
+"by moving the backup to the end (and removing the old backup)?"
+msgstr ""
+"Резервна GPT таблиця не знаходиться наприкінці диска, хоча повинна там "
+"знаходитись. Можливо, це означає, що інша операційна система вважає, що "
+"розмір диску менший. Виправити це шляхом переміщення копії таблиці у кінець "
+"(та видалити стару копію)?"
+
+#: libparted/labels/gpt.c:976
+msgid ""
+"Both the primary and backup GPT tables are corrupt.  Try making a fresh "
+"table, and using Parted's rescue feature to recover partitions."
+msgstr ""
+"Пошкоджено як головну так і резервну GPT таблиці. Спробуйте створити чисту "
+"таблицю, та використовуйте функцію відновлення програми Parted, щоб "
+"повернути розділи."
+
+#: libparted/labels/gpt.c:987
+#, fuzzy
+msgid ""
+"The backup GPT table is corrupt, but the primary appears OK, so that will be "
+"used."
+msgstr ""
+"Основна GPT таблиця пошкоджена, але резервна виглядає правильною, тому буде "
+"використовуватись саме вона."
+
+#: libparted/labels/gpt.c:999
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr ""
+"Основна GPT таблиця пошкоджена, але резервна виглядає правильною, тому буде "
+"використовуватись саме вона."
+
+#: libparted/labels/gpt.c:1023
+msgid "primary partition table array CRC mismatch"
+msgstr ""
+
+#: libparted/labels/mac.c:184
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Неправильна сигнатура %x для Macintosh етикетки диску."
+
+#: libparted/labels/mac.c:231
+msgid "Partition map has no partition map entry!"
+msgstr "Карта розділів не містить елементу карти розділів!"
+
+#: libparted/labels/mac.c:279
+#, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr "%s занадто мале для Macintosh етикетки диску!"
+
+#: libparted/labels/mac.c:508
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "Розділ %d має неправильну сигнатуру %x."
+
+#: libparted/labels/mac.c:526
+#, c-format
+msgid "Partition %d has an invalid length of 0 bytes!"
+msgstr "Розділ %d має неправильну довжину 0 байт!"
+
+#: libparted/labels/mac.c:557
+msgid "The data region doesn't start at the start of the partition."
+msgstr "Область даних не починається з початку розділу."
+
+#: libparted/labels/mac.c:574
+msgid "The boot region doesn't start at the start of the partition."
+msgstr "Область завантаження не починається з початку розділу."
+
+#: libparted/labels/mac.c:588
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr "Область завантаження розділу не займає весь розділ."
+
+#: libparted/labels/mac.c:599
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr "Область даних розділу не займає весь розділ."
+
+#: libparted/labels/mac.c:652
+#, c-format
+msgid ""
+"Weird block size on device descriptor: %d bytes is not divisible by 512."
+msgstr ""
+"Дивний розмір блоку у дескрипторі пристрою: %d байт не ділиться на 512."
+
+#: libparted/labels/mac.c:665
+#, c-format
+msgid ""
+"The driver descriptor says the physical block size is %d bytes, but Linux "
+"says it is %d bytes."
+msgstr ""
+"У дескрипторі драйвера зазначено, що розмір фізичного блоку дорівнює %d "
+"байтів, але Linux вважає, що він %d байтів."
+
+#: libparted/labels/mac.c:719
+msgid "No valid partition map found."
+msgstr "Не знайдено правильної карти розділів."
+
+#: libparted/labels/mac.c:780
+#, c-format
+msgid ""
+"Conflicting partition map entry sizes!  Entry 1 says it is %d, but entry %d "
+"says it is %d!"
+msgstr ""
+"Конфліктуючі розміри у елементах карти розділів! У елементі 1 вказано %d, "
+"але у елементі %d вказано %d!"
+
+#: libparted/labels/mac.c:811
+msgid "Weird!  There are 2 partitions map entries!"
+msgstr "Фатально! Дивна помилка - 2 елементи карти розділів!"
+
+#: libparted/labels/mac.c:1357
+msgid ""
+"Changing the name of a root or swap partition will prevent Linux from "
+"recognising it as such."
+msgstr ""
+"Зміна назви кореневого розділу чи розділу підкачки заважатиме Linux "
+"розпізнати їх."
+
+#: libparted/labels/mac.c:1461
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr "Не вдається додати інший розділ - карта розділів надто маленька!"
+
+#: libparted/labels/pc98.c:331
+#, c-format
+msgid "Invalid partition table on %s."
+msgstr "Неправильна таблиця розділів у %s."
+
+#: libparted/labels/pc98.c:384 libparted/labels/pc98.c:462
+#, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries.  This is still "
+"unsupported."
+msgstr ""
+"Розділ %d не вирівняний на межі циліндру. Необхідно додати підтримку для "
+"цього випадку."
+
+#: libparted/labels/pc98.c:780
+msgid "Can't add another partition."
+msgstr "Не вдається додати інший розділ."
+
+#: libparted/labels/pt-tools.c:125
+#, c-format
+msgid ""
+"partition length of %jd sectors exceeds the %s-partition-table-imposed "
+"maximum of %jd"
+msgstr ""
+
+#: libparted/labels/pt-tools.c:138
+#, c-format
+msgid ""
+"starting sector number, %jd exceeds the %s-partition-table-imposed maximum "
+"of %jd"
+msgstr ""
+
+#: libparted/labels/rdb.c:169
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr "%s : Неправильна контрольна сума на блоці %llu типу %s."
+
+#: libparted/labels/rdb.c:484
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr "%s : Не вдається знайти блок rdb, цього не повинно було статися."
+
+#: libparted/labels/rdb.c:573
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr "%s : виявлено цикл у блоці %d."
+
+#: libparted/labels/rdb.c:592
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr "%s : Список %s має пошкоджений блок %s."
+
+#: libparted/labels/rdb.c:691
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr "%s : не вдається отримати список пошкоджених блоків."
+
+#: libparted/labels/rdb.c:699
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr "%s : не вдається отримати список блоків розділу."
+
+#: libparted/labels/rdb.c:707
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr "%s : не вдається отримати список блоків файлової системи."
+
+#: libparted/labels/rdb.c:715
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr "%s : не вдається отримати список завантажувальних блоків."
+
+#: libparted/labels/rdb.c:742
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr "Не вдається записати блок розділу у %d."
+
+#: libparted/labels/rdb.c:1080
+msgid "Unable to allocate a partition number."
+msgstr "Очікується номер розділу."
+
+#: libparted/labels/sun.c:161
+msgid "Corrupted Sun disk label detected."
+msgstr "Знайдено пошкоджену Sun етикетку диску."
+
+#: libparted/labels/sun.c:276
+#, c-format
+msgid ""
+"The disk CHS geometry (%d,%d,%d) reported by the operating system does not "
+"match the geometry stored on the disk label (%d,%d,%d)."
+msgstr ""
+"ЦГС(CHS) геометрія диску (%d,%d,%d) яку видає операційна система не "
+"відповідає геометрії, що зберігається у позначці диску (%d,%d,%d)."
+
+#: libparted/labels/sun.c:298
+#, c-format
+msgid "The disk label describes a disk bigger than %s."
+msgstr "Етикетка диску описує диск більшого розміру ніж %s."
+
+#: libparted/labels/sun.c:473
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr "Диск має %d циліндрів, що більше ніж максимальне значення 65536."
+
+#: libparted/labels/sun.c:812
+msgid ""
+"The Whole Disk partition is the only available one left.  Generally, it is "
+"not a good idea to overwrite this partition with a real one.  Solaris may "
+"not be able to boot without it, and SILO (the sparc boot loader) appreciates "
+"it as well."
+msgstr ""
+"Розділ \"Весь диск\" - єдиний наявний. Зазвичай, небажано перезаписувати цей "
+"розділ реальним розділом. Solaris, можливо, не буде здатний завантажитись "
+"без нього, це також вплине на SILO (завантажувач sparc)."
+
+#: libparted/labels/sun.c:827
+msgid "Sun disk label is full."
+msgstr "Sun етикетка диску заповнена."
+
+#: libparted/labels/vtoc.c:164
+#, fuzzy
+msgid "opening of device failed"
+msgstr ""
+"%s помилка при відкриванні пристрою '%s'.\n"
+"%s\n"
+
+#: libparted/labels/vtoc.c:168
+#, fuzzy
+msgid "seeking on device failed"
+msgstr ""
+"%s помилка при встановленні позиції на пристрої '%s'.\n"
+"%s\n"
+
+#: libparted/labels/vtoc.c:172
+#, fuzzy
+msgid "writing to device failed"
+msgstr ""
+"%s помилка при записі на пристрій '%s',\n"
+"%s\n"
+
+#: libparted/labels/vtoc.c:176
+#, fuzzy
+msgid "reading from device failed"
+msgstr ""
+"%s помилка при читанні з пристрою '%s'.\n"
+"%s\n"
+
+#: libparted/labels/vtoc.c:299 libparted/labels/vtoc.c:308
+#: libparted/labels/vtoc.c:329 libparted/labels/vtoc.c:336
+#, fuzzy
+msgid "Could not read volume label."
+msgstr "Не вдається прочитати позначки VTOC."
+
+#: libparted/labels/vtoc.c:356 libparted/labels/vtoc.c:363
+#, fuzzy
+msgid "Could not write volume label."
+msgstr "Не вдається записати VTOC labels."
+
+#: libparted/labels/vtoc.c:469
+msgid "Could not read VTOC labels."
+msgstr "Не вдається прочитати позначки VTOC."
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr "Не вдається прочитати VTOC FMT1 DSCB."
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr "Не вдається прочитати VTOC FMT4 DSCB."
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr "Не вдається прочитати VTOC FMT5 DSCB."
+
+#: libparted/labels/vtoc.c:496
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr "Не вдається прочитати VTOC FMT7 DSCB."
+
+#: libparted/labels/vtoc.c:516
+msgid "Could not write VTOC labels."
+msgstr "Не вдається записати VTOC labels."
+
+#: libparted/labels/vtoc.c:522
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr "Не вдається записати VTOC FMT1 DSCB."
+
+#: libparted/labels/vtoc.c:529
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr "Не вдається записати VTOC FMT4 DSCB."
+
+#: libparted/labels/vtoc.c:536
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr "Не вдається записати VTOC FMT5 DSCB."
+
+#: libparted/labels/vtoc.c:543
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr "Не вдається записати VTOC FMT7 DSCB."
+
+#: libparted/libparted.c:230 libparted/libparted.c:245
+msgid "Out of memory."
+msgstr "Недостатньо пам'яті."
+
+#: libparted/unit.c:138
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr "Не вдається отримати одиницю розміру для спеціального блоку 'COMPACT'."
+
+#: libparted/unit.c:384
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr "\"%s\" має неправильний синтаксис адрес."
+
+#: libparted/unit.c:392
+#, c-format
+msgid "The maximum head value is %d."
+msgstr "Максимальний номер головки - %d."
+
+#: libparted/unit.c:399
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr "Максимальний номер сектора - %d."
+
+#: libparted/unit.c:411 libparted/unit.c:556
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr "Адреса %s поза межами пристрою %s."
+
+#: libparted/unit.c:531
+msgid "Invalid number."
+msgstr "Неправильне число."
+
+#: libparted/fs/amiga/affs.c:62 libparted/fs/amiga/apfs.c:55
+#: libparted/fs/amiga/asfs.c:69
+#, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "%s : Помилка при виділенні блоку розділу\n"
+
+#: libparted/fs/amiga/affs.c:77 libparted/fs/amiga/apfs.c:68
+#: libparted/fs/amiga/asfs.c:81
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr "%s : Помилка при виділенні блоку\n"
+
+#: libparted/fs/amiga/affs.c:82 libparted/fs/amiga/apfs.c:73
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr "%s : Не вдається прочитати завантажувальний блок %llu\n"
+
+#: libparted/fs/amiga/affs.c:98 libparted/fs/amiga/apfs.c:84
+#: libparted/fs/amiga/asfs.c:87 libparted/fs/amiga/asfs.c:101
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr "%s : Не вдається прочитати кореневий блок %llu\n"
+
+#: libparted/fs/amiga/amiga.c:71
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr "%s : Помилка при виділенні елементу ідентифікатора списку\n"
+
+#: libparted/fs/amiga/amiga.c:188
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr "%s : Не вдається прочитати блок %llu\n"
+
+#: libparted/fs/amiga/amiga.c:201
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr "%s : Неправильна контрольна сума у блоці %llu типу %s\n"
+
+#: libparted/fs/amiga/amiga.c:211
+#, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s : Не вдається записати блок %d\n"
+
+#: libparted/fs/amiga/amiga.c:277
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr "%s : не вдається отримати disk_specific блок rdb\n"
+
+#: libparted/fs/amiga/amiga.c:288
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr "%s : Не вдається знайти блок rdb, цього не повинно було статися\n"
+
+#: libparted/fs/amiga/amiga.c:317
+#, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr "%s : Не вдається прочитати блок розділу %llu\n"
+
+#: libparted/fs/fat/fat.c:174
+msgid ""
+"GNU Parted was miscompiled: the FAT boot sector should be 512 bytes.  FAT "
+"support will be disabled."
+msgstr ""
+"GNU parted зібрано неправильно: завантажувальний сектор FAT повинен мати "
+"розмір 512 байтів. Підтримка FAT вимкнена."
+
+#: libparted/fs/fat/bootsector.c:49 libparted/fs/fat/bootsector.c:56
+msgid "File system has an invalid signature for a FAT file system."
+msgstr "Файлова система містить неправильну сигнатуру файлової системи FAT."
+
+#: libparted/fs/fat/bootsector.c:64
+msgid "File system has an invalid sector size for a FAT file system."
+msgstr "Файлова система має неправильний розмір сектора файлової системи FAT."
+
+#: libparted/fs/fat/bootsector.c:71
+msgid "File system has an invalid cluster size for a FAT file system."
+msgstr "Файлова система має неправильний розмір кластера файлової системи FAT."
+
+#: libparted/fs/fat/bootsector.c:78
+msgid ""
+"File system has an invalid number of reserved sectors for a FAT file system."
+msgstr "У файловій системі неправильна кількість резервних секторів FAT."
+
+#: libparted/fs/fat/bootsector.c:85
+msgid "File system has an invalid number of FATs."
+msgstr "У файловій системі неправильне число копій FAT."
+
+#: libparted/fs/fat/bootsector.c:156
+#, c-format
+msgid ""
+"This file system has a logical sector size of %d.  GNU Parted is known not "
+"to work properly with sector sizes other than 512 bytes."
+msgstr ""
+"Файлова система має логічний розмір сектора %d. Вважається, що GNU Parted "
+"працює неправильно з секторами, розмір яких не дорівнює 512 байт."
+
+#: libparted/fs/fat/bootsector.c:181
+#, c-format
+msgid ""
+"The file system's CHS geometry is (%d, %d, %d), which is invalid.  The "
+"partition table's CHS geometry is (%d, %d, %d).  If you select Ignore, the "
+"file system's CHS geometry will be left unchanged.  If you select Fix, the "
+"file system's CHS geometry will be set to match the partition table's CHS "
+"geometry."
+msgstr ""
+"Геометрія CHS файлової системи становить (%d, %d, %d), що є неправильним.  "
+"Геометрія CHS таблиці розділів становить (%d, %d, %d).  Якщо ви виберете "
+"Ігнорувати, геометрію CHS файлової системи буде залишено без змін.  Якщо ви "
+"оберете Виправити(Fix), геометрію CHS файлової системи буде приведено у "
+"відповідність до геометрії CHS таблиці розділів."
+
+#: libparted/fs/fat/bootsector.c:230
+msgid "FAT boot sector says logical sector size is 0.  This is weird. "
+msgstr ""
+"Завантажувальний сектор FAT містить розмір логічного сектора, що дорівнює 0. "
+"Це дивно."
+
+#: libparted/fs/fat/bootsector.c:236
+msgid "FAT boot sector says there are no FAT tables.  This is weird. "
+msgstr ""
+"У завантажувальному секторі FAT не міститься інформація про таблиці FAT. Це "
+"дивно."
+
+#: libparted/fs/fat/bootsector.c:242
+msgid "FAT boot sector says clusters are 0 sectors.  This is weird. "
+msgstr ""
+"У відповідності до завантажувального сектора FAT, кластер містить 0 "
+"секторів. Це дивно."
+
+#: libparted/fs/fat/bootsector.c:252
+msgid "File system is FAT12, which is unsupported."
+msgstr "Файлові системи типу FAT12 не підтримуються."
+
+#: libparted/fs/fat/bootsector.c:428
+#, c-format
+msgid ""
+"The information sector has the wrong signature (%x).  Select cancel for now, "
+"and send in a bug report.  If you're desperate, it's probably safe to ignore."
+msgstr ""
+"Інформаційний сектор містить неправильну сигнатуру (%x). Виберіть \"Скасувати"
+"\" та відправте повідомлення про помилку. Якщо ви втратили надію, тоді можна "
+"проігнорувати цю проблему."
+
+#: libparted/fs/linux_swap/linux_swap.c:247
+#, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "Невідома стара сигнатура '%10s' розділу підкачки linux."
+
+#: libparted/fs/linux_swap/linux_swap.c:290
+#, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "Невідома нова сигнатура '%10s' розділу підкачки linux."
+
+#: libparted/fs/linux_swap/linux_swap.c:330
+#, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Невідома сигнатура '%10s' розділу swsusp підкачки linux."
+
+#: libparted/fs/hfs/probe.c:50
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to "
+"%d bytes."
+msgstr ""
+"Parted не може використовувати файлові системи HFS на дисках з розміром "
+"сектору, що не кратний %d байтів."
+
+#: parted/parted.c:123
+msgid "displays this help message"
+msgstr "відображає це повідомлення"
+
+#: parted/parted.c:124
+msgid "lists partition layout on all block devices"
+msgstr "вивести список таблиць розділів на усіх пристроях"
+
+#: parted/parted.c:125
+msgid "displays machine parseable output"
+msgstr "відображає вивід у форматі для машинного розбору"
+
+#: parted/parted.c:126
+msgid "never prompts for user intervention"
+msgstr "ніколи не запитувати втручання користувача"
+
+#: parted/parted.c:127
+msgid "displays the version"
+msgstr "відображає версію"
+
+#: parted/parted.c:128
+#, fuzzy
+msgid "alignment for new partitions"
+msgstr "Не вдається додатково створити розділи."
+
+#: parted/parted.c:140
+msgid ""
+"NUMBER is the partition number used by Linux.  On MS-DOS disk labels, the "
+"primary partitions number from 1 to 4, logical partitions from 5 onwards.\n"
+msgstr ""
+"НОМЕР - це номер розділу, що використовується Linux.  У етикетках диску MS-"
+"DOS, основні розділи мають номери 1-4, а логічні - 5 та далі.\n"
+
+#: parted/parted.c:143
+msgid "LABEL-TYPE is one of: "
+msgstr "ТИП-ЕТИКЕТКИ один з: "
+
+#: parted/parted.c:144
+msgid "FLAG is one of: "
+msgstr "ОЗНАКА одне з: "
+
+#: parted/parted.c:145
+msgid "UNIT is one of: "
+msgstr "БЛОК одне з: "
+
+#: parted/parted.c:146
+msgid "desired alignment: minimum or optimal"
+msgstr ""
+
+#: parted/parted.c:147
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "ТИП-РОЗДІЛУ один з: основний, логічний, розширений\n"
+
+#: parted/parted.c:149
+msgid "FS-TYPE is one of: "
+msgstr "ТИП-ФС один з: "
+
+#: parted/parted.c:150
+msgid ""
+"START and END are disk locations, such as 4GB or 10%.  Negative values count "
+"from the end of the disk.  For example, -1s specifies exactly the last "
+"sector.\n"
+msgstr ""
+"ПОЧАТОК та КІНЕЦЬ - це місця на диску, такі як 4GB чи 10%.  Від'ємні "
+"значення відраховуються від кінця диску. Наприклад, -1s вказує останній "
+"сектор диску.\n"
+
+#: parted/parted.c:153
+msgid "STATE is one of: on, off\n"
+msgstr "СТАН один з: on, off\n"
+
+#: parted/parted.c:154
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "ПРИСТРІЙ - зазвичай /dev/hda чи /dev/sda\n"
+
+#: parted/parted.c:155
+msgid "NAME is any word you want\n"
+msgstr "НАЗВА - будь-яке слово на ваш вибір\n"
+
+#: parted/parted.c:158
+msgid ""
+"Copyright (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"This program is free software, covered by the GNU General Public License.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+msgstr ""
+"Copyright (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"Ця програма є вільною під ліцензією Універсальна Публічна Ліцензія GNU.\n"
+"\n"
+"Ця програма розповсюджується зі сподіванням,що вона буде корисною,\n"
+"але БЕЗ БУДЬ-ЯКИХ ГАРАНТІЙ; навіть без неявної гарантії КОМЕРЦІЙНОЇ\n"
+"ЦІННОСТІ чи ПРИДАТНОСТІ ДЛЯ ПЕВНОЇ МЕТИ. Докладнішу інформацію про це\n"
+"дивіться у Універсальній Публічній Ліцензії GNU.\n"
+
+#: parted/parted.c:204
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(залишилось часу %.2d:%.2d)"
+
+#: parted/parted.c:223
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+"Розділ %s наразі зайнятий. Слід відключити його, перш ніж змінювати його "
+"програмою Parted."
+
+#: parted/parted.c:241
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "Розділи на %s наразі зайняті."
+
+#: parted/parted.c:253
+#, c-format
+msgid ""
+"The existing disk label on %s will be destroyed and all data on this disk "
+"will be lost. Do you want to continue?"
+msgstr ""
+"Існуюча позначка диску на %s буде знищена разом з усіма даними на ній. "
+"Продовжити?"
+
+#: parted/parted.c:502
+msgid "New disk label type?"
+msgstr "Нова етикетка диску?"
+
+#: parted/parted.c:562
+msgid "Partition type?"
+msgstr "Тип розділу?"
+
+#: parted/parted.c:580 parted/parted.c:766
+msgid "Partition name?"
+msgstr "Назва розділу?"
+
+#: parted/parted.c:588
+msgid "File system type?"
+msgstr "Тип файлової системи?"
+
+#: parted/parted.c:594 parted/parted.c:1342
+msgid "Start?"
+msgstr "Початок?"
+
+#: parted/parted.c:596 parted/parted.c:1344
+msgid "End?"
+msgstr "Кінець?"
+
+#: parted/parted.c:661
+#, fuzzy, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s.%s"
+msgstr ""
+"Ви вказали розділ у межах %s - %s.\n"
+"Найближчий до нього діапазон %s - %s. Ви згодні з таким діапазоном?"
+
+#: parted/parted.c:666
+msgid ""
+"\n"
+"Is this still acceptable to you?"
+msgstr ""
+
+#: parted/parted.c:688
+msgid "The resulting partition is not properly aligned for best performance."
+msgstr ""
+
+#: parted/parted.c:763 parted/parted.c:1383 parted/parted.c:1455
+#: parted/parted.c:1489
+msgid "Partition number?"
+msgstr "Номер розділу?"
+
+#: parted/parted.c:841
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d.  Each cylinder is %s.\n"
+msgstr "BIOS циліндр,головка,сектор геометрія: %d,%d,%d.  Кожен циліндр %s.\n"
+
+#: parted/parted.c:881
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr "Модель: %s (%s)\n"
+
+#: parted/parted.c:883
+#, c-format
+msgid "Disk %s: %s\n"
+msgstr "Диск %s: %s\n"
+
+#: parted/parted.c:884
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr "Розмір сектора (логічний/фізичний): %lldБ/%lldБ\n"
+
+#: parted/parted.c:896
+#, c-format
+msgid "Partition Table: %s\n"
+msgstr "таблиця розділів: %s\n"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Number"
+msgstr "Номер"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Start"
+msgstr "Початок"
+
+#: parted/parted.c:1008 parted/parted.c:1011
+msgid "End"
+msgstr "Кінець"
+
+#: parted/parted.c:1011
+msgid "Size"
+msgstr "Розмір"
+
+#: parted/parted.c:1015
+msgid "Type"
+msgstr "Тип"
+
+#: parted/parted.c:1017
+msgid "File system"
+msgstr "Файлова система"
+
+#: parted/parted.c:1020
+msgid "Name"
+msgstr "Назва"
+
+#: parted/parted.c:1022
+msgid "Flags"
+msgstr "Ознаки"
+
+#: parted/parted.c:1079
+msgid "Free Space"
+msgstr "Вільний простір"
+
+#: parted/parted.c:1241
+#, c-format
+msgid ""
+"A %s %s partition was found at %s -> %s.  Do you want to add it to the "
+"partition table?"
+msgstr ""
+"Знайдено розділ %s %s у межах від %s -> %s. Бажаєте додати його до таблиці "
+"розділів?"
+
+#: parted/parted.c:1280
+msgid "searching for file systems"
+msgstr "пошук файлових систем"
+
+#: parted/parted.c:1408
+msgid "New device?"
+msgstr "Новий пристрій?"
+
+#: parted/parted.c:1453
+msgid "alignment type(min/opt)"
+msgstr ""
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d aligned\n"
+msgstr ""
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d not aligned\n"
+msgstr ""
+
+#: parted/parted.c:1491
+msgid "Flag to Invert?"
+msgstr "Ознака, яку інвертувати?"
+
+#: parted/parted.c:1496
+msgid "New state?"
+msgstr "Нове значення?"
+
+#: parted/parted.c:1533
+msgid "Unit?"
+msgstr "Блок?"
+
+#: parted/parted.c:1651
+#, fuzzy
+msgid "align-check"
+msgstr "check"
+
+#: parted/parted.c:1654
+msgid ""
+"align-check TYPE N                        check partition N for TYPE(min|"
+"opt) alignment"
+msgstr ""
+
+#: parted/parted.c:1662
+msgid "help"
+msgstr "help"
+
+#: parted/parted.c:1665
+msgid ""
+"help [COMMAND]                           print general help, or help on "
+"COMMAND"
+msgstr ""
+"help [КОМАНДА]                вивести загальну довідку, або довідку про "
+"КОМАНДА"
+
+#: parted/parted.c:1671
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:1671
+msgid "mktable"
+msgstr "mktable"
+
+#: parted/parted.c:1674
+msgid ""
+"mklabel,mktable LABEL-TYPE               create a new disklabel (partition "
+"table)"
+msgstr ""
+"mklabel,mktable ТИП_ЕТИКЕТКИ  створити нову позначку диску (таблицю розділів)"
+
+#: parted/parted.c:1680
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:1683
+msgid "mkpart PART-TYPE [FS-TYPE] START END     make a partition"
+msgstr "mkpart ТИП-РОЗДІЛУ [ТИП-ФС] ПОЧАТОК КІНЕЦЬ    створити розділ"
+
+#: parted/parted.c:1689
+msgid ""
+"'mkpart' makes a partition without creating a new file system on the "
+"partition.  FS-TYPE may be specified to set an appropriate partition ID.\n"
+msgstr ""
+"'mkpart' створити розділ без створення нової файлової системи у ньому. Можна "
+"вказати ТИП-ФС для встановлення відповідного ідентифікатора розділу.\n"
+
+#: parted/parted.c:1694
+msgid "name"
+msgstr "name"
+
+#: parted/parted.c:1697
+msgid "name NUMBER NAME                         name partition NUMBER as NAME"
+msgstr "name НОМЕР НАЗВА              призначити назву НАЗВА розділу НОМЕР"
+
+#: parted/parted.c:1702
+msgid "print"
+msgstr "print"
+
+#: parted/parted.c:1705
+msgid ""
+"print [devices|free|list,all|NUMBER]     display the partition table, "
+"available devices, free space, all found partitions, or a particular "
+"partition"
+msgstr ""
+"print [devices|free|list,all|ЧИСЛО]     відображає таблицю розділів, наявні "
+"пристрої, вільний простір, всі знайдені розділи, або певний розділ"
+
+#: parted/parted.c:1710
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+"Без аргументів, 'print' відображає всю таблицю розділів. Проте, з наступними "
+"аргументами виконуються інші дії.\n"
+
+#: parted/parted.c:1712
+msgid "  devices   : display all active block devices\n"
+msgstr "  devices   : відображаються всі активні блочні пристрої\n"
+
+#: parted/parted.c:1713
+msgid ""
+"  free      : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+"  free      : відображається інформація про нерозподілений простір на "
+"поточному блочному пристрої\n"
+
+#: parted/parted.c:1715
+msgid ""
+"  list, all : display the partition tables of all active block devices\n"
+msgstr ""
+"  list, all : відображаються таблиці розділів на всіх активних блочних "
+"пристроях\n"
+
+#: parted/parted.c:1716
+msgid ""
+"  NUMBER    : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+"  ЧИСЛО     : відображається докладна інформація про розділ з вказаним "
+"номером\n"
+
+#: parted/parted.c:1721
+msgid "quit"
+msgstr "quit"
+
+#: parted/parted.c:1724
+msgid "quit                                     exit program"
+msgstr "quit                          вихід з програми"
+
+#: parted/parted.c:1729
+msgid "rescue"
+msgstr "rescue"
+
+#: parted/parted.c:1732
+msgid ""
+"rescue START END                         rescue a lost partition near START "
+"and END"
+msgstr ""
+"rescue ПОЧАТОК КІНЕЦЬ         знайти втрачені розділи між ПОЧАТОК та КІНЕЦЬ"
+
+#: parted/parted.c:1738
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:1741
+msgid "rm NUMBER                                delete partition NUMBER"
+msgstr "rm НОМЕР                      видалити розділ з номером НОМЕР"
+
+#: parted/parted.c:1746
+msgid "select"
+msgstr "select"
+
+#: parted/parted.c:1749
+msgid "select DEVICE                            choose the device to edit"
+msgstr "select ПРИСТРІЙ               вибирати пристрій для роботи"
+
+#: parted/parted.c:1754
+msgid "set"
+msgstr "set"
+
+#: parted/parted.c:1757
+msgid ""
+"set NUMBER FLAG STATE                    change the FLAG on partition NUMBER"
+msgstr "set НОМЕР ОЗНАКА СТАН         змінити ознаку розділу з номером НОМЕР"
+
+#: parted/parted.c:1763
+msgid "toggle"
+msgstr "toggle"
+
+#: parted/parted.c:1766
+msgid ""
+"toggle [NUMBER [FLAG]]                   toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+"toggle [НОМЕР [ОЗНАКА]]       перемикнути ознаку ОЗНАКА розділу з номером "
+"НОМЕР"
+
+#: parted/parted.c:1772
+msgid "unit"
+msgstr "unit"
+
+#: parted/parted.c:1775
+msgid "unit UNIT                                set the default unit to UNIT"
+msgstr ""
+"unit БЛОК                     встановити для типового блоку значення БЛОК"
+
+#: parted/parted.c:1780
+msgid "version"
+msgstr "version"
+
+#: parted/parted.c:1783
+msgid ""
+"version                                  display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+"version                       вивести поточну версію GNU Parted та "
+"інформацію про авторське право"
+
+#: parted/parted.c:1787
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+"команда version виводить інформацію про версію цієї програми GNU Parted\n"
+
+#: parted/parted.c:1855
+#, fuzzy, c-format
+msgid "Usage: %s [-hlmsv] [-a<align>] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr "Використання: %s [-hlmsv] [ПРИСТРІЙ [КОМАНДА [ПАРАМЕТРИ]]...]\n"
+
+#: parted/parted.c:1899
+msgid "No device found"
+msgstr "Пристрій не знайдено"
+
+#: parted/parted.c:1936
+msgid "WARNING: You are not superuser.  Watch out for permissions."
+msgstr ""
+"ПОПЕРЕДЖЕННЯ: Ви не маєте привілей адміністратора. Отримайте повноваження."
+
+#: parted/parted.c:1974
+msgid "You may need to update /etc/fstab.\n"
+msgstr "Не забудьте оновити /etc/fstab, якщо це необхідно.\n"
+
+#: parted/ui.c:162
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+"Ласкаво просимо до GNU Parted! Перелік команд виводиться командою 'help'.\n"
+
+#: parted/ui.c:165
+msgid ""
+"Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]\n"
+"Apply COMMANDs with PARAMETERS to DEVICE.  If no COMMAND(s) are given, run "
+"in\n"
+"interactive mode.\n"
+msgstr ""
+"Використання: parted [КЛЮЧ]... [ПРИСТРІЙ [КОМАНДА [ПАРАМЕТРИ]...]...]\n"
+"Виконати КОМАНДА з параметрами ПАРАМЕТРИ для пристрою ПРИСТРІЙ.  Якщо\n"
+"КОМАНДА не вказана, запускається у інтерактивному режимі.\n"
+
+#: parted/ui.c:170
+#, c-format
+msgid ""
+"\n"
+"\n"
+"You found a bug in GNU Parted! Here's what you have to do:\n"
+"\n"
+"Don't panic! The bug has most likely not affected any of your data.\n"
+"Help us to fix this bug by doing the following:\n"
+"\n"
+"Check whether the bug has already been fixed by checking\n"
+"the last version of GNU Parted that you can find at:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Please check this version prior to bug reporting.\n"
+"\n"
+"If this has not been fixed yet or if you don't know how to check,\n"
+"please visit the GNU Parted website:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"for further information.\n"
+"\n"
+"Your report should contain the version of this release (%s)\n"
+"along with the error message below, the output of\n"
+"\n"
+"\tparted DEVICE unit co print unit s print\n"
+"\n"
+"and the following history of commands you entered.\n"
+"Also include any additional information about your setup you\n"
+"consider important.\n"
+msgstr ""
+"\n"
+"\n"
+"Ви знайшли помилку у GNU Parted! Рекомендації щодо подальших дій:\n"
+"\n"
+"Не панікуйте! Швидше за все помилка не впливає на ваші дані.\n"
+"Допоможіть нам виправити помилку, для цього:\n"
+"\n"
+"Перевірте чи не була помилка вже виправлена у останній версії\n"
+"GNU Parted, яку можна знайти за адресою:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Перевірте цю версію, перш ніж надсилати звіт про помилку.\n"
+"\n"
+"Якщо помилка не виправлена чи ви не знаєте як це перевірити,\n"
+"подальшу інформацію шукайте на веб-сайті GNU Parted:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"У вашому звіті слід вказати версію випуску (%s),\n"
+"наведене нижче повідомлення про помилку, вивід команди\n"
+"\n"
+"\tparted DEVICE unit co print unit s print\n"
+"\n"
+"та наступний список команд, які ви вводили.\n"
+"Також включіть додаткову інформацію про параметри, які вважаєте важливими.\n"
+
+#: parted/ui.c:291
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+"\n"
+"Історія команд:\n"
+
+#: parted/ui.c:354
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+"\n"
+"Помилка: SEGV_MAPERR (Адреса не прив'язана до об'єкту)\n"
+
+#: parted/ui.c:360
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+"\n"
+"Помилка: SEGV_ACCERR (Неправильні права доступу для прив'язаного об'єкту)\n"
+
+#: parted/ui.c:365
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+"\n"
+"Помилка: Виявлено загальний сигнал SIGSEGV.\n"
+
+#: parted/ui.c:389
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+"\n"
+"Помилка: FPE_INTDIV (Ціле: ділення на нуль)"
+
+#: parted/ui.c:394
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+"\n"
+"Помилка: FPE_INTOVF (Ціле число: переповнення)"
+
+#: parted/ui.c:399
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+"\n"
+"Помилка: FPE_INTDIV (Число з рухомою комою: ділення на нуль)"
+
+#: parted/ui.c:404
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+"\n"
+"Помилка: FPE_FLTOVF (Число з рухомою комою: переповнення)"
+
+#: parted/ui.c:409
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+"\n"
+"Помилка: FPE_FLTUND (Число з рухомою комою: дуже мале значення)"
+
+#: parted/ui.c:414
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+"\n"
+"Помилка: FPE_FLTRES (Число з рухомою комою: неточний результат)"
+
+#: parted/ui.c:419
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+"\n"
+"Помилка: FPE_FLTINV (Число з рухомою комою: неправильна операція)"
+
+#: parted/ui.c:424
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+"\n"
+"Помилка: FPE_FLTSUB (Число з рухомою комою: підпис поза межами)"
+
+#: parted/ui.c:429
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+"\n"
+"Помилка: Виявлено загальний сигнал SIGFPE."
+
+#: parted/ui.c:453
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+"\n"
+"Помилка: ILL_ILLOPC (Недопустимий код операцій)"
+
+#: parted/ui.c:458
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+"\n"
+"Помилка: ILL_ILLOPN (Неправильний операнд)"
+
+#: parted/ui.c:463
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+"\n"
+"Помилка: ILL_ILLADR (Неправильний режим адресації)"
+
+#: parted/ui.c:468
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+"\n"
+"Помилка: ILL_ILLTRP (Неправильна пастка)"
+
+#: parted/ui.c:473
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+"\n"
+"Помилка: ILL_PRVOPC (Код привілейованої операції)"
+
+#: parted/ui.c:478
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+"\n"
+"Помилка: ILL_PRVREG (Привілейований регістр)"
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+"\n"
+"Помилка: ILL_COPROC (Помилка співпроцесора)"
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+"\n"
+"Помилка: ILL_BADSTK (Внутрішня помилка стеку)"
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+"\n"
+"Помилка: Виявлено загальний сигнал SIGILL."
+
+#: parted/ui.c:891
+#, fuzzy, c-format
+msgid "invalid token: %s"
+msgstr "Не вдається відкрити %s."
+
+#: parted/ui.c:1048
+msgid "Expecting a partition number."
+msgstr "Очікується номер розділу."
+
+#: parted/ui.c:1057
+msgid "Partition doesn't exist."
+msgstr "Розділ не існує."
+
+#: parted/ui.c:1077
+msgid "Expecting a file system type."
+msgstr "Очікується тип файлова система."
+
+#: parted/ui.c:1084
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Невідомий тип файлової системи \"%s\"."
+
+#: parted/ui.c:1105
+msgid "Expecting a disk label type."
+msgstr "Очікується тип дискової етикетки."
+
+#: parted/ui.c:1203
+msgid "Can't create any more partitions."
+msgstr "Не вдається додатково створити розділи."
+
+#: parted/ui.c:1213
+msgid "Expecting a partition type."
+msgstr "Очікується тип розділу."
+
+#: parted/ui.c:1361
+msgid "on"
+msgstr "on"
+
+#: parted/ui.c:1362
+msgid "off"
+msgstr "off"
+
+#: parted/ui.c:1379
+msgid "optimal"
+msgstr ""
+
+#: parted/ui.c:1380
+msgid "minimal"
+msgstr ""
+
+#: parted/ui.c:1513
+msgid "OPTIONs:"
+msgstr "КЛЮЧІ:"
+
+#: parted/ui.c:1518
+msgid "COMMANDs:"
+msgstr "КОМАНДИ:"
+
+#: parted/ui.c:1521
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Report bugs to %s\n"
+msgstr ""
+"\n"
+"Відсилати звіти про помилки до <%s>.\n"
+
+#: parted/ui.c:1528
+#, c-format
+msgid "Using %s\n"
+msgstr "Використовується %s\n"
+
+#: parted/ui.c:1602
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr "Ця команда не має сенсу у не-інтерактивному режимі.\n"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]\n"
+#~ "  or:  %s DEVICE MINOR\n"
+#~ msgstr ""
+#~ "Використання: %s [КЛЮЧ]\n"
+#~ "  або:  %s ПРИСТРІЙ МЕНШИЙНОМЕР\n"
+
+#~ msgid ""
+#~ "Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Очистити невикористаний простір у розділі FAT (інструменті тестування GNU "
+#~ "Parted).\n"
+#~ "\n"
+
+#~ msgid "      --help     display this help and exit\n"
+#~ msgstr "      --help                  вивести довідку та завершити роботу\n"
+
+#~ msgid "      --version  output version information and exit\n"
+#~ msgstr ""
+#~ "      --version               вивести інформацію про версію та вийти\n"
+
+#~ msgid "too few arguments"
+#~ msgstr "надто мало параметрів"
+
+#~ msgid "too many arguments"
+#~ msgstr "надто багато аргументів"
+
+#, fuzzy
+#~ msgid "invalid minor device number: %s"
+#~ msgstr "Не вдається відкрити %s."
+
+#~ msgid "Could not detect file system."
+#~ msgstr "Не вдається виявити файлову систему."
+
+#~ msgid "The file system is bigger than its volume!"
+#~ msgstr "Файлова система більша ніж том!"
+
+#~ msgid "Support for opening %s file systems is not implemented yet."
+#~ msgstr "Підтримка відкривання %s файлових систем ще не реалізована."
+
+#~ msgid "Support for creating %s file systems is not implemented yet."
+#~ msgstr "Підтримка створення %s файлових систем ще не реалізована."
+
+#~ msgid "Support for checking %s file systems is not implemented yet."
+#~ msgstr "Підтримка перевірки %s файлових систем ще не реалізована."
+
+#~ msgid "raw block copying"
+#~ msgstr "копіювання блоків"
+
+#~ msgid "growing file system"
+#~ msgstr "розширення файлової системи"
+
+#~ msgid "Can't copy onto an overlapping partition."
+#~ msgstr "Не можна копіювати на розділи, що перекриваються."
+
+#~ msgid ""
+#~ "Direct support for copying file systems is not yet implemented for %s.  "
+#~ "However, support for resizing is implemented.  Therefore, the file system "
+#~ "can be copied if the new partition is at least as big as the old one.  "
+#~ "So, either shrink the partition you are trying to copy, or copy to a "
+#~ "bigger partition."
+#~ msgstr ""
+#~ "Безпосередня підтримка файлових систем ще не реалізована для %s. Але, "
+#~ "реалізована підтримка зміни розміру. Таким чином файлову систему можна "
+#~ "скопіювати на новий розділ більшого розміру ніж існуючий. Тому або "
+#~ "зменшіть розділ, який ви намагаєтесь скопіювати, або копіюйте на більший "
+#~ "розділ."
+
+#~ msgid "Support for copying %s file systems is not implemented yet."
+#~ msgstr "Підтримка копіювання файлових систем типу %s ще не підтримується."
+
+#~ msgid "Support for resizing %s file systems is not implemented yet."
+#~ msgstr ""
+#~ "Підтримка зміни розміру файлових систем типу %s ще не підтримується."
+
+#~ msgid "creating"
+#~ msgstr "створення"
+
+#~ msgid "The file system is in an invalid state.  Perhaps it is mounted?"
+#~ msgstr "Файлова система у некоректному стані. Можливо вона підключена?"
+
+#~ msgid "The file system is in old (unresizeable) format."
+#~ msgstr "Файлова система має старий формат (зміна розміру не підтримується)."
+
+#~ msgid "Invalid free blocks count.  Run reiserfsck --check first."
+#~ msgstr ""
+#~ "Неправильна кількість вільних блоків.  Спочатку запустіть reiserfsck --"
+#~ "check"
+
+#~ msgid "checking"
+#~ msgstr "перевірка"
+
+#~ msgid "Reiserfs tree seems to be corrupted.  Run reiserfsck --check first."
+#~ msgstr ""
+#~ "Дерево Reiserfs схоже пошкоджене.  Спочатку запустіть reiserfsck --check"
+
+#~ msgid ""
+#~ "The reiserfs file system passed a basic check.  For a more comprehensive "
+#~ "check, run reiserfsck --check."
+#~ msgstr ""
+#~ "Файлова система reiserfs пройшла загальну перевірку. Для більш докладної "
+#~ "перевірки запустіть reiserfsck --check."
+
+#~ msgid "Sorry, can't move the start of reiserfs partitions yet."
+#~ msgstr "Переміщення початку розділів типу reiserfs ще не підтримується."
+
+#~ msgid "Couldn't reopen device abstraction layer for read/write."
+#~ msgstr ""
+#~ "Не вдається повторно відкрити шар абстракції пристроїв для читання/запису."
+
+#~ msgid "shrinking"
+#~ msgstr "скорочення"
+
+#~ msgid "expanding"
+#~ msgstr "розширення"
+
+#~ msgid "Couldn't create reiserfs device abstraction handler."
+#~ msgstr "Не вдається створити обробник абстрактних пристроїв reiserfs."
+
+#~ msgid "Device is too small for %lu blocks."
+#~ msgstr "Пристрій система занадто маленький для %lu блоків."
+
+#~ msgid "copying"
+#~ msgstr "копіювання"
+
+#~ msgid "Couldn't resolve symbol %s.  Error: %s."
+#~ msgstr "Не вдається розв'язати символ %s.  Помилка: %s."
+
+#~ msgid "GNU Parted found an invalid libreiserfs library."
+#~ msgstr "GNU Parted виявив некоректну бібліотеку libreiserfs."
+
+#~ msgid ""
+#~ "GNU Parted has detected libreiserfs interface version mismatch.  Found %d-"
+#~ "%d, required %d. ReiserFS support will be disabled."
+#~ msgstr ""
+#~ "GNU Parted виявив невідповідність версій libreiserfs.  Виявлено %d-%d, "
+#~ "потрібна %d. Підтримку ReiserFS вимкнено."
+
+#~ msgid "Inconsistent group descriptors!"
+#~ msgstr "Суперечлива група дескрипторів!"
+
+#~ msgid "File system full!"
+#~ msgstr "Файлова система повна!"
+
+#~ msgid "Invalid superblock.  Are you sure this is an ext2 file system?"
+#~ msgstr ""
+#~ "Неправильний суперблок. Ви впевнені, що це файлова система типу ext2?"
+
+#~ msgid "File system has errors!  You should run e2fsck."
+#~ msgstr "Файлова система містить помилки! Необхідно запустити e2fsck."
+
+#~ msgid ""
+#~ "File system was not cleanly unmounted!  You should run e2fsck.  Modifying "
+#~ "an unclean file system could cause severe corruption."
+#~ msgstr ""
+#~ "Файлова система не була правильно відключена! Необхідно запустити e2fsck. "
+#~ "Зміни до нецілісної файлової системи можуть призвести до серйозних "
+#~ "пошкоджень."
+
+#~ msgid "Error allocating buffer cache."
+#~ msgstr "Помилка розподілу буфера кеша."
+
+#~ msgid ""
+#~ "Found an inode with a incorrect link count.  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "Знайдено вузол (inode) з неправильною кількістю посилань. Рекомендується "
+#~ "спочатку запустити e2fsck."
+
+#~ msgid "Not enough free inodes!"
+#~ msgstr "Недостатньо вільних вузлів (inode)!"
+
+#~ msgid "File system is too full to remove a group!"
+#~ msgstr "Файлова система надто заповнена, щоб видалити групу!"
+
+#~ msgid "File system has too many allocated inodes to remove a group!"
+#~ msgstr ""
+#~ "У файловій системі виділено надто багато вузлів (inode), щоб видалити "
+#~ "групу!"
+
+#~ msgid "adding groups"
+#~ msgstr "додавання груп"
+
+#~ msgid "Your file system is too full to resize it to %i blocks.  Sorry."
+#~ msgstr "Файлова система надто заповнена щоб змінити її розмір до %i блоків."
+
+#~ msgid ""
+#~ "Your file system has too many occupied inodes to resize it to %i blocks.  "
+#~ "Sorry."
+#~ msgstr ""
+#~ "У файловій системі надто багато зайнятих i-вузлів, щоб змінити її розмір "
+#~ "до %i блоків."
+
+#~ msgid "File system was not cleanly unmounted!  You should run e2fsck."
+#~ msgstr ""
+#~ "Файлова система була неправильно відключена! Необхідно запустити e2fsck."
+
+#~ msgid ""
+#~ "The file system has the 'dir_index' feature enabled.  Parted can only "
+#~ "resize the file system if it disables this feature.  You can enable it "
+#~ "later by running 'tune2fs -O dir_index DEVICE' and then 'e2fsck -fD "
+#~ "DEVICE'."
+#~ msgstr ""
+#~ "У файловій системі ввімкнено властивість 'dir_index'. Parted може "
+#~ "змінювати розмір лише у файлових систем, у яких ця властивість вимкнена. "
+#~ "Ви можете увімкнути її пізніше, командою 'tune2fs -O dir_index DEVICE', "
+#~ "після чого слід запустити 'e2fsck -fD DEVICE'."
+
+#~ msgid ""
+#~ "A resize operation on this file system will use EXPERIMENTAL code\n"
+#~ "that MAY CORRUPT it (although no one has reported any such damage yet).\n"
+#~ "You should at least backup your data first, and run 'e2fsck -f' "
+#~ "afterwards."
+#~ msgstr ""
+#~ "Операція зміни розміру на цій файловій системі використовує\n"
+#~ "ЕКСПЕРИМЕНТАЛЬНИЙ код та МОЖЕ ПОШКОДИТИ її (хоча цього досі не було\n"
+#~ "помічено). Принаймні, слід зробити резервну копію даних та запустити\n"
+#~ "'e2fsck -f' після завершення зміни розміру."
+
+#~ msgid "Cross-linked blocks found!  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "Виявлено блоки з перехресними посиланнями! Краще спочатку запустити "
+#~ "e2fsck!"
+
+#~ msgid "Block %i has no reference?  Weird."
+#~ msgstr "Блок %i не має посилання? Дивно"
+
+#~ msgid "Block %i shouldn't have been marked (%d, %d)!"
+#~ msgstr "Блок %i не повинен бути відміченим (%d, %d)!"
+
+#~ msgid ""
+#~ "The ext2 file system passed a basic check.  For a more comprehensive "
+#~ "check, use the e2fsck program."
+#~ msgstr ""
+#~ "Файлова система ext2 пройшла загальну перевірку. Для більш докладної "
+#~ "перевірки користуйтесь програмою e2fsck."
+
+#~ msgid "Sorry, can't move the start of ext2 partitions yet!"
+#~ msgstr "Переміщення початку розділів типу ext2 ще не підтримується!"
+
+#~ msgid "Couldn't flush buffer cache!"
+#~ msgstr "Не вдається очистити буфер кешу!"
+
+#~ msgid "writing per-group metadata"
+#~ msgstr "записування метаданих груп"
+
+#~ msgid "File system too small for ext2."
+#~ msgstr "Файлова система занадто маленька для ext2."
+
+#~ msgid ""
+#~ "You need %s of free disk space to shrink this partition to this size.  "
+#~ "Currently, only %s is free."
+#~ msgstr ""
+#~ "Необхідно %s вільного простору, щоб зменшити розділ до такого розміру "
+#~ "(зараз у вас вільно лише %s)."
+
+#~ msgid ""
+#~ "Cluster start delta = %d, which is not a multiple of the cluster size %d."
+#~ msgstr ""
+#~ "Кластер починається зі зсувом %d, що не є цілим числом кластерів розміру "
+#~ "%d."
+
+#~ msgid "Partition too big/small for a %s file system."
+#~ msgstr "Розділ надто великий/малий для файлової системи типу %s."
+
+#~ msgid ""
+#~ "The FATs don't match.  If you don't know what this means, then select "
+#~ "cancel, run scandisk on the file system, and then come back."
+#~ msgstr ""
+#~ "Копії FAT не збігаються. Якщо ви не знаєте, що це означає, виберіть "
+#~ "\"Скасувати\", запустіть scandisk для файлової системи, а потім повторіть "
+#~ "цю команду."
+
+#~ msgid "There are no possible configurations for this FAT type."
+#~ msgstr "Для цього типу FAT немає допустимих конфігурацій."
+
+#~ msgid ""
+#~ "File system doesn't have expected sizes for Windows to like it.  Cluster "
+#~ "size is %dk (%dk expected); number of clusters is %d (%d expected); size "
+#~ "of FATs is %d sectors (%d expected)."
+#~ msgstr ""
+#~ "Windows не підтримує файлову систему, що має такі розміри. Розмір "
+#~ "кластера %dk (очікувалось %dk); кількість кластерів %d (очікувалось %d); "
+#~ "розмір FAT %d секторів (очікувалось %d)."
+
+#~ msgid ""
+#~ "File system is reporting the free space as %d clusters, not %d clusters."
+#~ msgstr ""
+#~ "Файлова система повідомляє про вільний простір %d кластерів, а не %d "
+#~ "кластерів."
+
+#~ msgid ""
+#~ "There's not enough room in the root directory for all of the files.  "
+#~ "Either cancel, or ignore to lose the files."
+#~ msgstr ""
+#~ "Не вистачає простору для всіх файлів в кореневому каталозі. Виберіть "
+#~ "\"Скасувати\", якщо проігноруєте, це призведе до втрати  файлів."
+
+#~ msgid "Error writing to the root directory."
+#~ msgstr "Помилка записування у кореневий каталог."
+
+#~ msgid ""
+#~ "If you leave your file system as FAT16, then you will have no problems."
+#~ msgstr ""
+#~ "Якщо залишити файлову систему як FAT16, тоді у вас не виникатиме проблем."
+
+#~ msgid ""
+#~ "If you convert to FAT16, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual)."
+#~ msgstr ""
+#~ "Якщо ви перетворюєте файлову систему розділу з Windows у розділ FAT16, "
+#~ "буде потрібно перевстановити завантажувач MS Windows. Для цього слід "
+#~ "переглянути довідку з Parted (або посібник з вашого дистрибутиву)."
+
+#~ msgid ""
+#~ "If you leave your file system as FAT32, then you will not introduce any "
+#~ "new problems."
+#~ msgstr ""
+#~ "Якщо ви залишаєте файлову систему як FAT32, тоді не виникне ніяких нових "
+#~ "проблем."
+
+#~ msgid ""
+#~ "If you convert to FAT32, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual).  Also, converting to FAT32 will make the file system unreadable "
+#~ "by MS DOS, MS Windows 95a, and MS Windows NT."
+#~ msgstr ""
+#~ "Якщо ви перетворите файлову систему розділу з MS Windows у розділ FAT32,"
+#~ "буде потрібно перевстановити завантажувач MS Windows. Для цього слід "
+#~ "переглянути довідку з Parted (або посібник з вашого дистрибутиву). "
+#~ "Перетворення у FAT32 унеможливить читання файлової системи під MS DOS, MS "
+#~ "Windows 95a, та MS Windows NT."
+
+#~ msgid "%s  %s  %s"
+#~ msgstr "%s  %s  %s"
+
+#~ msgid "Would you like to use FAT32?"
+#~ msgstr "Бажаєте використовувати FAT32?"
+
+#~ msgid "%s  %s"
+#~ msgstr "%s  %s"
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT16."
+#~ msgstr ""
+#~ "Змінити розмір файлової системи на вказаний розмір можна лише при "
+#~ "перетворенні на FAT16."
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT32."
+#~ msgstr ""
+#~ "Змінити розмір файлової системи на вказаний розмір можна лише при "
+#~ "перетворенні на FAT32."
+
+#~ msgid ""
+#~ "GNU Parted cannot resize this partition to this size.  We're working on "
+#~ "it!"
+#~ msgstr ""
+#~ "GNU Parted нездатний змінити розмір розділу на вказане значення. Ми над "
+#~ "цим працюємо!"
+
+#~ msgid "Bad directory entry for %s: first cluster is the end of file marker."
+#~ msgstr ""
+#~ "Неправильний елемент каталогу %s: перший кластер є кінцем маркера файла."
+
+#~ msgid ""
+#~ "Bad FAT: unterminated chain for %s.  You should run dosfsck or scandisk."
+#~ msgstr ""
+#~ "Помилка у FAT: незавершений ланцюг для %s. Потрібно запустити dosfsck або "
+#~ "scandisk."
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d outside file system in chain for %s.  You should run "
+#~ "dosfsck or scandisk."
+#~ msgstr ""
+#~ "Помилка у FAT: кластер %d знаходиться поза межами файлової системи у "
+#~ "ланцюгу для %s. Потрібно запустити dosfsck або scandisk."
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d is cross-linked for %s.  You should run dosfsck or "
+#~ "scandisk."
+#~ msgstr ""
+#~ "Помилка у FAT: перехресне посилання у кластері %d для %s. Потрібно "
+#~ "запустити dosfsck або scandisk."
+
+#~ msgid "%s is %dk, but it has %d clusters (%dk)."
+#~ msgstr "%s дорівнює %dk, але має %d кластерів (%dk)."
+
+#~ msgid ""
+#~ "The file %s is marked as a system file.  This means moving it could cause "
+#~ "some programs to stop working."
+#~ msgstr ""
+#~ "Файл %s позначений як системний файл. Це означає, що його переміщення "
+#~ "може призвести до припинення роботи деяких програм."
+
+#~ msgid ""
+#~ "FAT %d media %x doesn't match the boot sector's media %x.  You should "
+#~ "probably run scandisk."
+#~ msgstr ""
+#~ "FAT %d носій %x не відповідає завантажувальним секторам носія %x. "
+#~ "Потрібно запустити dosfsck або scandisk."
+
+#~ msgid "fat_table_set: cluster %ld outside file system"
+#~ msgstr "fat_table_set: кластер %ld знаходиться поза межами файлової системи"
+
+#~ msgid "fat_table_get: cluster %ld outside file system"
+#~ msgstr "fat_table_get: кластер %ld знаходиться поза межами файлової системи"
+
+#~ msgid "fat_table_alloc_cluster: no free clusters"
+#~ msgstr "fat_table_alloc_cluster: немає вільних кластерів"
+
+#~ msgid "Too many bad pages."
+#~ msgstr "Надто багато пошкоджених сторінок."
+
+#~ msgid "The file system contains errors."
+#~ msgstr "Файлова система містить помилки."
+
+#~ msgid "Bad blocks could not be read."
+#~ msgstr "Пошкоджені блоки не вдається прочитати."
+
+#~ msgid ""
+#~ "Trying to register an extent starting at block 0x%X, but another one "
+#~ "already exists at this position.  You should check the file system!"
+#~ msgstr ""
+#~ "Спроба зареєструвати екстент, о починається з блоку 0x%X, але в цій "
+#~ "позиції вже існує інший. Слід перевірити файлову систему!"
+
+#~ msgid ""
+#~ "Trying to move an extent from block Ox%X to block Ox%X, but another one "
+#~ "already exists at this position.  This should not happen!"
+#~ msgstr ""
+#~ "Спроба перемістити екстент з блоку Ox%X у блок Ox%X, але в цій позиції "
+#~ "вже існує інший.  Цього не повинно бути!"
+
+#~ msgid "Could not update the extent cache for HFS file with CNID %X."
+#~ msgstr "Не вдається оновити кеш екстенту для файлу HFS з CNID %X."
+
+#~ msgid "Trying to read HFS file with CNID %X behind EOF."
+#~ msgstr "Спроба прочитати файл HFS з CNID %X перед EOF."
+
+#~ msgid "Could not find sector %lli of HFS file with CNID %X."
+#~ msgstr "Не вдається знайти сектор %lli з файлу HFS з CNID %X."
+
+#~ msgid "Trying to write HFS file with CNID %X behind EOF."
+#~ msgstr "Спроба записати файл HFS з CNID %X перед EOF."
+
+#~ msgid "Could not update the extent cache for HFS+ file with CNID %X."
+#~ msgstr "Не вдається оновити кеш екстенту для файлу HFS+ з CNID %X."
+
+#~ msgid "Trying to read HFS+ file with CNID %X behind EOF."
+#~ msgstr "Спроба прочитати файл HFS+ з CNID %X перед EOF."
+
+#~ msgid "Could not find sector %lli of HFS+ file with CNID %X."
+#~ msgstr "Не вдається знайти сектор %lli з файлу HFS+ з CNID %X."
+
+#~ msgid "Trying to write HFS+ file with CNID %X behind EOF."
+#~ msgstr "Спроба записати файл HFS+ з CNID %X перед EOF."
+
+#~ msgid "Sorry, HFS cannot be resized that way yet."
+#~ msgstr "Розмір HFS не можна змінювати таким способом."
+
+#~ msgid "Data relocation has failed."
+#~ msgstr "Помилка переносу даних."
+
+#~ msgid "Data relocation left some data in the end of the volume."
+#~ msgstr "При переносі даних частина даних залишилась наприкінці тому."
+
+#~ msgid "writing HFS Master Directory Block"
+#~ msgstr "записується головний блок каталогу"
+
+#~ msgid "No valid HFS[+X] signature has been found while opening."
+#~ msgstr "При відкриванні не виявлено правильну сигнатуру HFS[+X]."
+
+#~ msgid "Version %d of HFS+ isn't supported."
+#~ msgstr "Версія %d системи HFS+ не підтримується."
+
+#~ msgid "Version %d of HFSX isn't supported."
+#~ msgstr "Версія %d системи HFSX не підтримується."
+
+#~ msgid "Data relocation left some data at the end of the volume."
+#~ msgstr "При переносі даних наприкінці розділу залишились деякі дані."
+
+#~ msgid "Error while writing the allocation file."
+#~ msgstr "Помилка запису виділеного файлу."
+
+#~ msgid "Error while writing the compatibility part of the allocation file."
+#~ msgstr "Помилка запису частини сумісності виділеного файлу."
+
+#~ msgid "writing HFS+ Volume Header"
+#~ msgstr "запис заголовку тому HFS+"
+
+#~ msgid "An error occurred while looking for the mandatory bad blocks file."
+#~ msgstr "Помилка пошуку файлу відомих пошкоджених блоків."
+
+#~ msgid ""
+#~ "It seems there is an error in the HFS wrapper: the bad blocks file "
+#~ "doesn't contain the embedded HFS+ volume."
+#~ msgstr ""
+#~ "Помилка у обробнику HFS: файл пошкоджених блоків не містить вбудований "
+#~ "том HFS+."
+
+#~ msgid "Sorry, HFS+ cannot be resized that way yet."
+#~ msgstr "Розмір HFS+ не можна змінювати таким способом."
+
+#~ msgid "shrinking embedded HFS+ volume"
+#~ msgstr "зменшення вбудованого тому HFS+"
+
+#~ msgid "Resizing the HFS+ volume has failed."
+#~ msgstr "Помилка зміни розміру тому HFS+."
+
+#~ msgid "shrinking HFS wrapper"
+#~ msgstr "оболонка скорочення HFS"
+
+#~ msgid "Updating the HFS wrapper has failed."
+#~ msgstr "оновлення помилка оболонки HFS."
+
+#~ msgid ""
+#~ "This is not a real %s check.  This is going to extract special low level "
+#~ "files for debugging purposes."
+#~ msgstr ""
+#~ "Це не справжня перевірка %s. Відбувається лише отримання спеціальних "
+#~ "ньзькорівневих файлів для налагодження."
+
+#~ msgid "Bad block list header checksum."
+#~ msgstr "Неправильна контрольна сума заголовка списку блоків."
+
+#~ msgid ""
+#~ "Invalid size of a transaction block while replaying the journal (%i "
+#~ "bytes)."
+#~ msgstr ""
+#~ "Неправильний розмір блоку транзакції при повторному накладанні журналу "
+#~ "(%i байтів)."
+
+#~ msgid ""
+#~ "Journal stored outside of the volume are not supported.  Try to "
+#~ "desactivate the journal and run Parted again."
+#~ msgstr ""
+#~ "Журнал розміщено поза межами тому не підтримується. Слід вимкнути журнал "
+#~ "та перезапустити Parted."
+
+#~ msgid "Journal offset or size is not multiple of the sector size."
+#~ msgstr "Початок чи розмір журналу не є цілим числом секторів."
+
+#~ msgid "Incorrect magic values in the journal header."
+#~ msgstr "Неправильні сигнатури у заголовку журналу."
+
+#~ msgid "Journal size mismatch between journal info block and journal header."
+#~ msgstr ""
+#~ "Розмір журналу не відповідає значенню у інформаційному блоці журналу та "
+#~ "заголовку журналу."
+
+#~ msgid "Some header fields are not multiple of the sector size."
+#~ msgstr "Розмір деяких полів заголовку не складає ціле число секторів."
+
+#~ msgid ""
+#~ "The sector size stored in the journal is not 512 bytes.  Parted only "
+#~ "supports 512 bytes length sectors."
+#~ msgstr ""
+#~ "Розмір сектора, що зберігається у журналі, не дорівнює 512 байтам.  "
+#~ "Parted підтримує лише сектори розміром 512 байтів."
+
+#~ msgid "Bad journal checksum."
+#~ msgstr "Неправильна контрольна сума журналу."
+
+#~ msgid ""
+#~ "The journal is not empty.  Parted must replay the transactions before "
+#~ "opening the file system.  This will modify the file system."
+#~ msgstr ""
+#~ "Журнал не порожній. Parted маж накласти транзакції перед відкривання "
+#~ "файлової системи. Це призведе до зміни файлової системи."
+
+#~ msgid ""
+#~ "The volume header or the master directory block has changed while "
+#~ "replaying the journal.  You should restart Parted."
+#~ msgstr ""
+#~ "При накладанні журналу змінився заголовок тому чи блок головного "
+#~ "каталогу. Слід перезапустити Parted."
+
+#~ msgid "An extent has not been relocated."
+#~ msgstr "Екстент не був переміщений."
+
+#~ msgid ""
+#~ "A reference to an extent comes from a place it should not.  You should "
+#~ "check the file system!"
+#~ msgstr ""
+#~ "Посилання на екстент з місця, з якого не має бути посилання. Слід "
+#~ "перевірити файлову систему!"
+
+#~ msgid "This HFS volume has no catalog file.  This is very unusual!"
+#~ msgstr "Цей том HFS не містить файл каталогу. Досить дивно!"
+
+#~ msgid ""
+#~ "This HFS volume has no extents overflow file.  This is quite unusual!"
+#~ msgstr "Цей том HFS не містить файлу перекривання екстентів. Досить дивно!"
+
+#~ msgid ""
+#~ "The extents overflow file should not contain its own extents!  You should "
+#~ "check the file system."
+#~ msgstr ""
+#~ "Файл перекривання екстентів не має містить власних екстентів! Слід "
+#~ "перевірити файлову систему."
+
+#~ msgid "Could not cache the file system in memory."
+#~ msgstr "Не вдається занести у кеш файлову систему у пам'яті."
+
+#~ msgid "Bad blocks list could not be loaded."
+#~ msgstr "Список неправильних блоків не було завантажено."
+
+#~ msgid "An error occurred during extent relocation."
+#~ msgstr "Помилка при переміщенні екстенту."
+
+#~ msgid "This HFS+ volume has no catalog file.  This is very unusual!"
+#~ msgstr "Цей том HFS+ не містить файлу каталогу.  Досить дивно!"
+
+#~ msgid ""
+#~ "This HFS+ volume has no extents overflow file.  This is quite unusual!"
+#~ msgstr "Цей том HFS+ не містить файлу перекривання екстентів. Досить дивно!"
+
+#~ msgid "The partition must have one of the following FS-TYPEs: "
+#~ msgstr "Розділ повинен мати один з наступних типів FS-TYPE: "
+
+#~ msgid ""
+#~ "The existing file system will be destroyed and all data on the partition "
+#~ "will be lost. Do you want to continue?"
+#~ msgstr ""
+#~ "Існуюча файлова система буде знищена разом з усіма даними на ній. "
+#~ "Продовжити?"
+
+#~ msgid "Source device?"
+#~ msgstr "Пристрій-джерело?"
+
+#~ msgid "Source partition number?"
+#~ msgstr "Номер вихідного розділу?"
+
+#~ msgid "Can't copy an extended partition."
+#~ msgstr "Не можна копіювати розширені розділи."
+
+#~ msgid "Destination partition number?"
+#~ msgstr "Номер цільового розділу?"
+
+#~ msgid ""
+#~ "An extended partition cannot hold a file system.  Did you want mkpart?"
+#~ msgstr "Розширений розділ не може мати файлову систему. Виконати mkpart?"
+
+#~ msgid "Can't move an extended partition."
+#~ msgstr "Переміщення розширених розділів не підтримується."
+
+#~ msgid "Can't move a partition onto itself.  Try using resize, perhaps?"
+#~ msgstr "Не можна переміщувати розділ сам у себе.  Може спробувати resize?"
+
+#~ msgid "Minor: %d\n"
+#~ msgstr "Номер: %d\n"
+
+#~ msgid "Flags: %s\n"
+#~ msgstr "Ознаки: %s\n"
+
+#~ msgid "File System: %s\n"
+#~ msgstr "Файлова система: %s\n"
+
+#~ msgid "Size:         "
+#~ msgstr "Розмір:       "
+
+#~ msgid "Minimum size: "
+#~ msgstr "Мінімальний розмір: "
+
+#~ msgid "Maximum size: "
+#~ msgstr "Максимальний розмір: "
+
+#~ msgid "check"
+#~ msgstr "check"
+
+#~ msgid ""
+#~ "check NUMBER                             do a simple check on the file "
+#~ "system"
+#~ msgstr ""
+#~ "check НОМЕР                   виконати просту перевірку файлової системи"
+
+#~ msgid "cp"
+#~ msgstr "cp"
+
+#~ msgid ""
+#~ "cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   copy file system to another "
+#~ "partition"
+#~ msgstr ""
+#~ "cp [З-ПРИСТРОЮ] З-НОМЕР У-НОМЕР     копіювати файлову систему у інший "
+#~ "розділ"
+
+#~ msgid "mkfs"
+#~ msgstr "mkfs"
+
+#, fuzzy
+#~ msgid ""
+#~ "mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on "
+#~ "partition NUMBER"
+#~ msgstr ""
+#~ "mkfs НОМЕР ТИП-ФС             створити файлову систему ТИП-ФС у розділі "
+#~ "НОМЕР"
+
+#~ msgid "mkpartfs"
+#~ msgstr "mkpartfs"
+
+#~ msgid ""
+#~ "mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file "
+#~ "system"
+#~ msgstr ""
+#~ "mkpartfs ТИП-РОЗДІЛУ ТИП-ФС ПОЧАТОК КІНЕЦЬ    створити розділ з файловою "
+#~ "системою"
+
+#~ msgid "move"
+#~ msgstr "move"
+
+#~ msgid "move NUMBER START END                    move partition NUMBER"
+#~ msgstr "move НОМЕР ПОЧАТОК КІНЕЦЬ     перемістити розділ з номером НОМЕР"
+
+#~ msgid "resize"
+#~ msgstr "resize"
+
+#~ msgid ""
+#~ "resize NUMBER START END                  resize partition NUMBER and its "
+#~ "file system"
+#~ msgstr "resize НОМЕР ПОЧАТОК КІНЕЦЬ   змінити розмір розділу НОМЕР"
+
+#~ msgid ""
+#~ "Device %s has a logical sector size of %lld.  Not all parts of GNU Parted "
+#~ "support this at the moment, and the working code is HIGHLY EXPERIMENTAL.\n"
+#~ msgstr ""
+#~ "Розмір логічного сектору для %s складає %lld. Наразі не всі компоненти "
+#~ "GNU Parted це підтримують.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Could not determine minimum io size for %s: %s.\n"
+#~ "Using the default size (%lld)."
+#~ msgstr ""
+#~ "Не вдається визначити розмір сектору для %s: %s.\n"
+#~ "Використовується типовий розмір сектору (%lld)."
+
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: неправильний ключ -- %c\n"
+
+#~ msgid "Unable to determine the block size of this dasd"
+#~ msgstr "Не вдається визначити розмір блоку для цього dasd"
+
+#~ msgid ""
+#~ "The kernel was unable to re-read the partition table on %s (%s).  This "
+#~ "means Linux won't know anything about the modifications you made until "
+#~ "you reboot.  You should reboot your computer before doing anything with "
+#~ "%s."
+#~ msgstr ""
+#~ "Ядро не може перечитати таблицю розділів на %s (%s). Це означає, що Linux "
+#~ "не враховуватиме внесені зміни до перезавантаження. Необхідно "
+#~ "перезавантажити ваш комп'ютер перш ніж якось використовувати %s."
+
+#~ msgid ""
+#~ "%s read error\n"
+#~ "%s\n"
+#~ msgstr ""
+#~ "%s помилка при читанні\n"
+#~ "%s\n"
+
+#~ msgid ""
+#~ "%s write error\n"
+#~ "%s\n"
+#~ msgstr ""
+#~ "%s помилка при записі\n"
+#~ "%s\n"
+
+#~ msgid ""
+#~ "%s IOCTL error\n"
+#~ "%s\n"
+#~ msgstr ""
+#~ "%s помилка IOCTL\n"
+#~ "%s\n"
+
+#~ msgid ""
+#~ "%s Config file syntax error\n"
+#~ "%s\n"
+#~ msgstr ""
+#~ "%s Синтаксична помилка у конфігураційному файлі\n"
+#~ "%s\n"
+
+#~ msgid ""
+#~ "%s space allocation\n"
+#~ "%s\n"
+#~ msgstr ""
+#~ "%s виділення простору\n"
+#~ "%s\n"
+
+#~ msgid ""
+#~ "%s Fatal error\n"
+#~ "%s\n"
+#~ msgstr ""
+#~ "%s Фатальна помилка\n"
+#~ "%s\n"
+
+#~ msgid "File system has an incompatible feature enabled."
+#~ msgstr "У файловій системі ввімкнено несумісну властивість."
+
+#~ msgid "File system?"
+#~ msgstr "Файлова система?"
diff --git a/po/vi.gmo b/po/vi.gmo
new file mode 100644 (file)
index 0000000..d9221f3
Binary files /dev/null and b/po/vi.gmo differ
diff --git a/po/vi.po b/po/vi.po
new file mode 100644 (file)
index 0000000..d93a7d9
--- /dev/null
+++ b/po/vi.po
@@ -0,0 +1,3336 @@
+# Vietnamese translation for Parted.
+# Copyright © 2010 Free Software Foundation, Inc.
+# This file is distributed under the same license as the parted package.
+# Trần Thị Hoàng Quyền <banhdauxanhhaiduong@gmail.com>, 2005.
+# Clytie Siddall <clytie@riverland.net.au>, 2009, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: parted 2.3\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2011-05-30 13:45+0200\n"
+"PO-Revision-Date: 2010-10-04 17:45+1030\n"
+"Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
+"Language-Team: Vietnamese <vi-VN@googlegroups.com>\n"
+"Language: vi\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: LocFactoryEditor 1.8\n"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "sai đặt đối số %s cho %s"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "gặp đối số vẫn mơ hồ %s cho %s"
+
+#: lib/argmatch.c:153
+#, c-format
+msgid "Valid arguments are:"
+msgstr "Đối số hợp lệ:"
+
+#: lib/closeout.c:112 libparted/labels/fdasd.c:107
+msgid "write error"
+msgstr "lỗi ghi nhớ"
+
+#: lib/error.c:181
+msgid "Unknown system error"
+msgstr "Gặp lỗi hệ thống không rõ"
+
+#: lib/getopt.c:548 lib/getopt.c:577
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
+msgstr "%s: tùy chọn « %s » vẫn mơ hồ\n"
+
+#: lib/getopt.c:625 lib/getopt.c:629
+#, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s: tùy chọn « --%s » không cho phép đối số\n"
+
+#: lib/getopt.c:638 lib/getopt.c:643
+#, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr "%s: tùy chọn « %c%s » không cho phép đối số\n"
+
+#: lib/getopt.c:686 lib/getopt.c:705
+#, c-format
+msgid "%s: option '--%s' requires an argument\n"
+msgstr "%s: tùy chọn « --%s » yêu cầu một đối số\n"
+
+#: lib/getopt.c:743 lib/getopt.c:746
+#, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s: không nhận ra tùy chọn « --%s »\n"
+
+#: lib/getopt.c:754 lib/getopt.c:757
+#, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "%s: không nhận ra tùy chọn « %c%s »\n"
+
+#: lib/getopt.c:806 lib/getopt.c:809
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: tùy chọn không hợp lệ -- « %c »\n"
+
+#: lib/getopt.c:859 lib/getopt.c:876 lib/getopt.c:1084 lib/getopt.c:1102
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: tùy chọn yêu cầu một đối số -- « %c »\n"
+
+#: lib/getopt.c:932 lib/getopt.c:948
+#, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s: tùy chọn « -W %s » vẫn mơ hồ\n"
+
+#: lib/getopt.c:972 lib/getopt.c:990
+#, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr "%s: tùy chọn « -W %s » không cho phép đối số\n"
+
+#: lib/getopt.c:1011 lib/getopt.c:1029
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: tùy chọn « -W %s » yêu cầu một đối số\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:271
+msgid "`"
+msgstr "« "
+
+#: lib/quotearg.c:272
+msgid "'"
+msgstr " »"
+
+#: lib/regcomp.c:133
+msgid "Success"
+msgstr "Thành công"
+
+#: lib/regcomp.c:136
+msgid "No match"
+msgstr "Không tìm thấy"
+
+#: lib/regcomp.c:139
+msgid "Invalid regular expression"
+msgstr "Biểu thức chính quy không hợp lệ"
+
+#: lib/regcomp.c:142
+msgid "Invalid collation character"
+msgstr "Ký tự đối chiếu không hợp lệ"
+
+#: lib/regcomp.c:145
+msgid "Invalid character class name"
+msgstr "Sai đặt tên hạng ký tự"
+
+#: lib/regcomp.c:148
+msgid "Trailing backslash"
+msgstr "Có dấu chéo ngược theo sau"
+
+#: lib/regcomp.c:151
+msgid "Invalid back reference"
+msgstr "Sai đặt tham chiếu ngược"
+
+#: lib/regcomp.c:154
+msgid "Unmatched [ or [^"
+msgstr "Có một ký tự « [ » hay « [^ » riêng lẻ"
+
+#: lib/regcomp.c:157
+msgid "Unmatched ( or \\("
+msgstr "Có một ký tự « ( » hay « \\( » riêng lẻ"
+
+#: lib/regcomp.c:160
+msgid "Unmatched \\{"
+msgstr "Có một ký tự « \\{ » riêng lẻ"
+
+#: lib/regcomp.c:163
+msgid "Invalid content of \\{\\}"
+msgstr "Nội dụng « \\{\\} » không hợp lệ"
+
+#: lib/regcomp.c:166
+msgid "Invalid range end"
+msgstr "Sai kết thúc phạm vi"
+
+#: lib/regcomp.c:169
+msgid "Memory exhausted"
+msgstr "Cạn bộ nhớ"
+
+#: lib/regcomp.c:172
+msgid "Invalid preceding regular expression"
+msgstr "Sai đặt biểu thức chính quy đi trước"
+
+#: lib/regcomp.c:175
+msgid "Premature end of regular expression"
+msgstr "Kết thúc sớm biểu thức chính quy"
+
+#: lib/regcomp.c:178
+msgid "Regular expression too big"
+msgstr "Biểu thức chính quy quá lớn"
+
+#: lib/regcomp.c:181
+msgid "Unmatched ) or \\)"
+msgstr "Có một ký tự « ) » hay « \\) » riêng lẻ"
+
+#: lib/regcomp.c:702
+msgid "No previous regular expression"
+msgstr "Không có biểu thức chính quy đi trước"
+
+#. TRANSLATORS: A regular expression testing for an affirmative answer
+#. (english: "yes").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^yesexpr='
+#: lib/rpmatch.c:147
+msgid "^[yY]"
+msgstr "^[cCyY]"
+
+#. TRANSLATORS: A regular expression testing for a negative answer
+#. (english: "no").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^noexpr='
+#: lib/rpmatch.c:160
+msgid "^[nN]"
+msgstr "^[kKnN]"
+
+#: lib/version-etc.c:74
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Đóng gói bởi %s (%s)\n"
+
+#: lib/version-etc.c:77
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Đóng gói bởi %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale.  Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:84
+msgid "(C)"
+msgstr "©"
+
+#: lib/version-etc.c:86
+msgid ""
+"\n"
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"\n"
+"Giấy phép GPL pb3+ : Giấy phép Công cộng GNU phiên bản 3 hay sau\n"
+"<http://gnu.org/licenses/gpl.html>\n"
+"Đây là phần mềm tự do : bạn có quyền sửa đổi và phát hành lại nó.\n"
+"KHÔNG CÓ BẢO HÀNH GÌ CẢ, với điều khiển được pháp luật cho phép.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:102
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Viết bởi %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:106
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Viết bởi %s và %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:110
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Viết bởi %s, %s và %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Viết bởi %s, %s, %s,.\n"
+"và %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Viết bởi %s, %s, %s,.\n"
+"%s, và %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:131
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Viết bởi %s, %s, %s,.\n"
+"%s, %s, và %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:139
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Viết bởi %s, %s, %s,.\n"
+"%s, %s, %s, và %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:147
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Viết bởi %s, %s, %s,.\n"
+"%s, %s, %s, %s.\n"
+"và %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:156
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Viết bởi %s, %s, %s,.\n"
+"%s, %s, %s, %s.\n"
+"%s, và %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:167
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Viết bởi %s, %s, %s,.\n"
+"%s, %s, %s, %s.\n"
+"%s, %s, và những người khác.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package.  Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:245
+#, c-format
+msgid ""
+"\n"
+"Report bugs to: %s\n"
+msgstr ""
+"\n"
+"Gửi báo cáo lỗi tới: <%s>\n"
+"Gửi báo cáo lỗi dịch tới Clytie: <clytie@riverland.net.au>\n"
+
+#: lib/version-etc.c:247
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "Thông báo lỗi %s nào cho: %s\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Trang chủ %s: <%s>\n"
+
+#: lib/version-etc.c:253
+#, c-format
+msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
+msgstr "Trang chủ %s: <http://www.gnu.org/software/%s/>\n"
+
+#: lib/version-etc.c:256
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
+msgstr ""
+"Trợ giúp chung về sử dụng phần mềm GNU: <http://www.gnu.org/gethelp/>\n"
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "cạn bộ nhớ"
+
+#: lib/xstrtol-error.c:63
+#, c-format
+msgid "invalid %s%s argument `%s'"
+msgstr "đối số %s%s không hợp lệ « %s »"
+
+#: lib/xstrtol-error.c:68
+#, c-format
+msgid "invalid suffix in %s%s argument `%s'"
+msgstr "gặp hậu tố không hợp lệ trong đối số %s%s « %s »"
+
+#: lib/xstrtol-error.c:72
+#, c-format
+msgid "%s%s argument `%s' too large"
+msgstr "đối số %s%s « %s » quá lớn"
+
+#: libparted/arch/beos.c:245
+msgid "Disk Image"
+msgstr "Ảnh Đĩa"
+
+#: libparted/arch/beos.c:346 libparted/arch/gnu.c:277
+#: libparted/arch/linux.c:1545
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "Lỗi mở %s: %s"
+
+#: libparted/arch/beos.c:357 libparted/arch/gnu.c:287
+#: libparted/arch/linux.c:1556
+#, c-format
+msgid "Unable to open %s read-write (%s).  %s has been opened read-only."
+msgstr "Không mở được %s đọc-ghi (%s).  %s đã được mở ở tình trạng chỉ đọc."
+
+#: libparted/arch/beos.c:419 libparted/arch/linux.c:1714
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s trong khi tìm nơi để đọc trên %s"
+
+#: libparted/arch/beos.c:452 libparted/arch/gnu.c:465 libparted/arch/gnu.c:564
+#: libparted/arch/gnu.c:692 libparted/arch/linux.c:1674
+#: libparted/arch/linux.c:1755
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s trong khi đọc trên %s"
+
+#: libparted/arch/beos.c:488 libparted/arch/gnu.c:525
+#: libparted/arch/linux.c:1831
+#, c-format
+msgid "Can't write to %s, because it is opened read-only."
+msgstr "Không thể ghi nhớ vào %s, vì nó đã được mở ở tình trạng chỉ đọc."
+
+#: libparted/arch/beos.c:504 libparted/arch/linux.c:1856
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s trong khi tìm nơi để ghi trên %s"
+
+#: libparted/arch/beos.c:541 libparted/arch/gnu.c:601 libparted/arch/gnu.c:646
+#: libparted/arch/gnu.c:723 libparted/arch/linux.c:1804
+#: libparted/arch/linux.c:1898 libparted/arch/linux.c:1970
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s trong khi ghi trên %s"
+
+#: partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Hãy thử chạy câu lệnh trợ giúp « %s --help » để biết thêm thông tin.\n"
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr "Sử dụng: %s [TÙY_CHỌN] [THIẾT_BỊ]...\n"
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the operating system about partition table changes.\n"
+"\n"
+"  -d, --dry-run    do not actually inform the operating system\n"
+"  -s, --summary    print a summary of contents\n"
+"  -h, --help       display this help and exit\n"
+"  -v, --version    output version information and exit\n"
+msgstr ""
+"Báo hệ điều hành biết về thay đổi trong bảng phân vùng.\n"
+"\n"
+"  -d, --dry-run    chạy thực hành (không báo gì)\n"
+"  -s, --summary    in ra bản tóm tắt nội dung\n"
+"  -h, --help       hiển thị trợ giúp này, sau đó thoát\n"
+"  -v, --version    xuất thông tin về phiên bản, sau đó thoát\n"
+
+#: partprobe/partprobe.c:150
+msgid ""
+"\n"
+"When no DEVICE is given, probe all partitions.\n"
+msgstr ""
+"\n"
+"Không đưa ra THIẾT_BỊ thì thăm dò mọi phiên bản.\n"
+
+#: partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Gửi báo cáo lỗi tới <%s>.\n"
+
+#: libparted/arch/gnu.c:110
+#, c-format
+msgid "Unable to open %s."
+msgstr "Không thể mở %s."
+
+#: libparted/arch/gnu.c:130
+msgid "Unable to probe store."
+msgstr "Không thể thăm dò kho lưu trữ."
+
+#: libparted/arch/gnu.c:368
+msgid ""
+"The partition table cannot be re-read.  This means you need to reboot before "
+"mounting any modified partitions.  You also need to reinstall your boot "
+"loader before you reboot (which may require mounting modified partitions).  "
+"It is impossible do both things!  So you'll need to boot off a rescue disk, "
+"and reinstall your boot loader from the rescue disk.  Read section 4 of the "
+"Parted User documentation for more information."
+msgstr ""
+"Không đọc lại được bảng phân vùng, vì thế, cần khởi động lại trước khi gắn "
+"bất ký phân vùng đã sửa đổi nào.  Người dùng cũng cần cài đặt lại trình khởi "
+"động của mình trước khi khởi động lại (thao tác này có thể yêu cầu gắn phân "
+"vùng đã sửa đổi).  Không thể thực hiện cả hai thao tác !  Vì thế người dùng "
+"sẽ cần khởi động bẳng đĩa dự phòng, và cài đặt lại trình khởi động từ đó. "
+"Hãy đọc phần 4 của tài liệu hướng dẫn Người dùng Parted để biết thêm chi "
+"tiết."
+
+#: libparted/arch/gnu.c:385
+#, c-format
+msgid ""
+"The partition table on %s cannot be re-read (%s).  This means the Hurd knows "
+"nothing about any modifications you made.  You should reboot your computer "
+"before doing anything with %s."
+msgstr ""
+"Bảng phân vùng trên %s không đọc lại được (%s).  Có nghĩa là Hurd không biết "
+"gì về những thay đổi đã tạo ra.  Người dùng cần khởi động lại máy tính trước "
+"khi thực hiện bất kỳ thao tác nào với %s."
+
+#: libparted/arch/gnu.c:396 parted/parted.c:1967
+msgid ""
+"You should reinstall your boot loader before rebooting.  Read section 4 of "
+"the Parted User documentation for more information."
+msgstr ""
+"Cần cài đặt lại trình khởi động trước khi khởi động lại. Hãy đọc phần 4 của "
+"tài liệu hướng dẫn Người dùng Parted để biết thêm chi tiết."
+
+#: libparted/arch/gnu.c:788
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%s đang thử đồng bộ hoá %s với đĩa"
+
+#: libparted/arch/linux.c:520
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "Không thể lấy trạng thái về thiết bị %s — %s"
+
+#: libparted/arch/linux.c:577
+#, c-format
+msgid "Unable to determine the dm type of %s."
+msgstr "Không thể xác định kiểu dm của %s."
+
+#: libparted/arch/linux.c:669
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+"Không thể quyết định kích cỡ rãnh ghi đối với %s: %s\n"
+"nên dùng kích cỡ rãnh ghi mặc định (%lld)."
+
+#: libparted/arch/linux.c:690
+#, c-format
+msgid ""
+"Could not determine physical sector size for %s.\n"
+"Using the logical sector size (%lld)."
+msgstr ""
+"Không thể quyết định kích cỡ rãnh ghi vật lý đối với %s\n"
+"nên dùng kích cỡ rãnh ghi hợp lý (%lld)."
+
+#: libparted/arch/linux.c:746
+#, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "Không thể quyết định kích cỡ của %s (%s)."
+
+#: libparted/arch/linux.c:832
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "Không thể nhận diện thiết bị %s — %s"
+
+#: libparted/arch/linux.c:841
+msgid "Generic IDE"
+msgstr "IDE giống loài"
+
+#: libparted/arch/linux.c:862
+#, c-format
+msgid ""
+"Device %s has multiple (%d) logical sectors per physical sector.\n"
+"GNU Parted supports this EXPERIMENTALLY for some special disk label/file "
+"system combinations, e.g. GPT and ext2/3.\n"
+"Please consult the web site for up-to-date information."
+msgstr ""
+"Thiết bị %s có nhiều (%d) rãnh ghi hợp lý trên mỗi rãnh ghi vật lý.\n"
+"Chương trình GNU Parted hỗ trợ trường hợp này một cách VẪN THỰC NGHIỆM\n"
+"đối với một số tổ hợp nhãn đĩa/hệ thống tập tin, v.d. GPT và ext2/3.\n"
+"Hãy thăm trang chủ Web để tìm thông tin đã cập nhật."
+
+#: libparted/arch/linux.c:1039
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "Gặp lỗi khi sơ khởi thiết bị SCSI %s — %s"
+
+#: libparted/arch/linux.c:1103
+#, fuzzy, c-format
+msgid ""
+"The device %s is so small that it cannot possibly store a file system or "
+"partition table.  Perhaps you selected the wrong device?"
+msgstr ""
+"Thiết bị %s có chiều dài số không, và không thể cất giữ một hệ thống tập tin "
+"hay bảng phiên bản. Có thể bạn đã chọn nhầm thiết bị."
+
+#: libparted/arch/linux.c:1216
+#, c-format
+msgid ""
+"Unable to determine geometry of file/device %s.  You should not use Parted "
+"unless you REALLY know what you're doing!"
+msgstr ""
+"Không nhận ra cấu trúc hình học của tập tin/thiết bị %s.  Không được sử dụng "
+"Parted trừ khi THỰC SỰ biết mình đang làm gì!"
+
+#: libparted/arch/linux.c:1276
+msgid "Generic SD/MMC Storage Card"
+msgstr "Bo mạch lưu trữ SD/MMC giống loài"
+
+#: libparted/arch/linux.c:1329
+msgid "DAC960 RAID controller"
+msgstr "Bộ điều khiển RAID DAC960"
+
+#: libparted/arch/linux.c:1334
+msgid "Promise SX8 SATA Device"
+msgstr "Thiết bị SATA SX8 Promise"
+
+#: libparted/arch/linux.c:1339
+msgid "ATA over Ethernet Device"
+msgstr "ATA qua thiết bị Ethernet"
+
+#: libparted/arch/linux.c:1345
+msgid "IBM S390 DASD drive"
+msgstr "Ổ đĩa DASD S390 IBM"
+
+#: libparted/arch/linux.c:1351
+msgid "IBM iSeries Virtual DASD"
+msgstr "DASD Ảo iSeries IBM"
+
+#: libparted/arch/linux.c:1356
+msgid "Compaq Smart Array"
+msgstr "Mảng Khéo Compaq"
+
+#: libparted/arch/linux.c:1361
+msgid "ATARAID Controller"
+msgstr "Bộ điều khiển ATARAID"
+
+#: libparted/arch/linux.c:1366
+msgid "I2O Controller"
+msgstr "Bộ điều khiển I2O"
+
+#: libparted/arch/linux.c:1371
+msgid "User-Mode Linux UBD"
+msgstr "UBD Linux Chế độ Người dùng"
+
+#: libparted/arch/linux.c:1384
+#, c-format
+msgid "Linux device-mapper (%s)"
+msgstr "Bộ ánh xạ thiết bị Linux (%s)"
+
+#: libparted/arch/linux.c:1395
+msgid "Xen Virtual Block Device"
+msgstr "Thiết bị Khối Ảo Xen"
+
+#: libparted/arch/linux.c:1400
+msgid "Unknown"
+msgstr "Không rõ"
+
+#: libparted/arch/linux.c:1409
+msgid "Virtio Block Device"
+msgstr "Thiết bị khối Virtio"
+
+#: libparted/arch/linux.c:1414
+msgid "Linux Software RAID Array"
+msgstr "Mảng RAID phần mềm Linux"
+
+#: libparted/arch/linux.c:1421
+msgid "ped_device_new()  Unsupported device type"
+msgstr "ped_device_new()  Kiểu thiết bị không được hỗ trợ"
+
+#: libparted/arch/linux.c:1518 libparted/arch/linux.c:1590
+#, c-format
+msgid "Error fsyncing/closing %s: %s"
+msgstr "Lỗi fsync hay đóng %s: %s"
+
+#: libparted/arch/linux.c:1754
+#, c-format
+msgid "end of file while reading %s"
+msgstr "gặp kết thúc tập tin trong khi đọc %s"
+
+#: libparted/arch/linux.c:2390
+#, c-format
+msgid ""
+"Error informing the kernel about modifications to partition %s -- %s.  This "
+"means Linux won't know about any changes you made to %s until you reboot -- "
+"so you shouldn't mount it or use it in any way before rebooting."
+msgstr ""
+"Gặp lỗi khi cho hạt nhân biết về sự sửa đổi trong phân vùng %s — %s. Có "
+"nghĩa là Linux không biết về thay đổi nào bạn đã làm trong %s đến khi bạn "
+"khởi động lại, thì bạn không nên gắn kết nó hoặc sử dụng nó bằng cách nào cả "
+"trước khi khởi động lại."
+
+#: libparted/arch/linux.c:2528
+#, c-format
+msgid "Unable to determine the size and length of %s."
+msgstr "Không thể quyết định kích cỡ và chiều dài của %s."
+
+#: libparted/arch/linux.c:2553
+#, c-format
+msgid "Failed to add partition %d (%s)"
+msgstr "Không thêm được phân vùng %d (%s)"
+
+#: libparted/arch/linux.c:2580
+#, c-format
+msgid ""
+"Partition(s) %s on %s have been written, but we have been unable to inform "
+"the kernel of the change, probably because it/they are in use.  As a result, "
+"the old partition(s) will remain in use.  You should reboot now before "
+"making further changes."
+msgstr ""
+"(Các) phiên bản %s trên %s đã được ghi nhớ, nhưng mà không thể cho hạt nhân "
+"biết về thay đổi này, rất có thể vì phiên bản đó đang được sử dụng. Kết quả "
+"là (các) phiên bản cũ còn lại được sử dụng. Bạn nên khởi động lại ngay bây "
+"giờ mà không làm thay đổi thêm nào."
+
+#: libparted/arch/linux.c:2706
+#, c-format
+msgid ""
+"parted was unable to re-read the partition table on %s (%s).  This means "
+"Linux won't know anything about the modifications you made. "
+msgstr ""
+"Parted không đọc lại được bảng phân vùng trên %s (%s).  Có nghĩa là Linux sẽ "
+"không biết về những thay đổi đã tạo ra."
+
+#: libparted/cs/geom.c:161
+#, c-format
+msgid "Can't have the end before the start! (start sector=%jd length=%jd)"
+msgstr ""
+"Không thể có kết thúc đứng trước bắt đầu ! (bắt đầu rãnh_ghi=%jd chiều_dài="
+"%jd)"
+
+#: libparted/cs/geom.c:169
+msgid "Can't have a partition outside the disk!"
+msgstr "Không thể có phân vùng nằm ngoài đĩa !"
+
+#: libparted/cs/geom.c:384
+#, c-format
+msgid "Attempt to write sectors %ld-%ld outside of partition on %s."
+msgstr "Cố ghi các rãnh ghi %ld-%ld nằm ngoài phân vùng trên %s."
+
+#: libparted/cs/geom.c:424
+msgid "checking for bad blocks"
+msgstr "đang kiểm tra tìm khối hỏng"
+
+#: libparted/debug.c:96
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr "Truy ngược có %d lời gọi trên đống:\n"
+
+#: libparted/debug.c:109
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr "Khẳng định (%s) tại %s:%d trong hàm %s() bị lỗi."
+
+#: libparted/disk.c:192
+#, c-format
+msgid "%s: unrecognised disk label"
+msgstr "%s: không nhận ra nhãn đĩa"
+
+#: libparted/disk.c:484
+#, c-format
+msgid ""
+"This libparted doesn't have write support for %s.  Perhaps it was compiled "
+"read-only."
+msgstr ""
+"Thư viện libparted này không hỗ trợ ghi vào %s.  Có thể đã biên dịch nó chỉ "
+"đọc."
+
+#: libparted/disk.c:629
+#, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "Phân vùng %d là %s, nhưng hệ thống tập tin là %s."
+
+#: libparted/disk.c:838
+msgid "cylinder_alignment"
+msgstr "cylinder_alignment"
+
+#: libparted/disk.c:844
+#, c-format
+msgid "Unknown disk flag, %d."
+msgstr "Không nhận ra cờ đĩa, %d."
+
+#: libparted/disk.c:1283
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "Nhãn đĩa %s không hỗ trợ phiên bản mở rộng."
+
+#: libparted/disk.c:1858
+#, c-format
+msgid "%s disk labels don't support logical or extended partitions."
+msgstr "Nhãn đĩa %s không hỗ trợ phiên bản kiểu mở rộng hay hợp lý."
+
+#: libparted/disk.c:1871
+msgid "Too many primary partitions."
+msgstr "Quá nhiều phân vùng chính."
+
+#: libparted/disk.c:1880
+#, c-format
+msgid ""
+"Can't add a logical partition to %s, because there is no extended partition."
+msgstr ""
+"Không thể thêm vào %s một phân vùng hợp lý, vì không có phân vùng mở rộng."
+
+#: libparted/disk.c:1904
+#, c-format
+msgid "Can't have more than one extended partition on %s."
+msgstr "Không cho phép nhiều hơn một phân vùng mở rộng trên %s."
+
+#: libparted/disk.c:1914
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr "Không cho phép phân vùng hợp lý nằm ngoài phân vùng mở rộng."
+
+#: libparted/disk.c:1939
+#, c-format
+msgid "Can't have a logical partition outside of the extended partition on %s."
+msgstr "Không cho phép phân vùng hợp lý nằm ngoài phân vùng mở rộng trên %s."
+
+#: libparted/disk.c:1949 libparted/disk.c:2008 libparted/disk.c:2186
+msgid "Can't have overlapping partitions."
+msgstr "Không cho phép các phân vùng chồng chéo lên nhau."
+
+#: libparted/disk.c:1957
+msgid "Can't have a primary partition inside an extended partition."
+msgstr "Không cho phép phân vùng chính nằm trong phân vùng mở rộng."
+
+#: libparted/disk.c:2387
+msgid "metadata"
+msgstr "siêu dữ liệu"
+
+#: libparted/disk.c:2389
+msgid "free"
+msgstr "trống"
+
+#: libparted/disk.c:2391 parted/ui.c:1194 parted/ui.c:1222
+msgid "extended"
+msgstr "mở rộng"
+
+#: libparted/disk.c:2393 parted/ui.c:1198 parted/ui.c:1226
+msgid "logical"
+msgstr "hợp lý"
+
+#: libparted/disk.c:2395 parted/ui.c:1190 parted/ui.c:1218
+msgid "primary"
+msgstr "chính"
+
+#: libparted/disk.c:2411
+msgid "boot"
+msgstr "khởi động"
+
+#: libparted/disk.c:2413
+msgid "bios_grub"
+msgstr "bios_grub"
+
+#: libparted/disk.c:2415
+msgid "root"
+msgstr "gốc"
+
+#: libparted/disk.c:2417
+msgid "swap"
+msgstr "trao đổi"
+
+#: libparted/disk.c:2419
+msgid "hidden"
+msgstr "ẩn"
+
+#: libparted/disk.c:2421
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2423
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2425
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2427
+msgid "hp-service"
+msgstr "dịch vụ HP"
+
+#: libparted/disk.c:2429
+msgid "palo"
+msgstr "palo"
+
+#: libparted/disk.c:2431
+msgid "prep"
+msgstr "chuẩn bị"
+
+#: libparted/disk.c:2433
+msgid "msftres"
+msgstr "msftres"
+
+#: libparted/disk.c:2435
+msgid "atvrecv"
+msgstr "atvrecv"
+
+#: libparted/disk.c:2437
+msgid "diag"
+msgstr "chéo"
+
+#: libparted/disk.c:2439
+msgid "legacy_boot"
+msgstr ""
+
+#: libparted/disk.c:2445
+#, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Không nhận ra cờ phân vùng, %d."
+
+#: libparted/exception.c:77
+msgid "Information"
+msgstr "Thông tin"
+
+#: libparted/exception.c:78
+msgid "Warning"
+msgstr "Cảnh báo"
+
+#: libparted/exception.c:79
+msgid "Error"
+msgstr "Lỗi"
+
+#: libparted/exception.c:80
+msgid "Fatal"
+msgstr "Nghiêm trọng"
+
+#: libparted/exception.c:81
+msgid "Bug"
+msgstr "Lỗi"
+
+#: libparted/exception.c:82
+msgid "No Implementation"
+msgstr "Không thi hành"
+
+#: libparted/exception.c:86
+msgid "Fix"
+msgstr "Sửa"
+
+#: libparted/exception.c:87
+msgid "Yes"
+msgstr "Có"
+
+#: libparted/exception.c:88
+msgid "No"
+msgstr "Không"
+
+#: libparted/exception.c:89
+msgid "OK"
+msgstr "OK"
+
+#: libparted/exception.c:90
+msgid "Retry"
+msgstr "Thử lại"
+
+#: libparted/exception.c:91
+msgid "Ignore"
+msgstr "Bỏ qua"
+
+#: libparted/exception.c:92
+msgid "Cancel"
+msgstr "Thôi"
+
+#: libparted/exception.c:132
+#, fuzzy, c-format
+msgid ""
+"A bug has been detected in GNU Parted.  Refer to the web site of parted "
+"http://www.gnu.org/software/parted/parted.html for more information of what "
+"could be useful for bug submitting!  Please email a bug report to %s "
+"containing at least the version (%s) and the following message:  "
+msgstr ""
+"Phát hiện ra một lỗi trong GNU parted. Hãy thăm trang chủ Web của parted "
+"(http://www.gnu.org/software/parted/parted.html) để biết thêm về thông tin "
+"thích hợp với báo cáo lỗi. Xin hãy gửi thư thông báo tới <bug-parted@gnu."
+"org> kèm theo ít nhất phiên bản (%s) và thông tin sau :"
+
+#: libparted/labels/aix.c:103
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr "Chưa thực hiện hỗ trợ đọc nhãn đĩa AIX."
+
+#: libparted/labels/aix.c:114
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr "Chưa thực hiện hỗ trợ ghi nhãn đĩa AIX."
+
+#: libparted/labels/aix.c:127
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr "Chưa thực hiện hỗ trợ thêm phân vùng vào nhãn đĩa AIX."
+
+#: libparted/labels/aix.c:137
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr "Chưa thực hiện hỗ trợ nhân đôi phân vùng trong nhãn đĩa AIX."
+
+#: libparted/labels/aix.c:155
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr ""
+"Chưa thực hiện hỗ trợ đặt loại hệ thống của phân vùng trong nhãn đĩa AIX."
+
+#: libparted/labels/aix.c:165
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr "Chưa thực hiện hỗ trợ đặt cờ trong nhãn đĩa AIX."
+
+#: libparted/labels/bsd.c:571 libparted/labels/dasd.c:833
+#: libparted/labels/dos.c:2176 libparted/labels/dvh.c:787
+#: libparted/labels/gpt.c:1782 libparted/labels/loop.c:247
+#: libparted/labels/mac.c:1426 libparted/labels/pc98.c:748
+#: libparted/labels/rdb.c:1052 libparted/labels/sun.c:780
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "Không thể thoả mọi ràng buộc trên phân vùng."
+
+#: libparted/labels/bsd.c:596
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "Không thể cấp phát một khe nhãn đĩa sai."
+
+#: libparted/labels/dasd.c:859
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "Không thể cấp phát một khe nhãn đĩa DASD"
+
+#: libparted/labels/dos.c:966
+#, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr "Gặp bảng phân vùng sai trên %s -- chữ ký không đúng %x."
+
+#: libparted/labels/dos.c:994
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "Bảng phân vùng sai -- phiên bản đệ quy trên %s."
+
+#: libparted/labels/dos.c:1504
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr "Phân vùng mở rộng không thể bị ẩn trên nhãn đĩa MSDOS."
+
+#: libparted/labels/dos.c:2158
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+"Parted không thể thay đổi kích cỡ của phân vùng bị Windows Dynamic Disk quản "
+"lý."
+
+#: libparted/labels/dvh.c:200
+#, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr "%s không có phân vùng mở rộng (phân vùng phần đầu của khối tin)."
+
+#: libparted/labels/dvh.c:326
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr "Sai kiểm tổng (checksum) thì bảng phân vùng bị hỏng."
+
+#: libparted/labels/dvh.c:631
+msgid "Only primary partitions can be root partitions."
+msgstr "Chỉ phân vùng chính có thể là phân vùng gốc."
+
+#: libparted/labels/dvh.c:645
+msgid "Only primary partitions can be swap partitions."
+msgstr "Chỉ phân vùng chính có thể là phân vùng trao đổi."
+
+#: libparted/labels/dvh.c:659
+msgid "Only logical partitions can be a boot file."
+msgstr "Chỉ phân vùng hợp lý có thể là một tập tin khởi động."
+
+#: libparted/labels/dvh.c:736
+#, c-format
+msgid ""
+"failed to set dvh partition name to %s:\n"
+"Only logical partitions (boot files) have a name."
+msgstr ""
+"lỗi đặt tên phân vùng DVH thành %s:\n"
+"Chỉ phân vùng lôgíc (tập tin khởi động) có một tên."
+
+#: libparted/labels/dvh.c:829
+msgid "Too many primary partitions"
+msgstr "Quá nhiều phân vùng chính"
+
+#: libparted/labels/fdasd.c:98
+msgid "open error"
+msgstr "lỗi mở"
+
+#: libparted/labels/fdasd.c:101
+msgid "seek error"
+msgstr "lỗi tìm nơi"
+
+#: libparted/labels/fdasd.c:104
+msgid "read error"
+msgstr "lỗi đọc"
+
+#: libparted/labels/fdasd.c:110
+msgid "ioctl() error"
+msgstr "lỗi ioctl()"
+
+#: libparted/labels/fdasd.c:114
+msgid "API version mismatch"
+msgstr "Phiên bản API không tương ứng"
+
+#: libparted/labels/fdasd.c:118
+msgid "Unsupported disk type"
+msgstr "Loại đĩa không được hỗ trợ"
+
+#: libparted/labels/fdasd.c:122
+msgid "Unsupported disk format"
+msgstr "Định dạng đĩa không được hỗ trợ"
+
+#: libparted/labels/fdasd.c:126
+msgid "Disk is in use"
+msgstr "Đĩa đang được sử dụng"
+
+#: libparted/labels/fdasd.c:130
+msgid "Syntax error in config file"
+msgstr "Gặp lỗi cú pháp trong tập tin cấu hình"
+
+#: libparted/labels/fdasd.c:134
+msgid "Volume label is corrupted"
+msgstr "Nhãn khối tin bị hỏng"
+
+#: libparted/labels/fdasd.c:138
+msgid "A data set name is corrupted"
+msgstr "Một tên tập hợp dữ liệu bị hỏng"
+
+#: libparted/labels/fdasd.c:142
+msgid "Memory allocation failed"
+msgstr "Lỗi cấp phát bộ nhớ"
+
+#: libparted/labels/fdasd.c:146
+msgid "Device verification failed"
+msgstr "Lỗi thẩm tra thiết bị"
+
+#: libparted/labels/fdasd.c:147
+msgid "The specified device is not a valid DASD device"
+msgstr "Thiết bị đã ghi rõ không phải là một thiết bị DASD hợp lệ"
+
+#: libparted/labels/fdasd.c:150 libparted/labels/vtoc.c:179
+msgid "Fatal error"
+msgstr "Lỗi nghiêm trọng"
+
+#: libparted/labels/fdasd.c:226
+msgid "No room for volume label."
+msgstr "Không còn chỗ trống cho nhãn khối tin."
+
+#: libparted/labels/fdasd.c:234
+msgid "No room for partition info."
+msgstr "không có chỗ trống cho thông tin về phiên bản."
+
+#: libparted/labels/fdasd.c:709
+msgid "Invalid VTOC."
+msgstr "VTOC không hợp lệ."
+
+#: libparted/labels/fdasd.c:766
+msgid "Could not retrieve API version."
+msgstr "Không thể lấy phiên bản API."
+
+#: libparted/labels/fdasd.c:769
+#, c-format
+msgid ""
+"The current API version '%d' doesn't match dasd driver API version '%d'!"
+msgstr ""
+"Phiên bản API hiện thời « %d » không tương ứng với phiên bản API trình điều "
+"khiển DASD « %d » !"
+
+#: libparted/labels/fdasd.c:806
+msgid "Could not retrieve disk geometry information."
+msgstr "Không thể lấy thông tin về cấu trúc hình học của đĩa."
+
+#: libparted/labels/fdasd.c:810
+msgid "Could not retrieve blocksize information."
+msgstr "Không thể lấy thông tin về kích cỡ khối."
+
+#: libparted/labels/fdasd.c:815
+msgid "Could not retrieve disk information."
+msgstr "Không thể lấy thông tin về đĩa."
+
+#: libparted/labels/gpt.c:493
+#, c-format
+msgid ""
+"%s contains GPT signatures, indicating that it has a GPT table.  However, it "
+"does not have a valid fake msdos partition table, as it should.  Perhaps it "
+"was corrupted -- possibly by a program that doesn't understand GPT partition "
+"tables.  Or perhaps you deleted the GPT table, and are now using an msdos "
+"partition table.  Is this a GPT partition table?"
+msgstr ""
+"%s chứa chữ ký GPT, chỉ ra nó có bảng GPT.  Tuy nhiên, nó không có một bảng "
+"phân vùng giả msdos cần thiết.  Có thể nó đã bị làm hỏng bởi một chương "
+"trình không hiểu bảng phân vùng GPT.  Hoặc có thể người dùng đã xoá bảng "
+"GPT, và bây giờ đang sử dụng một bảng phân vùng msdos.  Đây có phải là một "
+"bảng phân vùng GPT?"
+
+#: libparted/labels/gpt.c:693
+#, fuzzy, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise.  Please report this!"
+msgstr ""
+"Định dạng của bảng phân vùng GPT có phiên bản %x, mới hơn so với phiên bản "
+"Parted có thể nhận ra.  Xin hãy cho chúng tôi biết!  <bug-parted@gnu.org>"
+
+#: libparted/labels/gpt.c:740
+#, c-format
+msgid ""
+"Not all of the space available to %s appears to be used, you can fix the GPT "
+"to use all of the space (an extra %llu blocks) or continue with the current "
+"setting? "
+msgstr ""
+"Không phải toàn bộ sức chứa sẵn sàng cho %s hình như được sử dụng. Người "
+"dùng có thể sửa GPT để sử dụng toàn bộ sức chứa (%llu khối bổ sung) hoặc "
+"tiếp tục với thiết lập hiện thời."
+
+#: libparted/labels/gpt.c:952
+msgid ""
+"The backup GPT table is not at the end of the disk, as it should be.  This "
+"might mean that another operating system believes the disk is smaller.  Fix, "
+"by moving the backup to the end (and removing the old backup)?"
+msgstr ""
+"Bảng GPT sao lưu không nằm tại cuối đĩa như yêu cầu.  Có nghĩa là hệ điều "
+"hành khác sẽ thấy đĩa nhỏ hơn thông thường.  Sửa bằng cách di chuyển sao lưu "
+"tới cuối (và xóa bỏ sao lưu cũ)?"
+
+#: libparted/labels/gpt.c:976
+msgid ""
+"Both the primary and backup GPT tables are corrupt.  Try making a fresh "
+"table, and using Parted's rescue feature to recover partitions."
+msgstr ""
+"Cả bảng GPT chính và sao lưu đều hỏng.  Hãy thử tạo một bảng mới, và sử dụng "
+"tính năng cứu nguy của Parted để phục hồi các phân vùng."
+
+#: libparted/labels/gpt.c:987
+msgid ""
+"The backup GPT table is corrupt, but the primary appears OK, so that will be "
+"used."
+msgstr ""
+"Bảng GPT sao lưu bị hỏng, nhưng bảng chính hình như vẫn tốt, vì thế sẽ sử "
+"dụng bảng chính."
+
+#: libparted/labels/gpt.c:999
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr ""
+"Bảng GPT chính bị hỏng, nhưng sao lưu hình như vẫn tốt, vì thế sẽ sử dụng "
+"sao lưu."
+
+#: libparted/labels/gpt.c:1023
+msgid "primary partition table array CRC mismatch"
+msgstr "sai khớp CRC mảng bảng phân vùng chính"
+
+#: libparted/labels/mac.c:184
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Chữ ký sai %x đối với nhãn đĩa Mac."
+
+#: libparted/labels/mac.c:231
+msgid "Partition map has no partition map entry!"
+msgstr "Sơ đồ phân vùng không có mục nhập sơ đồ phân vùng !"
+
+#: libparted/labels/mac.c:279
+#, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr "%s quá nhỏ cho một nhãn đĩa Mac !"
+
+#: libparted/labels/mac.c:508
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "Phân vùng %d có một chữ ký sai %x."
+
+#: libparted/labels/mac.c:526
+#, c-format
+msgid "Partition %d has an invalid length of 0 bytes!"
+msgstr "Phân vùng %d có chiều dài sai 0 byte !"
+
+#: libparted/labels/mac.c:557
+msgid "The data region doesn't start at the start of the partition."
+msgstr "Vùng dữ liệu không bắt đầu ở đầu của phân vùng."
+
+#: libparted/labels/mac.c:574
+msgid "The boot region doesn't start at the start of the partition."
+msgstr "Vùng khởi động không bắt đầu ở đầu của phân vùng."
+
+#: libparted/labels/mac.c:588
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr "Vùng khởi động của phân vùng không chiếm toàn bộ phân vùng."
+
+#: libparted/labels/mac.c:599
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr "Vùng dữ liệu của phân vùng không chiếm toàn bộ phân vùng."
+
+#: libparted/labels/mac.c:652
+#, c-format
+msgid ""
+"Weird block size on device descriptor: %d bytes is not divisible by 512."
+msgstr ""
+"Kích thước khối kỳ lạ trên mô tả thiết bị: %d byte không chia hết cho 512."
+
+#: libparted/labels/mac.c:665
+#, c-format
+msgid ""
+"The driver descriptor says the physical block size is %d bytes, but Linux "
+"says it is %d bytes."
+msgstr ""
+"Mô tả của trình điều khiển cho biết kích thước khối là %d byte, nhưng Linux "
+"nói nó %d byte."
+
+#: libparted/labels/mac.c:719
+msgid "No valid partition map found."
+msgstr "Không tìm thấy sơ đồ phân vùng hợp lệ."
+
+#: libparted/labels/mac.c:780
+#, c-format
+msgid ""
+"Conflicting partition map entry sizes!  Entry 1 says it is %d, but entry %d "
+"says it is %d!"
+msgstr ""
+"Xung đột kích thước mục sơ đồ phân vùng !  Mục 1 nói là %d, nhưng mục %d nói "
+"là %d !"
+
+#: libparted/labels/mac.c:811
+msgid "Weird!  There are 2 partitions map entries!"
+msgstr "Kỳ lạ - có hai mục sơ đồ phân vùng !"
+
+#: libparted/labels/mac.c:1357
+msgid ""
+"Changing the name of a root or swap partition will prevent Linux from "
+"recognising it as such."
+msgstr ""
+"Thay đổi tên của một phân vùng gốc hay trao đổi sẽ khiến Linux không nhận ra "
+"chúng như trước."
+
+#: libparted/labels/mac.c:1461
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr "Không thêm được phân vùng bổ sung - sơ đồ phân vùng quá nhỏ !"
+
+#: libparted/labels/pc98.c:331
+#, c-format
+msgid "Invalid partition table on %s."
+msgstr "Bảng phân vùng sai trên %s."
+
+#: libparted/labels/pc98.c:384 libparted/labels/pc98.c:462
+#, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries.  This is still "
+"unsupported."
+msgstr ""
+"Phân vùng %d không sắp hàng với biên trụ. Trường hợp này vẫn còn không được "
+"hỗ trợ."
+
+#: libparted/labels/pc98.c:780
+msgid "Can't add another partition."
+msgstr "Không thêm được phân vùng bổ sung."
+
+#: libparted/labels/pt-tools.c:125
+#, c-format
+msgid ""
+"partition length of %jd sectors exceeds the %s-partition-table-imposed "
+"maximum of %jd"
+msgstr ""
+"chiều dài phân vùng %1$jd vượt quá chiều dài tối đa %3$jd bị bảng phân vùng "
+"%2$s ép buộc"
+
+#: libparted/labels/pt-tools.c:138
+#, c-format
+msgid ""
+"starting sector number, %jd exceeds the %s-partition-table-imposed maximum "
+"of %jd"
+msgstr ""
+"bắt đầu ở số thứ tự rãnh ghi, %1$jd vượt quá chiều dài tối đa %3$jd bị bảng "
+"phân vùng %2$s ép buộc"
+
+#: libparted/labels/rdb.c:169
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr "%s: Sai kiểm tổng (checksum) trên khối %llu có loại %s."
+
+#: libparted/labels/rdb.c:484
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr "%s: Không tìm thấy khối rdb, không bao giờ nên xảy ra."
+
+#: libparted/labels/rdb.c:573
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr "%s: Phát hiện vòng lặp tại khối %d."
+
+#: libparted/labels/rdb.c:592
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr "%s: Danh sách %s hình như sai tại khối %s."
+
+#: libparted/labels/rdb.c:691
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr "%s: Lỗi liệt kê các khối sai."
+
+#: libparted/labels/rdb.c:699
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr "%s: Lỗi liệt kê các khối phân vùng."
+
+#: libparted/labels/rdb.c:707
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr "%s: Lỗi liệt kê các khối hệ thống tập tin."
+
+#: libparted/labels/rdb.c:715
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr "%s: Lỗi liệt kê các khối khởi động."
+
+#: libparted/labels/rdb.c:742
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr "Lỗi ghi khối phân vùng tại %d."
+
+#: libparted/labels/rdb.c:1080
+msgid "Unable to allocate a partition number."
+msgstr "Không thể cấp phát một số thứ tự phân vùng."
+
+#: libparted/labels/sun.c:161
+msgid "Corrupted Sun disk label detected."
+msgstr "Nhận ra một nhãn đĩa Sun bị hỏng."
+
+#: libparted/labels/sun.c:276
+#, c-format
+msgid ""
+"The disk CHS geometry (%d,%d,%d) reported by the operating system does not "
+"match the geometry stored on the disk label (%d,%d,%d)."
+msgstr ""
+"Cấu trúc hình học CHS của đĩa (%d,%d,%d) được hệ điều hành thông báo không "
+"tương ứng cấu trúc chứa trong nhãn đĩa (%d,%d,%d)."
+
+#: libparted/labels/sun.c:298
+#, c-format
+msgid "The disk label describes a disk bigger than %s."
+msgstr "Nhãn đĩa mô tả một đĩa lớn hơn %s."
+
+#: libparted/labels/sun.c:473
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr "Đĩa có %d trụ, mà lớn hơn số tối đa 65536."
+
+#: libparted/labels/sun.c:812
+msgid ""
+"The Whole Disk partition is the only available one left.  Generally, it is "
+"not a good idea to overwrite this partition with a real one.  Solaris may "
+"not be able to boot without it, and SILO (the sparc boot loader) appreciates "
+"it as well."
+msgstr ""
+"Phân vùng Toàn bộ Đĩa (Whole Disk) là phân vùng sẵn sàng còn lại duy nhất.  "
+"Nói chung, không nên ghi chèn phân vùng này bằng một phân vùng thực sự.  "
+"Solaris có thể sẽ không khởi động khi không có nó, và SILO (trình khởi động "
+"sparc) cũng cần phân vùng này."
+
+#: libparted/labels/sun.c:827
+msgid "Sun disk label is full."
+msgstr "Nhán đĩa Sun đầy."
+
+#: libparted/labels/vtoc.c:164
+msgid "opening of device failed"
+msgstr "lỗi mở thiết bị"
+
+#: libparted/labels/vtoc.c:168
+msgid "seeking on device failed"
+msgstr "lỗi tìm nơi trên thiết bị"
+
+#: libparted/labels/vtoc.c:172
+msgid "writing to device failed"
+msgstr "lỗi ghi vào thiết bị"
+
+#: libparted/labels/vtoc.c:176
+msgid "reading from device failed"
+msgstr "lỗi đọc từ thiết bị"
+
+#: libparted/labels/vtoc.c:299 libparted/labels/vtoc.c:308
+#: libparted/labels/vtoc.c:329 libparted/labels/vtoc.c:336
+msgid "Could not read volume label."
+msgstr "Không thể đọc nhãn khối tin."
+
+#: libparted/labels/vtoc.c:356 libparted/labels/vtoc.c:363
+msgid "Could not write volume label."
+msgstr "Không thể ghi nhãn khối tin."
+
+#: libparted/labels/vtoc.c:469
+msgid "Could not read VTOC labels."
+msgstr "Không thể đọc các nhãn VTOC."
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr "Không thể đọc VTOC FMT1 DSCB."
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr "Không thể đọc VTOC FMT4 DSCB."
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr "Không thể đọc VTOC FMT5 DSCB."
+
+#: libparted/labels/vtoc.c:496
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr "Không thể đọc VTOC FMT7 DSCB."
+
+#: libparted/labels/vtoc.c:516
+msgid "Could not write VTOC labels."
+msgstr "Không thể ghi nhãn VTOC."
+
+#: libparted/labels/vtoc.c:522
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr "Không thể ghi VTOC FMT1 DSCB."
+
+#: libparted/labels/vtoc.c:529
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr "Không thể ghi VTOC FMT4 DSCB."
+
+#: libparted/labels/vtoc.c:536
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr "Không thể ghi VTOC FMT5 DSCB."
+
+#: libparted/labels/vtoc.c:543
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr "Không thể ghi VTOC FMT7 DSCB."
+
+#: libparted/libparted.c:230 libparted/libparted.c:245
+msgid "Out of memory."
+msgstr "Không đủ bộ nhớ."
+
+#: libparted/unit.c:138
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr "Không thể lấy kích cỡ đơn vị cho đơn vị đặc biệt « COMPACT »."
+
+#: libparted/unit.c:384
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr "« %s » sai cú pháp đối với vị trí."
+
+#: libparted/unit.c:392
+#, c-format
+msgid "The maximum head value is %d."
+msgstr "Giá trị đầu tối đa là %d."
+
+#: libparted/unit.c:399
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr "Giá trị rãnh ghi tối đa là %d."
+
+#: libparted/unit.c:411 libparted/unit.c:556
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr "Vị trí %s nằm ngoài thiết bị %s."
+
+#: libparted/unit.c:531
+msgid "Invalid number."
+msgstr "Con số không hợp lệ."
+
+#: libparted/fs/amiga/affs.c:62 libparted/fs/amiga/apfs.c:55
+#: libparted/fs/amiga/asfs.c:69
+#, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "%s: Lỗi cấp phát khối phân vùng\n"
+
+#: libparted/fs/amiga/affs.c:77 libparted/fs/amiga/apfs.c:68
+#: libparted/fs/amiga/asfs.c:81
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr "%s: Lỗi cấp phát khối.\n"
+
+#: libparted/fs/amiga/affs.c:82 libparted/fs/amiga/apfs.c:73
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr "%s: Không thể đọc khối khởi động %llu\n"
+
+#: libparted/fs/amiga/affs.c:98 libparted/fs/amiga/apfs.c:84
+#: libparted/fs/amiga/asfs.c:87 libparted/fs/amiga/asfs.c:101
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr "%s: Không thể đọc khối khởi động %llu\n"
+
+#: libparted/fs/amiga/amiga.c:71
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr "%s: Lỗi cấp phát phần tử danh sách mã số\n"
+
+#: libparted/fs/amiga/amiga.c:188
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr "%s: Không thể đọc khối %llu\n"
+
+#: libparted/fs/amiga/amiga.c:201
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr "%s: Sai kiểm tổng (checksum) trên khối %llu có loại %s\n"
+
+#: libparted/fs/amiga/amiga.c:211
+#, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s: Không thể ghi khối %d\n"
+
+#: libparted/fs/amiga/amiga.c:277
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr "%s: Lỗi cấp phát khối rdb disk_specific (đặc trưng cho đĩa)\n"
+
+#: libparted/fs/amiga/amiga.c:288
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr "%s: Không tìm thấy khối rdb, không bao giờ nên xảy ra\n"
+
+#: libparted/fs/amiga/amiga.c:317
+#, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr "%s: Lỗi đọc khối phân vùng %llu\n"
+
+#: libparted/fs/fat/fat.c:174
+msgid ""
+"GNU Parted was miscompiled: the FAT boot sector should be 512 bytes.  FAT "
+"support will be disabled."
+msgstr ""
+"GNU Parted bị biên dịch sai: rãnh ghi khởi động FAT nên là 512 byte. Vì thế "
+"tắt hỗ trợ FAT."
+
+#: libparted/fs/fat/bootsector.c:49 libparted/fs/fat/bootsector.c:56
+msgid "File system has an invalid signature for a FAT file system."
+msgstr "Hệ thống tập tin có chữ ký sai cho hệ thống tập tin kiểu FAT."
+
+#: libparted/fs/fat/bootsector.c:64
+msgid "File system has an invalid sector size for a FAT file system."
+msgstr ""
+"Hệ thống tập tin có kích thước rãnh ghi sai cho hệ thống tập tin kiểu FAT."
+
+#: libparted/fs/fat/bootsector.c:71
+msgid "File system has an invalid cluster size for a FAT file system."
+msgstr "Hệ thống tập tin có kích thước chùm sai cho hệ thống tập tin kiểu FAT."
+
+#: libparted/fs/fat/bootsector.c:78
+msgid ""
+"File system has an invalid number of reserved sectors for a FAT file system."
+msgstr ""
+"Hệ thống tập tin có số rãnh ghi dự trữ sai cho hệ thống tập tin kiểu FAT."
+
+#: libparted/fs/fat/bootsector.c:85
+msgid "File system has an invalid number of FATs."
+msgstr "Hệ thống tập tin có số FAT sai."
+
+#: libparted/fs/fat/bootsector.c:156
+#, c-format
+msgid ""
+"This file system has a logical sector size of %d.  GNU Parted is known not "
+"to work properly with sector sizes other than 512 bytes."
+msgstr ""
+"Hệ thống tập tin có kích thước rãnh ghi hợp lý là %d.  GNU Parted không làm "
+"việc chính xác với kích thước rãnh ghi khác 512 byte."
+
+#: libparted/fs/fat/bootsector.c:181
+#, c-format
+msgid ""
+"The file system's CHS geometry is (%d, %d, %d), which is invalid.  The "
+"partition table's CHS geometry is (%d, %d, %d).  If you select Ignore, the "
+"file system's CHS geometry will be left unchanged.  If you select Fix, the "
+"file system's CHS geometry will be set to match the partition table's CHS "
+"geometry."
+msgstr ""
+"Cấu trúc hình học CHS của hệ thống tập tin là (%d, %d, %d) mà sai. Cấu trúc "
+"hình học CHS của bảng phân vùng là (%d, %d, %d). Nếu người dùng chọn « Bỏ "
+"qua » thì không thay đổi cấu trúc hình học CHS của hệ thống tập tin. Chọn « "
+"Sửa » thì cấu trúc hình học CHS của hệ thống tập tin được đặt để tương ứng "
+"với cấu trúc hình học CHS của bảng phân vùng."
+
+#: libparted/fs/fat/bootsector.c:230
+msgid "FAT boot sector says logical sector size is 0.  This is weird. "
+msgstr "Rãnh ghi khởi động FAT nói kích thước rãnh ghi hợp lý là 0.  Kỳ lạ. "
+
+#: libparted/fs/fat/bootsector.c:236
+msgid "FAT boot sector says there are no FAT tables.  This is weird. "
+msgstr "Rãnh ghi khởi động FAT nói không có bảng FAT.  Kỳ lạ. "
+
+#: libparted/fs/fat/bootsector.c:242
+msgid "FAT boot sector says clusters are 0 sectors.  This is weird. "
+msgstr "Rãnh ghi khởi động FAT nói chùm là 0 rãnh ghi.  Kỳ lạ. "
+
+#: libparted/fs/fat/bootsector.c:252
+msgid "File system is FAT12, which is unsupported."
+msgstr "Hệ thống tập tin là FAT12, mà không được hỗ trợ."
+
+#: libparted/fs/fat/bootsector.c:428
+#, c-format
+msgid ""
+"The information sector has the wrong signature (%x).  Select cancel for now, "
+"and send in a bug report.  If you're desperate, it's probably safe to ignore."
+msgstr ""
+"Rãnh ghi thông tin có chữ ký sai (%x).  Hãy chọn « Thôi », và gửi một báo "
+"cáo lỗi.  Nếu liều lĩnh, thì có thể lờ đi."
+
+#: libparted/fs/linux_swap/linux_swap.c:247
+#, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "Chữ ký trao đổi linux kiểu cũ không nhận ra « %10s »."
+
+#: libparted/fs/linux_swap/linux_swap.c:290
+#, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "Chữ ký trao đổi linux kiểu mới không nhận ra « %10s »."
+
+#: libparted/fs/linux_swap/linux_swap.c:330
+#, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Chữ ký trao đổi linux swsusp không nhận ra « %9s »."
+
+#: libparted/fs/hfs/probe.c:50
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to "
+"%d bytes."
+msgstr ""
+"Parted không dùng được hệ thống tập tin HFS trên đĩa có kích cỡ rãnh ghi "
+"khác %d byte."
+
+#: parted/parted.c:123
+msgid "displays this help message"
+msgstr "hiển thị trợ giúp này"
+
+#: parted/parted.c:124
+msgid "lists partition layout on all block devices"
+msgstr "liệt kê bố trí phân vùng trên mọi thiết bị khối"
+
+#: parted/parted.c:125
+msgid "displays machine parseable output"
+msgstr "hiển thị kết xuất cho máy phân tích được"
+
+#: parted/parted.c:126
+msgid "never prompts for user intervention"
+msgstr "không bao giờ nhắc người dùng làm gì"
+
+#: parted/parted.c:127
+msgid "displays the version"
+msgstr "hiển thị phiên bản"
+
+#: parted/parted.c:128
+msgid "alignment for new partitions"
+msgstr "sắp hàng các phân vùng mới"
+
+#: parted/parted.c:140
+msgid ""
+"NUMBER is the partition number used by Linux.  On MS-DOS disk labels, the "
+"primary partitions number from 1 to 4, logical partitions from 5 onwards.\n"
+msgstr ""
+"SỐ là số thứ tự phân vùng sử dụng bởi Linux.  Trên nhãn đĩa MS-DOS, các phân "
+"vùng chính có số từ 1 đến 4, và phân vùng hợp lý từ 5 trở đi.\n"
+
+#: parted/parted.c:143
+msgid "LABEL-TYPE is one of: "
+msgstr "KIỂU_NHÃN là một trong số : "
+
+#: parted/parted.c:144
+msgid "FLAG is one of: "
+msgstr "CỜ là một trong số : "
+
+#: parted/parted.c:145
+msgid "UNIT is one of: "
+msgstr "ĐƠN_VỊ là một trong số : "
+
+#: parted/parted.c:146
+msgid "desired alignment: minimum or optimal"
+msgstr "sắp hàng đã muốn: tối thiểu hay quang"
+
+#: parted/parted.c:147
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr ""
+"KIỂU_PHẦN là một trong số :\n"
+" • primary\t\tchính\n"
+" • logical\t\thợp lý\n"
+" • extended\tmở rộng\n"
+
+#: parted/parted.c:149
+msgid "FS-TYPE is one of: "
+msgstr "KIỂU_HTTT là một trong số : "
+
+#: parted/parted.c:150
+msgid ""
+"START and END are disk locations, such as 4GB or 10%.  Negative values count "
+"from the end of the disk.  For example, -1s specifies exactly the last "
+"sector.\n"
+msgstr ""
+"ĐẦU và CUỐI là vị trí trên đĩa, v.d. 4GB hay 10%.  Giá trị âm đếm từ cuối "
+"đĩa. Ví dụ, « -1s » chỉ ra chính xác rãnh ghi cuối cùng.\n"
+
+#: parted/parted.c:153
+msgid "STATE is one of: on, off\n"
+msgstr ""
+"TÌNH_TRẠNG là một trong số:\n"
+" • on\t\tbật\n"
+" • off\t\ttắt\n"
+
+#: parted/parted.c:154
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "THIẾT_BỊ thường là /dev/hda hoặc /dev/sda\n"
+
+#: parted/parted.c:155
+msgid "NAME is any word you want\n"
+msgstr "TÊN là bất kỳ từ gì theo ý muốn\n"
+
+#: parted/parted.c:158
+msgid ""
+"Copyright (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"This program is free software, covered by the GNU General Public License.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+msgstr ""
+"Tác quyền © năm 1998-2006 của Tổ chức Phần mềm Tự do.\n"
+"Chương trình này là phần mềm tự do, được bao quát bởi Giấy Phép Công Cộng "
+"GNU (GPL).\n"
+"\n"
+"Chương trình này được phát hành vì mong muốn nó có ích,\n"
+"nhưng KHÔNG CÓ BẢO HÀNH GÌ CẢ, THẬM CHÍ KHÔNG CÓ BẢO ĐẢM\n"
+"ĐƯỢC NGỤ Ý KHẢ NĂNG BÁN HAY KHẢ NĂNG LÀM ĐƯỢC VIỆC DỨT KHOÁT.\n"
+"Xem Giấy Phép Công Cộng GNU để biết thêm chi tiết.\n"
+"\n"
+
+#: parted/parted.c:204
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(còn lại %.2d:%.2d)"
+
+#: parted/parted.c:223
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+"Phân vùng %s đang được dùng. Người dùng cần bỏ gắn nó trước khi sửa đổi bằng "
+"Parted."
+
+#: parted/parted.c:241
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "Phân vùng trên %s đang được dùng."
+
+#: parted/parted.c:253
+#, c-format
+msgid ""
+"The existing disk label on %s will be destroyed and all data on this disk "
+"will be lost. Do you want to continue?"
+msgstr ""
+"Nhãn đĩa đã tồn tại trên %s sẽ bị hủy và tắt cả các dữ liệu trên đĩa này sẽ "
+"bị mất hoàn toàn. Bạn vẫn còn muốn tiếp tục không?"
+
+#: parted/parted.c:502
+msgid "New disk label type?"
+msgstr "Kiểu nhãn đĩa mới ?"
+
+#: parted/parted.c:562
+msgid "Partition type?"
+msgstr "Kiểu phân vùng ?"
+
+#: parted/parted.c:580 parted/parted.c:766
+msgid "Partition name?"
+msgstr "Tên phân vùng ?"
+
+#: parted/parted.c:588
+msgid "File system type?"
+msgstr "Kiểu hệ thống tập tin ?"
+
+#: parted/parted.c:594 parted/parted.c:1342
+msgid "Start?"
+msgstr "Đầu ?"
+
+#: parted/parted.c:596 parted/parted.c:1344
+msgid "End?"
+msgstr "Cuối ?"
+
+#: parted/parted.c:661
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s.%s"
+msgstr ""
+"Người dùng đã yêu cầu tạo một phân vùng từ %s đến %s.\n"
+"Vùng gần nhất có thể quản lý là %s đến %s.%s"
+
+#: parted/parted.c:666
+msgid ""
+"\n"
+"Is this still acceptable to you?"
+msgstr ""
+"\n"
+"Vẫn tốt ?"
+
+#: parted/parted.c:688
+msgid "The resulting partition is not properly aligned for best performance."
+msgstr "Phân vùng kết quả chưa được sắp hàng cho hiệu suất tốt nhất."
+
+#: parted/parted.c:763 parted/parted.c:1383 parted/parted.c:1455
+#: parted/parted.c:1489
+msgid "Partition number?"
+msgstr "Số thứ tự phân vùng ?"
+
+#: parted/parted.c:841
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d.  Each cylinder is %s.\n"
+msgstr "Dạng hình trụ,đầu,rãnh ghi BIOS: %d,%d,%d. Mỗi trụ là %s.\n"
+
+#: parted/parted.c:881
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr "Mô hình: %s (%s)\n"
+
+#: parted/parted.c:883
+#, c-format
+msgid "Disk %s: %s\n"
+msgstr "Đĩa %s: %s\n"
+
+#: parted/parted.c:884
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr "Kích cỡ rãnh ghi (hợp lý/vật lý): %lldB/%lldB\n"
+
+#: parted/parted.c:896
+#, c-format
+msgid "Partition Table: %s\n"
+msgstr "Bảng Phân Vùng: %s\n"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Number"
+msgstr "Số"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Start"
+msgstr "Đầu"
+
+#: parted/parted.c:1008 parted/parted.c:1011
+msgid "End"
+msgstr "Cuối"
+
+#: parted/parted.c:1011
+msgid "Size"
+msgstr "Kích cỡ"
+
+#: parted/parted.c:1015
+msgid "Type"
+msgstr "Kiểu"
+
+#: parted/parted.c:1017
+msgid "File system"
+msgstr "Hê thống tập tin"
+
+#: parted/parted.c:1020
+msgid "Name"
+msgstr "Tên"
+
+#: parted/parted.c:1022
+msgid "Flags"
+msgstr "Cờ"
+
+#: parted/parted.c:1079
+msgid "Free Space"
+msgstr "Chỗ trống"
+
+#: parted/parted.c:1241
+#, c-format
+msgid ""
+"A %s %s partition was found at %s -> %s.  Do you want to add it to the "
+"partition table?"
+msgstr ""
+"Tìm thấy một phân vùng %s %s tại %s -> %s.  Thêm nó vào bảng phân vùng ?"
+
+#: parted/parted.c:1280
+msgid "searching for file systems"
+msgstr "đang tìm kiếm hệ thống tập tin"
+
+#: parted/parted.c:1408
+msgid "New device?"
+msgstr "Thiết bị mới ?"
+
+#: parted/parted.c:1453
+msgid "alignment type(min/opt)"
+msgstr "cách sắp hàng (tiểu/quang)"
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d aligned\n"
+msgstr "%d đã xếp hàng\n"
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d not aligned\n"
+msgstr "%d chưa xếp hàng\n"
+
+#: parted/parted.c:1491
+msgid "Flag to Invert?"
+msgstr "Cờ cần đảo ngược ?"
+
+#: parted/parted.c:1496
+msgid "New state?"
+msgstr "Tình trạng mới ?"
+
+#: parted/parted.c:1533
+msgid "Unit?"
+msgstr "Đơn vị ?"
+
+#: parted/parted.c:1651
+msgid "align-check"
+msgstr "align-check"
+
+#: parted/parted.c:1654
+msgid ""
+"align-check TYPE N                        check partition N for TYPE(min|"
+"opt) alignment"
+msgstr ""
+"align-check KIỂU SỐ                        kiểm tra phân vùng SỐ có sắp hàng "
+"KIỂU (min|opt)"
+
+#: parted/parted.c:1662
+msgid "help"
+msgstr "trợ giúp"
+
+#: parted/parted.c:1665
+msgid ""
+"help [COMMAND]                           print general help, or help on "
+"COMMAND"
+msgstr ""
+"help [LỆNH]                in trợ giúp chung, hoặc trợ giúp trên câu LỆNH"
+
+#: parted/parted.c:1671
+msgid "mklabel"
+msgstr "tạo nhãn"
+
+#: parted/parted.c:1671
+msgid "mktable"
+msgstr "tạo bảng"
+
+#: parted/parted.c:1674
+msgid ""
+"mklabel,mktable LABEL-TYPE               create a new disklabel (partition "
+"table)"
+msgstr ""
+"mklabel,mktable KIỂU_NHÃN            tạo một nhãn đĩa mới (bảng phân vùng)"
+
+#: parted/parted.c:1680
+msgid "mkpart"
+msgstr "tạo phân vùng"
+
+#: parted/parted.c:1683
+msgid "mkpart PART-TYPE [FS-TYPE] START END     make a partition"
+msgstr "mkpart KIỂU_PV [KIỂU_HTTT] ĐẦU CUỐI      tạo một phân vùng"
+
+#: parted/parted.c:1689
+msgid ""
+"'mkpart' makes a partition without creating a new file system on the "
+"partition.  FS-TYPE may be specified to set an appropriate partition ID.\n"
+msgstr ""
+"« mkpart » tạo một phân vùng mà không tạo một hệ thống tập tin mới trên phân "
+"vùng đó.  Có thể chỉ ra KIỂU_HTTT (kiểu hệ thống tập tin) để đặt một mã số "
+"phân vùng thích hợp.\n"
+
+#: parted/parted.c:1694
+msgid "name"
+msgstr "tên"
+
+#: parted/parted.c:1697
+msgid "name NUMBER NAME                         name partition NUMBER as NAME"
+msgstr "name SỐ TÊN                         đặt tên phân vùng SỐ là TÊN"
+
+#: parted/parted.c:1702
+msgid "print"
+msgstr "in"
+
+#: parted/parted.c:1705
+msgid ""
+"print [devices|free|list,all|NUMBER]     display the partition table, "
+"available devices, free space, all found partitions, or a particular "
+"partition"
+msgstr ""
+"print [devices|free|list,all|SỐ]     hiển thị phân vùng và:\n"
+" • devices\t\tcác thiết bị sẵn sàng\n"
+" • free\t\tsức chứa còn trống\n"
+" • list,all\t\ttất cả các phân vùng đã tìm\n"
+" • SỐ\t\t\tmột phân vùng nào đó"
+
+#: parted/parted.c:1710
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+"Khi không có đối số, « print » hiển thị toàn bộ bảng phân vùng.  Nếu đưa\n"
+"ra các đối số theo sau, thì nó làm một số hành vi khác.\n"
+
+#: parted/parted.c:1712
+msgid "  devices   : display all active block devices\n"
+msgstr "  devices   : hiển thị tất cả các thiết bị khối vẫn hoạt động\n"
+
+#: parted/parted.c:1713
+msgid ""
+"  free      : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+"  free      : hiển thị thông tin về sức chứa còn trống chưa phân vùng trên "
+"thiết bị khối hiện thời\n"
+
+#: parted/parted.c:1715
+msgid ""
+"  list, all : display the partition tables of all active block devices\n"
+msgstr ""
+"  list, all : hiển thị các bảng phân vùng của mọi thiết bị khối vẫn hoạt "
+"động\n"
+
+#: parted/parted.c:1716
+msgid ""
+"  NUMBER    : display more detailed information about this particular "
+"partition\n"
+msgstr "  SỐ    : hiển thị thông tin chi tiết hơn về phân vùng này\n"
+
+#: parted/parted.c:1721
+msgid "quit"
+msgstr "thoát"
+
+#: parted/parted.c:1724
+msgid "quit                                     exit program"
+msgstr "quit                                     thoát khỏi chương trình"
+
+#: parted/parted.c:1729
+msgid "rescue"
+msgstr "cứu"
+
+#: parted/parted.c:1732
+msgid ""
+"rescue START END                         rescue a lost partition near START "
+"and END"
+msgstr ""
+"rescue ĐẦU CUỐI              phục hồi một phân vùng đã mất cạnh ĐẦU và CUỐI"
+
+#: parted/parted.c:1738
+msgid "rm"
+msgstr "bỏ"
+
+#: parted/parted.c:1741
+msgid "rm NUMBER                                delete partition NUMBER"
+msgstr "rm SỐ                      xóa bỏ phân vùng SỐ"
+
+#: parted/parted.c:1746
+msgid "select"
+msgstr "chọn"
+
+#: parted/parted.c:1749
+msgid "select DEVICE                            choose the device to edit"
+msgstr "select THIẾT_BỊ                 chọn thiết bị cần sửa"
+
+#: parted/parted.c:1754
+msgid "set"
+msgstr "đặt"
+
+#: parted/parted.c:1757
+msgid ""
+"set NUMBER FLAG STATE                    change the FLAG on partition NUMBER"
+msgstr "set SỐ CỜ TÌNH_TRẠNG                    thay đổi CỜ trên phân vùng SỐ"
+
+#: parted/parted.c:1763
+msgid "toggle"
+msgstr "bật/tắt"
+
+#: parted/parted.c:1766
+msgid ""
+"toggle [NUMBER [FLAG]]                   toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+"toggle [SỐ [CỜ]]                   bật/tắt tình trạng của CỜ trên phân vùng "
+"SỐ"
+
+#: parted/parted.c:1772
+msgid "unit"
+msgstr "đơn vị"
+
+#: parted/parted.c:1775
+msgid "unit UNIT                                set the default unit to UNIT"
+msgstr "unit ĐƠN_VỊ                                đặt đơn vị mặc định"
+
+#: parted/parted.c:1780
+msgid "version"
+msgstr "phiên bản"
+
+#: parted/parted.c:1783
+msgid ""
+"version                                  display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+"version                                  hiển thị số thứ tự phiên bản và "
+"thông tin tác quyền về GNU Parted"
+
+#: parted/parted.c:1787
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+"« version » hiển thị thông tin về tác quyền và phiên bản tương ứng với bản "
+"sao GNU Parted này\n"
+
+#: parted/parted.c:1855
+#, c-format
+msgid "Usage: %s [-hlmsv] [-a<align>] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr "Sử dụng: %s [-hlmsv] [-a<sắp_hàng>] [THIẾT_BỊ [LỆNH [THAM_SỐ]]...]\n"
+
+#: parted/parted.c:1899
+msgid "No device found"
+msgstr "Không tìm thấy thiết bị"
+
+#: parted/parted.c:1936
+msgid "WARNING: You are not superuser.  Watch out for permissions."
+msgstr ""
+"CẢNH BÁO : bạn không phải là siêu người dùng nên bạn không thể thay đổi các "
+"quyền truy cập."
+
+#: parted/parted.c:1974
+msgid "You may need to update /etc/fstab.\n"
+msgstr "Có thể cần cập nhật tập tin « /etc/fstab ».\n"
+
+#: parted/ui.c:162
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+"Chào mừng bạn đến với GNU Parted ! Hãy gõ « help » để xem danh sách các câu "
+"lệnh.\n"
+
+#: parted/ui.c:165
+msgid ""
+"Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]\n"
+"Apply COMMANDs with PARAMETERS to DEVICE.  If no COMMAND(s) are given, run "
+"in\n"
+"interactive mode.\n"
+msgstr ""
+"Sử dụng: parted [TÙY_CHỌN]... [THIẾT_BỊ [LỆNH [THAM_SỐ]...]...]\n"
+"Áp dụng các câu LỆNH với các THAM_SỐ tới THIẾT_BỊ.  Nếu\n"
+"không có câu LỆNH nào chạy trong chế độ hỏi đáp.\n"
+
+#: parted/ui.c:170
+#, c-format
+msgid ""
+"\n"
+"\n"
+"You found a bug in GNU Parted! Here's what you have to do:\n"
+"\n"
+"Don't panic! The bug has most likely not affected any of your data.\n"
+"Help us to fix this bug by doing the following:\n"
+"\n"
+"Check whether the bug has already been fixed by checking\n"
+"the last version of GNU Parted that you can find at:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Please check this version prior to bug reporting.\n"
+"\n"
+"If this has not been fixed yet or if you don't know how to check,\n"
+"please visit the GNU Parted website:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"for further information.\n"
+"\n"
+"Your report should contain the version of this release (%s)\n"
+"along with the error message below, the output of\n"
+"\n"
+"\tparted DEVICE unit co print unit s print\n"
+"\n"
+"and the following history of commands you entered.\n"
+"Also include any additional information about your setup you\n"
+"consider important.\n"
+msgstr ""
+"\n"
+"\n"
+"Bạn đã tìm một lỗi trong phần mềm GNU Parted ! Hãy bình tĩnh, rất có thể là "
+"lỗi này không có tác động dữ liệu của bạn.\n"
+"\n"
+"Xin hãy giúp chúng tôi sửa chữa lỗi này bằng cách theo những bước theo đây:\n"
+"\n"
+"1. \tKiểm tra nếu phiên bản GNU Parted mới nhất:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"\tđã sửa chữa lỗi này chưa. Nếu chưa, hãy tiếp tục:\n"
+"\n"
+"2.\tĐể biết thêm thông tin, hãy thăm trang chủ GNU Parted:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"3.\tHãy gửi một báo cáo lỗi cho địa chỉ <bug-parted@gnu.org>. Báo cáo này "
+"nên chứa:(a)\tsố thứ tự phiên bản (%s)(b)\tthông điệp lỗi dưới đây, kết xuất "
+"của câu lệnh:\n"
+"\n"
+"\tparted THIẾT_BỊ unit co print unit s print\n"
+"\n"
+"(c)\tlược sử các câu lệnh bạn đã gõ vào\n"
+"(d)\tthông tin bổ sung nào về cấu hình máy tính và hệ điều hành mà bạn thấy "
+"là quan trọng.\n"
+"\n"
+"Một khi bạn làm những bước trên, cám ơn bạn giúp phát triển phần mềm GNU "
+"Parted tốt hơn ! :)\n"
+
+#: parted/ui.c:291
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+"\n"
+"Lược sử Câu lệnh:\n"
+
+#: parted/ui.c:354
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+"\n"
+"Lỗi: SEGV_MAPERR (Địa chỉ không được ánh xạ tới đối tượng)\n"
+
+#: parted/ui.c:360
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+"\n"
+"Lỗi: SEGV_ACCERR (Quyền truy cập sai cho đối tượng đã ánh xạ\n"
+
+#: parted/ui.c:365
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+"\n"
+"Lỗi: gặp một tín hiệu SIGSEGV chung.\n"
+
+#: parted/ui.c:389
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+"\n"
+"Lỗi: FPE_INTDIV (Số nguyên: chia cho không)"
+
+#: parted/ui.c:394
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+"\n"
+"Lỗi: FPE_INTOVF (Số nguyên: tràn)"
+
+#: parted/ui.c:399
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+"\n"
+"Lỗi: FPE_FLTDIV (Phù động: chia cho không)"
+
+#: parted/ui.c:404
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+"\n"
+"Lỗi: FPE_FLTOVF (Phù động: tràn)"
+
+#: parted/ui.c:409
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+"\n"
+"Lỗi: FPE_FLTUND (Phù động: tràn ngược)"
+
+#: parted/ui.c:414
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+"\n"
+"Lỗi: FPE_FLTRES (Phù động: kết quả không chính xác)"
+
+#: parted/ui.c:419
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+"\n"
+"Lỗi: FPE_FLTINV (Phù động: thao tác sai)"
+
+#: parted/ui.c:424
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+"\n"
+"Lỗi: FPE_FLTSUB (Phù động: chữ thấp ở ngoại phạm vi)"
+
+#: parted/ui.c:429
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+"\n"
+"Lỗi: gặp một tín hiệu SIGFPE chung."
+
+#: parted/ui.c:453
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+"\n"
+"Lỗi: ILL_ILLOPC (Mã thao tác cấm)"
+
+#: parted/ui.c:458
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+"\n"
+"Lỗi: ILL_ILLOPN (Toán hạng cấm)"
+
+#: parted/ui.c:463
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+"\n"
+"Lỗi: ILL_ILLADR (Chế độ đặt địa chỉ cấm)"
+
+#: parted/ui.c:468
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+"\n"
+"Lỗi : ILL_ILLTRP (Bẫy cấm)"
+
+#: parted/ui.c:473
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+"\n"
+"Lỗi: ILL_PRVOPC (Mã thao tác có quyền đặc biệt)"
+
+#: parted/ui.c:478
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+"\n"
+"Lỗi: ILL_PRVREG (Thanh ghi có quyền đặc biệt)"
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+"\n"
+"Lỗi: ILL_COPROC (Lỗi tiến trình đồng chạy)"
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+"\n"
+"Lỗi: ILL_BADSTK (Lỗi đống nội bộ)"
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+"\n"
+"Lỗi: gặp một tín hiệu SIGILL chung."
+
+#: parted/ui.c:891
+#, c-format
+msgid "invalid token: %s"
+msgstr "hiệu bài sai: %s"
+
+#: parted/ui.c:1048
+msgid "Expecting a partition number."
+msgstr "Mong đợi số thứ tự phân vùng."
+
+#: parted/ui.c:1057
+msgid "Partition doesn't exist."
+msgstr "Phân vùng không tồn tại."
+
+#: parted/ui.c:1077
+msgid "Expecting a file system type."
+msgstr "Mong đợi kiểu hệ thống tập tin."
+
+#: parted/ui.c:1084
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Không rõ kiểu hệ thống tập tin « %s »."
+
+#: parted/ui.c:1105
+msgid "Expecting a disk label type."
+msgstr "Mong đợi kiểu nhãn đĩa."
+
+#: parted/ui.c:1203
+msgid "Can't create any more partitions."
+msgstr "Không thể tạo phân vùng thêm nữa."
+
+#: parted/ui.c:1213
+msgid "Expecting a partition type."
+msgstr "Mong đợi kiểu phân vùng."
+
+#: parted/ui.c:1361
+msgid "on"
+msgstr "bật"
+
+#: parted/ui.c:1362
+msgid "off"
+msgstr "tắt"
+
+#: parted/ui.c:1379
+msgid "optimal"
+msgstr "tối ưu"
+
+#: parted/ui.c:1380
+msgid "minimal"
+msgstr "tối thiểu"
+
+#: parted/ui.c:1513
+msgid "OPTIONs:"
+msgstr "TÙY CHỌN:"
+
+#: parted/ui.c:1518
+msgid "COMMANDs:"
+msgstr "LỆNH:"
+
+#: parted/ui.c:1521
+#, c-format
+msgid ""
+"\n"
+"Report bugs to %s\n"
+msgstr ""
+"\n"
+"Gửi báo cáo lỗi tới %s\n"
+
+#: parted/ui.c:1528
+#, c-format
+msgid "Using %s\n"
+msgstr "Dùng %s\n"
+
+#: parted/ui.c:1602
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr "Câu lệnh này không có ý nghĩa trong chế độ không tương tác.\n"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]\n"
+#~ "  or:  %s DEVICE MINOR\n"
+#~ msgstr ""
+#~ "Sử dụng: %s [TÙY_CHỌN]\n"
+#~ "  hoặc:  %s THIẾT_BỊ PHỤ\n"
+
+#~ msgid ""
+#~ "Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Xoá sạch sức chứa không dùng trên một phân vùng FAT (một công cụ thử GNU "
+#~ "Parted).\n"
+#~ "\n"
+
+#~ msgid "      --help     display this help and exit\n"
+#~ msgstr "      --help        hiển thị trợ giúp này rồi thoát\n"
+
+#~ msgid "      --version  output version information and exit\n"
+#~ msgstr "      --version     đưa ra thông tin phiên bản rồi thoát\n"
+
+#~ msgid "too few arguments"
+#~ msgstr "quá ít đối số"
+
+#~ msgid "too many arguments"
+#~ msgstr "quá nhiều đối số"
+
+#~ msgid "invalid minor device number: %s"
+#~ msgstr "sai số nhỏ của thiết bị: %s"
+
+#~ msgid "Could not detect file system."
+#~ msgstr "Không thể phát hiện hệ thống tập tin."
+
+#~ msgid "The file system is bigger than its volume!"
+#~ msgstr "Hệ thống tập tin lớn hơn khối tin !"
+
+#~ msgid "Support for opening %s file systems is not implemented yet."
+#~ msgstr "Chưa thực hiện hỗ trợ mở hệ thống tập tin %s."
+
+#~ msgid "Support for creating %s file systems is not implemented yet."
+#~ msgstr "Chưa thực hiện hỗ trợ tạo hệ thống tập tin %s."
+
+#~ msgid "Support for checking %s file systems is not implemented yet."
+#~ msgstr "Chưa thực hiện hỗ trợ kiểm tra hệ thống tập tin %s."
+
+#~ msgid "raw block copying"
+#~ msgstr "đang sao chép khối thô"
+
+#~ msgid "growing file system"
+#~ msgstr "đang mọc hê thống tập tin"
+
+#~ msgid "Can't copy onto an overlapping partition."
+#~ msgstr "Không thể sao chép vào một phân vùng chồng lấp."
+
+#~ msgid ""
+#~ "Direct support for copying file systems is not yet implemented for %s.  "
+#~ "However, support for resizing is implemented.  Therefore, the file system "
+#~ "can be copied if the new partition is at least as big as the old one.  "
+#~ "So, either shrink the partition you are trying to copy, or copy to a "
+#~ "bigger partition."
+#~ msgstr ""
+#~ "Hỗ trợ thẳng để sao chép hệ thống tập tin chưa được thực hiện cho %s.  "
+#~ "Tuy nhiên, đã có hỗ trợ thay đổi kích thước.  Vì thế, có thể sao chép hệ "
+#~ "thống tập tin nếu phân vùng mới có kích thước không nhỏ hơn phân vùng "
+#~ "cũ.  Vì vậy, hoặc rút ngắn phân vùng cần sao chép, hoặc sao chép tới một "
+#~ "phân vùng lớn hơn."
+
+#~ msgid "Support for copying %s file systems is not implemented yet."
+#~ msgstr "Chưa thực hiện hỗ trợ sao chép hệ thống tập tin %s."
+
+#~ msgid "Support for resizing %s file systems is not implemented yet."
+#~ msgstr "Chưa thực hiện hỗ trợ thay đổi kích cỡ hệ thống tập tin %s."
+
+#~ msgid "creating"
+#~ msgstr "đang tạo"
+
+#~ msgid "The file system is in an invalid state.  Perhaps it is mounted?"
+#~ msgstr "Hệ thống tập tin có tình trạng không hợp lệ. Có thể là nó bị gắn ?"
+
+#~ msgid "The file system is in old (unresizeable) format."
+#~ msgstr ""
+#~ "Hệ thống tập tin theo một định dạng cũ (không thể thay đổi kích cỡ)."
+
+#~ msgid "Invalid free blocks count.  Run reiserfsck --check first."
+#~ msgstr ""
+#~ "Đếm sai số các khối trống. Trước tiên hãy chạy câu lệnh kiểm tra « "
+#~ "reiserfsck --check »."
+
+#~ msgid "checking"
+#~ msgstr "đang kiểm tra"
+
+#~ msgid "Reiserfs tree seems to be corrupted.  Run reiserfsck --check first."
+#~ msgstr ""
+#~ "Có vẻ là cây reiserfs bị hỏng. Trước tiên hãy chạy câu lệnh kiểm tra « "
+#~ "reiserfsck --check »."
+
+#~ msgid ""
+#~ "The reiserfs file system passed a basic check.  For a more comprehensive "
+#~ "check, run reiserfsck --check."
+#~ msgstr ""
+#~ "Hệ thống tập tin reiserfs đã qua kiểm tra cơ bản.  Để kiểm tra kỹ hơn, "
+#~ "hãy chạy câu lệnh kiểm tra « reiserfsck --check »."
+
+#~ msgid "Sorry, can't move the start of reiserfs partitions yet."
+#~ msgstr "Tiếc là chưa có thể di chuyển đầu của phân vùng reiserfs."
+
+#~ msgid "Couldn't reopen device abstraction layer for read/write."
+#~ msgstr "Không thể mở lại lớp nhìn trừu tượng thiết bị để đọc/ghi."
+
+#~ msgid "shrinking"
+#~ msgstr "đang co lại"
+
+#~ msgid "expanding"
+#~ msgstr "đang giãn ra"
+
+#~ msgid "Couldn't create reiserfs device abstraction handler."
+#~ msgstr "Không thể tạo bộ quản lý sự nhìn trừu tượng thiết bị reiserfs."
+
+#~ msgid "Device is too small for %lu blocks."
+#~ msgstr "Thiết bị quá nhỏ để chứa %lu khối."
+
+#~ msgid "copying"
+#~ msgstr "đang sao chép"
+
+#~ msgid "Couldn't resolve symbol %s.  Error: %s."
+#~ msgstr "Không thể quyết định ký hiệu %s. Lỗi: %s."
+
+#~ msgid "GNU Parted found an invalid libreiserfs library."
+#~ msgstr "GNU Parted tìm thấy một thư viện libreiserfs không hợp lệ."
+
+#~ msgid ""
+#~ "GNU Parted has detected libreiserfs interface version mismatch.  Found %d-"
+#~ "%d, required %d. ReiserFS support will be disabled."
+#~ msgstr ""
+#~ "GNU Parted phát hiện được phiên bản giao diện libreiserfs không tương "
+#~ "ứng. Tìm %d-%d, cần %d. Vì thế phải tắt hỗ trợ ReiserFS."
+
+#~ msgid "Inconsistent group descriptors!"
+#~ msgstr "Các mô tả nhóm không đồng nhất !"
+
+#~ msgid "File system full!"
+#~ msgstr "Hê thống tập tin đầy"
+
+#~ msgid "Invalid superblock.  Are you sure this is an ext2 file system?"
+#~ msgstr ""
+#~ "Siêu khối sai. Bạn có chắc rằng đây là một hệ thống tập tin loại ext2 "
+#~ "không?"
+
+#~ msgid "File system has errors!  You should run e2fsck."
+#~ msgstr "Hệ thống tập tin có lỗi !  Cần chạy e2fsck."
+
+#~ msgid ""
+#~ "File system was not cleanly unmounted!  You should run e2fsck.  Modifying "
+#~ "an unclean file system could cause severe corruption."
+#~ msgstr ""
+#~ "Hệ thống tập tin chưa được bỏ gắn một cách đúng đắn!  Cần chạy e2fsck.  "
+#~ "Sửa đổi hệ thống tin đó có thể gây trường hợp rất bị hỏng."
+
+#~ msgid ""
+#~ "File system has an incompatible feature enabled.  Compatible features are "
+#~ "has_journal, dir_index, filetype, sparse_super and large_file.  Use "
+#~ "tune2fs or debugfs to remove features."
+#~ msgstr ""
+#~ "Hệ thống tập tin đã hiệu lực một tính năng không tương thích. Những tính "
+#~ "năng tương thích:\n"
+#~ " • has_journal\t\tcó nhật ký\n"
+#~ " • dir_index\t\tthư mục phụ lục\n"
+#~ " • sparse_super\tsiêu sparse\n"
+#~ " • large_file\t\ttập tin lớn\n"
+#~ "Hãy sử dụng tune2fs hay debugfs để gỡ bỏ tính năng."
+
+#~ msgid "Error allocating buffer cache."
+#~ msgstr "Gặp lỗi khi phân cấp vùng nhớ tạm bộ đệm."
+
+#~ msgid ""
+#~ "Found an inode with a incorrect link count.  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "Tìm thấy một nút inode với số đếm liên kết sai.  Tốt nhất hãy chạy e2fsck "
+#~ "trước."
+
+#~ msgid "Not enough free inodes!"
+#~ msgstr "Không đủ inode còn rảnh !"
+
+#~ msgid "File system is too full to remove a group!"
+#~ msgstr "Hệ thống tập tin quá đầy để gỡ bỏ một nhóm !"
+
+#~ msgid "File system has too many allocated inodes to remove a group!"
+#~ msgstr "Hệ thống tập tin có quá nhiều inode phân phối để xóa một nhóm !"
+
+#~ msgid "adding groups"
+#~ msgstr "đang thêm nhóm"
+
+#~ msgid "Your file system is too full to resize it to %i blocks.  Sorry."
+#~ msgstr ""
+#~ "Hệ thống tập tin quá đầy để thay đổi kích thước thành %i khối. Rất tiếc."
+
+#~ msgid ""
+#~ "Your file system has too many occupied inodes to resize it to %i blocks.  "
+#~ "Sorry."
+#~ msgstr ""
+#~ "Hệ thống tập tin có quá nhiều nút inode bận để thay đổi kích thước thành "
+#~ "%i khối. Rất tiếc."
+
+#~ msgid "File system was not cleanly unmounted!  You should run e2fsck."
+#~ msgstr "Hệ thống tập tin chưa được bỏ gắn đúng !  Cần chạy e2fsck."
+
+#~ msgid ""
+#~ "The file system has the 'dir_index' feature enabled.  Parted can only "
+#~ "resize the file system if it disables this feature.  You can enable it "
+#~ "later by running 'tune2fs -O dir_index DEVICE' and then 'e2fsck -fD "
+#~ "DEVICE'."
+#~ msgstr ""
+#~ "Hệ thống tập tin có tính năng « dir_index » bật dùng.  Parted chỉ có thể "
+#~ "thay đổi kích thước của hệ thống tập tin nếu tắt bỏ tính năng này.  Có "
+#~ "thể bật dùng lại tính năng sau này bằng « tune2fs -O dir_index THIẾT_BỊ » "
+#~ "và sau đó « e2fsck -fD THIẾT_BỊ »."
+
+#~ msgid ""
+#~ "A resize operation on this file system will use EXPERIMENTAL code\n"
+#~ "that MAY CORRUPT it (although no one has reported any such damage yet).\n"
+#~ "You should at least backup your data first, and run 'e2fsck -f' "
+#~ "afterwards."
+#~ msgstr ""
+#~ "Thao tác thay đổi kích cỡ trên hệ thống tập tin này thì dùng mã nguồn VẪN "
+#~ "THỰC NGHIỆM mà CÓ THỂ LÀM HỎNG nó (dù chưa có người dùng thông báo trường "
+#~ "hợp này).\n"
+#~ "ít nhất người dùng nên sao lưu dữ liệu trước, và chạy « e2fsck -f » sau."
+
+#~ msgid "Cross-linked blocks found!  Better go run e2fsck first!"
+#~ msgstr ""
+#~ "Tìm thấy các khối liên kết chồng chéo ! Tốt nhất hãy chạy e2fsck trước !"
+
+#~ msgid "Block %i has no reference?  Weird."
+#~ msgstr "Khối %i không có tham chiếu ? Kỳ lạ."
+
+#~ msgid "Block %i shouldn't have been marked (%d, %d)!"
+#~ msgstr "Khối %i không nên bị đánh dấu (%d, %d) !"
+
+#~ msgid ""
+#~ "The ext2 file system passed a basic check.  For a more comprehensive "
+#~ "check, use the e2fsck program."
+#~ msgstr ""
+#~ "Hệ thống tập tin ext2 đã qua kiểm tra cơ bản.  Để kiểm tra kỹ hơn, hãy "
+#~ "dùng chương trình e2fsck."
+
+#~ msgid "Sorry, can't move the start of ext2 partitions yet!"
+#~ msgstr "Tiếc là chưa có thể di chuyển đầu của phân vùng ext2 !"
+
+#~ msgid "Couldn't flush buffer cache!"
+#~ msgstr "Không thể chuyển hết ra ngoài vùng nhớ tạm bộ đệm !"
+
+#~ msgid "writing per-group metadata"
+#~ msgstr "đang ghi siêu dữ liệu từng nhóm"
+
+#~ msgid "File system too small for ext2."
+#~ msgstr "Hệ thống tập tin quá nhỏ đối với ext2."
+
+#~ msgid ""
+#~ "You need %s of free disk space to shrink this partition to this size.  "
+#~ "Currently, only %s is free."
+#~ msgstr ""
+#~ "Người dùng cần %s không gian trống để rút ngắn phân vùng tới kích thước "
+#~ "này (hiện thời chỉ có %s trống)."
+
+#~ msgid ""
+#~ "Cluster start delta = %d, which is not a multiple of the cluster size %d."
+#~ msgstr ""
+#~ "Delta bắt đầu chùm = %d, mà không phải là bội số của kích thước chùm %d."
+
+#~ msgid "Partition too big/small for a %s file system."
+#~ msgstr "Phân vùng quá lớn/nhỏ đối với hệ thống tập tin %s."
+
+#~ msgid ""
+#~ "The FATs don't match.  If you don't know what this means, then select "
+#~ "cancel, run scandisk on the file system, and then come back."
+#~ msgstr ""
+#~ "Các FAT không tương ứng.  Nếu không biết ý nghĩa của nó, thì hãy chọn "
+#~ "cancel (Thôi), chạy scandisk trên hệ thống tập tin, sau đó quay lại."
+
+#~ msgid "There are no possible configurations for this FAT type."
+#~ msgstr "Không có cấu hình có thể làm cho kiểu FAT này."
+
+#~ msgid ""
+#~ "File system doesn't have expected sizes for Windows to like it.  Cluster "
+#~ "size is %dk (%dk expected); number of clusters is %d (%d expected); size "
+#~ "of FATs is %d sectors (%d expected)."
+#~ msgstr ""
+#~ "Hệ thống tập tin không có kích thước Windows mong đợi.  Kích thước chùm "
+#~ "là %dk (mong đợi %dk); số chùm là %d (mong đợi %d); kích thước FAT là %d "
+#~ "rãnh ghi (mong đợi %d)."
+
+#~ msgid ""
+#~ "File system is reporting the free space as %d clusters, not %d clusters."
+#~ msgstr ""
+#~ "Hệ thống tập tin cho biết không gian trống là %d chùm, không phải %d."
+
+#~ msgid ""
+#~ "There's not enough room in the root directory for all of the files.  "
+#~ "Either cancel, or ignore to lose the files."
+#~ msgstr ""
+#~ "Không đủ chỗ trống trong thư mục gốc để chứa tất cả các tập tin.  Hoặc "
+#~ "Thôi (cancel), hoặc Bỏ qua (ignore) và sẽ mất các tập tin."
+
+#~ msgid "Error writing to the root directory."
+#~ msgstr "Gặp lỗi khi ghi vào thư mục gốc."
+
+#~ msgid ""
+#~ "If you leave your file system as FAT16, then you will have no problems."
+#~ msgstr "Nếu để hệ thống tập tin là FAT16, thì sẽ không có vấn đề gì."
+
+#~ msgid ""
+#~ "If you convert to FAT16, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual)."
+#~ msgstr ""
+#~ "Nếu chuyển thành FAT16, và cài đặt MS Windows trên phân vùng này, thì sẽ "
+#~ "phải cài đặt lại trình khởi động của MS Windows.  Nếu muốn thực hiện, thì "
+#~ "cần xem tài liệu người dùng của Parted (hoặc tài liệu của nhà phân phối)."
+
+#~ msgid ""
+#~ "If you leave your file system as FAT32, then you will not introduce any "
+#~ "new problems."
+#~ msgstr "Nếu dể hệ thống là FAT32, thì sẽ không có vấn đề mới nào xảy ra."
+
+#~ msgid ""
+#~ "If you convert to FAT32, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual).  Also, converting to FAT32 will make the file system unreadable "
+#~ "by MS DOS, MS Windows 95a, and MS Windows NT."
+#~ msgstr ""
+#~ "Nếu chuyển thành FAT32, và cài đặt MS Windows trên phân vùng này, thì sẽ "
+#~ "phải cài đặt lại trình khởi động của MS Windows.  Nếu muốn thực hiện, thì "
+#~ "cần xem tài liệu người dùng của Parted (hoặc tài liệu của nhà phân "
+#~ "phối).  Đồng thời, chuyển thành FAT32 sẽ khiến MS DOS, MS Windows 95a, và "
+#~ "MS Windows NT không đọc được chúng."
+
+#~ msgid "%s  %s  %s"
+#~ msgstr "%s  %s  %s"
+
+#~ msgid "Would you like to use FAT32?"
+#~ msgstr "Bạn có muốn dùng FAT32 ?"
+
+#~ msgid "%s  %s"
+#~ msgstr "%s  %s"
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT16."
+#~ msgstr ""
+#~ "Chỉ thay đổi được kích thước của hệ thống tập tin thành kích thước này "
+#~ "khi chuyển thành FAT16."
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT32."
+#~ msgstr ""
+#~ "Chỉ thay đổi được kích thước của hệ thống tập tin thành kích thước này "
+#~ "khi chuyển thành FAT32."
+
+#~ msgid ""
+#~ "GNU Parted cannot resize this partition to this size.  We're working on "
+#~ "it!"
+#~ msgstr ""
+#~ "GNU Parted không thay đổi được kích thước của phân vùng này thành kích "
+#~ "thước chỉ ra.  Chúng tôi đang thực hiện việc đó!"
+
+#~ msgid "Bad directory entry for %s: first cluster is the end of file marker."
+#~ msgstr "Mục thư mục xấu cho %s: chùm đầu tiên là cuối của đánh dấu tập tin."
+
+#~ msgid ""
+#~ "Bad FAT: unterminated chain for %s.  You should run dosfsck or scandisk."
+#~ msgstr ""
+#~ "FAT xấu: chuỗi không kết thúc cho %s.  Cần chạy dosfsck hoặc scandisk."
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d outside file system in chain for %s.  You should run "
+#~ "dosfsck or scandisk."
+#~ msgstr ""
+#~ "FAT xấu: chùm %d ngoài hệ thống tập tin trong chuỗi cho %s.  Cần chạy "
+#~ "dosfsck hoặc scandisk."
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d is cross-linked for %s.  You should run dosfsck or "
+#~ "scandisk."
+#~ msgstr ""
+#~ "FAT xấu: chùm %d là liên kết chồng chéo cho %s.  Cần chạy dosfsck hoặc "
+#~ "scandisk."
+
+#~ msgid "%s is %dk, but it has %d clusters (%dk)."
+#~ msgstr "%s là %dk, nhưng nó có %d chùm (%dk)."
+
+#~ msgid ""
+#~ "The file %s is marked as a system file.  This means moving it could cause "
+#~ "some programs to stop working."
+#~ msgstr ""
+#~ "Tập tin %s có dấu hiệu của tập tin hệ thống.  Có nghĩa di chuyển tập tin "
+#~ "này có thể khiến một số chương trình dừng làm việc."
+
+#~ msgid ""
+#~ "FAT %d media %x doesn't match the boot sector's media %x.  You should "
+#~ "probably run scandisk."
+#~ msgstr ""
+#~ "FAT %d vật chứa %x không tương ứng vật chứa rãnh ghi khởi động %x.  Có "
+#~ "thể cần chạy scandisk."
+
+#~ msgid "fat_table_set: cluster %ld outside file system"
+#~ msgstr "fat_table_set: chùm %ld ngoài hệ thống tập tin"
+
+#~ msgid "fat_table_get: cluster %ld outside file system"
+#~ msgstr "fat_table_get: cluster %ld ngoài hệ thống tập tin"
+
+#~ msgid "fat_table_alloc_cluster: no free clusters"
+#~ msgstr "fat_table_alloc_cluster: không còn chùm trống"
+
+#~ msgid "Too many bad pages."
+#~ msgstr "Quá nhiều trang xấu."
+
+#~ msgid "The file system contains errors."
+#~ msgstr "Hệ thống tập tin chứa lỗi."
+
+#~ msgid "Bad blocks could not be read."
+#~ msgstr "Không thể đọc khối xấu."
+
+#~ msgid ""
+#~ "Trying to register an extent starting at block 0x%X, but another one "
+#~ "already exists at this position.  You should check the file system!"
+#~ msgstr ""
+#~ "Đang cố đăng ký một tầm bắt đầu tại khối 0x%X, nhưng một tầm khác đã có "
+#~ "tại vị trí này. Người dùng cần kiểm tra hệ thống tập tin."
+
+#~ msgid ""
+#~ "Trying to move an extent from block Ox%X to block Ox%X, but another one "
+#~ "already exists at this position.  This should not happen!"
+#~ msgstr ""
+#~ "Đang cố di chuyển một tầm từ khối Ox%X sang khối Ox%X, nhưng một tầm khác "
+#~ "đã có tại vị trí này. Trường hợp này không nên xảy ra."
+
+#~ msgid "Could not update the extent cache for HFS file with CNID %X."
+#~ msgstr "Không thể cập nhật vùng nhớ tạm tầm cho tập tin HFS với CNID %X."
+
+#~ msgid "Trying to read HFS file with CNID %X behind EOF."
+#~ msgstr "Đang thử đọc tập tin HFS với CNID %X đằng sau EOF."
+
+#~ msgid "Could not find sector %lli of HFS file with CNID %X."
+#~ msgstr "Không tìm thấy rãnh ghi %lli của tập tin HFS với CNID %X."
+
+#~ msgid "Trying to write HFS file with CNID %X behind EOF."
+#~ msgstr "Đang thử ghi tập tin HFS với CNID %X đằng sau EOF."
+
+#~ msgid "Could not update the extent cache for HFS+ file with CNID %X."
+#~ msgstr "Không thể cập nhật vùng nhớ tạm tầm cho tập tin HFS+ với CNID %X."
+
+#~ msgid "Trying to read HFS+ file with CNID %X behind EOF."
+#~ msgstr "Đang thử đọc tập tin HFS+ với CNID %X đằng sau EOF."
+
+#~ msgid "Could not find sector %lli of HFS+ file with CNID %X."
+#~ msgstr "Không tìm thấy rãnh ghi %lli của tập tin HFS+ với CNID %X."
+
+#~ msgid "Trying to write HFS+ file with CNID %X behind EOF."
+#~ msgstr "Đang thử ghi tập tin HFS+ với CNID %X đằng sau EOF."
+
+#~ msgid "Sorry, HFS cannot be resized that way yet."
+#~ msgstr "Tiếc là chưa có thể thay đổi kích cỡ HFS bằng cách đó."
+
+#~ msgid "Data relocation has failed."
+#~ msgstr "Lỗi định vị lại dữ liệu."
+
+#~ msgid "Data relocation left some data in the end of the volume."
+#~ msgstr ""
+#~ "Tiến trình định vị lại dữ liệu đã để lại một số dữ liệu ở cuối khối tin."
+
+#~ msgid "writing HFS Master Directory Block"
+#~ msgstr "đang ghi Khối Thư mục Chủ HFS"
+
+#~ msgid "No valid HFS[+X] signature has been found while opening."
+#~ msgstr "Không tìm thấy chữ ký HFS[+X] đúng trong khi mở."
+
+#~ msgid "Version %d of HFS+ isn't supported."
+#~ msgstr "Phiên bản %d của HFS+ vẫn không được hỗ trợ."
+
+#~ msgid "Version %d of HFSX isn't supported."
+#~ msgstr "Phiên bản %d của HFSX vẫn không được hỗ trợ."
+
+#~ msgid "Data relocation left some data at the end of the volume."
+#~ msgstr ""
+#~ "Tiến trình định vị lại dữ liệu đã để lại một số dữ liệu ở cuối khối tin."
+
+#~ msgid "Error while writing the allocation file."
+#~ msgstr "Gặp lỗi khi ghi tập tin phân phối."
+
+#~ msgid "Error while writing the compatibility part of the allocation file."
+#~ msgstr "Gặp lỗi khi ghi phần tính tương thích của tập tin phân phối."
+
+#~ msgid "writing HFS+ Volume Header"
+#~ msgstr "đang ghi Phần đầu Khối tin HFS+"
+
+#~ msgid "An error occurred while looking for the mandatory bad blocks file."
+#~ msgstr "Gặp lỗi trong khi tìm tập tin khối xấu bắt buộc phải có."
+
+#~ msgid ""
+#~ "It seems there is an error in the HFS wrapper: the bad blocks file "
+#~ "doesn't contain the embedded HFS+ volume."
+#~ msgstr ""
+#~ "Có vẻ là gặp lỗi trong bộ bao bọc HFS: tập tin khối xấu không chứa khối "
+#~ "tin HFS+ nhúng."
+
+#~ msgid "Sorry, HFS+ cannot be resized that way yet."
+#~ msgstr "Tiếc là chưa có thể thay đổi kích cỡ HFS bằng cách đó."
+
+#~ msgid "shrinking embedded HFS+ volume"
+#~ msgstr "đang rút ngắn khối tin HFS+"
+
+#~ msgid "Resizing the HFS+ volume has failed."
+#~ msgstr "Lỗi thay đổi kích cỡ của khối tin HFS+."
+
+#~ msgid "shrinking HFS wrapper"
+#~ msgstr "đang rút ngắn bộ bao bọc HFS"
+
+#~ msgid "Updating the HFS wrapper has failed."
+#~ msgstr "Lỗi cập nhật bộ bao bọc HFS."
+
+#~ msgid ""
+#~ "This is not a real %s check.  This is going to extract special low level "
+#~ "files for debugging purposes."
+#~ msgstr ""
+#~ "Đây không phải là một kiểm tra %s thật. Tiến trình này sẽ tách các tập "
+#~ "tin cấp thấp đặc biệt cho mục đích gỡ lỗi."
+
+#~ msgid "Bad block list header checksum."
+#~ msgstr "Sai kiểm tổng (checksum) phần đầu danh sách khối xấu."
+
+#~ msgid ""
+#~ "Invalid size of a transaction block while replaying the journal (%i "
+#~ "bytes)."
+#~ msgstr ""
+#~ "Gặp kích cỡ sai của khối giao dịch trong khi phát lại nhật ký (%i byte)."
+
+#~ msgid ""
+#~ "Journal stored outside of the volume are not supported.  Try to "
+#~ "desactivate the journal and run Parted again."
+#~ msgstr ""
+#~ "Nhật ký nằm ngoài khối tin thì không được hỗ trợ. Hãy thử tắt nhật ký, "
+#~ "sau đó chạy lại Parted."
+
+#~ msgid "Journal offset or size is not multiple of the sector size."
+#~ msgstr ""
+#~ "Hiệu hay kích cỡ của nhất ký không phải là bội số cho kích cỡ rãnh ghi."
+
+#~ msgid "Incorrect magic values in the journal header."
+#~ msgstr "Gặp giá trị ma thuật sai trong phần đầu nhật ký."
+
+#~ msgid "Journal size mismatch between journal info block and journal header."
+#~ msgstr ""
+#~ "Kích cỡ nhật ký không tương ứng giữa khối thông tin nhật ký và phần đầu "
+#~ "nhật ký."
+
+#~ msgid "Some header fields are not multiple of the sector size."
+#~ msgstr "Một số trường phần đầu không phải là bội số cho kích cỡ rãnh ghi."
+
+#~ msgid ""
+#~ "The sector size stored in the journal is not 512 bytes.  Parted only "
+#~ "supports 512 bytes length sectors."
+#~ msgstr ""
+#~ "Kích cỡ rãnh ghi được cất giữ trong nhật ký không phải là 512 byte. "
+#~ "Parted chỉ hỗ trợ rãnh ghi có chiều dài 512 byte."
+
+#~ msgid "Bad journal checksum."
+#~ msgstr "Lỗi tổng kiểm tra nhật ký."
+
+#~ msgid ""
+#~ "The journal is not empty.  Parted must replay the transactions before "
+#~ "opening the file system.  This will modify the file system."
+#~ msgstr ""
+#~ "Nhật ký không trống. Parted phải phát lại các giao dịch trước khi mở hệ "
+#~ "thống tập tin. Tiến trình này sẽ sửa đổi hệ thống tập tin."
+
+#~ msgid ""
+#~ "The volume header or the master directory block has changed while "
+#~ "replaying the journal.  You should restart Parted."
+#~ msgstr ""
+#~ "Phần đầu khối tin hoặc khối thư mục chủ bị thay đổi trong khi phát lại "
+#~ "nhật ký. Cần khởi chạy lại Parted."
+
+#~ msgid "An extent has not been relocated."
+#~ msgstr "Một tầm chưa được định vị lại."
+
+#~ msgid ""
+#~ "A reference to an extent comes from a place it should not.  You should "
+#~ "check the file system!"
+#~ msgstr ""
+#~ "Tham chiếu đến một tầm đến từ vị trí không đúng. Cần kiểm tra hệ thống "
+#~ "tập tin !"
+
+#~ msgid "This HFS volume has no catalog file.  This is very unusual!"
+#~ msgstr "Khối tin HFS không có tập tin phân loại. Rất lạ !"
+
+#~ msgid ""
+#~ "This HFS volume has no extents overflow file.  This is quite unusual!"
+#~ msgstr "Khối tin HFS không có tập tin tràn tầm. Hơi lạ."
+
+#~ msgid ""
+#~ "The extents overflow file should not contain its own extents!  You should "
+#~ "check the file system."
+#~ msgstr ""
+#~ "Tập tin trản tầm không nên chứa các tầm của mình. Cần kiểm tra hệ thống "
+#~ "tập tin."
+
+#~ msgid "Could not cache the file system in memory."
+#~ msgstr "Không thể nhớ tạm hệ thống tập tin trong bộ nhớ."
+
+#~ msgid "Bad blocks list could not be loaded."
+#~ msgstr "Không thể nạp danh sách khối xấu."
+
+#~ msgid "An error occurred during extent relocation."
+#~ msgstr "Gặp lỗi trong khi định vị lại tầm."
+
+#~ msgid "This HFS+ volume has no catalog file.  This is very unusual!"
+#~ msgstr "Khối tin HFS+ không có tập tin phần loại. Rất lạ !"
+
+#~ msgid ""
+#~ "This HFS+ volume has no extents overflow file.  This is quite unusual!"
+#~ msgstr "Khối tin HFS+ không có tập tin tràn tầm. Hơi lạ."
+
+#~ msgid "The partition must have one of the following FS-TYPEs: "
+#~ msgstr ""
+#~ "Phân vùng phải có một của những kiểu hệ thống tập tin (KIỂU_HTTT) theo "
+#~ "đây: "
+
+#~ msgid ""
+#~ "The existing file system will be destroyed and all data on the partition "
+#~ "will be lost. Do you want to continue?"
+#~ msgstr ""
+#~ "Hệ thống tập tin đã tồn tại sẽ bị hủy và tắt cả các dữ liệu trên phân "
+#~ "vùng sẽ bị mất hoàn toàn. Bạn vẫn còn muốn tiếp tục không?"
+
+#~ msgid ""
+#~ "WARNING: you are attempting to use %s to operate on (%s) a file system.\n"
+#~ "%s's file system manipulation code is not as robust as what you'll find "
+#~ "in\n"
+#~ "dedicated, file-system-specific packages like e2fsprogs.  We recommend\n"
+#~ "you use %s only to manipulate partition tables, whenever possible.\n"
+#~ "Support for performing most operations on most types of file systems\n"
+#~ "will be removed in an upcoming release.\n"
+#~ msgstr ""
+#~ "CẢNH BÁO : bạn đang thử sử dụng %s để thao tác một hệ thống tập tin "
+#~ "(%s).\n"
+#~ "Mã nguồn thao tác hệ thống tập tin của %s không phải cùng mạnh\n"
+#~ "với gói dành cho hệ thống tập tin như e2fsprogs.\n"
+#~ "Khuyên bạn chỉ sử dụng %s để thao tác bảng phân vùng, khi nào có thể.\n"
+#~ "Hơn nữa, một phiên bản sau của gói này sẽ gỡ bỏ khả năng hỗ trợ thao tác\n"
+#~ "đối với gần tất cả các kiểu hệ thống tập tin.\n"
+
+#~ msgid "Source device?"
+#~ msgstr "Thiết bị nguồn ?"
+
+#~ msgid "Source partition number?"
+#~ msgstr "Số thứ tự phân vùng nguồn ?"
+
+#~ msgid "Can't copy an extended partition."
+#~ msgstr "Không thể sao chép phân vùng mở rộng."
+
+#~ msgid "Destination partition number?"
+#~ msgstr "Số thứ tự phân vùng đích ?"
+
+#~ msgid ""
+#~ "An extended partition cannot hold a file system.  Did you want mkpart?"
+#~ msgstr "Phân vùng mở rộng không thể có hệ thống tập tin.  Bạn muốn mkpart ?"
+
+#~ msgid "Can't move an extended partition."
+#~ msgstr "Không thể di chuyển phân vùng mở rộng."
+
+#~ msgid "Can't move a partition onto itself.  Try using resize, perhaps?"
+#~ msgstr ""
+#~ "Không thể di chuyển một phân vùng lên chính nó.  Có thể, hãy thử thay đổi "
+#~ "kích thước ?"
+
+#~ msgid "Minor: %d\n"
+#~ msgstr "Phụ : %d\n"
+
+#~ msgid "Flags: %s\n"
+#~ msgstr "Cờ : %s\n"
+
+#~ msgid "File System: %s\n"
+#~ msgstr "Hệ thống Tập tin: %s\n"
+
+#~ msgid "Size:         "
+#~ msgstr "Cỡ :         "
+
+#~ msgid "Minimum size: "
+#~ msgstr "Kích cỡ tối thiểu : "
+
+#~ msgid "Maximum size: "
+#~ msgstr "Kích cỡ tối đa: "
+
+#~ msgid "check"
+#~ msgstr "kiểm"
+
+#~ msgid ""
+#~ "check NUMBER                             do a simple check on the file "
+#~ "system"
+#~ msgstr ""
+#~ "check SỐ                   thực hiện một kiểm tra đơn giản trên hệ thống "
+#~ "tập tin"
+
+#~ msgid "cp"
+#~ msgstr "chép"
+
+#~ msgid ""
+#~ "cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   copy file system to another "
+#~ "partition"
+#~ msgstr ""
+#~ "cp [TỪ THIẾT BỊ] TỪ_SỐ ĐẾN_SỐ      sao chép hệ thống tập tin tới phân "
+#~ "vùng khác"
+
+#~ msgid "mkfs"
+#~ msgstr "tạo hệ thống tập tin"
+
+#~ msgid ""
+#~ "mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on "
+#~ "partition NUMBER"
+#~ msgstr ""
+#~ "mkfs SỐ KIỂU           tạo một hệ thống tập tin KIỂU này trên phân vùng "
+#~ "SỐ thứ tự này"
+
+#~ msgid "mkpartfs"
+#~ msgstr "tạo phân vùng có hệ thống tập tin"
+
+#~ msgid ""
+#~ "mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file "
+#~ "system"
+#~ msgstr ""
+#~ "mkpartfs KIỂU_PV KIỂU_HTTT ĐẦU CUỐI      tạo một phân vùng với một hệ "
+#~ "thống tập tin"
+
+#~ msgid "move"
+#~ msgstr "dời"
+
+#~ msgid "move NUMBER START END                    move partition NUMBER"
+#~ msgstr "move SỐ ĐẦU CUỐI          di chuyển phân vùng SỐ"
+
+#~ msgid "resize"
+#~ msgstr "đổi cỡ"
+
+#~ msgid ""
+#~ "resize NUMBER START END                  resize partition NUMBER and its "
+#~ "file system"
+#~ msgstr ""
+#~ "resize SỐ ĐẦU CUỐI              thay đổi kích cỡ của phân vùng số và hệ "
+#~ "thống tập tin của nó"
+
+#~ msgid "This is not an ECKD disk!  This disk type is not supported!"
+#~ msgstr ""
+#~ "Đây không phải là một đĩa ECKD ! Loại đĩa này không phải được hỗ trợ !"
+
+#~ msgid ""
+#~ "Device %s has a logical sector size of %lld.  Not all parts of GNU Parted "
+#~ "support this at the moment, and the working code is HIGHLY EXPERIMENTAL.\n"
+#~ msgstr ""
+#~ "Thiết bị %s có kích cỡ rãnh ghi hợp lý %lld. Vẫn còn có phần của chương "
+#~ "trình GNU Parted mà không hỗ trợ tính năng này, và mã nguồn làm việc vẫn "
+#~ "RẤT THỰC NGHIỆM.\n"
+
+#~ msgid ""
+#~ "WARNING: the kernel failed to re-read the partition table on %s (%s).  As "
+#~ "a result, it may not reflect all of your changes until after reboot."
+#~ msgstr ""
+#~ "CẢNH BÁO : hạt nhân không đọc lại được bảng phân vùng trên %s (%s). Kết "
+#~ "quả là bạn có thể cần phải khởi động lại để mọi thay đổi có tác dụng."
diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo
new file mode 100644 (file)
index 0000000..9c36599
Binary files /dev/null and b/po/zh_CN.gmo differ
diff --git a/po/zh_CN.po b/po/zh_CN.po
new file mode 100644 (file)
index 0000000..877a8a5
--- /dev/null
@@ -0,0 +1,3009 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2003 Free Software Foundation, Inc.
+# Wang Li <charles@linux.net.cn>, 2003.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: parted 1.6.6\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2011-05-30 13:45+0200\n"
+"PO-Revision-Date: 2003-08-01 11:27+0800\n"
+"Last-Translator: Wang Li <charles@linux.net.cn>\n"
+"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
+"Language: zh_CN\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=gb2312\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr ""
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr ""
+
+#: lib/argmatch.c:153
+#, c-format
+msgid "Valid arguments are:"
+msgstr ""
+
+#: lib/closeout.c:112 libparted/labels/fdasd.c:107
+msgid "write error"
+msgstr ""
+
+#: lib/error.c:181
+#, fuzzy
+msgid "Unknown system error"
+msgstr "δ֪µÄÎļþϵͳÀàÐÍ¡°%s¡±¡£"
+
+#: lib/getopt.c:548 lib/getopt.c:577
+#, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
+msgstr ""
+
+#: lib/getopt.c:625 lib/getopt.c:629
+#, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:638 lib/getopt.c:643
+#, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:686 lib/getopt.c:705
+#, c-format
+msgid "%s: option '--%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:743 lib/getopt.c:746
+#, fuzzy, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "ÎÞ·¨´ò¿ª %s - ÎÞ·¨Ê¶±ðµÄ´ÅÅ̱êÇ©¡£"
+
+#: lib/getopt.c:754 lib/getopt.c:757
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "ÎÞ·¨´ò¿ª %s - ÎÞ·¨Ê¶±ðµÄ´ÅÅ̱êÇ©¡£"
+
+#: lib/getopt.c:806 lib/getopt.c:809
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr ""
+
+#: lib/getopt.c:859 lib/getopt.c:876 lib/getopt.c:1084 lib/getopt.c:1102
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr ""
+
+#: lib/getopt.c:932 lib/getopt.c:948
+#, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:972 lib/getopt.c:990
+#, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:1011 lib/getopt.c:1029
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr ""
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:271
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:272
+msgid "'"
+msgstr ""
+
+#: lib/regcomp.c:133
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:136
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:139
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:142
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:145
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:148
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:151
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:154
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:157
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:160
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:163
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:166
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:169
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:172
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:175
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:178
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:181
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:702
+msgid "No previous regular expression"
+msgstr ""
+
+#. TRANSLATORS: A regular expression testing for an affirmative answer
+#. (english: "yes").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^yesexpr='
+#: lib/rpmatch.c:147
+msgid "^[yY]"
+msgstr ""
+
+#. TRANSLATORS: A regular expression testing for a negative answer
+#. (english: "no").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^noexpr='
+#: lib/rpmatch.c:160
+msgid "^[nN]"
+msgstr ""
+
+#: lib/version-etc.c:74
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr ""
+
+#: lib/version-etc.c:77
+#, c-format
+msgid "Packaged by %s\n"
+msgstr ""
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale.  Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:84
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:86
+msgid ""
+"\n"
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:102
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:106
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:110
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:131
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:139
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:147
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:156
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:167
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package.  Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:245
+#, c-format
+msgid ""
+"\n"
+"Report bugs to: %s\n"
+msgstr ""
+
+#: lib/version-etc.c:247
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr ""
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr ""
+
+#: lib/version-etc.c:253
+#, c-format
+msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
+msgstr ""
+
+#: lib/version-etc.c:256
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr ""
+
+#: lib/xstrtol-error.c:63
+#, c-format
+msgid "invalid %s%s argument `%s'"
+msgstr ""
+
+#: lib/xstrtol-error.c:68
+#, c-format
+msgid "invalid suffix in %s%s argument `%s'"
+msgstr ""
+
+#: lib/xstrtol-error.c:72
+#, c-format
+msgid "%s%s argument `%s' too large"
+msgstr ""
+
+#: libparted/arch/beos.c:245
+msgid "Disk Image"
+msgstr ""
+
+#: libparted/arch/beos.c:346 libparted/arch/gnu.c:277
+#: libparted/arch/linux.c:1545
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "´ò¿ª %s ³ö´í£º%s"
+
+#: libparted/arch/beos.c:357 libparted/arch/gnu.c:287
+#: libparted/arch/linux.c:1556
+#, c-format
+msgid "Unable to open %s read-write (%s).  %s has been opened read-only."
+msgstr "ÎÞ·¨ÒÔ¶Áд·½Ê½´ò¿ª %s (%s)¡£%s ÒÑ°´ÕÕÖ»¶Á·½Ê½´ò¿ª¡£"
+
+#: libparted/arch/beos.c:419 libparted/arch/linux.c:1714
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "ÔÚΪ¶ÁÈ¡ %2$s ¶øµ÷Óàseek Ê± %1$s"
+
+#: libparted/arch/beos.c:452 libparted/arch/gnu.c:465 libparted/arch/gnu.c:564
+#: libparted/arch/gnu.c:692 libparted/arch/linux.c:1674
+#: libparted/arch/linux.c:1755
+#, c-format
+msgid "%s during read on %s"
+msgstr "ÔÚ¶ÁÈ¡ %2$s ÆÚ¼ä %1$s"
+
+#: libparted/arch/beos.c:488 libparted/arch/gnu.c:525
+#: libparted/arch/linux.c:1831
+#, c-format
+msgid "Can't write to %s, because it is opened read-only."
+msgstr "ÓÉÓÚ %s ÊÇÒÔÖ»¶Á·½Ê½´ò¿ªµÄ£¬Òò´ËÎÞ·¨Ð´Èë¡£"
+
+#: libparted/arch/beos.c:504 libparted/arch/linux.c:1856
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "ÔÚΪдÈë %2$s µ÷Óàseek Ê± %1$s"
+
+#: libparted/arch/beos.c:541 libparted/arch/gnu.c:601 libparted/arch/gnu.c:646
+#: libparted/arch/gnu.c:723 libparted/arch/linux.c:1804
+#: libparted/arch/linux.c:1898 libparted/arch/linux.c:1970
+#, c-format
+msgid "%s during write on %s"
+msgstr "ÔÚдÈë %2$s Ê± %1$s"
+
+#: partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr ""
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the operating system about partition table changes.\n"
+"\n"
+"  -d, --dry-run    do not actually inform the operating system\n"
+"  -s, --summary    print a summary of contents\n"
+"  -h, --help       display this help and exit\n"
+"  -v, --version    output version information and exit\n"
+msgstr ""
+
+#: partprobe/partprobe.c:150
+msgid ""
+"\n"
+"When no DEVICE is given, probe all partitions.\n"
+msgstr ""
+
+#: partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: libparted/arch/gnu.c:110
+#, c-format
+msgid "Unable to open %s."
+msgstr "ÎÞ·¨´ò¿ª %s¡£"
+
+#: libparted/arch/gnu.c:130
+msgid "Unable to probe store."
+msgstr "ÎÞ·¨Ì½²â´æ´¢É豸¡£"
+
+#: libparted/arch/gnu.c:368
+#, fuzzy
+msgid ""
+"The partition table cannot be re-read.  This means you need to reboot before "
+"mounting any modified partitions.  You also need to reinstall your boot "
+"loader before you reboot (which may require mounting modified partitions).  "
+"It is impossible do both things!  So you'll need to boot off a rescue disk, "
+"and reinstall your boot loader from the rescue disk.  Read section 4 of the "
+"Parted User documentation for more information."
+msgstr ""
+"ÎÞ·¨ÖØжÁÈë·ÖÇø±í£¬Í¬Ñù£¬Äú±ØÐëÔÚ¼ÓÔØÈκÎÐÞ¸ÄÁ˵ķÖÇø֮ǰÖØÐÂÆô¶¯¡£Äú»¹ÐèÒª"
+"ÔÚÄúÖØÐÂÆô¶¯Ö®Ç°ÖØа²×°Æô¶¯¹ÜÀíÆ÷ (Ëü¿ÉÄÜÐèÒª¼ÓÔØÐÞ¸ÄÁ˵ķÖÇø)¡£Í¬Ê±×öÕâÁ½¼þ"
+"ÊÂÊDz»¿ÉÄܵģ¡ËùÒÔÄú¾ÍÐèÒª´Ó¼±¾ÈÅÌÆô¶¯£¬²¢´Ó¼±¾ÈÅÌÖØа²×°ÄúµÄÆô¶¯¹ÜÀíÆ÷¡£¸ü"
+"¶àÏêÇéÇë²ÎÔÄ Parted Óû§ÎĵµµÄµÚËĽڡ£"
+
+#: libparted/arch/gnu.c:385
+#, fuzzy, c-format
+msgid ""
+"The partition table on %s cannot be re-read (%s).  This means the Hurd knows "
+"nothing about any modifications you made.  You should reboot your computer "
+"before doing anything with %s."
+msgstr ""
+"%s (%s) ÉϵķÖÇø±í¡£ÕâÒâζ×Å Hurd ²»ÖªµÀÈκÎÄúËù×÷µÄÐ޸ġ£ÄúÓ¦¸ÃÔÚ¶Ô %s ×öÈÎ"
+"ºÎ²Ù×÷֮ǰÖØÐÂÆô¶¯ÄúµÄ¼ÆËã»ú¡£"
+
+#: libparted/arch/gnu.c:396 parted/parted.c:1967
+msgid ""
+"You should reinstall your boot loader before rebooting.  Read section 4 of "
+"the Parted User documentation for more information."
+msgstr ""
+"ÄúÓ¦¸ÃÔÚÖØÐÂÆô¶¯Ö®Ç°ÖØа²×°ÄúµÄÆô¶¯¹ÜÀíÆ÷¡£ÏêÇéÇëÔĶÁ Parted Óû§ÎĵµµÄµÚËÄ"
+"½Ú¡£"
+
+#: libparted/arch/gnu.c:788
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%s ÊÔͼ½« %s Í¬²½µ½´ÅÅÌÉÏ"
+
+#: libparted/arch/linux.c:520
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "ÎÞ·¨¶ÔÉ豸 %s - %s ×ö stat ²Ù×÷¡£"
+
+#: libparted/arch/linux.c:577
+#, fuzzy, c-format
+msgid "Unable to determine the dm type of %s."
+msgstr "ÎÞ·¨È·¶¨ %s (%s) µÄ´óС"
+
+#: libparted/arch/linux.c:669
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+
+#: libparted/arch/linux.c:690
+#, c-format
+msgid ""
+"Could not determine physical sector size for %s.\n"
+"Using the logical sector size (%lld)."
+msgstr ""
+
+#: libparted/arch/linux.c:746
+#, fuzzy, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "ÎÞ·¨È·¶¨ %s (%s) µÄ´óС"
+
+#: libparted/arch/linux.c:832
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "ÎÞ·¨»ñÈ¡É豸 %s - %s µÄ±êʶ"
+
+#: libparted/arch/linux.c:841
+msgid "Generic IDE"
+msgstr ""
+
+#: libparted/arch/linux.c:862
+#, c-format
+msgid ""
+"Device %s has multiple (%d) logical sectors per physical sector.\n"
+"GNU Parted supports this EXPERIMENTALLY for some special disk label/file "
+"system combinations, e.g. GPT and ext2/3.\n"
+"Please consult the web site for up-to-date information."
+msgstr ""
+
+#: libparted/arch/linux.c:1039
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "³õʼ»¯ SCSI É豸 %s - %s ³ö´í"
+
+#: libparted/arch/linux.c:1103
+#, fuzzy, c-format
+msgid ""
+"The device %s is so small that it cannot possibly store a file system or "
+"partition table.  Perhaps you selected the wrong device?"
+msgstr ""
+"É豸 %s µÄ³¤¶ÈΪÁ㣬Òò´ËÎÞ·¨±£´æÎļþϵͳ»ò·ÖÇø±í¡£¿ÉÄÜÄúÑ¡ÔñÁË´íÎóµÄÉ豸£¿"
+
+#: libparted/arch/linux.c:1216
+#, fuzzy, c-format
+msgid ""
+"Unable to determine geometry of file/device %s.  You should not use Parted "
+"unless you REALLY know what you're doing!"
+msgstr ""
+"ÎÞ·¨È·¶¨Îļþ/É豸µÄ¼¸ºÎ½á¹¹¡£³ý·ÇÄúȷʵ֪µÀÄúÔÚ×öʲô£¬·ñÔòÄú²»¸ÃʹÓà"
+"Parted£¡"
+
+#: libparted/arch/linux.c:1276
+msgid "Generic SD/MMC Storage Card"
+msgstr ""
+
+#: libparted/arch/linux.c:1329
+msgid "DAC960 RAID controller"
+msgstr "DAC960 RAID ¿ØÖÆÆ÷"
+
+#: libparted/arch/linux.c:1334
+msgid "Promise SX8 SATA Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1339
+msgid "ATA over Ethernet Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1345
+msgid "IBM S390 DASD drive"
+msgstr ""
+
+#: libparted/arch/linux.c:1351
+msgid "IBM iSeries Virtual DASD"
+msgstr ""
+
+#: libparted/arch/linux.c:1356
+msgid "Compaq Smart Array"
+msgstr "Compaq ÖÇÄÜÕóÁÐ"
+
+#: libparted/arch/linux.c:1361
+msgid "ATARAID Controller"
+msgstr "ATARAID ¿ØÖÆÆ÷"
+
+#: libparted/arch/linux.c:1366
+msgid "I2O Controller"
+msgstr "I2O ¿ØÖÆÆ÷"
+
+#: libparted/arch/linux.c:1371
+msgid "User-Mode Linux UBD"
+msgstr ""
+
+#: libparted/arch/linux.c:1384
+#, c-format
+msgid "Linux device-mapper (%s)"
+msgstr ""
+
+#: libparted/arch/linux.c:1395
+msgid "Xen Virtual Block Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1400
+msgid "Unknown"
+msgstr "δ֪"
+
+#: libparted/arch/linux.c:1409
+msgid "Virtio Block Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1414
+msgid "Linux Software RAID Array"
+msgstr ""
+
+#: libparted/arch/linux.c:1421
+msgid "ped_device_new()  Unsupported device type"
+msgstr "ped_device_new()  ²»Ö§³ÖµÄÉ豸ÀàÐÍ"
+
+#: libparted/arch/linux.c:1518 libparted/arch/linux.c:1590
+#, fuzzy, c-format
+msgid "Error fsyncing/closing %s: %s"
+msgstr "´ò¿ª %s ³ö´í£º%s"
+
+#: libparted/arch/linux.c:1754
+#, c-format
+msgid "end of file while reading %s"
+msgstr ""
+
+#: libparted/arch/linux.c:2390
+#, fuzzy, c-format
+msgid ""
+"Error informing the kernel about modifications to partition %s -- %s.  This "
+"means Linux won't know about any changes you made to %s until you reboot -- "
+"so you shouldn't mount it or use it in any way before rebooting."
+msgstr ""
+"֪ͨÄں˹ØÓÚ·ÖÇø %s - %s µÄÐÞ¸Äʱ³ö´í¡£ÕâÒâζ×Å Linux ÔÚÖØÐÂÆô¶¯Ö®Ç°ÎÞ·¨ÖªµÀ"
+"ÄúÕë¶Ô %s Ëù×÷µÄÈκÎÐ޸Ġ- ËùÒÔÄúÒ²²»ÄÜÔÚÖØÐÂÆô¶¯Ö®Ç°¼ÓÔØ»òÒÔÈκη½Ê½Ê¹ÓÃËü¡£"
+
+#: libparted/arch/linux.c:2528
+#, fuzzy, c-format
+msgid "Unable to determine the size and length of %s."
+msgstr "ÎÞ·¨È·¶¨ %s (%s) µÄ´óС"
+
+#: libparted/arch/linux.c:2553
+#, c-format
+msgid "Failed to add partition %d (%s)"
+msgstr ""
+
+#: libparted/arch/linux.c:2580
+#, c-format
+msgid ""
+"Partition(s) %s on %s have been written, but we have been unable to inform "
+"the kernel of the change, probably because it/they are in use.  As a result, "
+"the old partition(s) will remain in use.  You should reboot now before "
+"making further changes."
+msgstr ""
+
+#: libparted/arch/linux.c:2706
+#, fuzzy, c-format
+msgid ""
+"parted was unable to re-read the partition table on %s (%s).  This means "
+"Linux won't know anything about the modifications you made. "
+msgstr ""
+"ÄÚºËÎÞ·¨ÖØжÁÈ¡ %s (%s) ÉϵķÖÇø±í¡£ÕâÒâζÕâ Linux ÔÚÄúÖØÐÂÆô¶¯Ö®Ç°ÎÞ·¨ÖªµÀ"
+"ÈκÎÐ޸ġ£ÄúÓ¦¸ÃÔÚ¶Ô %s ×öÈκβÙ×÷  Ö®Ç°ÖØÐÂÆô¶¯ÄúµÄ¼ÆËã»ú¡£"
+
+#: libparted/cs/geom.c:161
+#, fuzzy, c-format
+msgid "Can't have the end before the start! (start sector=%jd length=%jd)"
+msgstr "ÎÞ·¨ÔÚ¿ªÊ¼Ö®Ç°½áÊø£¡"
+
+#: libparted/cs/geom.c:169
+msgid "Can't have a partition outside the disk!"
+msgstr "ÎÞ·¨È÷ÖÇø³¬³ö´ÅÅÌ£¡"
+
+#: libparted/cs/geom.c:384
+#, fuzzy, c-format
+msgid "Attempt to write sectors %ld-%ld outside of partition on %s."
+msgstr "ÊÔͼдÈë %3$s ÉÏ·ÖÇøÖ®ÍâµÄÉÈÇø %1$ld-%2$ld"
+
+#: libparted/cs/geom.c:424
+msgid "checking for bad blocks"
+msgstr "¼ì²é»µ¿é"
+
+#: libparted/debug.c:96
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:109
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr ""
+
+#: libparted/disk.c:192
+#, fuzzy, c-format
+msgid "%s: unrecognised disk label"
+msgstr "ÎÞ·¨´ò¿ª %s - ÎÞ·¨Ê¶±ðµÄ´ÅÅ̱êÇ©¡£"
+
+#: libparted/disk.c:484
+#, c-format
+msgid ""
+"This libparted doesn't have write support for %s.  Perhaps it was compiled "
+"read-only."
+msgstr "Õâ¸ö libparted ²»Ö§³Ö¶Ô %s µÄд²Ù×÷¡£¿ÉÄÜËüÊÇ°´Ö»¶Á·½Ê½±àÒëµÄ¡£"
+
+#: libparted/disk.c:629
+#, fuzzy, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "·ÖÇø %d Îª %.3fMb£¬µ«ÎļþϵͳΪ %.3fMb¡£"
+
+#: libparted/disk.c:838
+msgid "cylinder_alignment"
+msgstr ""
+
+#: libparted/disk.c:844
+#, c-format
+msgid "Unknown disk flag, %d."
+msgstr ""
+
+#: libparted/disk.c:1283
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "%s ´ÅÅ̱êÇ©²»Ö§³ÖÀ©Õ¹·ÖÇø¡£"
+
+#: libparted/disk.c:1858
+#, c-format
+msgid "%s disk labels don't support logical or extended partitions."
+msgstr "%s ´ÅÅ̱êÇ©²»Ö§³ÖÂß¼­»òÀ©Õ¹·ÖÇø¡£"
+
+#: libparted/disk.c:1871
+#, fuzzy
+msgid "Too many primary partitions."
+msgstr "¹ý¶àµÄÖ÷·ÖÇø"
+
+#: libparted/disk.c:1880
+#, c-format
+msgid ""
+"Can't add a logical partition to %s, because there is no extended partition."
+msgstr "ÓÉÓÚûÓÐÀ©Õ¹·ÖÇø£¬ÎÞ·¨½«Âß¼­·ÖÇøÌí¼Óµ½ %s¡£"
+
+#: libparted/disk.c:1904
+#, fuzzy, c-format
+msgid "Can't have more than one extended partition on %s."
+msgstr "%s Éϲ»Äܺ¬ÓжàÓÚÒ»¸öÀ©Õ¹·ÖÇø"
+
+#: libparted/disk.c:1914
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr "Âß¼­·ÖÇø²»ÄÜ´¦ÓÚÀ©Õ¹·ÖÇøÖ®Íâ¡£"
+
+#: libparted/disk.c:1939
+#, c-format
+msgid "Can't have a logical partition outside of the extended partition on %s."
+msgstr "%s ÉϵÄÂß¼­·ÖÇø²»ÄÜ´¦ÓÚÀ©Õ¹·ÖÇøÖ®Íâ¡£"
+
+#: libparted/disk.c:1949 libparted/disk.c:2008 libparted/disk.c:2186
+#, fuzzy
+msgid "Can't have overlapping partitions."
+msgstr "·ÖÇø²»ÄÜÖصþ"
+
+#: libparted/disk.c:1957
+msgid "Can't have a primary partition inside an extended partition."
+msgstr "À©Õ¹·ÖÇøÖв»Äܺ¬ÓÐÖ÷·ÖÇø¡£"
+
+#: libparted/disk.c:2387
+msgid "metadata"
+msgstr "ÔªÊý¾Ý"
+
+#: libparted/disk.c:2389
+msgid "free"
+msgstr "¿ÕÏпռä"
+
+#: libparted/disk.c:2391 parted/ui.c:1194 parted/ui.c:1222
+msgid "extended"
+msgstr "À©Õ¹·ÖÇø"
+
+#: libparted/disk.c:2393 parted/ui.c:1198 parted/ui.c:1226
+msgid "logical"
+msgstr "Âß¼­·ÖÇø"
+
+#: libparted/disk.c:2395 parted/ui.c:1190 parted/ui.c:1218
+msgid "primary"
+msgstr "Ö÷·ÖÇø"
+
+#: libparted/disk.c:2411
+msgid "boot"
+msgstr "Æô¶¯"
+
+#: libparted/disk.c:2413
+msgid "bios_grub"
+msgstr ""
+
+#: libparted/disk.c:2415
+msgid "root"
+msgstr "¸ù"
+
+#: libparted/disk.c:2417
+msgid "swap"
+msgstr "¶Ô»»·ÖÇø"
+
+#: libparted/disk.c:2419
+msgid "hidden"
+msgstr "Òþ²Ø·ÖÇø"
+
+#: libparted/disk.c:2421
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2423
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2425
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2427
+msgid "hp-service"
+msgstr ""
+
+#: libparted/disk.c:2429
+msgid "palo"
+msgstr ""
+
+#: libparted/disk.c:2431
+msgid "prep"
+msgstr ""
+
+#: libparted/disk.c:2433
+msgid "msftres"
+msgstr ""
+
+#: libparted/disk.c:2435
+msgid "atvrecv"
+msgstr ""
+
+#: libparted/disk.c:2437
+msgid "diag"
+msgstr ""
+
+#: libparted/disk.c:2439
+msgid "legacy_boot"
+msgstr ""
+
+#: libparted/disk.c:2445
+#, c-format
+msgid "Unknown partition flag, %d."
+msgstr ""
+
+#: libparted/exception.c:77
+msgid "Information"
+msgstr "ÐÅÏ¢"
+
+#: libparted/exception.c:78
+msgid "Warning"
+msgstr "¾¯¸æ"
+
+#: libparted/exception.c:79
+msgid "Error"
+msgstr "´íÎó"
+
+#: libparted/exception.c:80
+msgid "Fatal"
+msgstr "ÖÂÃü´íÎó"
+
+#: libparted/exception.c:81
+msgid "Bug"
+msgstr "Bug"
+
+#: libparted/exception.c:82
+msgid "No Implementation"
+msgstr "δʵÏÖ"
+
+#: libparted/exception.c:86
+msgid "Fix"
+msgstr "ÐÞÕý"
+
+#: libparted/exception.c:87
+msgid "Yes"
+msgstr "ÊÇ"
+
+#: libparted/exception.c:88
+msgid "No"
+msgstr "·ñ"
+
+#: libparted/exception.c:89
+msgid "OK"
+msgstr "È·ÈÏ"
+
+#: libparted/exception.c:90
+msgid "Retry"
+msgstr "ÖØÊÔ"
+
+#: libparted/exception.c:91
+msgid "Ignore"
+msgstr "ºöÂÔ"
+
+#: libparted/exception.c:92
+msgid "Cancel"
+msgstr "·ÅÆú"
+
+#: libparted/exception.c:132
+#, fuzzy, c-format
+msgid ""
+"A bug has been detected in GNU Parted.  Refer to the web site of parted "
+"http://www.gnu.org/software/parted/parted.html for more information of what "
+"could be useful for bug submitting!  Please email a bug report to %s "
+"containing at least the version (%s) and the following message:  "
+msgstr ""
+"·¢ÏÖ GNU Parted ÖеĠbug¡£Ç뽫º¬Óа汾 (%s) ºÍÒÔÏÂÐÅÏ¢µÄ bug ±¨¸æ·¢Ë͵½ bug-"
+"parted@gnu.org£º"
+
+#: libparted/labels/aix.c:103
+#, fuzzy
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr "¹ØÓÚ´´½¨ %s ÎļþϵͳµÄÖ§³ÖÉÐδʵÏÖ¡£"
+
+#: libparted/labels/aix.c:114
+#, fuzzy
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr "¹ØÓÚ´´½¨ %s ÎļþϵͳµÄÖ§³ÖÉÐδʵÏÖ¡£"
+
+#: libparted/labels/aix.c:127
+#, fuzzy
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr "¹ØÓÚ´´½¨ %s ÎļþϵͳµÄÖ§³ÖÉÐδʵÏÖ¡£"
+
+#: libparted/labels/aix.c:137
+#, fuzzy
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr "¹ØÓÚ´´½¨ %s ÎļþϵͳµÄÖ§³ÖÉÐδʵÏÖ¡£"
+
+#: libparted/labels/aix.c:155
+#, fuzzy
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr "¹ØÓÚ´´½¨ %s ÎļþϵͳµÄÖ§³ÖÉÐδʵÏÖ¡£"
+
+#: libparted/labels/aix.c:165
+#, fuzzy
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr "¹ØÓÚ´´½¨ %s ÎļþϵͳµÄÖ§³ÖÉÐδʵÏÖ¡£"
+
+#: libparted/labels/bsd.c:571 libparted/labels/dasd.c:833
+#: libparted/labels/dos.c:2176 libparted/labels/dvh.c:787
+#: libparted/labels/gpt.c:1782 libparted/labels/loop.c:247
+#: libparted/labels/mac.c:1426 libparted/labels/pc98.c:748
+#: libparted/labels/rdb.c:1052 libparted/labels/sun.c:780
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "ÎÞ·¨Âú×ã·ÖÇøµÄËùÓÐÏÞÖÆ¡£"
+
+#: libparted/labels/bsd.c:596
+#, fuzzy
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "È¡·¨¶¨Î» bsd ´ÅÅ̱êÇ©²Û"
+
+#: libparted/labels/dasd.c:859
+#, fuzzy
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "È¡·¨¶¨Î» bsd ´ÅÅ̱êÇ©²Û"
+
+#: libparted/labels/dos.c:966
+#, fuzzy, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr "%s ÉϵķÖÇø±íÎÞЧ - ´íÎóµÄÇ©Ãû %x"
+
+#: libparted/labels/dos.c:994
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "ÎÞЧµÄ·ÖÇø±í - %s ³öÏֵݹé·ÖÇø¡£"
+
+#: libparted/labels/dos.c:1504
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr ""
+
+#: libparted/labels/dos.c:2158
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+
+#: libparted/labels/dvh.c:200
+#, fuzzy, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr "%s Ã»ÓÐÀ©Õ¹·ÖÇø (¾íÍ··ÖÇø)¡£Èç¹ûÄúºöÂÔ£¬½«É¾³ýËùÓÐÆô¶¯¾í¡£"
+
+#: libparted/labels/dvh.c:326
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr "УÑéºÍ´íÎ󣬱êÃ÷·ÖÇø±íÒÑË𻵡£"
+
+#: libparted/labels/dvh.c:631
+msgid "Only primary partitions can be root partitions."
+msgstr "Ö»ÓÐÖ÷·ÖÇø¿ÉÒÔÊǸù·ÖÇø¡£"
+
+#: libparted/labels/dvh.c:645
+msgid "Only primary partitions can be swap partitions."
+msgstr "Ö»ÓÐÖ÷·ÖÇø¿ÉÒÔÊǶԻ»·ÖÇø¡£"
+
+#: libparted/labels/dvh.c:659
+msgid "Only logical partitions can be a boot file."
+msgstr "Ö»ÓÐÂß¼­·ÖÇø¿ÉÒÔÊÇÆô¶¯Îļþ¡£"
+
+#: libparted/labels/dvh.c:736
+#, fuzzy, c-format
+msgid ""
+"failed to set dvh partition name to %s:\n"
+"Only logical partitions (boot files) have a name."
+msgstr "Ö»ÓÐÂß¼­·ÖÇø (Æô¶¯Îļþ) ÓµÓÐÃû×Ö¡£"
+
+#: libparted/labels/dvh.c:829
+msgid "Too many primary partitions"
+msgstr "¹ý¶àµÄÖ÷·ÖÇø"
+
+#: libparted/labels/fdasd.c:98
+msgid "open error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:101
+msgid "seek error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:104
+msgid "read error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:110
+msgid "ioctl() error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:114
+msgid "API version mismatch"
+msgstr ""
+
+#: libparted/labels/fdasd.c:118
+#, fuzzy
+msgid "Unsupported disk type"
+msgstr "ped_device_new()  ²»Ö§³ÖµÄÉ豸ÀàÐÍ"
+
+#: libparted/labels/fdasd.c:122
+msgid "Unsupported disk format"
+msgstr ""
+
+#: libparted/labels/fdasd.c:126
+msgid "Disk is in use"
+msgstr ""
+
+#: libparted/labels/fdasd.c:130
+msgid "Syntax error in config file"
+msgstr ""
+
+#: libparted/labels/fdasd.c:134
+msgid "Volume label is corrupted"
+msgstr ""
+
+#: libparted/labels/fdasd.c:138
+msgid "A data set name is corrupted"
+msgstr ""
+
+#: libparted/labels/fdasd.c:142
+msgid "Memory allocation failed"
+msgstr ""
+
+#: libparted/labels/fdasd.c:146
+msgid "Device verification failed"
+msgstr ""
+
+#: libparted/labels/fdasd.c:147
+msgid "The specified device is not a valid DASD device"
+msgstr ""
+
+#: libparted/labels/fdasd.c:150 libparted/labels/vtoc.c:179
+#, fuzzy
+msgid "Fatal error"
+msgstr "ÖÂÃü´íÎó"
+
+#: libparted/labels/fdasd.c:226
+msgid "No room for volume label."
+msgstr ""
+
+#: libparted/labels/fdasd.c:234
+#, fuzzy
+msgid "No room for partition info."
+msgstr "ÕÒ²»µ½ÓÐЧµÄ·ÖÇøÓ³Éä¡£"
+
+#: libparted/labels/fdasd.c:709
+msgid "Invalid VTOC."
+msgstr ""
+
+#: libparted/labels/fdasd.c:766
+msgid "Could not retrieve API version."
+msgstr ""
+
+#: libparted/labels/fdasd.c:769
+#, c-format
+msgid ""
+"The current API version '%d' doesn't match dasd driver API version '%d'!"
+msgstr ""
+
+#: libparted/labels/fdasd.c:806
+#, fuzzy
+msgid "Could not retrieve disk geometry information."
+msgstr "ÎÞ·¨¶ÁÈ¡ %s - %s µÄ¼¸ºÎ½á¹¹¡£"
+
+#: libparted/labels/fdasd.c:810
+msgid "Could not retrieve blocksize information."
+msgstr ""
+
+#: libparted/labels/fdasd.c:815
+msgid "Could not retrieve disk information."
+msgstr ""
+
+#: libparted/labels/gpt.c:493
+#, fuzzy, c-format
+msgid ""
+"%s contains GPT signatures, indicating that it has a GPT table.  However, it "
+"does not have a valid fake msdos partition table, as it should.  Perhaps it "
+"was corrupted -- possibly by a program that doesn't understand GPT partition "
+"tables.  Or perhaps you deleted the GPT table, and are now using an msdos "
+"partition table.  Is this a GPT partition table?"
+msgstr ""
+"%s º¬ÓРGPT Ç©Ãû£¬±êÃ÷Ëüº¬ÓРGPT ±í¡£È»¶ø£¬Ëü²¢²»ÏñÓ¦¸ÃµÄÄÇÑùº¬ÓÐÓÐЧµÄα "
+"msdos ·ÖÇø±í¡£¿ÉÄÜËüÒѾ­Ë𻵠- ¿ÉÄÜÊDz»Àí½â GPT ·ÖÇø±íµÄ³ÌÐòµ¼Öµġ£»òÕßÄúɾ"
+"³ýÁË GPT ±í£¬ÏÖÔÚʹÓàmsdos ·ÖÇø±í¡£ÕâÊÇ GPT ·ÖÇø±íÂð£¿"
+
+#: libparted/labels/gpt.c:693
+#, fuzzy, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise.  Please report this!"
+msgstr ""
+"GPT ·ÖÇø±íµÄ¸ñʽ°æ±¾Îª %x£¬Ëü±È Parted ËùÄÜʶ±ðµÄ°æ±¾ÒªÐ¡£Çë¸æËßÎÒÃÇ£¡bug-"
+"parted@gnu.org"
+
+#: libparted/labels/gpt.c:740
+#, c-format
+msgid ""
+"Not all of the space available to %s appears to be used, you can fix the GPT "
+"to use all of the space (an extra %llu blocks) or continue with the current "
+"setting? "
+msgstr ""
+
+#: libparted/labels/gpt.c:952
+msgid ""
+"The backup GPT table is not at the end of the disk, as it should be.  This "
+"might mean that another operating system believes the disk is smaller.  Fix, "
+"by moving the backup to the end (and removing the old backup)?"
+msgstr ""
+"±¸·Ý GPT ±í²»ÏñÓ¦¸ÃµÄÄÇÑù³öÏÖÔÚ´ÅÅ̵Äĩβ¡£Õâ¿ÉÄÜÒâζÕâÆäËü²Ù×÷ϵͳÏàÐÅ´ÅÅÌС"
+"һЩ¡£Í¨¹ý½«±¸·ÝÒƶ¯µ½Ä©Î² (²¢É¾³ý¾É±¸·Ý) À´ÐÞÕý£¿"
+
+#: libparted/labels/gpt.c:976
+#, fuzzy
+msgid ""
+"Both the primary and backup GPT tables are corrupt.  Try making a fresh "
+"table, and using Parted's rescue feature to recover partitions."
+msgstr ""
+"Ö÷ GPT ºÍ±¸·Ý GPT ¶¼Ëð»µÁË¡£ÊÔͼ´´½¨ÐÂ±í²¢Ê¹ÓàParted µÄ¼±¾È¹¦ÄÜÒÔÐÞ¸´·ÖÇø"
+"񡭜"
+
+#: libparted/labels/gpt.c:987
+#, fuzzy
+msgid ""
+"The backup GPT table is corrupt, but the primary appears OK, so that will be "
+"used."
+msgstr "Ö÷ GPT ±íË𻵣¬µ«±¸·ÝËƺõÊÇÕýÈ·µÄ£¬ËùÒÔʹÓñ¸·Ý¡£"
+
+#: libparted/labels/gpt.c:999
+#, fuzzy
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr "Ö÷ GPT ±íË𻵣¬µ«±¸·ÝËƺõÊÇÕýÈ·µÄ£¬ËùÒÔʹÓñ¸·Ý¡£"
+
+#: libparted/labels/gpt.c:1023
+msgid "primary partition table array CRC mismatch"
+msgstr ""
+
+#: libparted/labels/mac.c:184
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "ÎÞЧµÄ Mac ´ÅÅ̱êÇ©Ç©Ãû %x¡£"
+
+#: libparted/labels/mac.c:231
+msgid "Partition map has no partition map entry!"
+msgstr "·ÖÇøÓ³Éä²»º¬ÓзÖÇøÓ³ÉäÌõÄ¿£¡"
+
+#: libparted/labels/mac.c:279
+#, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr "%s ¶Ô Mac ´ÅÅ̱êÇ©À´ËµÌ«Ð¡ÁË£¡"
+
+#: libparted/labels/mac.c:508
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "·ÖÇø %d º¬ÓÐÎÞЧµÄÇ©Ãû %x¡£"
+
+#: libparted/labels/mac.c:526
+#, c-format
+msgid "Partition %d has an invalid length of 0 bytes!"
+msgstr "·ÖÇø %d º¬ÓÐÎÞЧµÄ³¤¶È 0 ×Ö½Ú£¡"
+
+#: libparted/labels/mac.c:557
+#, fuzzy
+msgid "The data region doesn't start at the start of the partition."
+msgstr "Êý¾ÝÇø²¢Î´´Ó·ÖÇøµÄÆðµã¿ªÊ¼"
+
+#: libparted/labels/mac.c:574
+#, fuzzy
+msgid "The boot region doesn't start at the start of the partition."
+msgstr "Æô¶¯ÇøÓò²¢Î´´Ó·ÖÇøµÄÆðµã¿ªÊ¼"
+
+#: libparted/labels/mac.c:588
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr "·ÖÇøµÄÆô¶¯ÇøÓò²¢Î´Õ¼ÓÃÕû¸ö·ÖÇø¡£"
+
+#: libparted/labels/mac.c:599
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr "·ÖÇøµÄÊý¾ÝÇøÓò²¢Î´Õ¼ÓÃÕû¸ö·ÖÇø¡£"
+
+#: libparted/labels/mac.c:652
+#, c-format
+msgid ""
+"Weird block size on device descriptor: %d bytes is not divisible by 512."
+msgstr "É豸ÃèÊöÖгöÏֹŹֵĿé´óС£º%d ×Ö½Ú²»Äܱ» 512 Õû³ý¡£"
+
+#: libparted/labels/mac.c:665
+#, c-format
+msgid ""
+"The driver descriptor says the physical block size is %d bytes, but Linux "
+"says it is %d bytes."
+msgstr "´ÅÅÌÃèÊö±íÃ÷ÎïÀí¿é´óСΪ %d ×Ö½Ú£¬µ« Linux ÈÏΪËüÊÇ %d ×Ö½Ú¡£"
+
+#: libparted/labels/mac.c:719
+msgid "No valid partition map found."
+msgstr "ÕÒ²»µ½ÓÐЧµÄ·ÖÇøÓ³Éä¡£"
+
+#: libparted/labels/mac.c:780
+#, fuzzy, c-format
+msgid ""
+"Conflicting partition map entry sizes!  Entry 1 says it is %d, but entry %d "
+"says it is %d!"
+msgstr "·ÖÇøÓ³ÉäÌõÄ¿´óС³åÍ»£¡ÌõÄ¿ 1 ËµËüÊÇ %d£¬µ«ÌõÄ¿ %d ËµËüÊÇ %d£¡"
+
+#: libparted/labels/mac.c:811
+#, fuzzy
+msgid "Weird!  There are 2 partitions map entries!"
+msgstr "Ææ¹Ö - Á½¸ö·ÖÇøÓ³ÉäÌõÄ¿£¡"
+
+#: libparted/labels/mac.c:1357
+msgid ""
+"Changing the name of a root or swap partition will prevent Linux from "
+"recognising it as such."
+msgstr "¸Ä±ä¸ù·ÖÇø»ò¶Ô»»·ÖÇøµÄÃû³Æ½«µ¼Ö Linux ÎÞ·¨Ê¶±ðËü¡£"
+
+#: libparted/labels/mac.c:1461
+#, fuzzy
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr "ÎÞ·¨Ìí¼ÓÁíÒ»¸ö·ÖÇø - ·ÖÇøÓ³Éä¹ýС£¡"
+
+#: libparted/labels/pc98.c:331
+#, fuzzy, c-format
+msgid "Invalid partition table on %s."
+msgstr "%s µÄ·ÖÇø±íÎÞЧ"
+
+#: libparted/labels/pc98.c:384 libparted/labels/pc98.c:462
+#, fuzzy, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries.  This is still "
+"unsupported."
+msgstr "·ÖÇø %d ²¢Î´¶ÔÆëµ½ÖùÃæ±ß½ç¡£ÐèÒªÌí¼Ó¶ÔËüµÄÖ§³Ö¡£"
+
+#: libparted/labels/pc98.c:780
+msgid "Can't add another partition."
+msgstr "ÎÞ·¨Ìí¼ÓÆäËü·ÖÇø¡£"
+
+#: libparted/labels/pt-tools.c:125
+#, c-format
+msgid ""
+"partition length of %jd sectors exceeds the %s-partition-table-imposed "
+"maximum of %jd"
+msgstr ""
+
+#: libparted/labels/pt-tools.c:138
+#, c-format
+msgid ""
+"starting sector number, %jd exceeds the %s-partition-table-imposed maximum "
+"of %jd"
+msgstr ""
+
+#: libparted/labels/rdb.c:169
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:484
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr ""
+
+#: libparted/labels/rdb.c:573
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr ""
+
+#: libparted/labels/rdb.c:592
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:691
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:699
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:707
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:715
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:742
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr ""
+
+#: libparted/labels/rdb.c:1080
+#, fuzzy
+msgid "Unable to allocate a partition number."
+msgstr "ÐèÒª·ÖÇø±àºÅ¡£"
+
+#: libparted/labels/sun.c:161
+msgid "Corrupted Sun disk label detected."
+msgstr "¼ì²âµ½Ëð»µÁ˵ĠSun ´ÅÅ̱êÇ©¡£"
+
+#: libparted/labels/sun.c:276
+#, fuzzy, c-format
+msgid ""
+"The disk CHS geometry (%d,%d,%d) reported by the operating system does not "
+"match the geometry stored on the disk label (%d,%d,%d)."
+msgstr ""
+"´ÅÅÌ CHS ¼¸ºÎ½á¹¹ (%d,%d,%d) ÓÚ±£´æÔÚ´ÅÅ̱êÇ© (%d,%d,%d) Öеļ¸ºÎ½á¹¹²»Æ¥Åä¡£"
+
+#: libparted/labels/sun.c:298
+#, c-format
+msgid "The disk label describes a disk bigger than %s."
+msgstr "´ÅÅ̱êÇ©ÃèÊöµÄ´ÅÅÌ´óÓÚ %s¡£"
+
+#: libparted/labels/sun.c:473
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr ""
+
+#: libparted/labels/sun.c:812
+msgid ""
+"The Whole Disk partition is the only available one left.  Generally, it is "
+"not a good idea to overwrite this partition with a real one.  Solaris may "
+"not be able to boot without it, and SILO (the sparc boot loader) appreciates "
+"it as well."
+msgstr ""
+
+#: libparted/labels/sun.c:827
+msgid "Sun disk label is full."
+msgstr "Sun ´ÅÅ̱êÇ©ÒÑÂú¡£"
+
+#: libparted/labels/vtoc.c:164
+msgid "opening of device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:168
+msgid "seeking on device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:172
+msgid "writing to device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:176
+msgid "reading from device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:299 libparted/labels/vtoc.c:308
+#: libparted/labels/vtoc.c:329 libparted/labels/vtoc.c:336
+#, fuzzy
+msgid "Could not read volume label."
+msgstr "ÎÞ·¨¶ÁÈ¡ %s - %s µÄ¼¸ºÎ½á¹¹¡£"
+
+#: libparted/labels/vtoc.c:356 libparted/labels/vtoc.c:363
+#, fuzzy
+msgid "Could not write volume label."
+msgstr "ÎÞ·¨¼ì²âÎļþϵͳ¡£"
+
+#: libparted/labels/vtoc.c:469
+msgid "Could not read VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:496
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:516
+msgid "Could not write VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:522
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:529
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:536
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:543
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/libparted.c:230 libparted/libparted.c:245
+msgid "Out of memory."
+msgstr "ÄÚ´æºÄ¾¡¡£"
+
+#: libparted/unit.c:138
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr ""
+
+#: libparted/unit.c:384
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr ""
+
+#: libparted/unit.c:392
+#, c-format
+msgid "The maximum head value is %d."
+msgstr ""
+
+#: libparted/unit.c:399
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr ""
+
+#: libparted/unit.c:411 libparted/unit.c:556
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr ""
+
+#: libparted/unit.c:531
+msgid "Invalid number."
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:62 libparted/fs/amiga/apfs.c:55
+#: libparted/fs/amiga/asfs.c:69
+#, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:77 libparted/fs/amiga/apfs.c:68
+#: libparted/fs/amiga/asfs.c:81
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:82 libparted/fs/amiga/apfs.c:73
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:98 libparted/fs/amiga/apfs.c:84
+#: libparted/fs/amiga/asfs.c:87 libparted/fs/amiga/asfs.c:101
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:71
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:188
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:201
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:211
+#, fuzzy, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "ÔÚдÈë %2$s Ê± %1$s"
+
+#: libparted/fs/amiga/amiga.c:277
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:288
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:317
+#, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr ""
+
+#: libparted/fs/fat/fat.c:174
+#, fuzzy
+msgid ""
+"GNU Parted was miscompiled: the FAT boot sector should be 512 bytes.  FAT "
+"support will be disabled."
+msgstr "GNU parted ±àÒë´íÎó£ºFAT Æô¶¯ÉÈÇøӦΪ 512 ×Ö½Ú¡£FAT Ö§³Ö½«±»¹Ø±Õ¡£"
+
+#: libparted/fs/fat/bootsector.c:49 libparted/fs/fat/bootsector.c:56
+msgid "File system has an invalid signature for a FAT file system."
+msgstr "Îļþϵͳº¬ÓÐÎÞЧµÄ FAT ÎļþϵͳǩÃû¡£"
+
+#: libparted/fs/fat/bootsector.c:64
+msgid "File system has an invalid sector size for a FAT file system."
+msgstr "ÎļþϵͳµÄÉÈÇø´óС¶Ô FAT ÎļþϵͳÀ´ËµÎÞЧ¡£"
+
+#: libparted/fs/fat/bootsector.c:71
+msgid "File system has an invalid cluster size for a FAT file system."
+msgstr "ÎļþϵͳµÄ´Ø´óС¶Ô FAT ÎļþϵͳÀ´ËµÎÞЧ¡£"
+
+#: libparted/fs/fat/bootsector.c:78
+#, fuzzy
+msgid ""
+"File system has an invalid number of reserved sectors for a FAT file system."
+msgstr "ÎļþϵͳµÄ±£ÁôÉÈÇøÊý¶Ô FAT ÎļþϵͳÀ´ËµÎÞЧ¡£"
+
+#: libparted/fs/fat/bootsector.c:85
+#, fuzzy
+msgid "File system has an invalid number of FATs."
+msgstr "ÎļþϵͳµÄ FATS ÊýÁ¿ÎÞЧ¡£"
+
+#: libparted/fs/fat/bootsector.c:156
+#, c-format
+msgid ""
+"This file system has a logical sector size of %d.  GNU Parted is known not "
+"to work properly with sector sizes other than 512 bytes."
+msgstr ""
+"´ËÎļþϵͳµÄÂß¼­ÉÈÇø´óСΪ %d¡£GNU Parted ²»ÄÜÔÚÉÈÇø´óС²»ÊÇ 512 ×Ö½ÚµÄÇé¿öÏÂ"
+"ÕýÈ·¹¤×÷¡£"
+
+#: libparted/fs/fat/bootsector.c:181
+#, c-format
+msgid ""
+"The file system's CHS geometry is (%d, %d, %d), which is invalid.  The "
+"partition table's CHS geometry is (%d, %d, %d).  If you select Ignore, the "
+"file system's CHS geometry will be left unchanged.  If you select Fix, the "
+"file system's CHS geometry will be set to match the partition table's CHS "
+"geometry."
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:230
+msgid "FAT boot sector says logical sector size is 0.  This is weird. "
+msgstr "FAT Æô¶¯ÉÈÇøÉù³ÆÂß¼­ÉÈÇøµÄ´óСΪÁã¡£ÕâºÜÆæ¹Ö¡£"
+
+#: libparted/fs/fat/bootsector.c:236
+msgid "FAT boot sector says there are no FAT tables.  This is weird. "
+msgstr "FAT Æô¶¯ÉÈÇøÉù³ÆûÓРFAT ±í¡£ÕâºÜÆæ¹Ö¡£"
+
+#: libparted/fs/fat/bootsector.c:242
+msgid "FAT boot sector says clusters are 0 sectors.  This is weird. "
+msgstr "FAT Æô¶¯ÉÈÇøÉù³Æ×äÊÇÁãÉÈÇø¡£ÕâºÜÆæ¹Ö¡£"
+
+#: libparted/fs/fat/bootsector.c:252
+#, fuzzy
+msgid "File system is FAT12, which is unsupported."
+msgstr "ÎļþϵͳΪ FAT12£¬²»Ö§³Ö¡£"
+
+#: libparted/fs/fat/bootsector.c:428
+#, c-format
+msgid ""
+"The information sector has the wrong signature (%x).  Select cancel for now, "
+"and send in a bug report.  If you're desperate, it's probably safe to ignore."
+msgstr ""
+"ÐÅÏ¢ÉÈÇøµÄÇ©Ãû´íÎó (%x)¡£ÏÖÔÚÑ¡Ôñ·ÅÆú£¬²¢·¢ËÍ bug ±¨¸æ¡£Èç¹ûÄú²»¹ËÒ»ÇУ¬Ñ¡Ôñ"
+"ºöÂÔÓпÉÄÜÊÇ¡°°²È«¡±µÄ¡£"
+
+#: libparted/fs/linux_swap/linux_swap.c:247
+#, fuzzy, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "ÎÞ·¨Ê¶±ðµÄ linux ¶Ô»»Ç©Ãû¡°%10s¡±¡£"
+
+#: libparted/fs/linux_swap/linux_swap.c:290
+#, fuzzy, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "ÎÞ·¨Ê¶±ðµÄ linux ¶Ô»»Ç©Ãû¡°%10s¡±¡£"
+
+#: libparted/fs/linux_swap/linux_swap.c:330
+#, fuzzy, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "ÎÞ·¨Ê¶±ðµÄ linux ¶Ô»»Ç©Ãû¡°%10s¡±¡£"
+
+#: libparted/fs/hfs/probe.c:50
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to "
+"%d bytes."
+msgstr ""
+
+#: parted/parted.c:123
+msgid "displays this help message"
+msgstr "ÏÔʾ´ËÇóÖúÐÅÏ¢"
+
+#: parted/parted.c:124
+msgid "lists partition layout on all block devices"
+msgstr ""
+
+#: parted/parted.c:125
+msgid "displays machine parseable output"
+msgstr ""
+
+#: parted/parted.c:126
+msgid "never prompts for user intervention"
+msgstr "´Ó²»ÌáʾÓû§"
+
+#: parted/parted.c:127
+msgid "displays the version"
+msgstr "ÏÔʾ°æ±¾"
+
+#: parted/parted.c:128
+#, fuzzy
+msgid "alignment for new partitions"
+msgstr "²»ÄÜÖ»¸´ÖÆÀ©Õ¹·ÖÇø¡£"
+
+#: parted/parted.c:140
+#, fuzzy
+msgid ""
+"NUMBER is the partition number used by Linux.  On MS-DOS disk labels, the "
+"primary partitions number from 1 to 4, logical partitions from 5 onwards.\n"
+msgstr ""
+"MINOR ÊÇ Linux Ê¹ÓõķÖÇø±àºÅ¡£ÔÚ msdos ´ÅÅÌ    ±êÇ©ÖУ¬Ö÷·ÖÇø±àºÅΪ 1 - 4£¬"
+"Âß¼­·ÖÇø´Ó 5 ¿ªÊ¼¡£\n"
+
+#: parted/parted.c:143
+msgid "LABEL-TYPE is one of: "
+msgstr "¡°±êÇ©ÀàÐÍ¡±ÊÇÒÔÏÂÈÎÒâÒ»Ï"
+
+#: parted/parted.c:144
+msgid "FLAG is one of: "
+msgstr "¡°±êÖ¾¡±ÊÇÒÔÏÂÈÎÒâÒ»Ï"
+
+#: parted/parted.c:145
+#, fuzzy
+msgid "UNIT is one of: "
+msgstr "¡°±êÖ¾¡±ÊÇÒÔÏÂÈÎÒâÒ»Ï"
+
+#: parted/parted.c:146
+msgid "desired alignment: minimum or optimal"
+msgstr ""
+
+#: parted/parted.c:147
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "¡°·ÖÇøÀàÐÍ¡±ÊÇÖ÷·ÖÇø¡¢Âß¼­·ÖÇø¡¢À©Õ¹·ÖÇøÖ®Ò»\n"
+
+#: parted/parted.c:149
+msgid "FS-TYPE is one of: "
+msgstr "¡°ÎļþϵͳÀàÐÍ¡±ÊÇÒÔÏÂÈÎÒâÒ»Ï"
+
+#: parted/parted.c:150
+#, fuzzy
+msgid ""
+"START and END are disk locations, such as 4GB or 10%.  Negative values count "
+"from the end of the disk.  For example, -1s specifies exactly the last "
+"sector.\n"
+msgstr "¡°Æðʼµã¡±ºÍ¡°ÖÕÖ¹µã¡±ÒÔÕ×Ϊµ¥Î»¡£¸ºÖµ±íʾ´Ó´ÅÅÌÄ©¶Î¿ªÊ¼¼ÆÊý¡£\n"
+
+#: parted/parted.c:153
+msgid "STATE is one of: on, off\n"
+msgstr "״̬Ϊ£º¿ª¡¢¹Ø\n"
+
+#: parted/parted.c:154
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "DEVICE Í¨³£Îª /dev/hda »ò /dev/sda\n"
+
+#: parted/parted.c:155
+msgid "NAME is any word you want\n"
+msgstr "NAME ÊÇÄúÐèÒªµÄÈκε¥´Ê\n"
+
+#: parted/parted.c:158
+#, fuzzy
+msgid ""
+"Copyright (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"This program is free software, covered by the GNU General Public License.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+msgstr ""
+"°æȨËùÓР(C) 1998, 1999, 2000, 2001, 2002, 2003 ×ÔÓÉÈí¼þ»ù½ð»á¡£\n"
+"±¾³ÌÐòΪ×ÔÓÉÈí¼þ£¬°´ GNU Í¨Óù«¹²Ðí¿ÉÖ¤·¢ÐС£\n"
+"\n"
+"·¢Ðб¾³ÌÐòÊÇÏ£ÍûËüÄܹ»ÓÐÓ㬵«Ã»ÓÐÈκε£±££»ÉõÖÁ²»°üÀ¨Òþº¬µÄÊÊÏúºÍÊʺÏÌض¨ÓÃ"
+";µÄ±£Ö¤¡£ÏêÇéÇë²Î¼û GNU Í¨Óù«¹²Ðí¿ÉÖ¤¡£\n"
+
+#: parted/parted.c:204
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(Ê£Óàʱ¼ä %.2d:%.2d)"
+
+#: parted/parted.c:223
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+
+#: parted/parted.c:241
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "ÕýÔÚʹÓà%s ÉϵķÖÇø¡£"
+
+#: parted/parted.c:253
+#, c-format
+msgid ""
+"The existing disk label on %s will be destroyed and all data on this disk "
+"will be lost. Do you want to continue?"
+msgstr ""
+
+#: parted/parted.c:502
+msgid "New disk label type?"
+msgstr "еĴÅÅ̱êÇ©ÀàÐÍ£¿"
+
+#: parted/parted.c:562
+msgid "Partition type?"
+msgstr "·ÖÇøÀàÐÍ£¿"
+
+#: parted/parted.c:580 parted/parted.c:766
+msgid "Partition name?"
+msgstr "·ÖÇøÃû³Æ£¿"
+
+#: parted/parted.c:588
+msgid "File system type?"
+msgstr "ÎļþϵͳÀàÐÍ£¿"
+
+#: parted/parted.c:594 parted/parted.c:1342
+msgid "Start?"
+msgstr "Æðʼµã£¿"
+
+#: parted/parted.c:596 parted/parted.c:1344
+msgid "End?"
+msgstr "½áÊøµã£¿"
+
+#: parted/parted.c:661
+#, fuzzy, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s.%s"
+msgstr ""
+"ÄúÒªÇóÔÚ %.3f - %.3fMb µÄλÖô´½¨·ÖÇø¡£¿É¹ÜÀíµÄ×îÏà½ü·ÖÇøΪ %.3f-%.3fMb¡£"
+
+#: parted/parted.c:666
+msgid ""
+"\n"
+"Is this still acceptable to you?"
+msgstr ""
+
+#: parted/parted.c:688
+msgid "The resulting partition is not properly aligned for best performance."
+msgstr ""
+
+#: parted/parted.c:763 parted/parted.c:1383 parted/parted.c:1455
+#: parted/parted.c:1489
+msgid "Partition number?"
+msgstr "·ÖÇø±àºÅ£¿"
+
+#: parted/parted.c:841
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d.  Each cylinder is %s.\n"
+msgstr ""
+
+#: parted/parted.c:881
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr ""
+
+#: parted/parted.c:883
+#, fuzzy, c-format
+msgid "Disk %s: %s\n"
+msgstr "%s  %s  %s"
+
+#: parted/parted.c:884
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr ""
+
+#: parted/parted.c:896
+#, fuzzy, c-format
+msgid "Partition Table: %s\n"
+msgstr "·ÖÇøÃû³Æ£¿"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Number"
+msgstr ""
+
+#: parted/parted.c:1007 parted/parted.c:1010
+#, fuzzy
+msgid "Start"
+msgstr "Æðʼµã£¿"
+
+#: parted/parted.c:1008 parted/parted.c:1011
+#, fuzzy
+msgid "End"
+msgstr "½áÊøµã£¿"
+
+#: parted/parted.c:1011
+#, fuzzy
+msgid "Size"
+msgstr "resize"
+
+#: parted/parted.c:1015
+msgid "Type"
+msgstr ""
+
+#: parted/parted.c:1017
+#, fuzzy
+msgid "File system"
+msgstr "Îļþϵͳ£¿"
+
+#: parted/parted.c:1020
+#, fuzzy
+msgid "Name"
+msgstr "name"
+
+#: parted/parted.c:1022
+msgid "Flags"
+msgstr "±êÖ¾"
+
+#: parted/parted.c:1079
+msgid "Free Space"
+msgstr ""
+
+#: parted/parted.c:1241
+#, fuzzy, c-format
+msgid ""
+"A %s %s partition was found at %s -> %s.  Do you want to add it to the "
+"partition table?"
+msgstr ""
+"ÔÚ %3$.3fMb -> %4$.3fMb ´¦ÕÒµ½Ò»¸ö %1$s %2$s ·ÖÇø¡£ÄúÏ£Íû½«ÆäÌí¼Óµ½·ÖÇø±íÖÐ"
+"Âð£¿"
+
+#: parted/parted.c:1280
+msgid "searching for file systems"
+msgstr "ÕýÔÚËÑË÷Îļþϵͳ"
+
+#: parted/parted.c:1408
+msgid "New device?"
+msgstr "ÐÂÉ豸£¿"
+
+#: parted/parted.c:1453
+msgid "alignment type(min/opt)"
+msgstr ""
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d aligned\n"
+msgstr ""
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d not aligned\n"
+msgstr ""
+
+#: parted/parted.c:1491
+#, fuzzy
+msgid "Flag to Invert?"
+msgstr "ÒªÐ޸ĵıêÖ¾£¿"
+
+#: parted/parted.c:1496
+msgid "New state?"
+msgstr "ÐÂ״̬£¿"
+
+#: parted/parted.c:1533
+msgid "Unit?"
+msgstr ""
+
+#: parted/parted.c:1651
+#, fuzzy
+msgid "align-check"
+msgstr "¼ì²é"
+
+#: parted/parted.c:1654
+msgid ""
+"align-check TYPE N                        check partition N for TYPE(min|"
+"opt) alignment"
+msgstr ""
+
+#: parted/parted.c:1662
+msgid "help"
+msgstr "help"
+
+#: parted/parted.c:1665
+#, fuzzy
+msgid ""
+"help [COMMAND]                           print general help, or help on "
+"COMMAND"
+msgstr "help [COMMAND]                ´òӡͨÓÃÇóÖúÐÅÏ¢£¬»ò¹ØÓÚ COMMAND µÄÐÅÏ¢"
+
+#: parted/parted.c:1671
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:1671
+#, fuzzy
+msgid "mktable"
+msgstr "mklabel"
+
+#: parted/parted.c:1674
+#, fuzzy
+msgid ""
+"mklabel,mktable LABEL-TYPE               create a new disklabel (partition "
+"table)"
+msgstr "mklabel ±êÇ©ÀàÐÍ              ´´½¨ÐµĴÅÅ̱êÇ© (·ÖÇø±í)"
+
+#: parted/parted.c:1680
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:1683
+#, fuzzy
+msgid "mkpart PART-TYPE [FS-TYPE] START END     make a partition"
+msgstr "mkpart ·ÖÇøÀàÐÍ [ÎļþϵͳÀàÐÍ] Æðʼµã ÖÕÖ¹µã      ´´½¨Ò»¸ö·ÖÇø"
+
+#: parted/parted.c:1689
+#, fuzzy
+msgid ""
+"'mkpart' makes a partition without creating a new file system on the "
+"partition.  FS-TYPE may be specified to set an appropriate partition ID.\n"
+msgstr ""
+"mkpart ´´½¨·ÖÇø¶ø²»ÔÚ·ÖÇøÉÏ´´½¨ÐÂÎļþϵͳ¡£¡°ÎļþϵͳÀàÐÍ¡±¿ÉÒÔÓÃÓÚÉèÖÃÊʵ±µÄ"
+"·ÖÇø±êʶ¡£\n"
+
+#: parted/parted.c:1694
+msgid "name"
+msgstr "name"
+
+#: parted/parted.c:1697
+#, fuzzy
+msgid "name NUMBER NAME                         name partition NUMBER as NAME"
+msgstr "name MINOR Ãû³Æ               ½«±àºÅΪ MINOR µÄ·ÖÇøÃüÃûΪ¡°Ãû³Æ¡±"
+
+#: parted/parted.c:1702
+msgid "print"
+msgstr "print"
+
+#: parted/parted.c:1705
+msgid ""
+"print [devices|free|list,all|NUMBER]     display the partition table, "
+"available devices, free space, all found partitions, or a particular "
+"partition"
+msgstr ""
+
+#: parted/parted.c:1710
+#, fuzzy
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+"²»´ø²ÎÊý£¬print ÏÔʾÕû¸ö·ÖÇø±í¡£\n"
+"Èç¹û¸ø³öÁË·ÖÇø±í£¬¾ÍÏÔʾ¸ü¶à\n"
+"¹ØÓÚ·ÖÇøµÄÏêϸÐÅÏ¢¡£\n"
+
+#: parted/parted.c:1712
+msgid "  devices   : display all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:1713
+msgid ""
+"  free      : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+
+#: parted/parted.c:1715
+msgid ""
+"  list, all : display the partition tables of all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:1716
+msgid ""
+"  NUMBER    : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+
+#: parted/parted.c:1721
+msgid "quit"
+msgstr "quit"
+
+#: parted/parted.c:1724
+#, fuzzy
+msgid "quit                                     exit program"
+msgstr "quit                          Í˳ö³ÌÐò"
+
+#: parted/parted.c:1729
+msgid "rescue"
+msgstr "rescue"
+
+#: parted/parted.c:1732
+#, fuzzy
+msgid ""
+"rescue START END                         rescue a lost partition near START "
+"and END"
+msgstr ""
+"rescue Æðʼµã ÖÕÖ¹µã          Íì¾ÈÁÙ½ü¡°Æðʼµã¡±¡¢¡°ÖÕÖ¹µã¡±µÄÒÅʧµÄ·ÖÇø"
+
+#: parted/parted.c:1738
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:1741
+#, fuzzy
+msgid "rm NUMBER                                delete partition NUMBER"
+msgstr "rm MINOR                      É¾³ý±àºÅΪ MINOR µÄ·ÖÇø"
+
+#: parted/parted.c:1746
+msgid "select"
+msgstr "select"
+
+#: parted/parted.c:1749
+#, fuzzy
+msgid "select DEVICE                            choose the device to edit"
+msgstr "select É豸                 Ñ¡ÔñÒª±à¼­µÄÉ豸"
+
+#: parted/parted.c:1754
+msgid "set"
+msgstr "set"
+
+#: parted/parted.c:1757
+#, fuzzy
+msgid ""
+"set NUMBER FLAG STATE                    change the FLAG on partition NUMBER"
+msgstr "set MINOR ±êÖ¾ ×´Ì¬           ¸Ä±ä±àºÅΪ MINOR µÄ·ÖÇøµÄ±êÖ¾"
+
+#: parted/parted.c:1763
+msgid "toggle"
+msgstr ""
+
+#: parted/parted.c:1766
+msgid ""
+"toggle [NUMBER [FLAG]]                   toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+
+#: parted/parted.c:1772
+#, fuzzy
+msgid "unit"
+msgstr "quit"
+
+#: parted/parted.c:1775
+#, fuzzy
+msgid "unit UNIT                                set the default unit to UNIT"
+msgstr "quit                          Í˳ö³ÌÐò"
+
+#: parted/parted.c:1780
+msgid "version"
+msgstr ""
+
+#: parted/parted.c:1783
+msgid ""
+"version                                  display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+
+#: parted/parted.c:1787
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+
+#: parted/parted.c:1855
+#, c-format
+msgid "Usage: %s [-hlmsv] [-a<align>] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+
+#: parted/parted.c:1899
+msgid "No device found"
+msgstr "ûÓÐÕÒµ½É豸"
+
+#: parted/parted.c:1936
+msgid "WARNING: You are not superuser.  Watch out for permissions."
+msgstr ""
+
+#: parted/parted.c:1974
+#, fuzzy
+msgid "You may need to update /etc/fstab.\n"
+msgstr "Èç¹û±ØÒª£¬²»ÒªÍü¼Ç¸üР/etc/fstab¡£\n"
+
+#: parted/ui.c:162
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+
+#: parted/ui.c:165
+#, fuzzy
+msgid ""
+"Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]\n"
+"Apply COMMANDs with PARAMETERS to DEVICE.  If no COMMAND(s) are given, run "
+"in\n"
+"interactive mode.\n"
+msgstr ""
+"Ó÷¨£ºparted [Ñ¡Ïî]... [É豸 [ÃüÁî [²ÎÊý]...]...]\n"
+"½«´øÓС°²ÎÊý¡±µÄÃüÁîÓ¦ÓÃÓÚ¡°É豸¡±¡£Èç¹ûûÓиø³ö¡°ÃüÁ£¬ÔòÒÔ½»»¥Ä£Ê½ÔË"
+"ÐС£\n"
+
+#: parted/ui.c:170
+#, c-format
+msgid ""
+"\n"
+"\n"
+"You found a bug in GNU Parted! Here's what you have to do:\n"
+"\n"
+"Don't panic! The bug has most likely not affected any of your data.\n"
+"Help us to fix this bug by doing the following:\n"
+"\n"
+"Check whether the bug has already been fixed by checking\n"
+"the last version of GNU Parted that you can find at:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Please check this version prior to bug reporting.\n"
+"\n"
+"If this has not been fixed yet or if you don't know how to check,\n"
+"please visit the GNU Parted website:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"for further information.\n"
+"\n"
+"Your report should contain the version of this release (%s)\n"
+"along with the error message below, the output of\n"
+"\n"
+"\tparted DEVICE unit co print unit s print\n"
+"\n"
+"and the following history of commands you entered.\n"
+"Also include any additional information about your setup you\n"
+"consider important.\n"
+msgstr ""
+
+#: parted/ui.c:291
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+
+#: parted/ui.c:354
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+
+#: parted/ui.c:360
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+
+#: parted/ui.c:365
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+
+#: parted/ui.c:389
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:394
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+
+#: parted/ui.c:399
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:404
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+
+#: parted/ui.c:409
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+
+#: parted/ui.c:414
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+
+#: parted/ui.c:419
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+
+#: parted/ui.c:424
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+
+#: parted/ui.c:429
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+
+#: parted/ui.c:453
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+
+#: parted/ui.c:458
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+
+#: parted/ui.c:463
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+
+#: parted/ui.c:468
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+
+#: parted/ui.c:473
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+
+#: parted/ui.c:478
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+
+#: parted/ui.c:891
+#, fuzzy, c-format
+msgid "invalid token: %s"
+msgstr "ÎÞ·¨´ò¿ª %s¡£"
+
+#: parted/ui.c:1048
+msgid "Expecting a partition number."
+msgstr "ÐèÒª·ÖÇø±àºÅ¡£"
+
+#: parted/ui.c:1057
+msgid "Partition doesn't exist."
+msgstr "·ÖÇø²»´æÔÚ¡£"
+
+#: parted/ui.c:1077
+msgid "Expecting a file system type."
+msgstr "ÐèÒªÎļþϵͳÀàÐÍ¡£"
+
+#: parted/ui.c:1084
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "δ֪µÄÎļþϵͳÀàÐÍ¡°%s¡±¡£"
+
+#: parted/ui.c:1105
+msgid "Expecting a disk label type."
+msgstr "ÐèÒª´ÅÅ̱êÇ©ÀàÐÍ¡£"
+
+#: parted/ui.c:1203
+msgid "Can't create any more partitions."
+msgstr "ÎÞ·¨´´½¨¸ü¶à·ÖÇø¡£"
+
+#: parted/ui.c:1213
+msgid "Expecting a partition type."
+msgstr "ÐèÒª·ÖÇøÀàÐÍ¡£"
+
+#: parted/ui.c:1361
+msgid "on"
+msgstr "¿ª"
+
+#: parted/ui.c:1362
+msgid "off"
+msgstr "¹Ø"
+
+#: parted/ui.c:1379
+msgid "optimal"
+msgstr ""
+
+#: parted/ui.c:1380
+msgid "minimal"
+msgstr ""
+
+#: parted/ui.c:1513
+msgid "OPTIONs:"
+msgstr "Ñ¡Ï"
+
+#: parted/ui.c:1518
+msgid "COMMANDs:"
+msgstr "ÃüÁ"
+
+#: parted/ui.c:1521
+#, c-format
+msgid ""
+"\n"
+"Report bugs to %s\n"
+msgstr ""
+
+#: parted/ui.c:1528
+#, c-format
+msgid "Using %s\n"
+msgstr "ʹÓà%s\n"
+
+#: parted/ui.c:1602
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr ""
+
+#, fuzzy
+#~ msgid "too few arguments"
+#~ msgstr "¹ý¶àµÄ»µÒ³¡£"
+
+#, fuzzy
+#~ msgid "too many arguments"
+#~ msgstr "¹ý¶àµÄ»µÒ³¡£"
+
+#, fuzzy
+#~ msgid "invalid minor device number: %s"
+#~ msgstr "ÎÞ·¨´ò¿ª %s¡£"
+
+#~ msgid "Could not detect file system."
+#~ msgstr "ÎÞ·¨¼ì²âÎļþϵͳ¡£"
+
+#, fuzzy
+#~ msgid "The file system is bigger than its volume!"
+#~ msgstr "Îļþϵͳ±ÈËüµÄ¾í»¹´ó£¡"
+
+#~ msgid "Support for opening %s file systems is not implemented yet."
+#~ msgstr "¹ØÓÚ´ò¿ª %s ÎļþϵͳµÄÖ§³ÖÉÐδʵÏÖ¡£"
+
+#~ msgid "Support for creating %s file systems is not implemented yet."
+#~ msgstr "¹ØÓÚ´´½¨ %s ÎļþϵͳµÄÖ§³ÖÉÐδʵÏÖ¡£"
+
+#~ msgid "Support for checking %s file systems is not implemented yet."
+#~ msgstr "¹ØÓÚ¼ì²é %s ÎļþϵͳµÄÖ§³ÖÉÐδʵÏÖ¡£"
+
+#~ msgid "raw block copying"
+#~ msgstr "ԭʼ¿é¸´ÖÆ"
+
+#~ msgid "growing file system"
+#~ msgstr "ÕýÔÚÀ©´óÎļþϵͳ"
+
+#~ msgid "Can't copy onto an overlapping partition."
+#~ msgstr "ÎÞ·¨¸´ÖƵ½ÖصþµÄ·ÖÇø¡£"
+
+#, fuzzy
+#~ msgid ""
+#~ "Direct support for copying file systems is not yet implemented for %s.  "
+#~ "However, support for resizing is implemented.  Therefore, the file system "
+#~ "can be copied if the new partition is at least as big as the old one.  "
+#~ "So, either shrink the partition you are trying to copy, or copy to a "
+#~ "bigger partition."
+#~ msgstr ""
+#~ "¶Ô %s À´ËµÉв»Ö§³ÖÖ±½ÓµÄÎļþϵͳ¸´ÖÆ¡£µ«Ö§³Ö¸Ä±ä´óС¡£Òò´Ë£¬Ö»ÒªÐ·ÖÇø±ÈÔ­"
+#~ "·ÖÇø´ó£¬¾ÍÄܹ»¸´ÖÆÎļþϵͳ¡£ËùÒÔ£¬ËõСÄúÊÔͼ¸´ÖƵķÖÇø£¬»ò¸´ÖƵ½½Ï´óµÄ·Ö"
+#~ "Çø¡£"
+
+#~ msgid "Support for copying %s file systems is not implemented yet."
+#~ msgstr "¹ØÓÚ¸´ÖÆ %s ÎļþϵͳµÄÖ§³ÖÉÐδʵÏÖ¡£"
+
+#~ msgid "Support for resizing %s file systems is not implemented yet."
+#~ msgstr "¸Ä±ä %s ÎļþϵͳµÄÖ§³ÖÉÐδʵÏÖ¡£"
+
+#, fuzzy
+#~ msgid "The file system is in an invalid state.  Perhaps it is mounted?"
+#~ msgstr "Îļþϵͳº¬ÓÐÎÞЧµÄ FAT ÎļþϵͳǩÃû¡£"
+
+#, fuzzy
+#~ msgid "checking"
+#~ msgstr "¼ì²é"
+
+#, fuzzy
+#~ msgid ""
+#~ "The reiserfs file system passed a basic check.  For a more comprehensive "
+#~ "check, run reiserfsck --check."
+#~ msgstr "ext2 Îļþϵͳͨ¹ý»ù±¾¼ì²é¡£ÖÁÓÚ¸ü¸ºÔصļì²é£¬Ê¹Óàe2fsck ³ÌÐò¡£"
+
+#, fuzzy
+#~ msgid "Sorry, can't move the start of reiserfs partitions yet."
+#~ msgstr "´íÎó£¬ÉÐÎÞ·¨Òƶ¯ ext2 ·ÖÇøµÄÆðµã£¡"
+
+#~ msgid "shrinking"
+#~ msgstr "ÕýÔÚËõС"
+
+#, fuzzy
+#~ msgid "expanding"
+#~ msgstr "¾¯¸æ"
+
+#, fuzzy
+#~ msgid "Device is too small for %lu blocks."
+#~ msgstr "¶Ô ext2 À´ËµÎļþϵͳ¹ýС¡£"
+
+#~ msgid "Inconsistent group descriptors!"
+#~ msgstr "²»Ò»ÖµÄ×éÃèÊö·û£¡"
+
+#, fuzzy
+#~ msgid "File system full!"
+#~ msgstr "ÎļþϵͳÒÑÂú£¡"
+
+#, fuzzy
+#~ msgid "Invalid superblock.  Are you sure this is an ext2 file system?"
+#~ msgstr "ÎÞЧµÄ³¬¿é¡£ÄúÈ·ÈÏËüÊÇÒ»¸ö ext2 Îļþϵͳ£¿"
+
+#, fuzzy
+#~ msgid "File system has errors!  You should run e2fsck."
+#~ msgstr "Îļþϵͳ´íÎó£¡ÄúÓ¦¸ÃÔËÐРe2fsck¡£"
+
+#, fuzzy
+#~ msgid ""
+#~ "File system was not cleanly unmounted!  You should run e2fsck.  Modifying "
+#~ "an unclean file system could cause severe corruption."
+#~ msgstr ""
+#~ "ÎļþϵͳûÓб»¸É¾»µØжÔØ£¡ÄúÓ¦¸ÃÔËÐРe2fsck¡£Ð޸IJ»¸É¾»µÄÎļþϵͳ½«µ¼ÖÂÑÏ"
+#~ "ÖصÄË𻵡£"
+
+#~ msgid "Error allocating buffer cache."
+#~ msgstr "·ÖÅ仺³åÇø cache ´íÎó¡£"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found an inode with a incorrect link count.  Better go run e2fsck first!"
+#~ msgstr "ÕÒµ½´øÓдíÎóÁ¬½Ó¼ÆÊýµÄ inode¡£×îºÃÏÈÔËÐРe2fsck¡£"
+
+#~ msgid "Not enough free inodes!"
+#~ msgstr "ûÓÐ×ã¹»µÄ¿ÕÏРinodes£¡"
+
+#, fuzzy
+#~ msgid "File system is too full to remove a group!"
+#~ msgstr "Îļþϵͳ±»¹ý¶ÉÕ¼ÓÃÒÔÖÂÎÞ·¨É¾³ý×飡"
+
+#, fuzzy
+#~ msgid "File system has too many allocated inodes to remove a group!"
+#~ msgstr "ÎļþϵͳÖÐÒÑʹÓõĠinode ¹ý¶àÒÔÖÂÎÞ·¨É¾³ý×飡"
+
+#~ msgid "adding groups"
+#~ msgstr "Ìí¼Ó×é"
+
+#, fuzzy
+#~ msgid "Your file system is too full to resize it to %i blocks.  Sorry."
+#~ msgstr "ÄúµÄÎļþϵͳ±»¹ý¶ÉÕ¼ÓÃÒÔÖÂÎÞ·¨½«ËüµÄ´óС¸Ä±äΪ %i ¸ö¿é¡£±§Ç¸¡£"
+
+#, fuzzy
+#~ msgid ""
+#~ "Your file system has too many occupied inodes to resize it to %i blocks.  "
+#~ "Sorry."
+#~ msgstr ""
+#~ "ÄúµÄÎļþϵͳÖÐÒÑʹÓõĠinode ¹ý¶àÒÔÖÂÎÞ·¨½«Æä´óС¸Ä±äΪ %i ¸ö¿é¡£±§Ç¸¡£"
+
+#, fuzzy
+#~ msgid "File system was not cleanly unmounted!  You should run e2fsck."
+#~ msgstr "ÎļþϵͳûÓиɾ»µØжÔØ£¡ÄúÓ¦¸ÃÔËÐРe2fsck¡£"
+
+#, fuzzy
+#~ msgid "Cross-linked blocks found!  Better go run e2fsck first!"
+#~ msgstr "·¢ÏÖ½»²æÁ¬½Ó¿é£¡×îºÃÏÈÔËÐРe2fsck£¡"
+
+#, fuzzy
+#~ msgid "Block %i has no reference?  Weird."
+#~ msgstr "¿é %i Ã»ÓÐÒýÓã¿Ææ¹Ö"
+
+#, fuzzy
+#~ msgid "Block %i shouldn't have been marked (%d, %d)!"
+#~ msgstr "¿é %i ²»Ó¦¸ÃÒѱ»±ê¼Ç£¡"
+
+#, fuzzy
+#~ msgid ""
+#~ "The ext2 file system passed a basic check.  For a more comprehensive "
+#~ "check, use the e2fsck program."
+#~ msgstr "ext2 Îļþϵͳͨ¹ý»ù±¾¼ì²é¡£ÖÁÓÚ¸ü¸ºÔصļì²é£¬Ê¹Óàe2fsck ³ÌÐò¡£"
+
+#~ msgid "Sorry, can't move the start of ext2 partitions yet!"
+#~ msgstr "´íÎó£¬ÉÐÎÞ·¨Òƶ¯ ext2 ·ÖÇøµÄÆðµã£¡"
+
+#~ msgid "Couldn't flush buffer cache!"
+#~ msgstr "ÎÞ·¨Ë¢Ð»º³åÇø cache£¡"
+
+#~ msgid "writing per-group metadata"
+#~ msgstr "дÈëÿ¸ö×鶼ÓеÄÔªÊý¾Ý"
+
+#~ msgid "File system too small for ext2."
+#~ msgstr "¶Ô ext2 À´ËµÎļþϵͳ¹ýС¡£"
+
+#, fuzzy
+#~ msgid ""
+#~ "You need %s of free disk space to shrink this partition to this size.  "
+#~ "Currently, only %s is free."
+#~ msgstr ""
+#~ "ÄúÐèÒª %dM µÄ¿ÕÏпռäÀ´½«´Ë·ÖÇøÊÕËõµ½ÕâÒ»´óС (ÄúÄ¿Ç°Ö»ÓР%dM µÄ¿ÕÏпռä)"
+
+#~ msgid ""
+#~ "Cluster start delta = %d, which is not a multiple of the cluster size %d."
+#~ msgstr "´ØÆðʼƫÒÆ = %d£¬²»ÊÇ´Ø´óС %d µÄÕûÊý±¶¡£"
+
+#, fuzzy
+#~ msgid "Partition too big/small for a %s file system."
+#~ msgstr "¶ÔÓÚ %s ÎļþϵͳÀ´Ëµ£¬·ÖÇø¹ý´ó»ò¹ýС"
+
+#~ msgid ""
+#~ "The FATs don't match.  If you don't know what this means, then select "
+#~ "cancel, run scandisk on the file system, and then come back."
+#~ msgstr ""
+#~ "FAT ²»Æ¥Åä¡£Èç¹ûÄã²»ÖªµÀËüµÄº¬Ò壬ÇëÑ¡Ôñ·ÅÆú£¬²¢¶ÔÎļþϵͳÔËÐРscandisk£¬"
+#~ "¶øºóÔڻص½ÕâÀïÀ´¡£"
+
+#~ msgid "There are no possible configurations for this FAT type."
+#~ msgstr "¶ÔÓÚ´Ë FAT ÀàÐÍûÓпÉÄܵÄÅäÖá£"
+
+#~ msgid ""
+#~ "File system doesn't have expected sizes for Windows to like it.  Cluster "
+#~ "size is %dk (%dk expected); number of clusters is %d (%d expected); size "
+#~ "of FATs is %d sectors (%d expected)."
+#~ msgstr ""
+#~ "ÎļþϵͳµÄ´óС²»ÊÇ Windows ËùÏ£ÍûµÄ¡£´Ø´óСΪ %dk (ÆÚÍû %dk)£»´ØÊýÁ¿Îª %d "
+#~ "(ÆÚÍû %d)£»FAT µÄ´óСΪ %d ÉÈÇø (ÆÚÍû %d)¡£"
+
+#~ msgid ""
+#~ "File system is reporting the free space as %d clusters, not %d clusters."
+#~ msgstr "Îļþϵͳ±¨¸æ¿ÕÏпռäΪ %d ´Ø£¬¶ø²»ÊÇ %d ´Ø¡£"
+
+#, fuzzy
+#~ msgid ""
+#~ "There's not enough room in the root directory for all of the files.  "
+#~ "Either cancel, or ignore to lose the files."
+#~ msgstr "¸ùĿ¼ÏÂûÓб£´æËùÓÐÎļþµÄ×ã¹»¿Õ¼ä¡£·ÅÆú»òÕßÒÔËðʧÎļþΪ´ú¼ÛºöÂÔ¡£"
+
+#~ msgid "Error writing to the root directory."
+#~ msgstr "дÈë¸ùĿ¼´íÎó¡£"
+
+#, fuzzy
+#~ msgid ""
+#~ "If you leave your file system as FAT16, then you will have no problems."
+#~ msgstr "Èç¹û½«ÄúµÄÎļþϵͳÀàÐͱ£³Ö FAT16 ²»±ä£¬ÄÇôÄã¾Í²»»áÓÐÎÊÌâ¡£"
+
+#~ msgid ""
+#~ "If you convert to FAT16, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual)."
+#~ msgstr ""
+#~ "Èç¹ûÄúת»»Îª FAT16£¬²¢½« MS Windows °²×°µ½Õâ¸ö·ÖÇø£¬ÄÇôÄú±ØÐëÖØа²×° MS "
+#~ "Windows Æô¶¯¹ÜÀíÆ÷¡£Èç¹ûÄú´òËãÕâô×ö£¬ÄúÓ¦¸Ã²ÎÔÄ Parted µÄÊÖ²á (»òÄúµÄ·¢ÐÐ"
+#~ "°æµÄÊÖ²á)¡£"
+
+#~ msgid ""
+#~ "If you leave your file system as FAT32, then you will not introduce any "
+#~ "new problems."
+#~ msgstr "Èç¹ûÄú±£³ÖÎļþϵͳÀàÐÍΪ FAT32 ²»±ä£¬ÄÇôÄú½«²»»áÓöµ½ÈκÎÐÂÎÊÌâ¡£"
+
+#~ msgid ""
+#~ "If you convert to FAT32, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual).  Also, converting to FAT32 will make the file system unreadable "
+#~ "by MS DOS, MS Windows 95a, and MS Windows NT."
+#~ msgstr ""
+#~ "Èç¹ûÄúת»»Îª FAT32£¬²¢ÇÒ MS Windows °²×°ÔÚÕâ¸ö·ÖÇø£¬ÄÇôÄú±ØÐëÖØа²×° MS "
+#~ "Windows µÄÆô¶¯¹ÜÀíÆ÷¡£Èç¹ûÄú´òËãÕâÑù×÷£¬ÄúÓ¦¸Ã²ÎÔÄ Parted µÄÊÖ²á (»òÕßÄúµÄ"
+#~ "·¢ÐаæµÄÊÖ²á)¡£´ËÍ⣬½«Îļþϵͳת»»Îª FAT32£¬Îļþϵͳ¾Í²»Äܹ»±» MS DOS¡¢"
+#~ "MS Windows 95a ºÍ MS Windows NT Ëù·ÃÎÊÁË¡£"
+
+#~ msgid "%s  %s  %s"
+#~ msgstr "%s  %s  %s"
+
+#~ msgid "Would you like to use FAT32?"
+#~ msgstr "ÄúÊÇ·ñÔ¸ÒâʹÓàFAT32£¿"
+
+#~ msgid "%s  %s"
+#~ msgstr "%s  %s"
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT16."
+#~ msgstr "ÎļþϵͳµÄ´óСֻÄÜͨ¹ýת»»Îª FAT16 ¸Ä±äµ½ÕâÒ»´óС¡£"
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT32."
+#~ msgstr "ÎļþϵͳµÄ´óСֻÄÜͨ¹ýת»»Îª FAT32 ¸Ä±äµ½ÕâÒ»´óС¡£"
+
+#, fuzzy
+#~ msgid ""
+#~ "GNU Parted cannot resize this partition to this size.  We're working on "
+#~ "it!"
+#~ msgstr "GNU Parted ÎÞ·¨½«´Ë·ÖÇøת»»µ½ÕâÒ»´óС¡£ÎÒÃÇÕýÔÚʵÏÖËü£¡"
+
+#~ msgid "Bad directory entry for %s: first cluster is the end of file marker."
+#~ msgstr "%s µÄĿ¼ÌõÄ¿´íÎ󣺵ÚÒ»¸ö´Ø¾ÍÊÇÎļþ±êÖ¾µÄ½áÊø¡£"
+
+#~ msgid ""
+#~ "Bad FAT: unterminated chain for %s.  You should run dosfsck or scandisk."
+#~ msgstr "´íÎóµÄ FAT£º%s µÄÁ´Î´ÖÕÖ¹¡£ÄúÓ¦¸ÃÔËÐРdosfsck »ò scandisk¡£"
+
+#, fuzzy
+#~ msgid ""
+#~ "Bad FAT: cluster %d outside file system in chain for %s.  You should run "
+#~ "dosfsck or scandisk."
+#~ msgstr ""
+#~ "´íÎóµÄ FAT£ºÔÚ%2$s µÄÁ´ÖУ¬´Ø %1$d ´¦ÓÚÎļþϵͳ֮Íâ¡£ÄúÓ¦¸ÃÔËÐРdosfsck "
+#~ "»ò scandisk¡£"
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d is cross-linked for %s.  You should run dosfsck or "
+#~ "scandisk."
+#~ msgstr ""
+#~ "´íÎóµÄ FAT£º´Ø %d Í¬ %s µÄÁ´½»²æÁË¡£ÄúÓ¦¸ÃÔËÐРdosfsck »ò scandisk¡£"
+
+#~ msgid "%s is %dk, but it has %d clusters (%dk)."
+#~ msgstr "%s Îª %dk£¬µ«º¬ÓР%d ¸ö´Ø (%dk)¡£"
+
+#~ msgid ""
+#~ "The file %s is marked as a system file.  This means moving it could cause "
+#~ "some programs to stop working."
+#~ msgstr "Îļþ %s ±»±ê¼ÇΪϵͳÎļþ¡£ÕâÒâζ×ÅÒƶ¯Ëü¿ÉÄܵ¼ÖÂijЩ³ÌÐòÍ£Ö¹¹¤×÷¡£"
+
+#~ msgid ""
+#~ "FAT %d media %x doesn't match the boot sector's media %x.  You should "
+#~ "probably run scandisk."
+#~ msgstr ""
+#~ "FAT %d Ã½Ìå %x ºÍÆô¶¯ÉÈÇøËùÔÚµÄýÌå %x ²»Æ¥Åä¡£Äú¿ÉÄÜÓ¦¸ÃÔËÐРscandisk¡£"
+
+#, fuzzy
+#~ msgid "fat_table_set: cluster %ld outside file system"
+#~ msgstr "fat_table_set£º´Ø %ld ´¦ÓÚÎļþϵͳ֮Íâ"
+
+#, fuzzy
+#~ msgid "fat_table_get: cluster %ld outside file system"
+#~ msgstr "fat_table_get£º´Ø %ld ´¦ÓÚÎļþϵͳ֮Íâ"
+
+#~ msgid "fat_table_alloc_cluster: no free clusters"
+#~ msgstr "fat_table_alloc_cluster£ºÃ»ÓпÕÏдØ"
+
+#~ msgid "Too many bad pages."
+#~ msgstr "¹ý¶àµÄ»µÒ³¡£"
+
+#, fuzzy
+#~ msgid "writing HFS Master Directory Block"
+#~ msgstr "дÈë¸ùĿ¼´íÎó¡£"
+
+#, fuzzy
+#~ msgid "Error while writing the allocation file."
+#~ msgstr "дÈë¸ùĿ¼´íÎó¡£"
+
+#, fuzzy
+#~ msgid "Error while writing the compatibility part of the allocation file."
+#~ msgstr "дÈë¸ùĿ¼´íÎó¡£"
+
+#, fuzzy
+#~ msgid "shrinking HFS wrapper"
+#~ msgstr "ÕýÔÚËõС"
+
+#, fuzzy
+#~ msgid "Journal offset or size is not multiple of the sector size."
+#~ msgstr "´ØÆðʼƫÒÆ = %d£¬²»ÊÇ´Ø´óС %d µÄÕûÊý±¶¡£"
+
+#, fuzzy
+#~ msgid "Some header fields are not multiple of the sector size."
+#~ msgstr "´ØÆðʼƫÒÆ = %d£¬²»ÊÇ´Ø´óС %d µÄÕûÊý±¶¡£"
+
+#, fuzzy
+#~ msgid "Could not cache the file system in memory."
+#~ msgstr "ÎÞ·¨¼ì²âÎļþϵͳ¡£"
+
+#~ msgid "Source device?"
+#~ msgstr "Ô´É豸£¿"
+
+#~ msgid "Source partition number?"
+#~ msgstr "Ô´·ÖÇø±àºÅ£¿"
+
+#, fuzzy
+#~ msgid "Can't copy an extended partition."
+#~ msgstr "²»ÄÜÖ»¸´ÖÆÀ©Õ¹·ÖÇø¡£"
+
+#~ msgid "Destination partition number?"
+#~ msgstr "Ä¿±ê·ÖÇø±àºÅ£¿"
+
+#, fuzzy
+#~ msgid ""
+#~ "An extended partition cannot hold a file system.  Did you want mkpart?"
+#~ msgstr "À©Õ¹·ÖÇø²»Äܺ¬ÓÐÎļþϵͳ¡£ÄúÊÇÒªÓàmkpart °É£¿"
+
+#, fuzzy
+#~ msgid "Can't move an extended partition."
+#~ msgstr "ÎÞ·¨Òƶ¯À©Õ¹·ÖÇø¡£"
+
+#~ msgid "Can't move a partition onto itself.  Try using resize, perhaps?"
+#~ msgstr "ÎÞ·¨½«·ÖÇøÒƶ¯µ½Ëü×ÔÉí¡£ÊÔÓøıä´óС£¬¿ÉÄÜ£¿"
+
+#~ msgid "Minor: %d\n"
+#~ msgstr "Minor£º%d\n"
+
+#, fuzzy
+#~ msgid "Flags: %s\n"
+#~ msgstr "±êÖ¾£º"
+
+#~ msgid "File System: %s\n"
+#~ msgstr "Îļþϵͳ£º%s\n"
+
+#, fuzzy
+#~ msgid "Size:         "
+#~ msgstr "´óС£º         %10.3fMb (%d%%)\n"
+
+#, fuzzy
+#~ msgid "Minimum size: "
+#~ msgstr "×îС³ß´ç£º     %10.3fMb (%d%%)\n"
+
+#, fuzzy
+#~ msgid "Maximum size: "
+#~ msgstr "×î´ó³ß´ç£º     %10.3fMb (%d%%)\n"
+
+#~ msgid "check"
+#~ msgstr "¼ì²é"
+
+#, fuzzy
+#~ msgid ""
+#~ "check NUMBER                             do a simple check on the file "
+#~ "system"
+#~ msgstr "¼ì²é  MINOR                   ¶ÔÎļþϵͳ½øÐÐÒ»¸ö¼òµ¥µÄ¼ì²é"
+
+#~ msgid "cp"
+#~ msgstr "cp"
+
+#, fuzzy
+#~ msgid ""
+#~ "cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   copy file system to another "
+#~ "partition"
+#~ msgstr ""
+#~ "cp [FROM-DEVICE] FROM-MINOR TO-MINOR      ½«Îļþϵͳ¸´ÖƵ½ÁíÒ»¸ö·ÖÇø"
+
+#~ msgid "mkfs"
+#~ msgstr "mkfs"
+
+#, fuzzy
+#~ msgid ""
+#~ "mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on "
+#~ "partition NUMBER"
+#~ msgstr ""
+#~ "mkfs MINOR ÎļþϵͳÀàÐÍ       ÔÚ MINOR ´´½¨ÀàÐÍΪ¡°ÎļþϵͳÀàÐÍ¡±µÄÎļþϵ"
+#~ "ͳ"
+
+#~ msgid "mkpartfs"
+#~ msgstr "mkpartfs"
+
+#, fuzzy
+#~ msgid ""
+#~ "mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file "
+#~ "system"
+#~ msgstr ""
+#~ "mkpartfs ·ÖÇøÀàÐÍ ÎļþϵͳÀàÐÍ Æðʼµã ÖÕÖ¹µã  ´´½¨Ò»¸ö´øÓÐÎļþϵͳµÄ·ÖÇø"
+
+#~ msgid "move"
+#~ msgstr "move"
+
+#, fuzzy
+#~ msgid "move NUMBER START END                    move partition NUMBER"
+#~ msgstr "move MINOR Æðʼµã ÖÕÖ¹µã      Òƶ¯±àºÅΪ MINOR µÄ·ÖÇø"
+
+#~ msgid "resize"
+#~ msgstr "resize"
+
+#, fuzzy
+#~ msgid ""
+#~ "resize NUMBER START END                  resize partition NUMBER and its "
+#~ "file system"
+#~ msgstr ""
+#~ "rescue Æðʼµã ÖÕÖ¹µã          Íì¾ÈÁÙ½ü¡°Æðʼµã¡±¡¢¡°ÖÕÖ¹µã¡±µÄÒÅʧµÄ·ÖÇø"
+
+#~ msgid ""
+#~ "The sector size on %s is %d bytes.  Parted is known not to work properly "
+#~ "with drives with sector sizes other than %d bytes"
+#~ msgstr ""
+#~ "%s ÉϵÄÉÈÇø´óСΪ %d ×Ö½Ú¡£Ä¿Ç° Parted ²»ÄÜÔÚÉÈÇø´óС²»ÊÇ %d ×ֽڵĴÅÅÌÉÏ"
+#~ "ÕýÈ·¹¤×÷¡£"
+
+#~ msgid "Device %s has dodgey geometry."
+#~ msgstr "É豸 %s µÄ¼¸ºÎ½á¹¹ºÜÆæ¹Ö¡£"
+
+#~ msgid "IDE"
+#~ msgstr "IDE"
+
+#~ msgid "SCSI"
+#~ msgstr "SCSI"
+
+#~ msgid "Device %s is neither a SCSI nor IDE drive."
+#~ msgstr "É豸 %s ¼´²»ÊÇ SCSI ´ÅÅÌÒ²²»ÊÇ IDE ´ÅÅÌ¡£"
+
+#~ msgid "Error reading %s (%s) to determine if partition is mounted."
+#~ msgstr "Ϊȷ¶¨·ÖÇøÊÇ·ñ¼ÓÔضø¶ÁÈ¡ %s (%s) Ê±³ö´í¡£"
+
+#~ msgid ""
+#~ "Unable to determine if partitions are mounted via /proc/mounts or /etc/"
+#~ "mtab.  Make sure you don't attempt to resize or modify mounted file "
+#~ "systems.  (Even read-only mounted)"
+#~ msgstr ""
+#~ "ÎÞ·¨È·¶¨·ÖÇøÊÇ·ñÊÇͨ¹ý /proc/mounts »ò /etc/mtab ¼ÓÔصġ£ÇëÈ·ÈÏÄú²»»áÊÔͼ"
+#~ "¸Ä±äÎļþϵͳµÄ´óС»òÕßÐ޸ļÓÔصÄÎļþϵͳ¡£(¼´Ê¹°´Ö»¶Á·½Ê½¼ÓÔØÒ²²»ÐÐ)"
+
+#~ msgid ""
+#~ "The partition table on %s is inconsistent.  There are many reasons why "
+#~ "this might be the case.  However, the most likely reason is that Linux "
+#~ "detected the BIOS geometry for %s incorrectly.  GNU Parted suspects the "
+#~ "real geometry should be %d/%d/%d (not %d/%d/%d).  You should check with "
+#~ "your BIOS first, as this may not be correct.  You can inform Linux by "
+#~ "adding the parameter %s=%d,%d,%d to the command line.  See the LILO or "
+#~ "GRUB documentation for more information.  If you think Parted's suggested "
+#~ "geometry is correct, you may select Ignore to continue (and fix Linux "
+#~ "later).  Otherwise, select Cancel (and fix Linux and/or the BIOS now)."
+#~ msgstr ""
+#~ "%s ÉϵķÖÇø²»Ð­µ÷¡£²úÉúÕâÖÖÇé¿öµÄÔ­ÒòºÜ¶à¡£È»¶ø£¬×î¿ÉÄܵÄÔ­ÒòÊÇ Linux ¼ì²â"
+#~ "µ½µÄ BIOS ¹ØÓÚ %s µÄ¼¸ºÎ½á¹¹ÊÇ´íÎóµÄ¡£GNU Parted »³ÒÉʵ¼ÊµÄ¼¸ºÎ½á¹¹Îª %d/"
+#~ "%d/%d (¶ø²»ÊÇ %d/%d/%d)¡£ÒòΪ BIOS ¿ÉÄܲ»ÕýÈ·£¬ÄúÓ¦¸ÃÊ×Ïȼì²éÄúµÄ BIOS¡£Äú"
+#~ "¿ÉÒÔͨ¹ýÔÚÃüÁîÐÐÖÐÌí¼Ó²ÎÊý %s=%d,%d,%d À´Í¨Öª Linux¡£ÏêÇéÇë²Î¼û LILO »ò "
+#~ "GRUB µÄÎĵµ¡£Èç¹ûÄúÈÏΪ Parted Ëù½¨ÒéµÄ¼¸ºÎ½á¹¹ÊÇÕýÈ·µÄ£¬Äú¿ÉÒÔºöÂÔ²¢¼ÌÐø "
+#~ "(²¢ÔÚÒÔºóÐÞÕý Linux)¡£·ñÔò£¬Ñ¡Ôñ·ÅÆú (²¢ÂíÉÏÐÞÕý Linux ²¢ÇÒ/»òÕß BIOS)¡£"
+
+#~ msgid ""
+#~ "The partition table on %s is inconsistent.  There are many reasons why "
+#~ "this might be the case.  Often, the reason is that Linux detected the "
+#~ "BIOS geometry incorrectly.  However, this does not appear to be the case "
+#~ "here.  It is safe to ignore,but ignoring may cause (fixable) problems "
+#~ "with some boot loaders, and may cause problems with FAT file systems.  "
+#~ "Using LBA is recommended."
+#~ msgstr ""
+#~ "%s ÉϵķÖÇø±í²»Ð­µ÷¡£¿ÉÄܵ¼ÖÂÕâÖÖÇé¿öµÄÔ­ÒòÓкܶࡣͨ³££¬Ô­ÒòÊÇ Linux ¼ì²â"
+#~ "µ½µÄ BIOS ¼¸ºÎ½á¹¹ÊÇ´íÎóµÄ¡£È»¶ø£¬ÏÖÔÚËƺõ²¢²»ÊÇÕâÖÖÇé¿ö¡£ºöÂÔÊÇ°²È«µÄ£¬µ«"
+#~ "ÊǺöÂÔ¿ÉÄܵ¼ÖÂijЩÆô¶¯¹ÜÀíÆ÷µÄÎÊÌâ (¿ÉÐÞ¸´µÄ)£¬»¹¿ÉÄܵ¼Ö FAT Îļþϵͳ³öÏÖ"
+#~ "ÎÊÌâ¡£½¨ÒéʹÓàLBA¡£"
+
+#~ msgid ""
+#~ "Unable to align partition properly.  This probably means that another "
+#~ "partitioning tool generated an incorrect partition table, because it "
+#~ "didn't have the correct BIOS geometry.  It is safe to ignore,but ignoring "
+#~ "may cause (fixable) problems with some boot loaders."
+#~ msgstr ""
+#~ "ÎÞ·¨ÕýÈ·µØ¶ÔÆë·ÖÇø¡£Õâ¿ÉÄÜÒâζ×ÅÆäËü·ÖÇø¹¤¾ßÓÉÓÚûÓеõ½ÕýÈ·µÄ BIOS ¼¸ºÎ½á"
+#~ "¹¹¶øÉú³ÉÁË´íÎóµÄ·ÖÇø±í¡£ºöÂÔÊÇ°²È«µÄ£¬µ«ºöÂÔ¿ÉÄܵ¼ÖÂijЩÆô¶¯¹ÜÀíÆ÷³öÏÖ¿ÉÐÞ"
+#~ "¸´µÄÎÊÌâ¡£"
+
+#~ msgid "Attempt to read sectors %ld-%ld outside of partition on %s"
+#~ msgstr "ÊÔͼ¶ÁÈ¡ %3$s ÉÏ·ÖÇøÖ®ÍâµÄÉÈÇø %1$ld-%2$ld"
+
+#~ msgid ""
+#~ "This ext2 filesystem has a rather strange layout!  Parted can't resize "
+#~ "this (yet)."
+#~ msgstr "¸Ã ext2 ÎļþϵͳµÄ²¼¾ÖÏ൱Ææ¹Ö£¡Parted ÉÐÇÒÎÞ·¨¸Ä±äËüµÄ´óС¡£"
+
+#~ msgid "Filesystem has incompatible feature enabled"
+#~ msgstr "ÎļþϵͳÆôÓÃÁ˲»¼æÈݵŦÄÜ"
+
+#~ msgid "File system has an invalid signature for a FAT file systems."
+#~ msgstr "Îļþϵͳº¬ÓÐÎÞЧµÄ FAT ÎļþϵͳǩÃû¡£"
+
+#~ msgid "where necessary, prompts for user intervention"
+#~ msgstr "ÔÚ±ØҪʱ£¬ÌáʾÓû§"
+
+#~ msgid ""
+#~ "Partition %s is being used.  Modifying it while it is in use could cause "
+#~ "severe corruption."
+#~ msgstr "ÕýÔÚʹÓ÷ÖÇø %s¡£ÔÚʹÓÃʱÐÞ¸ÄËû½«µ¼ÖÂÑÏÖصÄÆÆ»µ¡£"
+
+#~ msgid ""
+#~ "You requested to move the partition to %.3f-%.3fMb. The closest Parted "
+#~ "can manage is %.3f-%.3fMb."
+#~ msgstr ""
+#~ "ÄúÇëÇ󽫷ÖÇøÒƶ¯µ½ %.3f - %.3fMb¡£¿É¹ÜÀí×îÌù½üµÄ·ÖÇøΪ %.3f - %.3fMB¡£"
+
+#~ msgid "Disk geometry for %s: 0.000-%.3f megabytes\n"
+#~ msgstr "%s µÄ´ÅÅ̼¸ºÎ½á¹¹£º0.000-%.3f Õ××Ö½Ú\n"
+
+#~ msgid "Disk label type: %s\n"
+#~ msgstr "´ÅÅ̱êÇ©ÀàÐÍ£º%s\n"
+
+#~ msgid "Minor    Start       End     "
+#~ msgstr "Minor    Æðʼµã        ÖÕÖ¹µã  "
+
+#~ msgid "Type      "
+#~ msgstr "ÀàÐÍ      "
+
+#~ msgid "Filesystem  "
+#~ msgstr "Îļþϵͳ    "
+
+#~ msgid "Name                  "
+#~ msgstr "Ãû³Æ                  "
+
+#~ msgid ""
+#~ "You requested to resize the partition to %.3f-%.3fMb. The closest Parted "
+#~ "can manage is %.3f-%.3fMb."
+#~ msgstr ""
+#~ "ÄúÒªÇ󽫷ÖÇø¸Ä±ä´óС²¢±£´æµ½ %.3f - %.3fMb¡£¿É¹ÜÀí×î½Ó½üµÄ·ÖÇøΪ %.3f - "
+#~ "%.3fMb¡£"
+
+#~ msgid ""
+#~ "print [MINOR]                 display the partition table, or a partition"
+#~ msgstr "print [MINOR]                 ´òÓ¡·ÖÇø±í£¬»òÕß·ÖÇø"
+
+#~ msgid "resize MINOR START END        resize filesystem on partition MINOR"
+#~ msgstr ""
+#~ "resize MINOR Æðʼµã ÖÕÖ¹µã    ¸Ä±äλÓÚ±àºÅΪ MINOR µÄ·ÖÇøÖÐÎļþϵͳµÄ´óС"
+
+#~ msgid ""
+#~ "You found a bug in GNU Parted.  Please email a bug report to bug-"
+#~ "parted@gnu.org containing the version (%s), and the following message:\n"
+#~ msgstr ""
+#~ "ÄúÕÒµ½ÁË GNU Parted µÄ bug¡£Ç뽫º¬Óа汾 (%s) ºÍÒÔÏÂÐÅÏ¢µÄ bug ±¨¸æ·¢Ë͵½ "
+#~ "bug-parted@gnu.org£º\n"
+
+#~ msgid ""
+#~ "  You have Windows FAT partition(s) that are not using LBA.  If your BIOS "
+#~ "supports LBA, then you should switch to LBA by setting the LBA flag on "
+#~ "all FAT partitions.  Otherwise, make sure the operating system and the "
+#~ "BIOS have the same geometry before resizing any FAT partitions."
+#~ msgstr ""
+#~ "ÄúʹÓÃÁ˲»Ê¹ÓàLBA µÄ Windows FAT ·ÖÇø¡£Èç¹ûÄúµÄ BIOS Ö§³Ö LBA£¬ÄÇôÄúÓ¦¸Ã"
+#~ "ͨ¹ýÔÚËùÓРFAT ·ÖÇøÉÏÉèÖàLBA ±êÖ¾ÒÔÇл»µ½ LBA Ä£Ê½¡£·ñÔò£¬ÔڸıäÈκΠFAT "
+#~ "·ÖÇø´óСµÄʱºòÈ·ÈϲÙ×÷ϵͳºÍ BIOS Ê¹ÓÃÏàͬµÄ¼¸ºÎ½á¹¹¡£"
+
+#~ msgid ""
+#~ "The operating system thinks the geometry on %s is %d/%d/%d.  Therefore, "
+#~ "cylinder 1024 ends at %.3fM.%s"
+#~ msgstr ""
+#~ "²Ù×÷ϵͳÈÏΪ %s µÄ¼¸ºÎ½á¹¹Îª %d/%d/%d¡£Òò´Ë£¬ÖùÃæ 1024 ½áÊøÓÚ %.3fM.%s"
+
+#~ msgid "The operating system thinks the geometry on %s is %d/%d/%d.%s"
+#~ msgstr "²Ù×÷ϵͳÈÏΪ %s µÄ¼¸ºÎ½á¹¹ %d/%d/%d.%s"
diff --git a/po/zh_TW.gmo b/po/zh_TW.gmo
new file mode 100644 (file)
index 0000000..74e71c3
Binary files /dev/null and b/po/zh_TW.gmo differ
diff --git a/po/zh_TW.po b/po/zh_TW.po
new file mode 100644 (file)
index 0000000..7aef104
--- /dev/null
@@ -0,0 +1,3136 @@
+# Traditional Chinese Messages for parted
+# Copyright (C) 2003, 05, 06 Free Software Foundation, Inc.
+# Wang Li <charles@linux.net.cn>, 2003
+# Wei-Lun Chao <chaoweilun@pcmail.com.tw>, 2005, 06
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: parted 1.7.0rc1\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2011-05-30 13:45+0200\n"
+"PO-Revision-Date: 2006-07-04 18:18+0800\n"
+"Last-Translator: Wei-Lun Chao <chaoweilun@pcmail.com.tw>\n"
+"Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n"
+"Language: zh_TW\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: lib/argmatch.c:133
+#, fuzzy, c-format
+msgid "invalid argument %s for %s"
+msgstr "無法開啟 %s。"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr ""
+
+#: lib/argmatch.c:153
+#, fuzzy, c-format
+msgid "Valid arguments are:"
+msgstr "無法開啟 %s。"
+
+#: lib/closeout.c:112 libparted/labels/fdasd.c:107
+msgid "write error"
+msgstr ""
+
+#: lib/error.c:181
+#, fuzzy
+msgid "Unknown system error"
+msgstr "未知的檔案系統類型「%s」。"
+
+#: lib/getopt.c:548 lib/getopt.c:577
+#, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
+msgstr ""
+
+#: lib/getopt.c:625 lib/getopt.c:629
+#, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:638 lib/getopt.c:643
+#, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:686 lib/getopt.c:705
+#, c-format
+msgid "%s: option '--%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:743 lib/getopt.c:746
+#, fuzzy, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "無法開啟 %s - 無法識別的磁碟標籤。"
+
+#: lib/getopt.c:754 lib/getopt.c:757
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "無法開啟 %s - 無法識別的磁碟標籤。"
+
+#: lib/getopt.c:806 lib/getopt.c:809
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr ""
+
+#: lib/getopt.c:859 lib/getopt.c:876 lib/getopt.c:1084 lib/getopt.c:1102
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr ""
+
+#: lib/getopt.c:932 lib/getopt.c:948
+#, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:972 lib/getopt.c:990
+#, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:1011 lib/getopt.c:1029
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr ""
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:271
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:272
+msgid "'"
+msgstr ""
+
+#: lib/regcomp.c:133
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:136
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:139
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:142
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:145
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:148
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:151
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:154
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:157
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:160
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:163
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:166
+#, fuzzy
+msgid "Invalid range end"
+msgstr "無效的編號。"
+
+#: lib/regcomp.c:169
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:172
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:175
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:178
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:181
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:702
+msgid "No previous regular expression"
+msgstr ""
+
+#. TRANSLATORS: A regular expression testing for an affirmative answer
+#. (english: "yes").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^yesexpr='
+#: lib/rpmatch.c:147
+msgid "^[yY]"
+msgstr ""
+
+#. TRANSLATORS: A regular expression testing for a negative answer
+#. (english: "no").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^noexpr='
+#: lib/rpmatch.c:160
+msgid "^[nN]"
+msgstr ""
+
+#: lib/version-etc.c:74
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr ""
+
+#: lib/version-etc.c:77
+#, c-format
+msgid "Packaged by %s\n"
+msgstr ""
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale.  Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:84
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:86
+msgid ""
+"\n"
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:102
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:106
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:110
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:131
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:139
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:147
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:156
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:167
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package.  Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:245
+#, c-format
+msgid ""
+"\n"
+"Report bugs to: %s\n"
+msgstr ""
+
+#: lib/version-etc.c:247
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr ""
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr ""
+
+#: lib/version-etc.c:253
+#, c-format
+msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
+msgstr ""
+
+#: lib/version-etc.c:256
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr ""
+
+#: lib/xstrtol-error.c:63
+#, fuzzy, c-format
+msgid "invalid %s%s argument `%s'"
+msgstr "無法開啟 %s。"
+
+#: lib/xstrtol-error.c:68
+#, fuzzy, c-format
+msgid "invalid suffix in %s%s argument `%s'"
+msgstr "無法開啟 %s。"
+
+#: lib/xstrtol-error.c:72
+#, fuzzy, c-format
+msgid "%s%s argument `%s' too large"
+msgstr "無法開啟 %s。"
+
+#: libparted/arch/beos.c:245
+msgid "Disk Image"
+msgstr ""
+
+#: libparted/arch/beos.c:346 libparted/arch/gnu.c:277
+#: libparted/arch/linux.c:1545
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "開啟 %s 出錯:%s"
+
+#: libparted/arch/beos.c:357 libparted/arch/gnu.c:287
+#: libparted/arch/linux.c:1556
+#, c-format
+msgid "Unable to open %s read-write (%s).  %s has been opened read-only."
+msgstr "無法開啟 %s 以讀寫 (%s)。%s 已用唯讀的方式開啟。"
+
+#: libparted/arch/beos.c:419 libparted/arch/linux.c:1714
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "在為讀取 %2$s 而呼叫 seek 時 %1$s"
+
+#: libparted/arch/beos.c:452 libparted/arch/gnu.c:465 libparted/arch/gnu.c:564
+#: libparted/arch/gnu.c:692 libparted/arch/linux.c:1674
+#: libparted/arch/linux.c:1755
+#, c-format
+msgid "%s during read on %s"
+msgstr "在讀取 %2$s 期間 %1$s"
+
+#: libparted/arch/beos.c:488 libparted/arch/gnu.c:525
+#: libparted/arch/linux.c:1831
+#, c-format
+msgid "Can't write to %s, because it is opened read-only."
+msgstr "由於 %s 是以唯讀方式開啟的,因此無法寫入。"
+
+#: libparted/arch/beos.c:504 libparted/arch/linux.c:1856
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "在為寫入 %2$s 呼叫 seek 時 %1$s"
+
+#: libparted/arch/beos.c:541 libparted/arch/gnu.c:601 libparted/arch/gnu.c:646
+#: libparted/arch/gnu.c:723 libparted/arch/linux.c:1804
+#: libparted/arch/linux.c:1898 libparted/arch/linux.c:1970
+#, c-format
+msgid "%s during write on %s"
+msgstr "在寫入 %2$s 時 %1$s"
+
+#: partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr ""
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the operating system about partition table changes.\n"
+"\n"
+"  -d, --dry-run    do not actually inform the operating system\n"
+"  -s, --summary    print a summary of contents\n"
+"  -h, --help       display this help and exit\n"
+"  -v, --version    output version information and exit\n"
+msgstr ""
+
+#: partprobe/partprobe.c:150
+msgid ""
+"\n"
+"When no DEVICE is given, probe all partitions.\n"
+msgstr ""
+
+#: partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: libparted/arch/gnu.c:110
+#, c-format
+msgid "Unable to open %s."
+msgstr "無法開啟 %s。"
+
+#: libparted/arch/gnu.c:130
+msgid "Unable to probe store."
+msgstr "無法偵測儲存設備。"
+
+#: libparted/arch/gnu.c:368
+msgid ""
+"The partition table cannot be re-read.  This means you need to reboot before "
+"mounting any modified partitions.  You also need to reinstall your boot "
+"loader before you reboot (which may require mounting modified partitions).  "
+"It is impossible do both things!  So you'll need to boot off a rescue disk, "
+"and reinstall your boot loader from the rescue disk.  Read section 4 of the "
+"Parted User documentation for more information."
+msgstr ""
+"無法重新讀入分割區表。同樣,您必須在掛載任何修改過的分割區之前重新啟動。您還"
+"需要在您重新啟動之前重新安裝開機載入程式 (它可能需要掛載修改過的分割區)。同時"
+"做這兩件事是不可能的!所以您就需要從回復碟片啟動,並從回復碟片重新安裝您的開"
+"機載入程式。更多詳情請參閱 Parted 使用者文件的第四節。"
+
+#: libparted/arch/gnu.c:385
+#, c-format
+msgid ""
+"The partition table on %s cannot be re-read (%s).  This means the Hurd knows "
+"nothing about any modifications you made.  You should reboot your computer "
+"before doing anything with %s."
+msgstr ""
+"%s 上的分割區表無法被重新讀取 (%s)。這意味著 Hurd 不知道任何您所作的修改。您"
+"應該在對 %s 做任何操作之前重新啟動您的電腦。"
+
+#: libparted/arch/gnu.c:396 parted/parted.c:1967
+msgid ""
+"You should reinstall your boot loader before rebooting.  Read section 4 of "
+"the Parted User documentation for more information."
+msgstr ""
+"您應該在重新啟動之前重新安裝您的開機載入程式。詳情請閱讀 Parted 使用者文件的"
+"第四節。"
+
+#: libparted/arch/gnu.c:788
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%s 試圖將 %s 同步到磁碟上"
+
+#: libparted/arch/linux.c:520
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "無法對設備 %s - %s 進行 stat 操作。"
+
+#: libparted/arch/linux.c:577
+#, fuzzy, c-format
+msgid "Unable to determine the dm type of %s."
+msgstr "無法確定 %s (%s) 的大小。"
+
+#: libparted/arch/linux.c:669
+#, fuzzy, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+"無法決定 %s 的磁區大小:%s。\n"
+"使用預設磁區大小 (%d)。"
+
+#: libparted/arch/linux.c:690
+#, fuzzy, c-format
+msgid ""
+"Could not determine physical sector size for %s.\n"
+"Using the logical sector size (%lld)."
+msgstr ""
+"無法決定 %s 的磁區大小:%s。\n"
+"使用預設磁區大小 (%d)。"
+
+#: libparted/arch/linux.c:746
+#, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "無法確定 %s (%s) 的大小。"
+
+#: libparted/arch/linux.c:832
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "無法獲取設備 %s - %s 的標識"
+
+#: libparted/arch/linux.c:841
+msgid "Generic IDE"
+msgstr "一般 IDE"
+
+#: libparted/arch/linux.c:862
+#, c-format
+msgid ""
+"Device %s has multiple (%d) logical sectors per physical sector.\n"
+"GNU Parted supports this EXPERIMENTALLY for some special disk label/file "
+"system combinations, e.g. GPT and ext2/3.\n"
+"Please consult the web site for up-to-date information."
+msgstr ""
+"裝置 %s 的每一物理磁區具有多個 (%d) 邏輯磁區。\n"
+"GNU Parted 對某些特定磁碟標籤/檔案系統組合還是[實驗性]支援,像是 GPT 和 "
+"ext2/3。\n"
+"請參照網頁以獲得最新的資訊。"
+
+#: libparted/arch/linux.c:1039
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "初始化 SCSI 設備 %s - %s 出錯"
+
+#: libparted/arch/linux.c:1103
+#, fuzzy, c-format
+msgid ""
+"The device %s is so small that it cannot possibly store a file system or "
+"partition table.  Perhaps you selected the wrong device?"
+msgstr ""
+"設備 %s 的長度為零,因此也許無法保存檔案系統或分割區表。可能您選擇了錯誤的設"
+"備?"
+
+#: libparted/arch/linux.c:1216
+#, fuzzy, c-format
+msgid ""
+"Unable to determine geometry of file/device %s.  You should not use Parted "
+"unless you REALLY know what you're doing!"
+msgstr ""
+"無法確定檔案/設備的幾何結構。除非您確實知道您在做什麼,否則您不該使用 "
+"Parted!"
+
+#: libparted/arch/linux.c:1276
+msgid "Generic SD/MMC Storage Card"
+msgstr ""
+
+#: libparted/arch/linux.c:1329
+msgid "DAC960 RAID controller"
+msgstr "DAC960 RAID 控制器"
+
+#: libparted/arch/linux.c:1334
+msgid "Promise SX8 SATA Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1339
+msgid "ATA over Ethernet Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1345
+msgid "IBM S390 DASD drive"
+msgstr ""
+
+#: libparted/arch/linux.c:1351
+msgid "IBM iSeries Virtual DASD"
+msgstr ""
+
+#: libparted/arch/linux.c:1356
+msgid "Compaq Smart Array"
+msgstr "Compaq 智慧型陣列"
+
+#: libparted/arch/linux.c:1361
+msgid "ATARAID Controller"
+msgstr "ATARAID 控制器"
+
+#: libparted/arch/linux.c:1366
+msgid "I2O Controller"
+msgstr "I2O 控制器"
+
+#: libparted/arch/linux.c:1371
+msgid "User-Mode Linux UBD"
+msgstr "使用者模式 Linux UBD"
+
+#: libparted/arch/linux.c:1384
+#, c-format
+msgid "Linux device-mapper (%s)"
+msgstr ""
+
+#: libparted/arch/linux.c:1395
+msgid "Xen Virtual Block Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1400
+msgid "Unknown"
+msgstr "未知"
+
+#: libparted/arch/linux.c:1409
+msgid "Virtio Block Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1414
+msgid "Linux Software RAID Array"
+msgstr ""
+
+#: libparted/arch/linux.c:1421
+msgid "ped_device_new()  Unsupported device type"
+msgstr "ped_device_new()  不支援的設備類型"
+
+#: libparted/arch/linux.c:1518 libparted/arch/linux.c:1590
+#, fuzzy, c-format
+msgid "Error fsyncing/closing %s: %s"
+msgstr "開啟 %s 出錯:%s"
+
+#: libparted/arch/linux.c:1754
+#, c-format
+msgid "end of file while reading %s"
+msgstr ""
+
+#: libparted/arch/linux.c:2390
+#, c-format
+msgid ""
+"Error informing the kernel about modifications to partition %s -- %s.  This "
+"means Linux won't know about any changes you made to %s until you reboot -- "
+"so you shouldn't mount it or use it in any way before rebooting."
+msgstr ""
+"通知核心關於分割區 %s -- %s 的修改時出錯。這意味著 Linux 在重新啟動之前無法知"
+"道您針對 %s 所作的任何修改 - 所以您也不能在重新啟動之前掛載或以任何方式使用"
+"它。"
+
+#: libparted/arch/linux.c:2528
+#, fuzzy, c-format
+msgid "Unable to determine the size and length of %s."
+msgstr "無法確定 %s (%s) 的大小。"
+
+#: libparted/arch/linux.c:2553
+#, fuzzy, c-format
+msgid "Failed to add partition %d (%s)"
+msgstr "%s:列舉分割區區塊時失敗。"
+
+#: libparted/arch/linux.c:2580
+#, c-format
+msgid ""
+"Partition(s) %s on %s have been written, but we have been unable to inform "
+"the kernel of the change, probably because it/they are in use.  As a result, "
+"the old partition(s) will remain in use.  You should reboot now before "
+"making further changes."
+msgstr ""
+
+#: libparted/arch/linux.c:2706
+#, fuzzy, c-format
+msgid ""
+"parted was unable to re-read the partition table on %s (%s).  This means "
+"Linux won't know anything about the modifications you made. "
+msgstr ""
+"核心無法重新讀取 %s (%s) 上的分割區表。這意味這 Linux 在您重新啟動之前無法知"
+"道任何修改。您應該在對 %s 做任何操作之前重新啟動您的電腦。"
+
+#: libparted/cs/geom.c:161
+#, fuzzy, c-format
+msgid "Can't have the end before the start! (start sector=%jd length=%jd)"
+msgstr "無法在開始之前結束!"
+
+#: libparted/cs/geom.c:169
+msgid "Can't have a partition outside the disk!"
+msgstr "無法讓分割區超出磁碟!"
+
+#: libparted/cs/geom.c:384
+#, c-format
+msgid "Attempt to write sectors %ld-%ld outside of partition on %s."
+msgstr "試圖寫入 %3$s 上分割區之外的磁區 %1$ld-%2$ld。"
+
+#: libparted/cs/geom.c:424
+msgid "checking for bad blocks"
+msgstr "檢查壞區塊"
+
+#: libparted/debug.c:96
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:109
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr ""
+
+#: libparted/disk.c:192
+#, fuzzy, c-format
+msgid "%s: unrecognised disk label"
+msgstr "無法開啟 %s - 無法識別的磁碟標籤。"
+
+#: libparted/disk.c:484
+#, c-format
+msgid ""
+"This libparted doesn't have write support for %s.  Perhaps it was compiled "
+"read-only."
+msgstr "這個 libparted 不支援對 %s 的寫入操作。可能它是以唯讀方式編譯的。"
+
+#: libparted/disk.c:629
+#, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "分割區 %d 大小為 %s,但檔案系統大小為 %s。"
+
+#: libparted/disk.c:838
+msgid "cylinder_alignment"
+msgstr ""
+
+#: libparted/disk.c:844
+#, fuzzy, c-format
+msgid "Unknown disk flag, %d."
+msgstr "未知的分割區旗標,%d。"
+
+#: libparted/disk.c:1283
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "%s 磁碟標籤不支援擴充分割區。"
+
+#: libparted/disk.c:1858
+#, c-format
+msgid "%s disk labels don't support logical or extended partitions."
+msgstr "%s 磁碟標籤不支援邏輯或擴充分割區。"
+
+#: libparted/disk.c:1871
+msgid "Too many primary partitions."
+msgstr "過多的主分割區。"
+
+#: libparted/disk.c:1880
+#, c-format
+msgid ""
+"Can't add a logical partition to %s, because there is no extended partition."
+msgstr "由於沒有擴充分割區,無法將邏輯分割區添加到 %s。"
+
+#: libparted/disk.c:1904
+#, c-format
+msgid "Can't have more than one extended partition on %s."
+msgstr "%s 上不能含有多於一個的擴充分割區。"
+
+#: libparted/disk.c:1914
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr "邏輯分割區不能位於擴充分割區之外。"
+
+#: libparted/disk.c:1939
+#, c-format
+msgid "Can't have a logical partition outside of the extended partition on %s."
+msgstr "%s 上的邏輯分割區不能位於擴充分割區之外。"
+
+#: libparted/disk.c:1949 libparted/disk.c:2008 libparted/disk.c:2186
+msgid "Can't have overlapping partitions."
+msgstr "分割區不能重疊。"
+
+#: libparted/disk.c:1957
+msgid "Can't have a primary partition inside an extended partition."
+msgstr "擴充分割區中不能含有主分割區。"
+
+#: libparted/disk.c:2387
+msgid "metadata"
+msgstr "中繼資料"
+
+#: libparted/disk.c:2389
+msgid "free"
+msgstr "自由空間"
+
+#: libparted/disk.c:2391 parted/ui.c:1194 parted/ui.c:1222
+msgid "extended"
+msgstr "擴充分割區"
+
+#: libparted/disk.c:2393 parted/ui.c:1198 parted/ui.c:1226
+msgid "logical"
+msgstr "邏輯分割區"
+
+#: libparted/disk.c:2395 parted/ui.c:1190 parted/ui.c:1218
+msgid "primary"
+msgstr "主分割區"
+
+#: libparted/disk.c:2411
+msgid "boot"
+msgstr "啟動"
+
+#: libparted/disk.c:2413
+msgid "bios_grub"
+msgstr ""
+
+#: libparted/disk.c:2415
+msgid "root"
+msgstr "根"
+
+#: libparted/disk.c:2417
+msgid "swap"
+msgstr "交換分割區"
+
+#: libparted/disk.c:2419
+msgid "hidden"
+msgstr "隱藏分割區"
+
+#: libparted/disk.c:2421
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2423
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2425
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2427
+msgid "hp-service"
+msgstr "hp-服務"
+
+#: libparted/disk.c:2429
+msgid "palo"
+msgstr "palo"
+
+#: libparted/disk.c:2431
+msgid "prep"
+msgstr "prep"
+
+#: libparted/disk.c:2433
+msgid "msftres"
+msgstr "msftres"
+
+#: libparted/disk.c:2435
+msgid "atvrecv"
+msgstr ""
+
+#: libparted/disk.c:2437
+msgid "diag"
+msgstr ""
+
+#: libparted/disk.c:2439
+msgid "legacy_boot"
+msgstr ""
+
+#: libparted/disk.c:2445
+#, c-format
+msgid "Unknown partition flag, %d."
+msgstr "未知的分割區旗標,%d。"
+
+#: libparted/exception.c:77
+msgid "Information"
+msgstr "資訊"
+
+#: libparted/exception.c:78
+msgid "Warning"
+msgstr "警告"
+
+#: libparted/exception.c:79
+msgid "Error"
+msgstr "錯誤"
+
+#: libparted/exception.c:80
+msgid "Fatal"
+msgstr "致命錯誤"
+
+#: libparted/exception.c:81
+msgid "Bug"
+msgstr "臭蟲"
+
+#: libparted/exception.c:82
+msgid "No Implementation"
+msgstr "未實作"
+
+#: libparted/exception.c:86
+msgid "Fix"
+msgstr "修正"
+
+#: libparted/exception.c:87
+msgid "Yes"
+msgstr "是"
+
+#: libparted/exception.c:88
+msgid "No"
+msgstr "否"
+
+#: libparted/exception.c:89
+msgid "OK"
+msgstr "確認"
+
+#: libparted/exception.c:90
+msgid "Retry"
+msgstr "重試"
+
+#: libparted/exception.c:91
+msgid "Ignore"
+msgstr "忽略"
+
+#: libparted/exception.c:92
+msgid "Cancel"
+msgstr "取消"
+
+#: libparted/exception.c:132
+#, fuzzy, c-format
+msgid ""
+"A bug has been detected in GNU Parted.  Refer to the web site of parted "
+"http://www.gnu.org/software/parted/parted.html for more information of what "
+"could be useful for bug submitting!  Please email a bug report to %s "
+"containing at least the version (%s) and the following message:  "
+msgstr ""
+"發現 GNU Parted 中的程式錯誤。參照 parted 的網址 http://www.gnu.org/software/"
+"parted/parted.html 以獲得更多有關提交錯誤報告的有用資訊。請將至少含有版本 "
+"(%s) 和以下資訊的錯誤報告發送到 bug-parted@gnu.org:"
+
+#: libparted/labels/aix.c:103
+#, fuzzy
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr "建立 %s 檔案系統的支援尚未實作。"
+
+#: libparted/labels/aix.c:114
+#, fuzzy
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr "建立 %s 檔案系統的支援尚未實作。"
+
+#: libparted/labels/aix.c:127
+#, fuzzy
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr "建立 %s 檔案系統的支援尚未實作。"
+
+#: libparted/labels/aix.c:137
+#, fuzzy
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr "建立 %s 檔案系統的支援尚未實作。"
+
+#: libparted/labels/aix.c:155
+#, fuzzy
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr "建立 %s 檔案系統的支援尚未實作。"
+
+#: libparted/labels/aix.c:165
+#, fuzzy
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr "建立 %s 檔案系統的支援尚未實作。"
+
+#: libparted/labels/bsd.c:571 libparted/labels/dasd.c:833
+#: libparted/labels/dos.c:2176 libparted/labels/dvh.c:787
+#: libparted/labels/gpt.c:1782 libparted/labels/loop.c:247
+#: libparted/labels/mac.c:1426 libparted/labels/pc98.c:748
+#: libparted/labels/rdb.c:1052 libparted/labels/sun.c:780
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "無法滿足分割區的所有限制。"
+
+#: libparted/labels/bsd.c:596
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "無法定位 bsd 磁碟標籤槽。"
+
+#: libparted/labels/dasd.c:859
+#, fuzzy
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "無法定位 bsd 磁碟標籤槽。"
+
+#: libparted/labels/dos.c:966
+#, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr "%s 上的分割區表無效 - 錯誤的簽名 %x。"
+
+#: libparted/labels/dos.c:994
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "無效的分割區表 - %s 出現遞歸分割區。"
+
+#: libparted/labels/dos.c:1504
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr "擴充分割區無法隱藏於 msdos 磁碟標籤之上。"
+
+#: libparted/labels/dos.c:2158
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr "Parted 無法改變由「視窗動態磁碟」所管理的分割區大小。"
+
+#: libparted/labels/dvh.c:200
+#, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr "%s 沒有擴充分割區 (卷頭分割區)。"
+
+#: libparted/labels/dvh.c:326
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr "總和檢查錯誤,標明分割區表已損壞。"
+
+#: libparted/labels/dvh.c:631
+msgid "Only primary partitions can be root partitions."
+msgstr "只有主分割區可以做為根分割區。"
+
+#: libparted/labels/dvh.c:645
+msgid "Only primary partitions can be swap partitions."
+msgstr "只有主分割區可以是交換分割區。"
+
+#: libparted/labels/dvh.c:659
+msgid "Only logical partitions can be a boot file."
+msgstr "只有邏輯分割區可以是個開機檔案。"
+
+#: libparted/labels/dvh.c:736
+#, fuzzy, c-format
+msgid ""
+"failed to set dvh partition name to %s:\n"
+"Only logical partitions (boot files) have a name."
+msgstr "只有邏輯分割區 (開機檔案) 擁有名字。"
+
+#: libparted/labels/dvh.c:829
+msgid "Too many primary partitions"
+msgstr "過多的主分割區"
+
+#: libparted/labels/fdasd.c:98
+msgid "open error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:101
+msgid "seek error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:104
+msgid "read error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:110
+msgid "ioctl() error"
+msgstr ""
+
+#: libparted/labels/fdasd.c:114
+msgid "API version mismatch"
+msgstr ""
+
+#: libparted/labels/fdasd.c:118
+#, fuzzy
+msgid "Unsupported disk type"
+msgstr "ped_device_new()  不支援的設備類型"
+
+#: libparted/labels/fdasd.c:122
+msgid "Unsupported disk format"
+msgstr ""
+
+#: libparted/labels/fdasd.c:126
+#, fuzzy
+msgid "Disk is in use"
+msgstr "磁碟 %s:%s\n"
+
+#: libparted/labels/fdasd.c:130
+msgid "Syntax error in config file"
+msgstr ""
+
+#: libparted/labels/fdasd.c:134
+msgid "Volume label is corrupted"
+msgstr ""
+
+#: libparted/labels/fdasd.c:138
+msgid "A data set name is corrupted"
+msgstr ""
+
+#: libparted/labels/fdasd.c:142
+#, fuzzy
+msgid "Memory allocation failed"
+msgstr "資料重新定位時失敗。"
+
+#: libparted/labels/fdasd.c:146
+#, fuzzy
+msgid "Device verification failed"
+msgstr "資料重新定位時失敗。"
+
+#: libparted/labels/fdasd.c:147
+msgid "The specified device is not a valid DASD device"
+msgstr ""
+
+#: libparted/labels/fdasd.c:150 libparted/labels/vtoc.c:179
+#, fuzzy
+msgid "Fatal error"
+msgstr "致命錯誤"
+
+#: libparted/labels/fdasd.c:226
+msgid "No room for volume label."
+msgstr ""
+
+#: libparted/labels/fdasd.c:234
+#, fuzzy
+msgid "No room for partition info."
+msgstr "找不到有效的分割區映射。"
+
+#: libparted/labels/fdasd.c:709
+#, fuzzy
+msgid "Invalid VTOC."
+msgstr "無效的編號。"
+
+#: libparted/labels/fdasd.c:766
+msgid "Could not retrieve API version."
+msgstr ""
+
+#: libparted/labels/fdasd.c:769
+#, c-format
+msgid ""
+"The current API version '%d' doesn't match dasd driver API version '%d'!"
+msgstr ""
+
+#: libparted/labels/fdasd.c:806
+msgid "Could not retrieve disk geometry information."
+msgstr ""
+
+#: libparted/labels/fdasd.c:810
+msgid "Could not retrieve blocksize information."
+msgstr ""
+
+#: libparted/labels/fdasd.c:815
+msgid "Could not retrieve disk information."
+msgstr ""
+
+#: libparted/labels/gpt.c:493
+#, c-format
+msgid ""
+"%s contains GPT signatures, indicating that it has a GPT table.  However, it "
+"does not have a valid fake msdos partition table, as it should.  Perhaps it "
+"was corrupted -- possibly by a program that doesn't understand GPT partition "
+"tables.  Or perhaps you deleted the GPT table, and are now using an msdos "
+"partition table.  Is this a GPT partition table?"
+msgstr ""
+"%s 含有 GPT 簽名,標明它含有 GPT 表。然而,它並不像應該的那樣含有有效的偽 "
+"msdos 分割區表。可能它已經損壞 - 可能是不理解 GPT 分割區表的程式所導致的。或"
+"者您刪除了 GPT 表,而現在使用 msdos 分割區表。這是 GPT 分割區表嗎?"
+
+#: libparted/labels/gpt.c:693
+#, fuzzy, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise.  Please report this!"
+msgstr ""
+"GPT 分割區表的格式版本為 %x,它比 Parted 所能識別的版本要新。請告訴我們!bug-"
+"parted@gnu.org"
+
+#: libparted/labels/gpt.c:740
+#, c-format
+msgid ""
+"Not all of the space available to %s appears to be used, you can fix the GPT "
+"to use all of the space (an extra %llu blocks) or continue with the current "
+"setting? "
+msgstr ""
+
+#: libparted/labels/gpt.c:952
+msgid ""
+"The backup GPT table is not at the end of the disk, as it should be.  This "
+"might mean that another operating system believes the disk is smaller.  Fix, "
+"by moving the backup to the end (and removing the old backup)?"
+msgstr ""
+"備份 GPT 表不像應該的那樣出現在磁碟的末尾。這可能意味者其它操作系統相信磁碟小"
+"一些。經由將備份移動到末尾 (並刪除舊備份) 來修正它?"
+
+#: libparted/labels/gpt.c:976
+msgid ""
+"Both the primary and backup GPT tables are corrupt.  Try making a fresh "
+"table, and using Parted's rescue feature to recover partitions."
+msgstr ""
+"主 GPT 和備份 GPT 都損壞了。現在試圖建立新表,並使用 Parted 的回復功能以重建"
+"分割區表。"
+
+#: libparted/labels/gpt.c:987
+#, fuzzy
+msgid ""
+"The backup GPT table is corrupt, but the primary appears OK, so that will be "
+"used."
+msgstr "主 GPT 表損壞,但備份似乎是正確的,所以將會使用它。"
+
+#: libparted/labels/gpt.c:999
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr "主 GPT 表損壞,但備份似乎是正確的,所以將會使用它。"
+
+#: libparted/labels/gpt.c:1023
+msgid "primary partition table array CRC mismatch"
+msgstr ""
+
+#: libparted/labels/mac.c:184
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "無效的 Mac 磁碟標籤簽名 %x。"
+
+#: libparted/labels/mac.c:231
+msgid "Partition map has no partition map entry!"
+msgstr "分割區映射不含有分割區映射條目!"
+
+#: libparted/labels/mac.c:279
+#, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr "%s 對 Mac 磁碟標籤來說太小了!"
+
+#: libparted/labels/mac.c:508
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "分割區 %d 含有無效的簽名 %x。"
+
+#: libparted/labels/mac.c:526
+#, c-format
+msgid "Partition %d has an invalid length of 0 bytes!"
+msgstr "分割區 %d 含有無效的長度 0 位元組!"
+
+#: libparted/labels/mac.c:557
+msgid "The data region doesn't start at the start of the partition."
+msgstr "資料區並未從分割區的起點開始。"
+
+#: libparted/labels/mac.c:574
+msgid "The boot region doesn't start at the start of the partition."
+msgstr "啟動區域並未從分割區的起點開始。"
+
+#: libparted/labels/mac.c:588
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr "分割區的啟動區域並未佔用整個分割區。"
+
+#: libparted/labels/mac.c:599
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr "分割區的資料區域並未佔用整個分割區。"
+
+#: libparted/labels/mac.c:652
+#, c-format
+msgid ""
+"Weird block size on device descriptor: %d bytes is not divisible by 512."
+msgstr "設備描述中出現古怪的區塊大小:%d 位元組不能被 512 整除。"
+
+#: libparted/labels/mac.c:665
+#, c-format
+msgid ""
+"The driver descriptor says the physical block size is %d bytes, but Linux "
+"says it is %d bytes."
+msgstr "磁碟描述表明物理區塊大小為 %d 位元組,但 Linux 認為它是 %d 位元組。"
+
+#: libparted/labels/mac.c:719
+msgid "No valid partition map found."
+msgstr "找不到有效的分割區映射。"
+
+#: libparted/labels/mac.c:780
+#, c-format
+msgid ""
+"Conflicting partition map entry sizes!  Entry 1 says it is %d, but entry %d "
+"says it is %d!"
+msgstr "分割區映射條目大小發生衝突!條目 1 說它是 %d,但條目 %d 說它是 %d!"
+
+#: libparted/labels/mac.c:811
+msgid "Weird!  There are 2 partitions map entries!"
+msgstr "奇怪!兩個分割區映射條目!"
+
+#: libparted/labels/mac.c:1357
+msgid ""
+"Changing the name of a root or swap partition will prevent Linux from "
+"recognising it as such."
+msgstr "改變根分割區或交換分割區的名稱將導致 Linux 無法識別它。"
+
+#: libparted/labels/mac.c:1461
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr "無法添加另一個分割區 -- 分割區映射過小!"
+
+#: libparted/labels/pc98.c:331
+#, c-format
+msgid "Invalid partition table on %s."
+msgstr "%s 的分割區表無效。"
+
+#: libparted/labels/pc98.c:384 libparted/labels/pc98.c:462
+#, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries.  This is still "
+"unsupported."
+msgstr "分割區 %d 並未對齊到磁柱邊界。此功能仍然尚未被支援。"
+
+#: libparted/labels/pc98.c:780
+msgid "Can't add another partition."
+msgstr "無法添加其它分割區。"
+
+#: libparted/labels/pt-tools.c:125
+#, c-format
+msgid ""
+"partition length of %jd sectors exceeds the %s-partition-table-imposed "
+"maximum of %jd"
+msgstr ""
+
+#: libparted/labels/pt-tools.c:138
+#, c-format
+msgid ""
+"starting sector number, %jd exceeds the %s-partition-table-imposed maximum "
+"of %jd"
+msgstr ""
+
+#: libparted/labels/rdb.c:169
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr "%s:區塊 %llu 的類型 %s 有不當的總和檢查值。"
+
+#: libparted/labels/rdb.c:484
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr "%s:無法找到 rdb 區塊,這不應該發生。"
+
+#: libparted/labels/rdb.c:573
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr "%s:於區塊 %d 偵測到迴圈。"
+
+#: libparted/labels/rdb.c:592
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr "%1$s:區塊 %3$s 處似有不當 %2$s 列表。"
+
+#: libparted/labels/rdb.c:691
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr "%s:列舉不當區塊時失敗。"
+
+#: libparted/labels/rdb.c:699
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr "%s:列舉分割區區塊時失敗。"
+
+#: libparted/labels/rdb.c:707
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr "%s:列舉檔案系統區塊時失敗。"
+
+#: libparted/labels/rdb.c:715
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr "%s:列舉開機區塊時失敗。"
+
+#: libparted/labels/rdb.c:742
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr "寫入分割區區塊 %d 時失敗。"
+
+#: libparted/labels/rdb.c:1080
+msgid "Unable to allocate a partition number."
+msgstr "無法定位分割區編號。"
+
+#: libparted/labels/sun.c:161
+msgid "Corrupted Sun disk label detected."
+msgstr "偵測到損壞了的 Sun 磁碟標籤。"
+
+#: libparted/labels/sun.c:276
+#, c-format
+msgid ""
+"The disk CHS geometry (%d,%d,%d) reported by the operating system does not "
+"match the geometry stored on the disk label (%d,%d,%d)."
+msgstr ""
+"由作業系統回報的磁碟 CHS 幾何結構 (%d,%d,%d) 與保存在磁碟標籤中的幾何結構 "
+"(%d,%d,%d) 不符合。"
+
+#: libparted/labels/sun.c:298
+#, c-format
+msgid "The disk label describes a disk bigger than %s."
+msgstr "磁碟標籤描述的磁碟大於 %s。"
+
+#: libparted/labels/sun.c:473
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr "該磁碟具有 %d 圈磁柱,已超過 65536 的最大限制。"
+
+#: libparted/labels/sun.c:812
+msgid ""
+"The Whole Disk partition is the only available one left.  Generally, it is "
+"not a good idea to overwrite this partition with a real one.  Solaris may "
+"not be able to boot without it, and SILO (the sparc boot loader) appreciates "
+"it as well."
+msgstr ""
+"整個磁碟分割區是惟一還留下可用的區塊。一般而言,以真實的區塊來覆寫這塊分割區 "
+"並不是個好主意。沒有了它,Solaris 也許就無法開機,並且 SILO (sparc 開機載入程"
+"式) 也會因此而感激的。"
+
+#: libparted/labels/sun.c:827
+msgid "Sun disk label is full."
+msgstr "Sun 磁碟標籤已滿。"
+
+#: libparted/labels/vtoc.c:164
+msgid "opening of device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:168
+msgid "seeking on device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:172
+msgid "writing to device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:176
+msgid "reading from device failed"
+msgstr ""
+
+#: libparted/labels/vtoc.c:299 libparted/labels/vtoc.c:308
+#: libparted/labels/vtoc.c:329 libparted/labels/vtoc.c:336
+msgid "Could not read volume label."
+msgstr ""
+
+#: libparted/labels/vtoc.c:356 libparted/labels/vtoc.c:363
+#, fuzzy
+msgid "Could not write volume label."
+msgstr "無法偵測檔案系統。"
+
+#: libparted/labels/vtoc.c:469
+msgid "Could not read VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:496
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:516
+msgid "Could not write VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:522
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:529
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:536
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:543
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/libparted.c:230 libparted/libparted.c:245
+msgid "Out of memory."
+msgstr "記憶體耗盡。"
+
+#: libparted/unit.c:138
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr "無法獲得特殊的「COMPACT」所用的單位大小。"
+
+#: libparted/unit.c:384
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr "定位 \"%s\" 時語法無效。"
+
+#: libparted/unit.c:392
+#, c-format
+msgid "The maximum head value is %d."
+msgstr "磁頭數量的最大值為 %d。"
+
+#: libparted/unit.c:399
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr "磁區數量的最大值為 %d。"
+
+#: libparted/unit.c:411 libparted/unit.c:556
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr "位置 %s 超出裝置 %s 的範圍。"
+
+#: libparted/unit.c:531
+msgid "Invalid number."
+msgstr "無效的編號。"
+
+#: libparted/fs/amiga/affs.c:62 libparted/fs/amiga/apfs.c:55
+#: libparted/fs/amiga/asfs.c:69
+#, fuzzy, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "%s:列舉分割區區塊時失敗。"
+
+#: libparted/fs/amiga/affs.c:77 libparted/fs/amiga/apfs.c:68
+#: libparted/fs/amiga/asfs.c:81
+#, fuzzy, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr "%s:列舉開機區塊時失敗。"
+
+#: libparted/fs/amiga/affs.c:82 libparted/fs/amiga/apfs.c:73
+#, fuzzy, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr "%s:於區塊 %d 偵測到迴圈。"
+
+#: libparted/fs/amiga/affs.c:98 libparted/fs/amiga/apfs.c:84
+#: libparted/fs/amiga/asfs.c:87 libparted/fs/amiga/asfs.c:101
+#, fuzzy, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr "%s:於區塊 %d 偵測到迴圈。"
+
+#: libparted/fs/amiga/amiga.c:71
+#, fuzzy, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr "%s:列舉不當區塊時失敗。"
+
+#: libparted/fs/amiga/amiga.c:188
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:201
+#, fuzzy, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr "%s:區塊 %llu 的類型 %s 有不當的總和檢查值。"
+
+#: libparted/fs/amiga/amiga.c:211
+#, fuzzy, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s:於區塊 %d 偵測到迴圈。"
+
+#: libparted/fs/amiga/amiga.c:277
+#, fuzzy, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr "%s:列舉不當區塊時失敗。"
+
+#: libparted/fs/amiga/amiga.c:288
+#, fuzzy, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr "%s:無法找到 rdb 區塊,這不應該發生。"
+
+#: libparted/fs/amiga/amiga.c:317
+#, fuzzy, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr "%s:列舉分割區區塊時失敗。"
+
+#: libparted/fs/fat/fat.c:174
+msgid ""
+"GNU Parted was miscompiled: the FAT boot sector should be 512 bytes.  FAT "
+"support will be disabled."
+msgstr "GNU parted 編譯錯誤:FAT 啟動磁區應為 512 位元組。FAT 支援將被關閉。"
+
+#: libparted/fs/fat/bootsector.c:49 libparted/fs/fat/bootsector.c:56
+msgid "File system has an invalid signature for a FAT file system."
+msgstr "檔案系統含有無效的 FAT 檔案系統簽名。"
+
+#: libparted/fs/fat/bootsector.c:64
+msgid "File system has an invalid sector size for a FAT file system."
+msgstr "檔案系統的磁區大小對 FAT 檔案系統來說無效。"
+
+#: libparted/fs/fat/bootsector.c:71
+msgid "File system has an invalid cluster size for a FAT file system."
+msgstr "檔案系統的磁簇大小對 FAT 檔案系統來說無效。"
+
+#: libparted/fs/fat/bootsector.c:78
+msgid ""
+"File system has an invalid number of reserved sectors for a FAT file system."
+msgstr "檔案系統的保留磁區數對 FAT 檔案系統來說無效。"
+
+#: libparted/fs/fat/bootsector.c:85
+msgid "File system has an invalid number of FATs."
+msgstr "檔案系統的 FAT 數量無效。"
+
+#: libparted/fs/fat/bootsector.c:156
+#, c-format
+msgid ""
+"This file system has a logical sector size of %d.  GNU Parted is known not "
+"to work properly with sector sizes other than 512 bytes."
+msgstr ""
+"此檔案系統的邏輯磁區大小為 %d。GNU Parted 無法在磁區大小不是 512 位元組的情況"
+"下正確工作。"
+
+#: libparted/fs/fat/bootsector.c:181
+#, c-format
+msgid ""
+"The file system's CHS geometry is (%d, %d, %d), which is invalid.  The "
+"partition table's CHS geometry is (%d, %d, %d).  If you select Ignore, the "
+"file system's CHS geometry will be left unchanged.  If you select Fix, the "
+"file system's CHS geometry will be set to match the partition table's CHS "
+"geometry."
+msgstr ""
+"檔案系統的 CHS 幾何結構為 (%d, %d, %d),而其為無效。分割區表的 CHS 幾何結構"
+"為 (%d, %d, %d)。如果您選擇忽略,檔案系統的 CHS 幾何結構將會保留不變。如果您"
+"選擇修復,檔案系統的 CHS 幾何結構將會被設定以符合分割區表的 CHS 幾何結構。"
+
+#: libparted/fs/fat/bootsector.c:230
+msgid "FAT boot sector says logical sector size is 0.  This is weird. "
+msgstr "FAT 啟動磁區聲稱邏輯磁區的大小為零。這很奇怪。"
+
+#: libparted/fs/fat/bootsector.c:236
+msgid "FAT boot sector says there are no FAT tables.  This is weird. "
+msgstr "FAT 啟動磁區聲稱沒有 FAT 表。這很奇怪。"
+
+#: libparted/fs/fat/bootsector.c:242
+msgid "FAT boot sector says clusters are 0 sectors.  This is weird. "
+msgstr "FAT 啟動磁區聲稱磁簇具有零磁區。這很奇怪。"
+
+#: libparted/fs/fat/bootsector.c:252
+msgid "File system is FAT12, which is unsupported."
+msgstr "檔案系統為 FAT12,不支援。"
+
+#: libparted/fs/fat/bootsector.c:428
+#, c-format
+msgid ""
+"The information sector has the wrong signature (%x).  Select cancel for now, "
+"and send in a bug report.  If you're desperate, it's probably safe to ignore."
+msgstr ""
+"資訊磁區的簽名錯誤 (%x)。現在選擇取消,並發送程式錯誤報告。如果您不顧一切,選"
+"擇忽略有可能是「安全」的。"
+
+#: libparted/fs/linux_swap/linux_swap.c:247
+#, fuzzy, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "無法識別的 linux 交換簽名「%10s」。"
+
+#: libparted/fs/linux_swap/linux_swap.c:290
+#, fuzzy, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "無法識別的 linux 交換簽名「%10s」。"
+
+#: libparted/fs/linux_swap/linux_swap.c:330
+#, fuzzy, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "無法識別的 linux 交換簽名「%10s」。"
+
+#: libparted/fs/hfs/probe.c:50
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to "
+"%d bytes."
+msgstr "Parted 無法在其磁區大小不等於 %d 位元組的磁碟上使用 HFS 檔案系統。"
+
+#: parted/parted.c:123
+msgid "displays this help message"
+msgstr "顯示此求助資訊"
+
+#: parted/parted.c:124
+msgid "lists partition layout on all block devices"
+msgstr ""
+
+#: parted/parted.c:125
+msgid "displays machine parseable output"
+msgstr ""
+
+#: parted/parted.c:126
+msgid "never prompts for user intervention"
+msgstr "從不提示使用者介入"
+
+#: parted/parted.c:127
+msgid "displays the version"
+msgstr "顯示版本"
+
+#: parted/parted.c:128
+#, fuzzy
+msgid "alignment for new partitions"
+msgstr "無法建立更多分割區。"
+
+#: parted/parted.c:140
+msgid ""
+"NUMBER is the partition number used by Linux.  On MS-DOS disk labels, the "
+"primary partitions number from 1 to 4, logical partitions from 5 onwards.\n"
+msgstr ""
+"NUMBER 是 Linux 使用的分割區編號。在 MS-DOS 磁碟標籤中,主分割區編號為 1 - "
+"4,邏輯分割區從 5 開始。\n"
+
+#: parted/parted.c:143
+msgid "LABEL-TYPE is one of: "
+msgstr "LABEL-TYPE 是以下任意一項:"
+
+#: parted/parted.c:144
+msgid "FLAG is one of: "
+msgstr "FLAG 是以下任意一項:"
+
+#: parted/parted.c:145
+msgid "UNIT is one of: "
+msgstr "UNIT 是以下任意一項:"
+
+#: parted/parted.c:146
+msgid "desired alignment: minimum or optimal"
+msgstr ""
+
+#: parted/parted.c:147
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "PART-TYPE 是主分割區、邏輯分割區、擴充分割區之一\n"
+
+#: parted/parted.c:149
+msgid "FS-TYPE is one of: "
+msgstr "FS-TYPE 是以下任意一項:"
+
+#: parted/parted.c:150
+msgid ""
+"START and END are disk locations, such as 4GB or 10%.  Negative values count "
+"from the end of the disk.  For example, -1s specifies exactly the last "
+"sector.\n"
+msgstr ""
+"START 和 END 是磁碟用量,像是 4GB 或 10%。負數值則是從磁碟末端起算。例"
+"如,-1s 指定最後一個磁區。\n"
+
+#: parted/parted.c:153
+msgid "STATE is one of: on, off\n"
+msgstr "STATE 為:開、關\n"
+
+#: parted/parted.c:154
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "DEVICE 通常為 /dev/hda 或 /dev/sda\n"
+
+#: parted/parted.c:155
+msgid "NAME is any word you want\n"
+msgstr "NAME 是您需要的任何單詞\n"
+
+#: parted/parted.c:158
+#, fuzzy
+msgid ""
+"Copyright (C) 1998 - 2006 Free Software Foundation, Inc.\n"
+"This program is free software, covered by the GNU General Public License.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+msgstr ""
+"版權所有 (C) 1998 - 2006 自由軟體基金會。\n"
+"本程式為自由軟體,按 GNU 通用公共許可證發行。\n"
+"\n"
+"發行本程式是希望它能夠有用,但沒有任何擔保;甚至不包括隱含的適銷和適合特定用"
+"途的保證。詳情請參見 GNU 通用公共許可證。\n"
+"\n"
+
+#: parted/parted.c:204
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(剩餘時間 %.2d:%.2d)"
+
+#: parted/parted.c:223
+#, fuzzy, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr "正在使用分割區 %s。您必須在以 Parted 更改它之前先將它卸載。"
+
+#: parted/parted.c:241
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "正在使用 %s 上的分割區。"
+
+#: parted/parted.c:253
+#, c-format
+msgid ""
+"The existing disk label on %s will be destroyed and all data on this disk "
+"will be lost. Do you want to continue?"
+msgstr ""
+
+#: parted/parted.c:502
+msgid "New disk label type?"
+msgstr "新的磁碟標籤類型?"
+
+#: parted/parted.c:562
+msgid "Partition type?"
+msgstr "分割區類型?"
+
+#: parted/parted.c:580 parted/parted.c:766
+msgid "Partition name?"
+msgstr "分割區名稱?"
+
+#: parted/parted.c:588
+msgid "File system type?"
+msgstr "檔案系統類型?"
+
+#: parted/parted.c:594 parted/parted.c:1342
+msgid "Start?"
+msgstr "起始點?"
+
+#: parted/parted.c:596 parted/parted.c:1344
+msgid "End?"
+msgstr "結束點?"
+
+#: parted/parted.c:661
+#, fuzzy, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s.%s"
+msgstr ""
+"您要求將分割區從 %s 移動到 %s。\n"
+"我們可以管理的最接近分割區是從 %s 到 %s。這樣您可以接受嗎?"
+
+#: parted/parted.c:666
+msgid ""
+"\n"
+"Is this still acceptable to you?"
+msgstr ""
+
+#: parted/parted.c:688
+msgid "The resulting partition is not properly aligned for best performance."
+msgstr ""
+
+#: parted/parted.c:763 parted/parted.c:1383 parted/parted.c:1455
+#: parted/parted.c:1489
+msgid "Partition number?"
+msgstr "分割區編號?"
+
+#: parted/parted.c:841
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d.  Each cylinder is %s.\n"
+msgstr "BIOS 的磁柱、磁頭、磁區幾何結構:%d,%d,%d。每圈磁柱是 %s。\n"
+
+#: parted/parted.c:881
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr ""
+
+#: parted/parted.c:883
+#, c-format
+msgid "Disk %s: %s\n"
+msgstr "磁碟 %s:%s\n"
+
+#: parted/parted.c:884
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr "磁區大小 (邏輯/物理):%lldB/%lldB\n"
+
+#: parted/parted.c:896
+#, c-format
+msgid "Partition Table: %s\n"
+msgstr "分割區:%s\n"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Number"
+msgstr "編號"
+
+#: parted/parted.c:1007 parted/parted.c:1010
+msgid "Start"
+msgstr "起始點"
+
+#: parted/parted.c:1008 parted/parted.c:1011
+msgid "End"
+msgstr "結束點"
+
+#: parted/parted.c:1011
+msgid "Size"
+msgstr "大小"
+
+#: parted/parted.c:1015
+msgid "Type"
+msgstr "類型"
+
+#: parted/parted.c:1017
+msgid "File system"
+msgstr "檔案系統"
+
+#: parted/parted.c:1020
+msgid "Name"
+msgstr "名稱"
+
+#: parted/parted.c:1022
+msgid "Flags"
+msgstr "旗標"
+
+#: parted/parted.c:1079
+msgid "Free Space"
+msgstr "可用空間"
+
+#: parted/parted.c:1241
+#, c-format
+msgid ""
+"A %s %s partition was found at %s -> %s.  Do you want to add it to the "
+"partition table?"
+msgstr ""
+"在 %3$s -> %4$s 處找到一個 %1$s %2$s 分割區。您希望將其添加到分割表中嗎?"
+
+#: parted/parted.c:1280
+msgid "searching for file systems"
+msgstr "正在搜尋檔案系統"
+
+#: parted/parted.c:1408
+msgid "New device?"
+msgstr "新裝置?"
+
+#: parted/parted.c:1453
+msgid "alignment type(min/opt)"
+msgstr ""
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d aligned\n"
+msgstr ""
+
+#: parted/parted.c:1460
+#, c-format
+msgid "%d not aligned\n"
+msgstr ""
+
+#: parted/parted.c:1491
+msgid "Flag to Invert?"
+msgstr "要反相的旗標?"
+
+#: parted/parted.c:1496
+msgid "New state?"
+msgstr "新狀態?"
+
+#: parted/parted.c:1533
+msgid "Unit?"
+msgstr "單位?"
+
+#: parted/parted.c:1651
+#, fuzzy
+msgid "align-check"
+msgstr "檢查"
+
+#: parted/parted.c:1654
+msgid ""
+"align-check TYPE N                        check partition N for TYPE(min|"
+"opt) alignment"
+msgstr ""
+
+#: parted/parted.c:1662
+msgid "help"
+msgstr "help"
+
+#: parted/parted.c:1665
+#, fuzzy
+msgid ""
+"help [COMMAND]                           print general help, or help on "
+"COMMAND"
+msgstr ""
+"help [命令]                              印出一般求助資訊,或關於「命令」的資"
+"訊"
+
+#: parted/parted.c:1671
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:1671
+#, fuzzy
+msgid "mktable"
+msgstr "mklabel"
+
+#: parted/parted.c:1674
+#, fuzzy
+msgid ""
+"mklabel,mktable LABEL-TYPE               create a new disklabel (partition "
+"table)"
+msgstr "mklabel 標籤類型                         建立新的磁碟標籤 (分割區表)"
+
+#: parted/parted.c:1680
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:1683
+msgid "mkpart PART-TYPE [FS-TYPE] START END     make a partition"
+msgstr "mkpart 分割區類型 [檔案系統類型] 起始點 結束點      建立一個分割區"
+
+#: parted/parted.c:1689
+#, fuzzy
+msgid ""
+"'mkpart' makes a partition without creating a new file system on the "
+"partition.  FS-TYPE may be specified to set an appropriate partition ID.\n"
+msgstr ""
+"mkpart 建立分割區而不在分割區上建立新檔案系統。「檔案系統類型」可以用於設置適"
+"當的分割區識別號。\n"
+
+#: parted/parted.c:1694
+msgid "name"
+msgstr "name"
+
+#: parted/parted.c:1697
+msgid "name NUMBER NAME                         name partition NUMBER as NAME"
+msgstr ""
+"name 編號 名稱                           將指定「編號」的分割區命名為「名稱」"
+
+#: parted/parted.c:1702
+msgid "print"
+msgstr "print"
+
+#: parted/parted.c:1705
+msgid ""
+"print [devices|free|list,all|NUMBER]     display the partition table, "
+"available devices, free space, all found partitions, or a particular "
+"partition"
+msgstr ""
+
+#: parted/parted.c:1710
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+
+#: parted/parted.c:1712
+msgid "  devices   : display all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:1713
+msgid ""
+"  free      : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+
+#: parted/parted.c:1715
+#, fuzzy
+msgid ""
+"  list, all : display the partition tables of all active block devices\n"
+msgstr ""
+"print [free|編號|all]                    顯示分割區表、分割區,或者所有裝置"
+
+#: parted/parted.c:1716
+msgid ""
+"  NUMBER    : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+
+#: parted/parted.c:1721
+msgid "quit"
+msgstr "quit"
+
+#: parted/parted.c:1724
+msgid "quit                                     exit program"
+msgstr "quit                                     離開程式"
+
+#: parted/parted.c:1729
+msgid "rescue"
+msgstr "rescue"
+
+#: parted/parted.c:1732
+msgid ""
+"rescue START END                         rescue a lost partition near START "
+"and END"
+msgstr ""
+"rescue 起始點 結束點                     挽救臨近「起始點」、「結束點」的遺失"
+"的分割區"
+
+#: parted/parted.c:1738
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:1741
+msgid "rm NUMBER                                delete partition NUMBER"
+msgstr "rm 編號                                  刪除指定「編號」的分割區"
+
+#: parted/parted.c:1746
+msgid "select"
+msgstr "select"
+
+#: parted/parted.c:1749
+msgid "select DEVICE                            choose the device to edit"
+msgstr "select 設備                              選擇要編輯的設備"
+
+#: parted/parted.c:1754
+msgid "set"
+msgstr "set"
+
+#: parted/parted.c:1757
+msgid ""
+"set NUMBER FLAG STATE                    change the FLAG on partition NUMBER"
+msgstr "set 編號 旗標 狀態                       改變指定「編號」分割區的旗標"
+
+#: parted/parted.c:1763
+msgid "toggle"
+msgstr "toggle"
+
+#: parted/parted.c:1766
+msgid ""
+"toggle [NUMBER [FLAG]]                   toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+"toggle [編號 [旗標]]                     切換「編號」分割區上的「旗標」狀態"
+
+#: parted/parted.c:1772
+msgid "unit"
+msgstr "unit"
+
+#: parted/parted.c:1775
+msgid "unit UNIT                                set the default unit to UNIT"
+msgstr "unit 單位                                設定預設的「單位」"
+
+#: parted/parted.c:1780
+#, fuzzy
+msgid "version"
+msgstr "verion"
+
+#: parted/parted.c:1783
+#, fuzzy
+msgid ""
+"version                                  display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+"version                                  顯示目前 GNU Parted 的版本與版權資訊"
+
+#: parted/parted.c:1787
+#, fuzzy
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr "version 依據此份 GNU Parted 顯示其版權與版本資訊\n"
+
+#: parted/parted.c:1855
+#, c-format
+msgid "Usage: %s [-hlmsv] [-a<align>] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+
+#: parted/parted.c:1899
+msgid "No device found"
+msgstr "沒有找到設備"
+
+#: parted/parted.c:1936
+msgid "WARNING: You are not superuser.  Watch out for permissions."
+msgstr ""
+
+#: parted/parted.c:1974
+#, fuzzy
+msgid "You may need to update /etc/fstab.\n"
+msgstr "如果必要,不要忘記更新 /etc/fstab。\n"
+
+#: parted/ui.c:162
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr "歡迎使用 GNU Parted!輸入 'help' 來檢視命令列表。\n"
+
+#: parted/ui.c:165
+msgid ""
+"Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]\n"
+"Apply COMMANDs with PARAMETERS to DEVICE.  If no COMMAND(s) are given, run "
+"in\n"
+"interactive mode.\n"
+msgstr ""
+"用法:parted [選項]… [裝置 [命令 [參數]…]…]\n"
+"將帶有「參數」的「命令」應用於「裝置」。如果沒有指定「命令」,則以交談模式執"
+"行。\n"
+
+#: parted/ui.c:170
+#, fuzzy, c-format
+msgid ""
+"\n"
+"\n"
+"You found a bug in GNU Parted! Here's what you have to do:\n"
+"\n"
+"Don't panic! The bug has most likely not affected any of your data.\n"
+"Help us to fix this bug by doing the following:\n"
+"\n"
+"Check whether the bug has already been fixed by checking\n"
+"the last version of GNU Parted that you can find at:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Please check this version prior to bug reporting.\n"
+"\n"
+"If this has not been fixed yet or if you don't know how to check,\n"
+"please visit the GNU Parted website:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"for further information.\n"
+"\n"
+"Your report should contain the version of this release (%s)\n"
+"along with the error message below, the output of\n"
+"\n"
+"\tparted DEVICE unit co print unit s print\n"
+"\n"
+"and the following history of commands you entered.\n"
+"Also include any additional information about your setup you\n"
+"consider important.\n"
+msgstr ""
+"\n"
+"\n"
+"您找到了 GNU Parted 中的一個錯誤!以下是您必須進行的事:\n"
+"\n"
+"不必慌張!此一錯誤不太可能會影響到您的任何資料。\n"
+"請用以下方法來幫助我們修正這個錯誤:\n"
+"\n"
+"藉由檢查位於:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"的最新版 GNU Parted,您可以確認是否這個錯誤已經被修正了。\n"
+"請於回報錯誤前先檢查此一版本。\n"
+"\n"
+"如果這尚未被修正,或是您不知道如何去檢查,\n"
+"請參訪 GNU Parted 網址:\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"以獲得進一步的資訊。\n"
+"\n"
+"您的回報應該要包含釋出的版本編號 (%s)\n"
+"以及其下的錯誤訊息,系列命令\n"
+"\n"
+"\tparted 裝置 unit co print unit s print\n"
+"\n"
+"的輸出結果和其他您認為重要的設定資訊。\n"
+
+#: parted/ui.c:291
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+
+#: parted/ui.c:354
+#, fuzzy
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+"\n"
+"錯誤: SEGV_MAPERR (位址並未對應到物件)"
+
+#: parted/ui.c:360
+#, fuzzy
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+"\n"
+"錯誤: SEGV_ACCERR (對應的物件權限無效)"
+
+#: parted/ui.c:365
+#, fuzzy
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+"\n"
+"錯誤: 遇到一般的 SIGSEGV 訊號。"
+
+#: parted/ui.c:389
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+"\n"
+"錯誤: FPE_INTDIV (整數: 被零除)"
+
+#: parted/ui.c:394
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+"\n"
+"錯誤: FPE_INTOVF (整數: 向上溢位)"
+
+#: parted/ui.c:399
+#, fuzzy
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+"\n"
+"錯誤: FPE_INTDIV (浮點: 被零除)"
+
+#: parted/ui.c:404
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+"\n"
+"錯誤: FPE_FLTOVF (浮點: 向上溢位)"
+
+#: parted/ui.c:409
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+"\n"
+"錯誤: FPE_FLTUND (浮點: 向下溢位)"
+
+#: parted/ui.c:414
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+"\n"
+"錯誤: FPE_FLTRES (浮點: 不明確的結果)"
+
+#: parted/ui.c:419
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+"\n"
+"錯誤: FPE_FLTINV (浮點: 無效的操作)"
+
+#: parted/ui.c:424
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+"\n"
+"錯誤: FPE_FLTSUB (浮點: 註標超出範圍)"
+
+#: parted/ui.c:429
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+"\n"
+"錯誤: 遇到一般的 SIGFPE 訊號。"
+
+#: parted/ui.c:453
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+"\n"
+"錯誤: ILL_ILLOPC (不合法的操作碼)"
+
+#: parted/ui.c:458
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+"\n"
+"錯誤: ILL_ILLOPN (不合法的運算元)"
+
+#: parted/ui.c:463
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+"\n"
+"錯誤: ILL_ILLADR (不合法的定址模式)"
+
+#: parted/ui.c:468
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+"\n"
+"錯誤: ILL_ILLTRP (不合法的陷阱)"
+
+#: parted/ui.c:473
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+"\n"
+"錯誤: ILL_PRVOPC (具優先權的操作碼)"
+
+#: parted/ui.c:478
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+"\n"
+"錯誤: ILL_PRVREG (具優先權的暫存器)"
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+"\n"
+"錯誤: ILL_COPROC (輔助處理器錯誤)"
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+"\n"
+"錯誤: ILL_BADSTK (內部堆疊錯誤)"
+
+#: parted/ui.c:493
+#, fuzzy
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+"\n"
+"錯誤: 遇到一般的 SIGILL 訊號。"
+
+#: parted/ui.c:891
+#, fuzzy, c-format
+msgid "invalid token: %s"
+msgstr "無法開啟 %s。"
+
+#: parted/ui.c:1048
+msgid "Expecting a partition number."
+msgstr "需要分割區編號。"
+
+#: parted/ui.c:1057
+msgid "Partition doesn't exist."
+msgstr "分割區不存在。"
+
+#: parted/ui.c:1077
+msgid "Expecting a file system type."
+msgstr "需要檔案系統類型。"
+
+#: parted/ui.c:1084
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "未知的檔案系統類型「%s」。"
+
+#: parted/ui.c:1105
+msgid "Expecting a disk label type."
+msgstr "需要磁碟標籤類型。"
+
+#: parted/ui.c:1203
+msgid "Can't create any more partitions."
+msgstr "無法建立更多分割區。"
+
+#: parted/ui.c:1213
+msgid "Expecting a partition type."
+msgstr "需要分割區類型。"
+
+#: parted/ui.c:1361
+msgid "on"
+msgstr "開"
+
+#: parted/ui.c:1362
+msgid "off"
+msgstr "關"
+
+#: parted/ui.c:1379
+msgid "optimal"
+msgstr ""
+
+#: parted/ui.c:1380
+msgid "minimal"
+msgstr ""
+
+#: parted/ui.c:1513
+msgid "OPTIONs:"
+msgstr "選項:"
+
+#: parted/ui.c:1518
+msgid "COMMANDs:"
+msgstr "命令:"
+
+#: parted/ui.c:1521
+#, c-format
+msgid ""
+"\n"
+"Report bugs to %s\n"
+msgstr ""
+
+#: parted/ui.c:1528
+#, c-format
+msgid "Using %s\n"
+msgstr "使用 %s\n"
+
+#: parted/ui.c:1602
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr ""
+
+#, fuzzy
+#~ msgid "too few arguments"
+#~ msgstr "過多的不當分頁。"
+
+#, fuzzy
+#~ msgid "too many arguments"
+#~ msgstr "過多的不當分頁。"
+
+#, fuzzy
+#~ msgid "invalid minor device number: %s"
+#~ msgstr "無法開啟 %s。"
+
+#~ msgid "Could not detect file system."
+#~ msgstr "無法偵測檔案系統。"
+
+#~ msgid "The file system is bigger than its volume!"
+#~ msgstr "檔案系統比它的卷冊還大!"
+
+#~ msgid "Support for opening %s file systems is not implemented yet."
+#~ msgstr "開啟 %s 檔案系統的支援尚未實作。"
+
+#~ msgid "Support for creating %s file systems is not implemented yet."
+#~ msgstr "建立 %s 檔案系統的支援尚未實作。"
+
+#~ msgid "Support for checking %s file systems is not implemented yet."
+#~ msgstr "檢查 %s 檔案系統的支援尚未實作。"
+
+#~ msgid "raw block copying"
+#~ msgstr "原始區塊複製"
+
+#~ msgid "growing file system"
+#~ msgstr "正在擴大檔案系統"
+
+#~ msgid "Can't copy onto an overlapping partition."
+#~ msgstr "無法複製到重疊的分割區。"
+
+#~ msgid ""
+#~ "Direct support for copying file systems is not yet implemented for %s.  "
+#~ "However, support for resizing is implemented.  Therefore, the file system "
+#~ "can be copied if the new partition is at least as big as the old one.  "
+#~ "So, either shrink the partition you are trying to copy, or copy to a "
+#~ "bigger partition."
+#~ msgstr ""
+#~ "對 %s 來說尚不直接支援它的檔案系統複製。然而,改變大小的支援已實作完成。因"
+#~ "此,只要新分割區比舊分割區大,就能夠複製檔案系統。所以,縮小您試圖複製的分"
+#~ "割區,或是複製到較大的分割區。"
+
+#~ msgid "Support for copying %s file systems is not implemented yet."
+#~ msgstr "複製 %s 檔案系統的支援尚未實作。"
+
+#~ msgid "Support for resizing %s file systems is not implemented yet."
+#~ msgstr "改變 %s 檔案系統的支援尚未實作。"
+
+#, fuzzy
+#~ msgid "The file system is in an invalid state.  Perhaps it is mounted?"
+#~ msgstr "檔案系統比它的卷冊還大!"
+
+#, fuzzy
+#~ msgid "checking"
+#~ msgstr "檢查"
+
+#, fuzzy
+#~ msgid ""
+#~ "The reiserfs file system passed a basic check.  For a more comprehensive "
+#~ "check, run reiserfsck --check."
+#~ msgstr "ext2 檔案系統通過了基本檢查。至於更完整的檢查,請使用 e2fsck 程式。"
+
+#, fuzzy
+#~ msgid "Sorry, can't move the start of reiserfs partitions yet."
+#~ msgstr "抱歉,尚無法移動 ext2 分割區的起點!"
+
+#~ msgid "shrinking"
+#~ msgstr "正在縮小"
+
+#, fuzzy
+#~ msgid "expanding"
+#~ msgstr "警告"
+
+#, fuzzy
+#~ msgid "Device is too small for %lu blocks."
+#~ msgstr "對 ext2 來說檔案系統過小。"
+
+#~ msgid "Inconsistent group descriptors!"
+#~ msgstr "不一致的群組描述符號!"
+
+#~ msgid "File system full!"
+#~ msgstr "檔案系統已滿!"
+
+#~ msgid "Invalid superblock.  Are you sure this is an ext2 file system?"
+#~ msgstr "無效的超區塊。您確信它是一個 ext2 檔案系統?"
+
+#~ msgid "File system has errors!  You should run e2fsck."
+#~ msgstr "檔案系統發生錯誤!您應該執行 e2fsck。"
+
+#~ msgid ""
+#~ "File system was not cleanly unmounted!  You should run e2fsck.  Modifying "
+#~ "an unclean file system could cause severe corruption."
+#~ msgstr ""
+#~ "檔案系統沒有被乾淨地卸載!您應該執行 e2fsck。修改不乾淨的檔案系統可能導致"
+#~ "嚴重的損壞。"
+
+#~ msgid "Error allocating buffer cache."
+#~ msgstr "分配緩衝區快取時發生錯誤。"
+
+#~ msgid ""
+#~ "Found an inode with a incorrect link count.  Better go run e2fsck first!"
+#~ msgstr "找到帶有錯誤連結計數的 inode。最好先執行 e2fsck!"
+
+#~ msgid "Not enough free inodes!"
+#~ msgstr "沒有足夠的可用 inodes!"
+
+#~ msgid "File system is too full to remove a group!"
+#~ msgstr "檔案系統被過度佔用,以致無法刪除整組!"
+
+#~ msgid "File system has too many allocated inodes to remove a group!"
+#~ msgstr "檔案系統中已使用的 inode 過多,以致無法刪除整組!"
+
+#~ msgid "adding groups"
+#~ msgstr "添加群組"
+
+#~ msgid "Your file system is too full to resize it to %i blocks.  Sorry."
+#~ msgstr "您的檔案系統被過度佔用,以致無法將它的大小改變為 %i 個區塊。抱歉。"
+
+#~ msgid ""
+#~ "Your file system has too many occupied inodes to resize it to %i blocks.  "
+#~ "Sorry."
+#~ msgstr ""
+#~ "您的檔案系統中已使用的 inode 過多,以致無法將其大小改變為 %i 個區塊。抱"
+#~ "歉。"
+
+#~ msgid "File system was not cleanly unmounted!  You should run e2fsck."
+#~ msgstr "檔案系統沒有乾淨地卸載!您應該執行 e2fsck。"
+
+#~ msgid ""
+#~ "The file system has the 'dir_index' feature enabled.  Parted can only "
+#~ "resize the file system if it disables this feature.  You can enable it "
+#~ "later by running 'tune2fs -O dir_index DEVICE' and then 'e2fsck -fD "
+#~ "DEVICE'."
+#~ msgstr ""
+#~ "檔案系統已啟用「dir_index」的特殊功能。只有當此特性停用時,Parted 才能改變"
+#~ "檔案系統的大小。您可以在稍後利用執行「tune2fs -O dir_index DEVICE」來啟用"
+#~ "它,然後接著「e2fsck -fD DEVICE」。"
+
+#, fuzzy
+#~ msgid ""
+#~ "A resize operation on this file system will use EXPERIMENTAL code\n"
+#~ "that MAY CORRUPT it (although no one has reported any such damage yet).\n"
+#~ "You should at least backup your data first, and run 'e2fsck -f' "
+#~ "afterwards."
+#~ msgstr ""
+#~ "在這個檔案系統上改變大小的操作,將會使用[實驗性]的程式碼,它[有可能]造成"
+#~ "[毀損](雖然還不曾發生過)。您應該至少要備份您的資料,並在之後執行 'e2fsck -"
+#~ "f'。"
+
+#~ msgid "Cross-linked blocks found!  Better go run e2fsck first!"
+#~ msgstr "發現交叉連結區塊!最好先執行 e2fsck!"
+
+#~ msgid "Block %i has no reference?  Weird."
+#~ msgstr "區塊 %i 沒有被參照?奇怪。"
+
+#, fuzzy
+#~ msgid "Block %i shouldn't have been marked (%d, %d)!"
+#~ msgstr "區塊 %i 不應該已被標記!"
+
+#~ msgid ""
+#~ "The ext2 file system passed a basic check.  For a more comprehensive "
+#~ "check, use the e2fsck program."
+#~ msgstr "ext2 檔案系統通過了基本檢查。至於更完整的檢查,請使用 e2fsck 程式。"
+
+#~ msgid "Sorry, can't move the start of ext2 partitions yet!"
+#~ msgstr "抱歉,尚無法移動 ext2 分割區的起點!"
+
+#~ msgid "Couldn't flush buffer cache!"
+#~ msgstr "無法排空緩衝區快取!"
+
+#~ msgid "writing per-group metadata"
+#~ msgstr "寫入個別群組的中繼資料"
+
+#~ msgid "File system too small for ext2."
+#~ msgstr "對 ext2 來說檔案系統過小。"
+
+#~ msgid ""
+#~ "You need %s of free disk space to shrink this partition to this size.  "
+#~ "Currently, only %s is free."
+#~ msgstr ""
+#~ "您需要 %s 的自由空間來將此分割區收縮到這一大小。而目前只有 %s 的自由空間。"
+
+#~ msgid ""
+#~ "Cluster start delta = %d, which is not a multiple of the cluster size %d."
+#~ msgstr "磁簇起始偏移 = %d,不是磁簇大小 %d 的整數倍。"
+
+#~ msgid "Partition too big/small for a %s file system."
+#~ msgstr "對於 %s 檔案系統來說,分割區過大或過小。"
+
+#~ msgid ""
+#~ "The FATs don't match.  If you don't know what this means, then select "
+#~ "cancel, run scandisk on the file system, and then come back."
+#~ msgstr ""
+#~ "FAT 不相符合。如果你不知道它的含義,請選擇取消,並對檔案系統執行 "
+#~ "scandisk,然後再回到這裡來。"
+
+#~ msgid "There are no possible configurations for this FAT type."
+#~ msgstr "對於此 FAT 類型沒有可能的配置。"
+
+#~ msgid ""
+#~ "File system doesn't have expected sizes for Windows to like it.  Cluster "
+#~ "size is %dk (%dk expected); number of clusters is %d (%d expected); size "
+#~ "of FATs is %d sectors (%d expected)."
+#~ msgstr ""
+#~ "檔案系統的大小不是 Windows 所希望的。磁簇大小為 %dk (期望 %dk);磁簇數量"
+#~ "為 %d (期望 %d);FAT 的大小為 %d 磁區 (期望 %d)。"
+
+#~ msgid ""
+#~ "File system is reporting the free space as %d clusters, not %d clusters."
+#~ msgstr "檔案系統報告自由空間為 %d 磁簇,而不是 %d 磁簇。"
+
+#~ msgid ""
+#~ "There's not enough room in the root directory for all of the files.  "
+#~ "Either cancel, or ignore to lose the files."
+#~ msgstr ""
+#~ "根目錄下沒有保存所有檔案的足夠空間。取消或者以損失檔案為代價忽略它。"
+
+#~ msgid "Error writing to the root directory."
+#~ msgstr "寫入根目錄時錯誤。"
+
+#~ msgid ""
+#~ "If you leave your file system as FAT16, then you will have no problems."
+#~ msgstr "如果將您的檔案系統類型保持 FAT16 不變,那麼你就不會有問題。"
+
+#~ msgid ""
+#~ "If you convert to FAT16, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual)."
+#~ msgstr ""
+#~ "如果您轉換為 FAT16,並將 MS Windows 安裝到這個分割區,那麼您必須重新安裝 "
+#~ "MS Windows 開機載入程式。如果您打算這麼做,您應該參閱 Parted 的手冊 (或您"
+#~ "的發行版手冊)。"
+
+#~ msgid ""
+#~ "If you leave your file system as FAT32, then you will not introduce any "
+#~ "new problems."
+#~ msgstr "如果您保持檔案系統類型為 FAT32 不變,那麼您將不會遇到任何新問題。"
+
+#~ msgid ""
+#~ "If you convert to FAT32, and MS Windows is installed on this partition, "
+#~ "then you must re-install the MS Windows boot loader.  If you want to do "
+#~ "this, you should consult the Parted manual (or your distribution's "
+#~ "manual).  Also, converting to FAT32 will make the file system unreadable "
+#~ "by MS DOS, MS Windows 95a, and MS Windows NT."
+#~ msgstr ""
+#~ "如果您轉換為 FAT32,並且 MS Windows 安裝在這個分割區,那麼您必須重新安裝 "
+#~ "MS Windows 的開機載入程式。如果您打算這樣作,您應該參閱 Parted 的手冊 (或"
+#~ "者您的發行版手冊)。此外,將檔案系統轉換為 FAT32,檔案系統就不能夠被 MS "
+#~ "DOS、MS Windows 95a 和 MS Windows NT 所存取。"
+
+#~ msgid "%s  %s  %s"
+#~ msgstr "%s  %s  %s"
+
+#~ msgid "Would you like to use FAT32?"
+#~ msgstr "您是否願意使用 FAT32?"
+
+#~ msgid "%s  %s"
+#~ msgstr "%s  %s"
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT16."
+#~ msgstr "檔案系統的大小只能經由轉換為 FAT16 改變到這一大小。"
+
+#~ msgid ""
+#~ "The file system can only be resized to this size by converting to FAT32."
+#~ msgstr "檔案系統的大小只能經由轉換為 FAT32 改變到這一大小。"
+
+#~ msgid ""
+#~ "GNU Parted cannot resize this partition to this size.  We're working on "
+#~ "it!"
+#~ msgstr "GNU Parted 無法將此分割區轉換到這一大小。我們正在努力中!"
+
+#~ msgid "Bad directory entry for %s: first cluster is the end of file marker."
+#~ msgstr "%s 的目錄條目不當:第一個磁簇就是檔案標記的結束。"
+
+#~ msgid ""
+#~ "Bad FAT: unterminated chain for %s.  You should run dosfsck or scandisk."
+#~ msgstr "不當的 FAT:%s 的鏈結未結束。您應該執行 dosfsck 或 scandisk。"
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d outside file system in chain for %s.  You should run "
+#~ "dosfsck or scandisk."
+#~ msgstr ""
+#~ "不當的 FAT:在%2$s 的鏈結中,磁簇 %1$d 位於檔案系統之外。您應該執行 "
+#~ "dosfsck 或 scandisk。"
+
+#~ msgid ""
+#~ "Bad FAT: cluster %d is cross-linked for %s.  You should run dosfsck or "
+#~ "scandisk."
+#~ msgstr ""
+#~ "不當的 FAT:磁簇 %d 與 %s 的鏈結交叉。您應該執行 dosfsck 或 scandisk。"
+
+#~ msgid "%s is %dk, but it has %d clusters (%dk)."
+#~ msgstr "%s 為 %dk,但含有 %d 個磁簇 (%dk)。"
+
+#~ msgid ""
+#~ "The file %s is marked as a system file.  This means moving it could cause "
+#~ "some programs to stop working."
+#~ msgstr "檔案 %s 被標記為系統檔案。這意味著移動它可能導致某些程式停止工作。"
+
+#~ msgid ""
+#~ "FAT %d media %x doesn't match the boot sector's media %x.  You should "
+#~ "probably run scandisk."
+#~ msgstr ""
+#~ "FAT %d 媒體 %x 和啟動磁區所在的媒體 %x 不符合。您可能應該執行 scandisk。"
+
+#~ msgid "fat_table_set: cluster %ld outside file system"
+#~ msgstr "fat_table_set:磁簇 %ld 位於檔案系統之外"
+
+#~ msgid "fat_table_get: cluster %ld outside file system"
+#~ msgstr "fat_table_get:磁簇 %ld 位於檔案系統之外"
+
+#~ msgid "fat_table_alloc_cluster: no free clusters"
+#~ msgstr "fat_table_alloc_cluster:沒有自由磁簇"
+
+#~ msgid "Too many bad pages."
+#~ msgstr "過多的不當分頁。"
+
+#~ msgid "The file system contains errors."
+#~ msgstr "檔案系統包含錯誤。"
+
+#~ msgid "Bad blocks could not be read."
+#~ msgstr "無法讀取不當的區塊。"
+
+#~ msgid ""
+#~ "Trying to register an extent starting at block 0x%X, but another one "
+#~ "already exists at this position.  You should check the file system!"
+#~ msgstr ""
+#~ "嘗試註冊一個起始於區塊 0x%X 的擴充區,但是此處已有其他區塊存在。您應該檢查"
+#~ "檔案系統!"
+
+#~ msgid ""
+#~ "Trying to move an extent from block Ox%X to block Ox%X, but another one "
+#~ "already exists at this position.  This should not happen!"
+#~ msgstr ""
+#~ "嘗試將一個擴充區自區塊 Ox%X 移至 Ox%X,但是此處已有其他區塊存在。這種事不"
+#~ "應該發生!"
+
+#~ msgid "Could not update the extent cache for HFS file with CNID %X."
+#~ msgstr "無法更新具有 CNID %X 的 HFS 檔案擴充快取。"
+
+#~ msgid "Trying to read HFS file with CNID %X behind EOF."
+#~ msgstr "嘗試讀取資料於具有 CNID %X 的 HFS 檔案結尾之後。"
+
+#~ msgid "Could not find sector %lli of HFS file with CNID %X."
+#~ msgstr "無法找到具有 CNID %2$X 的 HFS 檔案之中的磁區 %1$lli。"
+
+#~ msgid "Trying to write HFS file with CNID %X behind EOF."
+#~ msgstr "嘗試寫入資料於具有 CNID %X 的 HFS 檔案結尾之後。"
+
+#~ msgid "Could not update the extent cache for HFS+ file with CNID %X."
+#~ msgstr "無法更新具有 CNID %X 的 HFS+ 檔案之擴充快取。"
+
+#~ msgid "Trying to read HFS+ file with CNID %X behind EOF."
+#~ msgstr "嘗試讀取資料於具有 CNID %X 的 HFS+ 檔案結尾之後。"
+
+#~ msgid "Could not find sector %lli of HFS+ file with CNID %X."
+#~ msgstr "無法找到具有 CNID %2$X 的 HFS+ 檔案之中的磁區 %1$lli。"
+
+#~ msgid "Trying to write HFS+ file with CNID %X behind EOF."
+#~ msgstr "嘗試寫入資料於具有 CNID %X 的 HFS+ 檔案結尾之後。"
+
+#~ msgid "Sorry, HFS cannot be resized that way yet."
+#~ msgstr "抱歉,HFS 尚無法以此方式改變大小。"
+
+#~ msgid "Data relocation has failed."
+#~ msgstr "資料重新定位時失敗。"
+
+#~ msgid "Data relocation left some data in the end of the volume."
+#~ msgstr "資料重新定位時留下一些資料於卷冊末端。"
+
+#~ msgid "writing HFS Master Directory Block"
+#~ msgstr "正在寫入 HFS 主目錄區塊"
+
+#~ msgid "No valid HFS[+X] signature has been found while opening."
+#~ msgstr "開啟時沒有找到任何有效的 HFS[+X] 簽章。"
+
+#~ msgid "Version %d of HFS+ isn't supported."
+#~ msgstr "並不支援版本 %d 的 HFS+。"
+
+#~ msgid "Version %d of HFSX isn't supported."
+#~ msgstr "並不支援版本 %d 的 HFSX。"
+
+#~ msgid "Data relocation left some data at the end of the volume."
+#~ msgstr "資料重定位後遺留一些資料於卷冊的末端。"
+
+#~ msgid "Error while writing the allocation file."
+#~ msgstr "寫入定位檔案時發生錯誤。"
+
+#~ msgid "Error while writing the compatibility part of the allocation file."
+#~ msgstr "寫入定位檔案的相容部份時發生錯誤。"
+
+#~ msgid "writing HFS+ Volume Header"
+#~ msgstr "正在寫入 HFS+ 卷冊表頭"
+
+#~ msgid "An error occurred while looking for the mandatory bad blocks file."
+#~ msgstr "尋找強制性損壞區塊檔案時發生錯誤。"
+
+#~ msgid ""
+#~ "It seems there is an error in the HFS wrapper: the bad blocks file "
+#~ "doesn't contain the embedded HFS+ volume."
+#~ msgstr ""
+#~ "在 HFS+ 轉包程式中似乎有錯誤:損壞的區塊檔案並未包含內嵌的 HFS+ 卷冊。"
+
+#~ msgid "Sorry, HFS+ cannot be resized that way yet."
+#~ msgstr "抱歉,HFS+ 尚無法以此方式改變大小。"
+
+#~ msgid "shrinking embedded HFS+ volume"
+#~ msgstr "正在縮小內嵌的 HFS+ 卷冊"
+
+#~ msgid "Resizing the HFS+ volume has failed."
+#~ msgstr "改變 HFS+ 卷冊大小時失敗。"
+
+#~ msgid "shrinking HFS wrapper"
+#~ msgstr "正在縮小 HFS 轉包程式"
+
+#~ msgid "Updating the HFS wrapper has failed."
+#~ msgstr "更新 HFS+ 轉包程式時失敗。"
+
+#~ msgid ""
+#~ "This is not a real %s check.  This is going to extract special low level "
+#~ "files for debugging purposes."
+#~ msgstr ""
+#~ "這並非是一次真正的 %s 檢查。而是為了要分離出特別的低階檔案,以達到除錯的目"
+#~ "的。"
+
+#~ msgid "Bad block list header checksum."
+#~ msgstr "不良的區塊列表頭總和檢查值。"
+
+#~ msgid ""
+#~ "Invalid size of a transaction block while replaying the journal (%i "
+#~ "bytes)."
+#~ msgstr "重播日誌時無效的異動區塊大小 (%i 位元組)。"
+
+#~ msgid ""
+#~ "Journal stored outside of the volume are not supported.  Try to "
+#~ "desactivate the journal and run Parted again."
+#~ msgstr "不支援日誌式 HFS+ 卷冊,您應該在其上嘗試任何作業之前關閉日誌功能。"
+
+#~ msgid "Journal offset or size is not multiple of the sector size."
+#~ msgstr "日誌偏移量或大小不是磁區大小的整數倍。"
+
+#~ msgid "Incorrect magic values in the journal header."
+#~ msgstr "在日誌表頭中有不正確的特異值。"
+
+#~ msgid "Journal size mismatch between journal info block and journal header."
+#~ msgstr "在日誌資訊區塊與日誌表頭之間的大小不相符合。"
+
+#~ msgid "Some header fields are not multiple of the sector size."
+#~ msgstr "某些表頭欄位不是磁區大小的整數倍。"
+
+#~ msgid ""
+#~ "The sector size stored in the journal is not 512 bytes.  Parted only "
+#~ "supports 512 bytes length sectors."
+#~ msgstr ""
+#~ "儲存於日誌的磁區大小不是 512 位元組。Parted 只支援長度為 512 位元組的磁"
+#~ "區。"
+
+#~ msgid "Bad journal checksum."
+#~ msgstr "不良的日誌總和檢查值。"
+
+#~ msgid ""
+#~ "The journal is not empty.  Parted must replay the transactions before "
+#~ "opening the file system.  This will modify the file system."
+#~ msgstr ""
+#~ "日誌並非為空。Parted 必須在開啟檔案系統之前重新播放異動。這將會修改檔案系"
+#~ "統。"
+
+#~ msgid ""
+#~ "The volume header or the master directory block has changed while "
+#~ "replaying the journal.  You should restart Parted."
+#~ msgstr ""
+#~ "當重新播放日誌時,卷冊表頭或是主目錄區塊已經改變。您應該重新啟動 Parted。"
+
+#~ msgid "An extent has not been relocated."
+#~ msgstr "尚未重新定位一個擴充分割區。"
+
+#~ msgid ""
+#~ "A reference to an extent comes from a place it should not.  You should "
+#~ "check the file system!"
+#~ msgstr "對於擴充分割區的參照來自一個不應該的地方。您應該檢查檔案系統!"
+
+#~ msgid "This HFS volume has no catalog file.  This is very unusual!"
+#~ msgstr "這個 HFS 卷冊沒有類目檔案。這是很不尋常的!"
+
+#~ msgid ""
+#~ "This HFS volume has no extents overflow file.  This is quite unusual!"
+#~ msgstr "這個 HFS 卷冊沒有擴充區溢位檔案。這是相當不尋常的!"
+
+#~ msgid ""
+#~ "The extents overflow file should not contain its own extents!  You should "
+#~ "check the file system."
+#~ msgstr "擴充區溢位檔案不應該包含它自己的擴充部份!您應該檢查檔案系統。"
+
+#~ msgid "Could not cache the file system in memory."
+#~ msgstr "無法快取記憶體中的檔案系統。"
+
+#~ msgid "Bad blocks list could not be loaded."
+#~ msgstr "不當的區塊列表無法被載入。"
+
+#~ msgid "An error occurred during extent relocation."
+#~ msgstr "擴充分割區重新定位期間發生錯誤。"
+
+#~ msgid "This HFS+ volume has no catalog file.  This is very unusual!"
+#~ msgstr "這個 HFS+ 卷冊沒有類目檔案。這是很不尋常的!"
+
+#~ msgid ""
+#~ "This HFS+ volume has no extents overflow file.  This is quite unusual!"
+#~ msgstr "這個 HFS+ 卷冊沒有擴充區溢位檔案。這是相當不尋常的!"
+
+#~ msgid "The partition must have one of the following FS-TYPEs: "
+#~ msgstr "分割區必須具備以下 FS-TYPEs 之一:"
+
+#~ msgid "Source device?"
+#~ msgstr "來源設備?"
+
+#~ msgid "Source partition number?"
+#~ msgstr "來源分割區編號?"
+
+#~ msgid "Can't copy an extended partition."
+#~ msgstr "無法複製擴充分割區。"
+
+#~ msgid "Destination partition number?"
+#~ msgstr "目標分割區編號?"
+
+#~ msgid ""
+#~ "An extended partition cannot hold a file system.  Did you want mkpart?"
+#~ msgstr "擴充分割區不能含有檔案系統。您是要用 mkpart 吧?"
+
+#~ msgid "Can't move an extended partition."
+#~ msgstr "無法移動擴充分割區。"
+
+#~ msgid "Can't move a partition onto itself.  Try using resize, perhaps?"
+#~ msgstr "無法將分割區移動到它自身。也許試試改變大小?"
+
+#~ msgid "Minor: %d\n"
+#~ msgstr "編號:%d\n"
+
+#~ msgid "Flags: %s\n"
+#~ msgstr "旗標:%s\n"
+
+#~ msgid "File System: %s\n"
+#~ msgstr "檔案系統:%s\n"
+
+#~ msgid "Size:         "
+#~ msgstr "大小:        "
+
+#~ msgid "Minimum size: "
+#~ msgstr "最小尺寸:"
+
+#~ msgid "Maximum size: "
+#~ msgstr "最大尺寸:"
+
+#~ msgid "check"
+#~ msgstr "檢查"
+
+#~ msgid ""
+#~ "check NUMBER                             do a simple check on the file "
+#~ "system"
+#~ msgstr "check 編號                               對檔案系統進行簡單的檢查"
+
+#~ msgid "cp"
+#~ msgstr "cp"
+
+#~ msgid ""
+#~ "cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   copy file system to another "
+#~ "partition"
+#~ msgstr ""
+#~ "cp [來源裝置] 來源編號 目標編號          將檔案系統複製到另一個分割區"
+
+#~ msgid "mkfs"
+#~ msgstr "mkfs"
+
+#, fuzzy
+#~ msgid ""
+#~ "mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on "
+#~ "partition NUMBER"
+#~ msgstr ""
+#~ "mkfs 編號 檔案系統類型                   在指定「編號」的分割區中建立類型"
+#~ "為「檔案系統類型」的檔案系統"
+
+#~ msgid "mkpartfs"
+#~ msgstr "mkpartfs"
+
+#~ msgid ""
+#~ "mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file "
+#~ "system"
+#~ msgstr ""
+#~ "mkpartfs 分割區類型 檔案系統類型 起始點 結束點  建立一個帶有檔案系統的分割"
+#~ "區"
+
+#~ msgid "move"
+#~ msgstr "move"
+
+#~ msgid "move NUMBER START END                    move partition NUMBER"
+#~ msgstr "move 編號 起始點 結束點                  移動指定「編號」的分割區"
+
+#~ msgid "resize"
+#~ msgstr "resize"
+
+#~ msgid ""
+#~ "resize NUMBER START END                  resize partition NUMBER and its "
+#~ "file system"
+#~ msgstr ""
+#~ "resize 編號 起始點 結束點                改變位於指定「編號」的分割區中檔"
+#~ "案系統的大小"
+
+#, fuzzy
+#~ msgid ""
+#~ "Device %s has a logical sector size of %lld.  Not all parts of GNU Parted "
+#~ "support this at the moment, and the working code is HIGHLY EXPERIMENTAL.\n"
+#~ msgstr "%s 的邏輯磁區大小為 %d。目前並非全部的 GNU Parted 都支援它。\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Could not determine minimum io size for %s: %s.\n"
+#~ "Using the default size (%lld)."
+#~ msgstr ""
+#~ "無法決定 %s 的磁區大小:%s。\n"
+#~ "使用預設磁區大小 (%d)。"
+
+#, fuzzy
+#~ msgid "Unable to determine the block size of this dasd"
+#~ msgstr "無法確定 %s (%s) 的大小。"
+
+#~ msgid ""
+#~ "The kernel was unable to re-read the partition table on %s (%s).  This "
+#~ "means Linux won't know anything about the modifications you made until "
+#~ "you reboot.  You should reboot your computer before doing anything with "
+#~ "%s."
+#~ msgstr ""
+#~ "核心無法重新讀取 %s (%s) 上的分割區表。這意味這 Linux 在您重新啟動之前無法"
+#~ "知道任何修改。您應該在對 %s 做任何操作之前重新啟動您的電腦。"
+
+#~ msgid "Attempt to read sectors %ld-%ld outside of partition on %s."
+#~ msgstr "試圖讀取 %3$s 上分割區之外的磁區 %1$ld-%2$ld。"
+
+#~ msgid "File system has an incompatible feature enabled."
+#~ msgstr "檔案系統啟用了不相容的功能。"
+
+#~ msgid "where necessary, prompts for user intervention"
+#~ msgstr "在必要時,提示使用者介入"
+
+#~ msgid "GNU Parted Version information:\n"
+#~ msgstr "GNU Parted 版本資訊:\n"
+
+#~ msgid "File system?"
+#~ msgstr "檔案系統?"
+
+#~ msgid ""
+#~ "Without arguments, print displays the entire partition table. With "
+#~ "'free'\n"
+#~ "argument, information about free space will be displayed otherwise if a\n"
+#~ "partition number is given, then more detailed information is displayed\n"
+#~ "about that partition. If the 'all' argument is passed instead, partition\n"
+#~ "information for all devices will be displayed."
+#~ msgstr ""
+#~ "若無引數,print 顯示整個分割區表。利用 'free' 引數來顯示可用空間的資訊,\n"
+#~ "否則如果指定了分割區號碼,就顯示更多關於分割區的詳細資訊。如果以引數 "
+#~ "'all' 來取代,\n"
+#~ "將會顯示所有裝置的分割區資訊。"
diff --git a/scripts/data/abi/baseline_symbols.txt b/scripts/data/abi/baseline_symbols.txt
new file mode 100644 (file)
index 0000000..010a55e
--- /dev/null
@@ -0,0 +1,450 @@
+FUNC:__efi_crc32
+FUNC:_amiga_add_id
+FUNC:_amiga_free_ids
+FUNC:_amiga_id_in_list
+FUNC:_copy_hidden_sectors
+FUNC:_fini
+FUNC:_init
+FUNC:_ped_device_probe
+FUNC:_ped_disk_alloc
+FUNC:_ped_disk_free
+FUNC:_ped_partition_alloc
+FUNC:_ped_partition_attempt_align
+FUNC:_ped_partition_free
+FUNC:_update_stats
+FUNC:abs_mod
+FUNC:amiga_find_part
+FUNC:ext2_bcache_deinit
+FUNC:ext2_bcache_dump
+FUNC:ext2_bcache_flush
+FUNC:ext2_bcache_flush_range
+FUNC:ext2_bcache_init
+FUNC:ext2_bcache_sync
+FUNC:ext2_bcreate
+FUNC:ext2_block_relocate
+FUNC:ext2_bread
+FUNC:ext2_brelse
+FUNC:ext2_close
+FUNC:ext2_commit_metadata
+FUNC:ext2_copy_block
+FUNC:ext2_destroy_dev_handle
+FUNC:ext2_do_inode
+FUNC:ext2_find_free_block
+FUNC:ext2_find_free_inode
+FUNC:ext2_get_block_state
+FUNC:ext2_get_inode_offset
+FUNC:ext2_get_inode_state
+FUNC:ext2_inode_relocate
+FUNC:ext2_is_group_sparse
+FUNC:ext2_make_dev_handle_from_parted_geometry
+FUNC:ext2_metadata_push
+FUNC:ext2_mkfs
+FUNC:ext2_move_blocks
+FUNC:ext2_open
+FUNC:ext2_read_blocks
+FUNC:ext2_read_inode
+FUNC:ext2_resize_fs
+FUNC:ext2_set_block_state
+FUNC:ext2_set_inode_state
+FUNC:ext2_sync
+FUNC:ext2_write_blocks
+FUNC:ext2_write_inode
+FUNC:ext2_zero_blocks
+FUNC:ext2_zero_inode
+FUNC:extended_euclid
+FUNC:fat_alloc
+FUNC:fat_alloc_buffers
+FUNC:fat_boot_sector_analyse
+FUNC:fat_boot_sector_generate
+FUNC:fat_boot_sector_probe_type
+FUNC:fat_boot_sector_read
+FUNC:fat_boot_sector_set_boot_code
+FUNC:fat_boot_sector_write
+FUNC:fat_calc_align_sectors
+FUNC:fat_calc_resize_sizes
+FUNC:fat_calc_sizes
+FUNC:fat_check
+FUNC:fat_check_resize_geometry
+FUNC:fat_clobber
+FUNC:fat_close
+FUNC:fat_cluster_to_frag
+FUNC:fat_cluster_to_sector
+FUNC:fat_collect_cluster_info
+FUNC:fat_copy
+FUNC:fat_create
+FUNC:fat_create_fat16
+FUNC:fat_create_fat32
+FUNC:fat_dir_entry_get_first_cluster
+FUNC:fat_dir_entry_get_length
+FUNC:fat_dir_entry_get_name
+FUNC:fat_dir_entry_has_first_cluster
+FUNC:fat_dir_entry_is_active
+FUNC:fat_dir_entry_is_directory
+FUNC:fat_dir_entry_is_file
+FUNC:fat_dir_entry_is_null_term
+FUNC:fat_dir_entry_is_system_file
+FUNC:fat_dir_entry_set_first_cluster
+FUNC:fat_duplicate_clusters
+FUNC:fat_frag_to_cluster
+FUNC:fat_frag_to_sector
+FUNC:fat_free
+FUNC:fat_free_buffers
+FUNC:fat_get_cluster_flag
+FUNC:fat_get_cluster_usage
+FUNC:fat_get_copy_constraint
+FUNC:fat_get_create_constraint_fat16
+FUNC:fat_get_create_constraint_fat32
+FUNC:fat_get_fragment_flag
+FUNC:fat_get_resize_constraint
+FUNC:fat_info_sector_generate
+FUNC:fat_info_sector_read
+FUNC:fat_info_sector_write
+FUNC:fat_is_fragment_active
+FUNC:fat_is_sector_in_clusters
+FUNC:fat_max_cluster_count
+FUNC:fat_max_cluster_size
+FUNC:fat_min_cluster_count
+FUNC:fat_min_cluster_size
+FUNC:fat_min_reserved_sector_count
+FUNC:fat_op_context_create_initial_fat
+FUNC:fat_op_context_destroy
+FUNC:fat_op_context_map_cluster
+FUNC:fat_op_context_map_fragment
+FUNC:fat_op_context_map_static_cluster
+FUNC:fat_op_context_map_static_fragment
+FUNC:fat_op_context_new
+FUNC:fat_open
+FUNC:fat_probe
+FUNC:fat_probe_fat16
+FUNC:fat_probe_fat32
+FUNC:fat_read_cluster
+FUNC:fat_read_clusters
+FUNC:fat_read_fragment
+FUNC:fat_read_fragments
+FUNC:fat_recommend_min_cluster_size
+FUNC:fat_resize
+FUNC:fat_sector_to_cluster
+FUNC:fat_sector_to_frag
+FUNC:fat_set_frag_sectors
+FUNC:fat_table_alloc_check_cluster
+FUNC:fat_table_alloc_cluster
+FUNC:fat_table_clear
+FUNC:fat_table_compare
+FUNC:fat_table_count_stats
+FUNC:fat_table_destroy
+FUNC:fat_table_duplicate
+FUNC:fat_table_entry_size
+FUNC:fat_table_get
+FUNC:fat_table_is_active
+FUNC:fat_table_is_available
+FUNC:fat_table_is_bad
+FUNC:fat_table_is_empty
+FUNC:fat_table_is_eof
+FUNC:fat_table_new
+FUNC:fat_table_read
+FUNC:fat_table_set
+FUNC:fat_table_set_avail
+FUNC:fat_table_set_bad
+FUNC:fat_table_set_cluster_count
+FUNC:fat_table_set_eof
+FUNC:fat_table_write
+FUNC:fat_table_write_all
+FUNC:fat_traverse_begin
+FUNC:fat_traverse_complete
+FUNC:fat_traverse_directory
+FUNC:fat_traverse_entries_per_buffer
+FUNC:fat_traverse_mark_dirty
+FUNC:fat_traverse_next_dir_entry
+FUNC:fat_write_cluster
+FUNC:fat_write_clusters
+FUNC:fat_write_fragment
+FUNC:fat_write_fragments
+FUNC:fat_write_sync_cluster
+FUNC:fat_write_sync_clusters
+FUNC:fat_write_sync_fragment
+FUNC:fat_write_sync_fragments
+FUNC:findit
+FUNC:geom_dal_create
+FUNC:geom_dal_free
+FUNC:geom_dal_reopen
+FUNC:hfs_and_wrapper_probe
+FUNC:hfs_btree_search
+FUNC:hfs_file_close
+FUNC:hfs_file_open
+FUNC:hfs_file_read_sector
+FUNC:hfs_file_write_sector
+FUNC:hfs_find_start_pack
+FUNC:hfs_free_bad_blocks_list
+FUNC:hfs_get_empty_end
+FUNC:hfs_is_bad_block
+FUNC:hfs_pack_free_space_from_block
+FUNC:hfs_probe
+FUNC:hfs_read_bad_blocks
+FUNC:hfs_update_mdb
+FUNC:hfsc_cache_add_extent
+FUNC:hfsc_cache_move_extent
+FUNC:hfsc_cache_search_extent
+FUNC:hfsc_can_use_geom
+FUNC:hfsc_delete_cache
+FUNC:hfsc_new_cache
+FUNC:hfsj_replay_journal
+FUNC:hfsj_update_jib
+FUNC:hfsj_update_jl
+FUNC:hfsplus_btree_search
+FUNC:hfsplus_file_close
+FUNC:hfsplus_file_open
+FUNC:hfsplus_file_read
+FUNC:hfsplus_file_write
+FUNC:hfsplus_find_start_pack
+FUNC:hfsplus_free_bad_blocks_list
+FUNC:hfsplus_get_empty_end
+FUNC:hfsplus_get_min_size
+FUNC:hfsplus_is_bad_block
+FUNC:hfsplus_pack_free_space_from_block
+FUNC:hfsplus_probe
+FUNC:hfsplus_read_bad_blocks
+FUNC:hfsplus_update_vh
+FUNC:hfsx_probe
+FUNC:mac_alloc
+FUNC:ped_alignment_align_down
+FUNC:ped_alignment_align_nearest
+FUNC:ped_alignment_align_up
+FUNC:ped_alignment_destroy
+FUNC:ped_alignment_duplicate
+FUNC:ped_alignment_init
+FUNC:ped_alignment_intersect
+FUNC:ped_alignment_is_aligned
+FUNC:ped_alignment_new
+FUNC:ped_assert
+FUNC:ped_calloc
+FUNC:ped_constraint_any
+FUNC:ped_constraint_destroy
+FUNC:ped_constraint_done
+FUNC:ped_constraint_duplicate
+FUNC:ped_constraint_exact
+FUNC:ped_constraint_init
+FUNC:ped_constraint_intersect
+FUNC:ped_constraint_is_solution
+FUNC:ped_constraint_new
+FUNC:ped_constraint_new_from_max
+FUNC:ped_constraint_new_from_min
+FUNC:ped_constraint_new_from_min_max
+FUNC:ped_constraint_solve_max
+FUNC:ped_constraint_solve_nearest
+FUNC:ped_debug
+FUNC:ped_debug_set_handler
+FUNC:ped_device_begin_external_access
+FUNC:ped_device_check
+FUNC:ped_device_close
+FUNC:ped_device_destroy
+FUNC:ped_device_end_external_access
+FUNC:ped_device_free_all
+FUNC:ped_device_get
+FUNC:ped_device_get_constraint
+FUNC:ped_device_get_next
+FUNC:ped_device_is_busy
+FUNC:ped_device_open
+FUNC:ped_device_probe_all
+FUNC:ped_device_read
+FUNC:ped_device_sync
+FUNC:ped_device_sync_fast
+FUNC:ped_device_write
+FUNC:ped_disk_add_partition
+FUNC:ped_disk_amiga_done
+FUNC:ped_disk_amiga_init
+FUNC:ped_disk_bsd_done
+FUNC:ped_disk_bsd_init
+FUNC:ped_disk_check
+FUNC:ped_disk_clobber
+FUNC:ped_disk_commit
+FUNC:ped_disk_commit_to_dev
+FUNC:ped_disk_commit_to_os
+FUNC:ped_disk_delete_all
+FUNC:ped_disk_delete_partition
+FUNC:ped_disk_destroy
+FUNC:ped_disk_duplicate
+FUNC:ped_disk_dvh_done
+FUNC:ped_disk_dvh_init
+FUNC:ped_disk_extended_partition
+FUNC:ped_disk_get_last_partition_num
+FUNC:ped_disk_get_max_partition_geometry
+FUNC:ped_disk_get_max_primary_partition_count
+FUNC:ped_disk_get_partition
+FUNC:ped_disk_get_partition_by_sector
+FUNC:ped_disk_get_primary_partition_count
+FUNC:ped_disk_gpt_done
+FUNC:ped_disk_gpt_init
+FUNC:ped_disk_loop_done
+FUNC:ped_disk_loop_init
+FUNC:ped_disk_mac_done
+FUNC:ped_disk_mac_init
+FUNC:ped_disk_maximize_partition
+FUNC:ped_disk_minimize_extended_partition
+FUNC:ped_disk_msdos_done
+FUNC:ped_disk_msdos_init
+FUNC:ped_disk_new
+FUNC:ped_disk_new_fresh
+FUNC:ped_disk_next_partition
+FUNC:ped_disk_pc98_done
+FUNC:ped_disk_pc98_init
+FUNC:ped_disk_print
+FUNC:ped_disk_probe
+FUNC:ped_disk_remove_partition
+FUNC:ped_disk_set_partition_geom
+FUNC:ped_disk_sun_done
+FUNC:ped_disk_sun_init
+FUNC:ped_disk_type_check_feature
+FUNC:ped_disk_type_get
+FUNC:ped_disk_type_get_next
+FUNC:ped_disk_type_register
+FUNC:ped_disk_type_unregister
+FUNC:ped_div_round_to_nearest
+FUNC:ped_div_round_up
+FUNC:ped_exception_catch
+FUNC:ped_exception_fetch_all
+FUNC:ped_exception_get_option_string
+FUNC:ped_exception_get_type_string
+FUNC:ped_exception_leave_all
+FUNC:ped_exception_rethrow
+FUNC:ped_exception_set_handler
+FUNC:ped_exception_throw
+FUNC:ped_file_system_amiga_done
+FUNC:ped_file_system_amiga_init
+FUNC:ped_file_system_check
+FUNC:ped_file_system_clobber
+FUNC:ped_file_system_close
+FUNC:ped_file_system_copy
+FUNC:ped_file_system_create
+FUNC:ped_file_system_ext2_done
+FUNC:ped_file_system_ext2_init
+FUNC:ped_file_system_fat_done
+FUNC:ped_file_system_fat_init
+FUNC:ped_file_system_get_copy_constraint
+FUNC:ped_file_system_get_create_constraint
+FUNC:ped_file_system_get_resize_constraint
+FUNC:ped_file_system_hfs_done
+FUNC:ped_file_system_hfs_init
+FUNC:ped_file_system_jfs_done
+FUNC:ped_file_system_jfs_init
+FUNC:ped_file_system_linux_swap_done
+FUNC:ped_file_system_linux_swap_init
+FUNC:ped_file_system_ntfs_done
+FUNC:ped_file_system_ntfs_init
+FUNC:ped_file_system_open
+FUNC:ped_file_system_probe
+FUNC:ped_file_system_probe_specific
+FUNC:ped_file_system_reiserfs_done
+FUNC:ped_file_system_reiserfs_init
+FUNC:ped_file_system_resize
+FUNC:ped_file_system_type_get
+FUNC:ped_file_system_type_get_next
+FUNC:ped_file_system_type_register
+FUNC:ped_file_system_type_unregister
+FUNC:ped_file_system_ufs_done
+FUNC:ped_file_system_ufs_init
+FUNC:ped_file_system_xfs_done
+FUNC:ped_file_system_xfs_init
+FUNC:ped_geometry_check
+FUNC:ped_geometry_destroy
+FUNC:ped_geometry_duplicate
+FUNC:ped_geometry_init
+FUNC:ped_geometry_intersect
+FUNC:ped_geometry_map
+FUNC:ped_geometry_new
+FUNC:ped_geometry_read
+FUNC:ped_geometry_set
+FUNC:ped_geometry_set_end
+FUNC:ped_geometry_set_start
+FUNC:ped_geometry_sync
+FUNC:ped_geometry_sync_fast
+FUNC:ped_geometry_test_equal
+FUNC:ped_geometry_test_inside
+FUNC:ped_geometry_test_overlap
+FUNC:ped_geometry_test_sector_inside
+FUNC:ped_geometry_write
+FUNC:ped_get_version
+FUNC:ped_greatest_common_divisor
+FUNC:ped_malloc
+FUNC:ped_partition_destroy
+FUNC:ped_partition_flag_get_by_name
+FUNC:ped_partition_flag_get_name
+FUNC:ped_partition_flag_next
+FUNC:ped_partition_get_flag
+FUNC:ped_partition_get_name
+FUNC:ped_partition_get_path
+FUNC:ped_partition_is_active
+FUNC:ped_partition_is_busy
+FUNC:ped_partition_is_flag_available
+FUNC:ped_partition_new
+FUNC:ped_partition_print
+FUNC:ped_partition_set_flag
+FUNC:ped_partition_set_name
+FUNC:ped_partition_set_system
+FUNC:ped_partition_type_get_name
+FUNC:ped_realloc
+FUNC:ped_register_disk_type
+FUNC:ped_round_down_to
+FUNC:ped_round_to_nearest
+FUNC:ped_round_up_to
+FUNC:ped_set_architecture
+FUNC:ped_timer_destroy
+FUNC:ped_timer_destroy_nested
+FUNC:ped_timer_new
+FUNC:ped_timer_new_nested
+FUNC:ped_timer_reset
+FUNC:ped_timer_set_state_name
+FUNC:ped_timer_touch
+FUNC:ped_timer_update
+FUNC:ped_unit_format
+FUNC:ped_unit_format_byte
+FUNC:ped_unit_format_custom
+FUNC:ped_unit_format_custom_byte
+FUNC:ped_unit_get_by_name
+FUNC:ped_unit_get_default
+FUNC:ped_unit_get_name
+FUNC:ped_unit_get_size
+FUNC:ped_unit_parse
+FUNC:ped_unit_parse_custom
+FUNC:ped_unit_set_default
+FUNC:ped_unregister_disk_type
+FUNC:raw_part_parse
+NOTYPE:__bss_start
+NOTYPE:_edata
+NOTYPE:_end
+OBJECT:12:linux_disk_ops
+OBJECT:16:_affs0_type
+OBJECT:16:_affs1_type
+OBJECT:16:_affs2_type
+OBJECT:16:_affs3_type
+OBJECT:16:_affs4_type
+OBJECT:16:_affs5_type
+OBJECT:16:_affs6_type
+OBJECT:16:_affs7_type
+OBJECT:16:_amufs0_type
+OBJECT:16:_amufs1_type
+OBJECT:16:_amufs2_type
+OBJECT:16:_amufs3_type
+OBJECT:16:_amufs4_type
+OBJECT:16:_amufs5_type
+OBJECT:16:_amufs_type
+OBJECT:16:_apfs1_type
+OBJECT:16:_apfs2_type
+OBJECT:16:_asfs_type
+OBJECT:16:fat16_type
+OBJECT:16:fat32_type
+OBJECT:1:fat16
+OBJECT:24:ops
+OBJECT:324:xfsstats
+OBJECT:4:ext2_buffer_cache_pool_size
+OBJECT:4:ext2_hash_bits
+OBJECT:4:ext2_relocator_pool_size
+OBJECT:4:hfs_block
+OBJECT:4:hfs_block_count
+OBJECT:4:hfsp_block
+OBJECT:4:hfsp_block_count
+OBJECT:4:ped_alignment_any
+OBJECT:4:ped_alignment_none
+OBJECT:4:ped_architecture
+OBJECT:4:ped_exception
+OBJECT:8:_bitmap
+OBJECT:8:ped_linux_arch
diff --git a/scripts/extract_symvers b/scripts/extract_symvers
new file mode 100755 (executable)
index 0000000..005556e
--- /dev/null
@@ -0,0 +1,65 @@
+#!/bin/sh
+
+# Copyright (C) 2002-2003, 2007, 2009-2011 Free Software Foundation, Inc.
+#
+# This file is part of the GNU ISO C++ Library.  This library 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, 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 General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this library.  If not, see <http://www.gnu.org/licenses/>.
+#
+# As a special exception, you may use this file as part of a free software
+# library without restriction.  Specifically, if other files instantiate
+# templates or use macros or inline functions from this file, or you compile
+# this file and link it with other files to produce an executable, this
+# file does not by itself cause the resulting executable to be covered by
+# the GNU General Public License.  This exception does not however
+# invalidate any other reasons why the executable file might be covered by
+# the GNU General Public License.
+
+
+if test ${#} -lt 2 || test $1 = '--help'; then
+  echo "Usage:  extract_symvers  shared_lib output_file" 1>&2
+  exit 1
+fi
+
+lib=$1
+output=$2
+
+# GNU binutils, somewhere after version 2.11.2, requires -W/--wide to avoid
+# default line truncation.  -W is not supported and truncation did not occur
+# by default before that point.
+readelf="readelf --symbols"
+if readelf --help | grep -- --wide > /dev/null; then
+    readelf="$readelf --wide"
+fi
+
+# This avoids weird sorting problems later.
+LC_ALL=C
+export LC_ALL
+LANG=C
+export LANG
+
+tmp=extract.$$
+
+${readelf} ${lib} | sed '/\.dynsym/,/^$/p;d' | egrep -v ' (LOCAL|UND) ' |\
+awk '{ if ($4 == "FUNC" || $4 == "NOTYPE")
+         printf "%s:%s\n", $4, $8;
+       else if ($4 == "OBJECT")
+         printf "%s:%s:%s\n", $4, $3, $8;
+     }' | sort | uniq > $tmp 2>&1
+#       else printf "Huh?  What is %s?\n", $8;
+
+
+# I think we'll be doing some more with this file, but for now, dump.
+mv $tmp $output
+
+exit 0
diff --git a/tests/Makefile.am b/tests/Makefile.am
new file mode 100644 (file)
index 0000000..4ea08f3
--- /dev/null
@@ -0,0 +1,112 @@
+XFAIL_TESTS = \
+  t3200-type-change.sh
+
+TESTS = \
+  help-version \
+  t0000-basic.sh \
+  t0001-tiny.sh \
+  t0010-script-no-ctrl-chars.sh \
+  t0100-print.sh \
+  t0101-print-empty.sh \
+  t0200-gpt.sh \
+  t0201-gpt.sh \
+  t0202-gpt-pmbr.sh \
+  t0205-gpt-list-clobbers-pmbr.sh \
+  t0206-gpt-print-with-corrupt-primary-clobbers-pmbr.sh \
+  t0207-IEC-binary-notation.sh \
+  t0220-gpt-msftres.sh \
+  t0250-gpt.sh \
+  t0280-gpt-corrupt.sh \
+  t0300-dos-on-gpt.sh \
+  t0400-loop-clobber-infloop.sh \
+  t0500-dup-clobber.sh \
+  t1100-busy-label.sh \
+  t1101-busy-partition.sh \
+  t1700-probe-fs.sh \
+  t2200-dos-label-recog.sh \
+  t2300-dos-label-extended-bootcode.sh \
+  t2310-dos-extended-2-sector-min-offset.sh \
+  t2400-dos-hfs-partition-type.sh \
+  t3200-type-change.sh \
+  t3300-palo-prep.sh \
+  t3310-flags.sh \
+  t3400-whole-disk-FAT-partition.sh \
+  t4000-sun-raid-type.sh \
+  t4001-sun-vtoc.sh \
+  t4100-msdos-partition-limits.sh \
+  t4100-dvh-partition-limits.sh \
+  t4100-msdos-starting-sector.sh \
+  t4200-partprobe.sh \
+  t5000-tags.sh \
+  t6000-dm.sh \
+  t7000-scripting.sh \
+  t8000-loop.sh \
+  t9010-big-sector.sh \
+  t9020-alignment.sh \
+  t9021-maxima.sh \
+  t9030-align-check.sh \
+  t9040-many-partitions.sh \
+  t9041-undetected-in-use-16th-partition.sh \
+  t9050-partition-table-types.sh
+
+EXTRA_DIST = \
+  $(TESTS) lvm-utils.sh t-local.sh t-lvm.sh \
+  init.cfg init.sh t-lib-helpers.sh
+
+check_PROGRAMS = print-align print-max dup-clobber
+LDADD = \
+  $(top_builddir)/libparted/libparted.la
+AM_CPPFLAGS = \
+  -I$(top_srcdir)/lib \
+  -I$(top_srcdir)/include
+AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
+
+parted_dir = $(abs_top_builddir)/parted
+pp_dir = $(abs_top_builddir)/partprobe
+sep = $(PATH_SEPARATOR)
+
+# Note that the first lines are statements.  They ensure that environment
+# variables that can perturb tests are unset or set to expected values.
+# The rest are envvar settings that propagate build-related Makefile
+# variables to test scripts.
+TESTS_ENVIRONMENT =                            \
+  tmp__=$$TMPDIR; test -d "$$tmp__" || tmp__=.;        \
+  TMPDIR=$$tmp__; export TMPDIR;               \
+  exec 9>&2;                                   \
+  shell_or_perl_() {                           \
+    if grep '^\#!/usr/bin/perl' "$$1" > /dev/null; then                        \
+      if $(PERL) -e 'use warnings' > /dev/null 2>&1; then              \
+       grep '^\#!/usr/bin/perl -T' "$$1" > /dev/null && T_=T || T_=;   \
+        $(PERL) -w$$T_ -I$(srcdir) -MCoreutils                         \
+             -M"CuTmpdir qw($$f)" -- "$$1";    \
+      else                                     \
+       echo 1>&2 "$$tst: configure did not find a usable version of Perl," \
+         "so skipping this test";              \
+       (exit 77);                              \
+      fi;                                      \
+    else                                       \
+      $(SHELL) "$$1";                          \
+    fi;                                                \
+  };                                           \
+  export                                       \
+  abs_top_builddir='$(abs_top_builddir)'       \
+  abs_top_srcdir='$(abs_top_srcdir)'           \
+  abs_srcdir='$(abs_srcdir)'                   \
+  built_programs=parted                                \
+  srcdir='$(srcdir)'                           \
+  top_srcdir='$(top_srcdir)'                   \
+  AWK='$(AWK)'                                 \
+  CC='$(CC)'                                   \
+  MAKE=$(MAKE)                                 \
+  PACKAGE_BUGREPORT='$(PACKAGE_BUGREPORT)'     \
+  PACKAGE_VERSION=$(PACKAGE_VERSION)           \
+  CONFIG_HEADER='$(abs_top_builddir)/lib/config.h' \
+  ENABLE_DEVICE_MAPPER=$(ENABLE_DEVICE_MAPPER) \
+  PERL='$(PERL)'                               \
+  PREFERABLY_POSIX_SHELL='$(PREFERABLY_POSIX_SHELL)' \
+  REPLACE_GETCWD=$(REPLACE_GETCWD)             \
+  PATH='$(abs_top_builddir)/parted$(PATH_SEPARATOR)'"$$PATH" \
+  VERSION=$(VERSION)                           \
+  ; shell_or_perl_
+
+VERBOSE = yes
diff --git a/tests/Makefile.in b/tests/Makefile.in
new file mode 100644 (file)
index 0000000..2c4cbab
--- /dev/null
@@ -0,0 +1,1734 @@
+# Makefile.in generated by automake 1.11a from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in 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.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = print-align$(EXEEXT) print-max$(EXEEXT) \
+       dup-clobber$(EXEEXT)
+subdir = tests
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+       $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argmatch.m4 \
+       $(top_srcdir)/m4/assert.m4 $(top_srcdir)/m4/btowc.m4 \
+       $(top_srcdir)/m4/calloc.m4 $(top_srcdir)/m4/canonicalize.m4 \
+       $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
+       $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/configmake.m4 \
+       $(top_srcdir)/m4/dirname.m4 \
+       $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+       $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/environ.m4 \
+       $(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
+       $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fclose.m4 \
+       $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/fcntl_h.m4 \
+       $(top_srcdir)/m4/fflush.m4 $(top_srcdir)/m4/fpending.m4 \
+       $(top_srcdir)/m4/fpurge.m4 $(top_srcdir)/m4/freading.m4 \
+       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/fsync.m4 \
+       $(top_srcdir)/m4/ftell.m4 $(top_srcdir)/m4/ftello.m4 \
+       $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
+       $(top_srcdir)/m4/langinfo_h.m4 $(top_srcdir)/m4/lcmessage.m4 \
+       $(top_srcdir)/m4/lib-ignore.m4 $(top_srcdir)/m4/lib-ld.m4 \
+       $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/localcharset.m4 \
+       $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \
+       $(top_srcdir)/m4/locale-tr.m4 $(top_srcdir)/m4/locale-zh.m4 \
+       $(top_srcdir)/m4/locale_h.m4 $(top_srcdir)/m4/localename.m4 \
+       $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/long-options.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
+       $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+       $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
+       $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+       $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbtowc.m4 \
+       $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+       $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/multiarch.m4 \
+       $(top_srcdir)/m4/nl_langinfo.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/nocrash.m4 $(top_srcdir)/m4/o-direct.m4 \
+       $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/priv-set.m4 \
+       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+       $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+       $(top_srcdir)/m4/read.m4 $(top_srcdir)/m4/readlink.m4 \
+       $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/regex.m4 \
+       $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+       $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/setlocale.m4 \
+       $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/ssize_t.m4 \
+       $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdarg.m4 \
+       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strdup.m4 \
+       $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/strerror_r.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+       $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtoll.m4 \
+       $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/symlink.m4 \
+       $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+       $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/thread.m4 \
+       $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/time_h.m4 \
+       $(top_srcdir)/m4/ungetc.m4 $(top_srcdir)/m4/unistd_h.m4 \
+       $(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkdir.m4 \
+       $(top_srcdir)/m4/usleep.m4 $(top_srcdir)/m4/version-etc.m4 \
+       $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \
+       $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
+       $(top_srcdir)/m4/wcrtomb.m4 $(top_srcdir)/m4/wctob.m4 \
+       $(top_srcdir)/m4/wctomb.m4 $(top_srcdir)/m4/wctype_h.m4 \
+       $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+       $(top_srcdir)/m4/xstrndup.m4 $(top_srcdir)/m4/xstrtol.m4 \
+       $(top_srcdir)/m4/yield.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+dup_clobber_SOURCES = dup-clobber.c
+dup_clobber_OBJECTS = dup-clobber.$(OBJEXT)
+dup_clobber_LDADD = $(LDADD)
+dup_clobber_DEPENDENCIES = $(top_builddir)/libparted/libparted.la
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+print_align_SOURCES = print-align.c
+print_align_OBJECTS = print-align.$(OBJEXT)
+print_align_LDADD = $(LDADD)
+print_align_DEPENDENCIES = $(top_builddir)/libparted/libparted.la
+print_max_SOURCES = print-max.c
+print_max_OBJECTS = print-max.$(OBJEXT)
+print_max_LDADD = $(LDADD)
+print_max_DEPENDENCIES = $(top_builddir)/libparted/libparted.la
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/lib
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+       $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo "  CC      " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+SOURCES = dup-clobber.c print-align.c print-max.c
+DIST_SOURCES = dup-clobber.c print-align.c print-max.c
+ETAGS = etags
+CTAGS = ctags
+# If stdout is a non-dumb tty, use colors.  If test -t is not supported,
+# then this fails; a conservative approach.  Of course do not redirect
+# stdout here, just stderr.
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=; \
+test "X$(AM_COLOR_TESTS)" != Xno \
+&& test "X$$TERM" != Xdumb \
+&& { test "X$(AM_COLOR_TESTS)" = Xalways || test -t 1 2>/dev/null; } \
+&& { \
+  red='\e[0;31m'; \
+  grn='\e[0;32m'; \
+  lgn='\e[1;32m'; \
+  blu='\e[1;34m'; \
+  std='\e[m'; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+# Restructured Text title and section.
+am__rst_title = sed 's/.*/   &   /;h;s/./=/g;p;x;p;g;p;s/.*//'
+am__rst_section = sed 'p;s/./=/g;p;g'
+# Put stdin (possibly several lines separated by ".  ") in a box.
+am__text_box = $(AWK) '{                               \
+  n = split($$0, lines, "\\.  "); max = 0;             \
+  for (i = 1; i <= n; ++i)                             \
+    if (max < length(lines[i]))                                \
+      max = length(lines[i]);                          \
+  for (i = 0; i < max; ++i) line = line "=";           \
+  print line;                                          \
+  for (i = 1; i <= n; ++i) if (lines[i]) print lines[i];\
+  print line;                                          \
+}'
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Saves and restores TERM around uses of
+# TESTS_ENVIRONMENT and AM_TESTS_ENVIRONMENT, in case any of them
+# unsets it.
+am__check_pre = \
+$(am__sh_e_setup);                                     \
+$(am__vpath_adj_setup) $(am__vpath_adj)                        \
+srcdir=$(srcdir); export srcdir;                       \
+rm -f $@-t;                                            \
+am__trap='rm -f '\''$(abs_builddir)/$@-t'\''; (exit $$st); exit $$st'; \
+trap "st=129; $$am__trap" 1; trap "st=130; $$am__trap" 2;      \
+trap "st=141; $$am__trap" 13; trap "st=143; $$am__trap" 15; \
+am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;           \
+test "x$$am__odir" = x. || $(MKDIR_P) "$$am__odir" || exit $$?;        \
+if test -f "./$$f"; then dir=./;                       \
+elif test -f "$$f"; then dir=;                         \
+else dir="$(srcdir)/"; fi;                             \
+tst=$$dir$$f; log='$@'; __SAVED_TERM=$$TERM;           \
+$(AM_TESTS_ENVIRONMENT)                                        \
+$(TESTS_ENVIRONMENT)
+# To be appended to the command running the test.  Handle the stdout
+# and stderr redirection, and catch the exit status.
+am__check_post = \
+>$@-t 2>&1;                                            \
+estatus=$$?;                                           \
+if test -n '$(DISABLE_HARD_ERRORS)'                    \
+   && test $$estatus -eq 99; then                      \
+  estatus=1;                                           \
+fi;                                                    \
+TERM=$$__SAVED_TERM; export TERM;                      \
+$(am__tty_colors);                                     \
+xfailed=PASS;                                          \
+case " $(XFAIL_TESTS) " in                             \
+  *[\ \        ]$$f[\ \        ]* | *[\ \      ]$$dir$$f[\ \   ]*) \
+    xfailed=XFAIL;;                                    \
+esac;                                                  \
+case $$estatus.$$xfailed in                            \
+    0.XFAIL) col=$$red; res=XPASS;;                    \
+    0.*)     col=$$grn; res=PASS ;;                    \
+    77.*)    col=$$blu; res=SKIP ;;                    \
+    99.*)    col=$$red; res=FAIL ;;                    \
+    *.XFAIL) col=$$lgn; res=XFAIL;;                    \
+    *.*)     col=$$red; res=FAIL ;;                    \
+esac;                                                  \
+echo "$${col}$$res$${std}: $$f";                       \
+echo "$$res: $$f (exit: $$estatus)" |                  \
+  $(am__rst_section) >$@;                              \
+cat $@-t >>$@;                                         \
+rm -f $@-t
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check check-html recheck recheck-html
+TEST_SUITE_LOG = test-suite.log
+TEST_SUITE_HTML = $(TEST_SUITE_LOG:.log=.html)
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+       $(TEST_LOG_FLAGS)
+TEST_LOGS_TMP = $(TEST_LOGS:.log=.log-t)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+pkglibexecdir = @pkglibexecdir@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+BUILDINFO = @BUILDINFO@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHECK_CFLAGS = @CHECK_CFLAGS@
+CHECK_LIBS = @CHECK_LIBS@
+CONFIG_INCLUDE = @CONFIG_INCLUDE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DYNAMIC_LOADING = @DYNAMIC_LOADING@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENABLE_DEVICE_MAPPER = @ENABLE_DEVICE_MAPPER@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FACCESSAT = @GNULIB_FACCESSAT@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCHMODAT = @GNULIB_FCHMODAT@
+GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FCNTL = @GNULIB_FCNTL@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FGETC = @GNULIB_FGETC@
+GNULIB_FGETS = @GNULIB_FGETS@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREAD = @GNULIB_FREAD@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSCANF = @GNULIB_FSCANF@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSTATAT = @GNULIB_FSTATAT@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FUTIMENS = @GNULIB_FUTIMENS@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETC = @GNULIB_GETC@
+GNULIB_GETCHAR = @GNULIB_GETCHAR@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETGROUPS = @GNULIB_GETGROUPS@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETS = @GNULIB_GETS@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
+GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_ISWBLANK = @GNULIB_ISWBLANK@
+GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@
+GNULIB_LCHMOD = @GNULIB_LCHMOD@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LINKAT = @GNULIB_LINKAT@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_LSTAT = @GNULIB_LSTAT@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MBTOWC = @GNULIB_MBTOWC@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDIRAT = @GNULIB_MKDIRAT@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKFIFO = @GNULIB_MKFIFO@
+GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@
+GNULIB_MKNOD = @GNULIB_MKNOD@
+GNULIB_MKNODAT = @GNULIB_MKNODAT@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@
+GNULIB_MKTIME = @GNULIB_MKTIME@
+GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@
+GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@
+GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_OPEN = @GNULIB_OPEN@
+GNULIB_OPENAT = @GNULIB_OPENAT@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE = @GNULIB_PIPE@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_PREAD = @GNULIB_PREAD@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READ = @GNULIB_READ@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_READLINKAT = @GNULIB_READLINKAT@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_REALPATH = @GNULIB_REALPATH@
+GNULIB_REMOVE = @GNULIB_REMOVE@
+GNULIB_RENAME = @GNULIB_RENAME@
+GNULIB_RENAMEAT = @GNULIB_RENAMEAT@
+GNULIB_RMDIR = @GNULIB_RMDIR@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SETLOCALE = @GNULIB_SETLOCALE@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STAT = @GNULIB_STAT@
+GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRERROR_R = @GNULIB_STRERROR_R@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRPTIME = @GNULIB_STRPTIME@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_SYMLINK = @GNULIB_SYMLINK@
+GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
+GNULIB_TIMEGM = @GNULIB_TIMEGM@
+GNULIB_TIME_R = @GNULIB_TIME_R@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
+GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
+GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNLINK = @GNULIB_UNLINK@
+GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_USLEEP = @GNULIB_USLEEP@
+GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VFSCANF = @GNULIB_VFSCANF@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSCANF = @GNULIB_VSCANF@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCPCPY = @GNULIB_WCPCPY@
+GNULIB_WCPNCPY = @GNULIB_WCPNCPY@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@
+GNULIB_WCSCAT = @GNULIB_WCSCAT@
+GNULIB_WCSCHR = @GNULIB_WCSCHR@
+GNULIB_WCSCMP = @GNULIB_WCSCMP@
+GNULIB_WCSCOLL = @GNULIB_WCSCOLL@
+GNULIB_WCSCPY = @GNULIB_WCSCPY@
+GNULIB_WCSCSPN = @GNULIB_WCSCSPN@
+GNULIB_WCSDUP = @GNULIB_WCSDUP@
+GNULIB_WCSLEN = @GNULIB_WCSLEN@
+GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@
+GNULIB_WCSNCAT = @GNULIB_WCSNCAT@
+GNULIB_WCSNCMP = @GNULIB_WCSNCMP@
+GNULIB_WCSNCPY = @GNULIB_WCSNCPY@
+GNULIB_WCSNLEN = @GNULIB_WCSNLEN@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSPBRK = @GNULIB_WCSPBRK@
+GNULIB_WCSRCHR = @GNULIB_WCSRCHR@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCSSPN = @GNULIB_WCSSPN@
+GNULIB_WCSSTR = @GNULIB_WCSSTR@
+GNULIB_WCSTOK = @GNULIB_WCSTOK@
+GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@
+GNULIB_WCSXFRM = @GNULIB_WCSXFRM@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCTOMB = @GNULIB_WCTOMB@
+GNULIB_WCTRANS = @GNULIB_WCTRANS@
+GNULIB_WCTYPE = @GNULIB_WCTYPE@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WMEMCHR = @GNULIB_WMEMCHR@
+GNULIB_WMEMCMP = @GNULIB_WMEMCMP@
+GNULIB_WMEMCPY = @GNULIB_WMEMCPY@
+GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@
+GNULIB_WMEMSET = @GNULIB_WMEMSET@
+GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
+HAVE_CHOWN = @HAVE_CHOWN@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@
+HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SETENV = @HAVE_DECL_SETENV@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@
+HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_DUPLOCALE = @HAVE_DUPLOCALE@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
+HAVE_FCHMODAT = @HAVE_FCHMODAT@
+HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
+HAVE_FCNTL = @HAVE_FCNTL@
+HAVE_FEATURES_H = @HAVE_FEATURES_H@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSTATAT = @HAVE_FSTATAT@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_FUTIMENS = @HAVE_FUTIMENS@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETGROUPS = @HAVE_GETGROUPS@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETLOGIN = @HAVE_GETLOGIN@
+HAVE_GETOPT_H = @HAVE_GETOPT_H@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
+HAVE_GRANTPT = @HAVE_GRANTPT@
+HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWBLANK = @HAVE_ISWBLANK@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
+HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
+HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
+HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
+HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
+HAVE_LCHMOD = @HAVE_LCHMOD@
+HAVE_LCHOWN = @HAVE_LCHOWN@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_LSTAT = @HAVE_LSTAT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSLEN = @HAVE_MBSLEN@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMCHR = @HAVE_MEMCHR@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDIRAT = @HAVE_MKDIRAT@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKFIFO = @HAVE_MKFIFO@
+HAVE_MKFIFOAT = @HAVE_MKFIFOAT@
+HAVE_MKNOD = @HAVE_MKNOD@
+HAVE_MKNODAT = @HAVE_MKNODAT@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
+HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
+HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
+HAVE_OPENAT = @HAVE_OPENAT@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PIPE = @HAVE_PIPE@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PWRITE = @HAVE_PWRITE@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_READLINKAT = @HAVE_READLINKAT@
+HAVE_REALPATH = @HAVE_REALPATH@
+HAVE_RENAMEAT = @HAVE_RENAMEAT@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRPTIME = @HAVE_STRPTIME@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYMLINK = @HAVE_SYMLINK@
+HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_TIMEGM = @HAVE_TIMEGM@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_USLEEP = @HAVE_USLEEP@
+HAVE_UTIMENSAT = @HAVE_UTIMENSAT@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCPCPY = @HAVE_WCPCPY@
+HAVE_WCPNCPY = @HAVE_WCPNCPY@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSCASECMP = @HAVE_WCSCASECMP@
+HAVE_WCSCAT = @HAVE_WCSCAT@
+HAVE_WCSCHR = @HAVE_WCSCHR@
+HAVE_WCSCMP = @HAVE_WCSCMP@
+HAVE_WCSCOLL = @HAVE_WCSCOLL@
+HAVE_WCSCPY = @HAVE_WCSCPY@
+HAVE_WCSCSPN = @HAVE_WCSCSPN@
+HAVE_WCSDUP = @HAVE_WCSDUP@
+HAVE_WCSLEN = @HAVE_WCSLEN@
+HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@
+HAVE_WCSNCAT = @HAVE_WCSNCAT@
+HAVE_WCSNCMP = @HAVE_WCSNCMP@
+HAVE_WCSNCPY = @HAVE_WCSNCPY@
+HAVE_WCSNLEN = @HAVE_WCSNLEN@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSPBRK = @HAVE_WCSPBRK@
+HAVE_WCSRCHR = @HAVE_WCSRCHR@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCSSPN = @HAVE_WCSSPN@
+HAVE_WCSSTR = @HAVE_WCSSTR@
+HAVE_WCSTOK = @HAVE_WCSTOK@
+HAVE_WCSWIDTH = @HAVE_WCSWIDTH@
+HAVE_WCSXFRM = @HAVE_WCSXFRM@
+HAVE_WCTRANS_T = @HAVE_WCTRANS_T@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WCTYPE_T = @HAVE_WCTYPE_T@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WMEMCHR = @HAVE_WMEMCHR@
+HAVE_WMEMCMP = @HAVE_WMEMCMP@
+HAVE_WMEMCPY = @HAVE_WMEMCPY@
+HAVE_WMEMMOVE = @HAVE_WMEMMOVE@
+HAVE_WMEMSET = @HAVE_WMEMSET@
+HAVE_XLOCALE_H = @HAVE_XLOCALE_H@
+HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
+IGNORE_UNUSED_LIBRARIES_CFLAGS = @IGNORE_UNUSED_LIBRARIES_CFLAGS@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@
+INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMULTITHREAD = @LIBMULTITHREAD@
+LIBOBJS = @LIBOBJS@
+LIBPTH = @LIBPTH@
+LIBPTH_PREFIX = @LIBPTH_PREFIX@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTHREAD = @LIBTHREAD@
+LIBTOOL = @LIBTOOL@
+LIB_BLKID = @LIB_BLKID@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBMULTITHREAD = @LTLIBMULTITHREAD@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBPTH = @LTLIBPTH@
+LTLIBTHREAD = @LTLIBTHREAD@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
+NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@
+NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
+NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@
+NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FCNTL_H = @NEXT_FCNTL_H@
+NEXT_GETOPT_H = @NEXT_GETOPT_H@
+NEXT_INTTYPES_H = @NEXT_INTTYPES_H@
+NEXT_LANGINFO_H = @NEXT_LANGINFO_H@
+NEXT_LOCALE_H = @NEXT_LOCALE_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@
+NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@
+NEXT_TIME_H = @NEXT_TIME_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PARTED_USABLE_TEST_DIR = @PARTED_USABLE_TEST_DIR@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CALLOC = @REPLACE_CALLOC@
+REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP = @REPLACE_DUP@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@
+REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FCNTL = @REPLACE_FCNTL@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FSTAT = @REPLACE_FSTAT@
+REPLACE_FSTATAT = @REPLACE_FSTATAT@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_FUTIMENS = @REPLACE_FUTIMENS@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETDELIM = @REPLACE_GETDELIM@
+REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@
+REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LINK = @REPLACE_LINK@
+REPLACE_LINKAT = @REPLACE_LINKAT@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_LSTAT = @REPLACE_LSTAT@
+REPLACE_MALLOC = @REPLACE_MALLOC@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MBTOWC = @REPLACE_MBTOWC@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKDIR = @REPLACE_MKDIR@
+REPLACE_MKFIFO = @REPLACE_MKFIFO@
+REPLACE_MKNOD = @REPLACE_MKNOD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_MKTIME = @REPLACE_MKTIME@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_OPEN = @REPLACE_OPEN@
+REPLACE_OPENAT = @REPLACE_OPENAT@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PREAD = @REPLACE_PREAD@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
+REPLACE_READ = @REPLACE_READ@
+REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_REALLOC = @REPLACE_REALLOC@
+REPLACE_REALPATH = @REPLACE_REALPATH@
+REPLACE_REMOVE = @REPLACE_REMOVE@
+REPLACE_RENAME = @REPLACE_RENAME@
+REPLACE_RENAMEAT = @REPLACE_RENAMEAT@
+REPLACE_RMDIR = @REPLACE_RMDIR@
+REPLACE_SETENV = @REPLACE_SETENV@
+REPLACE_SETLOCALE = @REPLACE_SETLOCALE@
+REPLACE_SLEEP = @REPLACE_SLEEP@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STAT = @REPLACE_STAT@
+REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRERROR_R = @REPLACE_STRERROR_R@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
+REPLACE_STRNDUP = @REPLACE_STRNDUP@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
+REPLACE_SYMLINK = @REPLACE_SYMLINK@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
+REPLACE_UNLINK = @REPLACE_UNLINK@
+REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
+REPLACE_UNSETENV = @REPLACE_UNSETENV@
+REPLACE_USLEEP = @REPLACE_USLEEP@
+REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCTOMB = @REPLACE_WCTOMB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SELINUX_LIBS = @SELINUX_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
+UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
+UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+YIELD_LIB = @YIELD_LIB@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+XFAIL_TESTS = \
+  t3200-type-change.sh
+
+TESTS = \
+  help-version \
+  t0000-basic.sh \
+  t0001-tiny.sh \
+  t0010-script-no-ctrl-chars.sh \
+  t0100-print.sh \
+  t0101-print-empty.sh \
+  t0200-gpt.sh \
+  t0201-gpt.sh \
+  t0202-gpt-pmbr.sh \
+  t0205-gpt-list-clobbers-pmbr.sh \
+  t0206-gpt-print-with-corrupt-primary-clobbers-pmbr.sh \
+  t0207-IEC-binary-notation.sh \
+  t0220-gpt-msftres.sh \
+  t0250-gpt.sh \
+  t0280-gpt-corrupt.sh \
+  t0300-dos-on-gpt.sh \
+  t0400-loop-clobber-infloop.sh \
+  t0500-dup-clobber.sh \
+  t1100-busy-label.sh \
+  t1101-busy-partition.sh \
+  t1700-probe-fs.sh \
+  t2200-dos-label-recog.sh \
+  t2300-dos-label-extended-bootcode.sh \
+  t2310-dos-extended-2-sector-min-offset.sh \
+  t2400-dos-hfs-partition-type.sh \
+  t3200-type-change.sh \
+  t3300-palo-prep.sh \
+  t3310-flags.sh \
+  t3400-whole-disk-FAT-partition.sh \
+  t4000-sun-raid-type.sh \
+  t4001-sun-vtoc.sh \
+  t4100-msdos-partition-limits.sh \
+  t4100-dvh-partition-limits.sh \
+  t4100-msdos-starting-sector.sh \
+  t4200-partprobe.sh \
+  t5000-tags.sh \
+  t6000-dm.sh \
+  t7000-scripting.sh \
+  t8000-loop.sh \
+  t9010-big-sector.sh \
+  t9020-alignment.sh \
+  t9021-maxima.sh \
+  t9030-align-check.sh \
+  t9040-many-partitions.sh \
+  t9041-undetected-in-use-16th-partition.sh \
+  t9050-partition-table-types.sh
+
+EXTRA_DIST = \
+  $(TESTS) lvm-utils.sh t-local.sh t-lvm.sh \
+  init.cfg init.sh t-lib-helpers.sh
+
+LDADD = \
+  $(top_builddir)/libparted/libparted.la
+
+AM_CPPFLAGS = \
+  -I$(top_srcdir)/lib \
+  -I$(top_srcdir)/include
+
+AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
+parted_dir = $(abs_top_builddir)/parted
+pp_dir = $(abs_top_builddir)/partprobe
+sep = $(PATH_SEPARATOR)
+
+# Note that the first lines are statements.  They ensure that environment
+# variables that can perturb tests are unset or set to expected values.
+# The rest are envvar settings that propagate build-related Makefile
+# variables to test scripts.
+TESTS_ENVIRONMENT = \
+  tmp__=$$TMPDIR; test -d "$$tmp__" || tmp__=.;        \
+  TMPDIR=$$tmp__; export TMPDIR;               \
+  exec 9>&2;                                   \
+  shell_or_perl_() {                           \
+    if grep '^\#!/usr/bin/perl' "$$1" > /dev/null; then                        \
+      if $(PERL) -e 'use warnings' > /dev/null 2>&1; then              \
+       grep '^\#!/usr/bin/perl -T' "$$1" > /dev/null && T_=T || T_=;   \
+        $(PERL) -w$$T_ -I$(srcdir) -MCoreutils                         \
+             -M"CuTmpdir qw($$f)" -- "$$1";    \
+      else                                     \
+       echo 1>&2 "$$tst: configure did not find a usable version of Perl," \
+         "so skipping this test";              \
+       (exit 77);                              \
+      fi;                                      \
+    else                                       \
+      $(SHELL) "$$1";                          \
+    fi;                                                \
+  };                                           \
+  export                                       \
+  abs_top_builddir='$(abs_top_builddir)'       \
+  abs_top_srcdir='$(abs_top_srcdir)'           \
+  abs_srcdir='$(abs_srcdir)'                   \
+  built_programs=parted                                \
+  srcdir='$(srcdir)'                           \
+  top_srcdir='$(top_srcdir)'                   \
+  AWK='$(AWK)'                                 \
+  CC='$(CC)'                                   \
+  MAKE=$(MAKE)                                 \
+  PACKAGE_BUGREPORT='$(PACKAGE_BUGREPORT)'     \
+  PACKAGE_VERSION=$(PACKAGE_VERSION)           \
+  CONFIG_HEADER='$(abs_top_builddir)/lib/config.h' \
+  ENABLE_DEVICE_MAPPER=$(ENABLE_DEVICE_MAPPER) \
+  PERL='$(PERL)'                               \
+  PREFERABLY_POSIX_SHELL='$(PREFERABLY_POSIX_SHELL)' \
+  REPLACE_GETCWD=$(REPLACE_GETCWD)             \
+  PATH='$(abs_top_builddir)/parted$(PATH_SEPARATOR)'"$$PATH" \
+  VERSION=$(VERSION)                           \
+  ; shell_or_perl_
+
+VERBOSE = yes
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .html .lo .log .o .obj .test .test$(EXEEXT)
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu tests/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-checkPROGRAMS:
+       @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+       echo " rm -f" $$list; \
+       rm -f $$list || exit $$?; \
+       test -n "$(EXEEXT)" || exit 0; \
+       list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+       echo " rm -f" $$list; \
+       rm -f $$list
+dup-clobber$(EXEEXT): $(dup_clobber_OBJECTS) $(dup_clobber_DEPENDENCIES) $(EXTRA_dup_clobber_DEPENDENCIES) 
+       @rm -f dup-clobber$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dup_clobber_OBJECTS) $(dup_clobber_LDADD) $(LIBS)
+print-align$(EXEEXT): $(print_align_OBJECTS) $(print_align_DEPENDENCIES) $(EXTRA_print_align_DEPENDENCIES) 
+       @rm -f print-align$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(print_align_OBJECTS) $(print_align_LDADD) $(LIBS)
+print-max$(EXEEXT): $(print_max_OBJECTS) $(print_max_DEPENDENCIES) $(EXTRA_print_max_DEPENDENCIES) 
+       @rm -f print-max$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(print_max_OBJECTS) $(print_max_LDADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup-clobber.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-align.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-max.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+       @$(am__sh_e_setup);                                             \
+       list='$(TEST_LOGS)';                                            \
+       results=`for f in $$list; do                                    \
+                  test -r $$f && read line < $$f && echo "$$line"      \
+                    || echo FAIL;                                      \
+                done`;                                                 \
+       all=`echo "$$results" | sed '/^$$/d' | wc -l | sed -e 's/^[      ]*//'`; \
+       fail=`echo "$$results" | grep -c '^FAIL'`;                      \
+       pass=`echo "$$results" | grep -c '^PASS'`;                      \
+       skip=`echo "$$results" | grep -c '^SKIP'`;                      \
+       xfail=`echo "$$results" | grep -c '^XFAIL'`;                    \
+       xpass=`echo "$$results" | grep -c '^XPASS'`;                    \
+       failures=`expr $$fail + $$xpass`;                               \
+       all=`expr $$all - $$skip`;                                      \
+       if test "$$all" -eq 1; then tests=test; All=;                   \
+       else tests=tests; All="All "; fi;                               \
+       case fail=$$fail:xpass=$$xpass:xfail=$$xfail in                 \
+         fail=0:xpass=0:xfail=0)                                       \
+           msg="$$All$$all $$tests passed.  ";                         \
+           exit=true;;                                                 \
+         fail=0:xpass=0:xfail=*)                                       \
+           msg="$$All$$all $$tests behaved as expected";               \
+           if test "$$xfail" -eq 1; then xfailures=failure;            \
+           else xfailures=failures; fi;                                \
+           msg="$$msg ($$xfail expected $$xfailures).  ";              \
+           exit=true;;                                                 \
+         fail=*:xpass=0:xfail=*)                                       \
+           msg="$$fail of $$all $$tests failed.  ";                    \
+           exit=false;;                                                \
+         fail=*:xpass=*:xfail=*)                                       \
+           msg="$$failures of $$all $$tests did not behave as expected"; \
+           if test "$$xpass" -eq 1; then xpasses=pass;                 \
+           else xpasses=passes; fi;                                    \
+           msg="$$msg ($$xpass unexpected $$xpasses).  ";              \
+           exit=false;;                                                \
+         *)                                                            \
+           echo >&2 "incorrect case"; exit 4;;                         \
+       esac;                                                           \
+       if test "$$skip" -ne 0; then                                    \
+         if test "$$skip" -eq 1; then                                  \
+           msg="$$msg($$skip test was not run).  ";                    \
+         else                                                          \
+           msg="$$msg($$skip tests were not run).  ";                  \
+         fi;                                                           \
+       fi;                                                             \
+       {                                                               \
+         echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |       \
+           $(am__rst_title);                                           \
+         echo "$$msg";                                                 \
+         echo;                                                         \
+         echo ".. contents:: :depth: 2";                               \
+         echo;                                                         \
+         for f in $$list; do                                           \
+           test -r $$f && read line < $$f || line=;                    \
+           case $$line in                                              \
+             PASS:*|XFAIL:*);;                                         \
+             *) echo; cat $$f;;                                        \
+           esac;                                                       \
+         done;                                                         \
+       } >$(TEST_SUITE_LOG).tmp;                                       \
+       mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);                     \
+       if test "$$failures" -ne 0; then                                \
+         msg="$${msg}See $(subdir)/$(TEST_SUITE_LOG).  ";              \
+         if test -n "$(PACKAGE_BUGREPORT)"; then                       \
+           msg="$${msg}Please report to $(PACKAGE_BUGREPORT).  ";      \
+         fi;                                                           \
+       fi;                                                             \
+       test x"$$VERBOSE" = x || $$exit || cat $(TEST_SUITE_LOG);       \
+       $(am__tty_colors);                                              \
+       if $$exit; then                                                 \
+         echo $(ECHO_N) "$$grn$(ECHO_C)";                              \
+        else                                                           \
+         echo $(ECHO_N) "$$red$(ECHO_C)";                              \
+       fi;                                                             \
+       echo "$$msg" | $(am__text_box);                                 \
+       echo $(ECHO_N) "$$std$(ECHO_C)";                                \
+       $$exit
+
+# Run all the tests.
+check-TESTS:
+       @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
+       @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+       @list='$(TEST_LOGS)';                                           \
+       list=`for f in $$list; do                                       \
+         test .log = $$f || echo $$f;                                  \
+       done | tr '\012\015' '  '`;                                     \
+       $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$list"
+
+.log.html:
+       @list='$(RST2HTML) $$RST2HTML rst2html rst2html.py';            \
+       for r2h in $$list; do                                           \
+         if ($$r2h --version) >/dev/null 2>&1; then                    \
+           R2H=$$r2h;                                                  \
+         fi;                                                           \
+       done;                                                           \
+       if test -z "$$R2H"; then                                        \
+         echo >&2 "cannot find rst2html, cannot create $@";            \
+         exit 2;                                                       \
+       fi;                                                             \
+       $$R2H $< >$@.tmp
+       @mv $@.tmp $@
+
+# Be sure to run check first, and then to convert the result.
+# Beware of concurrent executions.  Run "check" not "check-TESTS", as
+# check-SCRIPTS and other dependencies are rebuilt by the former only.
+# And expect check to fail.
+check-html:
+       @if $(MAKE) $(AM_MAKEFLAGS) check; then                 \
+         rv=0; else rv=$$?;                                    \
+       fi;                                                     \
+       $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_HTML) || exit 4;   \
+       exit $$rv
+recheck recheck-html:
+       @target=`echo $@ | sed 's,^re,,'`;                              \
+       list='$(TEST_LOGS)';                                            \
+       list=`for f in $$list; do                                       \
+               test -f $$f || continue;                                \
+               if test -r $$f && read line < $$f; then                 \
+                 case $$line in FAIL*|XPASS*) echo $$f;; esac;         \
+               else echo $$f; fi;                                      \
+             done | tr '\012\015' '  '`;                               \
+       list=`echo "$$list" | sed 's/ *$$//'`;                          \
+       $(MAKE) $(AM_MAKEFLAGS) $$target AM_MAKEFLAGS='$(AM_MAKEFLAGS) TEST_LOGS="'"$$list"'"'
+help-version.log: help-version
+       @p='help-version'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t0000-basic.sh.log: t0000-basic.sh
+       @p='t0000-basic.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t0001-tiny.sh.log: t0001-tiny.sh
+       @p='t0001-tiny.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t0010-script-no-ctrl-chars.sh.log: t0010-script-no-ctrl-chars.sh
+       @p='t0010-script-no-ctrl-chars.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t0100-print.sh.log: t0100-print.sh
+       @p='t0100-print.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t0101-print-empty.sh.log: t0101-print-empty.sh
+       @p='t0101-print-empty.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t0200-gpt.sh.log: t0200-gpt.sh
+       @p='t0200-gpt.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t0201-gpt.sh.log: t0201-gpt.sh
+       @p='t0201-gpt.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t0202-gpt-pmbr.sh.log: t0202-gpt-pmbr.sh
+       @p='t0202-gpt-pmbr.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t0205-gpt-list-clobbers-pmbr.sh.log: t0205-gpt-list-clobbers-pmbr.sh
+       @p='t0205-gpt-list-clobbers-pmbr.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t0206-gpt-print-with-corrupt-primary-clobbers-pmbr.sh.log: t0206-gpt-print-with-corrupt-primary-clobbers-pmbr.sh
+       @p='t0206-gpt-print-with-corrupt-primary-clobbers-pmbr.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t0207-IEC-binary-notation.sh.log: t0207-IEC-binary-notation.sh
+       @p='t0207-IEC-binary-notation.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t0220-gpt-msftres.sh.log: t0220-gpt-msftres.sh
+       @p='t0220-gpt-msftres.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t0250-gpt.sh.log: t0250-gpt.sh
+       @p='t0250-gpt.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t0280-gpt-corrupt.sh.log: t0280-gpt-corrupt.sh
+       @p='t0280-gpt-corrupt.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t0300-dos-on-gpt.sh.log: t0300-dos-on-gpt.sh
+       @p='t0300-dos-on-gpt.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t0400-loop-clobber-infloop.sh.log: t0400-loop-clobber-infloop.sh
+       @p='t0400-loop-clobber-infloop.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t0500-dup-clobber.sh.log: t0500-dup-clobber.sh
+       @p='t0500-dup-clobber.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t1100-busy-label.sh.log: t1100-busy-label.sh
+       @p='t1100-busy-label.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t1101-busy-partition.sh.log: t1101-busy-partition.sh
+       @p='t1101-busy-partition.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t1700-probe-fs.sh.log: t1700-probe-fs.sh
+       @p='t1700-probe-fs.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t2200-dos-label-recog.sh.log: t2200-dos-label-recog.sh
+       @p='t2200-dos-label-recog.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t2300-dos-label-extended-bootcode.sh.log: t2300-dos-label-extended-bootcode.sh
+       @p='t2300-dos-label-extended-bootcode.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t2310-dos-extended-2-sector-min-offset.sh.log: t2310-dos-extended-2-sector-min-offset.sh
+       @p='t2310-dos-extended-2-sector-min-offset.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t2400-dos-hfs-partition-type.sh.log: t2400-dos-hfs-partition-type.sh
+       @p='t2400-dos-hfs-partition-type.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t3200-type-change.sh.log: t3200-type-change.sh
+       @p='t3200-type-change.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t3300-palo-prep.sh.log: t3300-palo-prep.sh
+       @p='t3300-palo-prep.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t3310-flags.sh.log: t3310-flags.sh
+       @p='t3310-flags.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t3400-whole-disk-FAT-partition.sh.log: t3400-whole-disk-FAT-partition.sh
+       @p='t3400-whole-disk-FAT-partition.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t4000-sun-raid-type.sh.log: t4000-sun-raid-type.sh
+       @p='t4000-sun-raid-type.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t4001-sun-vtoc.sh.log: t4001-sun-vtoc.sh
+       @p='t4001-sun-vtoc.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t4100-msdos-partition-limits.sh.log: t4100-msdos-partition-limits.sh
+       @p='t4100-msdos-partition-limits.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t4100-dvh-partition-limits.sh.log: t4100-dvh-partition-limits.sh
+       @p='t4100-dvh-partition-limits.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t4100-msdos-starting-sector.sh.log: t4100-msdos-starting-sector.sh
+       @p='t4100-msdos-starting-sector.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t4200-partprobe.sh.log: t4200-partprobe.sh
+       @p='t4200-partprobe.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t5000-tags.sh.log: t5000-tags.sh
+       @p='t5000-tags.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t6000-dm.sh.log: t6000-dm.sh
+       @p='t6000-dm.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t7000-scripting.sh.log: t7000-scripting.sh
+       @p='t7000-scripting.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t8000-loop.sh.log: t8000-loop.sh
+       @p='t8000-loop.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t9010-big-sector.sh.log: t9010-big-sector.sh
+       @p='t9010-big-sector.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t9020-alignment.sh.log: t9020-alignment.sh
+       @p='t9020-alignment.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t9021-maxima.sh.log: t9021-maxima.sh
+       @p='t9021-maxima.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t9030-align-check.sh.log: t9030-align-check.sh
+       @p='t9030-align-check.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t9040-many-partitions.sh.log: t9040-many-partitions.sh
+       @p='t9040-many-partitions.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t9041-undetected-in-use-16th-partition.sh.log: t9041-undetected-in-use-16th-partition.sh
+       @p='t9041-undetected-in-use-16th-partition.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+t9050-partition-table-types.sh.log: t9050-partition-table-types.sh
+       @p='t9050-partition-table-types.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+.test.log:
+       @p='$<'; $(am__check_pre) $(TEST_LOG_COMPILE) "$$tst" $(am__check_post)
+@am__EXEEXT_TRUE@.test$(EXEEXT).log:
+@am__EXEEXT_TRUE@      @p='$<'; $(am__check_pre) $(TEST_LOG_COMPILE) "$$tst" $(am__check_post)
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+       $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+       $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+       -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+       -test -z "$(TEST_LOGS_TMP)" || rm -f $(TEST_LOGS_TMP)
+       -test -z "$(TEST_SUITE_HTML)" || rm -f $(TEST_SUITE_HTML)
+       -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+       mostlyclean-am
+
+distclean: distclean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am check-html install-am install-strip recheck \
+       recheck-html
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am check-html \
+       clean clean-checkPROGRAMS clean-generic clean-libtool \
+       cscopelist ctags distclean distclean-compile distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       recheck recheck-html tags uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/dup-clobber.c b/tests/dup-clobber.c
new file mode 100644 (file)
index 0000000..4e7add2
--- /dev/null
@@ -0,0 +1,103 @@
+/* Demonstrate that setting disk->needs_clobber in ped_disk_duplicate
+   is necessary.  With that, this test passes.  Without it, the last
+   sectors of the disk are cleared, and this test fails.  */
+#include <config.h>
+#include <parted/parted.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <fcntl.h>
+
+#include "closeout.h"
+#include "progname.h"
+
+static void
+seek_to_final_sector (int fd, PedSector ss)
+{
+  /* Seek to EOF.  */
+  off_t off = lseek (fd, 0, SEEK_END);
+
+  /* That had better succeed and determine that the size is > 2 sectors
+     and an exact multiple of ss.  */
+  assert (2 * ss < off);
+  assert (off % ss == 0);
+
+  /* Back up one sector.  */
+  off = lseek (fd, -ss, SEEK_CUR);
+  assert (0 < off);
+}
+
+static void
+scribble_on_final_sector (char const *file_name, PedSector ss)
+{
+  assert (0 < ss);
+  assert (ss % 512 == 0);
+  int fd = open (file_name, O_WRONLY);
+  assert (0 <= fd);
+
+  seek_to_final_sector (fd, ss);
+
+  /* Fill the final sector with ascii 'G's.  */
+  char *buf = malloc (ss);
+  assert (buf);
+  memset (buf, 'G', ss);
+  assert (write (fd, buf, ss) == ss);
+  free (buf);
+  assert (close (fd) == 0);
+}
+
+int
+main (int argc, char **argv)
+{
+  atexit (close_stdout);
+  set_program_name (argv[0]);
+
+  if (argc != 1)
+    return EXIT_FAILURE;
+
+  char const *dev_name = "dev-file";
+
+  /* Create a file.  */
+  int fd = open (dev_name, O_CREAT|O_TRUNC|O_WRONLY, 0644);
+  assert (0 <= fd);
+  off_t size = 8 * 1024 * 1024;
+  assert (ftruncate (fd, size) == 0);
+  assert (close (fd) == 0);
+
+  PedDevice *dev = ped_device_get (dev_name);
+  assert (dev);
+
+  PedDisk *disk = ped_disk_new_fresh (dev, ped_disk_type_get ("msdos"));
+  assert (disk);
+
+  assert (ped_disk_commit(disk));
+
+  PedSector ss = dev->sector_size;
+  scribble_on_final_sector (dev_name, ss);
+
+  /* Before the fix, this ped_disk_duplicate call would always set
+     copy->needs_clobber, thus causing the subsequent commit to
+     mistakenly clobber 9KiB at each end of the disk.  */
+  PedDisk *copy = ped_disk_duplicate (disk);
+  assert (ped_disk_commit(copy));
+
+  ped_disk_destroy (copy);
+  ped_disk_destroy (disk);
+  ped_device_destroy (dev);
+
+  /* Read the final sector and ensure it's still all 'G's.  */
+  fd = open (dev_name, O_RDONLY);
+  assert (0 <= fd);
+  seek_to_final_sector (fd, ss);
+  char *buf = malloc (ss);
+  assert (buf);
+  assert (read (fd, buf, ss) == ss);
+  unsigned int i;
+  for (i = 0; i < ss; i++)
+    assert (buf[i] == 'G');
+  free (buf);
+
+  return EXIT_SUCCESS;
+}
diff --git a/tests/help-version b/tests/help-version
new file mode 100755 (executable)
index 0000000..108ecb2
--- /dev/null
@@ -0,0 +1,282 @@
+#! /bin/sh
+# Make sure all these programs work properly
+# when invoked with --help or --version.
+
+# Copyright (C) 2000-2011 Free Software Foundation, 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, 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 <http://www.gnu.org/licenses/>.
+
+# Ensure that $SHELL is set to *some* value and exported.
+# This is required for dircolors, which would fail e.g., when
+# invoked via debuild (which removes SHELL from the environment).
+test "x$SHELL" = x && SHELL=/bin/sh
+export SHELL
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+
+expected_failure_status_chroot=125
+expected_failure_status_env=125
+expected_failure_status_nice=125
+expected_failure_status_nohup=125
+expected_failure_status_stdbuf=125
+expected_failure_status_su=125
+expected_failure_status_timeout=125
+expected_failure_status_printenv=2
+expected_failure_status_tty=3
+expected_failure_status_sort=2
+expected_failure_status_expr=3
+expected_failure_status_lbracket=2
+expected_failure_status_dir=2
+expected_failure_status_ls=2
+expected_failure_status_vdir=2
+
+expected_failure_status_cmp=2
+expected_failure_status_zcmp=2
+expected_failure_status_sdiff=2
+expected_failure_status_diff3=2
+expected_failure_status_diff=2
+expected_failure_status_zdiff=2
+expected_failure_status_zgrep=2
+expected_failure_status_zegrep=2
+expected_failure_status_zfgrep=2
+
+expected_failure_status_grep=2
+expected_failure_status_egrep=2
+expected_failure_status_fgrep=2
+
+test "$built_programs" \
+  || fail_ "built_programs not specified!?!"
+
+test "$VERSION" \
+  || fail_ "set envvar VERSION; it is required for a PATH sanity-check"
+
+# Extract version from --version output of the first program
+for i in $built_programs; do
+  v=$(env $i --version | sed -n '1s/.* //p;q')
+  break
+done
+
+# Ensure that it matches $VERSION.
+test "x$v" = "x$VERSION" \
+  || fail_ "--version-\$VERSION mismatch"
+
+for lang in C fr da; do
+  for i in $built_programs; do
+
+    # Skip `test'; it doesn't accept --help or --version.
+    test $i = test && continue;
+
+    # false fails even when invoked with --help or --version.
+    if test $i = false; then
+      env LC_MESSAGES=$lang $i --help >/dev/null && fail=1
+      env LC_MESSAGES=$lang $i --version >/dev/null && fail=1
+      continue
+    fi
+
+    # The just-built install executable is always named `ginstall'.
+    test $i = install && i=ginstall
+
+    # Make sure they exit successfully, under normal conditions.
+    env $i --help    > h-$i     || fail=1
+    env $i --version >/dev/null || fail=1
+
+    # Make sure they mention the bug-reporting address in --help output.
+    grep "$PACKAGE_BUGREPORT" h-$i > /dev/null || fail=1
+    rm -f h-$i
+
+    # Make sure they fail upon `disk full' error.
+    if test -w /dev/full && test -c /dev/full; then
+      env $i --help    >/dev/full 2>/dev/null && fail=1
+      env $i --version >/dev/full 2>/dev/null && fail=1
+      status=$?
+      test $i = [ && prog=lbracket || prog=$i
+      eval "expected=\$expected_failure_status_$prog"
+      test x$expected = x && expected=1
+      if test $status = $expected; then
+        : # ok
+      else
+        fail=1
+        echo "*** $i: bad exit status \`$status' (expected $expected)," 1>&2
+        echo "  with --help or --version output redirected to /dev/full" 1>&2
+      fi
+    fi
+  done
+done
+
+bigZ_in=bigZ-in.Z
+zin=zin.gz
+zin2=zin2.gz
+
+tmp=tmp-$$
+tmp_in=in-$$
+tmp_in2=in2-$$
+tmp_dir=dir-$$
+tmp_out=out-$$
+mkdir $tmp || fail=1
+cd $tmp || fail=1
+
+comm_setup () { args="$tmp_in $tmp_in"; }
+csplit_setup () { args="$tmp_in //"; }
+cut_setup () { args='-f 1'; }
+join_setup () { args="$tmp_in $tmp_in"; }
+tr_setup () { args='a a'; }
+
+chmod_setup () { args="a+x $tmp_in"; }
+# Punt on these.
+chgrp_setup () { args=--version; }
+chown_setup () { args=--version; }
+mkfifo_setup () { args=--version; }
+mknod_setup () { args=--version; }
+# Punt on uptime, since it fails (e.g., failing to get boot time)
+# on some systems, and we shouldn't let that stop `make check'.
+uptime_setup () { args=--version; }
+
+# Create a file in the current directory, not in $TMPDIR.
+mktemp_setup () { args=mktemp.XXXX; }
+
+cmp_setup () { args="$tmp_in $tmp_in2"; }
+
+# Tell dd not to print the line with transfer rate and total.
+# The transfer rate would vary between runs.
+dd_setup () { args=status=noxfer; }
+
+zdiff_setup () { args="$zin $zin2"; }
+zcmp_setup () { args="$zin $zin2"; }
+zcat_setup () { args=$zin; }
+gunzip_setup () { args=$zin; }
+zmore_setup () { args=$zin; }
+zless_setup () { args=$zin; }
+znew_setup () { args=$bigZ_in; }
+zforce_setup () { args=$zin; }
+zgrep_setup () { args="z $zin"; }
+zegrep_setup () { args="z $zin"; }
+zfgrep_setup () { args="z $zin"; }
+gzexe_setup () { args=$tmp_in; }
+
+# We know that $tmp_in contains a "0"
+grep_setup () { args="0 $tmp_in"; }
+egrep_setup () { args="0 $tmp_in"; }
+fgrep_setup () { args="0 $tmp_in"; }
+
+diff_setup () { args="$tmp_in $tmp_in2"; }
+sdiff_setup () { args="$tmp_in $tmp_in2"; }
+diff3_setup () { args="$tmp_in $tmp_in2 $tmp_in2"; }
+cp_setup () { args="$tmp_in $tmp_in2"; }
+ln_setup () { args="$tmp_in ln-target"; }
+ginstall_setup () { args="$tmp_in $tmp_in2"; }
+mv_setup () { args="$tmp_in $tmp_in2"; }
+mkdir_setup () { args=$tmp_dir/subdir; }
+rmdir_setup () { args=$tmp_dir; }
+rm_setup () { args=$tmp_in; }
+shred_setup () { args=$tmp_in; }
+touch_setup () { args=$tmp_in2; }
+truncate_setup () { args="--reference=$tmp_in $tmp_in2"; }
+
+mkid_setup () { printf 'f(){}\ntypedef int t;\n' > f.c; args=. ; }
+lid_setup () { args=; }
+fid_setup () { args=f.c; }
+fnid_setup () { args=; }
+xtokid_setup () { args=; }
+aid_setup () { args=f; }
+eid_setup () { args=--version; }
+gid_setup () { args=f; }
+defid_setup () { args=t; }
+
+basename_setup () { args=$tmp_in; }
+dirname_setup () { args=$tmp_in; }
+expr_setup () { args=foo; }
+
+# Punt, in case GNU `id' hasn't been installed yet.
+groups_setup () { args=--version; }
+
+pathchk_setup () { args=$tmp_in; }
+yes_setup () { args=--version; }
+logname_setup () { args=--version; }
+nohup_setup () { args=--version; }
+printf_setup () { args=foo; }
+seq_setup () { args=10; }
+sleep_setup () { args=0; }
+su_setup () { args=--version; }
+stdbuf_setup () { args="-oL true"; }
+timeout_setup () { args=--version; }
+
+# I'd rather not run sync, since it spins up disks that I've
+# deliberately caused to spin down (but not unmounted).
+sync_setup () { args=--version; }
+
+test_setup () { args=foo; }
+
+# This is necessary in the unusual event that there is
+# no valid entry in /etc/mtab.
+df_setup () { args=/; }
+
+# This is necessary in the unusual event that getpwuid (getuid ()) fails.
+id_setup () { args=-u; }
+
+# Use env to avoid invoking built-in sleep of Solaris 11's /bin/sh.
+kill_setup () {
+  env sleep 10m &
+  args=$!
+}
+
+link_setup () { args="$tmp_in link-target"; }
+unlink_setup () { args=$tmp_in; }
+
+readlink_setup () {
+  ln -s . slink
+  args=slink;
+}
+
+stat_setup () { args=$tmp_in; }
+unlink_setup () { args=$tmp_in; }
+lbracket_setup () { args=": ]"; }
+
+parted_setup () { args="-s $tmp_in mklabel gpt"
+  dd if=/dev/null of=$tmp_in seek=2000; }
+
+# Ensure that each program "works" (exits successfully) when doing
+# something more than --help or --version.
+for i in $built_programs; do
+  # Skip these.
+  case $i in chroot|stty|tty|false|chcon|runcon) continue;; esac
+
+  rm -rf $tmp_in $tmp_in2 $tmp_dir $tmp_out $bigZ_in $zin $zin2
+  echo z |gzip > $zin
+  cp $zin $zin2
+  cp $zin $bigZ_in
+
+  # This is sort of kludgey: use numbers so this is valid input for factor,
+  # and two tokens so it's valid input for tsort.
+  echo 2147483647 0 > $tmp_in
+  # Make $tmp_in2 identical. Then, using $tmp_in and $tmp_in2 as arguments
+  # to the likes of cmp and diff makes them exit successfully.
+  cp $tmp_in $tmp_in2
+  mkdir $tmp_dir
+  # echo ================== $i
+  test $i = [ && prog=lbracket || prog=$i
+  if type ${prog}_setup > /dev/null 2>&1; then
+    ${prog}_setup
+  else
+    args=
+  fi
+  if env $i $args < $tmp_in > $tmp_out; then
+    : # ok
+  else
+    echo FAIL: $i
+    fail=1
+  fi
+  rm -rf $tmp_in $tmp_in2 $tmp_out $tmp_dir
+done
+
+Exit $fail
diff --git a/tests/init.cfg b/tests/init.cfg
new file mode 100644 (file)
index 0000000..08ebd0c
--- /dev/null
@@ -0,0 +1,70 @@
+# This file is sourced by init.sh, *before* its initialization.
+
+# This goes hand in hand with the "exec 9>&2;" in tests/Makefile.am's
+# TESTS_ENVIRONMENT definition.
+stderr_fileno_=9
+
+# For repeatability, reset the environment to known value.
+LANG=C
+LC_ALL=C
+TZ=UTC
+export LANG LC_ALL TZ
+export PARTED_SUPPRESS_FILE_SYSTEM_MANIPULATION_WARNING=1
+
+# Protect ourselves from common misconfiguration to export
+# CDPATH into the environment
+unset CDPATH
+
+# Suppress readline initialization garbage.
+unset TERM
+
+sector_size_=${PARTED_SECTOR_SIZE:-512}
+
+require_512_byte_sector_size_()
+{
+  test $sector_size_ = 512 || skip_ 'FS test with sector size != 512'
+}
+
+# We need two cleanup functions.  One, cleanup_final_, is sometimes
+# used (transparently) via t-local.sh's modprobe/rmmod code.
+# The other is used e.g., to unmount.
+cleanup_final_() { :; }
+cleanup_fn_() { :; }
+cleanup_() { cleanup_fn_; cleanup_final_; }
+
+# Use this for a test that requires an actual hardware device, e.g., a real
+# disk, a USB key, or a CD-RW.  The envvars $DEVICE_TO_ERASE and
+# $DEVICE_TO_ERASE_SIZE must be set properly.  Otherwise, skip the test.
+require_erasable_()
+{
+  # Skip quietly if both envvars are not specified.
+  test -n "$DEVICE_TO_ERASE" && test -n "$DEVICE_TO_ERASE_SIZE" \
+    || skip_ 'This test requires an erasable device and you have not properly' \
+        'set the $DEVICE_TO_ERASE and $DEVICE_TO_ERASE_SIZE envvars.'
+
+  # Since testing a drive with parted destroys all data on that drive,
+  # we have rather draconian safety requirements that should help avoid
+  # accidents.  If $dev_ is the name of the device,
+  # - running "parted -s $dev_ print" must succeed, and
+  # - its output must include a line matching /^Disk $dev_: $DEV_SIZE$/
+  # - Neither $dev_ nor any $dev_[0-9]* may be mounted.
+  dev_=$DEVICE_TO_ERASE
+  sz=$DEVICE_TO_ERASE_SIZE
+  parted_output=$(parted -s $dev_ print) || fail_ "no such device: $dev_"
+  parted -s $dev_ print|grep "^Disk $dev_: $sz$" \
+    > /dev/null || fail_ "actual device size is not $sz"
+  # Try to see if $dev_ or any of its partitions is mounted.
+  # This is not reliable.  FIXME: find a better way.
+  # Maybe expose parted's own test for whether a disk is in use.
+  # The following assume that $dev_ is canonicalized, e.g., that $dev_
+  # contains no "//" or "/./" components.
+
+  # Prefer df --local, if it works, so we don't waste time
+  # enumerating lots of automounted file systems.
+  ( df --local / > /dev/null 2>&1 ) && df='df --local' || df=df
+  $df | grep "^$dev_" && fail_ "$dev_ is already mounted"
+  $df | grep "^$dev_[0-9]" && fail_ "a partition of $dev_ is already mounted"
+}
+
+. "$abs_top_srcdir/tests/t-lib-helpers.sh"
+. "$abs_top_srcdir/tests/t-local.sh"
diff --git a/tests/init.sh b/tests/init.sh
new file mode 100644 (file)
index 0000000..71c6516
--- /dev/null
@@ -0,0 +1,474 @@
+# source this file; set up for tests
+
+# Copyright (C) 2009-2011 Free Software Foundation, 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, 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 <http://www.gnu.org/licenses/>.
+
+# Using this file in a test
+# =========================
+#
+# The typical skeleton of a test looks like this:
+#
+#   #!/bin/sh
+#   . "${srcdir=.}/init.sh"; path_prepend_ .
+#   Execute some commands.
+#   Note that these commands are executed in a subdirectory, therefore you
+#   need to prepend "../" to relative filenames in the build directory.
+#   Note that the "path_prepend_ ." is useful only if the body of your
+#   test invokes programs residing in the initial directory.
+#   For example, if the programs you want to test are in src/, and this test
+#   script is named tests/test-1, then you would use "path_prepend_ ../src",
+#   or perhaps export PATH='$(abs_top_builddir)/src$(PATH_SEPARATOR)'"$$PATH"
+#   to all tests via automake's TESTS_ENVIRONMENT.
+#   Set the exit code 0 for success, 77 for skipped, or 1 or other for failure.
+#   Use the skip_ and fail_ functions to print a diagnostic and then exit
+#   with the corresponding exit code.
+#   Exit $?
+
+# Executing a test that uses this file
+# ====================================
+#
+# Running a single test:
+#   $ make check TESTS=test-foo.sh
+#
+# Running a single test, with verbose output:
+#   $ make check TESTS=test-foo.sh VERBOSE=yes
+#
+# Running a single test, with single-stepping:
+#   1. Go into a sub-shell:
+#   $ bash
+#   2. Set relevant environment variables from TESTS_ENVIRONMENT in the
+#      Makefile:
+#   $ export srcdir=../../tests # this is an example
+#   3. Execute the commands from the test, copy&pasting them one by one:
+#   $ . "$srcdir/init.sh"; path_prepend_ .
+#   ...
+#   4. Finally
+#   $ exit
+
+ME_=`expr "./$0" : '.*/\(.*\)$'`
+
+# We use a trap below for cleanup.  This requires us to go through
+# hoops to get the right exit status transported through the handler.
+# So use `Exit STATUS' instead of `exit STATUS' inside of the tests.
+# Turn off errexit here so that we don't trip the bug with OSF1/Tru64
+# sh inside this function.
+Exit () { set +e; (exit $1); exit $1; }
+
+# Print warnings (e.g., about skipped and failed tests) to this file number.
+# Override by defining to say, 9, in init.cfg, and putting say,
+# "export ...ENVVAR_SETTINGS...; exec 9>&2; $(SHELL)" in the definition
+# of TESTS_ENVIRONMENT in your tests/Makefile.am file.
+# This is useful when using automake's parallel tests mode, to print
+# the reason for skip/failure to console, rather than to the .log files.
+: ${stderr_fileno_=2}
+
+warn_ () { echo "$@" 1>&$stderr_fileno_; }
+fail_ () { warn_ "$ME_: failed test: $@"; Exit 1; }
+skip_ () { warn_ "$ME_: skipped test: $@"; Exit 77; }
+framework_failure_ () { warn_ "$ME_: set-up failure: $@"; Exit 99; }
+
+# Sanitize this shell to POSIX mode, if possible.
+DUALCASE=1; export DUALCASE
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in
+    *posix*) set -o posix ;;
+  esac
+fi
+
+# We require $(...) support unconditionally.
+# We require a few additional shell features only when $EXEEXT is nonempty,
+# in order to support automatic $EXEEXT emulation:
+# - hyphen-containing alias names
+# - we prefer to use ${var#...} substitution, rather than having
+#   to work around lack of support for that feature.
+# The following code attempts to find a shell with support for these features.
+# If the current shell passes the test, we're done.  Otherwise, test other
+# shells until we find one that passes.  If one is found, re-exec it.
+# If no acceptable shell is found, skip the current test.
+#
+# The "...set -x; P=1 true 2>err..." test is to disqualify any shell that
+# emits "P=1" into err, as /bin/sh from SunOS 5.11 and OpenBSD 4.7 do.
+#
+# Use "9" to indicate success (rather than 0), in case some shell acts
+# like Solaris 10's /bin/sh but exits successfully instead of with status 2.
+
+# Eval this code in a subshell to determine a shell's suitability.
+# 10 - passes all tests; ok to use
+#  9 - ok, but enabling "set -x" corrupts app stderr; prefer higher score
+#  ? - not ok
+gl_shell_test_script_='
+test $(echo y) = y || exit 1
+score_=10
+if test "$VERBOSE" = yes; then
+  test -n "$( (exec 3>&1; set -x; P=1 true 2>&3) 2> /dev/null)" && score_=9
+fi
+test -z "$EXEEXT" && exit $score_
+shopt -s expand_aliases
+alias a-b="echo zoo"
+v=abx
+     test ${v%x} = ab \
+  && test ${v#a} = bx \
+  && test $(a-b) = zoo \
+  && exit $score_
+'
+
+if test "x$1" = "x--no-reexec"; then
+  shift
+else
+  # Assume a working shell.  Export to subshells (setup_ needs this).
+  gl_set_x_corrupts_stderr_=false
+  export gl_set_x_corrupts_stderr_
+
+  # Record the first marginally acceptable shell.
+  marginal_=
+
+  # Search for a shell that meets our requirements.
+  for re_shell_ in __current__ "${CONFIG_SHELL:-no_shell}" \
+      /bin/sh bash dash zsh pdksh fail
+  do
+    test "$re_shell_" = no_shell && continue
+
+    # If we've made it all the way to the sentinel, "fail" without
+    # finding even a marginal shell, skip this test.
+    if test "$re_shell_" = fail; then
+      test -z "$marginal_" && skip_ failed to find an adequate shell
+      re_shell_=$marginal_
+      break
+    fi
+
+    # When testing the current shell, simply "eval" the test code.
+    # Otherwise, run it via $re_shell_ -c ...
+    if test "$re_shell_" = __current__; then
+      # 'eval'ing this code makes Solaris 10's /bin/sh exit with
+      # $? set to 2.  It does not evaluate any of the code after the
+      # "unexpected" first `('.  Thus, we must run it in a subshell.
+      ( eval "$gl_shell_test_script_" ) > /dev/null 2>&1
+    else
+      "$re_shell_" -c "$gl_shell_test_script_" 2>/dev/null
+    fi
+
+    st_=$?
+
+    # $re_shell_ works just fine.  Use it.
+    test $st_ = 10 && break
+
+    # If this is our first marginally acceptable shell, remember it.
+    if test "$st_:$marginal_" = 9: ; then
+      marginal_="$re_shell_"
+      gl_set_x_corrupts_stderr_=true
+    fi
+  done
+
+  if test "$re_shell_" != __current__; then
+    # Found a usable shell.  Preserve -v and -x.
+    case $- in
+      *v*x* | *x*v*) opts_=-vx ;;
+      *v*) opts_=-v ;;
+      *x*) opts_=-x ;;
+      *) opts_= ;;
+    esac
+    exec "$re_shell_" $opts_ "$0" --no-reexec "$@"
+    echo "$ME_: exec failed" 1>&2
+    exit 127
+  fi
+fi
+
+test -n "$EXEEXT" && shopt -s expand_aliases
+
+# Enable glibc's malloc-perturbing option.
+# This is useful for exposing code that depends on the fact that
+# malloc-related functions often return memory that is mostly zeroed.
+# If you have the time and cycles, use valgrind to do an even better job.
+: ${MALLOC_PERTURB_=87}
+export MALLOC_PERTURB_
+
+# This is a stub function that is run upon trap (upon regular exit and
+# interrupt).  Override it with a per-test function, e.g., to unmount
+# a partition, or to undo any other global state changes.
+cleanup_ () { :; }
+
+if ( diff --version < /dev/null 2>&1 | grep GNU ) > /dev/null 2>&1; then
+  compare () { diff -u "$@"; }
+elif ( cmp --version < /dev/null 2>&1 | grep GNU ) > /dev/null 2>&1; then
+  compare () { cmp -s "$@"; }
+else
+  compare () { cmp "$@"; }
+fi
+
+# An arbitrary prefix to help distinguish test directories.
+testdir_prefix_ () { printf gt; }
+
+# Run the user-overridable cleanup_ function, remove the temporary
+# directory and exit with the incoming value of $?.
+remove_tmp_ ()
+{
+  __st=$?
+  cleanup_
+  # cd out of the directory we're about to remove
+  cd "$initial_cwd_" || cd / || cd /tmp
+  chmod -R u+rwx "$test_dir_"
+  # If removal fails and exit status was to be 0, then change it to 1.
+  rm -rf "$test_dir_" || { test $__st = 0 && __st=1; }
+  exit $__st
+}
+
+# Given a directory name, DIR, if every entry in it that matches *.exe
+# contains only the specified bytes (see the case stmt below), then print
+# a space-separated list of those names and return 0.  Otherwise, don't
+# print anything and return 1.  Naming constraints apply also to DIR.
+find_exe_basenames_ ()
+{
+  feb_dir_=$1
+  feb_fail_=0
+  feb_result_=
+  feb_sp_=
+  for feb_file_ in $feb_dir_/*.exe; do
+    # If there was no *.exe file, or there existed a file named "*.exe" that
+    # was deleted between the above glob expansion and the existence test
+    # below, just skip it.
+    test "x$feb_file_" = "x$feb_dir_/*.exe" && test ! -f "$feb_file_" \
+      && continue
+    # Exempt [.exe, since we can't create a function by that name, yet
+    # we can't invoke [ by PATH search anyways due to shell builtins.
+    test "x$feb_file_" = "x$feb_dir_/[.exe" && continue
+    case $feb_file_ in
+      *[!-a-zA-Z/0-9_.+]*) feb_fail_=1; break;;
+      *) # Remove leading file name components as well as the .exe suffix.
+         feb_file_=${feb_file_##*/}
+         feb_file_=${feb_file_%.exe}
+         feb_result_="$feb_result_$feb_sp_$feb_file_";;
+    esac
+    feb_sp_=' '
+  done
+  test $feb_fail_ = 0 && printf %s "$feb_result_"
+  return $feb_fail_
+}
+
+# Consider the files in directory, $1.
+# For each file name of the form PROG.exe, create an alias named
+# PROG that simply invokes PROG.exe, then return 0.  If any selected
+# file name or the directory name, $1, contains an unexpected character,
+# define no alias and return 1.
+create_exe_shims_ ()
+{
+  case $EXEEXT in
+    '') return 0 ;;
+    .exe) ;;
+    *) echo "$0: unexpected \$EXEEXT value: $EXEEXT" 1>&2; return 1 ;;
+  esac
+
+  base_names_=`find_exe_basenames_ $1` \
+    || { echo "$0 (exe_shim): skipping directory: $1" 1>&2; return 0; }
+
+  if test -n "$base_names_"; then
+    for base_ in $base_names_; do
+      alias "$base_"="$base_$EXEEXT"
+    done
+  fi
+
+  return 0
+}
+
+# Use this function to prepend to PATH an absolute name for each
+# specified, possibly-$initial_cwd_-relative, directory.
+path_prepend_ ()
+{
+  while test $# != 0; do
+    path_dir_=$1
+    case $path_dir_ in
+      '') fail_ "invalid path dir: '$1'";;
+      /*) abs_path_dir_=$path_dir_;;
+      *) abs_path_dir_=`cd "$initial_cwd_/$path_dir_" && echo "$PWD"` \
+           || fail_ "invalid path dir: $path_dir_";;
+    esac
+    case $abs_path_dir_ in
+      *:*) fail_ "invalid path dir: '$abs_path_dir_'";;
+    esac
+    PATH="$abs_path_dir_:$PATH"
+
+    # Create an alias, FOO, for each FOO.exe in this directory.
+    create_exe_shims_ "$abs_path_dir_" \
+      || fail_ "something failed (above): $abs_path_dir_"
+    shift
+  done
+  export PATH
+}
+
+setup_ ()
+{
+  if test "$VERBOSE" = yes; then
+    # Test whether set -x may cause the selected shell to corrupt an
+    # application's stderr.  Many do, including zsh-4.3.10 and the /bin/sh
+    # from SunOS 5.11, OpenBSD 4.7 and Irix 5.x and 6.5.
+    # If enabling verbose output this way would cause trouble, simply
+    # issue a warning and refrain.
+    if $gl_set_x_corrupts_stderr_; then
+      warn_ "using SHELL=$SHELL with 'set -x' corrupts stderr"
+    else
+      set -x
+    fi
+  fi
+
+  initial_cwd_=$PWD
+  fail=0
+
+  pfx_=`testdir_prefix_`
+  test_dir_=`mktempd_ "$initial_cwd_" "$pfx_-$ME_.XXXX"` \
+    || fail_ "failed to create temporary directory in $initial_cwd_"
+  cd "$test_dir_"
+
+  # As autoconf-generated configure scripts do, ensure that IFS
+  # is defined initially, so that saving and restoring $IFS works.
+  gl_init_sh_nl_='
+'
+  IFS=" ""     $gl_init_sh_nl_"
+
+  # This trap statement, along with a trap on 0 below, ensure that the
+  # temporary directory, $test_dir_, is removed upon exit as well as
+  # upon receipt of any of the listed signals.
+  for sig_ in 1 2 3 13 15; do
+    eval "trap 'Exit $(expr $sig_ + 128)' $sig_"
+  done
+}
+
+# Create a temporary directory, much like mktemp -d does.
+# Written by Jim Meyering.
+#
+# Usage: mktempd_ /tmp phoey.XXXXXXXXXX
+#
+# First, try to use the mktemp program.
+# Failing that, we'll roll our own mktemp-like function:
+#  - try to get random bytes from /dev/urandom
+#  - failing that, generate output from a combination of quickly-varying
+#      sources and gzip.  Ignore non-varying gzip header, and extract
+#      "random" bits from there.
+#  - given those bits, map to file-name bytes using tr, and try to create
+#      the desired directory.
+#  - make only $MAX_TRIES_ attempts
+
+# Helper function.  Print $N pseudo-random bytes from a-zA-Z0-9.
+rand_bytes_ ()
+{
+  n_=$1
+
+  # Maybe try openssl rand -base64 $n_prime_|tr '+/=\012' abcd first?
+  # But if they have openssl, they probably have mktemp, too.
+
+  chars_=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
+  dev_rand_=/dev/urandom
+  if test -r "$dev_rand_"; then
+    # Note: 256-length($chars_) == 194; 3 copies of $chars_ is 186 + 8 = 194.
+    dd ibs=$n_ count=1 if=$dev_rand_ 2>/dev/null \
+      | LC_ALL=C tr -c $chars_ 01234567$chars_$chars_$chars_
+    return
+  fi
+
+  n_plus_50_=`expr $n_ + 50`
+  cmds_='date; date +%N; free; who -a; w; ps auxww; ps ef; netstat -n'
+  data_=` (eval "$cmds_") 2>&1 | gzip `
+
+  # Ensure that $data_ has length at least 50+$n_
+  while :; do
+    len_=`echo "$data_"|wc -c`
+    test $n_plus_50_ -le $len_ && break;
+    data_=` (echo "$data_"; eval "$cmds_") 2>&1 | gzip `
+  done
+
+  echo "$data_" \
+    | dd bs=1 skip=50 count=$n_ 2>/dev/null \
+    | LC_ALL=C tr -c $chars_ 01234567$chars_$chars_$chars_
+}
+
+mktempd_ ()
+{
+  case $# in
+  2);;
+  *) fail_ "Usage: $ME DIR TEMPLATE";;
+  esac
+
+  destdir_=$1
+  template_=$2
+
+  MAX_TRIES_=4
+
+  # Disallow any trailing slash on specified destdir:
+  # it would subvert the post-mktemp "case"-based destdir test.
+  case $destdir_ in
+  /) ;;
+  */) fail_ "invalid destination dir: remove trailing slash(es)";;
+  esac
+
+  case $template_ in
+  *XXXX) ;;
+  *) fail_ \
+       "invalid template: $template_ (must have a suffix of at least 4 X's)";;
+  esac
+
+  # First, try to use mktemp.
+  d=`unset TMPDIR; mktemp -d -t -p "$destdir_" "$template_" 2>/dev/null` \
+    || fail=1
+
+  # The resulting name must be in the specified directory.
+  case $d in "$destdir_"*);; *) fail=1;; esac
+
+  # It must have created the directory.
+  test -d "$d" || fail=1
+
+  # It must have 0700 permissions.  Handle sticky "S" bits.
+  perms=`ls -dgo "$d" 2>/dev/null|tr S -` || fail=1
+  case $perms in drwx------*) ;; *) fail=1;; esac
+
+  test $fail = 0 && {
+    echo "$d"
+    return
+  }
+
+  # If we reach this point, we'll have to create a directory manually.
+
+  # Get a copy of the template without its suffix of X's.
+  base_template_=`echo "$template_"|sed 's/XX*$//'`
+
+  # Calculate how many X's we've just removed.
+  template_length_=`echo "$template_" | wc -c`
+  nx_=`echo "$base_template_" | wc -c`
+  nx_=`expr $template_length_ - $nx_`
+
+  err_=
+  i_=1
+  while :; do
+    X_=`rand_bytes_ $nx_`
+    candidate_dir_="$destdir_/$base_template_$X_"
+    err_=`mkdir -m 0700 "$candidate_dir_" 2>&1` \
+      && { echo "$candidate_dir_"; return; }
+    test $MAX_TRIES_ -le $i_ && break;
+    i_=`expr $i_ + 1`
+  done
+  fail_ "$err_"
+}
+
+# If you want to override the testdir_prefix_ function,
+# or to add more utility functions, use this file.
+test -f "$srcdir/init.cfg" \
+  && . "$srcdir/init.cfg"
+
+setup_ "$@"
+# This trap is here, rather than in the setup_ function, because some
+# shells run the exit trap at shell function exit, rather than script exit.
+trap remove_tmp_ 0
diff --git a/tests/lvm-utils.sh b/tests/lvm-utils.sh
new file mode 100644 (file)
index 0000000..456d265
--- /dev/null
@@ -0,0 +1,208 @@
+# Put lvm-related utilities here.
+# This file is sourced from test infrastructure.
+
+# Copyright (C) 2007-2010 Red Hat, Inc. All rights reserved.
+#
+# This copyrighted material is made available to anyone wishing to use,
+# modify, copy, or redistribute it subject to the terms and conditions
+# of the GNU General Public License v.2.
+#
+# 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+export LVM_SUPPRESS_FD_WARNINGS=1
+
+ME=$(basename "$0")
+warn() { echo >&2 "$ME: $@"; }
+
+unsafe_losetup_()
+{
+  f=$1
+
+  test -n "$G_dev_" \
+    || fail_ "Internal error: unsafe_losetup_ called before init_root_dir_"
+
+  # Iterate through $G_dev_/loop{,/}{0,1,2,3,4,5,6,7,8,9}
+  for slash in '' /; do
+    for i in 0 1 2 3 4 5 6 7 8 9; do
+      dev=$G_dev_/loop$slash$i
+      losetup $dev > /dev/null 2>&1 && continue;
+      losetup "$dev" "$f" > /dev/null && { echo "$dev"; return 0; }
+      break
+    done
+  done
+
+  return 1
+}
+
+loop_setup_()
+{
+  file=$1
+  dd if=/dev/zero of="$file" bs=1M count=1 seek=1000 > /dev/null 2>&1 \
+    || { warn "loop_setup_ failed: Unable to create tmp file $file"; return 1; }
+
+  # NOTE: this requires a new enough version of losetup
+  dev=$(unsafe_losetup_ "$file") \
+    || { warn "loop_setup_ failed: Unable to create loopback device"; return 1; }
+
+  echo "$dev"
+  return 0;
+}
+
+compare_two_fields_()
+{
+    local cmd1=$1;
+    local obj1=$2;
+    local field1=$3;
+    local cmd2=$4;
+    local obj2=$5;
+    local field2=$6;
+    local val1;
+    local val2;
+
+    val1=$($cmd1 --noheadings -o $field1 $obj1)
+    val2=$($cmd2 --noheadings -o $field2 $obj2)
+if test "$verbose" = "t"
+then
+  echo "compare_two_fields_ $obj1($field1): $val1 $obj2($field2): $val2"
+fi
+  test $val1 = $val2
+}
+
+compare_vg_field_()
+{
+    local vg1=$1;
+    local vg2=$2;
+    local field=$3;
+    local val1;
+    local val2;
+
+    val1=$(vgs --noheadings -o $field $vg1)
+    val2=$(vgs --noheadings -o $field $vg2)
+if test "$verbose" = "t"
+then
+  echo "compare_vg_field_ VG1: $val1 VG2: $val2"
+fi
+  test $val1 = $val2
+}
+
+check_vg_field_()
+{
+    local vg=$1;
+    local field=$2;
+    local expected=$3;
+    local actual;
+
+    actual=$(vgs --noheadings -o $field $vg)
+if test "$verbose" = "t"
+then
+  echo "check_vg_field_ VG=$vg, field=$field, actual=$actual, expected=$expected"
+fi
+  test $actual = $expected
+}
+
+check_pv_field_()
+{
+    local pv=$1;
+    local field=$2;
+    local expected=$3;
+    local actual;
+
+    actual=$(pvs --noheadings -o $field $pv)
+if test "$verbose" = "t"
+then
+  echo "check_pv_field_ PV=$pv, field=$field, actual=$actual, expected=$expected"
+fi
+    test $actual = $expected
+}
+
+check_lv_field_()
+{
+    local lv=$1;
+    local field=$2;
+    local expected=$3;
+    local actual;
+
+    actual=$(lvs --noheadings -o $field $lv)
+if test "$verbose" = "t"
+then
+  echo "check_lv_field_ LV=$lv, field=$field, actual=$actual, expected=$expected"
+fi
+  test $actual = $expected
+}
+
+vg_validate_pvlv_counts_()
+{
+       local local_vg=$1
+       local num_pvs=$2
+       local num_lvs=$3
+       local num_snaps=$4
+
+       check_vg_field_ $local_vg pv_count $num_pvs &&
+       check_vg_field_ $local_vg lv_count $num_lvs &&
+       check_vg_field_ $local_vg snap_count $num_snaps
+}
+
+dmsetup_has_dm_devdir_support_()
+{
+  # Detect support for the envvar.  If it's supported, the
+  # following command will fail with the expected diagnostic.
+  out=$(DM_DEV_DIR=j dmsetup version 2>&1)
+  test "$?:$out" = "1:Invalid DM_DEV_DIR envvar value." ||
+  test "$?:$out" = "1:Invalid DM_DEV_DIR environment variable value."
+}
+
+# set up private /dev and /etc
+init_root_dir_()
+{
+  test -n "$test_dir_" \
+    || fail_ "Internal error: called init_root_dir_ before" \
+      "defining \$test_dir_"
+
+  # Define these two globals.
+  G_root_=$test_dir_/root
+  G_dev_=$G_root_/dev
+
+  export LVM_SYSTEM_DIR=$G_root_/etc
+  export DM_DEV_DIR=$G_dev_
+
+  # Only the first caller does anything.
+  mkdir -p $G_root_/etc $G_dev_ $G_dev_/mapper $G_root_/lib
+  for i in 0 1 2 3 4 5 6 7; do
+    mknod $G_root_/dev/loop$i b 7 $i
+  done
+  for i in $abs_top_builddir/dmeventd/mirror/*.so $abs_top_builddir/dmeventd/snapshot/*.so
+  do
+    # NOTE: This check is necessary because the loop above will give us the value
+    # "$abs_top_builddir/dmeventd/mirror/*.so" if no files ending in 'so' exist.
+    # This is the best way I could quickly determine to skip over this bogus value.
+    if [ -f $i ]; then
+      echo Setting up symlink from $i to $G_root_/lib
+      ln -s $i $G_root_/lib
+    fi
+  done
+  cat > $G_root_/etc/lvm.conf <<-EOF
+  devices {
+    dir = "$G_dev_"
+    scan = "$G_dev_"
+    filter = [ "a/loop/", "a/mirror/", "a/mapper/", "r/.*/" ]
+    cache_dir = "$G_root_/etc"
+    sysfs_scan = 0
+  }
+  log {
+    verbose = $verboselevel
+    syslog = 0
+    indent = 1
+  }
+  backup {
+    backup = 0
+    archive = 0
+  }
+  global {
+    library_dir = "$G_root_/lib"
+  }
+EOF
+}
+
+init_root_dir_
diff --git a/tests/print-align.c b/tests/print-align.c
new file mode 100644 (file)
index 0000000..e012fb3
--- /dev/null
@@ -0,0 +1,50 @@
+#include <config.h>
+#include <parted/parted.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "closeout.h"
+#include "progname.h"
+
+int
+main (int argc, char **argv)
+{
+  atexit (close_stdout);
+  set_program_name (argv[0]);
+
+  if (argc != 2)
+    return EXIT_FAILURE;
+
+  char const *dev_name = argv[1];
+  PedDevice *dev = ped_device_get (dev_name);
+  if (dev == NULL)
+    return EXIT_FAILURE;
+
+  PedAlignment *pa_min = ped_device_get_minimum_alignment (dev);
+  if (pa_min)
+    printf ("minimum: %lld %lld\n", pa_min->offset, pa_min->grain_size);
+  else
+    printf ("minimum: - -\n");
+  free (pa_min);
+
+  PedAlignment *pa_opt = ped_device_get_optimum_alignment (dev);
+  if (pa_opt)
+    printf ("optimal: %lld %lld\n", pa_opt->offset, pa_opt->grain_size);
+  else
+    printf ("optimal: - -\n");
+  free (pa_opt);
+
+  PedDisk *disk = ped_disk_new (dev);
+  if (disk == NULL)
+    return EXIT_FAILURE;
+
+  PedAlignment *part_align = ped_disk_get_partition_alignment (disk);
+  if (part_align == NULL)
+    return EXIT_FAILURE;
+
+  printf ("partition alignment: %lld %lld\n",
+         part_align->offset, part_align->grain_size);
+
+  ped_device_destroy (dev);
+  return EXIT_SUCCESS;
+}
diff --git a/tests/print-max.c b/tests/print-max.c
new file mode 100644 (file)
index 0000000..7560d49
--- /dev/null
@@ -0,0 +1,35 @@
+#include <config.h>
+#include <parted/parted.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "closeout.h"
+#include "progname.h"
+
+int
+main (int argc, char **argv)
+{
+  atexit (close_stdout);
+  set_program_name (argv[0]);
+
+  if (argc != 2)
+    return EXIT_FAILURE;
+
+  char const *dev_name = argv[1];
+  PedDevice *dev = ped_device_get (dev_name);
+  if (dev == NULL)
+    return EXIT_FAILURE;
+  PedDisk *disk = ped_disk_new (dev);
+  if (disk == NULL)
+    return EXIT_FAILURE;
+
+  PedSector max_length = ped_disk_max_partition_length (disk);
+  PedSector max_start_sector = ped_disk_max_partition_start_sector (disk);
+
+  printf ("max len: %llu\n", (unsigned long long) max_length);
+  printf ("max start sector: %llu\n", (unsigned long long) max_start_sector);
+
+  ped_disk_destroy (disk);
+  ped_device_destroy (dev);
+  return EXIT_SUCCESS;
+}
diff --git a/tests/t-lib-helpers.sh b/tests/t-lib-helpers.sh
new file mode 100644 (file)
index 0000000..d56a111
--- /dev/null
@@ -0,0 +1,385 @@
+# Functions sourced via testing framework.
+
+getlimits_()
+{
+    eval $(getlimits)
+    test "$INT_MAX" ||
+    error_ "Error running getlimits"
+}
+
+require_acl_()
+{
+  getfacl --version < /dev/null > /dev/null 2>&1 \
+    && setfacl --version < /dev/null > /dev/null 2>&1 \
+      || skip_ "This test requires getfacl and setfacl."
+
+  id -u bin > /dev/null 2>&1 \
+    || skip_ "This test requires a local user named bin."
+}
+
+require_hfs_()
+{
+  mkfs.hfs 2>&1 | grep '^usage:' \
+    || skip_ "This test requires HFS support."
+}
+
+# Skip this test if we're not in SELinux "enforcing" mode.
+require_selinux_enforcing_()
+{
+  test "$(getenforce)" = Enforcing \
+    || skip_ "This test is useful only with SELinux in Enforcing mode."
+}
+
+
+require_openat_support_()
+{
+  # Skip this test if your system has neither the openat-style functions
+  # nor /proc/self/fd support with which to emulate them.
+  test -z "$CONFIG_HEADER" \
+    && skip_ 'internal error: CONFIG_HEADER not defined'
+
+  _skip=yes
+  grep '^#define HAVE_OPENAT' "$CONFIG_HEADER" > /dev/null && _skip=no
+  test -d /proc/self/fd && _skip=no
+  if test $_skip = yes; then
+    skip_ 'this system lacks openat support'
+  fi
+}
+
+require_ulimit_()
+{
+  ulimit_works=yes
+  # Expect to be able to exec a program in 10MB of virtual memory,
+  # but not in 20KB.  I chose "date".  It must not be a shell built-in
+  # function, so you can't use echo, printf, true, etc.
+  # Of course, in coreutils, I could use $top_builddir/src/true,
+  # but this should be able to work for other projects, too.
+  ( ulimit -v 10000; date ) > /dev/null 2>&1 || ulimit_works=no
+  ( ulimit -v 20;    date ) > /dev/null 2>&1 && ulimit_works=no
+
+  test $ulimit_works = no \
+    && skip_ "this shell lacks ulimit support"
+}
+
+require_readable_root_()
+{
+  test -r / || skip_ "/ is not readable"
+}
+
+# Skip the current test if strace is not available or doesn't work
+# with the named syscall.  Usage: require_strace_ unlink
+require_strace_()
+{
+  test $# = 1 || framework_failure
+
+  strace -V < /dev/null > /dev/null 2>&1 ||
+    skip_ 'no strace program'
+
+  strace -qe "$1" echo > /dev/null 2>&1 ||
+    skip_ 'strace -qe "'"$1"'" does not work'
+}
+
+# Require a controlling input `terminal'.
+require_controlling_input_terminal_()
+{
+  tty -s || have_input_tty=no
+  test -t 0 || have_input_tty=no
+  if test "$have_input_tty" = no; then
+    skip_ 'requires controlling input terminal
+This test must have a controlling input "terminal", so it may not be
+run via "batch", "at", or "ssh".  On some systems, it may not even be
+run in the background.'
+  fi
+}
+
+uid_is_privileged_()
+{
+  # Make sure id -u succeeds.
+  my_uid=$(id -u) \
+    || { echo "$0: cannot run \`id -u'" 1>&2; return 1; }
+
+  # Make sure it gives valid output.
+  case $my_uid in
+    0) ;;
+    *[!0-9]*)
+      echo "$0: invalid output (\`$my_uid') from \`id -u'" 1>&2
+      return 1 ;;
+    *) return 1 ;;
+  esac
+}
+
+get_process_status_()
+{
+  sed -n '/^State:[     ]*\([[:alpha:]]\).*/s//\1/p' /proc/$1/status
+}
+
+# Convert an ls-style permission string, like drwxr----x and -rw-r-x-wx
+# to the equivalent chmod --mode (-m) argument, (=,u=rwx,g=r,o=x and
+# =,u=rw,g=rx,o=wx).  Ignore ACLs.
+rwx_to_mode_()
+{
+  case $# in
+    1) rwx=$1;;
+    *) echo "$0: wrong number of arguments" 1>&2
+      echo "Usage: $0 ls-style-mode-string" 1>&2
+      return;;
+  esac
+
+  case $rwx in
+    [ld-][rwx-][rwx-][rwxsS-][rwx-][rwx-][rwxsS-][rwx-][rwx-][rwxtT-]) ;;
+    [ld-][rwx-][rwx-][rwxsS-][rwx-][rwx-][rwxsS-][rwx-][rwx-][rwxtT-][+.]) ;;
+    *) echo "$0: invalid mode string: $rwx" 1>&2; return;;
+  esac
+
+  # Perform these conversions:
+  # S  s
+  # s  xs
+  # T  t
+  # t  xt
+  # The `T' and `t' ones are only valid for `other'.
+  s='s/S/@/;s/s/x@/;s/@/s/'
+  t='s/T/@/;s/t/x@/;s/@/t/'
+
+  u=`echo $rwx|sed 's/^.\(...\).*/,u=\1/;s/-//g;s/^,u=$//;'$s`
+  g=`echo $rwx|sed 's/^....\(...\).*/,g=\1/;s/-//g;s/^,g=$//;'$s`
+  o=`echo $rwx|sed 's/^.......\(...\).*/,o=\1/;s/-//g;s/^,o=$//;'$s';'$t`
+  echo "=$u$g$o"
+}
+
+require_selinux_()
+{
+  case `ls -Zd .` in
+    '? .'|'unlabeled .')
+      skip_ "this system (or maybe just" \
+        "the current file system) lacks SELinux support"
+    ;;
+  esac
+}
+
+very_expensive_()
+{
+  if test "$RUN_VERY_EXPENSIVE_TESTS" != yes; then
+    skip_ 'very expensive: disabled by default
+This test is very expensive, so it is disabled by default.
+To run it anyway, rerun make check with the RUN_VERY_EXPENSIVE_TESTS
+environment variable set to yes.  E.g.,
+
+  env RUN_VERY_EXPENSIVE_TESTS=yes make check
+'
+  fi
+}
+
+expensive_()
+{
+  if test "$RUN_EXPENSIVE_TESTS" != yes; then
+    skip_ 'expensive: disabled by default
+This test is relatively expensive, so it is disabled by default.
+To run it anyway, rerun make check with the RUN_EXPENSIVE_TESTS
+environment variable set to yes.  E.g.,
+
+  env RUN_EXPENSIVE_TESTS=yes make check
+'
+  fi
+}
+
+require_root_()
+{
+  uid_is_privileged_ || skip_ "must be run as root"
+  NON_ROOT_USERNAME=${NON_ROOT_USERNAME=nobody}
+  NON_ROOT_GROUP=${NON_ROOT_GROUP=$(id -g $NON_ROOT_USERNAME)}
+}
+
+skip_if_root_() { uid_is_privileged_ && skip_ "must be run as non-root"; }
+error_() { echo "$0: $@" 1>&2; Exit 1; }
+framework_failure() { error_ 'failure in testing framework'; }
+
+# Set `groups' to a space-separated list of at least two groups
+# of which the user is a member.
+require_membership_in_two_groups_()
+{
+  test $# = 0 || framework_failure
+
+  groups=${COREUTILS_GROUPS-`(id -G || /usr/xpg4/bin/id -G) 2>/dev/null`}
+  case "$groups" in
+    *' '*) ;;
+    *) skip_ 'requires membership in two groups
+this test requires that you be a member of more than one group,
+but running `id -G'\'' either failed or found just one.  If you really
+are a member of at least two groups, then rerun this test with
+COREUTILS_GROUPS set in your environment to the space-separated list
+of group names or numbers.  E.g.,
+
+  env COREUTILS_GROUPS='users cdrom' make check
+
+'
+     ;;
+  esac
+}
+
+# Is /proc/$PID/status supported?
+require_proc_pid_status_()
+{
+    sleep 2 &
+    local pid=$!
+    sleep .5
+    grep '^State:[      ]*[S]' /proc/$pid/status > /dev/null 2>&1 ||
+    skip_ "/proc/$pid/status: missing or 'different'"
+    kill $pid
+}
+
+# Does the current (working-dir) file system support sparse files?
+require_sparse_support_()
+{
+  test $# = 0 || framework_failure
+  # Test whether we can create a sparse file.
+  # For example, on Darwin6.5 with a file system of type hfs, it's not possible.
+  # NTFS requires 128K before a hole appears in a sparse file.
+  t=sparse.$$
+  dd bs=1 seek=128K of=$t < /dev/null 2> /dev/null
+  set x `du -sk $t`
+  kb_size=$2
+  rm -f $t
+  if test $kb_size -ge 128; then
+    skip_ 'this file system does not support sparse files'
+  fi
+}
+
+mkfifo_or_skip_()
+{
+  test $# = 1 || framework_failure
+  if ! mkfifo "$1"; then
+    # Make an exception of this case -- usually we interpret framework-creation
+    # failure as a test failure.  However, in this case, when running on a SunOS
+    # system using a disk NFS mounted from OpenBSD, the above fails like this:
+    # mkfifo: cannot make fifo `fifo-10558': Not owner
+    skip_ 'NOTICE: unable to create test prerequisites'
+  fi
+}
+
+# Disable the current test if the working directory seems to have
+# the setgid bit set.
+skip_if_setgid_()
+{
+  setgid_tmpdir=setgid-$$
+  (umask 77; mkdir $setgid_tmpdir)
+  perms=$(stat --printf %A $setgid_tmpdir)
+  rmdir $setgid_tmpdir
+  case $perms in
+    drwx------);;
+    drwxr-xr-x);;  # Windows98 + DJGPP 2.03
+    *) skip_ 'this directory has the setgid bit set';;
+  esac
+}
+
+skip_if_mcstransd_is_running_()
+{
+  test $# = 0 || framework_failure
+
+  # When mcstransd is running, you'll see only the 3-component
+  # version of file-system context strings.  Detect that,
+  # and if it's running, skip this test.
+  __ctx=$(stat --printf='%C\n' .) || framework_failure
+  case $__ctx in
+    *:*:*:*) ;; # four components is ok
+    *) # anything else probably means mcstransd is running
+        skip_ "unexpected context '$__ctx'; turn off mcstransd" ;;
+  esac
+}
+
+# Skip the current test if umask doesn't work as usual.
+# This test should be run in the temporary directory that ends
+# up being removed via the trap commands.
+working_umask_or_skip_()
+{
+  umask 022
+  touch file1 file2
+  chmod 644 file2
+  perms=`ls -l file1 file2 | sed 's/ .*//' | uniq`
+  rm -f file1 file2
+
+  case $perms in
+  *'
+  '*) skip_ 'your build directory has unusual umask semantics'
+  esac
+}
+
+emit_superuser_warning()
+{
+  uid=`id -u` || uid=1
+  test "$uid" != 0 &&
+    echo 'WARNING: You are not superuser.  Watch out for permissions.' || :
+}
+
+require_mdadm_()
+{
+  mdadm --version || skip_ "find mdadm executable"
+}
+
+# Will look for an md number that is not in use and create a md device with
+# that number.  If the system has more than 9 md devices, it will fail.
+mdadm_create_linear_device_()
+{
+  lo_dev=$1
+  mdd=$G_dev_/md0
+  for i in 0 1 2 3 4 5 6 7 8 9 ; do
+    mdd=$G_dev_/md$i
+    mdadm  --create --force $mdd --level=linear --raid-devices=1 $lo_dev \
+       > /dev/null 2>&1 \
+      && break
+
+    if [ $i -eq 9 ]; then echo $mdd ; return 1 ; fi
+  done
+
+  echo $mdd
+  return 0
+}
+
+# Often, when parted cannot use the specified size or start/endpoints
+# of a partition, it outputs a warning or error like this:
+#
+# Error: You requested a partition from 512B to 50.7kB.
+# The closest location we can manage is 17.4kB to 33.8kB.
+#
+# But those numbers depend on sector size, so
+# replace the specific values with place-holders,
+# so tests do not depend on sector size.
+normalize_part_diag_()
+{
+  local file=$1
+  sed 's/ [0-9.k]*B to [0-9.k]*B\.$/ X to Y./' $file > $file.t \
+    && mv $file.t $file && return 0
+  return 1
+}
+
+require_xfs_()
+{
+  mkfs.xfs -V || skip_ "this test requires XFS support"
+}
+
+require_dvhtool_()
+{
+  dvhtool --help \
+    || skip_ 'dvhtool is required for this test'
+}
+
+# Helper function: wait 2s (via .1s increments) for FILE to appear.
+# Usage: wait_for_dev_to_appear_ /dev/sdg
+# Return 0 upon success, 1 upon failure.
+wait_for_dev_to_appear_()
+{
+  local file=$1
+  local i=0
+  local incr=1
+  while :; do
+    ls "$file" > /dev/null 2>&1 && return 0
+    sleep .1 2>/dev/null || { sleep 1; incr=10; }
+    i=$(expr $i + $incr); test $i = 20 && break
+  done
+  return 1
+}
+
+device_mapper_required_()
+{
+  . "$abs_top_srcdir/tests/lvm-utils.sh" \
+       || fail_ "device mapper setup failed"
+}
diff --git a/tests/t-local.sh b/tests/t-local.sh
new file mode 100644 (file)
index 0000000..159cc62
--- /dev/null
@@ -0,0 +1,188 @@
+# Put test-related bits that are parted-specific here.
+# This file is sourced from the testing framework.
+sector_size_=${PARTED_SECTOR_SIZE:-512}
+
+scsi_debug_lock_dir_="$abs_srcdir/scsi_debug.lock"
+
+require_scsi_debug_module_()
+{
+  # check for scsi_debug module
+  modprobe -n scsi_debug ||
+    skip_ "you lack the scsi_debug kernel module"
+}
+
+scsi_debug_modprobe_succeeded_=
+
+# Always run this cleanup function.
+cleanup_final_() { scsi_debug_cleanup_; }
+
+scsi_debug_cleanup_()
+{
+  # This function must always release the lock.
+  # If modprobe succeeded, it must be sure to run rmmod.
+  if test -n "$scsi_debug_modprobe_succeeded_"; then
+    # We have to insist.  Otherwise, a single rmmod usually fails to remove it,
+    # due either to "Resource temporarily unavailable" or to
+    # "Module scsi_debug is in use".
+    for i in 1 2 3; do
+      rmmod scsi_debug \
+       && { test "$VERBOSE" = yes && warn_ $ME_ rmmod scsi_debug...; break; }
+      sleep .2 || sleep 1
+    done
+  fi
+  rm -fr $scsi_debug_lock_dir_
+}
+
+# Helper function: wait 2s (via .1s increments) for FILE to appear.
+# Usage: wait_for_dev_to_appear_ /dev/sdg
+# Return 0 upon success, 1 upon failure.
+wait_for_dev_to_appear_()
+{
+  local file=$1
+  local i=0
+  local incr=1
+  while :; do
+    ls "$file" > /dev/null 2>&1 && return 0
+    sleep .1 2>/dev/null || { sleep 1; incr=10; }
+    i=$(expr $i + $incr); test $i = 20 && break
+  done
+  return 1
+}
+
+# Tests that uses "modprobe scsi_debug ..." must not be run in parallel.
+scsi_debug_acquire_lock_()
+{
+  local retries=20
+  local lock_timeout_stale_seconds=120
+
+  # If it was created more than $lock_timeout_stale_seconds ago, remove it.
+  # FIXME: implement this
+
+  local i=0
+  local incr=1
+  while :; do
+    mkdir "$scsi_debug_lock_dir_" && return 0
+    sleep .1 2>/dev/null || { sleep 1; incr=10; }
+    i=$(expr $i + $incr); test $i = $(expr $retries \* 10) && break
+  done
+
+  warn_ "$ME_: failed to acquire lock: $scsi_debug_lock_dir_"
+  return 1
+}
+
+# If there is a scsi_debug device, print the corresponding "sdN" and return 0.
+# Otherwise, return 1.
+new_sdX_()
+{
+  local m; m=$(grep -lw scsi_debug /sys/block/sd*/device/model) || return 1
+
+  # Remove the /sys/block/ prefix, and then the /device/model suffix.
+  m=${m#/sys/block/}
+  m=${m%/device/model}
+  echo "$m"
+  return 0
+}
+
+# Create a device using the scsi_debug module with the options passed to
+# this function as arguments.  Upon success, print the name of the new device.
+scsi_debug_setup_()
+{
+  scsi_debug_acquire_lock_
+
+  # It is not trivial to determine the name of the device we're creating.
+  # Record the names of all /sys/block/sd* devices *before* probing:
+  touch stamp
+  modprobe scsi_debug "$@" || { rm -f stamp; return 1; }
+  scsi_debug_modprobe_succeeded_=1
+  test "$VERBOSE" = yes \
+    && warn_ $ME_ modprobe scsi_debug succeeded
+
+  # Wait up to 2s (via .1s increments) for the list of devices to change.
+  # Sleeping for a fraction of a second requires GNU sleep, so fall
+  # back on sleeping 2x1s if that fails.
+  # FIXME-portability: using "cmp - ..." probably requires GNU cmp.
+  local incr=1
+  local i=0
+  local new_dev
+  while :; do
+    new_dev=$(new_sdX_) && break
+    sleep .1 2>/dev/null || { sleep 1; incr=10; }
+    i=$(expr $i + $incr); test $i = 20 && break
+  done
+
+  case $new_dev in
+    sd[a-z]) ;;
+    sd[a-z][a-z]) ;;
+    *) warn_ $ME_ unexpected device name: $new_dev; return 1 ;;
+  esac
+  local t=/dev/$new_dev
+  wait_for_dev_to_appear_ $t
+  echo $t
+  return 0
+}
+
+require_512_byte_sector_size_()
+{
+  test $sector_size_ = 512 \
+      || skip_ FS test with sector size != 512
+}
+
+peek_()
+{
+  case $# in 2) ;; *) echo "usage: peek_ FILE 0_BASED_OFFSET" >&2; exit 1;; esac
+  case $2 in *[^0-9]*) echo "peek_: invalid offset: $2" >&2; exit 1 ;; esac
+  dd if="$1" bs=1 skip="$2" count=1
+}
+
+poke_()
+{
+  case $# in 3) ;; *) echo "usage: poke_ FILE 0_BASED_OFFSET BYTE" >&2; exit 1;;
+    esac
+  case $2 in *[^0-9]*) echo "poke_: invalid offset: $2" >&2; exit 1 ;; esac
+  case $3 in ?) ;; *) echo "poke_: invalid byte: '$3'" >&2; exit 1 ;; esac
+  printf %s "$3" | dd of="$1" bs=1 seek="$2" count=1 conv=notrunc
+}
+
+# byte 56 of the partition entry is the first byte of its 72-byte name field
+gpt1_pte_name_offset_()
+{
+  local ss=$1
+  case $ss in *[^0-9]*) echo "$0: invalid sector size: $ss">&2; return 1;; esac
+  expr $ss \* 2 + 56
+  return 0
+}
+
+# Change the name of the first partition in the primary GPT table,
+# thus invalidating the PartitionEntryArrayCRC32 checksum.
+gpt_corrupt_primary_table_()
+{
+  case $# in 2) ;; *) echo "$0: expected 2 args, got $#" >&2; return 1;; esac
+  local dev=$1
+  local ss=$2
+  case $ss in *[^0-9]*) echo "$0: invalid sector size: $ss">&2; return 1;; esac
+
+  # get the first byte of the name
+  local orig_pte_name_byte
+  orig_pte_name_byte=$(peek_ $dev $(gpt1_pte_name_offset_ $ss)) || return 1
+
+  local new_byte
+  test x"$orig_pte_name_byte" = xA && new_byte=B || new_byte=A
+
+  # Replace with a different byte
+  poke_ $dev $(gpt1_pte_name_offset_ $ss) "$new_byte" || return 1
+
+  printf %s "$orig_pte_name_byte"
+  return 0
+}
+
+gpt_restore_primary_table_()
+{
+  case $# in 3) ;; *) echo "$0: expected 2 args, got $#" >&2; return 1;; esac
+  local dev=$1
+  local ss=$2
+  case $ss in *[^0-9]*) echo "$0: invalid sector size: $ss">&2; return 1;; esac
+  local orig_byte=$3
+  poke_ $dev $(gpt1_pte_name_offset_ $ss) "$orig_byte" || return 1
+}
+
+. "$abs_top_srcdir/tests/t-lvm.sh"
diff --git a/tests/t-lvm.sh b/tests/t-lvm.sh
new file mode 100644 (file)
index 0000000..b08f934
--- /dev/null
@@ -0,0 +1,105 @@
+# Put lvm-related utilities here.
+# This file is sourced from test infrastructure.
+
+# Copyright (C) 2007, 2008, 2010 Red Hat, Inc. All rights reserved.
+#
+# This copyrighted material is made available to anyone wishing to use,
+# modify, copy, or redistribute it subject to the terms and conditions
+# of the GNU General Public License v.2.
+#
+# 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+export LVM_SUPPRESS_FD_WARNINGS=1
+
+ME=$(basename "$0")
+warn() { echo >&2 "$ME: $@"; }
+
+unsafe_losetup_()
+{
+  f=$1
+
+  test -n "$G_dev_" \
+    || error "Internal error: unsafe_losetup_ called before init_root_dir_"
+
+  # Iterate through $G_dev_/loop{,/}{0,1,2,3,4,5,6,7,8,9}
+  for slash in '' /; do
+    for i in 0 1 2 3 4 5 6 7 8 9; do
+      dev=$G_dev_/loop$slash$i
+      losetup $dev > /dev/null 2>&1 && continue;
+      losetup "$dev" "$f" > /dev/null && { echo "$dev"; return 0; }
+      break
+    done
+  done
+
+  return 1
+}
+
+loop_setup_()
+{
+  file=$1
+  dd if=/dev/zero of="$file" bs=1M count=1 seek=1000 > /dev/null 2>&1 \
+    || { warn "loop_setup_ failed: Unable to create tmp file $file"; return 1; }
+
+  # NOTE: this requires a new enough version of losetup
+  dev=$(unsafe_losetup_ "$file" 2>/dev/null) \
+    || { warn "loop_setup_ failed: Unable to create loopback device"; return 1; }
+
+  echo "$dev"
+  return 0;
+}
+
+# set up private /dev and /etc
+lvm_init_root_dir_()
+{
+  test -z "$test_dir_" \
+    && skip_ "Internal error: called lvm_init_root_dir_ before" \
+      "defining \$test_dir_"
+
+  # Define these two globals.
+  G_root_=$test_dir_/root
+  G_dev_=$G_root_/dev
+
+  export LVM_SYSTEM_DIR=$G_root_/etc
+  export DM_DEV_DIR=$G_dev_
+
+  # Only the first caller does anything.
+  mkdir -p $G_root_/etc $G_dev_ $G_dev_/mapper $G_root_/lib
+  for i in 0 1 2 3 4 5 6 7; do
+    mknod $G_root_/dev/loop$i b 7 $i
+  done
+  for i in $abs_top_builddir/dmeventd/mirror/*.so \
+           $abs_top_builddir/dmeventd/snapshot/*.so
+  do
+    # NOTE: This check is necessary because the loop above will give us the
+    # value "$abs_top_builddir/dmeventd/mirror/*.so" if no files ending in
+    # 'so' exist.  This is the best way I could quickly determine to skip
+    # over this bogus value.
+    if [ -f $i ]; then
+      echo Setting up symlink from $i to $G_root_/lib
+      ln -s $i $G_root_/lib
+    fi
+  done
+  cat > $G_root_/etc/lvm.conf <<-EOF
+  devices {
+    dir = "$G_dev_"
+    scan = "$G_dev_"
+    filter = [ "a/loop/", "a/mirror/", "a/mapper/", "r/.*/" ]
+    cache_dir = "$G_root_/etc"
+    sysfs_scan = 0
+  }
+  log {
+    verbose = $verboselevel
+    syslog = 0
+    indent = 1
+  }
+  backup {
+    backup = 0
+    archive = 0
+  }
+  global {
+    library_dir = "$G_root_/lib"
+  }
+EOF
+}
diff --git a/tests/t0000-basic.sh b/tests/t0000-basic.sh
new file mode 100755 (executable)
index 0000000..4d6deeb
--- /dev/null
@@ -0,0 +1,78 @@
+#!/bin/sh
+# Ensure that a simple command using -s succeeds with no prompt
+
+# Copyright (C) 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+
+parted --version || fail_ 'You have not built parted yet.'
+
+# FIXME: is id -u portable enough?
+uid=`id -u` || uid=1
+
+# create a file of size N bytes
+N=1M
+dev=loop-file
+
+# create the test file
+dd if=/dev/null of=$dev bs=1 seek=$N 2> /dev/null || fail=1
+
+# run parted -s FILE mklabel msdos
+parted -s $dev mklabel msdos > out 2>&1 || fail=1
+compare out /dev/null || fail=1
+
+# ----------------------------------------------
+# Now, ensure that a simple mklabel command succeeds.
+# Since there's no -s option, there are prompts -- sometimes.
+
+# erase the left-over label
+dd if=/dev/zero of=$dev bs=4K count=1 conv=notrunc 2> /dev/null || fail=1
+
+# First iteration works with no prompting, since there is no preexisting label.
+# run parted mklabel (without -s) on a blank disk
+parted $dev mklabel msdos > out 2>&1 || fail=1
+
+# create expected output file
+emit_superuser_warning > exp || fail=1
+
+# check its "interactive" output
+compare out exp || fail=1
+
+# create interactive input
+printf 'y\n' > in || fail=1
+
+# Now that there's a label, rerunning the same command is interactive.
+# rerun that same command, but now with a preexisting label
+parted ---pretend-input-tty $dev mklabel msdos < in > out 2>&1 || fail=1
+
+# Transform the actual output, to avoid spurious differences when
+# $PWD contains a symlink-to-dir.  Also, remove the ^M      ...^M bogosity.
+# normalize the actual output
+mv out o2 && sed -e "s,on /.*/$dev,on DEVICE,;s,\r   *\r,,;s, $,," \
+                      -e "s,^.*/lt-parted: ,parted: ," o2 > out
+
+# Create expected output file.
+{ emit_superuser_warning > exp; } || fail=1
+cat <<EOF >> exp || fail=1
+Warning: The existing disk label on DEVICE will be destroyed and all\
+ data on this disk will be lost. Do you want to continue?
+Yes/No? y
+EOF
+
+# check its output -- slightly different here, due to prompts
+compare out exp || fail=1
+
+Exit $fail
diff --git a/tests/t0001-tiny.sh b/tests/t0001-tiny.sh
new file mode 100755 (executable)
index 0000000..c6434e4
--- /dev/null
@@ -0,0 +1,47 @@
+#!/bin/sh
+# operate on a very small (1-sector) "disk"
+
+# Copyright (C) 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+
+ss=$sector_size_
+dev=loop-file
+
+for opt in '' -s; do
+
+  dd if=/dev/null of=$dev bs=1 seek=$ss || framework_failure
+
+  # create an msdos partition table:
+  # Before parted-2.1, without -s, this would fail with a bogus diagnostic:
+  # Error: Success during read on .../tests/loop-file
+  # Retry/Ignore/Cancel? ^C
+  parted $opt $dev mklabel msdos ---pretend-input-tty </dev/null > out 2>&1 \
+      || fail=1
+  # expect no output
+  sed 's/.*WARNING: You are not superuser.*//;/^$/d' out > k && mv k out \
+      || fail=1
+  # When run as root, there are just curses-related control chars. Remove them.
+  sed 's/^.\{1,12\}$//;/^$/d' out > k && mv k out \
+      || fail=1
+  compare out /dev/null || fail=1
+
+  parted -s $dev p || fail=1
+  rm -f $dev
+
+done
+
+Exit $fail
diff --git a/tests/t0010-script-no-ctrl-chars.sh b/tests/t0010-script-no-ctrl-chars.sh
new file mode 100755 (executable)
index 0000000..49b3ff1
--- /dev/null
@@ -0,0 +1,39 @@
+#!/bin/sh
+# Ensure that printing with -s outputs no readline control chars
+
+# Copyright (C) 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+
+ss=$sector_size_
+n_sectors=5000
+dev=loop-file
+
+dd if=/dev/null of=$dev bs=$ss seek=$n_sectors || fail=1
+
+parted -s $dev mklabel msdos > out 2>&1 || fail=1
+# expect no output
+compare out /dev/null || fail=1
+
+# print partition table in --script mode
+TERM=xterm parted -m -s $dev u s p > out 2>&1 || fail=1
+
+sed "s,.*/$dev:,$dev:," out > k && mv k out || fail=1
+printf "BYT;\n$dev:${n_sectors}s:file:$ss:$ss:msdos:;\n" > exp || fail=1
+
+compare out exp || fail=1
+
+Exit $fail
diff --git a/tests/t0100-print.sh b/tests/t0100-print.sh
new file mode 100755 (executable)
index 0000000..d09b8ed
--- /dev/null
@@ -0,0 +1,58 @@
+#!/bin/sh
+# the most basic 'print' test
+# Copyright (C) 2007, 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+ss=$sector_size_
+
+ss=$sector_size_
+dev=loop-file
+
+{
+  cat <<EOF
+Model:  (file)
+Disk .../$dev: 8s
+Sector size (logical/physical): ${ss}B/${ss}B
+Partition Table: msdos
+
+Number  Start  End  Size  Type  File system  Flags
+
+EOF
+} > exp || framework_failure
+
+# Using msdos_magic='\x55\xaa' looks nicer, but isn't portable.
+# dash's builtin printf doesn't recognize such \xHH hexadecimal escapes.
+msdos_magic='\125\252'
+
+# The extra 3KB+ zero bytes at the end are to avoid triggering a failure
+# on linux-2.6.8 that's probably related to opening with O_DIRECT.
+# Note that the minimum number of appended zero bytes required to avoid
+# the failure was 3465.  Here, we append a little more to make the resulting
+# file have a total size of exactly 8 sectors.
+# setup: create the most basic partition table, manually
+{ dd if=/dev/zero  bs=510 count=1; printf "$msdos_magic"
+  dd if=/dev/zero bs=$(expr 8 '*' $ss - 510) count=1; } > $dev || fail=1
+
+# print the empty table' \
+parted -s $dev unit s print >out 2>&1 || fail=1
+
+# prepare actual and expected output' \
+mv out o2 && sed "s,^Disk .*/$dev:,Disk .../$dev:," o2 > out || fail=1
+
+# check for expected output
+compare out exp || fail=1
+
+Exit $fail
diff --git a/tests/t0101-print-empty.sh b/tests/t0101-print-empty.sh
new file mode 100755 (executable)
index 0000000..3e77850
--- /dev/null
@@ -0,0 +1,47 @@
+#!/bin/sh
+# test 'parted $dev print' on empty device (without label)
+# Copyright (C) 2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+ss=$sector_size_
+
+ss=$sector_size_
+dev=loop-file
+
+{
+  cat <<EOF
+Error: .../$dev: unrecognised disk label
+Model:  (file)
+Disk .../$dev: 8s
+Sector size (logical/physical): ${ss}B/${ss}B
+Partition Table: unknown
+EOF
+} > exp || framework_failure
+
+# create 'empty' device
+dd if=/dev/zero of=$dev bs=$(expr 8 '*' $ss) count=1 >/dev/null 2>&1 || fail=1
+
+# print the empty table
+parted -s $dev unit s print >out 2>&1 || fail=1
+
+# prepare actual and expected output
+mv out o2 && sed "s,^Disk .*/$dev:,Disk .../$dev:,; \
+                  s,^Error: .*/$dev:,Error: .../$dev:," o2 > out || fail=1
+
+# check for expected output
+compare out exp || fail=1
+
+Exit $fail
diff --git a/tests/t0200-gpt.sh b/tests/t0200-gpt.sh
new file mode 100755 (executable)
index 0000000..5326532
--- /dev/null
@@ -0,0 +1,49 @@
+#!/bin/sh
+# Ensure that printing a GPT partition table does not modify it.
+
+# Copyright (C) 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+
+N=2M
+dev=loop-file
+# create a file large enough to hold a GPT partition table
+dd if=/dev/null of=$dev bs=1 seek=$N || framework_failure
+
+# create a GPT partition table
+parted -s $dev mklabel gpt > out 2>&1 || fail=1
+# expect no output
+compare out /dev/null || fail=1
+
+# save a copy of the original primary GPT table
+dd if=$dev of=before count=1 skip=1 || fail=1
+
+# extend the backing file by 1 byte
+printf x >> $dev || fail=1
+
+# use parted simply to print the partition table
+parted -m -s $dev u s p > out 2> err || fail=1
+# don't bother comparing stdout
+# expect no stderr
+compare err /dev/null || fail=1
+
+# extract the primary GPT table again
+dd if=$dev of=after count=1 skip=1 || fail=1
+
+# compare partition tables (they had better be identical)
+compare before after || fail=1
+
+Exit $fail
diff --git a/tests/t0201-gpt.sh b/tests/t0201-gpt.sh
new file mode 100755 (executable)
index 0000000..60f284e
--- /dev/null
@@ -0,0 +1,39 @@
+#!/bin/sh
+# avoid failed assertion when creating a GPT on top of an old one for a
+# larger device
+
+# Copyright (C) 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+
+dev=loop-file
+# create a backing file large enough for a GPT partition table
+dd if=/dev/null of=$dev seek=4001 2> /dev/null || fail=1
+
+# create a GPT partition table
+parted -s $dev mklabel gpt > out 2>&1 || fail=1
+# expect no output
+compare out /dev/null || fail=1
+
+# shrink the backing file
+dd if=/dev/null of=$dev seek=4000 2> /dev/null || fail=1
+
+# create a new GPT table on top of the shrunken backing file
+parted -s $dev mklabel gpt > out 2>&1 || fail=1
+# expect no output
+compare out /dev/null || fail=1
+
+Exit $fail
diff --git a/tests/t0202-gpt-pmbr.sh b/tests/t0202-gpt-pmbr.sh
new file mode 100755 (executable)
index 0000000..d8973bb
--- /dev/null
@@ -0,0 +1,49 @@
+#!/bin/sh
+# Preserve first 446B of the Protected MBR for gpt partitions.
+
+# Copyright (C) 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+
+dev=loop-file
+bootcode_size=446
+
+dd if=/dev/null of=$dev bs=1 seek=1M || framework_failure
+
+# create a GPT partition table
+parted -s $dev mklabel gpt > out 2>&1 || fail=1
+# expect no output
+compare out /dev/null || fail=1
+
+# Fill the first $bootcode_size bytes with 0's.
+# This affects only the protective MBR, so doesn't affect validity of gpt table.
+printf %0${bootcode_size}d 0 > in || fail=1
+dd of=$dev bs=1 seek=0 count=$bootcode_size conv=notrunc < in || fail=1
+
+parted -s $dev p || fail=1
+
+# create a GPT partition table on top of the existing one.
+parted -s $dev mklabel gpt > out 2>&1 || fail=1
+# expect no output
+compare out /dev/null || fail=1
+
+# Extract the first $bootcode_size Bytes after GPT creation
+dd if=$dev of=after bs=1c count=$bootcode_size > /dev/null 2>&1 || fail=1
+
+# Compare the before and after
+compare in after || fail=1
+
+Exit $fail
diff --git a/tests/t0205-gpt-list-clobbers-pmbr.sh b/tests/t0205-gpt-list-clobbers-pmbr.sh
new file mode 100644 (file)
index 0000000..2081ac7
--- /dev/null
@@ -0,0 +1,51 @@
+#!/bin/sh
+# Ensure that printing a GPT partition table does not modify the pMBR.
+# Due to a bug in parted-2.1, "parted /dev/... print" would do just that.
+# Not a problem for most, but if you have a hybrid, e.g., gptsync'd
+# GPT/MBR table, merely listing the table with Parted-2.1 would clobber
+# the MBR part.
+
+# Copyright (C) 2010-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+
+ss=$sector_size_
+n_sectors=400
+dev=dev-file
+
+dd if=/dev/null of=$dev bs=$ss seek=$n_sectors || fail=1
+parted -s $dev mklabel gpt                     || fail=1
+parted -s $dev mkpart p1 101s 150s             || fail=1
+parted -s $dev mkpart p2 151s 200s             || fail=1
+parted -s $dev mkpart p3 201s 250s             || fail=1
+
+parted -m -s $dev u s p                        || fail=1
+
+# Write non-NUL bytes all over the MBR, so we're likely to see any change.
+# However, be careful to leave the type of the first partition, 0xEE,
+# as well as the final two magic bytes.
+printf '%0450d\xee%059d\x55\xaa' 0 0 | dd of=$dev count=1 conv=notrunc || fail=1
+
+dd if=$dev of=before count=1 || fail=1
+
+chmod a-w $dev
+parted -m -s $dev u s p || fail=1
+
+dd if=$dev of=after count=1 || fail=1
+
+cmp before after || fail=1
+
+Exit $fail
diff --git a/tests/t0206-gpt-print-with-corrupt-primary-clobbers-pmbr.sh b/tests/t0206-gpt-print-with-corrupt-primary-clobbers-pmbr.sh
new file mode 100755 (executable)
index 0000000..4063a92
--- /dev/null
@@ -0,0 +1,48 @@
+#!/bin/sh
+# Ensure that printing a GPT partition table does not modify the pMBR.
+# Much like t0205, but with the addition of a corrupt PTE in primary table,
+# "parted $device print" would modify $device.
+
+# Copyright (C) 2010-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+
+ss=$sector_size_
+n_sectors=400
+dev=dev-file
+
+dd if=/dev/null of=$dev bs=$ss seek=$n_sectors || fail=1
+parted -s $dev mklabel gpt                     || fail=1
+parted -s $dev mkpart p1 128s 255s             || fail=1
+
+parted -m -s $dev u s p                        || fail=1
+
+# Write non-NUL bytes all over the MBR, so we're likely to see any change.
+# However, be careful to leave the type of the first partition, 0xEE,
+# as well as the final two magic bytes.
+printf '%0450d\xee%059d\x55\xaa' 0 0 | dd of=$dev count=1 conv=notrunc || fail=1
+
+dd if=$dev of=before count=1 || fail=1
+
+orig_byte=$(gpt_corrupt_primary_table_ $dev $ss) || fail=1
+
+parted -m -s $dev u s p || fail=1
+
+dd if=$dev of=after count=1 || fail=1
+
+cmp before after || fail=1
+
+Exit $fail
diff --git a/tests/t0207-IEC-binary-notation.sh b/tests/t0207-IEC-binary-notation.sh
new file mode 100644 (file)
index 0000000..2228ce1
--- /dev/null
@@ -0,0 +1,40 @@
+#!/bin/sh
+# Show how parted treats a starting or ending sector number w/IEC units.
+
+# Copyright (C) 2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+
+ss=$sector_size_
+n_sectors=3000
+dev=dev-file
+
+dd if=/dev/null of=$dev bs=$ss seek=$n_sectors || fail=1
+parted --align=none -s $dev mklabel gpt mkpart p1 $((64*1024))B $((1024*1024))B \
+    > err 2>&1 || fail=1
+compare err /dev/null || fail=1
+parted -m -s $dev u s p > exp || fail=1
+
+rm $dev
+dd if=/dev/null of=$dev bs=$ss seek=$n_sectors || fail=1
+parted --align=none -s $dev mklabel gpt mkpart p1 64KiB 1MiB \
+    > err 2>&1 || fail=1
+compare err /dev/null || fail=1
+parted -m -s $dev u s p > out || fail=1
+
+compare out exp || fail=1
+
+Exit $fail
diff --git a/tests/t0220-gpt-msftres.sh b/tests/t0220-gpt-msftres.sh
new file mode 100755 (executable)
index 0000000..1247ee0
--- /dev/null
@@ -0,0 +1,75 @@
+#!/bin/sh
+# gpt default "flag" for a partition must not be msftres
+
+# Copyright (C) 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+
+ss=$sector_size_
+dev=loop-file
+
+# FIXME: should be able to use "ufs" here, too, but that doesn't work.
+fs_types='
+ext2
+fat16
+fat32
+hfs
+hfs+
+hfsx
+linux-swap
+NTFS
+reiserfs
+'
+
+start=2048
+part_size=2048
+n_types=$(echo "$fs_types"|wc -w)
+
+# Create a "disk" with enough room for one partition per FS type,
+# and the overhead required for a GPT partition table.
+# 32 is the number of 512-byte sectors required to accommodate the
+# minimum size of the secondary GPT header at the end of the disk.
+n_sectors=$(expr $start + $n_types \* $part_size + 1 + 32)
+
+# create a test file large enough for one partition per FS type
+dd if=/dev/null of=$dev bs=$ss seek=$n_sectors || fail=1
+
+# create a gpt partition table
+parted -s $dev mklabel gpt > out 2>&1 || fail=1
+# expect no output
+compare out /dev/null || fail=1
+
+printf "BYT;\n$dev:${n_sectors}s:file:$ss:$ss:gpt:;\n" > exp
+i=1
+for type in $fs_types; do
+  end=$(expr $start + $part_size - 1)
+  echo "$i:${start}s:${end}s:${part_size}s::$type:;" >> exp || fail=1
+  parted -s $dev mkpart primary $type ${start}s ${end}s > err 2>&1 || fail=1
+  compare err /dev/null || fail=1
+  parted -s $dev name $i $type > err 2>&1 || fail=1
+  compare err /dev/null || fail=1
+  start=$(expr $end + 1)
+  i=$(expr $i + 1)
+done
+
+# print partition table
+parted -m -s $dev u s p > out 2>&1 || fail=1
+
+sed "s,.*/$dev:,$dev:," out > k && mv k out && ok=1 || ok=0
+# match against expected output
+test $ok = 1 && { compare out exp || fail=1; }
+
+Exit $fail
diff --git a/tests/t0250-gpt.sh b/tests/t0250-gpt.sh
new file mode 100755 (executable)
index 0000000..5f42440
--- /dev/null
@@ -0,0 +1,42 @@
+#!/bin/sh
+# very basic GPT table
+# Copyright (C) 2008-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+
+dev=loop-file
+nb=512
+n_sectors=$(expr $nb '*' 512 / $sector_size_)
+
+# create zeroed device
+dd if=/dev/zero bs=512 count=$nb of=$dev || fail=1
+
+# create gpt label
+parted -s $dev mklabel gpt > empty 2>&1 || fail=1
+
+# ensure there was no output
+compare /dev/null empty || fail=1
+
+# print the empty table
+parted -m -s $dev unit s print > t 2>&1 || fail=1
+sed "s,.*/$dev:,$dev:," t > out || fail=1
+
+# check for expected output
+printf "BYT;\n$dev:${n_sectors}s:file:$sector_size_:$sector_size_:gpt:;\n" \
+  > exp || fail=1
+compare exp out || fail=1
+
+Exit $fail
diff --git a/tests/t0280-gpt-corrupt.sh b/tests/t0280-gpt-corrupt.sh
new file mode 100755 (executable)
index 0000000..df54817
--- /dev/null
@@ -0,0 +1,96 @@
+#!/bin/sh
+# corrupt a GPT table; ensure parted takes notice
+
+# Copyright (C) 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+
+dev=loop-file
+
+ss=$sector_size_
+n_sectors=5000
+
+dd if=/dev/null of=$dev bs=$ss seek=$n_sectors || fail=1
+
+# create gpt label
+parted -s $dev mklabel gpt > empty 2>&1 || fail=1
+compare /dev/null empty || fail=1
+
+# print the empty table
+parted -m -s $dev unit s print > t 2>&1 || fail=1
+sed "s,.*/$dev:,$dev:," t > out || fail=1
+
+# check for expected output
+printf "BYT;\n$dev:${n_sectors}s:file:$sector_size_:$sector_size_:gpt:;\n" \
+  > exp || fail=1
+compare exp out || fail=1
+
+# create a partition
+parted -s $dev mkpart sw linux-swap 2048s 4095s > empty 2>&1 || fail=1
+compare /dev/null empty || fail=1
+
+# We're going to change the name of the first partition,
+# thus invalidating the PartitionEntryArrayCRC32 checksum.
+orig_byte=$(gpt_corrupt_primary_table_ $dev $ss) || fail=1
+
+# printing the table must succeed, but with a scary diagnostic.
+parted -s $dev print > err 2>&1 || fail=1
+grep Error: err > k && mv k err || fail=1
+
+# check for expected diagnostic
+echo 'Error: The primary GPT table is corrupt, but the backup appears OK,' \
+    'so that will be used.' > exp || fail=1
+compare exp err || fail=1
+
+# ----------------------------------------------------------
+# Now, restore things, and corrupt the MyLBA in the alternate GUID table.
+
+# Restore original byte
+gpt_restore_primary_table_ $dev $ss "$orig_byte" || fail=1
+
+# print the table
+parted -s $dev print > out 2> err || fail=1
+compare /dev/null err || fail=1
+
+# The MyLBA member of the alternate table is in the last sector,
+# $n_sectors, 8-byte field starting at offset 24.
+alt_my_lba_offset=$(expr $n_sectors \* $ss - $ss + 24)
+# get the first byte of MyLBA
+byte=$(peek_ $dev $alt_my_lba_offset) || fail=1
+
+# Perturb it.
+test x"$byte" = xA && new_byte=B || new_byte=A
+
+# Replace good byte with the bad one.
+poke_ $dev $alt_my_lba_offset "$new_byte" || fail=1
+
+# attempting to set partition name must print a diagnostic
+parted -m -s $dev name 1 foo > err 2>&1 || fail=1
+
+# check for expected diagnostic
+echo 'Error: The backup GPT table is corrupt, but the primary appears OK,' \
+    'so that will be used.' > exp || fail=1
+compare exp err || fail=1
+
+# corruption is fixed; printing the table now elicits no diagnostic
+parted -m -s $dev u s print > out 2>&1 || fail=1
+
+# check for expected output
+printf "BYT;\nfile\n1:2048s:4095s:2048s::foo:;\n" > exp || fail=1
+sed "s/.*gpt:;/file/" out > k && mv k out || fail=1
+compare exp out || fail=1
+
+Exit $fail
diff --git a/tests/t0300-dos-on-gpt.sh b/tests/t0300-dos-on-gpt.sh
new file mode 100755 (executable)
index 0000000..4b5d426
--- /dev/null
@@ -0,0 +1,38 @@
+#!/bin/sh
+# avoid segfault creating a dos PT on top of a gpt one
+
+# Copyright (C) 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+
+PARTED_SECTOR_SIZE=4096
+export PARTED_SECTOR_SIZE
+
+dev=loop-file
+# create a backing file large enough for a GPT partition table
+dd if=/dev/null of=$dev seek=4001 2> /dev/null || framework_failure
+
+# create a GPT partition table
+parted -s $dev mklabel gpt > out 2>&1 || fail=1
+# expect no output
+compare out /dev/null || fail=1
+
+# create a DOS partition table on top of it
+parted -s $dev mklabel msdos > out 2>&1 || fail=1
+# expect no output
+compare out /dev/null || fail=1
+
+Exit $fail
diff --git a/tests/t0400-loop-clobber-infloop.sh b/tests/t0400-loop-clobber-infloop.sh
new file mode 100644 (file)
index 0000000..a7bf7a2
--- /dev/null
@@ -0,0 +1,35 @@
+#!/bin/sh
+# do not infloop in loop_clobber
+
+# Copyright (C) 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+
+( mkswap -V ) >/dev/null 2>&1 || skip_ "no mkswap program"
+
+N=1M
+dev=loop-file
+dd if=/dev/null of=$dev bs=1 seek=$N || fail=1
+
+mkswap $dev || fail=1
+
+# There was a small interval (no release) during which this would infloop.
+# create a dos partition table
+parted -s $dev mklabel msdos > out 2>&1 || fail=1
+
+compare out /dev/null || fail=1
+
+Exit $fail
diff --git a/tests/t0500-dup-clobber.sh b/tests/t0500-dup-clobber.sh
new file mode 100644 (file)
index 0000000..46a67f8
--- /dev/null
@@ -0,0 +1,26 @@
+#!/bin/sh
+# Drive the dup-clobber program.
+
+# Copyright (C) 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+
+PATH="..:$PATH"
+export PATH
+
+dup-clobber || fail=1
+
+Exit $fail
diff --git a/tests/t1100-busy-label.sh b/tests/t1100-busy-label.sh
new file mode 100755 (executable)
index 0000000..f388308
--- /dev/null
@@ -0,0 +1,83 @@
+#!/bin/sh
+# partitioning (parted -s DEV mklabel) a busy disk must fail.
+
+# Copyright (C) 2007-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+require_root_
+require_scsi_debug_module_
+ss=$sector_size_
+
+scsi_debug_setup_ sector_size=$ss dev_size_mb=90 > dev-name ||
+  skip_ 'failed to create scsi_debug device'
+dev=$(cat dev-name)
+
+parted -s "$dev" mklabel msdos mkpart primary fat32 1 40 > out 2>&1 || fail=1
+compare out /dev/null || fail=1
+mkfs.vfat ${dev}1 || skip_ "mkfs.vfat failed"
+
+mount_point="`pwd`/mnt"
+
+# Be sure to unmount upon interrupt, failure, etc.
+cleanup_fn_() { umount "${dev}1" > /dev/null 2>&1; }
+
+# There's a race condition here: on udev-based systems, the partition#1
+# device, ${dev}1 (i.e., /dev/sdd1) is not created immediately, and
+# without some delay, this mount command would fail.  Using a flash card
+# as $dev, the loop below typically iterates 7-20 times.
+
+# create mount point dir. and mount the just-created partition on it
+mkdir $mount_point || fail=1
+i=0; while :; do test -e "${dev}1" && break; test $i = 90 && break;
+  i=$(expr $i + 1); done;
+mount "${dev}1" $mount_point || fail=1
+
+# now that a partition is mounted, mklabel attempt must fail
+parted -s "$dev" mklabel msdos > out 2>&1; test $? = 1 || fail=1
+
+# create expected output file
+echo "Error: Partition(s) on $dev are being used." > exp
+compare out exp || fail=1
+
+# Adding a partition must succeed, even though another
+# on this same device is mounted (active).
+parted -s "$dev" mkpart primary fat32 41 85 > out 2>&1 || fail=1
+compare out /dev/null || fail=1
+parted -s "$dev" u s print
+
+# ==================================================
+# Repeat the test in interactive mode.
+# create input file
+echo c > in
+
+# as above, this mklabel attempt must fail
+parted ---pretend-input-tty "$dev" mklabel msdos < in > out 2>&1
+test $? = 1 || fail=1
+
+cat <<EOF > exp || fail=1
+Warning: Partition(s) on $dev are being used.
+Ignore/Cancel? c
+EOF
+
+# Transform the actual output, removing ^M   ...^M.
+# normalize the actual output
+mv out o2 && sed -e 's,\r   *\r,,;s, $,,;s/^.*Warning/Warning/' \
+                 -e 's,^.*/lt-parted: ,parted: ,' o2 > out
+
+# check for expected failure diagnostic
+compare out exp || fail=1
+
+Exit $fail
diff --git a/tests/t1101-busy-partition.sh b/tests/t1101-busy-partition.sh
new file mode 100755 (executable)
index 0000000..116d326
--- /dev/null
@@ -0,0 +1,68 @@
+#!/bin/sh
+# test for Debian bug #582818 (http://bugs.debian.org/582818); forbid
+# the removal of a mounted partition.
+
+# Copyright (C) 2010-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+test "$VERBOSE" = yes && parted --version
+
+require_root_
+require_scsi_debug_module_
+
+# create memory-backed device
+scsi_debug_setup_ dev_size_mb=80 > dev-name ||
+  skip_ 'failed to create scsi_debug device'
+dev=$(cat dev-name)
+
+cat <<EOF > exp-error || framework_failure
+Error: Partition ${dev}2 is being used. You must unmount it before you modify it with Parted.
+EOF
+
+parted -s "$dev" mklabel msdos > out 2>&1 || fail=1
+
+# expect no output
+compare out /dev/null || fail=1
+
+parted -s "$dev" mkpart primary fat32 1 40 > out 2>&1 || fail=1
+compare out /dev/null || fail=1
+
+parted -s "$dev" mkpart primary fat32 40 80 > out 2>&1 || fail=1
+compare out /dev/null || fail=1
+
+# wait for new partition device to appear
+wait_for_dev_to_appear_ ${dev}2 || fail_ ${dev}2 did not appear
+
+mkfs.vfat -F 32 ${dev}2 || skip_ mkfs.vfat failed
+
+# be sure to unmount upon interrupt, failure, etc.
+cleanup_fn_() { umount "${dev}2" > /dev/null 2>&1; }
+
+mount_point=$(pwd)/mnt
+
+mkdir $mount_point || fail=1
+mount "${dev}2" "$mount_point" || fail=1
+
+# Removal of unmounted partition must succeed.
+parted -s "$dev" rm 1 > out 2>&1 || fail=1
+
+# Removal of mounted partition must fail.
+parted -s "$dev" rm 2 > out 2>&1 && fail=1
+
+# expect error
+compare out exp-error || fail=1
+
+Exit $fail
diff --git a/tests/t1700-probe-fs.sh b/tests/t1700-probe-fs.sh
new file mode 100755 (executable)
index 0000000..21e72f9
--- /dev/null
@@ -0,0 +1,57 @@
+#!/bin/sh
+# Probe Ext2, Ext3 and Ext4 file systems
+
+# Copyright (C) 2008-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+require_512_byte_sector_size_
+
+dev=loop-file
+ss=$sector_size_
+
+for type in ext2 ext3 ext4 nilfs2; do
+
+  ( mkfs.$type -V ) >/dev/null 2>&1 \
+      || { warn_ "$ME: no $type support"; continue; }
+
+  case $type in ext*) n_sectors=8000 force=-F;;
+      *) n_sectors=$((257*1024)) force=;; esac
+
+  # create an $type file system
+  dd if=/dev/zero of=$dev bs=$ss count=$n_sectors >/dev/null || fail=1
+  mkfs.$type $force $dev || { warn_ $ME: mkfs.$type failed; fail=1; continue; }
+
+  # probe the $type file system
+  parted -m -s $dev u s print >out 2>&1 || fail=1
+  grep '^1:.*:'$type'::;$' out || { cat out; fail=1; }
+
+done
+
+# Some features should indicate ext4 by themselves.
+for feature in uninit_bg flex_bg; do
+  # create an ext3 file system
+  dd if=/dev/zero of=$dev bs=1024 count=4096 >/dev/null || fail=1
+  mkfs.ext3 -F $dev >/dev/null || skip_ "mkfs.ext3 failed"
+
+  # set the feature
+  tune2fs -O $feature $dev || skip_ "tune2fs failed"
+
+  # probe the file system, which should now be ext4
+  parted -m -s $dev u s print >out 2>&1 || fail=1
+  grep '^1:.*:ext4::;$' out || fail=1
+done
+
+Exit $fail
diff --git a/tests/t2200-dos-label-recog.sh b/tests/t2200-dos-label-recog.sh
new file mode 100755 (executable)
index 0000000..f62e2ad
--- /dev/null
@@ -0,0 +1,52 @@
+#!/bin/sh
+# improved MSDOS partition-table recognition
+
+# Copyright (C) 2008-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+
+######################################################################
+# With vestiges of a preceding FAT file system boot sector in the MBR,
+# parted 1.8.8.1.29 and earlier would fail to recognize a DOS
+# partition table.
+######################################################################
+ss=$sector_size_
+N=8192
+dev=loop-file
+
+# create a file to simulate the underlying device
+dd if=/dev/null of=$dev bs=$ss seek=$N 2> /dev/null || fail=1
+
+# label the test disk
+parted -s $dev mklabel msdos > out 2>&1 || fail=1
+compare out /dev/null || fail=1 # expect no output
+
+# create two partitions
+parted -s $dev mkpart primary 2048s 4095s \
+               mkpart primary 4096s 8191s > out 2>&1 || fail=1
+compare out /dev/null || fail=1 # expect no output
+
+# write "FAT" where it would cause trouble
+printf FAT | dd bs=1c seek=82 count=3 of=$dev conv=notrunc || fail=1
+
+# print the partition table
+parted -m -s $dev unit s p > out || fail=1
+tail -2 out > k && mv k out || fail=1
+printf "1:2048s:4095s:2048s:::;\n2:4096s:8191s:4096s:::;\n" > exp || fail=1
+
+compare out exp || fail=1
+
+Exit $fail
diff --git a/tests/t2300-dos-label-extended-bootcode.sh b/tests/t2300-dos-label-extended-bootcode.sh
new file mode 100755 (executable)
index 0000000..dcb9790
--- /dev/null
@@ -0,0 +1,59 @@
+#!/bin/sh
+# Ensure parted preserves bootcode in extended partition.
+
+# Copyright (C) 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+
+require_512_byte_sector_size_
+
+dev=loop-file
+bootcode_size=446
+
+# Create the test file
+dd if=/dev/zero of=$dev bs=1M count=4 || fail=1
+
+# Create msdos label
+parted -s $dev mklabel msdos > out 2>&1 || fail=1
+compare out /dev/null || fail=1 # Expect no output
+
+# Create extended partition
+parted -s $dev mkpart extended 2048s 8191s > out 2>&1 || fail=1
+compare out /dev/null || fail=1 # Expect no output
+
+# Create logical partition
+parted -s $dev mkpart logical 4096s 8191s > out 2>&1 || fail=1
+compare out /dev/null || fail=1 # Expect no output
+
+# Install fake bootcode
+printf %0${bootcode_size}d 0 > in || fail=1
+dd if=in of=$dev bs=1c seek=1M count=$bootcode_size \
+  conv=notrunc > /dev/null 2>&1 || fail=1
+
+# Save fake bootcode for later comparison
+dd if=$dev of=before bs=1 skip=1M count=$bootcode_size || fail=1
+
+# Do something to the label
+parted -s $dev rm 5 > out 2>&1 || fail=1
+compare out /dev/null || fail=1 # Expect no output
+
+# Extract the bootcode for comparison
+dd if=$dev of=after bs=1 skip=1M count=$bootcode_size || fail=1
+
+# Expect bootcode has not changed
+compare before after || fail=1
+
+Exit $fail
diff --git a/tests/t2310-dos-extended-2-sector-min-offset.sh b/tests/t2310-dos-extended-2-sector-min-offset.sh
new file mode 100644 (file)
index 0000000..b86c6bc
--- /dev/null
@@ -0,0 +1,66 @@
+#!/bin/sh
+# Ensure that parted leaves at least 2 sectors between the beginning
+# of an extended partition and the first logical partition.
+# Before parted-2.3, it could be made to leave just one, and that
+# would cause trouble with the Linux kernel.
+
+# Copyright (C) 2010-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+
+require_root_
+require_scsi_debug_module_
+
+# create memory-backed device
+scsi_debug_setup_ dev_size_mb=1 > dev-name ||
+  skip_ 'failed to create scsi_debug device'
+scsi_dev=$(cat dev-name)
+p1=${scsi_dev}1
+p5=${scsi_dev}5
+
+cat <<EOF > exp || framework_failure
+BYT;
+$scsi_dev:2048s:scsi:512:512:msdos:Linux scsi_debug;
+1:64s:128s:65s:::lba;
+5:66s:128s:63s:::;
+EOF
+
+cat <<EOF > err.exp || framework_failure
+Error: Error informing the kernel about modifications to partition $p5 -- Device or resource busy.  This means Linux won't know about any changes you made to $p5 until you reboot -- so you shouldn't mount it or use it in any way before rebooting.
+Error: Failed to add partition 5 (Device or resource busy)
+EOF
+
+# Create a DOS label with an extended partition starting at sector 64.
+parted -s $scsi_dev mklabel msdos || fail=1
+parted --align=min -s $scsi_dev mkpart extended 64s 128s> out 2>&1 || fail=1
+parted -m -s $scsi_dev u s print
+compare out /dev/null || fail=1
+
+# Provoke a failure by trying to create a partition that starts just
+# one sector after the start of the extended partition.
+parted --align=min -s $scsi_dev mkpart logical 65s 128s > err 2>&1 && fail=1
+compare err err.exp || fail=1
+
+# The above failed, but created the partition nonetheless.  Remove it.
+parted -s $scsi_dev rm 5 || fail=1
+
+parted --align=min -s $scsi_dev mkpart logical 66s 128s > out 2>&1 || fail=1
+compare out /dev/null || fail=1
+
+parted -m -s $scsi_dev u s print > out 2>&1
+compare out exp || fail=1
+
+Exit $fail
diff --git a/tests/t2400-dos-hfs-partition-type.sh b/tests/t2400-dos-hfs-partition-type.sh
new file mode 100644 (file)
index 0000000..38aee81
--- /dev/null
@@ -0,0 +1,40 @@
+#!/bin/sh
+# Ensure that an HFS partition in a dos table gets the right ID
+
+# Copyright (C) 2010-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+
+dev=loop-file
+ss=$sector_size_
+n_sectors=8000
+
+dd if=/dev/null of=$dev bs=$ss seek=$n_sectors || framework_failure
+
+# create a GPT partition table
+parted -s $dev mklabel msdos \
+  mkpart pri hfs  2048s 4095s \
+  mkpart pri hfs+ 4096s 6143s > out 2>&1 || fail=1
+# expect no output
+compare out /dev/null || fail=1
+
+# Extract the "type" byte of the first partition.
+od -An -j450 -tx1 -N1 $dev  > out || fail=1
+od -An -j466 -tx1 -N1 $dev >> out || fail=1
+printf ' af\n af\n' > exp || fail=1
+compare out exp || fail=1
+
+Exit $fail
diff --git a/tests/t3200-type-change.sh b/tests/t3200-type-change.sh
new file mode 100755 (executable)
index 0000000..e9b182d
--- /dev/null
@@ -0,0 +1,73 @@
+#!/bin/sh
+# Ensure parted doesn't change the type of a partition to match its FS.
+
+# Copyright (C) 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+
+require_root_
+require_scsi_debug_module_
+
+grep '^#define USE_BLKID 1' "$CONFIG_HEADER" > /dev/null ||
+  skip_ 'this system lacks a new-enough libblkid'
+
+# create memory-backed device
+scsi_debug_setup_ dev_size_mb=550 > dev-name ||
+  skip_ 'failed to create scsi_debug device'
+scsi_dev=$(cat dev-name)
+
+# Create an empty partition of "type fat32", and then create an actual
+# ext2 partition in it.  Then "unset" the already unset LVM flag on that
+# partition and ensure that parted doesn't "helpfully" change the partition
+# type to match the newly-detected FS type.
+
+parted -s $scsi_dev mklabel msdos mkpart primary fat32 64s 80000s || fail=1
+
+parted -s $scsi_dev u s p
+
+p1=${scsi_dev}1
+wait_for_dev_to_appear_ $p1 || fail=1
+mkfs.ext2 $p1 || fail=1
+
+# print as hex, the type of the first partition
+msdos_p1_type() { od -An --skip=450 -N1 -tx1 "$1"; }
+
+# Initially, it is 0x0c (FAT32).
+type=$(msdos_p1_type $scsi_dev) || fail=1
+type=${type# } # remove leading space
+case $type in
+  0c) ;;
+  *) fail_ "expected initial type of 0c (FAT32)";;
+esac
+
+parted -s $scsi_dev u s p
+parted -s $scsi_dev set 1 lvm off || fail=1
+
+# Before parted-2.1, the above would mistakenly change it to 0x83,
+# to match the file system now residing in that partition.
+type=$(msdos_p1_type $scsi_dev) || fail=1
+type=${type# } # remove leading space
+case $type in
+  0c) ;;
+  *) fail_ "parted changed the type of partition 1 from 0c to $type";;
+esac
+
+# Ensure that setting the "lvm" flag still works.
+parted -s $scsi_dev set 1 lvm on || fail=1
+parted -s $scsi_dev u s p > out || fail=1
+grep lvm out || { fail=1; cat out; }
+
+Exit $fail
diff --git a/tests/t3300-palo-prep.sh b/tests/t3300-palo-prep.sh
new file mode 100755 (executable)
index 0000000..21ebc9b
--- /dev/null
@@ -0,0 +1,44 @@
+#!/bin/sh
+# Ensure that palo and prep types work properly.
+
+# Copyright (C) 2010-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+ss=$sector_size_
+
+cat > exp <<EOF || framework_failure
+1:2048s:4095s:2048s:::palo;
+1:2048s:4095s:2048s:::prep;
+1:2048s:4095s:2048s:::palo;
+EOF
+
+dev=dev-file
+
+n_sectors=5000
+dd if=/dev/null of=$dev bs=$ss seek=$n_sectors || fail=1
+
+parted -m -s $dev mklabel msdos \
+  mkpart pri ext2 $((1*2048))s $((2*2048-1))s \
+  set 1 palo on u s print \
+  set 1 prep on u s print \
+  set 1 palo on u s print \
+    > out 2> err || fail=1
+
+grep -E '^1:2048s:4095s:2048s:::p...;$' out > k; mv k out
+
+compare out exp || fail=1
+
+Exit $fail
diff --git a/tests/t3310-flags.sh b/tests/t3310-flags.sh
new file mode 100644 (file)
index 0000000..350485c
--- /dev/null
@@ -0,0 +1,74 @@
+#!/bin/sh
+# Exercise the exclusive, single-bit flags.
+
+# Copyright (C) 2010-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+ss=$sector_size_
+dev=dev-file
+
+extract_flags()
+{
+  perl -nle '/^1:2048s:4095s:2048s::(?:P1)?:(.+);$/ and print $1' "$@"
+}
+
+for table_type in msdos gpt; do
+
+  # Extract flag names of type $table_type from the texinfo documentation.
+  case $table_type in
+      msdos) search_term=MS-DOS; pri_or_name=pri;;
+      gpt)   search_term=GPT;    pri_or_name=P1;;
+  esac
+  flags=$(sed -n '/^@node set/,/^@node/p' \
+                    "$abs_top_srcdir/doc/parted.texi" \
+                | perl -00 -ne \
+                    '/^\@item (\w+).*'"$search_term"'/s and print lc($1), "\n"')
+
+  n_sectors=5000
+  dd if=/dev/null of=$dev bs=$ss seek=$n_sectors || fail=1
+
+  parted -s $dev mklabel $table_type \
+    mkpart $pri_or_name ext2 $((1*2048))s $((2*2048-1))s \
+      > out 2> err || fail=1
+  compare out /dev/null || fail=1
+
+  for mode in on_only on_and_off ; do
+    for flag in $flags; do
+
+      # Exclude the supplemental flags.
+      # These are not boolean, like the others.
+      case $flag in boot|lba|hidden) continue;; esac
+
+      # Turn on each flag, one at a time.
+      parted -m -s $dev set 1 $flag on u s print > raw 2> err || fail=1
+      extract_flags raw > out
+      grep -F "$flag" out \
+        || { warn_ "$ME: flag not turned on: $(cat out)"; fail=1; }
+      compare err /dev/null || fail=1
+
+      if test $mode = on_and_off; then
+        # Turn it off
+        parted -m -s $dev set 1 $flag off u s print > raw 2> err || fail=1
+        extract_flags raw > out
+        grep -F "$flag" out \
+          && { warn_ "$ME: flag not turned off: $(cat out)"; fail=1; }
+        compare err /dev/null || fail=1
+      fi
+    done
+  done
+done
+
+Exit $fail
diff --git a/tests/t3400-whole-disk-FAT-partition.sh b/tests/t3400-whole-disk-FAT-partition.sh
new file mode 100755 (executable)
index 0000000..98b4309
--- /dev/null
@@ -0,0 +1,32 @@
+#!/bin/sh
+# Ensure that a whole-disk FAT partition is detected.
+
+# Copyright (C) 2010-2011 Free Software Foundation, 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, 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+require_512_byte_sector_size_
+
+dev_file=dev-file
+
+echo '1:0s:81919s:81920s:fat16::;' > exp || framework_failure_
+dd if=/dev/null of=$dev_file bs=1 seek=40M || framework_failure_
+mkfs.vfat -F 16 $dev_file || skip_ "mkfs.vfat failed"
+
+parted -m -s $dev_file u s print > out 2>&1 || fail=1
+grep '^1:' out > k; mv k out
+compare out exp || fail=1
+
+Exit $fail
diff --git a/tests/t4000-sun-raid-type.sh b/tests/t4000-sun-raid-type.sh
new file mode 100755 (executable)
index 0000000..91a9f63
--- /dev/null
@@ -0,0 +1,59 @@
+#!/bin/sh
+# RAID support on sun disk type
+
+# Copyright (C) 2008-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+# Written by Tom "spot" Callaway <tcallawa@redhat.com>
+# Derived from an example by Jim Meyering <jim@meyering.net>
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+ss=$sector_size_
+
+N=2000 # number of sectors
+dev=sun-disk-file
+exp="BYT;\n---:${N}s:file:$ss:$ss:sun:;\n1:0s:127s:128s"
+# create an empty file as a test disk
+dd if=/dev/zero of=$dev bs=${ss}c count=$N 2> /dev/null || fail=1
+
+# label the test disk as a sun disk
+parted -s $dev mklabel sun > out 2>&1 || fail=1
+compare out /dev/null || fail=1
+
+# create a single partition
+parted -s $dev unit s mkpart ext2 0s 127s > out 2>&1 || fail=1
+compare out /dev/null || fail=1
+
+# print the partition data in machine readable format
+parted -m -s $dev unit s p > out 2>&1 || fail=1
+sed "s,^.*/$dev:,---:," out > k && mv k out
+
+# check for expected values for the partition
+printf "$exp:::;\n" > exp || fail=1
+compare out exp || fail=1
+
+# set the raid flag
+parted -s $dev set 1 raid >out 2>&1 || fail=1
+compare out /dev/null || fail=1
+
+# print the partition data in machine readable format again
+parted -m -s $dev unit s p > out 2>&1 || fail=1
+sed "s,^.*/$dev:,---:," out > k && mv k out || fail=1
+
+# check for expected values (including raid flag) for the partition
+printf "$exp:::raid;\n" > exp || fail=1
+compare out exp || fail=1
+
+Exit $fail
diff --git a/tests/t4001-sun-vtoc.sh b/tests/t4001-sun-vtoc.sh
new file mode 100755 (executable)
index 0000000..0d07296
--- /dev/null
@@ -0,0 +1,52 @@
+#!/bin/sh
+# Ensure that Sun VTOC is properly initialized.
+
+# Copyright (C) 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+# Written by Karel Zak <kzak@redhat.com>
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+
+N=2M
+dev=loop-file
+# create a file to simulate the underlying device
+dd if=/dev/null of=$dev bs=1 seek=$N || framework_failure
+
+# label the test disk
+parted -s $dev mklabel sun > out 2>&1 || fail=1
+# expect no output
+compare out /dev/null || fail=1
+
+# extract version
+od -t x1 -An -j128 -N4 $dev > out || fail=1
+echo " 00 00 00 01" > exp || fail=1
+# expect it to be 00 00 00 01, not 00 00 00 00
+compare out exp || fail=1
+
+# extract nparts
+od -t x1 -An -j140 -N2 $dev > out || fail=1
+echo " 00 08" > exp || fail=1
+
+# expect it to be 00 08, not 00 00
+compare out exp || fail=1
+
+# extract sanity magic
+od -t x1 -An -j188 -N4 $dev > out || fail=1
+echo " 60 0d de ee" > exp
+# expect it to be 60 0d de ee, not 00 00 00 00
+compare out exp || fail=1
+
+Exit $fail
diff --git a/tests/t4100-dvh-partition-limits.sh b/tests/t4100-dvh-partition-limits.sh
new file mode 100755 (executable)
index 0000000..b57a1c3
--- /dev/null
@@ -0,0 +1,165 @@
+#!/bin/sh
+# enforce limits on partition start sector and length
+
+# Copyright (C) 2008-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+require_root_
+require_xfs_
+ss=$sector_size_
+
+# On a 32-bit system, we must skip this test when $ss >= 4096.
+# Otherwise, due to an inherent 32-bit-XFS limit, dd would fail to
+# create the file of size > 16TiB
+if test $(uname -m) != x86_64; then
+  test $ss -le 2048 || skip_ 'this test works only on a 64-bit system'
+fi
+
+####################################################
+# Create and mount a file system capable of dealing with >=2TB files.
+# We must be able to create a file with an apparent length of 2TB or larger.
+# It needn't be a large file system.
+fs=fs_file
+mp=`pwd`/mount-point
+n=4096
+
+# create an XFS file system
+dd if=/dev/zero of=$fs bs=1MB count=2 seek=20 || fail=1
+mkfs.xfs -f -q $fs || fail=1
+mkdir "$mp" || fail=1
+
+# Unmount upon interrupt, failure, etc., as well as upon normal completion.
+cleanup_fn_() { cd "$test_dir_" && umount "$mp" > /dev/null 2>&1; }
+
+# mount it
+mount -o loop $fs "$mp" || fail=1
+cd "$mp" || fail=1
+
+dev=loop-file
+
+do_mkpart()
+{
+  set +x # Turn off tracing; otherwise, we pollute stderr.
+  start_sector=$1
+  end_sector=$2
+  # echo '********' $(echo $end_sector - $start_sector + 1 |bc)
+  dd if=/dev/zero of=$dev bs=$ss count=2k seek=$end_sector 2> /dev/null &&
+  parted -s $dev mklabel $table_type &&
+  parted -s $dev mkpart p xfs ${start_sector}s ${end_sector}s
+}
+
+# Specify the starting sector number and length in sectors,
+# rather than start and end.
+do_mkpart_start_and_len()
+{
+  set +x # Turn off tracing; otherwise, we pollute stderr.
+  start_sector=$1
+  len=$2
+  end_sector=$(echo $start_sector + $len - 1|bc)
+  do_mkpart $start_sector $end_sector
+}
+
+for table_type in dvh; do
+
+# a partition length of 2^32-1 works.
+end=$(echo $n+2^32-2|bc) || fail=1
+do_mkpart $n $end || fail=1
+
+# print the result
+parted -s $dev unit s p > out 2>&1 || fail=1
+sed -n "/^  *1  *$n/s/  */ /gp" out|sed "s/  *\$//" > k && mv k out || fail=1
+echo " 1 ${n}s ${end}s 4294967295s primary" > exp || fail=1
+compare out exp || fail=1
+
+# a partition length of exactly 2^32 sectors provokes failure.
+do_mkpart $n $(echo $n+2^32-1|bc) > err 2>&1
+test $? = 1 || fail=1
+
+bad_part_length()
+{ echo "Error: partition length of $1 sectors exceeds the"\
+  "$table_type-partition-table-imposed maximum of 4294967295"; }
+
+# check for new diagnostic
+bad_part_length 4294967296 > exp || fail=1
+compare err exp || fail=1
+
+# FIXME: investigate this.
+# Unexpectedly to me, both of these failed with this same diagnostic:
+#
+#   Error: partition length of 4294967296 sectors exceeds the \
+#   DOS-partition-table-imposed maximum of 2^32-1" > exp &&
+#
+# I expected the one below to fail with a length of _4294967297_.
+# Debugging, I see that _check_partition *does* detect this,
+# but the diagnostic doesn't get displayed because of the wonders
+# of parted's exception mechanism.
+
+# a partition length of 2^32+1 sectors must provoke failure.
+do_mkpart $n $(echo $n+2^32|bc) > err 2>&1
+test $? = 1 || fail=1
+
+# check for new diagnostic
+bad_part_length 4294967297 > exp || fail=1
+compare err exp || fail=1
+
+# =========================================================
+# Now consider partition starting sector numbers.
+bad_start_sector()
+{ echo "Error: starting sector number, $1 exceeds the"\
+  "$table_type-partition-table-imposed maximum of 4294967295"; }
+
+# a partition start sector number of 2^32-1 works.
+do_mkpart_start_and_len $(echo 2^32-1|bc) 1000 || fail=1
+
+# FIXME: this partition number 9 (not requested!) looks totally bogus
+# FIXME: For now, we just expect what the code produces.
+# FIXME: In the long run, figure out if it's sensible.
+cat > exp <<EOF
+Model:  (file)
+Disk: 4294970342s
+Sector size (logical/physical): ${ss}B/${ss}B
+Partition Table: $table_type
+
+Number  Start        End          Size   Type      File system  Name  Flags
+ 9      0s           4095s        4096s  extended
+ 1      4294967295s  4294968294s  1000s  primary
+
+EOF
+
+# print the result
+parted -s $dev unit s p > out 2>&1 || fail=1
+sed "s/Disk .*:/Disk:/;s/ *$//" out > k && mv k out || fail=1
+compare out exp || fail=1
+
+# a partition start sector number of 2^32 must fail
+do_mkpart_start_and_len $(echo 2^32|bc) 1000 > err 2>&1
+test $? = 1 || fail=1
+
+# check for new diagnostic
+bad_start_sector 4294967296 > exp || fail=1
+compare err exp || fail=1
+
+# a partition start sector number of 2^32+1 must fail, too.
+do_mkpart_start_and_len $(echo 2^32+1|bc) 1000 > err 2>&1
+test $? = 1 || fail=1
+
+# check for new diagnostic
+bad_start_sector 4294967297 > exp || fail=1
+compare err exp || fail=1
+
+done
+
+Exit $fail
diff --git a/tests/t4100-msdos-partition-limits.sh b/tests/t4100-msdos-partition-limits.sh
new file mode 100755 (executable)
index 0000000..4ec3c27
--- /dev/null
@@ -0,0 +1,151 @@
+#!/bin/sh
+# enforce limits on partition start sector and length
+
+# Copyright (C) 2008-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+require_root_
+require_xfs_
+ss=$sector_size_
+
+# On a 32-bit system, we must skip this test when $ss >= 4096.
+# Otherwise, due to an inherent 32-bit-XFS limit, dd would fail to
+# create the file of size > 16TiB
+if test $(uname -m) != x86_64; then
+  test $ss -le 2048 || skip_ 'this test works only on a 64-bit system'
+fi
+
+####################################################
+# Create and mount a file system capable of dealing with >=2TB files.
+# We must be able to create a file with an apparent length of 2TB or larger.
+# It needn't be a large file system.
+fs=fs_file
+mp=`pwd`/mount-point
+n=4096
+
+# create an XFS file system
+dd if=/dev/zero of=$fs bs=1MB count=2 seek=20 || fail=1
+mkfs.xfs -f -q $fs || fail=1
+mkdir "$mp" || fail=1
+
+# Unmount upon interrupt, failure, etc., as well as upon normal completion.
+cleanup_fn_() { cd "$test_dir_" && umount "$mp" > /dev/null 2>&1; }
+
+# mount it
+mount -o loop $fs "$mp" || fail=1
+cd "$mp" || fail=1
+
+dev=loop-file
+
+do_mkpart()
+{
+  set +x # Turn off tracing; otherwise, we pollute stderr.
+  start_sector=$1
+  end_sector=$2
+  # echo '********' $(echo $end_sector - $start_sector + 1 |bc)
+  dd if=/dev/zero of=$dev bs=$ss count=2k seek=$end_sector 2> dd-err ||
+    { cat dd-err 1>&2; return 1; }
+  parted -s $dev mklabel $table_type &&
+  parted -s $dev mkpart p xfs ${start_sector}s ${end_sector}s
+}
+
+# Specify the starting sector number and length in sectors,
+# rather than start and end.
+do_mkpart_start_and_len()
+{
+  set +x # Turn off tracing; otherwise, we pollute stderr.
+  start_sector=$1
+  len=$2
+  end_sector=$(echo $start_sector + $len - 1|bc)
+  do_mkpart $start_sector $end_sector
+}
+
+for table_type in msdos; do
+
+# a partition length of 2^32-1 works.
+end=$(echo $n+2^32-2|bc) || fail=1
+do_mkpart $n $end || fail=1
+
+# print the result
+parted -s $dev unit s p > out 2>&1 || fail=1
+sed -n "/^  *1  *$n/s/  */ /gp" out|sed "s/  *\$//" > k && mv k out || fail=1
+echo " 1 ${n}s ${end}s 4294967295s primary" > exp || fail=1
+compare out exp || fail=1
+
+# a partition length of exactly 2^32 sectors provokes failure.
+do_mkpart $n $(echo $n+2^32-1|bc) > err 2>&1
+test $? = 1 || fail=1
+
+bad_part_length()
+{ echo "Error: partition length of $1 sectors exceeds the"\
+  "$table_type-partition-table-imposed maximum of 4294967295"; }
+
+# check for new diagnostic
+bad_part_length 4294967296 > exp || fail=1
+compare err exp || fail=1
+
+# a partition length of 2^32+1 sectors must provoke failure.
+do_mkpart $n $(echo $n+2^32|bc) > err 2>&1
+test $? = 1 || fail=1
+
+# check for new diagnostic
+bad_part_length 4294967297 > exp || fail=1
+compare err exp || fail=1
+
+# =========================================================
+# Now consider partition starting sector numbers.
+bad_start_sector()
+{ echo "Error: starting sector number, $1 exceeds the"\
+  "$table_type-partition-table-imposed maximum of 4294967295"; }
+
+# a partition start sector number of 2^32-1 works.
+do_mkpart_start_and_len $(echo 2^32-1|bc) 1000 || fail=1
+
+cat > exp <<EOF
+Model:  (file)
+Disk: 4294970342s
+Sector size (logical/physical): ${ss}B/${ss}B
+Partition Table: $table_type
+
+Number  Start        End          Size   Type     File system  Flags
+ 1      4294967295s  4294968294s  1000s  primary
+
+EOF
+
+# print the result
+parted -s $dev unit s p > out 2>&1 || fail=1
+sed "s/Disk .*:/Disk:/;s/ *$//" out > k && mv k out  || fail=1
+compare out exp || fail=1
+
+# a partition start sector number of 2^32 must fail
+do_mkpart_start_and_len $(echo 2^32|bc) 1000 > err 2>&1
+test $? = 1 || fail=1
+
+# check for new diagnostic
+bad_start_sector 4294967296 > exp || fail=1
+compare err exp || fail=1
+
+# a partition start sector number of 2^32+1 must fail, too.
+do_mkpart_start_and_len $(echo 2^32+1|bc) 1000 > err 2>&1
+test $? = 1 || fail=1
+
+# check for new diagnostic
+bad_start_sector 4294967297 > exp || fail=1
+compare err exp || fail=1
+
+done
+
+Exit $fail
diff --git a/tests/t4100-msdos-starting-sector.sh b/tests/t4100-msdos-starting-sector.sh
new file mode 100755 (executable)
index 0000000..f768646
--- /dev/null
@@ -0,0 +1,72 @@
+#!/bin/sh
+# Consistency in msdos free space starting sector.
+
+# Copyright (C) 2008-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+ss=$sector_size_
+
+######################################################################
+# parted 1.8.8.1 and earlier was inconsistent when calculating the
+# start sector for free space in msdos type lables.  parted was not
+# consistent in the use of metadata padding for msdos labels.
+######################################################################
+
+N=4096 # number of sectors
+dev=loop-file
+# create a file to simulate the underlying device
+dd if=/dev/zero of=$dev bs=${ss}c count=$N 2> /dev/null || fail=1
+
+# label the test disk
+parted -s $dev mklabel msdos > out 2>&1 || fail=1
+# expect no output
+compare out /dev/null || fail=1
+
+# Test the output of print free with no partitions.
+cat <<EOF > exp || fail=1
+BYT;
+path:${N}s:file:$ss:$ss:msdos:;
+1:32s:4095s:4064s:free;
+EOF
+
+# create expected output file' 'test $fail = 0'
+
+# display output of label without partitions
+parted -m -s $dev unit s print free > out 2>&1 || fail=1
+
+# check for expected output
+sed "2s/^[^:]*:/path:/" < out > k; mv k out
+compare out exp || fail=1
+
+# Test the output of print free with one partition.
+cat <<EOF > exp || fail=1
+BYT;
+path:${N}s:file:$ss:$ss:msdos:;
+1:32s:2047s:2016s:free;
+1:2048s:4095s:2048s:::;
+EOF
+
+# create a partition at the end of the label
+parted -s $dev mkpart primary 2048s 4095s || fail=1
+
+# display output of label with partition
+parted -m -s $dev unit s print free > out 2>&1 || fail=1
+
+# check for expected output
+sed "2s/^[^:]*:/path:/" < out > k; mv k out
+compare out exp || fail=1
+
+Exit $fail
diff --git a/tests/t4200-partprobe.sh b/tests/t4200-partprobe.sh
new file mode 100755 (executable)
index 0000000..bd5e15d
--- /dev/null
@@ -0,0 +1,51 @@
+#!/bin/sh
+# partprobe must not examine more than 16 partitions
+
+# Copyright (C) 2008-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+require_erasable_
+require_root_
+require_dvhtool_
+
+dev=$DEVICE_TO_ERASE
+
+# setup: create a DVH partition table on $dev"
+dd if=/dev/zero of=$dev bs=512 count=1 seek=10000 || fail=1
+parted -s $dev mklabel dvh || fail=1
+
+# setup: use dvhtool to create a 17th (invalid?) partition"
+dd if=/dev/zero of=d bs=1 count=4k || fail=1
+dvhtool -d $dev --unix-to-vh d data || fail=1
+
+# Here's sample output from the parted...print command below:
+# BYT;
+# /dev/sdd:128880s:scsi:512:512:dvh: Flash Disk;
+# 9:0s:4095s:4096s:::;
+# 17:4s:11s:8s::data:;
+
+# ensure that dvhtool did what we want"
+parted -m -s $dev unit s print > out 2>&1 || fail=1
+grep "^17:.*::data:;\$" out || fail=1
+
+# Parted 1.8.9 and earlier would mistakenly try to access partition #17.
+# ensure that partprobe succeeds and produces no output"
+partprobe -s $dev > out 2>err || fail=1
+compare err /dev/null || fail=1
+echo "$dev: dvh partitions 9 <17>" > exp || fail=1
+compare out exp || fail=1
+
+Exit $fail
diff --git a/tests/t5000-tags.sh b/tests/t5000-tags.sh
new file mode 100755 (executable)
index 0000000..ef2f610
--- /dev/null
@@ -0,0 +1,81 @@
+#!/bin/sh
+# test bios_grub flag in gpt labels
+
+# Copyright (C) 2007-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+ss=$sector_size_
+
+dev=loop-file
+N=4200 # number of sectors
+
+part_sectors=2048
+start_sector=2048
+end_sector=$(expr $start_sector + $part_sectors - 1)
+
+# setup: reasonable params
+test $end_sector -lt $N || fail=1
+
+# setup: create zeroed device
+dd if=/dev/zero of=$dev bs=${ss}c count=$N 2> /dev/null || fail=1
+
+# create gpt label
+parted -s $dev mklabel gpt > empty 2>&1 || fail=1
+
+# ensure there was no output
+compare /dev/null empty || fail=1
+
+# print the table (before adding a partition)
+parted -m -s $dev unit s print > t 2>&1 || fail=1
+sed "s,.*/$dev:,$dev:," t > out || fail=1
+
+# check for expected output
+printf "BYT;\n$dev:${N}s:file:$ss:$ss:gpt:;\n" > exp || fail=1
+compare exp out || fail=1
+
+# add a partition
+parted -s $dev u s mkpart name1 ${start_sector} ${end_sector} >out 2>&1 \
+  || fail=1
+
+# print the table before modification
+parted -m -s $dev unit s print > t 2>&1 || fail=1
+sed "s,.*/$dev:,$dev:," t >> out || fail=1
+
+# set the new bios_grub attribute
+parted -m -s $dev set 1 bios_grub on || fail=1
+
+# print the table after modification
+parted -m -s $dev unit s print > t 2>&1 || fail=1
+sed "s,.*/$dev:,$dev:," t >> out || fail=1
+
+gen_exp()
+{
+  cat <<EOF
+BYT;
+$dev:${N}s:file:$ss:$ss:gpt:;
+1:${start_sector}s:${end_sector}s:${part_sectors}s::name1:;
+BYT;
+$dev:${N}s:file:$ss:$ss:gpt:;
+1:${start_sector}s:${end_sector}s:${part_sectors}s::name1:bios_grub;
+EOF
+}
+
+# check for expected output
+gen_exp > exp || fail=1
+compare exp out || fail=1
+
+Exit $fail
diff --git a/tests/t6000-dm.sh b/tests/t6000-dm.sh
new file mode 100755 (executable)
index 0000000..03586c7
--- /dev/null
@@ -0,0 +1,91 @@
+#!/bin/sh
+# ensure that parted can distinguish device map types: linear, multipath
+
+# Copyright (C) 2008-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+
+require_root_
+lvm_init_root_dir_
+
+test "x$ENABLE_DEVICE_MAPPER" = xyes \
+  || skip_ "no device-mapper support"
+
+# Device maps names - should be random to not conflict with existing ones on
+# the system
+linear_=plinear-$$
+mpath_=mpath-$$
+
+d1= d2= d3=
+f1= f2= f3=
+cleanup_fn_() {
+    dmsetup remove $linear_
+    dmsetup remove $mpath_
+    test -n "$d1" && losetup -d "$d1"
+    test -n "$d2" && losetup -d "$d2"
+    test -n "$d3" && losetup -d "$d3"
+    rm -f "$f1" "$f2" "$f3";
+}
+
+f1=$(pwd)/1; d1=$(loop_setup_ "$f1") \
+  || skip_ "is this partition mounted with 'nodev'?"
+
+# setup: create loop devices
+f2=$(pwd)/2 && d2=$(loop_setup_ "$f2") || fail=1
+f3=$(pwd)/3 && d3=$(loop_setup_ "$f3") || fail=1
+
+# This loop used to include "multipath", but lvm2 changed
+# in such a way that that no longer works with loop devices.
+# FIXME: use two scsi_debug devices instead.
+for type in linear ; do
+
+  case $type in
+    linear)
+      type_kwd=$linear_
+      dmsetup_cmd="0 1024 linear $d1 0"
+      ;;
+    *)
+      type_kwd=$mpath_
+      dmsetup_cmd="0 1024 multipath 0 0 1 1 round-robin 0 2 0 $d2 $d3"
+      ;;
+  esac
+
+  # setup: create a mapping
+  echo "$dmsetup_cmd" | dmsetup create "$type_kwd" || fail=1
+  dev="$DM_DEV_DIR/mapper/$type_kwd"
+
+  # Create msdos partition table
+  parted -s $dev mklabel msdos > out 2>&1 || fail=1
+  compare out /dev/null || fail=1
+
+  parted -s "$dev" print > out 2>&1 || fail=1
+  sed 's/^Disk .*: /Disk DEV: /' out > k; mv k out
+
+  # Create expected output file.
+  cat <<EOF >> exp || fail=1
+Model: Linux device-mapper ($type) (dm)
+Disk DEV: 524kB
+Sector size (logical/physical): 512B/512B
+Partition Table: msdos
+
+Number  Start  End  Size  Type  File system  Flags
+
+EOF
+
+  compare out exp || fail=1
+done
+
+Exit $fail
diff --git a/tests/t7000-scripting.sh b/tests/t7000-scripting.sh
new file mode 100755 (executable)
index 0000000..4473cb6
--- /dev/null
@@ -0,0 +1,78 @@
+#!/bin/sh
+# Make sure the scripting option works (-s) properly.
+
+# Copyright (C) 2008-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+ss=$sector_size_
+N=100 # number of sectors
+
+: ${abs_top_builddir=$(cd ../..; pwd)}
+: ${CONFIG_HEADER="$abs_top_builddir/lib/config.h"}
+
+config_h=$abs_top_srcdir
+grep '^#define HAVE_LIBREADLINE 1' $CONFIG_HEADER > /dev/null \
+  || skip_ "configured without readline support"
+
+# The failure messages.
+cat << EOF > errS || fail=1
+Error: You requested a partition from 512B to 50.7kB.
+The closest location we can manage is 17.4kB to 33.8kB.
+EOF
+
+normalize_part_diag_ errS || fail=1
+
+{ emit_superuser_warning
+  sed s/Error/Warning/ errS
+  printf 'Is this still acceptable to you?\nYes/No?'; } >> errI || fail=1
+
+for mkpart in mkpart; do
+
+  # Test for mkpart in scripting mode
+  # Create the test file
+  dd if=/dev/zero of=testfile bs=${ss}c count=$N 2> /dev/null || fail=1
+
+  # Test the scripting mode of $mkpart.
+  parted -s testfile -- mklabel gpt "$mkpart" primary ext3 1s -1s > out
+  test $? = 1 || fail=1
+
+  # Compare the real error and the expected one
+  normalize_part_diag_ out || fail=1
+  compare out errS || fail=1
+
+  # Test mkpart interactive mode.
+  # Create the test file
+  rm -f testfile
+  dd if=/dev/zero of=testfile bs=${ss}c count=$N 2> /dev/null || fail=1
+  # Test the interactive mode of $mkpart
+  echo n | \
+    parted ---pretend-input-tty testfile \
+      "mklabel gpt '$mkpart' primary ext3 1s -1s" > out && fail=1
+
+  # We have to format the output before comparing.
+  # normalize the actual output
+  printf x >> out || fail=1
+  sed "s,\r   *\r,,;s, x$,,;/ n$/ {N;s, n\nx,,}" out > o2 && mv -f o2 out \
+      || fail=1
+  normalize_part_diag_ out || fail=1
+
+  # Compare the real error and the expected one
+  compare out errI || fail=1
+
+done
+
+Exit $fail
diff --git a/tests/t8000-loop.sh b/tests/t8000-loop.sh
new file mode 100755 (executable)
index 0000000..1eb1207
--- /dev/null
@@ -0,0 +1,42 @@
+#!/bin/sh
+# Test usage of loop devices
+
+# Copyright (C) 2008-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+
+require_root_
+lvm_init_root_dir_
+
+d1= f1=
+cleanup_fn_()
+{
+  test -n "$d1" && losetup -d "$d1"
+  rm -f "$f1"
+}
+
+f1=$(pwd)/1; d1=$(loop_setup_ "$f1") \
+  || skip_ "is this partition mounted with 'nodev'?"
+
+# Expect this to succeed.
+parted -s $d1 mklabel msdos > err 2>&1 || fail=1
+compare err /dev/null || fail=1     # expect no output
+
+# Create a partition
+parted -s $d1 mkpart primary 1 10 > err 2>&1 || fail=1
+compare err /dev/null || fail=1     # expect no output
+
+Exit $fail
diff --git a/tests/t9010-big-sector.sh b/tests/t9010-big-sector.sh
new file mode 100755 (executable)
index 0000000..7122a14
--- /dev/null
@@ -0,0 +1,41 @@
+#!/bin/sh
+# check physical sector size as reported by 'print'
+
+# Copyright (C) 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+
+require_root_
+require_scsi_debug_module_
+
+grep '^#define USE_BLKID 1' "$CONFIG_HEADER" > /dev/null ||
+  skip_ 'this system lacks a new-enough libblkid'
+
+echo 'Sector size (logical/physical): 4096B/4096B' > exp || framework_failure
+
+# create memory-backed device
+scsi_debug_setup_ dev_size_mb=8 sector_size=4096 > dev-name ||
+  skip_ 'failed to create scsi_debug device'
+scsi_dev=$(cat dev-name)
+
+# create partition table and print
+parted -s $scsi_dev mklabel gpt print > out 2>&1 || fail=1
+grep '^Sector' out > k 2>&1 || fail=1
+mv k out || fail=1
+
+compare out exp || fail=1
+
+Exit $fail
diff --git a/tests/t9020-alignment.sh b/tests/t9020-alignment.sh
new file mode 100755 (executable)
index 0000000..4b5a888
--- /dev/null
@@ -0,0 +1,43 @@
+#!/bin/sh
+# verify that new alignment-querying functions work
+
+# Copyright (C) 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+
+require_root_
+require_scsi_debug_module_
+
+grep '^#define USE_BLKID 1' "$CONFIG_HEADER" > /dev/null ||
+  skip_ 'this system lacks a new-enough libblkid'
+
+cat <<EOF > exp || framework_failure
+minimum: 7 8
+optimal: 7 2048
+partition alignment: 0 1
+EOF
+
+# create memory-backed device
+scsi_debug_setup_ physblk_exp=3 lowest_aligned=7 num_parts=4 > dev-name ||
+  skip_ 'failed to create scsi_debug device'
+scsi_dev=$(cat dev-name)
+
+# print alignment info
+"$abs_srcdir/print-align" $scsi_dev > out 2>&1 || fail=1
+
+compare out exp || fail=1
+
+Exit $fail
diff --git a/tests/t9021-maxima.sh b/tests/t9021-maxima.sh
new file mode 100755 (executable)
index 0000000..0612c48
--- /dev/null
@@ -0,0 +1,48 @@
+#!/bin/sh
+# verify that partition maxima-querying functions work
+
+# Copyright (C) 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+ss=$sector_size_
+
+dev=dev-file
+PATH="..:$PATH"
+export PATH
+
+# FIXME: add aix when/if it's supported again
+for t in msdos gpt dvh sun mac bsd amiga loop pc98; do
+    echo $t
+    rm -f $dev
+    dd if=/dev/zero of=$dev bs=$ss count=1 seek=10000 || { fail=1; continue; }
+    parted -s $dev mklabel $t || { fail=1; continue; }
+
+    #case $t in pc98) sleep 999d;; esac
+
+    max_start=4294967295
+    max_len=4294967295
+    case $t in
+       gpt|loop) max_start=18446744073709551615; max_len=$max_start;;
+       sun) max_start=549755813760;; # 128 * (2^32-1)
+    esac
+
+    print-max $dev > out 2>&1 || fail=1
+    printf '%s\n' "max len: $max_len" \
+       "max start sector: $max_start" > exp || fail=1
+    compare out exp || fail=1
+done
+
+Exit $fail
diff --git a/tests/t9030-align-check.sh b/tests/t9030-align-check.sh
new file mode 100644 (file)
index 0000000..bc8ae09
--- /dev/null
@@ -0,0 +1,51 @@
+#!/bin/sh
+# exercise the new align-check command
+
+# Copyright (C) 2009-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+
+require_root_
+require_scsi_debug_module_
+
+grep '^#define USE_BLKID 1' "$CONFIG_HEADER" > /dev/null ||
+  skip_ 'this system lacks a new-enough libblkid'
+
+# create memory-backed device
+scsi_debug_setup_ dev_size_mb=550 physblk_exp=3 lowest_aligned=7 > dev-name ||
+  skip_ 'failed to create scsi_debug device'
+scsi_dev=$(cat dev-name)
+p1=${scsi_dev}1
+
+parted -s $scsi_dev mklabel gpt || fail=1
+
+i=60
+while :; do
+  parted -s $scsi_dev mkpart p1 ext2 ${i}s 80000s || fail=1
+  wait_for_dev_to_appear_ $p1 || fail=1
+  parted -s $scsi_dev align-check min 1 > out 2>&1
+  result=$?
+
+  test $(expr $i % 8) = 7 && exp_result=0 || exp_result=1
+  test $result = $exp_result || fail=1
+  compare out /dev/null || fail=1
+
+  parted -s $scsi_dev rm 1
+  i=$(expr $i + 1)
+  test $i = 70 && break
+done
+
+Exit $fail
diff --git a/tests/t9040-many-partitions.sh b/tests/t9040-many-partitions.sh
new file mode 100644 (file)
index 0000000..1282c1f
--- /dev/null
@@ -0,0 +1,83 @@
+#!/bin/sh
+# Ensure that creating many partitions works.
+
+# Copyright (C) 2010-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+
+require_root_
+require_scsi_debug_module_
+
+grep '^#define USE_BLKID 1' "$CONFIG_HEADER" > /dev/null ||
+  skip_ 'this system lacks a new-enough libblkid'
+
+ss=$sector_size_
+partition_sectors=256  # sectors per partition
+n_partitions=60        # how many partitions to create
+start=2048             # start sector for the first partition
+gpt_slop=34            # sectors at end of disk reserved for GPT
+
+n_sectors=$(($start + n_partitions * partition_sectors + gpt_slop))
+
+sectors_per_MiB=$((1024 * 1024 / ss))
+n_MiB=$(((n_sectors + sectors_per_MiB - 1) / sectors_per_MiB))
+# create memory-backed device
+scsi_debug_setup_ sector_size=$ss dev_size_mb=$n_MiB > dev-name ||
+  skip_ 'failed to create scsi_debug device'
+scsi_dev=$(cat dev-name)
+
+n=$((n_MiB * sectors_per_MiB))
+printf "BYT;\n$scsi_dev:${n}s:scsi:$ss:$ss:gpt:Linux scsi_debug;\n" \
+  > exp || fail=1
+
+parted -s $scsi_dev mklabel gpt || fail=1
+parted -s $scsi_dev u s p || fail=1
+
+i=1
+t0=$(date +%s.%N)
+while :; do
+    end=$((start + partition_sectors - 1))
+    parted -s $scsi_dev mkpart p$i ${start}s ${end}s || fail=1
+    printf "$i:${start}s:${end}s:${partition_sectors}s::p$i:;\n" >> exp
+    test $i = $n_partitions && break
+    start=$((start + partition_sectors))
+    i=$((i+1))
+done
+t_final=$(date +%s.%N)
+
+# Fail the test if it takes too long.
+# On Fedora 13, it takes about 15 seconds.
+# With older kernels, it typically takes more than 150 seconds.
+$AWK "BEGIN {d = $t_final - $t0; n = $n_partitions; st = 60 < d;"\
+' printf "created %d partitions in %.2f seconds\n", n, d; exit st }' /dev/null \
+    || fail=1
+
+parted -m -s $scsi_dev u s p > out || fail=1
+compare out exp || fail=1
+
+# We must remove these partitions before terminating.
+# Otherwise, even though cleanup-driven rmmod will eventually cause
+# them to be removed, they may continue to be removed long after
+# the rmmod cleanup lock has been released, and such removals
+# can (and regularly did) interfere with the following test.
+i=1
+while :; do
+    parted -s $scsi_dev rm $i || fail=1
+    test $i = $n_partitions && break
+    i=$((i+1))
+done
+
+Exit $fail
diff --git a/tests/t9041-undetected-in-use-16th-partition.sh b/tests/t9041-undetected-in-use-16th-partition.sh
new file mode 100644 (file)
index 0000000..74c30fc
--- /dev/null
@@ -0,0 +1,99 @@
+#!/bin/sh
+# Ensure that parted knows when N'th (N>=16) partition is mounted
+
+# Copyright (C) 2010-2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+
+require_root_
+require_scsi_debug_module_
+
+grep '^#define USE_BLKID 1' "$CONFIG_HEADER" > /dev/null ||
+  skip_ 'this system lacks a new-enough libblkid'
+
+ss=$sector_size_
+partition_sectors=256  # sectors per partition
+n_partitions=17        # how many partitions to create
+start=2048             # start sector for the first partition
+gpt_slop=34            # sectors at end of disk reserved for GPT
+
+n_sectors=$(($start + n_partitions * partition_sectors + gpt_slop))
+
+sectors_per_MiB=$((1024 * 1024 / ss))
+n_MiB=$(((n_sectors + sectors_per_MiB - 1) / sectors_per_MiB))
+# create memory-backed device
+scsi_debug_setup_ sector_size=$ss dev_size_mb=$n_MiB > dev-name ||
+  skip_ 'failed to create scsi_debug device'
+scsi_dev=$(cat dev-name)
+
+n=$((n_MiB * sectors_per_MiB))
+printf "BYT;\n$scsi_dev:${n}s:scsi:$ss:$ss:gpt:Linux scsi_debug;\n" \
+  > exp || fail=1
+
+parted -s $scsi_dev mklabel gpt || fail=1
+parted -s $scsi_dev u s p || fail=1
+
+i=1
+t0=$(date +%s.%N)
+while :; do
+    end=$((start + partition_sectors - 1))
+    parted -s $scsi_dev mkpart p$i ${start}s ${end}s || fail=1
+    printf "$i:${start}s:${end}s:${partition_sectors}s::p$i:;\n" >> exp
+    test $i = $n_partitions && break
+    start=$((start + partition_sectors))
+    i=$((i+1))
+done
+t_final=$(date +%s.%N)
+
+# Fail the test if it takes too long.
+# On Fedora 13, it takes about 15 seconds.
+# With older kernels, it typically takes more than 150 seconds.
+$AWK "BEGIN {d = $t_final - $t0; n = $n_partitions; st = 60 < d;"\
+' printf "created %d partitions in %.2f seconds\n", n, d; exit st }' /dev/null \
+    || fail=1
+
+parted -m -s $scsi_dev u s p > out || fail=1
+compare out exp || fail=1
+
+wait_for_dev_to_appear_ ${scsi_dev}16 || fail_ ${scsi_dev}16 did not appear
+
+partitions="${scsi_dev}14 ${scsi_dev}15 ${scsi_dev}16"
+for i in $partitions; do
+  mkfs.ext3 $i || skip_ mkfs.ext3 $i failed
+done
+
+# be sure to unmount upon interrupt, failure, etc.
+cleanup_fn_() { for i in $partitions; do umount "$i" > /dev/null 2>&1; done; }
+
+for part_dev in $partitions; do
+  n=${part_dev#$scsi_dev}
+  mount_point=$(pwd)/m-$n
+  mkdir $mount_point || fail=1
+  mount "$part_dev" "$mount_point" || fail=1
+
+  # Removal of mounted partition must fail.
+  parted -s $scsi_dev rm $n > out 2>&1 && fail=1
+
+  echo "Error: Partition $part_dev is being used." \
+         'You must unmount it before you modify it with Parted.' \
+    > exp-error || framework_failure_
+
+  # expect error
+  compare out exp-error || fail=1
+
+done
+
+Exit $fail
diff --git a/tests/t9050-partition-table-types.sh b/tests/t9050-partition-table-types.sh
new file mode 100755 (executable)
index 0000000..20e9a9d
--- /dev/null
@@ -0,0 +1,51 @@
+#!/bin/sh
+# Ensure that any combination of partition table types works.
+# I.e., write a partition table of type T, and then overwrite it
+# with one of type V, for every permutation of T and V.
+
+# Copyright (C) 2011 Free Software Foundation, 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; 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 <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+
+not_yet='
+aix
+'
+
+types='
+bsd
+msdos
+dvh
+gpt
+loop
+mac
+pc98
+sun
+mkswap
+'
+
+dd if=/dev/null of=f bs=1 seek=30M || framework_failure_
+
+for i in $types; do
+  for j in $types; do
+    echo $i:$j
+    case $i in mkswap) mkswap f >/dev/null 2>&1 || fail=1;;
+      *) parted -s f mklabel $i || fail=1;; esac
+    case $j in mkswap) continue;; esac
+    parted -s f mklabel $j || fail=1
+  done
+done
+
+Exit $fail